Leggere-scrivere variabile su eeprom winbond

Ciao a tutti,
dopo un'anno di fermo lavori su arduino, causa lavori di casa-ditta, riprendo per alcuni progetti; ma in questo periodo mi sono arrugginito :frowning:
Avevo necessità di salvare su queste memorie un dato (unsigned int), per rileggerlo quando riavvio arduino (utilizzo arduino due), ho già installato la memoria, viene trovata, utilizzo la libreria spiflash SPIflash - Rinky-Dink Electronics

però nel pdf non riesco a capire le istruzioni per la scrittura-lettura... Qualcuno ha voglia di spiegarmi o di allegarmi un esempio di programma?

Un grazie infinito

Mi pare la libreria legger/scrive a pagine (256 byte) alla volta

int pagina=0;
MyFlash.readPage(pagina); // per scrivere writePage(pagina);
Serial.print("Pagina "); Serial.print(Pagina); Serial.println(":");
for(int i=0;i<256;i++)
{ Serial.print(MyFlash.buffer[i]);
  Serial.print(',');
}
Serial.println('.');

E' quello che avevo visto anche io, ci sono altre librerie per fare quello che voglio fare? Mi pare senza senso scrivere così tanto per solo un dato che serve a me...

Il gestore librerie (1.8.5) c'e' questa: SPI_Flash_LowPowerLab

sembra puoi leggere solo pochi byte.
Però al link parla di chip paginati (con pagine da 256byte), non conosco l'argomento, forse queste memorie su chip SPI sono gestiti a pagine.

nid69ita:
Però al link parla di chip paginati (con pagine da 256byte), non conosco l'argomento, forse queste memorie su chip SPI sono gestiti a pagine.

Molto spesso ...
... occorre studiarsi il datasheet del chip e vedere quali accessi permette ai dati. Ha una sigla esatta questa memoria ?

Guglielmo

Buongiorno,
mi imbatto sempre in cose complicate... Provo ad allegare il datasheet, e darò un'occhiata all'altra libreria...https://www.winbond.com/resource-files/w25q128fv_revhh1_100913_website1.pdf

Mi sembra piuttosto chiaro, pagina 4 ...

Flexible Architecture with 4KB sectors
● Uniform Sector/Block Erase (4K/32K/64K-Byte) – Program 1 to 256 byte per programmable page – Erase/Program Suspend & Resume

Quindi, per ogni singola pagina, è possibile programmare in un solo colpo da UNO a 256 bytes.

Quindi studiati bene la libreria perché la cosa deve essere possibile ... ::slight_smile:

Guglielmo

Si, vero, grazie, vedo se ci riesco, ci provo :wink:

Ma c'è qualche motivo particolare per cui non puoi utilizzare la EEPROM interna?

Ciao Sukko,
sto utilizzando arduino due, come ho scritto nel mio primo post, e sembra che non abbia memoria a bordo :frowning:

Ok, lo sospettavo ma mi era sfuggito.

Grazie nid69 e grazie Guglielmo, la libreria linkata funziona, è molto semplice, si può scrivere un byte alla volta, direi ottimo :wink:

Avrei altre 2 domande, leggendo l'ID della flash ricevo un dato in esadecimale (HEX), in che variabile devo salvare questo valore per visualizzarlo su un display, appunto come HEX? Forse in una variable CHAR? La libreria UTFT che gestisce i display non stampa un valore HEX.

Seconda cosa: il valore che devo salvare nella flash è salvato in una variabile unsigned int, come lo divido in diversi byte per scriverlo nella memoria? E al rovescio, quando lo rileggo, come lo unisco da diversi byte a un intero?
Grazie