18/10/15 16:40
Roby94
Buonasera a tutti, ho necessità di fare un copia incolla secco di un array in un EEPROM. Le parole su EEPROM sono da un byte. Ora dovrei creare una funzione che accetti in ingresso un qualsiasi array, un indirizzo della EEPROM e il numero di elementi nell'array e che quindi copi i byte dell'array esattamente come sono disposti nella EEPROM.
Piccolo punto dolente, purtroppo è praticamente piu di un anno (forse due) che non riguardo la teoria dietro i compilatori, quindi mi viene il dubbio, dato un puntatore a[] di un array di uint16, questo punterà al primo elemento, ma al byte piu significativo o a quello meno significativo?
Il mio approccio ovviamente lavorando su uC è quello di partire dal puntatore e avanzare con un semplice incremento sul puntatore e sul indirizzo della EEPROM, ma non riuscendo a reperire informazioni utili non posso andare avanti. Sinceramente a me sembra di ricordare che il puntatore punti al primo elemento in particolare al "lowbyte", facendo piu uno ci si sposta al "highbyte" e con un ulteriore piu uno ci si sposta al "lowbyte" del secondo elemento, ma vorrei una conferma.
Grazie
Ho abbozzato questo
Piccolo punto dolente, purtroppo è praticamente piu di un anno (forse due) che non riguardo la teoria dietro i compilatori, quindi mi viene il dubbio, dato un puntatore a[] di un array di uint16, questo punterà al primo elemento, ma al byte piu significativo o a quello meno significativo?
Il mio approccio ovviamente lavorando su uC è quello di partire dal puntatore e avanzare con un semplice incremento sul puntatore e sul indirizzo della EEPROM, ma non riuscendo a reperire informazioni utili non posso andare avanti. Sinceramente a me sembra di ricordare che il puntatore punti al primo elemento in particolare al "lowbyte", facendo piu uno ci si sposta al "highbyte" e con un ulteriore piu uno ci si sposta al "lowbyte" del secondo elemento, ma vorrei una conferma.
Grazie
Ho abbozzato questo
template <typename T> void EEPROM::Read(uint16_t address, T array[], uint16_t n) { if(n != 0) { n *= sizeof(T); for(;n>0;n--) { *array = EEPROMRead(address); array++; address++; } } }
Ultima modifica effettuata da Roby94 18/10/15 17:23
aaa