Witam!
Mam problem z timerami w języku C (w moim projekcie) dlatego zwracam się do Was o pomoc. Napiszę od początku, żeby przedstawić o co mi chodzi.
Zbudowałem kiedyś sterownik taśmy led RGB oparty na mikroprocesorze attiny2313, w którym za pomocą jednego przycisku zmieniam podstawowe kolory na pasku ledowym (czerwony, zielony, niebieski) oraz ich podstawowe zmieszane odcienie (fioletowy, pomarańczowy, błękitny, biały). Dodatkowo tym samym przyciskiem (przytrzymując go dłużej) mogę zgasić taśmę ledową oraz ją zaświecić. Do działania przycisku jest wykorzystany Timer0. Poniżej zamieszczam mój dobrze działający kod wg. powyższego opisu (ładnie opisany):
Teraz chciałem prosić o pomoc, ponieważ chcę zastosować kolejny Timer do sterowania PWM taśmą ledową. Problem polega na tym, że gdy wrzuciłem Timer1 do mojego projektu to kolory się wyświetlają, mogę przyciskiem je przełączać, ALE zauważyłem, że co ok. 1 sekunde dioda RGB lekko mrugnie i jest brak reakcji na dłuższe przytrzymanie klawisza.
Zauważyłem także, że gdy chcę zmienić wartość wypełnienia to dioda tylko miga szybciej lub wolniej w zależności jaką wartość wpiszę 0-255.
Mam wrażenie jakby Timery przeszkadzały sobie na wzajem? Nie wiem jak to rozwiązać. Poniżej zamieszczam aktualny kod jakby ktoś był miły zerknąć i pomóc/podpowiedzieć mi? Bardzo proszę
W powyższym programie jest tylko dodany kolejny timer oraz funkcja do sterowania PWM diodami RGB.
Dodam tylko jeszcze, że gdybym nie wykorzystywał Timera do obsługi klawisza (wtedy odpada reakcja na dłuższe przytrzymanie) to sterowanie PWM by działało (testowałem). Ale zależy mi na tym, żeby klawisz działał tak jak opisałem.
Mam problem z timerami w języku C (w moim projekcie) dlatego zwracam się do Was o pomoc. Napiszę od początku, żeby przedstawić o co mi chodzi.
Zbudowałem kiedyś sterownik taśmy led RGB oparty na mikroprocesorze attiny2313, w którym za pomocą jednego przycisku zmieniam podstawowe kolory na pasku ledowym (czerwony, zielony, niebieski) oraz ich podstawowe zmieszane odcienie (fioletowy, pomarańczowy, błękitny, biały). Dodatkowo tym samym przyciskiem (przytrzymując go dłużej) mogę zgasić taśmę ledową oraz ją zaświecić. Do działania przycisku jest wykorzystany Timer0. Poniżej zamieszczam mój dobrze działający kod wg. powyższego opisu (ładnie opisany):
Kod: C / C++
Teraz chciałem prosić o pomoc, ponieważ chcę zastosować kolejny Timer do sterowania PWM taśmą ledową. Problem polega na tym, że gdy wrzuciłem Timer1 do mojego projektu to kolory się wyświetlają, mogę przyciskiem je przełączać, ALE zauważyłem, że co ok. 1 sekunde dioda RGB lekko mrugnie i jest brak reakcji na dłuższe przytrzymanie klawisza.
Zauważyłem także, że gdy chcę zmienić wartość wypełnienia to dioda tylko miga szybciej lub wolniej w zależności jaką wartość wpiszę 0-255.
Mam wrażenie jakby Timery przeszkadzały sobie na wzajem? Nie wiem jak to rozwiązać. Poniżej zamieszczam aktualny kod jakby ktoś był miły zerknąć i pomóc/podpowiedzieć mi? Bardzo proszę
Kod: C / C++
W powyższym programie jest tylko dodany kolejny timer oraz funkcja do sterowania PWM diodami RGB.
Dodam tylko jeszcze, że gdybym nie wykorzystywał Timera do obsługi klawisza (wtedy odpada reakcja na dłuższe przytrzymanie) to sterowanie PWM by działało (testowałem). Ale zależy mi na tym, żeby klawisz działał tak jak opisałem.