telekomuna - zajmuje sie mikrokontrolerami wiem jak działa watchdog :) chodziło mi o to że program nie resetuje (zeruje) rejestru watchdoga przez co on sie przepełnia i generuje reset, jak napewno wiesz, watchdog jest licznikiem zliczajacym cały czas impulsy (jakie zalezy od ustawien rejestrów preskalera) programista powinien systematycznie w programie...
Dla konfiguracji resetowania się watchDoga po 4 sekundach : Mcusr = &B00000000 'Zerowanie rejestru aby wyłączyć bit 3 czyli WDRF. 'Dokonywanie jakichkolwiek zmian w WatchDogu musi dokonywać się w ściśle określonej sekwencji wpisów do rejestru 'WDTCSR. Jako pierwszy krok trzeba zrobić wpisanie wartości 1 do bitu numer 4 nazywanego WDCE.Pozostałe bity...
W poście #1 napisałeś że nie możesz wejść w tryb bootloadera a w #5 że masz komunikację z Flipem. To jak jest ostatecznie? Tak procedura jest poprawna PSEN do masy + Reset. Z tego co pamiętam to w przypadku zabezpieczonego procesora FlashMagic zgłaszał to przy próbie odczytu. Musiałbym to jeszcze sprawdzić ale P89C51RC2 i AT89C51RB2 nie były bezpośrednio...
Oczywiście chodzi o sam początek programu, użyłem skróty myślowego. Na samym początku programu niech będzie warunek który sprawdza czy był zresetowany przez watchdog (specjalna flaga w rejestrze MCUCSR), jeśli nie - czyli jak program uruchamia się pierwszy raz, to program leci dalej i robi co ma zrobić, potem w momencie kiedy chcesz uśpić procka uruchamiasz...
Dzieje się coś dziwnego z mikrokontrolerem i już sam nie wiem co ja z tego wnioskuję, na pewno wnioskuję, że nie działa tak jak powinien, prosty program, #include "stm32f10.x" int test=0; int main(void) { while(1) { test++; } } Czyli według Ciebie kod powyżej jest kompletny i powoduje ustawienie flagi resetu od watchdoga? Nie inicjalizujesz nigdzie...
Użyj bootowalnego Linuxa Live CD i z pod niego usuń AVG. Następnie uruchom komputer, przeskanuj Malwarebytes-"pełne skanowanie". Następnie wyczyść rejestr CCleaner-em.
NIestety poprzednicy mają rację 2313 ma trzy źródła sygnału zerującego: 1. Power on reset - gdy napięcie zasilania spadnie poniżej 1.0 - 1.4V dla zbocza narastającego (wł. zasilania) i 0,4 - 0,6 dla opadającego (wył. zasilania). 2. External reset - stan niski na wejściu RESET przez 50us 3. Watchdog - gdy jest uaktywniony Powyższe sygnały zerujące zerują...
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...
Witam, Oczywiście, że możesz wybudzać procesor z trybu Power-down bez resetowania procesora, Watchdog wywołuje przerwanie "od siebie" i procesor jest już aktywny. A to czy podczas przerwania od Watchdoga procesor jest resetowany czy też nie to muszisz ustawić w odpowiednim rejestrze z Watchdoga (WDTCR) tam też ustawisz czas po jakim będzie generowane...
W wielu nowszych AVRach jeśli watchdog był źródłem resetu to zostaje włączony automatycznie, bo bit WDE jest ustawiany tak jak WDF z rejestru MCUSR. Pozostałe bity rejestru WDTCSR są wyzerowane, a to oznacza, że ustawiony jest minimalny czas. Wyłączenie watchdoga należy wykonać przed funkcją main. Służą do tego sekcje .initx. Ponieważ będzie to funkcja...
Na początku programu sprawdzasz flagi rejestru MCUCSR. Jeżeli jest ustawiona flaga WDRF tzn. że watchdog wywołał reset. Inne flagi oznaczają inne przyczyny resetu. Poczytaj sobie str. 41 dokumentacji do ATMEGA8L.
Mam wrażenie, że kolega ma uraz do AVR... A producent idzie naprzód i procesorki z bugami są wycofywane z produkcji. Do kompletu wbudowano konfigurowalnego watchdoga, rejestr źródła resetowania, wszystko kwestia chęci, a złej baletnicy to i rąbek u spódnicy, taka to musi się dowartościować strojem za kilka kPLN... ;) -- Pozdrawiam, Daniel
Tylko najpierw sprawdź jaka jest maksymalna wartość rejestru IWDG->RLR (Reload register) i czy aby na pewno wartość 10000 się tam mieści.
Zalaczenie watchdog'a to nie rozwiazanie. Watchdog jest ostatecznym kryterium (zabezpieczeniem) a nie nadzorem nad blednym softem. Nalezy najpierw znalezc przyczyne "zawieszania" - o ile beda to zaklucenia z sieci - mozna pokusic sie o watchdoga. Jednak lepszy bylby filtr. Oczywiscie jestem zwolennikiem i czesto wykorzystuje watchdog w swoich aplikacjach....
jeśli nastąpi reset to i tak mam zresetowane wszystkie rejestry prócz licznika watchdoga więc to chyba nie problem, mój program po przejściu w tryb uśpienia nie musi pamiętać danych w RAMie. Przepisze program wg rad i wrzuce jutro na procka, zobaczymy co on na to :) Dziś zajmuję się innym projektem 9 a przynajmniej miałem takie nadzieje) Pozdrawiam...
akie kwiatki to tylko w sprytnej wiedzy użytkowników Bascom wyskakują... W rejestrze Watchdog-a, który jest 8-bitowy nie wpiszesz większej liczby niż 255. Można jedynie ustawić konkretne, zaprojektowane z góry przez twórców mikrokontrolera czasy licznika. A gdzie ja napisałem że wpisuję to do rejestru? 2048 to liczba którą Mark Alberts przepisuje do...
No to jest to czego szukałem. Tylko teraz pytanie: Dlaczego zawartość rejestru R0 to zawiera,a nie można odczytać z MCUCSR jak jest opisane w DSie?? edit Aaa już wiem gdzie robiłem błąd. Można odczytać WDRF moim sposobem tylko przed Config Watchdog, bo ta instrukcja czyści rejestr MCU(C)SR. Wszystko pięknie jest wyjaśnione w Helpie od wersji 2.0.1.0...
Witam. Dziękuje za pomoc. Problem z watchdogiem spowodowany był tym że procesor programowałem poprzez bootloadera, który wyłączał watchodoga i nie było możliwości ponownego włączenia - rejestr jednokrotnego zapisu . Pozdrawiam i dziękuje za pomoc.
"WDTO_500 to raczej zmienna niż funkcja" wiem, ale tak mi pisze kompilator, więc pytam co jest nie tak? Jaki rejestr przechowuje informacje o restarcie przez watchdoga?
http://www.elektroda.pl/rtvforum/topic48... Cytat: Nie wiem czy to jeszcze aktualna uwaga, ale miałem ten sam problem, a po wczytaniu się w dokumentacje pisze tam że po włączeniu watchdoga i zresetowaniu układu - watchdog nie jest wyłączonay ( bit WDE w rejestrze WDTCSR nie jest zerowany ). Musisz jako pierwszą instrukcję w programie umieścić...
Witajcie! Wpadłem na ten topic, bo interesuje mnie ten sam problem, co prawda na PIC10F206 i liczby od 0-256, ale zagadnienie jest podobne. PIC10F206 ma wewnętrzny oscylator RC 4MHz - myślałem o tym aby zastosować jakąś sieć połączeń (kombinacji) w zależności od jakiegoś jednego bitu. Tym bitem mógłby być LSB jakiegoś rejestru - w momencie zatrzymania...
Witam Wszystkich! Chciałbym prosić Szanownych Forumowiczów o kilka słów wyjaśnienia na temat konfiguracji i "używania" watchdoga w prockach LPC2000 programowanych pakietem WinARM. Napisałem już pokaźny program na równolegle działające 20 ARMów, ale czasami zdarza się, że program tu i ówdzie zawiesi się niwecząc cały cykl obliczeniowy. Mam w związku...
nie widziałem, że tam są zera, co jest bez sensu, bo a | 0 = a bo procesor zasypia w przerwaniu, z którego nic już nie jest w stanie go obudzić ... Chodzi mi głównie o dane wpisywane do rejestrów WDTCR i MCUSR jak zwykle problemy są zupełnie gdzieś indziej ;d
Masz podciagniecie resetu do VCC? Spróbuj sam ustawiać rejestry od watch doga.
Mozna spokojnie. U siebie (tez Tiny2313) zmieniam podczas pracy nawet taktowanie. Jeśli uC u mnie pracuje na 8MHz bo musi wygenerować rózne wysokie częstotliwości to podczas snu brał 2mA. Teraz przed uśpieniem dobieram się do rejestru CLKPR - Clock Prescale Register. Zasada przestawiania jest podobna jak w WD. Trzeba najpierw ustawić CLKPCE: Clock Prescaler...
Chyba się poddaję (póki co) a urządzenie wyraźnie oznakuję jako niezgodne z ATMEGA32A (zgodne wyłącznie w ATMEGA32). Lub też zgodne z ATMEGA32A pod warunkiem zastosowania przekaźników RM85. Powiedziałbym, że takie postępowanie byłoby niegodne tytułu inżyniera. Cały czas brak jest podstawowych informacji o układzie i programie: - jaki kwarc i kondensatory...
Jeżeli chcesz wykorzystać Watchdog jako rodzaj timera, to w rejestrze WDTCR powinno się ustawić bit WDTIE. Ponadto za pomocą bitów WDP3...WDP0 należy ustawić prescaler Watchdog'a. Z tego wynika co jaki czas będzie przerwanie. Jeżeli np. potrzeba 8 s, to ustawić należy WDP3 i WDP0, czyli powinno być: https://obrazki.elektroda.pl/1370064900_...
O ile mi wiadomo z własnych doświadczeń, to przejście w tryby oszczędnościowe nie powoduje zmian w rejestrach i w pamieci ram, wiec stan wyjsc pozostaje niezmieniony. Tylko reset powoduje ustawienie we/wy w stan highz, ale nie powoduje wyczyszczenia zawartosci pamieci,. Przydaje sie to np. przy wybudzaniu z trybu power down przy pomocy watchdoga.
Witam. Mam następujący problem - w pracy napotkaliśmy sytuację, gdy jest z programów (pisany na ATxmega256A3) potrafi się zawiesić w trudnym do określenia momencie. Jest to kłopot, natomiast pojawił się większy, mianowicie watchdog nie resetuje urządzenia. Jakie mogą być tego przyczyny? Moje przypuszczenia: 1. Pisanie po adresach pamięci zarezerwowanych...
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...
Czy używasz WatchDoga czy go przypadkiem nie włączyłeś na stałe (FuseBits)? Możesz odczytać stan rejestru MCUSR aby sprawdzić co było przyczyną resetu.
Czesto pokazywal sie blue scream z kodem: "DRIVER PNP WATCHDOG" Myslicie, ze to jest spowodowane jednak wirusem? Badz uszkodzony rejestr systemu?
Jakie są przyczyny częstych restartów urządzenia? Mam urządzenie BL602. Po skonfigurowaniu Wi-Fi i informacji MQTT dla urządzenia, urządzenie działa normalnie. Po odłączeniu Internetu Wi-Fi (urządzenie pozostaje podłączone do sieci Wi-Fi) urządzenie często i automatycznie uruchamia się ponownie. Powodem wyświetlania błędu jest: BL-RST-SOFTWARE-WATCHDOG Ale...
[syntax=cpp] #include <cstdint> uint8_t volatile *const watchdog = reinterpret_cast<uint8_t*> (0x443); // Volatile jest konieczne, żeby kompilator nie próbował cache'ować wartości w rejestrach. // Zapis: *watchdog = 123; // Odczyt: x = *watchdog; [/syntax] Chcesz to zrobić w Windows pod x86? To normalnie nie uda Ci się zapisać pod tę komórkę...
Używasz r6=zro jako zerowy ale nie widzę jego inicjalizacji. Najlepiej dać krótką procedurę zerowania rejestrów roboczych. Poza tym konieczna jest procedura wyłączania watchdoga jak go nie używasz. Stos na Ramend jest ustawiany sprzętowo więc tutaj niepotrzebnie. N.
To przy budzeniu przerwaniem przy pierwszym sygnale przerwaniu wykona się przerwanie i w nim kod? Tak. Warto zapoznać się z: https://www.nongnu.org/avr-libc/user-man... znacie jakieś sposoby na resetowanie mikrokontrolera oprócz wykorzystania sprzętowego. Skok pod adres 0 nie resetuje rejestrów procesora (np. DDRx) i trzeba to...
TSOP332 pobiera ok 1,5 mA Według tego opisu chciałem wykonać http://donalmorrissey.blogspot.com/2010/... wybudzanie i jak widać w obsłudze przerwania watchdoga można sprawdzić czy jest coś "do roboty" ale w pdf atmegi nigdzie nei widze takiego rejestru do ustawianie zezwolenia przerwania WDT_vect. W tym procesorze...
Program bez watchdoga zasadniczo zawieszac sie nie powinien - jezeli robi to regularnie albo bardzo czesto to znaczy, ze problem jest w Twoim sofcie albo w wadliwym ukladzie (zasilanie, prowadzenie masy, odsprzeganie zasilania - mikrokontroler natomiast na pewno jest w porzadku). Watchdog jest dodatkowym zabezpieczeniem w razie jakichs bardzo niezwyklych...
Musisz pamiętać o tym, że raz uruchomiony watchdog będzie działać dalej nawet po resecie. Sprawdź w DSie które bity rejestru WDTCSR zostaną skasowane po resecie a które nie i wyciągnij wnioski.
crazy_phisic -> dokładnie o takich rozwiązaniach myślę z bluetooth'em. Wkrótce się tym zajmę ;) jednak - trzeba koniecznie oddzielić procek zastępujący poprzedni oryginalny sterownik - od procka, który będzie się z nim komunikował. Po prostu ten pierwszy musi chulać niezawodnie - nie mogą się zdarzyć żadne opóźnienia jeśli chodzi o przemiatania rejestrami...
Witam, A czego Pan, Panie Kolego nie rozumie? Kolumna Address, podaje adresy poszczególnych rejestrów tego sterownika. Rejestrów służących do skonfigurowania pracy tegoż urządzenia. I tak dla przykładu, tabela 12, ilustruje co kolejne bity w tych rejestrach oznaczają i do czegoż służą. Czyli np. rejestr: CRWD (00h) zawiera bity WDEN WDT[3:0]. Pierwszy...
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ć...
Nie wpisałeś tam przypadkiem 0 (aczkolwiek nic to nie powinno zmieniać)? Popatrz że najpierw używasz operacji bitowych &, a potem przypisujesz wprost do rejestru. Dwa - nie bruździ Ci tutaj watchdog (odpaliłeś chyba tym wpisem hardware'owego watchdoga)? Trzy - jeszcze ustawiłeś write protect. EDIT - nie wiem jak w STVP to wygląda, tam jest rozróżniona...
Witam. Autor repozytorium i filmiku o Linuxie na tym sprzęcie tutaj. Jakoś trafiłem na tą dyskusję i pomyślałem, że podzielę się z doświadczeniami jak pracowałem właśnie nad tym coś koło 3 lata temu, bo może jakieś info się przyda. Fajnie zobaczyć kontynuacje tego co samemu mi się udało kiedyś ogarnąć. Generalnie powiem tak: z punktu widzenia dla Linuxa...
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...
Ale teraz jest w ogóle bez WatchDoga więc jak kolega przynajmniej czasami będzie go włączał to chyba tragedia się nie stanie? Można programowo wyłączać i włączać. Wszystko jest w Datasheecie w rozdziale "System Control and Reset" Włącza i wyłącza się bitem WDE w rejestrze WDTCR.
heh, dziwne ze w ogole ci zadzialalo z takimi ustawieniami... 1. wylacz wszystkie code i write protection 2. primary oscilator source zgodnie z logika powinien byc ustawiony na FRC, a nie na External Clock. 3. jesli nie zamierzasz zmieniac zegarka (np PLLa ustawiac), to mozesz wylaczyc Clock Switching (Sw) i Clock Monitor (Mon). 4. POR Timer daj na...
ATmega644P jest dobrym wyborem. Ma te same końcówki co ATmega32. Jeśli używasz USART to będziesz musiał zmienić nazwy rejestrów, bo ATmega644P ma dwa USARTY a ATmega32 jeden. Innych kłopotów nie przewiduję. Używasz WatchDoga?
Witam, prawdopodobnie błąd jest w inicjalizacji watchdog. Wykorzystujesz do tego dwie funkcje, init_WDT() oraz init_watch_dog(). Pierwsza init_WDT: https://obrazki.elektroda.pl/2044113200_... ale już kolejna linijka [syntax=c]WDTCSR=_BV(WDIE);[/syntax] kolejne nadpisanie rejestru WDTCSR, w tym momencie ponieważ mieścisz się w czterech...
W STM32 timery chodzą nawet jak układ stoi - da się to przestawić rejestrem DBGMCU->CR. Pewnie z watchdogiem jest tak samo. Wtyczka GDB Hardware Debugging jest do znalezienia w "standardowym" repozytorium wtyczek dostępnym do wybrania zaraz po instalacji - http://download.eclipse.org/releases/ind... 4\/3!!
Witam, Uruchomiłem watchodoga w ten sposób: [syntax=c]RCC_APB1ENR.B11 = 1; // Enable clock gating for Watchdog Timer 0 module WWDG_CFR = 1; // Write window value to be compared to the downcounter WWDG_CR = 0b10000000; // Enable the watchdog while (1) // Endless loop, WatchDog_Timer will reset ARM[/syntax] Procesor pieknie sie resetuje, co widzę po tym,...
chciałem zrobić wstawkę asemblerową dla watchdoga ale to już nie istotne bo nauczyłem się ustawiać poszczególne bity w rejestrach i rozumiem że to wystarczy... ale problem istnieje przesiadłem się na atmega1284p tu jest watchdog do 8 s no i dla 8 nie działa 4,2 i 1s również nie działa, działa dla 0,5 i mniej - dlaczego??? dla 0,5 s wdr Wdtcsr = &B00011101...
Witam, Opcje te można dodać podczas "linkowania" programu, czyli np: $(MF).elf: $(MF).o $(OBJECTS) $(CC) -Wl,-Ttext,0x1e00 -nostartfiles -nodefaultlibs -o $(MF).elf $(MF).o $(OBJECTS) . W większych AVRach możesz ustawić wektor resetu na bootloader, i wtedy musi być tam osobna inicjalizacja...
Witaj ponownie, W dokumentacji atmela znalazłem notę cyt: SRCMP: Software Reset Command in Progress 0 = No software command is being performed by the reset controller. The reset controller is ready for a software command. 1 = A software reset command is being performed by the reset controller. The reset controller is busy. Może warto by było sprawdzić...
Z opisem OTP mi trochę zejdzie. Najpierw opiszę dekodowanie BINa. Będę też musiał zmapować "fusebity", bo wyciąganie starego laptopa z windowsem za każdym razem jak coś chcę przestawić jest dość upierdliwe. Programator, jest nowsza wersja (w kolejce do opisania), podesłałem pliki na PW. Kilka spostrzeżeń odnośnie samych mikrokontrolerów. Fusebity trzeba...
Nie blokuje. To tylko nakazuje skok pod podany adres i jak wskażesz 0 to skoczy na początek flasha gdzie zaczyna się program. To jednak nie resetuje procesora całkowicie. Wszystkie zapisane rejestry zostaną nietknięte a to może nie być pożądaną opcją. Lepiej jest chyba ustawić Watchdog z najkrótszym czasem to zresetuje uC całkowicie i każe mu skoczyć...
Czas zapisu Eepromu wynosi typowo 2,5-4ms. W tym czasie nie powinny byc dokonywane zadne inne operacje na pamieci Eeprom. Informacja o zakonczonym zapisie znajduje sie w rejestrze Eecr (bit 1). Wyzerowanie tego bitu = koniec zapisu Po instrukcji writeeeprom mozesz dac polecenie: bitwait Eecr.1, reset wtedy program bedzie zatrzymywany jedynie na czas...
Prawie dobrze, tylko trochę nie doczytałeś :) , możesz to zrobić tak jak zacząłeś wpisując sam do rejestru WDTCSR, ale musisz zrobić to w dwóch krokach. Najpierw odblokować zabezpieczenie ustawiając w rejestrze bity WDCE oraz WDE (istotna jest tutaj suma logiczna z zawartością rejestru, żeby nie wyzerować preskalera i nie spowodować kolejnego resetu...
No dobrze wyświetlacz oberwie przepięciem i nie jest w stanie go zainicjować procesor bez wyłączenia mu zasilania. Ale sam procesor z programem musi wstać po resecie przez Watchdog? A nie wstaje. Jak zrobić ten rejestr?
Witam. Napotkałem problem z uruchomieniem watchdoga w mega32, nie widzę w kompilatorze fusa odpowiedzialnego za jego uruchomienie tak jak to miałem w przypadku mega8 czy mega 168 gdzie mogłem załączyć go na stałe lub z możliwością operowania programowego. Wydają się nie działać polecenia config watchdog, start watchdog itd. Wpisałem bezpośrednio de...
Witam od paru godzin męczę się z uruchomieniem watchdoga. Problem jest następujący: Watchdog nie działa. Ma włączony zegar (SYSAHBCLK), ustawiony bit w PDRUNCFG, wybrany oscylator (IRC, dzielnik domyslny 256) i przełączony oscylator (bit UEN). Następnie zostaje mu wpisane jego timeout (WDTC=300000) i włączenie z resetem (WDMOD=3). Bezposrednio następne...
Podstawowa sprawa jest taka: Watchdog stosujesz tylko w uzasadnionych przypadkach, a najlepiej nigdy. Wynika to z tego ,że procek po resecie może być trudny do opanowania z rejestrami i danymi w pamięci. Sprawa jeszce bardziej sie komplikuje gdy masz czasowo zbliżony Watchdog do przerwania, bo nie wiesz dokładnie jak sie on zachowa(rozrzut parametrów).
Witam Miałem podobny problem i rozwiązałem go właśnie watchdog-iem, poczytaj ten temat: http://www.elektroda.pl/rtvforum/topic48... Skok do adresu zerowego, nie jest najlepszym rozwiązaniem, ponieważ jak ktoś wcześniej wspomniał nie ustawia to rejestrów na wartości początkowe. Nie chodzi tu tylko o stany portów ale wewnętrzne rejestry (przerwania,...
Jak dla mnie taka odpowiedź zamyka dalsze próby udzielenia pomocy. Kolego masz prawo do swojego zdania, jak dla mnie temat nie jest zamknięty. Wieczorem będę przy komputerze, to wypowiem się odnośnie tego co zostało zastosowane i jaki był efekt. Pozdrawiam. Korekta: ponieważ sleep z watchdog nie działy razem jak należy, a trochę czas mnie gonił, zmieniłem...
Tak jak już pisałem na email, możesz sobie darować obsługę MMC, jeśli wystarczy Ci zapis tylko odczytów bez znaczników czasowych z dokładnością stałej czasowej rzędu 20% (bo przy takich różnicach temperatur mierzonych, na pewno temperatura samego procka też będzie mocno się wahać). Sprawa mocno się uprości, a wystarczy procek z 64kbajtami pamięci flash....
Dzień dobry, witam wszystkich. Mam problem z wstawką asemblerową do języka C. Programuję procesor atmega2560. Nie rozumiem dlaczego nie działa funkcja "asm volatile ("mov r21,MCUSR");". Chcę dzięki niej przenieść wartość rejestru mcusr do rejestru r21. Lista błędów w załączniku. Wiem, że one wprost mogą nie wskazywać na to, że ich źródłem jest ta linijka...
Chyba można by uniknąć stosowania watchdoga jesli wcześniej wyłączone zostały by przerwania?! Ale wiesz co? unikać stosowania watchdoga to raczej nie warto. Jeśli chodzi o wszystkie inne sztuczki programowe służące do tego celu to akurat watchdog zdecydowanie się do tego lepiej nadaje. Zauważ, że prawdziwy reset watchdoga daje ci m.in czyste wszystkie...
Jedyny programowy reset to watchdog, bo skok do FE00h powoduje restart avr-ka ale nie ustawia domyślnie rejestrów
Szperajac po internecie tez znalazlem informacje ze niektorzy uzytkownicy spotkali sie z podobnym problemem. No coz zawierzylem najwidoczniej wlasnej propagandzie i stracilem dwa dni na szukanie bledu w programie a nie w sprzecie ;) Teraz tez sobie zrobilem makro ktore robi mi porzadek na samym poczatku programu. Jakby sie tak zastanowic to racja ze...
Czy po wystąpieniu tego przerwania mogę zrobić jakiś zapis np w eepromie (aby później znać przyczynę resetu) ? Jeszcze w jednej kwestii się odezwę. Mianowicie większość AVRów ma rejestr MCUSR lub jego odpowiednik gdzie można sprawdzić co było przyczyną ostatniego resetu. Dla tiny2313 mamy na przykład flagi: WDRF - reset od watchdoga BORF - reset od...
Banalny przyklad: P1DIR = 0x40; P1OUT = 0; Programista majacy nawet duzo doswiadcznia w C nie wie po prostu do czego odwoluja sie te 2 zmienne i co gorsza dlaczego np 0x40 oznacza w launchpadzie(plytka z TI do msp430) zielona diode. To jest kiepski przykład, bo tak programują tylko i wyłącznie początkujący. Prawdziwy programista użyje przesunięć bitowych,...
Co do zerowania rejestrów to np. flagi przerwań "zeruje" się wpisaniem jedynki. Z kolei niektóre rejestry przyjmują wartość początkową inną niż zero (choć nie wiem czy są takie w tym procku, oprócz rejestru stosu, ale ten ustawiasz). -- edit --- I jeszcze mi się przypomniało: ustawienie (w tym wyzerowanie) niektórych flag wymaga wykonania pewnej sekwencji...
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...
Raczej skłaniał bym sie o jego mniejsze wersje- 20, 4051 myśle nad zrobieniem czegoś w stylu watchdoga. tylko mam pare pytań co do ustawiania jego rejestrów po takim starcie Oto co myśle: Licznik był by inkrementowany w regularnie występującym przerwaniu od T0. w momencie gdy się przepełni program skacze na ORG 0h- czyli do początku. Ów licznik był...
Podsumujmy: - skok do adresu zero, nic nie da, bo nie zeruje rejestrów, ale pozwala wystartować program od początku - wpisywanie bitów MCUCSR nic nie daje - watchdog nadaje się do tego doskonale Wsio w temacie
51' nie maja programowego resetu. Mozna wykonac wiec petle while(1); przy wlaczonym watchdogu ale wtedy niekoniecznie wszytskie rejestry beda mialy wartosc poczatkowa taka jak po Power On Reset - szczegoly w pdfie poszczegolnych uC. Prawde mowiac nie widze za bardzo sensu takiego dzialania - po co taki reset? BF
Z ciekawości, co się dzieje po takim skoku z rejestrem flag? Czy np. pozostawione tam z poprzedniego wykonania wartości nie wpłyną na dalsze działanie programu? Pytam, bo już na tym forum czytałem, że lepiej jest użyc watchdoga do resetowania, a konkretniej żeby go włączyć i czekać.
Jest rejestr WDTCR. Ustawienie bitu 3 włącza watchdoga. Bity 0..2 odpowiadają za częstotliwośc pracy. 0 0 0 16K (16,384) 17.1 ms 0 0 1 32K (32,768) 34.3 ms 0 1 0 64K (65,536) 68.5 ms 0 1 1 128K (131,072) 0.14 s 1 0 0 256K (262,144) 0.27 s 1 0 1 512K (524,288) 0.55 s 1 1 0 1,024K (1,048,576) 1.1...
AVE... PIC16F785 posiada dwa wewnętrzne komparatory(wiele innych PICów ma co najmniej jeden), które generują przerwania - użyć tego w połączeniu z wewnętrznym źródłem napięcia odniesienia. Mierzysz spadek napięcia na rezystorze pomiarowym i porównujesz z napięciem odniesienia ustawionym w mikrokontrolerze. Zmiana, na przykład przekroczenie ustalonej...
Nie spotkałem w bascomie funkcji do konfiguracji Pin change innterrupt ani przerwania od watchdoga, ale oczywiście można to zrobić na rejestrach. W bascomie nie znam zawartości pliku ATtiny44.dat Czy oprócz nazw rejestrów są jeszcze bity? [syntax=basic4gl]$regfile = "ATtiny44.dat" Dim Praca as Bit Praca = 0 Config PINA.5 = Input PORTA.5 = 1 'włącz wewnętrzne...
Roznica pomiedzy skokiem pod adres $0000 a reset przez watchdoga jest i to spora. Watchdog sprzetowo linie RESET na jakis czas aktywuje. Wtedy wewnetrznie wszystkie rejestry opisane w dokumentacji przyjmuja swoj stan poczatkowy. Przy skoku pod adres $0000 ciagle dzialaja przerwania, sa poustawiane rozne rejestry wczesniej zainicjalizowane wiec moga...
Nie daje się SETB WDCON.1 tylko ORL WDCON,#00000010B Nazwy rejestrów specjalnego przeznaczenia (SFR) nie są adresowane bitowo Może jeszcze dodatkowo spróbuj ORL D8H,#2
Odpuść sobie HALa i zacznij pisać na rejestrach. Uprościsz sobie i nam życie. Przykładowa konfiguracja z F411: [syntax=c]//WATCHDOG if(RCC->CSR & RCC_CSR_IWDGRSTF) { RCC->CSR = RCC_CSR_RMVF;//kasuj flagi resetu /* Kod obsługujący reset ze strony IWDG */ } IWDG->KR = 0x5555; //dostęp do PR i RLR IWDG->PR = IWDG_PR_PR;//40kHz/256=6.4ms IWDG->RLR = 0xFFF;...
to co jest na tej pozycji. Czy ktoś może wie i może rzeczowo odpowiedzieć. Ależ oczywiście - datasheet już Ci odpowiedział: Tyle pisze w dokumentacji: http://obrazki.elektroda.pl/7237092100_1... ani słowa o piątym bicie (waga 4) co zrozumiałeś poprawnie: Piszę o piątym picie (waga 4). Pozycja ta jest wolna, w rezerwie. Jeżeli już tak...
Porównałem specyfikacje at89c52 do at89c51 i wygląda na to że wyjścia (nóżki) mają tak samo. A skoro tak to wolałbym zastosować at89c52 ze względu na późniejszą modyfikację. Rozumiem że tą pierwszą kompilację pliku bin mogę zastosować do at89c52 bez żadnej poprawki kodu i bez zmiany PCB? AT89C52 i AT89C51 są pinowo kompatybilne, C52 ma dodatkowy TIMER2...
(at)dondu, napisałeś, żebym sprawdził rejestr MCUCSR niestety mój programator nie ma odpluskwiacza :/ Nie rozumiem :) Niestety nie wiem czy to watchdog się odpala i mi resetuje uC, jeżeli tak to nie wiem dlaczego, ... To jakaś nowość :) W takim razie zacznijmy jednak od rejestru MCUCSR - w czym problem?
Piszę w Bascom'ie. Nie chodzi mi o szczegóły zachowania się rejestrów ale o to czy zawsze po "zwisce" piny portów przyjmują stan wysoki (taki jak podczas uruchamiania procesora zaraz po autoresecie).
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.)...
Dobra nie będą Cię więcej męczył tylko powiem. To nie będzie reset. Podczas sprzętowego resetu są asynchronicznie resetowanie wszystkie rejestry specjalne. Czyli piny są ustawiane jako Hi-Z, Timery są zatrzymywane, ADC/I2C/SPI/UART zatrzymywane, przerwania wyłączane itd. itp. Skok pod adres 0 nie zrobi tego. K***a. Nic nie zrobi. Żeby to zrobić trzeba...
Watchdog tylko resetuje układ nic więcej, ale masz w rejestrze MCUCSR : • Bit 1 – EXTRF: External Reset Flag This bit is set if an External Reset occurs. The bit is reset by a Power-on Reset, or by writing a logic zero to the flag.
Problem stanowi mikrokontroler STM32F051C8 który po wgraniu kilkadziesiąt razy programu zaczął się samoistnie resetować co 400ms. Pin reset nie był podciągnięty pod 3.3V, ale po podłączeniu pull-upa nic to nie zmieniło. Dało się go programować za pomocą ST-Link Utility (connect under reset). Pin BOOT0 podciągnięty pod masę, za pomocą zworki, którą można...
a czy pamięć może się rozrosnąć magicznie? Masz to narysowane w DS Poniekąd może. W klasycznych AVR bootloader jest wykrojony z FLASH dla programu, ale w XMEGA jest to dodatkowy obszar FLASH, poza FLASH dla programu. Załóżmy, że piszę w języku C w Atmel Studio, chcę napisać program bootloadera i główny. Muszę tworzyć dwa osobne projekty i generować...
dzieki za slowa otuchy :) Nie przejmuj się, to normalne, że są błędy oprogramowania oraz sytuacje nieprzewidziane przez programistę. Od tego między innymi jest Watchdog, aby nad tym móc zapanować. Gdyby było tak idealnie jak pisze nasz kolega TMF, to Windowsy byłyby idealne - a jednak nie są :D Watchdog to narzędzie, które jak każde inne można wykorzystać...
Cykliczne resetowanie to jakby jakiś watchdog był włączony, ale chyba nie włączałeś? A może masz tam gdzieś jakie magic numbers w konfiguracji rejestrów? Moja rada ostateczna - podmień pliki, które dałem w załączniki. Jest tam skrypt linkera, plik asemblerowy startup_stm32f410rbtx.s oraz jeden system_stm32f4xx.c. MAsz z pewnością u siebie pliki o podobnych...
1. Z jakiegoś powodu wczytując dane ze sterownika ( zmieniając je) i zapisując ponownie nie są one zapisywane na sterowniku. Zapewne masz na myśli konfgurację sterownika ? Mam tutaj na myśli np zbocze przerwania. Domyślnie ustawione jest na narastające, po zmianie na opadające nie ma reakcji. Potwierdzone to jest także kiedy ponownie wczytam dane....
Nie wiem czy dobrze operuje na tych rejestrach więc proszę o pomoc. Oto część kodu konfiguracji Rejestru CR1 ADC http://obrazki.elektroda.pl/5186998600_1... Poniżej konfiguracja bitów najpierw nazwa bitów, w nawiasie kwadratowym jego numer i opis jak go rozumiem, co do niektórych nie jestem pewny np: JAUTO, AWDSGL, AWDIE itp. [31...24]...
Cześć Przekopałem się jeszcze raz przez dokumentację i chyba znalazłem problem. AT91SAM7S ma domyślnie wyłączoną opcję "user reset" czyli reset z nóżki. "Software reset" z kolei wymaga zapisu do rejestru co jest możliwe tylko kiedy procesor jest zatrzymany. Jeżeli procesor nie jest zatrzymany tylko "power on reset " działa. Dodałem w swojej konfiguracji...
Dzieki Ale umieszczenie procedurki zerujacej w Timerze nie jest takie glupie przynajmniej ten glupi procesor nie bedzie mu sie resetowal :-D a odnosnie uzywania: co trzeba ustawic w rejestrach (asm) i jaka komenda trzeba resetowac Pieska pewnie WDR?? no i jak to jest jak procek jest w IDLE lub Power down bo wtedy watchdog tez pracuje - przynajmniej...
Witam!!! Z moich osobistych doświadczeń wynika że AVRy (Atmega) radzą sobie całkiem nieźle z zakłóceniami. Dobre zasilanie to już pół sukcesu. Nie ma idealnych procesorów. Projektanci procesorów nie tworzyli by Brown-out detector i watchdoga gdyby nie były one przydatne i nie minimalizowało to prawdopodobieństwa zmiany wartości na stosie lub w rejestrach...
Fuses (hex): D8 23 Jeśli D8 to high fuse to masz RESET VECTOR ustawiony na inny obszar pamięci niż standardowy, a używany zwykle z bootloaderem. Tak ma być? Jeśli nie, to ustaw domyślne czyli D9 Niby BOD masz włączony... a działa chociaż? Atmega przy napięciu np 3V5 powinna być w stanie reset. Dla mnie ta atmega jest niepewna, bo masz watchdog który...
wyłączenie watchdoga układ watchdoga reset watchdoga
philips instrukcja sumator audio pasywny najlepszy centrala domowy
CANM8 – podłączenie do szyny CAN w Peugeot 5008: lokalizacja przewodów, BSI, OBD-II VW Transporter T4 – brak dźwięku po wymianie głośników, radio nie działa, bezpiecznik, ISO