-
        

Ergebnis 1 bis 7 von 7

Thema: Delay während Interrupt

  1. #1
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    06.02.2007
    Beiträge
    139

    Delay während Interrupt

    Anzeige

    Hallo

    Also ich verwenden den AVR GCC4 und Programmiere nur um ein Beispiel zu nennen den Atmega168....

    Meine Frage ist folgende undzwar brauche ich in meinem Programm ein Delay das im ~1500us Bereich liegt. Nur was passiert wenn während dessen ein Interrupt kommt der zB 2000us braucht. Wird das delay während dessen weitergezählt oder ist es wie ich befürchte eine einfache Schleife die danach weiter arbeitet?

    Denn 3500ms wären wohl der Tot der Hardware....(Aufzeit)

    Liebe Grüße,
    manhunt

  2. #2
    Super-Moderator Robotik Visionär Avatar von PicNick
    Registriert seit
    23.11.2004
    Ort
    Wien
    Beiträge
    6.836
    Bereite dich innerlich auf Verluste vor.
    Es ist so, wie von dir befürchtet

    Delay-Schleifen sind bei Interrupts, die 2 mS (sic) brauchen, nicht zu brauchen.
    Da musst du insgesamt anders strukturieren
    mfg robert
    Wer glaubt zu wissen, muß wissen, er glaubt.

  3. #3
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    02.09.2005
    Ort
    Osnabrücker Land
    Alter
    55
    Beiträge
    534
    hmm delay ist pfui

    und die Verwendung in einem Interrupt widerspricht es der Empfehlung, nur wenig in selbigen zu packen ...

    Also wieso stellst Du den Timer nicht so ein, daß Du alle 1,5 ms einen Interrupt bekommst und zählst da eine volatile byte variable hoch .. .
    setzt diese auf 0 und machst im Programmablauf weiter, wenn diese 1 ist ...
    als eine der vielen Möglichkeiten .....
    Ich kann mir keine Signatur leisten - bin selbständig!

  4. #4
    Erfahrener Benutzer Robotik Visionär
    Registriert seit
    26.11.2005
    Ort
    bei Uelzen (Niedersachsen)
    Beiträge
    7.942
    Die einfachen delay-schleifen haben genau das Problem, wenn da ein Interrupt dazwischen kommt dauert es länger. Da hilt es einen Timer zu nehmen. Wobei man dazu nicht mal einen Interrupt nutzen muß, es reicht auf das Interrupt-flag zu warten, nachdem man den Timer programmiert hat. Die extra Variable und ISR braucht man erst wenn es um sehr lange Zeiten geht, oder um Zeiten die sich überschneiden.

  5. #5
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    02.09.2005
    Ort
    Osnabrücker Land
    Alter
    55
    Beiträge
    534
    besserwissi, stimmt, nur ich nutze n timerinterrupt immer mehrfach .... (das timerflag muß man dann auch wieder löschen, sonst gehts nur einmal)
    Ich kann mir keine Signatur leisten - bin selbständig!

  6. #6
    Erfahrener Benutzer Robotik Visionär Avatar von oberallgeier
    Registriert seit
    01.09.2007
    Ort
    Oberallgäu
    Beiträge
    7.551

    Re: Delay während Interrupt

    Zitat Zitat von manhunt
    ... wenn während dessen ein Interrupt kommt der zB 2000us braucht ...
    Also ich verstehe das jetzt so, dass Deine Interrupt-Service-Routine 2ms brauchen dürfte. Seltsam, seltsam. Warum bin ich IMMER besorgt darum, dass meine ISR so kurz wie möglich sind. Laufzeit immer deutlich unter dem Interruptabstand. Sonst macht das Ganze doch keinen (wenig) Sinn. Na ja, wenns blos EINE ISR ist, die nur wenige Male pro Sekunde kommt, dann ja - gibts denn so etwas?
    Ciao sagt der JoeamBerg

  7. #7
    Erfahrener Benutzer Robotik Visionär
    Registriert seit
    26.11.2005
    Ort
    bei Uelzen (Niedersachsen)
    Beiträge
    7.942
    Es gibt schon so seltsame Fälle. Bei mir läuft ein Controller 24 H am Tag, der kreigt nur etwa 4 mal am Tag eine ISR und der Dauert dann etwa 1-2 Sekunden.

    Der Controller hängt an der Klingel.

Berechtigungen

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