Timer 0 ma dwa rejetry controlne TCCR0A i TCCR0B które razem tworzą jakby jedno 16 bitowe słowo, czyli to jest taki jakby jeden rejstr kofiduracyjny 16 bitowy podzielony na dwie części. (JA TAK SOBIE TO TŁUMACZE).
Chcesz Tryb CTC?
Patrzysz na tabele 15-8. w nocie ATmegi328 i co tam widać? Aby ustawić Timer w tryb CTC trzeba w obu rejestrach (TCCR0A i TCCR0B) ustawić odpowiednie bity WGM na odpowiednie wartości czyli:
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
Co prawda nie trzeba ustawiać WGM00 i WGM02 na zero bo po restarcie są tak domyślnie ustawione ale wpisałem Ci do dla zobrazowania.
Teraz pora na preskaler!
służą do tego bity w rejestrze B oznaczone CS00-CS02, ustawmy więc preskaler na 1024
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
teraz musimy zrobić coś żeby zgłaszało nam się przerwanie gdy timer nam zliczy do wartości jaka znajduję się w rejestrze porównawczym OCR0A lub OCR0B, gdyż są dwa takie rejestry. my wybieramy sobie rejestr OCR0A, gdy timer zliczy do tej wartości którą wpiszesz do rejestru zgłosi przerwanie a więc trzeba właczyć to przerwanie
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
i proszę bardzo, mamy skonfigurowany timer0 w tryb CTC. teraz wystarczy do rejestru OCR0A wpisać jakąś wartość od 0 - 255 i zgłaszał będzie przerwanie gdy zliczy do tej wartości:) musisz funkcją
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
odblokować przerwanie i zaimplementować w programie obsługę przerwania:)