Skocz do zawartości

Pomocna odpowiedź

Napisano

Cześć! Dopiero zaczynam drogę z elektroniką. Chciałem zrobić robota (w podobie do walliego). Tylko, że nie rozumiem o co chodzi z tym PWM (ponieważ chcę użyć go w moim robocie). Czytam i czytam, ale nic dalej nie rozumiem. Wiem że to jest to regulator szerokości impulsów. Znalazłem kod do PWM do Bascoma, ale nie wiem co oznacza:

"Config Timer1 = Pwm , Pwm = 8 , Prescale = 1 , Compare A Pwm = Clear Down , Compare B Pwm = Clear Down"

Czy ktoś by mógł mi to wytłumacyć dobrze i po chłopsku te PWM, compare a i b Pwm?

Ale nie mogę z tego nic wywnioskować (czytałem ten temat kilka razy). Wiem, że częstotliwość zmienia się przez preskala. A i chciałbym, żeby ktoś mi wytłumaczył jak to się ustawia w Bascom (bardziej po co jest te compare a i b i jak je obsługiwać)?

W configu timera parametr PWM może mieć tylko wartości 8,9,10, z tego co się orientuję. Odpowiada to za rozdzielczość tego PWM - 8bit, 9bit i 10bit. Wypełnieniem sterujesz potem używając PWMXY = Z, gdzie X - numerek timerka, Y literka nóżki OC, Z wypełnienie pwm. Np pwm1a = 238, czyli wypełnienie 238/rozdzielczość, pin OC1A.

"Config Timer1 = Pwm , Pwm = 8 , Prescale = 1 , Compare A Pwm = Clear Down , Compare B Pwm = Clear Down"

Czy ktoś by mógł mi to wytłumacyć dobrze i po chłopsku te PWM, compare a i b Pwm?

Tzn:

Timer1 będzie pracował jako generator PWM

PWM = 8 => generator PWM będzie miał rozdzielczość 8 bitów

Prescale = 1 => dzielnik częstotliwości ustawiony na 1, czyli brak podziału.

Z tego można policzyć że przy częstotliwości CPU np. 1MHz, częstotliwość przebiegu PWM wynosić będzie: 1 000 000 / (256 * 1) czyli 3906,25Hz (3,9KHz)

Argumenty Compare A i Compare B określają jak się będą zachowywać końcówki OC1A i OC1B.

Z tego można policzyć że przy częstotliwości CPU np. 1MHz, częstotliwość przebiegu PWM wynosić będzie: 1 000 000 / (256 * 1) czyli 3906,25Hz (3,9KHz)

Akurat tego nie byłbym pewien, ja się kiedyś naciąłem przy sprzętowym PWMie i do dziś nie wiem gdzie był pies pogrzebany, ale u mnie dochodził jeszcze nie wiadomo skąd podział przez 2.

No niestety z AVRemi jest taki knif że AVR, AVRowi nie równy. O ile w 51' niezależnie jaki proc wziąłeś to Timer był zawsze dokładnie taki sam, w sensie bitów kofiguracyjnych, ich znaczenia funkcyjnego i rozlokowania. W AVR niestety dzięki ATMELowi tak nie jest, i przyznam że mi się też już takie niespodzianki zdarzały, ale głownie dotyczyło to procesorów TINY. A z drugiej strony BASCOM był pisany pod procesory serii AT90Sxxxx i pierwsze Megi, więc na nowszych procach lub kombinowanych architekturach jak TINY, prawie zawsze jakaś niespodzianka wyskoczy.

Cześć! Jestem nowy na tym forum. Zacząłem interesować się elektroniką dzięki temu forum. Ale mam pytanie (może wyda się głupie) o co chodzi z tą rozdzielczością w PWM (i co daje jeżeli zamiast 8 bitów w pisze 10 bitów) i timerem(czy to podaje długość odstępu impulsów?) i jak podam, że compare a ma być clear up (i co się stanie?)?

P.s Proszę o szybką odpowiedź.

Rozdzielczość to niejako precyzja (dokładność) dokonywanych zmian wypełnienia. Dla 8 bitów masz 256 kroków czyli masz dokładność ~0,39%, dla 10bitów =>1024 czyli 0,097%, dodatkowo rozdzielczość wpływa ci na max częstotliwość jaką możesz uzyskać, bo to defakto licznik programowalny, przy czym ważna jest jego długość. Ogólnie dla Fast PWM można przyjąć następujący wzór:

F_PWM = F_CPU / (Preskaler * rozdzielczość PWM)

Nie nie przedłuża, większa rozdzielczość pozawala ci tylko na dokładniejsze sterowanie długością trwania impulsu. Ale 8 bit wystarczy, no prostsze programowanie.

Bądź aktywny - zaloguj się lub utwórz konto!

Tylko zarejestrowani użytkownicy mogą komentować zawartość tej strony

Utwórz konto w ~20 sekund!

Zarejestruj nowe konto, to proste!

Zarejestruj się »

Zaloguj się

Posiadasz własne konto? Użyj go!

Zaloguj się »
×
×
  • Utwórz nowe...