Warten auf Interrupt

Gast #283400
Lesenswert?
• ▲
▼
Hallo Leute!
Ich habe einen Zähler, der externe Ereignisse zählt. Ist ein bestimmter
Wert erreicht, wird ein Interrupt ausgelößt.
Mein Programm muss warten, bis dieser Int ausgelößt wurde. wie läßt
sich dies realisieren? loop_until_bit_is_set(Timer3, COMP3); läuft
nicht! :-(
Ich verwende den Timer 3 des AT128.
Danke für Hilfe
Gast
Lesenswert?
• ▲
▼
Warten auf Interrupt = Warten auf Godot!
Sinn und Zweck der Interruptgeschichte ist, daß ein Proramm NICHT
warten muss. Das klassische Hauptprogramm rattert asynchron seine
Schleife(n) ab und prüft regelmäßig das Vorhandensein eines
Ereignisses, z.B. das Kippen eines Flags, daß Du in der
Interruptroutine gesetzt hast.
Moderator Persönliche Seite
Lesenswert?
• ▲
▼
Naja, wenn er sowieso nix anderes zu tun hat, kann man natürlich auch
auf dieses Interrupt-Flag warten -- aber dann sollte man eben gerade
keine Interruptroutine dafür haben.

Wenn man eine hat, setzt man in dieser einfach ein Bit und wartet im
Hauptprogramm auf dieses:
1
#include <stdint.h>
2
#include <avr/interrupt.h>
3
#include <avr/signal.h>
4
#include <avr/io.h>
5

6
volatile struct {
7
  uint8_t comp3a_int: 1;
8
} intbits;
9

10
SIGNAL(SIG_OUTPUT_COMPARE3A)
11
{
12
  intbits.comp3a_int = 1;
13
}
14

15
...
16
int
17
main(void)
18
{
19
...
20
  for (;;) {
21
    if (intbits.comp3a_int) {
22
      intbits.comp3a_int = 0;
23
      /* handle it */
24
    }
25
    ...
26
  }
27

28
  return 0;
29
}

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 21 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.