-         

Ergebnis 1 bis 3 von 3

Thema: aussteigen aus SIGNAL (SIG_OVERFLOW0)

  1. #1
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    20.06.2004
    Beiträge
    1.941

    aussteigen aus SIGNAL (SIG_OVERFLOW0)

    Anzeige

    hallo, ich habe ein signal SIGNAL (SIG_OVERFLOW0) auf 64us gesetzt.
    wenn ich jetzt in dieser routine eine for-schleife habe, die länger als 64us sekunden, was macht die interrupt-routine mit der schleife in der interrruptroutine.
    mfg pebisoft

  2. #2
    Erfahrener Benutzer Robotik Einstein Avatar von Felix G
    Registriert seit
    29.06.2004
    Ort
    49°32'N 8°40'E
    Alter
    34
    Beiträge
    1.780
    Was passiert weiss ich nicht...

    Aber es gibt ein paar Grundregeln die man bei Interrupts unbedingt beachten sollte:
    (dann hat man solche Probleme garnicht)
    - niemals mehr Befehle als zwingend notwendig in die Interruptroutinen stecken
    - wenn überhaupt, dann nur sehr kurze Funktionen innerhalb einer ISR aufrufen


    Bei einem ADC-Interrupt z.B. liest man nur den neuen Wert ein, schreibt ihn in irgendeine Variable und verlässt die ISR sofort wieder...
    Irgendwelche Berechnungen o.ä. erledigt man dann in Ruhe im Hauptprogramm
    So viele Treppen und so wenig Zeit!

  3. #3
    Benutzer Stammmitglied
    Registriert seit
    05.04.2005
    Beiträge
    66
    AFAIK ist das Interrupt-Enable-Flag in Interruptroutinen standardmäßig gelöscht (als ob cli() am Anfang der Routine stehen würde). D.h., unterbrochen wird deine Routine sicher nicht.
    Aber sorg lieber dafür, dass deine Schleife niemals so lange dauert, oder noch besser: positionier die Schleife außerhalb der Interruptroutine. Dann hast du solche Probleme nicht, wie Felix schon gesagt hat.

Berechtigungen

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