- SF800 Solar Speicher Tutorial         
Ergebnis 1 bis 9 von 9

Thema: Atmega8 Interrupt Flags

Baum-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #2
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    15.01.2007
    Ort
    Göttingen
    Beiträge
    706
    Hi Wombatz,

    des Rätsels Lösung findet sich im Datenblatt des ATMega8, in diesem Fall auf Seite 68:

    Dort steht geschrieben, dass die Interrupt-Flags von INT0 und INT1 grundsätzlich gelöscht werden, wenn die Interrupts als "level" konfiguriert sind. Ist ja eigentlich auch logisch - sonst würden ja tausende von Interrupt-Anforderungen auflaufen, wenn man die Taste nur ´ne halbe Sekunde lang drückt.

    Wenn Du die Interrupts also auf "Flanke" konfigurierst (z.B. fallend), ist dieses Grundproblem schon mal behoben - es lässt sich dann auch während einer ISR der nächste Interrupt aslösen.. Allerdings wirst Du was interessantes feststellen: Manchmal leuchtet die LED 10 Sekunden statt nur 5. Das liegt daran, dass jeder Taster prellt, und deshalb oft zu Beginn der ISR der gleiche Interrupt nochmal "auf Vorrat" ausgelöst wird. Das könntest Du ändern, indem Du vor dem return das entsprechende Interrupt-Flag löschst. Aber hier gibt´s noch eine lustige Besonderheit: Diese Flags löscht man, indem man sie auf "1" setzt (ist tatsächlich so - steht auch auf Seite 68!).

    Um zu vermeiden, dass Interrupts zeitlich aufeinanderfallen, sollten die ISRs so kurz wie möglich sein (das wirst Du hier im Forum auch alle Nase lang lesen). "Guter Stil" wäre es also, in der ISR nur ein Flag-Bit zu setzen, und gleich wieder zurück in die Hauptschleife zu springen. Dort werden diese Flags dann regelmäßig abgefragt, und wenn sie 1 sind, wird die dazugehörige Befehlssequenz abgearbeitet (und das Flag auf 0 gesetzt - bis zum nächsten Interrupt).
    Geändert von Sauerbruch (27.08.2011 um 17:22 Uhr)

Ähnliche Themen

  1. Interrupt bei TWI Slave (Atmega8)?
    Von ingo pirker im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 2
    Letzter Beitrag: 20.11.2009, 22:36
  2. Status-Flags ??
    Von bL1nK im Forum Assembler-Programmierung
    Antworten: 1
    Letzter Beitrag: 28.01.2007, 14:39
  3. Externer Interrupt ATMega8
    Von Ronnie.B im Forum AVR Hardwarethemen
    Antworten: 2
    Letzter Beitrag: 19.12.2005, 17:40
  4. atmega8 rx interrupt
    Von sg10241024 im Forum C - Programmierung (GCC u.a.)
    Antworten: 5
    Letzter Beitrag: 20.11.2005, 17:02
  5. Flags 8051
    Von im Forum Microcontroller allgemeine Fragen/Andere Microcontroller
    Antworten: 5
    Letzter Beitrag: 17.12.2004, 07:35

Berechtigungen

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

LiFePO4 Speicher Test