Napisałem taki oto program do obsługi tego sygnału, gdzie na początku ustawiam Timer1 do trybu Input Capture:
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
a następnie typowy kod znaleziony na tym forum:
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
Wartość PulseWidth wyświetlam sobie na wyświetlaczu. Procesor ustawiony jest na taktowanie 16MHz. Przy preskalerze o wartości 8 daje to zmianę licznika Timera1 co 0,5us. W przypadku sygnału PWM, który podaję na sterownik minimalna szerokość impulsu wynosi 1us, a maksymalna 4095. Zgodnie z tym wartość zmienne PulseWidth powinna wynosić od 2 do 8190. Jednak zaczyna się od 6 i kończy na 8002. Czy ktoś mógłby mi wyjaśnić dlaczego tak jest ? Wygląda na to, że czegoś nadal nie rozumiem
Pozdrawiam
------------------------ [ Dodano po: 14 minutach ]Wszystko już wiem. Okazało się, że czujnik który używam może oscylować swoją częstotliwością PWM w zakresie +/-10% i stąd takie różnice.
Dziękuję koledze "kicajek" za link do tematu
