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

#41 Message par satinas » sam. 2 mai 2020 20:41 lien vers la Data-Sheet : Cliquez ici

WHILE (SSPCON2< 3) OR SSPSTAT.2 : WEND
c'est plutôt (SSPCON2<<3)
ce while dans le sous-programme I2CSTOP est important, le stop ne se faisait pas sans lui.

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

#42 Message par Serge » sam. 2 mai 2020 20:49 lien vers la Data-Sheet : Cliquez ici

Je l'avais corrigé.

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

#43 Message par Serge » sam. 2 mai 2020 20:51 lien vers la Data-Sheet : Cliquez ici

Ca marche pas, j'y comprend rien.

J'ai toujours que le "start"

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

#44 Message par Serge » lun. 4 mai 2020 08:11 lien vers la Data-Sheet : Cliquez ici

Bonjour Satinas.

ça y est, ça marche.

J'avais fait un Copié collé, et laissé les sous programmes en tête !!!
Evidamment, ça pouvait pas marcher.

Donc là, ça marche, mais si j'en reste à ce stade, ça marche aussi de mon côté, là ou ça se complique, c'est quand je gère les interruptions sur le Maître pour faire changer l'état d'une led sur l'esclave tout en envoyant des séquences d'autres commandes sur l'esclave sans arrêter ce clignottement de la led Esclave.

Et c'est peut être là que se trouve le problème.
Pourtant, on gère bien que le bus soit libre pour envoyer chaque séquence, Et l'esclave réceptionne chaque séquence dans une seule interruption.

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

#45 Message par satinas » lun. 4 mai 2020 08:34 lien vers la Data-Sheet : Cliquez ici

Bonjour Serge,
Oui, en fait je teste en C tes instructions, et en C on doit mettre les fonctions avant le main, si on ne les a pas déclarées au préalable.

J'ai pas compris, il vaut mieux ne pas avoir d'interruption sur le maître pour le moment. Il faudrait passer à la réception de plusieurs octets par l'esclave, et les stocker. J'avais ça qui allait bien. Le CKP = 1 est important. Je n'aime pas trop la réception de plusieurs octets dans l'interruption, mais tant que ça marche :-) Vérifie que c'est bon à tous les coups.

J'ai testé ça hier mais dans une boucle, quand je mets au point, je préfère éviter les interruptions, on peut les ajouter après quand tout va bien.

Code : Tout sélectionner

interruption
IF PIR1.3 = 1                         ; received byte
  IF SSPSTATbits.0
    poubelle = SSPBUF                 ; adresse
    SSPCON1.4 = 1
    IF NOT SSPSTATbits.5 AND NOT SSPSTATbits.2
 
      WHILE NOT SSPSTAT.0 : WEND
      data_1 = SSPBUF                 ; data 1
      SSPCON1.4 = 1

      WHILE NOT SSPSTAT.0 : WEND
      data_2 = SSPBUF                 ; data 2
      SSPCON1.4 = 1

      WHILE NOT SSPSTAT.0 : WEND
      data_3 = SSPBUF                 ; data 3
      SSPCON1.4 = 1

      recu = 1
    ENDIF
  ENDIF
  PIR1.3 = 0;
ENDIF


Ben voila, si tu ajoutes d'autres interruptions, il va falloir éviter d'avoir une interruption bloquante, cela remet en question le code ci-dessus et on en revient là.
viewtopic.php?p=10506#p10506

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

#46 Message par Serge » lun. 4 mai 2020 08:58 lien vers la Data-Sheet : Cliquez ici

Sur le mien, je ne remet pas le CKP à 1 à chaque séquence.
Tant que je suis en écriture, le CKP ne change pas, il reste à 1 comme configuré au départ.
De ce que j'ai compris, il ne passe à 0 qu'en mode lecture du maitre, après l'adresse et l'acknowledge.....

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

#47 Message par satinas » lun. 4 mai 2020 09:01 lien vers la Data-Sheet : Cliquez ici

Je travaille avec 2 pic 18F4685.

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

#48 Message par Serge » lun. 4 mai 2020 09:09 lien vers la Data-Sheet : Cliquez ici

si je met plusieurs octets dans l'interruption, c'est pour essayer de ne pas perdre le temps de l'adresse inutile....

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

#49 Message par paulfjujo » lun. 4 mai 2020 09:37 lien vers la Data-Sheet : Cliquez ici

si ça peut t'aider un peu


je suis parti d'un exemple donné par MikroE Libstock ref: 1470586910_i2c_master_slave_mikroc_pic.zip pour 16F887 .
qui est formateur, car s'appuye sur la note microchip AN 734 I2C Maitre -esclave.

http://paulfjujo.free.fr/_16F1847/16F18 ... sclave_I2C
Aide toi, le ciel ou FantasPic t'aidera

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

#50 Message par Serge » lun. 4 mai 2020 09:57 lien vers la Data-Sheet : Cliquez ici

Merci, mais je ne maitrise pas encore le C.


Retourner vers « Le forum Fantas-PIC »

Qui est en ligne

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