Witam serdecznie.
Próbuję rozwiązać taki problem:
Wybrałem sobie Timer0 jako TickTimer na którym realizuje liczniki programowe. Rdzeń działa na 60MHz, a peryferia na 30MHz. Ustawiłem sobie tak ten timer, że generuje mi przerwanie co 10ms (100Hz) i zrealizowałem to na przerwaniu od porównania dla kanału Match0. Przy porównaniu następuje przerwanie w którym sobie obsługuję liczniki programowe i następuje reset licznika.
Chciałem wykorzystać jeszcze ten timer do generacji sygnału prostokątnego o częstotliwości 100Hz. Ale nie mam pomysłu jak to zrealizować.
Chciałem zrobić tak:
Do kanału Match1 wpisać połowę okresu zliczania Match0 i przy porównaniu ustawiać jedynkę na pinie Match0.1. Myślałem że dzięki temu w połowie trwania okresu zliczania na Match0 na wyjściu Match0.1 nastąpi jedynka i będzie ona trwać do resetu licznika(który następuje przy porównaniu od Match0). Niestety tak nie jest. Zapala się jedynka i cały czas jest włączona. Gdy ustawię na przełączanie pinu, to pojawia się na wyjściu prostokąt, ale ma on częstotliwość 50Hz, czyli połowę okresu Match0 i jest on zależny tylko od ustawienia rejestru Match0, nie mam na niego wpływu rejestrem Match1, na którego wyjściu sobie wymyśliłem że będę generował potrzebny mi przebieg.
Pytanie: Czy da się jakoś zrealizować moje założenie?
Próbuję rozwiązać taki problem:
Wybrałem sobie Timer0 jako TickTimer na którym realizuje liczniki programowe. Rdzeń działa na 60MHz, a peryferia na 30MHz. Ustawiłem sobie tak ten timer, że generuje mi przerwanie co 10ms (100Hz) i zrealizowałem to na przerwaniu od porównania dla kanału Match0. Przy porównaniu następuje przerwanie w którym sobie obsługuję liczniki programowe i następuje reset licznika.
Chciałem wykorzystać jeszcze ten timer do generacji sygnału prostokątnego o częstotliwości 100Hz. Ale nie mam pomysłu jak to zrealizować.
Chciałem zrobić tak:
Do kanału Match1 wpisać połowę okresu zliczania Match0 i przy porównaniu ustawiać jedynkę na pinie Match0.1. Myślałem że dzięki temu w połowie trwania okresu zliczania na Match0 na wyjściu Match0.1 nastąpi jedynka i będzie ona trwać do resetu licznika(który następuje przy porównaniu od Match0). Niestety tak nie jest. Zapala się jedynka i cały czas jest włączona. Gdy ustawię na przełączanie pinu, to pojawia się na wyjściu prostokąt, ale ma on częstotliwość 50Hz, czyli połowę okresu Match0 i jest on zależny tylko od ustawienia rejestru Match0, nie mam na niego wpływu rejestrem Match1, na którego wyjściu sobie wymyśliłem że będę generował potrzebny mi przebieg.
Pytanie: Czy da się jakoś zrealizować moje założenie?