A czy to też nie działa : Config Watchdog = 16 Start Watchdog Disable Interrupts być może Bascom odblokowuje przerwania w starcie watchdoga?
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...
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...
ATMEGA8 nie posiada WDT_vect, takie przerwanie wystepuje natomiast w ATMEGA 88 .
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ę...
Witam, jaki problem chcesz rozwiązać? Pokaż treść zadania. Temat podobny do poprzedniego, w którym też brakuje pytania. Pozdrawiam.
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>...
Zdaje mi się, że w przypadku a przerwania z watchdoga nie da się ustawić rzadziej niż 2s.
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...
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....
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...
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?...
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...
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, 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...
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.
Więc tak. Pierwsza ciekawostka która wyszła, to jakiś kłopot z układem watchdog, więc go wyłączyłem aby sprawdzić czy to jedyny błąd. Wszystko działa elegancko do momentu gdy program zaczyna generować instrukcje dla odbiornika - w tym miejscu nagle uaktywnia się przerwanie 'STOP' (co pokrywa się z zachowaniem całości w praktyce), a uK utyka w martwej...
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,...
Chłopaki dajcie na luz. Odbiegamy od tematu. Właśnie wyszła nowa wersja Bascoma 2.0.2 w której dodano : mcs bootloader new reset option. you can send a string for reset. To send special ascii use {}. {027} will send ascii 27. To send { you have to use the ascii value as well since { is used to send special characters. - mcs bootloader can use DTR or...
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...
Możesz użyć Attiny25/45/85V w obudowie DIP8. Schemat też należy przerobić i wyrzucić stabilizator a całość zasilić z 3 baterii 1,5V. Najprostszym sposobem na losowość uruchamiania jest umieszczenie obrobionego wyniku funkcji rand() jako argument _delay_ms(period). Poczytaj o rand() i srand(). Pamiętać należy, żeby odpowiednio ograniczyć wyniki by mieściły...
(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...
"...\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ł...
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...
A którą wersję Bascoma używasz? 1.11.9.0 Timer1_int: Counter1 = 54040 ' 10 razy na sekunde .... Return Nie wiem dokladnie ile cykli w bascom-avr jest zuzywane na odlozenie wartosc rejestrow na stos dlatego wybralem wartosc 54040 zamiast 54016 jako bardziej zblizone do 0.1s / stos + 0,09979167s / moze ktos wie ile dokladnie cykli jest tracone przed...
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 ! Wykorzystuje kilkanaście procesorów Atmega 8, 16 i 32 współpracujących razem. Wymianiają pomiędzy sobą dane za pomocą jednego z nich, który wywołuje przerwanie INT w kolejnych procesorach i pobiera lub wysyła dane przez ten pin. To taka prosta trasmija szeregowa. Po odebraniu danych odwracają się role pinów w jednym i drugim procesorze Input...
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)...
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...
(at)dondu Twoje artykuły czytałem dokładnie ;-) Z kodu poniżej wycięte ustawianie portów (bonie widziałem żadnej różnicy w zużyciu prądu). Procek ustawione fusami na 8MHz wewnętrzny z podziałem przez 8 [syntax=vbnet] $crystal = 1000000 ' ustawiamy prędkość zegara $baud = 9600 ' ustawiamy prędkość transmisji $hwstack = 220 ' ustawiamy wielkość stosu...
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...
Witam! Zająłem się zabawą z Atmegą 88 i mam problem z uzyskaniem katalogowego poboru prądu w głębokim uśpieniu. Atmega podłączona minimalnie, tylko 2 kondensatory 100n przy zasilaniu i 2 ledy które pomagają upewnić się że Atmega śpi. Przy zasilaniu 1,8V udało mi się zejść do 8uA. ADC, komparator, watchdog i brown out wyłączone. Taktowanie wewnętrznym...
Roznica pomiedzy skokiem pod adres $0000 a reset przez watchdoga jest i to spora. Watchdog sprzetowo linie RESET na jakis czas aktywuje. Wtedy wewnetrznie wszystkie rejestry opisane w dokumentacji przyjmuja swoj stan poczatkowy. Przy skoku pod adres $0000 ciagle dzialaja przerwania, sa poustawiane rozne rejestry wczesniej zainicjalizowane wiec moga...
Nie masz przypadkiem włączonego watchdoga ?
to w taki razie watchdog mi dupę ratuje, bo program działa w dużej pętli i okresowe kopanie kundla nie jest problemem. Analizując ten swój kod trafiłem na jeszcze jedną możliwość. Jest jedno miejsce, w którym w pewnej dość wydumanej, ale teoretycznie możliwej okoliczności jest możliwe wywołanie przerwania (tego obsługującego odczyt IR) w trakcie obsługi...
Witam, 1. Mam nie lada zagwozdkę z obsługą zegara PCF8563p przez Atmege32 + wyświetlacz LCD. Sam zegar działa dobrze. Poprawnie wpisuje datę i godzinę. Problem pojawia się z odczytem. W PCF ustawiam wyjście na 1Hz, które jest połączone z Atmegą jako przerwanie INT0. Co kilka razy, przy resecie uC, gdy program startuje od nowa, to czas zaczyna się niepoprawnie...
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
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...
Witam, mam problem z obudzeniem procesora za pomocą modułu RFM12. A dokładnie z przerwaniami z nIRQ Jak usunę fragment wprowadzający w power down... i wyłączę przerwania to nadajnik poprawnie wysyła dane do odbiornika. Kod w załączniku. nIRQ ciągle jest na niskim stanie, mimo to, że jest podciągnięte programowo i za pomocą rezystora 10k. Po odłączeniu...
Na początek użyj znaczników syntax i pozmieniaj magiczne numerki na nazwy bitów. Np.: avr/wdt.h
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...
Między płytkami idą jeszcze 2 przewody dzięki którym mogę generować przerwania między nimi. myślę że to właśnie jest twoim problemem. Skoro łączysz oba układy RSem to po co ci jeszcze jakieś przewody do wywoływania przerwań? Sam RS może przecież wytworzyc przerwanie , a wtedy w procedurze obsługi możesz zdekodować jaki znak nadszedł i robić sobie co...
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)? Tak. Należałoby przenieść cli() przed kod uruchomienia watchdoga aby zapobiec takiej ewentulności. To w takim razie można używać przerwań do wyłączania watchdoga? Wszystko wedle...
Zrobiłem to tak: 'Odebranie jakiejkolwiek informacji z modułu GPS $regfile = "m16def.dat" $crystal = 8000000 $baud = 9600 Enable Interrupts Enable Urxc On Urxc Przerwanie_rx Config Lcd = 20 * 4 ' Wyswietlacz 20x4 Config Lcdpin = Pin , Rs = Porta.0 , E = Porta.1 , Db4 = Porta.2 , Db5 = Porta.3 , Db6 = Porta.4 , Db7 = Porta.5 Cls Dim Dana As...
Zamieszczam cały kod... [syntax=c] #define F_CPU 14745600UL #include <stdio.h> #include <avr/io.h> #include <util/delay.h> #include <avr/wdt.h> #include "../Biblioteki/i2cds1307.c" #include "../RTC_test/OLED.h" #include <avr/interrupt.h> #include <avr/sleep.h> #include <avr/power.h> #define sbi(byte,bit) byte...
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...
Cześć, mam pytanie odnośnie Timerów w uC ATmega. Potrzebuję następujących opcji: - zliczanie impulsów z dwóch enkoderów - generowanie dwóch przebiegów PWM - generowanie przerwania co kilka ms. W ATmedze 32 mam 2 timery 8-bitowe i 1 16-bitowy. Wymyśliłem tak, że za pomocą timerów 0 i 2, zliczam impulsy. I teraz pierwsze pytanie: czy da się zliczać impulsy...
Wiec zgodnie z obietnica :) wykonalem zalecania kolegi _Robak_ i napisalemm prosty programik ktory mroga dioda za pomoca przerwania. Oto on: #include <avr/io.h> #include <avr/interrupt.h> #include <avr/signal.h> SIGNAL (SIG_OVERFLOW2) { TCNT2 = 0x00; PORTD ^= _BV(PD3); } int main (void) { sei(); DDRD = 0x08; PORTD |= _BV(PD3); TCNT2...
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...
Zacząłbym od sprawdzenia zasilania - czy tam gdzieś coś nie zaczyna siać. Konieczne sprawdź WatchDog a czy nie jest załączony, a jeśli tak to czy jest prawidłowo obsługiwany. Ze strony software , to w przypadku pisania czegoś w assemblerze częsty błąd dający podobne efekty to niezachowanie jakiegoś rejestru, który jest używany w procedurze obsługi przerwania....
Wkleje plik includowany z obsługa LCD, który stosuje oraz czesc programu głownego: LCS.asm: ;=======================================... ; Obsluga LCD zgodnego z HD44780 dla 8-bitowej szyny danych v1.0 ; Nie obsluguje BUSY flag ani odczytu adresu z LCD ;!!! Znak lub komenda do wyslania do LCD przekazywane sa przez...
Jaki jest okres pomiędzy kolejnymi kasowaniami watch-doga ? Na ogól mozna go ustawić. Nie wiem, czy jest to mozliwe w tym konkretnym procesorze. Ten okres dobiera się wtedy na tyle długi, żeby kasowanie odbywało się w jednym miejscu programu (pętli głównej). Jeśli w programie są pętle oczekiwania na zdarzenie i czas trwania takiej pętli może być dłuższy...
Witam. Przeczytałem cały temat od początku do końca i nie znalazłem dużo informacji na temat PIC. Kilka osób (m.in. McRancor) pisało że woli PIC od AVR. A ja mam pytanie czemu?? Weźmy np popularnego ATmega8 i PIC16F84a. Porównując te dwa procki, PIC (wg mnie) wypada słabo. Po pierwsze cena, brana z jednego sklepu: ATmega 5zł, PIC 9zł. Po drugie ten...
Zwiechy nie tyle arduino co ATmega, wiadomo że najstabilniejszy mikrokontroler to nie jest. Proszę mitów nie powtarzać, tylko poprawnie projektować urządzenia i stosować wersje układów odpowiednie do zastosowań oraz ich parametrów pokazanych w dokumentacji. A sieć paść może zawsze, to da się wykryć wcześniej. Chodzi głównie o serwer który będzie przetwarzał...
A ni jest tak, że włączenie silnika i wogóle pracujący silnik czasami resetuje ci procka? Daj długi delay na początku to szybko to zauważysz. Nie masz włączonego watchdoga którego nie kasujesz? Czy masz dobrze skonfigurowane rejestry od przerwań? Może włączyłeś jakieś przerwanie a nie zrobiłeś jego obsługi? Może nie masz podciągnięcia na wyjściu sterującym...
Faktycznie konieczna była poprawka z in na out ale pisałem z głowy czyli z niczego. Co do wieszania się programu znajdź w sieci init watchdoga oraz zerowanie jego flagi w MCUSR, do tego procesora. Opis w nocie AVR132 na stronie Atmela. Poza tym odblokowałeś przerwanie INT1 a nie widzę w tym fragmencie kodu jego obsługi. N.
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...
'---------------------------------------... '---------------------------------------... '--------WAV PLAYER-----16kHz 8bit mono------------------------------------... '---------------------------------------... '---------------------------------------...
ESP8266 jest ze dwa rzędy wielkości mocniejszy od AVR'ów I tu muszę niestety bardzo surowo odpowiedzieć. Po pierwsze nie rozumie kolega wyrażeń, którymi się posługuje. Po drugie nie zna kolega rzeczywistej wydajności rdzenia Xtensa (są porównania do AVR i STM), po trzecie nie rozumie kolega ograniczeń tego SoC/MCU. A w porównaniu do tych "słabych"...
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...
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...
Witam Na wstępie powiem że nie jestem ekspertem w C. Pisze programik działający na Atmedze16. Mam dwa dwa układy Ram i RTC i muszę się z nimi dogadać przez SPI. I się nie dogaduje. Zeby zapisać cos i odczytać z Ramu muszę zapisać (dla zapisu) kod rozkazu - 8 bitów, adres komórki zapisywanej - 24 bity i dane - 8 bitów. Przy odczycie analogicznie rozkaz,...
No proszę bardzo // Program skompilowany pod AVRStudio 4 // To działa po dotknięciu int0 do plusa // a w praktyce to nawet po dotknięciu końcówką miernika .INCLUDE "m32def.inc" .org 0x0000 rjmp Reset .org INT0addr // ustawienie wektora dla int0 rjmp ob_przerw // -//- .org 0x2a Reset: //wektor dla reset tutaj skacze proc po resecie ldi R24,high(RAMEND)...
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 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 tak, nie zauważyłem, że urządzenie jest odpalane z przycisku, niezbyt jasno to jest opisane. Wydawało mi się, że przerwanie INT0 jest od któregoś z czujników 1-wire. Przykład, który podałem nadaje się raczej do systemu cały czas włączonego. Dodano po 9 Co do czasu wykonywania przerwania to nie będzie trwało 100ms. Tylko dużo, dużo, krócej bo tylko...
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"...
Witam wszystkich! Nurtuje mnie pewien problem z moją ATmegą. Mianowicie, wykonuje projekcik z ATmegą128 w roli głównej na płytce stykowej. Ze względu na dużą ilość Pinów, ATmega jest wlutowana w przejściówkę i poprzez goldpiny a następnie skrętkę podpięta do płytki stykowej, na której składam elektronikę. W związku z tym przewody od mikrokontrolera...
Kwarcu zewnętrznego nie używam, tylko standardowe ustawienia atmegi (1MHz). Próbowałem różnych (ISR i SIGNAL) bo już nie wiedziałem gdzie szukać błędu. Ogólnie używam starszej wersji WINavr. Fcpu widziałem zadeklarowane w delay.h, dlatego drugi raz tego nie robiłem. Co do asm volatile ("WDR"::); łapiąc się wszystkiego co się...
Witam wszystkich, robię prosty układzik na uC atmega. Zadaniem go będzie odczyt temp z czujnika ds18b20 i ustawianie zewnętrznego przetwornika dac po spi. Wszystko praktycznie napisałem, bo części programu były wykorzystywane w innych układach, które pracują, z spi problemu nie ma, z odczytem ds też. Ale chodzi o to, żeby cały układ pobierał jak najmniej...
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...
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 |=...
Jeżeli "masz do budzenia" tylko Timery to polecenie-tryb POWERDOWN odpada, ponieważ wybudzić można tylko poprzez układu WATCHDOG, zewnętrzny sygnał reset lub za pomocą zewnętrznego sygnału przerwania. Tryb IDLE nadaje się. Usypiasz poleceniem IDLE a budzisz dowoolnym przerwaniem. Pozdrawiam.
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...
Przydatne będzie wyposażenie układu w alarm dźwiękowy, uruchamiający się gdy temperatura wody w piecu przekroczy 90°C. Procesor sterujący pompą powinien pracować bezawaryjnie, tzn powinny być wyeliminowane wszelkie możliwości zakłócenia lub przerwania jego pracy (zasilacz powinien być podłączony do tego układu a nie dostarczany z daleka, pompa powinna...
calego kodu nie bede wklejal... bo ma ponad 3000 linii w kilku modulach... timery: // Timer/Counter 0 initialization // Clock source: System Clock // Clock value: 31,250 kHz // Mode: Normal top=FFh // OC0 output: Disconnected TCCR0=0x04; TCNT0=0x00; OCR0=0x00; // Timer/Counter 1 initialization // Clock source: System Clock // Clock value: Timer 1 Stopped...
Fragmenty kodu: [syntax=basic4gl]$regfile = "m32def.dat" $crystal = 8000000 $hwstack = 256 $swstack = 256 $framesize = 256 Config Lcd = 16 * 2 Config Lcdpin = Pin , Db7 = Pa.0 , Db6 = Pa.1 , Db5 = Pa.2 , Db4 = Pa.3 , E = Pa.4 , Rs = Pa.5 Config Sda = Portd.1 Config Scl = Portd.0 Config 1wire = Portc.2 Config Pind.4 = Output 'oc1b niebieskie Config Pind.5...
Witam, W dokumentacji dowolnego mikrokontrolera ATmega z łatwością można odnaleźć tablicę z wektorami przerwań, np. taką: 1 $0000 RESET 2 $0002 INT0 External Interrupt Request 0 3 $0004 INT1 External Interrupt Request 1 4 $0006 INT2 External Interrupt Request 2 5 $0008 INT3 External Interrupt Request 3 6 $000A INT4 External Interrupt Request 4 7 $000C...
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...
1. Czy nie powinieneś ustawić pinów przerwań jako wejśc (ja dla pewności tak robię) 2. Ustaw w rejestrze MCUCR jaki ma mieć charakter (na stan lub na zmianę stanu). 3. Sprawdź, czy przewód z pinu przewania nie "wisi" w powietrzu. Obsługa przerwań działa znakomicie i łapie wszelkie stany z powietrza. 4. Jak już ogarniesz to pewnie będziesz musiał zrobić...
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...
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...
Mam prośbę do tych znających lepiej BASCOMA, o przeanalizowanie tego kodu. Program po pewnym czasie wysypuje się. Temperatura co jakiś czas waruje. Podprogramy działają, ale całość nie chce współpracować. Z góry przepraszam za jakość kodu. [syntax=vb]'--------------------KONFIGUR... $regfile = "m16def.dat"...
Witam, najpierw program: .include "m88def.inc" ; procek ustawiam na prace z wewnętrznego oscylatora 8MHz ; tryb sleep ustawiam jako POWER DOWN ; PD3 (INT1) jest przyciskiem (wejscie) ; PB1 (OC1A) to wyjscie sterujace reglem ; PB5 to wyjscie sterujące MOSFETami zalaczajacymi zasilanie regla ; PD5 (OC0B) to wyjscie sterujace LEDem ; ADC6 - pomiar pradu...
1. Pętla DO LOOP. Czy musi być użyta zawsze w programie i co powinno być objęte ta pętla ? Nie trzeba używać DO..LOOP. Wtedy program będzie jednoprzebiegowy: uruchomi się i zakończy. I teraz od Ciebie zależy czy zakończy się poprawnie czy też przeleci przez to co nie powinien np. podprogramy, czy dane. Dlatego zawsze należy wskazać koniec programu...
Pętla ma tą drobną wadę, że jeśli w nią wrzucisz jakieś funkcje warunkowe to nigdy nie wiesz, co jaki czas się dokładnie obróci :) takie tam. Przy jednym warunku to jeszcze nic, ale już przy n rozgałęzieniach, policzenie najgorszego możliwego czasu obrócenia pętli staje się utrudnione. Bo jak warunek nie spełniony to sprawa krótka skok, a jak spełniony...
http://obrazki.elektroda.pl/1899461000_1... Ostatnio zaprojektowałem na potrzeby dyskoteki switch DMX. Wykonałem 8 sztuk, jak na razie pracują bez zarzutu. Nie publikuję płytki, bo wymaga dopracowania, a nad publikacją wsadów i źródła się zastanowię. Co do PCB, to i tak zaraz dostaną mi się pewnie słuszne baty za zbyt małe odstępy części...
Podłącze się pod temat: Postanowiłem pobawić się trochę dalmierzem opartym na SRF05 i korzystając z innego rozwiązania przekodowałem (ze zrozumieniem) program, który ma za zadanie pokazywać odległość od przedmiotu. Istotą mojego problemu jest to, że atmega32 idzie w maliny i nie bardzo wiem dlaczego... pomiary wykonują się, ale czasami procek wiesza...
Musisz podłączyć przycisk do wejścia przerwania zewnętrznego (INT0, lub INT1). Przerwanie musi być ustawione na wyzwalanie poziomem. Wyzwalanie zboczem nie działą w trybie power-down. Inne rozwiązanie to uruchomienie watchdoga, który co pewnien czas będzie resetował uC, a ten zaraz po resecie będzie sprawdzał stan przycisku i jeżeli przycisk nie będzie...
Wprowadzić uC w tryb POWER_DOWN możesz zawsze, tylko jakie będą tego efekty, jak mówi datasheet: -zatrzymywany jest oscylator zewnętrzny - z trybu tego uC może zostać wybudzony poprzez zewnętrzny reset, reset od watchdoga oraz reset od układu Brown out detector,zewnętrzne przerwanie od INT0/INT1 - Ten tryb uśpienia w zasadzie zatrzymuje wszystkich generowanych...
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...
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.
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 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?...
Rób powerdown a potem go wybudzaj przerwaniem na int0 np. nie dziw się, że po watchdogu masz program od nowa;) To logiczne. Jak rozumiem zasilanie LCD odłączasz oczywiście? (na te 2sekundy)...
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...
witam. może ktoś wie o co chodzi i poradzi jak zrobić: timer1 na wartości preskalera 1 lub 8 działa normalnie (tzn. w całym swoim zakresie wywołując przerwanie od przepełnienia). gdy zmieniam preskaler na 64 i więcej timer1 przestaje działać. popatrzyłem sobie do ilu dolicza timer. wiec przy preskalerze 256 jest to 3216, a przy preskalerze 1024 - 804....
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...
Wit mam. Piszę pewien program. Przed wejściem do pętli głównej programu napisałem funkcję w której użytkownik wstępnie nastawia parametry programu głównego. Problem polega na tym, że przy naciskaniu klawiszy program wychodzi mi z pętli głównej programu do funkcji w której nastawiane są parametry. Funkcja w której mają być nastawiane parametry okrojona...
:arrow: matroks Z Power-Down można wyjść przerwaniem aktywnym stanem, nie zboczem - odsyłam do datasheet-a. Ponadto ma znaczenie czas trwania tego poziomu - stan jest samplowany dwukrotnie wg. timera watchdoga. (datasheet, strona 66, drugi akapit)
watchdog przerwanie atmega watchdog watchdog atmega
crown japan samsung ps50a410c1 renault sterowanie kierownicy
opornik napinaczy kenwood dnx7210bt
Opis pinów sterownika BOSCH 0 281 010 082 Jak przykleić odpadniętą gumkę klawiszową w laptopie?