-         

+ Antworten
Ergebnis 1 bis 4 von 4

Thema: Stören sich zwei Timer Interrupts gegenseitig?

  1. #1
    Gast

    Stören sich zwei Timer Interrupts gegenseitig?

    Anzeige

    SMARTPHONES & TABLETS-bis zu 77% RABATT-Kostenlose Lieferung-Aktuell | Cool | Unentbehrlich
    Hallo

    Folgende frage, ich habe zwei Timer (Timer0 und Timer1). Wenn z.B. die Interrupt-Routine von Timer0 gerade abgearbeitet wird und jetzt bei Timer1 ebenfalls ein Overflow auftritt, was passiert dann mit diesem Interrupt aufruf? Verfällt der Interrupt, oder wird die Interrupt-Routine von Timer0 unterbrochen.

    Mir wäre es am liebsten, wenn man dem Timer1 eine Priorität zuweisen könnte, der Timer1 Overflow kann die Timer0 Interrupt-Routine unterbrechen umgekehrt aber nicht. Geht das?

    Hintergrund, ich proge gerade eine Uhr. Der Timer0 ist für die Multiplexausgabe auf die Siebensegment Anzeige zuständig, Timer1 für die Zeitbasis. Jetzt sollte natürlich die Multiplexausgabe nicht die Zeitbasis stören.

    Danke

    Wolfgang

  2. #2
    Benutzer Stammmitglied
    Registriert seit
    15.01.2004
    Beiträge
    46
    Kommt ganz auf dein Betriebssystem an, würde ich sagen.

    Es gibt unterbrechenbare Interrupts und nicht unterbrechenbare Interrupts.
    Alles in allem ist dazu aber zu sagen: wenn der zweite Interrupt den ersten unterbricht, sollte der zweite abgearbeitet werden, danach beim ersten weiter gearbeitet werden, wo die Unterbrechung auftrat und wenn das Stück Code auch abgearbeitet ist, sollte zurück ins eigentliche Programm gesprungen werden.
    Auf die Art und Weise kommen sich die Interrupts nicht ins Gehege.

    Hinzuzufügen wäre noch, das man den Programmcode für Interrupt Routinen aus genau jenem Grund möglichst kurz halten sollte. Problematisch kann es nämlich werden, wenn der Interrupt wieder ansteht, während der letzte noch abgearbeitet wird.

    Ansonsten: probiers einfach mit einem kurzen Programm aus ...
    Warte in der ersten Interrupt Routine eine sehr lange Zeit, so das der zweite auch garantiert in dieser Zeit auftritt. Dann siehst du, was passieren wird.
    Failure is not an option. It comes bundled with your Microsoft product.
    (Ferenc Mantfeld)

  3. #3
    Gast
    am Bsp. ATMega16 (wobei ich mich gern korrigieren lassen, da ich mir bei dem Thema nicht sicher bin):

    Wenn ich die Referenz dazu richtig verstehe, kann ein Interrupt einen anderen Interrupt der gleichen Priorität im Normalfall nicht unterbrechen. Prioritäten kann man zuweisen, aber das dient eher dazu bei 2 gleichzeitig auftretenden Interrupts dem einen den Vorzug zu geben. Der Interruptvektor, welcher zuerst in der Vektortabelle steht bzw. aufgerufen wird, hat die höhere Priorität. Wird dieser aufgerufen, wird die Interruptabhandlung deaktiviert und erst wieder beim Beenden des Interrupts aktiviert. Das Interrupt-Flag des zweiten Interrupts wurde derweilen gespeichert und dieser Interrupt wird erst nach Beenden des ersten Interrupts ausgeführt.

    Will man einen Interrupt unterbrechen, muss man in diesem mittels Code das Bit für die Interruptabhandlung aktivieren. Wird ein zweiter Interrupt ausgelöst, wird der erste unterbrochen und der zweite ausgeführt. Danach der erste fortgesetzt.

    mfg

  4. #4
    Neuer Benutzer Öfters hier
    Registriert seit
    11.06.2004
    Ort
    Wien
    Beiträge
    6
    der letzte Eintrag ist von mir .. nicht von Gast
    /lat

+ Antworten

Benutzer, die dieses Thema gelesen haben: 0

Derzeit gibt es keine Benutzer zum Anzeigen.

Berechtigungen

  • Neue Themen erstellen: Ja
  • Themen beantworten: Ja
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •