Rtc ds1307 nvram comment enregistrer un unsigned long?

Bonjour,
l'exemple de rtclib 1307nvram permet d'enregistrer des bytes en sram (56 bytes libres)
comment décomposer un unsigned long 4 bytes pour enregistrer dans 4 cases sram et le reconstituer en lisant les 4 adresses ?
la sram 56 bytes disponibles aux adresses 0x08>>0x3F
la fonction writenvram et readnvram adresses 0 a 55 decimal, détail en passant
en fait je n'ai qu'un unsigned long qui change de valeur environ 50x/24h, je dois juste lire lastcount=lastcount+newcount, l'ancienne valeur est écrasée par la nouvelle et l'écrire à la meme adresse de départ. il faut creer un tableau de 4 cases puis écrire chaque case aux adresses contigues,etc.. ? ma logique est en panne
dans l'exemple cité

// Example reading multiple bytes:
  uint8_t readData[4] = {0};  // tableau de bytes ? valeur init 0 ?
  myrtc.readnvram(readData, 4, 2);  // le 2 adresse sram de départ lecture ?
// lit 4 cases et rempli le tableau ? 

  Serial.println(readData[0], HEX); // print contenu tableau en hexa
  Serial.println(readData[1], HEX);
  Serial.println(readData[2], HEX);
  Serial.println(readData[3], HEX);

Merci pour toute aide
exemple complet

// Example of using the non-volatile RAM storage on the DS1307.
// You can write up to 56 bytes from address 0 to 55.
// Data will be persisted as long as the DS1307 has battery power.

#include <RTClib.h>

RTC_DS1307 myrtc;

void printnvram(uint8_t address) {
  Serial.print("Address 0x");
  Serial.print(address, HEX);
  Serial.print(" = 0x");
  Serial.println(myrtc.readnvram(address), HEX);
}

void setup () {
  Serial.begin(57600);
  if (! myrtc.begin()) {
    Serial.println("Couldn't find RTC");
    Serial.flush();
    abort();
  }

  // Print old RAM contents on startup.
  Serial.println("Current NVRAM values:");
  for (int i = 0; i < 6; ++i) {
     printnvram(i);
  }

  // Write some bytes to non-volatile RAM storage.
  // NOTE: You can only read and write from addresses 0 to 55 (i.e. 56 byte values).
  Serial.println("Writing NVRAM values.");
  // Example writing one byte at a time:
  myrtc.writenvram(0, 0xFE);  // adresse reelle physique sram 0x08
  myrtc.writenvram(1, 0xED);
  // Example writing multiple bytes:
  uint8_t writeData[4] = { 0xBE, 0xEF, 0x01, 0x02 };
  myrtc.writenvram(2, writeData, 4);

  // Read bytes from non-volatile RAM storage.
  Serial.println("Reading NVRAM values:");
  // Example reading one byte at a time.
  Serial.println(myrtc.readnvram(0), HEX);
  Serial.println(myrtc.readnvram(1), HEX);

  
  // Example reading multiple bytes:
  uint8_t readData[4] = {0};  // tableau de bytes ? valeur init 0 ?
  myrtc.readnvram(readData, 4, 2);  // le 2 adresse sram de départ lecture ?
// lit 4 cases et rempli le tableau ? 

  
  Serial.println(readData[0], HEX); // print contenu case 0 en hexa
  Serial.println(readData[1], HEX);
  Serial.println(readData[2], HEX);
  Serial.println(readData[3], HEX);
}
void loop () {
  // Do nothing in the loop.
}

je me suis débrouillé, pas tres académique on fait comme on peut
avec mes bidouilles quand je lis date et heure je suis le 14/07/2099, mdrr, meme en faisant setRtc date time, j'ai du enlever la pile quelques secondes et setRTC, ouff, des ds1307 j'en ai que 2, alors que des 3231 une dizaine : PAS DE SRAM user, le ds3232 a 236 bytes sram user mais j'en ai pas, je n'en ai pas vu sur ali en module, juste le CI vendu seul en SOP.
je prefere la biblio PJRC ds3232.h, le day of the week est dans la lib, il y a le nom des mois en mode long et court, il suffit de changer les noms anglais en francais dans la biblio, il y a les fonctions writesram et readsram mais uniquement pour le 3232.