Go Down

Topic: salvare un valore su eeprom prima dello spegnimento...basta un condensatore? (Read 1 time) previous topic - next topic

Artal

Pensando di utilizzare un circuito standalone, se avessi bisogno di salvare un valore su eeprom solo appena prima delli spegnimento potrei utilizzare un condensatore in parallelo al pin di alimentazione e, collegando il +5 ad un pin in ingresso sfruttare la carica del condensatore in modo che, allo spegnimento il pin vada a 0 mentre il microcontrollore sia ancora brevemente alimentato dal condensatore?
A quel punto basterebbe avere un interrupt sul pin che chiama il caricamento se eeprom ma ho un paio di dubbi perchè non so:

1: quanto tempo impiega l'atmel a salvare un valore su eeprom interna
2: quanto è il carico? Cioè, il tempo si calcola T=R*C no?!dove in questo caso R (ditemi se sbaglio) è il microcontrollore...quanto vale dunque la resistenza?!

thank you!

leo72

1) la scrittura su EEPROM interna richiede 3,3 ms
2) quella formula da il tempo T in secondi ed indica con "C" la capacità espressa in Farad del condensatore, e con "R" la resistenza in Ohm.

ƎR

stavo facendo delle prove proprio adesso su una cosa del genere, nella formula devi vedere quanta corrente serve al micro per fare quello che sta facendo, non tanto la sua resistenza e quindi vedere se il tempo di scarica del condensatore a tot mA è minore del tempo di scrittura sulla EEPROM... a farla semplice io prenderei un C bello grosso così da non rischiare niente :)
dal punto di vista elettrico metterei anche un diodo in modo che il condensatore si scarichi solo sul micro e non sul resto del circuito

comunque stovedendo che ogni volta che programmo via ISP l'atmega328 mi pulisce tutta la EEPROM, sbaglio? questa roba non è bella...
Riccardo Ertolupi of the Vicenza Thunders Team: http://www.VicenzaThunders.com

leo72


stavo facendo delle prove proprio adesso su una cosa del genere, nella formula devi vedere quanta corrente serve al micro per fare quello che sta facendo, non tanto la sua resistenza e quindi vedere se il tempo di scarica del condensatore a tot mA è minore del tempo di scrittura sulla EEPROM... a farla semplice io prenderei un C bello grosso così da non rischiare niente :)
dal punto di vista elettrico metterei anche un diodo in modo che il condensatore si scarichi solo sul micro e non sul resto del circuito

Concordo. Conviene usare il supercondensatore solo col micro anche per risparmiare la corrente. E' inutile disperderla a giro nel circuito quando alla fine solo il micro deve essere alimentato per quel mezzo secondo necessario a scrivere.

Quote

comunque stovedendo che ogni volta che programmo via ISP l'atmega328 mi pulisce tutta la EEPROM, sbaglio? questa roba non è bella...

Sì, resetta tutto. Per evitare, puoi flashare il firmware da terminale usando avrdude

sciorty

Mi chiedevo, da ignorante: visto che in scarica la corrente circola nel verso opposto, che abbiamo sul pin?

ƎR


Mi chiedevo, da ignorante: visto che in scarica la corrente circola nel verso opposto, che abbiamo sul pin?

in che senso? è come se avessi una batteria, non succede niente di particolare
Riccardo Ertolupi of the Vicenza Thunders Team: http://www.VicenzaThunders.com

ƎR


Quote

comunque stovedendo che ogni volta che programmo via ISP l'atmega328 mi pulisce tutta la EEPROM, sbaglio? questa roba non è bella...

Sì, resetta tutto. Per evitare, puoi flashare il firmware da terminale usando avrdude

ma perchè fa sta cosa? così facendo ogni volta che programmo va a scrivere sulla eeprom che ha un numero di scritture limitato...
Riccardo Ertolupi of the Vicenza Thunders Team: http://www.VicenzaThunders.com

leo72



Quote

comunque stovedendo che ogni volta che programmo via ISP l'atmega328 mi pulisce tutta la EEPROM, sbaglio? questa roba non è bella...

Sì, resetta tutto. Per evitare, puoi flashare il firmware da terminale usando avrdude

ma perchè fa sta cosa? così facendo ogni volta che programmo va a scrivere sulla eeprom che ha un numero di scritture limitato...

Sempre  più comunque della Flash, pensaci  ;)
Flash interna: 10.000 riscritture
EEPROM interna: 100.000 riscritture

Quindi prima che ti "muoia" la EEPROM, ti è "morta" la Flash  :smiley-yell:

ƎR


Sempre  più comunque della Flash, pensaci  ;)
Flash interna: 10.000 riscritture
EEPROM interna: 100.000 riscritture

Quindi prima che ti "muoia" la EEPROM, ti è "morta" la Flash  :smiley-yell:

non so perchè ma ero convito che fosse il contrario :smiley-sweat: questa notizia risolve molti problemi che mi stavo ponendo nelle ultime ore :P
Riccardo Ertolupi of the Vicenza Thunders Team: http://www.VicenzaThunders.com

leo72

Casomai la cancellazione della EEPROM rompe le scatole nel caso nella EEPROM si siano scritti dei dati importanti, che vengono perduti.
Ecco perché ti consigliavo, nel caso, di compilare con l'IDE per crearti il firmware e poi di flasharlo usando avrdude da terminale, per evitare appunto di cancellarli.

Tornando al "perché" della cancellazione totale, non so dirti il motivo. Si era già parlato di questo ma non mi ricordo se era venuta fuori la motivazione.

Testato

ricordo anche io ne parlammo approfonditamente,
ricordo anche che il numero di serie arduinico, presente in eeprom, non viene cancellato normalmente dall'ide

per il condensatore, e' una buona idea, usa quelli da 1Farad, che si usano al posto delle coincell, cosi' "aivoglia" di scrivere
- [Guida] IDE - http://goo.gl/ln6glr
- [Lib] ST7032i LCD I2C - http://goo.gl/GNojT6
- [Lib] PCF8574+HD44780 LCD I2C - http://goo.gl/r7CstH

leo72


ricordo anche io ne parlammo approfonditamente,
ricordo anche che il numero di serie arduinico, presente in eeprom, non viene cancellato normalmente dall'ide

Negli ultimi 2 byte della EEPROM ci sarebbe anche il numero di riscritture della Flash effettuate. Tale valore si perde ovviamente nel caso si erasi la memoria senza informare avrdude di mantenere quel contatore. L'IDE lo fa in automatico, ma in pochi lo sanno e la prima volta che brasano il chip cancellano tutto, firma e contatore compresi.


ƎR

beh se ritrovate quella discussione mettete il link che potrebbe essermi molto utile, grazie ;)


Negli ultimi 2 byte della EEPROM ci sarebbe anche il numero di riscritture della Flash effettuate. Tale valore si perde ovviamente nel caso si erasi la memoria senza informare avrdude di mantenere quel contatore. L'IDE lo fa in automatico, ma in pochi lo sanno e la prima volta che brasano il chip cancellano tutto, firma e contatore compresi.

ma come funziona questo contatore? chi lo incrementa? se io salvo qualcosa in quelle locazioni di memoria posso avere interferenze?
Riccardo Ertolupi of the Vicenza Thunders Team: http://www.VicenzaThunders.com

Madwriter


Ecco perché ti consigliavo, nel caso, di compilare con l'IDE per crearti il firmware e poi di flasharlo usando avrdude da terminale, per evitare appunto di cancellarli.

Uh quello che serve a me cosi evito di aprire un nuovo topic, posso flashare di mio un atmega 8 prendendo l'hex dell'ide?
mi basta il board.txt(dove lo trovo?) modificato?
posso farlo anche senza bootloader?(uso un quarzo a 16 mhz)
"Due cose sono infinite: l'universo e la stupidità umana, ma riguardo l'universo ho ancora dei dubbi..." Albert Einstein

Testato

dovrebbe essere tutto nella mia piccola guida,
se hai voglia invece di studiare c'e' quella del menny  :)
- [Guida] IDE - http://goo.gl/ln6glr
- [Lib] ST7032i LCD I2C - http://goo.gl/GNojT6
- [Lib] PCF8574+HD44780 LCD I2C - http://goo.gl/r7CstH

Go Up