Digispark: zmiana częstotliwości PWM

Ten post jest częścią serii o budowie komponentu multimedialnego.

Mój komponent mediany dostał całkiem fajne podświetlenie. Niestety po pierwszym uruchomieniu… z głośników zaczęły dobiegać piski! Po lekturze internetów okazało się, że układ w którym generowanie jest PWM z pewną częstotliwością może rezonować… Jednym ze sposobów na wyeliminowanie tego zjawiska jest ograniczenie częstotliwości PWM (przy niezmienionym stopniu wypełnienia sygnału.

Cały poradnik znajdziecie na stronie Digispark Tricks. Przejdźcie do katalogu: ~/.arduino15/packages/digistump/hardware/avr/1.6.7/cores/tiny/. W pliku „core_build_options.h” i zmieńcie linijkę:

Na:

Teraz w pliku „wiring.c” odnajdźcie linijkę:

Ta definicja to dzielnik liczby 32227 do częstotliwości PWM na pinie P0 (na P1 i P4 będzie 2x większa).

Stąd:

MS_TIMER_TICK_EVERY_X_CYCES P0 [Hz] P1 [Hz] P4 [Hz]
1  32227  64453  64453
8  4028  8056  8056
 64 (32227/64)  503 1006  1006
 256 (32227/256)  125  250  250
  1024 (32227/1024)  31  62  62

W praktyce:

  • dla „#define MS_TIMER_TICK_EVERY_X_CYCES 64” (domyślne):
  • dla „#define MS_TIMER_TICK_EVERY_X_CYCES 1024”:
  • dla „#define MS_TIMER_TICK_EVERY_X_CYCES 256”:

Częstotliwość 31 Hz może być za małą np. dla pasków LED (będą one migać).

Źródła:

Dodaj komentarz

Proszę dodaj swój komentarz. Pamiętaj, żeby nie podawać żadnych danych osobowych.