loader
Foto

AD átalakító használata az ATmega mikrovezérlőknél

Folytatjuk az ATmega mikrokontrollerek megismerését, most az AD átalakító használatát tekintjük át egy mintaalkalmazás segítségével.

Az ATmega8 AD átalakítójának a blokkvázlata látható az első ábrán. Összesen 8 analóg bemenet lehet, ezek közül választjuk ki a multiplexer segítségével az átalakítani kívánt analóg jelet. A kiválasztásért az ADMUX regiszter felel.

kep
1. ábra   AD átalakító blokkvázlata az ATmega8-nál (kattints a képre)
 

Az ADMUX regiszter látható a második ábrán, a referenciafeszütségek kiválasztásáért a REFS0, REFS1 bitek felelnek. Az átalakított analóg jel 10 biten kerül eltárolásra, ehhez viszont két 8 bites regiszter kell. Az ADLAR bit segítségével tudjuk beállítani, hogy az ADCH-ba kerüljön-e 8 bit és az ADCL-be 2, vagy fordítva.

kep
2. ábra   Az ADMUX regiszter
 

A MUX0-3 bitekkel tudjuk beállítani azt, hogy a 8 analóg bemenet közül melyiket alakítsuk át digitális jellé (3. ábra).

kep
3. ábra   Az analóg csatorna kiválasztása
 

Fontos szerepet kap az AD átalakító használata során az ADCSRA regiszter is (4. ábra), hiszen itt találjuk az AD átalakító engedélyezését, a megszakításkezeléséhez elengedhetetlen flag-et (ADIF), az IT engedélyezését (ADIE), a konverziós idő megadását és természetesen az AD konverzió elindítása (ADSC) is itt kapot helyet.

kep
4. ábra   Az ADCSRA regiszter
 

Végül nézzünk meg egy példát, amely az ATmega8-as családban használt AD átalakító alkalmazását mutatja be.

 

#include <avr/io.h>

int main(void)
{
    DDRD = 0xFF;
    DDRC = 0b11111110;
    ADCSRA = 0b10000111;
    ADMUX = 0b01100000;
    ADCSRA |= 1<<ADSC;
    while(1)
    {
        // várjuk a konverzió végét
        while(ADCSRA & (1 << ADSC));
        //a felső 8 bitet kitesszük a D portra
        PORTD = ADCH;
        //konverziót elindítjuk
        ADCSRA |= 1<<ADSC;
    }
}

 

Először beállítjuk a D portot kimenetre, illetve a C port 0. bitje bemenet, a többi kimenet lesz.

Ezután az AD átalakítót konfiguráljuk fel, az AN0 bemenetet fogjuk az átalakításra felhasználni, az átalakítási tartomány a teljes tápfeszültség lesz.

Az AD átalakító működésének beállítása után elindítjuk a konverter működését (ADCSRA |= 1<<ADSC;). A while(1) végtelen ciklusban addig várakozunk, amíg a konverzió véget nem ér. Az átalakítás után a D portra kitesszük az ADCH (itt van az átalakított analóg érték felső 8 bitje) értékét.
Ezután újra elindítjuk az AD átalakítót.

Végül láthatjuk az 5. ábrán a behuzalozott tesztpanelt, amelynek segítéségvel az AD átalakító tesztelhető.

kep
5. ábra   A behuzalozott tesztpanel

 



Egyéb cikkek

További cikkeink ebben a témakörben

Régebbi cikkeink

Október közepén elindítjuk az Atmel 8 bites mikrovezérlőkről szóló sorozatunkat. Ehhez használnunk kell természetesen egy fejlesztőkörnyezetet is. Több ilyen is létezik, például a WinAVR, vagy az Atmel Studio. Mi az Atmel Studio-t fogjuk használni, e. . . .

A PIC18F mikrovezérlők ma is népszerű a fejlesztők körében. Noha 8 bites architektúráról beszélünk, számos érdekes és hasznos alkalmazás megvalósítható vele. Elég csak az USB-re, vagy akár az Ethernetre gondolnunk. Ezért a Szerkesztőség egy sorozat k. . . .

Megnézzük most néhány példa segítségével a Watchog Timer (WDT) használatát. Írni fogunk közvetlenül regisztert, de használni fogunk makrókat is.. . . .