Příklad je koncipován tak, aby bylo možné si ukázat, jak časovače a specializované periferie usnadňují tuto úlohu. Analýzou problému zjistíme, že k měření doby periody postačí 16-bitový čítač. Problém měření periody můžeme řešit zcela programově, s využitím vnitřního časovače a přerušovacího systému nebo využitím specializované periferie - záchytného systému.
Programové řešení
- Při čistě programovém řešení budeme programově čekat např. na vzestupnou hranu měřeného signálu.
- Po jejím dosažení bude program testovat logickou úroveň vstupního signálu (log.1) a zároveň za provedený počet instrukcí definované délky započte do registru DPTR jedničku.(INC DPTR = 2 cykly, NOP = 1 cyklus a JB bit, adresa = 2 cykly, dohromady 5us pro 12MHz)
- Analogicky program testuje i dobu log.0 a s novou náběžnou hranou signálu měření ukončí.
- Pro správnou činnost je třeba, aby vstupní signál setrval v každé úrovni alespoň dva strojové cykly, tj. 2us.
Hlavní nevýhoda tohoto řešení spočívá ve 100% využití
výkonu procesoru v době měření periody signálu.
VSTUP EQU P1.2 ; Vývod, na který je přiveden měřený signál ORG 0000h JB VSTUP,$ ; Čekej na konec log.1
;Stazeno z www.HW.cz |
Použítí přerušovacího systému
Druhé použité řešení bude využívat přerušovací systém a
vnitřní časovače. To umožní provádět měření doby periody nezávisle na
hlavním progra-mu, protože programová obsluha (přerušení) bude pouze zajišťovat
spuštění, zasta-vení a uložení hodnot. Po dobu vlastního měření pak může
procesor vykonávat hlavní program.
Předpokládejme, že využijeme časovač 0 v módu 1 (16 bitů) čítající vnitřní
oscilátor o kmitočtu 12MHz /12.
Měřený signál přivedeme na vstup vnějšího přerušení, např. INT0, a
aktivitu přerušovacího systému nastavíme na sestupnou hranu tohoto signálu. Před
prvním vyvoláním přerušení vynulujeme časovač. S první sestupnou hranou
měřeného signálu na vstupu INT0 bude vyvoláno přerušení, které
spustí činnost časovače. Druhé přerušení čítání časovače
zastaví, zajistí jeho uložení a vynulování. Třetí přerušení
zahájí další měření doby periody. Díky tomu bude program, stej-ně jako v
předcházejícím případě, provádět měření každé druhé periody
signálu.
;Mereni periody s pouzitim prerusovaciho
systemu ORG 0000h START: ; Obslužné programy MPERIOD: STOP: DSEG
;Rezervace datové paměti ;Stazeno z www.HW.cz |