Előadást letölteni
Az előadás letöltése folymat van. Kérjük, várjon
KiadtaRebeka Hegedűsné Megváltozta több, mint 9 éve
1
Mikrovezérlők alkalmazástechnikája laboratóriumi gyakorlat
Timer és megszakítások használata Nevek javítása: 1, 12, 16 fólia Jegyzetre való hivatkozások Mingesz Róbert V március 16.
2
Timerek
3
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
4
Timer 0 (/Timer 1): Mode 2
5
8 bit auto reload mode 8-bites számláló TL0: kezdőérték
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: 𝑇= 256−𝑇𝐻0 ∙Δ 𝑡 𝑇𝐶𝐿𝐾 Δ 𝑡 𝑇𝐶𝐿𝐾 = 1 𝑓 𝑇𝐶𝐿𝐾 t 1 255 252 1 253 1 4t 254 1 255 1 252 1 253 1 4t CLR TF0 254 255 252 1 253 1
6
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
7
Timer 2 (/Timer 3): Auto-reload
16 bit-es Periódus: 𝑇=(65536−𝑇𝑀𝑅2𝑅𝐿)∙Δ 𝑡 𝑇𝐶𝐿𝐾2
8
Timer 2 auto reload TMR2 =TMR2H*256 +TMR2L TMR2RL =TMR2RLH*256
+TMR2RLL TMR2RL TMR2RL+1 t Nt 65534 Set TF2H (HW, interrupt) 65535 TMR2RL 1 TMR2RL+1 1 Nt Clear TF2H (SW) 65534 65535 TMR2RL TMR2RL 1 TMR2RL+1 1
9
Megszakítások
10
Megszakításvektorok Forrás Cím sorszám Flag A flag-et a hardver törli
Reset 0x0000 - igen /INT0 külső 0x0003 IE0 Timer 0 overflow 0x000B 1 TF0 /INT1 külső 0x0013 2 IE1 Timer 1 overflow 0x001B 3 TF1 UART0 0x0023 4 RI0, TI0 nem Timer 2 overflow 0x002B 5 TF2H, TF2L SPI0 0x0033 6 SPIF, WCOL,MODF, RXOVRN SMB0 0x003B 7 SI
11
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
12
Megszakításkezelő rutin
void timermegszak(void) __interrupt INT_TIMER2 { TF2 = 0; // timer flag törlése maga a kód; } INT_TIMER2: a 2. timer megszakításvektorának sorszáma (header file)
13
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
14
Valós idejű többszálú környezet
15
Éhezés
16
Éhezés
17
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
18
A kiegészítő áramkör
19
A kiegészítő áramkör kapcsolási rajza
20
A kiegészítő áramkör panelterve
21
Jegyzőkönyv készítése
22
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
23
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
24
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
Javítási útmutató Tájékoztató jelleggel!
26
Feladatok
27
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!
28
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!
29
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)
30
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ása A többi mellékletként (feladatonként): C források cwg fájlok
31
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
32
Laboratory practical with the C8051Fxxx microcontroller family, Authors: Zoltán Gingl and Róbert Zoltán Mingesz, chapter 5.5 Hibaelhárítás
33
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.
34
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.
35
3. feladat A kiegészítő panel megismerése. LED-ek ki-be kapcsolása.
Mikor világít egy, a panelen lévő LED?
36
4. feladat Jelzőlámpa készítése: Keresztező forgalom irányítása
Zöld jelzés: 5 s Sárga: 1 s Keresztező forgalom irányítása A feladatot egy timer rutin lássa el!
37
Tipp Változó deklarálása, mely minden egyes timer megszakításnál növekszik Megadott értékek esetén kimeneti konfiguráció megváltoztatása Maximum elérésekor változó törlése
38
5. feladat Program bővítése különböző funkciókkal:
Gépjármű „érzékelése” (egyik irány csak akkor kap zöldet, ha megnyomunk egy gombot) Mentő üzemmód Éjszakai üzemmód
Hasonló előadás
© 2024 SlidePlayer.hu Inc.
All rights reserved.