Mozesz sprobowac za pomoca watchdog'a. Wada jest to ze reset nastapi dopiero po min. 16ms Config Watchdog = 16 Start Watchdog watims 20 'oczekiwanie na reset z watchdoga Masz do dyspozycji jeszcze polecenia: Stop watchdog - zatrzymanie Reset watchdog - kasowanie Zamiast 'waitms 20' mozesz tez dac jakies polecenie "usypiajace" procesor (IDLE, POWERDOWN)
http://obrazki.elektroda.pl/9328566700_1... Dawno temu kolega namówił mnie do zrobienia komputerka. Nie jestem elektronikiem ale umiem pisać programy. Poczytałem trochę i zrobiłem prosty komputer wyświetlający podstawowe funkcje. Płytkę zrobiłem Positivem a soft napisałem w Bascomie. Potem była wersja kolejna, trochę rozbudowana na...
Jest jakiś powód dla którego używasz WWDG (okienkowego watchdoga) a nie IWDG? WWDG zresetuje układ jeśli wartość licznika spadnie poniżej 0x40 lub kiedy uaktualniasz licznik, ale jego wartość podczas aktualizacji jest większa niż to co zapisałeś do CFR. Do CFR zapisałeś 1. Więc masz "wieczny reset". Zainteresuj się IWDG lub zapisz do CFR jakąś sensowną...
https://obrazki.elektroda.pl/7853440200_... *Icebox thermostat* jest termostatem do lodówki zawierającym mniej i bardziej wymyślne funkcjonalności, przy czym większości z nich z pewnością nie znajdziecie w pospolitych termostatach. Zostały uznane za całkowicie zbędne i pozbawione sensu ;) Konfiguracji termostatu dokonuje się bezprzewodowo...
Niedawno dokonałem rozbiórki i ponownego flashowania nowego S06 Pro. Hardware To urządzenie zostało już omówione w wielu postach i znajduje się już w bazie danych teardown. Jednak jak widać na zdjęciach, moje urządzenie wydaje się być nową wersją, która wykorzystuje procesor T1-3S - czyli BK7238. https://obrazki.elektroda.pl/6533250100_...
Jakoś czarno to widzę- nawet jak jest $noinit to i tak kasuje watchdoga. W Bascomie. Może jakoś zrobić swoje $noinit_1 swoje. Ale jak- to nie wiem. Wystarczyło by usunąć polecenia kasowania watchdoga.
Jeżeli masz kwarc 8MHz to potrzebujesz aby wszystkie układy MC68xx były wersjami 2MHZ (sygnał z generatora /4). Wersje 2MHZ to wersja z literą B w środku oznaczenia, czyli potrzebujesz procesor MC68B09 lub zamiennik EF68B09 port I/O MC68B21 lub zamiennik EF68B21 zegar MC68B40 lub zamiennik EF68B40 Układ Watchdoga jest kasowany poprzez procesor poprzez...
Problem masz gdzieś indziej. W kompilatorze Codevision funkcja systemowa delay ma wewnątrz kasowanie watchdoga. Spróbuj zamienić ją na pętlę while(1); a powineś zuważyć efekt zadziałania watchdoga.
0 : Hardware independent watchdog Czyli watchdog uruchamiany sprzętowo, nie musiałeś go uruchamiaś programowo żeby działał i resetował. Żeby to sprawdzić wystarczyło w pętli umieścić kasowanie watchdoga i byłbyś w domu.
nie wiem czy rozumiesz idee działania watchdoga. Program wyskoczy z pętli do loop i się zresetuje a nie pójdzie dalej. A jęsli chodzi o te procedury co opózniają ci watchdoga to zapewne jak byś zaglądnął do ich wnętrza to zobaczyłbyś zapewne kasowanie watchdoga.
Nie bardzo wiem jak mam temat rozwinąć - po prostu - mimo uruchomionego watchdoga procesor wiesza się i nie resetuje. Kasowanie watchdoga w petli głównej, czas przeładowania ok. 1 sek., czas 'obrotu' pętli głównej ok. 0.25 sek. Podczas transmisji - jeżeli wystąpi błąd - procesor wiesza się i nie resetuje i tyle(pętla główna programu nie wykonuje się)....
Nie chodzi mi o assembler i język wysokiego poziomu. Chodzi mi o to że ktoś chce usunąć przydatny algorytm byłe tylko program był łatwy do zrozumienia (niezależnie czy będzie w assemblerze czy w wysokim poziomie). Chodzi mi o kasowanie WatchDoga w każdym możliwym momencie, najlepiej w co drugiej linijce programu. Przecież to najgłupsza rzecz jaką można...
Ok... w takim razie nie mam innych pomysłów, co w programie mogłoby powodować ten problem. Program jest rozległy, ale jednocześnie jest to po prostu długachny ciąg warunków, bez szczególnie dużych rozgałęzień, w nim nigdzie nie ma żadnej możliwości na "zamrożenie" urządzenia, a przynajmniej ja takiej możliwości nie widzę (tak, wiem, to "ja" może być...
jeśli chcesz sprawdzać program w wielu miejscach to zastosuje flagi ustawiane w punktach kontrolnych a ustawienie tych flag sprawdzaj w procedurze obsługi Watchdoga. Możesz wtedy sprawdzić obecność w wielu punktach i wyzerować (lub nie) timer, z wyzerować wszystkie fagi. Wtedy procedura nawet dobrze jak byłaby obsługiwana w przerwaniach zegarowych...
Witam! chciałbym użyć watchdoga w mojej aplikacji. Program działa tak, że jest sobie pętla główna programu i wykonywane są w niej pewne rzeczy a pozostała część działa na przerwaniach. Watchdoga chciałbym resetować w pętli głównej tak aby zawieszenie programu w procedurach obsługi przerwań również powodowało resetowanie procesora. Problem jaki napotkałem...
Poprawiłem tytuł na bardziej oddający problem i zgodny z regulaminem p. 3.1.15. LordBlick Jestem początkującym w języku C i ogólnie w programowaniu procesorów.Dlatego prosze o wyrozumiałość. Chciałem zrobić timerek zasilany z baterii, który co 8sek ma zmienić stan portu. Przymierzam się do zastosowania trybu Powerdown, ale najpierw muszę poradzić sobie...
Ustal z czego się bierze wpis w tabeli watchdog i usuń przyczynę. Kasowanie takiej ilości rekordów poprzez delete to też średni pomysł, zabawa n tyle ciekawa że myadmin dostanie timeouta tak że przed tym pomysłem ostrzegam. Czyść watchdoga z Crona skryptem PHP. Jest jeszcze jeden porblem dla którego trzeba trzymać drupala za pysk przy tabeli Watchdog....
Ok. A czym w takim razie różnią się od siebie te dwa zapisy ? ADC1->SR &= ~(1<<0); ADC1->SR &= ~ADC_SR_AWD; gdzie ADC_SR_AWD jest równe 0x01 a zresztą nie działa mi kasowanie przerwania w żadnym z tych przypadków, dodając również opóźnienie czasowe o różnych wartościach aby dać mu czas na reakcję. Wchodzi mi w przerwanie nawet jeśli...
Witam, Możecie spojrzeć na ten kod (poniżej?) Problem jest taki że co bym nie robił zdarza się w niektórych wsadach że jakaś strona pamięci zostaje zapisana samymi 0xFF. (wgrywam wsad potem sprawdzam programatorem poprawność). Procesor Atmega32; 4mhz (RC); UART 9600 ////////////////////////////////////////... /*...
Dzien dobry. Piszę bootloader do procesora atmega32. Bootloader ma dzialać w terminalu więc konwersja ascii -> hex jest przeprowadzana w mikrokontrolerze. Po uruchomieniu, program ładnie się przesyła, wszystko wydaje się być OK. Po resecie jednak nic się nie dzieje. Skopiowałem całą zawartość pamięci i zauważyłem, że drugi bajt jest nieprawidłowo...
Program chyba ukończyłem: ;Program do "modyfikatora sygnału" ;Parametry techniczne dla taktowania 4MHz: ;- skrócenie czasu o wartość max ponad 2,5ms z krokiem co 10us ;- lub wydłużenie czasu o max stałą wartość ponad 20ms z krokiem co 80us ;- mnożenie czasu przez współczynnik około 1,00 do 2,55 ;- wejścia sygnałowe portB 0-3 ;- wyjścia...
Watchdoga musisz kasować co chwilę Nie musi. Po resecie program ma wstać a w tym przypadku kontroler się zawiesza.
No tak, bo ATmega8 nie ma portu A. w pliku delay.h w funkcji delaj_ms() jest odwołanie do portu A (zresztą jest w opisie tej funkcji informacja o kasowaniu watchdoga),poprostu te dwie linijki usuń, nie są Ci potrzebne.
Czyli wyłączenie WatchDoga jest na takim samym poziomie bezpieczeństwa jakie zapewnia sam WatchDog, bo zawsze można wyobrazić sobie takie działanie programu że WatchDoga jest kasowany a jednak program nie działa zgodnie z naszym zamiarem.
no wlasnie RAM jest kasowany!
...Czy nie da się ustawić go aby się kasował po kilku sekundach? Zajrzyj no jeszcze raz do dokumentacji tego proca i spójrz na tabelkę Table 9-2. Watchdog Timer Prescale Select PS Podpowiedź: 1024 K
Przerwanie od WD TRZEBA włączać za każdym razem przed komendą SLEEP bo wejscie w przerwanie automatycznie kasuje bit który zezwala na przerwanie i następny okres WD po prostu bez tego zresetuje uC. Tak jest w trybie Interrupt+Reset, wtedy pierwsze przepełnienie odpala przerwanie a drugie i następne reset. W trybie Interrupt bit WDIE nie jest kasowany....
Witam; Chciałem uśpić procesor w trybie Power Down. Pobudkę zaplanowałem po chwili na skutek zadziałania Watchdoga. Ponieważ w MEGA644p jest przerwanie od watchdoga, więc postanowiłem z niego skorzystać .Mój tok myślenia jest nastepujacy: 1) Uśpienie w POwer Down z włączonym wdt 2) Watchdog się przepełnia, budzi procesor 3) Procesor budzi się i wskakuje...
Według mnie sam nie powinien, choć aż tak dobrze BASCOMa nie znam. Intencją tworzenia watchdog'a było jego kasowanie wyłącznie przez użytkownika. :)
Trochę dziwnie napisałeś ten program, pozwoliłem go sobie trochę przerobić. Sprawdź konfigurację portów żebyś nie uwalił sobie procka, i napisz czy poniższy program rozwiązał Twój problem. Kod: [syntax=basic4gl] 'Tester napiecia na AVR ' ' - zegar wewnetrzny 1 MHz ' - górny fuse bit D9 ' - dolny fuse bit E1 'procesor ATMEGA8 $regfile = "m8def.dat" $crystal...
movlw 0xC8 movwf option_reg W tym momencie podzielnik przypisałeś do watchdoga, nie do TMR0. (oczywiście kiedy trzeba kasujesz T0IF ?)
Witam próbuje napisac program w asemblerze, aby zaprogramowac PICa. Program, na poczatku ma rozpoznawac zrodlo resetu i w zwiazku z tym wykonac odpowiednie zadania( w zaleznosci od tego czy byl reset, wlaczenie zasilania, czy watchdog doliczyl do zera lub czy zostalo wlaczone ktores z wejsc, mikrokontroler ma pozostac w wiekszosci czasu w stanie sleep.)...
No fakt... w tej nocie dość mocno była zakamuflowana informacja o RC, stąd jej nie widziałem. Jednakże.. kurcze nadal mi coś nie działa. Nie wiem czy dobreałem dobre parametry (wg noty dobre). Zastosowałem rezystor 10K oraz kondensator 22pF (próbowałem również 100uF). Nie wiem co może być jeszcze nie tak.. Oczywiście wyprowadzenie do RC podpiąłem pod...
Źle się wyraziłem. Nie wiedziałem jak watchdog zlicza te liczniki i czy można je od tak sobie odczytać, czy kasują się po resecie. Nadale nie bardzo wiem? Czy chodzi o licznik watchdoga czy o licznik zrobiony programowo w backupdomain?
Chciałem podziękować koledze Adamowi, ale program który podesłał nie do końca ruszył, jednak jego pomysł naprowadził mnie na rozwiązanie i bardzo mu dziękuję za pomoc, dokonałem tylko drobnej kosmetycznej zmiany w programie i ruszył, odczytuje kod i wystawia go na portb, i trzyma tak długo ustawiony dopóki nie przyjdzie kolejny, jeżeli chcemy go kasować,...
jeśli byłby to bug programowy to po resecie uC powinno znów działać tak?:) Niekoniecznie, również zależy od kodu - pamięć RAM nie jest kasowana, co więcej bardzo prosto jest obsłużyć powrót z reset-u watchdoga niezauważalnie dla użytkownika.
A ni jest tak, że włączenie silnika i wogóle pracujący silnik czasami resetuje ci procka? Daj długi delay na początku to szybko to zauważysz. Nie masz włączonego watchdoga którego nie kasujesz? Czy masz dobrze skonfigurowane rejestry od przerwań? Może włączyłeś jakieś przerwanie a nie zrobiłeś jego obsługi? Może nie masz podciągnięcia na wyjściu sterującym...
Więc jeśli mruga ciągle, to prawie pewne jest, że program nie zostaje w ostatniej pętli while(1). I dlatego podejrzewam watch_dog'a. Można spróbować to sprawdzić. W ostatniej pętli while(1) należy dodać instrukcję kasującą watch_dog. _asm wdr _endasm Nie wiem tylko, czy Twój kompilator rozpoznaje te dyrektywy. Jeśli działanie programu się zmieni, to...
Witam wszystkich, proszę o pomoc w rozwiązaniu problemu w kodzie w języku C ale ze wstawką asemblerową. Poniżej zamieszczam kod. [syntax=c]/* * main.c * * Created: 2/14/2022 1:11:10 PM * Author: Maciej */ #include <xc.h> #include <avr/wdt.h> #include <avr/interrupt.h> #include <util/delay.h> #define WDT_ENABLE ISR(WDT_vect)//przerwanie...
Nie chcesz auto łączenia z WiFi to masz funkcję WiFi.setAutoConnect(false); W narzędziach arduino pod pozycją Erase Flash możesz wybrać by za każdym wgraniem szkicu kasowało cały flash (jak wyżej). Jak masz długie pętle z dużą ilością instrukcji użyj w każdej iteracji yield(); lub delay(0); unikniesz tym wyzwolenia watchdoga. Zawsze można wyłączyć watchdoga...
zastąp signal i stary vektor INTERRUPT0 SIGNAL (SIG_INTERRUPT0) { x++; } na nowsze ISR i INT0_vect ISR (INT0_vect) { x++; } tu masz wszystkie przerwania http://www.nongnu.org/avr-libc/user-manu... a co do watchdoga hmm... żeby użyć #include <util/delay.h> musisz dać wcześciej #define...
Dzięki Rocket_93. Bardzo podobnie to sobie wyobrażałem. Z tego co rozumiem to już na attiny2313 zmieści się prosta obsł. usb i zostaje jeszcze coś na główny program? Do Twojego pomysłu dodałbym jedynie logowanie zdarzeń( resetów), udostępnianie i kasowanie logów. Tyle że tutaj czasomierz potrzebny. I wydaje się że już można zacząć diełać;) Oczywiście...
Nie wiem czy ci to pomoże bo programuję w BASCOMIE:D, ale Watchdoga uruchamiam na początku programu, deklaruję czas np. 1024ms, uruchamiam (Start Watchdog) i później kasuję go przed programem głównym (czyli praktycznie na początku) i po każdym wejściu do pętli, oraz oczywiście w programie głównym przed instrukcją Wait (w asemblerze NOP) i zaraz po tej...
Ja myśle że musiałbyś zrobić coś takiego żeby wykrywać reset komputera i w momencie resetu blokować na czas nieokreślony watchdog. Po uruchomieniu komputeraz musiałbyś go np raz resetować co by spowodowało "normalną" prace watchdoga. PS do czego zamierzasz zastosować ten układ watchdoga? Jaki komp i jaki OS ? PS2 mam jeszcze jeden niezły pomysł, można...
Na tyle łatwo, że kompletny laik (jak ja) ogarnie to w 2 minuty lub nawet szybciej. Może tak ja tam na Arduino się nie znam wiem jak w C/C++ czy ASM zrobić. Tam zapewne jest jakaś gotowa klasa w C++ (biblioteka) którą to się robi i zapewne w tą główną pętlę co tam jest w arduino wstawia się kasowanie licznika... ale to moje domysły - a czytać o Arduino...
Nie kojarzę jak to jest w STM ale w AVR po resecie zrealizowanym przez WD rejestry konfiguracyjne WD nie są kasowane - tj. watchdog od momentu startu kodu działa tak jak został zaprogramowany przed resetem i czeka na komendę WDR albo wyłączenie. Jeśli ktoś tego nie uwzględni w kodzie to po resecie od WD mikrokontroler potrafi wpaść w pętlę resetowania...
Wszystko słusznie ale czemu tak przywiązałeś się do tego bitu WDCE który jest używany tylko jako zabezpieczenie przed przypadkową modyfikacją rejestru WDTCSR. Zwróć uwagę na WDE - jego opis oraz parametr "Initial value" w tabelce. Ten bit nie jest domyślnie kasowany przy resecie a to oznacza, że po resecie watchdog dalej działa ale już z czasem time-out...
CPI r24, 4BRSH wylacz_usypianie...wylacz_usypianie:CLI.... Kod: avrasm ] CPI r24, 4BRSH wylacz_usypianie...wylacz_usypianie:CLI.... Powiem szczerze, że nie bardzo rozumiem. Obecny kod wygląda w ten sposób: [syntax=c]/* * main.c * * Created: 2/14/2022 1:11:10 PM * Author: Maciej */ #include <xc.h> #include <avr/wdt.h> #include <avr/interrupt.h>...
https://obrazki.elektroda.pl/4201808000_... Omawiany projekt zaczął powstawać w pierwszej połowie 2022 roku, a dojrzałość osiągnął kilka miesięcy później, choć nie nazwę go jeszcze skończonym! Motywacją była chęć skutecznego zapamiętania przebytych tras w górach, a także zdobycie materiałów pozwalających wprowadzać poprawki i uzupełniać...
Witam, temat stary ale z uwagi na to iż sam miałem z nim do czynienia a co ważniejsze udało mi się jakoś go rozwiązać to żebym sam np. za rok nie musiał od nowa sobie przypominać jak to zrobiłem to napiszę tu :) 1. Wgrywamy do procka następujący program: cli ; istotne z uwagi na możliwe zezwolenie od watchdoga ldi temp, 0b10000000 ; zezwolenie na zmiane...
reset watchdoga watchdoga atmega wyłączenie watchdoga
ustawienie rozrzad schemat mierzy heterodyna spawarka schema
Kia Picanto – przełącznik kierunkowskazów śmierdzi topionym plastikiem, przegrzewanie, wymiana Manometr w instalacji CO – Ferro, Grundfos, montaż na powrocie czy zasilaniu, pompa na powrocie