500ms to trochę za dużo jak na drgania styków. To jest microswitch czy jakiś przycisk przemysłowy? Spróbuj wyzwalać przerwanie stanem niskim a nie zboczem opadającym. Ustawiając inny zegar nie spalisz chipu. Co najwyżej ustawiając niższy zegar niż dotychczas możesz mieć problemy z zaprogramowaniem jeśli nie zmienisz też częstotliwości w programatorze....
PA1 to nie jest nóżka związana z INT1! Pod PA1 siedzi PC INT1 - Pin Change Interrupt. "Zwykłe" przerwanie zewnętrzne INT1 to nóżka PD3 ;)
Witam, Zmagam się z problemem przerwania w Atmega 8. Bez zagłębiania się w szczegóły mojego projektu, dajcie mi prosze znac czy to normalne zachowanie: 1. Przycisk S1 oraz Impulsator z przyciskiem S2. Impulsatorem "chodzę" sobie po menu i klikam przycisk impulsatora S2, który akurat w tej pętli nic nie robi, przerwania sa wyłączone cli(); ale uruchomione...
https://obrazki.elektroda.pl/9337556500_... Pewna wyjątkowa osoba zasługiwała na równie wyjątkowy prezent, a że nie jestem fanem kupowania niespodzianek, postanowiłem "zrobić" coś własnym rękami. 1. Wstęp, motywacja 2. Zarys konstrukcji 3. Płytka z diodami - projekt (łączenie diod) 4. Płytka z diodami - projekt (zatrzaski) 5. Eagle...
http://obrazki.elektroda.pl/1346988200_1... Witam, jako że nie mam żadnej porządnej płytki startowej z mikrokontrolerem i innymi układami, do łączenia prototypów układów, czy też prostych obwodów do nauki/ćwiczenia programowania używam lubianej chyba przez wszystkich płytki stykowej. Choć połączenie każdego nowego obwodu wymaga więcej...
http://obrazki.elektroda.pl/3499461100_1... Jest to bardzo specyficzna konstrukcja i prawie na pewno nikomu oprócz mnie nie przyda się w tej konkretnej postaci jaką tu opisuję, ale zawsze pozostają walory edukacyjne, nauczenie się jak coś zrobić albo jak czegoś w żadnym wypadku nie robić :D Urządzenie jest protezą dzięki której omijam...
http://obrazki.elektroda.pl/9589280700_1... HPS 2014 Hybrydowy laboratoryjny zasilacz sieciowy. Parametry użytkowe zasilacza w skrócie: 1. Wykorzystanie tanich i łatwo dostępnych elementów. 2. Wydajność prądowa min 3A (dla niskich napięć może dochodzić do 5A). 3. Rozdzielczość DAC 12bit. (filtrowany PWM 4.9kHz) 4. Rozdzielczość ADC...
To akurat może być. Słuzy to do progamowego wyzwalania tego przerwania, jak jest taka potrzeba. wiem, ale podłączyłem do portu INT1 przycisk więc to nie ten przypadek :) A jak za chwilę będzie chciał włączyć pull-up dla przycisku i weźmiemy pod uwagę, że robi się to tak: If PORTxn is written to '1' when the pin is configured as an input pin, the pull-up...
Po kilku godzinach program odpaliłem ..... podświetlanie się załącza dopiero po naciśnięciu kilka razy klawisza, monitor pokazuje start i numery naciśnietych klawiszy i to nie za każdym naciśnięciem. nie wiem jak "zatrzymać" dany ekran menu żeby zrealizować inna funkcje np; zmiana stanu wyjścia /* * sterownik który wykończy mnie i innych ..............
[syntax=c]If ((!(PIND &0x03)) | (!(PIND & 0x06)) | ((!(PIND & 0x05))) { PORTA = 0x00;}[/syntax] to jest złe. a przerwanie? troszkę później się ty zajmij. przy przyciskach występują drgania styków. A to sprawi ci klopot
Witam, Napisałem program, który wprowadza uC w stan uśpienia. Wszystko działa poprawnie, ale do tej operacji używam dwóch przycisków. Jeden służy mi do usypiania (PA1), a drugi, jako przerwanie do wybudzania uC (PD2-INT0). W jaki sposób mogę zrobić to na jednym przycisku podpiętym pod PD2? Poniżej kod. [syntax=c]#define F_CPU 8000000UL /*czestotliwosc...
Witam mam jedno pytanie napisalem programik z dwiema diodami i mikroprzelacznikami: [syntax=c] #define F_CPU 1000000L #include <avr/io.h> #include <util/delay.h> int main(void) { /*port PD1 i PD2 beda wyjsciami*/ DDRD = 0x06; /*port PC1 i PC2 beda wejsciami z podciagnieciem Vcc*/ DDRC = 0x00; PORTC = 0x06; { while(1) /*jesli pierwszy wcisniety...
Witam Serdecznie PanowieTemat mam pewiennieaktualny problem a mianowicie zrobiłem ten sterownik http://mirley.firlej.org/prosty_sterowni... wszystko ładnie się zaprogramowało fuse bity ustawione po załączeniu działają wszystkie funkcje lecz niestety nie pokazuje mi temperatury niby trzeba trzymać przycisk s1 na pierwszy cujnik ds18b20 i go wpisać...
Witam Otóż mam taki dylemat ... Mam taki prosty programik robiący mi za licznik modulo 8. Samo liczenie odbywa się w przerwaniu timer'a ale to nie jest kwestia którą chce poruszyć. Po wywołaniu zewnętrznego przerwania, nie da się go przez czas paru/parunastu sekund wywołać. Czego to może być wina ? (pomijając że moja). Czy przypadkiem nie powinno to...
dodaj pętle nieskończoną na końcu ...i zmień nazwę wektora na INT0_vect . Druga i niestety MASAKRA jaką robisz to _delay_ms() w przerwaniu. Jak napisał Mirek, w przerwaniach nie używamy żadnych "delay"(!) W ogóle nie używamy _delay() -nie tylko w przerwaniach. Czyżbyście cierpieli na jakąś manię prześladowczą :?: Poza tym- po co jest to kasowanie flagi...
Witam, napisałem program, w którym chciałem użyć przerwania do zliczania ilości naciśnięć, ale program nie działa prawidłowo, nie zlicza równomiernie, tak jakbym za jednym naciśnięciem naliczało po 2 czy 3 razy, oto kod programu: /* Program obsługujący przerwania, po naciśnięciu przycisku podpiętego pod PD2 (INT0) Diody zapalają się kolejno...
Próbuję zrozumieć działanie przerwań i coś mi to nie wychodzi, chciałem uzyskać efekt że po naciśnięciu przycisku program który jest w pętli nieskonczonej obsługuje przerywanie ale mi to nie wychodzi, o to fragmenty kodu: #include <avr/io.h> #include <avr/interrupt.h> #include <avr/signal.h> ENABLE_INT0_FLAGING; waitms(unsigned...
Witam. Mam problem z przerwaniem zewnętrznym Int0 w Atmega8. Chodzi o to, żeby po naciśnięciu przycisku podłączonego do końcówki Int0 wykonała się procedura obsługi przerwania. Napisałem wręcz helpowy program i nie działa. Jest takie coś, że od razu po włączeniu procka wykonywane jest przerwanie (na dodatek przez cały czas). Próbowałem też wyłączyć...
Witam Mimo, że większość proponowanych tutaj rozwiązań podłączenia RFM12 do Atmegi wykorzystuje SPI programowe, ja podłączyłem tradycyjnie, przez SPI sprzętowe - mimo, że nie miałem problemów z wgrywaniem kodu do Atmegi spiętej z RFM12, to uruchomienie ich razem jest problematyczne ( każde osobno działa bez problemu ) [syntax=basic4gl] $include "Config_AVR-DOS.BAS"...
$regfile = "m8def.dat" $crystal = 1000000 Config Portc.5 = Input Config Portc.4 = Output Config Portb.0 = Output Portb.0 = 1 Portc.5 = 0 Portc.4 = 0 Do If Pinc.4 = 1 Then Portb.0 = 0 Else Portb.1 = 1 End If Loop End Portb.0 to dioda która ma gasnąć jeżeli naciśnie się przycisk (portc.4). Przycisk(krańcówka) podłączony jest z jednej strony...
Sami zobaczcie: http://youtu.be/muACJfkTm4c Oto prosty kod jaki napisałem: Czy ktoś wie o co chodzi? :D
1. Nie włączasz podciągania na pinach przerwań - to znaczy, że może na nich przy braku zwarcia do masy występować zarówno 0 jak i 1 - przerwania mogą szaleć Nie jestem pewny czy o to Ci chodzi ale przyciski gdy są rozwarte połączone są z zasilaniem 5 V przez rezystor 1k natomiast po przyciśnięciu go jest połączony z masą, więc wydaje mi się że może...
Witam! Mam mały problem. Od kilku godzin próbuję ustalić przyczynę braku możliwości obsługi przerwania w moim zestawie EVB 5.1 z ATMega 32. Mianowicie, próbowałem wszystkich możliwych opcji uruchomienia przerwania poprzez naciśnięcie przycisku i niestety nie wychodzi. Po naciśnięciu przycisku 3 diody mają zostać wyłączane/włączane zależnie od poprzedniego...
faktycznie, jakoś dziwnie sie skompilowało http://obrazki.elektroda.pl/1706551800_1... na powyższym zdjeciu biblioteka NExConfig.h, wcześniej było Serial2, zmieniłem na Serial1. Tu juz nie jestem pewien czy Serial1 to USART1? Jeżeli chodzi o przerwania USART idące po RS to wszystko jest w bibliotece Nextion.h niestety i nie wiem jak...
Witam. Procesor ATmega32 Założenia programu: Dioda ma się palić przez czas trzymania przycisku (zwarcie do masy). W momencie puszczenia przycisku, dioda ma zgasnąć (potencjał VCC na pinie IMIT0 dzięki wewnętrznemu rezystorowi podciągającemu) Rzeczywistość: Po naciśnięciu i trzymaniu przycisku dioda zapala się i pali ale gdy puszczę przycisk, dioda nadal...
Mam przerwanie na INT1, ustawiam je tak: EICRA = _BV(ISC11) | _BV(ISC10); EIMSK = _BV(INT1); Jest ono wyzwalane na rosnące zbocze. I działa, jak podaje na pin 5V to przerwanie występuje, ale występuje cały czas. Tzn nie raz przy narastającym zboczu, a cały czas, kiedy występuje 5V na pinie. Przerwanie wykonuje się non stop od początku, dlaczego? Przecież...
Jestem w trakcie tworzenia sobie menu swietlnego, pomysl gdzies tam podpatrzylem w internecie , spodobal mi sie i chcialem go zrealizowac a przy okazji lepiej poznac C. Ale napotkalem pewien problem. Otoz program ma dzialac tak by po przycisnieciu s1 mozna by bylo wybrac konkretna funkcje programu. Przycisk s2 mialby uruchamiac i zatrzymywac dana funkcje...
Używam PWM do generowania różnych współ. wypełnienia dla diody RGB. Jeden przycisk jest odpowiedzialny za zmienianie trybów, jest on podłączony do INT0 (pin pracuje jako wej. z podciąganiem do plusa, a przycisk podpięty do masy). W skrócie, gdy zostaje naciśniety przycisk program wchodzi do obsługi przerwania, inkrementuje zmienna m. Gdy wychodzi z...
witam , nie wiem w jaki sposób rozwiązać zatrzymanie pętli programu do chwili naciśnięcia przycisku układ ma działać tak ze mamy 4 diody led , każda z nich zapala się po naciśnięciu przycisku jednoczenie gasząc poprzednią [syntax=vb]Do Set portb.1 ; zapalenie diody 1 (oczekiwanie na przycisk) reset portb.1 ; zgaszenie diody 1 set portb.2 ; zapalenie...
Witam wszystkich bardzo serdecznie. Chcę zaprogramować uC ATmega8 w taki sposób aby mierzył mi długości sygnałów podawanych na wejście. Oczywiście przy użyciu przerwań. Nie wiem dlaczego program nie reaguje przerwaniem na zboczu opadającym sygnału. Poniżej zamieszczam kod programu. Jeśli mógłbyś zobaczyć i podpowiedzieć w czym tkwi problem byłbym dozgonnie...
Chciałbym napisać przerwanie do mojego programu zegara. Chcialbym aby przerwanie bylo wywolywane zmiana jednego pinu tzn zmiana PINA4 z 1 na 0. Gdy zmienie ten przycisk chcialbym aby wykonalo sie przerwanie. oto moj KOD: int main(void) { char B1; DDRA=0x00; DDRD |= (1 << PD1); LCD_Initialize(); TWI_Init();...
A tu zalecałeś blokowanie przerwania, w celu likwidacji drgań styków i zabezpieczenia się przed ponownym wywołaniem przerwania. http://obrazki.elektroda.pl/7094155700_1... Tam omawialiśmy przypadek podłączenia przycisku do pinu INT0 i wykorzystaniu przerwań: http://www.elektroda.pl/rtvforum/viewtop... Jeśli przycisk podłączasz...
Pętla główna to bzdura, ale można to zrobić następująco, do portu PC0 do PC5 podłączamy czujniki optyczne, następnie piny PC0 do PC5 łączymy z katodami diod impulsowych, anody diod łączymy do pinu PD2 (INT0), teraz opadający poziom na wejściu PC0 do PC5 wywoła przerwanie INT0. W obsłudze przerwania testujemy poziom 0 na wejścich PC0 do PC5 i w zadeklarowanych...
Witam . Napisałem ( prawie) sobie na ww procesor program w asm i bascomie który ma robić za zamek otwierany kartą . W bascomie wszystko działa w 100 % według założenia jednak w asm mam taki problem że układ sam zmienia swoje taktowanie (ponad 2x) przez co wszystkie funkcje czasowe nie pracują jak powinny . Nie było by w tym nic niezwykłego ( ustawiony...
Użyj jakiegoś timera i przerwania, powiedzmy TIMER0. Policzmy trochę. Zakładam zegar 8Mhz. Jezeli uzyjemy preskalera 256 to czas co jaki zostanie wywołane to przerwanie to 256*256/8000000=0,008. Ilość taktów co jakie zostanie wywołane przerwanie to 256*256=65536 (pierwsze 256 wynika z tego, ze licznik jest 8 bitowy drugie to preskaler) Żeby odliczyć...
Witam forumowiczów, zacząłem realizować projekt zegarka, kalendarza i termometrów z owego linku: http://obrazki.elektroda.pl/6128170300_1... Proszę o porady i sugestie jak można rozwiązać ten problem :P
Zarezerwuj sobie na godziny i minuty po rejestrze w procesorze. Zrób obsługę klawiatury. Ja bum dał 3 przyciski. 1 - jak przytrzymasz dłużej to wchodzi w trym ustawiania. Jak potem na krótko to przechodzi po kolejnych rejestrach i ustawiasz 2 pozostałymi wartość godziny minuty, dnia, miesiąca, roku. 2. zmienia wartość w górę 3. zmienia wartość w dół...
Witam wszystkich majsterkowiczów :D Oto mój jeden z pierwszy programów napisanych na ATMEGE 8. Dotychczas programowanie mikrokontrolerów traktowałem jako zabawę, używając do tego BASCOMA i zestawu Treningowego. Obecnie stoję przed zamiarem budowy pewnego urządzenia ale przed rozpoczęciem prac chciałbym mieć pewność że część programowa będzie ok. Sam...
Mam mały problem z programem napisanym w bascomie , mianowicie założenia są takie jest to odbiornik pilota IR na atmega 8 chodzi mi o sam algorytm dekodowania sygnału , który ma dekodować wszystkie rodzaje pilotów obojętnie czy są w standardzie RC5 czy SONY na wyświetlaczu LCD mam mieć wyświetlane umownie wartość jedynek i zer i problem polega na tym...
Witam wszystkich! Nurtuje mnie pewien problem z moją ATmegą. Mianowicie, wykonuje projekcik z ATmegą128 w roli głównej na płytce stykowej. Ze względu na dużą ilość Pinów, ATmega jest wlutowana w przejściówkę i poprzez goldpiny a następnie skrętkę podpięta do płytki stykowej, na której składam elektronikę. W związku z tym przewody od mikrokontrolera...
Jestem w trakcie pisania programu na Atmegę8. Mam zdefiniowane trzy przerwania: [syntax=c] ISR(INT0_vect) { net = 0; //wywołanie co 10ms 50Hz } ISR(ADC_vect) { pomiar = ADCW; } ISR(TIMER1_COMPA_vect) { PORTC ^= 0x10; if (enable_flag == 1) { step++; } if (step == 5000) { step = 0; } } [/syntax] Obecnie pierwsze przerwanie INT0 jest nieaktywne. Początkowo...
Dodałem koszmarnie długi czas czekania po wciśnięciu klawisza i wygląda na to, że działa. Można wyświetlać kolejne cyfry z tablicy i nie ma przeskoków (losowych wyświetleń). W pętli głównej sprawdzam, czy jest wciśnięty przycisk i czy zmienna b ma wartość co najmniej 10. Jeśli tak, to program zabiera się za czynności przypisane do klawisza, a przerwanie...
Zamiana wyświetlaczy nic nie daje, zamieniałem nawet same kabelki łączące je z płytką i też nic. Jeśli chodzi o przerwania to mam odbiór danych z RFM12 oraz obsługę klawiatury na PCF8574. Może faktycznie coś na rzeczy z tymi przerwaniami. Wyświetlacz, który nie działa jak trzeba oprócz wyświetlania daty, godziny oraz części odebranych danych wyświetlać...
Witam, mam problem z programem na mikroprocesor. Na początek dodam, że prototyp, zanim poszedł w odstawkę pół roku temu działał prawidłowo. Program w tym momencie ma za zadanie wyświetlić 4 zmienne na wyświetlaczu. Uruchomienie przerwań zawiesza program. W zależności od tego kiedy zostaną rozpoczęte, skutkuje to innym efektem. Umieszczając sei(); na...
Dzięki wszystkim za opinie. Oddałem dziś projekt został oceniony na 5;] Dokonałem kilku zmian w programie więc wrzucam nową wersję: http://obrazki.elektroda.pl/8149391200_1... Jeśli już eliminujesz drgania styków programowo i w dodatku z użyciem timera, to mogłeś się pokusić o tak samo zrealizowane opóźnienia. Mnóstwo pamięci pożera...
Zanim włączysz konkretne przerwanie włącz przerwania globalne. wpisz tak Enable interrupts Enable int0 Pozdrawiam :)
Do atmegi8mki Ci może nie wejść obsługa FATu. Poszukaj na elektrodzie FAT SD Atmega i coś znajdziesz gotowego. - Napewno nie Bascom :D Potem jakieś przerwanie i mierzyć czas i robić systematyczne opróżnianie buffora na drabinke R2R albo DAC.
Użyj przerwania od timera do odmierzania odcinków czasu. Zobacz sobie na ten poglądowy przykład Często jako czujniki widuję właśnie NTC. Czy można ich użyć pod Atmegę ? Można, ale dużo prościej jest użyć termopary albo PT100.
Czeka Cię cierpliwe studiowanie DS. W trybie asynchronicznym- który musisz skonfigurować w twoim projekcie- przerwanie co 1s będziesz miał gdy w trybie CTC ustawisz rejestr 0CRA na 127 (str.160). Oczywiście musisz też ustawić zezwolenie na obsługę tego przerwania. Jeśli chodzi o 20ms- to z dokładnością jest trochę gorzej. Przy początkowej wartości timera...
A mógłbyś to jakoś opisać kodem ? [syntax=c]#define BAUD0 9600 //BaudRate (bps) #define MYUBRR0(F_CPU/16/BAUD0-1) //Przerwanie co 0.1s ISR(TIMER1_COMPA_vect) { uint8_t key; static uint8_t lkey=0; key = (PINC & (1<<3)); //przycisk NPN na PC3 if(!key && lkey) UDR='k'; //wyślik "k" jako znak, że wciśnięto przycisk lkey = key; } //przerwanie...
Ok, pisanie programu zostawię Tobie, natomiast podam Ci co trzeba zrobić. Mając już ustawione wszystkie piny jak należy (wejścia/wyjścia) chyba najlepiej napisać coś takiego: [syntax=c] int state = 0; //stan przycisku, ustawiasz na jeden za pierwszym wciśnięciem while(state == 1){ //akcja z diodami } [/syntax] I teraz musisz zaprzęgnąć przerwania, dokładniej...
Żeby zrobić za pomocą Timera - to nie możesz używać trybu PowerDown tylko Sleep - żeby właśnie Timery mogły działać to po pierwsze. W taki trybie jednak będziesz miał nieco większy pobór prądu niż w pełnym PowerDown. Więc wszystko zależy na ile ma wystarczać bateria o ile jest to coś zasilane z baterii. Bez PowerDown'a na pewno będzie to sporo krótszy...
Jeśli przyciski zwierać będziesz do masy, to nie trzeba. ATmega ma wewnętrzne rezystory podciągające. Trzeba pamiętać by je jeszcze włączyć. Z przerwaniem też można te przyciski ożenić, za pomocą prostej drabinki diodowej. Zajrzyj do dokumentacji zestawu ZL3AVR.
Litości :) Litości :) Pomijąjąc powyższe fakty, program powinień wyglądać tak: [syntax=c]volatile int program; przerwanie_przycisku() { program++; } main() { konfiguracja(); while(1) { if(program == 0) migaj_w_lewo(); else if (program == 1) migaj_w_prawo(); else if (program == 2) migaj_z_gory_na_dol(); } return 0; }[/syntax] lub jak kolega wyżej napisał...
Na pewno musisz zrozumieć jak działają operatory: 1. Na początek ~ i & 2. || w następnej kolejności. Albert no to analiza krok-po-kroku: No niestety milisz się bo owszem jest robiona operacja PIND & 0b11111100 ale da ona 1 gdy któryś z przycisków od PD7 do PD3 nie będzie wciśnięty (więc jego bit w rejestrze PIND będzie ustawiony) żeby to poprawnie...
http://obrazki.elektroda.pl/9824916400_1... Witam, Korzystając z ostatnich wolnych dni przed studiami chciałbym zaprezentować moją ostatnią konstrukcję. Jest to mały przenośny barometr. Konstrukcja powstała na potrzeby osoby wrażliwej na zmiany ciśnienia oraz spełnia jej wymagania tzn. mały rozmiar( 20x40x9mm) oraz co się z tym wiąże...
Niestety ale nie mogę zrezygnować z delay_ms ponieważ jest to ,,obowiązkowy punkt programu,, Poszukaj na forum kodu multipleksującego wyświetlacze LED w oparciu o przerwanie od timera. W pętli głównej zrobisz sobie opóźnienie, test stanu przycisku i zmianę zawartości wyświetlanych znaków. Niestety ale nic nie znalazłem... Źle szukałeś.
Wiec tak: W ogóle wyrzuciłbym zmienna/flagę F. Nie jest potrzebna tutaj. W programie głównym zamiast sprawdzania F, sprawdzaj A, czyli warunek IF z przerwania przenieś do programu głównego, łącznie z zerowaniem A. W przerwaniu zwiększaj tylko A. Zamiast: If F = 1 Then Cls Locate 2 , 1 Lcd "przerwanie" Wait 1 Cls F = 0 Enable Int0 End If zrobilbym...
Czyli co mam zrobić, żeby wywołać przerwanie przyciskiem? Dać DDRD &= ~1<<PD2; ?
[syntax=c] #define Button (1<<PB0) #define Button_PORT PORTB #define Button_PIN PINB #define Button_DDR DDRB volatile _Bool Key_Pressed = 0; // flaga wciśniętego przycisku [/syntax] [syntax=c] Button_DDR &= ~(Button); //port - wejście Button_PORT |= (Button); //włącz pull up [/syntax] [syntax=c] ISR(TIMER0_OVF_vect)//przerwanie wywoływane...
Witajcie, W oparciu o Atmegę8 zrobiłem sobie prosty sterownik. Odczytuję temp. z dwóch czujników ds18b20 i na jej podstawie steruje elektrozaworem. Chciałbym dodatkowo wprowadzić obsługę 3 przycisków. Problem w tym, że sam odczyt temp. z czujek powoduje pewne opóźnienia np. czas konwersji jest dosyć spory bo 750ms w związku z tym reakcja na przyciśnięcie...
Może spróbuj sterowania w inny sposób - za pomocą przerwania INT2 (wywoływanego przyciskiem) uruchamiaj i zatrzymuj licznik TC0 (parametry PWM są ustawione u Ciebie poprawnie) tzn ustawiaj bity TCCR0|=(1<<CS00)|(1<<CS01) kiedy chcesz uruchomić licznik i zeruj je jeżeli chcesz zatrzymać. Samo ustawianie wartości wypełnienia czyli rejestr...
Wracajac do tematu czy moglbym prosic przynajmniej o pseudo kod obslugi przykladowo drgania w przyciskach , wysterowania przekaznika np przez 2s oraz komunikacji 1wire jednym timerem (atmega8 ma az 2 timery wiec pewnie szybko skoncza sie jego mozliwosci chcac napisac kod bez zatrzymywania) Cały dowcip polega na tym że z tego 8 bitowego timera możesz...
Załóżmy, że to też błąd przy wklejaniu kodu (inaczej asembler zgłosiłby błąd). Powinno być R21 , a nie R121 . Być może to też błąd przy wklejaniu. Bity WGM12 , CS12 oraz CS10 nie znajdują się w rejestrze TCCR1A tylko w TCCR1B . Istotne jest jednak to, że ustawiając tylko bit WGM12 ustawiasz TIMER1 w tryb 4, czyli tryb CTC, w którym timer liczy od 0...
Jaką masz częstotliwość przerwań timera? Testowanie stanu przycisków powinno następować z częstotliwością rzędu 30..50 Hz jeśli pamiętasz tylko jeden stan wstecz. Jeśli masz większą częstotliwość, to albo testuj je w co którymś przerwaniu, albo wsuwaj stan do zmiennej i wykrywaj sekwencję stanów (bitów) np. 1110.
atmega przerwanie przycisk przycisk przerwanie przerwanie przycisk
lodówki bosch opinie bosch dysza sportowy wałek rozrząd
katalog części ursus antypollution fault
Brother MFC-J6510DW - Błąd zacięcia papieru (przód, tył) po usunięciu papieru Peugeot 508 2.0 HDI 2011 – usterka ELV, blokada rozruchu, brak autoryzacji klucza