www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Anfängerfrage zu Mehrfachtimern


Autor: Frank (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: TryIt (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.