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...
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_...
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...
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...
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...
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ę...
Wybudzaj przerwaniem watchdoga nie resetem. Ja bym to zrobił tak (w C, w bascomie pewnie też tak się da): W głównej pętli: - konfiguracja watchdoga z przerwaniem na jak najdłuższy czas- - wejście w power down - pętla nieskończona z ciągłym przechodzeniem do idle. W przerwaniu watchdoga: - wyzerowanie watchdoga - inkrementacja zmiennej odliczającej od...
Autor chce uzyskać SLEEP_MODE_PWR_DOWN, a z tego tryby wybudzi go jedynie watchdog lub przerwanie zewnętrzne (zależnie od uC).
http://obrazki.elektroda.pl/5397068700_1... Witam! W kolejnej odsłonie modułów do samochodu przedstawiam układ realizujący funkcję, tzw. Coming Home oraz Leaving Home znane przede wszystkich chyba z aut grupy VW. Funkcje te to zwyczajnie oświetlanie drogi do domu, gdy opuszczamy auto oraz z domu, gdy chcemy do niego wsiąść. Układ steruje...
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.
(at)tmf - dziękuję za miłe słowa :) Właśnie takie było założenie co do grupy "docelowej". Myślę, że jeszcze długo ATmegi i ATtiny będą punktem startowym dla hobbystów ze względu na nawał informacji w Internecie i mocno zakorzeniony pogląd jakoby wszystko inne było drogie/trudne itd. W sumie chciałem, żeby w poradniku było trochę więcej nawiązań do...
przeanalizuj sobie dobrze ten kdzik poniżej bo on jest dobrze napisany - naprawdę ;) ja wprawdzie kiedyś przy okazju swojej wytrawiarki też zrobiłem sterowanie w Bascomie 2 odbiorników przy 75 krokach ale dałoby radę więcej kroków i jeszcze kilka odbiorników. Z tym, że już nie pamiętam dokładnie zagadnienia więc trudno mi się teraz znowu w to wgryzać....
https://obrazki.elektroda.pl/4509007500_... Zapraszam na prezentację https://obrazki.elektroda.pl/1519670000_... Przygodę z APM32F003F6 pozwoli nam szybko rozpocząć płytka Mini Board. Oprócz głównego MCU z przydatnymi do uruchomienia elementami takimi jak rezonator kwarcowy, przycisk RESET oraz testowy, diody LED,...
http://obrazki.elektroda.pl/7831510000_1... Witam, w końcu i ja postanowiłem zaprezentować swoje dokonania na elektrodzie. To mój pierwszy post w DIY, proszę o wyrozumiałość. :-) 1.Pomysł Dla mnie, człowieka urodzonego pod koniec lat 70, zawsze wzorem zegara był zegar Teleexpressu. Te 60 diod sekundnika były dla mnie magnesem. Jednak...
dziękuję Dodano po 5 . ładny https://obrazki.elektroda.pl/7767676000_... QIO bit-banged do HLK-B30. log z D12 Dodano po 6 . Niestety, jeśli nacisnę restart lub reset zasilania na U, przyczyną restartu jest zawsze przerwanie pinu. naprawiłeś to? Zawsze mam Pwr lub Rbt
http://obrazki.elektroda.pl/2126980700_1... System monitorowania środowiska, oparty o interfejs LoRa IoT składa się z stacji bazowej zbudowanej z wykorzystaniem modułu Arduino Mega z bramką LoRa oraz zdalnych stacji opartych na Arduino Feather, które łączą się z stacją bazową poprzez radiowy interfejs LoRa. System pozwala na monitorowanie...
http://obrazki.elektroda.pl/7758360200_1... Energooszczędny błyskacz LED ze średnim poborem prądu poniżej 5uA? Tak, z XMEGA32E5 udało mi się tego dokonać. 5 lat błyskania LEDem na zasilaniu z 2 paluszków alkalicznych? Czas pokaże. Ponad 10 lat przy baterii litowej CR123A? Z pewnością możliwe, gdyby nie drobne przeszkody techniczne....
http://obrazki.elektroda.pl/5959558100_1... Witam :) Razem z kolegą chcielibyśmy się pochwalić naszą maszyną :) Jest to ramie robota oparte na serwomechanizmach modelarskich. Ja zająłem się sterowaniem i elektroniką, a kolega robił projekt 3D w SketchUp i konstrukcje http://obrazki.elektroda.pl/9008440700_1... Początkowo...
http://obrazki.elektroda.pl/3207877000_1... http://obrazki.elektroda.pl/9634776400_1... http://obrazki.elektroda.pl/8673988800_1... http://obrazki.elektroda.pl/3005768300_1... Termometr z funkcją pamiętania maksimum i minimum (zapisane w rejestrach, tracone przy braku zasilania). Program...
https://obrazki.elektroda.pl/9520538200_... Jest to raczej sprzęt dla fanów atmegi ;) Z punktu widzenia ekonomii nie ma wielkiego sensu. Stosując elementy smd oraz inny mikrokontroler można zrobić sprzęt i lepszy i tańszy. A części użyłem jakie miałem na stanie. Właściwości : - 1,2,4 kanały analogowe min (max 100,50,20 ksps) pasmo...
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
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...
Witam wszystkich. Zaprojektowałem i uruchomiłem zegarek z wyświetlaczami LED(SA10-21GWA) i układem PCF8583 współpracującym z mikroprocesorem Atmega8 oraz układami PCF8574AP na szynie TWI(i2c). http://obrazki.elektroda.net/21_12497604... http://obrazki.elektroda.net/58_12497606... http://obrazki.elektroda.net/95_12497605...
Z tego co wiem to najpierw watchdog powinien poczekać 2 sekundy, potem obsłużyć przerwanie i zacząć liczyć od nowa ( podczas gdy MCU będzie czekać 2000ms) i migać dalej. Dopiero po kolejnym odliczeniu 2 sekund przez watchdoga system powinien się zresetować.
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 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ę...
Może żeby od razu rozwiać pytania malkontentów dlaczego procesor, a nie jakiś gotowy przerzutnik zmieniający stan po kliku (np. D albo coś podobnego) Może by tak od razu zrobić układ na lampach? :) A może by tak wyrzucić z głowy tego typu myśli. Nie jesteś za duży żeby dorosłych pytać o pozwolenie? https://brandnewtube.com/watch/stop-aski...
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...
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...
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?
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
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 .
Co rozumiesz przez: ... wejdzie w pętlę nieskończoną. Zadam inaczej pytanie, czy jeśli watchdog się przepełni i zgłosi przerwanie to zacznie liczyć od nowa, czy też licznik pozostanie przepełniony i będzie wymagał natychmiastowego wyzerowania? Właśnie próbuje uruchomić taki układzik i coś mi nie gra. Niby wszystko jest ok a układ mi się zwiesza po...
po zakończeniu obsługi przerwania procesor przeskakiwał do konkretnego miejsca w kodzie? W ilu miejscach tego kodu musiałbyś wstawić te "przeskakiwanie"? ;) Nie będziesz w stanie z góry stwierdzić, w którym miejscu to przerwanie wystąpi. Ale gdybym wstawił jakiś znacznik na początku loop() to wracałby na początek kodu po każdym przerwaniu. Niby taka...
"...\avr-objcopy.exe" -O ihex -R .eeprom... Zrobiłem to w automacie, ale spotkało mnie coś o czym wspomniał bart-projects tzn: Hex na PC`cie zajmuje mniej miejsca niż Bin bo w Bin albo cały obraz pamięci no i gdy nie miałem parametrów z "-R" to mój wsad dla małego procesora miał...
Na początek użyj znaczników syntax i pozmieniaj magiczne numerki na nazwy bitów. Np.: avr/wdt.h
W chwili gdy obsługuje 1-Wire, Bascom ZAWSZE nawet na czas generowania resetu, co trawa ok 500us, później presence, co daje razem ok 800us, zawiesza przerwania. To samo w czasie transmisji danych, transmisja bajtu to ponad 500us zawieszone przerwania. W tym czasie nie wykona się przerwanie od timera, od i cała tajemnica. Ale zabobony. Każdy może otworzyć...
Problem w pewien sposob rozwiazany, moze komus sie przyda Dodano linie: $initmicro ........ _init_micro: Config Watchdog = 1024 Start Watchdog Return W tej postaci watchdog poprawnie resetuje uP: $crystal = 7372800 $regfile = "m168def.dat" $initmicro Config Aci = Off Config Lcd = 40 * 2 Config Lcdpin = Pin , Db4 = Portb.2 , Db5 = Portb.3...
Ok sprawa się nieco wyjaśniła. Mikroklocek nie idzie spać po użyciu WFE ale za to robi to po wywołaniu WFI. Ostatecznie mój kod, który wprowadza rdzeń w uśpienie wygląda tak jak poniżej i w tej formie to działa [syntax=c] /** * Entering STOP2 power save mode. In this mode all clocks except LSI and LSE are disabled. StaticRAM content * is preserved,...
Z opisu wynika, że masz coś nie tak w programie, niestety bez wnikliwego przejrzenia całości nie ma szans, aby ci pomóc. W pewnych sytuacjach różnice w szybkości wykonywania programu pomiędzy -O0, a -O2 mogą przekraczać 50%. Jeśli tak napisany kod migający LEDem w pętli głównej, ma różnice w czasach wykonania 11-20s, to masz powaźnie skaszaniony kod....
Witam Wyświetlacze ze wspólną katodą są coraz trudniej dostępne w sklepach. Układ ULN idealnie nadaje się (bez żadnych dodatkowych elementów poza oczywiście rezystorami) do sterowania wyświetlaczami ze wspólną anodą. Można go podłączyć bezpośrednio pod port - wszystkie osiem wzmacniaczy prądowych czyli sterować także kropką w wyświetlaczu albo też podłączyć...
Próbowałem ustawić wyzwalanie zboczem FALLING instrukcjami Bascoma, oraz wprost w rejestrach. Nie dawało to nic. Nie wiem, czy dalej wyzwalało się poziomem, czy przyczyna była inna. Poniżej fragmenty programu, które według mnie są istotne. Może ma tu jakieś znaczenie fakt, że pin INT1 jest w trakcie przerwania zmieniany na wyjście i z powrotem na wejście....
3. Jak dobrze widzę w dokumentacji to stan rejestrów przy power-down jest zachowany, więc można to zrobić bez użycia eepromu. Owszem, ale... Power-down Mode (...) In this mode, the Oscillator is stopped, while the external interrupts, and the Watchdog continue operating (if enabled). Only an External Reset, a Watchdog Reset, a Brown-out Reset, an external...
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...
Gdybym robił zwarcie na zasilaniu to zadziałaby układ BOD i uC by się zresetował i ponownie wyświetliłby się napis "start" przed main, a tak się nie dzieje. Procesor zostaje w tym przerwaniu bo jest tam while(1). Próbowałem rezystor 100 R i nic. To jest jakaś chora anomalia, której nie umiem wyjaśnić. Tak samo tego, że watchdog nie działa gdy korzystam...
sprawdź czy masz skonfigurowany może watchdog okienkowy w STMie, jeśli go nie odświeżysz w odpowiednim przedziale który sobie skonfigurowałeś, a w kodzie gdzieś przytrzymasz proca w while'u albo wpadnie Ci w jakieś przerwanie to proc będzie się resetował
(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...
Skoro tak to pokaż w kodzie gdzie ten WD jest ustawiany i przerwanie od niego, bo ja nie znalazłem. Odnoszę się do kodu ze strony https://github.com/feilipu/Arduino_FreeR... [syntax=c] BaseType_t xPortStartScheduler( void ) { /* Setup the relevant timer hardware to generate the tick. */ prvSetupTimerInterrupt(); /* Restore the context of the...
Coś mieszasz..., pstryka ale się resetuje..., może watchdog zepsuty? Albo pstryka i watchdog zepsuty albo wydaje ci się że pstryka. Hehe, no w zamyśle tak pstryka ;) I wtedy działa długo bezproblemowo... stąd moje domysły Nie wiem, czy mam rację, ale jeśli wspomniany task 1ms ma najwyzszy priorytet i tam restetuje się IWDG, to chyba jedyna możliwość...
Witam, Chciałbym skonfigurować przerwanie od Timer 2/3, aby było wywoływane co 125ns (8 MHz). Pracuję na wewnętrznym oscylatorze z włączona pętlą PLL -> częstoliwość 32MHz. Gdy do rejestrów PR3 i PR2 wpiszę 16 000 000 (do PR3 starszą część, do PR2 młodszą) to dioda pulsuje z częstotliwością 2Hz (1s świeci i 1s nie świeci). Gdy wpiszę do tych rejestrów...
Rozumiem doskonale ale zrobiłem coś innego, mianowicie przy resecie watchdoga zmienne sie resetują ale można zdefiniować zmienna w ten sposób : [syntax=c] uint8_t cycle __attribute__ ((section (".noinit"))); [/syntax] Stan zmiennej jest zapamiętywany nawet po resecie watchdoga. Dlatego można zliczac cykre uruchomienia resetu. [syntax=c] int main(void)...
Starob: cos mi sie wydaje ze Ty na sile probujesz zaprojektowac seftwareowego watchdoga, ale niezabardzo Ci to wychodzi. Moze nie kombinuj wiecej co ?? Ps. Do pytan Tdv dodam cos, co jesli ciagle zglaszane bedzie przerwanie o priorytecie wyzszym niz Twojego timera (a jakies tam zawsze sa) - bo zrozumialem ze z jakiegos tam timera kozystac zamierzasz...
Mam jeszcze jeden problem. Chciałem zaoszczędzić trochę energii i wykorzystać bibliotekę problem mam z odbiornikiem :cry: . Chciałem to ogarnąć poprzez wbudowany Watchdog ale chyba mnie to przerosło. Po starcie odbiornik usypia i budzi się jak trzeba do momentu wykrycia sygnału. Po wykryciu sygnału nie wiem jak go uśpić. Czy w odbiorniku dało by się...
Witam, przechodziłem przez pełną konfigurację przetwornika analogowo-cyfrowego 950291 datasheet'a -> bilbioteka STM32L052 950294 . Poniżej załączam konfiguracje STM'a oraz funkcję mającą na celu zapisać wynik pomiaru do dwóch ośmio bitowych zmiennych. Debugger przez ST-Link po podłączeniu 3,3[V] do wykorzystywanych podczas pomiaru złączy przypisuje...
Dziękuję kolego e marcus za wszelkie rady i instrukcje, zaraz poprawiam konfiguracje portu b. Według mnie przerywanie co 100ms jest używane przez program w pętli głównej programu, ponieważ co 100ms odwołuje się do 3 pod programów. Popoprawiałem wyszło coś takiego i działa jeszcze raz dziękuje wszystkim za pomoc: [syntax=basic4gl] '************* Konfiguracja...
Witam. Kod wkleja się w znacznikach Syntax. Składnia: Kolorowanie składni: In this mode, the external Oscillator is stopped, while the external interrupts, the USI start condition detection, and the Watchdog continue operating (if enabled). Only an External Reset, a Watchdog Reset, a Brown-out Reset, USI start condition interrupt, an external level...
A jak wygląda dokładniej ta praca asynchroniczna - technicznie wiem tylko programowo jak to obsluzyc. Wszystko jest doskonale opisane w dokumentacji, np do m16 strona 132. Generalnie jest rejestr ASSR. Ustawienie odpowiedniego bitu przełącza źródło taktowania timera2 na kwarc podłączony tdo wyjść TOSC. Mozna tam podłączyć wyłącznie kwarc 32768Hz i...
A przypadkiem nie włącza go przerwanie Timer-a ? When the SM bit is cleared (zero), the SLEEP instruction forces the MCU into the Idle mode, stopping the CPU but allowing Timer/Counters, Watchdog and the interrupt system to continue operating. This enables the MCU to wake up from external triggered interrupts as well as internal ones like Timer Overflow...
A mi sie wydaje, ze ma bardzo duzo wspolnego ;) Przeciez "sprzetowy pies" to nic innego jak timer z preskalerem, po ktorego przepelnieniu wywolywane jest przerwanie resetujace resetujace uC. Wiec jezeli uruchomimy T0 i uaktywnimy przerwanie od przepelnienia T0, w obsludze przerwania zrobimy 2-gi programowy licznik i jego inkrementacje to mamy gotowego...
Ok. A czym w takim razie różnią się od siebie te dwa zapisy ? ADC1->SR &= ~(1<<0); ADC1->SR &= ~ADC_SR_AWD; gdzie ADC_SR_AWD jest równe 0x01 a zresztą nie działa mi kasowanie przerwania w żadnym z tych przypadków, dodając również opóźnienie czasowe o różnych wartościach aby dać mu czas na reakcję. Wchodzi mi w przerwanie nawet jeśli...
Zainstalowałem AVR Studio4 i lecę od początku z google i pdf na temat ASM i AVR Powiedzcie chociaż czy w dobrym kierunku zmierzam? Bo jak w złym to odpuszczam i daje sobie spokój, pobawię się migającymi diodami w Bascomie. Tam gdzie nie ma komentarza to nie wiem co to znaczy i co robi ale było w pdf lub innych opisach, jeżeli ktoś może mi wyjaśnić instrukcje...
Only an External Reset, a Watchdog Reset, a Brown-out Reset, USI start condition interrupt, an external level interrupt on INT0, or a pin change interrupt can wake up the MCU Według dokumentacji wybudzenie mikrokontrolera z trybu power-down możliwe jest jedynie przez przerwanie od niskiego poziomu na INT0, a na jakiekolwiek przerwanie od INT1 procek...
Napisałem programik w celu testowania czasu w przerwaniu ADC. #include <stdint.h> #include <avr/io.h> #include <stdlib.h> #include <avr/interrupt.h> int main(void) { sei(); DDRB=255; DDRC=255; ADMUX = _BV(REFS0)|_BV(REFS1); ADCSRA = _BV(ADEN)|_BV(ADIE)|_BV&...
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...
Witam, Wejścia / wyjścia używane n.p: przez pid w periodic task powinny być mapowane / skalowane w tym samym periodic task. Tak chyba nawet dokumenty AB głoszą. Ja nie mam tak zrobione ale już tak zostawię. Na przyszłość będę pamiętał choć i tak, jak bym robił to wszystko znalazłoby się w jednym bloku. Chodź te 10 ms dla ramp. to chyba trochę przesada...
Nie analizuję jak to działa, ale zmieniony tak jak pisałem kompiluje się bez problemu. Jeśli poniższego listingu nie potrafisz skompilować to znaczy że używasz jakiejś archaicznej wersji i nie da się pomóc dopóki nie przesiądziesz się na nowszą. WDVALUE=16,32,64,128,256,512,1024,2048,4... Zawsze możesz wpisać mniejszą wartość dla Config Watchdog.....
Opis działania urządzenia - zasilam urządzenie z baterii budząc je (AVR Mega88 z trybu power down za pomoca przerwania zewnętrznego z INT0). AVR zasilany jest poprzez TS2951cs (stabilizator 5V) i tantal za nim (10uF/25V - a także dołączałem równolegle 100uF/elektrolit). Napięcie na kondensatorze wynosi 5V do chwili przejsia w tryb uśpienia a następnie...
Ja też miałem takie cyrki z przerwaniem. napisałem więc program w ten sposób: '///////////////////////////////////////... '////////// TERMOSTAT /////////////// '///////////////////////////////////////... $crystal = 4000000 'rezonator 4MHz $regfile "attiny2313.dat" 'attiny 2313...
na każdym który napiszę jest tak samo, w nowym temacie powyżej podałem ustawienia fuse bitów, zaraz wkleję kawałek na którym teraz się bawię Dodano po 4 to kod na którym teraz się bawie '***************************************... '-------------------- konfiguracje ----------------------------------------... $regfile...
Witam mam problem ponieważ chcę żeby mój mikro-kontroler MSP430g2 wykonywał następujące zadanie. Po wgraniu programu na port 1.4 i 1.0 podawał na przemian stan wysoki i niski ciągle. Natomiast gdy nastąpi przerwanie z portu 1.3 (przycisk) to podawał na te same porty stan wysoki i niski także ale żeby długości ich trwania były różne i po ich przesłaniu...
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...
Wszystko się zgadza z pamięcią, druga połowa jest chyba nie wykorzystana o ile pamiętam. Ten bin pakowałem zawsze jak miałem jakieś wątpliwości i działało. 1. Sprawdź switch "Power". To jedyny klawisz który jest podłączony bezpośrednio do MPU i generuje przerwanie załączające wewnętrzny watchdog który resetuje MPU. Powinno tam być 5V a po przyciśnięciu...
No watchdog nie jest włączony więc nie powinien resetować procka:| Na wszelki wypadek spróbowałem go resetować w mainie czyli mam tak: Main: wdr ; jmp Main Ale to też nic nie wnosi (zgodnie zresztą z przewidywaniami:(. ) Zapomniałem dodać a to też może budzić pytania kość pracuje na 8MHz a preskaler ustawiam na 8 ldi R16, 0b00000000 ; tryb ctc czestotoliwosc...
Zastanawiam się jak zrealizować cykliczne budzenie mikrokontrolera ATMEGA8 z jakiegoś "głębszego" trybu oszczędzania energii (inny niż idle)? Ta cykliczność to 1-2 min. Priorytetem jest minimalizacja zużycia energii (zasilanie z baterii). Z tego co wiem to: 1. Można użyć watchdog timerów (wdt). Czyli mikrokontroler budzony byłby co jakieś 2 sek. Trzeba...
Witam po raz kolejny pojawił się problem z moim programem otóż chcę aby kiedy wzrośnie temperatura i będzie wyższa lub równa zadanej to serwo obraca się w prawo poczym się zatrzymuje następnie kiedy temperatura będzie niższa od zadanej wtedy serwo obraca się w lewo i zatrzymuje się. [syntax=basic4gl] '************* Konfiguracja uC *****************...
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 serdecznie Program ma obsługiwać pomiar napięcia i wyświetlić na wyświetlaczu Led wartość odpowiadająca do 1 do 6 oraz wartość n. Problem polega ze dla wartości 1 oraz 2 brak stabilności pracy. Napięcie jest mierzone na pinie 23 uP przez dzielnik napięcia. Moje pytanie czy jest możecie sprawdzić źródło pod katem błędy dlaczego tak się dzieje?...
i dalej tak samo pomimo to że dajesz: Do W = Getadc(0) S = "ala" Print S Wait 1 Reset Watchdog Loop to opóźnienie 1s przy nadawaniu ????? oczywiście, że bufferout można sobie podarować, ale też wyglada chyba na to, że ten serialin ci nie działa chyba na tym porcie poza tym to tak jeszcze jedna rzecz mi przyszła do głowy - kiedyś też tak robiłem układy...
http://obrazki.elektroda.pl/7932906400_1... - komputer jednopłytkowy Specyfikacja systemu: • Procesor: Zintegrowany procesor Intel®ATOMTM N270 1,6 GHz /512K/533 MHz • Chipset: Intel®945GSE • Pamięć: Zintegrowany 1 GB pamięci DDR2 DRAM • Watchdog Timer: 1~255 sec./min. czasowy reset lub przerwanie systemu,...
Witam. Napisałem program sterujący pracą silnika prądu stałego do którego podpięty jest enkoder inkrementalny (najważniejsze części programu poniżej). Mój problem polega na tym, że gdy mikrokontroler zaczyna wykonywać program ruch_osi_ ma 2 możliwości: czekać określony czas, jechać do określonej pozycji. Część programu odpowiedzialna za postój i przerwanie...
1. Przerwanie ma tylko stwierdzić czy nastapiło krótkie czy długie wciśnięcie na podstawie ilości cykli (wiem, że powinno być na timerze, ale tak daleko jeszcze nie jestem). Chyba tak można zrobić, no nie? 2. No rozumiem, ale to chyba nie jest jakiś wielki błąd? 3. W moim kodzie przecież najpierw jest deklaracja. P1IE = BIT3; P1IES = BIT3; A włączenie...
Witam, Problem, z którym się do Was zwracam jest troszkę zagmatwany ale będę się starał opisać wszystko jasno i klarownie, bo sam nie mam już sił. Jest procesor, atmega88, na etapie budowania poszczególnych modułów docelowego programu. Uruchomiłem całkiem ładnie obsługę RC5 (może nie do końca super ale działa). Później uruchomiłem sprzętowe TWI (M88...
czyli w hlepie od bascoma klamia?bo tam jest wyraznie napisane ze watorsc w load timer jest odejmowana od 255(w timer0) czyli przy 100 watosc ladowana do timera wynosi 155 czyli timer przeladuje sie po 100 cyklach dla presclae 8 po okolo 200µs i co tyle bedzie przerwanie a do eepromu odwoluje sie readeeprom.....przyjrzyj sie! $crystal = 4000000...
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...
Co do przerwań... to chodzi mnie o podawanie sygnału na INT0, czy należy: wybrać typ sygnału zgłaszającego przerwanie (ustawiłem na narastające) aktywowac bit I w rejestrze SREG i ustawić odpowiednią maskę w rekestrze GIMSK, co wszystko zrobiłem. Coś przeoczyłęm? Chyba niepotrzebnie generowałem w rejstr PCMSK... Natomiast co do Timera...to przerwania...
Witam Piszę do was bo nie mogę rozpracować histerezy w poniższym kodzie programu. Program działa prawidłowo ale jest mały problem. Histereza zawsze działa, a raczej jej brak (załączanie i wyłączanie) działa równo przy 30 stopniach. Potrzebuję aby histereza była ustawiona na 5 stopni. Proszę pomóżcie mi wyeliminować ten problem. Program musi mieć funkcję...
Witam. Robię sterownik (do teściowej :) ) do kotła z możliwością regulacji prędkości dmuchawy i jest drobny problem, stosuję wyświetlacz led który wyświetla róże parametry (multipleksowany jest i wykorzystuje do tego celu timer0), jak uruchomię przerwanie zewnętrzne INT0 to zaczyna mi strasznie migotać,tzn. wyświetlacz jest taktowany częstotliwością...
Oto cały program. Może długo zająć jego analizowanie. http://obrazki.elektroda.pl/1161729300_1... http://obrazki.elektroda.pl/8550181000_1... http://obrazki.elektroda.pl/2942301200_1... http://obrazki.elektroda.pl/5544542600_1... http://obrazki.elektroda.pl/7129908700_1...
Do zrealizowania na zaliczenie kursu był program wykorzystujący timery i przerwania do pomiaru czasu. W skrócie wprowadzamy czas w void start(void)//rozpoczecie odliczania { sprintf(message,"Odliczanie "); message[15]=' '; LCD2x16_clear(); display(message, false); //konfiguracja timerow TCCR1B |=...
Witam, jeszcze proszę praktyczne rozwiązanie takiego problemu, gdyż program jest praktycznie ukończony, ewentualnie drobne poprawki kosmetyczne:), ale w obecnej wersji odczyt i zapis wykonywany jest z poleceniem "wait", przez co wskazywane temperatury nie są czasem poprawne - wyskakuje BRAK ds'a. Już nie mam pomysłu jak to zrobić, proszę tylko o jakieś...
OK Przepisałem cały program od nowa. 73% po kompilacji. Teoretycznie wszystko powinno działać ale nie mogę dostać się do menu "termostat" tzn.po naciśnięciu przycisku "menu" program powinien przejść do podprogramu termostat i na wyświetlaczu powinna pojawić się ustawiana temperatura ale tak nie jest. Czy ktoś mądry mógłby zerknąć na kod i powiedzieć...
Mam problem z przełączaniem bitów Założenia programu są następujące Program przez określony czas ma włączyć 2 diody oznaczone Pompka1 i Pompka2 oraz wyłączyć Napowietrzacz po upływie czasu ma przełączyć tz: wyłączyć Pompka1 i Pompka2 oraz włączyć Napowietrzacz po upływie drugiego czasu znowu ma przełączyć. Niestety program nie działa dobrze Diody działają...
Witam, Nie będzie działać poprawnie po popełniłeś jeszcze jeden błąd. Do momentu uśpienia wszystko jest ok, ale teraz następuje zmiana na porcie C, uP wstaje z uśpienia wykonywanie jest przerwanie pcint i teraz następuje powrót z przerwania. Powrót wykonywany jest jest nie do instrukcji SLEEP jak założyłeś a do pierwszej instrukcji po niej. Czyli następuje...
Hej Freddie, tym razem to już mam poważny problem i proszę Cię o pomoc. Problem mam cały czas z przerwaniami. Nigdy mi w sumie tak naprawde nie zadziałaly na tym projekcie od stm. Przerobiłem Twoją tablice wektorów przerwań: /** \file vectors.c * \brief STM32 (STM32F101 - STM32F103) vector table and __Default_Handler() * \details STM32...
/* * Some defines for the program status registers */ ARM_MODE_USER = 0x10 /* Normal User Mode */ ARM_MODE_FIQ = 0x11 /* FIQ Fast Interrupts Mode */ ARM_MODE_IRQ = 0x12 /* IRQ Standard Interrupts Mode */ ARM_MODE_SVC = 0x13 /* Supervisor Interrupts Mode */ ARM_MODE_ABORT = 0x17 /* Abort Processing memory Faults Mode */ ARM_MODE_UNDEF = 0x1B /* Undefined...
Chciałem tylko wiedzieć czy przerwanie wywołuje się raz czy cyklicznie ale już sprawdziłem, że cyklicznie. Tu jest wszystko ładnie opisane, jakby ktoś szukał: http://gammon.com.au/interrupts 8 sekund mi nie wystarczy, usypiam procesor na 15 sekund, ale w finalnym projekcie będzie to 30 s lub nawet minuta. *** [syntax=c]/* SD card multisensor temperature...
Przepraszam że podepnę się do tematu ale także walczę z RS485. I to walczę dobre kilka miesięcy! A zatem moje pytania: 1.Rozumiem że terminator muszę umieścić na początku i końcu mojej linii rs485 ? 2.Rezystory podciągające linie A i B muszą być przy każdym istniejącym module w sieci? 3.Rezystor podciągający RX do VCC musi znajdować się w każdym module?...
Witam, Bazuje na projekcie ze strony Freddie Chopin dla stma F4 z dodanymi bibliotekami STM32F4xx_StdPeriph_Driver. Zdefiniowałem sobie konfigurację timer'a w następujący sposób: [syntax=c]void Timers_Config(void){ RCC_APB2PeriphClockCmd(RCC_APB2Periph_TI... ENABLE); NVIC_InitTypeDef NVIC_InitStruct; NVIC_InitStruct.NVIC_IRQChannel = TIM1_CC_IRQn; NVIC_InitStruct.NVIC_IRQChannelPreemptio...
Nie. Robię to mniej więcej tak: czekam na przejście przez zero i w czasie półokresu włączam i wyłączam na określony czas dmuchawę. Jestem pewien, że można to zrobić łatwiej, ale musiałem całość szybko uruchomić, a że ten sposób działał to już tak zostało. Póki co dmuchawa się nie popsuła przez takie sterowanie :P. [syntax=basic4gl] $regfile = "m16def.dat"...
Kiedyś zrobiłem coś takiego dla s1200, 2313 itp. Jak chcesz to sobie przerób. Program odmierza czas, a po jego upłynięciu zaczyna migać żarówką (np wyłącza ją na 1s, potem zapala na 10s i tak 3 razy), a na koniec gasi żarówkę. Program nie jest jakoś super napisany, ale z tego co pamiętam działał. Do asemblacji radziłbym użyć oryginalnego assemblera...
atmega watchdog przerwanie bascom przerwanie watchdog przerwanie watchdog bascom
telefon cichy muzyk hobby linux zmywarka siemens iq300
schemat yihua automatyczna zmiana czasu mikrotik
Brother DCP-150C: Komunikat "nie moż. czyś." - Rozwiązania Porównanie kotłów Pereko Qmpell Evo 12 kW i Kostrzewa Twin Bio NE 12 kW