logo elektroda
logo elektroda
X
logo elektroda
REKLAMA
REKLAMA
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

[ATmega88pa] [ATmega88pa][C] - Timer nie wywołuje przerwań dla programowego PWM

Zachwiany 12 Kwi 2015 01:23 783 2
REKLAMA
  • #1 14609700
    Zachwiany
    Poziom 8  
    Posty: 6
    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.
    Kod: C / C++
    Zaloguj się, aby zobaczyć kod


    W mainie prosta pętla, zwiększająca wartość pwm1.

    Kod: C / C++
    Zaloguj się, aby zobaczyć kod


    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++
    Zaloguj się, aby zobaczyć kod


    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++
    Zaloguj się, aby zobaczyć kod


    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ę.
  • REKLAMA
  • Pomocny post
    #2 14609744
    Wojtek75
    Poziom 25  
    Posty: 530
    Pomógł: 91
    Ocena: 36
    Generalnie w takich przypadkach nota układu twoim przyjacielem. Poczytaj to co napisałem w komentarzach.
    Kod: C / C++
    Zaloguj się, aby zobaczyć kod
  • #3 14611262
    Zachwiany
    Poziom 8  
    Posty: 6
    Dziękuję bardzo za odzew, poprawiłem i wszystko ładnie śmiga, póki co tylko na diodach.
    Z notą jak widać się nie lubię, skoro narobiłem takich głupich błędów ;<
REKLAMA