Potrzebuje zmierzyć częstotliwość w zakresie do 200kHz(w tym przypadku 3,2MHz) procek: to ATmega8
Kombinuje jak koń pod górę, na czym polega mój błąd ?
Timer 2 odmierza czas 1s.
Timer 1 w założeniu ma zliczać impulsy z zewnatrz.
(wartość 0xFF w OCR1A,-impulsy dochodzą z T1,-po zrównaniu TCNT1H/L zerują się-i cykl się powtarza.)
Oróż Timer2 wchodzi w przerwania - czyli odmierza 1s.
Natomiast Timer1 nie chce zaskoczyć przerwania (Tz. jakby go nie było)
Może Ktoś podpowiedzieć ?
Kombinuje jak koń pod górę, na czym polega mój błąd ?
Timer 2 odmierza czas 1s.
Timer 1 w założeniu ma zliczać impulsy z zewnatrz.
(wartość 0xFF w OCR1A,-impulsy dochodzą z T1,-po zrównaniu TCNT1H/L zerują się-i cykl się powtarza.)
Oróż Timer2 wchodzi w przerwania - czyli odmierza 1s.
Natomiast Timer1 nie chce zaskoczyć przerwania (Tz. jakby go nie było)
Może Ktoś podpowiedzieć ?
/******** Przerwania od zrownania Timer counter1****************************/
ISR( TIMER1_COMPB_vect) //SIG_OUTPUT_COMPARE1B
{
obroty1++; // ma ich być 49 (0x31) zegar 8Mhz
}
/******** Przerwania od zrownania Timer counter2****************************/
ISR(TIMER2_COMP_vect ) //SIG_OUTPUT_COMPARE2
{
czy_sekunda++; // ma ich być 31372 (0x7A8C) zegar 8Mhz
}
#ifdef POMIAR_KHZ
// ustawienia licznika impulsow
TC1_NORMAL_A();
TC1_NORMAL_B(); // Tryb NORMAL 0xFFFF
TCCR1A|=_BV(FOC1A); // Wymuszenie trybu OUTPUT COMPARE DLA KANALU A
TIMSK|=_BV(OCIE1A); // Odblokowanie przerwań OUTPUT COMPARE L1
TC1_PRES_FALLING(); // zbocze opadajace START TIMERA1
// ustawienie odmierzania czasu 1 s
TIMSK|=_BV(OCIE2); // Odblokowanie przerwań OUTPUT COMPARE L2
TC2_PRES_1(); // bez preskalera START TIMER2
while(czy_sekunda==0x7A8B)
if (czy_sekunda==0x7A8C)
{
wartoscH=TCNT1H;
wartoscL=TCNT1L;
wartoscH=(wartoscH<<8)^TCNT1L;
licznik=(65535*obroty1)+wartoscH;
obroty1=0;
czy_sekunda=0;
sprintf(bufor,"Czestotliwosc =%u Hz",licznik);
for(i=0;i<=27;i++) {USART_TXR_znak(bufor[i]);} // Wyśli wynik
przen_linie();
licznik=0;
}//end czy_sekubda
#else
USART_TXR_text(info_d); //Brak uslugi częstosciomierza
#endif
break; KONIEC POMIARU Hz