Zapis zmiennej do eepromu przed wyłączeniem urządzenia


Witam,

mam taki mały problem nie wiem jak zapisać do pamięci zmienne przed wyłączeniem urządzenia , zapis przy każdej zmianie stanu portu raczej odpada ewentualnie jeszcze zapis za pomocą przycisku




Portret użytkownika matrix

Re: Zapis zmiennej do eepromu przed wyłączeniem urządzenia

Jeśli wyłączasz dane urządzenie za pomocą przycisku podłączonego do któregoś portu to zapisuj dane do epromu w chwili naciśnięcia tego przycisku.

Portret użytkownika gosc

Lub sprawdzasz napięcie

Lub sprawdzasz napięcie zasilania i jeśli występuje zanik to wtedy zapisujesz zmienne do epromu, swego czasu widziałem takie rozwiązanie, być może było to w którymś z projektów z tej strony....

Portret użytkownika mirley

Re; EEprom

Ja sprawdzam zasilanie ale jest to tak zrobione że procesor ma swój obwód a reszta elektroniki swój. Na zasilaniu procka jest duży kondensator filtrujący i on podtrzymuje zasilanie na trochę dłużej w stosunku do zaniku zasilania głównego.

-

UWAGA! Możliwy jest zakup zaprogramowanych uC i zestawów elementów itp. do niektórych projektów. O dostępność proszę pytać via email. Konkretne oferty pojawiają się w cenniku.

Portret użytkownika slavcio2012

Hmm, a teraz mam jeszcze nowy

Hmm, a teraz mam jeszcze nowy pomysł mam kilka zmiennych w programie i chce sobie ja zapisywać w tzw.banku pamięci tak aby jednym klawiszem zapisać a drugim wybierać odczytywać je z tego banku nie wiem jak się za to zabrać tylko ,że ma różne typy zmiennych Long, Byte

Portret użytkownika mirley

Re: EEprom

Chcesz mieć kilka zestawów zapisanych wszystkich zmiennych, Bank1 ma mieć zapisane jakieś wartości wszystkich zmiennych a Bank 2 inne wartości itd, czy poprostu zapisujesz zmienne w konkretne miejsca w eeprom a przyciskiem chcesz wybierać która z tych zmiennych ma być odczytana?

Ile jest tych zmiennych? stała liczba czy mogą się zmieniać w zalezności od działania programu

-

UWAGA! Możliwy jest zakup zaprogramowanych uC i zestawów elementów itp. do niektórych projektów. O dostępność proszę pytać via email. Konkretne oferty pojawiają się w cenniku.

Portret użytkownika slavcio2012

Mam 5 zmiennych , które

Mam 5 zmiennych , które wartości będą się zmieniać od przyciśnięcia 5 przycisków i chce te zmienne zapisywać w każdym nowym banku tzn.numer banku będzie nie powtarzalny aż powiedzmy dojdzie do 50 numeru a po przekroczeniu następuje nadpisanie tej pamięci jeden po drugim a drugim przyciskiem wywołujesz te zmienne do programu

Portret użytkownika mirley

Re: Zapis eeprom

Wydaje się proste. Robisz zmienną Bank która zawiera numer aktualnie zapisywanego banku pamięci. Korzystasz z polecenia:

ad = N * bank
adres = ad + adres_lokalny
Writeeeprom zmianna, adres
 
'itd

N to ilość bajtów potrzebna na zapis wszystkich twoich zmiennych, a zmienna pomocnicza ad określa adres podstawowy zależny od wybranego banku. Zamiast adresu_lokalnego wpisujesz jakąś liczbę, np jak wszystkie zmienne były by byte, to dla N = 3 będziesz miał

ad = 3 * bank
adres = ad
Writeeeprom zmianna1, adres
adres = ad + 1
Writeeeprom zmianna2, adres
adres = ad + 2
Writeeeprom zmianna3, adres

-

UWAGA! Możliwy jest zakup zaprogramowanych uC i zestawów elementów itp. do niektórych projektów. O dostępność proszę pytać via email. Konkretne oferty pojawiają się w cenniku.

Portret użytkownika slavcio2012

A teraz wyskoczył mi jeszcze

A teraz wyskoczył mi jeszcze jeden problem , piszę kod do obsługi syntezy sterowanej impulsatorem częstotliwość zapisuje do pamięci za każdą zmianą częstotliwości , chcę uzyskać efekt tak aby np. po 3 sekundach nie używania impulsatora nastąpił zapis do pamięci.

If Freq > Scan_up Then Freq = Scan_dn                       'Dol Przestrajania
If Freq < Scan_dn Then Freq = Scan_up                       'gora Przestrajania
'zlicza do dołu
If X_gora = 0 Then : Bitwait X_gora , Set
If X_dol = 0 Then : Decr Freq : Gosub W_dol : Writeeeprom Freq , 40 :
Gosub I2c : End If : End If
 
'zlicza do góry
If X_dol = 0 Then : Bitwait X_dol , Set
If X_gora = 0 Then : Incr Freq : Gosub W_gore : Writeeeprom Freq , 40 :
Gosub I2c : End If : End If :

Portret użytkownika mirley

Re: Zapis eeprom

Ja takie coś robię przeważnie tak: (wykonywane pod flagą co 1s):

if save_licz > 0 then
  decr save_licz
  if save_licz = 0 then
 
    'Operacje zapisu parametrów   
 
  End if
End if

Teraz jeśli chcesz uruchomić zapis todajesz przy obsłudze klawiatury save_licz = 3, jak będziesz naciskał to cały czas save_licz będzie się napisywało wartościa 3 i nie zadziała ten fragment programu wyżej. Dopiero jak miną 3 sek bez dotykania klawiatury.

Jakbyś miał w programie flagę wykonywaną co np 100ms to tez będzie działać ale wtedy trzeba wpisać 30 do zmiennej zamiast 3

-

UWAGA! Możliwy jest zakup zaprogramowanych uC i zestawów elementów itp. do niektórych projektów. O dostępność proszę pytać via email. Konkretne oferty pojawiają się w cenniku.