Ciao a tutti,
ieri ho fatto delle prove per liberare SRAM dalla mia arduino ethernet mediante la libreria FLASH....
ho dichiarato le variabili come descritto nei vari esempi, ho utilizzato memcpy() per il recupero dei dati e tutto sembra funzionare correttamente...
sembra però!!!
di seguito il caso specifico:
1- dichiaro la variabile di appogio per i dati provenienti dalla flash
uint8_t* bufAddr;
2- dichiaro la mia flash_table come segue, tipo=unint8_t, nome=FbofAddr, len=8
FLASH_TABLE(uint8_t, FbufAddr, 8, { 0x28,0x12,0x6A,0x08,0x03,0x00,0x00,0x7F },
{ 0x28,0x12,0x6A,0x08,0x03,0x00,0x00,0x7F },
{ 0x28,0x12,0x6A,0x08,0x03,0x00,0x00,0x7F },
{ 0x28,0x12,0x6A,0x08,0x03,0x00,0x00,0x7F },
{ 0x28,0x12,0x6A,0x08,0x03,0x00,0x00,0x7F },
{ 0x28,0x12,0x6A,0x08,0x03,0x00,0x00,0x7F },
{ 0x28,0x12,0x6A,0x08,0x03,0x00,0x00,0x7F },
{ 0x28,0x12,0x6A,0x08,0x03,0x00,0x00,0x7F },
{ 0x28,0x12,0x6A,0x08,0x03,0x00,0x00,0x7F },
{ 0x28,0x12,0x6A,0x08,0x03,0x00,0x00,0x7F },
{ 0x28,0x12,0x6A,0x08,0x03,0x00,0x00,0x7F },
{ 0x28,0x12,0x6A,0x08,0x03,0x00,0x00,0x7F });
3- recupero i dati dalla flash e li appoggio su bufAddr dichiarato in precedenza ed attivo la lettura dei sensori...
for (int i=0; i<12; ++i){
memcpy(&bufAddr,&FbufAddr[i],8); //<<-- punto in questione
datastreams_meas[i].setFloat(ReadDS18x20(bufAddr));
Serial.print("index: ");
Serial.println(i, DEC);
printData(bufAddr);
}
a questo punto, la funzione memcpy(&bufAddr,&FbufAddr*,8); mi restituisce un array di 8 byte che dovrebbero essere gli stessi contenuti in FLASH_TABLE partendo da un indice 0 fino a indice 11 ossia 0x28,0x12,0x6A,0x08,0x03,0x00,0x00,0x7F , bèh i dati ci sono..., da indice 0 a indice 11, ma non sono minimamente correlati a quelli presenti in flash...*
mi sfugge qualcosa? devo effettuare uno shift register di 2 byte per il puntatore (credo, visto che sizeof(&FbufAddr*); mi restituisce 2)*
credo che mi sto perdendo in un nun nulla...
grazie ancora
saluti
kattivik76