Serwis Edukacyjny
w I-LO w Tarnowie
obrazek

Materiały dla uczniów liceum

  Wyjście       Spis treści       Wstecz       Dalej  

obrazek

Autor artykułu: mgr Jerzy Wałaszek
Konsultacje: Wojciech Grodowski, mgr inż. Janusz Wałaszek

©2021 mgr Jerzy Wałaszek
I LO w Tarnowie

obrazek

Mikrokontrolery

ATmega8

Przetwornik analogowo/cyfrowy

obrazek

Educational and Non-Profit Use of Copyrighted Material:

If you use Microchip copyrighted material solely for educational (non-profit) purposes falling under the “fair use” exception of the U.S. Copyright Act of 1976 then you do not need Microchip’s written permission. For example, Microchip’s permission is not required when using copyrighted material in: (1) an academic report, thesis, or dissertation; (2) classroom handouts or textbook; or (3) a presentation or article that is solely educational in nature (e.g., technical article published in a magazine).

https://www.microchip.com/about-us/legal-information/copyright-usage-guidelines

SPIS TREŚCI
Podrozdziały

obrazek

Cechy

Mikrokontroler ATmega8 udostępnia 10-bitowy kompensacyjny przetwornik analogowo/cyfrowy. Przetwornik połączony jest do 8-kanałowego multipleksera analogowego, który pozwala na wprowadzenie ośmiu nieróżnicowych napięć pobieranych z końcówek portu C. Wejścia napięć nieróżnicowych odnoszą się do 0V (GND).

Przetwornik posiada obwód próbkowania z podtrzymaniem, który zapewnia, iż napięcie wejściowe do przetwornika jest utrzymywane na stałym poziomie podczas konwersji. Poniższy rysunek przedstawia schemat blokowy przetwornika.

Przetwornik A/C posiada oddzielną końcówkę analogowego napięcia zasilania, AVCC. Napięcie to nie powinno się różnić więcej niż ±0.3V od VCC. Zobacz do podrozdziału "Filtr zakłóceń", gdzie opisano sposób podłączania tej końcówki.

Wewnętrznie dostępne jest napięcie odniesienia o wartości znamionowej 2,56V lub AVCC. Napięcie odniesienia może być zewnętrznie odsprzęgane na końcówce AREF kondensatorem w celu zwiększenia odporności na zakłócenia.

Przetwornik analogowo/cyfrowy zamienia analogowe napięcie wejściowe na 10-bitową wartość za pomocą kolejnych przybliżeń. Wartość minimalna reprezentuje GND, a wartość maksymalna reprezentuje napięcie na końcówce AREF minus 1 LSB (najmłodszy bit). Opcjonalnie do końcówki AREF można podłączyć AVCC lub wewnętrzne napięcie odniesienia 2,56V przez zapis bitów REFSn w rejestrze ADMUX. W ten sposób wewnętrzne napięcie odniesienia można odsprzęgnąć zewnętrznym kondensatorem podłączonym do końcówki AREF, co polepszy odporność na zakłócenia.

Analogowy kanał wejściowy jest wybierany przez zapis bitów MUX w rejestrze ADMUX. Jako kanał nieróżnicowy dla przetwornika A/C może być wybrana dowolna z końcówek wejściowych ADC, jak również GND i stałe napięcie odniesienia.

Przetwornik A/C jest włączany przez ustawienie bitu ADEN w rejestrze ADCSRA. Napięcie odniesienia i wybory kanałów wejściowych nie wejdą w życie, dopóki nie zostanie ustawiony bit ADEN. Gdy bit ADEN jest wyzerowany, przetwornik A/C nie pobiera prądu, zatem zaleca się wyłączać przetwornik przed wejściem w tryby uśpienia oszczędzające energię.

Przetwornik A/C generuje 10-bitowy wynik, który będzie obecny w rejestrach danych przetwornika, ADCH i ADCL. Standardowo wynik jest prezentowany z wyrównaniem do prawej strony, lecz może być opcjonalnie prezentowany z wyrównaniem lewostronnym przez ustawienie bitu ADLAR w rejestrze ADMUX.

Jeśli wynik jest wyrównany lewostronnie i nie jest potrzebna wyższa precyzja od 8 bitów, to wystarczy odczytać rejestr ADCH. W przeciwnym razie najpierw musi być odczytany rejestr ADCL, a następnie ADCH, aby zagwarantować, iż zawartość rejestrów danych należą do tej samej konwersji. Gdy zostaje odczytany rejestr ADCL, przetwornik A/C ma zablokowany dostęp do rejestrów danych, żaden z nich nie będzie uaktualniony i wynik konwersji zostanie utracony. Gdy odczytywany jest rejestr ADCH, przetwornik A/C otrzymuje z powrotem dostęp do ADCH i ADCL.

Przetwornik A/C posiada swoje własne przerwanie, które może zostać wyzwolone przy zakończeniu konwersji. Gdy dostęp przetwornika A/C do rejestrów danych jest wzbroniony pomiędzy odczytem ADCH i ADCL, przerwanie zostanie wyzwolone, nawet, gdy wynik będzie utracony.


Rozpoczynanie przetwarzania

Pojedyncza konwersja rozpoczyna się przez zapisanie logicznej jedynki w bicie rozpoczynania konwersji w przetworniku A/C (ang. ADC Start Conversion bit, ADSC). Bit ten pozostaje w stanie wysokim przez cały czas wykonywania konwersji, a po jej zakończeniu jest zerowany sprzętowo. Jeśli zostanie wybrany inny kanał danych podczas trwania konwersji, przetwornik A/C zakończy bieżącą konwersję przed wykonaniem zmiany kanału.

W trybie ciągłej konwersji (ang. Free Running mode) przetwornik ciągle próbkuje i uaktualnia swój rejestr danych. Tryb ten jest wybierany przez zapis jedynki do bitu ADFR w rejestrze ADCSRA. Pierwsza konwersja musi być uruchomiona przez zapisz jedynki logicznej w bicie ADSC rejestru ADCSRA. W tym trybie przetwornik A/C będzie wykonywał kolejne konwersje niezależnie od ustawienia lub nie znacznika przerwań przetwornika A/C (ang. ADC Interrupt Flag, ADIF).

Na początek:  podrozdziału   strony 

Preskalowanie i czasy konwersji

Standardowo układ kolejnych przybliżeń wymaga częstotliwości wejściowej pomiędzy 50 kHz a 200 kHz, aby osiągnąć maksymalną rozdzielczość. Jeśli jest potrzebna rozdzielczość niższa niż 10 bitów, to częstotliwość wejściowa dla przetwornika A/C może być wyższa od 200 kHz w celu osiągnięcia wyższej częstotliwości próbkowania.

Preskaler przetwornika A/C
obrazek

Moduł przetwornika A/C zawiera preskaler, który generuje właściwą dla przetwornika A/C częstotliwość zegarową z dowolnej częstotliwości mikroprocesora powyżej 100kHz. Stopień podziału ustawiany jest przez bity ADPS w ADCSRA. Preskaler rozpoczyna zliczanie od momentu włączenia przetwornika A/C przez ustawienie bitu ADEN w ADCSRA. Preskaler pracuje tak długo, jak bit ADEN pozostaje ustawiony, a jest ciągle resetowany, gdy ADEN jest wyzerowany.

Gdy rozpoczyna się pojedyncze przetwarzanie przez ustawienie bitu ADSC w ADCSRA, to przetwarzanie to startuje od następnego narastającego zbocza cyklu zegarowego przetwornika A/C.

Normalne przetwarzanie zajmuje 13 cykli zegarowych przetwornika A/C. Pierwsze przetwarzanie po włączeniu przetwornika A/C (ustawienie ADEN w ADCSRA) zabiera 25 cykli zegarowych w celu inicjalizacji obwodów analogowych, jak pokazuje poniższy rysunek.

Wykres czasowy przetwornika A/C, pierwsze przetwarzanie (tryb pojedynczego przetwarzania)

Właściwe próbkowanie z podtrzymaniem próbki ma miejsce 1,5 cyklu zegara przetwornika A/C po rozpoczęciu normalnego przetwarzania i 13,5 cykli zegara po rozpoczęciu pierwszego przetwarzania. Gdy przetwarzanie jest ukończone, wynik zostaje zapisany do rejestrów danych przetwornika A/C, a znacznik ADIF jest ustawiany. W trybie pojedynczego przetwarzania bit ADSC jest jednocześnie zerowany. Program może wtedy ponownie ustawić ADSC, a nowe przetwarzanie zostanie zainicjowane  przy pierwszym narastającym zboczu zegara przetwornika A/C.

Wykres czasowy przetwornika A/C, jedno przetwarzanie

 

Wykres czasowy przetwornika A/C, przetwarzanie z automatycznym wyzwalaniem
obrazek

W trybie ciągłym (ang. Free Running mode) nowe przetwarzanie rozpoczyna się natychmiast po ukończeniu poprzedniego przetwarzania, natomiast bit  ADSC pozostaje w stanie wysokim.

Wykres czasowy przetwornika A/C, przetwarzanie w trybie ciągłym

Poniższa tabela podsumowuje czasy przetwarzania:

Warunek Próbkowanie z podtrzymaniem od startu przetwarzania Czas przetwarzania (cykle)
Pierwsze przetwarzanie 13,5 25
Normalne przetwarzania 1,5 13
Na początek:  podrozdziału   strony 

Zmiana kanału lub wybór napięcia odniesienia

Bity MUXn i REFS[1:0] w rejestrze ADMUX są buforowane poprzez rejestr tymczasowy, do którego mikroprocesor posiada swobodny dostęp. Zapewnia to, iż wybór kanałów i napięcia odniesienia odbywa się w bezpiecznym punkcie podczas procesu przetwarzania. Wybór ten jest ciągle uaktualniany aż do rozpoczęcia przetwarzania. Gdy przetwarzanie rozpocznie się, wybór kanałów i napięcia odniesienia zostaje zablokowany, aby zapewnić wystarczający czas próbkowania dla przetwornika A/C. Ciągłe uaktualnianie jest wznawiane w ostatnim cyklu zegarowym przetwornika A/C przed ukończeniem przetwarzania (zostaje ustawiony bit ADIF w rejestrze ADCSRA). Zwróć uwagę, iż przetwarzanie rozpoczyna się przy następnym narastającym zboczu zegara przetwornika A/C po zapisaniu bitu ADSC. Dlatego zaleca się użytkownikowi nie wpisywać nowych wartości wyboru kanału lub napięć odniesienia do ADMUX w ciągu jednego cyklu zegarowego przetwornika A/C po zapisie bitu ADSC.

Jeśli oba bity ADATE i ADEN zostaną wpisane jako jedynki, to zdarzenie przerwania może wystąpić w dowolnym momencie. Jeśli w tym okresie jest modyfikowany rejestr ADMUX, to użytkownik nie będzie w stanie określić, czy następne przetwarzanie zostanie oparte na starych ustawieniach, czy na nowych. ADMUX można bezpiecznie modyfikować w jeden z następujących sposobów:

  1. Gdy bit ADFR lub ADEN jest wyzerowany.
  2. Podczas przetwarzania co najmniej jeden cykl zegarowy przetwornika A/C po zdarzeniu wyzwalającym.
  3. Po przetwarzaniu, przed wyzerowaniem znacznika przerwania jako źródła wyzwalania.

Gdy rejestr ADMUX jest modyfikowany w jednym z powyższych warunków, to nowe ustawienia wpłyną na następne przetwarzanie w przetworniku A/C.

Kanały wejściowe przetwornika A/C

Przy zmianie wyboru kanałów użytkownik powinien stosować się do poniższych wskazówek, aby zapewnić wybór poprawnego kanału:

W trybie pojedynczego przetwarzania (ang. Single Conversion mode) zawsze wybieraj kanał przed rozpoczęciem przetwarzania. Wybór kanału może być zmieniony po upływie jednego cyklu zegarowego przetwornika A/C od zapisu jedynki do bitu ADSC. Jednakże najprostszym sposobem jest odczekanie, aż przetwarzanie zakończy się, zanim wykona się zmianę wyboru kanału.

W trybie pracy ciagłej (ang.Free Running mode) zawsze wybieraj kanał przed uruchomieniem pierwszego przetwarzania. Wybór kanału może być zmieniony po upływie jednego cyklu zegarowego przetwornika A/C od zapisu jedynki do bitu ADSC. Jednakże najprostszym sposobem jest odczekanie na zakończenie pierwszego przetwarzania, a wtedy można zmienić wybór kanału. Ponieważ następne przetwarzanie zostało już rozpoczęte, to jego wynik będzie odzwierciedlał poprzednie ustawienie kanału. Kolejne przetwarzania będą odzwierciedlać nowy wybór kanału.

Napięcie odniesienia dla przetwornika A/C

Napięcie odniesienia dla przetwornika A/C (VREF) wskazuje zakres przetwarzania napięć w przetworniku. Jeśli w kanale analogowym podłączonym do wejścia przetwornika A/C napięcie przekracza VREF, to wynik przetwarzania da wartość bliską 0x3FF. Jako VREF  można wybrać jako AVCC, wewnętrzne napięcie odniesienia / 2,56 V lub zewnętrzne napięcie odniesienia z końcówki AREF.

AVCC jest podłączane do przetwornika A/C przez pasywny przełącznik. Wewnętrzne odniesienie 2,56V jest generowane z wewnętrznego napięcia odniesieni VBG poprzez wewnętrzny wzmacniacz. W każdym przypadku zewnętrzna końcówka AREF jest podłączona bezpośrednio do przetwornika A/C, a napięcie odniesienia można uodpornić na zakłócenia przez włączenie kondensatora pomiędzy końcówkę AREF i masę. VREF można również zmierzyć na końcówce AREF przy pomocy woltomierza o wysokiej impedancji. Zauważ, iż VREF jest źródłem o wysokiej impedancji i w systemie powinno być obciążone tylko pojemnościowo.

Jeśli użytkownik posiada stałe źródło napięciowe podłączone do końcówki AREF, to nie powinien on w swojej aplikacji używać innych opcji napięcia odniesienia, ponieważ zostaną one zwarte z napięciem zewnętrznym. Jeśli do końcówki AREF nie jest podłączone żadne napięcie zewnętrzne, to użytkownik może przełączać pomiędzy AVcc i 2,56V jako wybór odniesienia. Pierwsze przetwarzanie w przetworniku A/C po przełączeniu źródła napięcia odniesienia może nie być dokładne i zaleca się użytkownikowi odrzucenie jego wyniku.

Na początek:  podrozdziału   strony 

Reduktor zakłóceń dla przetwornika A/C

Przetwornik A/C posiada możliwość redukcji szumów, która umożliwia przetwarzanie podczas trybu uśpienia w celu zmniejszenia szumu pochodzącego od pracy mikroprocesora oraz innych układów peryferyjnych w mikrokontrolerze. Reduktor szumu może być używany z przetwornikiem A/C i trybem redukcji zakłóceń i z trybem bezczynnym. Aby skorzystać z tej cechy, należy użyć następującej procedury:

Zwróć uwagę, że przetwornik A/C nie zostanie automatycznie wyłączony, gdy mikroprocesor wejdzie w inne tryby uśpienia niż tryb bezczynności oraz tryb redukcji zakłóceń dla przetwornika A/C. Użytkownik powinien wpisać zero do bitu ADEN przed wejściem do takich trybów uśpienia, aby zapobiec nadmiernemu poborowi energii.

Obwody analogowe wejścia

Układ analogowego wejścia dla kanałów przetwornika A/C jest pokazany na poniższym rysunku. Źródło analogowe przyłożone do końcówki ADCn jest obciążone pojemnością końcówki oraz upływami wejściowymi bez względu na to, czy ten kanał został wybrany jako wejście dla przetwornika A/C. Gdy kanał jest wybrany, źródło musi zasilić kondensator CS/H (ang. Sample and Hold capacitor – kondensator próbkowania i podtrzymania) poprzez szeregowy opornik (całkowita oporność na ścieżce wejścia).

obrazek

Kondensator pokazany na rysunku przedstawia całkowitą pojemność, łącznie z kondensatorem CS/H oraz z wszelkimi obcymi i pasożytniczymi pojemnościami wewnątrz mikrokontrolera. Podana wartość jest najgorszym przypadkiem.

Przetwornik A/C jest zoptymalizowany dla sygnałów analogowych o impedancji wyjściowej w przybliżeniu 10 kΩ lub mniejszej. Dla takich źródeł czas próbkowania będzie pomijalny. Jeśli zostanie użyte źródło o większej impedancji, czas próbkowania będzie zależał od tego, jak długo źródło potrzebuje ładować kondensator CS/H. Tutaj może być duży rozrzut. Zaleca się użytkownikom używania źródeł o niskiej impedancji oraz wolnozmiennych sygnałów, ponieważ to minimalizuje czas ładowania kondensatora CS/H do pożądanej wartości napięcia wejściowego.

Składowe sygnału wyższe od częstotliwości Nyquista (fADC / 2) nie powinny być obecne, aby uniknąć nieprzewidywalnych zniekształceń. Należy usunąć składowe o wysokich częstotliwościach za pomocą filtru dolnoprzepustowego przed przekazaniem sygnałów jako wejścia dla przetwornika A/C.

Sposoby redukcji szumów

Układy cyfrowe wewnątrz i na zewnątrz mikrokontrolera generują interferencje elektromagnetyczne, które mogą wpłynąć na dokładność pomiarów analogowych. Gdy dokładność przetwarzania jest istotna, to poziom szumów można obniżyć przez zastosowanie poniższych sposobów:
  1. Staraj się, aby ścieżki, po których biegną sygnały analogowe, były jak najkrótsze. Upewnij się, iż ścieżki analogowe biegną nad obszarami masy analogowej i umieszczaj je w miarę możności z dala od ścieżek cyfrowych z szybkozmiennymi sygnałami.
  2. Końcówka AVCC pin w mikrokontrolerze powinna być połączona z cyfrowym napięciem zasilania VCC poprzez sieć LC jak na poniższym rysunku.
  3. Używaj funkcji redukcji zakłóceń dla przetwornika A/C, aby zmniejszyć poziom zakłóceń indukowanych przez mikroprocesor.
  4. Jeśli jakaś końcówka portu jest używana jako wyjście cyfrowe, to nie powinna zmieniać stanu podczas wykonywania przetwarzania. Jednakże używanie 2-przewodowego interfejsu szeregowego (ADC4 i ADC5) wpłynie na konwersję tylko na końcówkach ADC4 i ADC5, a nie na innych kanałach przetwornika A/C.

Połączenia zasilania dla przetwornika A/C

Definicje dokładności przetwornika A/C

Przetwornik Analogowo/Cyfrowy n-bitowy (ang. n-bit single-ended ADC)   przetwarza w sposób liniowy napięcia pomiędzy GND a VREF w liczbę binarną o 2n poziomach. Najniższy kod daje odczyt 0, a najwyższy daje odczyt 2n-1. Kilka parametrów opisuje odchylenie od idealnego zachowania:

obrazek

obrazek

obrazek

obrazek

Na początek:  podrozdziału   strony 

Wynik przetwarzania przetwornika A/C

Po zakończeniu konwersji (ADIF ma stan wysoki) wynik można znaleźć w rejestrach wyniku przetwornika A/C (ADCL, ADCH).

Dla konwersji nieróżnicowej wynik ma postać:

gdzie VIN jest napięciem na wybranej końcówce wejściowej, a VREF jest wybranym napięciem odniesienia. 0x000 reprezentuje napięcie o poziomie masy analogowej, a 0x3FF reprezentuje wybrane napięcie odniesienia minus jeden LSB (najmłodszy bit).

Na początek:  podrozdziału   strony 

Opis rejestrów

ADMUX – ADC Multiplexer Selection Register – Rejestr wyboru kanału dla przetwornika A/C

Bit 7 6 5 4 3 2 1 0  
0x07 (0x27) REFS1 REFS0 ADLAR MUX3 MUX2 MUX1 MUX0 ADMUX
Zapis/Odczyt Z/O Z/O Z/O O Z/O Z/O Z/O Z/O  
Wartość początkowa 0 0 0 0 0 0 0 0  

Bity 7:6 – REFS[1:0]: Reference Selection Bits – Bity wyboru napięcia odniesienia

Te bity wybierają napięcie odniesienia dla przetwornika A/C, co pokazuje poniższa tabelka. Jeśli zostaną one zmienione podczas konwersji, to zmiana nie wejdzie w życie aż do zakończenia konwersji (ustawiony bit ADIF w rejestrze ADCSRA). Opcje wewnętrznych napięć odniesienia nie powinny być używane, jeśli do końcówki AREF podłączone jest zewnętrzne napięcie odniesienia.

Wybór napięć odniesienia dla przetwornika A/C
REFS1 REFS0 Wybór napięcia odniesienia
0 0 AREF, wewnętrzne napięcie VREF wyłączone.
0 1 AVCC z zewnętrznym kondensatorem na końcówce AREF.
1 0 Zarezerwowane.
1 1 Wewnętrzne napięcie odniesienia 2,56V z zewnętrznym kondensatorem na końcówce AREF.

Bit 5 – ADLAR: ADC Left Adjust Result – Wyrównanie lewostronne wyniku przetwarzania w przetworniku A/C

Bit ADLAR wpływa na sposób prezentacji wyniku przetwarzania przetwornika A/C w rejestrze danych ADC. Aby wynik był prezentowany z dosunięciem lewostronnym, wpisz do bitu ADLAR jedynkę logiczną. W przeciwnym razie wynik będzie dosunięty do prawej strony. Zmiana bitu ADLAR wpływa natychmiast na rejestr danych ADC, bez względu na trwające przetwarzania. Więcej na temat tego bitu znajdziesz w opisie rejestru ADC.

Bity 3:0 – MUX[3:0]: Analog Channel Selection Bits – Bity wyboru kanału analogowego i wzmocnienia

Wartość tych bitów określa kombinację wejść analogowych podłączonych do przetwornika A/C. Szczegóły podaje poniższa tabelka. Jeśli bity te zostaną zmienione podczas konwersji, to zmiana nie wejdzie w życie aż do zakończenia tej konwersji (bit ADIF w ADCSR ustawiony).

MUX[3:0] Wejście
nieróżnicowe
0000 ADC0
0001 ADC1
0010 ADC2
0011 ADC3
0100 ADC4
0101 ADC5
0110 ADC6
0111 ADC7
1000  
1001  
1010  
1011  
1100  
1101  
1110 1,30V (VBG)
1111 0V (GND)

ADCSRA – ADC Control and Status Register A – Rejestr A sterowania i stanu przetwornika A/C

Bit 7 6 5 4 3 2 1 0  
0x06 (0x26) ADEN ADSC ADFR ADIF ADIE ADPS2 ADPS1 ADPS0 ADCSRA
Zapis/Odczyt Z/O Z/O Z/O Z/O Z/O Z/O Z/O Z/O  
Wartość początkowa 0 0 0 0 0 0 0 0  

Bit 7 – ADEN: ADC Enable – Włączenie przetwornika A/C

Zapisanie jedynki do tego bitu włącza moduł przetwornika A/C. Zapis zera powoduje wyłączenie przetwornika A/C. Wyłączenie przetwornika podczas wykonywania przetwarzania spowoduje jego przerwanie i zakończenie.

Bit 6 – ADSC: ADC Start Conversion – Rozpoczęcie przetwarzania w przetworniku A/C

W trybie pojedynczego przetwarzania (ang. Single Conversion mode), zapisuj ten bit logiczną jedynką, aby rozpocząć każde przetwarzanie. W trybie ciągłym (ang. Free Running mode) zapisz do tego bitu jedynkę, aby rozpocząć pierwsze przetwarzanie. Pierwsze przetwarzanie po włączeniu przetwornika zajmuje 25 cykli zegarowych przetwornika A/C zamiast standardowo 13. W trakcie tego pierwszego przetwarzania wykonywana jest inicjalizacja przetwornika A/C.

W trakcie przetwarzania bit ADSC będzie dawał odczyt 1. Gdy przetwarzanie się zakończy, wróci do stanu zero. Zapis zera do tego bitu nie daje żadnego efektu.

Bit 5 – ADFR: ADC Free Running Select – Włączenie automatycznego wyzwalania

Gdy ten bit jest ustawiony, przetwornik A/C pracuje w trybie ciągłym (ang. Free Running mode). W tym trybie przetwornik A/C ciągle próbkuje i uaktualnia rejestry danych. Wyzerowanie tego bitu zakończy tryb ciągły.

Bit 4 – ADIF: ADC Interrupt Flag – Znacznik przerwania z przetwornika A/C

Ten bit jest ustawiany, gdy ukończone zostanie przetwarzanie w przetworniku A/C i rejestry danych zostaną uaktualnione. Przerwanie przy zakończeniu przetwarzania w przetworniku A/C jest wykonywane, jeśli są ustawione oba bity ADIE i I w rejestrze SREG. Bit ADIF jest zerowany przy wykonaniu odpowiedniego wektora obsługi przerwania. Alternatywnie można wyzerować ADIF przez zapis do tego bitu logicznej jedynki. Miej świadomość, iż odczyt-modyfikacja-zapis rejestru ADCSRA może spowodować zablokowanie oczekującego przerwania. Odnosi się to również do instrukcji SBI i CBI.

Bit 3 – ADIE: ADC Interrupt Enable – Włączenie przerwań od przetwornika A/C

Gdy bit ten zostanie zapisany stanem 1 oraz jest ustawiony bit I w rejestrze SREG, to uaktywnia się przerwanie przy zakończeniu przetwarzania w przetworniku A/C.

Bity 2:0 – ADPS2:0: ADC Prescaler Select Bits – Bity wyboru preskalera

Bity te określają współczynnik podziału pomiędzy częstotliwością XTAL a częstotliwością wejściową do przetwornika A/C.

ADPS2 ADPS1 ADPS0 Współczynnik podziału
0 0 0 2
0 0 1 2
0 1 0 4
0 1 1 8
1 0 0 16
1 0 1 32
1 1 0 64
1 1 1 128

ADCL i ADCH – ADC Data Register – Rejestr danych (dolny i górny bajt) przetwornika A/C

ADLAR = 0 – wynik wyrównany prawostronnie

Bit 15 14 13 12 11 10 9 8  
0x05 (0x25) - - - - - - ADC9 ADC8 ADCH
0x04 (0x24) ADC7 ADC6 ADC5 ADC4 ADC3 ADC2 ADC1 ADC0 ADCL
Bit 7 6 5 4 3 2 1 0  
Zapis/Odczyt O O O O O O O O  
Wartość początkowa 0 0 0 0 0 0 0 0  

ADLAR = 1 – wynik wyrównany lewostronnie

Bit 15 14 13 12 11 10 9 8  
0x05 (0x25) ADC9 ADC8 ADC7 ADC6 ADC5 ADC4 ADC3 ADC2 ADCH
0x04 (0x24) ADC1 ADC0 - - - - - - ADCL
Bit 7 6 5 4 3 2 1 0  
Zapis/Odczyt O O O O O O O O  
Wartość początkowa 0 0 0 0 0 0 0 0  

Gdy przetwarzanie w przetworniku A/C dobiegnie końca, wynik znajdzie się w tych dwóch rejestrach. Gdy zostanie odczytany rejestr ADCL (z dolnym bajtem wyniku), rejestr danych przetwornika A/C nie będzie uaktualniany aż do momentu odczytu ADCH (z górnym bajtem wyniku). W konsekwencji, jeśli wynik jest wyrównany lewostronnie i nie jest wymagana precyzja większa od 8 bitów, to wystarczy odczytać rejestr ADCH (otrzymasz 8 najstarszych bitów wyniku przetwarzania). W przeciwnym razie najpierw należy odczytać ADCL, a następnie ADCH.

Bit ADLAR w rejestrze ADMUX, wpływa na sposób odczytu wyniku przetwarzania z tych rejestrów. Jeśli bit ADLAR jest ustawiony, to wynik zostaje wyrównany lewostronnie. Jeśli bit ADLAR jest wyzerowany (wartość standardowa), to wynik jest wyrównany prawostronnie.

ADC9:0: ADC Conversion Result – Wynik przetwarzania w przetworniku A/C

Te bity reprezentują 10-bitowy wynik przetwarzania.

Na początek:  podrozdziału   strony 

Zespół Przedmiotowy
Chemii-Fizyki-Informatyki

w I Liceum Ogólnokształcącym
im. Kazimierza Brodzińskiego
w Tarnowie
ul. Piłsudskiego 4
©2021 mgr Jerzy Wałaszek

Materiały tylko do użytku dydaktycznego. Ich kopiowanie i powielanie jest dozwolone
pod warunkiem podania źródła oraz niepobierania za to pieniędzy.

Pytania proszę przesyłać na adres email: i-lo@eduinf.waw.pl

Serwis wykorzystuje pliki cookies. Jeśli nie chcesz ich otrzymywać, zablokuj je w swojej przeglądarce.

Informacje dodatkowe.