A czy to też nie działa : Config Watchdog = 16 Start Watchdog Disable Interrupts być może Bascom odblokowuje przerwania w starcie watchdoga?
Zbudowałem ostatnio kilka urządzeń z wykorzystaniem pinu WR wyświetlacza. Ta biblioteka nie jest szczęśliwa. Jest dużo nowsza i w dodatku z możliwością użycia dowolnych pinów biblioteka. Jest włączana automatycznie jeśli jako ostatni parametr/pin napiszesz WR = PIND.3 (przykład) Użyta zostanie biblioteka "lcd4busy_anypin" Przykład z moich kodów: Zapomniałem...
Tak. Tyle że ustawiana jest jeszcze flaga która pozwala potem zobaczyć że to WatchDog spowodował reset.
Bierzesz najprostszy i najtańszy mikrokontroler, który ma watchdog oraz timer umożliwiający odliczenie czasu, który oczkujesz i wykonujesz watchdog we własnym zakresie i dowolną funkcjonalnością. Watchdog w tym mikrokontrolerze także jest potrzebny, by Twój watchdog był odporny na problemy. :)
Watchdog?
Po kolejnych oględzinach sprawdziłem, że ów "IS" znajduje się na przednim panelu i prawdopodobnie jest to jakiś watchdog na ATmega. Jakby ktoś kiedyś potrzebował, to dołączam instrukcję serwisową.
A watchdog masz wyłączony?
Jaka jest przyczyna, że nie można bezpośrednio korzystać z wbudowanego w AVR PWM-a ? Można w tym celu dać np ATtiny10 do samego PWM. Na zwiechy jest watchdog, na spadek napięcia - BOD... Co do transoptorów do MOSFET - TLP250
Po co ta kombinacja z INT0? Skoro watchdog wybudza Ci procesor?
Tak jak napisałeś powinno być dobrze. Jeszcze jedna uwaga. Poprzednio miałeś ustawione bity na Interrupt and System Reset Mode. To może obecnie skomplikować ci możliwość przestawienia nastaw WatchDoga.Jeśli po wpisaniu tych wartości do rejestru nadal działanie WatchDoga nie będzie zgodne z oczekiwaniami to dzieje się tak dlatego iż w sterowaniu WatchDogiem...
- Każdy Ds na 3 przewodach, rezystor podciągający 4k7 przy każdym DS-sie czyli daleko od procka - Napięcie powrotne z DS na pinie Data to 4,95V - Zasilanie przetwornica step- down 24VDC-5VDC - stabilne dobrze odfiltrowane. - Reset sterowany z zewnętrznego Watchdoga Atmega się nie resetuje bo komunikacja po Modbusie TCP chodzi non stop, mam odczyt który...
Można coś kombinować, ale nigdy nie będzie to watchdog o 100% pewności. Niestety nawet AT89S53 z włączanym w 2 instrukcji po resecie watchdogiem potrafi się zawiesić :!:. Jedyny pewny sposób to zewnętrzny watchdog lub procesor z watchdogiem uruchomionym na stałe (np. ATMEGA...)
Wykorzystuję plik avr/wdt.h do obsługi watchdoga w ATmega. Jednak zdefiniowane stałe są za krótke ponieważ łączę się poprzez HTTP z bazą MySQL. A odpowiedź może potrwać nawet minutę. Czy jest jakiś łatwy sposób na wybranie dłuższego czasu reakcji watchdoga?
Jest kilka możliwości. Tak samo w Bascomie jak i w każdym innym języku/kompilatorze. Można uruchomić WATCHDOGa i odczekać w pustej pętli aż zresetuje, można połączyć dowolne wyjście mikrokontrolera z wejściem resetu i zresetować, gdy potrzeba. Np tak: CONFIG WATCHDOG = 16 start watchdog do:loop A dlaczego chcesz resetować? Nie lepiej napisać program...
oraz "the frequency depends on supply voltage, temperature and batch variations" WD nie służy do precyzyjnego odmierzania czasu. Zobacz w nocie jak zależy od podanych parametrów, a okaże się, że to raczej nie ma większego znaczenia. Zewnętrzny WD często oferuje znacznie szerszy zakres wartości limitów czasu. Ma to znaczenie w szczególności w aplikacjach...
Musisz zrobić bilans patrząc na to ile prądu pobiera timer2 w trybie asynchronicznym, a ile watchdog, ze wszystkimi aspektami w tym przywrócenia stanu po resecie watchdog. Jaki to mikrokontroler?
Watchdog.
Dla tych co mają problem z pf_mount (raz działa, jak się zrestartuje proc to już nie, itp.) proponuję PRZED użyciem tej funckcji wpisać takie coś: #include <avr/wdt.h> wdt_enable(WDTO_2S); res=disk_initialize(); wdt_disable(); To ta funkcja (disk_initialize) sprawia że pf_mount się zawiesza (disk_initialize siedzi w pf_mount). Więc wyołujemy ją...
podciagnoles cos do pinu reset?
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...
A jest 1.11.9.3 Dla attiny na pewno lepsza. Może dla atmega też.
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ć...
(at)tmf - podejrzewam, że pobór jest całego układu w tym podświetlenia LCD więc może pobierać 0.2A; Hero - czy procek się grzeje? Czy masz watchdog timer wykorzystywany? Czy masz BOD?
Witam! Nie działa mi taki kod: [syntax=c]#include <avr/sleep.h> #include <avr/power.h> #include <avr/io.h> #include <avr/interrupt.h> #include <util/delay.h> #include <avr/wdt.h> int watchdog_counter=0; void watchdog_init() { cli(); wdt_reset(); WDTCSR |= (1<<WDCE) | (1<<WDE); WDTCSR |= (1<<WDIE)...
wymyśliłem z konieczności drugi układ na ARDUINO który będzie kontrolował jedną nóżkę ARDUINO ze Sterownika i jak przestanie podawać impulsy to znaczy że się zawiesiło i wtedy ten układ dodatkowy przerwie napięcie zasilania na kilka sekund i zresetuje cały układ. Myślę że to rozwiązanie choć nie profesjonalne to spełni swoją rolę bo niema nigdy pewności...
(at)arkady25 A nie masz czasem włączonego watchdoga w fuse bitach? (WDTON)
Rozumiem że program ustawia cały port B na wyjścia i ustawia na logiczną jedynkę PB1,PB4,PB6? A w programie nie powinno być jakiejś pętli nieskończonej? Wiem że w C (AVR-GCC) to aż tak bardzo nie boli bo program i tak po wyjściu z maina w nią trafi, ale w asm nigdy nie pisałem całego programu. Pozdrawiam Dodano po 6 a WDT to watchdog, jak go nie masz...
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...
Czy zdarzają się tego typu uszkodzenia atmegi? Biorąc pod uwagę info z tego forum, tak co druga atmega wychodzi z fabryki uszkodzona. Rzeczy z tymi procesorami dzieją się niesamowite a ludzie pracujący w Atmelu powinni zająć się czymś innym. Masz wyłączonego watchdoga fusami? Druga sprawa to przycisk masz na PD0 a sprawdzasz stan na PD3. Chcesz sprawdzić...
Cześć !!! "Bajery" i pomiar temperatury to sporo ciekawych rzeczy jak dla maluszka. Sam kiedyś miałem to wiem. Ale rozumiem, że obrotomierza i LCD nie dawałeś :):) Jak spróbujesz się podłączyć pod instalacje zapłonową to zobaczysz jaka jest radocha z zabezpieczeń :) Atmega to dobry procesor i jak stosujesz WatchDoga to właściwie zawieszeń nie uświadczysz...
A po co chcesz zbudować takie dziwactwo? Ptrzecież w Arduino siedzi ATMega, która posiada już watchdoga. Dodawanie takiego ukłądu zewnętrznego kompletnie nie ma sensu.
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...
No to już jest dziwne. Spróbuj wywalić te funkcję resetujące system (zakomentuj komendę Config Watchdog i wszystkie komendy Start Watchdog). Może system Ci się resetuje zamoczynnie po jakims czasie.
Trochę bez sensu, kontroler ma watchdoga, a jak się uszkodzi to nie ma co go budzić ;-)
I jeszcze jedno - WŁĄCZ watchdoga !!!!! Jak nie zatrybi na początku to sie procek sam zresetuje i wystartuje raz jeszcze. Ustaw maksymalny czas w preskalerze watchdoga tak aby wystartował jak najpóźniej.
Hmm, może warto całkiem zmienić koncepcję i wykonywać reset procesora... programowo. Można to zrobić na 2 sposoby, albo skokiem pod adres wektora resetu (czyli bootloadera), albo wykorzystując watchdog'a.
W ATmega... jedyne sensowny reset jest przez watchdoga poniweaż sam skok pod adres 0x0000 jest błędny gdyż te procki mają różne adresy RESET zależne od ustawienia fusesbit.
Ja miałem to samo ale okazało się ze atmega przez tranzystor sterowała mi cewka przekaźnika. Cewka przekaźnika nie była zabezpieczona dioda (dioda była uszkodzona) dopiero po wymianie diody wszystko wróciło do normy.
To będziesz musiał się trochę napocić. Po pierwsze jak używasz watchdoga w programie, to musisz w jakiś sposób sprawdzić czy reset aby na pewno służył do upgrade'u. Możesz to zrobić np przez zapis do eepromu jakiejś wartości, odczyt i odczyt jej bootloaderze (pamiętaj żeby bootloader ją resetował). Dobry by był też mechanizm który by pozwolił na zrezygnowanie...
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ę...
... fajne :) , Ja u siebie w Fiaciku kiedyś też taki układ zrobiłem po swojemu . Był podobny do tego , również na kontraktach z tym ze ja zrobiłem dodatkową opcje która wyróżniała mój projekt . Mianowicie , jeśli wróciłem do samochodu przed upływem 30 minuty od zamknięcia centralnego a tym samym szyb , to po otwarciu zamków szyby opuszczały sie do takiego...
ATMEGA8 nie posiada WDT_vect, takie przerwanie wystepuje natomiast w ATMEGA 88 .
XMEGA zasadniczo nie da się zablokować - nie mamy tu uciążliwych fusebitów od kwarcu tak jak w ATMega. Ehe. Zmieniłem coś w WatchDog i do widzenia. Xmega32 w zdechła.
#define WDP_16K 0 // ~16ms #define WDP_32K (1<<WDP0) // ~32ms #define WDP_64K (1<<WDP1) // ~64ms #define WDP_128K ((1<<WDP1)|(1<&... // ~0,13s #define WDP_256K(1<<WDP2) // ~0,26s #define WDP_512K((1<<WDP2)| (1<<WDP0)) // ~0,5s #define...
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...
Oj kontemplujecie ze wzmacniaczami operacyjnymi a to nie jest takie proste....Transmisja dzwieku przez swiatlowód jak i przez kabel coax w postaci cyfrowej ma dosyc pokombinowany skład. 1. Jesli karta nie odtwarza dzwieku, to przez łącze są "taktowane" same zera 2. Jesli karta gra to SIE układa sample jeden po drugim z ilustam kanalow i wysyla strumieniem....
zastosuj atmega 88PA Faktycznie jest to dobre rozwiązanie. Bez zewnętrznych elementów, można wykorzystać watchdog timera. Dzięki.
Wszystko w dzisiejszych czasach jest możliwe. Ciekawe ile prądu żre potencjometr do regulacji kontrastu? Jeśli jest...
Witam, jaki problem chcesz rozwiązać? Pokaż treść zadania. Temat podobny do poprzedniego, w którym też brakuje pytania. Pozdrawiam.
Czy ATmega8535 ma tylko mierzsyć napięcie i wysyłać? Jeśli tak to po co taki duży uK do tego? :) Program może wyglądać tak: $regfile = "m8535.dat" $crystal = 16000000 $hwstack = 32 $swstack = 10 $framesize = 40 Dim W As Word Config Watchdog = 2048 Start Watchdog Reset Watchdog Config Adc = Single , Prescaler = Auto , Reference = Internal Start...
Osobiście wyznaję zasadę, im trudniej, tym ciekawiej i można się więcej nauczyć... Jeśli chodzi o zasilanie awaryjne to ATmega wcale dużo pradu nie pobiera w odpowiednim trybie uśpienia. Można ją wybudzać przerwaniem z licznika, może to byc reset z watchdoga (Źródło resetu jest rozpoznawalne w MCUCSR), obsłużyć co trzeba i znowu uśpić - przeliczanie...
A może jednak masz watchdog włączony? Na jakiej optymalizacji kodu pracujesz? Return 0; jest zbędne.
Do ATmega nie potrzeba dodatkowych układów resetu, gdyż jest wyposażony zarówno w Watchdog-a, jak i Brown-Out Detector... Czytajcie ludzie dokumentację...
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...
mc1525tt, no load current typical 86uA. Byc może to pobór prądu bez obciązenia stabilizatora mc1525tt. Jesli atmega da sie wyjąc (na podstawce?) to mozna by wtedy sprawdzić. Dodano po 3 Chyba nie doczytałem opisu. Sorry. Dodano po 56 Ale tak czy inaczej jeśli nie mamy pomysłu to trzeba chyba odłączać po kawałku podejrzane rzeczy. Dodano po 2 Zacząłbym...
Mój ulubiony "kwiatek" :) Gosub Wybor Wybor: Potem mamy masę gosub'ów bez poprawnego wyjścia. Generalnie program źle napisany. Piszemy programy tak by subrtyny mogły się kończyć i nie zagnieżdżamy nadmiernie podprogramów. To nie watchdog tylko przepełnienie stosu. Chociaż i watchdog może w kilku przypadkach resetować, zwłaszcza tam gdzie jest WAIT...
Wyłączyłem watchdoga i sterownik przestał się zawieszać. Dlaczego ? Płytka przeprojektowana. wieczorem podeślę schemat.
Ale teraz jak mam funkcje do migania diodą co sekundę to znowu miga jak powalona :/ jak sobie tą funkcje umieszcze w while i tam mam ze ma zmieniac co sekunde stan. No to porównaj, to co dołożyłem, z tym co było i dorzuć w swoim programie tak samo odpowiedni plik nagłówkowy na początku oraz <wdt_reset();> na początku pętli głównej, albo wyłącz...
...no tak czytam pdf'a atmegi i faktycznie ten watchdog jest taktowany z własnego zegara...jedyne co mu może przeszkodzić to problemy z zasilaniem...ale na szczęście atmega ma też BOD'a :)... jeszcze pytanie z innej beczki...mam zewnętrzengo EEPROM'a, w którym zapisuje raz na miesiąc jakieś ważne dane...z racji tego, że muszę czasem coś zapisać nie...
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, skompilowałem AES bootloader (pod gcc). W zasadzie wszystko działa jak powinno poza jednym wyjątkiem. Jeśli zostanie wywołany reset z watchdoga procesor się zawiesza, nie pomaga sprzętowy reset, pozostaje odłączenie zasilania. Fusebity HIGH mam ustawione na D8. Początek bootloadera mam ustawiony na .text=0x1E000. Jeśli ustawię fusebity HIGH na...
Nie wiem jakiego kompilatora asm używasz, to co przedstawiam, używam na AVRasm2, który obsługuje preprocesor C oraz mam wygenerowane pliki nagłówkowe C Atmela narzędziem xmlconvert.exe[syntax=c]#ifdef WDP3 #define WDP_2K 0 // ~16ms #define WDP_4K (1<<WDP0)// ~32ms #define WDP_8K (1<<WDP1) // ~64ms #define WDP_16K ((1<<WDP1)|(1<<WDP0))//...
Witam Mam kilka pytań odnośnie projektowanego przezemnie urządzenia: 1. Schemat 1.Potrzebuję zasilić układ 5V,zewnętrzne źródło napięciowe to 12V, układ ma mieć zabezpieczenie odwrócenia polaryzacji ( ma działać przy dowolnym włożeniu masy i zasilania )- stąd mostek Gretza. Układ musi mieć zabezpieczenie przeciwprądowe (bezpiecznik na wejściu). Czy...
Watchdoga ustawiam na początku w configu tylko, prawda? Atmega 32 więc w fusebitach nigdzie nie znajdę tej funkcji. Czy się mylę? Czemu poległem już na początku? To jak powinno być. Wotchodoga pierwszy raz używam i dlatego nic o nim nie wiem :/
Zrobiłem szybki test, aplikacja która wywoływała bootloader poprzez wdt_enable(WDTO_15MS); zamieniłem na wdt_enable(WDTO_250MS); bo ewidentnie po tym procesor ciągle był resetowany przez WDT, ustawiony bit WDRF mimo że bootloader jako trzecia z instrukcji w main ma wdt_disable(); Dodałem więc: [syntax=c]static void __init3( void ) __attribute__ (( section(...
Witam, czy ktoś może spotkał się (i znalazł rozwiązanie) z problemem zawieszania ATmega32 (lub podobnego układu) przy czym ze stanu zawieszenia nie można wyjść nawet poprzez ręczne zwarcie wejścia RESET do masy. Oczywiście na wejściu reset jest rezystor 4,7k + kondensator 10n, na zasilaniu procesora i większości układów kondensatory 100n, zasilanie...
wlasnie o pujscie w maliny mi chodzi - inny program po jakims czasie dziwnie mi sie wiesz - czas jest uaktualniany a temperatura nie. chce wylapac moment ze temperatura stoi - czujnik nie reaguje i wowczas wykonac reset procka. Mozesz krotki przyklad na obsluge dac? Cos prostego byle zawieralo kompletna obsluge watchdoga - uaktywnienie, reset itd. Pozniej...
Skoro program utyka w jakimś miejscu to znaczy że czekasz w pollingu na stan, który się nie pojawia. Po pierwsze dodałbym time out, który przerwie pętlę oczekiwania zanim układ zostanie zresetowany przez watchdog. Dodatkowo w przypadku wystąpienia takiego timeoutu trzeba by obsłużyć jakoś błąd magistrali: http://obrazki.elektroda.pl/2162467700_1...
Jeszcze kilka uwag co do kodu. Jak już będziesz robić tę lepszą wersję, to koniecznie włącz watchdoga. To jest podstawa, aby mikrokontroler został zresetowany, gdy hardware wejdzie w dziwny, nieustalony stan. Skonfiguruj też Brown-out detection. Jak będziesz robił protokół do komunikacji, to uwzględnij też komunikaty zwrotne wysyłane z mikrokontrolera,...
witam. od kilku dni probuje rozwiazac pewien problem. mianowicie ucze sie programowac avr'y i postanowilem zrobic budzik. jednak problem zaczal sie gdy zaczalem dzialac na przerwaniach. na wejscie int2 podany mam sygnal o czestotliwosci 1Hz. ma on co sekunde powodowac przerwanie w ktorym jest odczyt zegara oraz wyswietlenie go na wyswietlaczu 2x20 znakow....
Atmega8L możesz spokojnie zasilać bezpośrednio z baterii 3V, do tego tryby głębokiego uśpienia i po kłopocie. Jeśli mnie pamięć nie myli, to uzyskałem w jednym projekcie 20uA. Programowy watchdog, licznik wybudzeń i masz urządzenie, które teoretycznie podziała kilka lat na jednej dobrej baterii.
:roll: ... na to bym nie wpadł. Ale i tak na czas włączania wdt przerwania powinny być zablokowane ;)
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...
A skąd wiesz, że się nie wykonuje? Jedyne co widzę, to to, że w przerwaniu zerujesz wyzerowany port. To raczej trudno zauważyć.
sorry za taki kod ale naprawdę nie mam pomysłu jak to zrobić czy atmega sie obudzi jak podam na int0 ? czy można zrobić to tak config int0=low level on int0 pdown pdown: enable interups incr flaga if flaga=2 then start watchdog else powerdown end if
Bascom sam się nie zajmie resetowaniem Watchdog'a, jak słusznie zauważył Holy . Żeby z niego skorzystać najpierw trzeba go skonfigurować (ustawić stopień podziału - od tego zależy czas potrzebny na przepełnienie jego licznika) poleceniem CONFIG WATCHDOG = czas , później uruchomić: Start Watchdog . Teraz w newralgicznych punktach programu musi zostać...
Możesz dać taką linijkę asm("jmp 0xFF00"); Oczywiście wartość musi być tak dobrana żeby nie trafić w jakąś instrukcję bo będą jaja;) Oczywiście rozwiązanie jest jak najbardziej głupie, ale spełnia Twoje założenia;) Polecam jednak myk z watchdogiem.
Powinieneś tak napisać program, aby taki reset nie był potrzebny a jeśli upierasz się przy tym to wykorzystaj WATCHDOGa. a jak wprowadzisz procek w tryb bootloadera (myślałem, że tego chce autor)? Jeśli chcesz resetować procka to faktycznie najłatwiej watchdogiem.
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...
skok do właściwego programu? - użyj watchdoga i masz przejście do programu głównego w wersji "miodzio"
Schemat poprawiłem. Zmieniłem w pierwszym poście. Faktycznie, aż miło popatrzeć. Sam czasem się wkurzałem szukając ścieżki. Pomierzyłem jeszcze prądy: Atmega + SD - 220 mA Atmega bez SD - 140 mA atmega bez LCD i bez podświetlania - 84,9 mA Atmega z LCD bez podświetlania - 88 mA W założeniu ma to być: - pomiar z siedmiu DS18B20 - pomiar z dwóch czujników...
Nie niszczy wgrywanie przez bootloader, tylko ponowne użycie programatora. Zresztą nie powinno tak być używając Arduino IDE, generując kod z Arduino do hexa powinien wgrać ponownie z bootloaderem, ale nie wiem czemu tak się nie dzieje gdy używam programatora USBASP. Najlepiej po użyciu programatora ponownie wgrać bootloader. Używając bootloader możesz...
Te 0,5F myślę że z powodzeniem nie pozwoli na skok napięcia o takim czasie narastania ażeby aż procek poszedł w maliny. Ja miałem układ w którym pracował obok procka moduł GSM. Potrafił on łyknąć chwilowo 2A prądu. Tam to dopiero były szpilki na zasilaniu. Co prawda przetwornica była na 3A ale jej czas reakcji był troszkę za mały. Procek się nie resetował...
Albo problem elektryczny, albo włączony watchdog, albo błąd w implementacji sprintf.
Cięzko cokolwiek sugerować - konstrukcja jak konstrukcja. Ważne że działa... Jedyne co można zasugerować na przyszłość, to nauczyć się C ;] Czy w procku chodzi watchdog? Imho powinien, skoro jest to sterownik, i jego nieprawidłowe działanie może pociągnąć za sobą jakieśtam niekorzystne następstwa...
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...
Jeżeli chcesz resetować układ to podłącz przycisk. Jeżeli chcesz aby w wyniku zakłócenia (zawieszenia się) sam się zresetował użyj watchdog'a.
masz na myśli wdt_enable(WDTO_2S); //Włączenie Watchdog'a z czasem opóżnienia 2s a potem w pętli głównej programu wdt_reset(); natomiast nie resetował mi sie watchdog podczas gdy byłem w menu. Temat zamykam. Dzięki za pomoc.
jarek_lnx tak też myślałem aby zrobić. Dziękuje wszystkim za odpowiedzi. [edit] Ok, wszystko działa jak fabryczne. IRF1404 okazał się dobrym wyborem, radiator jest letni a to wszystko bez używania dodatkowego tranzystora na bramce mosfeta. Sygnał 5V z atmegi to wystarczająco. Nie obyło się także bez ww kondensatora 4700uF (oraz watchdoga na wszelki...
Atmega 88 to niezbyt udany mikrokontroler , problemy z uartem , problemy z wdt .Proponuję dobrze poczytać dokumentację (pdf) choć i ta zawiera błędy np w obsłudze uarta ...
Sprawdź WatchDog'a i podciągnij Reset do VCC.
Ja wykorzystuje zewnętrznego Watchdoga. Gdy napiecie spadnie poniżej pewnego poziomu, wykorzystując naładowanego kondziora zapisuje szybko najważniejsze rzeczy. Mnie się nawet udaje zapisać prawie 2Kb danych ale mam małe obciażenia na zasilaczu i napięcie spada w miarę "wolno" :)
Chodzi o to, że po włączeniu sterownika do prądu (resecie mikrokontrolera) pompa od razu jest włączana nawet bez procesora. Wyłączona zostaje dopiero po pierwszym odczycie temperatury. Uchroni cię to przed nie pożądanym wyłączeniem pompy gdy np. ulegnie uszkodzeniu czujnik temperatury. Po każdym odczycie zeruj licznik watchdog. Wówczas nawet gdy odetniesz...
Swoją drogą, jak wygląda kwestia niezawodności procesorów z tego okresu? Mam tutaj na myśli nie tylko 6502, ale także m.in. 8080, 8085 czy Z80. Obecnie każda Atmega posiada watchdoga, który w przypadku zawieszenia wykonywania programu automatycznie zresetuje MCU. Nie pamiętam, czy kiedykolwiek ta funkcjonalność przydawała mi się po etapie debugowania....
Rzeczywiście :D Ale to pokręcone. edit: Wydaje mi się że podaję poprawnie tablicę z moim znakiem do funkcji GLCD_DefineCharacter. Ale nie wiem jak wywołać na lcd mój znak. Czy może problemem jest typ zmiennej jaki użyłem? Problem z pikselami rozwiązałem. Okazało się że zbyt szybko pisałem do LCD przez skrócenie czasu funkcji _delay. Petit-ka zdecydowałem...
Nie wiem czy to mi się uda (z tym toogle). U mnie w domu to się nigdy nie stało a tu bym mógł siedzieć i sprawdzać to nawet 24h natomiast w w.w. sklepie całego dnia nie mam możliwości spędzić. Tutaj problem raczej będę musiał rozwiązać metodą prób i błędów. Może poradzisz mi co warto zmienić ja wprowadzę parę zmian i po jakimś czasie zobaczymy czy się...
Ona już jest zmienną globalną i chyba nie ma sensu kombinować z tym. Ale oczywiście wszystko zależy od ciebie i tego co chcesz osiągnąć. A problem alokacji pamięci można rozwiązać prosto, jeśli nie chcesz używać alokacji dynamicznej - wystarczy do funkcji przekazać wskaźnik na wcześniej zaalokowaną pamięć, chociażby wskaźnik na zmienną lokalną, ale...
Ty czy Kardaś? No ta w zasadzie popodmieniałem nazwy komend w przypadku mastera, ale w tym przykładzie nie ma dużo więcej do roboty, jak uda się stworzyć własną apkę na kompa to trochę pozmieniam (dodam więcej case'ów xd). Dużym problemem było to, że nie zaznaczyłem zapisu eepromu w eclipse, ale nadal są błędy teraz już chyba tylko po stronie slave'a:...
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...
O kurka, przepraszam, nie zauwazyłem ze to watchdog. ;) Poprawka, wewnetrzny oscylator, dla 8MHz. http://obrazki.elektroda.net/70_12329129...
atmega watchdog atmega reset watchdog atmega watchdog przerwanie
amplituner pioneer kolumna budowa magnesu zwiększenie przyłącza
Niedziałające światła drogowe w samochodzie - przyczyny i diagnostyka Brama Wiśniowski nie ma siły ciągnąć - przyczyny i rozwiązania