pic timer se dispara dos veces

1

Estoy programando una pic18f24k50 usando Timer0 para activar una interrupción cada 5 ms. También estoy manejando las interrupciones de USB

Aquí está el código donde inicio el temporizador:

void TMR0_Initialize(void) {
// Set TMR0 to the options selected in the User Interface
TRISCbits.RC6 = 0;
// TMR0ON enabled; T0SE Increment_hi_lo; PSA not_assigned; T0CS FOSC/4; T08BIT 8-bit; T0PS 1:2; 
T0CON = 0xD8;
//    T08BIT = 0;

// TMR0H 0; 
TMR0H = 0x00;

// TMR0L 156; 
TMR0L = 0x9C;

// Load TMR0 value to the 8-bit reload variable
timer0ReloadVal8bit = 156;

// Clear Interrupt flag before enabling the interrupt
INTCONbits.TMR0IF = 0;

// Enabling TMR0 interrupt.
INTCONbits.TMR0IE = 1;

// Start TMR0
TMR0_StartTimer();
}

Estoy manejando la interrupción aquí:

#if defined(__XC8)
void interrupt SYS_InterruptHigh(void)
{



if (INTCONbits.TMR0IE == 1 && INTCONbits.TMR0IF == 1) {

    T0CONbits.TMR0ON = 0; //Stop timer0
    // clear the TMR0 interrupt flag
    INTCONbits.TMR0IF = 0;  


//        PORTCbits.RC6 = 1;
    LATCbits.LATC6 = 1;

    LED_VerticalSyncIter();

    LATCbits.LATC6 = 0;
//        PORTCbits.RC6 = 0;



    TMR0H = 0x00;
    // TMR0L 156; 
    TMR0L = 0x9C;      
    T0CONbits.TMR0ON = 1; //Start timer0

    //TMR0_ISR();

 }


#if defined(USB_INTERRUPT)
        USBDeviceTasks();
#endif
}
#endif

Estoy usando el pin RC6 para hacer un pulso cada vez que se dispara la interrupción y estoy viendo la señal con un analizador lógico. Voy a publicar dos imágenes, la primera de ellas tengo el usb conectado:

Lainterrupciónsedisparadosvecescada5ms.DebeseralgorelacionadoconlasinterrupcionesdelUSB,yaquesidesconectoelcableUSB,noreciboestosparesdepulsos.Peronoséquéestápasandoporqueestoyrevisandoelindicadordeinterrupcióndeltemporizadoryrestableciéndolo.Porlotanto,nodeberíatomarelpulsosilainterrupciónnoprovienedeltemporizador0

AquíestálaimagendeloqueobtengosidesconectoelcableUSB:

La interrupción se dispara, pero a veces la brecha entre los pulsos es de 5 ms, a veces de 10 ms, etc ...

Me gustaría recibir los pulsos periódicamente cada X ms. ¿Qué estoy haciendo mal?

Gracias.

    
pregunta rreiv23

0 respuestas

Lea otras preguntas en las etiquetas