Robię mały projekcik, w którym potrzebuję 4 kanałów PWM.
Chciałem to rozwiązać programowo, niestety nie udaje mi się ożywić mojego timera, a konkretniej przerwanie (zarówno overflow jak i compare) nigdy się nie wykonują. Umieściłem w funkcji obsługującej to instrukcję gaszenia diody, lecz program nigdy tam nie doszedł.
Nie mam pojęcia co robię źle, prześledziłem dokumentację, poradniki/tutoriale odnośnie timerów i programowych PWM i nic nie pomogło.
Tutaj funkcja obsługi przerwania, próbowałem również z przerwaniem OVF.
W mainie prosta pętla, zwiększająca wartość pwm1.
Niestety tak jak już pisałem wcześniej - problem leży w timerze/przerwaniu, a raczej w sposobie, w jaki próbuję go obsłużyć.
Jeżeli chodzi o resztę kodu - działa dobrze, zamieniając tamtą pętlę na coś takiego jestem w stanie regulować natężeniem świecenia diody wywołując funkcję, która miała obsługiwać przerwanie.
Tak jak już pisałem, problem leży w przerwaniu/timerze, zmieniając funkcję wywołującą się przy przerwaniu na poniższą nie byłem w stanie zaświecić diody podłączonej do portu w linii D.
Mikroprocesor wzięty trochę przypadkowo, nie jest za popularny przez co nie byłem w stanie znaleźć nigdzie kodu, który by działał. Prawdopodobnie i tak go wymienię na inny aczkolwiek ciekawi mnie, co robiłem tutaj nie tak.
Byłbym wdzięczny za wszelkie uwagi.
Ewentualnie jeśli się da zrobić 4PWM'y korzystając z wbudowanych kanałów prosiłbym o jakąś łopatologiczną instrukcję.
Chciałem to rozwiązać programowo, niestety nie udaje mi się ożywić mojego timera, a konkretniej przerwanie (zarówno overflow jak i compare) nigdy się nie wykonują. Umieściłem w funkcji obsługującej to instrukcję gaszenia diody, lecz program nigdy tam nie doszedł.
Nie mam pojęcia co robię źle, prześledziłem dokumentację, poradniki/tutoriale odnośnie timerów i programowych PWM i nic nie pomogło.
Tutaj funkcja obsługi przerwania, próbowałem również z przerwaniem OVF.
Kod: C / C++
W mainie prosta pętla, zwiększająca wartość pwm1.
Kod: C / C++
Niestety tak jak już pisałem wcześniej - problem leży w timerze/przerwaniu, a raczej w sposobie, w jaki próbuję go obsłużyć.
Jeżeli chodzi o resztę kodu - działa dobrze, zamieniając tamtą pętlę na coś takiego jestem w stanie regulować natężeniem świecenia diody wywołując funkcję, która miała obsługiwać przerwanie.
Kod: C / C++
Tak jak już pisałem, problem leży w przerwaniu/timerze, zmieniając funkcję wywołującą się przy przerwaniu na poniższą nie byłem w stanie zaświecić diody podłączonej do portu w linii D.
Kod: C / C++
Mikroprocesor wzięty trochę przypadkowo, nie jest za popularny przez co nie byłem w stanie znaleźć nigdzie kodu, który by działał. Prawdopodobnie i tak go wymienię na inny aczkolwiek ciekawi mnie, co robiłem tutaj nie tak.
Byłbym wdzięczny za wszelkie uwagi.
Ewentualnie jeśli się da zrobić 4PWM'y korzystając z wbudowanych kanałów prosiłbym o jakąś łopatologiczną instrukcję.