Instrukcja do ćwiczenia 2

Transkrypt

Instrukcja do ćwiczenia 2
Mikroprocesory i mikrosterowniki
 Wydział Elektroniki Mikrosystemów i Fotoniki
Politechniki Wrocławskiej 2014
Ćwiczenie nr 2
Program ćwiczenia:
 Obsługa przetwornika A/C,
 Współpraca urządzeń peryferyjnych – konstrukcja mikroprocesorowego
woltomierza
Zagadnienia do przygotowania:
 Specyfika przetwornika A/C układu ATmega8535
 Rejestry specjalne – wpisywanie wartości
 Skoki bezwarunkowe
 Wywołania podprogramów
 Inicjalizacja stosu
 System przerwań
 Programy obsługi przerwań
1
1
Mikroprocesory i mikrosterowniki
 Wydział Elektroniki Mikrosystemów i Fotoniki
Politechniki Wrocławskiej 2014
1. Wprowadzenie – podstawowe informacje o module ADC w ATmega8535
Przetwarzanie analogowo-cyfrowe jest operacją bardzo często wykonywaną przez układy
elektroniczne. Przetwarzanie elektrycznych wielkości analogowych (najczęściej napięcia) na
postać cyfrową pozwala na konstruowanie cyfrowych układów pomiarowych i kontrolnych.
Zastosowanie przetwornika ADC (Analog to Digital Converter) wbudowanego w strukturę
mikrokontroler umożliwia m.in. budowanie tanich urządzeń pomiarowo-sterujących
(mikrosystemów) znajdujących zastosowania w wielu gałęziach przemysłu (motoryzacja,
medycyna, mobilna aparatura kontrolna). Mikrokontroler ATmega8535 posiada wbudowany
10-bitowy przetwornik ADC o sukcesywnej aproksymacji. Czas konwersji wynosi
65260 µs. Sygnał wejściowy do tego przetwornika przesyłany jest za pomocą 8-kanałowego
multipleksera (przełącznika) analogowego. Całkowity błąd przetwarzania tego przetwornika
wynosi ± 2 LSB (ang. Least Significant Bit), co w praktyce przekłada się na to, że
przetwornik ten należy traktować jako układ 9-bitowy. Błąd nieliniowości różniczkowej
wynosi 0,5 LSB. Wewnętrzne źródło napięcia odniesienia dla przetwornika wynosi 2,56 V.
Jednak można skorzystać z zewnętrznego źródła napięcia odniesienia dołączając je do
wyprowadzenia AREF mikrokontrolera. Jako napięcie odniesienia można również użyć
napięcia zasilania modułu przetwornika ADC (AVCC). Modułowi ADC przyporządkowane
są następujące wyprowadzenia (Rys.1):

AVCC – wejście napięcia zasilającego,

AREF – wejście napięcia odniesienia,

ADC0.. ADC7 – wejścia sygnałów analogowych, dla których potencjałem
odniesienia jest masa układu (potencjał wyprowadzenia GND),

GND.
Napięcie zasilające modułu ADC powinno być doprowadzone do wyprowadzenia
AVCC, za pośrednictwem filtra dolnoprzepustowego LC (Rys.2). Napięcie zasilania układu
ADC nie może się różnić więcej niż ± 0,3 V od napięcia zasilającego mikrokontroler.
2
2
Mikroprocesory i mikrosterowniki
 Wydział Elektroniki Mikrosystemów i Fotoniki
Politechniki Wrocławskiej 2014
Rys.1. ATmega8535 – rozmieszczenie i oznaczenia wyprowadzeń [1]
Rys.2. Zasilanie modułu ADC [1]
3
3
Mikroprocesory i mikrosterowniki
 Wydział Elektroniki Mikrosystemów i Fotoniki
Politechniki Wrocławskiej 2014
2. Sterowanie układu ADC w mikrokontrolerze ATmega8535
Dla modułu ADC wyróżnia się rejestr do zarządzania analogową częścią przetwornika –
ADMUX (ang. ADC MUltipleXer selection register) – tabela 1. Rejestr do zarządzania
cyfrową częścią przetwornika to ADCSRA (ang. ADC Control and Status Register A) –
tabela 2. Ustalenie odpowiednich wartości bitów obu rejestrów jest niezbędne do poprawnej
pracy przetwornika.
Tabela 1. Organizacja rejestru ADMUX
Bit
ADMUX
Zapis/Odczyt
Wartość
domyślna
7
REFS1
Z/O
6
REFS0
Z/O
5
ADLAR
Z/O
4
MUX4
Z/O
3
MUX3
Z/O
2
MUX2
Z/O
1
MUX1
Z/O
0
MUX0
Z/O
0
0
0
0
0
0
0
0
Podczas inicjalizacji modułu ADC należy określić w rejestrze ADMUX źródło sygnału
wejściowego oraz napięcie odniesienia – ustawienie bitów MUX4...MUX0:
oraz bitów AREFS1...AREFS0:
Należy przy tym pamiętać o odpowiedniej konfiguracji rejestrów portu A, który współdzieli
wyprowadzenia mikrokontrolera z modułem ADC. Linie portu A powinny pracować w trybie
wejścia.
4
4
Mikroprocesory i mikrosterowniki
 Wydział Elektroniki Mikrosystemów i Fotoniki
Politechniki Wrocławskiej 2014
Ostatnim bitem rejestru ADMUX jaki należy określić jest bit odpowiadający za reprezentację
wyniku konwersji – ADLAR (ang. ADC Left Adjust Result). Wynik jest przechowywany
w rejestrach ADCH i ADCL. Dla wartości ADLAR = 0 wynik (10 bitowy) zostanie wpisany
do rejestrów naturalnie. Dla stanu wysokiego, wynik zostanie zapisany z 6-krotnym
przesunięciem w lewo – wówczas otrzymuje się wynik o 8-bitowej rozdzielczości. W trakcie
odczytu rejestrów ADCH i ADCL, rejestry modułu ADC nie są odświeżane.
Przed włączeniem modułu ADC, bit ADEN (ang. ADC ENable) rejestru ADCSRA,
należy ustalić częstotliwość pracy przetwornika, która będzie określała szybkość
próbkowania. Należy pamiętać, aby wybrana wartość częstotliwości znajdowała się
w zakresie częstotliwości pracy urządzenia, tj. była z przedziału 50  200 kHz.
Tabela 2. Organizacja rejestru ADCSRA
Bit
ADCSRA
Zapis/Odczyt
Wartość
domyślna
7
ADEN
Z/O
6
ADSC
Z/O
5
ADATE
Z/O
4
ADIF
Z/O
3
ADIE
Z/O
2
ADPS2
Z/O
1
ADPS1
Z/O
0
ADPS0
Z/O
0
0
0
0
0
0
0
0
Moduł ADC działa na zasadzie sukcesywnej aproksymacji, z tego względu do jego pracy
niezbędny jest sygnał taktujący (konwersja trwa trzynaście cykli zegarowych). Sygnał ten
jest uzyskiwany przez dzielenie częstotliwości zegara systemowego przez współczynnik
podziału (preskaler). Wartość preskalera ustawia się przez odpowiednią konfigurację bitów
ADPS0…ADPS2 (ang. ADC Prescaler Select bits) w rejestrze ADCSRA, (wartość
5
5
Mikroprocesory i mikrosterowniki
 Wydział Elektroniki Mikrosystemów i Fotoniki
Politechniki Wrocławskiej 2014
współczynnika podziału zawiera się w przedziale 2 ÷ 128), zgodnie z dokumentacją
techniczną układu ATmega8535, str. 218 i str. 222:
Ponadto, należy określić tryb pracy przetwornika – manualny (‘0’) bądź automatyczny
(‘1’), bit ADATE (ang. ADC Auto Trigger Enable/ Free Running mode) w rejestrze
ADCSRA. W wypadku wyboru trybu automatycznego należy dodatkowo ustalić źródło
wyzwalania modułu ADC w rejestrze SFIOR:
Ostatni z bitów w rejestrze ADCSRA to bit odpowiedzialny za uaktywnienie w systemie
przerwań mikrokontrolera przerwania po zakończeniu przetwarzania ADC – bit ADIE
(ang. ADC Interrupt Enable).
6
6
Mikroprocesory i mikrosterowniki
 Wydział Elektroniki Mikrosystemów i Fotoniki
Politechniki Wrocławskiej 2014
Konwersja rozpoczyna się od ustawienia stanu wysokiego bitu ADSC, rejestru ADCSRA,
który pozostaje w tym stanie, aż do zakończenia operacji. Zakończenie przetwarzania
sygnalizowane jest stanem wysokim znacznika ADIF. Należy wówczas odczytać wynik
z rejestrów ADCH...ADCL. Flaga ADIF zerowana jest sprzętowo przy przejściu do programu
obsługi przerwania od ADC. Aby programowo wyzerować tę flagę należy wykonać instrukcję
wpisania do niej wartości ‘1’.
3. Przykładowe zadania do wykonania
1) Za pomocą przetwornika A/C opracować prosty woltomierz pracujący w zakresie
0  5 V. Wynik powinien zostać wyświetlany na diodach LED w postaci binarnej. Za
źródło odniesienia należy przyjąć napięcie zasilania mikroprocesora. Jako sygnał
wejściowy należy wykorzystać napięcie ustalane za pomocą potencjometru na makiecie.
2) Za pomocą przetwornika A/C opracować prosty woltomierz pracujący w zakresie
0  5 V. Wynik powinien zostać wyświetlany na diodach LED w postaci linijki. Kolejna
zaświecona dioda to wzrost napięcia mierzonego napięcia. Jako źródło napięcia
odniesienia wybieramy napięcie zasilania mikroprocesora 5 V. Odnosząc tę wartość do
liczby diod LED linijki (8 szt.) otrzymujemy rozdzielczość wskazań woltomierza
wynoszącą około 0,625 V.
3) Wykorzystując przetwornik A/C napisać program pozwalający na sterowanie
częstotliwością migania wybranej diody LED. Jako sygnał wejściowy należy
wykorzystać napięcie ustalane za pomocą potencjometru na makiecie.
4) Wykorzystując przetwornik A/C napisać program pozwalający na sterowanie szerokością
impulsu generowanego przez licznik w trybie PWM. Wynik operacji powinien być
reprezentowany przez świecenie/gaśnięcie diody LED lub sterować położeniem wału
zdawczego serwomechanizmu.
4. Literatura
[1] Dokumentacja techniczna mikrokontrolera AVR Atmega8535
http://www.atmel.com/images/doc2502.pdf
[2] R. Baranowski, Mikrokontrolery AVR ATmega w praktyce, Wydawnictwo BTC,
Warszawa 2005
7
7

Podobne dokumenty