timer0 (t0)

Anuncio
TIMER0 (T0)
(81h,181h)
R/W
R/W
R/W
R/W
R/W
R/W
R/W
R/W
R/W
R/W
RBPU INTEDG T0CS T0SE PSA
Pre-Scaler Asignament
PSA
Pre-Scaler para TMR0
Pre-Scaler para WDT
R/W
R/W
R/W
PS2
PS1
PS0
Pre-Scaler
PS2
PS1
PS0
0
1:2
0
0
0
1
1:4
0
0
1
T0CS
1:8
0
1
0
Interna con Fosc/4
0
1:16
0
1
1
Externa en T0CKI
1
1:32
1
0
0
T0SE
1:64
1
0
1
si TOCS=1
T0 Clock Souce
T0 Source Edge1
0->1 en T0CKI
0
1:128
1
1
0
1->0 en T0CKI
1
1:256
1
1
1
INTCON
(0Bh,8Bh,10Bh,18Bh)
R/W
GIE
Global Interrupt Enable
R/W
R/W
R/W
R/W
R/W
R/W
R/W
PEIE T0IE INTE RBIE T0IF INTF RBIF
GIE
T0 Interrupt Enable
T0IE
Interrupciones deshabilitadas
0
Int. por T0 deshabilitada
0
Interrupciones habilitadas
1
Int. por T0 habilitada
1
T0 Interrupt Flag
T0, clk interno, sin pre-scaler
EPROM bit
R/W
Contador ascendente 8-bit de Timer 0
(01h,101h)
OPTION_REG
R/W
1Sólo
Características:
•Contador ascendente de 8-bits
•Pre-scaler desde 1:2 hasta 1:256
•Timer: entrada del reloj del sistema TCY=4*Tosc=(Fosc/4)-1
tDESBORDE=4*Tosc*(28-TMR0)*N ;Pre-scaler 1:N
•Contador: entrada externa por T0CKI, con flanco
ascendente o descendente
•Se muestrea T0CKI en Q1 y Q3. El retardo entre
TCKI y TMR0 está entre 3TOSC y 7TOSC
•Registro TMR0 de lectura/escritura.
•Se actualiza en Q4 del siguiente TCY
•La escritura de TMR0 produce un retardo de 2TCY
en el contador, y el pre-scaler borrado (si PSA=0)
•Petición de Interrupción (T0IF=1) al desbordar TMR0
•Es desactivado en modo SLEEP, por lo que no puede
despertar al µC
R/W
TMR0
T0IF
T0 no ha desbordado2
0
T0 ha desbordado
1
2Debe
limpiarse por software
bcf INTCON,T0IE
bsf STATUS,RP0
movlw 0x07
movwf OPTION_REG
bcf STATUS,RP0
...
movlw 0xFC
movwf TMR0
bcf INTCON,T0IF
t0
btfss INTCON,T0IF
goto t0
T0, clk externo, flanco 1->0, sin pre-scaler
;T0IE=0
;Seleccion banco1,3
;Timer, Pre-scaler 1:256
;Seleccion banco0,2
;TMR0=-4
;T0IF=0
;(4MHz)Tiempo 4*256*1us=1.024ms
Interrupción por T0, clk interno, sin pre-scaler
INTT0
org 4
goto INTT0
...
bsf STATUS,RP0
movlw 0x07
movwf OPTION_REG
bcf STATUS,RP0
movlw 0x38
movwf TMR0
movlw 0xA0
movwf INTCON
...
...
movlw 0x38
movwf TMR0
bcf INTCON,T0IF
...
...
retfie
;Seleccion banco1
;Timer, Pre-scaler 1:256
;Seleccion banco0
;TMR0=-200->(4MHz)200*256*1us=51.2ms
;GIE=T0IE=1,T0IF=0
;guarda w y status
;TMR0=-200->(4MHz)200*256*1us=51.2ms
;realiza algun proceso
;restaura w y status
TIMER1 (T1)
Características:
•Contador ascendente 16-bits TMR1={TMR1H, TMR1L}
•Pre-scaler desde 1:1 hasta 1:8. Es limpiado en
instrucciones de escritura a TMR1H, TMR1L
•Petición de Interrupción (TMR1IF=1) al desbordar TMR1
•Habilitación/deshabilitación con TMR1ON del T1CON
•Tres modos de funcionamiento, según TMR1CS y
T1SYNC del T1CON
•Timer síncrono (TMR1CS=0): entrada del reloj del
sistema TCY=4*Tosc=(Fosc/4)-1
tDESBORDE=4*Tosc*(216-TMR1)*N ;Pre-scaler 1:N
•Contador síncrono (TMR1CS=1, T1SYNC=0): flanco
ascendente en entrada externa por T1CKI:
•La entrada T1CKI debe estar a nivel alto o bajo al
menos durante 2TOSC*N (periodo mínimo 4TOSC*N)
•Contador asíncrono (TMR1CS=1, T1SYNC=1) por flanco
ascendente en T1CKI
•Oscilador de cristal externo (T1OSCEN=1), usando
T1OSCI, T1OSCO
(0Eh)
R/W
R/W
R/W
R/W
R/W
R/W
R/W
R/W
R/W
R/W
R/W
R/W
R/W
R/W
Byte bajo del contador ascendente 16-bit
T1CON
U
U
-
-
(10h)
T1 On/off
R/W
R/W
R/W
R/W
R/W
R/W
T1CKPS1 T1CKPS0 T1OSCEN T1SYNC TMR1CS TMR1ON
T1 Clock Source
TMR1ON
TMR1CS
0
Interna con Fosc/4
0
No para (On) el T1
1
Externa en T1CKI
1
T1 SYNChronous
T1SYNC1
Contador síncrono
0
Contador asíncrono
1
T1 Oscillator Enable
T1OSCEN
T1 Clock Pre-scaler
T1CPKPS1 T1CPKPS0
1:1
0
0
1:2
0
1
1:4
1
0
1:8
1
1
R/W
INTCON
R/W
GIE
(0Bh,8Bh,10Bh,18Bh)
Deshabilitado
0
Habilitado
1
R/W
R/W
R/W
R/W
R/W
1TMR1CS=1
Para (Off) el T1
•Parar el T1 (TMR1ON=0) durante la lectura/escritura
PEripherical Interrupt Enable
PEIE
Interrupciones deshabilitadas
0
Int. periféricos deshabilitadas
0
Interrupciones habilitadas
1
Int. periféricos habilitadas
1
*PIC6F87X. La posición de los
bits dependen del dispositivo
GIE
(8Ch)
PIR1*
(0Ch)
R/W
R/W
R/W
R/W
PSPIE
ADIE
RCIE
TXIE
R/W
R/W
R/W
R/W
PSPIF
ADIF
RCIF
TXIF
T1 Interrupt Enable
bcf T1CON,TMR1ON
movf TMR1H,W
movwf TMPH
movf TMR1L,W
movwf TMPL
bsf T1CON,TMR1ON
R/W
PEIE T0IE INTE RBIE T0IF INTF RBIF
Global Interrupt Enable
PIE1*
•En modo síncrono puede ser usado por los periféricos
CCP (modo captura o comparación)
•El T1-síncrono durante SLEEP desactiva TMR1H,TMR1L
•El T1-asíncrono durante SLEEP sigue activo TMR1H,
TMR1L por lo que puede ser usado:
•Despertar el µC al desbordar (TMR1IF=1)
•Reloj de tiempo real (RTC) con cristal de 32’768kHz
•La lectura/escritura de TMR1H, TMR1L se realiza con
dos accesos secuenciales a los registros, pudiendose
ocasionar problemas durante los accesos en que
TMR1H es incrementado. Soluciones:
Byte alto del contador ascendente 16-bit
TMR1IE
R/W
R/W
R/W
R/W
R/W
R/W
SSPIF CCP1IF TMR2IF TMR1IF
T1 Interrupt Flag
;TMPL=TMR1L
;T1 On
clrf TRM1L
movlw 0x4F
movwf TMR1H
movlw 0xFF
movwf TMR1L
R/W
SSPIE CCP1IE TMR2IE TMR1IE
R/W
;T1 Off
;TMPH=TMR1H
bcf T1CON,TMR1ON
movlw 0x4F
movwf TMR1H
movlw 0xFF
movwf TMR1L
bsf T1CON,TMR1ON
•Para la escritura de T1 sin parar:
TMR1IF
Int. por T1 deshabilitada
0
T1 no interrumpe2
0
Int. por T1 habilitada
1
T1 interrumpe
1
limpiadarse por software
TMR1L
R/W
No tiene efecto si TMR1CS=0
(0Fh)
R/W
2Debe
TMR1H
;Evita cambio del TMR1H
;TMR1H=0x4F
;TMR1L=0xFF
•Para la lectura de T1 sin parar:
lee_t1
movf TMR1H,W
movwf TMPH
movf TMR1L,W
movwf TMPL
movf TMR1H,W
subwf TMPH,W
btfss STATUS,Z
goto lee_t1
;TMPH=TMR1H
;TMPL=TMR1L
;W=TMR1H
;Si TMR1H!=TMRPH
;repite lectura
;T1 Off
;TMR1H=0x4F
;TMR1L=0xFF
;T1 On
TMR2
TIMER2 (T2)
R/W
PR2
R/W
R/W
R/W
R/W
R/W
R/W
Contador ascendente 8-bit de Timer2
(11h)
Características:
•Contador ascendente de 8-bits en TMR2. Se resetea
cuando EQ=1(TMR2=PR2). TMR2 cuenta desde 0 a PR2
•Pre-scaler 1:2, 1:4, 1:16 y post-scaler 1:1 a 1:16
Limpiados en instrucciones de escritura a TMR2 y
T2CON, o por RESET
•Habilitación/deshabilitación con TMR2ON del T2CON
•Petición de Interrupción (TMR2IF=1) cuando PR2=TMR2
(EQ=1) Npost veces (1:Npost del post-scaler)
tTMR2IF=1=4*Tosc*(PR2+1)*Npre*Npost
;Pre-scaler 1:Npre Post-scaler 1:Npost
•Durante modo SLEEP no se incrementa TMR2
•Puede ser usado por los periféricos CCP (modo PWM)
y SSP
R/W
R/W
(12h)
R/W
R/W
R/W
R/W
R/W
R/W
Registro de periodo 8-bit de Timer2
(92h)
T2CON
R/W
U
R/W
-
R/W
R/W
R/W
R/W
R/W
R/W
TOUTPS3 TOUTPS2 TOUTPS1 TOUTPS0 TMR2ON T2CKPS1 T2CKPS0
T2 On/off
T2 Clock Pre-scaler
TMR2ON
T2CKPS1 T2CKPS0
Para (Off) el T2
0
1:1
0
0
No para (On) el T2
1
1:4
0
1
1:16
1
X
T2 Output Post-scaler
TOUTPS3 TOUTPS2 TOUTPS1 TOUTPS0
1:1
0
0
0
0
1:2
0
0
0
1
1:3
0
0
1
0
1:16
1
1
1
1
R/W
INTCON
R/W
GIE
(0Bh,8Bh,10Bh,18Bh)
R/W
R/W
R/W
R/W
R/W
R/W
PEIE T0IE INTE RBIE T0IF INTF RBIF
GIE
PEripherical Interrupt Enable
PEIE
Interrupciones deshabilitadas
0
Int. periféricos deshabilitadas
0
Interrupciones habilitadas
1
Int. periféricos habilitadas
1
*PIC6F87X. La posición de los
bits dependen del dispositivo
Global Interrupt Enable
PIE1*
(8Ch)
PIR1*
(0Ch)
R/W
R/W
R/W
R/W
PSPIE
ADIE
RCIE
TXIE
R/W
R/W
R/W
R/W
PSPIF
ADIF
RCIF
TXIF
T2 Interrupt Enable
R/W
R/W
R/W
R/W
SSPIE CCP1IE TMR2IE TMR1IE
R/W
R/W
R/W
R/W
SSPIF CCP1IF TMR2IF TMR1IF
TMR2IE
T2 Interrupt Flag
TMR2IF
Int. por T2 deshabilitada
0
T2 no interrumpe
0
Int. por T2 habilitada
1
T2 interrumpe
1
•TMR2 cuenta desde 0 a PR2 cuentas (1+PR2 cuentas),
sin necesidad de operaciones de escritura a TMR2, por
lo que permite mayor precisión de tiempos que T0 o T1
(sin usar CCP)
CNT10
EQU 0X20
;GPR en banco0
org 0
goto INIT
org 4
goto INTT2
INIT
org 0x10
...
banksel T2CON
movlw H'C0'
movwf INTCON
movlw H'00'
movwf PIR1
movlw B'00100001'
movwf T2CON
bsf STATUS,RP0
movlw H'02'
movwf PIE1
movlw D'99'
movwf PR2
bcf STATUS,RP0
movlw D'10'
movwf CNT10
bsf T2CON,TMR2ON
...
INTT2
i2
...
banksel CNT10
decfsz CNT10,F
goto i2
movlw D'10'
movwf CNT10
...
...
bcf PIR1,TMR2IF
...
retfie
;Banco0
;GIE=PEIE=1, T0IE=INTE=RBIE=0
;TMR2IF=0, resto=0 (16F87X)
;Postscaler 1:5, T2 OFF,Prescaler=1:4
;Banco1
;TRM2IE=1, resto=0 (16F87X)
;0<=TMR2<=PR2 (TMR2 cuenta 100)
;Banco0
;CNT10=10
;T2 ON
;(4MHz)1us*100*4*5=2ms ‘exactos’
;Salva w,status
;Banco0
;Si (--CNT10!=0)
;
finaliza
;CNT10=10
;Procesado cada 2ms*10=20ms(50Hz) ‘exactos’
;TMR2IF=0 (16F87X)
;Recupera w,status
Descargar