Go Down

Topic: variable 16 bits en eeprom (Read 990 times) previous topic - next topic

fr3d

bonjour a tous,
debutant(copier/coller addict) en arduino j'aurais voulu etre a meme de stocker puis lire une variable de 10 bits en eeprom donc sur deux adresse en eeprom car 2*8bits.
j'aurais voulu aussi decomposé une variable de 16bits en 2 fois 8bits et inversement 2x8bits en 1 de 16bits.
si qqn pouvait poster une portion de code ce serait hypersympa
cordialement
homemade shield and llc for multiwii-copter @ Fr3d.kazeo.com

B@tto

#1
Feb 14, 2011, 10:39 am Last Edit: Feb 14, 2011, 10:42 am by B@tto Reason: 1
Une manière de faire (non vérifiée) :

Utilise des shiftright >> et des shiftleft << pour séparer les deux paquets, ça devrait ressembler à ça :

Code: [Select]
int a = 49914 ; // en binaire : 1100001011111010 ta variable à décomposer
int b = a >> 8  ; // donc b =  000000011000010
int c = b << 8 ; // donc c = 1100001000000000
int d = a - c ;  // donc d = 0000000011111010


Il ne reste plus qu'a stocker a et d. Et pour reconstituer ta variable, il faudra faire une petite routine aussi  ;)


Blog électronique : battomicro.wordpress.com
Photographie : www.interactive-celebration.fr
Fablab de Montpellier : www.labsud.org

churchill

Salut,


debutant(copier/coller addict) en arduino j'aurais voulu etre a meme de stocker puis lire une variable de 10 bits en eeprom donc sur deux adresse en eeprom car 2*8bits.


Tu peux utiliser la bibliotheque standard de avrlib, en  incluant eeprom.h

Code: [Select]
#include <avr/eeprom.h>
uint16_t valeur;
uint16_t EEMEM ee_ma_variable;
# Lecture
valeur = eeprom_read_word(&ee_ma_variable);
# Ecriture
eeprom_write_word(&ee_ma_variable, valeur);

A tester cependant, je l'ai utilisé en programmant directement un atmega, mais pas (encore) en passant par l'IDE de l'arduino.

churchill

Go Up
 


Please enter a valid email to subscribe

Confirm your email address

We need to confirm your email address.
To complete the subscription, please click the link in the email we just sent you.

Thank you for subscribing!

Arduino
via Egeo 16
Torino, 10131
Italy