Sauvegarde structure en Eeprom externe

Bonjour,
J'aimerais sauvegarder des données en Eeprom externe (24C16).
Je sauvegarde sans soucis avec EEPROM.PUT ma structure sur l'Eeprom interne de l' Arduino Nano.
Existe t'il une commande semblable pour sauvegarder une structure en Eeprom externe.
Merci pour vos réponses

Search for "24c16 arduino library". I see several and they will likely have example code too.

Bonjour,

Tu n'as pas trouvé, mais si tu avais fais défiler la liste des messages tu aurais vu qu'il y a 3 jour il y a eu une réponse sur ce fil :

où une bibliothèque est proposée.
Je pense que tu auras de quoi commencer à travailler.

Bonsoir ,
Je trouve pour stocker des bytes ou des int , mon problème c'est de stocker facilement une structure en Eeprom externe .
Je vais demain chercher avec vos indications.
Merci

La bibliothèque GitHub - RobTillaart/I2C_EEPROM: Library for I2C EEPROM - 24LC256 est assez complète

Vous pouvez utiliser updateBlock()pour écrire (si nécessaire) plusieurs octets d'un coup

  // updates a block in memory, writes only if there is a new value.
  // only to be used when you expect to write same buffer multiple times. 
  // test your performance gains!
  int      updateBlock(const uint16_t memoryAddress, const uint8_t* buffer, const uint16_t length);

Si vous définissez une structure, vous passez l'adresse de la structure (que vous castez en uint8_t*) et sizeof de la structure pour le nombre d'octets

Bonjour,
Je ne comprends pas, j'arrive à lire et écrire directement dans l' Eeprom 24c16 avec Wire et ses exemples ( avec un délai de 5ms après Wire.endTransmission).
Mais je n'arrive pas à travailler avec les bibliothèques que vous m'indiquez .
Je suis sur le point de développer l'écriture complète depuis Wire c'est un peu dommage
Efface_Eepr_Ext.ino (2.7 KB)

Vous avez regardé les exemples?

Oui, bien sûr les exemples écrivent de façon aléatoire (les lectures ne correspondent pas aux ecritures) dans l' Eeprom et n'arrivent pas à déterminer la taille de l'eeprom

Je vais échanger avec RobTillard et je vous tiens au courant!
Merci beaucoup !

Bonjour, je reprend le problème, je suis débutant en C et je cherche à décomposer une structure en 12 byte pour la sauvegarder en Eeprom externe . Ensuite j'aurai besoin de recomposer cette structure par la lecture des 12 byte sauvegardé en Eeprom. Il y a peut-être des fonctions qui le font mais je ne les connais pas. Merci de votre aide

avec la bibliothèque déjà mentionnée en #7 il suffit de faire

uint8_t tableauEcriture[12] = {1,2,3,4,5,6,7,8,9,10,11,12}; 
uint8_t tableauLecture[12] = {0}; 
...

// écriture
ee.writeBlock(0, tableau, sizeof tableau); // on sauve à l'adresse 0

// lecture 
ee.readBlock(0, tableauLecture, sizeof tableauLecture); // on relit dans l'autre tableau

Ok, ma question s'est pour transformer une structure qui est composée de 6 variables :
3 byte, 2 float, 1 byte en un tableau de 12 byte
et inversement :

struct sov_eep {
byte jour;
byte heure;
byte minute;
float Tens_moy;
float Cour_moy ;
byte Fin;
};

Je ne comprends pas - vous n’êtes même pas aller voir les exemples ??

Si, j'ai même échangé avec Rob Tilliard mais mon Eeprom 24C16 n'est pas compatible avec cette bibliothèque.
Désolé du dérangement mais j'échange directement avec l' Eeprom avec wire sans autre bibliothèque
Et ma question est juste pour la conversion de ma structure en une suite d'octets

Bonjour,

Ta structure est déjà une suite d'octets en mémoire.
Il suffit de la parcourir avec un index ou un pointeur

Avec un index:

  sov_eep sauve;
  byte *adSauve=(byte *)&sauve; // adresse debut structure
  for (byte i=0; i<sizeof sauve; i++)
  {
    Serial.println(adSauve[i],HEX);
    // sauvegarde de l'octet ici
  }

Avec un pointeur

  for (byte *p = (byte *)&sauve; p < (byte *)&sauve + sizeof sauve; p++)
  {
    Serial.println(*p,HEX);
    // sauvegarde de l'octet ici
  }

Merci à Vous,
avec ces réponses et exemples je devrais m'en sortir .

Bonjour, ma sauvegarde en Eeprom externe fonctionne grâce à vos exemples! Merci
C'est ma première programmation avec pointeurs, je ne comprends pas encore complètement la syntaxe, mais ça viendra .
Plus qu'à programmer l'inverse pour la lecture de la sauvegarde et organiser les échanges sur i2c entre Eeprom et affichage !
Merci pour votre aide!

Si ça peut aider j’ai écrit ce petit tuto ➜ Introduction à la mémoire et aux pointeurs sur Arduino

Merci beaucoup, je regarderai

Meilleurs Voeux à tous pour cette nouvelle année !

Bonne année !