Bienvenue aux nouveaux arrivants sur FantasPic !
- Pensez à lire les règles durant votre visite, il n'y en a pas beaucoup, mais encore faut-il les respecter .
- N’hésitez pas à faire des remarques et/ou suggestions sur le Forum, dans le but de l'améliorer et de rendre vos prochaines visites plus agréables.
- Vous pouvez regarder votre "panneau de l'utilisateur" afin de configurer vos préférences.
- Un passage par "l'utilisation du forum" est recommandé pour connaître les fonctionnalités du forum.
--- L’équipe FantasPic ---
- Pensez à lire les règles durant votre visite, il n'y en a pas beaucoup, mais encore faut-il les respecter .
- N’hésitez pas à faire des remarques et/ou suggestions sur le Forum, dans le but de l'améliorer et de rendre vos prochaines visites plus agréables.
- Vous pouvez regarder votre "panneau de l'utilisateur" afin de configurer vos préférences.
- Un passage par "l'utilisation du forum" est recommandé pour connaître les fonctionnalités du forum.
--- L’équipe FantasPic ---
Modérateur : Jérémy
Fonctions I2C
Oui oui, j'avais bien compris que c'était le flag IF pas la condition if ahah ^^ C'est car tu parlais du while tueur et c'est vrai que ça pourrait boucler à l'infini donc je me suis dit que tu me proposais peut être de remplacer ceux qui ne sont pas indispensable ^^
Je vois avec le debugeur mplab pour mon bug, je te tiens au jus

Je vois avec le debugeur mplab pour mon bug, je te tiens au jus
Fonctions I2C
Fonctions I2C
Fonctions I2C
Fonctions I2C
Je crois que c'est une fonction qui fait doublon avec les while, utilisée dans certaines bibliothèques plutôt anciennes. Mets la en commentaire pour le moment.
IL faudrait tracer tout ce que fait ton i2c, savoir quand cela bloque, les fonctions sont utilisées plusieurs fois. A toi de voir. Je ferais cela plutôt sur le port série avec le PC comme terminal.
IL faudrait tracer tout ce que fait ton i2c, savoir quand cela bloque, les fonctions sont utilisées plusieurs fois. A toi de voir. Je ferais cela plutôt sur le port série avec le PC comme terminal.
Fonctions I2C
Lorsque je commente la ligne d'envoi de l'adresse de l'esclave pour la lecture et ce jusqu'avant le stop, il boucle correctement, le programme ne s'arrête pas tout est bien.
Dès l'instant où je dé-commente la ligne "value = I2C2_ReadAddr(SLAVE_1_ADRESS); " dans le main (lgn 112) c'est fini il plante. Par consèquent, je dirais que ma fonction start, stop, writeAddr, Idle, writeData et restart sont bonnes.
Celle en cause, serait I2C2_ReadAddr.
J'ai donc pas fait l'appel de fonction, j'ai écrit directement la fonction dans le main pour voir mieux le code
Seulement, de cette manière (While OK s'affiche et le programme fige seulement la donc après le while)
Ce qui me reste comme code actif après est le
if(SSP2CON2bits.ACKSTAT)
value = 1;
else{
value = 2;
}
Qui n'a pas possibilitée de faire planter, donc je l'écarterais du souci
Puis il reste I2C2_Stop(); et __delay_ms(500); et la boucle est finie.
Est-ce que le fait que PIR3bits.SSP2IF soit toujours à 1 peu poser problème pour boucler ou pouvoir effectuer un stop ?
Dès l'instant où je dé-commente la ligne "value = I2C2_ReadAddr(SLAVE_1_ADRESS); " dans le main (lgn 112) c'est fini il plante. Par consèquent, je dirais que ma fonction start, stop, writeAddr, Idle, writeData et restart sont bonnes.
Celle en cause, serait I2C2_ReadAddr.
J'ai donc pas fait l'appel de fonction, j'ai écrit directement la fonction dans le main pour voir mieux le code
Seulement, de cette manière (While OK s'affiche et le programme fige seulement la donc après le while)
Ce qui me reste comme code actif après est le
if(SSP2CON2bits.ACKSTAT)
value = 1;
else{
value = 2;
}
Qui n'a pas possibilitée de faire planter, donc je l'écarterais du souci
Puis il reste I2C2_Stop(); et __delay_ms(500); et la boucle est finie.
Est-ce que le fait que PIR3bits.SSP2IF soit toujours à 1 peu poser problème pour boucler ou pouvoir effectuer un stop ?
Vous n’avez pas les permissions nécessaires pour voir les fichiers joints à ce message.
Fonctions I2C
Fonctions I2C
Slave detected
Reg detected
Data receive
While OK
(Il n'a pas le temps d'afficher "prog OK", car je ne lui ai pas mis de delai, c'était ce qu'il devait afficher si le while faisait planter ^^ )
J'ai commenté restart et fait stop, start directement, il arrive arrive a "Slave -r detect" (Je l'ai décommentée) mais ne boucle pas, il reste figé la
Reg detected
Data receive
While OK
(Il n'a pas le temps d'afficher "prog OK", car je ne lui ai pas mis de delai, c'était ce qu'il devait afficher si le while faisait planter ^^ )
J'ai commenté restart et fait stop, start directement, il arrive arrive a "Slave -r detect" (Je l'ai décommentée) mais ne boucle pas, il reste figé la
Vous n’avez pas les permissions nécessaires pour voir les fichiers joints à ce message.
Modifié en dernier par Stefox le jeu. 24 juil. 2025 18:15, modifié 1 fois.
Fonctions I2C
Qui est en ligne
Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 2 invités


