programowy reset AVR

Oct 06, 2005 7 Replies

Witam.



Jak programowo zrobiæ reset AVR tak ¿eby rejestry ustawi³y siê na warto¶ci pocz±tkowe tak jak w sprzêtowym?



Dziêkujê za odpowied¼.



Pawe³



Wydaje mi sie, ze jedyna mozliwoscia jest przekroczenie czasu watchdoga.

Na początku programu zrób inicjowanie rejestrów i podaj sygnał reset. Możesz z dowolnego portu taki sygnał sepuku wyprowadzić. No chyba, że musi to być inaczej zrobione.

U¿ytkownik "Pawe³" snipped-for-privacy@poczta.onet.pl> napisa³ w wiadomo¶ci news:di2jar$b08$ snipped-for-privacy@news2.onet...

Troche czsu minelo, ale moze sie przyda - cos takiego: ((void (code*) (void)) 0x0) ()

To jest tylko skok pod adres 0 i zadne rejestry SFR sie nie poustawiaja w stan domyslny. Proponuje do tego celu raczej wykorzystac watchdoga: zablokowac przerwania, ustawic minimalne opoznienie i wlaczyc watchodoga. Dziala na 100% :)

Ale nie zawsze korzystanie z watchdoga moze komus odpowiadac. Ostatecznie w startupie mozna rejestry "recznie" poustawiac i wtedy po takim "zerowaniu" bedziemy mieli to co chcemy. Ja

Oczywiście najlepszym sposobem jest pełne inicjowanie każdego wykorzystywanego komponentu peryferyjnego (UARTu, SPI itp), bez polegania na domyślnych ustawieniach rejestrów po resecie.

U¿ytkownik "Adam Dybkowski" snipped-for-privacy@amwaw.edu.pl> napisa³ w wiadomo¶ci news:dn296v$ipp$ snipped-for-privacy@atlantis.news.tpi.pl...

Mowa byla tylko o rejestrach :-), poza tym podalem tylko jedna z kilku mozliwosci, wiec nie goraczkuj sie tak. BTW na restart od watchdoga trzeba chwilke poczekac, a moze komus zalezy na blyskawicznej reakcji.

pozdrawiam JA

Join the Discussion

Have something to add? Share your thoughts — no account required.

Didn't find your answer?

Ask the community — no account required