Witam.
Jak wiadomo, Bascom pozwala na ustalenie częstotliwości np. od Timer1 dla PWM tylko ściśle określonych. Częstotliwości te są ustalane jedynie głównym zegarem i preskalerem. Jednakże Atmega8 umożliwia poprzez konfigurację rejestrów ustalenie innych częstoliwości, niż wynikające tylko z preskalera i zegara głównego.
Czy ktoś wie, jak skonfigurować rejestry z poziomu Bascoma, by uzyskać częstotliwość np. 5,5kHz?
Dowolna częstotliwość PWM na Atmega8 Bascom
Hmmm jeśli mi wiadomo, to częstotliwości dla sprzętowego PWM masz właśnie te "ściśle określone". I nie da rady tego obejść.
Ale jest możliwość uzyskania sprzętowego generatora o "dowolnej" częstotliwości, czyli ustawiasz Timera w tryb CTC, a modyfikując rejestry Timera zmieniasz okres. Jednak tu masz niezmienne wypełnienie dokładnie 50%.
Ale jest możliwość uzyskania sprzętowego generatora o "dowolnej" częstotliwości, czyli ustawiasz Timera w tryb CTC, a modyfikując rejestry Timera zmieniasz okres. Jednak tu masz niezmienne wypełnienie dokładnie 50%.
Jest to możliwe. Miałem okazję zmierzyć PWM generowaną przez Attiny26, własnie z częstotliwością 5,5kHz i wiem, że nie był to FastPWM. Z tego, co udało mi sie wyczytać, sprawa polega na skróceniu cyklu zliczania zegara Timer1, jednak nie moge na razie dojść, jak to wykorzystać w praktyce. Bascom nie daje takich możliwości wprost, ale poprzez ingerencję w rejestry powinno się udać.
-
keruseykaryu
Częstotliwość można ustawić "prawie" dowolną, ale kosztem rozdzielczości licznika! Są tryby PWM, w których TOP licznika ustalasz w rejestrze ICR1 albo OCR. Ale ten drugi nie będzie przydatny jak dwa PWM są potrzebne. Trybów z ICR1 jest trzy: 8, 10 i 14. Nota strona 98, jakby co.
Attiny26 jak piszesz ma to coś czego Atmega8 nie ma. Liczniki taktowane z PLL, nawet 64MHz, i bogaty preskaler, bo aż 15 stopni podziału. Jest w czym wybierać i nie tracić tyle na rozdzielczości.
Jak to wszystko ustawić w BASCOM? Prosto. Razem z notą katalogową ustawiasz rejestry TCCR1A TCCR1B ICR1, a nawet policzysz wszystko ze wzorów (strona 91, 93 i dwie dalsze) i heja banana.
Attiny26 jak piszesz ma to coś czego Atmega8 nie ma. Liczniki taktowane z PLL, nawet 64MHz, i bogaty preskaler, bo aż 15 stopni podziału. Jest w czym wybierać i nie tracić tyle na rozdzielczości.
Jak to wszystko ustawić w BASCOM? Prosto. Razem z notą katalogową ustawiasz rejestry TCCR1A TCCR1B ICR1, a nawet policzysz wszystko ze wzorów (strona 91, 93 i dwie dalsze) i heja banana.
Korzystam tylko z PWM1A, PWM1B jest odłączony. Co do trybów ICR mam już rozeznanie, bo jestem już po lekturze notki do Atmega8. Przyjrzę się jeszcze rejestrowi ICR1, bo TCCR1 i TCCR2 już mniej więcej wiem, jak ustawić. Jak ustawię rozdzielczość na 10 bitów, powinno wystarczyć, bo jak się domyślam, przy ustalonej innej częstotliwości pracuje się w zawężonym zakresie wartości PWM?
-
keruseykaryu
Nie masz ustawiać na sztywno rozdzielczości, ona sama wychodzi jak wpiszesz TOP. Z pobieżnych obliczeń wynika, że przy 8MHz taktowania procesora i licznika, przy pracy PWM w trybie dwu zboczowym trzeba w ICR1 wpisać 726 (wartość TOP). Dostaniesz wtedy fpwm = 5502Hz, a rozdzielczość będzie ok. 9,4 bita. I teraz wypełnienie 0% = 0, 50% = 362, 100% = TOP.