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 ---
Problème de séquence I2C entre deux PIC
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
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
Problème de séquence I2C entre deux PIC
Problème de séquence I2C entre deux PIC
Problème de séquence I2C entre deux PIC
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.
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
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é.
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
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.
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
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.
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
Retourner vers « Le forum Fantas-PIC »
Qui est en ligne
Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 93 invités