Bonjour à tous,
Voilà j'ai monté une carte très simple, avec un PIC18F45K20, quartz, quelques Leds, ...
N'ayant jamais mis en œuvre les interruptions avec C18 (je travaille avec MPLABV8.92 et C18), je souhaitais savoir ce qui ne fonctionnait pas dans mon code.
Je vous explique rapidement, c'est très simple.
J'ai un bouton poussoir relié sur RB0 (=+5V quand bouton appuyé), et une led en sortie sur RA0.(led + résistance à la masse).
Le but est d'allumer la led lors d'un appui sur bouton poussoir.
Le soucis ne vient pas de l'icd2 (j'ai réussi à faire clignoter la led sur RA0). Les bits de config n'apparaissent pas mais sont (normalement ) bien réglés.
Voici le bout de code.
Merci de vos précisionsCode:#include <p18f45k20.h> void button(void); #pragma code vecteur_d_IT=0x8 // vecteur d'IT void vecteur_d_IT(void) { _asm goto button _endasm } #pragma code #pragma interrupt button void button(void) { if((PORTBbits.RB0)==1) //A la place de cette instruction, je voulais mettre "if (INTCONbits.INT0IF==1)" { PORTAbits.RA0 = 1; INTCONbits.INT0IF=0; } } void main() { INTCONbits.GIE=1; //autoriser interruption INTCONbits.INT0IE=1; //autoriser interruption externe sur RB0 INTCONbits.RBIE=1; RCONbits.IPEN=0; //interrupt sans priorité INTCONbits.PEIE=1; INTCON2bits.INTEDG0=1; // interrupt front montant TRISBbits.TRISB0 = 1; TRISAbits.RA0 = 0; PORTAbits.RA0 = 0; while(1) { } }
-----