salut, je suis entrain de réaliser un analyseur des signaux PWM. j'utilise CCP1 (16f877a) pour capter le deux fronts
j'ai fais le programme mais quand je lance la simulation sur isis il me donne des nombres qui se répète même si je change TON et TOFF ?? ...
voici mon code:
Code:void init() { TRISC=0x0F ; CCP1IE_bit=1 ; //activer module CCP CCP1CON=0x04 ; // front montant TMR1IF_bit= 0 ; T1CON= 0x38 ; //Prescaler 1:8 TMR1(max) INTCON=0xC0 ; // autorise lé interruptions masquée TMR1IE_bit= 1 ; void interrupt(){ if(CCP1IF_bit) { CCP1IF_bit=0 ; CCP1CON=0 ; //stop CCP1 if(CCP1M0_bit==1){ //si front montant valu = CCPR1L*(t1+1) | CCPR1H*(t1+1) << 8; //copié la valeurs du timer1 tad[i]=valu; // enregistrer la valeur sur un tableau i++ ; CCP1M0_bit=0 ; // changé le front de lecture (descendant) } else { // si front descendant vald = CCPR1L*(t1+1) | CCPR1H*(t1+1) << 8;// copié la valeurs du timer1 tad[j]=vald; // enregistrer la valeur sur un autre tableau j++ ; CCP1M0_bit=1 ; // changé le front de lecture (montant) } TMR1L=0; // initialiser TMR1 à chaque fin lecture TMR1H=0; t=0 ; // RAZ compteur de dépassement TMR1 CCP1CON=0x04 ; // autorisé mode capture } if(TMR1IF_bit) { t++; // compteur depassement++ TMR1IF_bit=0 ; } if(i==1&j==9){CCP1CON=0;ok=1;} // si le tableau a terminé 10 enregistrement desactiver le module CCP1 pendant l'affichage des enregistrements }
-----