Anfängerfrage zu Mehrfachtimern

Gast #1850913
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
Gast #1850922
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

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren