salut hulk,
j'ai cité le contenu de la fonction précédemment.
Je joins la copie de la doc au cas où tu trouves plus d'info.
A+
-----
salut hulk,
j'ai cité le contenu de la fonction précédemment.
Je joins la copie de la doc au cas où tu trouves plus d'info.
A+
en passant, j'adore la contradiction:
"Parameters: address is 16 bits on PCM parts and 32 bits on PCH parts
..."
et plus loin
"Availability: Only PCH devices"
Ou alors c'est que je ne suis vraiment pas fait pour bosser avec les pics.
A+
Oui, on fait mieux dans le genre compilo.
Apparemment cette routine est faite pour écrire dans l'E²PROM interne du µC, mais comme bien souvent il est préférable d'écrire ses propres fonctions pour éviter les surprises désagréables...
je vais essayer de faire un emulateur, à premiere vu ça me semble de la logique, mais il me manque des fonctions de bases, est-ce que quelqu'un peut me les donner, je chercherai comment elles fonctionnent.
-comment transformer une variable decimale en variable binaire?
-comment récuperer un bit precis dans une variable binaire?
-peut-on donner directement la valeur logique d'un bit à une broche de sortie? (exemple: pin_b1=valeur avec: si valeur=0, pin_b1 à l'etat bas, et si valeur =1, pin_b1 à l'etat haut)
je ne sais pas si je suis clair, mais je pense pouvoir m'en sortir avec ces fonctions
C'est beaucoup plus complexe que tu ne le penses. Il faut en principe que les sorties soient à collecteurs ouvert car la ligne SDA est commune à tous les circuits connectés.
Bon, si seule l'eeprom est connectée, il y a moyen de contourner le problème en mettant une résistance en série entre les SDA du maître et de l'esclave pour éviter les conflits. Mais c'est du bricolage.
S'il n'y a pas de sortie à collecteur ouvert, il faut générer les '1' en positionnant la patte en entrée. Ainsi, grâce à la résistance de tirage du bus, SDA sera à l'état haut.
Enfin, tu vois ça risque d'être un peu compliqué, vu que tu as l'air de débuter.
il est vrai que je n'avais pas pensé à ça, en effet l'eeprom est connectée à un pic 12fxxx et soit à un autre pic pocédant un bus i2c, soit un picbasic, l'eeprom est là pour faire tampon entre les 2
ne peut-on pas mettre un composant qui permettrait d'empecher la remontée du signal? car le 12fxxx ne doit qu'ecrire sur l'eeprom
Qu'entends-tu par "remontée du signal"?
A+
si je comprends bien pour ecrire sur l'eeprom, c'est le pic qui a ses broches en sorties et l'eeprom qui recois, et ce qui pose probleme, c'est si les broches du pics sont en sortie et les broches de l'eeprom aussi, non?
oui, car l'eeprom sera tantôt en lecture, tantôt en écriture.
Et il y a le problème du bit ACK à gérer. Il faut que la ligne soit à un niveau haut "faible", c'est à dire non forcé. D'où la nécessité de la résistance de pull-up sur SDA.
A+
mais si je place les broches en reception à partir du moment où je n'ecris pas sur l'eeprom, il n'y a pas de probleme si un autre se connecte non? (a condition d'interdire à l'autre de se connecter lorsque j'ecris)
dans ce cas, lorsque j'ecris, pas de risque puisque l'eeprom recoit et les autres n'ont pas le droit d'ecrire, et lorsque je n'ecris pas, je suis en reception, donc pas de probleme
??
c'est quoi le bit ack?
oui, c'est ce que je disais précédemment, on peut mettre les pins en entrée pour éviter les conflits.
Tu devrais vraiment étudier de plus près le protocole I2C.c'est quoi le bit ack?
A+
il est vrai que je ne connais pas le protocole i2c, j'ai deja vu ce bit dans un datasheet d'eeprom mais je n'ai pas compris d'ou il sortait puisqu'il n'y a que 2 connections: scl et sda, je ne comprends pas comment il intervient
ack = acknowledge.
Ce bit permet de s'assurer que la trame est bien reçue par son destinataire. Celui-ci force ce bit à 0. L'émetteur envoyant un '1', s'il détecte que la ligne est à '0' au moment du bit ack, il comprends que le récepteur a bien reçu la trame.
A+
"Et il y a le problème du bit ACK à gérer. Il faut que la ligne soit à un niveau haut "faible", c'est à dire non forcé. D'où la nécessité de la résistance de pull-up sur SDA."
la resistance ne resout pas le probleme?
la pull-up permet de fixer le niveau haut sur SDA et ne résout en aucun cas les conflits.
Il ne doit y avoir qu'une seule patte de circuit relié à SDA qui doit être en sortie à la fois.
A+
j'arrete pour aujourd'hui, je reprendrai tout ça demain a tete reposée
merci pour tout et bonne nuit
une derniere qestion qui n'a rien a voir, est-ce que l'on peut utiliser un seul quartz pour plusieurs pics?
Je n'ai jamais essayé.
Ca doit pouvoir fonctionner en connectant la sortie de l'oscillateur d'un des pic sur l'entrée horloge de l'autre.
Mais je te conseille dans ce cas de préférer des oscillateurs tout faits en boîtier 4 broches.
A+