Witam panowie.
Zagadka jest taka. Jest sobie arduino uno, ale programuję je bez bootloadera, bezpośrednio w c w avr studio wersja 4. W pewnym momencie w programie startuję timer 2 w trybie CTC i używam go jako wyjście zegarowe dla bufora. Timer 2 ma ustwienia prescalera na 1 i rejestru porównawczego na 7, co daje ze wzoru przy częstotliwości uC 16Mhz, na wyjściu 1 Mhz i do tej pory wszystko działa pięknie, ale gdy w pewnym momencie chcę zatrzymać timer zerując zwyczajowo prescaler to owszem timer zostaje zatrzymany i sygnał zegarowy przestaje być generowany, ale co gorsze to procesor się zawiesza! i program zostaje zatrzymany. Czy ktoś pomoże mi zatrzymać ten pędzący pociąg, bo sprawdziłem, że przy ustawieniu mniejszej częstotliwości(zwiększeniu prescalera) udaje się zatrzymać timer, ale przy 1 Mhz nie działa ta sztuczka.
Kod do kompilacji
Zagadka jest taka. Jest sobie arduino uno, ale programuję je bez bootloadera, bezpośrednio w c w avr studio wersja 4. W pewnym momencie w programie startuję timer 2 w trybie CTC i używam go jako wyjście zegarowe dla bufora. Timer 2 ma ustwienia prescalera na 1 i rejestru porównawczego na 7, co daje ze wzoru przy częstotliwości uC 16Mhz, na wyjściu 1 Mhz i do tej pory wszystko działa pięknie, ale gdy w pewnym momencie chcę zatrzymać timer zerując zwyczajowo prescaler to owszem timer zostaje zatrzymany i sygnał zegarowy przestaje być generowany, ale co gorsze to procesor się zawiesza! i program zostaje zatrzymany. Czy ktoś pomoże mi zatrzymać ten pędzący pociąg, bo sprawdziłem, że przy ustawieniu mniejszej częstotliwości(zwiększeniu prescalera) udaje się zatrzymać timer, ale przy 1 Mhz nie działa ta sztuczka.
Kod do kompilacji
Kod: C / C++