Sari la conținut
ELFORUM - Forumul electronistilor

Solutie memorare RAM la inchidere


nickrvl

Postări Recomandate

Ce solutie ar fi pentru a scrie ceva/parametrii in memoria RAM in momentul cind Mc-ul e deconectat de la retea, ma gindeam la un montaj care sa citeasca tensiunea din secundarul trafului de alimentare a Mc-ului care sa se "sesizeze" in momentul cind nu mai exista tensiune pe acesta (traf) si-n secunda urmatoare ati cit mai e tensiune in condensatorii de filtraj sa-i dea comanda Mc-ului sa memoreze.....

Link spre comentariu
  • Răspunsuri 20
  • Creat
  • Ultimul Răspuns

Top autori în acest subiect

  • nickrvl

    8

  • ratza

    6

  • iulian2010

    2

  • Stefan

    1

Top autori în acest subiect

Imagini postate

Poti sa memorezi valori in eeprom cand se taie alimentarea mc-ului astfel:

Ai nevoie de portul INT0, de un condensator de 1000 mF si o dioada 10BQ040.

Am atasat o poza cu schema portului INT0 pe care trebuie sa il folosesti si o secventa scurta de cod pentru salvarea in eeprom.

Eu am folosit odata aceasta metoda si a functionat perfect.

Am selectat doar o parte din ce am folosit eu.

Poate te ajuta ca idee.

 

On Int0 Salveaza_valoarea NosaveConfig Int0 = FallingEnable Int0'Contact offSalveaza_valoarea:If Conditie = 1 ThenA = A + BIf A <> 0 ThenEprom_val = A                                             Writeeeprom Eprom_val , 10                                Waitms 20End IfEnd If

post-21770-139829600604_thumb.jpg

Link spre comentariu

Exista fel si fel de memorii special gandite pentru asa ceva (EEPROM/FLASH/FRAM/FeRAM/MRAM/PRAM si de ce nu, SRAM cu baterie/condensator de backup).Totul se rezuma la cata informatie ai nevoie sa se mentina, pentru cat timp, cat de des se actualizeaza informatia, cat de critica e pierderea ei, bugetul alocat, etc.

Link spre comentariu

Este vorba intradevar de EEPROM si este vorba de Atmega8, valoarea care trebuie scrisa este un nr de 3 cifre deci ca si timp ar trebuii sa fie indeajuns."iulian2010" +5V_u1 reprezinta alimentarea Mc-ului, dar +5 Volt de unde vine? nu cumva trebuie un "montaj" separat pentru a citi aceasta tensiune, adica ce am propus mai sus?Cred ca o sa fie ceva de genul:epp.pdfastfel se poate folosi orice alt pin nu neaparat cel INTO, corect?

Link spre comentariu

"iulian2010" +5V_u1 reprezinta alimentarea Mc-ului, dar +5 Volt de unde vine? nu cumva trebuie un "montaj" separat pentru a citi aceasta tensiune, adica ce am propus mai sus?

Folosesti aceeasi tensiune de alimentare de 5V. Alimentarea de +5V se leaga direct la PD2/INT0, pin 4 la atmega8 PDIP si +5V_u1 se leaga la VCC, respectiv pinul 7 la atmega8 PDIP. Eu am folosit aceasta metoda pe o placa cu 2 mc-uri, de aceea apare scris _u1. Aceasta metoda este testata hardware si functioneaza perfect.
Link spre comentariu

O rezistenţă şi un zener sînt suficiente, poţi citi orice pin prin poll. ICP generează o întrerupere.

Cred ca merge si asa dar legat direct din punte si un cond de netezire pe iesire zener pentru a nu ma trezii cu un "tren" de impulsuri.iulian2010, acum inteleg si este o idee buna.Sa vad ce metoda adopt mai ales ca eu am montajul deja facut si functional la care trebuie sa adaptez cea ce vreau sa fac si-n plus INTO il am deja folosit.
Link spre comentariu

Nu neapărat. Poţi reseta un timer de fiecare dată cînd pinul e în 1 logic şi incrementa cînd e în 0. Cînd trece peste o anumită valoare... zbam! :)

Link spre comentariu

Trebuie sa ai grija cu implementarea acestei functii. Trebuie sa fii foarte sigur cand dai startul "alarmei" de salvare pentru ca daca gresesti ceva in algoritm si se scrie aiurea (alarme false) de prea multe ori, eepromul are un numar limitat de scrieri (in jur de 100.000 parca) si se uzeaza. :da

Link spre comentariu

"Timerii" deja sint folositi, deci cred ca va ramine doar un port oarecare din doar doi "inca" liberi...intradevar EEprom-ul e limitat ca si nr scrieri, nu stiu precis cit dar cred ca totusi suficient.

Link spre comentariu

Incrementezi un counter, adică o variabilă, nu trebuie să dedici tot timerul pentru asta.

Ai un limbaj evoluat pentru nivelul meu si nu inteleg, gindeam ca un port (din cele doua inca disponibile) sa poata lua valoarea "1" atunci cind exista tensiune de alimentare sau "0" cind nu, si asta cu o comanda simpla:IF portx.x = 1 then....elsescrie eepromDioda zener + rezistenta unde zici ca se conecteaza? deseneaza pe schema mea ca sa pot spune ce inteleg eu prin teama de "tren de impulsuri".
Link spre comentariu

Ai înţeles bine. Funcţia ar fi ceva de genul:

if (port.pin == 1){  counter = 0;}else{  counter++;  if (counter > timeout)  {    eeprom_write(address, data);  }}
Rezistenţa şi dioda se leagă ca în schemă.

 

Link spre comentariu

Creează un cont sau autentifică-te pentru a adăuga comentariu

Trebuie să fi un membru pentru a putea lăsa un comentariu.

Creează un cont

Înregistrează-te pentru un nou cont în comunitatea nostră. Este simplu!

Înregistrează un nou cont

Autentificare

Ai deja un cont? Autentifică-te aici.

Autentifică-te acum



×
×
  • Creează nouă...

Informații Importante

Am plasat cookie-uri pe dispozitivul tău pentru a îmbunătății navigarea pe acest site. Poți modifica setările cookie, altfel considerăm că ești de acord să continui.Termeni de Utilizare si Ghidări