Reset w AVR-GCC

Aug 10, 2007 6 Replies

Jak najpro¶ciej zresetowaæ ATmega32 z poziomu AVR-GCC? Nie znam assemblera i nie umiem robiæ wstawek assemblerowych.


Użytkownik Bogdan G napisał:

Uruchomić WatchDog-a i pocze3kać aż "zaszczeka" ;-)

Pozdrawiam Grzegorz

U¿ytkownik "Grzegorz Kurczyk" snipped-for-privacy@antispam.control.slupsk.pl> napisa³ w wiadomo¶ci news:f9hkar$f79$ snipped-for-privacy@atlantis.news.tpi.pl...

Dziêki ale chcia³em co¶ szybszego. Po prostu nie chce mi siê na razie robiæ porz±dnej obs³ugi b³êdu. Jednak nie ma co dziadowaæ - zacznê ju¿ robiæ przynajmniej jakie¶ zrêby - przydadz± siê.

Użytkownik Bogdan G napisał:

To zależy co rozumiesz pod pojęciem RESET-u ? Skok do adresu 0x0000 ? Czy faktyczne zresetowanie procka wraz z zerowaniem portów itd. itp. Trick z WatchDog-iem nie musi być wcale aż tak wolny. Jak ustawisz najmniejszy preskaler, to kilkanaście ms. Ewentualnie podłącz jakąś nogę procka pod RESET i programowo wymuś na niej stan niski.

Pozdrawiam Grzegorz

no to mo¿e tak:

asm("cli"); asm("clr r30"); asm("clr r31"); asm("ijmp");

Użytkownik Zibias napisał:

Ale to nie będzie RESET procka. Np. stany portów pozostaną niezmienione. Z tego powodu pytałem się autora wątku co rozumie pod pojęciem RESET procesora ?

P.S. To samo można zrobić bez wstawki assemblerowej.

Pozdrawiam Grzegorz

Bogdan G pisze:

Najszybszy watchdog to 15 ms - nie wystarczy?

#include <avr/interrupt.h>

#include <avr/wdt.h>

void stop_now (void) { cli (); wdt_enable (WDTO_15MS); for (;;); }

Alternatywnie to w końcu zawsze możesz zewrzeć wejście resetujące AVRa z najbliższym pinem I/O i resetować się programowo. :) Podczas resetu i po starcie wszystkie piny są skonfigurowane jako wejścia Hi-Z więc nie powinno przeszkadzać zwarcie jednego z resetem. A potem w pożądanej chwili wystarczy wyzerować odpowiedni bit w rejestrze PORTn i ustawić w odpowiadającym mu DDRn (co skonfiguruje pin jako wyjściowy). Dla większej stabilności warto by dodać jeszcze do pinu resetu kondensator.

Join the Discussion

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

Didn't find your answer?

Ask the community — no account required