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

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

if ((SSPCON2<<3)+(SSPSTAT.2)) = 0 then exi t

en plus lisible
if ((SSPCON2 & %00011111) = 0) AND ((SSPSTAT & %00000100) = 0) then exi t
if ( (SSPCON2 & %00011111) + (SSPSTAT & %00000100) ) = 0 then exi t

le & est un et binaire bit à bit.
le AND (ou &&) est un et logique, qui ne connaît que 0 ou != 0, faux ou vrai.

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

#132 Message par Serge » mer. 12 août 2020 09:35 lien vers la Data-Sheet : Cliquez ici

Alors si je fais une condition de cette forme, ça fonctionne "NICKEL" !

if not SSPCON2.0 and not SSPCON2.1 and not SSPCON2.2 and not SSPSTAT.2 then exit

Mais c'est peut-être pas la plus rapide, ni la plus élégante ?....

Mais là, ça marche !

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

#133 Message par Serge » mer. 12 août 2020 09:37 lien vers la Data-Sheet : Cliquez ici

en fait le:
if ((SSPCON2<<3)+(SSPSTAT.2)) = 0 ne fonctionne pas

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

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

Je chercherais pourquoi, il y a un debugger pas à pas dans Basic Pro ?

Eh oui, et c'est encore plus lisible, mais attention à ne pas mélanger les AND et les OR sans parenthèses.
le NOT c'est aussi ! donc,
if !SSPCON2.0 and !SSPCON2.1 and !SSPCON2.2 and !SSPSTAT.2 then ...

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

#135 Message par Serge » mer. 12 août 2020 09:42 lien vers la Data-Sheet : Cliquez ici

LE principe du masque est plus rapide ?...

Non, je ne connais pas de Debugger sur PBP

En fait si !, mais il faut réserver des Pins du pic pour une liaison série.
Modifié en dernier par Serge le mer. 12 août 2020 10:37, modifié 2 fois.

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

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

On s'en fiche, on est pas aux pièces :-)
Il faudrait comparer ce que sort le compilateur dans les différents cas.

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

#137 Message par Serge » mer. 12 août 2020 10:26 lien vers la Data-Sheet : Cliquez ici

Un grand merci pour votre aide,
C'est par des approches différentes et des points de vue différents que l'on avance le plus.

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

#138 Message par satinas » mer. 12 août 2020 14:33 lien vers la Data-Sheet : Cliquez ici

if ((SSPCON2<<3)+(SSPSTAT.2)) = 0 then ...

Bon chez moi le C et le Basic se comportent de la même façon
on prend la valeur de SSPCON2
--> %abcdefgh
on la décale 3 fois vers la gauche, en faisant entrer des 0 à droite
--> %defgh000
on prend la valeur du bit SSPSTAT.2 qui est à 0 ou 1
--> %0000000r
on ajoute les deux, cela donne :
--> %defgh00r
cet octet est à 0 si les 6 flags sont à 0

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

#139 Message par paulfjujo » mer. 12 août 2020 19:54 lien vers la Data-Sheet : Cliquez ici

bonsoir,

satinas a écrit :if ((SSPCON2<<3)+(SSPSTAT.2)) = 0 then ...

Bon chez moi le C et le Basic se comportent de la même façon...


au == pres !
oops exit
Aide toi, le ciel ou FantasPic t'aidera

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

#140 Message par satinas » mer. 12 août 2020 20:47 lien vers la Data-Sheet : Cliquez ici

Qu'à cela ne tienne :-)

if ( ! ((SSPCON2<<3) + (SSPSTAT.2)) ) ...


Retourner vers « Le forum Fantas-PIC »

Qui est en ligne

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