www.mikrocontroller.net

Forum: Compiler & IDEs Interruptvorrang


Autor: saschisch (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Leute!

Ich schreibe ein Programm dass 2 Interrupts behandelt. Einmal zählt der
Timer0 bis zum Outputcompare Wert und löst dort dann einen Interrupt
aus. Der zweite ist der externe Interrupt. Das Problem ist jetzt, dass
ich nicht weiß ob der externe Interrupt den Outputcompareinterrupt
stört.

Es soll so funktionieren, dass ich eine GENAU eine bestimmte Zeit zähle
und während dessen die externen Interrupts zähle. d.h. wenn der externe
Interrupt den anderen stört ist das nicht gut.

Danke für eure Antwort

MfG

saschisch

Autor: saschisch (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
hier der Quelltext

Autor: Fritz Ganter (fritzg)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wenn deine Interrupt-Routinen als ISR bzw. SIGNAL deklariert sind, dann
werden sie durch andere Interrupts nicht unterbrochen.
D.h. wenn du grad im Timerinterrupt bist wird der ext. Interrupt erst
dann ausgeführt, wenn die Timerinterruptroutine beendet ist. Was erst
dann ein Problem darstellt wenn während des Timerinterrupts mehr als
ein  externer Interrupt auftritt.

Umgekehrt ist es dasselbe, wenn in der ext.Interrupt-Routine der
Timerinterrupt mehr als einmal kommen sollte.
Aber das kannst du ja ausrechnen ob das vorkommen kann, die
Interrupt-Routinen sollten sowieso so kurz wie möglich sein.

Wenn eine Interrupt-Routine unterbrechbar sein soll, musst du sie mit
INTERRUPT statt SIGNAL deklarieren, bzw. bei der neuen avr-libc mit
einem komischen Konstrukt (siehe Doku).

Autor: saschisch (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Danke!

Ich habe noch eine Frage, wird während des Interrupts(beim Ausführen)
der Timer0 gestoppt?

MfG

saschisch

Autor: Fritz Ganter (fritzg)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Nein, der läuft weiter.

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.