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.
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...
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...
podciagnoles cos do pinu reset?
Watchdog.
Jeśli resetował by prawidłowo to program wgrany do Uc powinien startować od początku. Dzieje się tak tylko kiedy zostanie naciśnięty reset PIN. Gdy układ zresetuje WATCHDOG to program nie startuje od początku, tylko widać przypadkowe znaki na wyświetlaczu. Dopiero po resecie z pinu wszystko wraca do normy.
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...
wylacz watchdoga i naucz sie czytac dokumentacje. bascom tego za ciebie nie zrobi. 0x41 0x56 0x45!!
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.
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...
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?
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.
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...
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...
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...
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 jest 1.11.9.3 Dla attiny na pewno lepsza. Może dla atmega też.
Chcę wykorzystać w programie informację o przyczynie resetu procesora. Odczyt rejestru MCUSR realizuję zgodnie z dokumentacją, wiadomo: char MCUSR_string jest o wiele za krótka, mimo, że najdłuższy string ma teoretycznie 22 znaki łącznie z nullem. Wyświetlany napis jest ucięty. Jeśli wydłużę łańcuch do np 40 znaków, to napis pojawia się w całości. Czy...
Domyślnie będą wyzerowane. Dodając $NORAMCLEAR wyzerowane nie będą. Wybieraj...
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ć...
Niektóre normy bezpieczeństwa nie zezwalają na używanie wewnętrznych watchdogów i obwodów resetujących. (...) bardzo ciekawa sprawa. osobiscie sie nie spotkalem z taka zasada, a mam do czynienia m.in. z aparatura medyczna. watchdog jest ukladem zabezpieczajacym program przed zawieszeniem - a scislej nie zabezpiecza a wykrywa ewentualne zawieszenie...
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ą...
- 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...
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ę...
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...)
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.
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...
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...
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...
Potrzebny mi timer z wyzwalaczem i przerwaniem na ATmega. Takie rzeczy robi sie programowo, albo programowo wydłużając czas zliczania timera sprzętowego w mikrokontrolerze, można też z uzyciem przerwań. Dlaczego chesz to zrobić całkowicie sprzętowo, obawiasz się o to że program przestanie poprawnie pracować? czy nie wiesz jak to zrealizować w programie?...
WDTON Fuse Unprogrammed: In this mode, the Watchdog Timer is initially disabled, but can be enabled by writing the WDE bit to 1 without any restriction. A timed sequence is needed when changing the Watchdog Time-out period or disabling an enabled Watchdog Timer . WDTON Fuse Programmed: In this mode, the Watchdog Timer is always enabled , and the WDE...
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...
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ł...
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.
Proponowałbym spróbować: #define F_CPU 12000000UL przesunąć przed #include <util/delay.h> , bo opóźnienia będą nieprawidłowe. Kompilator nie wyświetlał żadnych ostrzeżeń? Wyłączyć fusebit WDTON (hfuse=0xD9 zamiast 0xC9), bo on włącza watchdoga, a nigdzie go nie resetujesz. Przy ustawionych domyślnie bitach WDP2:WDP1:WDP0 na 0 mikrokontroler będzie...
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....
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...
Skoro musiałeś usunąć fragment plików startowych c, żeby dało się skompilować kod, to znaczy, że coś mocno jest nie tak. W dodatku usunąłeś fragment odpowiedzialny za inicjalizację zmiennych, więc raczej istotny. To mogłoby tłumaczyć problemy. Reset z WD jest tożsamy z resetem przez pin RESET, czy BOD, jedyna różnica to inne ustawienie bitów sygnalizujących...
Ustawiłem bit WDIE oraz WDP1 i WDP2 ( ustawiają sekundę jak było napisane w nocie katalogowej), lecz jak śledzę to debuggerem to widzę że system dalej się resetuje. Dziwna sprawa dioda świeci się (około 1 sekunda) i gaśnie (na około 1 sekundę), chociaż nie ma delyów ani operacji xor. Wydaje mi się że ten program powinien zapalić diodę po upływie 1 sekundy...
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...
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>...
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.
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ć...
(at)pawlik - tak - i w Xmega(at)PDI jak i przy korzystaniu z np. debugwire w nowszych małych atmegach Atmel dał też ostrzeżenie odnośnie stosowania filtru RC na resecie ;) Co do stosowania kondensatora do masy to dokładnie te same notki atmela zalecają ten kondensator przy stosowaniu zewnętrznego resetu (czy to przycisk, czy przez jakiś układ) jak również...
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ę...
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...
u mnie nie ma tego problemu z przekaźnikiem, program wczesniej działal na atmega8 i bylo ok
cześć. odgrzewam temat, ponieważ problemu nie udało się rozwiązać. Płytke procesora osłoniłem 1mm stalową blachą. low esr 1000u obok procesora. nic to nie dało, albo nie wiele. Procesor dalej się resetuje przy włączeniu stycznika. Program nie idzie w krzaki i zawartość pamięci nie ulega uszkodzeniu dzięki ustawieniu odpowiednich fusebitów zegara, zasilania....
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...
Sprawdź WatchDog'a i podciągnij Reset do VCC.
Witam, Chciałem napisać prosty program do włączania i wyłączania 5 diod podłączonych do portów PC0-PC4 uP atmega8. Diody zapalą się po ustawieniu na portach stanu 0. Diody mają samoczynnie migać, a czas pomiędzy włączeniem, a wyłączeniem diod będzie ustawiany w timer0. Niestety uP po 294 cyklach uP restartuje się tj. wraca do funkcji reset. 294-ty cykl...
Zrobiłem i dalej lecą same 0 :(( oto kod w 2 Atmega 128 (ten co ma mierzyć): $regfile = "m128def.dat" $crystal = 16000000 $baud = 9600 $hwstack = 32 $swstack = 10 $framesize = 40 Dim W As Integer Dim L As Integer Config Watchdog = 2048 Start Watchdog Reset Watchdog Config Adc = Single , Prescaler = Auto , Reference = Internal Start Adc L =...
Nie działa mi to: Dodano po 26 Czy da się jednocześnie używać watchdoga jako timer i jako układ który w razie błędu resetuje mikrokontroler? Dodano po 3 Aktualizacja. Poprawiłem ten kod i teraz już dioda dość dobrze świeci, tylko gdy ustawię stan niski w przerwaniu watchdoga to ona nadal świeci tylko ciemniej.
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.
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ę...
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ć...
Mam poważne wątpliwości czy kombinacja softwareowego USB i synchronicznego (busy waits!) TWI ma szansę zadziałać. Chyba faktycznie te synchroniczne i2c nie działa, bo mi się rozłącza z usb. już się bawię z isr: nwm o co chodzi z tym attiny ale mi hardware nie działał choćbym się zesrał, ostatecznie na scl dałem mniej więcej taki https://obrazki.elektroda.pl/1633124600_...
Witam, Program w zasadzie jest ok, jedyne do czego bym się doczepił to umieszczenie polecenia "Start Watchdog" w głównej pętli programu, zamiast przed, a w pętli tylko polecenie "Reset Watchdog". Po drugie widać, ze za bardzo nie zależy Ci na oszczędności prądu (zegar 8MHz) to ja bym nie wyłączał przetwornika adc, bo po włączeniu pierwszy pomiar jest...
Witam. W internecie w różnego rodzaju źródłach informacji na temat watchdoga popularny jest jeden z przykładów: [syntax=c] wdt_enable(WDTO_1S) //przykladowo resetowanie uC po 1 s. cli(); while(1); [/syntax] Moje pytanie: Po co wyłączać przerwania po uruchomieniu watchdoga? Nie rozumiem tego działania. Probowałem zastosować powyższy kod w swoim przykładowym...
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(...
Są rzeczywiście sytuacje, gdzie hardware'owe i2c/twi potrafi się zawiesić. Nie jestem specem od AVR niemniej kiedyś bawiłem się w atmega interfejsem TWI. Wykonywałem losowe zwarcia linii SDA zarówno w trakcie transmisji jak i gdy linia jest wolna. Czasem gdy rozwierałem linię SDA ona zamiast podciągnąć się do 5V pozostawała na 0V a w rejestrze statusowym...
Watchdog?
Zbyt wolne ale dlaczego?Układ zasilam z stabilizatora 7805, teraz mam podłączony do pinu reset 100n do masy i 10k to +5V a procesor dalej nie startuje po wlaczeniu zasilania.Jak zewre Reset to masy to procesor startuje.Jak to wyeliminiwac-może to być wina programu albo ustawienie wewnetrznego kwarcu? Wydaje mi się ze wpływ na działanie układu resetu...
Witam, Mam problemz AtMega z tematu. Ustawiam konfigurację Timerów wg manualki: tryb CNC; prescaler; zezwolenie na przerwania CompareMatch. Po ustawieniu tego odblokowuję przerwania przez "sei();" i.. procesor się resetuje. Dodam też, że taki sam kod działa bez problemów na AtMega 16/32/64. Czy przy pisaniu kodu na te procesory (324/644/1284) trzeba...
https://obrazki.elektroda.pl/9342271000_... Dzień dobry, Urządzenie powstało w celu monitorowania poziomu wilgotności w pewnej zamkniętej przestrzeni. Przekroczenie zadanego poziomu jest sygnalizowane sygnałem dźwiękowym (buzzer) i świetlnym (LED). Wartości z ostatniego pomiaru można w każdej chwili odczytać, po naciśnięciu przycisku,...
Jak myślisz o jakimś pojedynczym regulatorze z wyświetlaczem, to proponuję cyfrowe czujniki temperatury Dallas. ATmega32, wyświetlacz LCD, klawiatura (4x4), 1wire (dla czujników), klucze rezystorów w termo-zaworach na tranzystorach Mos-fet, zegar/pamięć RTC z podtrzymaniem bateryjnym (czas i nastawy temperatur). Program powinien zawierać funkcję watchdog,...
1. Na poczatku użyłeś obecnie obowiązująca formę w odniesieniu do przerwania INT1 : ISR(INT1_vect) a teraz starszą w odniesieniu do przerwania INT0 SIGNAL(SIG_INTERRUPT0) Czy zainstalowałeś starszą wersję WinAVR ? 2. O co chodzi z : asm volatile ("WDR"::); i jak to się ma do _delay_ms(); skoro w programie...
No niestety, bywa, ze procek się zwiesi i nic mu nie pomaga, nawet watchdog. Znam człowieka, który dosłownie bawił się AVR'ami np. powolutku podkręcał zasilanie i obserwował zachowanie uP - okazało się, że przy powolnym narastaniu zasilania uP potrafi się zawiesić i nie ma znaczenia watchdog (to był ATmega16) ale na tym samym rdzeniu są robione prawie...
Witam, od wczoraj zmagam się z problemem odbioru kodu RC5 w urządzeniu, w którym mam multipleks dużej ilości wyświetlaczy 7-segmentowych LED. Przerwania na multipleks przychodzą co około 4ms. Multipleksowanych cyfr jest łącznie 48, ale pogrupowane są one, tak jakby były tylko 4 cyfry. W każdym przerwaniu kody segmentów wysyłane są szeregowo na 3 rejestry...
PCF pożera max 200µA... Schemat poprawny, można tylko dodać 10µF pomiędzy RESET a GND oraz na wszelki wypadek przycisk reset lub włączyć watchdog'a. Bo jak się zwiesi to pozostanie tylko odłączenie zasilania. Mam gdzieś kilka wersji zegara na pcf'ie z pomiarem temp na DS'ach, ale to dawne czasy i pisane było na 4051, nie na avr'a. Ale jako...
Witam. Dołączam poprawiony schemat, niestety na nowej płytce jest to samo - losowe zawieszanie się programu - musiałem aż uruchomić watchdoga bo gdy układ się zawiesił siłownik cały czas jechał co mogło go zniszczyć, tak to przynajmniej watch zrobi reset układu. Jakieś pomysły, sugestie ?? Ręce już mi opadają. http://obrazki.elektroda.pl/7242218800_1...
Config Watchdog = 2048 Zdaje sie że największy preskaler dla WatchDoga w M168 to 1024 a nie 2048. Tak ale "Config Watchdog = 2048" to znaczy że układ Watchdoga uaktywni sygnał reset procesora po 2048 milisekundach. Dla procesora Atmega168 możliwe są ustawienia: 16, 32 64, 128, 256, 512, 1024, 2048, 4096, 8192, czyli od 16ms do 8 sekund. Zamieszczam...
Nie miałem za bardzo czasu ale wracam do nierozwiązanego problemu. http://obrazki.elektroda.pl/7699775600_1... http://obrazki.elektroda.pl/3826926900_1... Tak wyglądają screeny po wywołaniu programu CRCGEN. Pliki wgrane programatorem działają poprawnie a przez bootloader tylko ten krótki (choć po przemieleniu ma także...
Ja mam notę PDF do tego procka z 2004 roku i jest w niej wszystko OK Najchętniej otukł bym komuś głowę, z tego Atmela. :P Zwykle najnowsza wersja czegoś, nie psuje tego, co już było poprawne w wersji poprzedniej. ....grrrr.... oczywiście rozumiem, że te dwie linie nie były zakomentowane i to tylko omyłkowo wkleiłeś taki kod - bo wtedy na prawdę by...
Podczas wgrywania programu, który zajmuje powyżej 25% pojemności pamięci otrzymuje błąd w avrdud'zie. Sam program nie działa wtedy prawidłowo. Gdy wchodzę do menu zawiesza się i resetuje procesor. Gdy zwolnię trochę pamięci usuwając np czcionkę wszystko wraca do normy. Uc programuje się prawidłowo i program działa bez resetów. Wina nie leży w programie,...
Witam, Zaczynam właśnie zabawę z procesorami atmega i mam problem z watchdog'iem na atmega8. Pod atmega328 działa to super ale tam jest troszkę inaczej (jest WDIE, którego w atmega8 nie ma) Skorzystałem z przykładowego kodu z tej strony #include <avr/wdt.h> #include <avr/sleep.h> #ifndef cbi #define cbi(sfr, bit) (_SFR_BYTE(sfr)...
Witam, Chciałem skomunikować ze sobą 2 atmegi32 i mam z tym problem. Jedna atmega wykonuje pomiar z wejścia adc i próbuję wartość ADC wyświetlić na wyświetlaczu podłączonym do drugiej atmegi, ale zamiast wartości np 467 na wyświetlaczu uzyskuję jakieś przypadkowe cyfry np. 13 10 19 51 54 ... Podłączone jest dobrze RxD do Txd i podciągnięte rezystorami...
Witam, Chciałem zrobić opóźnienia w programie dla Atmega8. Wykorzystałem przerwania, ale przy symulacji programu w AVR Studio okazuje się że program po około 260 mikro sekundach resetuje się(wraca do funkcji main() ). Nie jet to spowodowane raczej watchdogiem bo jest on wyłączony. Czy ktoś potrafi mi powiedzieć dlaczego tak się dzieje? Aha, oczywiście...
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...
Witam Nie wiesza się, tylko wykonuje nadzwyczaj sumiennie to co napisałeś w programie: Paletyzacja: Dlugi_tekst_2 = " By powrocic do menu glownego wcisnij < " Do ... Loop To jest pętla BEZ KOŃCA. ... Do Reset Watchdog Dlugi_tekst = " Symulacja nakladania uszczelnienia" Dioda_a = 1 Czas_odcinka = 142000 / Predkosc_spawania...
AVRStudio 4.18 + WINAVR najnowszy. Reszta kodu i bibliotek to V-USB i tego nie ma sensu zamieszczać. Niezamieszczona część pliku main.c to ustawienia portów, zmiennych itp. Jak tak mocno chcesz to go zamieszczam. Ciekawi mnie czy jest tam coś istotnego co zataiłem. [syntax=c]#include <avr/io.h> #include <avr/wdt.h> #include <string.h>...
Witam. Mam duży problem z układem na dwóch atmegach 8 i 168. Jedna płytka pełni rolę panelu operatora, druga płytki wykonawczej. Obie płytki zasilane zasilaczem sieciowym, stabilizowanym 12V, każda mega zasilana z układu LM7805. Obie połączone za pomocą portu RS-232. Układy podpięte według wskazówek znalezionych na elektrodzie. Kondensatory na VCC,...
Witam, Napisałem program, który wprowadza uC w stan uśpienia. Wszystko działa poprawnie, ale do tej operacji używam dwóch przycisków. Jeden służy mi do usypiania (PA1), a drugi, jako przerwanie do wybudzania uC (PD2-INT0). W jaki sposób mogę zrobić to na jednym przycisku podpiętym pod PD2? Poniżej kod. [syntax=c]#define F_CPU 8000000UL /*czestotliwosc...
Witam; mam pewny dylemat. Zastosowałem watchdoga z największym preskalerem /1024. W Atmega644P licznik watchdoga jest taktowany z częstotliwością 128KHz. Czy zatem reset watchdoga nastąpi po 1024/128000 sek , czyli co 8ms? Czy nie da się ustawić go aby się kasował po kilku sekundach?
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...
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...
do tego służy watchdog i nie trzeba zdublowanego systemu resetów, który moim skromnym jest konstrukcją błędną Właśnie, nie rozumiemy się :) Otóż, w urządzeniu, które jest sterownikiem pewnej pompy, początkowo był tylko jeden MCU. Oczywiście program korzysta z watchdoga. Był także, w jednej z początkowych wersji , watchdog zewnętrzny. Jednak okazało...
Genario:poczytaj na temat watchdog, brownout itp. , większość mikrokontrolerów potrafi samodzielnie wyjść z takich stanów, o ile go odpowiednio zaprogramujesz Tanaka:NIE, program na mikrokontrolerze nie ma nic do programowania ISP. Jedyny sposób "wyłączenia" ISP to: -złe ustawienie fusebitów (np zmienienie reseta na port I/O co uniemożliwia programowanie...
Multimetr to Brymen BM837. Dodam że jak zamiast akumulatora podłączę żarówkę 12V/200W to wtedy prąd jest przekłamywany inaczej - im mniejszy prąd tym większy mnożnik jest potrzebny. Dla 500mA ADC=12 i mnożnik 41,6... ale dla 3A ADC=117 i mnożnik już 25,6... Przecież niby ACS712 odczytuje wartość prądu AC i DC...lecz tu przez PWM jest prostokąt z różnym...
Witam Na wstępie się przywitam - na imię mam Piotr, jestem sobą początkującą w kwestii programowanie mikrokontrolerów AVR - przez ostatni rok "bawiłem" się w różne układy na m32 - pisząc soft w bascomie. Przesiadłem się kilka dni temu na procesor m1280 - i tu mam kilka problemów, których źródła nie potrafię zdiagnozować. Przede wszystkim - po wgraniu...
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.
Zapytam po raz drugi: co to jest procedura obsługi Watchdoga?? To jest "Watch" ale bez "dog"... ;) Może być ewentualnie obsługa inicjalizacji watchdoga w tych procesorach, w których jest on konfigurowalny. A dla potomności : watchdog to licznik resetujący układ po upłynięciu odliczanego czasu. W celu zapobieżeniu resetowi układu program wykonujący...
Mój pomysł jest taki aby przejrzeć notkę katalogową od strony 303. /PEN jest tylko wykorzystane w alternatywnej metodzie programowania, kiedy razem z linią SCK są cały czas w stanie niskim od czasu włączenia zasilania (s. 304), w innym wypadku (co i nas dotyczy - nie mamy źródeł programu sterującego "programatora", więc nie wiemy co z SCK wyprawia)...
mam dziwny problem: przy takim programie ldi r16,0b101 out 0x21, r16 ldi r16,0b011101 out 0x21, r16 ldi r16,low(0x199) out SPL,r16 ldi r16,high(0x199) out SPH,r16 sbi ddrb,6 sbi portb,6 reset2: nopnop jmp reset2 reset jest co 20 ms (+-) ldi r16,0b101 out 0x21, r16 ldi r16,0b011101 out 0x21, r16 sbi ddrb,6 sbi portb,6 reset2: nopnop jmp reset2 reset...
xPatryk --> pod schematem widać opis: Karta 4 przekaznikow z filtrowanym zasilaniem\4 przekaźniki Jak dla mnie to lekka masakra niestety. Gdzie kolega widzi tu filtrowanie zasilania????. Niestety tak jak myślałem układ jest zrobiony najgorzej jak tylko można było do tego podejść więc nie dziwota, że dzieją się cuda z prockiem i to jeszcze przy załączaniu...
Szkoda, że koledzy zamiast wskazać sensowne rozwiązanie piszą "wybierz ARM i problemy magicznie znikną". Jeżeli dobrze rozumiem, to problem jest taki: Funkcja przesyłająca dane po SPI jest wywoływana z jakiegoś przerwania oraz z programu głównego. Jak to zrobić, aby blokować wywołania na czas transakcji? Dlaczego? Ponieważ do SPI są przypięte 2 porty...
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...
Wywal ten kondensator z nogi resetu. Zostaw sam rezystor do VCC. Ktoś już miał dokładnie taki sam problem. I wyłącz watchdog'a w fusebitach. I powiedz czy coś to zmieniło ;)
Tomqu z podanych przeze mnie linków ściągnij przykład 04 i podmień w nim main.c na: [syntax=c]#include"main.h" //**************************************... #define BUF_SIZE 8 // definiujemy bufor o rozmiarze 8 bajtów (musi byc potega dwójki dla tego sposobu!!!) // definiujemy maskę dla naszego bufora #define BUF_MASK...
atmega watchdog watchdog atmega reset watchdog
schemat prasa hydrauliczna karta zabezpieczona zapisem zasięg telewizji naziemnej
wyszukiwanie parametryczne brother zacięcie papieru
Audi Q7 4L0 brak sygnału alternatora LIN, VCDS, Energy management active, Bosch/Valeo Czujnik Halla – zasada działania, typy, Allegro, Infineon, Melexis, aplikacje, usterki