LABORATORIUM TIMERY w mikrokontrolerach MCS`51
Transkrypt
LABORATORIUM TIMERY w mikrokontrolerach MCS`51
Zachodniopomorski Uniwersytet Technologiczny WYDZIAŁ ELEKTRYCZNY Zakład Cybernetyki i Elektroniki LABORATORIUM TECHNIKA MIKROPROCESOROWA TIMERY w mikrokontrolerach MCS’51 Opracował: mgr in . Andrzej Biedka Ŝ Timer jest jednym z podstawowych elementów wyposa enia mikrokontrolera. Schemat podstawowej struktury timera przedstawia rysunek 2-1. Ŝ fclk (fclk)/n preskaler /n Zapis/Odczyt2 (sygnał CU) S2 S1 Licznik binarny n-bitowy We ś ę Zapis/Odczyt1 (sygnał CU) start / stop licznik / czasomierz Wej cie impulsów zewn trznych przepełnienie Rejestr steruj cy ą Magistrala danych Rys. 2-1. Schemat blokowy timera w mikrokontrolerze Timer składa si z programowanego licznika binarnego oraz współpracuj cego z nim rejestru steruj cego. Zarówno licznik jak i rejestr steruj cy s przył czone do wewn trznej magistrali danych, dzi ki czemu jednostka steruj ca mikrokontrolera (CU) mo e w dowolnym momencie modyfikowa lub odczyta ich zawarto . Licznik binarny najcz ciej zlicza w gór – dodaje impulsy podawane na wej cie. Impulsy wej ciowe s bramkowane (zał czane) ł cznikiem S2 sterowanym sygnałem start/stop, pochodz cym z rejestru steruj cego. ródłem impulsów zliczanych mo e by : - wewn trzny układ dzielnika cz stotliwo ci sygnału taktuj cego prac jednostki centralnej - fclk, tzw. preskalera. W takim przypadku, wobec wzorcowej długo ci czasu impulsu zliczanego pochodz cego najcz ciej z generatora stabilizowanego rezonatorem kwarcowym, mówimy o funkcji czasomierza lub z j zyka angielskiego timera. Funkcja odpowiada górnemu poło eniu przeł cznika S1. Preskaler mo e by dzielnikiem programowanym, wówczas b dzie przył czony do magistrali danych. - wyprowadzenie mikrokontrolera (ang. pin), na który mo na przył czy sygnał pochodz cy z zewn trz. Wówczas urz dzenie pełni funkcj licznika (ang. counter). Funkcja odpowiada dolnemu poło eniu przeł cznika S1. ę ą ą ą ą ą ę Ŝ ę ą ć ć ś ę ś ę ą ą ą Ź ć ś ś ą ą Ŝ ć ę ę ś ą ę ś ą ę ś ę Ŝ Ŝ ą ć ę ą Ŝ ą ą ą ą ć ę Ŝ ą Sygnałem wyj ciowym mo e by stan licznika lub – cz ciej – jego przepełnienie sygnalizowane zmian stanu jednego z bitów rejestru steruj cego. Dodatkowo przepełnienie licznika binarnego mo e wywoła stan przerwania. Nale y zaznaczy , e z uwagi na stosowanie w układach mikrokontrolerów kilku zespołów timerów (mog cych pracowa niezale nie lub w niektórych konfiguracjach wspólnie), rejestr steruj cy jest zbudowany z kilku rejestrów 8-bitowych. Ŝ ś ć ę ą ą Ŝ ć Ŝ Ŝ ć Ŝ ą ć ą 2 ś Istot pracy timera/licznika jest jego autonomiczno , czyli praca niezale na od programu głównego. Niezale no dotyczy zliczania impulsów, gdy oczywi cie sterowanie prac timera/licznika odbywa si programowo. Ŝ ą ś ć Ŝ Ŝ ś ć ś ą ę Nowoczesne mikrokontrolery zawieraj moduły czasomierzy/liczników o bardzo rozbudowanych funkcjach, np.: generatora PWM – cz sto wielokanałowego, generatora taktuj cego o programowanej cz stotliwo ci, licznika zdarze zewn trznych. ą ę ę ś ą ę ń W mikrokontrolerze rodziny 8051 preskaler ma stały współczynnik podziału równy 12. Ponadto w stosunku do podanego wy ej schematu blokowego wprowadzono dodatkowe funkcje logiczne w obwodzie sygnału sterowania ł cznikiem S2. Uproszczony schemat ideowy timera 8051 pracuj cego w trybie 1 przedstawiono na rysunku 2-2. Ŝ ą ą fclk układ przerwa TF0 12 ń Lo -> Hi C/T0 = 0 C/T0 = 1 TL0 TH0 8 bit 8 bit T0pin bit C/T0 - rejestr TMOD bit TF0 - rejestr TCON INT0pin bit TR0 - rejestr TCON bit GATE0 - rejestr TMOD Rys. 2-2 Schemat ideowy timera 8051 pracuj cego w trybie 1 ą Bramka AND steruj ca zał czaniem impulsów zliczanych zwiera ł cznik dla stanu wysokiego na wyj ciu. ą ą ą ś ZADANIA: 1. Na podstawie literatury zapozna si z funkcjami bitów w rejestrach TMOD i TCON. ć ę 2. Przeanalizowa schemat przedstawiony na rysunku 2-2 i okre li warto ci bitów TR0 i GATE0 niezb dne dla ka dego trybu pracy czasomierza/licznika. ć ś ć ś Ŝ ę 3. Na podstawie literatury zapozna si ze schematami ideowymi bloku czasomierza/licznika w ka dym dost pnym trybie pracy. ć Ŝ ę 3 ę Przykładowy program wykorzystuj cy timer b dzie generatorem impulsów prostok tnych z obserwacj przebiegu na sygnalizatorze z diod LED linii portu P2.0. Dla umo liwienia obserwacji wzrokowej cz stotliwo przebiegu musi by ni sza ni 25Hz – przyjmiemy równ 10 Hz. Wykorzystany zostanie timer 0 w trybie 1. ą ę ą Ŝ ą ą Ŝ ę ś ć Ŝ ć ą Algorytm programu przedstawia poni szy rysunek: Ŝ START Zeruj linie portu P2 Inicjalizacja timera T0 Start timera T0 Czy TF0 = 1 ? N T Zeruj flag TF0 ę Neguj stan P2.0 Ładuj licznik T0 Rys. 2-3. Algorytm programu generatora przebiegu prostok tnego dla linii P2.0 ą Listing programu napisanego na podstawie algorytmu przedstawiono poni ej. Ŝ 4 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: ;LISTING 2-1 ; ; ; ; ; ; ; Program generatora przebiegu prostok tnego 10Hz (okres = 100msek.) Sygnalizacja stanu na linii P2.0 Ilo impulsów do zliczenia: N = Tp/Tcykl, (timer pracuje w trybie 1) gdzie: Tp - czas dany Tcykl - okres impulsów wzorcowych = 1/(fclk/12) Dla 50 msek.: 50msek/(12/11,0592MHz) = 46080 Do licznika nale y załadowa 65536 - 46080 = 19456 = 4C00h ą ś ć Ŝ ą Ŝ ć ORG 0 ; starszy bajt ilo ci impulsów ; młodszy bajt ilo ci impulsów CZAS_HIGH EQU 4CH CZAS_LOW EQU 0 MOV ś ś P2,#0 ; zeruj wszystkie linie portu P2 ; Programowanie trybu pracy timera 0 MOV TMOD,#00000001B ; timer 0 -> tryb 1 ; timer 1 -> nieu ywany, tryb 0 ; programowanie ilo ci impulsów MOV TH0,#CZAS_HIGH MOV TL0,#CZAS_LOW Ŝ ś SETB PETLA: JNB CLR CPL TR0 ; uruchomienie licznika TF0,$ TF0 P2.0 ; czekaj na zmian flagi na '1' ; zeruj flag przepełnia ; neguj bit linii P2.0 ę ę ; ponowne programowanie ilo ci impulsów MOV TH0,#CZAS_HIGH MOV TL0,#CZAS_LOW ś SJMP PETLA END W programie u yto bitowego trybu adresowania do ustawienia bitu TR0 – linia 22 listingu 2-1. Stosowanie bajtowego rozkazu ustawiania bitu TR0, jakkolwiek mo liwe, jest mniej czytelne i mniej wygodne. Jest tak, poniewa w rejestrze TCON znajduj si bity odpowiedzialne za inne funkcje timerów, zatem nale y pami ta by nie zmieni ich stanu. Wła ciwym rozkazem bajtowym modyfikuj cym stan rejestru b dzie: Ŝ Ŝ Ŝ ę ą ć ć ę Ŝ ś ą ę ORL TCON,#00010000B. Jedynka na pozycji D4 w stałej b d cej drugim operandem rozkazu odpowiada pozycji bitu TR0. Bit ten zostanie ustawiony, natomiast stan pozostałych bitów rejestru TCON pozostanie niezmieniony. Rozkaz bajtowy mo e by jednak uzasadniony przy konieczno ci równoczesnego uruchomienia obu timerów: ę Ŝ ą ć ś ORL TCON,#01010000B. Jedynki w stałej b d cej drugim operandem rozkazu odpowiadaj pozycjom bitów TR0 i TR1. ę ą ą Dla ułatwienia programowania 16-bitowego rejestru timera mo na wykorzysta istniej cy w mikrokontrolerze szesnastobitowy rejestr DPTR – unika si wtedy przekształce liczby 16-bitowej na dwie 8-bitowe. W listingu 2-2 linie 19-21 zawieraj przykładowe zastosowanie rejestru DPTR do zaprogramowania timera. Ŝ ę ą 5 ć ń ą 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: ; LISTING 2-2 ; Program generatora przebiegu prostok tnego 10 Hz (okres = 100msek.) ; Sygnalizacja stanu na linii P2.0 ; Ilo impulsów do zliczenia: N = Tp/Tcykl ;gdzie: Tp - czas dany ; Tcykl - okres impulsów wzorcowych 1/(fclk/12) ; Dla 50 msek.: 50msek/(12/11,0592MHz) = 46080 ; Do licznika nale y załadowa 65536 - 46080 = 19456 ą ś ć Ŝ Ŝ ą ć ORG 0 CZAS EQU 19456 MOV P2,#0 ; zeruj wszystkie linie portu P2 ; Programowanie trybu pracy timera 0 MOV TMOD,#00000001B MOV MOV MOV DPTR,#CZAS TH0,DPH TL0,DPL ; timer 0 -> tryb 1 ; timer 1 -> nieu ywany, tryb 0 Ŝ SETB PETLA: JNB CLR CPL ; starszy bajt ilo ci impulsów ; młodszy bajt ilo ci impulsów ś ś TR0 ; uruchomienie licznika TF0,$ TF0 P2.0 ; czekaj na zmian flagi na '1' ; zeruj flag przepełnia ; neguj bit linii P2.0 ę ę ; ponowne programowanie ilo ci impulsów MOV TH0,DPH MOV TL0,DPL ś SJMP PETLA END Nale y zaznaczy , e w przypadku wykorzystania rejestru DPTR do innych, wła ciwych jego przeznaczeniu celów, konieczne b dzie przechowywanie warto ci podzielników w innych komórkach pami ci. Ŝ ć Ŝ ś ę ś ę Jednak e najwygodniejszym sposobem konwersji liczby 16-bitowej na dwie liczby 8-bitowe jest wykorzystanie dyrektyw asemblera LOW i HIGH, opisanych w instrukcji „ASEMBLER MCS’51. Podstawowe informacje”. Przykładowy program z wykorzystaniem tych dyrektyw przedstawiony jest na listingu 1-3. Ŝ Maksymalny czas jaki mo e zliczy timer pracuj cy w trybie 1 wynosi (dla rezonatora kwarcowego 11,0592 MHz): Ŝ ć ą tmax = 216 * 1/(fclk/12) = 65536 * 1,08507 s = 71,11 ms ZADANIA: 4. Obliczy maksymalny czas, jaki mo e odmierzy timer w trybie 0. 5. Obliczy maksymalny czas, jaki mo e odmierzy timer w trybie 2. 6. Obliczy maksymalny czas jaki mo e odmierzy timer w trybie 1 przy wykorzystaniu rezonatora kwarcowego o cz stotliwo ci 2,0 MHz . ć Ŝ ć ć Ŝ ć ć Ŝ ć ę 6 ś 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: ; LISTING 2-3 ; Program generatora przebiegu prostok tnego 10 Hz (okres = 100msek.) ; Sygnalizacja stanu na linii P2.0 ; Ilo impulsów do zliczenia: N = Tp/Tcykl ;gdzie: Tp - czas dany ; Tcykl - okres impulsów wzorcowych 1/(fclk/12) ; Dla 50 msek.: 50msek/(12/11,0592MHz) = 46080 ; Do licznika nale y załadowa 65536 - 46080 = 19456 ą ś ć Ŝ Ŝ ą ć ORG 0 CZAS EQU 19456 MOV P2,#0 ; zeruj wszystkie linie portu P2 ; Programowanie trybu pracy timera 0 MOV TMOD,#00000001B ; timer 0 -> tryb 1 ; timer 1 -> nieu ywany, tryb 0 Ŝ MOV MOV SETB PETLA: JNB CLR CPL TL0, #LOW CZAS TH0, #HIGH CZAS ; młodszy bajt ilo ci impulsów ; starszy bajt ilo ci impulsów TR0 ; uruchomienie licznika TF0,$ TF0 P2.0 ; czekaj na zmian flagi na '1' ; zeruj flag przepełnia ; neguj bit linii P2.0 ś ś ę ę ; ponowne programowanie ilo ci impulsów MOV TL0, #LOW CZAS MOV TH0, #HIGH CZAS ś SJMP PETLA END Podane w instrukcji przykłady programów ró ni si jedynie sposobem definiowania stałych ładowanych do rejestrów licznika binarnego w układzie czasomierza. Ŝ ą 7 ę ZADANIA: 7. Napisa program generatora przebiegu prostok tnego o parametrach przedstawionych na poni szym rysunku. Obserwacji przebiegu dokona przy pomocy wybranej diody LED portu P2. ć ą Ŝ ć 1sek. 60 msek. Rys. 2-4 8. Napisa program generatora przebiegu prostok tnego o parametrach przedstawionych na rysunku 2-4 z wykorzystaniem timera pracuj cego w trybie 0. ć ą ą 9. Napisa program generatora przebiegu prostok tnego o parametrach przedstawionych na rysunku 2-4 z wykorzystaniem 2 timerów pracuj cych w trybie 1. ć ą ą 10. Napisa program generatora przebiegu prostok tnego o parametrach przedstawionych na rysunku 2-4 z wykorzystaniem 2 timerów, jednego pracuj cego w trybie 0, drugiego pracuj cego w trybie 1. ć ą ą ą 8