Witam
Pracuje nad programem falownika dla silnika trójfazowego. Wykorzystam do tego Atmega88 która posiada 6 wyjść PWM współpracujących parami z jednym z trzech TIMERów. Jak wiadomo sygnały wyjściowe będą sterowały trzy pary tranzystorów.
Skupmy się na jednej fazie. Co pół okresu kluczowany będzie jeden z pary tranzystorów, sterowanych dajmy na to z OCR1A i OCR1B. Gdy jeden pracuje drugi musi być zamknięty. W związku z tym muszę cyklicznie, co pół okresu, odłączać jeden z OCR1A lub OCR1B. Mogę tego dokonać zmieniając wartości w rejestrach konfiguracyjnych.
I teraz pytanie: czy mogę zmienić konfiguracje rejestrów Timera1 w przerwaniu wywołanym jego przepełnieniem? Oczywiście zmiana będzie dokonana gdy spełniony będzie warunek przejścia sinusa przez 0. W którym momencie następuje aktualizacja bitów konfiguracyjnych? Natychmiast czy w chwili wyjścia z przerwania?
Drugie pytanie przy okazji - polecenia do wykonania w przerwaniu muszą (przynajmniej powinny) wykonać się w czasie krótszym niż 1/fpwm. Dla fpwm=10kHz i taktowaniu 20MHz mam 2000 taktów na przerwanie. Czy na oko ktoś może powiedzieć czy to wystarczy na:
1) pobranie napięcia z potencjometru do regulacji prędkości
2) wyliczenie długości impulsu PWM dla każdej z 3 faz
3) zmianę konfiguracji rejestrów timera przy przejściu przez 0
Wszelkie wskazówki jak i krytyka będą cenne
Pozdrawiam