Zmodyfikowałem troche kod, teraz mierze czas pomiędzy poszczególnymi sygnałami (wyniki powinny być dokładniejsze) Prosiłbym o wskazówki co można wyżucić z przerwań by przyspieszyć ich wykonywanie? [syntax=c] //read RPM PCINT by Asica10 //-----Define variable for measure RPM----- volatile unsigned long timeLast_1 = 0; volatile unsigned long timeLast_2...
Jeden sygnał = jeden pin ICP. Wystarczy sobie zmieniać w przerwaniu od ICP, zbocze na jakie ma reagować to przerwanie. Ewentualnie przy większej liczbie sygnałów - przerwania INT lub PCINT.
Nad takim też myślałem ale to nie jest to. Chodzi o to, że pin wejścia będzie podpięty pod linie 5V w komputerze i jeśli będzie wykryty sygnał (to 5V) to wtedy na pinie przykładowo 13 będzie przez określony czas stan wysoki. Przez określony czas tylko. A jeśli stan tej lini 5V zmieni się na zero to wtedy znów na ten określony czas będzie stan wysoki...
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
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...
Bascom moze tego nie obslugiwac. I ile recznie mozna wpisac do rejestru wlaczenie tego przerwania, to podanie wektora przerwania pewnie bedzie juz problemem - moze edycja pliku z danymi o ukontrolerze. Przerwania zmiany stanu na PCINT przypisane sa do portów, i dodatkowo mozna zdefiniowac które piny maja byc monitorowane (nie musza byc wszystkie).
Jedyna zmienna, którą trzeba przechowywać, to old_A; można by zrezygnować z B, która jest używana raz, wstawiając read_B() zamiast B. I jest też sposób, by zrezygnować z A: porównujesz read_A() z old_A, jeśli się różnią, to zmieniasz old_A i zliczasz, kierunek według poprawionego old_A i read_B(). Przerwanie musi być na obu kierunkach zmian sygnału...
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 ;)
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...
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...
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...
[datasheet] (PCINT6/XTAL1/TOSC1) PB6 (PCINT7/XTAL2/TOSC2) PB7 [/datasheet] upssss.... doc2545 to atmega168, więc się poddaję!
Udało się, działa. Przyczyna - jak się okazało to nie up Atmega169 a Atmega169PA, do tej pory myślałem że litery na końcu up PA ,A to mało znaczące jak w Atmega8 i Atmega8A; a w przypadku Atmega169PA różnią się rozmieszczenie bitów w rejestrze EIMSK i EIFR odpowiedzialnym za przerwania na pinach PCINT. Opisuje to pdf [url=http://ww1.microchip.com/downloads/...
1. oczywiście że ATmega obsługuje przerwania na każdy rodzaj zbocza a także na poziom ;) (na pewno!) 2. Przerwania INT0 i INT1 to standardowe i opisane oddzielne dwa przerwania hmmm mają można tak ogólnie powiedzieć więcej opcji działania ;) Natomiast przerwania PCINTx mogą być wygenerowane przez wybrane piny danego AVRka, przeważnie to jest jakiś cały...
I jak ciekawie się wątek rozwinął :) ... A pytanie zadawałem bo mi tak luźno przyszło do głowy robienie klawiatury na PCINT albo fototranzystora podłączenie i wykrywanie 0/1. Dopóki autor nie wróci to możemy offtopować :P .
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...
Próbowałeś "ręcznie" napisać obsługę tych przerwań? Czasami trzeba troszkę wyręczyć bascoma. Odpowiedni wpis w rejestrach PCICR i PCMSK0 powinien załatwić sprawę ;)
Dzięki za błyskawiczną odpowiedź i za rozjaśnienie pewnych kwestii. Attiny13 nie należy do grupy/rodziny Attiny25/45/85. Tak, masz rację. Pisanie o północy może być przyczyną różnych dziwnych pomyłek. Najpierw sprecyzuj, do których interruptów referujesz i masz zamiar je wykorzystać. Czy są to INT0 i INT1, czy też chcesz użyć któreś z PCINT. W programie...
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 +...
Jak nie włączyłeś przerwań, to powinny być wyłączone... no, chyba, że bascom to zrobił za Ciebie... Dodano po 46 A skąd wiesz, że się odpalają przerwania PCINT?
Witam, Muszę zaimplementować obsługę obrotowego potencjometru impulsowego, dokładnie #include <avr/io.h> #include <util/delay.h> #include <stdlib.h> #include <stdio.h> #include <avr/interrupt.h> #define F_OSC 16000000 void led3(int l){ if(l){ PORTD=PORTD & 0x7F;//zapala LED3 }else{...
Przenieś Enable Pcint0 i Enable Pcint3 zaraz przed Enable interrupts, albo zobacz co sie stanie jak skasujesz flagi tych przerwań. PCIFR.PCIF0 = 1 PCIFR.PCIF3 = 1
witam, czy jest możliwość w atmega128 generować przerwanie zawsze przy zmianie pinu na przeciwny... Chodzi mi tutaj o kilka pinów generujących jedno przerwanie. W arduino jest coś takiego jak: ISR(PCINT2_vect) { } I zawsze kiedy któryś z pinów które ustawione mają dane maski generuje to przerwanie. Jak uzyskać coś takiego na amtega 128?
Witam Po przesiadce na C umęczyłem taki program, ale dalej coś nie teges? Przerwanie wykonuje się 128 razy ale tylko Y się zwiększa. Jeżeli te sprawdzenie IF od stanu 0 na pinB.3 jest złe to i tak przerwanie powinno się wykonać 256 razy. Bo mam na tym porcie 128 impulsów "0" a przerwanie powinno się wykonać na zboczu opadającym i narastającym. Co jeszcze...
hmmm jeżeli chodzi o klawisze proponowałbym zrobić tak: linie z PCINTX podciągnąć rezystorem 1M do stanu wysokiego a następnie dać na przycisk który byłby zwierany do masy(linie jako wyjście) linie jako wyjscie? a nie jako wejscie? 1M to troche sporo w sumie choc duzej roznicy to nie robi to dalbym 100k powiedzmy z tym ze ten pull-up juz jest tam wewnetrznie...
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...
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ł :-)
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 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.
"The pin change interrupt PCI2 will trigger if any enabled PCINT23..16 pin toggles. The pin change interrupt PCI1 will trigger if any enabled PCINT14..8 pin toggles. The pin change interrupt PCI0 will trigger if any enabled PCINT7..0 pin toggles. The PCMSK2, PCMSK1 and PCMSK0 Regis- ters control which pins contribute to the pin change interrupts. Pin...
Witam. Mam prośbę o sprawdzenie dwóch schematów. Czujniki indukcyjne wysyłać będą max 250 imp/s Pierwszy - Atmega ma liczyć impulsy (na przerwaniach) z dwóch czujników indukcyjnych przetwarzać je i wyświetlać na lcd 20x4 oraz wyświetlać napięcie akumulatora oraz aktualny czas. https://obrazki.elektroda.pl/3842854200_... Drugi - Atmega...
Oto zapowiadany firmware z regulacją fazową i edycją tabeli prędkości. Jeśli chodzi o główne bebechy programu to jest to dokładnie to samo co ostatnia wersja z regulacją grupową. Aha, jest tylko drobna zmiana z przywracaniem (RESET) ustawień. Teraz aby zresetować menu sterownika należy przy włączaniu trzymać klawisz START. Wcześniej były to "+" i "-",...
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...
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ę...
https://obrazki.elektroda.pl/6021352700_... https://obrazki.elektroda.pl/6921159500_... https://obrazki.elektroda.pl/3416870700_... https://obrazki.elektroda.pl/7961253800_... https://obrazki.elektroda.pl/7601893100_... Dzisiaj przedstawię państwu dwa sejfy dla dzieciaków,...
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....
Tak, używam ATtiny24V...wiecmmoze być zupełnie inaczej... R Dodano po 34 Sprawdzę jutro. Ale nie widzę na schemacie sygnału DIDR. 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. Mój błąd. Niemniej jednak nawet na Twoim schemacie nie widzę sygnału DIDR....
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....
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...
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...
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,...
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ą...
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,...
Docelowo będą jeszcze pin change (PCINTx), ale w tym momencie nie ma nic więcej. Wkleiłem cały program....
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);...
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...
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...
ś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;...
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...
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.
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...
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...
ATMega8 nie obsługuje PCINT.
C:\Users\RafaĹ‚\Documents\Arduino\... error: ' PCICR ' was not declared in this scope Wydaje mi się, że moja ATMEGA8 miała problem z obsługą I2C, zamieniłem na ATMEGA328 i śmiga bez problemu. Przecież to ładnie widać w pokazanym błędzie - rejestr PCICR nie występuje w ATmega8. Podobnie pozostałe komunikaty. Oj, czytaj...
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ć...
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. https://github.com/smurfix/owslave...
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...
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ś...
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? Bo kompilacja jest 100% poprawna. A dlaczego miał byś nie móc?
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.
Mam poważne wątpliwości czy kombinacja softwareowego USB i synchronicznego (busy waits!) TWI ma szansę zadziałać. Chyba faktycznie te synchroniczne i2c nie działa, bo mi się rozłącza z usb. już się bawię z isr: nwm o co chodzi z tym attiny ale mi hardware nie działał choćbym się zesrał, ostatecznie na scl dałem mniej więcej taki https://obrazki.elektroda.pl/1633124600_...
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...
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ś...
http://obrazki.elektroda.pl/5995544500_1... Cześć Wszystkim. Chciałbym zaprezentować drugą odsłonę sterownika dla silników DC (wersja 1 http://obrazki.elektroda.pl/5995544500_1... http://obrazki.elektroda.pl/3989858800_1... http://obrazki.elektroda.pl/7001925600_1... http://obrazki.elektroda.pl/4105542100_1...
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...
Wpisywanie $CRYSTAL bez rzeczywistej zmiany taktowania procesora będzie powodować, że wszelkie opóźnienia i obliczenia kompilatora dotyczące liczników nie będą zgodne ze stanem faktycznym. GETRC5() korzysta aktywnie z licznika TIMER0. Tak manewruje wartością wpisaną do rejestru licznika oraz preskalerem by otrzymać jednakowe odcinki czasu zliczane później...
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.
(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...
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...
W sumie to już nie ważne. Napisałem własny program do tego pcb. Prośba tylko o te nazwy tranzystorów na wyjściach, bo nie bardzo orientuję się w częściach SMD. Nie wiecie po co te diody szeregowo na wejściach ?. Napisałem program i w sumie działa, tylko że strasznie nieodporny na zakłócenia i myślę, że to przez te diody. Dotknięcie kawałkiem czegoś...
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...
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 http://www.atmel.com/dyn/products/produc... (strona 64) wyróżniają dwa przerwania INT0 i INT1 i dodatkowo 24 - PCINT23..0. Te 24 przerwania są podzielone...
A gdzie jest fizycznie PC7 w ATMEGA88? Bo ja za chiny nie widzę takiego pinu.
...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...
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...
Chciałbym się upewnić - czy dobrze rozumiem, że chcąc skorzystać z odbioru po RC5 ( http://avrhelp.mcselec.com/index.html?ge... ) przy konfiguracji BACKGROUND mode ( http://avrhelp.mcselec.com/index.html?co... ) muszę mieć odbiornik podłączony do ICP (czy to w tym wypadku noga (PCINT30/OC2B/ICP) PD6) czyli pin 20 mikrokontrolera Atmega...
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...
https://obrazki.elektroda.pl/2143173200_... 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...
okazało się że włączyłem przerwania PCINT a ich funkcję dałem do komentarza, w celu późniejszej realizacji. Na to jest sposób ISR( ISR_BAD)
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...
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...
Przykładowo możesz wykorzystać dwa liczniki. Jeden do regulacji częstotliwości, a drugi do regulacji wypełnienia. - licznik pierwszy odlicza czas pomiędzy okresami od 1 sek dla 1Hz do 50 ms przy 20Hz. - licznik drugi oblicza czas trwania impulsu. Powiedzmy że zmiana stanu pinu X generuje przerwanie uruchamiające licznik drugi który po upływie zaprogramowanego...
Ostatnio czytałem o PCINT na Twojej stronie-muszę się temu dokładniej przyjrzeć :-)
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ć.
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.
IMHO biorąc pod uwagę dziesiątki mA zjadane przez nadajnik, to uA zjadane przez procek w trybie uśpienia można pominąć. Pomysł z PCINT jest ok, tylko czy procek z PD może być przez te piny wybudzany asynchronicznie? Trzeba sprawdzić w nocie.
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...
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.
A najlepiej zmienić procesor na taki z przerwaniami typu PCINT na prawie każdej nóżce, np. pinowy nowszy odpowiednik poczciwej atmega8 - atmega88: http://www.atmel.com/Images/doc2545.pdf
Czy musze to robic za pomocą przerwań INTx? Nikt Ciebie nie zmusza, ale by wypadało... ;) W nowszych procesorkach są jeszcze do dyspozycji PCINT.
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.
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,...
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...
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,...
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...
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ż...
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).
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.
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,...
przerwać pcint atmega przerwania pcint atmega pcint attiny
dwufazowy jednofazowy bramy hormann programowanie oznaczenie kolor ładowarka
flash extractor flash extractor
Jak zmienić dźwięk autostartu w Windows 11? Schemat mikroamperomierza: galwanometr i bocznik