Upload
fiona-dudley
View
52
Download
5
Embed Size (px)
DESCRIPTION
Mikrovezérlők alkalmazástechnikája laboratóriumi gyakorlat. Timer és megszakítások használata. Makan Gergely, Mellár János, Mingesz Róbert, Boros Péter, Zana Roland. 2014. február 24. Tartalom. Timer használata Megszakításkezelés Feladatok. Timerek. Számlálók. Négy 16-bites számláló - PowerPoint PPT Presentation
Citation preview
Mikrovezérlők alkalmazástechnikája laboratóriumi gyakorlat
Makan Gergely, Mellár János, Mingesz Róbert
V 5.0 2015. február 9.
Timer és megszakítások használata
4
Számlálók
• Négy 16-bites számláló• Különböző üzemmódok• Választható órajelforrások• Események számlálása• Periodikus események generálása• Idő-, frekvencia-, fázisszögmérés
6
8 bit auto reload mode
• 8-bites számláló• TL0: kezdőérték• TH0: reload érték• Reload: TL0
túlcsordulásakor• Példa:– TL0=0, TH0=252;– Periódus:
01
255252253254255252253254255252253
0t
4t
4t
TL0 TF0
0
01111110011
CLR TF0
7
Timer üzembe helyezése
• Mikrovezérlő órajel beállítása (SYSCLK)
• Üzemmód kiválasztása (8 bit auto reload)
• Órajel forrás kiválasztása (SYSCLK/x)
• Timer engedélyezése• Reload érték kiszámolása (TH0)• TL0 = TH0
9
Timer 2 auto reload
TMR2RLTMR2RL+1
65534
0t
Nt
0
0011
0011
65535TMR2RL
TMR2RL+1
6553465535
TMR2RLTMR2RL+1
Clear TF2H (SW)
TMR2=TMR2H*256+TMR2LTMR2RL=TMR2RLH*256+TMR2RLL
Nt
Set TF2H(HW, interrupt)
TMR2RL
11
Megszakításvektorok
Forrás Cím sorszám Flag A flag-et ahardver törli
Reset 0x0000 - - igen
/INT0 külső 0x0003 0 IE0 igen
Timer 0 overflow
0x000B 1 TF0 igen
/INT1 külső 0x0013 2 IE1 igen
Timer 1 overflow
0x001B 3 TF1 igen
UART0 0x0023 4 RI0, TI0 nem
Timer 2 overflow
0x002B 5 TF2H, TF2L nem
SPI0 0x0033 6 SPIF, WCOL,MODF, RXOVRN
nem
SMB0 0x003B 7 SI nem
12
Megszakítás idődiagramja
• Események (megszakítások) kezelése
Utasítás #1
Utasítás #2Utasítás
#3
LC
AL
L
Meg
szakít
ási
alp
rog
ram
RE
TI
t t t t
a főprogram nem fut
esemény
13
Megszakításkezelő rutin
void timermegszak(void) __interrupt INT_TIMER2{
TF2 = 0; // timer flag törlésemaga a kód;
}• INT_TIMER2: a 2. timer
megszakításvektorának sorszáma (header file)
14
Timer megszakítás használata
• Megszakításkezelő rutin definiálása !• Timer megszakítás engedélyezése• Megszakítások globális
engedélyezése
18
Tippek többszálú környezethez
• Éhezés elkerülése– Gyorsan végrehajtódó
megszakításrutinok–Hosszabb feldolgozások: fő szál– Elegendő processzorsebesség– Gyakoriság megfelelő kiválasztása
• volatile változók: biztonságos használat többszálú környezetben
20
Mindenképp szükséges mellékletek
• *.cwg fájlok (konfig wizard konfigurációja)
• *.c(maga az elkészített kód)
• Esetleg header fájlok, ha azok módosítva lettek
21
Kód beillesztését igénylő feladatok
• Csak a fontos részletek• NEM az egész kód, főleg nem a
konfigurációs sorokkal
22
Program bemutatása
• Nélküle nem jár pont(a korábbi (rész)feladatokra sem)
• Lehet számítani:– Kérdésekre– Javaslatokra
25
1. feladat
• LED1 villogtatása 2 s-os periódusidővel a Timer 2 használatával.
• Válassza ki a megfelelő processzorsebesség és timer beállításokat. Részletezze a számolását!
• Mérje pontosan a villogás frekvenciáját!
26
2. feladat
• Amikor a LED1 aktív, a LED2 villogjon 6 Hz frekvenciával.
• LED1 vezérlését a Timer 2 végezze, a LED2-t pedig a Timer 1.
• Válassza ki a megfelelő processzorsebesség és timer beállításokat. Részletezze a számolását!
27
Tippek
• A megszakítások frekvenciája túl nagy → Szoftveres kiterjesztés: külön számlálót kell használni a rutinon belül (lásd előadás példa)
28
Jegyzőkönyv készítése
• Formátum megőrzése!(a fekete részek a hallgatói tartalom)
• Csak a lényeges kódelemek beírásaA többi mellékletként (feladatonként):– C források– cwg fájlok
29
Kit üzembe helyezése
• Jumperek ellenőrzése• Szalagkábel csatlakoztatása• USB kábel csatlakoztatása• AC/DC adapter csatlakoztatása• Kikapcsolás fordított sorrendben
30
Hibaelhárítás
Laboratory practical with the C8051Fxxx microcontroller family, Authors: Zoltán Gingl and Róbert Zoltán Mingesz, chapter 5.5
31
Timer-es időzítés
Probléma:- A Timer nem fut vagy nem várt időzítés történik. Lehetséges okok: - A Timer nincs engedélyezve.- A Timer nem megfelelően van beállítva. - A bemenő órajel nem megfelelően van beállítva.- A Timer0 és a Timer1 lehet, hogy kapuzott (gate) módban van és a gate jel sosem lesz aktív. - Az SFR értékek el vannak számolva vagy nincsenek megfelelően beírva.
32
Timer-es időzítés megszakítással
Probléma : - A Timer nem fut vagy a megszakítási periódusidő értéke nem egyezik meg a várttal.Lehetséges okok : - A Timer nincs engedélyezve. - A kapcsolódó megszakítás nincs engedélyezve.- Az interrupt flag nincs törölve ezért folyamatos megszakítás generálódik. Ebben az esetben szinte az összes processzoridő elmegy.- Egyéb megszakítás kezelő rutinok végrehajtása késleltetheti a timer megszakítást.- A megszakítás kezelő rutin végrehajtása több időt vehet igénybe, mint amennyi idő eltelik két megszakítás között; a túlcsordulási gyakoriság túl magas.- A timer-ek egyszerre többféle célra használhatóak és a beállítások eltérőek.