Offline
Newbie
Karma: 0
Posts: 23
|
 |
« on: February 16, 2013, 11:17:48 am » |
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!
|
|
|
|
« Last Edit: February 16, 2013, 11:19:26 am by Artal »
|
Logged
|
|
|
|
|
Forum Moderator
Italy
Online
Brattain Member
Karma: 226
Posts: 16997
Don't know what I do
|
 |
« Reply #1 on: February 16, 2013, 11:36:18 am » |
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.
|
|
|
|
|
Logged
|
|
|
|
|
Camisano Vicentino (VI), Italy
Offline
God Member
Karma: 4
Posts: 850
ƎR like no other.
|
 |
« Reply #2 on: February 16, 2013, 11:53:27 am » |
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...
|
|
|
|
|
Logged
|
|
|
|
|
Forum Moderator
Italy
Online
Brattain Member
Karma: 226
Posts: 16997
Don't know what I do
|
 |
« Reply #3 on: February 16, 2013, 12:15:46 pm » |
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. 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
|
|
|
|
|
Logged
|
|
|
|
|
Capo d'Orlando
Offline
God Member
Karma: 2
Posts: 652
|
 |
« Reply #4 on: February 16, 2013, 01:02:38 pm » |
Mi chiedevo, da ignorante: visto che in scarica la corrente circola nel verso opposto, che abbiamo sul pin?
|
|
|
|
|
Logged
|
|
|
|
|
Camisano Vicentino (VI), Italy
Offline
God Member
Karma: 4
Posts: 850
ƎR like no other.
|
 |
« Reply #5 on: February 16, 2013, 01:17:09 pm » |
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
|
|
|
|
|
Logged
|
|
|
|
|
Camisano Vicentino (VI), Italy
Offline
God Member
Karma: 4
Posts: 850
ƎR like no other.
|
 |
« Reply #6 on: February 16, 2013, 06:51:02 pm » |
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...
|
|
|
|
|
Logged
|
|
|
|
|
Forum Moderator
Italy
Online
Brattain Member
Karma: 226
Posts: 16997
Don't know what I do
|
 |
« Reply #7 on: February 17, 2013, 10:34:51 am » |
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 
|
|
|
|
|
Logged
|
|
|
|
|
Camisano Vicentino (VI), Italy
Offline
God Member
Karma: 4
Posts: 850
ƎR like no other.
|
 |
« Reply #8 on: February 17, 2013, 10:41:21 am » |
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  non so perchè ma ero convito che fosse il contrario  questa notizia risolve molti problemi che mi stavo ponendo nelle ultime ore 
|
|
|
|
|
Logged
|
|
|
|
|
Forum Moderator
Italy
Online
Brattain Member
Karma: 226
Posts: 16997
Don't know what I do
|
 |
« Reply #9 on: February 17, 2013, 10:46:53 am » |
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.
|
|
|
|
|
Logged
|
|
|
|
|
0
Offline
Faraday Member
Karma: 18
Posts: 4048
Arduino rocks
|
 |
« Reply #10 on: February 17, 2013, 11:42:10 am » |
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
|
|
|
|
|
Logged
|
|
|
|
|
Forum Moderator
Italy
Online
Brattain Member
Karma: 226
Posts: 16997
Don't know what I do
|
 |
« Reply #11 on: February 17, 2013, 12:36:11 pm » |
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.
|
|
|
|
|
Logged
|
|
|
|
|
Camisano Vicentino (VI), Italy
Offline
God Member
Karma: 4
Posts: 850
ƎR like no other.
|
 |
« Reply #12 on: February 17, 2013, 05:49:51 pm » |
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?
|
|
|
|
|
Logged
|
|
|
|
|
Offline
Edison Member
Karma: 16
Posts: 1829
|
 |
« Reply #13 on: February 17, 2013, 06:03:52 pm » |
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)
|
|
|
|
|
Logged
|
"Due cose sono infinite: l'universo e la stupidità umana, ma riguardo l'universo ho ancora dei dubbi..." Albert Einstein
|
|
|
|
0
Offline
Faraday Member
Karma: 18
Posts: 4048
Arduino rocks
|
 |
« Reply #14 on: February 17, 2013, 06:19:54 pm » |
dovrebbe essere tutto nella mia piccola guida, se hai voglia invece di studiare c'e' quella del menny 
|
|
|
|
|
Logged
|
|
|
|
|
|