Hallo Freunde, ich habe momentan das Problem, dass ich ein paar LEDs mit PWM ansteuere und nun gerne zeitgleich eine Zeitmessung vornehmen möchten. Leider weiß ich nicht genau wie das mit der Zeitmessung von statten geht. Ich habe mir das so gedacht das ich beim Atmega8 den TCCR0 für meine PWM nehme und den TCCR1 für die Zeitmessung. Leider weiß ich nicht was passiert wenn es zum Interrupt von TCCR0 kommt und er in die Anweisung geht und dann innerhalb dieser Anweisung nen Interrupt von TCCR1 kommt und er in die dortige Anweisung springt. Wie löst man das Problem also am Besten? Bzw. gibt es irgendwo ne Übersicht wie man am Besten mit mehreren Timern arbeitet? Dank' euch mal wieder.
> eine Zeitmessung vornehmen möchten.
Um welche Zeiten handelt es sich? Eher 100 us oder eher 100 s?
Wenn der Kollege gerade dabei ist, einen Interrupt zu bedienen, springt er da nicht raus. Er bearbeitet ihn weiter und erst, wenn die Routine vorbei ist, widmet er sich dem neuen Interrupt, der aufgetreten ist. MfG Paul
na im Prinzip geht es nachher um ne Geschwindigkeit.. sagen wir mal.. bis 40km/h. Bei nem Abstand von ca. 10-20cm der jeweiligen Messpunkte wären das ca. 9ms.. wobei das wirklich das Schlaraffenland wäre und ich nicht sooo schnell sein müsst, aber wie gesagt. Wäre schön ;-)
Was heißt "wäre schön"? Du arbeitest mit einem µC. Für den sind 9ms eine halbe Ewigkeit.
> TCCR0 für meine PWM nehme und den TCCR1 für die Zeitmessung Für ISR gilt das Motto der 30er: Fasse dich kurz! Nimm Rücksicht auf Wartende. http://de.wikipedia.org/wiki/Fasse_dich_kurz! In einer ISR sollte nichts Aufwendiges berechnet oder manipuliert werden. Dann ist die Ausführungszeit deiner PWM-Routine kurz, und du hast nur geringen Jitter. Angenommen, deine ISR dauert 50us, dann hast du eine maximal Messungenauigkeit von 0,05ms/90ms = 0,5%. das ist besser als der Tacho im Auto ;-) Aber lass den Zeitmess-Timer einfach durchlaufen, und berechne die abgelaufene Zeit durch Differenzbildung mit dem alten Timerwert.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.