Soy nuevo con la programación de Pic. Estoy tratando de configurar Timer0 para realizar un retraso de 5s. Tuve un poco de éxito, sin embargo, la primera interrupción siempre tomó más tiempo (aproximadamente 8 segundos), después de eso funciona bien. ¿Alguien podría darme alguna explicación para eso? Gracias.
Mi código para inicializar el temporizador y usarlo para parpadear el LED por cada 5s
void resetTimer0(void)
{
TMR0H=0x67;
TMR0L=0x69;
INTCONbits.TMR0IF=FALSE;
}
void initTimer0(void)
{
resetTimer0();
T0CON=0b10010110;//1------- timer0 on
//-0------ 16 control bits
//--0----- internal Tcy
//---1---- default
//----0--- pre-scale
//-----110 1:128 for 5s desired time
}
---------- i didnot include some functions such as initSystem or initUart here--
void main(void)
{
initSystem();
initUart();
initTimer0();
while(1)
{
Delay10KTCYx(5); // Wait 50 ms if OSC is set to 4MHz
while(INTCONbits.TMR0IF)
{
LATBbits.LATB3=!PORTB;
resetTimer0();
}
}
}