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



Teraz jest 24 mar 2026, o 17:16


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 10 ] 
Autor Wiadomość
PostNapisane: 2 kwi 2015, o 22:55 
Offline
Użytkownik
Avatar użytkownika

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

Witam!
Chcę zaimplementować obsługę "software reset" w ATmega32 do resetowania go z poziomu mkBootoader AT+RST? Nagłówek załączyłem <avr/wdt.h>, wdt_enable(WDTO_15MS) wdt zaincjalizowałem, cli() wisałem, ale pozostaje problem nieskończonej pętli while(1) oczekującej na reset. Gdzie ją umieścić? Przykład załączenia powyższych poleceń w kodzie - efekt jest taki, że procesr resetuje się co 15ms i błyska podświetlenie LCD:
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


Proszę bardzo o pomoc w poprawieniu kodu. Chcę program wgrać do mikrokontroler za pomocą mkBootloader'a i resetować go komendą AT+RST?

Pozdrawiam Janek



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 2 kwi 2015, o 23:02 
Offline
Moderator
Avatar użytkownika

Dołączył(a): 03 paź 2011
Posty: 27450
Lokalizacja: Szczecin
Pomógł: 1045

W procedurze odbioru danych z UART'a ?

_________________
zapraszam na blog: http://www.mirekk36.blogspot.com (mój nick Skype: mirekk36 ) [ obejrzyj Kurs EAGLE ] [ mój kanał YT TV www.youtube.com/mirekk36 ]



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 2 kwi 2015, o 23:09 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 20 sie 2013
Posty: 795
Lokalizacja: Poznań
Pomógł: 59

Watchdoga powinieneś odpalić wewnątrz jakiejś funkcji, a nie od tak sobie. Teraz WD pracuje w ciele programu głównego i dlatego tak jest.

Oto przykład funkcji:
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 3 kwi 2015, o 07:37 
Offline
Użytkownik
Avatar użytkownika

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

Dziękuję za podpowiedź. Jak powinno wyglądać wywołanie funkcji w programie i w którym miejscu je umieścić. Nie mogę wciąż resetować programowo (string: AT+RST?).

Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 3 kwi 2015, o 07:59 
Offline
Moderator
Avatar użytkownika

Dołączył(a): 03 paź 2011
Posty: 27450
Lokalizacja: Szczecin
Pomógł: 1045

avrfun napisał(a):
Jak powinno wyglądać wywołanie funkcji w programie i w którym miejscu je umieścić.

Wszystko masz w detalach wyjaśnione w zielonej książce (Greenbook), czy nie zauważyłeś że wciąż wspominam o niej i o bibliotece do obsługi UART w poradnikach o wifi ? Wciąż też w tych poradnikach pokazuję jak w kodzie się to robi ... chociażby w tym:
https://www.youtube.com/watch?v=J3kPNmb3wV4

_________________
zapraszam na blog: http://www.mirekk36.blogspot.com (mój nick Skype: mirekk36 ) [ obejrzyj Kurs EAGLE ] [ mój kanał YT TV www.youtube.com/mirekk36 ]



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 3 kwi 2015, o 08:50 
Offline
Użytkownik
Avatar użytkownika

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

Rozumiem, że z moim kodem nic nie można zrobić, aby w prosty sposób uzyskać spodziewaną funkcjonalność resetu programowego :|



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 3 kwi 2015, o 09:07 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 31 mar 2015
Posty: 310
Pomógł: 18

Solidaryzuję się z Tobą(avrfun). W wojsku to jest inaczej - BACZNOŚĆ - i wszyscy stoją jak jak wryci, a tu maszyna robi co chce!
Otóż komenda zewnętrzna (np. string AT+RST) musi trafić dokładnie między tryba programu(w pętlę nieskończoną) main() i głębiej w while(1) lub jeszcze głębiej. Co ważniejsze musi być znana i mieć wartość logiczną 1(Prawda). Tylko wtedy będzie wykonana funkcja "at_rst_service()". Ciało funkcji musisz ukryć, by nie była wykonywana po resecie, a deklaracja ma być znana wszem i wobec.



Ostatnio edytowano 3 kwi 2015, o 09:36 przez Wirnick, łącznie edytowano 1 raz

Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 3 kwi 2015, o 09:23 
Offline
Użytkownik
Avatar użytkownika

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

Dzięki za solidarność. Jak to zrobić na przykładzie kodu, który zaprezentowałem?



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 3 kwi 2015, o 12:21 
Offline
Moderator
Avatar użytkownika

Dołączył(a): 03 paź 2011
Posty: 27450
Lokalizacja: Szczecin
Pomógł: 1045

avrfun napisał(a):
Jak to zrobić ....

Napisać sobie obsługę stringów przychodzących na uart

_________________
zapraszam na blog: http://www.mirekk36.blogspot.com (mój nick Skype: mirekk36 ) [ obejrzyj Kurs EAGLE ] [ mój kanał YT TV www.youtube.com/mirekk36 ]



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 3 kwi 2015, o 18:53 
Offline
Użytkownik

Dołączył(a): 11 wrz 2013
Posty: 709
Zbananowany użytkownik

Pomógł: 23

mirekk36 napisał(a):
Napisać sobie obsługę stringów przychodzących na uart


Heh. Mam wrażenie, że kolega zakładający wątek ma nadzieję, że wystarczy wysłać taki string do ATNEL-WIFI, a on jakoś "automagicznie" zresetuje procka. Może bezprzewodowo go zresetuje, np. przywali taką moc na 2,4 GHz, że procek zgłupieje ;).

avrfun napisał(a):
Dzięki za solidarność. Jak to zrobić na przykładzie kodu, który zaprezentowałem?


Dostałeś sporo podpowiedzi, a nadal nie zastanawiasz się nad tym, że w ogóle nie odbierasz i nie porównujesz stringów z UARTA.
Zrób funkcję, która będzie interpretowała to co dostajesz do procesora poprzez RS i porównuj komendy z taką którą chcesz zresetować uC (nie musi być taka jak u Mirka). Dopiero wtedy będziesz mógł wywołać funkcję uruchamiająca watch doga i uC zresetuje się wywołując bootloader.

--
Grzegorz...



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: 10 ] 

Strefa czasowa: UTC + 1


Kto przegląda forum

Użytkownicy przeglądający ten dział: Brak zidentyfikowanych użytkowników i 3 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