Go Down

Topic: Valeur compteur stocker en eeprom (Read 4 times) previous topic - next topic

lacolombenoir

Voici les fonctions
Elle ne sont pas optimiser pour tout type d'utilisation à toi de les adapter en fonction de tes besoins

Code: [Select]
void eeprom_ecriture(long valeur)
{
  long part_1 = valeur >> 8;
  part_1 = part_1 << 8;
  int result_1 = valeur - part_1;
 
  long part_2 = valeur >> (8*2);
  part_2 = part_2 << (8*2);
  int result_2 = (valeur - part_2)>>8;
 
  long part_3 = valeur >> (8*3);
  part_3 = part_3 << (8*3);
  int result_3 = (valeur - part_3)>>16;
 
  long result_4 = valeur >>(8*3);
 
   EEPROM.write(0,result_1);
   EEPROM.write(1,result_2);
   EEPROM.write(2,result_3);
   EEPROM.write(3,result_4);
}

long eeprom_lecture()
{
  long resultat = (EEPROM.read(0) + (EEPROM.read(1)<<8) + (EEPROM.read(2)<<16) + (EEPROM.read(3)<<24));
 
  return resultat;
}


Pour ce qui est de l'apprentissage du c je l'ai apprise sur http://www.siteduzero.com/ ils y'a des années avant même d'avoir un Arduino, je te conseille le c++ car l'orienter objet est très utile dans la conception de librairie pour l'arduino, il existe un tutoriel sur le site exprès rédiger pour les utilisateurs d'arduino, pour ce qui est des livres le site du zero publie des versions livre des tutoriels les plus populaires.
www.hatokuro.comuf.com site consacrer au rétrogaming

gunsman76

#16
Apr 08, 2013, 09:25 am Last Edit: Apr 08, 2013, 09:59 am by gunsman76 Reason: 1
Merci Lacolombenoir !!!

Je vais essayer ça même si ça me parait un peu du chinois...



Edit :

Je viens de télécharger le tuto du language C++ sur le site du zero, je vais le lire, si je vois que ça rentre, je commanderai leur livre.

Je m'aperçois qu'il faut quand même une base de programmation dès l'instant qu'on veut vraiment faire quelque chose de sérieux.


lacolombenoir

Oui la programmation c'est le seul moyen de communiquer avec une machine,
Le jour ou tout le monde l'aura comprit des topics du genre "comment faire un jeu sans programmer" disparaitrons.  XD (je dit pas sa pour toi rassure toi)
www.hatokuro.comuf.com site consacrer au rétrogaming

lacolombenoir

Salut je suis revenu car j'ai découvert un moyen plus efficace pour découper une variable, sa ce nomme le "masquage" il requinque l'opérateur ET le principe est explique dans ce tutoriel si sa t'intéresse http://www.siteduzero.com/sciences/tutoriels/arduino-pour-bien-commencer-en-electronique-et-en-programmation/programmons-pour-utiliser-ce-composant.
www.hatokuro.comuf.com site consacrer au rétrogaming

gunsman76

Merci !!!


Je vais etudier ça ce week-end, j'espère que ce sera la solution ultime !

lve123

Bonjour
Pas besoin de découper la variable en bytes.
Utiliser une variable de type long (4 bytes, valeur max. 2.147.483.647 environ).
Utiliser
Quote
index = EEPROM_writeAnything (adresse,variable);

qui va écrire les 4 bytes .
A+

gunsman76

Là je suis carrément content, ça va me simplifier la chose.


Je teste ça ce week-end et je vous tiens au courant.


Encore merci pour aide !

skywodd

Bonjour,

Avant que tu demandes pourquoi ça compile pas voici le lien pour télécharger le code de EEPROM_writeAnything ;)
http://playground.arduino.cc/Code/EEPROMWriteAnything
Des news, des tuto et plein de bonne chose sur http://skyduino.wordpress.com !

gunsman76

Vous commencez à me connaître...


Mais j'arriverai à faire bien, je commence à potasser le C++ ! (Tuto du site du Zero)



Merci pour votre aide, ce week-end ça va programmer dur  :)

lacolombenoir

Ive123
Quote
Utiliser une variable de type long (4 bytes, valeur max. 2.147.483.647 environ).

j'ai du mal a te suivre comment un type long peu faire 4 bytes alors que en réaliser il en fais 32 ?
www.hatokuro.comuf.com site consacrer au rétrogaming

68tjs

Tu copiera 100 fois 4*8 =32 !

"byte" est un terme anglais, le terme officiel français est "octet" .
Donc 1 byte = 8 bits

et comme 4*8=32 tout est bon

68tjs

Je viens de trouver ceci:
http://deans-avr-tutorials.googlecode.com/svn/trunk/EEPROM/Output/EEPROM.pdf

c'est un document écrit par un ingénieur d'application travaillant chez Atmel

lacolombenoir

Oui le terme bytes et bits a crée un sacrée quiproquo, donc oui je confirme 4 bytes 32 bits.
www.hatokuro.comuf.com site consacrer au rétrogaming

gunsman76

Donc je peux y aller ?

Je vois ça demain, je vous mettrai mon code ici.

En espérant que ça marche parce qu'hier, reset de la carte (je n'ai pas compris pourquoi), le comptage en cours a été perdu.


Une vrai galère

gunsman76


Bonjour
Pas besoin de découper la variable en bytes.
Utiliser une variable de type long (4 bytes, valeur max. 2.147.483.647 environ).
Utiliser
Quote
index = EEPROM_writeAnything (adresse,variable);

qui va écrire les 4 bytes .
A+




Là j'ai un soucis...


Dans la partie Setup :

EEPROM.read (0,compteur);


Dans la partie void :


EEPROM.write (0,compteur);


Donc là pas de soucis, sauf que maintenant je sais que le nombre de bits n'étant que de 1, je ne peux utiliser la valeur total de mon compteur.


Maintenant si j'ajoute :

EEPROM.writeAnything (0,compteur);

Là j'ai une erreur




Go Up