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
Możesz czytać timer w przerwaniu INT lub PCINT
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.
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ć.
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...
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...
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...
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.
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...
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...
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ć...
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ń...
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...
Przerwanie PCINT w byle nowszej atmedze, np. m88. Masz ich tyle ile wolnych pinów.
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...
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.
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.
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?
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 :)
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.
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...
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...
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.
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...
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...
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! 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...
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...
Zawsze możesz zrezygnować z PCINT i po prostu wybudzać uC co jakiś okres czasu i sprawdzać, czy się zmienił stan switcha.
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.
Skróć czas kiedy przerwanie są zablokowane - wywal wysyłanie danych po RSie poza ten obszar kodu gdzie są zablokowane przerwania.
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...
Przyznaję się - moja wina Przyjąłem że to ustawia które przerwanie a nie że z którego banku pinów. Dziękuję
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
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...
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...
PCINT są wyzwalane tylko zmianą poziomu (Pin Change Interrupt) i nie da się go skonfigurować jako "falling"
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.
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ąć...
(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>...
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...
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?
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....
Coś te flagi przecież ustawiło... Najpierw włączasz obsługę tych przerwań, potem włączasz podciąganie pinu to flaga już ustawiona...a kasowana jest przez AVR sprzętowo kiedy obsługiwane jest przerwanie. Bascom nie musi obsługiwać żadnego kasowania flagi przerwania bo robi to sam procesor tyle, że w przerwaniu (jednym w wyjątków potwierdzających regułę...
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) PCINT reaguje na każda zmianę stanu na pinach (wybranych) także zwierając linię do masy wywołujesz przerwanie w którym sprawdzasz stan portu
Widziałem tysiące programów, ale jeszcze nie wiedziałem ani jednego, który wskakiwał by w przerwanie po to aby stwierdzić, ze nie ma co robić i wychodził z niego, wykonywał jeden obieg pętli głównej i tak w kółko. To jest bez sensu tym bardziej, ze tu można to rozwiązać (jeśli już muszą być przerwania od czujników) od zbocza. Przyznam, ze jestem ciekaw,...
przerwać pcint pcint attiny pcint atmega
arkusz google skrypt przesuwu taśmy prostownik regulacja tyrystor
avt3166 transformator avt3166 transformator
Brak Polsatu i TVN w telewizji naziemnej 2022 – DVB-T2/HEVC, MUX-2, dekodery, refarming Grzałka do wody – dobór, awarie, testy, marki, typy, montaż, bojler, Incoloy, AISI, PV