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.