Kanał - ATNEL tech-forum
Wszystkie działy
Najnowsze wątki



Teraz jest 29 mar 2024, o 07:12


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 13 ] 
Autor Wiadomość
PostNapisane: 14 kwi 2017, o 09:06 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 02 kwi 2015
Posty: 449
Pomógł: 3

Witam,

W jaki sposób można zresetować mikrokontroler AVR po spełnieniu określonego warunku. Przykładowo pewna zmienna powinna być zawsze większa od 0, a gdy przyjmie ona wartość 0 to nastąpi reset AVR.

Pozdrawiam



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 14 kwi 2017, o 09:14 
Offline
Użytkownik

Dołączył(a): 09 gru 2013
Posty: 103
Pomógł: 3

Włączyć watchdoga na najkrótszy czas + pusta pętla nieskończona. Licznik watchdoga nie będzie przez to zerowany i zrestartuje on mikrokontroler. Rozwiązanie wymagające resetu mikrokontrolera nie jest zbyt estetyczne. Lepiej popracować nad strukturą kodu programu tak, aby nie musiał on w ten sposób tego rozwiązywać.

Pozdrawiam



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 14 kwi 2017, o 09:25 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 02 kwi 2015
Posty: 449
Pomógł: 3

Elektro_maniak napisał(a):
Włączyć watchdoga na najkrótszy czas + pusta pętla nieskończona. Licznik watchdoga nie będzie przez to zerowany i zrestartuje on mikrokontroler. Rozwiązanie wymagające resetu mikrokontrolera nie jest zbyt estetyczne. Lepiej popracować nad strukturą kodu programu tak, aby nie musiał on w ten sposób tego rozwiązywać.

Pozdrawiam


Dziękuję bardzo.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 14 kwi 2017, o 10:46 
Offline
Użytkownik

Dołączył(a): 26 lut 2014
Posty: 288
Lokalizacja: Gdańsk
Pomógł: 13

Jeszcze przed wejściem w pętle nieskończoną dobrze jest wyłączyć wszystkie przerwania linijką cli();



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 14 kwi 2017, o 10:55 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 14 lut 2014
Posty: 279
Lokalizacja: Kraków
Pomógł: 4

43kuku napisał(a):
dobrze jest wyłączyć wszystkie przerwania linijką cli();

bardzo dobra rada

_________________
http://forum.atnel.pl/topic15633.html



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 14 kwi 2017, o 17:31 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 02 kwi 2015
Posty: 449
Pomógł: 3

Dziękuję bardzo za porady! Zrobię testy i dam znać.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 15 kwi 2017, o 13:11 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 02 kwi 2015
Posty: 449
Pomógł: 3

Witam!

Zgodnie z sugestiami Forumowiczów użyłem watchdoga jak w kodzie poniżej, ale zamiast spodziewanego resetu mam "zawieszenie" działania programu. Pewnie coś pominąłem?
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

}
Pozdrawiam



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 15 kwi 2017, o 13:45 
Offline
Użytkownik

Dołączył(a): 09 gru 2013
Posty: 103
Pomógł: 3

w komentarzach do artykułu:
http://mirekk36.blogspot.com/2012/10/wa ... slisz.html

proponują zamienić miejscami wdt_enable(..) z cli();



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 15 kwi 2017, o 15:02 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 02 kwi 2015
Posty: 449
Pomógł: 3

Elektro_maniak napisał(a):
w komentarzach do artykułu:
http://mirekk36.blogspot.com/2012/10/wa ... slisz.html

proponują zamienić miejscami wdt_enable(..) z cli();


Efekt niestety identyczny: zawieszenie programu.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 15 kwi 2017, o 16:13 
Offline
Użytkownik

Dołączył(a): 02 gru 2015
Posty: 544
Pomógł: 27

napisz co to za procek bo w at88 168 328 tych nowszych trzeba zrobić tak
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
na samym początku Mirek na blogu to opisuje.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 15 kwi 2017, o 16:25 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 02 kwi 2015
Posty: 449
Pomógł: 3

tonygryps napisał(a):
napisz co to za procek bo w at88 168 328 tych nowszych trzeba zrobić tak

ATMEGA644P



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 15 kwi 2017, o 16:28 
Offline
Użytkownik

Dołączył(a): 02 gru 2015
Posty: 544
Pomógł: 27

w tym też tak trzeba zrobić. sprawdz tylko nazwy rejestrów bo to kod na atmegę 328p


Autor postu otrzymał pochwałę


Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 15 kwi 2017, o 16:55 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 02 kwi 2015
Posty: 449
Pomógł: 3

tonygryps napisał(a):
w tym też tak trzeba zrobić. sprawdz tylko nazwy rejestrów bo to kod na atmegę 328p

Dziękuję bardzo! Działa jak oczekiwałem. Klikam z radością "pomógł".
Pozdrawiam



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
Wyświetl posty nie starsze niż:  Sortuj wg  
Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 13 ] 

Strefa czasowa: UTC + 1


Kto przegląda forum

Użytkownicy przeglądający ten dział: Brak zidentyfikowanych użytkowników i 15 gości


Nie możesz rozpoczynać nowych wątków
Nie możesz odpowiadać w wątkach
Nie możesz edytować swoich postów
Nie możesz usuwać swoich postów
Nie możesz dodawać załączników

Szukaj:
Skocz do:  
Sitemap
Technologię dostarcza phpBB® Forum Software © phpBB Group phpBB3.PL
phpBB SEO