Witam Mam płytkę sterującą dwoma kanałami PWM - przez ULN oraz MOSFETY. Płytka ma dwa wejścia oraz wejście czujnika PIR - INT1. Ma przede wszystkim sterować włączaniem taśmy LED 12V z czujnika PIR ( oprócz tego z drugiego wejścia ). LED włączona przez PIR ma docelowo świecić określoną ilość czasu ( zależną od natężenia światła ) i się wyłączyć. Żeby...
Mozemy pomoc w pisaniu, ale z helpem Bascoma powienienes dac rade, obslyga lcd ->gotwa funkcja -klawisze dasz rade, zmieniasz jedynie zmienne - odmierzanie czasu sporbuj na timer1 co np sekunde bedzie zwiekszal Ci zmienna Czas, w petli gl musisz kontrolowac by wartosc nie przekroczyla zakresu - prostym if'em sprawdzasz wartosc tej zmiennej Czas z czasem...
Cześć, ostatnio nie miałem czasu, także przepraszam za brak odpowiedzi. Program jest taki sam jak w pierwszym poście, tylko podmieniłem wzory na czas: RC5_main.c [syntax=c] #include <avr/io.h> #include <avr/interrupt.h> #include <util/delay.h> #include <avr/sleep.h> /* Załącz bibliotekę RC-5*/ #include "dd_rc5.h" /* LED testowy...
Program przekopiowałem już toczka w toczkę z płyty dołączonej do książki, oczywiście zmieniłem pod moje podłączneie do procesora ukłądu pcf8583 ale nadal nie wywołuje przerwania ten układ i nic nie mogę z niego zczytać. Jak sprawdzić czy czasem w jakiś sposób nie uszkodziłem tego układu? Jedyna różnica przy podłączniu odbiegająca od książki to nie podłączone...
Witam, na wstępie dodam że jestem bardzo początkujący w programowaniu. Staram się stworzyć program który by włączał i wyłączał funkcję RGB, poprzez pilot RC5. Staram się to zrobić po kolei i najpierw próbuję gasić i zapalać pilotem diodę. Problemem jest to, że program reaguje na każdy przycisk a nie na konkretny - zaprogramowany. Chce sterować klawiszem...
Gdy procesor jest w trakcie wykonywania procedury przerwania, następne przerwanie nie będzie przyjęte , gdyż procesor (nie kompilator!) zeruję flagę globalnego zezwolenia na przerwania. Tak samo flaga bieżącego przerwania (tego, którego procedura obsługi jest wykonywana) zostaje automatycznie wyzerowana. Po zakończeniu przerwania flaga globalnego zezwolenia...
Witam Utknąłem z moim kodem i plątam sie w koło ciągle, dlatego proszę o pomoc. W podprogramie "przyciski" przerwania od timer0 mam zrealizowany odczyt przycisków i zrobiłem sobie "flagi czasowe" przyciski: 'przerwanie co 26ms . kod sprawdzania przycisków . incr licz if licz=19 then ' flaga co ok 0,5 s flaga_500ms=0 ' w warunkach początkowych flaga_500ms...
Witam, W programie przedstawionym poniżej nie zostaje wywołana obsługa przerwania. Próbowałem na innych timerach tez bez skutku. AvrStudio 6, Atmega8a, optymalizacja O2. [syntax=c] #include <avr/io.h> #include <avr/interrupt.h> #include "utils.h" #include "display.h" int main(void) { LEDInit( ); Display(0); //Init Timer 0 TCNT0 = 6; TCCR0...
Witajcie Napotkałem następujący problem - Mam układ komunikujący się szeregowo z procesorem w sposób następujący: 1. Układ wywołuje przerwanie 2. Odbieram dane statusu od układu 3. Wychodzę z przerwania i to działa. Problem zaczyna się jeżeli odebrane dane statusu wymuszają w procesorze kolejne operacje z użyciem układu. Ponieważ idzie to tak: 1.Układ...
Przeszukałem elektrode i dokumentacje ale chyba dalej źle coś robie :/ Próbuję obsłużyć przerwanie na opadającym zoboczu zwewnętrznego przerwania INT0 (PD2): int main (void) { DDRD = 0xFA; // 1111 1010 PORTD= 0x05; // 0000 0101 MCUCR=0x02; MCUCSR=0x00; GIFR=0x40; GICR|=0x40; sei(); while (1) {...} return 0; }...
Witam. Próbuję uczyć się C na Atmedze 8 i mam problem z obsługą przerwania. Kod wygląda następująco (z resztą pisany na podstawie kursu z EdW): #include <c:\WinAVR-20090313\avr\include\a... #include <c:\WinAVR-20090313\avr\include\a... #define F_CPU = 1000000 int volatile wyjscia; int indeks; int main (void)...
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...
Witam. Proszę o sprawdzenie poprawności kodu.Chciałem zastosować zewnętrzne przerwanie INT0.Po podaniu niskiego poziomu na INT0 chciałbym uzyskać negacje bitów portu C0 i C1, przy czym zawsze mają one mieć wartości przeciwne. ISR(INT0_vect) { if( !(PINC & 0x02))//negacja PC0 i PC1 { PORTC |= _BV(PC1); PORTC...
prosze oto kod mam problem z ogarnięciem dlaczego nie zlicza mi sygnałów z int0 #include <avr/io.h> // dostęp do rejestrów #include <avr/interrupt.h> // funkcje sei(), cli() #include <avr/signal.h> // definicje SIGNAL, INTERRUPT #include <util/delay.h> #include <stdlib.h> #include <stdio.h> #include...
Jak po przyjęciu int0 ,zablokować go na czas (500 ms), odblokowując int1, po tym czasie ponownie odblokować int0, blokując int1 itd.? czas dowolny (rcall czas).
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...
Buduję prosty sterownik na atmedze 8, chcę obsługiwać klawiaturę w przerwaniach od timera0 ale atmega nie widzi procedury obsługi przerwania i resetuje się. Jeżeli zatrzymam timer albo wyłączę przerwanie timera, albo wyłączę globalnie przerwania to nie resetuje się. Kod procedury obsługi przerwania (funkcje do LCD są w pełni sprawne, nawet gdy ISR jest...
Witam w funkcji obsługi przerwania ISR(PORTC_INT0_vect){.... chce zablokowań kolejne wywołanie tego przerwania, ale nie mogę i proszę o pomoc kolegów bardziej doświadczonych. Konfigurację przerwania zrobiłem tak: [syntax=c] PORTC.DIRCLR=PIN4_bm; PORTC.PIN4CTRL=PORT_OPC_PULLUP_gc | PORT_ISC_FALLING_gc; PORTC.INT0MASK=PIN4_bm; PORTC.INTCTRL=PORT_INT0LVL_LO_gc;...
Próbuję złożyć (a właściwie jestem na etapie rozmyślań) zegar na tym scalaku ale mam pewien kłopot. Układ będzie dosyć rozbudowany więc przerwania zewnętrzne muszę zostawić w spokoju. Z tego co zdążyłem się zorientować to można za pomocą timera wytworzyć przebieg i zliczać go przez preskaler i kiedy rejestr się zapełni uzyć wewnętrznego przerwania aby...
Witam. Temat wątku wziął się stąd, że na forum znalazłem już kilka o podobnej tematyce jednak żaden nie pomógł mi z tym zagadnieniem. Programuję na Linuksie na AtMega8. Napisałem sobie proste biblioteki do obsługi USART oraz TWI jednakże chciałbym teraz spróbować popracować z przerwaniami i tutaj jest problem. Mam taki oto kod: [syntax=c] ISR(USART_RXC_vect)...
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...
Po pierwsze - witam na forum (mój pierwszy post tutaj). Włączam obsługę przerwań na początku programu: sei(); GICR =0x40; MCUCR =0x02; zbocze opadające ... ... Na nogę INT0 podpiąłem zwykły przycisk monostabilny (zwiera do masy) z pull-up`em 1KΩ. Jego naciśnięcie powoduje zaświecenie diody na innym wyjściu. (może trywialne, ale dopiero się uczę)...
Witam , Zaczynam z AS6, dotąd używałem 4.18 głownie z asemblerem Pytanie dotyczy możliwego błędu symulacji prostego kodu w AS6, do potrzeb zapytania sprowadzonego do wersji jak niżej : http://obrazki.elektroda.pl/4044092400_1... również wygenerowany kod obsługi jest poprawny http://obrazki.elektroda.pl/7240738500_1...
Witam, Od jakiegoś czasu próbuję włączyć przerwanie sprzętowe w uC ATmega8, robie wszystko zgodnie z datasheetem i nie działa :| Kto mi powie co tu jest nie tak? ; [syntax=c] #include <avr/interrupt.h> // biblioteka do generowania przerwań sprzętowych #define F_CPU 8000000L #include <avr/io.h> #include <util/delay.h> int licznik =...
Witam już od jakiegoś czasu próbuję zrobić na ATmega8 wykryła mi naciśnięcie guzika i nic. próbowałem już według wielu instrukcji, z podciąganiem, bez i nic. teraz próbuję na kodzie prtzepisanym z książki "mikrokontrolery AVR w praktyce", z rezystorem podciągającym 1kΩ. jest kompletny brak reakcji w przypadku zaciśnięcia lub rozwarcia zworki. może...
Śmiem twierdzić, że w (0<<ISC11) | (1<ISC10) jest błąd, powodujący, że wyrażenie to ma wartość równą 1 (podczas gdy powinno mieć wartość równą 4). Jeśli flaga jest ustawiana na zbocze, to w kodzie głównym powinny występować jakieś opóźnienia albo zmiana algorytmu, bo inaczej flaga zostanie sprawdzona raz - będzie ustawiona,...
Nie działa Ci, bo nie przeczytałeś dokumentacji... http://obrazki.elektroda.net/0_118799421... Flagi przerwań czyści się przez wpisanie do nich logicznej jedynki. Trochę może paradoksalnie to wygląda, ale ma swoje logiczne uzasadnienie. Chodzi o to, że czyszcząc flagi w ten sposób da się to zrobić o wiele szybciej i co najważniejsze - bezpieczniej....
Jeśli funkcja obsługi przerwania powoduje ponowne wyzwolenie samego siebie, to jest to wynikiem tego, że flaga przerwania jest kasowana tylko podczas wchodzenia do przerwania. Podczas wykonywania funkcji obsługi przerwania flaga INTF0 może zostać ponownie ustawiona, co spowoduje ponowne wejście do ISR zaraz po zakończeniu (ISR_BLOCK nie powoduje zablokowania...
Spróbuj zrobić od przepełnienia. W proteus'ie też port zmieni raz stan i nic. volatile int flaga; #include <avr/io.h> #include <avr/interrupt.h> int main (void) { DDRC = 0xff; // Ustaw jako wyjście LED TIMSK = 0x04; // Włącz przerwania przepełnienia (1 <<TOIE1) SREG = 0x80; // włącz przerwania globalne sei()...
Tryb jest 4 bitowy(chyba),bo korzystam z programu powyżej kolegi sp3uqw piny ma mam podłączone nastepująco PD0->D0.....PD7->D7(atmega8) to chyba nie nie przeszkadza że mam podłączone wszystkie 8 pinów w trybie 4 bitowym?? a mój program wygląda tak: #include <avr/io.h> #include "funkcje.c" #define RS_ON sbi(DDRC,PC5);sbi(PORTC,PC5) #define...
Zawsze obsługa przerwania powoduje skasowanie flagi I, aby pod koniec obsługi flaga została ponownie ustawiona przez instrukcję reti. Jeśli program się przerywa po kilku linijkach, to znaczy posiadasz nie obsłużone wektory przerwań, a to jest błąd w kodzie. Albo wyłącz przerwanie od danego źródła, albo wyłącz przerwania, jeśli z nich nie korzystasz.
W oparciu o Wasze rady oraz [url=http://www.avrfreaks.net/index.php?... Guide to AVR Timers i przydatną stronę [url=http://www.et06.dk/atmega_timers/]A... Timer/Counter/Prescaler Calculator w wolnym czasie sklepałem taki kawałek kodu: [syntax=c]#include <avr/io.h> #include <avr/interrupt.h>...
A propos: zastosowałem flage w przewaniach lecz to nic nie dało. Sprawdzasz ją tylko raz w dodatku przed pętlą główną i przed wystartowaniem pierwszej konwersji. Jaki więc to ma mieć sens? Przeanalizowałeś i wypróbowałeś przykłady z artykułu, który Ci wskazałem w poście #4? Jeśli nie, to poświęć na to swój czas.
A kto powiedział że musisz go wyłączać? Istnieje lepszy sposób: robisz sobie flagę którą resetujesz w pzrerwaniu od timera. Potem wystarczy dodać coś takiego: Set Flaga : While Flaga = 1 : Wend Takie coś wstawiasz tam gdzie wcześniej musialeś wyłączać przerwania. Działa to tak że uc czeka aż wykona się przerwanie i dzięki temu wiemy że miało...
Co do programu na megę328: 1. Niepotrzebnie dołączasz sfr_defs.h 2. O F_CPU w kodzie było już miliony razy na forum. 3. Dla ułatwienia obliczeń prędkości polecam util/setbaud.h 4. W rejestrze UCSR0C ustawiasz bity, które po resecie są ustawione. 5. W UCSR0B nie włączasz przerwania od odbioru (bit RXCIE)! Dodatkowo niepotrzebnie stosujesz sumę bitową...
Zamieszczam cały kod... [syntax=c] #define F_CPU 14745600UL #include <stdio.h> #include <avr/io.h> #include <util/delay.h> #include <avr/wdt.h> #include "../Biblioteki/i2cds1307.c" #include "../RTC_test/OLED.h" #include <avr/interrupt.h> #include <avr/sleep.h> #include <avr/power.h> #define sbi(byte,bit) byte...
Co pewien wybrany przez Ciebie czas Timer generuje przerwanie. Co jaki czas- mniej ważne, ważne żeby to był najmniejszy czas jakiego potrzebujesz. W programie osługi przerwania umieszczasz jakieś zmienne- powinny one być zdeklarowane jako volatile przed main()- będą wtedy globalne i volatile. Ja to robię tak- volatile uint8_t (albo uint_32_t) flaga1,...
Pomyliłeś rejestry bity ISCxx nie są w rejestrze MCUCSR, tylko MCUCR. Nie wywołujesz funkcji Init_pomiar() - zamiast tego w main() wstawiłeś prototyp funkcji: Spróbuj w przerwaniu int1 w pętli if skorzystać z flagi, np: W jakim celu tworzyć zbędną zmienną, skoro stan zbocza można sprawdzać bitami ISCxx, co właśnie autor czyni (choć w złym rejestrze)?
Zastanówcie się Koledzy, co się będzie działo, kiedy wrzucicie do UDR ostatni bajt do nadania. Kto i kiedy skasuje zgłoszenie przerwania TXD po wysłaniu tego bajtu? W obsłudze przerwania to nie nastąpi, więc przerwanie pozostanie zgłoszone i będzie obsługiwane na okrągło - patrz granica stron 137/138 aktualnej wersji (aa) doc2486.pdf Flaga przerwania...
1. Po co opóźnienie na ustanie drgań styków jeżeli przerwanie już się wykonuje? Nic Ci to opóźnienie nie daje a tylko strasznie wydłuża wykonanie procedury przerwania. 2. Jeżeli już masz to opóźnienie to po nim powinno być ponowne sprawdzenie pinu PD2 które określi czy na pewno nastąpiła zmiana stanu na pinie. Na Twoim miejscu w obsłudze przerwania...
Ustawiasz bit zezwolenia na przerwanie TXCIE, a gdzie masz procedurę obsługi tego przerwania? Po odesłaniu znaku flaga TXC zostaje ustawiona i ze względu na brak procedury obsługi tego przerwania program najprawdopodobniej startuje od początku. Nie ustawiaj bitu TXCIE lub napisz dla tego przerwania chociaż pustą procedurę obsługi: [syntax=c] EMPTY_INTERRUPT(USART_TXC_vect);...
Stos OK. Mówię Ci. Skasuj flagę przed "Enable INT1". Generalnie kolejność mam w kodzie taką: Config Int0 = Falling 'opadajace zbocze wywoluje przerwanie Config Int1 = Falling 'opadajace zbocze wywoluje przerwanie Config Timer0 = Timer , Prescale = 8 'konfiguracja Timer0 jako timera z preskalerem przez 8 'Przerwanie od przepelnienia Timer0 jest generowane...
Troszkę mnie nie rozumiesz ale ok, zrób inaczej. Gdy krańcówka zostanie naciśnięta to przerwa w obwodzie i stan wysoki na pinie uc. Wtedy ustaw sobie jakąś flagę. Wtedy wiesz że krańcówka zadziałała i wtedy możesz przystąpić do wykonywania dalszej części programu.
Jak ma włączone przerwania przepelnienia to jak się flaga ustawi, przerwanie nastąpi, flaga się skasuje i w pętli zawsze będzie nieustawiona. Dlatego pytałem: Przerwania od timera wyłączone? Odpowiedział: Przerwania włączone. Wnioskuję więc, że timer stoi - źle ustawione bity CS ale ciężko coś powiedzieć, bo kod programu jest ściśle tajny. Usunąłem...
Witam Piszę procedurę wysyłającą na daną końcówkę portu 1ms impulsy w zadanych odcinkach czasu. Według wyliczeń kalkulatora dla AVR wychodzi iż przy 4HMz kwarcu, preskalerze ustawiony na 64 i początkowej wartości licznika 193 zegar generuje przerwanie w granicach 1ms. I tak mam ustawioną konfigurację: Config Timer2 = Timer , Prescale = 64 Load Timer2...
Od kilku dni męczę się z ustawieniem timera (działającego równolegle z programem) na moim uC atmega8535. Jestem początkującym elektronikiem. Przeszukałem już naprawdę wiele tematów, pisałem do wujka google na wszystkie możliwe sposoby jakie tylko wymyśliłem. Nadal problemowo. Otóż po przeszperaniu internetu dokopałem się do następującego kodu: [syntax=c]...
Timery krok po kroku: http://diycenter.acid19.linuxpl.com/read... Jak włączyć timer? Jak wszystkie peryferia atmegi, timer aktywuje się poprzez ustawienie odpowiednich bitów w odpowiednich rejestrach - informacje na ten temat znajdziesz w dokumentacji na stronach 69-120. Gdzie ustawia się flaga przepełnienia? To zależy którego licznika...
Timer w przerwaniu obsługuje wyświetlacz LED i inkrementuje zmienną byte, która w pętli głównej w instrukcji Case wybiera konkretne funkcjonalne fragmenty programu do wykonania, których wykonanie czasowo mieści się pomiędzy przerwaniami od timera. W przerwaniu od timera ustawia się także flaga przerwania, która uruchamia za pomocą If Then instrukcję...
Veni, Vidi tak, Vici nie koniecznie. W programie, który załączyłeś nie ma konfiguracji i uruchomienia USART'a (str. 139 dokumentacji). Trochę dalej przedstawiono odbiór na przerwaniu (jeżeli USART jest wyłączony to flaga przerwania zawsze zero). Spróbuj skompilować prosty kod na przerwanie od timera, ale ze wszystkim, tzn. nie tylko uruchomienie ale...
Witam Mam problem z odbiorem sygnału rc5 a dokładnie buduję zegar na wyświetlaczu 7-seg w oparciu o atmege8 i układ pcf8583. Jak na razie wszystko mi działa i odczytuje czas i wyświetlam go lecz po dodaniu wierszy kodu programu odpowiedzialnych za odbiór rc5 program się wiesza i nic nie realizuje, a na wyświetlaczu są same zera... Nie mam już pomysłów...
ISR(INT0_vect) { flaga=1; } w petli glownej if (flaga==1) { [...] obsluga lcdka [...] flaga=0; }
http://obrazki.elektroda.pl/7995180000_1... Witam! Jakiś czas temu rozpocząłem naukę pisania programów na mikrokontrolery AVR w języku C++. Przeczytałem wiele tutoriali, poradników, itp., aż w końcu doszedłem do pisania własnych, prostych programów. Po kilku takich „pseudoprogramach” zdecydowałem, że teraz czas napisać coś...
Witam, Mam taki problem. Odbieram znaki w przerwaniu i nie wiem dlaczego jeśli wysyłam jakiś znak to pojawia się on w buforze odbiorczym a tego nie chce. Próbowałem funkcji uart_flush i nic nie pomaga. Proszę o pomoc. #include <avr/io.h> #include "uart.h" // Funkcje void uart_init ( unsigned int ubrr) { /*Set baud rate */...
Trzeba zrobić detekcję zbocza np. poprzez użycie dodatkowej zmiennej- flagi Zmienna ta ustawiana byłaby np. na 1 po wysłaniu SMS-a, a wejście do podprogramu wysyłającego SMS pod warunkiem, że ta zmienna = 0 If Pir_1 = 0 And Mw_1 = 0 And Flaga = 0 Then ....... (program wysyłający SMS) Flaga = 1 En If Gdzieś w głównym programie If Pir_1 = 1 And Mw_1 =...
Np. tak: Set Flaga : While Flaga = 1 : Wend to umieszczasz raz lub kilkakrotnie w odczycie z DS-a. Część umieszczona poniżej tego wykona się dopiero jeśli flaga zostanie zresetowana. Flagę resetujesz po wykonaniu przerwania.
Jeżeli przerobiłeś pętlę główną na while(flag) to nie o to chodziło. Zostaw więc while(1) w pętli głównej, a while(flag) zamień na if(flag). Dodatkowo na początku if przed LCD_GoTo(0, 0) wstaw flaga=0. ... i pokaż cały program po zmianach, a nie tylko fragment.
Dla timer 8it bez błędu odliczania można zastosować preskaler 64 i następującą procedurę obsługi ( kod w C ) [syntax=c] volatile uint8_t flaga // deklaracja jako zmienna globalna i pooling zmiennej w pętli głównej uint8_t main( void ){ flaga = 0 while(1){ if(flaga == 1){ flaga = 0 // dalej funkcje wykonywane co 1s } } } ISR(TIMER0_OVF_vect) { static...
Na mojej płytce wszystkie programy działają. Odczytaj programatorem plik z procesora i porównaj z tym wygenerowanym przez kompilator to bedziesz wiedział czy programator źle wpisuje program. Spróbuj ten program tylko pokombinuj z watrością [ , Wait = 2500] tzn wprowadzaj wartości od 100 do 5000. Musi zadziałać. Dla kwarcu 8MHz i ATMega88 [syntax=basic4gl]$regfile...
ustaw sobie przerwanie od np. TIMER2 co 10ms i sprawdzaj 4 ostatnie stany przycisku. teoria: http://mikrokontrolery.blogspot.com/2011... powyższe zaadoptowane do A8: [syntax=c] //**************definicja przycisku************** #define _Key _BV(PD7) #define Key_PIN PIND #define Key_DDR DDRD #define Key_PORTPORTD...
1. Nie mam żadnych warningów 2. ??? Nie jest to bynajmniej moje pierwsze przerwanie, ani tym bardziej flaga. Po czym wnosisz, że nie wiem jak działają? 3. Owszem, zablokowałem całe przerwanie odpowiadające za ICP w momencie, gdy zaczął się sygnał. Zamierzone działanie, co w nim złego? 4. ??? "Podłączyłem pod PORTB.0 (ICP) odbiornik podczerwieni TSOP31236"...
Czy odbierasz OKEY? Czy możesz w warunku if ( flaga == 1 ) { LED_ON; uart_putc( c ); LED_OFF; flaga = 0; } dodać mrugnięcie diodą LED? I wtedy spróbuj uruchomić program bez inicjowania 'c' i 'flaga'.
Co do reszty programu to nie będę marudny bo to Twoje początki. Natomiast z pewnością zmień podejście do flagi. Flagę w przerwaniu powinieneś tylko ustawiać. Natomiast w pętli głównej sprawdzasz czy flaga jest ustawiona. Jeżeli tak to wykonujesz przypisany jej kod i ją kasujesz. W tej chwili co sekundę (zakładam, że timer skonfigurowany poprawnie) masz...
Witam, Mam pewien problem z Rc5 w bascomie, chodzi mi o to, że instrukcje odpowiedzialne za rc5 są wykonywane tylko kilka razy a później, kaplica coś się zapycha:) i pilot nie działa. Cała sytuacja ma charakter nieliniowy tzn. że raz wykryje 3 naciśnięcia przycisku na pilocie a raz np. 5. Po zresetowaniu procka znowu RC5 działa przez parę cykli uP....
W jaki celu w przerwaniu odbioru usart wywyłujesz funkcję USARTReadChar()? [syntax=c]char USARTReadChar() { while(!(UCSRA & (1<<RXC))) { //Do nothing } return UDR; } ISR(USART_RXC_vect) //przerwanie od odbioru danej { b = USARTReadChar(); USARTWriteChar(b); if (b == '1' ){flaga = 0;} else if (b == '2' ){flaga = 1;} else {flaga = 1;} //wysłanie...
[url=http://www.elektroda.pl/rtvforum/vi... wykorzystania Timer1 do obsługi przycisków Przykład, co może się znajdować w pętli głównej. [syntax=basic4gl]Do If Flaga_ms_75 = 1 Then If Menu = 0 Then If Czy_wcisnieto = 1 Then Czy_wcisnieto = 0 Flaga_ms_75 = 0 Gosub Zapis_ds End If Else If Menu1 = 0 Then If Czy_wcisnieto...
Witam! Z pewnością chcesz wykorzystać mechanizm "polling" :) jak to się ładnie nazywa w dokumentacjach. Po pierwsze w ATmega8 nie ma flagi Tirf.0, jest natomiast flaga Tifr.0 o którą zapewne Ci chodzi, dlatego pewnie nie do końca che działać. ;) Pozatym aby używać przerwań w ATmega8 musisz też odblokować globalny system przerwań, ponieważ po starcie...
Witam mam problem z programem do trawiarki mianowicie znalazłem na necie program do sterowania trawiarką chciałem do tego dopisać wybór menu żeby było jeszcze był drugi tryb sterowania trawiarką. Wgrałem program do uC i działało poprawnie potem chciałem wgrać ten sam program bez żadnych zmian na inna ATmege8 i okazuje się że teraz program działa trochę...
Witam Napisałem program, który dekoduje sygnał DCF77 ( ustawia flagę ), następnie zapisuje ( przy pierwszym uruchomieniu ) wartości zmiennych do PCF8563 i cztery razy na dobę wysyła przez RS485. do tego dwa razy na dobę koryguje czas w PCF8563. I to działa bez problemu. Do celów testowych mam podłączony LCD. Chciałem dołączyć możliwość pomiaru i wysyłania...
i poczytaj ten temat: http://www.elektroda.pl/rtvforum/viewtop... OK, teraz jestem krok do przodu, ale program nie reaguje na TWI_start. twi.h [syntax=c]#include <avr/io.h> #include <avr/interrupt.h> #include "twi.h" #include "usart.h" void Twi_Init(void) { TWBR = 0x20; // ((8MHz/100kHz)-16)/2=32 } void Twi_start(void) { TWCR...
flaga przerwa atmega8 przerwa flaga przerwania atmega8
resetować bateria laptop gniazdo klawiatura laptop kodowanie sygnału kamery
Adaptacja pompy ABS w Nissan Qashqai 2008 Wymiana czujnika skroplin wody w Mercedes Atego Euro 6