Obliczanie wartości timera do generowania przerwań co 100ms i 200ms w At90S8535
Obliczanie wartosci tumerow
From: "Wnekus" <spamer_at_nospam_won.mi.z.tad>
Subject: Obliczanie wartosci tumerow
Date: Wed, 5 Nov 2003 23:24:14 +0100
W jaki sposob obliczyc jaka wartosc nalezy zaladowac do timera aby
wygenerowal przerwanie po np 100ms czy 200 ewentualnie innych czasach .
Procek to At90S8535
Kwarc 6MHZ
========
Path: news-archive.icm.edu.pl!news.rmf.pl!agh.edu.pl!news.agh.edu.pl!news.onet.pl!not-for-mai
From: "EM" <edim123_at_nospam_poczta.onet.pl>
Subject: Re: Obliczanie wartosci tumerow
Date: Thu, 6 Nov 2003 09:05:10 +0100
W jaki sposob obliczyc jaka wartosc nalezy zaladowac do timera aby
wygenerowal przerwanie po np 100ms czy 200 ewentualnie innych czasach .
Procek to At90S8535
Kwarc 6MHZ
Oczywiście wszystko znajdziesz w PDFie, ale spróbuję pomóc...
Najłatwiej chyba wykorzystać Timer1 - 16 bitowy
Źródło sygnału taktującego ustawiasz z preskalera, np. fosc/64
Wtedy otrzymujesz inkrementację licznika z częstotliwością:
6000000/64=93750 Hz
Aby tak ustawić musisz wpisać do rejestru TCCR1B = 0b0000 0011
Wygodnie jest zastosować tryb Clear Timer on Compare Match czyli ustawić
CTC1 (TCCR1B)
Stąd do TCCR1B wpisujesz 0b0000 1011
Teraz aby uzyskać 10 przerwań na sekundę wpisujesz do rejestru porównawczego
OCR1A wartość z obliczeń podzieloną przez 10 czyli
OCR1A = 9375 (musisz rozdzielić na starszy i młodszy bajt w zależności od
kompilatora)
Włączasz zezwolenie na przerwanie przy porównaniu z rejestrem A: czyli
ustawiasz bit OCIE1A w rejestrze TIMSK, czyli TIMSK = 0b0001 0000
Teraz zezwolenie globalne na przerwania: SEI
W adresie 0x006 umieszczasz skok do obsługi przerwania i to wszystko
Mam nadzieję, że nie pomyliłem
Dla np. 200ms, czyli 5/sek zamiast dzielić przez 10 dzilisz przez 5 i
wpisujesz do OCR1A 18750
Ogólnie musisz kombinować z preskalerem i wartością porównawczą.
Czasami jest wygodnie dać jakiś inny kwarc, wtedy zamiast porównania możesz
korzystać z przepełnienie licznika.
Przerwanie można wywoływać także dużo częściej i wykonywać odpowiednie
działanie np. dla co 250 przerwania.
Pozdrawiam
EM
========
Path: news-archive.icm.edu.pl!news.rmf.pl!agh.edu.pl!news.agh.edu.pl!news.onet.pl!lublin.pl!uw.edu.pl!news.pw.edu.pl!not-for-mai