270 likes | 374 Views
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ó
E N D
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
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
8 bit auto reload mode TL0 TF0 • 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: 0 0 t 1 0 255 0 252 1 253 1 4t 254 1 255 1 252 1 253 1 4t CLR TF0 254 0 255 0 252 1 253 1
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
Timer 2 (/Timer 3): Auto-reload • 16 bit-es • Periódus:
Timer 2 auto reload TMR2 =TMR2H*256 +TMR2L TMR2RL =TMR2RLH*256 +TMR2RLL TMR2RL 0 t TMR2RL+1 0 Nt 65534 0 Set TF2H (HW, interrupt) 65535 0 TMR2RL 1 TMR2RL+1 1 Nt Clear TF2H (SW) 65534 0 65535 0 TMR2RL TMR2RL 1 TMR2RL+1 1
Megszakítás idődiagramja • Események (megszakítások) kezelése a főprogram nem fut t t t t Utasítás #1 Utasítás #2 Utasítás #3 Megszakítási alprogram LCALL RETI esemény
Megszakításkezelő rutin voidtimermegszak(void) __interrupt INT_TIMER2 { TF2 = 0; // timerflag törlése maga a kód; } • INT_TIMER2: a 2. timer megszakításvektorának sorszáma (header file)
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
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
1. feladat • LED1 villogtatása 0,5 Hz frekvenciával 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!
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!
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)
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
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
Laboratory practical with theC8051Fxxx microcontroller family, Authors: Zoltán Gingl and RóbertZoltán Mingesz, chapter 5.5 Hibaelhárítás
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. - AzSFR értékek el vannak számolva vagy nincsenek megfelelően beírva.
Timer-esidő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 interruptflag 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-ekegyszerre többféle célra használhatóak és a beállítások eltérőek.