MIKROPROCESORY – architektura i programowanie Piotr MALECKI

Transkrypt

MIKROPROCESORY – architektura i programowanie Piotr MALECKI
MIKROPROCESORY – architektura i programowanie
Piotr MALECKI
WEWNĘTRZNE UKŁADY PERYFERYJNE (µ-kontrolerów rodziny 51)
nazwa jest trochę osobliwa, ale dobrze oddaje
to, co jest najważniejszą cechą mikro-kontrolerów:
jednoukładowość przy bogatym wyposażeniu
Wyposażenie mikro-kontrolerów w przetworniki analogowo-cyfrowe i cyfrowo-analogowe można
uznać za jedno z najważniejszych osiągnięć w ich rozwoju. Nasz przykładowy CISC: ADuC812
jest wyposażony w 8-mio kanałowy 12-to bitowy przetwornik analogowo-cyfrowy i dwa 12-to
bitowe przetworniki cyfrowo-analogowe (DAC0 i DAC1).
Dane z postaci cyfrowej można skonwertować do formy analogowej za pomocą wzmacniacza
pracującego w trybie układu sumującego. Najczęściej wymienia się dwa układy dla tego typu
konwersji. Układ (rys.1.) z zestawem oporników, których wartość stanowi wagę z jaką wartość
odpowiadająca danemu bitowi wchodzi do sumy wyniku. Układ ten ma znaczne wady, głównie
wynikające z potrzeby stosowania precyzyjnych oporników, o wartościach z szerokiego zakresu,
gdy układ miałby być stosowany dla wielobitowych konwersji. Dla 12-bitowych danych największy
opornik miałby wartość 2048 razy większą niż najmniejszy.
Powszechnie stosuje się, przedstawiony na rys.2. układ „drabinki R-2R”.
Rys. 1. Układ konwersji DAC z „ważonymi” opornikami
Rys. 2. Układ konwersji DAC „z drabinka R-2R”
1/10
MIKROPROCESORY – architektura i programowanie
Piotr MALECKI
PRZETWORNIKI CYFROWO-ANALOGOWE (DAC).
Przetworniki cyfrowo-analogowe w AduC812
pracują na tym samym napięciu odniesienia co
ADC (opisane poniżej). Przetworniki te wykazują
znany efekt nieliniowości przy końcach zakresu
konwersji. Poza tymi niewielkimi zakresami ( po
kilkadziesiąt mV) wykazują dobrą liniowość i
stabilność.
Konwersja wartości cyfrowej, ustawionej w
odpowiednich rejestrach sterujących pracą
przetworników, następuje natychmiastowo
(w odróżnieniu od konwersji analog-cyfra, która
jest stosunkowo powolnym procesem
iteracyjnym).
Dwa, w znacznym stopniu niezależne, DAC0 l
DAC1 mogą być ustawiane niezależnie lub
synchronicznie.
2/10
MIKROPROCESORY – architektura i programowanie
Piotr MALECKI
Przetworniki cyfrowo-analogowe (DAC)
Nasz przykładowy mikro-kontroler AduC812 wyposażony jest w dwa przetworniki DAC.
REJESTRY ZARZĄDZJĄCE PRACĄ DAC TO KONTROLNY REJESTR DACCON ORAZ REJESTRY
DANYCH:
DACCON rejestr SFR o adresie FDH
MODE RNG1
7
6
RNG0
5
CLR1
4
CLR0
3
SYNC
2
PD1
1
PD0
0
Bit MODE wybiera pracę DAC-ów jako 8-mio bitowe (MODE=1) lub 12-to bitowe.
Bity RNG wybierają zakres sygnałów wyjściowych dla każdego DAC z osobna. RNG = 1 wybiera
zakres 0 – Vdd (napięcie zasilania), RNG = 0 wybiera zakres 0 – Vref.
CLR powinny być ustawione na 1 dla normalnej pracy DAC. Wartość zero forsuje zero sygnału
na wyjściu.
SYNC ustawiony na 1 oznacza, że sygnał wyjściowy pojawia się natychmiast po ustawieniu
młodszego rejestru danych (DAC0L lub DAC1L). Jest to praca asynchroniczna. Gdy chcemy,
by analogowe sygnały wyjściowe pojawiły się równocześnie, wtedy bit SYNC ustawiamy na
zero.
Wtedy wpisanie wartości do DAC0L ani do DAC1L nie wyzwala ustawienia wyjścia. Dopiero
postawienie bitu SYNC na 1 wyznacza moment jednoczesnego ustawienia analogowych linii
wyjściowych procesora.
Rejestry DAC0H i DAC1H służą oczywiście do wpisywania czterech starszych bitów danych i
powinny, przy pracy asynchronicznej być wypełniane PRZED wpisaniem wartości do
DAC0L/1L.
3/10
MIKROPROCESORY – architektura i programowanie
Piotr MALECKI
Przetworniki analogowo-cyfrowe - (ADC)
Istnieje wiele metod konwersji analogowo-cyfrowych. Wśród najczęściej stosowanych
wylicza się metodę bezpośrednią (flash ADC), metodę kolejnych przybliżeń, metody całkowe
oraz tzw. metodę Sigma-Delta.
Wspólnym dla różnych technik konwersji, jest zapewnienie niezakłóconego próbkowania
sygnału analogowego oraz zapewnienie jego stabilności na czas przeprowadzania konwersji.
Tę stabilność realizuje się często przez włączenie w układ konwertera bloku S/H – sample and
hold (pobierz i przechowaj).
Przetworniki ADC w mikro-kontrolerach ADuC812
wykorzystują technikę kolejnych przybliżeń.
Konwersja ta opiera się na porównywaniu sygnału
analogowego z przetworzonym przez wewnętrzny
DAC cyfrowym przybliżeniem generowanym krok po
kroku przez zegar napełniający rejestr przybliżenia,
SAR. W pierwszym kroku DAC ładuje się najstarszym
bitem. Bit pozostaje ustawiony, gdy wyjście z DAC nie
przekracza sygnału. W przeciwnym razie bit jest
zerowany. W następnych taktach ustawiane (oraz
ewentualnie zerowane) są kolejne bity.
Liczba taktów zegara potrzebnych dla pełnej konwersji
nieznacznie przekracza liczbę bitów przetwornika.
Schemat blokowy ADC pracującego
techniką kolejnych przybliżeń
4/10
MIKROPROCESORY – architektura i programowanie
Piotr MALECKI
Schematyczny układ przetwornika analogowo-cyfrowego z
ADuC812 przedstawia rysunek (wzięty, jak część rysunków w
tych notatkach z Data Sheet for AduC812, Rev E.
www.analog.com).
Konwersja sygnału analogowego, podawanego na linię
wejściową procesora, sterowna jest zegarem, którego
częstotliwość wynika z częstości zegara procesora i dzielnika,
wybieranego programowo. Zalecany zakres częstotliwości
pracy ADC: 400kHz – 4 MHz (ADuC812).
Przełączaniem kanałów steruje program, odnosząc się do
odpowiednich
rejestrów
SFR.
Niewielka
pojemność
wejściowa, reprezentowana na rysunku kondensatorem 2 pF,
może wnosić pewien błąd pomiarowy przy szybkim
przełączaniu kanałów. Przy zalecanym zakresie częstotliwości
i zapewnieniu małej oporności wyjściowej źródła (poniżej 60
Ω) błąd jest zaniedbywalny. Jeśli warunek małej stałej
czasowej jest niezachowany, to ograniczenie szybkości
przełączania należy do programisty.
5/10
MIKROPROCESORY – architektura i programowanie
Piotr MALECKI
Zdolność rozdzielczą ADC wyznacza
liczba bitów wyniku konwersji oraz
napięcie odniesienia (referencja).
Maksymalny sygnał analogowy, który
może zostać poprawnie przetworzony
na wartość cyfrową jest równy
napięciu referencyjnemu, a jego
przetworzona wartość to maksymalny
integer mieszczący się w rejestrze
wyniku.
Dla ADuC812 wewnętrzne napięcie
referencji wynosi 2.5 V. Taki jest więc
maksymalny sygnał, który może być
przetworzony ma wartość 4095, a
najmniejsza mierzalna różnica między
dwoma sygnałami wynosi 0.61mV.
ADuC812 może pracować także z
zewnętrznym źródłem referencji. Jego
wartość, większa od 2.3V, nie może
przekraczać napięcia zasilania.
Idealna, liniowa relacja analog-cyfra
może być obarczona błędami.
Producent ADuC812 wprowadził
automatyczną kalibrację, dzięki której
eliminuje się błąd przesunięcia zera i
błąd nachylenia.
6/10
MIKROPROCESORY – architektura i programowanie
Piotr MALECKI
REJESTRY STERUJĄCE PRACĄ ADC:
ADCCON1 (ADC Control #1) to rejestr SFR o adresie EFH.
MD1
7
MD0
6
CK1
5
CK0
4
AQ1
3
AQ0
2
T2C
1
EXC
0
Para bitów MD1 MD0 kontroluje zasilanie obwodów ADC, para CK1, CK0 wyznacza dzielnik zegara,
para AQ1, AQ0 wyznacza liczbę cykli zegara ADC, którą dodatkowo przeznaczamy na czas akwizycji
sygnału wejściowego (zwykle wystarcza 1).
MD1 MD0
CK1 CK0
dzielnik zegara
0
0
Obwody ADC nie są zasilane
0 0
1
0
1
Normalna praca
0 1
2
1
0
ADC nie zasilane jeśli nie biegnie konwersja
1 0
4
1
1
Stan uśpienia
1 1
8
(W stanie uśpienia napięcie referencyjne jest utrzymywane, a wyłączone są pozostałe obwody ADC)
AQ1 AQ0
0
0
0
1
1
0
1
1
liczba extra cykli
1
2
4
8
Bit T2C (ADCCON.1) może być ustawiony przez
programistę. Ustawiony oznacza zezwolenie na
użycie licznika T2 dla wyzwalania procesu konwersji. Konwersja startuje przy DRUGIM przepełnieniu licznika.
Bit EXC jest ustawiany również przez programistę i ustawienie zezwala na użycie sygnału
doprowadzanego do linii procesora CONVST jako wyzwalania konwersji (active low, jak zwykle).
7/10
MIKROPROCESORY – architektura i programowanie
Piotr MALECKI
REJESTRY STERUJĄCE PRACĄ ADC:
ADCCON2 (ADC Control #2) to rejestr SFR o adresie D8H.
ADCI
7
DMA
6
CCONV
5
SCONV CS3
4
3
CS2
CS1
CS0
2
1
0
Bity CS3 – CS0 ustawiają numer kanału dla przyszłej konwersji:
CS3 CS2 CS1 CS0
Wybrany kanał
0
0
0
0
0
0
0
0
1
1
0
0
1
0
2
“
“
“
“
“
0
1
1
0
6
0
1
1
1
7
1
0
0
0
pomiar temperatury układu
1
1
1
1
wstrzymuje pracę DMA
Pozostałe konfiguracje bitów nie są używane.
Bit ADCI to wskaźnik
przerwania, który jest
ustawiany, gdy konwersja
jest zakończona. Używany
gdy decydujemy się na
pracę ADC w trybie
przerwań.
Ustawienie bitu DMA zezwala na pracę ADC w trybie Direct Memory Access, który zwłaszcza przy
żądaniu konwersji ciągłej zezwala na akwizycję pomiarów bez obciążania procesora. Praca DMA
zostanie omówiona w przyszłych wykładach.
CCONV ustawia programista i zezwala na pracę ADC trybie konwersji ciągłej – po zakończeniu jednego
procesu konwersji, startuje następny. Wyzwalanie konwersji zależy od innych ustawień.
Ustawienie SCONV inicjuje pojedynczą konwersję. Bit jest zerowany sprzętowo po zakończeniu
8/10
konwersji.
MIKROPROCESORY – architektura i programowanie
Piotr MALECKI
REJESTRY STERUJĄCE PRACĄ ADC:
ADCCON3 (ADC Control #3) to rejestr SFR o adresie F5H.
BUSY
7
RSVD
6
RSVD
5
RSVD
4
RSVD
3
RSVD
2
RSVD
1
RSVD
0
Ten rejestr nie jest zbyt bogaty. Bit BUSY jest jedynie do czytania. Jest ustawiany automatycznie
(sprzętowo) w trakcie konwersji lub kalibracji i także automatycznie zerowany po zakończeniu
konwersji lub kalibracji.
Wyniki konwersji znajdują się w
ADCDATAH i ADCDATAL , rejestrach SFR. Wynik konwersji jest 12-bitowy. Cztery najstarsze bity
znajdują się na pozycjach ADCTADAH.3 – ADCDATAH.0 a pozostałe w rejestrze ADCDATAL.
UWAGA! Na pozycjach ADCDATAH.7 – ADCDATAH.4 automatycznie, po pomiarze znajduje się numer
kanału ADC, z którego pomiar pochodzi.
ADuC812 ma wbudowaną automatyczną funkcję kalibracyjną, która uruchamia się po włączeniu
zasilania. Programista ma dostęp do dwóch parametrów kalibracyjnych i może je zmieniać, jeśli
uważa, że jego wartości są lepsze. Producent dostarcza kodu procedury i można go zastosować dla
własnej kalibracji lub zmienić.
Parametry kalibracyjne dostępne dla programisty to 14-bitowe wartości umieszczone w
następujących rejestrach:
ADCGAINH (zawiera 6 starszych bitów parametru korygującego nachylenie prostej odnoszącej sygnał
do wartości odczytu), ADCGAINL – pozostałe 8 bitów tego parametru.
ADCOFSH i ADCOFSL – to rejestry zawierające 14-bitową wartość parametru korygującego punkt
przecięcia prostej z początkiem układu współrzędnych.
9/10
MIKROPROCESORY – architektura i programowanie
Piotr MALECKI
PRZYKŁAD PROGRAMU używającego ADC w w trybie pojedynczej konwersji, bez zezwolenia na
przerwania.
USTAWIENIA WSTĘPNE:
MOV
ADCCON1,#01100000B
PRZYGOTOWNIE KONWERSJI:
MOV
ADCCON2,#02H
SETB
SCONV
JB
SCONV,$
SETB
SCONV
JB
SCONV,$
PRZETWORZENIE WYNIKU:
MOV
WYNIKH,ADCDATAH
MOV
WYNIKL,ADCDATAL
ANL
WYNIKH,#0FH
;ADC normal, clk div 4, aq 0, no T2, no EXT
;wybranie kanału 2
;czekaj na zakończenie konwersji. Pierwsza zła.
;OK
;”wymaskuj” numer kanału
DYSKUSJA: W przykładzie pokazano użycie ADC BEZ zezwolenia na przerwania. Wynika to stąd, że
konwersja, która w przypadku tego procesora zajmuje ok. 17 cykli zegara ADC, czyli pojedyncze
mikrosekundy. Obsługa przerwania byłaby w tym przypadku nieuzasadniona.
Na pewną przykładową przestrogę wskazuje użycie dwóch następujących po sobie konwersji. Otóż
producent procesora podał w informacjach o błędach, że w przypadku konwersji następującej po
czasie dłuższym niż 200 ms od ostatnio przeprowadzonej wynik jest niepoprawny i należy go
powtórzyć!
10/10

Podobne dokumenty