Reset w AVR-GCC

Loading thread data ...

Użytkownik Bogdan G napisał:

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

Pozdrawiam Grzegorz

Reply to
Grzegorz Kurczyk

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

Reply to
Grzegorz Kurczyk

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

Reply to
Grzegorz Kurczyk

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.

Reply to
Adam Dybkowski

ElectronDepot website is not affiliated with any of the manufacturers or service providers discussed here. All logos and trade names are the property of their respective owners.