Lecture de données depuis l’EEPROM 24CSM01

Posted on mer. 22 janvier 2025 in Electronics

À la fin du post précédent, je vous ai décrit les difficultés que je rencontrais pour lire, avec ma classe Mem24CSM01, les données écrites sur la 24CSM01 depuis mon ESP32. Le problème est désormais résolu, et n’avait pas grand chose à voir avec le code de la bibliothèque.

Le code Arduino pour lire les données est très simple.

#include "Mem24CSM01.h"
#define MEM 20

Mem24CSM01 memory(false, false);

void setup() {
    Serial.begin(9600);
    uint8_t array[MEM] = {0};
    memory.begin();
    memory.read(0, array, MEM);
    for(int i=0; i<MEM; ++i) {
      Serial.print(array[i], HEX);
      Serial.print(" ");
    }
    Serial.println();
    Serial.println("Reconstructing our data");
    uint16_t values[10];
    memcpy(values, array, 20);
    for(int i=0; i<10; ++i) {
      Serial.print("Value ");
      Serial.print(i);
      Serial.print(" = ");
      Serial.print(values[i], HEX);
      Serial.print("hex or ");
      Serial.println(values[i]);
    }
}


void loop() {
    // Nothing here
}

Ce code me donne le résultat suivant dans le moniteur série.

0 0 0 0 69 1 54 2 69 3 8E 4 D6 5 17 7 66 9 E4 C 
Reconstructing our data
Value 0 = 0hex or 0
Value 1 = 0hex or 0
Value 2 = 169hex or 361
Value 3 = 254hex or 596
Value 4 = 369hex or 873
Value 5 = 48Ehex or 1166
Value 6 = 5D6hex or 1494
Value 7 = 717hex or 1815
Value 8 = 966hex or 2406
Value 9 = CE4hex or 3300

Cet exercice m’a par contre permis de voir que les exemples que je fournissais avec la version 0.9.0 de Mem24CSM01 (non testés, shame on me) était buggés. Il manquait notamment un point-virgule dans chaque exemple (après le Serial.begin(9600);, et dans l’exemple de lecture-écriture d’un tableau, je déclarais lesdits tableaux avec la syntaxe uint8_t[arraysize] mon_array;… Grossière erreur, mais qui est maintenant corrigée dans la release 0.9.1, qui devrait être disponible sous peu dans le gestionnaire de bibliothèque de l’IDE Arduino. Voilà où ça mène de ne pas tester son code parce qu’on est dans le rush…