Po pierwsze...nie ma takiego przerwania PCINT w ATtiny. Konfigurujesz to w zupełnie inny sposób (BOTHEDGES). Po drugie z założenia nie patrzę na kody Arduino, gdyż nie jest to jakikolwiek rezerwuar jakichkolwiek rozwiązań. Z resztą nie w tym problem. Popełniam jakiś błąd programowy a nie koncepcyjny, gdyż zawsze działało to dobrze... R
Możesz czytać timer w przerwaniu INT lub PCINT
Warunek w if nie będzie spełniony bo raczej te kilka instrukcji w przerwaniu nie bedzie się wykonywać 20ms. Czas wykonywania tego ISR nie ma nic wspólnego z wartością _debounce_timer w momencie porównania.
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
snnaap dal rade - dzieki. Najwyrazniej problem jest w tym ze stan logiczny pinu nie nadaza za zmiana zbocza. O dziwo bardzo podobny kod do pierwotnego tylko na przerwaniu PCINT dziala normalnie. Jak by ktos potrzebowal: [syntax=c]GIMSK |= (1<<PCIE); PCMSK |= (1<<PCINT1); ISR (PCINT0_vect) { if (PINB & (1<<PB1)) { ledon; } else...
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...
A, że tak dopytam...... tatuś się ni w ząb na tym nie zna? a chce zamieniać scalaka? tzn jak? - sam będzie go programował ? jeśli tak to czym? - tzn czy ma kod źródłowy, który można przekompilować ? bo jeśli ma - to można sobie czasami jeszcze z tymi różnicami poradzić o ile są one istotne w kodzie właśnie. (bo tak jakoś od tyłka strony podchodzisz...
Soreczki zły tytuł attiny oczywiście :D. Ale port jest bo jest podłaczony i go czytam programem.
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...
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...
Witam, Chce uruchomić przerwanie PCINT0, z tego, co zrozumiałem, z datasheeta to muszę ustawić odpowiedni bit w rejestrze PCMSK, bit PCIE w GIMSK. Nie znalazłem żadnej konfiguracji przerwań PCINT, ale z tego, co wyczytałem to one działają tylko na zmianę stanu na odpowiednim pinie. Do pinu z PCINT0 podłączyłem przycisk zwierany do masy. Jednak, gdy...
W nocie aplikacyjnej, w rozdziale External Interrupts masz bardzo ładnie opisaną różnicę pomiędzy INT0 a PCINT5..0. PCINT5..0, Pin Change INTerrupts, reaguje na zmianę stanu na pinach. INT0 może reagować także na poziom niski lub tylko wybraną zmianę (zbocze), to jest jedna z różnic pomiędzy tymi właśnie przerwaniami. Obsługa nie powinna różnić się...
Mianowicie piny które wykorzystuje komparator są u mnie na stałe wykorzystywane jako wejścia komparatora, dodatkowo jeszcze pod 2 piny portu B mam podłączone przyciski i uaktywnione na nich przerwania (rejestr PCMSK - chyba), i nie wykonuje się przerwanie od AC ani od PCINTxx, oba są głuche a uprzednio gdy wykorzystywałem sam AC to wszystko działało....
Witam! Przepatrzyłem już chyba pół forum ale dalej nie znalazłem odpowiedzi na moje pytanie. Otóż chciałbym w C zaprogramować przerwanie np PCINT0 dla Attiny2313 i wywala mi błąd, że nie rozpoznaje sygnału PCINT0_vect. W nocie katalogowej to przerwanie tyczy się do pinu PB0 i tak go ustawiłem. Szukałem rozwiązania w manualu bibliotek i znalazłem, że...
witam mam mały problem napisałem taki program ma byc on na attiny13 :) $regfile = "attiny13.dat" Config Portb.2 = Output Config Int0 = Falling Enable Interrupts Enable Int0 On Int0 Czekaj Set Portb.2 Do Loop End Czekaj: Reset Portb.2 Waitms 5 Set Portb.2 Return Kiedy na wejscie podamy 0 to na wyjsciu ma sie pojawić 0 przez 5ms i po tych 5ms stan wyjscia...
Witam Potrzebuję programik na attiny2313 napisany w bascom. Mam ten procek , oscyloskop i trochę ogarniam bascoma a potrzebuje to dopasować do zepsutego urzadzenia. Podane czasy są orientacyjne , wyliczone na kartce. Te czasy będę musiał dopasować , stąd potrzebuję to w bascom , opóźnienia związane z obsługą "coś ma zrobić" są nieistotne , skoryguję...
Witam! Mam taki oto kod: #include <avr/io.h> #include <avr/interrupt.h> #define F_CPU 10000000UL #include <util/delay.h> char znaki[10]={48, 49, 50, 51, 52, 53, 54, 55, 56, 57}; //znaki ASCII: 0 12 3 4 5 6 7 8 9 volatile uint16_t m_sekundy_wtrysk=0, m_sekundy_obr=0, licznik_z, wynik_z; //dokładność od 0.1ms do...
Witam Napisałem poniższy prosty program który po 6 zmianach stanu na nóżce int0 (PB2) wykonuje przerwanie. include "tn15def.inc" .def acc = r16 ;nadanie rejestrowi r16 nazwy symbolicznej .def licz1 = r20 .def licz2 = r21 .def licz3 = r22 .org 0x00 rjmp pocz .org 0x06 rjmp timer0 .org 0x0B ; -- POCZĄTKOWE USTAWIENIA SPRZĘTOWE -- pocz: ldi...
Witam Posiadam kontaktron zwierny (bez pola magnetycznego rozwarty, po przysunięciu magnesu zwarty). Chciałem, aby przerwanie INT0 ustawić w tryb reagowania na zbocze opadające: ISR(INT0_vect) { //Stan niski //Zmień zapalanie diody PORTB^=_BV(3); } int main(void) { ... //DDRB 3-jako wy (dioda led z R-1k),...
Witam Podlaczylem dwa microswiche do Int0 i int1 i masy i probuje taki programik na zwiekasznie i zmniejszanie zmiennej, lecz procesor nie reaguje na przyciski, dlaczego? $regfile = "2313def.dat" $crystal = 8000000 Dim Z As Byte Config Int1 = Low Level Config Int0 = Low Level Config Lcd = 16 * 1a ' konfiguacja wyświetlacza Lcd Enable Interrupts...
Mam program, tak jak poniżej, nie reaguje na przerwanie z int0 i int1. Program ma sterować silnikami od drzwi garażowych '--------------------Sterownik bramy by Peter507------------------------------' Enable Interrupts Enable Int0 Enable Int1 On Int0 Przerwanie On Int1 Przerwanie1 Dim Licznik As Byte , Licznik1 As Byte , Stan_bramy As Byte , Opcja1...
Problem za pewne wynika z użycia dość mało popularnego procka attiny24a, dlatego też w googlach nie ma za dużo info. W 99% oparłem się o datasheet. Co robię źle: [syntax=cpp]#include <avr/io.h> #include <avr/interrupt.h> int main(void) { DDRA=(1<<DDA3)|(1<<DDA7); DDRB=0; MCUCR=1<<ISC00; GIMSK=1<<INT0; sei(); while(1)...
Poprawiłem tytuł na bardziej oddający problem i zgodny z regulaminem p. 3.1.15. Ponadto proszę się zapoznać z zasadami korzystania z działu: http://www.elektroda.pl/rtvforum/topic34... LordBlick Witajcie. Oświećcie mnie dlaczego ten program nie działa tak jak powinien. Przełączam przełącznik który pin PB1 zwiera do masy (pojawia się zbocze opadające...
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...
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.
Usuń <br/> z końca linka, bo przez to link nie działa. Pytanie, czy te wolne piny zostawiłeś w powietrzu. Bo one generują przerwanie, więc jeśli "dyndają", to w kółko wystawiany może być stan wysoki, który powinien po tych 304us zejść na niski, ale może nie zdążyć przez kolejne przerwania generowane przez "dyndadła". Wyobraź sobie, że to wykonuje...
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ć...
Witam, mam problem z obsługą przerwań zewnętrznych INT0 oraz INT1 w symulatorze (Simulator). Piszę w AVR Studio 4.19, gdyż Atmel Studio nie ma symulatora dla ATtiny87. Popatrzcie na ten banalny kod (okroiłem pierwotny kod do absolutnego minimum): [syntax=c] #include <avr/interrupt.h> unsigned char i; ISR(INT0_vect) //interrupt at PB6 { i++; }...
Witam! Ze względu na niedokładność funkcji waitms(); postanowiłem uruchomić licznik TC1 w ATTINY2313. Ma to być obsługa pilota (prawdopodobnie JVC). Więcej danych: - ATTINY pracuje z częstotliwością 1MHz (wewnętrzny oscylator) - TC0 jest już zajęty innymi działaniami (w czasie obsługi pilota TC0 nie musi pracować) - czas, który chcę odczekać to 14700us...
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...
2. Och te upały - oczywiście ustawia, a nie zapamiętuje :) 1. W teście powyżej INT0 nie ma włączonej obsługi przerwań (fragment jest zakomentowany), ale dla testów funkcję obsługi przerwania zostawiłem. Oba przerwania mają na swoich pinach włączone pull-up więc operowanie nimi odbywa się przez podanie stanu niskiego na pin, czyli przez zwarcie do masy....
Jeśli Attiny ma działać jako proxy pomiędzy enkoderem, a radiem, to zrobiłbym to na przerwaniach. Tak, jak TMF pisał, to parę linijek kodu. [syntax=c]#include <avr/interrupt.h> int main(void) { DDRB |= (1<<PB3)|(1<<PB4); // set as outputs PORTB |= (1<<PB0)|(1<<PB1); // pull-up resistors proxy(); // set initial values before...
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...
Czy taki algorytm jest zamierzony? [syntax=c]ISR(PCINT_vect) //pilot-obsługa przerwania generowanego z PCINT0 { if(a==1) //zmienna a wprowadzona dla obsługi co 2-giego zbocza (wykrywane jest każde) { ... a=0; } else a=1; }[/syntax]
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...
:arrow: robię mały projekt: jeden słupek potrójnej sygnalizacji świetlnej, z przyciskiem, który będzie służył do zmiany długości cyklu świateł (jeden z pięciu predefiniowanych). :arrow: na chwilę obecną mam działające światełka, dodałem przerwanie przycisku (będąc świadomym jego prymitywności/braku poprawności działania), teraz chciałem dodać timer...
Aktualnie programuje w IDE, więc jeśli dobrze rozumiem, to przerwanie na 1 pinie ATtiny85, które będzie się aktywowało przy przejściu ze stanu niskiego w wysoki, będzie wyglądało tak : Nie, nie będzie....(!) Zauważ ze Attiny 85 nie posiada interruptu INT1; ma tylko INT0 na pinie 7 (po przemapowaniu w arduino jest to pin 2). Referujesz dalej „...
Hej. Moim zdaniem wyeliminowanie R2 spowoduje na dłuższą metę (o ile już nie spowodowało) uszkodzenie diody. Jedyne co ją teraz ratuje, to że pracuje impulsowo. Tak długich odcinków uśpienia nie osiągniesz. Z uśpienia, z tego co pamiętam, może wybudzić tylko WDT (watch dog timer) w trybie przerwania (nie resetu). Tam możesz ustawić maksymalnie 8s. Oczywiście...
Ma on poprostu określić czy koło się kręci czy też nie. Z jaka prędkością kręci się koło? 25ms? W kodzie znalazłem Waitms 100 Loop Nie ma formatowania i ciężko to się analizuje, w konsekwencji, bez zgłębiania "tajników" kodu nie wiem gdzie jest te 100ms. Jeśli w pętli głównej, to znaczy, że max 10 razy na sekundę coś tam jest sprawdzane. Jeśli zmiana...
wróciłem i sprawdziłem i coś jeszcze nie tak po zmianach w kodzie µK już nie startuje z sekwencją tylko idzie spać... Tylko że jak go obudzę to jest zły i wykonuje sekwencje losową ilość razy... zmieniłem też trochę sekwencję i zastanawia mnie dlaczego polecenie cbr r16, (1<<portb1) gasiło mi 2 diody na raz (po uprzednim ich zapaleniu)....
Witam serdecznie. Mam do pinów PB[7...5] oraz pinów PA[2...1] podpięte przyciski. Piny te oczywiście konfiguruję jako wejścia z wewnętrznym podciąganiem i chciałbym zrealizować na tym sprzęcie klawiaturę obsługiwaną w przerwaniach. Ale nie chciałbym przy realizacji tego zadania wykorzystywać przerwań INT[0...1] tylko przerwania PCINT występujące na...
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...
W projekcie założyłem sobie dwa przerwania z dwóch timerów. Jedno (nazwijmy je A) wywoływane często i krytyczne czasowo (przerwanie musi być obsłużone jak najszybciej po jego pojawieniu się), trwające tylko kilkanaście cykli. Drugie (B) mniej krytyczne (właściwie w ogóle nie krytyczne), wołane rzadziej, trwające kilkaset cykli. Główna pętla programu...
Kolego dondu: deklaracja zmiennej licznik: unsigned long int licznik=0;//zmienna globalna licznik Fuse bity ustawione prawidłowo (temat wałkowany setki razy).Zegar definiowałem początkowo w ustawieniach konfiguracyjnych AVR Studio, później gdy zaczęły się problemy przez #define F_CPU. Do mirekk36: Timer sprzętowy działa bardzo dobrze i precyzyjnie....
Witam, Piszę program na ATtiny13A, aby działał jak licznik mod 4 (piny PB0 i PB1), zmiana wyzwalana zboczem opadającym na PB3. Rozwiązanie opiera się na przerwaniach. PCINT3 to obsługa "przycisku" -> naciśnięcie powoduje uruchomienie timera (ustawienie adekwatnego przerwania). Obsługa przerwania timera zwiększa licznik przepełnień - po ok2 sek wyłącza...
Witam. Piszę program w środowisku AVR Studio używając kompilatora WinAVR. Mikroprocesor wymieniony powyżej posiada wejścia jeszcze wejścia od PCINT0 do PCINT4. Jaki jest wektor przerwania do każdego z nich? Z tego co mi sie udało ustalić to odblokowywanie każdego z nich dokonuje sie za pomocą rejestru "PCMSK – Pin Change Mask Register", natomiast...
Panel dotykowy z 6 diodami sterowany po i2c na ATTINY44 Poniższy materiał przedstawia próbę ugryzienia tematu krytycznych zależności czasowych w asemblerze. Zadaniem było stworzenie stabilnie działającej aplikacji która obsłuży: komunikację z procesorem nadrzędnym w trybie slave i2c sterowanie multipleksowanymi diodami z 8bitowa regulacja jasności...
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ć...
http://obrazki.elektroda.pl/3207877000_1... http://obrazki.elektroda.pl/9634776400_1... http://obrazki.elektroda.pl/8673988800_1... http://obrazki.elektroda.pl/3005768300_1... Termometr z funkcją pamiętania maksimum i minimum (zapisane w rejestrach, tracone przy braku zasilania). Program...
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...
Łopatologicznie: 1. zgłasza się przerwanie ze zbocza opadającego. wywołana jest procedura jego obsługi. jesteśmy teraz w niej. 2. włączasz licznik by zliczał impulsy zegarowe przez prescaler. 3. czekasz tak długo aź stan na INT0 się zmieni na przeciwny - koniec impulsu. 4. zatrzymujesz licznik. odczytujesz zawartosc licznika i zapamiętujesz w zmiennej....
To ciekawe bo na 31 stronie tejże dokumentacji: http://www.atmel.com/dyn/resources/prod_... Jest tabelka... wg. procek reaguje na INT1 a także na przerwania PCINT Zresztą na przerwania od INT1 na pewno reaguje bo sam to przed chwilą sprawdziłem.
Co do przerwań... to chodzi mnie o podawanie sygnału na INT0, czy należy: wybrać typ sygnału zgłaszającego przerwanie (ustawiłem na narastające) aktywowac bit I w rejestrze SREG i ustawić odpowiednią maskę w rekestrze GIMSK, co wszystko zrobiłem. Coś przeoczyłęm? Chyba niepotrzebnie generowałem w rejstr PCMSK... Natomiast co do Timera...to przerwania...
jak wyglada sprawa programowania ATTiny13 w przypadku gdy w docelowym ukladzie bede wykorzystywal pin PB5 jako wyjscie czy trzeba cos przelaczac zeby pin PB5 przestawic z funkcji RESET na zwykly pin ?? i co to jest za opcja dW na tym pinie ?? mamjeszcze pytanie do stanu uspienia czy procesor moge wybudzic za pomoca dowolnego przerwania np PCINT2 ??
Nie spotkałem w bascomie funkcji do konfiguracji Pin change innterrupt ani przerwania od watchdoga, ale oczywiście można to zrobić na rejestrach. W bascomie nie znam zawartości pliku ATtiny44.dat Czy oprócz nazw rejestrów są jeszcze bity? [syntax=basic4gl]$regfile = "ATtiny44.dat" Dim Praca as Bit Praca = 0 Config PINA.5 = Input PORTA.5 = 1 'włącz wewnętrzne...
Mam pytanie odnośnie kodu. Dlaczego ustawiasz bity ISC00, ISC01 i aktywujesz przerwanie INT0, skoro do wysyłania impulsów używasz przerwania PinChange? Czy to jest wymagane do wybudzenia uP ze stanu uśpienia? Pytam, bo dziś za nic nie mogłem zmusić mojego ATTiny13 do wybudzenia się za pomocą przerwania PCINT.
AT90S2313 to starszy brat ATtiny2313. Ten drugi ma większe możliwości, co ważne ma już wbudowany wewn. oscylator dzięki czemu nie zawsze trzeba stosować rezonator kwarcowy (nawet przy transmisji RS232). Oczywiście, że można go programować za pomocą PonyProg'a - tylko zassij sobie najnowszą wersję 2.06f beta. Co do pisania programów to tak samo jak na...
Witam Zacząłem nowy miniprojekt i wyszło, że najlepiej byłoby użyć dwóch linii PWM. Ponieważ mam pod ręką sporo ATTiny13, postanowiłem wykorzystać ten typ. W dokumantacji napisano i to chyba nawet kilka razy, że ATTiny13 posiada dwa niezależne komparatory. No to napisałem: #include <avr/io.h> #include <stdint.h> #include <avr/interrupt.h>...
A jakie zastosujesz czujniki do pomiaru tych prędkości? Podejrzewam że te obrotomierze wykorzystywały przerwania tylko na INT0 i INT1 a nie na PCINT7...0. str.62 dokumentacji.
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...
przerwania pcint pcint attiny attiny pcint
ekspres krups konserwacja instalacja windows toshiba satellite dźwięk opóźnić
fotowoltaika instalacja wyłącznik bezprzewodowy
Kolory gniazd SATA na płytach głównych ASUS, MSI, Gigabyte – znaczenie i różnice TCL TV Single Board VGH Oscillating 30V–10V With Panel Disconnected – Fault Analysis and Repair