ADC átalakító részletesen

  • Techikai adatok
  • ADC pontossági definíciók megismerése
  • ADC működésének áttekintése, konverziós módszer, referencia feszültség, multiplexer, mintavevő-tartó
  • Külső referencia feszültség használata
  • ADC külön tápegységről, tápfesz szűrése
  • pontosság növelése ADC zajszűréssel
  • Vezérlő regiszterek működésének magyarázata

Az ATMega328 található ADC átalakító és a hozzá kapcsolódó bemenet választó multiplexer többé-kevésbé egyszerű működésű része a vezérlőnek. Az Arduino környezetben a használat roppant egyszerű. Egy kicsit azért több van ebben a részegységben, mint amit elsőre látunk. Ezért kalandregényre ne számítsunk! Érdemes még elolvasni az analóg komparátorról szóló leírást is.

  • 10 bites felbontás (vagy 8 bites felbontás)
  • 0,5 LSB integrál nemlinearitás
  • ± 2 LSB abszolút pontosság
  • 13 – 260 μs konverziós idő
  • Max. 76,9 kSPS , max. 15 kSPS maximális felbontásnál (kilo Sample Per Second)
  • 6 multiplexelt analóg bemenet, 8 analóg bemenet TQFP és QFN/MLF tokozásnál
  • Chip hőmérsékletének mérése
  • 0 – Vcc ADC bemeneti feszültségtartomány
  • Választható 1,1 V-os vagy Vcc ADC referenciafeszültség
  • Választható külső referencia feszültség
  • Opcionális „balról” vagy „jobbról” olvasható eredményregiszter
  • Szabadon futó vagy egyszeres konverziós mód
  • Megszakítás az ADC átalakítás befejezésekor
  • Mérés alvó üzemmódban (zajszűrés)

Az ADC átalakító működésének megismerése előtt érdemes kicsit megismerkedni a konverzió hibáival. Az alábbi leírás az adatlapból származik, és segítséget ad a mérési hibák értelmezéséhez. Az alábbi néhány hibadefiníció segítséget ad a technikai adatokban felsorolt nemlinearitási és abszolút pontossági adat értelmezéséhez.

Az ADC a GND és V REF közötti feszültséget lineárisan alakítja át 2n lépésben (LSB). A legalacsonyabb kód 0, a legmagasabb pedig 2 n-1. Számos paraméter írja le az ideális viselkedéstől való eltérést:

Eltolási hiba: Az első átmenet eltérése (0x000 és 0x001 között) az ideális átmenethez képest (0,5 LSB). Ideális érték: 0 LSB.

Erősítési hiba: Az eltolás korrekciója után az erősítési hiba az utolsó átmenet eltéréseként jelenik meg (0x3FE és 0x3FF között) az ideális átmenethez képest (1,5 LSB-vel a maximális érték alatt). Ideális érték: 0 LSB

Integrál nemlinearitás (INL): Az eltolás és erősítési hiba korrekciója után az INL a tényleges átmenet maximális eltérése bármely kód ideális átmenetéhez képest. Ideális érték: 0 LSB.

Differenciális nemlinearitás (DNL): A tényleges kódszélesség (két szomszédos átmenet közötti intervallum) maximális eltérése az ideális kódszélességtől (1 LSB). Ideális érték: 0 LSB.

Abszolút pontosság: A tényleges (módosítatlan) átmenet maximális eltérése bármely kód ideális átmenetéhez képest. Ez az eltolás, erősítési hiba, differenciálhiba, nemlinearitás és kvantálási hiba összetett hatása. Ideális érték: ±0,5 LSB.

Az ATmega48PA/88PA/168PA/328P 10 bites, „successive approximation” módszerrel működő ADC-vel rendelkezik. Az átalakító legfontosabb egysége egy digitál-analóg átalakító (DAC) és egy komparátor. A komparátor egyik bemenetére kapcsolják a mérendő feszültséget, a másikra pedig különböző feszültségeket állítanak elő a digitál-analóg átalakítóval. A komparátor ezt a két feszültséget hasonlítja össze. Első lépésben a komparátora kapcsolják a teljes méréséi tartomány felét, és a mérendőt. Ha az utóbbi a kisebb, akkor az alsó tartományt felezik meg a következő lépésbe és így tovább. Belátható, hogy néhány lépésben előállítható a bemenő feszültséggel azonos (illetve nagyon közeli) feszültségérték. A mérési eredmény ekkor a DAC átalakítót vezérlő számérték. Ennyi röviden a működés.

A 10 bites felbontás elég szerénynek mondható. A 0-5V feszültségtartományban ez kb. 5mV felbontás, de ez a nagy pontosságot nem igénylő feladatokra elegendő lehet.  Az ADC egy 8 csatornás analóg multiplexerhez csatlakozik, amely nyolc feszültségbemeneten teszi lehetővé a feszültségmérést. A feszültséget a GND-hez képest lehet megmérni.

Az ADC tartalmaz egy minta vevő és tartó áramkört, mely azért jut fontos szerephez, mert a mérendő feszültség nem változhat meg a mérés ideje alatt.  

Az ADC egység blokkvázlata az alábbi ábrán látható:

Erről az első pillanatban bonyolultnak tűnő ábráról jól fel lehet ismerni az egység legfontosabb részegységeit. Lássunk egy rövid összefoglalást az ADC tulajdonságairól:

A multiplexer egység nem csak a 8 bemenet közül tud választani, lehetővé teszi egy belső „BANDGAP” referencia feszültség, a GND, és egy hőmérséklet szenzor feszültségének mérését is. Utóbbi a szilicium lapkára integrált félvezető átmenet, aminek a feszültsége függ a lapka hőmérsékletétől. Ez a hőmérséklet mérés nem túl pontos, kb. +/-10 C fok. Az alábbi táblázat néhány adatlapból származó feszültség-hőmérséklet párost mutat:

A hőmérséklet-érzékelő kimeneti feszültsége chipenként változik, ezért a táblázatban megadott értékek csak tájékoztató adatok. A pontosabb eredmények elérése érdekében a hőmérsékletmérés kalibrálható. A szoftveres kalibráláshoz minden egyes chip esetében meg kell mérni és tárolni kell a kalibrálási értéket egy regiszterben vagy EEPROM-ban. Az adatlapból nem derül ki pontosan, hogy mely chipek esetében végzik el ezt a kalibrálást. Esteleg állandósult állapotban, állandósult külső hőmérsékelten házilag is elvégezhető, és ezzel a hőmérsékletmérés pontossága javítható. Az adatlap szerint a kalibráláshoz a következő képlet használható:

T = { [(ADCH << 8) | ADCL] – TOS} / k

ahol ADCn az ADC adatregiszterei, k egy rögzített együttható és TOS a hőmérséklet-érzékelő eltolási értéke, amelyet eeprom-ban célszerű tárolni (egyébként ez a gyártás során történne meg, ha elvégzi a gyártó).

Ha a hőmérséklet van engedélyezve, az ADC átalakító egyszeri konverziós módban használható a hőmérséklet-érzékelő feszültségének mérésére.

Rendelkezik az ADC egy 1.1V-os belső referencia feszültséggel, de lehetőség van pontosabb külső referencia feszültség bevezetésére is az AREF bemeneten. A belső 1.1V-os feszültség referenciát a „BANDGAP REFERENCE”-vel jelölt feszültségforrásból állítják elő belső erőstővel. Fontos tulajdonság, hogy ez passzív kapcsolón keresztül csatlakozik az ADC következő áramköreihez. Ezért a belső referencia illetve a Vcc feszültség sem használható referencia forrásként, ha külső referencia feszültséget jelölük ki, és az AREF kivezetésre kívülről referencia feszültséget kapcsolunk.

Ha nem kötünk semmit az AREF bemenetre, akkor egy feszültségmérővel ezen a kivezetésen meg is mérhetünk az 1.1V-os belső referencia pontos feszültségét. Lehetőség van zajcsökkentésre és ezáltal pontosabb mérésre az AREF kivezetés és GND közé kötött kondenzátorral.

Az ADC egységnek külön tápfeszültség forrás kivezetése van. Nagyobb pontossági igény esetén ide egy LC szűrön keresztül szűrt tápfeszültséget kívánatos bekötni. Az alábbi ábra bemutatja ennek kivitelezését.

Az AVCC lehet egy teljesen külön feszültségforrás is, de nem térhet el ±0,3 V-nál nagyobb mértékben a VCC-től.

Ha az átalakítás pontossága kritikus, a zajszint a következő technikák alkalmazásával is csökkenthető:

  1. Az analóg jelútvonalak legyenek a lehető legrövidebbek. Ezek a jelútvonalak legyenek lehető legtávolabb a nagy sebességű digitális jelsávoktól.
  2. Lehetőség szerint használjuk az ADC zajszűrő funkciót a CPU által indukált zaj csökkentésére (lásd később).
  3. Ha bármilyen ADC [3..0] porkivezetést használunk digitális kimenetként, elengedhetetlen, hogy ezek ne kapcsoljanak át, amíg az átalakítás folyamatban van. A WIRE interfész (ADC4 és ADC5) csak az ADC4 és ADC5 átalakítására lesz hatással, a többi ADC csatornára nem.

Az ADC egység órajelforrása egy előosztót tartalmaz. Az előosztóval beállítható az optimális ADC órajel frekvencia. A 10 bites felbontás 50-100Khz ADC órajel frekvenciát igényel. Amennyiben megelégszünk a 8 bites felbontással, akkor ez lehet 200Khz vagy magasabb frekvencia is. Az ADC órajel frekvencia növelése jelentősen csökkenti az átalakítási időt. Mivel a vezérlő órajele különböző lehet a kívülről rákötött kristályoktól függően, az előosztó beállítása a vezérlő órajelétől függ. Az alábbi táblázat megmutatja, hogy milyen mérési időkre lehet számítani. Pontosabban az ADC egység órajelének ciklusait adja meg, ebből már nekünk kell kiszámolni a mérési időt, ha szükségünk van rá.

Látható, hogy a konverzió általában kb. 15-16 órajel ciklus alatt lezajlik, de ez nem az első átalakításra igaz, mert az hosszabb. 50Khz ADC órajel esetén kb. 320usec, 100Khz esetén 160usec, és 200Khz esetén (ez már csak 8 bites átalakítás lehet) 80usec. Az adatlap szerint 13usec a legkisebb átalakítási idő, nyilván erős pontossági kompromisszumokkal.

Tartalmaz az ADC egység egy mintavevő és tartó áramkört. Ez lényegében egy kondenzátor, amire egy elektronikus kapcsolón keresztül rávezetjük a mérendő feszültséget. A mérés idejére a kapcsoló szakadásba megy át, hogy kizárólag a kondenzátor állandósult feszültségét mérje az ADC. A kondenzátor feltöltéséhez idő kell, ezért van a fentebb látható konverziós idő táblázatban külön megadva a mintavétel és tartás időigénye.

A fenti rajzon Ih és Il a kivezetés szivárgási áramait jelképezi. Valamint van egy ellenállás is, ami a kondenzátor felé vezető utat jellemzi. Ezek mind befolyásolják a mintavételi időt. Javasolt, hogy az analóg bemenetre kapcsolt feszültség forrás belső ellenállása ne legyen kisebb, mint 10Kohm. Ezen kívül nem szabad olyan gyorsan változó jelet kapcsolni a bemenetre, aminek a legmagasabb frekvenciájú komponense meghaladja a mintavételi frekvencia felét. A mintavételi frekvencia jelen esetben a konverziós időből számítható. Tekintve, hogy kb. 10000 mintavételre számíthatunk másodpercenként, hangfrekvenciás jelek digitalizálására csak nagyon szerény eredményekkel használhatjuk az ADC áramkört.

Referencia feszültség kiválasztásának módosításakor figyelembe kell venni, hogy a módosítás végrehajtása pufferelt aszinkron mechanizmus. Azaz csak akkor hajtja végre az ADC a változtatást, ha vége egy konverziónak. Tehát amikor megváltoztattuk a referencia feszültség forrást, a következő érvényes mérési eredmény lehetséges, hogy még az előző beállítással készült. Egyszeri mérés előtt mindenképpen a mérés elindítása előtt hajtsuk végre a változtatást. Szabadonfutó mód esetén pedig a változattás utáni első mérési eredményt ne vegyük figyelembe. Érdemes ebben a kérdésben az adatlapot is elővenni, mert az ottani instrukciók részletesebbek.

A mérendő bemenet kiválasztásakor figyelembe kell venni, hogy a multiplexer beállítás csak a konverzió végrehajtását követően jut érvényre. Ezért a multiplexer bemenet változtatását követő eredmény lehetséges, hogy még az előző beállítással készült. Egyszeri mérés esetén először állítsuk be a multiplexert, és csak utána indítsuk el konverziót. Szabadonfutó mód esetén a multiplexer beállítását követően az első mérési eredményt ne vegyük figyelembe. Érdemes ebben a kérdésben az adatlapot is elővenni, mert az ottani instrukciók részletesebbek.

Egyetlen konverzió indításához gondoskodni kell arról, hogy PRR tejesítménycsökkentés regiszter PRADC bitje 0-ra legyen állítva. Ez engedélyezi az ADC működését. Ezt követően az ADCSRA regiszterben az ADSC bitet egyre kell állítani. Ez a bit mindaddig egy marad, amíg az átalakítás folyamatban van, és az átalakítás befejezésekor a hardver törli. Ha folyamatos konverzió lett beállítva, akkor szintén ezt a bitet kell egyre állítani az első konverzió elindításához, ami ez után folyamatosan ismétlődik. Ha az ADSC bitbe nullát írunk, annak nincs hatása. Az ADC bekapcsolását követő első konverzió végrehajtási ideje a 13 ADC órajel ciklus helyett 25, mert az első indítás inicializálja az ADC működését és ez hosszabb időt vesz igénybe.

Ha egy másik adatcsatornát választunk ki az átalakítás során, az ADC befejezi az aktuális átalakítást a csatornaváltás végrehajtása előtt.

A konverzió különféle eseményekhez is köthető, melyek elindíthatják. Az ADCSRB vezérlő és állapotregiszterben tudjuk három bittel kiválasztani a konverzió indításának forrását. A lehetséges esetek:

Ahhoz, hogy a fenti táblázatban szereplő események valamelyike indítsa el a konverziót az ADCSRA regiszter ADATE automatikus trigger engedélyező bitjét egyre kell állítani. Az alábbi rajzon követhető a működés logikája:

Ha pozitív él jelenik meg a kiválasztott triggerjelen, az ADC előosztó alaphelyzetbe áll, és elindul az átalakítás. Ez lehetőséget biztosít az átalakítások meghatározott időközönkénti elindítására. Ha a triggerjel továbbra magas szinten van, amikor az átalakítás befejeződött, új átalakítás nem indul el. Ha az átalakítás közben újabb pozitív él fordul elő a triggerjelben, annak sincs hatása.

Az egyes események megszakítási jelzői akkor is beállításra kerülnek, ha az adott megszakítás le van tiltva, vagy a SREG Global Interrupt Enable bitje nullára lett állítva, és ezzel a megszakítások globálisan tiltásra kerültek. Így az átalakítás megszakítás nélkül is elindul. A megszakítási jelzőt (ADIF az ADRCSA regiszterben) azonban törölni kell annak érdekében új konverziót indítson el, hiszen ehhez felfutó él szükséges.

Automatikus triggerelés használata esetén a kiváltó esemény pontos időpontja indeterminisztikus lehet. Ezért az ADMUX regiszter beállítása során figyelni kell arra, hogy az eredmény melyik beállítással keletkezett. Az ADMUX biztonságosan frissíthető a következő módokon:

  1. Amikor az ADATE vagy az ADEN törlődik.
  2. Az átalakítás során legalább egy ADC órajelciklus eltelt a mérés indító esemény után.
  3. Konvertálás után, mielőtt az eseményindító megszakításjelző törlésére sor kerül.

Ha ezen feltételek valamelyikében frissíti az ADMUX-ot, az új beállítások hatással lesznek a következő ADC-átalakításra.

Ha az ADC megszakításjelzőt (ADIF bit az ADCSRA regiszterben) használja eseményindító forrásként, az ADC új átalakítást indít, amint a folyamatban lévő átalakítás befejeződött. Az ADC ezután szabadon futó üzemmódban működik, folyamatosan mintavételezve és frissítve az ADC adatregisztert. Az első konverziót az előzőkben leírt módon kell elindítani azzal, hogy egyet írunk az ADSC bitre az ADCSRA regiszterben. Ebben az üzemmódban az ADC az egymást követő konverziókat attól függetlenül hajtja végre, hogy az ADIF bit az ADCSRA regiszterben törölve van-e vagy sem.

Az ADSC segítségével az is megállapítható, hogy egy átalakítás folyamatban van-e. Az ADSC-bit az átalakítás során egy lesz, függetlenül az átalakítás elindításának módjától. Azonban folyamatos átalakítás esetén az ADSC bit folyamatosan magas marad, mert a befejezéskor azonnal automatikusan elindul egy új konverzió.

Az átalakítás befejezését az ADCSRA regiszter ADIF bitjének egybe billenése jelzi. Az eredmény a konverzió befejezésekor az ADCL és ADCH eredményregiszterekbe kerül. Alapértelmezés szerint az eredmény jobbra igazítva jelenik meg, de opcionálisan balra igazítva is megjeleníthető az ADLAR bit beállításával az ADMUX regiszterben. Az itt található adatból a mért feszültség az alábbi összefüggéssel számítható ki:

ahol VIN a kiválasztott bemenet feszültsége és VREF a kiválasztott feszültségreferencia.

Ha az eredmény jobbra van igazítva, és legfeljebb 8 bites pontosságra van szükség, elegendő az ADCH olvasása. Ellenkező esetben először az ADCL-t, majd az ADCH-t kell olvasni annak érdekében, hogy az adatregiszterek tartalma ugyanahhoz a konverzióhoz tartozzon. Az ADCL olvasása után adatregiszterekhez az ADC egység nem fér hozzá. Ez azt jelenti, hogy ha az ADCL beolvasása megtörtént, és az átalakítás az ADCH olvasása előtt befejeződik, egyik regiszter sem frissül, és az átalakítás eredménye elvész. Az ADCH olvasásakor az ADC újra engedélyezi az ADCH és ADCL regiszterek elérését.

Az ADC saját megszakítással rendelkezik, amely az átalakítás befejezésével aktiválható. Ha az ADC hozzáférése az adatregiszterekhez tilos az ADCH és az ADCL olvasása között, a megszakítás akkor is aktiválódik, ha az eredmény elveszik.

Az ADC zajszűrővel rendelkezik, amely lehetővé teszi az átalakítást alvó üzemmódban, hogy csökkentse a CPU és más I/O perifériák által keltett zajt. A zajszűrő „ADC zajcsökkentés” és „üresjárati” sleep móddal használható. A funkció használatához a következő eljárást kell használni:

  1. Engedélyezni kell az ADC-t, és megvárni, amíg befejeződik az esetlegesen folyamatban lévő átalakítás. Az egyszeri konverziós módot kell kiválasztani, és engedélyezni kell az ADC konverzió teljes megszakítását.
  2. A SLEEP módok közül az ADC zajcsökkentési módot vagy az üresjárati módot kell kiválasztani (lásd energiatakarékos üzemmódok). Az ADC a CPU leállítása után automatikusan elindítja az átalakítást.
  3. Ha az ADC-átalakítás befejezése előtt nem történik más megszakítás, az ADC-megszakítás felébreszti a processzort, és végrehajtja az „ADC-átalakítás vége” megszakítási rutint. Ha egy másik megszakítás felébreszti a processzort az ADC-átalakítás befejezése előtt, a megszakítás végrehajtásra kerül, és az ADC-átalakítás befejezésekor létrejön egy ADC-átalakítás vége megszakítás is. A CPU aktív módban marad, amíg egy új energiatakarékos módot nem választunk ki.

Az ADC nem kapcsol ki automatikusan, ha az Üresjárat üzemmódon és az ADC zajcsökkentési módon kívüli más sleep üzemmódot választunk ki. Ha igényeljük a kisebb energiafogyasztást és nincs szükség az ADC-re, akkor nullát kell írni az ADEN bitbe az ilyen alvó üzemmódba lépés előtt.

  • ADMUX – Ebben a regiszterben tudjuk beállítani, hogy az ADC milyen forrásból használja a referencia feszültséget, valamint a mérendő feszültségforrást is itt választhatjuk ki a multiplexeren.
  • ADCSRA – Ebben a regiszterben engedélyezhetjük az ADC működését, elindíthatjuk a konverziót, beállíthatjuk az ADC órajelének előosztóját, és engedélyezhetjük a konverzió vége megszakítást.
  • ADCL és ADCH – Amikor egy ADC átalakítás befejeződött, az eredmény ebben a két regiszterben található.
  • ADCSRB – Ebben a regiszterben állíthatjuk be az ADC automatikus elindításának trigger forrását.
  • DIDR0 – Ebben a regiszterben az ADC által használt analóg bemeneti lábakon található (éppen nem használt) digitális bemenetek puffer áramköreit lehet letiltani. Ez csökkenti az áramfelvételt.

Ebben a regiszterben tudjuk beállítani, hogy az ADC milyen forrásból használja a referencia feszültséget, valamint a mérendő feszültségforrást is itt választhatjuk ki a multiplexeren.

7:6 bit – REFS1:0: Referencia kiválasztási bitek. Ezek a bitek választják ki az ADC feszültségreferenciáját, az alábbi táblázat szerint:

Ha ezek a bitek módosulnak az átalakítás során, a módosítás addig nem lép érvénybe, amíg az átalakítás be nem fejeződik (az ADCSRA ADIF egyben vn). A belső feszültség referencia opciók nem használhatók, ha külső referenciafeszültséget kapcsolunk az AREF kivezetésere.

5. bit – ADLAR: ADC bal oldali eredmény beállítás. Az ADLAR bit befolyásolja az ADC konverziós eredmény megjelenítését az ADC adatregiszterben (lásd ADCL és ADCH regiszter). Ha egyet írunk ADLAR bitbe, az eredmény balra igazítva jelenik meg, míg 0 esetén jobbra igazítva. Az ADLAR bit módosítása azonnal hatással lesz az ADC adatregiszterre, függetlenül a folyamatban lévő átalakításoktól.

4. bit – Res: Fenntartott bit. Ez a bit egy nem használt bit az ATmega48PA / 88PA / 168PA / 328P-ben, és mindig nullaként jelenik meg.

3:0 bitek – MUX3:0: analóg csatornaválasztó bitek. Ezeknek a biteknek az értéke választja ki, hogy mely analóg bemenetek csatlakoznak az ADC-hez. A részleteket lásd az alábbi táblázatban.

Ha ezek a bitek módosulnak az átalakítás során, a módosítás addig nem lép érvénybe, amíg az átalakítás be nem fejeződik (az ADCSRA ADIF beállítása be van állítva).

Ebben a regiszterben engedélyezhetjük az ADC működését, elindíthatjuk a konverziót, beállíthatjuk az ADC órajelének előosztóját, és engedélyezhetjük a konverzió vége megszakítást.

7. bit – ADEN: ADC engedélyezése. Ennek a bitnek az egybe írása engedélyezi az ADC-t. Ha nullára állítjuk, akkor az ADC kikapcsol. Ha az átalakítás közben írjuk nullára, akkor az átalakítás megszakad.

6. bit – ADSC: ADC konverzió indítása. Egyetlen átalakítási üzemmód esetén a bit egybe írása elindít egy konverziót. Szabad futó módban (ADATE bit=1, és ADTS bitek mindegyike 0 az ADCSRB regsizterben) a bit egybe írása elindítja az első konverziót, a további átalakítások automatikusan elindulnak a minenkori konverzió befejezésekor. Az ADC engedélyezése utáni első konverzió, vagy ha az ADSC egybe írása az ADC engedélyezésével egy időben történik, az átalakítás a normál 13 helyett 25 ADC óraciklust vesz igénybe. Ez az első átalakítás végzi el az ADC inicializálását.

Az ADSC mindaddig egy marad, amíg az átalakítás folyamatban van. Amikor az átalakítás befejeződött, értéke nulla lesz. Ha nullát írunk erre a bitre, annak nincs hatása.

5. bit – ADATE: ADC automatikus trigger engedélyezése. Ha ezt a bitet egybe írjuk, azzal az ADC automatikus indítását engedélyezzük. Az ADC elindítja az átalakítást, ha a kiválasztott trigger jel felfutó éle megérkezik. Az eseményindító forrását az ADCSRB regiszterben lehet megadni az ADTS bitekkel. Ha az összes ADTS bit 0, akkor szabadonfutó módot választottunk ki, vagyis az ADC saját magát indítja újra sorozatosan a konverzió befejezésekor.

4. bit – ADIF: ADC megszakításjelző. Ez a bit akkor kerül beállításra, amikor az ADC átalakítás befejeződik, és az adatregiszterek frissültek. A „konverziós teljes” megszakítás akkor kerül végrehajtásra, ha az ADIE bit ebben a regiszterben, valamint az SREG-ben az I-bit be van állítva. Az ADIF bitet a hardver törli a megfelelő megszakításkezelő vektor végrehajtásakor. Alternatív megoldásként az ADIF törléséhez egyet kell írni erre a bitre. Vigyázzunk, hogy ha Read-ModifyWrite műveletet végzünk az ADCSRA-n, a függőben lévő megszakítás letiltható. Ez akkor is érvényes, ha az SBI és CBI utasításokat használjuk.

3. bit – ADIE: ADC megszakítás engedélyezése. Ha ezt a bitet egybe írjuk, és az I-bit a SREG-ben be van állítva, az ADC „konverzió teljes” megszakítása aktiválódik.

2:0 bitek – ADPS2:0: ADC előosztó. Ezek a bitek határozzák meg a rendszerórajel frekvenciája és az ADC bemeneti órája közötti osztási tényezőt.

Amikor egy ADC átalakítás befejeződött, az eredmény ebben a két regiszterben található.

Az ADMUX ADLAR bitje befolyásolja az eredmény regiszterekből történő beolvasásának módját. Ha az ADLAR bit értéke egy, az eredmény balról növekvő helyiérték szerint olvasható ki. Ha az ADLAR értéke nulla, az eredmény jobbról növekvő helyiérték szerint olvasható ki.

ADLAR = 0 esetén:

ADLAR = 1 esetén:

Az ADCL regiszter kiolvasásáig az ADC adatregiszter nem frissül új értékkel (az új eredmény elveszik), amíg az ADCH kiolvasása meg nem történik. Ha elegendő a 8 bites felbontás, illetve elegendő az eredmény felső 8 bitje, akkor elegendő az ADCH kiolvasása. Ezt követően a következő konverzió eredménye frissíti az ADCL és ADCH regisztereket. A 10 bites eredmény kiolvasáshoz először az ADCL-t, majd az ADCH-t kell olvasni.

ADC9:0: ADC-konverzió eredménye. Ezek a bitek az átalakítás eredményét képviselik.

Ebben a regiszterben állíthatjuk be az ADC automatikus elindításának trigger forrását.

Az ACME (Analog Comparator Multiplexer Enable) bit jelentését lásd az analóg komparátorral kapcsolatos leírásokban.

7. bit, 5-3 bitek: Fenntartott bitek. Ezek a bitek későbbi használatra vannak fenntartva. A jövőbeli eszközökkel való kompatibilitás biztosítása érdekében ezeket a biteket nullára kell írni az ADCSRB írásakor.

2:0 bit – ADTS2:0: ADC automatikus trigger forrás. Ha az ADCSRA regiszterben az ADATE egybe van írva, akkor ezeknek a biteknek az értéke választja ki, hogy melyik forrás indítja el az ADC-konverziót. Ha töröljük az ADATE paramétert, az ADTS2:0 beállításainak nincs hatása. Az átalakítást a kiválasztott megszakításjelző felfutó éle indítja el. Ha egy törölt megszakításjelzőről az ADTS2:0 bitek megváltoztatásával olyan megszakításjelzőre térünk át minek az értéke egy, akkor az felfutó élet hoz létre. Ha az ADCSRA  regiszterben ekkor ADEN bit be van állítva, ez elindítja az átalakítást.

Szabadon futó módra váltás (ADTS[2:0]=0) nem okoz konverzió indítást akkor sem, ha az ADC megszakításjelző be van állítva.

ADC automatikus eseményindító források kiválasztó értékei:

Ebben a regiszterben az ADC által használt analóg bemeneti lábakon található (éppen nem használt) digitális bemenetek puffer áramköreit lehet letiltani. Ez csökkenti az áramfelvételt.

7:6 bitek – Res: Fenntartott bitek. Ezek a bitek későbbi használatra vannak fenntartva. A jövőbeli eszközökkel való kompatibilitás biztosítása érdekében ezeket a biteket nullára kell írni a DIDR0 írásakor.

Bit 5:0 – ADC5D.. ADC0D: ADC5.. 0 Digitális bemenet letiltása. Ha ezt a bitet egybe írjuk, a megfelelő ADC bemenet digitális bemeneti puffere letiltásra kerül. A megfelelő bemeneti érték regiszterbit mindig nulla lesz, ha ez a bit egybe van állítva. Amikor analóg jeleket vezetünk az ADC5..0 bemenetekre, és ezeknek a kivezetéseknek a digitális bemenetére nincs szükség, a megfelelő bitet egybe kell írni, hogy csökkentsük az energiafogyasztást a digitális bemeneti pufferben.

Ne feledjük, hogy az ADC7 és ADC6 ADC tűk nem rendelkeznek digitális bemeneti pufferekkel, ezért nem igényelnek digitális bemenetet letiltó biteket.

Mennyire volt hasznos amit olvastál? Értékelés után szövegesen is leírhatod megjegyzéseidet és véleményedet!

Kattints egy csillagra az értékeléshez!

Szövegesen is leírhatod véleményedet! Ha kérdésed van, ne felejtsd el megadni az email címedet!