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 ---
Forum général sur le langage C !

Modérateur : Jérémy

Fonctions I2C
Stefox
Débutant
Débutant
Messages : 63
Enregistré en : juillet 2025

#41 Message par Stefox » jeu. 24 juil. 2025 17:01

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 :-D :wink:

Fonctions I2C
Stefox
Débutant
Débutant
Messages : 63
Enregistré en : juillet 2025

#42 Message par Stefox » jeu. 24 juil. 2025 17:13

Si j'ai bien tout fait, il m'arrête à cette ligne, j'ai recommencé tout le debug pour voir et il revient sur cette ligne, faire un "step over" ne veux plus dès que j'arrive a cette 33eme ligne

azqs.jpg
Vous n’avez pas les permissions nécessaires pour voir les fichiers joints à ce message.

Fonctions I2C
satinas
Expert
Expert
Messages : 1487
Enregistré en : novembre 2015

#43 Message par satinas » jeu. 24 juil. 2025 17:26

la fonction idle est-elle vraiment utile ?

Fonctions I2C
Stefox
Débutant
Débutant
Messages : 63
Enregistré en : juillet 2025

#44 Message par Stefox » jeu. 24 juil. 2025 17:28

Pas la tout de suite dans l'immédiat, je n'ai qu'un esclave.. Mais je vais en avoir besoin plus tard quand il y aura un second esclave

Fonctions I2C
satinas
Expert
Expert
Messages : 1487
Enregistré en : novembre 2015

#45 Message par satinas » jeu. 24 juil. 2025 17:35

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.

Fonctions I2C
Stefox
Débutant
Débutant
Messages : 63
Enregistré en : juillet 2025

#46 Message par Stefox » jeu. 24 juil. 2025 17:58

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

aze.jpg


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
satinas
Expert
Expert
Messages : 1487
Enregistré en : novembre 2015

#47 Message par satinas » jeu. 24 juil. 2025 18:06

Les flags ne sont que des indicateurs, aucun effet à part démarrer des routines d'interruptions autorisées.
Le lcd affiche quoi avant la boucle ?
Essaie de faire un stop/start au lieu du restart

Fonctions I2C
Stefox
Débutant
Débutant
Messages : 63
Enregistré en : juillet 2025

#48 Message par Stefox » jeu. 24 juil. 2025 18:12

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
aze.jpg
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
satinas
Expert
Expert
Messages : 1487
Enregistré en : novembre 2015

#49 Message par satinas » jeu. 24 juil. 2025 18:14

Ah bon le lcd travaille en différé, c'est une blague belge ?

Fonctions I2C
Stefox
Débutant
Débutant
Messages : 63
Enregistré en : juillet 2025

#50 Message par Stefox » jeu. 24 juil. 2025 18:15

Comment ça ? je n'ai pas compris :?


Retourner vers « Langage C »

Qui est en ligne

Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 3 invités