Kanał - ATNEL tech-forum
Wszystkie działy
Najnowsze wątki



Teraz jest 5 mar 2026, o 21:33


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 11 ] 
Autor Wiadomość
PostNapisane: 1 sty 2014, o 23:35 
Offline
Moderator
Avatar użytkownika

Dołączył(a): 03 paź 2011
Posty: 27450
Lokalizacja: Szczecin
Pomógł: 1045

PRZEDE wszystkim jeśli się rozsądnie używa EEPROM'a to w zasadzie nie ma takich potrzeb ... a jeśli dokonujesz zbyt często zapisu to i tak nic ci nie pomoże :(

tzn no są takie techniki aby co jakiś czas zmieniać pozycję - i można to również zrobić tak jak piszesz - ... tylko mówię - zacznij może od określenia CO ILE będziesz dokonywał zapisu ... to jest ważniejsze (tak mi się wydaje)

_________________
zapraszam na blog: http://www.mirekk36.blogspot.com (mój nick Skype: mirekk36 ) [ obejrzyj Kurs EAGLE ] [ mój kanał YT TV www.youtube.com/mirekk36 ]



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 2 sty 2014, o 20:43 
Offline
Użytkownik

Dołączył(a): 16 maja 2012
Posty: 349
Lokalizacja: Legnica
Zbananowany użytkownik

Pomógł: 23

Taką techniką może być umieszczenie w EEPROM tablicy gdzie każdy element to dane zapisywane wspomniane 9000 razy wraz z licznikiem wykorzystania zamknięte w strukturę, oraz indeks tablicy z aktualnie obsługiwanymi danymi. Po wyczerpaniu limitu zapisów indeks zwiększyć o 1 i pisać w kolejny element tablicy. Tak więc pomysł kol. dambo jest ok co do kierunku. Wystarczy zamknąć strukturę w tablicy i zamiast przechowywania adresu wystarczy trzymać aktualny indeks. Zmodyfikowanym nieco podejściem może być propozycja TMF'a z jego pierwszej książki o AVR'ach tj. każdy zapis dokonywać w kolejnej komórce tablicy. Po osiągnięciu końca tablicy indeks przenieść na początek. Nie trzeba wtedy trzymać licznika zapisów w poszczególnych komórkach tablicy, bo cały obszar tablicy jest równo obciążany zapisami. No może jeden globalny licznik zapisów który da informację o zbliżaniu się do teoretycznego limitu zapisów. Na koniec moja osobista dygresja na bazie tego czego do tej pory się dowiedziałem z lektury książek kol.Mirka z jego poradników i tego forum. Zapisywanie dzięsiątki tysięcy razy jakiś danych do EEPROM'a wygląda kiepsko. Może lepiej rozważyć przechowywanie danych w pamięci RAM i zapisywanie ich tylko w sytuacji zaniku zasilania - czyli jakiś rozsądny układ podtrzymania zasilania na czas zapisu do EEPROM. Pozostaje jeszcze zawieszenie układu ( co w zasadzie powinno być z programu wyeliminowane ) ale może warto wtedy dobrać układ z takim watchdogiem, w którym da się zaszyć jakąś procedurę przed resetem.


Autor postu otrzymał pochwałę

_________________
sig off ;(



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 3 sty 2014, o 00:16 
Offline
Moderator
Avatar użytkownika

Dołączył(a): 03 paź 2011
Posty: 27450
Lokalizacja: Szczecin
Pomógł: 1045

perlon napisał(a):
Może lepiej rozważyć przechowywanie danych w pamięci RAM i zapisywanie ich tylko w sytuacji zaniku zasilania - czyli jakiś rozsądny układ podtrzymania zasilania na czas zapisu do EEPROM


Ale cały problem sprowadza się wg mnie nie do żadnego zapisywania co "jakiś czas" albo do zapisywania "przed utratą zasilania"

tylko do takiego interfejsu użytkownika i zapisu tylko wtedy gdy trzeba, gdy się zmieni komplet danych.

Po co robić to sztucznie co jakiś czas ?

Warto też rozważyć co się nadaje do trzymania w EEPROM a co np do trzymania w innej pamięci .... bo jeśli np miałyby to być zapisywane okresowo jakieś wartości automatycznie - to ja bym w ogóle nie użył EEPROMA w procku albo w ogóle nie EEPROM'a tylko np FRAM, albo RAM podtrzymywany bateryjnie np w RTC albo cokolwiek ... nawet na kartę pamięci ?

nie mówię że to jest jedynie słuszne rozwiązanie - bo tak jak wspominałem rozwiązań i potrzeb są setki a każdy znając różne dobierze coś dla siebie

nie mniej wielokrotnie się spotykam (nie mówię że w tym przypadku) z tym, że ludzie traktują EEPROM w procku jak cudowną skrzynkę do której można rąbać zapisów ile wlezie ;) ... a później jak dobrze przemyśleć - to okazuje się - że wystarczy 10% albo i 1% z pierwotnego pomysłu do EEPROM a reszta nawet w RAM może być trzymana ;)

_________________
zapraszam na blog: http://www.mirekk36.blogspot.com (mój nick Skype: mirekk36 ) [ obejrzyj Kurs EAGLE ] [ mój kanał YT TV www.youtube.com/mirekk36 ]



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 3 sty 2014, o 10:26 
Offline
Użytkownik

Dołączył(a): 16 maja 2012
Posty: 349
Lokalizacja: Legnica
Zbananowany użytkownik

Pomógł: 23

mirekk36 napisał(a):
perlon napisał(a):
Może lepiej rozważyć przechowywanie danych w pamięci RAM i zapisywanie ich tylko w sytuacji zaniku zasilania - czyli jakiś rozsądny układ podtrzymania zasilania na czas zapisu do EEPROM


Ale cały problem sprowadza się wg mnie nie do żadnego zapisywania co "jakiś czas" albo do zapisywania "przed utratą zasilania"

tylko do takiego interfejsu użytkownika i zapisu tylko wtedy gdy trzeba, gdy się zmieni komplet danych.

Po co robić to sztucznie co jakiś czas ?


Z całym szacunkiem, ale nikt w tym wątku nie proponował zapisu "co jakiś czas". Nie bardzo wiem skąd się wziął w ogóle taki pomysł. Jak ja to zrozumiałem, autor wątku ma pewne zmieniające się w czasie wartości, które chce chronić przed utratą. Przy każdej zmianie tych wartości chce je zapisywać do EEPROM po to, aby po ewentualnym restarcie przywrócić stan urządzenia do stanu sprzed restartu a nie jakieś wartości domyślne. Wykorzystanie EEPROM'u wydaje się tu racjonalne i nie bardzo rozumiem dlaczego Mirku się na to obruszasz. Nie znamy szczegółów i założeń urządzenia, autor poprosił o podpowiedź w konkretnej sprawie czyli "przesuwanie wskaźnika na zmienną w EEPROM" w kontekście wielokrotnego zapisu. Myślę, że dostał odpowiedź.

_________________
sig off ;(



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 3 sty 2014, o 11:35 
Offline
Moderator
Avatar użytkownika

Dołączył(a): 03 paź 2011
Posty: 27450
Lokalizacja: Szczecin
Pomógł: 1045

To ja podam jeszcze jeden powód dlaczego takie "chodzenie" po eepromie w AVR może być zabójcze niestety :( .... tzn nie żebym ostatnie psy na tym wieszał - ale myślę że warto o tym wiedzieć, robiąc jakieś urządzenie. Bo jeśli akurat od danych zawartych w eeprom nie będą zależały jakieś bardzo WAŻNE rzeczy albo jak to się mówi "życie ludzkie" to nie ma problemu .... gorzej - jeśli będą to miały być ważne rzeczy ...

Chodzi mianowicie o to że po pierwsze - jeśli już trzymać dane w eeprom, to bezwzględnie trzeba pamiętać o fusebitach od BODLEVEL i utrzymywać odpowiedni poziom napięcia ... bo ? ... no bo możemy stracić zawartość eeprom .... Jeśli będziemy używać procka w jakichś szczególnie skrajnych warunkach pracy - no chociażby w aucie to nawet pomimo ustawionego Bodlevela i tak się nieraz przejedziemy na tym, że dane polecą w kosmos :( .... Ale to już każdy pewnie sam się musi o tym przekonać na własnej skórze

a jeśli tak ? to co nam da "chodzenie po eepromie z zapisanym tam indexem" ? .... nic ... nawet będzie gorzej - bo o ile w sytuacji gdyby dane były w jednym miejscu i niektóre z nich np byłyby "strzelone" to jeszcze może inne by miały prawidłową wartość - można byłoby po starcie dokonać standardowej procedury sprawdzenia poprawności danych (np czy mieszczą się chociaż w zadanych zakresach - a jak nie to te konkretne przywrócić z Flash) ... A gdy strzeli sobie taki index chodzących danych ? ... no to chyba dalej nie muszę mówić jaki będzie koci zonk :(

Tylko proszę nie odbierać tego jako straszenie - jak to niedobrze jest wg mnie z eepromami w prockach avr ... ale myślę że warto znać różne strony medalu po prostu.

_________________
zapraszam na blog: http://www.mirekk36.blogspot.com (mój nick Skype: mirekk36 ) [ obejrzyj Kurs EAGLE ] [ mój kanał YT TV www.youtube.com/mirekk36 ]



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 3 sty 2014, o 13:28 
Offline
Użytkownik

Dołączył(a): 16 maja 2012
Posty: 349
Lokalizacja: Legnica
Zbananowany użytkownik

Pomógł: 23

Ogólną zasadą powinno być trzymanie zmiennych w RAM i zapisywaniu ich do EEPROM w ściśle określonych sytuacjach. Podtrzymywanie zasilania dla danych w RAM kosztuje i nie trwa wiecznie. W przypadku mikrokontrolerów kończy się dość szybko. Dlatego podtrzymanie najczęściej służy do bezpiecznego przeniesienia danych do EEPROM i prawidłowego wyłączenia układu. Baterie, kondensatory o dużej pojemności etc. rozwiązań gotowych sporo w sieci. EEPROM powinien być co najwyżej "schowkiem na ciężkie czasy" ;-) a nie pamięcią podręczną do użytku w czasie normalnej pracy. Pomijam tu same odczyty, które nie ograniczają żywotności.

_________________
sig off ;(



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 3 sty 2014, o 13:34 
Offline
Moderator
Avatar użytkownika

Dołączył(a): 03 paź 2011
Posty: 27450
Lokalizacja: Szczecin
Pomógł: 1045

perlon napisał(a):
Ogólną zasadą powinno być trzymanie zmiennych w RAM i zapisywaniu ich do EEPROM w ściśle określonych sytuacjach. Podtrzymywanie zasilania dla danych w RAM kosztuje i nie trwa wiecznie. W przypadku mikrokontrolerów kończy się dość szybko. Dlatego podtrzymanie najczęściej służy do bezpiecznego przeniesienia danych do EEPROM i prawidłowego wyłączenia układu. Baterie, kondensatory o dużej pojemności etc. rozwiązań gotowych sporo w sieci. EEPROM powinien być co najwyżej "schowkiem na ciężkie czasy" ;-) a nie pamięcią podręczną do użytku w czasie normalnej pracy. Pomijam tu same odczyty, które nie ograniczają żywotności.


Bardzo dobre podsumowanie ;)

A weźmy np takie radio samochodowe - przecież też musi mieć jakiś np eeprom, ale ile razy w ciągu życia tego radia nastąpi zapis do niego ? ... no tyle razy ile użytkownik ustawi sobie np stacje, czy jakieś parametry - a nawet jak zechce sobie je przestawić - to ileż razy się tym pobawi ? ;)

_________________
zapraszam na blog: http://www.mirekk36.blogspot.com (mój nick Skype: mirekk36 ) [ obejrzyj Kurs EAGLE ] [ mój kanał YT TV www.youtube.com/mirekk36 ]



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 3 sty 2014, o 14:10 
Offline
Użytkownik

Dołączył(a): 24 kwi 2013
Posty: 454
Pomógł: 30

W radiach samochodowych też często wszystko w RAMie siedzi, bo producenci zakładają że użytkownik nie dotyka się do akumulatora.

Ale np. mam taki TV Philipsa, że numer ostatnio odbieranego kanału zapisywany jest do epromu automatycznie (przy wyłączeniu pilotem), a poziom głośności/jasności itp. tylko na żądanie.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 3 sty 2014, o 14:31 
Offline
Moderator
Avatar użytkownika

Dołączył(a): 03 paź 2011
Posty: 27450
Lokalizacja: Szczecin
Pomógł: 1045

#ciamciak# napisał(a):
Ale np. mam taki TV Philipsa, że numer ostatnio odbieranego kanału zapisywany jest do epromu automatycznie (przy wyłączeniu pilotem)


Ja bym się prawie założył że taki ostatni kanał to pewnie zapisywany jest w jakimś RAM nawet układu RTC podtrzymywanego bakteryjnie :lol: albo nawet kondkiem żelowym .... Do eeproma się takich rzeczy raczej nie zapisuje - no chyba ... że jest tam pamięć FRAM.

_________________
zapraszam na blog: http://www.mirekk36.blogspot.com (mój nick Skype: mirekk36 ) [ obejrzyj Kurs EAGLE ] [ mój kanał YT TV www.youtube.com/mirekk36 ]



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 3 sty 2014, o 15:45 
Offline
Użytkownik

Dołączył(a): 24 kwi 2013
Posty: 454
Pomógł: 30

@mirekk36
No właśnie nie wygląda to na RAM, choć już sam nie wiem (tv ma kilkanaście lat, więc chyba FRAM niema).
Jak wyłączę z pilota i potem z sieci, to po włączeniu pamięta ostatni kanał, niezależnie od czasu wyłaczenia.
Ale jak już po takiej sekwencji wyłączę bezpośrednio z sieci, to po włączeniu ląduje na jedynce.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 3 sty 2014, o 16:21 
Offline
Moderator
Avatar użytkownika

Dołączył(a): 03 paź 2011
Posty: 27450
Lokalizacja: Szczecin
Pomógł: 1045

Myślę, że nie ma co toczyć kopii co tam jest - bo może i nawet eeprom ... ale czy to takie ważne ? ;) ważne żeby czuć sprawę we własnych projektach ;)

_________________
zapraszam na blog: http://www.mirekk36.blogspot.com (mój nick Skype: mirekk36 ) [ obejrzyj Kurs EAGLE ] [ mój kanał YT TV www.youtube.com/mirekk36 ]



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
Wyświetl posty nie starsze niż:  Sortuj wg  
Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 11 ] 

Strefa czasowa: UTC + 1


Kto przegląda forum

Użytkownicy przeglądający ten dział: Brak zidentyfikowanych użytkowników i 0 gości


Nie możesz rozpoczynać nowych wątków
Nie możesz odpowiadać w wątkach
Nie możesz edytować swoich postów
Nie możesz usuwać swoich postów
Nie możesz dodawać załączników

Szukaj:
Skocz do:  
Sitemap
Technologię dostarcza phpBB® Forum Software © phpBB Group phpBB3.PL
phpBB SEO