I2C esclave: ACKSTAT toujour egale a 0

yvoo Messages postés 3 Date d'inscription dimanche 14 mai 2006 Statut Membre Dernière intervention 27 avril 2008 - 18 avril 2008 à 11:41
uchihabadara Messages postés 1 Date d'inscription mercredi 24 juin 2009 Statut Membre Dernière intervention 3 juillet 2009 - 3 juil. 2009 à 00:24
Bonjour,
Je programme un mini reseau i2c entre 2 PIC 16f876 en langace C, et j'ai reussi a faire fonctionner le mettre(J'arrive a voir la trame sur SCL et SDA)
Mon probleme est que mon maitre ne recoit jamais d'ACK venant de l'esclave(bit ACKSTAT toujours egale a 1), et donc arete son envoi a l'addresse. Je pense aue c'est un probleme au niveau de l'esclave, car il ne renvoi pas d'ACK quelque soit l'address d'envoi(j'ai essaye toute les address), et son bit SSPIF est toujours egale a zero.
Voici ma routine de configuration de l'esclave:
TRISC = TRISC | 0x18;
SSPCON2 = 0x00;
CKE= 0; // SMBus Specific Inputs Disabled
SMP=1; //Disable the slew rate (100KHz)

SSPADD = ADRSLAVE<<1; // Affect an valid address of the slave mcu
GIE = 1; /* interrupts allowed */
PEIE = 1;
SSPIE=1;
SSPIF=0; SSPCON 0x36; // SSPEN 1
// SSPM3:SSPM0 = 0110
Si quelqu'un pourrais m'aider ca m'arangerai beaucoup.
Merci pour votre attention

1 réponse

uchihabadara Messages postés 1 Date d'inscription mercredi 24 juin 2009 Statut Membre Dernière intervention 3 juillet 2009
3 juil. 2009 à 00:24
tu peux utiliser la fonction getenv("I2C_SLAVE") que tu trouvera dans la bibliothèque #use i2c
j'espère que ça va  fonctionner.
PS: aurais-tu la gentillesse de m'envoyer votre code j'ai encore besoin de quelques détailles car j'ai aussi un projet qui se porte sur le même sujet
et merci d'avance
0
Rejoignez-nous