NON esiste il concetto di "cancellare" ...
... se proprio vuoi, ci scrivi detro 0xFF che è il valore che normalemnte hanno di base quando sono nuove.
Tieni però presente che le EEPROM hanno un numero di scritture limitato, es. quella dentro l'ATmega328P di Arduino UNO, è garantita per 100'000 scritture ... che possono essere una quantità enorme come possono essere pochissime, in funzione di ogni quanto ci scrivi.
In che senso ? Non puoi scrivere più celle contemporaneamente, devi fare un ciclo che incrementa l'indirizzo e scrive nei vari bytes. Al limite, lavorando in "page mode" puoi scrivere 32 byte di fila senza dover dare ogni volta l'indirizzo.
gpb01:
In che senso ? Non puoi scrivere più celle contemporaneamente, devi fare un ciclo che incrementa l'indirizzo e scrive nei vari bytes. Al limite, lavorando in "page mode" puoi scrivere 32 byte di fila senza dover dare ogni volta l'indirizzo.
Per scrivere 1 byte si trasferisce l' indirizzo della cella di memoria e il contenuto e si manda una condizione di stop.
Per scrivere una page ovvero 32 Byte si deve incominciare con l' inizio della page che va a step di 32. Prima pagina da 0 a 31, poi da 32 a 63 ecc.
Si manda l'indirizzo della prima cella e poi 32 bit di dati e si manda una condizione di stop. I dati devono essere tutti all' intero della page. Una scrittura non prosegue nella pagina succesiva ma all inizio di quella pagina.
esempio: se parti da 47 (metá della seconda page) i primi 16 byte andranno nelle celle 47 a 63 e i sucessivi 16 byte nelle celle 32 a 46 e non nelle celle da 64 a 80.
uwefed:
Attenzione, il page mode é un po complesso
In realtà non è così difficile ...
... il problema è che NON si devono usare librerie già fatte (... che probbailmente non lo prevedono),ma studiare il datasheet, capire come il chip funziona ed usare la Wire standard con cui fai una requestFrom() dicendogli che vuoi 32 bytes da un indirizzo e imponi la condizone di "stop" (terzo parametro) e poi fai le letture
Emmm ... è che proprio perché sei alle prime armi ti mancano parecchie nozioni ...
Al momneto limitati a fare come fai, usando la libreria che stai usando, intanto STUDIA come funziona il bus I2C, puoi leggere QUI e, più in dettaglio tutto le varie sezioni di quello che trovi QUI.
Assimilato bene questo, ti studi come funziona la libreria Wire e tutti i suoi metodi ... dopo di che ne riparliamo
tramite la libreria writeAnything.h di arduino e eerom.h sono riuscito a farlo sulla eeprom interna ma lo forrei fare sulla eeprom esterna 24c32 e non riesco a capire come impostare il tutto
per scrivre sulla eeprom esterna ho usato questa libreria Eeprom24C32_64.h
Scusa ma ... hai studiato i sorgenti della libreria che stai usando ? ... NO ? ... armati di santa pazienza e studiateli, perché ho visto che contengono tutti metodi che a te occorrono, INCLUSE le scritture in "page mode" che cercavi !!!
Studiandoli scoprirai che per scrivere la tua struttura, basta passare al giusto metodo il puntatore e la linghezza di ciò che vuoi scrivere/leggere e la libreria fa il resto !
si ho guardato la libreria come ti ho detto non sono molto esperto ci sono dei passaggi che non riesco a capire se qualcuno mi spiegasse forse capirei meglio anche con un esempio descritto in modo da capire
Teoricamente con la libreria di Christiansen o col mio fork (GitHub - PaoloP74/extEEPROM: Arduino library to support external I2C EEPROMs.) della sua libreria, c'è la funione write dove passi il puntatore ad array. Dovrebbe valere anche per le strutture.
L'importante è passare anche la lunghezza dei dati scritti.
p.s. la funzione Update su array è vuota e non funziona.