Używam timera do sterowania diód RGB. Szukam innego sposobu, ale w innym temacie. Tutaj chce sie dowiedziec innej rzeczy. Otóż:
timer ustawiony jest w tryb generacji PWMa Mode 1. Gdy channel jest nieaktywny mam pull-downa, więc linia jest w stanie niskim. Gdy chcę aktywować PWMa i daję enable tego channela to linia idzie mi na około 1us w stan wysoki, z powrotem w stan niski i dopiero zaczyna emitować oczekiwanego pwma. Powoduje to przesunięcie wysyłanych bitów do diód o jeden, przez co błędne sterowanie kolorami. Czy jest możliwość ustawienia, żeby poza samą generacją PWMa linia była w stanie niskim kiedy enabled? Jak mogę sobie z tym poradzić?
edit: ciekawostką jest, że ta linia nie zawsze idzie w stan wysoki, gdy enabled. Nie dzieje się tak np. przy pierwszej generacji, na inicjalizacji systemu, gdy zeruję wszystkie diody.
Dodano po 1 [godziny] 14 [minuty]:
Ok musiałem wyłączyć disable rejestru compare od tego kanału w przerwaniu od DMA (co było realizowane przez biblioteki HALowe). Linia pozostaje w stanie niskim.
timer ustawiony jest w tryb generacji PWMa Mode 1. Gdy channel jest nieaktywny mam pull-downa, więc linia jest w stanie niskim. Gdy chcę aktywować PWMa i daję enable tego channela to linia idzie mi na około 1us w stan wysoki, z powrotem w stan niski i dopiero zaczyna emitować oczekiwanego pwma. Powoduje to przesunięcie wysyłanych bitów do diód o jeden, przez co błędne sterowanie kolorami. Czy jest możliwość ustawienia, żeby poza samą generacją PWMa linia była w stanie niskim kiedy enabled? Jak mogę sobie z tym poradzić?
edit: ciekawostką jest, że ta linia nie zawsze idzie w stan wysoki, gdy enabled. Nie dzieje się tak np. przy pierwszej generacji, na inicjalizacji systemu, gdy zeruję wszystkie diody.
Dodano po 1 [godziny] 14 [minuty]:
Ok musiałem wyłączyć disable rejestru compare od tego kanału w przerwaniu od DMA (co było realizowane przez biblioteki HALowe). Linia pozostaje w stanie niskim.