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 65260 µ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