JS_WP
Guest
Sat Nov 25, 2006 3:38 pm
W jaki sposób programowo można określić przyczynę resetu. Chodzi głównie o
rozróżnienie czy był zanik zasilania czy zadziałał np. WatchDog
JS
K.L Piecuch
Guest
Sat Nov 25, 2006 4:47 pm
Dnia 25.11.2006 JS_WP <alres1@wp.pl> napisał/a:
Quote:
W jaki sposób programowo można określić przyczynę resetu. Chodzi głównie o
rozróżnienie czy był zanik zasilania czy zadziałał np. WatchDog
MCUCSR resjestr prawdę Ci powie... (przynajmniej w tych nowszych avr'ach).
--
****** Krzysztof Piecuch ******
sp9rqa@radioam.net
GG 7084611
****** Linux User #132375 ******
Maciej Wywrocki
Guest
Sat Nov 25, 2006 10:05 pm
Użytkownik "K.L Piecuch" <kris_gor@poczta.onet.pl> napisał w wiadomości
news:slrnemglmr.dvn.kris_gor@localhost.localdomain...
Quote:
Dnia 25.11.2006 JS_WP <alres1@wp.pl> napisał/a:
W jaki sposób programowo można określić przyczynę resetu. Chodzi głównie
o
rozróżnienie czy był zanik zasilania czy zadziałał np. WatchDog
MCUCSR resjestr prawdę Ci powie... (przynajmniej w tych nowszych avr'ach).
Można też wpisać sygnaturkę do RAM-u. Jeżeli po resecie jest inna od
wpisanej to znaczy, że był zanik zasilania (i pojawiły się śmieci w RAMIE).
Ważne, aby sygnaturka nie była zmienną globalną (te - zazwyczaj - są
zerowane po resecie).
Pzdr,
Maciek Wywrocki
Adam Dybkowski
Guest
Sun Nov 26, 2006 1:44 am
Maciej Wywrocki napisał(a):
Quote:
MCUCSR resjestr prawd Ci powie... (przynajmniej w tych nowszych avr'ach).
Mona te wpisa sygnaturk do RAM-u. Jeeli po resecie jest inna od
wpisanej to znaczy, e by zanik zasilania (i pojawiy si mieci w RAMIE).
Wane, aby sygnaturka nie bya zmienn globaln (te - zazwyczaj - s
zerowane po resecie).
Bez sensu tak na piechotę. Po to jest MCUCSR aby z niego korzystać.
Poza tym tak samo prawdopodobne jest pojawienie się w RAMie po włączeniu
zasilania w sprawdzanym miejscu 32-bitowej losowej wartości 0x84936349,
co każdej innej, w tym twojej "magicznej" flagi.
--
Adam Dybkowski
http://www.amwaw.edu.pl/~adybkows/
Uwaga: przed wysłaniem do mnie maila usuń cyfry z adresu.
Prywatny
Guest
Sun Nov 26, 2006 10:45 am
Quote:
Bez sensu tak na piechotę. Po to jest MCUCSR aby z niego korzystać.
to i owszem.
Quote:
Poza tym tak samo prawdopodobne jest pojawienie się w RAMie po włączeniu
zasilania w sprawdzanym miejscu 32-bitowej losowej wartości 0x84936349, co
każdej innej, w tym twojej "magicznej" flagi.
eee, trochę przesadzasz, kiedys w c51 stosowałem własnie taka metode
i była skuteczna. Zapisywalem zdaje sie 8 bajtow w ramie, ktore testowalem
przy starcie. Prawdopodobienstwo bardzo male aby ta kombinacja sie pojawila
przypadkowo.
Pozdrawiam
Darek.
T.M.F.
Guest
Sun Nov 26, 2006 1:00 pm
Quote:
Bez sensu tak na piechotę. Po to jest MCUCSR aby z niego korzystać.
Poza tym tak samo prawdopodobne jest pojawienie się w RAMie po włączeniu
zasilania w sprawdzanym miejscu 32-bitowej losowej wartości 0x84936349,
co każdej innej, w tym twojej "magicznej" flagi.
Co wiecej, ze wzgledu na budowe pamieci (a AVR jest SRAM, czy DRAM?)
bardziej jest prawdopodobne, ze po powrocie zasilania pojawi sie owa
magiczna sygnaturka niz dowolna inna wartosc.
--
Inteligentny dom -
http://idom.wizzard.one.pl
Teraz takze forum dyskusyjne
Zobacz, wyslij uwagi, dolacz sie do projektu.
Maciej Wywrocki
Guest
Sun Nov 26, 2006 2:56 pm
Użytkownik "Adam Dybkowski" <adybkows12@45wp.pl> napisał w wiadomości
news:ekao29$rr4$2@atlantis.news.tpi.pl...
Quote:
Bez sensu tak na piechotę. Po to jest MCUCSR aby z niego korzystać.
....a np. w ATiny26 go nie ma. I miałem na myśli nie tylko AVR-y.
Quote:
Poza tym tak samo prawdopodobne jest pojawienie się w RAMie po włączeniu
zasilania w sprawdzanym miejscu 32-bitowej losowej wartości 0x84936349,
co każdej innej, w tym twojej "magicznej" flagi.
Oczywiście, jednak przy założeniu, że po powrocie zasilania zawartość RAMu
jest przypadkowa,
prawdopodobieństwo pojawienia się określonej wartości (w tym sygnaturki)
jest niskie...
(a już 32-bitowej to baardzo niskie...). Inną sprawą jest, czy aby na pewno
po krótkim zaniku zasilania zawartość RAMu "szlag trafi".
Taki sposób identyfikacji resetu (z sygnaturką) był wykorzystany w
bootloaderze uVision Keil'a na 51.
Pzdr,
Maciek Wywrocki
Adam Dybkowski
Guest
Mon Nov 27, 2006 12:54 am
Maciej Wywrocki napisał(a):
Quote:
Bez sensu tak na piechot. Po to jest MCUCSR aby z niego korzysta.
....a np. w ATiny26 go nie ma. I miaem na myli nie tylko AVR-y.
W przypadku tego procesora powód resetu jest dostępny w rejestrze MCUSR,
patrz opis bitu WDRF.
A jeżeli nie AVRy to napisz, o czym mowa. Zdecydowana większość różnej
produkcji mikrokontrolerów posiadających wewnętrzny watchdog pozwala na
programowe stwierdzenie, czy reset był spowodowany zadziałaniem watchdoga.
Quote:
Poza tym tak samo prawdopodobne jest pojawienie si w RAMie po wczeniu
zasilania w sprawdzanym miejscu 32-bitowej losowej wartoci 0x84936349,
co kadej innej, w tym twojej "magicznej" flagi.
Oczywicie, jednak przy zaoeniu, e po powrocie zasilania zawarto RAMu
jest przypadkowa,
prawdopodobiestwo pojawienia si okrelonej wartoci (w tym sygnaturki)
jest niskie...
(a ju 32-bitowej to baardzo niskie...). Inn spraw jest, czy aby na pewno
po krótkim zaniku zasilania zawarto RAMu "szlag trafi".
Może nie trafić. I właśnie w takich przypadkach byłoby niemożliwe
odróżnienie resetu watchdogiem (gdy zawiesi się program) od krótkiego
padu zasilania. A w ATtiny26 możesz w MCUSR sprawdzić bity WDRF (reset
od watchdoga), BORF (od spadku zasilania), EXTRF (naciśnięcie resetu
zewnętrznego) i PORF (włączenie zasilania).
Quote:
Taki sposób identyfikacji resetu (z sygnaturk) by wykorzystany w
bootloaderze uVision Keil'a na 51.
Może chcieli bardzo uniwersalnie go zrobić, aby pasował do każdej '51.
Mimo to zawsze warto sprawdzić, jakie są możliwości konkretnego
procesora, który chcesz zastosować.
--
Adam Dybkowski
http://www.amwaw.edu.pl/~adybkows/
Uwaga: przed wysłaniem do mnie maila usuń cyfry z adresu.
Maciej Wywrocki
Guest
Mon Nov 27, 2006 8:14 am
Użytkownik "Adam Dybkowski" <adybkows12@45wp.pl> napisał w wiadomości
news:ekd9lj$ep6$1@nemesis.news.tpi.pl...
Quote:
Maciej Wywrocki napisał(a):
....a np. w ATiny26 go nie ma. I mia3em na my?li nie tylko AVR-y.
W przypadku tego procesora powód resetu jest dostępny w rejestrze MCUSR,
patrz opis bitu WDRF.
Fakt, nie przyuwazylem.
Pzdr,
Maciek Wywrocki