Bonjour à tous,

Mon projet consiste en une communication I2c entre un master et 6 Slaves ( Master: PIC 16F876 , 6 slaves:5 PIC16f876 et un RTC DS1307) : le Master récupère la date et l'heure réelle de RTC puis il les communiquent aux slaves via I2C, ceux dernière font des calcul trigonométrique puis renvoient les valeurs calculées au master et rentrent tout de suite (les 5 slaves) dans des boucles infinies d'affichage des valeurs calculées sur des afficheurs 7 segments. Le master dès qu'il récupère la date et l'heure de RTC rentre aussi dans une boucle infinie d'affichage de l'heure réelle sur Afficheurs 7 Segments.

la communication entre le master et les slaves PIC ( mode écriture Master --> slave) se fait par interruption Timer0 du Master chaque 20 secondes, la réception des données par le slave se fait par interruption INT_SSP (Compilateur PIC C).

Mon problème est le suivant :

la communication en mode écriture et lecture avec le RTC est parfaite, par contre avec les 5 slaves : si j'envoi les données (Master --> slave) dès le début de programme càd sans l'interruption Timer0 la communication passe très bien et je vois le bit Ack généré par le slave ( ISIS 7.5 : I2C Debugger) par contre si j'envoi les données par interruption Timer0, il y a un Nack ( pas d'acquitement) généré par le slave. est ce que l'envoi des données par interruption sont non accepté par le slave ou bien c'est la boucle infinie d'affichage du slave qui est tellement rapide ( multiplexage sur 4 digits de l'afficheur) qui bloque la bonne réception, par ce que aussi, lorsque je supprime cette boucle du programme du slave je vois un acquitement par le slave.

Merci et bonne journée à Tous.