PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Grundsatzfrage 2 Timer benutzen



sebastian.heyn
21.07.2005, 18:29
Hallo,
ich habe mal wieder eine saublöde frage:
Ich will in einem programm gleichzeitig 2 timer laufen lassen. der eine tickt alle 560µsec um ein pwm signal auszuwerten, der zweite jede sekunde als timeout. Das programm läuft nur mit timer0 super, nun stelle ich mit die frage, was passiert, wenn beide timer gleichzeitig auslösen würden. wartet dann der zweite, bis der erste fertig ist? (es wird ja wärend eines interrupts normal kein zweiter interrupt ausgelöst)

Marco78
21.07.2005, 19:00
Ich würd sagen mal ausprobieren. Du kannst ja mal überschlagen nach wieviel Sekunden es das erste mal der Fall wäre.

Ich bin der Meinung, das solange eine ISR läuft die nächste ISR erst ausgeführt wird wenn die erste fertig ist.
Die Timer laufen selbstständig, deshalb müsste es theoretisch möglich sein das sie mal gleichzeitig auslösen. Im Gegensatz zum Programm was ja immer nur einen Schritt ausführt. Da wäre es nicht möglich das solche Aktionen gleichzeitig anstehen.

Soll der erste Timer eine Frequenz messen oder ein PWM erzeugen. Wenn erzeugen würde es keine Probleme geben.

izaseba
21.07.2005, 19:02
Hallo,
Wenn sowas passiert hat der zweite Timer pechgehabt, und geht leer aus.
Er wartet auch nicht, Das ist auch der Grund, warum man die Interruptroutinen kurz halten soll.

Gruß Sebastian

sebastian.heyn
21.07.2005, 19:50
Das programm macht nix anderes, als pwm entschlüsseln. (timer0 tau ist ca 560ms der timer läuft mit minimal weniger, glaub ich) timer1 soll einmal die sekunde auslösen und gucken, wenn ein signal innerhalb einer sekunde öfters gefunden wird, soll das einmal die sekunde gecheckt werden. habe jetzt nen counter dazugebaut, der bei 1800 (ca 1 sekunde) nachschaut (nur timer0)

Marco78
21.07.2005, 19:53
Hab ich nicht verstanden, sorry.

Du willst also eine Frequenz messen? Und wenn diese größer als 1Hz ist soll sie erst gemessen werden?

sebastian.heyn
21.07.2005, 19:59
ich lese pwm ein,

jeder high pegel hat andere längen, so werden daten übertragen.
ich lese diese aus (langer high=1, kurzer high=0)
werden zwei bytes öfters als 5 mal in einer sekunde übertragen werden, muss was gemacht werden. also schau ich einmal die sekunde nach. so wie ichs gemacht habe, sollte es gehen.

Marco78
21.07.2005, 20:22
Jetzt kann ich dir folgen. Den Begriff PWM finde ich an dieser Stelle nur etwas unpassend dafür. Aber ichhätte auch kein anderes Wort dafür :D

Wie auch immer, mein Segen hast du.