Problème de lecture écriture ... :(

Emile

Senior Member
BOnjour à tous,

je finalise mon projet et j'ai un petit soucis.

En gros j'ai une telecommande avec pont diviseur.

Lorsque telle ou telle poussoir est enfoncé , le picaxe doit écrire dans son EEPROM une valeur bien précise : (je n'écris pas tout le programme car ya plusieurs pages ...)

P4: let W10 = 1004
write 0, W10
end

Après des que je rallume le boitier sans la fameuse télécommande, je viens lire dans l'eeprom à l'adresse 0.

go: setfreq em20

read 0, W10
if W10 = 1004 then prog1
if W10 = 1002 then prog2
if W10 = 1003 then prog3
if W10 = 1004 then prog4

goto go



Le problème j'ai testé avec debug pour voir ce qui se passait c'est que lorsque j'écris : dans 0 la valeur de W10 ; j'ai bien 1004 qui apparait dans la table voyez ci-dessous :



Mais par la suite lorsque j'etains je rallume et je lis j'ai 236 à la place de 1004 je dois avoir commis une boulette mais quoi ...

Voici le début du programme avant l'étape de lecture :

#Picaxe 28x1

depart: setfreq em20

readadc10 0, W2

if W2 = 0 then go
if W2 > 2 then mesure

goto depart


go: setfreq em20

read 0, W10
if W10 = 1004 then prog1
if W10 = 1002 then prog2
if W10 = 1003 then prog3
if W10 = 1004 then prog4
goto go


Merci pour votre aide

Emile
 

fuse

Senior Member
Bonjour Emile,
La commande read (ou write) fonctionne avec un octet (donc 8 bits). En utilisant write w10, seul les bits de poids faibles sont pris en compte...
Pour sauvegarder une valeur de 16 bits, il faut donc effectuer 2 écritures :
write b20
write b21
et faire de même à la lecture.
A partir du moment ou la lecture s'effectue il sera possible de tester w10 puisque celui-ci est constitué de b20 et b21.:)
J'espère que cela va résoudre ton problème.
Cordialement
 

Emile

Senior Member
Merci beaucoup pour ta réponse :)

J'ai viré tous mes mots et j'ai tout repassé en 8 bits afin d'avoir des valeurs entre 0 et 255 .

Cela fonctionne

Apparemment on peut écrire des mots de plus de 8 bits en utilisant la fonction

read 0 , WORD W1

et

write 0 , WORD W1

Il faut rajouter WORD devant le mot défini.

Emile :)
 

fuse

Senior Member
La commande word doit fonctionner. Il est vrai que les explications sur le Picaxe manual2 sont assez succinctes...:rolleyes:
 
Top