Forum: Mikrocontroller und Digitale Elektronik Anfängerfrage zu Mehrfachtimern


von Frank (Gast)


Lesenswert?

Hello, world!

Wie geht der Profi vor, wenn er mehr als zwei regelmäßige Interrupts 
braucht (z.B. eine in SW emulierte Uhr mit Sekundentakt und eine 
Überachung eines DCF-77-Signals und ein Multiplexen von 
Siebensegmentanzeigen und .....)?

Mein (Amateur-)Ansatz wäre, den ggT der Requests als Timerwert zu 
nehmen, die Interrupts mitzuzählen und dann jeweils bei Bedarf die 
verschiedenen Aktionen auszulösen. Der Timer würde also nur so eine Art 
globale Interruptverwaltung antriggern.

Ist das die prinzipiell richtige Vorgehensweise oder gibt's da schlauere 
Ansätze?

Grüße
Frank

von Karl H. (kbuchegg)


Lesenswert?

Frank schrieb:

> Mein (Amateur-)Ansatz wäre, den ggT der Requests als Timerwert zu
> nehmen, die Interrupts mitzuzählen und dann jeweils bei Bedarf die
> verschiedenen Aktionen auszulösen. Der Timer würde also nur so eine Art
> globale Interruptverwaltung antriggern.

Genauso.

von TryIt (Gast)


Lesenswert?

Ich bin kein Profi, jedoch löse ich es so:

- Ein Timerinterrupt einstellen dass er zB alle 5ms kommt.

- Dann kannst du verschiedene Variabeln definiren (ZählerEins, 
ZählerZwei,...)
Willst du zB eine Zeit von 100ms, dann ländst du den Zähler mit 20 
(20x5ms=100ms)

- Du dekrementierts diese Zähler bei jedem Interrupt und vergleichst 
diese mit 0. Ist ein Zähler bei 0(Zeit abgelaufen) setzt du ein 
Flag(BZählerEins, BitZählerZwei)

Somit musst du nur noch in einem Hauptprogramm diese Flags abfragen.

Ist ein Flag gesetzt führst du diese entsprechende Funktion aus und 
setzt das Flag zurück.

greez

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.