- 12V Akku mit 280 Ah bauen         
Ergebnis 1 bis 4 von 4

Thema: Interrupt Priorität ändern?

  1. #1
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    17.11.2004
    Beiträge
    263

    Interrupt Priorität ändern?

    Anzeige

    LiFePo4 Akku selber bauen - Video
    Hallo,

    ich habe ein Problem mit den Interrupts bei meinem Programm.
    Ich benutze den ATMega8 und brauche den SIG_OUTPUT_COMPARE2 und den SIG_OVERFLOW0. Ich habe natürlich versucht die Interrupt sehr kurz zu halten, allerdings wird der Compare2 Interrupt sehr häufig aufgerufen. Abundzu wird ein Ausgangspin auf 1 gesetzt und der Timer0 gestartet. Wenn dann der Overflow0 auftritt, soll der Ausgangspin wieder auf 0 gesetzt werden. Allerdings habe ich festgestellt das der Overflow0 manchmal nicht kommt und der Ausgangspin nicht zurückgesetzt wird. Kann es sein das zur gleichen Zeit compare2 und overflow0 auftreten und der oderflow0 mit niedrigerer Priorität nicht ausgeführt wird?
    Wie kann man diesen Fehler abfangen?

    Könnte ich beim Aufruf von Compare2 einfach den sei() Befehl benutzten, so dass der Overflow0 den compare2 unterbricht? Ich weiß, das ist unschön programmiert, aber im Overflow0 wird nur ein pin auf 0 gesetzt, sollte sich also nicht zu sehr verschachteln...

  2. #2
    Erfahrener Benutzer Robotik Visionär Avatar von Hubert.G
    Registriert seit
    14.10.2006
    Ort
    Pasching OÖ
    Beiträge
    6.220
    Hallo
    Wenn du keine Flags veränderst geht kein Interrupt verloren, es wird einer nach dem anderen, in Abhängigkeit der ISR-Adresse abgearbeitet.
    Es ist möglich die ISR sofort wieder freizugeben, du musst dir die ISR-Flags ansehen welche du setzen oder löschen musst.
    Hubert

  3. #3
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    06.03.2007
    Beiträge
    176
    Zitat Zitat von Hubert.G
    Hallo
    Wenn du keine Flags veränderst geht kein Interrupt verloren, es wird einer nach dem anderen, in Abhängigkeit der ISR-Adresse abgearbeitet.
    Hubert
    muss ich nun nach den Addressen schauen , oder kannst du mir die Priorität, Wertikkeit nennen ? ich Suche immer noch nach der IRQ Reihenfolge, würde gerne wenn möglich die priorisieren sprich ordnen,
    es sind mir halt welche wichtiger und sollen vorrangig bedient werden, andere können später bedient werden

    1. ms Timer CTC OCR Flag, werden nur Var erhöht, dürfte keine 2µs dauern, kann ich ja mal messen
    2. RC5 grübel ich noch welcher Eingang optimal wäre
    3. DCF77, der kann sich fast ewig Zeit lassen, ob ich nun eine Pulsbreite zwischen 100ms-60ms , zwischen 200ms-125ms feststelle ist mir so egal

  4. #4
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    10.08.2004
    Ort
    Großbardorf
    Alter
    37
    Beiträge
    674
    Die Adresse gibt die Rangordnung an. Bei den AVRs kannst du die Reihenfolge nicht ändern, die ist fest vorgegeben.

Berechtigungen

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

Labornetzteil AliExpress