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. ..............? Czy są jakieś AVR'y mające 4 timery? ........... Pozdrawiam, Bartek Wystarczy ci Atmega48/88/168 Dla 2-ch sygnałów PWM wystarczyłby 1 timer z...
Witam! Mam drobny klopot z przerwaniem PCINT0 w ATMega162. Chce miec przerwanie od 5 przyciskow. Ogolnie przerwanie jest zglaszane i obslugiwane tyle ze nieco chaotycznie. Na co wlasciwie reaguje to przerwanie? to znaczy na jaki stan, niski czy wysoki? (jak dla mnie powinno raczej na niski z racji podlaczenia pull-upa wewnetrznego). I jeszcze pytanko...
Nie rozumiem w ogóle jak to ma działać. Będziesz "świecił" pilotem w IR przez 20s? W oparciu o MCUCSR i bit WDRF można wykryć i zareagować na reset ze strony WD niemniej cały obecny algorytm jest mocno niedoskonały. Równie dobrze można wlutować w miejsce A8 np. Atmegę48/88/168 i skorzystać z PCINT.
Witam wszystkich. Ostatnio wpadłem na pomysł usprawnienia pewnej maszyny, gdzie muszę zbierać informację o częstotliwości a bardziej prędkości obrotowej z siedmiu różnych wałków. I teraz pierwszym pomysłem, który intuicyjnie mi się nasunął były przerwania zewnętrzne ale jest ich zdecydowanie za mało (no chyba, że jakaś wersja ma do dyspozycji ich większą...
Witam wszystkich! Mam problem z przerwaniami PCINT. Używam ich do zliczania impulsów ( do wyświetlania obrotów wentylatora komputerowego). Problem że wynik który otrzymuje jest oo ok 20% inny niż rzeczywiste obroty. Tak samo obroty bardzo skaczą przy ok 1.5k skoki są rzędu 200+/- wciągu 1 sekundy, gdzie wentylator kręci się praktycznie tak samo +/-...
W sumie nie wiem ale nawet jak dało by radę zmusić ten Timer do pracy zarówno jako PWM oraz jako Capture to nic z tego nie będzie bo tryb PWM skraca cykl zliczania do 256 (albo 1024 albo jeszcze jakiejś innej) więc za długich impulsów to nie zmierzysz. Za pomocą Timera0 zmierzysz czas trwania impulsów tak jak każdym innym Timerem. Ale musisz się jeszcze...
Zacznijmy od pytania 1) - oba układy są z tej samej RODZINY, ale nie SERII. rodzina to AVR, potem mamy podrodziny: TinyAVR (np. ATTiny85), MegaAVR (np. ATMega8) i XMegaAVR (to już spore układy jak ATXMega128A1), a potem rodziny (np. ATMega88, 168, 328). I o ile wewnątrz takiej rodziny np. bez problemu kod dla ATMega88 odpalę na atmedze168 i 328, o tyle...
Witam wszystkich, Jest to mój pierwszy post, gdyż dopiero zaczynam przygodę z mikrokontrolerami. Mianowicie mam układ wykorzystujący PCF8574 i gdy wszystko jest podłączone do Arduino Leonardo to śmiga pięknie. Jednak, gdy w Arduino IDE zmienie płytkę na Atmega8 i programator na USBasp, chcąc przenieść moj cały układ na mikrokontroler wywala mi błąd...
(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...
Witam Forumowiczów, Mam problem z ogarnięciem tematu wywoływania przerwań. Nie jest to problem jak je wywołać ale jak je okiełznać ;-) Wygląda to tak: Jest układ na Mega644PA-AU. Po I2C współpracuje z zegarkiem PCF8583, oprócz tego linia przerwania z PCF podłączona jest do portu D6 procka. Klawiatura zrealizowana jest na przetworniku ADC (port A0) i...
Program na ArduinoMega działa bardzo dobrze, więc postanowiłem przenieść go na procesor Atmega 328p - ten sam co w większości płytek Arduino. Układ pracuje na wewnętrznym oscylatorze 8MHz, bootloader wgrany, program też. Pojawił się niestety problem, którego nie potrafię zlikwidować - przerwanie od przycisku powoduje restart procesora... Jeżeli dodam...
Witam! Mam problem ze zrozumieniem działania zewnętrznych przerwań w mikrokontrolerach atmega (avr). Dla przykładu posłużmy się konkretnym osobnikiem - Atmega48. W specyfikacji (strona 64) wyróżniają dwa przerwania INT0 i INT1 i dodatkowo 24 - PCINT23..0. Te 24 przerwania są podzielone na 3 grupy (23..16, 14..8, 7..0), które można włączyć rejestrem...
Witam, złożyłem płytkę, napisałem kod i coś nie działa, narazie podam kod bo płytka śmiga byłbym wdzięczny za sugestie co jest nie tak że to nie chce działać, kod zbudowany po części w CodevisionAVR. Wyświetlacz jest na wspólnej Katodzie stąd mój wniosek że aby zaświecić jakiś segment muszę wysłać 0 na pin, a aby go zgasić 1. Jeżeli źle myślę to poprawcie...
Nieporozumienie w sensie dużo roboty, a do projektu który zakłada minimalizację ilości elementów i maksymalizację prostoty jest to jedno z lepszych rozwiązań, jeżeli zaś chcemy robić jakiś duży projekt to takie modułowe podejście jakie prezentujesz jest jak najbardziej na miejscu. Dlatego napisałem, że inne posiadają PCINT;) Pozdrawiam, GSM
Witam. Problem jak w temacie. Program Hid_Mouse z zestawu v-usb nie rusza. Stosuje inne ustawienia przerwań niż domyślne int0 (używam PCINT0). Zmieniłem też ustawienie pliku usbconfig.h .Nie ma możliwości przełączenia fizycznego do portu int0. Kompilacja w win avr. /* ----------------------- Optional MCU Description ------------------------ */ /* The...
jesli uda mi sie poprawnie zaemulowac sekwencje startowa dla tego urządenia Dwa lata temu przy próbach zrobiłem błąd i próbowałem emulować 27xx na 644 wraz z układami sterującymi 27xx. Wydaje mi się że sama emulacja 27xx powinna zadziałać, a potem ewentualnie rozbudować o układy sterujące na PCINT.
Coś takiego znalazłem. Co prawda na Atiny ale można przerobić. [syntax=c]// // Talking to ultrasonic sensor HC-SR04 with an ATtiny84, and // sending distance data using serial communications. // // electronut.in // #include <avr/io.h> #include <string.h> #include <util/delay.h> #include <avr/interrupt.h> #define F_CPU 8000000...
Witam. 1 - Stosuj aliasy. Np: drzwi alias portd.0 Później w kodzie po prostu drzwi = 1 lub drzwi = 0. bardzo poprawia czytelność kodu. 2 - Odczyt z przetwornika ADC powinien być do zmiennej WORD (przetwornik jest 10 bit). 3 - w pętli głównej masz instrukcje Wait. Powstaje problem ze sprawdzaniem stanu wejść, pętla może się wykonywać bardzo długo, w...
Chciałbym do atmega162 podłączy jak najwieksza ilosc układów attiny2313 (w praktyce 8 sztuk) za pomocą multipleksera CD4051. Transmisja ma być dwukierunkowa (2 mulipleksery - odbior, nadawanie), a wybor odpowiedniego ukladu attiny2313 bede dokonywal wejsciami PCINT0-7. Problem jest w tym ze transmisja odbywa sie na innych POZIOMACH napiec. Czy mozna...
[datasheet] (PCINT6/XTAL1/TOSC1) PB6 (PCINT7/XTAL2/TOSC2) PB7 [/datasheet] upssss.... doc2545 to atmega168, więc się poddaję!
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...
Cały problem jest w tym żeby te dwie ATmegi się zsynchronizowały. Przerwanie od SPI występuje po zakończenia transmisji pierwszego bajtu. Zanim nastąpi obsługa przerwania to pierwszy bajt zostanie utracony. Nie mamy też gwarancji że dwie Atmegi "wystrzeliły" :) równocześnie i Slave nie czyta np. 4 bajtu nadanego przez Mastera. Jeżeli to by była np....
Racja, wracam honor, ale moim zdaniem do tego wystarczy w zupełności sposób zaproponowany przeze mnie i kol. tmf. W Atmega644p masz przerwania PCINT na wszystkich pinach, więc też można wykorzystać.
W Loop mam w uproszczeniu taki kod : Takie opisy są guzik warte. Podaje się kod: includy, inicjacje i użycie. Jeśli kompilator wyrzuca jakieś błędy to wkleja się cały komunikat. na atmega8 softserial nie działa Nie wiem czy na arduino jest jakiś lib który nie korzysta z przerwań PCINT, może jakiś starszy, na stare płytki arduino. Albo sobie takiegoposzukaj...
Dzisiaj przedstawię państwu dwa sejfy dla dzieciaków, zrobione już jakiś czas temu. Jeden na atmega88, drugi na attiny44A. Ten pierwszy zrobiony na płytce prototypowej, następny dostał już swoją ładnie wytrawioną. Kiedy budowałem pierwszy sejf posiadałem tylko solenoid na 12V. Zasilanie wszystkiego takim napięciem jest w tym przypadku trochę bez sensu,...
jeśli czytałeś uważnie jakiegoś helpa i tam napisano, że np ATmega8 a raczej jej przerwania INT0 i INT1 nie mogą być wyzwalane zboczami to masz rację - jest to błąd ;) dokładny opis na 100% znajdziesz w nocie pdf ;) danego procka i na tym zawsze się opieraj jako najważniejszym źródle informacji. ... jak słusznie zauważyłeś ta nóżka ma dwa alternatywne...
Nie rozumiem. Po co ktoś zabiera głos jak nie chce odpowiedzieć. Proszę skasować cały temat , bo nic nie wnosi , a nabija tylko punkty za puste posty. Nie lubię dyskutować bez sensu. Zawsze można odpowiedzieć " masz problem rozwiąż go sam , a jak rozwiążesz to doradź innemu , żeby zrobił tak samo." Serdecznie dziękuję . Te kody ćwiczyłem jak i inne...
Pokazuje pliki: KPD.h #include <avr/io.h> #include <avr/interrupt.h> #include <avr/signal.h> unsigned char KPD_KeyPressed; unsigned char KPD_LastKey; unsigned char KPD_ScanRow; unsigned char KPD_KeyDown; #define CODE_MAX_LENGTH 8 #define CODE_ACCESS_LENGTH 4 #define CODE_ADMIN_LENGTH 8 #define BUFSIZE 20 void KPD_Init(void);...
Czy musze to robic za pomocą przerwań INTx? Nikt Ciebie nie zmusza, ale by wypadało... ;) W nowszych procesorkach są jeszcze do dyspozycji PCINT.
Kolego (at)dioda_007 tak z zasady nikt gotowca ci nie napisze. Musisz sam coś naskrobać to dalej możemy pomóc jeśli wystąpią problemy. Generalnie musisz użyć któregoś z timerów. Ja bym to zrobił tak: Przycisk switcha podpiął pod PCINT. W podprogramie obsługi przerwania załączał timer zboczem opadającym i zatrzymywał zboczem narastającym. Potem to już...
Tak też podejrzewałem. Mam pytanie do przykładu z rozdziału 20. "SPI- master slave". W kodzie Slave jest włączona opcja Master. Czy tak ma być? Czy przerwanie PCINT0 w Slave odnosi się do linii SS. Pytam bo nie ma informacji na jakich prockach Pan pracował, sprawdziłbym sobie w notach a nie pytał :-)
Te procesory się aż tak nie różnią. Dodatkowe funkcjonalności pinów nie przeszkadzają w niczym dopóki ich nie uruchomisz. (PCINT - Pin Change Interrupt trzeba wiedzieć jak włączyć). Jest duża różnica jeśli chodzi o Timery właśnie. Mega8 ma na przykład tylko jeden rejestr Compare dla Timer2 dlatego inaczej się nazywają. Opisałem to u siebie na stronie...
W ATMega nie ma takiej opcji - włączenie USART powoduje przejęcie kontroli nad pinem IO i ustawienia rejestrów portu dotyczące tego pinu nie mają znaczenia. Ależ jest. Włączenie RXEN ustawia tylko pin na wejściowy, ale nie zmienia ustawień rezystora podciągającego (można normalnie ustawić - rejestr PORTx). Sam się na to nadziałem jakiś czas temu na...
Szukam sposobu na wywołanie przerwania z programu. W ARM sprawa prosta, wpis do NVIC i mam dowolne przerwanie. W AVR rozwiązywałem to przez wolny pin GPIO. Ustawiałem jako PCINT, gdy potrzebowałem przerwania, ustawiałem GPIO w stan niski. W przerwaniu PCINT przywracałem poziom wysoki. Niestety nie mam wolnych pinów. Jest w AVR rozkaz BRK generujący...
Niemniej ten błąd jest taki sam dla każdego kolejnego pomiaru przez co odejmuje się on i otrzymujesz dokładne wskazania O ile nie ma uruchomionych innych przerwań. Nawet, jak te inne przerwania zrobi o "niższym priorytecie" to i tak mogą wystąpić w tym samym czasie lub te "niższe" trochę wcześniej niż przerwanie np PCINT. To może spowodować konieczność...
Witam, mam problem ze stworzeniem w języku C generatora, który będzie mi zmieniał stan niski na wysoki (stan niski 10ms, stan wysoki 0.32ms) przez czały czas działania programu niezależnie od pętli głównej programu. Czy jest to wogóle możliwe? Liczę na pomoc w dojściu do rozwiązania tego zagadnienia. ATmega 168 taktowana wewnętrzym oscylatorem 8MHz....
Pyt 1: Tak. Jeśli nie ma innych wskazań żeby koniecznie korzystać z INT1 to w m328p można uaktywnić przerwanie PCINT na pinie Rx, wtedy nie potrzebaa żadnych dodatkowych połączeń między pinami. Pewna niedogodność jest taka, ze przerwania PCINT reagują na oba zbocza oraz wektor przerwań jest wspólny dla całego portu. Pyt 2: Tak. Nie. Można to sobie teoretycznie...
witam wszystkich mam problem z obsługą przerwań chodzi o to że procesor generuje przerwania z wejść PCINT8 i 9 reagując na przyciski jakie mam na tych pinach . obsługa przycisków nie jest w przerwaniach tylko w pętli głównej programu a przerwania jakie wykorzystuje to tylko timer1. jak wyłączyć wszystkie pozostałe przerwania ? kawałek kodu dotyczący...
Ten pomysł z takim wykorzytaniem diod wydaje mi się bardzo mało szczęśliwy - tym bardziej, że nie będziesz miał na procku 0V tylko tyle co na spadku napięcia na diodzie a w tym momencie na wejście portu będzie podawane dla procka niższe napięcie niż jego GND ... Diody to można byłoby próbować zastosować do wybudzania procka ze stanu uśpienia którymś...
Jeden przykład pewnie będzie tu wart więcej niż tysiąc słów :-) Pisałeś, że chcesz skonfigurować przerwanie PCINT4. Uważam, że powinno to wyglądać tak: Pcmsk0 = &B0001_0000 'odblokuj PCINT4 On Pcint0 Test 'przerwanie ==> skocz do procedury test Enable Pcint0 'włącz przerwanie od PCINT0...PCINT7 Enable Interrupts Okazało się, że powyższy kod działa...
co do bascoma to powiem Ci tak, na początku niby łatwiej i fajniej się programuje wszystko w bascomie, ale nietypowych rzeczy w nim nie zrobisz tak prosto (choćby np. obsługa dwóch lcd...) a ma on swoje ukryte "atuty" - bugi, które skutecznie zatruwają życie (np. skopana obsługa timerów na niektórych uP, błędy przy niektórych operacjach porównywania,...
Jeżeli chcesz korzystać z zewnętrznego rezonatora kwarcowego to musisz pobawić się fusebitami. Trzeba tylko uważać z fusebitami. Jesteś pewien, że akurat w tym zastosowaniu, do którego ja używam rezonatora, jest to konieczne? Gdzieś spotkałem się z przykładem, gdzie był podłączony rezonator zewnętrzny 32,768 kHz i był używany do przerwań timera, a...
Albo najlepiej zastosować zupełnie inną metodykę - piny podpiąć pod przerwania zewnętrzne (PCINT, INT + diody 1n4148 itp.) i skorzystać z jednego timera generującego podstawę czasu.
Pierwsza wstawka chodzi ale dałem 25MHz do testów przy 20MHz gubi, druga też gubi nawet z 25MHz ale dzięki narazie mi to wystarczy do testów. A czy jak w tej pierwszej wstawce zamiast pinB całego czytał maskę z 1 pinu to też dochodzi cykl zegarowy na maskę ? albo pewnie z 3 cykle ? Pisałeś też o PCINT że potrzeba dodatkowych cykli? w przypadku przerwania...
No cóż widzę że może nie być łatwo, napiszę tylko że chodzi o lokalizator GPS i teraz sprawdzając z ciekawości do PE0 (RXD0/PCINT8) i PE1 (TXD0) jest podłączony moduł GSM. Napięcia już sprawdziłem i są 3,3V.
Dla 328P możesz ją uśpić do Powerdown i budzić każda zmianą stanu na pinie (PCINT) ...ale potrzebne będzie zewnętrzne podciąganie i procek i tak będzie w jakimś stopniu cyckał baterie. Możesz pokusić się o podawanie masy na Atmege równocześnie z wciśnięciem przycisku. Naciskasz przycisk, Mega wstaje, ustawia porty w stan wysoki i sprawdza który pin...
Cześć Uczę sie obsługi PWM na mikrokontrolerze Atmega644pa, chcę w prosty sposób sterować obrotami silnika za pomocą PWM. Na początek próbuję sterować jasnością diody, co potem chcę analogicznie zaimplementować dla silnika aby uzyskać sterowanie obrotami. Napisałam poniższy program i modyfikowałam go przez dwa dni z zerowym sukcesem, bardzo proszę o...
Podział na analogowe i cyfrowe a Arduino jest sztuczny. Jezeli weźmiez pinout npo atmegi 328 (z Arduino uno) to piny które moga być wejściami analogowymi sa oznaczone ADCx. Te same piny mają tez inne funkcje w zależności od tego co zapiszesz w rejestrach procesora. Tak ze w Arduino mozesz wejscia "analogowe" używac tak samo cyfrowo. Dla przykładu pin...
Jestem na O0, breakpointy mam w pierwszych liniach main, program działa tak: Przede wszystkim przejdź do widoku asemblera i tam zobacz jak wygląda wykonywanie programu. Breakpointy też postaw na instrukcjach asemblera, przed main. Czasami informacje o debugowaniu, pomiędzy C a asemblerem się rozjeżdżają, chociaż dla O0 nie powinno mieć to miejsca....
Wkleiłem schemat portu z dokumentacji dla Atmega48/88/168/328, nie zauważyłem że używasz ATtinny i pewnie dla tego scalaka będzie wyglądać inaczej Nie będzie. strona 59. Czy te sygnały coś zmieniają? Zapoznać się z działaniem multipleksera a potem powyższy schemat plus tabela ze strony 63 i dalej. nie widzę sygnału DIDR Rejestr DIDR link powyżej strona150....
Docelowo będą jeszcze pin change (PCINTx), ale w tym momencie nie ma nic więcej. Wkleiłem cały program....
Jednym słowem pcint to nie to samo co int0 ;) A dla potomnych int 0 w m2560 pin43 i o ile się nie mylę to to zabrakło opisu że program jest napisany w Bascomie ... Popraw temat zgodnie z normami ;)
dodatkowo podpiął bym to przez najzwyklejsze diody do INT0 i w przerwaniu obsługiwać wykrywanie zwartego pinu. albo lepiej, skoro masz procesor z PCINT to wykorzystaj dwa piny PCINT i odpowiednia obsługa programowa. dokładając timer możesz z grubsza mierzyć czas impulsu żeby eliminować drgania styków
Jak już robić koniecznie na przerwaniach zewnętrznych to na nowszych układach z PCINT, podpinając tylko jedno przerwanie na enkoder, drugie jest całkowicie zbędne. Obsługujemy tylko jedno zbocze w przerwaniu, drugie odrzucamy. W obsłudze przerwania należy pamiętać poprzedni stan, aby nie odczytywać drobnych drgań jako pełnoprawnego impulsu.
Nie chcę transoptora, skoro fotorezystor ma dużą bezwładność (bo ma) użyję fototranzystora, będzie go oświetlała dioda laserowa 5mW. To nie jest transoptor (!)..., mimo że jest zbudowany z podobnych elementów. Transopotor (opotocoupler) jest w obudowie zamknietej, a z tego tytułu odległośc od foto tranzystora do diody emitującej (IR) jest niewielka,...
Schemat dla fazowego jest nieco inny i prawdę mówiąc nawet go nie rysowałem. Po prostu dorobiłem dodatkowy mały układzik detekcji zera na mostku dwóch rezystorach 100k i transoptorze, podłączyłem to do jednego z wolnych pinów i w programie badam przerwanie od PCINT (końcówki od INTO i INT1 mam już zajęte) z programowym podziałem przez 2 (PCINT reaguje...
Nadal nie rozumiesz o czym koledzy piszą. Przeczytaj sobie co to są przerwania, co to są i po co są timery. Twój program powinien być taki że w pętli głównej procesor śpi, a w tle w timerach i na zewnętrznych przerwaniach dzieje się cała reszta. Timer mierzy czasy, a przerwania zewnerzne powodują wybudzenie i reakcje procka. Jeżeli masz 8 potencjalnych...
W atmedze 128 nie ma przerwań PCINT, są tylko przerwania INT0-3 na pinach PD0, PD1, PD2, PD3. Przerwania PCINT są tylko w nowszych atmegch.
Cześć wszystkim :) Pracuję nad przeniesieniem kodu pewnej biblioteki do nrf24l01 z atmegi na xmegę (atmega32 -> xmega 128a3). Czytając bibliotekę wybrałem fragmenty z elementami charakterystycznymi dla danego typu procesora, czyli pozmieniałem części kodu związane z rejestrami i przerwaniami. "Zakomentarzowałem" nietknięty oryginał. To, co wstawiłem...
A co do samej realizacji to najprościej zastosować do analizy wejść cyfrowych przerwanie PCINT Nie wiadomo co znaczy analiza, tak że odpowiedź jest niemożliwa. Musisz też pamiętać, że przy tak dużej ilości pinów wejściowych, generujących przerwania, będziesz musiał analizować stan każdego z nich z poprzedniego przerwania, aby zidentyfikować pin, który...
Chwilę mnie nie było, a tu wrze :D Jeśli chodzi o wyświetlanie czasu po wybudzeniu procesora, to działa ta procedura od nieveasoft , którą przedstawił wcześniej. Co do samej biblioteki, to wolałem zastosować gotową. Po prostu jest mi wygodniej a to dla tego że nie jestem Bascom-owcem :). Włączanie i wyłączanie oleda jest opanowane. Teraz borykam się...
Dane USART prądkosc 57600 Trochę szybko jak na AVR, jedno wejście da radę ale więcej? Wątpię? Trzeba by ustawić przerwanie PCINT na wejściu i wysterowywać odpowiednie wyjścia. Aby program był szybki, przerwanie NAKED. Operacje na GPIO nie zmieniają rejestru stanu, więc nie trzeba nic zapamiętywać na stosie. Jeśli jednak trzeba sprawdzać warunki (najlepiej,...
Nie zapominajcie, że ten "system" ma mieć Watchdoga który sam z siebie jest osobnym zegarem i poborem prądu. W tak prostej implementacji i 1KB kodu to odradzałem WD. Wystarczy Powerdown i Sleep a wcześniej ustawić PCINT.
nie mylisz się Dodano po 20 już się poprawiam, bo w temacie napisałeś ATmega8, jakoś mi to umknęło i skupiłem się tylko na tekście i pytaniach o sposobie wyzwalania przerwań. Z opisu dokumentacji jaką czytałeś poprostu domyśleć się można że chodzi o procki inne niż ATmega8 bo akurat ten procek nie ma przerwań PCINTx, Więc co do tego co przeczytałeś...
ATMega8 nie posiada przerwań PCINTx (SIG_PIN_CHANGE X ) które teoretycznie można by wykorzystać. Lepiej połączyć linię RXD z wyprowadzeniem INT0 (lub INT1) i tak skonfigurować przerwania by wykrywało zbocze opadające - bit startu. Jak wykryje zbocze to przerwanie trzeba zablokować, przekazać działanie do modułu USART, który pobierze nadchodzące znaki,...
Witam. Komunikat o bledzie jest o takiej tresci: Error : 22 Line : 173 Out of SRAM space A przy okazji to zadklarowalem w ATTINY13 Rf_nsel Alias Portb.3 jako wyjscie czy moge tak zrobic jak to jest PB3/PCINT3/CLKI/ADC3 ? Czy to bedzie mi dzialalo poprawnie? Nigdy nie pisalem programow w BASCOM-ie i nie wiem o co chodzi kiedy zmienilem na ATTINY13 bo...
Dodam że alias Sprzeglo oznacza port PC5 Atmegi 328 która nie ma tam wyjść OC (ma tylko ADC5/SCL/PCINT13). Reszta kodu nie ma nic wspólnego z przerwaniami. Jest wyświetlacz lcd, przyciski i diody. Działające w pętli głównej. Zresztą wszystko pozostałe jest wykomentowane a załączony kod można uważać za kompletny. Dodano po 4 Czy masz coś konkretnego...
świetlówkę fazowo...nie obrażaj mnie? No bez przesady A dlaczego nie? Są świetlówki, ledy które mogą pracować ze ściemniaczem. Dodano po 4 Działający kod sterowania fazowego: [syntax=c] //======================================... void InitTimer1() { //TCCR1A = //TCCR1B = 5; // NORMAL (mode0), Preskaler 1024 TCCR1B = 4;...
ATMega8 nie obsługuje PCINT.
Zamiast EIMSK|=(1<<4);//dla PCINT0-7 zrób jak wcześniej tylko w projekcie wybierz odpowiedni tym mikrokontrolera.
Panowie, dziękuję Wam za dotychczasową pomoc. To co z Waszą pomocą zrobiłem wcześniej w zupełności wystarczyło. Teraz korzystając z wolnej chwili pobawię się tym tematem jeszcze trochę. Wydaje mi się, że nie spełniasz warunku, że przerwania mają być generowane przy każdej zmianie sygnału A i B przerwania w AVR od PCINT nie mają za wiele rejestrów do...
Bez podciągnięcia switchy do Vcc, układ sam zapala led'a. Ale pod podciągnięciu VCC, częściowo jest dobrze. Jednakże jest ten sam problem. Kiedy nacisnę 1 raz któryś switch, to ta instrukcja wykonuje się w nieskończoność. Jak temu zaradzić? Dodano po 12 Udało mi się rozwiązać problem w następujący sposób: Po wykonaniu danej operacji, na nowo podciągam...
Proponuję zastanowić się czy mikrokontroler będzie tylko i wyłącznie czekał na przyciśnięcie przycisku czy robił coś jeszcze poza tym. Jeżeli tylko i wyłącznie będzie oczekiwał na przycisk to porty ustawiasz jako wejścia i sczytujesz stany. Natomiast jeżeli zajmiesz go czymś to proponuje wykorzystać przerwania. Nowsze mikrokontrolery (potomki Atmega8...
Tak i nie. Po pierwsze musisz dostosować poziomy napięć. Jak podłączysz bezpośrednio 12V pod pin proca to on się spali. Podepnij przez dzielnik napięcia. 2. Jaki to jest procesor? Firma i model 3. Jeżeli chcesz mieć bardzo szybką reakcję to takie coś realizuje się na przerwaniach (w tym przypadku na przerwaniu zewnętrznym na pinie 13, jeżli takie jest...
Tak samo jak PCINT, tyle że tracisz jedną nóżkę i masz więcej ścieżek i elementów. W sumie ja też unikam procesorów bez tego, ale nie jest to straszne jak nie ma. Z PWM bawiłbym się softwarowo, możesz wtedy dowolnie kanałów narobić ile masz wolnych nóżek ;) . Podsumujmy ile CI potrzeba: 6 wentylatorów x2 = 12 uart = 2 lcd, 4bit+r/w = 7 1w do termometrów...
Oto filmik pokazujący wykrywanie dotyku o którym pisałem w poście wyżej: [youtube][/youtube] (opis w opisie filmiku, po ang) Dodam jeszcze, że jeśli ktoś potrzebowałby zaimplementować o wiele więcej klawiszy to można byłby użyć uC Atmega48. Posiada ona 24 piny PCINT! Z drugiej strony, jakby się uprzeć żeby zrobić klawisze na uC ATmega8, warto wtedy...
Witam. Opracowałem prosty pilot podczerwieni protokołu RC-5 na ATTiny44, z pięcioma przyciskami (Standby, Vol+/Vol-, Ch+/Ch-). Wszystko działa (nośna generowana z PWM na Timer0, wybudzanie przerwaniami na pinach, kody w pamięci programu, duże oszczędzanie energii), ale chciałbym jeszcze bardziej udoskonalić oprogramowanie. :D Mianowicie, niezbędne opóźnienia...
Witam wszystkich, Tytułem wstępu: Jestem poczatkującym użytkownikiem Arduino (i dlatego piszę w dziale dla początkujących). Jednym z moich projektów jest sterowanie urządzeniem za pomocą enkodera. Problem wydaje się bardzo prosty - ale na Arduino. Z GitHub'a () ściągnąłem doskonałą bibliotekę do obsługi enkodera, która m.in. ma już w sobie rozwiązanie...
Niestety... Zawsze jednak możesz testować w programie stan PINA.0 np. w przerwaniach z licznika. Albo wymienić układ na ATMega162 i skorzystać z przerwania PCINT0.
Cześć! Odświeżam trochę temat, procesor AtMega328. Poniżej zamieszczam fragment służący do usypiania procesora. Problem polega na tym, że program działa w sposób losowy. Pobór prądu czasami wynosi 60 uA, czasami 130 uA a czasami 230 uA. Pierwsza wartość jest dla mnie akceptowalna, pobór wynika z poboru prądu innych elementów niż mikrokontroler. Martwi...
No to po tygodniu znów witam :) Po godzinach zgłębiania stron dokumentacji oraz zapoznawania się ze wszelakimi opiniami jak to się robi pojawiła się lista kolejnych pytań. Ale najpierw to co już mam. Mikrokontroler - ATmega162. Dlaczego ?? W kwestii mikrokontrolera to na prawdę nie wiedziałem czym się kierować....ale wybrałem taki który ma 16k pamięci...
Jest jeszcze przerwanie PCINT wyzwalane dowolnym zboczem. Wejść PCINT jest zdecydowanie dużo, zatem można reagować nie tylko na dwa przerwania INT0/1. Fakt, nie wszystkie AVRy to mają. Co do programowej obsługi to trzeba skanować klawiaturę w krótkich odstępach czasu i porównywać stan bieżący z poprzednim odczytem. Niestety czas musi być dość krótki...
WItam; mam dylemat, chciałem zastosować układ ATMEGA 328. Procesor ten ma dzielnik częstotliwości. Potrzebuje około 4MHz. Co lepiej zrobić użyć kwarc około 16MHz i podzielę do przez 4 czy dać kwarc 4MHZ bez podziału? W którym przypadku będzie mniejszy pobór prądu? I drugie pytanie . W tym procesorze pojawiły się dziwne przerwania (chyba). Przy każdej...
A najlepiej zmienić procesor na taki z przerwaniami typu PCINT na prawie każdej nóżce, np. pinowy nowszy odpowiednik poczciwej atmega8 - atmega88:
Chciałbym się upewnić - czy dobrze rozumiem, że chcąc skorzystać z odbioru po RC5 ( ) przy konfiguracji BACKGROUND mode ( ) muszę mieć odbiornik podłączony do ICP (czy to w tym wypadku noga (PCINT30/OC2B/ICP) PD6) czyli pin 20 mikrokontrolera Atmega 644 ? Dotychczas odbiornik miałem podpięty do INT0 (noga 16 czyli PD2) mikrokontrolera Atmega644 i obsługiwałem...
Przesyłam moją propozycję implementacji algorytmu FFT w asemblerze. Celem nie ma być dokładność, ale możliwość upchnięcia analizy w jak najmniejszych uC. Wymagania co do algorytmu: kontroler AVR (w zasadzie dowolny) z min 128b SRAM (64b zajmują dane, a potrzebne jeszcze miejsce na stos). W przypadku ATMega można spokojnie zastosować mnożenie sprzętowe,...
Cześć Wszystkim. Chciałbym zaprezentować drugą odsłonę sterownika dla silników DC (wersja 1 (Zdjęcia 1 i 2 są tymczasowe, później podmienię na aktualniejsze) Co się zmieniło? •Wbudowany mikrokontroler (ATmega168/328) •Dodane zabezpieczenie temperaturowe •PCB z foli miedzianej 70um Jako sygnały wejściowe można podać póki co sygnał...
Tylko nie mam dwóch UARTÓW, no i na płytce nie mam takiego połaczenia. Procesor to ATMEGA88PA. Chyba zrobię przerwanie PCINT, od wejścia Rxd i zmierzę czas trwania impulsu.
W zasadzie nie potrzebujesz JP13. To chyba taki ukłon w stronę 8051 z dwoma przerwaniami zewnętrznymi. AVRy mają przerwania PCINT na prawie wszystkich pinach i w momencie jak wciśniesz przycisk i tak możesz wywołać przerwanie. Kolega trochę za bardzo uogólnia, nie wszystkie AVRy mają PCINTy na pinach, dodatkowo autor korzysta z Atmega32, który to w...
Witam. W dokumentacji od atmega168 jest tak: 0x0006 jmp PCINT0 PCINT handler to chyba jest wektor przerwania od PCIE0 więc wygląda na to że jest to obsługiwane w bascom w takiej właśnie postaci jak napisałem poprzednio.Dla atmega168 przyjmuje mi kompilator wszystkie 3 przewidziane czyli PCINT0,1,2, myślę że traktuje to jako właśnie te 3 możliwe porty...
Witam. Mi jednak chodzi jak taki układ z diodami ma być połączony i jakich diod użyć żeby działało,bo przemiatanie klawiatury mam opanowane ale niechce jej ciągle skanować.FDodam że robie to na ATmedze8.czy tak może być ?? Widze danielbela że wykorzystujesz atmege 16 więc można tam wykorzystać przerwania PCINT (wywoływane zmianą stanu) więc można wsio...
Portów to można użyć i jednego ;), a pinów to wystarczy trzy, pod warunkiem, że zamiast ATmega16 użyjesz ATmega164 (identyczny rozkład wyprowadzeń) z przerwaniami typu PCINT (Pin Change INTERrupt).
Na początku chciałbym zaznaczyć, że znam się na programowaniu w C tylko natomiast jeśli chodzi o mikrokontrolery to jestem początkujący. Wszystko zaczęło się od tego, że potrzebowałem zamiennika układu 1-wire DS2423. Jest to podwójny licznik impulsów. Niestety Maxim/Dallas już go nie produkuje ale znalazłem implementację tego licznika na uC AVR. Kod...
Witam Potrzebny mały (mała obudowa - ok 20 pinów) i nie za drogi i łatwo dostępny mikrokontroler z: -INT0 -INT1 -ADC i jeszcze jakby miał USART to już by było wspaniale, w ostateczności -INT0 -PCINT -ADC - USART - prawdziwy - nie LIN Wszystkie powyższe wymagania ma np ATMega48, ale grzechem byłby ją wykorzystywać do moich skromych potrzeb. Najlepiej...
A może znasz jakiś jeszcze inny sposób (PROSTY) żeby jak najszybciej sprawdzić zmianę stanu na 18 wejściach do uC? Najprościej byłoby zastosowac inny processor np: ATMega48/88/168, które mają PCINT co najmnjej na 20 'użytecznych' pinach wejściowych. W subrutynie do każdego PCINT wstawisz instrukcje wyłączającą przekaźnik na którymś tam porcie wyjściowym,...
Każdy z pinów ATTiny może wywoływać przerwanie PCINTn... Skoro miałem dzialający program na arduino to mysłałem że bez problemu da się go wgrać do ATTiny. Nie rozumiem toku myślenia - Arduino UNO to ATMega328P, która jest dostępna w obudowie DIL, TQFP, QFN - do wyboru, do koloru. ATmega328P na 2 kB RAMu i 32 kB Flasha, a ATTiny85 0,5 kB RAMu i 8 kB...
kolego - świat idzie do przodu, technologia jest coraz nowsza więc nie dziw się, że ktoś będzie produkował Stareńki już układ AT90S2313 skoro ATtiny2313 ma wszystko to co jego poprzednik plus kilka dodatkowych fajnych rzeczy. hmmm chyba, że ty cały czas przyjmujesz to, że jeśli wspominam tutaj, iż ATtiny ma oscylator wewnętrzny to już nie może mieć...
dla pozostałych wejść masz przecież też przerwanie od dowolnej zmiany stanu na wejściach więc chyba coś można wymyślić innego niż zewnętrzna logika. Dokładnie w tym miejscu problem - w moim AtMega nie ma PCINT, więc próbuję to obejść sprzętowo. Inaczej bym się nawet nie bawił, ale dwa przerwania (INT0 i INT1) to dość niewiele dla kilku przycisków +...
...a jak wymusić wykonanie przerwania... Programowe ustawianie flag przerwań jest w AVR niemożliwe. Można zrobić jak proponuje kolega tmf . Można też wywołać przerwanie np. wykorzystując następującą cechę przerwań zewnętrznych (będzie potrzebny jeden wolny pin): ATmega48A/48PA/88A/88PA/168A/168PA/328/3... .... The External Interrupts are triggered...
O 88 nikt jeszcze nie wspominał. Dlaczego akurat ten? Bardzo dobra propozycja kolegi Damian_C Jest lepszy bo: - ma wszystko to co ma atmega8 - ma dużo więcej niż atmega8 - PCINT, więcej wyjść PWM, etc - jest dużo mniej energożerny aniżeli atmega8 - kosztuje circa tyle co atmega8 itd.