Hello
Ça fait un moment que j'essaye de faire fonctionner un programme utilisant le timer0 et timer2, pour but de générer un signal pour servomoteurs de modelisme. Cependant impossible de générer une interruption du timer2!! Et je ne trouve vraiment pas ce qu'il ne va pas. Voici mon programme (en partie, je passe sur les déclarations des variables et les autres fonctions! ):
je vois pas ce qui manque...Code:static void interrupt timer(void){ if(TMR2IF){ //IT ttes les 20ms RA4 = 1; TMR0 = 256 - impulsion; T0IE = 1; TMR2IF = 0; } if(T0IF){ //génération de l'impulsion de 0.8 à 2.2ms (10*80 à 220µs) countimp++; if(countimp == 10){ RA4 = 0; T0IE = 0; countimp = 0; }else{ TMR0 = 256 - impulsion; } T0IF = 0; } } void main(void){ TRISA = 0b00000010; //RA1 en entrée TRISB = 0b00000000; // Tout le Port B en sortie CMCON = 0x07; // Désactivation module comparateur PORTA = 0; // Reset ports PORTB = 0; OPTION = 0b00001000; //Osc/4, pas de prédisviseur: 1µs GIE = 1; // IT autorisées TMR0 = 106; // IT toutes les 150µs T2CON = 0b01001010; // 0b01001010 prescaler = 10 (0b1001: 10-1)), postscaler = 16(0b1x) => IT toutes les 20ms PR2 = 124; T0IE = 0; TMR2ON = 1; while(1){ if(z == 0){ addat = readCAN(); addat = (addat*3)/5+80; if(addat > 220) addat = 220; impulsion = addat; } affichage7Seg(addat); //affichage de addat sur 7seg } }
J'utilise Hi-Tech PICC comme compilateur.
Merci d'avance!
Crdlt,
Benj
Ps: après j'aurais encore des ptites questions sur le timer1 ...
-----