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
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
Dnia 25.11.2006 JS_WP snipped-for-privacy@wp.pl napisał/a:
MCUCSR resjestr prawdę Ci powie... (przynajmniej w tych nowszych avr'ach).
U¿ytkownik "K.L Piecuch" <kris snipped-for-privacy@poczta.onet.pl> napisa³ w wiadomo¶ci news:slrnemglmr.dvn.kris snipped-for-privacy@localhost.localdomain...
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
Maciej Wywrocki napisał(a):
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.
to i owszem.
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.
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.
U¿ytkownik "Adam Dybkowski" snipped-for-privacy@45wp.pl napisa³ w wiadomo¶ci news:ekao29$rr4$ snipped-for-privacy@atlantis.news.tpi.pl...
...a np. w ATiny26 go nie ma. I mia³em na my¶li nie tylko AVR-y.
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
Maciej Wywrocki napisał(a):
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.
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).
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ć.
U¿ytkownik "Adam Dybkowski" snipped-for-privacy@45wp.pl napisa³ w wiadomo¶ci news:ekd9lj$ep6$ snipped-for-privacy@nemesis.news.tpi.pl...
Fakt, nie przyuwazylem.
Pzdr, Maciek Wywrocki
Have something to add? Share your thoughts — no account required.
Ask the community — no account required