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
Serge
Amateur
Amateur
Messages : 163
Enregistré en : septembre 2018

#121 Message par Serge » mar. 11 août 2020 20:28 lien vers la Data-Sheet : Cliquez ici

Ok,

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

#122 Message par Serge » mar. 11 août 2020 20:44 lien vers la Data-Sheet : Cliquez ici

Alors là, c'est toujours l'énigme pour moi....

J'ai bloqué les interruptions du timer TMR0.

J'ai remis CKP en sortie d'interruption de l'esclave.

J'ai fait une boucle comme la tienne tous les 10 ms.

ET MON OSCILLO ME DONNE DES SEQUENCES TOUTES LES 1/2 SECONDES ENVIRON ?????

Mais c'est synchro.

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

#123 Message par satinas » mar. 11 août 2020 20:48 lien vers la Data-Sheet : Cliquez ici

Il faut peut être mettre CKP à 1 derrière chaque octet reçu, vouloir tout faire dans une même interruption, c'est bien joli, mais c'est un peu sportif. Je regarderai cela demain.
Qu'est ce que tu appelles synchro ? une séquence doit partir toutes les 10ms, donc ça marche pas !

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

#124 Message par Serge » mar. 11 août 2020 20:57 lien vers la Data-Sheet : Cliquez ici

Non, ça marche pas....

Bonne soirée.

Quand je dis, c'est synchro, c'est juste pour dire que le temps qui sépare deux séquences sont identiques.

Mais j'envoie toutes les 10 ms

Et je reçois toutes les 500 ms (environ)

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

#125 Message par Serge » mar. 11 août 2020 21:24 lien vers la Data-Sheet : Cliquez ici

Je réfléchis à un truc...

J'ai allumé une led en début de l'interruption de l'esclave, et je l'éteint en fin de l'interruption. (comme tu m'as suggéré)
Et je constate en fait, que la led clignote au rythme de 1/10 seconde allumée, et 1/2 seconde éteinte. (environ)
Ce qui correspond bien aux séquences vues à l'oscillo.
Cette fois, je n'ai plus de ckp pour le traitement, et de toute façon mes signaux SCL/SDA remontent bien après chaque séquence de 1,5ms.
Donc mon CKP ne bloque plus rien. Le bus est libre !
Si le bus est libre, c'est bien le "maitre" qui ne réagit pas alors qu'il est dans une boucle de 10 ms !!!
il n'a plus d'interruption INTCON.7=0 INTCON.6=0 INTCON.5=0
Il boucle avant d'entrer dans le programme principal sur :
do while 1

gosub sorties_cm
pause 10 ' ( pause 1 ou pas de pose, c'est pareil !)

loop
J'obtient toujours des séquences séparées d'une demie seconde.

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

#126 Message par Serge » mar. 11 août 2020 21:55 lien vers la Data-Sheet : Cliquez ici

Je m’aperçois qu'en fait le test du bus libre n'est pas bon !

C'est lui qui génère un temps au début de chaque séquence et qui fini par sortir par la tempo "At" qui déborde.
En fait, le test :

if (SSPCON2<<3)+SSPSTAT.2=0 then exit , n'est jamais vrais !

et il sort par la tempo de débordement "At"
Pourtant le bus est libre !, mais ce test ne le voit pas.

Grace à ta méthode, je crois qu'on avance...
Merci.

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

#127 Message par satinas » mer. 12 août 2020 07:08 lien vers la Data-Sheet : Cliquez ici

Bonjour

Quand je parlais de ne pas bloquer le bus, cela ne voulait pas dire laisser CKP à 0, mais le mettre à 1 le plus tôt possible pour ne jamais faire attendre le maître. Lors de mes anciens tests, il fallait le mettre à 1 même si le clock stretching n'était pas activé.

Dans le sous-programme buslibre, tu peux tester les bits d'erreurs i2c en même temps que les autres bits, pas au bout d'un "certain temps", et s'il y a erreur, on arrête tout.

Effectivement mon test est encore trop avancé, il faut commencer par une boucle d'envoi de la séquence par le maître avec personne en face, en ne tenant pas compte des NAK reçus.

Problème de séquence I2C entre deux PIC
paulfjujo
Avatar de l’utilisateur
Expert
Expert
Messages : 2123
Âge : 71
Enregistré en : juillet 2015
Localisation : 01800
Contact :

#128 Message par paulfjujo » mer. 12 août 2020 08:06 lien vers la Data-Sheet : Cliquez ici

bonjour

Serge a écrit : .......
En fait, le test :
if (SSPCON2<<3)+SSPSTAT.2=0 then exit , n'est jamais vrais !
....


un sujet pationnant que je suis ..de loin
galerant avec un 18F27K42 dont l'I2C hardware est vraiment compliqué !
vu le nombre de flag pouvant generer une interruption ..

en C, ça bloquerai ici :
if (SSPCON2<<3)+SSPSTAT.2==0

je rajouterai meme une parenthese au cas ou
if ( (SSPCON2<<3)+SSPSTAT.2==0)

utiliser un masque ((AND) sur SSPCON2 au lieu d'un decalage à gauche ?

SGDG !
exit juste pour vous apporter un soutien ..moral
Modifié en dernier par paulfjujo le mer. 12 août 2020 08:13, modifié 1 fois.
Aides toi, le ciel ou FantasPic t'aideras

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

#129 Message par satinas » mer. 12 août 2020 08:09 lien vers la Data-Sheet : Cliquez ici

j'ai lu trop vite, tu ne testes pas les bits d'erreur, autant les ajouter
PIRbits.BCLIF, SSPCON1bits.WCOL, SSPCON1bits.SSPOV

Bonjour Paul, le soutien c'est surtout pour lui, mais quelle persévérance :)
On va voir ce que cela donne chez moi. Pas sûr que ce soit un problème de syntaxe.

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

#130 Message par Serge » mer. 12 août 2020 08:45 lien vers la Data-Sheet : Cliquez ici

Bonjour à tous.

Juste pour info:
J'ai fais un essais sans tester le bus libre, et ça pédale à fond sans la moindre "latence".
Sauf biensûr que ça se termine à un moment donné par l'erreur "Owerflow" SSPCON1.6 ! Normal....
Nous somme bien sur le problème.
Reste maintenant à trouver la bonne syntaxe de ce test du bus libre ....
Je vais corriger dans un premier temps comme le montre Pauljujo


Retourner vers « Le forum Fantas-PIC »

Qui est en ligne

Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 1 invité