Atmel AVR: Jak skonfigurować Timer dla regularnego wywoływania funkcji w AT90S8535?

Atmel AVR: Wywolywanie funkcji co pewien czas





Poprzedni Następny
Wiadomość
Spis treści
From: "Trix" <trix_at_nospam_KochamSPAMpolbox.com>
Subject: Atmel AVR: Wywolywanie funkcji co pewien czas
Date: Thu, 5 Feb 2004 00:02:10 +0100


Witam,

Chcialbym wykonac pewna aplikacje.
Codzi o to, aby procesor podawal na
kilku bitach wyjsciowych rozne dane.
Rzecz w tym, ze dane te maja pojawiac
sie co pewien, scisle okreslony czas
-- np. co 1 sekunde, albo co 1/10 sek,
albo np. co 1/100 sek.

Najdogodniej byloby, gdyby co np.
1/10 sekundy uruchamiala sie funkcja
obslugi jakiegos przerwania, w ktorej
zmienialbym stan wyjsc wg. pewnego
algorytmu.

Moj problem polega na tym, ze nie wiem
jak najlepiej rozwiazac problem taktowania
wywolywania mojej funkcji.
Zapewne nalezy skorzystac z jednego z
Timerow. Pytanie, z ktorego i w jakim
trybie? Czy da sie wykonac moje zadanie
bez zewnetrzengo generatora?
Moj procesor to AT90S8535.

Z gory dziekuje za odpowiedzi,
Trix.



========
Path: news-archive.icm.edu.pl!news.rmf.pl!agh.edu.pl!news.agh.edu.pl!news.onet.pl!newsfeed.gazeta.pl!opal.futuro.pl!not-for-mai

Poprzedni Następny
Wiadomość
Spis treści
From: "reff" <reff_at_nospam_go2.pl>
Subject: Re: Atmel AVR: Wywolywanie funkcji co pewien czas
Date: Thu, 5 Feb 2004 00:34:00 +0100


Kwarc 8Mhz
1/10 sek:
TCNT1L=0x2C
TCNT1H=0xCF
TCRR1B=0x03 - start timera T1 z preskalerem=64
TCRR1B=0x00 - stop timera
pamietaj o zalaczeniu obslugi przerwan (sei)
w obslusze przerwania timera T1 wywolaj jaka chcesz funkcje
Pzdr
Michal

Użytkownik "Trix" <trix_at_nospam_KochamSPAMpolbox.com> napisał w wiadomości
news:bvrtm7$hh6$1_at_nospam_atlantis.news.tpi.pl...
Witam,

Chcialbym wykonac pewna aplikacje.
Codzi o to, aby procesor podawal na
kilku bitach wyjsciowych rozne dane.
Rzecz w tym, ze dane te maja pojawiac
sie co pewien, scisle okreslony czas
-- np. co 1 sekunde, albo co 1/10 sek,
albo np. co 1/100 sek.

Najdogodniej byloby, gdyby co np.
1/10 sekundy uruchamiala sie funkcja
obslugi jakiegos przerwania, w ktorej
zmienialbym stan wyjsc wg. pewnego
algorytmu.

Moj problem polega na tym, ze nie wiem
jak najlepiej rozwiazac problem taktowania
wywolywania mojej funkcji.
Zapewne nalezy skorzystac z jednego z
Timerow. Pytanie, z ktorego i w jakim
trybie? Czy da sie wykonac moje zadanie
bez zewnetrzengo generatora?
Moj procesor to AT90S8535.

Z gory dziekuje za odpowiedzi,
Trix.





========
Path: news-archive.icm.edu.pl!news.rmf.pl!poznan.rmf.pl!news.man.poznan.pl!news.internetia.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: Atmel AVR: Wywolywanie funkcji co pewien czas
Date: Thu, 5 Feb 2004 01:21:12 +0100


Kwarc 8Mhz
1/10 sek:
TCNT1L=0x2C
TCNT1H=0xCF
TCRR1B=0x03 - start timera T1 z preskalerem=64
TCRR1B=0x00 - stop timera
pamietaj o zalaczeniu obslugi przerwan (sei)
w obslusze przerwania timera T1 wywolaj jaka chcesz funkcje
Pzdr
Michal


Dzieki za odpowiedz.
A czy nie mozna obejsc sie bez zewnetrznego kwarcu?
Z czego wynika to, ze nie znalazlem zadnej aplikacji tego
typu, ktora korzysta z taktowania wewnetrznego? Czy
chodzi tu np. o dryfty temperaturowe (zdaje sie, ze wewnetrzne
taktowanie odbywa sie za pomoca ukladu RC), czy moze o
niemoznosc ustawienia dokladnie czestotliwosci 1Hz, itp.?

Trix.



========
Path: news-archive.icm.edu.pl!news.rmf.pl!news.ipartners.pl!news.internetia.pl!newsfeed.gazeta.pl!news.gazeta.pl!not-for-mai

Poprzedni Następny
Wiadomość
Spis treści
From: zenek <zenek12345_at_nospam_onet.pl>
Subject: Re: Atmel AVR: Wywolywanie funkcji co pewien czas
Date: Thu, 05 Feb 2004 01:53:58 +0100


Użytkownik Trix napisał:

A czy nie mozna obejsc sie bez zewnetrznego kwarcu?
Z czego wynika to, ze nie znalazlem zadnej aplikacji tego
typu, ktora korzysta z taktowania wewnetrznego?

Bo po prostu twój 8535 nie ma taktowania wewnętrznego.

========
Path: news-archive.icm.edu.pl!news.rmf.pl!agh.edu.pl!news.agh.edu.pl!news.onet.pl!newsfeed.gazeta.pl!opal.futuro.pl!not-for-mai

Poprzedni Następny
Wiadomość
Spis treści
From: "reff" <reff_at_nospam_go2.pl>
Subject: Re: Atmel AVR: Wywolywanie funkcji co pewien czas
Date: Thu, 5 Feb 2004 23:13:11 +0100



Dzieki za odpowiedz.
A czy nie mozna obejsc sie bez zewnetrznego kwarcu?
Z czego wynika to, ze nie znalazlem zadnej aplikacji tego
typu, ktora korzysta z taktowania wewnetrznego? Czy
chodzi tu np. o dryfty temperaturowe (zdaje sie, ze wewnetrzne
taktowanie odbywa sie za pomoca ukladu RC), czy moze o
niemoznosc ustawienia dokladnie czestotliwosci 1Hz, itp.?

Jesli szukasz jakiegos proca z wewnetrznym oscylatorem to jest nim np
ATmega8. Goraco polecam noty katalogowe AVRow znajdujace sie na stronie
Atmela www.atmel.com
1Hz? Chyba nik nie taktuje procesora z taka czestotliwoscia, bo po co.
Napisz co chcesz zrobic. Moze jest inne rozwiazanie twojego problemu.
Pzdr
Michal



========
Path: news-archive.icm.edu.pl!news.rmf.pl!agh.edu.pl!news.agh.edu.pl!newsfeed.silweb.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: Atmel AVR: Wywolywanie funkcji co pewien czas
Date: Fri, 6 Feb 2004 12:26:27 +0100


Na wstepie pragne podziekowac za odpowiedzi.

Przypominam co chce uzyskac. Chodzi mi o napisanie
programu dla AVR AT90S8535, w ktorym pewna
funkcja (obslugi przerwania) bylaby wywolywana co
pewien czas -- potrzebuje uzyskac wywolywanie
mojej funkcji co 0.1 sekundy albo 1 sekunde, moze
okaze sie niezbedne wywolywanie funkcji co 0.01 sek.

Mam .pdf "AVR130: Setup and Use the AVR Timers".
Na stronie 8 mamy: "Example - Timer0 Overflow Interrupt".
Oto kod:
void init_Ex1(void)
{
TCCR0 = (1<<CS02) | (1<<CS00); // Timer clock = system clock / 1024
TIFR = 1<<TOV0; // Clear TOV0 / clear pending interrupts
TIMSK = 1<<TOIE0; // Enable Timer 0, Overflow Interrupt
DDRB = 0xFF; // Set Port B as output
}

void interrupt [TIMER0_0VF0_vect] ISR_TOV0 (void)
{
PORTB = ~PORTB;
}

Do portu B podlaczamy diody LED. Przy 8-bitowym timerze 0 (MaxVal=256).
CK=3.69Mhz. PVal = 1024, stad czestotliwosc migania diod
fLED=CK/(2*Pval*MaxVal) = okolo 7Hz.


Inny przyklad z tego .pdf ze strony 12 wykorzystuje 8-bitowy timer2 i kwarc.
W tym przykladzie, mozna migac diodami z czestotliwoscia np. 1Hz. Czy da sie
sterowac diodami (chodzi o wywolywanie funkcji obslugi przerwania z
okreslona
czestotliwoscia) z czestotliwoscia 1Hz wykorzystujac timer0?
Jesli nie, to z czego to wynika? Czy chodzi o to, ze wartosc CK=3.69Mhz,
MaxVal=256 i dostepne wartosci Pval sprawiaja, ze podstawiajac do wzoru
CK/(2*Pval*MaxVal) nie da sie uzyskac wartosci rzedu 0.1Hz, 1Hz ?
Sterowanie z timera0 (tak jak w przytoczonym kodzie) byloby dla mnie o tyle
dogodniejsze, ze nie wymagany bylby kwarc. Chcialbym tez zrozumiec
czy z timera0 (bez kwarcu) mozna uzyskac czestotliwosc 1Hz,
tak jak z timera2 z kwarcem.
Z tego wzgledu, bylbym niezmiernie wdzieczny za uswiadomienie.

Z gory dziekuje za odpowiedzi,
Trix.



========
Path: news-archive.icm.edu.pl!news.rmf.pl!poznan.rmf.pl!news.man.poznan.pl!news.internetia.pl!newsfeed.tpinternet.pl!atlantis.news.tpi.pl!news.tpi.pl!not-for-mai