queridos: Tenemos que generar 1 segundo con el software atmega32A y mikrobasic. así que he configurado el temporizador 0 y avr de esta manera:
const _THRESHOLD = 250
TCCR0=0x04
TCNT0=0x06
OCR0=0x00
' // Timer(s)/Counter(s) Interrupt(s) initialization
TIMSK=0x01
y función de desbordamiento:
sub procedure Timer0Overflow_ISR iv IVT_ADDR_TIMER0_OVF
' // Reinitialize Timer 0 value
TCNT0=0x06
if (counter1 >= _THRESHOLD) then
counter1 = 0
así que con TCCR0=0x04
NOSOTROS UTILIZAMOS 256 presqale con reloj externo 16MHz que:
16MHz/256=62500
que significa que el temporizador 0 reloj es 1/62500=0.000016
Segundo
que TCNT0=0x06
timer 0 sobre el reloj de flujo es 256-6=250
que toman 0.000016*250=0.004
Second para un desbordamiento del temporizador 0 con TCNT0=0x06
.
así que para crear 1 segundo, fue necesario contar el desbordamiento del temporizador0 para 1/0.004=250
turno del desbordamiento del temporizador0. Los códigos anteriores están escritos basados en este cálculo.
Entonces, cuando programamos estos códigos en atmega32A, durante 5 minutos el reloj se retrasa durante 5 segundos.
Cambios basados en nuevo comentario.
He cambiado TCNT0 = 0x07 para 249 reloj de timer0 y 1 reloj para Sobrecarga ti, valores er. pero todavía contrarrestado por 5 segundos a 5 minutos.
ayúdame a corregir mis códigos.
Muchas gracias.