Watchdog nie musi generować sygnału RESET. W AVRach sam wybierasz czy zgłoszenie od Watchdoga ma zresetować procka czy też tylko wywołać przerwanie od niego, bądź jedno i drugie w kolejności - przerwanie a przy wyjściu z niego reset. http://obrazki.elektroda.pl/1548346700_1...
Działaj w trybie system, a nie user, i po problemie. 4\/3!!
AVR nie traci zawartości pamięci przy resecie. Więc jeżeli program nie będzie jej zerował, rozwiązanie jest pewne. Inna sprawa, że w tym wypadku sugerowałbym, by watchdog nie robił resetu, tylko wywoływał przerwanie. Co to będzie za układ?
Witam. Spróbuj wykorzystać watchdoga w trybie przerwania nie resetu. W Main'ie błyskasz diodą pierwszy raz, ustawiasz pieska w tryb przerwania, włączasz watchdoga na 1S i usypiasz procesor i następie pętla bez końca i z pustym ciałem. W przerwaniu mrugasz diodą, resetujesz watchdoga i idziesz dalej spać. Sumarycznie będziesz nawet pobierał mniejszy...
A czy to też nie działa : Config Watchdog = 16 Start Watchdog Disable Interrupts być może Bascom odblokowuje przerwania w starcie watchdoga?
Autor chce uzyskać SLEEP_MODE_PWR_DOWN, a z tego tryby wybudzi go jedynie watchdog lub przerwanie zewnętrzne (zależnie od uC).
A skąd wiesz, że się nie wykonuje? Jedyne co widzę, to to, że w przerwaniu zerujesz wyzerowany port. To raczej trudno zauważyć.
Jeśli mierzysz to timerem to nie ma takiej możliwości. Za to na ADC można coś takiego ustawić i nazywa się to "analog watchdog". 4\/3!!
Założenia Watchdoga są takie, że jeśli włączysz przerwanie od niego to za pierwszym okresem nie zresetuje procesora tylko wejdzie w obsługe przerwania, ale on w tym przerwaniu skasuje bit WDTIE i już za drugim okresem zrestartuje procesor. Żeby Watchdog stale miał włączone przerwanie to trzeba to w kółko ustawiać. Teoretycznie nie powinno się z powrotem...
Podejrzewam ze problem moze byc wynikiem uzycia zlego pliku startowego Sprobuj tego, tylko pamietaj ze przerwanie w C musi byc z __attribute__((interrupt)) PS. Ten startup ma domyslnie wylaczone przerwania w rejestrze CPSR, musisz je dodatkowo wlaczyc (czyszczac bit I w CPSR), mozesz to zmienic w startupie.
Wyłącz watchdoga [; 4\/3!!
Albo stos, albo watchdog.
:roll: ... na to bym nie wpadł. Ale i tak na czas włączania wdt przerwania powinny być zablokowane ;)
Witaj Pojęcie o budzeniu procka masz raczej wątłe, przecież procek budzi się tylko przerwaniem... a dokładniej jednym z bardzo niewielu (watchdog, przerwanie zewnętrzne, otrzymanie danych...) Jeśli poczytasz pdfa to dowiesz się jak wybudzić procka, szczególnie dobrze jest to rozpisane dla M128. Uprzedzam już, ze z tak głębokiego trybu (przerwaniem na...
Przyłaczam sie do tematu odnośnie problemów z realizerem. Też początkuję (z wersją 2.1). Moje pytanka to : 1. jak wyzwolić watchdoga, jak ustalić czas kontroli; 2. jak skorzystać z przerwania NMI, jak przyporządkować daną procedurę pod pin NMI 3. jak przyporządkować podprogramy do przerwań występujących na pinach deklarowanych jako "wejście z przerwaniem"...
hmmm Przede wszystkim: Enable Interrupts On Timer0 Przerwanie Stop Watchdog Config Timer0 = Timer , Prescale = 1024 Config Timer1 = Pwm , Pwm = 8 , Compare A Pwm = Clear Down , Compare B Pwm = Clear Down , Prescale = 256 'PWM=250Hz Load Timer0 = 195 To włączenie przerwania jest wstrętne w tym miejscu:P Co do wniosków... może spróbuj zwiększyć stos o...
Witam, jaki problem chcesz rozwiązać? Pokaż treść zadania. Temat podobny do poprzedniego, w którym też brakuje pytania. Pozdrawiam.
A gdy przerwanie załóżmy wystąpi po uruchomieniu watchdoga, ale przed instrukcją cli(). Wtedy w przerwaniu zostanie wyłączony watchdog i cały program zatrzyma się na while(1)? To w takim razie można używać przerwań do wyłączania watchdoga?
To może mozesz sobie pozwolić na przerwanie raz na 8 sekund - watchdog interrupt. Przerwanie w AVR - ach jest b szybkie 4 takty zegara na jmp - jezeli napiszesz sobie zwiekszanie jakiegos 8 bitowego progrmaowego timerka to tez raptem pare cykli dodasz. Cięzko mi wyobrazic sobie tak krytyczną procedure aby nie mogła sobie pozwolić na powiedzmy 20 taktów...
Konfigurujesz WD na 256 i startujesz. Teraz jeśli chcesz by WD wybudził procesor, ale go nie zresetował to MUSISZ włączyć przerwanie od WD. W obsłudze przerwania nie musisz nic robić. Procek wroci w miejsce gdzie użyłeś SLEEP. Teraz jeśli możesz przez tę sekundę kiedy pracuje resetować WD co 200ms to nic nie trzeba robić, ale jesli coś tam dłuzej trwa...
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...
A jak zamiast tego: u08 spi_tx_rx(u08 byte) { SPDR = byte; loop_until_bit_is_set(SPSR, SPIF); return (SPDR); } zastosujesz to: u08 spi_tx_rx(u08 byte) { SPDR = byte; while (!(SPSR & (1 << SPIF))); return (SPDR); } Jeszcze takie dwa pytania. Watchdog jest wyłączony?...
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...
Ssr Fotek 40da bez radiatora. Na razie działa chociaz musze posiedziec nad optymalizacja uC bo zre za duzo pradu (okolo 25mA + prsekaznik 5mA jak jest wlaczony). Moge to spokojnie zjechać, usypiajac uC i realizujac wybudzanie np. timerem lub watchdogiem + przerwaniem na pinie czujnika. Co do sekundy to nie musi działać. Po optymalizacji dorzuce jakis...
Jak to mówią "Strzeżonego .... strzeże", ale zaufaj sprzętowemu On-chip Brown-out Detection i nie powielaj zabezpieczenia, które może Ci przeszkodzić jeżeli źle policzysz czasy realizacji jakichś funkcji w przerwaniach itp. Watchdog w przypadku Atmega8 stosuj raczej gdy program może wchodzić w jakieś dziwne stany np. zatrzymania w pętli z powodu niedotarcia...
xury - skoro już wykorzystujemy Bytematch=13 to nadal spokojnie można korzystać z Input tylko warto całość dobrze przemyśleć jak? polecam do przeanalizowania przykładowy kod pod koniec poniższego tematu http://www.elektroda.pl/rtvforum/topic14... tak jak tam widać - polecenie Input jest uruchamiane tylko wtedy gdy jesteśmy pewni dzięki Bytematch...
Nieprawda, nie musi resetować procesor, może wyłącznie wywoływać przerwanie... A co napisałem? Przypomnę Jeśli jednak watchdog ma możliwość generowania przerwania, to problemu nie ma trzeba w przerwaniu od watchdoga zresetować go i program będzie kontynuowany.
Ostatnio męczyłem watchdoga w tym procku. Watchdog ma niezależny zegar i można uzyskać maksymalny czas 8 sekund. http://obrazki.elektroda.pl/7856338600_1... Dodano po 5 Jeszcze jedno. W tm procesorze watchdog może generować przerwanie, możesz wykorzystać.
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...
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...
Dobrze napisany program powinien resetować WD tylko w pętli głównej programu. A jeśli "pętla główna" jest właśnie w przerwaniu a w mainie program nie robi nic ( while(1){} zaraz po inicjacji peryferiów ) albo nie robi nic ważnego? Żeby nie było że "nie robi się pętli w przerwaniu", nie chodziło mi o pętle tylko o okresowo wywoływane przerwanie.
A moze wiesza sie sama obsługa I2C lub jakes przerwanie, a WATCHDOG jest i tak resetowany w pętli głównej więc nie dochodzi do resetu procesora.
...w takiej sytuacji będę musiał pomyśleć nad innym sposobie monitorowania napięcia. Może użyj funkcji analog watchdog, opisanej w p. 11.3.7 Reference Manual? Analog watchdog wystawia przerwanie gdy poziom napięcia będzie wyższy od progu HTR lub niższy od progu LTR. Ja natomiast potrzebuje sytuacji odwrotnej, czyli gdy wartość napięcia znajduje się...
Nie masz przypadkiem włączonego watchdoga ?
Watchdog nie jest programowy tylko sprzętowy Możesz mi powiedzieć co tu miałeś na myśli? Watchdog nie jest programowy? pierwsze słyszę. programowo: 1. ustawiam watchdoga na jak najkrótszy czas 2. wyłączam przerwania (na wszelki wypadek) 3. pętla nieskończona. i masz programowy PEŁNY reset i skok do adresu ustawionego za pomocą fusebitów. (to jest najpełniejszy...
Jeśli piszesz w WinAVR i otworzysz plik w asemblerze to zobaczysz, że każde nie używane przerwanie prowadzi do resetu. Nieużywane tzn. nie posiada funkcji obsługi przerwania. Przerwanie takie od np. przepełnienia timera może nastąpić jeśli zostanie odblokowane, ale jak mówisz w tym przypadku to nie to. Możesz po prostu wyłączyć watchdoga i upewnić się...
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_...
W przerwaniu INTx ustawić watchdog w tryb przerwania na czas około 1 sekundy i wrócić do power down. Po przerwaniu od watchdoga sprawdzić stan wejścia i podjąć odpowiednie kroki. PS. W attiny każde wyprowadzenie może wybudzić procesor. Lepiej używac pin change interrupt moim zdaniem.
w programie mam config watchdog=32 , resetuję go w przerwaiu co około 2ms i w zasadzie jest ok , ale czasami program się zwiesi (nie reaguje na przyciski) a watchdog nie resetuje procesora , czy to możliwe żeby program wisiał a przerwania działały ? w programie mam kilka pętli DO...LOOP , czy zrezygnować z resetowania watchdoga w przerwaniu i zrobić...
Kod miał być tak prosty jak opisywałeś w pierwszym poście i mu odpowiada. Jeśli chcesz mogę dodać Powerdown z którego wybudzi uC przerwanie od PCINT1. Watchdog to już chyba przerost formy nad treścią ahahahaha :D
Czesc, Co to znaczy timer? Co to ma byc? Powiedz dokladnie co potrzebujesz i do czego tego czegos chcesz uzyc. (pytajac co to jest timier mialem na mysli jaka czestotliwosc zegara, ile bitow na liczniki, czy to ma byc watchdog timer wysylajacy przerwanie czy tylko wacek zliczajacy tiki zegara? sa rozne timery... ) Pozdrawiam, tony_tg
Można wykorzystać timer watchdoga do generowania przerwań co sekundę, budzenia procesora i inkrementowania liczników. Wtedy średni pobór prądu przez mikrokontroler wyniesie kilka mikroamperów.
Nie sadze ze 10s, jeśli chodzi Ci o przerwanie od watchdoga to wynosi ono 8s w nowszych układach a w starszych tylko 2s. A jeśli chodzi o power down to procesor czeka juz tylko na określone przerwania ( w przypadku tego układu jest to stan niski na INT0 lub spełniony warunek startu USI) Nowsze procki budzi sie jeszcze zazwyczaj timerem watchdoga oraz...
Hard fault praktycznie zawsze pojawia się gdy załączymy przerwanie, dla którego nie zdefiniujemy handlera. Sprawdź kod pod tym względem, szczególnie przerwanie watchdoga.
Raz uruchomionego watchdoga nie da się zatrzymać :) Dla trybów uśpienia trzeba użyć WWDG i jest tam taka opcja jak wywołanie przerwania od WWDG na krótki czas przed resetem przez niego systemu. W przerwaniu resetujesz watchdoga i tyle.
przeniosłem jeszcze przeliczanie liczby do wyświetlenia do przerwania i po dodaniu jeszcze jednego polecenia reset watchdog ( w przerwaniu, po obliczeniu cyferek) działa aż miło dałem waitms 1000 w petli i incr licznik_we i cyka jak zegarek!!!!. Dzięki za sugestię z watchdogiem choć nie wiem czemu taj jest że muszę wstawiać te polecenia resetu skoro...
Witam! Piszę program który ma co 8 sekund ma wysyłać wynik pomiaru ADC po SPI. Co lepiej zastosować: a) -ckdiv8(lub więcej) -watchdog z przerwaniem jako timer -power down b) -timer 2 w trybie asynchronicznym z przerwaniami -power save ?
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).
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...
Który tryb uśpienia zastosować żeby uśpić procek na 1 sekundę? Pracuję z kwarcem 8Mhz więc konieczne chyba będzie zastosowanie licznika 16bitowego żeby uśpić procesor na 1sekundę. Czy w jakimś trybie uśpienia działają przerwania od timera1. Czy możliwe jest tylko stosowanie licznika asynchronicznego? Najlepszym rozwiązaniem byłoby użycie watchdoga,...
... poza tym wszystkie zewnetrzne przerwania sa uzywane do czegos innego. To nie przeszkadza , w użyciu któregoś z nich do wybudzenia proca.Pozostał Ci jeszcze watchdog ;) Piotrek
Natomiast drążąc dalej temat jak wyjaśnić to, że na atmedze16 przy identycznej kofiguracji fuse'ów wszystko działało elegancko? Na procku ATmega162 ale podobnie na ATmega88 itp ... też działa elegancko. Tyle, że trzeba doczytać w nocie i pamiętać, że domyślnie Watchdog jest włączony. I wcale nie trzeba go zaraz fusami wyłączać bo po co? Może się często...
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...
Jak się reseta to albo watchdog, albo wektory przerwań nie obsłużone i idzie w maliny... Sorry innej możliwości nie ma, chyba, że się stos kończy i włazi na ram...
Witam Też zdarzało mi się zawiesić program podczas obsługi I2C w końcu są tam pętle while a zakłócenie może przerwać komunikacje. Watchdog jest tu wyjściem ale myślę że lepszym rozwiązaniem jest wstawienie w pętle warunku czasowego przy czym trzeba pamiętać że przy spełnieniu warunku należy zresetować I2C.
W STM32 można ustawić przerwanie po przekroczeniu pewnego zadanego napięcia na ADC - popatrz na opis trybu "analog watchdog". 4\/3!!
Niestety watchdog wyłączony (fusebity), przerwania są wyłączone (instrukcja cli). Poprawiłem konfigurację uartu ale problem nadal wystepuje....
przy okazji - dla ATmega88, która posiada to przerwanie dla Watchdoga - kod wzrasta w porównaniu do ATmega8 - aż o 44bajty. Więc dopisując coś jeszcze trzeba mieć to na uwadze ;)
Atmega48V. Jest tania, w obudowach do SMD jest mała i co ważne ma przerwanie od Watchdoga co się bardzo przydaje w trybie Power Down.
Ze stanu power-down może procesor wybudzić tylko watchdog, reset, lub przerwanie zewnętrzne. W trybie Idle mógłbyś użyć timera (/256) + preskalera (/1024) + system clock preskalera (/256), czyli przerwanie co 67M cykli zegara systemowego. Dodaj do tego zewnętrzny oscylator 32kHz = maksymalny timeout ~35 minut (przy wewnętrznym RC 128kHz masz 8 minut)....
No ok, ale to z watchdogiem dużo wspólnego nie ma... Potrzebny reset - to wystarczy skoczyć do 00h... Jeśli będzie w przerwaniu od timera - to jasne, będzie działał jak watchdog, ale do czasu jak się zawiesi program.. Jeśli program zawiesi się - bardzo prawdopodobne, że do przerwania nie wejdzie. "Normalny" watchdog natomiast zresetuje procesor, gdyż...
Watchdog to jedno, odmierzanie czasu to drugie. Na razie skup się na przejściach między stanami systemu, co gdzie włączać i wyłączać, na jakie zdarzenie czekać w każdym stanie. Zresetować watchdoga jest prosto (np. w main po wyjściu ze stanu uśpienia), trudniej jest zapewnić, że system zachowa się odpowiednio po zresetowaniu w każdym możliwym stanie....
Może nie ekstremalny przypadek, a watchdog =]
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...
89s52 - 8kB flash (max 1000 cykli zapisu/kasowania), 256B RAM, max 33Mhz, Ic 25mA(at)12Mhz, programowanie ISP, 3 liczniki 16-bitowe, UART, Watchdog, 2 przerwania zewnętrzne. lpc1111 - 8kB flash (max 100000 cykli zapisu/kasowania), 4kB RAM, max 50MHz, Ic 3mA(at)12MHz, programowanie ISP i IAP (wbudowany bootloader), 2 liczniki 32-bitowe i 2 16-bitowe,...
Witam Wyłączenie przerwania nie wchodzi w grę mam tam reset watchdog-a Resetowanw watchdoga w przerwaniu , to ... oględnie mówiąc głupota. . Myślę że pozostaje mi rozwiązanie 2 ale czy Kolega zgada się z moja teorią o przerywaniu transmisji danych do LCD? Rozwiązanie nr. 2 jest dobre , ale pod warunkiem , że będziesz używał LCD WYŁĄCZNIE w przerwaniu....
Z ciekawości możesz ustawić wszystkie nieużywane porty i te do których nie masz nic aktualnie podłączone jako wyjścia . To co opisujesz wygląda tak jak by "wiszący pin" będący wejściem generował przerwanie .
Witam W dokumentacji pisze tak: "To enable the WDT, a user must write 01EH and 0E1H in sequence to the WDTRST register (SFR location 0A6H)." Czyli taki kod powinien go załączyć?: mov 0A6H,01EH mov 0A6H,0E1H Dobrze to rozumiem? Idąc dalej: "When the WDT is enabled, the user needs to service it by writing 01EH and 0E1H to WDTRST to avoid a WDT overflow."...
możesz zrobić przerwanie z timera + programowy "watchodg" który sprawdzi co jakiś czas czy procesor działa. Jeśli nie (bo wartość w programowym watchdogu jest zbyt duża) to wtedy taka sekwencja: 0. sprawdzenie flagi "gotowy" - jeśli ustawiona to czekaj na reset z WD - nie rób nic 1. reset wd 2. zapis do eeprom 3. ustawienie flagi "gotowy" cóż, słyszałem...
Tak, albo używasz watchdoga i piszesz program profesjonalnie, używając Timera w przerwaniu, albo "trzepiesz amatorkę" i wyłączasz watchdoga(np. wdt_disable() nawet nie bawiąc się fusami).
Spróbuj z watchdogiem i $noramclear
Hmm pewnie wystarczy skasowac flagę, ale nawet wpisanie od nowa nastaw alarmu nie bedzie wielkim problemem. Co 8s przerwanie masz od watchdoga, który też jest konfigurowalny i moze pracować wywołując tylko przerwanie przy przepełnieniu. Co prawda pomyliłem się, w tiny26 przerwanie jest max co 2.2s, ale skoro i tak działa Cialarm więc nie musisz kombinować...
Na początek kwestia formalna: jest za dużo tabulatorów w kodzie przed komentarzami, przez to prawa strona posta oraz kodu jest ucinana na ekranie (mam mały ekran). Co do kodu: czytanie zegarka oraz formatowanie sprintfem w procedurze obsługi przerwania jest mocno słabe. Diabli wiedzą jak jest zrealizowany lib TWI. Jakby był oparty na przerwaniach to...
"a mnie bardziej interesuje szybkie zmienienie wykonywanych obliczeń, niż ich zakończenie, czy w ogóle wynik..." Może cały algorytm jest zły. Jak Cię nie interesuje zakończenie obliczeń i w ogóle wynik to po co one są? No i co ma decydować żeby przerwać to obliczanie? Watchdog- no to tylko że zbyt długo trwają. Interpretuje to tak że program się zawiesił....
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...
Nie ma w Atmedze8 JTAG więc nie ma co proponować. Jedyne co musisz zrobicstosując taką małą częstotliwość to dobrze ustawić FUSY iraczej wyłączyc watchdog`a. Wiem o co koledze biega z tym wonym zegarem, sam tak kiedys byłem zmuszony zrobić podczas testowania programu Inną drogą do osiągnięcia podobnego celu jest zajęcie procesora jakims długim przerwaniem...
No niekoniecznie bo wkońcu napięcie możesz dać poprzez dzielnik napięcia na wewnetrzny komparator. No tak - ja bym do tego użył tego za 1.5$: https://obrazki.elektroda.pl/8220578700_... Możesz zrobić na wiele sposobów: 1. dać zewnętrze komparatory. Wtedy w input capture przechwytujesz napięcie przy 1V poprzez transmisję DMA a na drugim...
Caly program wyglada tak: http://phpfi.com/250280 Teraz nie mam pojecia czemu ale jesli przerwanie jest aktywne, to nawet zanim nastapi program sie po prostu wiesza :| Moze masz wlaczonego watchdoga w confbitach ?
Witam. Zmontowałem przed chwilą i sprawdzone. Zostaje tylko pozbycie się drgań styków klawisza. [syntax=c]#define F_CPU 16000000UL // Atmega644 #include <avr/io.h> /*biblioteka avr*/ #include <string.h> /*biblioteka napisy*/ #include <stdio.h> /*biblioteka podstawowa C*/ #include <stdlib.h> /*biblioteka C*/ #include <stdbool.h>...
Tak sobie czytam i się dziwię. Od samego początku widać, że pomysł "wyzerowania stosu czyli powrót do..." jest delikatnie mówiąc mało trafiony. Wszyscy to po kolei tłumaczą a kolega broni się rękami i nogami próbując z uporem maniaka szukać takiego cudownego rozwiązania - które tak nawiasem mówiąc można rozwiązać w bardzo prosty sposób. Zresztą mówiło...
Program jest w pierwszym poście, trzeba tylko podmienić funkcje tak jak napisałem w poście wyżej, nie wiem czego chcesz jeszcze? Tak ISR_NAKED użyłem świadomie. Poza tym jest to ostatnie co ma zrobić procesor przy zaniku zasilania. Wahań napięcia i przypadkowego wywołania przerwania które zablokowałoby cały program na razie nie biorę pod uwagę. Co do...
nie jest usatawiony, robiłem testy z jego ustawieniem i wtedy nie musze wogóle uruchamiać watchdooga zeby działał, działa cały czas i prawidłowo. Zastanawiam sie czy moje problemy nie mają związku z przerwaniami.
Już nie wspominając o tym, że brak definicji I/O... zmien tak dla pewnosci adres przerwania na 0x22 przed sei wyzeruj watchdog jeśli go uruchomiłeś (btw w przerwaniu od timera musisz wyłaczyć przerwania) I na sam koniec kwiatek: reti zmien na rjmp loop_main bo inaczej stos sie posypie Pozdrawiam
Jeśli masz wolny timer, to wykorzystaj go jako softwareowego watchdoga - w obsłudze przerwania overflow zeruj pin enable dla konwertera, przed wpisem do UDR zeruj timer + ustawiaj enable. Ew. możesz coś kombinować z trybem CTC i pinem OCx, żeby nie polegać na przerwaniu dla wyłączenia bufora. Pozdrawiam, Dr.Vee
Freddie ma racje. FreeRTOS pamięta kontekst zadań, za chwile nastepuje przerwanie systemowe i wraca do innego tasku. Program nadal działa, tylko już nikt nie wie jak... Na prawdę nikt nie miał takiego problemu?
Chłopaki dajcie na luz. Odbiegamy od tematu. Właśnie wyszła nowa wersja Bascoma 2.0.2 w której dodano : .... Chyba można by uniknąć stosowania watchdoga jesli wcześniej wyłączone zostały by przerwania?! 1- faktycznie dostępny BASCOM 202 ... zaraportował mi przy uruchomieniu - może poprawili pewne błędy... 2. Watchdog jest chyba najfajniejszy - bo zapewnia...
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...
niby wystarczy ale chodzi mi o to aby program startował od wyzerowania wszystkich zmiennych a nie wiem czy można skoczyć przed deklarację typu procka którą mam na początku: $regfile = "m8def.dat"? i czy też uruchomiona będzie wtedy procedura bascoma zerująca wszystkie zmienne? Odnośnie pierwszej odpowiedzi to chyba reset nie nastąpi bo mam resetowanie...
Moze nastepuje reset µkontrolera od watchdog-a?
Poradę powyżej zignoruj. Możesz mierzyć wartość VREFINT, który jest dostępny na kanale 17. Jest to wewnętrzne napięcie odniesienia o wartości 1.2 V. Możesz go użyć do określenia że napięcie zasilania układu spada. Jeśli układ jest zasilany normalnie z 3.3 V, to powinieneś na tym kanale zmierzyć wartość około 1490 (4095 * 1.2 / 3.3). Jeśli napięcie zasilania...
movlw 0xC8 movwf option_reg W tym momencie podzielnik przypisałeś do watchdoga, nie do TMR0. (oczywiście kiedy trzeba kasujesz T0IF ?)
Idea jest taka: Obniżam częstotliwość za pomocą ckdivX wlączam watchdoga z przerwaniami co 1s bez resetu, potem tryb power down, robie taki prosty licznik w watchdogu który jeżeli zliczy np. 500 s to ustawia stan wysoki na pinie pb0, który jest podĺaczony do int0 a to wybudza atmege. Jeżeli już atmega jest w. stanie aktywnym to wyłączam ckdiv w celu...
Sory. Zamykam temat, zawieruszyłem w jednym z przerwań polecenie resetujące watchdoga, to będzie przyczyna. Dw crazy-phisic, poznaję to po tym co procek robi w układzie po starcie, co chwalenia się to chyba nie ma czym same zera i jedynki w rejestrz, chyba z osiem?.....
Ponieważ lista peryferiów ATTINY13A to zaledwie timer, ADC, watchdog i komparator, każdy protokół komunikacji będzie musiał byś zrealizowany w większości programowo, wszystko będzie zależało od biblioteki, której użyjesz, jeśli ktoś napisał bibliotekę z użyciem timera i przerwań z portów. To mogłoby nieźle działać, jeśli nie, to protokoły powolne (1-Wire...
(at)R-MIK Znowu nie na temat. Wbudowany w niektóre ATMega termometr służy do tego, żeby był. Żadnych sensownych właściwości to on nie ma, przy niewielkiej różnicy w rozchodzeniu się dźwięku w zależności od temp. i potrzebie tylko zgrubnego określenia odległości w czujniku parkowania na niewiele się zda. Obecność debug Wire też na nic autorowi, skoro...
Witam. Jest jeszcze jeden bardzo dobry sposób na reset. Mianowicie uruchamiasz watchdoga, w programie zerujesz go cyklicznie - np. na przerwaniu timera. Jeśli chcesz zresetować uC - nie zerujesz watchdoga, jego licznik się przepełnia i masz czysto sprzętowy reset. Korzystam z takiego rozwiązania i do tej pory mnie nie zawiodło. pozdr, JnS
Ale diody świecą więc jakieś przerwanie timera o stałej częstotliwości niewiele tu zmieni, jśeli chodzi o pobór prądu timera też. Może to być i watchdog, jeśli da się z niego uzyskać te 50..100 Hz - nie pamiętam już, jak to było w AVR.
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 Chciałbym wreszcie zacząć używać watchdog`a w swoich programach, ale do tej pory miałem problemy ze zrozumieniem go (może nadal mam) Proszę na podstawie poniższego pseudokodu odpowiedzieć czy prawidłowo jest umieszczony w kodzie ?? $noramclear 'dyrektywa zapobiegająca wyzerowaniu zmiennych uzytych w programie Config Watchdog = 2048 'konfiguracja...
Czyżby ta etykieta jest wykonywania podczas przerwania?
atmega watchdog przerwanie bascom przerwanie watchdog przerwanie watchdog bascom
piosenka radia centralny zamek sygnalizacja renault schemat zamka
silnik siłownika zaworu instrukcja obsługi renault scenic
Lexmark X950 – wymiana bębna światłoczułego, reset licznika, oryginał vs zamiennik Odkamienianie dywerytera baterii prysznicowej – jak naprawić przełącznik strumienia w Grohe, Hansgrohe, Omnires