Bonsoir,
Cela fait 2 jours que je galère, alors je pose ma petite question.
Afin de poursuivre mes expérimentations, je souhaite faire un simple datalogger de température.
But : faire les acquisitions de température, les stocker dans une 24LC16B et relire la 24LC16B plus tard.
Le montage est simple et la programmation aussi; dire qu'il y a quelques années, j'avais décortiquer tous les chronogrammes du DS1820 afin d'écrire les routines de lecture/écriture (qui fonctionnaient très bien d'ailleurs).
Mon problème : Je n'arrive pas à ecrire/relire dans l'EEPROM.
Je lis la température. Si je la transmet directement sur le port série avec sertxd, pas de problème, j'affiche bien la température lu sur le capteur DS18B20.
Je fais clignoter une LED pour controler que le PIC n'est pas planté -> OK
J'ajoute les instructions de config/ecriture/lecture de l'EEPROM et là, plus rien ne fonctionne.
Lors de l'envoi des données sur le port série par sertxd, la température est constamment à 255.
Je ne pense pas qu'il y ait d'erreur de câblage mais je vous le décrit sommairement :
- pattes 1,2,3 de la 24LC16B à la masse
- patte 4 à la masse
- patte 5 de la 24LC16B reliée à la patte 7 du PICAXE-18M2
- patte 6 de la 24LC16B reliée à la patte 10 du PICAXE
- patte 7 de la 24LC16B reliée à la masse
- patte 8 de la 24LC16B reliée au +4,5V
Et voici le tout petit programme que j'ai écris :
J'avais également essayé avec une 24LC256 (en mettant i2cword au lieu de i2cbyte), mais sans plus de succès
J'avais aussi au départ mis 0 au lieu de W1 pour l'adresse, pensant que peut-être il fallait passer par un registre intermédiaire, mais pas mieux.
Est-ce que certain registre sont interdits quand on utilise les commandes i2c ?
Voilà, si vous voyez d'où vient le problème, je suis preneur de tous commentaires.
Merci,
Guillaume
Cela fait 2 jours que je galère, alors je pose ma petite question.
Afin de poursuivre mes expérimentations, je souhaite faire un simple datalogger de température.
But : faire les acquisitions de température, les stocker dans une 24LC16B et relire la 24LC16B plus tard.
Le montage est simple et la programmation aussi; dire qu'il y a quelques années, j'avais décortiquer tous les chronogrammes du DS1820 afin d'écrire les routines de lecture/écriture (qui fonctionnaient très bien d'ailleurs).
Mon problème : Je n'arrive pas à ecrire/relire dans l'EEPROM.
Je lis la température. Si je la transmet directement sur le port série avec sertxd, pas de problème, j'affiche bien la température lu sur le capteur DS18B20.
Je fais clignoter une LED pour controler que le PIC n'est pas planté -> OK
J'ajoute les instructions de config/ecriture/lecture de l'EEPROM et là, plus rien ne fonctionne.
Lors de l'envoi des données sur le port série par sertxd, la température est constamment à 255.
Je ne pense pas qu'il y ait d'erreur de câblage mais je vous le décrit sommairement :
- pattes 1,2,3 de la 24LC16B à la masse
- patte 4 à la masse
- patte 5 de la 24LC16B reliée à la patte 7 du PICAXE-18M2
- patte 6 de la 24LC16B reliée à la patte 10 du PICAXE
- patte 7 de la 24LC16B reliée à la masse
- patte 8 de la 24LC16B reliée au +4,5V
Et voici le tout petit programme que j'ai écris :
Code:
main:
high B.0 ' Allume LED
readtemp C.0, b0
low B.0 ' Eteind LED
i2cslave $A0, i2cfast, i2cbyte
let W1 = $0000
writei2c w1,(b0)
pause 20
pause 1000
readi2c w1,(b1)
sertxd("Temp=", #b1, 13, 10)
goto main
J'avais aussi au départ mis 0 au lieu de W1 pour l'adresse, pensant que peut-être il fallait passer par un registre intermédiaire, mais pas mieux.
Est-ce que certain registre sont interdits quand on utilise les commandes i2c ?
Voilà, si vous voyez d'où vient le problème, je suis preneur de tous commentaires.
Merci,
Guillaume
Last edited: