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 : 1225
Enregistré en : novembre 2015

#61 Message par satinas » mar. 5 mai 2020 09:26 lien vers la Data-Sheet : Cliquez ici

Le endif en fin de routine d'interruption du maître, il est associé à quel if ?
Ah oui j'ai compris, si on met une instruction sur la ligne du if then, pas besoin de endif, c'est ça ?

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

#62 Message par Serge » mar. 5 mai 2020 09:32 lien vers la Data-Sheet : Cliquez ici

Oui, C'est ça.

Comme If machin then truc.....

Pas besoin du endif.

Pour la routine d'interruption, le dernier endif appartient à "if INTCON.2 then "

et pour les variables booléennes, pas besoin d'écrire =1, c'est pareil.
Modifié en dernier par Serge le mar. 5 mai 2020 09:41, modifié 1 fois.

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

#63 Message par satinas » mar. 5 mai 2020 09:40 lien vers la Data-Sheet : Cliquez ici

Comme ça, sans interruptions autorisées, c'est pareil, et pas de surprise.
Tu vois un inconvénient ?

Code : Tout sélectionner

prg:
  if INTCON.TMR0IF then   'interrupt flag Compteur TMR0'
    t0=t0+1
    if t1>0 then t1=t1-1
    select case t0
    case 1
      bip=1
       cli=1
      case 32
        bip=0
      case 64
        bip=1
        cli=0
      case 96
        bip=0
      case 128
        t0=0
        if t2>0 then t2=t2-1
        if t3>0 then t3=t3-1
        if t4>0 then t4=t4-1
    end select
    INTCON.TMR0IF = 0
  endif

  sortie_led=cli
  if led<>cli  then                 ' si la led Change, info à l''esclave qui gère la sortie '
    data_1 = 40+led
    gosub WR_i2C
    led=cli
  endif

  if Entree_20 and not Entree_18 and hb<50000 then      ' Si Bouton Poussoir vers le bas'
  ...

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

#64 Message par Serge » mar. 5 mai 2020 09:46 lien vers la Data-Sheet : Cliquez ici

Oui, c'est une idée....

Bien qu'après j'aurais vraiment besoin des interruptions pour du comptage rapide en plus....

Mais ça permet de tester la version sans interruption du Maitre.

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

#65 Message par Serge » mar. 5 mai 2020 09:52 lien vers la Data-Sheet : Cliquez ici

Sur ces deux modules, ça ne plante pas, (ils sont plus light) mais sur le module complet, je vais essayer sans l'interruption Maitre.

Par contre mon module de lecture lui, ne fonctionne pas. RD_I2C: je dois encore trouver pourquoi.
Les séquences de lectures plantent après l'adresse de lecture, pas d'acknowledge de l'esclave sur l'adresse de lecture. et donc plus rien après l'adresse.

Enfin... pas vraiment plus rien. J'obtiens les quatres pic qui doivent être à mon avis les CKP à 1 mais sans les data.
Modifié en dernier par Serge le mar. 5 mai 2020 09:57, modifié 1 fois.

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

#66 Message par satinas » mar. 5 mai 2020 09:56 lien vers la Data-Sheet : Cliquez ici

Quand tu dis "plante", cela veut dire qu'il reste en permanence dans la boucle d'attente de l'acknowledge ?
Il est pas vraiment planté, juste le soft ne prend pas en charge le problème, il pourrait afficher un message d'erreur.

C'est donc pas d'acknowledge sur l'adresse en read, quand tu parlais de pas d'acknowledge sur la première data, c'est autre chose, ce n'est plus d'actualité ?

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

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

Voilà ce que ça donne en lecture.
J'ai l'adresse de lecture et puis pas grand-chose....
20200505_100927.jpg
Vous n’avez pas les permissions nécessaires pour voir les fichiers joints à ce message.

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

#68 Message par Serge » mar. 5 mai 2020 10:18 lien vers la Data-Sheet : Cliquez ici

Non, je m'étais trompé. Ce n'était pas le premier data, c'était l'adresse.

Comme tu le vois sur l'écran, on a l'adresse, derrière le " repet-Start" jusque-là, c'est bon, et après les quatre CKP (à mon avis) mais rien des datas
Modifié en dernier par Serge le mar. 5 mai 2020 11:05, modifié 2 fois.

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

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

ok, je vais regarder, donc plus grand chose à dire avant un certain temps.
On est bien d'accord tu n'arrives à faire aucune lecture, 0 de chez 0 ?
Et les écritures c'est 100% de réussite.

Ajoute ce while en début de I2CStop(), c'est un moment critique.

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

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

Je te crois, je vais le remettre, mais je comprend pas qu'on teste un bus libre quand il ne peut pas l'être ?
Ca voudrait dire que si un autre pic essaye de prendre la ligne avec ce même test, il pourrait la prendre avant le stop de l'autre ???

Oui, l'écriture ça marche pour le moment sur ces deux modules.


Retourner vers « Le forum Fantas-PIC »

Qui est en ligne

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