Funkcja GETADC()
Przeznaczenie:
Pobiera wynik przetwarzania z wbudowanego przetwornika ADC na wybranym kanale.
Składnia:
zmienna = GETADC( nr_kanału [
, offset ]
)
gdzie:
zmienna - zmienna typu Word do której wpisana będzie przetworzona wartość,
nr_kanału - numer kanału przetwornika ADC. Zwykle z zakresu
0 – 7, choć przyjmuje wartości
0 - 31.
offset - Opcjonalna zmienna lub stała określająca wzmocnienie lub tryb pracy przetwornika. Przeznaczona dla nowszych układów.
Opis:
Funkcja GETADC() działa jedynie na mikrokontrolerach posiadających wbudowany przetwornik A/D. Koncówki wejściowe przetwornika A/D z reguły dzialaja także jako normalne linie portów. Jest szczególnie ważne, by podczas pracy przetwornika ich stan nie był zmieniany.
Należy upewnić się czy przetwornik ADC został wcześniej włączony instrukcją START ADC, lub też przez ustawienie odpowiednich bitów w rejestrze kontrolnym przetwornika.
Uwaga! Instrukcji tej nie można użyć jeśli za pomocą CONFIG ADC skonfigurowano przetwornik do pracy w trybie FREE.
Funkcja GETADC() zwraca wartość typu Word ze względu na to iż rejestr danych przetwornika jest dłuższy niż 8 bitów (zajmuje dwa bajty w przestrzeni I/O). Jego rozdzielczość zależy od możliwości jakie daje dany mikrokontroler.
Z poziomu języka BASCOM Basic jest dostępna także specjalna zmienna ADCD, która zawiera wartość jaką ostatnio przetworzył przetwornik i jest odzwierciedleniem stanu rejestru danych przetwornika.
Opcje zaawansowane
Normalnie przetwornik mierzy napięcia na końcówkach ADCx względem masy analogowej AGND. Jest to tzw. tryb Single Ended Input. W większości obecnie produkowanych mikrokontrolerów AVR jest możliwy także pomiar róźnicowy - Differential Input, w którym napięcia są mierzone pomiędzy dwoma końcówkami z których jedna staje się wejściem odwracającym a druga wejściem nieodwracającym. Dodatkowo w tym trybie dostępna jest możliwość wzmocnienia sygnału nawet do 200 razy.
Uwaga! Wynik pomiaru należy wtedy traktować jako liczba w systemie U2.
Tryby te można wybrać podając w funkcji GETADC() odpowiedni numer kanału, który ustawi bity
ADMUX zgodnie z tabelą znajdującą się w nocie katalogowej użytego mikrokontrolera.
Przykładowo aby odczytać napięcie w trybie różnicowym w układzie ATTiny26 z kanałów ADC4 (wejście +) i ADC5 (wejście -) należy napisać:
D = Getadc(21) 'pomiar pomiędzy ADC4-ADC5: ADMUX=10101
Niektóre z mikrokontrolerów (np. ATMega1280, ATMega2560) posiadają więcej niż 7 podstawowych kanałów przetwornika. W celu zachowania kompatybliności ze starszymi mikrokontrolerami zostały one przeniesione "na drugą połówkę" multipleksera. Dlatego też instrukcję poszerzono o dodatkowy parametr, który steruje dodatkowym bitem
MUX5 w rejestrze
ADCSRB, który należy ustawić jeśli używamy kanału o numerze większym niż 7.
Przykładowo aby odczytać napięcie w trybie Single Ended w układzie ATMega1280 z kanałów 8 i 9 należy napisać:
W = Getadc(0 , 64) ' from data sheet : 100000 ADC8
W = Getadc(1 , 64) ' from data sheet : 100001 ADC9
To spowoduje, że do
ADMUX trafi 5 młodszych bitów wyboru kanału, a paramter offset określony jako 64 ustawi bit
MUX5 w celu pomiaru na tych kanałach z opcją Single Ended Input.
Zobacz także:
CONFIG ADC ,
START ADC ,
Noty katalogowe