Witam,
potrzebuje zbudować generator z 2 częstotliwosciami rzędu kilku 1-2kHz.
Do tego celu przeznaczyłem Timer1 i rejestry OCR1A i OCR1B i tryb CTC.
Generator będzie miał dodatkowo zmieniane wypełniania impulsów, wiec zbudowałem sobie taki odo program:
Zaplanowałem sobie, że w przykładowym programie będę generował częstotliwość 1,2kHz i 1,4kHz jednak w praktyce mimo poprawnie obliczonych zawartości rejestrów dla wybranych częstotliwości program nie generuje poprawnie częstotliwości.
Objawia się to tym, że gdy:
- Ocr1a = 2857 (1,4kHz), a w Ocr1b = 3333(1,2kHz) to układ generuje tylko pierwszą częstotliwość z OCR1A, no bo 2957 taktów przychodzi szybciej i TIMER1 się zeruje, a wiec nigdy nie ma przerwania z OCR1B,przez co nigdy nie zmiana się stan końcówki PB.2
- Ocr1a = 3333(1,2kHz), a w Ocr1b = 2857(1,4kHz), to oba układy generują mniejszą częstotliwość 1,2kHz.
Czy jest więc możliwa generacja dwóch różnych częstotliwości za pomocą timera1 i rejestrów OCR1x?
Może źle podszedłem do tego tematu i da się to zrobić ale w inny sposób?
Proszę o podpowiedzi i drobną pomoc.
potrzebuje zbudować generator z 2 częstotliwosciami rzędu kilku 1-2kHz.
Do tego celu przeznaczyłem Timer1 i rejestry OCR1A i OCR1B i tryb CTC.
Generator będzie miał dodatkowo zmieniane wypełniania impulsów, wiec zbudowałem sobie taki odo program:
Kod: text
Zaplanowałem sobie, że w przykładowym programie będę generował częstotliwość 1,2kHz i 1,4kHz jednak w praktyce mimo poprawnie obliczonych zawartości rejestrów dla wybranych częstotliwości program nie generuje poprawnie częstotliwości.
Objawia się to tym, że gdy:
- Ocr1a = 2857 (1,4kHz), a w Ocr1b = 3333(1,2kHz) to układ generuje tylko pierwszą częstotliwość z OCR1A, no bo 2957 taktów przychodzi szybciej i TIMER1 się zeruje, a wiec nigdy nie ma przerwania z OCR1B,przez co nigdy nie zmiana się stan końcówki PB.2
- Ocr1a = 3333(1,2kHz), a w Ocr1b = 2857(1,4kHz), to oba układy generują mniejszą częstotliwość 1,2kHz.
Czy jest więc możliwa generacja dwóch różnych częstotliwości za pomocą timera1 i rejestrów OCR1x?
Może źle podszedłem do tego tematu i da się to zrobić ale w inny sposób?
Proszę o podpowiedzi i drobną pomoc.
