Witam.
Dzieki uzytkownikom tego forum zdążyłem, w moim odczuciu, zrobić postępy w zrozumieniu przerwań. Wiem już o tym dlaczego nie stosować funkcji delay w przerwaniu ze względu na niedokładność odliczanego przez nią czasu i ryzyko gubienia przerwań i zamiast tego używać timera do opóźnień. Próbuję jeszcze zapanować nad jedną rzeczą ale mi się nie udaje... Mianowicie:
Oto fragment kodu:
Taktowanie procesora jest ustawiony na 16 MHz stad, tak jak pisalem w komentarzach, dioda zielona pali sie praktycznie non stop, niezauwazalnie migajac wiec to jest dobrze. Chce aby dioda czerwona zostala calkowicie zgaszona w momencie gdy mam wcisniety przycisk tzn. gdy generują się przerwania. No ale wiem ze program w pewnym momencie opuszcza przerwanie i pomimo PORTA &=~(1<<PA5) dioda czerwona na krotko mrygnie w petli glownej. Chciałbym abyście podsunęli mi jakiś pomysł jak zrealizować takie zadanie, że dioda czerwona miga sobie spokojnie w petli głownej (dioda zielona zgaszona), a gdy wystepuja przerwania zewnetrze dioda zielona zaczyna swiecic(nie mrygać) a dioda czerwona zostaje calokowicie wygaszona w tym czasie. Wiem ze to co zrobilem jest troche oszukane bo wystarczy zmniejszyc czestotliwosc zegara by zauwazyc ze obie diody tak naprawde migaja w czasie wystepowania przerwan. Jak to zrobic poprawnie ,gdy używamy przerwań? Z góry dzięki za jakieś pomysły
Dzieki uzytkownikom tego forum zdążyłem, w moim odczuciu, zrobić postępy w zrozumieniu przerwań. Wiem już o tym dlaczego nie stosować funkcji delay w przerwaniu ze względu na niedokładność odliczanego przez nią czasu i ryzyko gubienia przerwań i zamiast tego używać timera do opóźnień. Próbuję jeszcze zapanować nad jedną rzeczą ale mi się nie udaje... Mianowicie:
Oto fragment kodu:
Kod: C / C++
Taktowanie procesora jest ustawiony na 16 MHz stad, tak jak pisalem w komentarzach, dioda zielona pali sie praktycznie non stop, niezauwazalnie migajac wiec to jest dobrze. Chce aby dioda czerwona zostala calkowicie zgaszona w momencie gdy mam wcisniety przycisk tzn. gdy generują się przerwania. No ale wiem ze program w pewnym momencie opuszcza przerwanie i pomimo PORTA &=~(1<<PA5) dioda czerwona na krotko mrygnie w petli glownej. Chciałbym abyście podsunęli mi jakiś pomysł jak zrealizować takie zadanie, że dioda czerwona miga sobie spokojnie w petli głownej (dioda zielona zgaszona), a gdy wystepuja przerwania zewnetrze dioda zielona zaczyna swiecic(nie mrygać) a dioda czerwona zostaje calokowicie wygaszona w tym czasie. Wiem ze to co zrobilem jest troche oszukane bo wystarczy zmniejszyc czestotliwosc zegara by zauwazyc ze obie diody tak naprawde migaja w czasie wystepowania przerwan. Jak to zrobic poprawnie ,gdy używamy przerwań? Z góry dzięki za jakieś pomysły