Ads_700x200

sobota, 26 września 2020

PWM8 HERCULES - jak sobie poradzić gdy w procku brak PWMów

 


Witam,

Często spotykamy się z sytuacją gdy brakuje nam wyjść PWM w mikrokontrolerze. Może to nas spotkać nawet gdy stosujemy 32-bitowce ;) ... Jak sobie poradzić? Możemy zrobić sobie PWM HERCULES'a ;). Co to jest? Ot proste rozwiązanie polegające na tym, że bierzemy w łapki jakiś sub-miniaturowy procek np. ATtiny25 lub podobny i do niego podłączamy popularny rejestr przesuwny 74hct595. Ten mały procek będzie napędzał rejestr przesuwny w taki sposób, że uzyskamy maksymalnie nawet 8 niezależnych kanałów PWM! Ok być może nie będą w tym wypadku jakieś zawrotne wysokie częstotliwości PWM'a ale przecież nie zawsze one muszą być wysokie. No dobra - to mamy 8 PWM'ów w takim małym procku - ale przecież rozwiązanie to miało pozwolić nam, żeby np. taka ATmega8 mogła mieć tych 8 kanałów. Wtedy możemy zrobić tak, że poświęcimy dwa wolne piny w ATtiny25 żeby pracowały jako wejście SPI, żeby mógł pracować on w trybie SPI SLAVE. Dzięki czemu będzie osobnym modułem do którego prostymi komendami po SPI będzie można przesyłać wartości do każdego kanału PWM niezależnie. No dobra ... tu ktoś powie albo zapyta. To po jasny GWINT mam dodawać jeszcze ATtiny25 jeśli mogę to od razu zrobić w ATmega8? I tu się czai właśnie ZŁO! ;) ... otóż jeśli od razu w ATmega8 zrobimy to sterowanie rejestrem i 8 kanałów PWM to stracimy tyle czasu procesora że nie starczy go na inne części programu. I dlatego stawiamy na oddzielny moduł zwany PWM HERCULES który to będzie się męczył z PWM'ami i grzecznie przyjmował komendy. Tylko to będzie jego zadaniem. Zaś procek taki jak np ATmega8 będzie tylko ładnie wysyłał jakieś proste komendy i wszystkie timery i zasoby procka ma dla siebie w 100% do dyspozycji, żaden PWM go nie obciąża ;) .... Idąc tym tokiem rozumowania chciałbym Wam przedstawić w krokach - jak się za to zabrać ;) zapraszam na kilka fajnych poradników.