Układy licznikowe – rejestry funkcyjne
Transkrypt
Układy licznikowe – rejestry funkcyjne
Mikrokontroler ATmega32 System przerwań Porty wejścia-wyjścia Układy czasowo-licznikowe 1 Przerwanie Przerwanie jest inicjowane przez urządzenie zewnętrzne względem mikroprocesora, zgłaszające potrzebę jego obsługi Przerwanie jest chwilowym zaprzestaniem wykonywania programu przez mikroprocesor w celu wykonania procedury obsługi urządzenia zgłaszającego przerwanie Żądania obsługi są zdarzeniami asynchronicznymi względem programu Mechanizm przerwań zwalnia mikroprocesor z konieczności ciągłego obserwowania sygnałów żądań obsługi 2 Załączanie systemu przerwań Rejestr statusu SREG Globalne zezwolenie na przerwania I=0 – przerwania zablokowane I=1 – przerwania aktywne 3 Źródła przerwań Sygnał RESET Sygnały na zewnętrznych wyprowadzeniach mikrokontrolera Układy czasowo-licznikowe Porty komunikacyjne Przetwornik analogowo-cyfrowy Układy zarządzania programowaniem pamięci EEPROM i FLASH Poszczególne źródła przerwań można indywidualnie blokować za pomocą odpowiednich bitów w rejestrach sterujących. 4 Znaczniki przerwań Większość źródeł przerwań ma przyporządkowany w przestrzeni I/O rejestr, w którym można wyróżnić bit zwany znacznikiem przerwania (ang: Interrupt flag) Zgłoszenie żądania przerwania polega na ustawieniu tego bitu w stan „1” Przyjęcie przerwania przez jednostkę centralną automatycznie kasuje stosowny znacznik przerwania Znaczniki przerwań można ustawiać i kasować również programowo 5 Znaczniki przerwań Przykład znaczników przerwań zewnętrznych: INTF0, INTF1 i INTF2 umieszczonych w rejestrze GIFR 6 Przyjęcie przerwania Na przyjęcie przerwania składają się następujące operacje wykonywane automatycznie przez mikroprocesor: Wyłączenie globalnego zezwolenia na przerwania Zachowanie na stosie licznika programu Załadowanie wektora przerwania do licznika programu Dla większości przerwań skasowanie znacznika przerwania 7 Powrót z przerwania Powrót z przerwania jest zazwyczaj inicjowany instrukcją reti wykonującą następujące operacje: Pobranie ze stosu licznika programu Załączenie globalnego zezwolenia na przerwania 8 Priorytet przerwań O tym które ze zgłaszanych jednocześnie przerwań zostanie przyjęte jako pierwsze decyduje jego priorytet Priorytet poszczególnych źródeł przerwań w mikrokontrolerach AVR jest ustalony Adresy podprogramów obsługi przerwań są uporządkowane w kolejności malejącego priorytetu Najwyższy priorytet ma restart systemu 9 Wektory przerwań Wektorem przerwania nazywa się adres w pamięci programu, od którego rozpoczyna się podprogram obsługi przerwania Wektory przerwań zostały w mikrokontrolerach AVR zdefiniowane architekturą systemu i są umiejscowione na początku przestrzeni adresowej Objętość obszaru w pojedynczym wektorze przerwania nie pozwala na zapisanie w nim całej procedury obsługi W wektorze umieszcza się skok do właściwego podprogramu obsługi przerwania Wektory nieaktywnych przerwań można wykorzystać w inny sposób 10 Wektory przerwań 11 Wektory przerwań 12 Obsługa przerwań Procedura obsługi przerwania ma na celu obsłużenie urządzenia zgłaszającego przerwanie (odczytanie odebranego znaku lub przetworzonej próbki napięcia, wykonanie czynności po zadanym opóźnieniu w układzie czasowym) W procedurze obsługi należy zachować na stosie zawartość wszystkich rejestrów w niej wykorzystywanych, w szczególności SREG Zawartość rejestrów musi zostać przywrócona przed zakończeniem procedury 13 Obsługa przerwań System przerwań jest wyłączany po przyjęciu każdego przerwania by nie spowodować nadmiernego powiększenia stosu wskutek wielokrotnego przyjęcia zbyt szybko przychodzącego przerwania Zgłoszenie 1 Wykonanie programu Zgłoszenie 2 Obsługa 1 Obsługa 2 czas 14 Obsługa przerwań Istnieje niebezpieczeństwo nieobsłużenia często zgłaszanego przerwania wskutek wykonywania innej, długotrwałej procedury obsługi Cykliczne zgłoszenia przerwań od układu czasowego Wykonanie programu Przerwanie nieobsłużone! 15 Obsługa przerwań Zapobiegnie temu załączenie systemu przerwań w samej procedurze, wówczas obsługa może być przerwana przez inne zgłoszenie Cykliczne zgłoszenia przerwań od układu czasowego Wykonanie programu 16 Przerwanie inicjalizacyjne Program wykonywany po restarcie systemu jest traktowany jako obsługa przerwania Wewnętrzny sygnał RESET jest automatycznie zaliczany do sygnałów zgłaszających przerwanie RESET ma najwyższy priorytet i przydzielony wektor na początku przestrzeni adresowej Przerwanie od sygnału RESET jest niemaskowalne – nie można go wyłączyć 17 Przerwanie inicjalizacyjne 18 Porty I/O Port B Port A Port D Port C 19 Porty I/O Porty I/O pozwalają podłączyć do mikrokontrolera zewnętrzne czujniki z wyjściami cyfrowymi lub układy wykonawcze sterowane cyfrowo Poszczególne linie portów są niezależnie konfigurowane jako wejścia lub wyjścia Linie zaprogramowane jako wejścia mogą realizować funkcje alternatywne, np. wejścia przetwornika A/C, interfejs szeregowy… 20 Ogólna struktura linii portu cyfrowego Rezystor podciągający Końcówka zewnętrzna Wybór wejście/wyjście Bit wyjściowy Stan końcówki 21 Rejestry funkcyjne związane z portem Do komunikowania się jednostki centralnej z portami służą specjalne rejestry funkcyjne Rejestry związane z portami są mapowane na przestrzeń adresową I/O od adresu 0x00 (i jednocześnie przestrzeń pamięci danych od 0x20) Z każdym portem są skojarzone trzy rejestry: - PORTx (x – zastępuje symbol portu, np. PORTA) - PINx - DDRx 22 Rejestry funkcyjne związane z portem Do rejestru PORTx wpisywany jest wzór stanów wymuszanych na końcówkach portów w przypadku zdefiniowania ich jako wyjścia Nazewnictwo bitów rejestru dla portu A: 23 Rejestry funkcyjne związane z portem Bity rejestru DDRx definiują końcówki portu jako wyjścia lub wejścia Wpisanie „1” powoduje, że odpowiednia końcówka staje się wyjściem o charakterystyce typowej dla układów CMOS Nazewnictwo bitów rejestru dla portu A: 24 Rejestry funkcyjne związane z portem W rejestrze PINx przechowywany jest wzór rzeczywistych stanów logicznych końcówek portu, niezależnie od wybranego kierunku danych Jest to rejestr tylko do odczytu Nazewnictwo bitów rejestru dla portu A 25 Rejestry funkcyjne związane z portem Konfiguracja końcówki portu Bit PUD w rejestrze SFIOR wyłącza „rezystory podciągające” końcówek wszystkich portów 26 Układy czasowo-licznikowe Układy czasowo-licznikowe są licznikami cyfrowymi wyposażonymi w zaawansowane tryby wyzwalania i programowanie źródła sygnału zegarowego Układy licznikowe w mikrokontrolerach służą do: - odmierzania czasu - zliczania zdarzeń - generacji przebiegów o programowanej częstotliwości i wypełnieniu 27 Układy czasowo-licznikowe W architekturze AVR ATmega dostępne są co najmniej dwa układy czasowo-licznikowe W ATmega implementowane są liczniki 8- i 16-bitowe Mikrokontroler ATmega32 posiada 2 liczniki 8-bitowe timer/counter0 i timer/counter2 oraz 1 licznik 16-bitowy timer/counter1 28 Układy licznikowe – rejestry funkcyjne Rejestr TCNTn (n jest numerem licznika) zawiera aktualną wartość zliczoną przez licznik i jest rejestrem 8-bitowym lub parą rejestrów TCNTnH i TCNTnL dla licznika 16-bitowego. W przypadku licznika 16-bitowego TCNTnH jest rejestrem buforowym i wymagana jest ustalona sekwencja zapisu w celu prawidłowej inicjalizacji licznika Przepełnienie licznika wywołuje zgłoszenie przerwania 29 Układy licznikowe – rejestry funkcyjne 8-bitowy rejestr TCNT0: Para rejestrów TCNT1H i TCNT1L: 30 Układy licznikowe – rejestry funkcyjne Aktualna wartość w liczniku jest porównywana z zawartością rejestru OCRn lub OCRnH i OCRnL Z licznikiem 1. w ATmega32 są skojarzone 2 pary rejestrów: OCR1AH(L) i OCR1BH(L) W wyniku zrównania się wartości w liczniku i rejestrze OCR jest zgłaszane przerwanie Wynik operacji porównania może służyć do generacji sygnału o programowanym wypełnieniu 31 Układy licznikowe – rejestry funkcyjne Zgłoszenie przerwania Generacja przebiegu PWM 32 Układy licznikowe – rejestry funkcyjne Do sterowania trybem pracy licznika służy rejestr TCCRn. Bity CSn określają źródło sygnału taktującego licznik Bity WGMn określają tryb pracy licznika Znaczniki COMn wybierają sposób generacji sygnałów wyjściowych 33 Układy licznikowe – rejestry funkcyjne Przykład - rejestr sterujący pracą licznika 0 (TCCR0): Znaczenie bitu FOC0 i bitów COM0x zależy od trybu pracy. 34 Układy licznikowe – rejestry funkcyjne Znaczenie bitów WMG0x - tryb pracy: 35 Układy licznikowe – rejestry funkcyjne Znaczenie bitów CS0x – źródło sygnału taktującego: 36 Układy licznikowe – preskaler i wybór źródła zegara Zadaniem preskalera jest dostarczenie sygnału taktującego o programowanej w szerokim zakresie częstotliwości (podział 1:1024) 37 Układy licznikowe – tryby pracy Tryb pracy normalnej – zliczanie do wartości maksymalnej Porównywanie – porównanie zawartości licznika i rejestru OCRn wywołuje różne, zaprogramowane akcje Tryb CTC – zerowanie licznika po wykryciu zgodności porównania Tryby PWM – generacja sygnału prostokątnego o programowanej częstotliwości i wypełnieniu 38 Układy licznikowe – załączanie przerwań w rejestrze TIMSK Bity TOIEn zezwalają na przerwania od przepełnienia timera n Bity OCIEnX zezwalają na przerwania od odpowiedniego układu porównania timera n 39 Układy licznikowe – znaczniki przerwań w rejestrze TIFR Bity TOVn zgłaszają przerwania od przepełnienia timera n Bity OCFnX zgłaszają przerwania od odpowiedniego układu porównania timera n 40