Witam.
Mam problem. Mianowicie próbuje zmusić Timer0 do działania z kwarcem zegarkowym (w trybie asynchronicznym). Używając głównego kwarcu Timer0 działa.
Poniżej fragment kodu odpowiedzialny za inicjacje timera:
Próbowałem zrobic to wg noty atmegi ale tez nie działa. Zmieniałem kolejność poleceń, wpis do TCNT0 po ustawieniu bitu AS0 jest nie mozliwy. Kiedy pierwszy raz ustawiałem tryb asynchroniczny mogłem zapisać wartość początkową do TCNT0, ale po następnym razie juz sie nie dało. W rejestrze ASSR powinne się same wyzerować bity poza AS0 co u mnie się nie dzieje (z wyjątkiem pierwszego razu).
Używam JTAG-a więc mam podgląd do rejestrów, stąd wiem co się w nich dzieje (tak, wiem, nie zawsze dobrze pokazuje ale to inna sprawa)
Czy ktoś wie jak to rozwiązać albo nakieruje na właściwą ścieżkę?
Mam problem. Mianowicie próbuje zmusić Timer0 do działania z kwarcem zegarkowym (w trybie asynchronicznym). Używając głównego kwarcu Timer0 działa.
Poniżej fragment kodu odpowiedzialny za inicjacje timera:
TCNT0 = timer0; // ustawienie wartosci początkowej
ASSR |= (1<<AS0);//wlaczenie trybu asynchronicznego
TIMSK |= (1<<TOIE0);
TCCR0 |= (1<<CS00); //ustawienie preskalera
sei(); //wlaczenie przerwan
Próbowałem zrobic to wg noty atmegi ale tez nie działa. Zmieniałem kolejność poleceń, wpis do TCNT0 po ustawieniu bitu AS0 jest nie mozliwy. Kiedy pierwszy raz ustawiałem tryb asynchroniczny mogłem zapisać wartość początkową do TCNT0, ale po następnym razie juz sie nie dało. W rejestrze ASSR powinne się same wyzerować bity poza AS0 co u mnie się nie dzieje (z wyjątkiem pierwszego razu).
Używam JTAG-a więc mam podgląd do rejestrów, stąd wiem co się w nich dzieje (tak, wiem, nie zawsze dobrze pokazuje ale to inna sprawa)
Czy ktoś wie jak to rozwiązać albo nakieruje na właściwą ścieżkę?