2 Wykorzystanie i oprogramowanie timer`ów i systemu przerwań.
Transkrypt
2 Wykorzystanie i oprogramowanie timer`ów i systemu przerwań.
Technika Mikroprocesorowa – C Materiały do ćwiczeń laboratoryjnych 1 2 Wykorzystanie i oprogramowanie timer’ów i systemu przerwań. Zagadnienia do przygotowania: - budowa i działanie timerów, systemu przerwań, - wektor przerwań, - obsługa przerwań w języku C, - elementy języka C poznane dotychczas na zajęciach. Wstęp Celem ćwiczenia jest opracowanie programu wykorzystującego układy liczników/timerów oraz system przerwań. Mikrokontroler ’51 posiada dwa wbudowane układy, które mogą pracować niezależnie jako układy odliczające czas timers lub zliczające impulsy counters. Oba układy programowane są za pomocą dwóch rejestrów TMOD (timer mode) (rysunek 1) i TCON (timer control) (rysunek 2). Podstawą układów odliczania czasu i zliczania impulsów są dwa liczniki TL0 i TH0 dla układu Timer0 oraz TL1 i TH1 dla układu Timer1. Timer0 / Counter0 GATE C/T M1 M0 GATE C/T M1 M0 IE0 IT0 Timer1 / Counter1 Rys.1. Rejestr TMOD TF1 TR1 TF0 TR0 IE1 IT1 Rys.2. Rejestr TCON Rejestr TMOD składa się z dwóch czterobitowych części, sterujących niezależnie układami Timer0 i Timer1. Bit GATE decyduje o sposobie kontrolowania pracy timera (‘0’ – start/stop timera przez ustawienie bitu TR0/1 z rejestru TCON, ‘1’ – o pracy decyduje dodatkowo stan linii INT0/1). Bity C / T decydują o sposobie działania odpowiadającego układu jako urządzenia do odliczania czasu (‘0’ - timer) lub zliczania impulsów (‘1’ counter). Bity M0 i M1 decydują o wyborze jednego z czterech trybów zliczania impulsów (tabela 1) przez pary rejestrów TL0 i TH0 lub TL1 i TH1. Przygotowanie do pracy układów Timer0 i Timer1 polega na zdecydowaniu czy układ ma pracować jako urządzenie do odmierzania czasu (timer), czy też jako urządzenie Technika Mikroprocesorowa – C Materiały do ćwiczeń laboratoryjnych 2 zliczające liczbę impulsów (counter). Decyzja ta wymaga ustawienia bitu C / T (‘0’ - timer). Następnie należy zdecydować o momencie rozpoczęcia działania układów przez ustawienie bitu TR0/1 (timer run). Do działania układów timera/licznika konieczne jest przygotowanie obsługi przerwań. Mikrokontroler ’51 obsługuje pięć niezależnych od siebie źródeł przerwań, których numer, opis oraz adres umieszczono w tabeli 2. Tabela 1. Tryby działania układów zliczających i odmierzających czas Timer0 i Timer1 Tryb działania układów Timer0 i Timer1 M1 M0 0 0 0 1 0 1 2 1 0 3 1 1 Uwagi Liczniki TL0/1 (5 bitów) i TH0/1 (8 bitów) tworzą licznik binarny, 13 bitowy Liczniki TL0/1 (8 bitów) i TH0/1 (8 bitów) tworzą licznik binarny, 16 bitowy Licznik TL0/1 (8 bitów) po osiągnięciu stanu 0x00 jest automatycznie przeładowywany zawartością rejestru TH0/1 (tryb automatycznego przeładowania – auto reload) Timer0 Licznik TL0 (8 bitów) i licznik TH0 (8 bitów) działają niezależnie Timer1 Ustawienie trybu 3 powoduje zatrzymanie odliczania przez Timer1 (jest równoważne ustawieniu TR1=0) Tabela 2. Opis przerwań mikrokontrolera ‘51 Dwa z nich, to przerwania zewnętrzne sterowane liniami INT 0 i INT1 . Kolejne dwa generowane są przez dwa układy zegar/licznik (Counter/Timer). Ostatnim źródłem przerwań są układy nadawczy i odbiorczy transmisji szeregowej. EA - - ES ET1 EX1 ET0 EX0 Rys.3. Rejestr IE Rejestr IE (ang. interrupt enable) (rysunek 3) umożliwia udzielanie indywidualnej zgody na generowania przerwania przez każde ze źródeł. Ponadto jest możliwe udzielenie zgody lub zabronienie generowania wszystkich przerwań łącznie poprzez zmianę stanu bitu EA (ang. enable all interrupts). Objaśnienie bitów w rejestrze IE: EA – ogólne zezwolenie na przerwania, ES – zezwolenie na przerwanie z transmisji szeregowej, ET1 – zezwolenie na przerwanie z Timera1, EX1 – zezwolenie na przerwanie z wejścia INT1, ET0 – zezwolenie na przerwanie z Timera0, EX0 – zezwolenie na przerwanie z wejścia INT0. Technika Mikroprocesorowa – C Materiały do ćwiczeń laboratoryjnych 3 Rejestr IP (rys.4) służy natomiast do ustawiania priorytetów poszczególnych źródeł przerwań. Każde źródło przerwania może mieć priorytet równy 1 (wyższy) lub 0 (niższy). W trakcie obsługi danego przerwania tylko przerwanie o wyższym priorytecie może je przerwać i wykonać się w pierwszej kolejności. Priorytety przerwań nie mają wprost zastosowania w przypadku, gdy dwa źródła przerwań „nadchodzą” jednocześnie. Wtedy o pierwszeństwie „przyjęcia” przerwania decyduje ich kolejność w tabeli 2. Przerwanie umieszczone wyżej w tabeli 2 (o niższym numerze) obsłużone jest jako pierwsze, jednakże inne przerwanie może je po chwili przerwać, o ile ma wyższy priorytet. - - - PS PT1 PX1 PT0 PX0 Rys.4. Rejestr IP 2.1 Ćwiczenia do wykonania 2.1.1 Cykliczne zapalanie i gaszenie diody Przed rozpoczęciem pisania właściwej treści programu należy utworzyć i skonfigurować nowy projekt. Korzystając z wiadomości zdobytych na zajęciach pierwszych oraz znając adres diody LED opracować program, którego wykonanie spowoduje cykliczne zapalanie i gaszenie diody testowej: - dodać plik nagłówkowy REGX51.h, wskazówka: użyć adresacji linii portu, sprawdzić zawartość pliku nagłówkowego REGX51.h, wskazówka: wykorzystać rejestry TMOD, TCON oraz IE, wskazówka: wykorzystać słowo kluczowe: interrupt definiujące funkcje przerwania – dokumentacja techniczna środowiska KEIL uVISION3, plik C51.pdf. 2.1.2 Zwiększenie częstotliwości cyklicznego zapalania i gaszenia diody Opracować program, którego wykonanie spowoduje zwiększenie częstotliwości zapalania i gaszenia diody testowej: - wskazówka: wykorzystać fakt zwiększania o 1 w każdym cyklu maszynowym procesora zawartości rejestrów TL0 i TH0 lub TL1 i TH1, - wykorzystać poniższy wzór (prawdziwy dla trybu 1) w celu otrzymania czasu zadanego przez prowadzącego zajęcia, czas[µs ] czas[µs ] = 256 − TH0=256(12 / 11.0592[MHz ])(256 − TL 0) ⋅ (256 − TL 0) ⋅ Tcyklu , gdzie Tcyklu = 12 / f rez (frez – częstotliwość rezonatora kwarcowego układu 8051, „12” – liczba cykli rezonatora kwarcowego potrzebna do wykonania pojedynczego rozkazu = cyklu maszynowego), Technika Mikroprocesorowa – C Materiały do ćwiczeń laboratoryjnych 4 - odpowiedzieć na pytanie: jaki był czas pomiędzy zmianami stanu diody w programie z pkt-u 2.1.1? 2.1.3 Zmniejszenie częstotliwości cyklicznego zapalania i gaszenia diody Korzystając z wiadomości wykorzystanych w poprzednim programie, opracować program, którego wykonanie spowoduje zmniejszenie częstotliwości zapalania i gaszenia diody testowej według poleceń prowadzącego zajęcia. 2.1.4 Zmiana jasności świecenia diody Opracować program, którego wykonanie spowoduje zmianę jasności świecenia (przyciemnienie) diody testowej: - wskazówka: wykorzystać tryb nr 2 pracy timerów (rejestr TMOD). 2.2 Rozszerzenia ćwiczeń 2.2.1 Wykorzystanie większej liczby źródeł przerwań Korzystając z wiedzy zdobytej w punkcie 2.1 należy opracować program, którego wykonanie spowoduje zapalanie i gaszenie diody oraz cykliczne uruchamianie i wyłączanie brzęczyka (wykorzystać dwa timer’y – dwa źródła przerwań). 2.2.2 Oprogramowanie priorytetów przerwań Korzystając z wiedzy zdobytej w poprzednich punktach ćwiczenia oraz z programu z punktu 2.2.1 należy opracować program, którego wykonanie obrazować będzie zasadę działania priorytetów przerwań. Skorzystać ze wskazówek prowadzącego zajęcia.