Hej wszystkim. Pytanie moje dotyczy przechowywania kilku zmiennych w pamięci ulotnej i ewentualny zapis wartości tych zmiennych do EEPROM w określonym momencie.
Program napisany w Bascom i póki co nie mam ochoty przerzucać go do C więc muszę rozwiązać to na aktualnym etapie
Otóż mam sobie 3 zmienne:
Zmienne te to nic innego jak licznik czasu pracy jakiegoś urządzenia - licznik uruchamia się w momencie podania "1" do jakiegoś tam wejścia uC.
Najpierw zlicza sekundy, później minuty i godziny.
Myślałem, żeby zapis do EEPROM wykonywać w momencie kiedy licznik się zatrzymuje, ale urządzenie uruchamia się i wyłącza kilkanaście razy na godzinę więc i to załatwi mi szybko EEPROM
Oczywistym jest, że wszystkie 3 zmienne są dla mnie istotne i nie mogą się kasować przy restarcie lub zaniku zasilania.
Do tej pory ktoś kto pisał program rozwiązał zadanie tak, że wszystkie 3 zmienne były zapisywane w każdej pętli do EEPROM-a - świetnie, tyle, że czas życia EEPROM wynosił 4 miesiące ciągłej pracy a później krzaki przy odczycie wartości z EEPROM.
Są zdefiniowane takie zmienne:
Chcę to poprawić i stąd moje pytania.
Mam takie rozwiązanie:
Podczas normalnej pracy liczniki sekund, minut i godzin są normalnie zwiększane jak do tej pory, ale nie są zapisywane co sekundę do EEPROM-a tylko "wiszą" sobie w pamięci (chyba SRAM).
Wykorzystuję jedno wejście uC do kontroli zasilania i w przypadku zaniku wartości zapisywane są do EEPROM - czyli raz na ruski rok.
Oczywiście podtrzymanie zasilania mam zrealizowane na jakieś 10 minut.
Pytanie
1. Czy takie zmienne mogą sobie tak "wisieć" w pamięci ulotnej, zmieniać swoją wartość i nie będzie błędów jeśli nie będą zapisywane na bieżąco do EEPROM?
2. A może muszę dopisać jakieś specjalne instrukcje "zapisywania" tych zmiennych w pamięci ulotnej co jakiś czas żeby mieć pewność, że nie znikną?
3. Jeśli zanik zasilania może wystąpić raz na 3 miesiące i wtedy będzie zapis do EEPROM to może dla bezpieczeństwa zapisywać dodatkowo dane co 24h do EEPROM - najwyżej stracę wartości z ostatniej doby - a może jednak nawet i tego nie trzeba robić bo nic nie zniknie i się nie wykrzaczy?
Dzięki za cierpliwość w czytaniu i odpowiedzi
Program napisany w Bascom i póki co nie mam ochoty przerzucać go do C więc muszę rozwiązać to na aktualnym etapie
Otóż mam sobie 3 zmienne:
Kod: VB.net
Zmienne te to nic innego jak licznik czasu pracy jakiegoś urządzenia - licznik uruchamia się w momencie podania "1" do jakiegoś tam wejścia uC.
Najpierw zlicza sekundy, później minuty i godziny.
Myślałem, żeby zapis do EEPROM wykonywać w momencie kiedy licznik się zatrzymuje, ale urządzenie uruchamia się i wyłącza kilkanaście razy na godzinę więc i to załatwi mi szybko EEPROM
Oczywistym jest, że wszystkie 3 zmienne są dla mnie istotne i nie mogą się kasować przy restarcie lub zaniku zasilania.
Do tej pory ktoś kto pisał program rozwiązał zadanie tak, że wszystkie 3 zmienne były zapisywane w każdej pętli do EEPROM-a - świetnie, tyle, że czas życia EEPROM wynosił 4 miesiące ciągłej pracy a później krzaki przy odczycie wartości z EEPROM.
Są zdefiniowane takie zmienne:
Kod: VB.net
Chcę to poprawić i stąd moje pytania.
Mam takie rozwiązanie:
Podczas normalnej pracy liczniki sekund, minut i godzin są normalnie zwiększane jak do tej pory, ale nie są zapisywane co sekundę do EEPROM-a tylko "wiszą" sobie w pamięci (chyba SRAM).
Wykorzystuję jedno wejście uC do kontroli zasilania i w przypadku zaniku wartości zapisywane są do EEPROM - czyli raz na ruski rok.
Oczywiście podtrzymanie zasilania mam zrealizowane na jakieś 10 minut.
Pytanie
1. Czy takie zmienne mogą sobie tak "wisieć" w pamięci ulotnej, zmieniać swoją wartość i nie będzie błędów jeśli nie będą zapisywane na bieżąco do EEPROM?
2. A może muszę dopisać jakieś specjalne instrukcje "zapisywania" tych zmiennych w pamięci ulotnej co jakiś czas żeby mieć pewność, że nie znikną?
3. Jeśli zanik zasilania może wystąpić raz na 3 miesiące i wtedy będzie zapis do EEPROM to może dla bezpieczeństwa zapisywać dodatkowo dane co 24h do EEPROM - najwyżej stracę wartości z ostatniej doby - a może jednak nawet i tego nie trzeba robić bo nic nie zniknie i się nie wykrzaczy?
Dzięki za cierpliwość w czytaniu i odpowiedzi