Pagina 2 di 2

Re: EEPROM Attiny24

MessaggioInviato: 30 ago 2022, 13:11
da daniele1996
EcoTan ha scritto:Inoltre puoi provare quello che ti è stato proposto da Foto UtentePietroBaima?

Si, non scrive...
Mi serve per memorizzare dei valori analogici... Senza questa parte una sezione di codice non funzionerebbe

Re: EEPROM Attiny24

MessaggioInviato: 30 ago 2022, 13:19
da PietroBaima
Allora ci deve essere anche qualcos altro, l'esempio che hai postato non funziona anche a me, ma quello che ho postato io sì.

Re: EEPROM Attiny24

MessaggioInviato: 30 ago 2022, 15:29
da luxinterior
La tenevo per me e la scrivo con poca convinzione
ma visto che nemmeno l'esempio funzionante di PiteroBaima sembra risolvere.
Non è che per caso hai la finestra di un debugger aperta sull'area di memoria della eeprom. Il debugger accede in lettura mentre tu cerchi di scrivere e vanifica i tuoi sforzi.
Penso sia buona cosa eseguire la procedura di scrittura "tutta d'un fiato" senza step in mezzo
Non conosco il micro ma a me ad esempio è successo con gli ST di insistere a scrivere in un area di memoria dove non c'era nulla verifica la mappa di memria del tuo micro ( non di uno simile circa uguale...)

Re: EEPROM Attiny24

MessaggioInviato: 1 set 2022, 1:08
da daniele1996
L'unica cosa che tengo collegato è un USBASP e leggo dalla memoria solo quando eseguo il comando di avrdude...

Re: EEPROM Attiny24

MessaggioInviato: 1 set 2022, 1:29
da gvee
La funzione copiata dal DS prende come argomento un unsigned int per l'indirizzo di memoria EEPROM.

Però il DS stesso dice che ci sono due registri: EEARH e EEARL, tutti e due da 8 bits.

Qui i sorgenti con rispetto all'ATtiny24A per vedere come è definito in C EEAR:
https://github.com/avrdudes/avr-libc/bl ... /iotn24a.h

Hai provato ad usare un unsigned char invece dell'unsigned int ? Magari non funziona lo stesso ma per provare.. :-)

Hai verificato quanto dice il DS rispetto alla calibrazione dell'oscillatore, registro OSCCAL ?

Re: EEPROM Attiny24

MessaggioInviato: 1 set 2022, 14:39
da daniele1996
Codice: Seleziona tutto
void EEPROM_write(uint16_t ucAddress, unsigned char ucData)
{
   while(EECR & (1<<EEPE));
   //EEAR = ucAddress;

   EEARL = ucAddress;
   EEARH = ucAddress >> 8;
   EEDR = ucData;

   EECR =0b00000100;
   EECR =0b00000110;

}


Dovrebbe essere equivalente, ma ugualmente non funziona...
Gli int sono a 16Bit... Però 128B di EEPROM penso che una variabile a 8Bit dovrebbe bastare...
Ho provato ad avviare il micro senza il programmatore e ugualmente non cambia...
gvee ha scritto:Hai verificato quanto dice il DS rispetto alla calibrazione dell'oscillatore, registro OSCCAL ?

Qualche clock in più o in meno al secondo non dovrebbe essere un problema visto che l'applicazione è abbastanza grossolana... O no?

Ho provato anche con
Codice: Seleziona tutto
EEARL = ucAddress;

Con uint8_t ucAddress
ugualmente la situazione non cambia...

Re: EEPROM Attiny24

MessaggioInviato: 1 set 2022, 14:45
da daniele1996
Ho cercato su internet "Atmega328P AVR EEPROM"
Usando la libreria <avr/eeprom.h> in cui c'è la funzione
Codice: Seleziona tutto
eeprom_write_byte ((uint8_t*)5, 30);

Questa funziona...
Però strano che la funzione riportata sul datasheet non funziona....