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 ---
Idée, bugs, propositions .......
Problème de séquence I2C entre deux PIC
satinas
Confirmé
Confirmé
Messages : 518
Enregistré en : novembre 2015

#71 Message par satinas » mar. 5 mai 2020 10:45 lien vers la Data-Sheet : Cliquez ici

Il faut s'entendre sur les mots. On teste que rien ne se passe sur le bus, une fois que le maître en a pris possession. Il y a 6 bits à tester.
Tu les testes un par un, beaucoup de softs s'embêtent pas, et testent les 6 à la fois.
Ils font une fonction, du genre

Wait_Idle
while (SSPSTAT & 0x04) or (SSPCON2 & 0x1F) : wend
return

viewtopic.php?p=10506#p10506

Problème de séquence I2C entre deux PIC
Serge
Amateur
Amateur
Messages : 132
Enregistré en : septembre 2018

#72 Message par Serge » mar. 5 mai 2020 12:12 lien vers la Data-Sheet : Cliquez ici

Attend, j'ai matière à cogiter dans ce que tu viens de me dire.....
J'essaye d'en faire le tour.....

Problème de séquence I2C entre deux PIC
Serge
Amateur
Amateur
Messages : 132
Enregistré en : septembre 2018

#73 Message par Serge » mar. 5 mai 2020 13:23 lien vers la Data-Sheet : Cliquez ici

la fonction:
"while (SSPSTAT & $04) or (SSPCON2 & $1F) : wend"
fonctionne très bien sur mon soft.

Problème de séquence I2C entre deux PIC
Serge
Amateur
Amateur
Messages : 132
Enregistré en : septembre 2018

#74 Message par Serge » mar. 5 mai 2020 13:28 lien vers la Data-Sheet : Cliquez ici

tu dis:
On teste que rien ne se passe sur le bus, une fois que le maître en a pris possession


C'est nouveau dans ma réflexion.
Que peux-t-on bien avoir besoin de tester dans une séquence "Ouverte" que le "Maître" ne maitrise lui même puisqu'il en a pris le contrôle ???

C'est ça qui me perturbe.

Problème de séquence I2C entre deux PIC
satinas
Confirmé
Confirmé
Messages : 518
Enregistré en : novembre 2015

#75 Message par satinas » mar. 5 mai 2020 14:10 lien vers la Data-Sheet : Cliquez ici

Personne ne maîtrise rien sur le bus I2C, n'importe qui peut mettre une ligne à 0 et tout s'arrête.
Il y a des test de bits en trop, mais ou est le problème, qui peut le plus peut le moins ?
Tu fais un start, il y a un bit à tester, idem pour stop, idem pour l'envoi d'acknoledge, ...
Je me suis fait avoir car je faisais le stop trop vite après l'envoi d'un octet, il manquait l'appel à ce sous-programme, pour aller au delà du 9ème bit.

Problème de séquence I2C entre deux PIC
Serge
Amateur
Amateur
Messages : 132
Enregistré en : septembre 2018

#76 Message par Serge » mar. 5 mai 2020 14:23 lien vers la Data-Sheet : Cliquez ici

Donc, si on met un " Gosub Wait_Idle" à la place des "Gosub recep_acknowledge" c'est pareil ?

Wait_Idle:
while (SSPSTAT & $04) or (SSPCON2 & $1F) : wend
return

recep_acknowledge:
do while SSPSTAT.2 : loop ' Attente fin transmission
do while SSPCON2.6 : loop ' Attente de l'acknowledge
return

d’ailleurs, ça fonctionne, j'ai testé.

Problème de séquence I2C entre deux PIC
satinas
Confirmé
Confirmé
Messages : 518
Enregistré en : novembre 2015

#77 Message par satinas » mar. 5 mai 2020 14:43 lien vers la Data-Sheet : Cliquez ici

Ben cela ne devrait pas :)
Dans les 6 bits, il y ACKEN concernant l'envoi de l'acknowledge par le maître.
Le bit SSPCON2.6 c'est ACKSTAT et il n'y est pas.
Est ce que tu comprends ce que fait la ligne, je ne connais pas ton niveau en programmation ?
while (SSPSTAT & $04) or (SSPCON2 & $1F) : wend

Pourquoi tu te poses toutes ces questions alors que tu avais tout il y a 1an 1/2 ici
viewtopic.php?p=10506#p10506
tu noteras que je fais l'inverse, je ne teste pas le bit après qu'il soit levé, je sors du sous-programme, et c'est à l'entrée du sou-programme suivant que j'exécute Wait_Idle alias I2cWait.
Modifié en dernier par satinas le mar. 5 mai 2020 14:50, modifié 1 fois.

Problème de séquence I2C entre deux PIC
Serge
Amateur
Amateur
Messages : 132
Enregistré en : septembre 2018

#78 Message par Serge » mar. 5 mai 2020 14:49 lien vers la Data-Sheet : Cliquez ici

ba alors pourquoi ça fonctionne ?

Je perd mon latin (que je n'ai pas)

Ca fait longtemps que je n'ai pas repris, j'oublie vite.
Et puis il y a un an j'ai fait de l’à-peu-près, là je ne veux pas que ça plante.
Modifié en dernier par Serge le mar. 5 mai 2020 15:02, modifié 2 fois.

Problème de séquence I2C entre deux PIC
satinas
Confirmé
Confirmé
Messages : 518
Enregistré en : novembre 2015

#79 Message par satinas » mar. 5 mai 2020 14:55 lien vers la Data-Sheet : Cliquez ici

while (SSPSTAT & %00000100) or (SSPCON2 & %00011111) : wend

Problème de séquence I2C entre deux PIC
Serge
Amateur
Amateur
Messages : 132
Enregistré en : septembre 2018

#80 Message par Serge » mar. 5 mai 2020 15:03 lien vers la Data-Sheet : Cliquez ici

oui, Ok, là je comprend. c'est la même fonction


Retourner vers « Le forum Fantas-PIC »

Qui est en ligne

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