Witam
Bawię się obsługą sprzętowego PWM. Skonfigurowałem trzy timery w tryb Fast PWM. Do uC podpiąłem kwarc 20MHz i ustawiłem fusebity. Wpisałem w OCR1A wartość 128 i podłączyłem oscyloskop.
Okazuje się że okres wynosi zaledwie 0.1 ms to 10kHz, mimo tego że preskaler ustawiłem na 1... coś mi tu nie pasuje bo zgodnie ze wzorem:
Fpwm = Fcpu/1/255 powinienem dostać prawie 78kHz a tak się nie dzieje.
Coś jeszcze przykuło moją uwagę
Po wpisaniu wiersza "_delay_ms(1000)" na początku programu przed inicjalizacją czekam ok 7 sekund od włączenia atmegi do pojawienia się przebiegu na oscyloskopie... Gdy zdefiniuje F_CPU jako 1000000 (1Mhz) wtedy delay trwa ok 1s.
Programuje w AVR Studio 6.2. Fusebity ustawiam w BASCOMie. W czym może być problem? Czyżby jednak nie pracował z zewnętrznym kwarcem? To nie możliwe bo po zmianie 20Mhz na 16Mhz zauważyłem wydłużenie okresu.
Bawię się obsługą sprzętowego PWM. Skonfigurowałem trzy timery w tryb Fast PWM. Do uC podpiąłem kwarc 20MHz i ustawiłem fusebity. Wpisałem w OCR1A wartość 128 i podłączyłem oscyloskop.
Okazuje się że okres wynosi zaledwie 0.1 ms to 10kHz, mimo tego że preskaler ustawiłem na 1... coś mi tu nie pasuje bo zgodnie ze wzorem:
Fpwm = Fcpu/1/255 powinienem dostać prawie 78kHz a tak się nie dzieje.
Coś jeszcze przykuło moją uwagę
Po wpisaniu wiersza "_delay_ms(1000)" na początku programu przed inicjalizacją czekam ok 7 sekund od włączenia atmegi do pojawienia się przebiegu na oscyloskopie... Gdy zdefiniuje F_CPU jako 1000000 (1Mhz) wtedy delay trwa ok 1s.
Kod: C / C++
Programuje w AVR Studio 6.2. Fusebity ustawiam w BASCOMie. W czym może być problem? Czyżby jednak nie pracował z zewnętrznym kwarcem? To nie możliwe bo po zmianie 20Mhz na 16Mhz zauważyłem wydłużenie okresu.