Cześć,
Napisałem program na AT90PWM3B (16MHz), który w sposób programowy zmienia wartość wypełnienia PWM. Impulsy są generowane w przerwaniu (CTC - Compare Match). PWM ma wartość 50 Hz - ta część działa prawidłowo.
Nie zmienia się jednak wartość wypełnienia. Wypełnienie poszczególnych impulsów jest równe początkowej wartości zmiennej. Program zakłada, że wartość ta powinna zmieniać się co pół sekundy:
Z moich obserwacji wynika, że program tylko raz wywołuje program główny. Tak, jakby nie widział while(1).
Jeżeli ktoś wie, w czym tkwi błąd, to proszę o pomoc.
Pozdrawiam
Napisałem program na AT90PWM3B (16MHz), który w sposób programowy zmienia wartość wypełnienia PWM. Impulsy są generowane w przerwaniu (CTC - Compare Match). PWM ma wartość 50 Hz - ta część działa prawidłowo.
Nie zmienia się jednak wartość wypełnienia. Wypełnienie poszczególnych impulsów jest równe początkowej wartości zmiennej. Program zakłada, że wartość ta powinna zmieniać się co pół sekundy:
Kod: C / C++
Z moich obserwacji wynika, że program tylko raz wywołuje program główny. Tak, jakby nie widział while(1).
Jeżeli ktoś wie, w czym tkwi błąd, to proszę o pomoc.
Pozdrawiam
