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
Bon.
Alors si on met le bit "SEN" à 1( sur l'Esclave) pour l'instant ça fonctionne à condition de le remettre à "0" à la fin de chaque séquence d'Octet reçu.
Si non, ça marche pas.
Donc pas à la configue, mais après avoir reçu l'adresse, et jusqu'à la fin de la séquence d'écriture du Maître.
(Mais alors, pourquoi ça marche aussi si on le met pas ?????)
Pour l'instant, ça ne plante pas en écriture....... à suivre !
Alors si on met le bit "SEN" à 1( sur l'Esclave) pour l'instant ça fonctionne à condition de le remettre à "0" à la fin de chaque séquence d'Octet reçu.
Si non, ça marche pas.
Donc pas à la configue, mais après avoir reçu l'adresse, et jusqu'à la fin de la séquence d'écriture du Maître.
(Mais alors, pourquoi ça marche aussi si on le met pas ?????)
Pour l'instant, ça ne plante pas en écriture....... à suivre !
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
Et ba NON !
C'est pas ça, ça à encore planté.
Toujours pareil, après le premier Octet... Pas d'acknowledge !
J'ai bien mon Acknowledge d'adresse, mais pas "toujours" l'Acknowledge du premier Octet.
Et si j'ai celui-là, alors la séquence des 3 Octets se termine bien.
Mais c'est pas constant
C'est pas ça, ça à encore planté.
Toujours pareil, après le premier Octet... Pas d'acknowledge !
J'ai bien mon Acknowledge d'adresse, mais pas "toujours" l'Acknowledge du premier Octet.
Et si j'ai celui-là, alors la séquence des 3 Octets se termine bien.
Mais c'est pas constant
Modifié en dernier par Serge le ven. 1 mai 2020 20:19, modifié 3 fois.
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
Si SEN=1, Ca fonctionne pareil en lecture et écriture, le bit CKP passe à 0 en fin de transmission et l'esclave le remet à 1. Dans les 2 cas il a possibilité de prendre son temps pour stocker ou aller chercher la data.
Si SEN=0, en lecture CKP reste à 1, en écriture j'ai pas compris la doc, pareil que la lecture ou pas.
Tu remets toujours CKP à 1 après un read/write SSPBUF et cela devrait être bon.
Si SEN=0, en lecture CKP reste à 1, en écriture j'ai pas compris la doc, pareil que la lecture ou pas.
Tu remets toujours CKP à 1 après un read/write SSPBUF et cela devrait être bon.
Problème de séquence I2C entre deux PIC
Bonjour
Teste déjà cela, avec seule l'interruption I2C autorisée.
Chez moi tes routines d'envoi marchent parfaitemnent à 400 kHz.
Si ça fonctionne aussi chez toi, on verra pour le reste.
La boucle d'attente de l'acknoledge est le point faible, car si problème on n'en sort pas.
Sans le CKP = 1 dans l'interruption, cela ne marche pas, pourtant cela devrait d'après la doc.
Teste déjà cela, avec seule l'interruption I2C autorisée.
Chez moi tes routines d'envoi marchent parfaitemnent à 400 kHz.
Si ça fonctionne aussi chez toi, on verra pour le reste.
La boucle d'attente de l'acknoledge est le point faible, car si problème on n'en sort pas.
Sans le CKP = 1 dans l'interruption, cela ne marche pas, pourtant cela devrait d'après la doc.
Code : Tout sélectionner
; ------------------------------------------------
; Master
; ------------------------------------------------
SSPCON1 = 0x28 ; Master 7 bits
SSPADD = FOSC/4/100000-1 ; Fscl=100kHz
;SSPADD = FOSC/4/400000-1 ; Fscl=400kHz
I2CSTART:
SSPCON2.0 = 1 ; SEN - Start Condition Enable Bit
WHILE SSPCON2.0 = 1 : WEND ; Wait for Start to complete
RETURN
I2CSTOP:
WHILE (SSPCON2< 3) OR SSPSTAT.2 : WEND
SSPCON2.2 = 1 ; PEN - send stop bit
WHILE SSPCON2.2 = 1 : WEND ; Wait for SSP to complete
RETURN
I2CWR:
SSPBUF = d ; Move data to SSPBUF
WHILE SSPSTAT.2 = 1 : WEND ; SSPSTAT = 1 Transmit in progress
WHILE SSPCON2.6 = 1 : WEND ; Wait for Acknowledge from slave 1=NotAck
RETURN ; Acknowledge received
TEST_WRITE:
GOSUB I2CSTART
d = I2CSLAVE_ADDR
GOSUB I2CWR ; send adresse esclave
d = data_1
GOSUB I2CWR ; send data1
d = data_2
GOSUB I2CWR ; send data2
d = data_3
GOSUB I2CWR ; send data3
GOSUB I2CSTOP
GOSUB WAIT_10 ; tempo de 10 ms
GOTO TEST_WRITE
; ------------------------------------------------
; Slave
; ------------------------------------------------
SSPCON1 = 0x36 ; Slave 7 bits, CKP=1, no int start/stop
SSPADD = ... ; adresse slave
interruption
if PIR1.3 = 1 ; received byte
if SSPSTAT.0 = 1
data = SSPBUF ; read byte
endif
SSPCON1.4 = 1 ; CKP = 1
PIR1.3 = 0
endif
Problème de séquence I2C entre deux PIC
Problème de séquence I2C entre deux PIC
Pour l'instant ça ne fonctionne pas, et je sais pas pourquoi car tu as les mêmes commandes que moi.
Pourtant, si je remet le miens, ça marche (à part les plantes récurrentes)
Si je met ton programme, j'obtiens la condition "Start", et je n'ai pas l'adresse....
Je comprend pas pourquoi, c'est trop bizarre.
je continue à chercher pourquoi
Pourtant, si je remet le miens, ça marche (à part les plantes récurrentes)
Si je met ton programme, j'obtiens la condition "Start", et je n'ai pas l'adresse....
Je comprend pas pourquoi, c'est trop bizarre.
je continue à chercher pourquoi
Retourner vers « Le forum Fantas-PIC »
Qui est en ligne
Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 1 invité


