RTV forum PL | NewsGroups PL

Jak zresetować ATmega32 w AVR-GCC bez użycia assemblera?

Reset w AVR-GCC

NOWY TEMAT

elektroda NewsGroups Forum Index - Elektronika Polska - Jak zresetować ATmega32 w AVR-GCC bez użycia assemblera?

Bogdan G
Guest

Fri Aug 10, 2007 12:58 pm   



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

Grzegorz Kurczyk
Guest

Fri Aug 10, 2007 1:04 pm   



Użytkownik Bogdan G napisał:
Quote:
Jak najprościej zresetować ATmega32 z poziomu AVR-GCC?
Nie znam assemblera i nie umiem robić wstawek assemblerowych.

Uruchomić WatchDog-a i pocze3kać aż "zaszczeka" Wink


Pozdrawiam
Grzegorz

Bogdan G
Guest

Fri Aug 10, 2007 1:16 pm   



Użytkownik "Grzegorz Kurczyk" <grzegorz@antispam.control.slupsk.pl> napisał
w wiadomości news:f9hkar$f79$1@atlantis.news.tpi.pl...
Quote:
Użytkownik Bogdan G napisał:
Jak najprościej zresetować ATmega32 z poziomu AVR-GCC?
Nie znam assemblera i nie umiem robić wstawek assemblerowych.

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


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ę.

Grzegorz Kurczyk
Guest

Fri Aug 10, 2007 1:36 pm   



Użytkownik Bogdan G napisał:
Quote:

Użytkownik "Grzegorz Kurczyk" <grzegorz@antispam.control.slupsk.pl
napisał w wiadomości news:f9hkar$f79$1@atlantis.news.tpi.pl...

Użytkownik Bogdan G napisał:

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

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


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ę.

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

Zibias
Guest

Sat Aug 11, 2007 9:58 am   



Quote:
Użytkownik Bogdan G napisał:
Jak najprościej zresetować ATmega32 z poziomu AVR-GCC?
Nie znam assemblera i nie umiem robić wstawek assemblerowych.

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


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ę.
no to może tak:


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

Grzegorz Kurczyk
Guest

Sat Aug 11, 2007 3:25 pm   



Użytkownik Zibias napisał:
Quote:

no to może tak:

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


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

Adam Dybkowski
Guest

Tue Aug 14, 2007 9:11 pm   



Bogdan G pisze:

Quote:
Jak najprościej zresetować ATmega32 z poziomu AVR-GCC?
Nie znam assemblera i nie umiem robić wstawek assemblerowych.

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

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ę.

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 (;Wink;
}

Alternatywnie to w końcu zawsze możesz zewrzeć wejście resetujące AVRa z
najbliższym pinem I/O i resetować się programowo. Smile 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.

--
Adam Dybkowski
http://www.amwaw.edu.pl/~adybkows/

Uwaga: przed wysłaniem do mnie maila usuń cyfry z adresu.

elektroda NewsGroups Forum Index - Elektronika Polska - Jak zresetować ATmega32 w AVR-GCC bez użycia assemblera?

NOWY TEMAT

Regulamin - Zasady uzytkowania Polityka prywatnosci Kontakt RTV map News map