Bonjour
à l'aide de la note d'application de Microchip concernant l'utilsation des EEPROM I2C, j'ai écrit ce flow chart. A partir de celui-ci j'ai rédigé les fonctions suivantes :
Le problème est que le système reste coincé dans la boucle de la fonction stop. Le flag bSSPIF reste à 0.Code:void I2Cjms_Initialise() { INTCON|=(1<<GIE | 1<<PEIE); //Enable global interrupt and Perique interrupt I2Cjms_Stop(); SSPSTAT = 0; SSPSTAT |= (1 << SMP); // disable the Slew Rate Controle : 100 kHz SSPADD = 0x24; //100 kHz SSPCON1 = 0x28; SSPCON2 = 0; TRISC |= (1 << SCL); //RC3 as input TRISC |= (1 << SDA); //RC4 as input CompteBoucle = 0; SSPIF_flag = 0; } void I2Cjms_Stop() { bSSPIF = 0; Start_Flag = 0; //SSPCON2 |= (1<<PEN); // send a stop while(SSPIF_flag != 1) { Start_Flag = 0; } SSPIF_flag = 0; Start_Flag = -1; SSPCON1 &=~ (1 << SSPEN); // disable the SSP module }
D'où provient mon problème ?
Merci pour vos commentaires,
Jean-Marie
NB : le PIC est 18F252
-----