Duda sobre tiempo del TMR0

es decir que segun la configuracion que esta en el programa que puse en las fotos de arriba

PS0 PS1 PS2 : 111
PSA: 1 ;preescaler del WDT

con estos bits me voy a la tabla y tengo que el preescaler es de 128

TOSE: 1 no me interesa
TOCS: 1 el timer0 se incrementa con cada instruccion de ciclo de programa
INTDG: 1 para interrupciones externas especifico el tipo de flanco para la int
RBPU: 1 no se para que es esto..

saco mi formula Int = 4 * (1/Fosc)*(256 - Valor TMR0)*Preescaler y meto valores asumiendo que el tmr0 lo inicio con 190 el resultado me da un valor de 8,5 ms teoricamente. y se supone que en la simulacion del proteus cada 128 instrucciones de ciclo deberia incrementarse en 1 el tmr0 ; bajo la configuracion de arriba todo esto es correcto ?
 
PS0 PS1 PS2 : 111
PSA: 1 ;preescaler del WDT

con estos bits me voy a la tabla y tengo que el preescaler es de 128

no, con eso se queda asignado el preescaler al modulo del WDT y el tmr0 se queda con un prescaler segun yo de 1:2

TOSE: 1 no me interesa
TOCS: 1 el timer0 se incrementa con cada instruccion de ciclo de programa
INTDG: 1 para interrupciones externas especifico el tipo de flanco para la int
RBPU: 1 no se para que es esto..

TOSE solo interesa si TOSC es 1, y TOSC en 1 no se incrementa cada instruccion(ciclo), se incrementa cuando el puerto TOCKL pasa de un flanco a otro, cuando incrementa cada instruccion (ciclo) es con TOSC=0.

RBPU activa las resistencias pullups en el puerto B
 
Última edición:
Hola.
Probando que cuente por cada ciclo de instrucción, una forma de probar el funcionamiento del TMR0 es usando un reloj externo que se puede controlar...
Un ejemplo en ASM.

Código:
   LIST P=16F628A
    INCLUDE	<P16F628A.INC>
    ERRORLEVEL	0,	-302

    __CONFIG _FOSC_XT & _WDTE_OFF & _PWRTE_ON & _MCLRE_ON & _BOREN_OFF & _LVP_OFF & _CPD_OFF & _CP_OFF

    CBLOCK  0x20

    ENDC

    org     0x00
    goto    Configura
    org     0x05

Configura:
    banksel TRISA
    movlw   b'00010000' ; RA4 entrada
    movwf   TRISA
    clrf    TRISB
    movlw   b'10101000' ; Pulsos externos
    movwf   OPTION_REG
    banksel PORTA
    clrf    PORTA
    clrf    PORTB
    clrf    TMR0
Loop:
    btfsc   INTCON,2    ; Consulta por poleo, desborde
    goto    Desborde
    goto    Loop

Desborde:
    bcf     INTCON,2
    movlw   0x01
    xorwf   PORTB,F
    goto    Loop
    END

Perfecto no es pero en cierto modo se prueba que el Timer0 puede contar por cada ciclo de instrucción, si usar el prescaler.
La base de tiempos esta en 10ms que seria 10ms x 256 = 2.56s... es decir que el TMR0 se ha incrementado por cada ciclo del reloj, para este caso externo como se ve en la imagen...
 

Adjuntos

  • prbTMR0.jpg
    prbTMR0.jpg
    86.6 KB · Visitas: 6
creo que si estaba en un error:

*If PSA bit is SET (1), Prescaler is assigned to Watchdog Timer and
PS2:pS0 have no effect (TMR0 RATE = 1:1)

si se asigna el preescaler al WDT el timer0 se queda con un preescaler de 1:1, y se incrementa cada ciclo...

bueno eso no lo sabia XD

pd.el sexo nubla la razon :LOL:
 
Última edición:
Atrás
Arriba