Forum: Mikrocontroller und Digitale Elektronik Taktisches Vorgehen PWM + Zeitmessung


von Philipp H. (phil_phil)


Lesenswert?

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.

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

>  eine Zeitmessung vornehmen möchten.
Um welche Zeiten handelt es sich? Eher 100 us oder eher 100 s?

von Paul B. (paul_baumann)


Lesenswert?

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

von Philipp H. (phil_phil)


Lesenswert?

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 ;-)

von Karl H. (kbuchegg)


Lesenswert?

Was heißt "wäre schön"?
Du arbeitest mit einem µC. Für den sind 9ms eine halbe Ewigkeit.

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

> 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
Noch kein Account? Hier anmelden.