Bonjour,
je souhaite détecter l'interruption sur chaque front (montant et descendant) sur INT0 d'un pic 18f et lancer chaque foisun timer 0 sur front mantant et timer1 sur front descendant pour mesurer le temps ecouler mais les timers ne retournent pas des valeurs juste
voila mon code :
je sais pas si le probleme viens des tmers car sa marche pas meme si j'utilise le lancement par bit TxCONbits.TMRxONvoid interrupt_IO_Timer(void)
{
if(INTCONbits.INT0IF==1) //detection d'une intéruption sur INTO
{
if(INTCON2bits.INTEDG0 == 1)
{
T0CON &=0x08; //arret timer 0
T1CON |=0x81; //lancement timer1
duree=0;
TL0 = TMR0L;
TH0 = TMR0H;
duree = (TL0 + TH0*256); //calcule de la duréé
tabFreq[i++]= duree;
TL0=0;
TH0=0;
TMR0H=0x00; // Initialisation de Registre de timer 0
TMR0L=0x00;
INTCON2bits.INTEDG0 = 0;
INTCONbits.INT0IF = 0;
INTCONbits.GIE = 1;
}
else if(INTCON2bits.INTEDG0 == 0)
{
T0CON |= 0x88; //lancement timer0
T1CON &=0x80; //arret timer 1
duree=0;
TL1 = TMR1L;
TH1 = TMR1H;
duree = (TL1 + TH1*256); // retourne la duree
tabFreq[i++]= duree;
TMR1H=0x00; // Initialisation de Registre de timer1
TMR1L=0x00;
TL1=0;
TH1=0;
INTCON2bits.INTEDG0 = !INTCON2bits.INTEDG0;
INTCONbits.INT0IF = 0;
INTCONbits.GIE = 1;
}
}
merci
-----