Nie znam się na C :) ale wydaje mi się że błąd jest w tej linii: [syntax=c]PCMSK |= (PCINT0); //PCINT[/syntax] raczej powinno być tak: [syntax=c]PCMSK |= (1<<PCINT0); //PCINT[/syntax] PB0 ma być ustawione jako wejście.
Witam. Dla wejść INT0 i INT1 możesz skonfigurować przerwanie dla zbocza narastającego, opadającego, zmiany stanu lub stanu niskiego. Przerwanie PCINT jest wywoływane przez zmianę stanu na wejściach PCINT0 - PCINT7. Dodatkowo można określić które z wejść PCINT ma wywołać przerwanie za pomocą rejestru PCMSK. Pozdrawiam - Daniel
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.Osobiście nie piszę w bascomie ale przerwanie (przerwania) PCINT wyzwalane są zmianą stanu na pinie a ty natomiast próbujesz konfigurować aby wyzwalane było niskim poziomem.
Chyba zrobię przerwanie PCINT, od wejścia Rxd i zmierzę czas trwania impulsu. Pytanie tylko którego. Musisz mieć coś na początku transmisji o znanej wartości. inaczej nic nie zmierzysz. Np pierwszy bit 1 to wtedy mozesz zmierzyć start bit. Albo np 0x1d i znając co odbierzesz przy okreslonej prędkości określiswz aktualną predkość transmisji Masz tu...
ja zdaje się ze tak ale na innym procku. Jak mówiłem ci o ile robisz to jak należy czyli nie włączysz pinów PCINT na których jest AC, który wykorzystujesz to wszystko jest w porządku. i to nie tylko może ale i musi działać.
Możesz czytać timer w przerwaniu INT lub PCINT
Przerwanie PCINT w byle nowszej atmedze, np. m88. Masz ich tyle ile wolnych pinów.
Przerwania PCINTx wykonują się przy każdej zmianie stanu logicznego, niema możliwości konfiguracji np. tylko dla zbocz narastającego lub opadającego. Stan zbocza na poszczególnym pinie sprawdzasz w przerwaniu. Attiny13 ma 6 pinów PB.0-PB.5 (PCINT0 do PCINT5) które mogą wywołać przerwanie. I tu jest jedna myląca rzecz :) dla tych pinów jest tylko jeden...
Przerwanie PCINT wystepuje na skutek zmiany. Nie ma mozliwości zrobić aby było np tylko na jedno zbocze. Musisz w procedurze obsługi przerwania sprawdzić, jakie to było zbocze.
To trzeba już nałożyć programowo na przerwanie PCINT. Ogólnie konfigurujesz PCMSK tak, aby były aktywne piny 3 i 4, a potem w programie przerwania sprawdzasz, który pin zmienił stan (wygenerował przerwanie) oraz w jakim był stanie przed przerwaniem (stąd wiesz jakie zbocze wygenerowało przerwanie). Można więc nawet programowo przypisać inne funkcje...
PCINT to specjalne przerwania aktywowane zmianą stanu pinu. Dodatkowo wszystkie przerwania PCINT w tych procesorach wywołują jedno przerwanie, w którym należy programowo określić, który pin je spowodował ważny jest też rejestr PCMSK, który odpowiada za maskowanie nieużywanych przerwań. Polecam lekturę datasheetów tych procesorów w celu dokładnego poznania...
Witam, przecież wskazanie enkodera nie zależy od wartości na pinie, tylko od zmiany tej wartości. Teraz przerwanie wywołuje enkoder drugi, a Ty przy okazji zmieniasz pozycję dla pierwszego. Pozdrawiam.
A co do samej realizacji to najprościej zastosować do analizy wejść cyfrowych przerwanie PCINT i sprawdzać który PIN je wywołał, dodatkowo trzeba sprawdzać stan wejść analogowych a progi zadziałania przypisać do jakiejś flagi.
No w ten sposób oczywiście się da i też o tym myślałem. Tylko że każdy port (Przynajmniej w AVR) może generować jedno przerwanie PCINT, czyli potrzebuje aż 4 porty. Moje pytanie jest dalej aktualne. Czy każdy port XMEGi może generować niezależne przerwania INT0,INT1.
Ok dziękuję za rady. No jest tak jak napisał mirekk36 - wybudzanie INTx działa tylko na poziom niski. Jako że chciałem mieć wybudzanie dowolna zmianą to zrobiłem wybudzanie poprzez przerwanie PCINT i zgodnie z dokumentacją działa :)
Przerwanie PCINT na pinie PD7. W procedurze obsługi przerwania włączenie któregoś timera i zerowanie jego licznika. Timer skonfigurowany na PWM z zadaną częstotliwością i wypełnieniem. W procedurze obsługi przerwania Comp timera odliczanie trzech impulsów, potem wyłączenie timera i reinicjowanie licznika impulsów. Jeżeli koniecznie jest zachowanie okresu...
Jeśli korzystasz z architektury AVR to rób inaczej: 1. Na wyjściach wierszy ustaw 0 (skonfigurowane jako wyjście) tylko na aktualnie wybranym wierszu, pozostałe wiersze ustawiasz jaki wejścia z podciąganiem do vcc (taka mała ochrona przed zwarciem w wypadku wciśnięcia kilku klawiszy) 2. Wejścia kolumn ustawiasz wszystkie jako wejścia z podciąganiem...
Czego oczekuje NAZE Ci niestety nie powiem. Poszukaj informacji w manualu. Po wyłączeniu nadajnika dioda przy attiny powinna zgasnąć, bo brak PWM to brak PCINT, a tam jest załączana. Możesz dopisać symulację dodatkowych kanałów i sprawdzić, czy coś to pomoże. Dodaj sobie np. drugi output compare do tego licznika, który już masz. Jak zliczysz 6 wyłączeń...
Pytałeś o wybudzanie procesora, odpowiedz masz w linku dla przykładu klawiatury matrycowej. W ogóle lepiej zastosuj power-down A wybudzić możesz tylko stanem niskim przerwania int0. A jeśli chodzi o przerwania pin change warto zapoznać sie z rejestrami z tym związanymi a wszystko stanie się jasne. Chodzi o to ze przerwania zostaje wywołane, jeśli choć...
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...
Przerwania typu PCINT działają podczas zmiany stanu pinu, obojętnie czy to jest zbocze narastające czy opadające. Poprostu ma być to zmiana stanu, tak więc jeśli naciśniesz przycisk to przerwanie bedzie generowane dwa razy (w momencie naciśniećia i puszczenia). Natomiast inaczej jest w przypadku przerwań INT0 i INT1 gdzie możesz sobie wybrać kiedy ma...
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,...
Do kombinacji stanów można byłoby wykorzystać komparator 74HC682, zaś do detekcji zbocza wspomniane przerwanie PCINT i sprawdzanie stanu po jego zajściu -> do detekcji kierunku zbocza. W cytowanym wcześniej rozwiązaniu do próbkowania danych zastosowano zewnętrzną pamięć RAM i rejestry przesuwne (+ zatrzask na wejściu) taktowane sygnałem generowanym...
Mam Attiny2313 i zamierzam ją wykorzystać. Zdaje się, że Attiny2313 może przyjmować przerwania z 8 wejść. Owszem. Jest taka możliwość. Z tym, że zawsze jest to jedno przerwanie PCINT i do Ciebie zależy sprawdzenie jaka zmiana stanu wywołała to przerwanie. Ponadto znajduje się ono niżej w hierarchii przerwań układu. Stosowanie INT0 i INT1 jest moim...
Stanem aktywnym odbiornika jest stan niski, więc świecenie na odbiornik wywoła przerwanie. Chyba, że chcesz zrobić barierę podczerwieni. Wtedy możesz skorzystać z wejścia PCINT skonfigurowanych tak by przerwanie było wyzwalane zboczem narastającym.
Kamyczku - lepiej już zamilknij, bo pogrążasz się każdym zdaniem Nie życzę sobie takich zwrotów.... W ciągu sekundy jak się postarasz naciśniesz przycisk 4 razy więc 46 razy wykonasz to sprawdzenie bezsensownie . W pcint przerwanie wykona się 4 razy i wykona to te same dwa cykle . Plus cykle które wykonuje mikrokontroler przy skoku i powrocie z przerwania...
Witam! Napisałem na szybko taki oto kod: ;Cała Ramka w R26:R27 .include "tn13adef.inc" .cseg .org 0 rjmp Init .org 2 rjmp PCINT .org 10 Init: cli ldi r16,ramend out spl,r16 ;Stos ldi r16,32 out GIMSK,r16 ldi r16,1 out PCMSK,r16 ;Ustawienie Przerwania PCINT0 sbi ddrb,pb2 sbi ddrb,pb1 sbi portb,pb2 cbi portb,pb1 sei Main: ;Pętla...
(at)kaimaz Schemat masz w poście #6, dodatkowo pod PB2 jest podpięty moduł radiowy, kod załączam, płytka jak widzisz - zmontowane na uniwersalnej + pająk. Fusy - zegar ustawiony na 1.2MHz [syntax=c] /* Nazwa: DOMOFON Data: 2013-11-11 */ #include <avr/io.h> #include <util/delay.h> #include <avr/interrupt.h> #include <avr/pgmspace.h>...
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.
Inny jest adres portu dla CAi niektórych przycisków. Poza zmianą programu, w sprzęcie wystarczy tylko wymienić procek i kwarc a zyska się możliwość zmiany parametrów w czasie pracy generatora. Naturalnie do zrobienia. Tak jak w przypadku portu dla CA można to robić bez sprzętu (zdaje się zmiana w 2 miejscach w programie), to w przypadku klawiatury...
Dziękuję za odpowiedź. A czy da się przerwaniem PCINT zrobić zwykłe przerwanie ( tak jak np INT0) pracującego na zbocze? I jeszcze jedno - czy takie przerwanie pracować będzie na całym porcie? Można to ograniczyć do jednej nózki? Mam problem bo potrzebuje najlepiej 5 przerwań więc czy da się użyć tego PCINTA aby zrobić przerwanie na jakims Pinie procka?
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, Nie będzie działać poprawnie po popełniłeś jeszcze jeden błąd. Do momentu uśpienia wszystko jest ok, ale teraz następuje zmiana na porcie C, uP wstaje z uśpienia wykonywanie jest przerwanie pcint i teraz następuje powrót z przerwania. Powrót wykonywany jest jest nie do instrukcji SLEEP jak założyłeś a do pierwszej instrukcji po niej. Czyli następuje...
Przy "napieciu" powinno działać normalnie na krótkich przerwaniach. Weź tez poprawkę na to, że wentylator będzie miał inna prędkość stojąc w pionie a leżąc na płasko. Powinen działać normalnie i działa jak stosuje przerwanie INTx na PCINT są różnice rzedu 20%. A co do PWM - jeśli to 3 pinowy wentylator, to sterując od strony masy będziesz miał wyniki...
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...
Witam Mam impulsy (ok.100 impulsów) trwające 0,4us i powtarzające się co 5us (PinB.0) impulsy "0" z wysokiego stanu do masy. W czasie trwania tego impulsu na PinD pojawia się 8 bitów, które chcę zapisać do tablicy a potem chce je przeglądać. Mam jakieś przerwania bo X się zwiększa i dane w tablicy też ale to nie te dane. Czy to jest wykonalne na Atmega168...
hmmm dowolnym przerwaniem, a jeśli ma ich być wiele np 5 albo 6 to może wykorzystać nawet przerwania PCINT Ma być ich wiele i PCINT to jedyne rozwiązanie. Tylko, czy to będzie dobrze działało? Jak by miała wyglądać procedura przerwania od PCINT? Mogę prosić jakiś kod szkieletowy? Masz tyle kanałów ile chcesz, częstotliwość spokojnie można wyciągnąć...
Zmieniłem konfigurację ISC00 i ISC01 na wszystkie możliwe i procesor nie wybudza się - jedynie gdy dam wyzwalanie niskim poziomem. Po włączeniu zasilania, przerwanie można raz wywołać a potem procesor usypia się na stałe. Czy coś robię źle ? Dodano po 9 Chyba już rozumiem kolegę co napisał poprzedniego posta. Ja chcę budzić przerwaniem z INT0 a jak...
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.
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...
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...
Przyznaję się - moja wina Przyjąłem że to ustawia które przerwanie a nie że z którego banku pinów. Dziękuję
Zawsze możesz zrezygnować z PCINT i po prostu wybudzać uC co jakiś okres czasu i sprawdzać, czy się zmienił stan switcha.
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.
Oba timery z kontrolerka, wykorzystuję w trybie PWM, co koliduje z wykorzystaniem ich do generacji przerwania dla klawiatury. Otóż niekoniecznie. Timer skonfigurowany do PWMa może także generować przerwanie od przepełnienia.
W 328P masz PCINT na około procesora. Możesz wybrać dowolny pin i mieć z niego generowane przerwanie. To już nie jest babcia Mega8 :D
PCINT są wyzwalane tylko zmianą poziomu (Pin Change Interrupt) i nie da się go skonfigurować jako "falling"
Mam ustawiony timer na 4kHz [syntax=csharp]cli(); TCNT1 = 0; TCCR1 = 0; OCR1C = 249; // 4000 Hz (16000000/((249+1)*16)) OCR1A = OCR1C; TCCR1 |= (1 << CTC1); TCCR1 |= (1 << CS12) | (1 << CS10); TIMSK |= (1 << OCIE1A); sei();[/syntax] W przerwaniu timera machałem pinem [syntax=csharp]ISR(TIMER1_COMPA_vect) { //licznik timer1 przepełnienie...
Dziękuje za odpowiedź czy jedyna różnics pomiędzy prawaniami INTx a PCINTx to to ze PCINT reguje tylko na zmiane stanu na wyjsciu? Czy przewania PCINT wywoluje się tak samo jak INTx? I jak rozumiem by wszystko działało poprawnie to dla każdej odczytywanej prędkości wnetylatora muso być oddzielne przerwanie tak?
pcint przerwać pcint attiny pcint atmega
fibaro rolet dopasowanie filtru kwarcowego mikser dioda migać
sirio boomerang sirio boomerang
Mercedes MB100 – wymiana wkładki zamka w lewych drzwiach krok po kroku Nissan Terrano II 2.4 KA24E – moment dokręcania śrub głowicy, procedura, kolejność