Cos'è ElectroYou | Login Iscriviti

ElectroYou - la comunità dei professionisti del mondo elettrico

EEPROM Attiny24

Raccolta di codici sorgenti

Moderatore: Foto UtentePaolino

0
voti

[1] EEPROM Attiny24

Messaggioda Foto Utentedaniele1996 » 29 ago 2022, 2:27

Ciao a tutti, avrei la necessità di scrivere alcuni valori sull'eeprom. Sul datasheet è riportato il seguente codice:
Codice: Seleziona tutto
void EEPROM_write(uint16_t ucAddress, unsigned char ucData)
{
   /* Wait for completion of previous write */
   while(EECR & (1<<EEPE));
   /* Set Programming mode */
   EECR = (0<<EEPM1)|(0<<EEPM0);
   /* Set up address and data registers */
   EEAR = ucAddress;
   EEDR = ucData;
   /* Write logical one to EEMPE */
   EECR |= (1<<EEMPE);
   /* Start eeprom write by setting EEPE */
   EECR |= (1<<EEPE);
}

Ho provato ad eseguirlo, ma non funziona. C'è qualcosa che manca?
Avatar utente
Foto Utentedaniele1996
607 2 8 11
Sostenitore
Sostenitore
 
Messaggi: 1519
Iscritto il: 29 ago 2011, 11:29

0
voti

[2] Re: EEPROM Attiny24

Messaggioda Foto UtenteEcoTan » 29 ago 2022, 7:39

Faccio riferimento al Basic. Secondo me, quando definisci la variabile, devi scrivere per esempio:
Dim Prova As Eram Integer
con la parola chiave Eram e poi tutto resta uguale come se fosse in Ram.
Avatar utente
Foto UtenteEcoTan
7.427 4 11 13
Expert EY
Expert EY
 
Messaggi: 5189
Iscritto il: 29 gen 2014, 8:54

0
voti

[3] Re: EEPROM Attiny24

Messaggioda Foto Utentedaniele1996 » 29 ago 2022, 13:28

sinceramente non ho capito cosa vuoi dire...
Avatar utente
Foto Utentedaniele1996
607 2 8 11
Sostenitore
Sostenitore
 
Messaggi: 1519
Iscritto il: 29 ago 2011, 11:29

0
voti

[4] Re: EEPROM Attiny24

Messaggioda Foto Utentedaniele1996 » 29 ago 2022, 14:04

Con la combinazione 0 0 sarebbe erase & write, ho provato ad impostare la configurazione only write ma ugualmente non funziona...
Avatar utente
Foto Utentedaniele1996
607 2 8 11
Sostenitore
Sostenitore
 
Messaggi: 1519
Iscritto il: 29 ago 2011, 11:29

1
voti

[5] Re: EEPROM Attiny24

Messaggioda Foto Utentegvee » 29 ago 2022, 14:52

Ciao,

Hai seguito tutti i passi di configurazione del datasheet ?

PS: quando apri un thread spiega sempre punto per punto il procedimento e riporta i link al datasheet e/o AN que stai seguendo...
Avatar utente
Foto Utentegvee
1.105 2 7
Stabilizzato
Stabilizzato
 
Messaggi: 401
Iscritto il: 11 feb 2018, 20:34

0
voti

[6] Re: EEPROM Attiny24

Messaggioda Foto UtenteEcoTan » 29 ago 2022, 19:44

daniele1996 ha scritto:cosa vuoi dire

Niente, che col Basic è più facile.
In che senso non funziona, provi a rileggere quello che hai scritto?
Avatar utente
Foto UtenteEcoTan
7.427 4 11 13
Expert EY
Expert EY
 
Messaggi: 5189
Iscritto il: 29 gen 2014, 8:54

0
voti

[7] Re: EEPROM Attiny24

Messaggioda Foto Utentedaniele1996 » 29 ago 2022, 23:04

Con l'ISP scrivo e leggo correttamente, dal programma eseguito dal micro quando provo a leggere i dati che dovrebbero risultare nella memoria non ci sono...
Avatar utente
Foto Utentedaniele1996
607 2 8 11
Sostenitore
Sostenitore
 
Messaggi: 1519
Iscritto il: 29 ago 2011, 11:29

0
voti

[8] Re: EEPROM Attiny24

Messaggioda Foto UtentePietroBaima » 30 ago 2022, 0:41

Ero curioso e mi sono messo a replicarlo (un po' alla cavolo, ma spero si capisca. Poi te lo sistemi tu) e ho capito perché non funziona :mrgreen:

Invece di usare OR e AND scrivi i registri direttamente oppure compila senza alcun livello di ottimizzazione del codice (sconsigliato).

Codice: Seleziona tutto
void EEPROM_write(unsigned int uiAddress, unsigned char ucData)
{
   while(EECR & (1<<EEWE));
   EEAR = uiAddress;
   EEDR = ucData;

   EECR =0b00000100;
   EECR =0b00000110;

}

unsigned char EEPROM_read(unsigned int uiAddress)
{
   /* Wait for completion of previous write */
   while(EECR & (1<<EEWE));
   /* Set up address register */
   EEAR = uiAddress;
   /* Start eeprom read by writing EERE */
   EECR |= (1<<EERE);
   /* Return data from data register */
   return EEDR;
}


EDIT: per fare la prova ho utilizzato un ATMEGA8 con gli anni di Mara Venier, ma non dovrebbe fare differenza.
Generatore codice per articoli:
nomi
Sul forum:
[pigreco]=π
[ohm]=Ω
[quadrato]=²
[cubo]=³
Avatar utente
Foto UtentePietroBaima
89,0k 7 12 13
G.Master EY
G.Master EY
 
Messaggi: 12041
Iscritto il: 12 ago 2012, 1:20
Località: Londra

0
voti

[9] Re: EEPROM Attiny24

Messaggioda Foto Utentedaniele1996 » 30 ago 2022, 1:48

Può essere un problema di fuse? ho provato a rimuovre le operazioni logiche ma non cambia nulla...
Allegati
Immagine 2022-08-30 014716.png
Avatar utente
Foto Utentedaniele1996
607 2 8 11
Sostenitore
Sostenitore
 
Messaggi: 1519
Iscritto il: 29 ago 2011, 11:29

0
voti

[10] Re: EEPROM Attiny24

Messaggioda Foto UtenteEcoTan » 30 ago 2022, 2:26

Ci capisco quasi nulla ma dico la mia, non ti fidare del debug ed accendi il solito led o fai qualcosa di tangibile.
Inoltre puoi provare quello che ti è stato proposto da Foto UtentePietroBaima?
Avatar utente
Foto UtenteEcoTan
7.427 4 11 13
Expert EY
Expert EY
 
Messaggi: 5189
Iscritto il: 29 gen 2014, 8:54

Prossimo

Torna a Firmware e programmazione

Chi c’è in linea

Visitano il forum: Nessuno e 65 ospiti