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.