Witam!
Stworzyłem kiedyś projekt na atmega32 w którym za pomocą dwóch timerów 8-bitowych regulowałem dwie częstotliwości wyjściowe ustawiając timery w tryb ctc
Tccr2 = &B10011001
Ocr2 = Wartosc
Tccr0 = &B10011001
Ocr0 = Wartosc1
wszystko idealnie działało jednak z czasem pojawiła się potrzeba aby regulować częstotliwość z większą dokładnością. Postanowiłem użyć atmege 128 ze względu na 2 timery 16-bitowe
ustawiłem timery względem datasheet i mam następującą sytuację:
Tccr1a = &B01000000
Tccr1b = &B00001001
ocr1a = wartosc
timer 1 działa idealnie i mam bardzo dokładny zakres regulacji
natomiast:
Tccr3a = &B01000000
Tccr3b = &B00001001
tutaj pojawia się problem prawdopodobnie ze składnią bascoma ponieważ nie da się uruchomić timera wpisując wartość np ocr3a = 100
wyczytałem w helpie, że można zastosować składnie:
zamiast ocr1a wpisujemy pwm1a
zamiast ocr3a wpisujemy pwm3a
to rzeczywiście działa i oba timery generują częstotliwość jednak timer 3 reguluje się do wartości pwm3a = 255 a po przekroczeniu tego zakresu pojawiają się różne częstotliwości oraz różne wypełnienie - ciężko to zmierzyć miernikiem. W każdym razie timer 3 zachowuje się jak timer 8 bitowy i nie mogę zadać mu wartości np 1200
Czy ktoś może wie w czym tkwi problem/spotkał się z taką sytuacją?
wiem, że za chwilę ktoś napisze, że lepiej przerzucić się na język C ale szukam odpowiedzi dla bascoma ponieważ napisałem już wiele programów w tym języku i jak do tej pory udawało się rozwiązać większość problemów.
pozdrawiam
Stworzyłem kiedyś projekt na atmega32 w którym za pomocą dwóch timerów 8-bitowych regulowałem dwie częstotliwości wyjściowe ustawiając timery w tryb ctc
Tccr2 = &B10011001
Ocr2 = Wartosc
Tccr0 = &B10011001
Ocr0 = Wartosc1
wszystko idealnie działało jednak z czasem pojawiła się potrzeba aby regulować częstotliwość z większą dokładnością. Postanowiłem użyć atmege 128 ze względu na 2 timery 16-bitowe
ustawiłem timery względem datasheet i mam następującą sytuację:
Tccr1a = &B01000000
Tccr1b = &B00001001
ocr1a = wartosc
timer 1 działa idealnie i mam bardzo dokładny zakres regulacji
natomiast:
Tccr3a = &B01000000
Tccr3b = &B00001001
tutaj pojawia się problem prawdopodobnie ze składnią bascoma ponieważ nie da się uruchomić timera wpisując wartość np ocr3a = 100
wyczytałem w helpie, że można zastosować składnie:
zamiast ocr1a wpisujemy pwm1a
zamiast ocr3a wpisujemy pwm3a
to rzeczywiście działa i oba timery generują częstotliwość jednak timer 3 reguluje się do wartości pwm3a = 255 a po przekroczeniu tego zakresu pojawiają się różne częstotliwości oraz różne wypełnienie - ciężko to zmierzyć miernikiem. W każdym razie timer 3 zachowuje się jak timer 8 bitowy i nie mogę zadać mu wartości np 1200
Czy ktoś może wie w czym tkwi problem/spotkał się z taką sytuacją?
wiem, że za chwilę ktoś napisze, że lepiej przerzucić się na język C ale szukam odpowiedzi dla bascoma ponieważ napisałem już wiele programów w tym języku i jak do tej pory udawało się rozwiązać większość problemów.
pozdrawiam