32
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

Mikrovezérlők alkalmazástechnikája laboratóriumi gyakorlat

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

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.