Witam!
Potrzebuję wygenerować falę prostokątną o różnych częstotliwościach (w zakresie 3k - 50kHz) na jednym z pinów Atmegi328p w celu obsługi filtra przestrajanego zewnętrzną częstotliwością. Wiem, że można łatwo ustawić preskaler, jednak nie to rozwiązanie daje zbyt małą ilość dostępnych częstotliwości. Chcę ustawić w trybie CTC w rejestrze OCR1A ilość skoków, potrzebną do uzyskania danego odstępu czasu i wydaje mi się, że zgodnie z datasheetem rejestry są skonfigurowane poprawnie. Jednak na wyjściu pinu OC1A uzyskuję falę prostokątną, której współczynnik wypełnienia zależy od stałej przypisanej do OCR1A, a jej częstotliwość nie zmienia się. Nie wiem, czy przypadkiem przyczyną nie jest nie zerowanie się licznika, choć zgodnie z dokumentacją tryb CTC ma taką funkcjonalność. Załączam wycinek kodu i proszę o pomoc.
DDRB = 0x02; // ustawienie OC1A jako wyjście
TCCR1A = TCCR1A | 0xf0; // konfiguracja CTC
TCCR1B = TCCR1B | 0x09; // -||-||-
OCR1A = 0x0000; // wartość stała porównywana ze stanem licznika (match)
Pozdrawiam:)