Możesz czytać timer w przerwaniu INT lub PCINT
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ń...
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
Soreczki zły tytuł attiny oczywiście :D. Ale port jest bo jest podłaczony i go czytam programem.
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...
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...
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ć...
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.
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.
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...
Zrób coś takiego (pisane z palca, więc może wymagać poprawek). Zdecydowanie. Brakuje funkcji config_timer(), config_sleep(), config_ports(). Dodatkowo jak się zagłebisz w peryferia attiny 13 to zobaczysz, że Twój pomysł z timerem jest niestety nie trafiony. Proponuję coś takiego: [syntax=c]#include <avr/io.h> #include <stdint.h> #include...
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. 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
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...
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ć.
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.
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....
Z tym, że tablice musiałbym wcześniej wpisać w program, a mi chodzi o to, by "uczyć" tego robota danego zadania. Jeśli zmieniłbym odległośc punktu A od B i znowu postawił przeszkode, w którą by robot uderzył, to wtedy ponownie musiałby zapamiętać nową trase. Przy czym jeśli działałbym w obrębie pamięci RAM, kasowałbym ją po prostu resetem zasilania....
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...
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...
Programik dla AVT3500 z ATTiny2313: ; Henryk Więsyk ; 16.10.2007 ; wersja 1.0 - przerobiona na ATTiny2313 ; Dioda do masy z OC0A ; Wewnętrzny oscylator ustawiony na 1MHz (RC(at)8MHZ + CLKDIV8) .include "tn2313def.inc" ;***************************************... ; Definicje ;***************************************... .def czas1...
ISR(PCINT0_vect) { ... // Code to handle the event. } ISR(PCINT1_vect, ISR_ALIASOF(PCINT0_vect)); http://www.nongnu.org/avr-libc/user-manu...
Kolego zobacz. Nie jestem asem asemblera, ale lubię się uczyć. Wydaje mi się, że ten kod nie jest skomplikowany :D W tym kodzie z wyjściami chwilowymi ustawiany jest jeden z bitów portu a reszta wyłączana. Odpowiadają za to instrukcje SBI - Set Bit I/O Register - Ustaw Bit w rejestrze portu CBI - Clear Bit I/O Register - Skasj Bit w rejestrze portu...
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...
ISR (PCINT0_vect) // Slider switch { .... return; } ... ISR (PCINT3_vect) { ... return; } Returny są niepotrzebne (aczkolwiek nie szkodzą). ADCSRA &= ~(1<<ADEN); // Wylaczenie ADC To za mało, peryferiom (dotyczy to także UART czy I2C) trzeba także "wyłączyć prąd". Najlepiej, zamiast bawić się rejestrem PRR skorzystać z gotowych makr dostarczanych...
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++; }...
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 „...
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! 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...
http://obrazki.elektroda.pl/7214276300_1... Pilot oparty na projekcie http://www.bigmike.it/ircontrol/ jednak zbudowany na mniejszym attiny13, myślę że można by zastosować dostępny na Allegro attiny4. Zasada działania jest dość prosta. Po uruchomieniu podzespołów (timera i przerwań) attiny przechodzi w tryb power-down, w którym oczekuje...
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...
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...
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...
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...
Witam. Piszę mały program na ATetiny 13. Program ma wyglądać tak że po każdej 1 sek ma sprawdzać ilość przerwań o ile zliczanie przerwań działa to niestety gdy dodałem do tego Timer przestało cokolwiek reagować. taktowanie procka to 9,6 MHz Jak chciałem ustawić timer: tryb CTC preskaler 1024 wychodzi wtedy 9375 cyki nadal za dużo do wpisania więc po...
http://obrazki.elektroda.pl/4301568800_1... Autor poniższej konstrukcji przedstawiał już podobny układ - miniaturowy zegarek oparty o ATtiny ( Krok 1: Przygotowania http://obrazki.elektroda.pl/4194769400_1... Mikrokontroler Układ oparty jest o mikrokontrolery AVR firmy Atmel ATtiny85. Autor wykorzystał element w obudowie...
: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...
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...
Jakie są polecania w bascom do obsługi pcint0 potrzebuje uruchomić to przerwanie w attiny 13. Gdyby ktoś jeszcze wiedział czym sie różni to przerwanie od ont0 to byłbym wdzięczny za podzielenie sie wiedzą.
Dzięki za odzew :) Odpowiadam po kolei: - debugger - odpalam wbudowany symulator - sleep_mode - nie wejdzie w obslugę TIM0_OVF, to przerwanie włączone zostaje po naciśnięciu przycisku - sugerowana zmiana ustawień nie poprawiła sytuacji ... Jednak udało mi się rozwiązać problem. Miałem breakpoint ustawiony w linii: [syntax=cpp] ISR(PCINT0_vect){ if(button_down()){...
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....
Może źle zrozumiałem pierwszy post, ale przyciski podłączone do PA nie wygenerują przerwania PCINT(patrz nota katalogowa). A no tak, masz rację. :) W przypadku ATtiny2313 na PA nie będzie PCINT, ale w przypadku ATtiny2313A już tak, bo w tej wersji procesora dodali obsługę PCINT na każdym pinie każdego portu. Ja posługuję się DS'em od ATtiny2313A i...
No wiec spłodziłem takie coś. Problem taki że czasami przy resetowaniu/załączaniu układu zapala się czerwona dioda błędu (warunek if (czas>85 && czas<95) jest nie spełniony) Podłączenia do int0 poprzez pc814 (od strony 230v rezystory 100k, od strony attiny 20k) [syntax=c] #define CTC_ON TIMSK0 |= (1 << OCIE0A); #define CTC_OF TIMSK0...
Witam Podane wyżej wartości pochodziły od stabilizatora 7805, po podłączeniu do źródła 4,5V, mam 1,2mA, po przejściu w tryb IDLE 0,9mA, w tryb PowerDown 0,7mA. Niestety te 0,7mA pobiera układ nadajnika RF, a nie powinien włączyłem go jak na schemacie poniżej przez tranzystor npn BC547B: http://obrazki.elektroda.net/22_12607763... DDRB dla tego pinu...
Się tu kolega (at)jacekcz chyba zapędził. Ten uC ma 64B SRAM i 1KB FLASH. To co tu się "próbuje dziać" to to, że Pomiary ADC są robione w przerwaniu co czas okreslony Watchdogiem, ale to rozwiązanie od razu wybudza też uC z głębokiego snu POWERDOWN (jeśli w nim był) i tylko Watchdog, PCINT albo LOW_LEVEL może uC z tego wybudzić uC. Tak więc po co dokładać...
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,...
Poniżej działający program, może komuś się przyda, zamiast wewnętrznego podciągnięcia dałem zewnętrzny 1Mohm. Podczas uśpienia układ pobiera albo 1uA albo 6uA (6uA w sytuacji gdy czujnik się zawiesi, co powoduje że na wejściu procesora jest stan niski): #include <avr/io.h> #include <compat/deprecated.h> #include <util/delay.h> #include...
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)....
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...
Witam Próbuję napisać obsługę pilota, który używa kodowania [url=http://www.ustr.net/infrared/nec.sh... Następnie chcę przesłać kod na okno terminala za pomocą USART. Próbuję to realizować bez użycia funkcji typu delay_ms(), zamiast tego chcę użyć przerwań. Idea jest taka, że po pojawieniu się pierwszego zbocza od odbiornika podczerwieni, wywoływane...
attiny pcint przerwania pcint attiny przerwania pcint
lodówki bosch opinie wkładka przedwzmacniacz kupię silnik prądu stałego
efektywność energetyczna kotłów opencore patcher
Dlaczego grzejnik olejowy nie grzeje? Przyczyny i rozwiązania Szlifierka Flex odcina prąd co kilka sekund - przyczyny i rozwiązania