Bonjour,
Je réalise une petite appli pour un ami mais j'ai un problème sur la gestion des interruptions.
L'appli est un compteur qui s'incrémente à chaque fois que RB0 passe à 0. Cette valeur du compteur est écrite en eeprom et quand (compteur = consigne ) --> "RB7 = 1".
Tout fonctionne correctement sauf que régulièrement les données EEprom sont vérolées après un reset ou un ON/OFF. J'ai essayé plusieurs configuration de INTCON mais rien n'y fait.
Je pense que c'est lié à la gestion des interruptions car seul la valeur eeprom du compteur est affectée et jamais la consigne. Quelqu'un peut-il m'aider à bien configurer le registre du PIC ?
Code :
void main() {
CMCON |= 7;
TRISA4_bit = 1;
TRISA6_bit = 1;
TRISA7_bit = 1;
TRISB = 0x01; // Rbo en entrée, Rb1 à Rb7 en sortie
PORTB = 0;
Lcd_Init();
Lcd_Cmd(_LCD_CLEAR); // Clear display
Lcd_Cmd(_LCD_CURSOR_OFF); // Cursor off
Lcd_Out(1,1,message1);
delay_ms(3000); // Delay 3s
LIRE_E2P_CONSIGNE();
LIRE_E2P_COMPTEUR();
Lcd_cmd(_LCD_Clear);
Lcd_Out(1,1,message5); // Write message1 in 1st row
INTCON = 0x90; <----- Problème ??
do {
AFFICHE_CONSIGNE();
RAFRAICHIR_COMPTEUR();
} while(1);
}
void interrupt(){
if (INTCON.INTF == 1)
VAL_COMPTEUR = VAL_COMPTEUR +1;
INTCON = 0xB0;
INTCON.INTE = 1;
}
Merci d'avance pour votre aide
-----