AVR, czestotliwosc wywolywania funkcji



Masz problem? Zapytaj na forum elektroda.pl

Poprzedni Następny
Wiadomość
Spis treści
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

Poprzedni Następny
Wiadomość
Spis treści
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

Poprzedni Następny
Wiadomość
Spis treści
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

Poprzedni Następny
Wiadomość
Spis treści
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

Poprzedni Następny
Wiadomość
Spis treści
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