160 likes | 440 Views
TIMERS. Modelo Básico : 2 Timers/Contadores de 16 bits (T0 y T1) Derivados: 3 Timers/Contadores de 16 bits (T0, T1 y T2) Timers : Cuentan ciclos de Máquina (1 cuenta cada 12 clocks) Contadores:
E N D
TIMERS Modelo Básico : 2 Timers/Contadores de 16 bits (T0 y T1) Derivados: 3 Timers/Contadores de 16 bits (T0, T1 y T2) Timers: Cuentan ciclos de Máquina (1 cuenta cada 12 clocks) Contadores: Cuentan Flancos descendientes de entradas externas P3.4 External Input T0 P3.5 External Input T1 Para que cuente tiene que estar 1 ciclo de máquina en cada estado (fck / 24 ¡optimista!) Registros: Cada uno posee: dos registros de 8 bits R/W TH0, TL0 y TH1, TL1
Timers • Registros de Control: • TMOD (0x89) • TCON (0x88) C/T: 1 Contador 0 TimerTF1, TF0: Flags de Overflow Cuentan hacia arriba (up), Overflow 0xFFFF 0x0000 Si está habilitada dan IRQM1, M0: Modos de funcionamiento Gate C/T M1 M0 C/T M1 M0 Gate Timer 1 Timer 0 TF1 TR1 TF0 TR0 IT1 IE0 IT0 IE1
Timers • M1=0, M0=0: Modo 0Contador o Timer de 13 bits (compatible 8048) [No Usar] • M1=0, M0=1: Modo 1Contador o Timer de 16 bits • M1=1, M0=0: Modo 2Contador o Timer de 8 bits (Tli) con auto recarga de Thi sobre Tli en overflow • M1=1, M0=1: Modo 3T0 en Modo 3 : 2 Contadores o Timers de 8 bits (TL0 y TH0)TL0 con los bits de control de TMOD para T0 (puede dar IRQ)TH0 con los bits de control de TMOD para T1 (puede dar IRQ)Con T0 en Modo 3 se pierde control de T1 y este no dá IRQT1 en Modo 3 : detenido, conservando su cuenta T0 en Modo 3 y T1 en modo 1 : T0 2 Contadores o Timers de 8 bits (TL0 y TH0) T1 Generador de Baud Rate (no da IRQ)
Por ejemplo: quiero hacer algo cada tres minutos: ;clock = 12 Mhz dseg at 0x20 mseg: ds 1 seg: ds 1 min: ds 1 mseg50 equ 0x10000-50000 ;50 mseg Tmseg equ 20 ;1 seg Tseg equ 60 ;1 minuto Tmin equ 3 ;cant.de minutos cseg at 0000 mov mseg,#Tmseg mov seg ,#Tseg mov min ,#Tmin mov TH1 ,#HIGH(mseg50);cargo el timer 1 mov TL1 ,#LOW(mseg50) mov TMOD,#00010000B ; Modo 1 mov IE ,#10001000B ;Habilito IRQ de T1 setb TR1 ; arranco el timer ;....................... IRQT1: push Acc push psw clr TR1 ; paro el timer mov A,#LOW mseg50 ; 2 cm. clr C ; 1 cm subb A,TL1 ; 2 cm subb A,# Ciclos ; 2 cm mov TL1,A ; 2 cm mov A,#HIGH mseg50 ; 2 cm. subb A,#0 ; 2 cm mov TH1,A ; 2 cm setb TR1 ; 2 cm ;Ciclos = 17 Ciclos equ 17 ;Comienza la rutina……. Tiempos Largos y Precisos
Tiempos Largos y Precisos • ;Comienza la Rutina: • dec mseg Mov A, mseg Jnz fin Mov mseg, #Tmseg Dec seg Mov A,seg Jnz fin Mov seg, #Tseg Dec min Mov A, min Jnz fin mov min, #Tmin Lcall HagaLoQueTengaQueHacer Fin: pop PSW pop Acc reti
Timer 2 • Patas:P1.0 T2 entrada de pulsos para contadorP1.1 T2EX entrada de control up/down • RegistrosTH2 y TL2 PROPIOSRCAP2H y RCAR2L CAPTURAT2CON, T2MOD CONTROL DEL TIMER • T2CON • T2MOD TF2 EXF2 RCLK TCLK TR2 C/T2 CP/RL2 EXEN2 T2OE DCEN
Timer 2 • C/T2 Contador o Timer • TF2 Flag de Overflow • EXF2 Flag Overflow • MODOS
Timer 2 • Modos de FuncionamientoBaud Rate GeneratorPara Tx, o Rx, o ambas, se selecciona con RCLK y TCLK, la no seleccionada puede tener el Baud Rate dado por T1 en Modo 1 o 3T2 se incrementa a Fclk / 2En este modo no genera interrupciónSe recarga con el contenido de RCAP2
Timer 2 • AUTORELOAD • Se activa con CP/RL2 = 0 • En Overflow se recarga con RCAP2H / L • Submodos dependen de DCEN (T2MOD), EXEN2 (T2CON) y T2EX (P1.1)
Timer 2 • CAPTURA • EXEN = 0 TIMER NORMAL • En OV TF2 = 1 (debe clerearse por soft y puede generar IRQ) • EXEN = 1 TIMER NORMAL CON CAPTURA • En OV TF2 = 1 (debe clerearse por soft y puede generar IRQ) • Con T2EX (P1.1) se copia TH/L2 a RCAP2H/L, se setea EXF2 (puede generar IRQ) • INTERRUPCIONES • Se habilitan con IE.5 (ET2) • La prioridad es la menor de todas • Se puede cambiar el nivel de Prioridad con IP.5 (PT2) • Vector en 0x002B (tanto para TF2 como para EXF2)
Timer 2 • CLOCK OUT • El timer 2 puede ser configurado como Clock para dispositivos externos. • Para configurarlo: • C/T2 (T2CON.1) = 0 • T2OE (T2MOD.2) = 1 • TR2 (T2CON.2) = 1 arranca, = 0 para • Clock sale por P1.0 • No genera IRQ • Se puede usar como Baud Rate Generator y Clock Out simultaneamente (a la misma frecuencia).
Métodos de Recuperación de errores • Watch DogMov DPTR, #0x80FESe codifica como:1000 901001 80 sjmp 1002 FE -21003 …..
Métodos de Recuperación de errores • Watch Dog Interno (…52 y sucesivos) • WDT Contador de 14 bitsWDTRST SFR de Control • Luego del Reset el WDT queda deshabilitado • Para habilitarlo:mov WDTRST, # 0x1Emov WDTRST, # 0xE1 • No se puede deshabilitarPara resetearlo:mov WDTRST, # 0x1Emov WDTRST, # 0xE1 • Cuenta ciclos de máquina. Máximo tiempo 16368 seg
Métodos de Reducción de Energía • IDLE • En activo el C consume 25 mA (AT89S52) • En IDLE consume 6,5 mA. • Los timers, Interrupciones, Serial Port, etc están activos, la CPU no recibe clock. • Se ingresa pormedio de PCON, poniendo IDL = 1 • Se sale con cualquier IRQ habilitada o con ResetLa instrucción que se ejecuta es la siguiente a:mov PCON, # 1 • GF1 y GF0 son bits de Usuario SMOD - - - GF0 PD IDL GF1
Métodos de Reducción de Energía • POWER DOWN • El consumo en este estado es de 50 A • Se entra poniendo: mov PCON, # 2 • Solo se sale con ResetLos registros se inicializanLa RAM interna se preservaLos ports conservan su valor, ALE y PSEN wuedan en 0 • En modelos más modernos, se sale con IRQ esterna habilitada.