(7) Mikrokontrolery MSP430: obsługa ADC
W trybach pracy pomiaru pojedynczego kanału (tryb 1, tryb 3) multiplekser wybiera kanał pomiarowy wskazany przez bit ADC10INCHx. Pozostałe kanały pomiarowe są nieużywane i dołączone do masy analogowej mikrokontrolera.
W trybach pracy pomiaru grupy kanałów (tryb 2, tryb 4) bit ADC10INCHx wybiera „najstarszy” kanał w grupie pomiarowej. Po wykonaniu pomiaru multiplekser automatycznie przełącza się na kanał o wcześniejszym numerze. Kanały pomiarowe są przełączane do momentu wykonania pomiaru napięcia na kanale numer 0 (pomiary od kanału wskazanego bitem ADC10INCHx do kanału numer 0). Schemat elektryczny układu multipleksera pokazano na rysunku 2.
Rys. 2. Multiplekser analogowy, moduł ochrony ESD i układ przełączający
Kanały pomiarowe o numerach A0-A7 oraz A12-A15 służą do pomiaru napięcia podanego na linie wejścia/wyjścia mikrokontrolera. Żeby rozpocząć pomiar należy linię wejścia/wyjścia do której doprowadzono sygnał analogowy, ustawić w tryb pracy wejścia analogowego (funkcyjny tryb pracy linii wejścia/wyjścia). Ustawienia konfiguracyjne dla mikrokontrolera MSP430FR5739 w obudowie RHA pokazano w tabeli 4.
Tab. 4. Kanały pomiarowe (zewnętrzne)
Kanał |
Port |
Linia |
Tryb funkcyjny |
Konfiguracja (*) |
A0 |
P1 |
0 |
3 |
PxSELC |= BITy; P0SELx |= BITy; P1SELx |= BITy; |
A1 |
P1 |
1 |
||
A2 |
P1 |
2 |
||
A3 |
P1 |
3 |
||
A4 |
P1 |
4 |
||
A5 |
P1 |
5 |
||
A6 |
P2 |
3 |
||
A7 |
P2 |
4 |
||
*** |
||||
A12 |
P3 |
0 |
1 |
P0SELx |= BITy; |
A13 |
P3 |
1 |
||
A14 |
P3 |
2 |
||
A15 |
P3 |
3 |
(*) x – numer portu, y – numer linii (po starcie MSP430 bity portów PxSELC, P0SELx, P1SELx są wyzerowane)
Pozostałe 4 kanały pomiarowe to kanały wewnętrzne. Umożliwiają one pomiar napięcia zasilania mikrokontrolera, pomiar temperatury z wykorzystaniem wewnętrznego czujnika temperatury, oraz pomiar zewnętrznego napięcia referencyjnego. Opis funkcji kanałów pomiarowych prezentuje tabela 5.
Tab. 5. Kanały pomiarowe (wewnętrzne)
Kanał |
Opis |
A8 |
napięcie referencyjne VE(REF+) |
A9 |
napięcie referencyjne VE(REF-) |
A10 |
temperatura mikrokontrolera |
A11 |
napięcie zasilania mikrokontrolera |
Potencjały referencyjne V(R-), V(R+)
Konwersja napięcia z postaci analogowej do postaci cyfrowej odbywa się w rdzeniu SAR przy wykorzystaniu potencjałów referencyjnych V(R–), V(R+).Wynik pomiaru w formie cyfrowej NADC określa wzór 7.1.
gdzie:
NADC – wynik pomiaru w formacie cyfrowym,
NRES – współczynnik maksymalnej rozdzielczości przetwornika (1023 gdy 10 bitów, 255 gdy 8 bitów),
VIN – mierzone napięcie wejściowe [V],
VR– – niższy potencjał referencyjny [V],
VR+ – wyższy potencjał referencyjny [V].
Jeśli wartość mierzonego napięcia VIN jest większa, bądź równa wartości potencjału V(R+) wówczas wynik przyjmuje maksymalną dopuszczalną wartość NRES (1023 przy rozdzielczości przetwornika równej 10 bitów, 255 przy rozdzielczości przetwornika równej 8 bitów). W przypadku napięcia VIN mniejszego bądź równego niż potencjał V(R-) wynik pomiaru wynosi 0. Tak zdefiniowane parametry pracy, określają zakres pomiarowy [od V(R–) do V(R+) ] oraz rozdzielczość pomiarową ([ V(R+) – V(R–) ]/(NRES + 1)) przetwornika.
Moduł ADC10_B obsługuje kilka źródeł potencjałów referencyjnych: V(R–), V(R+). Źródłem potencjału V(R-) może być:
- AVSS masa mikrokontrolera (analogowa),
- VE(REF–) napięcie podane na linię P1.0 mikrokontrolera (dopuszczalny zakres napięcia to: od 0 V do 1,2 V).
Źródłem potencjału V(R+) może być:
- AVCC napięcie zasilania mikrokontrolera (analogowe),
- VE(REF+) napięcie podane na linię P1.1 mikrokontrolera (dopuszczalny poziom napięcia to: od 1,4 V do napięcia zasilania AVCC),
- VE(REF+) BUF, napięcie zewnętrzne VE(REF+) po przejściu przez moduł bufora,
- V(REF) napięcie wytwarzane przez wbudowany w strukturę mikrokontrolera generator napięcia REF (dostępne są 3 wartości: 1,5 V; 2,0 V oraz 2,5 V).
Źródła konfigurowane są programowo przy pomocy bitu ADC10SREFx z rejestru ADC10MCTL0. Dostępne nastawy pokazano w tabeli 6.
Tab. 6. Potencjały referencyjne
Rejestr |
Bit |
Opis |
ADC10MCTL0 |
ADC10SREF_0 |
V(R+) = AVCC V(R–) = AVSS |
ADC10SREF_1 |
V(R+) = VREF V(R–) = AVSS |
|
ADC10SREF_2 |
V(R+) = VE(REF+) BUF V(R–) = AVSS |
|
ADC10SREF_3 |
V(R+) = VE(REF+) V(R–) = AVSS |
|
ADC10SREF_4 |
V(R+) = AVCC V(R–) = VE(REF–) |
|
ADC10SREF_5 |
V(R+) = VREF V(R–) = VE(REF–- ) |
|
ADC10SREF_6 |
V(R+) = VE(REF+) BUF V(R–) = VE(REF–) |
|
ADC10SREF_7 |
V(R+) = VE(REF+) V(R–) = VE(REF–) |