Cos'è ElectroYou | Login Iscriviti

ElectroYou - la comunità dei professionisti del mondo elettrico

EEPROM Attiny24

Raccolta di codici sorgenti

Moderatore: Foto UtentePaolino

0
voti

[11] Re: EEPROM Attiny24

Messaggioda Foto Utentedaniele1996 » 30 ago 2022, 13:11

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
Avatar utente
Foto Utentedaniele1996
608 2 8 11
Sostenitore
Sostenitore
 
Messaggi: 1455
Iscritto il: 29 ago 2011, 11:29

0
voti

[12] Re: EEPROM Attiny24

Messaggioda Foto UtentePietroBaima » 30 ago 2022, 13:19

Allora ci deve essere anche qualcos altro, l'esempio che hai postato non funziona anche a me, ma quello che ho postato io sì.
Generatore codice per articoli:
nomi
Sul forum:
[pigreco]=π
[ohm]=Ω
[quadrato]=²
[cubo]=³
Avatar utente
Foto UtentePietroBaima
86,4k 7 12 13
G.Master EY
G.Master EY
 
Messaggi: 11590
Iscritto il: 12 ago 2012, 1:20
Località: Londra

0
voti

[13] Re: EEPROM Attiny24

Messaggioda Foto Utenteluxinterior » 30 ago 2022, 15:29

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...)
Avatar utente
Foto Utenteluxinterior
3.346 3 4 8
Master
Master
 
Messaggi: 2019
Iscritto il: 6 gen 2016, 17:48

0
voti

[14] Re: EEPROM Attiny24

Messaggioda Foto Utentedaniele1996 » 1 set 2022, 1:08

L'unica cosa che tengo collegato è un USBASP e leggo dalla memoria solo quando eseguo il comando di avrdude...
Avatar utente
Foto Utentedaniele1996
608 2 8 11
Sostenitore
Sostenitore
 
Messaggi: 1455
Iscritto il: 29 ago 2011, 11:29

0
voti

[15] Re: EEPROM Attiny24

Messaggioda Foto Utentegvee » 1 set 2022, 1:29

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 ?
Avatar utente
Foto Utentegvee
970 2 7
Stabilizzato
Stabilizzato
 
Messaggi: 354
Iscritto il: 11 feb 2018, 20:34

0
voti

[16] Re: EEPROM Attiny24

Messaggioda Foto Utentedaniele1996 » 1 set 2022, 14:39

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...
Avatar utente
Foto Utentedaniele1996
608 2 8 11
Sostenitore
Sostenitore
 
Messaggi: 1455
Iscritto il: 29 ago 2011, 11:29

0
voti

[17] Re: EEPROM Attiny24

Messaggioda Foto Utentedaniele1996 » 1 set 2022, 14:45

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....
Avatar utente
Foto Utentedaniele1996
608 2 8 11
Sostenitore
Sostenitore
 
Messaggi: 1455
Iscritto il: 29 ago 2011, 11:29

Precedente

Torna a Firmware e programmazione

Chi c’è in linea

Visitano il forum: Nessuno e 4 ospiti