Gast
#400438
Hi Leute, ich benutze das angefügte C-Programm um die Zeitdauer einer Fließkommaberechnung auf einem AVR (Mega16) zu messen. Das Ganze funktioniert mit einem Timer und geht meiner Ansicht nach auch schon ganz gut. Bei Timerprescaler 256 -> zählt er bis 17, bei 64 bis 70, bei 8 bis 556 usw. Das sind demnach 1/(7,372MHz/256)x17 = 600uS. Nun die Frage: ich habe auch den TimerÜberlauf-Interrupt aktiviert um zu sehen ob der Timer überläuft. Dieser ist an eine Zählvariable gekoppelt und zählt somit die Timerüberläufe. Wenn ich mich recht entsinne dann sind Timer0 und Timer2 beim Mega16 8-Bit Timer die erst bei 255 überlaufen. Die Frage ist nun: Warum wird dann bei meinem Programm bei jedem Durchgang ein Überlauf produziert? Wenn ich Timer1 nutze der ja ein 16-Bit Timer ist, wird bei Prescaler 256 & 64 kein Timer-Überlauf-Interrupt ausgelöst und bei Prescaler kleiner 64 geht es dann wieder los. Der 16-Bit-Timer dürfe selbst bei Prescaler 1 nicht überlaufen. Wo liegt der Denkfehler? Grüße Martin