Borykam się ostatnio z problemem stworzenia programowego generatora PWM w mikrokontrolerze ATiny26. Tak, wiem że posiada on 2 sprzętowe PWMy, ale są już wykorzystane a potrzebuję dołożyć jeszcze jeden (a po ujarzemieniu tego jednego, kolejne 3 :)). Szukałem już po googlach i w archiwum, ale coś ciężko mi znaleźć jakieś sprawdzone algorytmy, o przykładowych kodach (najlepiej w asemblerze) już nie wspominając. Generalna zasadę działania takiego generatora znam, ale ciężko mi to przełożyć na konkretny działający kod :/ Generalnie potrzebuję generatora, a w którym mógłbym sobie dowolnie sterować wypełnieniem, i którego częstotliwość była by rzędu min. 100Hz (sterować ma to diodami LED więc chciałbym uniknąć delikatnego migotania). Jeżeli ktoś będzie w stanie mi pomóc to będę niezwykle wdzięczny...
[AVR] Programowy generator PWM
Feb 26, 2006
5 Replies
Mateusz Majchrzycki napisal(a):
W tym procesorze nie ma timera?
Pewnego dnia Marcin E. Hamerla snipped-for-privacy@Xpoczta.Xonet.Xpl.removeX> nastukał(a):
Jest, jest... Ale jak już pisałem potrzebuję jakiegoś solidnego przykładu na ktorym mogę się oprzeć. W wymyślaniu algorytmów nigdy nie byłem dobry wobec czego trudno samemu mi taki generator stworzyć. Proszę tylko o podanie jakiegoś solidnego źródła gdzie znajdę przykładowy kod źródłowy, ew. jakiś porządny opis/algorytm na zrealizowanie programowego PWMa.
zapuszczasz timer i przerwaniu od timera zwiekszasz jakis licznik programowy np od 0-255 który dla wartosci 0 wystawia 1 na pin gdy licznik zrówna sie z liczba wype³nienia to pin=0 i w ten sposób mozesz sobie zrobic ile chcesz PWM'ów
a okres timera musi byc 256 *100Hz
Pozdrawiam
AzaZeL
Mateusz Majchrzycki napisał(a):
Jeśli wystarczy tylko 8 stopni wypełnienia, to wpisujesz do jakiegoś rejestru liczbę określającą wypełnienie (0, 1, 3, 7, 0Fh, 1Fh, 3Fh, 7Fh,
0FFh), w przerwaniu od timera rotujesz o jeden bit ten rejestr i np. najstarszy bit wystawiasz na pin.Pozdrawiam JS
U¿ytkownik "Mateusz Majchrzycki" snipped-for-privacy@spam.spam napisa³ w wiadomo¶ci news:Xns9776D66B11BCXNSMateoM@192.168.0.3...
Zmieñ na Atmegê88 , nie bêdzie deficytu PWM :) Piotr
Join the Discussion
Have something to add? Share your thoughts — no account required.
Didn't find your answer?
Ask the community — no account required