Transcript

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

2

Tartalom

• Timer használata• Megszakításkezelés• Feladatok

3

Timerek

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

5

Timer 0 (/Timer 1): Mode 2

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

8

Timer 2 (/Timer 3): Auto-reload

• 16 bit-es• Periódus:

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

10

Megszakítások

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

15

Valós idejű többszálú környezet

16

Éhezés

17

Éhezés

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

19

Jegyzőkönyv készítése

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

23

Javítási útmutató

• Tájékoztató jelleggel!

24

Feladatok

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.


Recommended