Kanał - ATNEL tech-forum
Wszystkie działy
Najnowsze wątki



Teraz jest 12 kwi 2026, o 16:30


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 2 ] 
Autor Wiadomość
PostNapisane: 13 paź 2015, o 18:38 
Offline
Użytkownik

Dołączył(a): 18 lip 2014
Posty: 69
Pomógł: 0

Dobry wieczór,

W swoim programie chciałem zastosować jednocześnie 2 przerwania: od Timera0 do multiplesowania wyświetlacza LED 7-segmentowego, oraz od Timera1 do innej części programu.

Oto mój kod:
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


A w drugim pliku:
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


Niestety okazuje się, że na wyświetlaczu LED nic się nie wyświetla. Kiedy jednak dodam fragment kodu odpowiedzialny za to drugie przerwanie, okazuje się, że działa ono bez problemów - także nie działa jedynie przerwanie od Timera0.

Czy wiecie co może być przyczyną takiego stanu rzeczy?

P.S. Ogólnie program jest grą na wyświetlaczu LCD, na LED mają pojawiać się punkty. Nie wstawiam całej gry, bo plik byłby zdecydowanie zbyt długi. Próbowałem odpalać program dając w komentarz wszystko poza fragmentem wstawionym powyżej i efekt był ten sam - nie działa. Tak więc sam kod gry jest w porządku. Zauważyłem jednak, że kiedy usunę fragment:
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

wyświetlacz LED zaczyna normalnie działać, czyli coś nie tak z przerwaniem od Timera1.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 13 paź 2015, o 20:16 
Offline
Uzytkownik zasłużony dla forum.atnel.pl
Avatar użytkownika

Dołączył(a): 16 lip 2012
Posty: 2088
Lokalizacja: Leżajsk / Kraków
Pomógł: 411

Jak już odblokujesz dane przerwanie to musi znaleźć się odpowiednia dla niego funkcja ISR chociażby pusta. Jak masz problem to uprość to sobie do maksimum. W funkcji main wstaw obydwie konfiguracje. Pamiętaj, że sei() to globalne zezwolenie na wszystkie przerwania. W funkcjach obsługi przerwań inkrementuj liczniki i migaj 2 diodami za pomocą 2 timerów.

PS. Na końcu funkcji main umieść nieskończoną pętlę.

_________________
Dragonus Cracovus: Biomagia



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
Wyświetl posty nie starsze niż:  Sortuj wg  
Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 2 ] 

Strefa czasowa: UTC + 1


Kto przegląda forum

Użytkownicy przeglądający ten dział: Brak zidentyfikowanych użytkowników i 0 gości


Nie możesz rozpoczynać nowych wątków
Nie możesz odpowiadać w wątkach
Nie możesz edytować swoich postów
Nie możesz usuwać swoich postów
Nie możesz dodawać załączników

Szukaj:
Skocz do:  
Sitemap
Technologię dostarcza phpBB® Forum Software © phpBB Group phpBB3.PL
phpBB SEO