Dzis spróbuje napisac sobie procedure konwertujaca liczbe na format 0,00 - mam pomysła:-). Koncepcje podsunął kolega xury i wielkie dzieki dla niego. Jaka jest najnowsza wersja Bascom, ale taka która pewnie i stabilnie działa? Czy nowsza wersja nie będzie mieć problemów z konwersjami...
Nie zauważyłem żadnych istotnych różnic w konfiguracji Twojego timera. Jak widzę, kasowanie flag też masz na końcu procedury obsługi. Właśnie przetestowałem u mnie:[syntax=c] TIM2->SR &= ~TIM_SR_UIF; // kasuj flagę przerwania while (TIM2->SR & TIM_SR_UIF);[/syntax]że kasowanie flagi...
No włąśnie tu tkwił mój błąd w rozumowaniu.... po północnym siedzeniu doszedłęm do takich wniosków.. tzn nie łączyłem tego ze żeby uzyskać zero trzeba zapisać jedynkę . To jedna z największych pułapek AVR-ów: Co do reszty czytajmy datasheety: When an edge or logic...
Dziękuję za pomocne wskazówki. Pomogły, czyszczenie flagi na początku obsługi przerwań i tego się będę trzymał- czy dotyczy to obsługi wszystkich peryferiow? (np. PWM). Tak dotyczy to wszystkich peruferjów, dodatkowo powinno się sprawdzać źródło przerwania w obsłudze przerwania...
Czy flaga przerwania od USART RXNEIE jest kasowana automatycznie razem z flagą RXNE przez odczyt USART_DR? Bo jakoś nie mogę znaleźć innej.
Powtórzę po raz trzeci. Jeśli CCR <= ARR, znacznik ustawia się przy zrównaniu wartości licznika z CCR. W przeciwnym przypadku znacznik CC ustaia się razem z UIF. Co jeszcze nie jest jasne? Z czym właściwie jest problem? W procedurze obsługi przerwania reaguje się na zdarzenia, na które...
Może powinieneś (na przykład) jednak synchronizować ten timer. Dzięki za sugestię bo nie pomyślałem o tym wcześniej, jednak i to nie pomogło. A może powinieneś (na przykład) w ISR, wyłączyć timer na czas ładowania a następnie włączyć z powrotem. To rozwiązanie pomogło,...
Witajcie moi drodzy W tym temacie poznamy podstawy przerwań i timerów w PIC18F2550 . Na początek będzie krótki wstęp teoretyczny, a potem wszystko przerobimy dokładnie na praktycznych przykładach. Do lektury tematu przyda się ogólna wiedza na temat przerwań i programowania w C,...
Witam, zaczynam dopiero przygodę z Cortexami i utknąłem na konfiguracji kontrolera NVIC. Chciałem uzyskać reakcje procesora na przerwanie od GPIOC Pin0. Wydaje mi się, że wszystko jest OK, a jednak nie chcę działać, program po wystąpieniu przerwania nie wchodzi w funkcję jego obsługi. Poniżej...
No właśnie o priorytetach wiem, 15 top najniższy dlatego wszystkie przerwania mają Dodano po 2 Niestety zwiększenie do 4kB stosów (Stack Configuration i Heap Configuration) w niczym nie pomogło, program wchodzi do przerwania i zawiesza się przy sprawdzaniu flagi. Jak nie sprawdzam flagi...
Przerwanie jest wywoływane jeśli jest ustawiona odpowiednia flaga w rejestrze io (wyjątkiem jest tylko INT od poziomu). Przerwania nie są gubione, co najwyżej mogą być opóźnione względem wystąpienia zdarzenia. Nawet jedno przerwanie może przyblokować inne, wtedy po zakończeniu jednej funkcji...
Mam problem z pogranicza AVR i Atmel Studio (ver 6). Otóż piszę sobie jakiś tam program (nie ważne jaki dla istoty problemu) i chciałbym przetestować jego funkcjonalność przy pomocy symulatora wbudowanego w Atmel Studio 6. Problem polega na tym, że środowisko i owszem, symuluje działanie...
Niestety jak używam w konfiguracji słowa PCINT4 to kompilator generuje błąd i twierdzi że to nieznane źródło przerwania. To dlatego, że w tym procesorze są tylko 3 przerwania tego typu (w innych raczej nie będzie lepiej). Piny oznaczone PCINT0...PCINT7 mogą ustawić tylko pierwszą z...
Dzień Dobry Chciałem zapoznać się z konfiguracją przerwań zewnętrznych. I mam pewien problem. Wydaje mi się, że rejestry skonfigurowałem dobrze. Założenie jest takie, żeby wygenerować sygnał prostokątny na pinie następnie podać ten sygnał na pin który będzie odpowiedzialny za...
niezależnie kiedy odczyta powinno wyzwolić w jednym i tym samym momencie czyli na sygnał pochodządy z int Pod warunkiem, że flaga przerwania od Int0 nie jest ustawiona, w przeciwnym przypadku wykona się natychmiast. Nie wiem czy taka konstrukcja: disable int1 --->wyłącz przerwanie end...
Dokumentacja ATmega8, strona 71: The bit TOV0 is set (one) when an overflow occurs in Timer/Counter0. TOV0 is cleared by hardware when executing the corresponding interrupt Handling Vector. Alternatively, TOV0 is cleared by writing a logic one to the flag. When the SREG I-bit, TOIE0 (Timer/Counter0...
Poczytaj jak posługiwać się JTAG'iem. Jeżeli w programie AVR Studio naciśniejsz przycisk RUN to program będzie pracował normalnie, ale nie możesz mieć jednocześnie kontroli nad kodem oraz pozwolić na normalną pracę! Jak sobie wyobrażasz taką sytuację: debugujesz kod, gdy flaga = 0,...
Witam! Na wstępie chciałem zaznaczyć, że od niedawna dopiero poznaję procesory z serii ARM. Bardzo dawno temu miałem styczność z 51- jedynką i keilem. Moje doświadczenie w programowaniu C też nie jest oszałamiające, natomiast asembler na ARM jak na razie jest przeze mnie mało zrozumiany....
Mam nastepujacy problem, probuje wywolac przerwanie zewnetrzne od przycisku ktore uruchomi mi licznik w celu eliminacji drgan stykow. Wszystko dziala dla przycisku podpietego do wyprowadzenia A0 ale dla przycisku podpietego do wyprowadzenia C13 juz nie dziala. Przy debagowaniu widze ze ciagle wchodzi...
Witam, Mam taki problem, że chciałem ustawić przerwania równe 1 ms (1000 us), ale zależnie od ilości instrukcji w przerwaniu trwa ono 1000us lub 1001us, czyli 1000 lub 1001 cykli zamiast zawsze 1000. Jeżeli w funkcji przerwań, poza ustawianiem Timera i kasowaniem flagi przerwania, jest nieparzysta...
...A dlaczego bajzel? Ano dlatego , że w kodzie nie ma procedury przerwania dla Timer1 , więc procek chcąc obsłużyć przerwanie T1 , poszed by w przysłowiowe maliny. Co się stanie w podanym programie gdy w czasie obsługi przerwania wystąpi następne przerwanie ? Nic się nie stanie....
Witam, Próbuję pożenić template Freddiego (stm32_blink_led) z StdPeriph z racji, że pracuję pod Linuxem i jest to chyba jedyny template jaki działa :) Problem pojawia mi się przy próbie wywołania przerwania od USART1. W pewnym fragmencie kodu ustawiam flagę przerwania: USART_ITConfig(USART1,...
Mam problem z przerwaniem od timera TMR16B1, tak jakby nigdy nie występowało przerwanie od niego albo mikrokontroler do niego nie wchodził. Napisałem analogiczny kod dla TMR32B1 i powiązana z nim dioda w kodzie LED2_PIN mruga, natomiast dioda LED1_PIN która w obsłudze przerwania TIMER32_1_IRQHandler...
Mało danych. Chcesz, żeby dioda migała na przerwaniach? Czyli przerwanie włącza, następne wyłącza - tak to zrozumiałem. Co do obsługi T0 musisz zrobić obsługę przerwania od adresu 0x0BH (czyli wyzwalanie przez flagę TF0). Wstaw coś takiego po LJMP start na początku: [syntax=text]ORG...
Witam, Program ma na celu zmierzyć amplitude impulsu PWM, wypełnienie i częstotliwość. O ile z pomiarem wypełnienia i częstotliwośći nie mam problemu, to pomiar amplitudy nie do końca działa. Szczegóły: PWM 1 kHz. 5 < D < 95 % Na zboczu narastającym sygnału PWM uruchamiany...
Witam, Jestem poczatkujacy jesli chodzi o programowanie pod architekture Cortex. Posiadam zestaw ewaluacyjny STM32 Butterfly. Probuje skonfigurowac przerwanie, aby wykonało się po naciśnięciu przycisku. Debugujac program widac, ze po nacisnieciu przycisku flagi sa ustawiane, ale funkcja obslugujaca...
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...
Pochodzi od czujnika przerwania wiązki, drgań styków nie ma : ), znalazłem że czyszczenie flagi przerwania powinno być na początku, ale to niestety nie pomaga, i nadal pozostaje problem z wykrywaniem obu zbocz a nie tylko jednego Dodano po 10 Przeszukałem forum, kilka kursów po polsku...
Witam. Kilka razy miałem problem z linią MCLR w PIC18 PIC12, jeśli linia była skonfigurowana jako wejście i MCLR podciągnięte do plusa zasilania poprzez rezystor podciągający wewnętrzny to mikrokotroler się resetował po jakimś czasie pracy. Czy ktoś miał podobny problem? Druga sprawa...
Jeśli faktycznie TIM2 jest taktowany z częstotliwością 42MHz to Twoje przerwanie powinno być wywoływane co 10ms (konfiguracja RCC). Niemniej jednak kasowanie flagi przerwania powinno być pierwszą czynnością jaką przerwanie wykonuje a Ty kasujesz flagę raz na 100 wywołań. Poza tym umieszczanie...
Witam mam lekki problem, mianowicie staram się oprogramować zewnętrzne przerwanie, standardowo wywoływane po wciśnięciu przycisku, reagujące na zbocze opadające. Okej, wszystko elegancko ale po wejściu w przerwanie nie jest kasowana flaga przerwania. Przeglądając RM, nie odnalazłem żadnego...
Można do tego użyć timera, ale trzeba go ustawić tak, aby flaga przerwania została ustawiona raz (o ile czas nie jest zbyt długi). Dzięki użyciu timera, przerwania, które wykonają się w czasie takiej funkcji opóźniającej nie spowodują wydłużenia opóźnienia. Nie trzeba w tym celu pisać...
chodziło o to że na wejście INT0 podany był zakodowany sygnał i chodziło tylko o to aby jego pierwszy bit wywołał przerwanie. dziękuje Jeśli potrzebujesz przerwania tylko na pierwszym zboczu ramki i wszystkie pozotałe bity tej ramki odczytujesz właśnie w tym jednym przerwaniu to...
Jeśli poprawność transmisji przez UART jest ważniejsza niż terminowa obsługa przerwań to ustawianie/kasowanie bitu 7 w SREG (a więc CLI i SEI) ma sens. Pamiętaj że flagi przerwań są zapamiętywane (można je kasować wpisując jedynki w zapalone flagi) i po wyjściu z procedury objętej CLI/SEI...
Wg RM0091 (strona 629) m.in. bit RXFRQ w rejestrze RQR USART'u kasuje flagę przerwania. [syntax=c] USART1->RQR |= USART_RQR_RXFRQ; [/syntax] Flagi new_data nie chcę kasować póki co. Ważne żeby po opuszczeniu przerwania była ustawiona na true i żeby dioda się zapaliła. Wtedy będę...
Cześć Natknąłem się na ciekawy przypadek, którego do końca nie rozumiem. W nocie dotyczącej AT90CAN128 (akurat ta była pod ręką, a nie w jakimś konkretnym celu) jest taki zapis dotyczący zerowania flag przerwań: This flag can generate an interrupt. It must be cleared using a read-modify-write...
Druga sprawa. Skoro ma być reset np. BORF: flaga resetu przy obniżonym napięciu sieci, to czy można wcześniej zapisać do EEproma jakieś ważne dane? Zdecydowanie nie należy nic zapisywać do EEPROM przy obniżonym napięciu. Poza tym BOD nie wystawia żadnej flagi przerwania którą mógłbyś...
Podczas pisania programu dla mikrokontrolera AT90S2313 napotkalem na dosc osobliwy problem z przerwaniami zewnetrznymi. Mianowicie przerwanie wywoluje odbiornik podczerwieni (przez przerzutnik Schmitta) sterowany oczywiscie dioda IRED. Dzialanie tego systemu mozna porownac do bariery podczernieni. Problem...
A dynamika jazdy się liczy. Dynamika by była gdyby miał co robić, ale jeżeli procek się nudzi ... Jak pisałem wcześniej autor sam musi zdecydować. Dodano po 3 Jeżeli przerwania by się gubiły yo nie można by zrobic zegaraka na procesorze a takąmożliwośc daje producent....
Bawię się ostatnio wspomnianym w tytule mikrokontrolerem i natknąłem się na problem z zewnętrznymi przerwaniami, którego nie potrafię obejść. Zaczynając od tego co działa: układ jest sprawny na pewno, jest podłączony, cały czas hula dioda sterowana przez timer z ustawionym przerwaniem...
Oj pomieszałeś :) Dwie możliwości: Pierwsza wersja (opisałem wyżej): 1. wyłącz Free Running 2. zostaw przerwanie ADC, 3. przed pętlą główną w main() wywołaj pierwszą konwersję, 4. w przerwaniu ADC wykonuj to, co aktualnie wykonujesz w przerwaniu + wystartuj kolejną konwersję. Druga...
Cześć, mam napisać "prosty" program dla ATmegi2560. Po wciśnięciu przycisku na porcie A, ma on zapalić odpowiadającą mu diodę na porcie B. Dioda ma się świecić 1 sekundę a potem ma zgasnąć. Za podtrzymanie świecenia mają odpowiadać przerwania timera1, a program ma się zaczynać od...
Warhard cyt: Powiedzmy że sygnał liniowo opada ze stanu wysokiego w stan niski w czasie 1 sekundy. (Bardzo ale to bardzo małe strome zbocze) Przerwanie ustawione jest na opadające zbocze. Czy AVR zgłosi mi tylko jedno przerwanie ?. Czy bede miał przerwanie za przerwaniem ? Przerwanie...
Witam, od kilku dni męczy mnie uciążliwy problem, nie wiem skąd się bierze przepełnienie stosu, skoro wg mnie program powinien działać poprawnie. Kto wie, co może być tego przyczyną? Dziekuje za jakiekolwiek wskazówki Programator - J-LINK SEGGER Środowisko - IAR Procedura obsługi...
Nie wiem dokładnie jak to jest w bascomie zrobione, ale teoretycznie nie. Przerwanie Timera2 musi wprawdzie poczekać na zakończenie obsługi przerwania timera 0, ale wywoływane jest zawsze w takich samych odstępach czasu (generator nie jest przecież zatrzymywany). więc jeżeli nawet w którymś...
Witam, Niedawno zrobiłem programik, który generuje 3przebiegi przesunięte w fazie. Triggerem dla pierwszego przebiegu jest detektor zera sieci na INT0. Chciałem całą obsługę generowania sygnałów zrobić na przerwaniu Timera. Ale mój ból jak wywołać przerwanie Timera natychmiast po otrzymaniu...
Miałem podobny problem z przerwaniem od RTC (przeliczanie/odświeżanie dnia/miesiąca/godziny itd do struktury). Po zainicjowaniu przerwań: [syntax=c]/* Enable the RTC 1s Interrupt */ NVIC_InitStructure.NVIC_IRQChannel = RTC_IRQn; NVIC_InitStructure.NVIC_IRQCh... = 4; NVIC_InitStructure.NVIC_IRQChannelSu...
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...
Chcialbym napisac najprostrzy program aby sprawdzic czy progra mi wogole wchodzi w przerwanie czyli czy zapali diode. Ale zupelnie nic sie nie dzieje. Zarówno symulacja programowa w AVR Studio, jak i program uruchomiony na realnym sprzęcie działa poprawnie. Albo się pomyliłeś co do podłączenia...
sprawdź w dokumentacji czy aby po zresetowaniu flagi przerwania timera nie trzeba odczekać kilka instrukcji (2-3 NOP'y). Jeżeli tak jest, to w przeciwnym wypadku zaraz po wyjściu przerwanie otworzy się drugi raz i w tej sposób dioda mrugnie tak że tego nie zauważysz. Możesz to sprawdzić tak...
True wyłącza:) (Nawyk z 51:P) :) I nie należy zapominać , o jeszcze jednej prawdzie ;) W 51-ce przed ponownym włączeniem przerwań globalnych , należy wyzerować flagę przerwania , a w AVR należy to zrobić tuż przed zakończeniem obsługi przerwania , bo inaczej ... mamy kłopoty :D Piotrek
Witam. Zabrałem się za pisanie biblioteki do obsługi interfejsu SCI w ww. kontrolerze w języku C. Transmisja i odbiór są realizowane w przerwaniach. Tu mam problem. W procedurze obsługi przerwania wywołanego pojawieniem się odebranego znaku w buforze muszę skasować flagę przerwania (RDRF)....
W cośtam - kasowanie flagi przerwania. Stwierdzam na podstawie takiej, że ustawiłam sobie break point'a na cośtam i nigdy się nie zatrzymuje. Zresztą używam Keila i tam na zielono zaznacza linijki kodu, które zostały chociaż raz wykonane, a ta nie jest nigdy. Zmieniam w debugerze w I/O...
0. PORT_ISC_LEVEL - jak sama nazwa wskazuje, generuje przerwanie tak długo, jak długo jest stan niski. Skasowanie flagi przerwania nie eliminuje przyczyny przerwania. Gdybyś blokował przerwania INT0 dla portu, to miałbyś pojedyncze wyzwolenia, a tak to obserwujesz 2 (i pewnie też więcej) dla...
Witam. Niestety program który chcę napisać nie działa już w początkowej fazie. Nie wiem dlaczego, dlatego proszę aby ktoś na to zerknął i powiedział co jest nie tak. Generalnie program ma działać tak, że po wciśnięciu przycisku program leci do przerwania, w przerwaniu sprawdza czy...
Musi być zawsze: 1. Funkcja obsługi przerwania. Czyli handler. Żeby w ogóle był gdzieś skok, a pod miejscem docelowym skoku instrukcja powrotu. I zależnie od procka: 2. Odczyt rejestru statusu albo rejestru danych. Albo kasowanie jakich bitów w rejestrze statusu czy innym. Żeby wyzerować...
Otwórz sobie pdfa od procesora zajrzyj w sekcje Timer2, poczytaj, przejdź do opisu rejestrów i poustawiaj jak uważasz. Ogólnie dla liczników wybierasz prescaler czyli podział między zegarem (16Mhz dla Arduino) a wejściem licznika. Timer2 jest 8bitowy ma 256 wartości, więc masz kolejny podział....
wychodzi mi jakieś 8 8 cykli to zajmuje pierwsza linijka <; wejście do przerwania to następne kilkanaście + wyjście. Sugerujesz bitbanding dla kasowania flagi przerwania? No przecież właśnie o to chodzi - żebyś nie musiał odczytywać, modyfikować i zapisywać z powrotem. Czyli...
A wchodzi w przerwanie w ogóle? Nie używam SPLa, także nie do końca wiem co się włącza co nie... No i daj czyszczenie flagi przerwania gdzieś wcześniej niż sam koniec handlera. pzdr.
Przede wszyskim sprecyzuj jakie sygnały chcesz badać - częstotliwość i szerokość badanych impulsów (granice). Od tego zależy czy wybrana metoda jest dobra. Po drugie sprecyzuj co chcesz badać - mierzysz szerokość impulsów, czy interesuje cię różna reakcja na zbocza? Wśród AVR masz...
Zaraz po wejściu do procedury przerwania odczytuj dane z rejestru odbiorczego UART (DR) co jednocześnie "czyścli" flagi przerwań. Może to pomoże :)
bez różnicy kiedy ustawisz flagę, przerwanie powinno i tak zadziałać.
Disable INTx nie wyłącza przerwań tylko wyłącza ich obsługę. Ale jak wystąpi zdarzenie to zostanie ono zauważone tylko nie zostanie obsłużone. Nie od razu. Zostanie obsłużone po wydaniu polecenia Enable INTx. Więc albo wyłączaj przerwania deaktywując linie INTx, albo też przed wydaniem...
Pomóżcie, bo nie mogę doczytać, jak się kasuje flagę przerwania od output compare match w ISR? Mam tak void TIM4_IRQHandler( void ) { if( TIM4->SR & TIM_SR_CC1IF ) // if on output compare match { TIM4->SR &= ~TIM_SR_CC1IF; ... Ale bit się...
Hej, moj program pod LPC2129 kożysta z dwóch przerwać: FIQ i IRQ. Obydwa, osobno działają prawidłowo, ale zauważyłem, że gdy podczas wykonywania procedury IRQ nastąpi przerwanie FIQ program się sypie. Po wykonaniu FIQ program nie chce do dokończyć IRQ, ani nawet nie chce wrócić do wykonywania...
Na początku musisz wiedzieć co to jest przerwanie, następnie poszukaj o globalnej fladze przerwań. Następnie jak się włącza przerwania od konkretnych peryferiów oraz jak się deklaruje funkcję obsługi danego przerwania. Jakie dany mikrokontroler ma przerwania to znajdziesz w nocie katalogowej....
Dziękuję za odpowiedź. Problem został rozwiązany. Polegał na tym, że źle usuwałem flagę przerwania od transferu DMA. Zamiast [syntax=c]DMA_ClearITPend... DMA_IT_TC);[/syntax] powinno być: [syntax=c]DMA_ClearITPendingBit... DMA_IT_TCIF0);[/syntax] Pozdrawiam
Pokaż proponowany kod. Chodzi mi o moją funkcję regulacji, regulatora PI, w przetwornicy impulsowej. Czy można tutaj może coś lepiej zrobić? (mikrokontroler XMEGA) [syntax=csharp]/*Funcja regulacji przetwornicy*/ ISR(TCC5_OVF_vect) ... wartosc_rzeczywista; //Wartość...
Posiadam środowisko Keil uVision i taki program: #include <REGX51.H> #include <absacc.H> #include <stdio.H> #define CSMX 0xf018 // adres rejestru wyboru wej?cia multipleksera #define CSAD 0xf010 //rejestr wyniku startu przetwornika unsigned char v_znak='v'; float...
Dzięki wielkie- ale to nie do mnie pisałeś. O Atomic_Block dowiedziałem się w czwartek- sprawdziłem- od czwartku jest to pierwsza wiadomość na ten temat. A wracając do tematu Fir3man- wymyśliłem taki schemat programu: #include <stdint.h> #include <avr/io.h> #include <stdlib.h> #include...
Nie działa Ci, bo nie przeczytałeś dokumentacji... 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...
Witam, 1. aby natąpiło przerwanie trzeba utawić maski. 2. ORG 0x004 ; interrupt vector location - to adres wpisywany do licznika, tutaj musi być pierwszy rozkaz programu (w przerwaniu). Często jest to skok, skok do dowolnego adresu. 3. a. wylaczyc przerwanie (dobrze jest to zrobić - choć nie...
Poniższy program dla wersji ATMega32 usiłuję przerobić na wersję dla ATMega644p /która posiadam/. Program ma za pomocą przerwań realizować opóźnienia. Niestety robi się to wszystko skomplikowane ponieważ jak wiadomo szczególnie system przerwań i timerów jest dużo bardzie rozbudowany...
Witam mam bardzo nietypowy jak dla mnie problem z układem który ostatnio wykonałem. Mianowicie jest to centralka alarmowa oparta o uC ATmega16. Działa na tej zasadzie że pod wejście PB2(INT2) podpięty jest kontrakton (zwiera do masy) do którego przykładam magnes i albo rozbrajam albo uzbrajam...
Witam! Zrobiłem prosty projekt wysokościomierza ciśnieniowego. Wszystko działa w jak najlepszym porządku. Teraz muszę go przekonwertować aby działał na mniejszej płytce zasilanej z baterii. Z tego powodu postanowiłem użyć funkcji sleep i przerwań. Program ma działać tak: - w funkcji...
Napisałem coś takiego (kod poniżej) i prawie działa. Problem był w deklaracji: volatile int LICZNIK (miałem double zamiast int i nie chciało działać). Jak przepisać cały licznik do zmiennej (jaką zmienną zadeklarować)? #include <avr/io.h> #include <avr/interrupt.h> #include...
"Program i założenia są błędne". ;) Ponadto w programie jest jeszcze jeden paskudny błąd: z powodu operacji logicznych na portach w obsłudze przerwania, opercje na portach w pętli głównej muszą być wykonywane w sekcji krytycznej - przy zablokowanych przerwaniach. Inaczej zawartość portu...
Witaj Adamie. ... i niestety nie wychodzi. Na jakiej podstawie tak uważasz? Dodam, że pracuję na Atmel Studio 6, które bardzo nie lubi funkcji SIGNAL(SIG_INTERRUPT0) Ponieważ SIGNAL jest przestarzałe: Atrybut NOBLOCK dodałem na końcu, więc można się nim nie sugerować. W...
Witam, Pracuje nad kodem programu do komunikacji przez UART (mikrokontroler <-> komputer) i zastanawiam się nad sposobem implementacji w przerwaniach. Na razie zrobiłem to w taki sposób: - Nadawanie danych wykonuje w taki sposób, że w programie głównym zmieniam w wskaźniku adres początku...
Cześć, Jestem w trakcie tworzenia małego projektu. Do obsługi 1wire potrzebuję korzystać z przerwania na PC0. Siedzę nad tym dłuższy kawałek czasu i już naprawdę zgłupiłem. Są dwa kody - jeden ma skonfigurowane przerwania z PC0, drugi z PC1. Dlaczego ten z PC1 działa poprawnie,...
Witam, mam dziwny problem przy obsłudze przerwania od ADC End of Conversion. Gdy przetwornik ADC jest skonfigurowany do pracy z DMA procesor nie wchodzi do if`a gdzie jest zerowana flaga zakonczenia konwersji. Wchodzi jedynie do funkcji obslugi przerwania i po sprawdzeniu źródła przerwania wychodzi...
Witam. Kłopot mam następujacy... walczylem dziś z modelarskim servo. Znalazłem program "gotowca" na AVRFreaks. kod poniżej: #include <stdio.h> #include <avr/io.h> #include <avr/interrupt.h> /******... Globale variable **************/ static enum {av1,paa1}...
Jedynie nie wiem jak obsłużyć odczytywanie danych. Do tego chyba ten bufor nie jest potrzebny, tylko jak to uwzględnić w przerwaniu? Sprawa z odczytem jest nieco bardziej skomplikowana, ale to też idzie rozwiązać. Niestety nie przedstawię na forum ani gotowego kodu, ani szczegółowego algorytmu. Mogę...
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....
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...
Witam, proszę o info czemu mi to nie działa. Działenie powinno być takie: przerwanie zewn INT4 powoduje podanie kolejno 67, 67 i 66 impulsów w kolejnych uruchomieniach. Realizuję to przez załączenie T0 w obsłudze INT4. T0 odlicza 250us i ustawia zmienną i aby wykonał się switch() w...
na wyświetlacz timera nie potrzeba, jeśli to zwyklły 16x2 to on nie wymaga zbyt wiele. Timery wtedy możesz na inne rzeczy wykorzystać. Jak odczytujesz temperaturę? Wykorzystujesz watchdoga, resetujesz go właściwie? Pytasz o watchdoga - nie konfigurowałem go, czy on jest z automatu włączony? ...
Cześć, mój program na Arduino Uno ma za zadanie w pętli loop dokonywać pomiaru odległości (czujnik hc-sr04, biblioteka newping), w momencie gdy zadziała fotokomórka, następuje przerwanie i wykonuje się przeliczenie odległości na wartość współczynnika kąta tarcia Gdy kliknę przycisk...
W oparciu o Wasze rady oraz [url=]Newbie's Guide to AVR Timers i przydatną stronę [url=]ATmega Timer/Counter/Prescaler Calculator w wolnym czasie sklepałem taki kawałek kodu: [syntax=c]#include <avr/io.h> #include <avr/interrupt.h> volatile unsigned char nacisnieto=0; kontrola=0; volatile...
Witam, chciałbym rozbudować kod znaleziony tutaj: Na razie chciałbym dodać obsługę timerów, niestety przerwania nie działają ;/ Sprawdzam działanie przerwań za pomocą JTAGa (Atmel ICE) i stawiam breakpoint'y w funkcjach obsługi tych przerwań, niestety program się nie zatrzymuje... Korzystam...
Edit: DMA nie działało bowłączałem DMA2 a nie DMA1. Napiszę jak dalej pójdzie :] Cześć, mam pewne problemy z I2C, bazowałem na zmodyfikowanym kodzie od ST (jak mnie pamięć nie myli) najpierw używałem samych przerwań na najwyższym priorytecie jak ST przykazało, niestety od czasu do...
2 i 3 działają na LOW, 18,19,20 i 21 również na CHANGE. [syntax=c]#include <avr/sleep.h> //dziala z arduino 1.6.12, gorzej ze starszymi np 1.6.9 #define ledPin 13 #define interruptPin 19 //numer pinu przerwania, np. 2,3,18,19,20,21 #define przerwanie 2 volatile boolean flag; ...
tu jest kod prostego programu który podgląda to co dzieje się na magistrali, filtruje odpowiedź jednego z urządzeń i obrazuje na ekranie to co jest odbierane. jest tam też pomocniczy licznik który pozwala mi analizować ile tych ramek (które są odpowiedzią urządzenia może być pomijane....
Nie wiem jak to zrobić konkretnie na 8051 ale może by tak : Procedura przerwania zliczająca czas ustawia cztery flagi: 50ms, 1000ms, 1300ms i 2000ms. Każda flaga odpowiadałaby odpowiednio za zapalenie lub zgaszenie diody. Pętla główna sprawdzałaby postawienie flagi od ostatniej do pierwszej....
To w ogóle jest zły przykład by w przerwaniu bawić się na zmiennoprzecinkowych i jeszcze do tego obsługiwać wyświetlacz LCD. To się oczywiście da zrobić, ale z głową i kiedy się zna konsekwencje takich działań. Jako przykład jest beznadziejny :D Już w pierwszej minucie przerobiłbym...
Napotkałem dziwny problem. Spróbuję to dość jasno opisać. W procedurze uruchamiam timer0. Następnie po uruchomieniu program wpada w pętle : flaga=1; timer0_on; while(flaga&... zmienna flaga zadeklarowana jako globalna (na samym szczycie kodu po define'ach)...
Przerwania od innych blokow dzialaja poprawnie(np. dokladnie tak samo nic nie robiace przerwanie od MC wykonuje sie bezblednie) natomiast przerwanie od prztwornika wywoluje sie raz po czym rzuca Undefinem lub Data Abortem. Po pzejzeniu konfiguracji przetfornika i upewnieniu ze napewno czyszcze wszystkie...
Wystarczy zerknąć do DS i sprawdzić jak poustawiać rejestry. To jest kilka linijek kodu - uruchomienie timera w tryb input capture + przerwanie overflow od niego - uruchomienie innego timera w trybie ctc liczącego np 20ms. - obsługa przerwania w którym ustawiamy flagę (tego z ctc), że trzeba...
Witam. Próbuję nauczyć się korzystać z przerwań. Napotkałem taki oto problem. W moim programie mam funkcję która wczytuje określoną ilość bajtów z USART by wydać odpowiedni rozkaz. Kiedy funkcja ta "trwa" czyli czeka aż wpiszę te bajty do terminala to przerwania nie działają albo mikrokontroler...
Czyżbyście cierpieli na jakąś manię prześladowczą :?: A dlaczego tak sądzisz? Poza tym- po co jest to kasowanie flagi przerwania w przerwaniu- po obsłudze przerwania ta flaga sama się kasuje. A co, jeśli źródłem przerwania jest np. przycisk generujący serię zboczy :?: Jest...
Wkleje wiekszy kawalek kodu: #define baud ((F_CPU/(predkosc*16UL)&... predkosc 4800 #define F_CPU 16000000UL #include <avr/io.h> #include <avr/pgmspace.h> #include <stdio.h> #include <util/delay.h> #include <string.h> #include...
...czy na czas wytransmitowania, bądź odbioru znaku program wstrzyma swoje działanie na 10ms, czy po prostu odbędzie się to równolegle... Jeśli budujesz transmisję RS232 na przerwaniach, sprzętowy USART odbiera znak w czasie, gdy procesor wykonuje program główny. Po odebraniu całego...
No tak, nie podałem że po main() jest definicja. To teraz dalej całość: [syntax=c]#include <avr/io.h> #include <util/delay.h> #include <avr/interrupt.h> volatile uint8_t pwm0=56; volatile uint8_t pwm1=108; volatile uint8_t pwm2=60; volatile uint8_t pwm3=70; volatile uint8_t...
To zapewne nie przechodzi przez kompilację: Pułapka 1: Zerowanie bitu przez wpisanie jedynki Czyli zamiast zgasić flagę ustawiłeś ją ponownie :) Inna sprawa że robisz to niepotrzebnie, ponieważ flaga ta jest gaszona sprzętowo zaraz po wejściu do funkcji obsługi przerwania: Bit...
Co do priorytetów w AVR to jest on taki jaka kolejność wektorów przerwań. A wracając do twojego problemu, ja zrobił bym to tak: Jak procedura przerwania od wyświetlacza zrobi swoje to ustawia flagę gotowości. 1. Ty natomiast w programie głównym testujesz tą flagę, jak stanie się gotowa...
Witam! Jak powinna zachowywać się flaga RXC w tym uC? Według specyfikacji powinna wyzerować się, gdy nowe dane zostaną odczytane z rejestru UDR. W tym momencie głupieje :). Program: int main(void) { //sei(); UBRRL=0x33; // BaudRate UCSRB =0x18; // RXEN TXEN // UCSRB...
Witam, uruchomiłem przerwania jednak jest jeden defekt i to poważny. Pętla główna działa ok i przerwanie od INT1 wywołuje się poprawnie, ale tylko jeden raz. To znaczy wchodzi do obsługi przerwania i powraca do pętli głównej, ale przy kolejnym żądaniu przerwania już go nie wykonuje....
Ja też Bascoma nie znam więc Ci wytłumaczę jak ja bym to zrobił, może Ci się przyda. Masz zmienną impuls która jest inkrementowana w przerwaniu od zdarzenia zewnętrznego np zboczem opadającym. Ustawiasz sobie jeden Timer zgłaszający przerwanie (np od przepełnienia) powiedzmy co 1 ms....
a jak zatem rozumieć priorytety przerwań związane ze slotami? Nie jestem biegły w ARM7, powtórzę, ale polegam tu na tej publikacji: a szczególnie na tym fragmencie: 4. On the LPC214x processors, two hardware priority groups are available. The high priority interrupt is referred...
Witam! Mam problem ze zrozumieniem działania zewnętrznych przerwań w mikrokontrolerach atmega (avr). Dla przykładu posłużmy się konkretnym osobnikiem - Atmega48. W specyfikacji (strona 64) wyróżniają dwa przerwania INT0 i INT1 i dodatkowo 24 - PCINT23..0. Te 24 przerwania są podzielone...
Witam, chcąc zautomatyzować przesyłanie drobnych danych po USB postanowiłem napisać program w oparciu o przerwania. Przerwanie dla kontrolera USB działa poprawnie, natomiast przerwanie od endpoint/pipe nie wywołuje się. Nie wiem czy jest to spowodowane moim błędem w inicjacji endpoint'u kontrolnego,...
Jednka pojawil sie nastepny problem ktorego nie moge rozwiazac, jak badalem ten kod ktory mowilem, ze dziala; to duszac pare razy na przycisk program sie zawieszal. Wie ktos moze dlaczego? Może kolega rozwiązał ten problem? Szukałem podobnego rozwiązania i ten wątek okazał się bardzo pomocny,...
A kto czyści flagę przerwania? Bo tutaj nie widać... W zasadzie we wszystkich przykładach wykorzystania przerwania z UARTA nie było nigdzie czyszczenia flagi, więc założyłem, że jej nie potrzeba... gdzieś czytałem, że flaga jest automatycznie czyszczona, ale jestem laikiem więc mogę...
Witam, mam problem z uruchomieniem przerwań. Procesor działa poprawnie, nie zawiesza się ale nie chcą ruszyć przerwania. Proszę o wskazówki. Programy piszę w Keilu [syntax=c] #include<AT91SAM7S... main_init(void); void...
.....Posiadanie tych dwóch zezwoleń nie wystarcza jeszcze do uruchomienia interruptu; to są tylko zezwolenia (mogą figurowac od samego startu programu). Na egzekucję interruptu wymagany jest trzeci warunek: - odpowiednia flaga stawiana przez program podczas jego przebiegu i jest wynikiem spodziewanych...
Moj program tak wyglada w uproszczeniu: Rjmp start ;Tutaj znajduja sie rużne procedury Start: ;Wskaźnik stosu Ldi R16,low(RAMEND) Out SPL,R16 Ldi R16,high(RAMEND) Out SPH, R16 ;Wyzeruj wszystkie flagi Ldi Acc,00 Out Sreg,Acc ;Zaden przycisk nie...
Na tstos odklada sie rejestry i rejestr statusowy po to zeby zapewnic poprawna prace programu po wyjsciu z przerwania. Wyobraz sobie ze robisz operacje dodawania i chcesz w kolejnej instrukcji sprawdzic flage przepelnienia (zalozmy ze jest wlasnie "zapalona", a tu wystepuje przerwanie w ktorym owa flaga...
Witam. Widze, ze wielu fachowcow juz sie podejmowalo tlumaczenia, ale jakos bez rezultatu. Po wciśnięciu jednego z przycisków, uC ma "wpadać" w nieskończoną pętlę. ... chciałbym zmieniać tryb pracy mojego uC bez względu w jaką pętlę wpadł ... ... Dwa switche będą wykonywały...
Witam, Probuje potestować przerwania IRQ dla TImera. Podbralem sobie przyklady Bryndzy i po malych przerobkach nie za bardzo o dziala. Po samych ustawianiach Timera wchodzac do petli while flaga T0IR jest ustawiana, czyli funkcjonalnie jako tak śmiaga. Ale niestety nie działa jeśli probuje...
Portuję system Contiki na STM32F303 i natknąłem się na problem z brakiem linkowania handlerów przerwań. Ponieważ interesuje mnie obsługa modułu radiowego SPIRIT1, portowanie sprowadziło się do skopiowania katalogu platform/stm32nucleo-spirit1 oraz katalogu cpu/arm/stm32l152 do platform/stm32elnix...
hmm, przerwania co 20 instrukcji procesora ;-) Wydaje mi się, że nie uwzględniasz czasu pomiędzy wywołaniem przerwania a ustawieniem timera. Dla przykładu ; INTERRUPT ORG 0x004 ; interrupt vector location btfsc INTCON,T0IF ; TMR0 overflow goto serv_t0 retfie ; return from...
Czy wiesz co to jest prolog i epilog w assemblerze? Czy wiesz co to jest stos? Z tego co wiem w obsłudze przerwania powinno stosować się krótki i prosty kod, natomiast w moim przypadku potrzebuję po wystąpieniu przerwania przejść do wykonywania programu w pętli. Od takich spraw są flagi...
Ok udało się rozwiązać. Problemem było NIE podnoszenie pinu CS po konwersji. Drugim problem było zerowanie flagi I. Nie doszedłem, dlaczego tak się działo. Wyłączenie przerwań na czas odczytu pozycji i ponownie ich uruchomienie, pozwoliło mi zamaskować problem z flagą I. Działająca...
Poprawiłem warunek, teraz czeka dopóki flaga == 0, jeśli 1 to wyświetla wynik z tym że działa dla P1.8 i CT16B1. Na P1.8 jest microswitch podciągnięty do VCC przez rezystor. Kod dla P3.3 i CTB160 dalej nie wchodzi do przerwania. jakiś pomysł ? To wrzuca na terminal dla P1.8 i CT16B1: ...
W obsłudze przerwania umieścić należy kilka warunków, które będą sprawdzały wartość zmiennej i za pomocą polecenia Goto XXX przeskakiwały do kolejnych pętli. Tak NIE WOLNO ROBIĆ, powoduje to przepełnienie stosu (bo nigdy nie wychodzi z przerwania). Poprawnie można to zrobić tak:...
Zaraz przeinstaluję... no to faktycznie moja wersja to już staruszek. Zauważyłem też ze przy wystąpieniu przerwania w rejestrze flag EIFR flaga INTF0 w ogóle nie jest ustawiana. Zobaczymy co wyniknie po zmianie WINAVR Dodano po 19 Na reszcie działa !!! Przedstawiam kod który działa...
Jeśli chcesz aby w trakcie jednego przerwania zostało obsłużone drugie, ważniejsze, dopisz w przerwaniu SEI. Wchodząc do przerwania flaga I jest zerowana i są wyłączane przerwania, rozkaz RETI ponownie ustawia flagę I.
Mam dziwny problem. Atmega128 pracuje wykorzystując dwa uarty. Obydwa podpięte pod terminal. UART0 tylko i wyłącznie ustawia flagi po interpretacji treści. To przerwanie zawiesza się po uruchomieniu funkcji z przerwania UART1 . Wywoływana funkcja do poprawnego wykonania się potrzebuje stanu...
Witam forumowiczów, Sytuacja wygląda tak, że z jednostki nadrzędnej słane są ramki danych, Po każdej ramce jest szczelina czasowa tak aby nasza ATmega zdążyła odpowiedzieć, Mamy Atmega16 kwarc 16MHz i transmisje 57600 (w przybliżeniu), Gadamy przez RS485 tak, że między ramkami jeszcze...
Jak program wejdzie raz do obsługi przerwania to je wyłącza. Czyli eliminacja drgań styków jest załatwiona. Otóż nie jest załatwiona. Nawet jak wyłączysz przerwania na początku to i tak nie wyłączysz ich bezpośrednio po przyjęciu przerwania, a dopiero po paru mikrosekundach jak 28...
Proszę o pomoc, nie wiem czy dobrze kombinuję z tym Capture Mode. Próbuję cały czas to jakoś odpalić w moim programie, ale nie wiem czy czy dobrze robię. [syntax=vb]'-----------------... = "m16def.dat" ...
Dawałem breakpointa, również dioda na płytce zasygnalizuje mi wejście do void DMA2_Stream1_IRQHandler(void) W kodzie obsługi przerwania jest tylko włączenie diody, a potem kasowanie flagi przerwania. Ale gafa...zapomniałem ustawić bit TCIE w rejestrze CR :| ehh
Podaj zliczane impulsy na wejście taktujące licznik (Tn) a sygnał bramkujący na wejście przechwytujące (ICPn). Ustaw licznik na taktowanie z wejścia Tn. Początkowo skonfiguruj wyzwalanie przechwytywania na zbocze narastające, a gdy ono wystąpi, w procedurze obsługi przerwania input capture...
Witam Po przesiadce na C umęczyłem taki program, ale dalej coś nie teges? Przerwanie wykonuje się 128 razy ale tylko Y się zwiększa. Jeżeli te sprawdzenie IF od stanu 0 na pinB.3 jest złe to i tak przerwanie powinno się wykonać 256 razy. Bo mam na tym porcie 128 impulsów "0" a przerwanie...
tadzik85 odniosę się do twojej wypowiedzi. 1. Dlaczego nie powinienem kasować flagi przerwania wewnątrz programu? Przerwanie odblokowane zostaje wtedy dopiero po wykonaniu zadania, które zostało za jego pomocą wykonane. 2. Skoro tak skrytykowałeś moją metodę wykonania menu, może podasz...
Set EIRF to już etap kombinowania, pomijając ten zapis próbowałem z Eifr = &B00000011 jak i Eifr = &B00000000 efekt jest ten sam 2x przerwanie... zamysł jest taki by wyzerować flagę zgłoszenia przerwania INT0 czyli ostatni bit rejestru EIFR a to mi nie działa... i chyba nie da się wymusić...
Witam Program przedstawiony ma za zadanie cykliczną zmianę portu p1.7. Cała zbawa odbywa się w przerwaniu. Mikrokontroler wchodzi do przerwania w momęcie ustawienia flagi TF0 (dla timera0). Flaga zostaje ustawiona automatycznie w momęcie kiedy licznik timera0 doliczy do 0 (licznik liczy w górę...
Flaga I w SREG jest zerowana automatycznie w momencie wystąpienia przerwania. To zerowanie jest realizowane przez sprzęt niezależnie od programu. Jeśli programista zamierza zezwolić na inne przerwania podczas wykonywania procedury obecnego przerwania, musi to zrobić poprzez ponowne ustawienie tej...
W przerwaniu to tylko chwytasz wartość tego, co chcesz wyświetlić i ustawiasz odpowiednią flagę/bit/wartość w globalnej zmiennej volatile i wypad z tego baru.... ;) W main natomiast sprawdzasz, czy jest coś nowego, jak jest to wyświetlasz lub robisz z tym, co ci się podoba i zaznaczasz flagę/bit/wartość,...
Witam! Mam problem z projektem na STM32. Chciałem użyć pamięci flash do zapamiętania potrzebnych mi parametrów. Problem pojawił się przy czyszczeniu flasha. Po wywołaniu FLASH_ErasePage dostaję flagę FLASH_FLAG_BANK1_EOP,co wydaje się całkiem prawidłowe. Program wraca do pracy z tym,...
Witam Dosięgła mnie ta przyjemność (albo i nie) przesiadki na pice (pic24j256GB110) + MPLAB. Otóż próbuje uruchomić na board test podstawowe funkcje przerwania timery uart etc. i natknąłem sie na podstawowe przeszkody: 1. funkcje przerwań: (z jakiegoś tutoriala) [b]void __attribute__((__interrupt__,no_...
Najpierw spróbuj może dodać: ...ale jak ustawię ręcznie bit UDRE w UCSRA który oznacza że bufor jest pusty, także nic się nie wysyła. To nie jest argument. Flag przerwań w AVR generalnie nie da się ustawiać programowo, niektóre można tylko wyzerować. Akurat UDRE można wyzerować...
Czyli rozumiem że najlepszą praktyką jest ustawianie w flagi w procedurze przerwania a resztę wykonywać w main? W Twoim przypadku na pewno. I tak robić dla każdego rodzaju przerwania? Nie, tylko tam gdzie masz kod, który wykonuje się sporo czasu. Co znaczy "sporo czasu"? A to już...
Witam, Mam problem z obsluga przerwan od przepelnienia licznikow. W projekcie wykorzystuje 3 liczniki w atmega8, timer2 wykorzystuje do generacji sygnalu 40kHz natomiast pozostale dwa maja zliczac czas od nadania sygnalu do otrzymania echa. Narazie napisalem osobną obsluge kazdego z timerow i dzialalo....
Witam. Za mną cały dzień ślęczenia nad tym nieszczęsnym prockiem i problem dalej nie rozwiązany. Potrzebuję oprogramować przerwania EXTI z przycisków/krańcówek itd. Z kodem zszedłem już do poziomu migania diodą, żeby tylko uruchomić sukcesywnie te przerwania, a tu dalej klapa....
Takie odwołanie powoduje zerowanie flagi. Wydaje się to dziwne ale już się sam przekonałem. Generalnie w symulatorze AvrStudio ustawienie flagi wywołuje przerwanie. Może wpis zera będzie powodował wygenerownie przerwania ??
Przyglądnij się temu przykładowi TRISA = %00010000 ' Set PORTA.4 (TOCKI) to input for timer0 OPTION_REG = %00111000 'Transition on TOCKI (RA4), 'Increment on falling edge 'Prescalar assigned to WDT for a 1:1 TMR0 ratio. INTCON.2 = 0 ' Clear Timer0...
stworz zmienna która bedzie odpowiadała fladze na timer2_flag i jak wejdzie w przerwanie ustaw ja na 1 i niech wyjdzie z przerwania potem w glownej petli programu na wykrycie flagi 1 zrobi co musi mysle iz jest to dobre rozwiazanie
Wektory przerwań mają odpowiednie priorytety ... jeżeli odczyt czasu masz w przerwaniu to przerwanie klawiatury powinno być o mniejszym priorytecie. Jeżeli obsługę odczytu masz w pętli głównej - to zrób własny "kontroler przerwania" :P Po odczytaniu godziny itd. sprawdź czy flaga przerwania...
A mogę chyba ją skasować zaraz na początku IFa? Tak mi się wydaje logiczniej, chociaż to chyba nie ma żadnego znaczenia. znaczenie to ma :) ale w tym przypadku możesz ją kasować na początku, jednak zauważ jaki ciekawy mechanizm masz w rękach. Bo np gdy chciałbyś aby w przerwaniu...