Bonjour,

je souhaite décoder un signal ppm cyclique de 20ms avec des états hauts de 1à2ms. Il y a un état bas de mini 3ms pour la synchro. J'utilise le changement detat sur une pin pour partir en interrupt. dans l'interruption je mesure la longueur des etats hauts et aussi les etats bas comme ça je remet le compteur voie à 1 si letat bas dépasse 3ms.

voici le programme d'interrupt mais cela ne fonctionne pas... qu'en pensez vous.???

#pragma origin 4

interrupt isr(void)
{
int_save_registers;

#pragma updateBank 0 //

if (RX) {
// etat haut

TMR1ON=0;//desactive tmr1
cmpt.low8=TMR1L;//met valeur tmr1 dans cmpt
cmpt.high8=TMR1H;
if ( cmpt>3000 )
{
voie=1;
cmpt=0;
}
if (cmpt<500)
{
voie=voie+1;
cmpt=0;
}

TMR1L = 0; //
TMR1H = 0;
TMR1ON = 1; //





}
else {


// etat bas
TMR1ON = 0; // TMR1=0

if ( voie==1)
{
voie1.low8=TMR1L;
voie1.high8=TMR1H;
}
if ( voie==2)
{
voie2.low8=TMR1L;
voie2.high8=TMR1H;
}
if ( voie==3)
{
voie3.low8=TMR1L;
voie3.high8=TMR1H;
}
if ( voie==4)
{
voie4.low8=TMR1L;
voie4.high8=TMR1H;
}
// tc_pulse.low8 = TMR1L;
// tc_pulse.high8 = TMR1H;
cmpt=0;
TMR1L = 0; //
TMR1H = 0;
TMR1ON=1;
}

RAIF = 0; //

int_restore_registers;
}