Jste zde

Měření periody II

Měření periody tentokrát pomocí záchytného systému x52 ve spojení s přerušením.

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. 

Záchytný systém x52 ve spojení s přerušením
V tomto řešení si ukážeme využití záchytného systému časovače 2 procesoru 8052 ve spojení s přerušovacím systémem. Předpokládejme, že využijeme časovač 2 v záchytném režimu čítající vnitřní oscilátor o kmitočtu 12MHz /12, a měřený signál přivedeme na vstup T2EX. Na začátku činnosti spustíme časovač 2 ve funkci čítače vnitřního oscilátoru, povolíme záchytný režim na sestupnou hranu signálu T2EX a po-volíme přerušení od sestupné hrany na vstupu T2EX (nikoliv od přetečení časovače T2). 

Obslužný program přerušení potom převezme nově zachycenou hodnotu čítače T2, odečte ji od hodnoty předcházející s uvážením možnosti případného přetečení časovače T2 přes modul 65536. Vypočtenou hodnotu uloží do zobrazovaných re-gist-rů. Pro správnou činnost je nutné, aby do příštího zachycení (přerušení) byla výsled-ná hodnota vypočtena. Toto řešení umožňuje provádět měření každé periody signálu (měření první periody bude chybné). 
 


;Mereni periody 3. priklad

ORG  0000h
 LJMP  START
 ORG  0BH  ; Adresa obsluhy přerušení od časovače 2
 JMP MPERIOD 
 ORG  30H

START: 
 MOV  T2CON,#0Dh ; Časovač 2 - 16-bitový záchytný režim,
   ; časovač 2 spuštěn, Vnější zachycení povol. 
 MOV  IE,#0A0h ; Povol přerušení od časovače 2
 MOV  SP,#STACK ; Nastav ukazatel zásobníku
  ; ......
  ; Hlavní program
  ; ......

  ; Obslužné programy 

 ;NICI: ----- 

MPERIOD: 
 PUSH  ACC
 PUSH  PSW
 MOV  A,RCAP2L ; Vezmi nižší část nové hodnoty časovače
 CLR  C  ; Nuluji příznak přenosu
 SUBB  A,OLDL  ; Perioda = Aktuální stav - předcházející stav
 MOV PERIOD+1, A  ; Ulož nižší část rozdílu
 MOV  A,RCAP2H ; Vezmi vyšší část nové hodnoty časovače
 SUBB  A,OLDH  ; odečti vyšší část staré hodnoty
 MOV PERIOD, A  ; Ulož vyšší část rozdílu, Rozdíl = Perioda 
 MOV OLDL, RCAP2L ; Ulož aktuální stav jako starý
 MOV  OLDH, RCAP2H ;
 POP  PSW
 POP ACC
 RETI  ; Návrat z přerušení

 


 DSEG         ; Rezervace datové paměti

ORG 30h
PERIOD:  DS  2H     ; Paměť periody signálu
OLDL DS 1H ; Paměť nižší části časovače 2
OLDH DS 1H ; Paměť vyšší části časovače 2
STACK:  DS  1H

END

;Stazeno z www.HW.cz 
     ;    Autorem tohoto SW je Petr Skalicky - SKALICKY@feld.cvut.cz


DOWNLOAD rutin v .ZIP souboru
Hodnocení článku: