AVR, czestotliwosc wywolywania funkcji
Masz problem? Zapytaj na forum elektroda.pl
From: "Trix" <trix_at_nospam_KochamSPAMpolbox.com>
Subject: AVR, czestotliwosc wywolywania funkcji
Date: Wed, 14 Apr 2004 11:00:30 +0200
Witam,
Mam procesor Atmel ATMEGA16.
Napisalem program, w ktorym jest pewna
funkcja obslugi przerwania wywolywana z
pewna czestotliwoscia -- do procesora podlaczony
jest kwarc wyjety z zegarka elektronicznego.
W dokumencie timery-avr.pdf (www.easy-soft.tsnet.pl)
znalazlem wzor na wyznaczenie czestotliwosci
wywolywania mojej funkcji:
f = Pckx / (PVal * MaxVal)
ustawilem MaxVal = 8, PVal = 1024, Pckx = 32768
i w efekcie uzyskalem pozadane 4 Hz.
Niestety, w praktyce zegarek sie rozjezdzal.
Eksperymentalnie zmienilem MaxVal z 8 na 7 i
zaczelo dzialac.
Potem w dokumentacji Atmela znalazlem wzor:
f = fclkI/O / (2 * N * (1 + OCRn))
wstawilem: fclkI/O = 32768, N = 1024, OCRn = 7
uzyskalem f = 2 Hz, a z obserwacji wynika, ze
funkcja wywolywana jest z czestotliwoscia 4 Hz.
Juz doszedlem eksperymentalnie, ze wzor w moim
przypadku to:
f = fclk / (N * (1 + OCRn))
fclk - czestotliwosc kwarcu, N - prescaler,
OCRn - wartosc maksymalna.
Niemniej chcialem zapytac, skad te roznice w dostepnych
wzorach i ktory jest w koncu prawdziwy?
Trix.
PS. Oto jak uruchamiam timer
...
...
ASSR = 1 << AS2;
TCCR2 = (1 << WGM21) |
(1 << CS22) | (1 << CS21) | (1 << CS20); /* prescaler 1024 */
TIFR = 1 << OCF2;
TIMSK = 1 << OCIE2;
OCR2 = 7;
while (ASSR & (1 << OCR2UB))
;
sei();
while (1)
;
...
...
SIGNAL (SIG_OUTPUT_COMPARE2)
{
licznik++;
wypiszLiczbeNaLCD(licznik);
}
========
Path: news-archive.icm.edu.pl!news.rmf.pl!agh.edu.pl!news.agh.edu.pl!news.onet.pl!newsfeed.tpinternet.pl!news.tkdami.net!not-for-mai
From: "RUff" <reniux_at_nospam_poczta.onet.pl>
Subject: Re: AVR, czestotliwosc wywolywania funkcji
Date: Wed, 14 Apr 2004 19:21:26 +0200
Gotowałem wczoraj pomidorową a tu patrzę rosół , z przepisu na pomidorową
wszystko wygląda okej.
Nagle przypominamm sobie że dałem pomidory a nie przecier , dodaje rzecier i
wychodzi zupa pomidorowa.
A o to wzór:
woda+prezecier+rosół+mleko.
)
========
Path: news-archive.icm.edu.pl!news.rmf.pl!news.ipartners.pl!newsfeed.tpinternet.pl!atlantis.news.tpi.pl!news.tpi.pl!not-for-mai
From: Milosz Skowyra <mewashek_at_nospam_wp.pl>
Subject: Re: AVR, czestotliwosc wywolywania funkcji
Date: Wed, 14 Apr 2004 20:48:54 +0200
RUff wrote:
Gotowałem wczoraj pomidorową a tu patrzę rosół , z przepisu na pomidorową
wszystko wygląda okej.
Nagle przypominamm sobie że dałem pomidory a nie przecier , dodaje rzecier i
wychodzi zupa pomidorowa.
A o to wzór: woda+prezecier+rosół+mleko. :)
No troche pominales, ale z samych pomidorkow tez zupka pomidorowa
wyjdzie ;-) Grunt to czerwone pomidorki w duzej ilosci ;-))) Najlepiej
gotowac w przerwaniu Timera 1 ;-)
--
Regards. Przy odpowiedzi usun "." przed "net" z adresu!!!
|-----------------------------------------------------|
| Milosz Skowyra GSM Mobile +48 600 95 35 72 |
| miloszek_at_nospam_fido.net.org.pl 2:484/2.47 on fidonet |
|-----------------------------------------------------|
========
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: AVR, czestotliwosc wywolywania funkcji
Date: Mon, 19 Apr 2004 09:20:33 +0200
Witaj
W dokumencie timery-avr.pdf (www.easy-soft.tsnet.pl)
znalazlem wzor na wyznaczenie czestotliwosci
wywolywania mojej funkcji:
f = Pckx / (PVal * MaxVal)
ustawilem MaxVal = 8, PVal = 1024, Pckx = 32768
i w efekcie uzyskalem pozadane 4 Hz.
Niestety, w praktyce zegarek sie rozjezdzal.
Eksperymentalnie zmienilem MaxVal z 8 na 7 i
zaczelo dzialac.
Nie chce mi się grzebać w cytowanej dokumentacji, ale wartość 7 ma sens. Gdy
timer pracuje w trybie CTC, to jest zerowany w następnym cyklu po
osiagnięciu wartości rejestru porównawczego. Tak więc dla ośmiu liczy:
0..1..2..8..0 - czyli 9 stanów. Stąd myślę, że w twoim przypadku chodzi o
wzór:
f = Pckx / ((PVal-1) * MaxVal)
Ale tak naprawdę lepiej próbować dokładnie zrozumieć sens działania na
podstawie dokumentacji niż liczyć na jakieś wzorki.
Potem w dokumentacji Atmela znalazlem wzor:
f = fclkI/O / (2 * N * (1 + OCRn))
wstawilem: fclkI/O = 32768, N = 1024, OCRn = 7
uzyskalem f = 2 Hz, a z obserwacji wynika, ze
funkcja wywolywana jest z czestotliwoscia 4 Hz.
Sprawdź na co jest ten wzór. Według mnie jest to wzór na czestotliwość
generowania przebiegu na wyjściu OC1, gdy jest ono ustawione w tryb, gdy
każde wywołanie powoduje zmianę satanu wyjścia na przeciwny (toggle).
Juz doszedlem eksperymentalnie, ze wzor w moim
przypadku to:
f = fclk / (N * (1 + OCRn))
fclk - czestotliwosc kwarcu, N - prescaler,
OCRn - wartosc maksymalna.
Ale do czego to się może przydać?
Niemniej chcialem zapytac, skad te roznice w dostepnych
wzorach i ktory jest w koncu prawdziwy?
Zwykle prawda jest w pdfie producenta
Pozdr
EM
========
Path: news-archive.icm.edu.pl!news2.icm.edu.pl!news.rmf.pl!poznan.rmf.pl!news.man.poznan.pl!newsfeed.tpinternet.pl!atlantis.news.tpi.pl!news.tpi.pl!not-for-mai
From: "Trix" <trix_at_nospam_KochamSPAMpolbox.com>
Subject: Re: AVR, czestotliwosc wywolywania funkcji
Date: Mon, 19 Apr 2004 15:33:07 +0200
Juz doszedlem eksperymentalnie, ze wzor w moim
przypadku to:
f = fclk / (N * (1 + OCRn))
fclk - czestotliwosc kwarcu, N - prescaler,
OCRn - wartosc maksymalna.
Ale do czego to się może przydać?
Z tego wzoru wychodzi mi z jaka czestotliwoscia
jest wywolywana funkcja obslugi przerwania
SIG_OUTPUT_COMPARE2.
Musze cos robic ze scisle okreslona czestotliwoscia.
Trix.
========
Path: news-archive.icm.edu.pl!news.rmf.pl!agh.edu.pl!news.agh.edu.pl!news.onet.pl!newsfeed.gazeta.pl!news.astercity.net!news.aster.pl!not-for-mai