Előadást letölteni
Az előadás letöltése folymat van. Kérjük, várjon
KiadtaLili Ballané Megváltozta több, mint 10 éve
1
Mikrovezérlők alkalmazástechnikája laboratóriumi gyakorlat (lev) Hétszegmenses kijelző használata Makan Gergely, Mellár János, Mingesz Róbert, Boros Péter, Zana Roland Makan Gergely, Mellár János, Mingesz Róbert, Boros Péter, Zana Roland 2014. április 11. 1
2
Tartalom Timer használata Megszakításkezelés Feladatok 2
3
Timerek 3
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 4
5
Timer 0 (/Timer 1): Mode 2 5
6
8 bit auto reload mode 6 0 0 1 1 255 252 253 254 255 252 253 254 255 252 253 0 0 tt 4t4t 4t4t TL0TF0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 1 1 1 1 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 7
8
Timer 2 (/Timer 3): Auto-reload 8
9
Timer 2 auto reload 9 TMR2RL TMR2RL+1 65534 0 0 tt NtNt 0 0 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 65535 TMR2RL TMR2RL+1 65534 65535 TMR2RL TMR2RL+1 Clear TF2H (SW) TMR2 =TMR2H*256 +TMR2L TMR2RL =TMR2RLH*256 +TMR2RLL NtNt Set TF2H (HW, interrupt) TMR2RL
10
Megszakítások 10
11
Megszakításvektorok ForrásCímsorszámFlagA flag-et a hardver törli Reset0x0000--igen /INT0 külső0x00030IE0igen Timer 0 overflow0x000B1TF0igen /INT1 külső0x00132IE1igen Timer 1 overflow0x001B3TF1igen UART00x00234RI0, TI0nem Timer 2 overflow0x002B5TF2H, TF2Lnem SPI00x00336SPIF, WCOL,MODF, RXOVRN nem SMB00x003B7SInem 11
12
Megszakítás idődiagramja Események (megszakítások) kezelése 12 Utasítás #1 Utasítás #2 Utasítás #3 LCALL Megszakítási alprogram Megszakítási alprogram RETI tt tt tt tt a főprogram nem fut esemény
13
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
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 14
15
Valós idejű többszálú környezet 15
16
Éhezés 16
17
Éhezés 17
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 18
19
A kiegészítő áramkör 19
20
A kiegészítő áramkör kapcsolási rajza Mingesz RóbertMicLab – 02 – 2012.02.09.20 oldal
21
A kiegészítő áramkör panelterve Mingesz RóbertMicLab – 02 – 2012.02.09.21 oldal
22
Emlékeztető 22
23
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 23
24
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 24
25
Feladatok 25
26
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! 26
27
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? 27
28
4. feladat Jelzőlámpa készítése: – Zöld jelzés: 5 s – Sárga: 1 s Keresztező forgalom irányítása A feladatot egy timer rutin lássa el! 28
29
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 29
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 30
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. 31
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. 32
33
Tartalom Hétszegmenses kijelző használata Feladatok 33
34
A kiegészítő áramkör 34
35
A kiegészítő áramkör kapcsolási rajza Mingesz RóbertMicLab – 02 – 2012.02.09.35 oldal
36
A kiegészítő áramkör panelterve Mingesz RóbertMicLab – 02 – 2012.02.09.36 oldal
37
Hétszegmenses kijelző használata Mingesz RóbertMicLab – 06 – 2012.03.22.37 oldal BCDGFEDCBAbyte 001111113Fh 1000011006h 210110115Bh 310011114Fh 4110011066h 511011016Dh 611111017Dh 7000011107h 811111117Fh 911011116Fh Negatív logika! Bájt invertálása: ‚~...’
38
Megoldás menete A hétszegmenses kijelzőt meghajtó port összes bitjét egyszerre tudjuk írni (P2 =...) A számjegyeket felváltva kell kijelezni: T/2 ideig az egyiket, T/2 ideig a másikat Az átkapcsolás idejére célszerű kikapcsolni az összes szegmenst (szellemkép ellen) A bináris-7szegmenses konverzióhoz szükséges adatokat célszerű egy tömbben tárolni: __code char sg[] = {0x3F,... 0x6f}; Mingesz RóbertMicLab – 06 – 2012.03.22.38 oldal
39
0..99 kijelzés Egész szám felbontása: – Maradékos osztás – Alsó helyi érték – Fels ő helyi érték Mingesz RóbertMicLab – 06 – 2012.03.22.39 oldal
40
Feladatok 40
41
1. feladat Jelenítsen meg különböző számokat az egyik, majd a másik kijelzőn 41
42
2. feladat Két különböző számjegy megjelenítése a két hétszegmenses kijelzőn. A kijelzés ne legyen szellemképes! A vezérléshez használjon timert és megszakítást! Hozzon létre olyan programot, mely egy 0 és 99 közötti egész számot megjelenít a kijelzőn Megjelenített kép vizsgálata a frissítési frekvencia függvényében. 42
Hasonló előadás
© 2024 SlidePlayer.hu Inc.
All rights reserved.