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



Teraz jest 8 kwi 2026, o 00:07


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 4 ] 
Autor Wiadomość
PostNapisane: 22 sie 2018, o 13:45 
Offline
Nowy

Dołączył(a): 14 wrz 2016
Posty: 19
Pomógł: 0

Witam!

Chcę sobie użyć watchdoga do generowania przerwań, ale wyłączyć generowania przez niego resetu. Wg noty powinienem to zrobić zerując bit WDE w rejestrze WDTCSR oraz ustawiając bit WDIE, a następnie odpowiednimi bitami ustawiać preskaler. Robię wszystko tak jak opisano to w nocie i watchdog niby generuje przerwania, ale nie zależnie od ustawionych wartości preskalera zawsze występuje ono co 18ms. Próbowałem to wgrywać na dwa procki M328PB i M1284P i na obu działa tak samo. Czy ktoś mógłby zerknąć na kod i podpowiedzieć co tu mam źle? Wg ustawionego przeze mnie preskalera przerwanie powinno być co 0,5s.

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: 22 sie 2018, o 17:12 
Offline
Użytkownik

Dołączył(a): 07 cze 2016
Posty: 563
Pomógł: 143

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

Aby zmienić ustawienia preskalera WDT należy zachować pewne reguły i zależności czasowe. Spróbuj może tak:
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


Trzeba też wiedzieć, że wywołanie procedury obsługi przerwania zeruje bit WDIE, więc trzeba go za każdym razem ponownie ustawiać, jeśli chcemy, by następnym razem przerwanie też wystąpiło.


Autor postu otrzymał pochwałę


Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 22 sie 2018, o 17:14 
Offline
Moderator
Avatar użytkownika

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

andrews napisał(a):
Trzeba też wiedzieć, że wywołanie procedury obsługi przerwania zeruje bit WDIE, więc trzeba go za każdym razem ponownie ustawiać, jeśli chcemy, by następnym razem przerwanie też wystąpiło.

Dokładnie, a omawiam to tak przy okazji i pokazuję w kodzie dla ATtiny10 - ta sama zasada w poradniku:

https://mirekk36.blogspot.com/2018/08/o ... zycie.html

_________________
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: 23 sie 2018, o 15:45 
Offline
Nowy

Dołączył(a): 14 wrz 2016
Posty: 19
Pomógł: 0

Dziękuję już wszystko działa jak należy.
andrews napisał(a):
Trzeba też wiedzieć, że wywołanie procedury obsługi przerwania zeruje bit WDIE, więc trzeba go za każdym razem ponownie ustawiać, jeśli chcemy, by następnym razem przerwanie też wystąpiło.

Wiedziałem o tym dlatego w przerwaniu za każdym razem ustawiam ten bit. Co do ustawiania pozostałych bitów to próbowałem różnych konfiguracji (ustawianie wszystkich bitów na raz w jednej linii itp. ) jednak zawsze zerowałem bit WDE za pomocą ( &= ~(1<<WDE)), bo tak było napisane w nocie, żeby ten bit zerować. Zmiana na ( |= (1<<WDE)) załatwiła sprawę. Tylko dlaczego ten bit należy ustawić skoro w nocie jest napisane, żeby zerować?
mirekk36 napisał(a):
Dokładnie, a omawiam to tak przy okazji i pokazuję w kodzie dla ATtiny10 - ta sama zasada w poradniku:

Zapewne odpowiedź znajdę w poradniku, więc muszę przysiąść wieczorem i nadrobić zaległości :)



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

Strefa czasowa: UTC + 1


Kto przegląda forum

Użytkownicy przeglądający ten dział: Brak zidentyfikowanych użytkowników i 4 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:  
cron
Sitemap
Technologię dostarcza phpBB® Forum Software © phpBB Group phpBB3.PL
phpBB SEO