lobuzp napisał(a):
Załóżmy że od podania wartości przez przetwornik ADC do wygenerowania sygnału PWM na wyjściu.
Nie za bardzo rozumiem co do generowania sygnały PWM ma przetwornik ADC?
Co do zasady generowania samego sygnału PWM to jest to dosyć proste.
Zasada generowania opiera się o licznik który liczy w pętli czyli jak doliczy do końca to się "przekręca" i znów liczy od zera do przepełnienia - i tak cały czas.
Załóżmy że chcemy wygenerować sygnał PWM o wypełnieniu ok 50%, a licznik który generuje ten sygnał jest 8-bitowy.
Po uruchomieniu procka ładujemy do rejestru porównania wartość 128, a licznik startuje od zera. I teraz w momencie gdy wartość zliczona przez licznik jest mniejsza od wartości w rejestrze porównania na wyjściu sygnału PWM mamy stan wysoki "1" (w zależności od konfiguracji można odwrócić by było "0")
Co każde tyknięcie licznika jego wartość jest porównywana z rejestrem porównania. W momencie gdy wartość zliczonych tyknięć zrówna się z rejestrem porównania wyjście sygnału PWM zmienia stan na "0". Licznik liczy dalej aż do przepełnienia ale na wyjściu PWM jest ciągle "0" bo wartość zliczona przez licznik jest większa od wartości w rejestrze porównania. W momencie gdy licznik dobije do 255 a następnie przeskoczy na 0 które jest mniejsze od wartości w rejestrze porównania znów na wyjściu PWM mamy "1" do czasu aż licznik doliczy do 128 kiedy to znów wyjście PWM zmieni stan na "0"
I tak w kółko na wyjściu PWM stan jest zmieniany zgodnie z wynikiem porównania. Okres przebiegu PWM jest jednocześnie czasem potrzebnym do zapełnienia licznika (256 tyknięć) czyli jeśli chcemy mieć sygnał PWM o częstotliwości 10kHz (czyli okres=100us) to taktowanie licznika musi być 10000*256 = 2,56MHz (czyli okres wejściowy licznika 0,39us).
Powyższy opis tyczy się generowania przebiegu metodą FastPWM, generowanie sygnału metodą PhaseCorrect jest nieco bardziej skomplikowane i niestety sygnał taktujący licznik musi być dwa razy szybszy aby uzyskać sygnał PWM o takiej samej częstotliwości co przy Fast, jednakże sygnał taki jest lepszy dla np. silników.