Stąd, że porty D2 i D3 są portami dedykowanymi do wprowadzenia zewnętrznych przerwań. Spójrz datasheeta megi8.
Stosy to dla mnie czarna magia, wiem tylko, że każdy przeskok wymaga zapisania adresu zwrotnego, ale nic poza tym :oops: No przy takim podprogramie to 1 megabajtowy stos to za mało :D, to się chyba nazywa rekurencja: [syntax=basic4gl]Petlapomiarowa: If Impulsy < 15 Then 'Jesli nie ruszono, wyswietlaj dalej napiecie Gosub Pomiaradc If Konwersja >...
O i dzięki schematowi od razu widać błąd: http://obrazki.elektroda.pl/6463515500_1... Przyciski podłącz do GND, a nie Vcc, a w programie włącz pull-up, i ustaw reakcję INT na zbocze opadające. Tylko czy wiesz dlaczego Twój układ nie działał? Osobna sprawa do drgania styków przycisku: http://mikrokontrolery.blogspot.com/2011...
...Symulator pokazuje 1us a mi sie wydaje ze 10us. W tym wypadku , uwierz symulatorowi ;) Piotrek
OK, mam nadzieję, że zegar ustawiłeś w opcjach. Ponieważ muszę wyjść, to dam Ci wskazówki, a resztę wymyślisz sam lub koledzy pewnie podpowiedzą. Gdy pierwsze zbocze drgania styku ustawi flagę przerwania i mikrokontroler wejdzie w funkcję jego obsługi, to zaraz na początku automatycznie kasuje (w tym mikrokontrolerze) flagę przerwania. Ty w swoim programie...
W programie sterowanie diodą D1 jest na porcie B, nie C.
Jaką masz częstotliwość przerwań timera? Testowanie stanu przycisków powinno następować z częstotliwością rzędu 30..50 Hz jeśli pamiętasz tylko jeden stan wstecz. Jeśli masz większą częstotliwość, to albo testuj je w co którymś przerwaniu, albo wsuwaj stan do zmiennej i wykrywaj sekwencję stanów (bitów) np. 1110.
Wyrzuciłem z obsługi przerwania pętle opóźnijące: SIGNAL(SIG_INTERUPT1){ if(bit_is_clear(PINC,PC5)){sbi(PORTC,PC5... else cbi(PORTC,PC5); } Niestety nic nie pomaga. Nadal nie działa. Nie działa , bo ... kompilator nie wie ,co to za wektor SIG_INTE R UPT1.Gdybyś napisał SIG_INTE RR UPT1 , to by wiedział :D Piotrek PS Odpowiednikiem powyższych "zabiegów"...
licznik0 i licznik1 muszą być zadeklarowane jako volatile
Proszę zauważyć że czas pomiaru nie jest tym samym co częstotliwość pomiarów czy czas powtarzania pomiarów. Przy sygnałach zmiennych trzeba dążyć ,by pomiar był możliwie krótki i do tego służy dzielnik przetwornika . Częstotliwość pomiarów i start konwersji można zainicjować dowolnie wybranym zdarzeniem np przepełnieniem licznika czy przerwaniem zewnętrznym.
Zastanawia mnie jeszcze dlaczego nie wykorzystano wbudowanego komparatora atmega8 do wykrywania zera. Zwłaszcza że niewykorzystane piny są. Już drugi raz widzę rozwiązanie na wzmacniaczu zbocza i przerwaniu zewnętrznym.
Włącz co najmniej wewnętrzne podciągnięcie. Gdzie masz konfigurację przerwania, czym jest wyzwalane ? Polecam ujemne zbocze(jak rozumiem, switch do masy ?).
Tego się niestety obawiałem. No cóż, pozostaje mi podłączyć go w inne miejsce. Czy jest obojętne do którego przerwania (INT0 czy INT1) go podłącze? I drugie pytanie dotyczy optotriaka MOC3010. Czy jest jakaś polska dokumentacja? Ewentualnie wyjaśnienie w jaki sposób go obsługiwać aby puszczał mi prąd na wyjście do którego podłączam urządzenie zewnętrzne?
To nie program tu jest problemem a dopasowanie sygnału. Poczytaj o wzmacniaczach operacyjnych i komparatorach. W procesorze zbocze możesz wykryć za pomocą przerwania zewnętrznego.
tak , podłączenie jest prawidłowe jedna mała uwaga jeżeli układ ma służyć tylko do separacji to ok , natomiast jeżeli do innych celów to lepiej wykorzystaj dostępne piny z obsługa przerwania zewnętrznego , ustawiając reakcję na opadające zbocze sygnału
O jakim innym AVR mówisz? Co masz na myśli mówiąc 'wolno'? Zależy mi, aby było obsługiwane na jednym porcie ponieważ mam takie dwie linie a Atmega8 mam tylko 2 zewnętrzne przerwania.
Do jakich pinów podpina się sygnały z enkoder inkrementalnego do Xmegi ? Czy do któregokolwiek pinu i działają one jak zewnętrzne przerwania w Atmega8?
Nie pamiętam, jak działa makro sleep_mode(); ale przecież przechodzisz do trybu uśpienia w przerwaniu od timera a jak wiadomo wejście w dowolną procedurę obsługi przerwania blokuje globalne zezwolenie na obsługę przerwań, wiec prawdopodobnie w chwili uśpienia skutecznie blokujesz także przerwanie zewnętrzne, przez co nie możesz później wzbudzić procesora...
Witam, ustawienie rejestru DDR i PORT na 0 daje wejścia pływające (ATmega8 nie ma rezystorów ściągających do masy, tylko podciągające do plusa). Tak jak jest teraz łapiesz kolego zakłócenia. Należałoby albo dodać zewnętrzne rezystory między przyciskami a masą lub zmienić położenie przycisków (między pinem a masą) i włączyć wbudowane rezystory. O volatile...
Po pierwsze do ATmegi 8 wepchnąć RTOS to może być ciężko... chyba, że KaRTOSa. Po drugie moim zdaniem to wystarczy napisać normalną procedurę obsługi przerwania zewnętrznego i tyle.. Program pracuje cały czas, dostaje sygnał z pinu EXT0 i zabiera się za obsługę instrukcji w przerwaniu..
Witam. Czy byłby ktoś w stanie pomóc mi napisać prosty program, w którym wykorzystuje przerwanie zewnętrzne? Podłączyłem switch z jednej strony do Vcc (takie jest założenie daleszego rozwianięcia zadania) a z drugiej do Portu PD2. Proszę o pomoc oczywiscie z pisania w jezyku C. Może znajdzie się ktoś wyrozumiały, ponieważ większość stron, które przeglądałem...
Cytat z pomocy BASCOMA AVR: "W trybie Power Down, zewnętrzny oscylator zostaje zatrzymany. Użytkownik może przywrócić działanie procesora tylko za pomocą: układu WATCHDOG, zewnętrznego sygnału reset lub za pomocą zewnętrznego sygnału przerwania."
Witam. Mam problem z przerwaniami w atmega8. Wcześniej nie potrzebowałem przerwań więc to zagadnienie mnie nie interesowało. Potrzebuję wywołać przerwanie zewnętrzne int0 które uruchomi timer1, a ten zacznie odmierzać czas. Proszę o pomoc. Pierwsza zasadnicza uwaga to nie zauważyłem w programie konfiguracji interruptu0- coś np. takiego: config INT0=...
Wystarczy nawet dioda, dzielnik i sprawdzanie obecności impulsów choćby nawet zewnętrznym przerwaniem jeśli jest wolne.
Obsługę przycisków też zrób w przerwaniu timera, jak radzi BlueDarco - nie ma sensu obsługa przerwania zewnętrznego, bo zniszczy Cię drganie styków...
Wynika z tego że wewnętrzne oscylatorki są kiepskie. Tak, by być pewnym transmisji należy stosować zewnętrzne kwarce.
Bo jak ma działać? Widać kolega nie do końca rozumie mechanizm przerwań, skoro czeka na przerwanie INT0, a włącza przerwanie przepełnienia Timera0. Adresem przerwania przepełnienia Timera0 jest OVF0addr, a nie INT0addr. Przerwanie od INT0 wyzwalane jest ZEWNĘTRZNIE zboczem lub stanem na fizycznym wejściu INT0 mikrokontrolera, a nie Timerem. Skąd ten...
Autor chce uzyskać SLEEP_MODE_PWR_DOWN, a z tego tryby wybudzi go jedynie watchdog lub przerwanie zewnętrzne (zależnie od uC).
Bity w MCUCR określają na co będzie reagować przerwanie zewnętrzne... Zmiana stanu, opadające lub narastające zbocze więc jest to jak najbardziej potrzebne... SIGNAL (INT0_vect) - obsługa zewnętrznego przerwania INT0... SIGNAL (TIMER0_OVF_vect) - obsługa przerwania od przepełnienia timer0... Co do portu... Jak na mój gust powinno być PORTC = !PORTC;...
Może jakiś wyłącznik krańcowy. Szyba dochodzi do końca w skutek czego zwiera wyłącznik krańcowy co powoduje wywołanie przerwania zewnętrznego na atmedze i ona wyłącza silnik.
Sygnał przerwania może być wywołany z jednego z peryferiów (np wbudowane liczniki, adc, twi itd), albo właśnie przez nóżkę procesora (w wypadku atmega8 bodaj są 2 zewnętrzne przerwania) Co do arduino pewnie musisz użyć biblioteki.
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...
Wykorzystujesz przerwanie zewnętrzne od Int0? W takim wypadku odczyt adresu i komendy wykonaj w podprogramie obsługi tego przerwania.
Dokladnie, musisz ustawic stos. U mnie struktura wygladala tak .include "m8def.inc" .org 0x00 rjmp reset RESET: ldi R16,low(RAMEND) out SPL,R16 ldi R16,high(RAMEND) out SPH, R16 main: rjmp main
Piny, które jednocześnie służą jako źródło przerwań zewnętrznych. Oznaczane są INT0, INT1, .... itd. ATmega8 ma o ile pamiętam 2 takie wyprowadzenia. Aby móc z nich korzystać trzeba oczywiście wszystko odpowiednie pokonfigurować. Powodzenia! ;)
Witaj, No save spokojnie możesz użyć.... pod warunkiem, że nie korzystasz w obsłudze przerwania z instrukcji Bascoma bo jeśli tak to nie odkładając rejestrów na stos, zgubisz ich wartości i w najlepszym przypadku będą się działy różne rzeczy. Ja bym napisał wstawkę w asemblerze odkładając wcześniej na stos używane rejestry w tym SREG. Możesz też użyc...
Bo nie tak się używa przerwań zewnętrznych. Można po pojawieniu się przerwania od zbocza narastającego wystartować timer, w przerwaniu zmienić na zbocze opadające i gdy pojawi się zbocze opadające zatrzymać timer, odczytać jego stan do zmiennej volatile wykasować i ponownie ustawić na zbocze narastające. Mozna też wykorzystać oba dostępne przerwania....
Mój problem polega na tym, że jak dodamy po Reset Portc.5 a przed Loop polecenie Wait 1 czy np. Waitms 1000 program odczytuje błędne dane jednak zawsze dla każdej z kart takie same. Czy to może mieć z wiązek z użytym przerywaniem? Chodzi o to aby odczytywał jeden raz ID karty i ciągłym przyłożeniu, a nie jak jest teraz że co 100ms bo tak moduł przesyła....
Niestety za mało znam gcc od podszewki żeby coś poradzić. Wydaje mi się że pliki startup są już w postaci plików OBJ (.o) nie wiem gdzie szukać źródeł. Po pierwsze poruszyłbym ten temat na AVRFreaks. Wygląda że podobna sytuacja była również z innymi ATMEGAmi: https://www.avrfreaks.net/forum/atmega80... Wysłałem zapytanie...
Dodatkowy wpływ na błąd ma niedokładność częstotliwości generatora kwarcowego. Błąd w sekundach na dobę, wyraża się wzorem: \Delta=86400*(1-\frac{fwzr}{f}) \Delta - błąd w sekundach na dobę (wartość ujemna oznacza spóźnianie się) fwzr - częstotliwość wzorcowa (czyli to co ma być np. 4000000 Hz) f - częstotliwość rzeczywista kwarcu lub generatora kwarcowego...
Ok, myślałem nad samą diodą Zenera, ale jakiś ogranicznik prądu w postaci rezystora też się przyda. Muszę teraz przemyśleć zliczanie impulsów za pomocą przerwań zewnętrznych tak jak doradziłeś mi w innym temacie.
No dla mnie tym następnym krokiem był przerzutnik T :) Również polecam :) Potem, sugeruje proste przerwania zewnętrzne, timer (tu duze pole do popisu, mozna sobie zrobić na nim mruganie diody, przyciskami sterowac częstotliwość), potem sterować jasnością z PWM. Dalej proponuje pobawić sie wewnętrznym eepromem, przydaje sie w dalszej nauce, potem zewnętrzny...
Nie wiem jakiego uśpienie używasz, ale zarówno z trybu Power Down i Power Save można wyjść za pomocą przerwania zewnętrznego ale zgłaszanego poziomem (a nie zboczem, tak jak masz w porgramie). Czytaj notę, rozdiał Power Mangament and Sleep Modes.
Oczywiście uint8_t - zjadłem '8'. Jeśli zmienna jest używana tylko wewnątrz procedury, to powinna być zadeklarowana wewnątrz procedury. Jeśli taka zmienna ma "przeżywać" czas, kiedy procedura nie jest aktywna (czyli zachowywać wartość pomiędzy wywołaniami), to musi być zadeklarowana z atrybutem static. Ten sam atrybut oznacza coś zupełnie innego w odniesieniu...
A ogólnie działa serwo na funkcji delay ? U mnie serwo kiedyś na takich czasach delay nie działało, dopiero jak dałem kilka małych delay to zaczęło chodzić. Lepiej odmierzać czas za pomocą Timera . http://www.robotyka.net.pl/category/arty... -opisane tu są zarówno Timery jak i przerwania zewnętrzne z przykładami, może pomoże.
Witam. Mam takie oto zadanie: po wciśnięciu przycisku ma zacząć się odliczanie czasu, po puszczeniu przycisku koniec odliczania. Wartość na bieżąco wyświetlana na LCD Z obsługą LCD spokojnie dam sobie radę, ale z timerów i przerwań jeszcze nigdy nie korzystałem. Prosiłbym o linka jeśli ktoś widział gdzieś podobny program albo opis konfiguracji timerów...
Tego nie widziałem. Znalazłem za to informację że dotyczy to rezonatora pracującego jako generator wytwarzający główny sygnał zegarowy: http://obrazki.elektroda.net/9_123515576... A po drugie, akurat w ATMega8 jest błąd w krzemie i te wewnętrzne kondensatory nie działają (tzn. FuseBit ich nie włącza). Użycie rezonatora jako źródła sygnału dla...
Zły pomysł, zły kod. Użyj jednego timera w trybie zliczania impulsów zewnętrznych i podłącz wyjście wentylatora do jego wejścia. Drugi timer zaprogramuj na zgłaszanie przerwań co 1 sekundę (timer 0 tego nie potrafi), w procedurze przerwania odczytaj wartość licznika, wyzeruj licznik i wyświetl wartość. Nie jest to idealne rozwiązanie, ale o niebo lepsze...
Pewnie pozostanie Ci tylko allegro lub sklepy internetowe. W moim eks-wojewódzkim mieście też ciężko coś bardziej specjalizowanego kupić. Edit. W temacie uszkodzonego procka. Może przerwanie zewnętrzne na PD5, a w przerwaniu steruj i czytaj licznik T0 ,,na piechotę"?
To w takim razie musisz dołączyć schemat może? skoro to mają być przerwania zewnętrzne. Co ty masz tam przyłączone do PD2 i PD3? P.S. Sorry ja odpadam - nie rozumiem po co taki kod. Skoro nie masz zainicjowanych przerwań?
Otóż zliczam czas na timerze 2 i co 1 sekundę generuje mi przerwanie obsługiwane w procedurze signal. Jednak gdy jestem w menu które wywoływane jest za pomocą przerwania: ISR_BLOCK, czas nie jest liczony. Jak zrobić by priorytet przerwania Timera2 był większy niż przerwania zewnętrznego. Nie mogę ustawić ISR_NOBLOCK bo zapcham szybko stos. Czy w AVR...
Dzięki Charly za odpowiedź. Mam jeszcze jedno pytanie, czy wtedy sygnał z tego pinu mogę podłączyć do T0, tak, aby pin ten działał jak przerwanie zewnętrzne?
Witam. Mam problem z przerwaniem zewnętrznym Int0 w Atmega8. Chodzi o to, żeby po naciśnięciu przycisku podłączonego do końcówki Int0 wykonała się procedura obsługi przerwania. Napisałem wręcz helpowy program i nie działa. Jest takie coś, że od razu po włączeniu procka wykonywane jest przerwanie (na dodatek przez cały czas). Próbowałem też wyłączyć...
Witam! Moje pytanie dotyczy przerwań zewnętrznych INT0 i INT1. Czy istnieje możliwość przyporządkowania ich do innych wyprowadzeń układu czy są sztywno "przymocowane" do pinów 4 i 5? Pozdrawiam.
Fakt trochę sie zagalopowałem z tym wywodem :/ Jednak w ten sposób zdefiniowane wejście które może być źródłem przerwań zewnętrznych będzie działać na zbocze rosnące czyli gdy podasz na nie VCC. Oczywiście po zdefiniowaniu przerwań. Pozdrawiam
Problem teoretycznie rozwiązany. Dokonałem zmiany takiej, że wyjście z LM324 nie powoduje zgłoszenia przerwania w atmedze, tylko atmega ciągle sprawdza stan linii przy pomocy PINx. Jednak z ciekawości jeśli ktoś wie dlaczego, metoda z użyciem przerwania nie zdała egzaminu to proszę o sugestie. Myślałem że te przerwania zewnętrzne są właśnie po to żeby...
Witam A jak masz skonfigurowane przerwania INT0 i INT1? Z power down można wyjść tylko poprzez przerwanie zewnętrzne wyzwalane poziomem. A poziom wyzwalający przerwanie musi się utrzymywać do czasu wybudzenia mikrokontrolera z trybu power down. Jacek
Oczywiście że jest, podpinasz 1-wire pod wejście przerwania zewnętrznego, pdf z dokładnie opisaną transmisją 1-wire w ds1820 i jedziesz z programem.
....... panie autor.... zastanów się, nad tym co się dzieje na twoim wejściu INT ??? Przerwanie sobie jakoś tam zainicjalizowałeś i ok, ale co masz na wejściu ??? bo wg mnie - trzeci stan Hi-Z. Czyli napięcie ci pływa - brak podciągania .... i dziwisz się, że przerwanie jest wciąż wyzwalane nawet bez naciskania przycisku? ..... Podciągnij wejście albo...
Zmniejsz rozdzielczość, tworząc na przerwaniach programowy PWM. Przy 5 bitach wyciśniesz ponad 200kHz. Jak koniecznie ma być coś zewnętrznego to nawet NE555 można kontrolować załączając odpowiednie wartości rezystancji/pojemności. http://lmgtfy.com/?q=external+PWM+contro...
http://obrazki.elektroda.pl/2159092800_1... Witam, mój pierwszy projekt elektroniczny na Elektrodzie i w ogóle :) Licznik rowerowy widoczny na poniższym zdjęciu. Pomysł zrodził się w zeszłym roku, właściwie bez żadnego powodu. Zaczęło się od zabawy układami AVR - przez diody i przyciski, potem ekran z telefonu. W końcu padła bateria...
Jak jest z dokładnością zegarka RTC w Atmega8? Słyszałem plotki, że nie chodzi to zbyt idealnie. Potrzebuję zrobić zegar do zliczania tylko dni i zastanawiam się czy jest sens stosować zewnętrzny układ RTC. Układ musi mieć podtrzymanie zegara z baterii/kondensatora w przypadku zaniku zasilania. Śmiało możesz użyć np. Timer1 w trybie CTC jako generatora...
Jak dla mnie to przede wszystkim zamiast deley() wykorzystać jakiś zew. zegar RTC usypiać procka i wybudzać przerwaniem z RTC Nie trzeba używać zewnętrznego RTC - wystarczy podłączyć kwarc i użyć przerwania z wewnętrznego timera. Nie wiem, jak w przypadku Arduino, ale zastosowany w nim mikrokontroler to chyba ATmega8, więc jest taka możliwość (o ile...
...jakieś pomysły (można to wykonać na interruptach ...czymś jeszcze ..?) No właśnie , przerwania zewnętrzne.Wymyślono je właśnie po to , by sygnalizować procom zdarzenia zewnętrzne , których wystąpienia nie da się przewidzieć w czasie ( i być może przestrzeni :D ).Jeśli chodzi o stronę mechaniczną takiego czytnika , to wystarczy troszkę ruszyć główką.Przypomnę...
jak chcesz takie duze czestotliwości mieżyć to musisz użyć timera żeby liczył zewnętrzne impulsy, wtedy drógim timerem wyzwalasz przerwanie co określony czas (im dłuższy tym lepszy bo pomiar dokładniejszy) liczysz ile było ilmpusów z zewnątrz w okreslonym czasie. wydaje mi się że tą metodą dało by sie mieżyć nawet do 100Mhz ale jest jedno zalożenie...
Ja bym proponował na początek przerwanie zewnętrzne INT w którym liczysz impulsy, oraz przerwanie timera w trybie CTC co około 1s w której jak kolega (at)bochnio wspomniał będziesz zerować licznik. Kolejny krok to mniej więcej tak:[syntax=c]if(licznik > 6) POTRB |= (1<<PB0); // ustaw stan wysoki gdy przekroczy wartość else POTRB &= ~(1<<PB0);...
Dziękuję za podpowiedzi:) Wstawiłem konda 100nF, próbowałem wyzwalać przerwanie na niski stan jak i na zbocze opadające i dalej to samo.. Czy jeśli napiszę taki kod: ISR(INT1_vect) { _delay_ms(100); while(bit_is_clear(PIND,PD3)... LCD_Clear(); LCD_WriteText("Co tam!"); _delay_ms(1500);...
Nie jestem pewien co do połączenia układu MBI5026 do Atmegi8 http://www.datasheetcatalog.org/datashee... Czy jeśli podłączę w ten sposób: GND->GND VDD->+5 CLk->SCK LE-> wolny port OE-> wolny port SDO-> zostawiam nie podłączony bo nie używam drugiego układu MBI5026 SDI-> wolny port to będzie dobrze? Dodano po 8 Jednak SDI nie może być...
Zrób sprawdzanie portów do których podpięte są przyciski w pętli głównej, albo w podprogramie obsługi przerwania Timera0 - po wyświetleniu cyferek na wyświetlaczach. Zawsze pozostaje jeszcze Timer2 :D, ale jak zapuścisz przerwania z 3 timerów i do tego jakieś zewnętrzne int to mogą być problemy...
Jeżeli stabilność samego rezonatora kwarcowego jest dla danego zadania za mała, to oczywiście żadne rozwiązanie zależne od niej nie da pożądanego efektu. Wtedy należy użyć zewnętrznego generatora o dużej stabilności. Wykorzystują one specjalnie dobierane rezonatory pracujące w znacznie bardziej rozbudowanych ale i o wiele stabilniejszych układach. Przy...
Przewód ma ze 60cm. Nie rozumiem dlaczego nie działa pull down, ale pull up zewnętrzny też mi coś nie funkcjonował. Cały czas była masa.
Rzeczywiście to pomogło. Zastanawia mnie, dlaczego jak licznik był w trybie normalnym wywoływane było przerwanie... Bo przerwanie jest od porównania. Gdy TCNT1 = OCRA1 to jest wywoływane przerwanie. A wytłumaczysz mi dlaczego OCR1AL ma wynosić 124, a nie 125? Bo tak jest napisane w datasheet. Zresztą zauważ że taka sytuacja jest sensowna. Zwróć uwagę...
Witam! Czy istnieje procedura odczytu sygnału z pilota SONY będąca odpowiednikiem GetRC5 (dla pilotów RC5)? Przeglądałem elektrode, suport na www firmy MCS ale wszystko co znalazłem to dosyć rozbudowane procedury. Poszukuje też materiałów na temat sposobu kodowania IR SONY i ewentualnych innych przykładów procedur odczytu w bascomie. (Procek to ATMEGA8...
Pierwszy i bardzo poważny problem zauważyłem w funkcji TIMER1_COMPA, jest nim linijka rjmp uspij. Gdy się wykona, to przerwania pozostaną zablokowane, oraz kilka bajtów na stosie zostanie uwięzionych - głównie adres powrotu z przerwania. Można temu zaradzić poprzez wstawienie pop + pop + sei przed rjmp. Drugi problem, to karygodna pętla główna - dławienie...
Drgania styków kontaktronu postaram się wyeliminować sprzętowo. Nie odpuszczaj, zrób to programowo, chociażby po to by się tego nauczyć na przyszłość. To jest proste. Weź nie żartuj. Nie da się tego zrobić rozsądnie przy wykorzystaniu przerwania zewnętrznego i timera. Sprzętowe rozwiązanie w tym wypadku jest optymalne.
Nie działa Ci, bo nie przeczytałeś dokumentacji... http://obrazki.elektroda.net/0_118799421... Flagi przerwań czyści się przez wpisanie do nich logicznej jedynki. Trochę może paradoksalnie to wygląda, ale ma swoje logiczne uzasadnienie. Chodzi o to, że czyszcząc flagi w ten sposób da się to zrobić o wiele szybciej i co najważniejsze - bezpieczniej....
Każdy uK da się wprowadzić w stan obniżonego poboru mocy (to się chyba IDLE nazywa) i wybudzić zewnętrznym przerwaniem. Więcej w dokumentacji na www.atmel.com. Pozdrawiam.
To dwa sygnały na timery jako liczniki a trzeci sygnał na przerwanie zewnętrzne. A trzeci timer jako zegar.
Witam Do wyjść klawiatury wpinasz równolegle bramkę NAND 4-wejściową (zakładam klawiatura 4x4), a wyjście bramki do wejścia z przerwaniem zewnętrznym (INT0, INT1). W momencie naciśnięcia przycisku z klawiry na wyjściu bramki będzie "1" które wykrywasz (lub zbocze) na INTx. W obsłudze przerwania sprawdzasz klawisz jak normalnie.
Przerwanie TIMER0_COMP_vect, które było użyte w przykładzie od piotrva zastąpiłem TIMER2_COMP_vect. Taktowanie procesora w fusebitach ustawiłem na 4MHz- wystarczające? Mruganie dwukropka zrobiłem jako zwyczajną pętlę(pewnie powiecie że trzeba też wrzucić to w przerwanie). Nie wiem co z ustawianiem godziny. Może zostać w tym miejscu, w którym jest? Wszystkie...
NP: IF A and B and C then coś tam się dzieje end if A B C to klawisze ( piny porty zmienne ) Pozdro! I to powinno dziać się w obsłudze przerwania, jeżeli ma to się rzeczywiście natychmiast stać. Klawiaturę podłącz tak, aby po wciśnięciu dowolnego klawisza generowała określony stan, linię z tym stanem podłącz do pinu zewnętrznego przerwania w kontrolerze,...
Jeszcze chyba potrzebne Enable Timer1. Poza tym, nie wiem po co masz ustawiane Edge, tu nie chodzi o wyzwalanie zboczem przerwania zewnętrznego. Poza tym nie definiujesz preskalera i po wyświetleniu wyniku warto byłoby wyzerować timer bo zacznie liczyć od tego co skończył, chyba, że tak chcesz.
Witam. Jestem obecnie na etapie budowy stacji pogodowej. Po pokonaniu problemów ze stacją bazową, nadszedł czas na budowę czujnika zewnętrznego. Będzie się on składał z mikrokontrolera AtMega88PA, czujnika SHT11, nadajnika RTFQ2 i czujnika mierzącego prędkość wiatru (kontaktron lub dioda + fototranzystor, jeszcze nie zdecydowałem). Czujnik będzie zasilany...
Witam! Mam pytanie odnośnie budzenia uP AVR. Z trybu POWER-DOWN da się wyjść m.in. poprzez przerwania INTx. Do ATmega8 chciałbym podłączyć "klawiaturę" zrobioną za pomocą 7 tact-switch'y i kodera 8 na 3 serii '148. Koder ten posiada wyście EO sygnalizujące wystąpienie na którymś z wyjść zmiany stanu (wciśnięcie przycisku). Chciałbym to wyjście podpiąć...
Oj przeczuwam kłopoty, piszesz że przesiadasz się z małego AtMega na AtMega128, a tam niektóe rejestry mają zmienione nazwy lub wręcz niektóre bity są w innych/nowych rejestrach. dla AtMega8..32 działa coś takiego #define GLOBAL_INT_ENA()asm("se... #define GLOBAL_INT_DIS()asm("cl... #define INT0_ENA()...
Diody masz podpięte bezpośrednio pod porty ATmega? Jeśli tak to lepiej dołóż sobie oporniki aby nie spalić wyjść ATmegi. Bezpośrednio przy procku daj kondensator 100nF. Przed stabilizatorem np. 1000uF, a za stabilizatorem 100u (to i tak za dużo, ale lepiej więcej niż za mało). Zliczanie zrealizowałbym w taki sposób: - Odpalić któryś z wewnętrznych timerów...
badanym urządzeniem jest czujnik ruchu z odświerzacza powietrza, który po wykryciu ruchu zmniejsza napięcie w okolice 0V ale przez bardzo krótki czas Przy dotknieciu PC5 palcem (czujnik podłączony) odczytywane wartości są z przedziału 190-195 lub 255. Zdecydowanie lepiej byłoby wykorzystać komparator do tego. Czy ten czujnik wystawia jakieś napięcie,...
Tylko dalej nie rozumiem w jaki sposób mi pomoże zewnętrzne przerwanie i w jakim celu mam w nim sprawdzać czy jest na nim stan niski?
Zgodnie z dokumentację na stronie 4: http://www.atmel.com/dyn/resources/prod_... Przerwanie generowane jest gdy: The TWINT Flag is set in the following situations: After the TWI has transmitted a START /REPEATED START condition After the TWI has transmitted SLA+R/W After the TWI has transmitted an address byte After the TWI...
Ale nie blokuje przerwań. Przycisk przenieś na PD2 lob PD3, ustaw zezwolenie obsługi przerwań i przerwania zewnętrznego, ustaw obsługę tego przerwania np. on INT0 ustaw_flage ustaw_flage: flaga=1 return i wpisz zamiast: "If Pinb.0 = 0 Then" "If Pinb.0 = 0 or flaga=1 Then" P.S. Ale obsługi Timerów powinieneś się tez nauczyć.
W realu wyświetla sie 0 i nic wiecej. Zgodnie z moimi wyliczeniami 8000000 -taktowanie kwarcu dzielone przez 256 -Timer0 jest 8bitowy, dzielone jeszcze przez 256 - prescaler, zliczone raz na 122 razy daje ok 1s. Czy licze coś nie tak? Zresztą nie chodzi mi o czas a o samo działanie timera bo pilnie potrzebuje go do projektu. Przerwania zewnętrzne mi...
Za bardzo nie jestem praktykiem w C (w asm nie muszę się zastanawiać nad winą kompilatora, jak coś nie działa to tylko z mojego powodu... :}), ale widzę, że miksujesz starą nomenklaturę nazewnictwa obsługi przerwań i nową : http://www.nongnu.org/avr-libc/user-manu... Od nieczytelnego makra _BV proponuję też odejść i używać...
nproton Rozumiem dobrze. Ja chcę zdekodować 2 kanały z ppm które dochodzą już do serw a nie cały sygnał ppm. Jak zobaczysz ze swojego wykresu zmienia się ich czas trwania. Program już działa bardzo dobrze, jutro go wstawię dla potomnych. Mam jeszcze zagwostki: 1) Czy da się jakoś zmuxowac/powielić przerwania od wejść zewnętrznych? Jak bym chciał nie...
One mają trochę różnic. M.in. różnią się pamięcią Flash, EEPROM, SRAM czy ilością zewnętrznych przerwań. Szczegółów szukaj w dokumentacjach producenta. Raczej mało prawdopodobne że będziesz mógł bez przeszkód zamienić te dwa µC.
Witam Czy jest możliwe wywzolenie zewnętrznego przerwania na zbocze opadające/narastające na porcie innym niż INT0/INT1? Jeśli tak to jak? W dokumentacji doczytałem się że wyzwolenie przerwania na zbocze opadające/narastające jest możliwe tylko na INT0/INT1 natomiast wyzwolenie przerwań na innych portach PCINTX działa na zasadzie wykrycia zmiany na...
Przeczytałem to co jest wyżej napisane i... nie rozumiem co chcesz zrobić :) Co to znaczy: Potrzeba mi zapamiętać max. 4 liczby które będą następować po sobie dość szybko jednak Atmega potrafi je zdekodować bo jak dobrze się przypatrzę to liczby się zmieniają dobrze, i więc właśnie niech ktoś podpowie, co dopisać by procesor zapamiętał liczby i ustawił...
Ok, tylko co jeżeli chciałbym żeby był np taki efekt: dioda świeci 4 sekundy na zielono, pozniej 4 sekundy na czerwono i powiedzmy 4 sekundy na żółto, jeżeli czas świecenia zrealizuję za pomocą funkcji Wait , to nici z obsługi przycisku w petli głównej, jeżeli bym to zrobił przerwaniem zewnętrznym wówczas program najpierw obsługuje przerwanie i sterowanie...
Petros :arrow: :idea: "w obsłudze zewnętrznego przerwania 1 napisałem kod który 256 razy co 100us sprawdza wejście PD3" ... ja na c też się mało znam jak narazie bo piszę tylko w asm lub bascom ale z tego co kolega pokazał - tą swoją procedurę - hmmm rodzi się szereg pytań, jak choćby: - a co z synchronizacją odbieranych kodów? gdzie jest wyłapanie...
Witam, chciałbym prosić o pomoc przy budowie układu wykrywającego dźwięki, a konkretnie odbicia piłeczki pingpongowej. Układ będzie współdziałał z mikrokontrolerem atmega8. Ponieważ zasilanie musi być bateryjne chciałbym żeby atmega była cały czas w trybie uśpienia (PowerDown) i wybudzana za pomocą przerwania zewnętrznego INT0. Przerwanie to miało by...
Możesz użyć procesora który ma obsługę tylu przerwań ile masz kół pasowych. Zdaje się że ATtiny2313 ma możliwość obsługi do 8 zewnętrznych przerwań zatem on by się pewnie nadał, tyle że ma 2kB flash'a i może ci się program w bascomie nie zmieścić
atmega8 zewnętrzne przerwania przerwania zewnętrzne atmega8 przerwania
zresetować pralka indesit koszt naprawa telewizor samsung podłączyć wyłącznik ciśnieniowy
hc900 firmware silnik szczotkowy szeregowy schemat
Peugeot 106 1.5 Diesel - Opis pinów ECU i przekaźnika pompy paliwa Moment dokręcania przewodów paliwa w różnych pojazdach