timer/counter2 w ATMega32

witam

znowu mam problem z tym procesorem ATMega32 mecze sie caly dzien i nie moge dojsc do niczego, moze ktos tutaj cos poradzi otoz mam kawalek kodu ktory inicjalizuje mi timer2:

//inicjalizacja wszystkich przerwan ----------------------------------------- sei (); //ustawia bit7 w SREG na 1

//zapisanie wartosci do OCR2 OCR2 = 53;

TCCR2 |= _BV(CS22); //ustawienie dzielnika dla Timera 0 TCCR2 |= _BV(CS21); //dzielnik: 1024 TCCR2 |= _BV(CS20); //

TCCR2 |= _BV(WGM21); //ustawienie trybu pracy CTC TCCR2 &= ~_BV(WGM20); //

//wlaczenie timera TIMSK |= _BV(OCIE2); }

SIGNAL(SIG_OUTPUT_COMPARE2) { }

po takim kodzie funkcja SIGNAL powinna sie wykonywac

100 razy na sekunde poniewaz ze wzoru z pdfa do tego proca wyczytalem

foc2 = (f i/o) / [2*N*(1+OCR2)]

dla mojego kwarcu 11059200 dzielnika N = 1024 oraz wartosci OCR2 = 53 foc2 powinna byc rowna 100 a wiec

100 razy na sekunde powinno byc wywolywane przerwanie a u mnie wykonuje sie 2 razy czesciej jak wywale 2 z mianownika tego wzoru to sie niby wszytsko zgadza, ale nie lubie takich niewyjasnionych sytuacji bo skoro we wzorze ona jest to raczej powinna tam byc czy moze ktos ma jakis pomysl co sie dzieje ???

pozdr Krzysztof

Reply to
Krzysztof Skoroniak
Loading thread data ...

nie wiem jak w mega32, ale w mega128 jest dla CS22=1, CS21=1CS20=1 "External clock source on T2 pin. Clock on rising edge"

101 dla 1024

pozdr

Reply to
sobol

Tue, 27 Jul 2004 18:45:20 +0200, na pl.misc.elektronika, Krzysztof Skoroniak napisał(a):

No i dobrze - zerowanie licznika ( przerwanie ) to półokres przebiegu wyjściowego - czyli

2 przerwania na pełny okres, odpowiadający częstotliwości wyliczonej ze wzoru.
Reply to
Jurek Szczesiul
Reply to
Krzysztof Skoroniak

ElectronDepot website is not affiliated with any of the manufacturers or service providers discussed here. All logos and trade names are the property of their respective owners.