Bonjour,
Dans l'optique d'un travail scolaire, je dois faire un programme qui me permette, via une interruption de commander un servo moteur.
Je suis parti d'un exemple que j'ai trouvé sur le net (ou dans une doc je ne sais plus).
L'interruption fonctionne bien, elle est appelé toutes les 40µs (PIC 18F452 / 8MHz).
Mon problème est que lorsque je lance mon programme, seul l'interruption semble est effectué et pas le programme du main (ici un while(1)).
Voici mon code :
Code:unsigned long cnt=1, servo = 38; //cnt=1 pour éviter changement d'état au début // Interrupt Handler void interrupt() { if (PIR1.TMR2IF == 1) // timer 2 interrupt flag { if(cnt == servo || cnt == 0) PORTD = ~PORTD; // Toggle PORTD cnt++; if(cnt == 25*15) //15ms cnt = 0; PIR1.TMR2IF = 0; // clears TMR2IF bit 1 TMR2IF: TMR2 to PR2 Match Interrupt Flag bit } } // code starts here... void main() { TRISD = 0x00; // PORT is all output...to show the interrupts PORTD = 0xFF; // start with all outputs low TRISB = 0xFF; // entrées PORTB = 0; TRISC = 0; PORTC = 0; TRISA = 0; // ADCON1= PORTA = 0; //Timer2 Registers Prescaler= 1 - TMR2 PostScaler = 1 - PR2 = 2 - Freq = 1000000.00 Hz - Period = 0.000001 seconds T2CON |= 0; // bits 6-3 Post scaler 1:1 thru 1:16 T2CON.TMR2ON = 1; // bit 2 turn timer2 on; T2CON.T2CKPS1 = 0; // bits 1-0 Prescaler Rate Select bits T2CON.T2CKPS0 = 0; PR2 = 2; // PR2 (Timer2 Match value) // Interrupt Registers INTCON = 0; // clear the interrpt control register INTCON.TMR0IE = 0; // bit5 TMR0 Overflow Interrupt Enable bit...0 = Disables the TMR0 interrupt PIR1.TMR2IF = 0; // clear timer1 interupt flag TMR1IF PIE1.TMR2IE = 1; // enable Timer2 interrupts INTCON.TMR0IF = 0; // bit2 clear timer 0 interrupt flag INTCON.GIE = 1; // bit7 global interrupt enable INTCON.PEIE = 1; // bit6 Peripheral Interrupt Enable bit...1 = Enables all unmasked peripheral interrupts while(1) //endless loop { int i=10; servo = 32; if(PORTB == 0b00000001) { servo = 38; } if(PORTB == 0b00000010) { servo++; } if(PORTB == 0b00000100) { servo--; } PORTC = servo; } }
-----