No więc wykonałem małe ćwiczenie w związku z tym tematem.
Utworzyłem kilka timerów z pierwszego postu, tzn.
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
Ponieważ na dany moment nie miałem przygotowanych ledów, to wykorzystałem wyświetlacz lcd.Wyświetlałem teksty w czterech linijkach, migotałem na
różne sposoby tymi tekstami. Wiem, że w przerwaniach nie należy wyświetlać tekstów na lcd ze względu na spowolnienie całości, ale ja zastosowałem
sterowanie buforowe i funkcje Mirka z projektu warstw na lcd. Jednym słowem kosmos do tradycyjnego sterowania
![Bardzo szczęśliwy :D](https://forum.atnel.pl/images/smilies/icon_e_biggrin.gif)
. Teraz nie wstawię kodu, ponieważ
jestem na innym kompie, ale wyglądało to tak, że migałem dwoma tekstami w dwóch linijkach. Dwa teksty migały około 2 razy na sekundę. Pozostałe wyświetlały
się statycznie. Miganie zrobiłem tak, że jeden timer zapalał napis, a drugi timer gasił (czyścił).
Dla drugiego napisu tak samo. Jeden timer zapalał napis, a drugi gasił. Czyli razem cztery timery dla dwóch mrugających napisów. I teraz najważniejsze.
W obu przypadkach ustawiłem takie same czasy dla dwóch linijek (czas świecenia i czas nieświecenia). I co zauważyłem:
Oba napisy zapalają się dokładnie i gaszą w tych samych momentach (pomijam bezwładność wzroku i co tam jeszcze). I teraz na pierwszy rzut oka doszedłem
do wniosku, że dwa (czy może 4) niezależne timery robią zupełnie niezależne , choć takie same procesy i być może dokładnie, a może prawie dokładnie w tym
samym czasie (nie wiem, jak Mirek by to nazwał) i właśnie o to mi chodzi. Jeżeli program jest napisany liniowo, to czy tak utworzone timery ich czasy są
prawidłowo ustawione (wpisane w programie, np timerX=100;). Może się ktoś śmiać, że tak rozkładam takie rzeczy na czynniki pierwsze, tak drobiazgowo, ale
mi naprawdę zależy na zrozumieniu tematu. Tu jest tylko miganie napisami, a jak będą jakieś szybkie instrukcje w kilku przerwaniach i źle to zrobię, to pozamiatane
![Płacze :cry:](https://forum.atnel.pl/images/smilies/icon_cry.gif)
. Można to jeszcze powtórzyć z kilkoma diodami i mruganiem co sekundę, czy nawet dwie i wtedy widać dokładnie co się dzieje. Mi się wydaje, że przy liniowym programowaniu może się wykonać tylko jedno zadanie i jeśli wykonuje się w danym momencie obsługa przerwania i kod związany z
tą obsługą, to nie może w tym samym czasie wykonywać się obsługa drugiego przerwania, no chyba, ze nie mam racji, albo pomimo, że są wpisane takie same liczby, to ten czas tak na prawdę jest różny z perspektywy procesora, bo oczy mogą kłamać. A żeby dalej nie zamęczać tym tematem proszę o konkretną
odpowiedź kolegów, którzy znają tą materię. Z góry dzięki.