WebElektronika

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

person access_time 2015.11.16.
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