-         

Seite 1 von 2 12 LetzteLetzte
Ergebnis 1 bis 10 von 12

Thema: Interrupt Disable

  1. #1
    Neuer Benutzer Öfters hier
    Registriert seit
    17.10.2004
    Ort
    Berlin
    Beiträge
    21

    Interrupt Disable

    Anzeige

    Guten Tag,

    ich nutze in einem Mega8 INT0 und INT1. Nun möchte ich den INT1 zu bestimmten Zeiten sperren. Dazu gibt es ja den Befehl Disable. Funktioniert auch, d.h. der Interrupt wird nicht ausgeführt. Soweit ok. Nun muß ich ja INT1 mal wieder freigeben. Jetzt wird aber sofort ein INT1 ausgeführt, unabhängig ob der Eingang geschaltet ist. Offensichtlich merkt sich der Kontroller den aufgelaufenen INT1 während der Disable Zeit. Das möchte ich aber nicht! Alle INT1's sollen während der Disable Zeit ignoriert werden.
    Wie kann ich das realisieren??

    Vielen Dank
    Reinhard

  2. #2
    Super-Moderator Robotik Visionär Avatar von PicNick
    Registriert seit
    23.11.2004
    Ort
    Wien
    Beiträge
    6.836
    Ja, du mußt vor dem re-enablen den entsprechenden aaa-IF löschen.
    Der Event am Pin und der Interrupt sind zwei paar Schuhe.
    mfg robert
    Wer glaubt zu wissen, muß wissen, er glaubt.

  3. #3
    Neuer Benutzer Öfters hier
    Registriert seit
    17.10.2004
    Ort
    Berlin
    Beiträge
    21
    Ja, sowas in der Richtung habe ich schon vermutet.
    Aber.. wie mache ich das??

    Reinhard

  4. #4
    Super-Moderator Robotik Visionär Avatar von PicNick
    Registriert seit
    23.11.2004
    Ort
    Wien
    Beiträge
    6.836
    Das Register GIFR ist zuständig
    Das Bit INT0 ist 64 = &H40
    Das Bit INT1 ist 128 = &H80
    Also:
    GIFR = GIFR AND &HBF löschen INT0
    GIFR = GIFR AND &H7F löschen INT1
    mfg robert
    Wer glaubt zu wissen, muß wissen, er glaubt.

  5. #5
    Gast
    Ssuper!!

    Vielen Dank für die extrem schnelle Hilfe.

    Reinhard

  6. #6
    Neuer Benutzer Öfters hier
    Registriert seit
    17.10.2004
    Ort
    Berlin
    Beiträge
    21
    Ergänzung:
    Zum Löschen muss lt. Datenblatt eine 1 ins GIFR geschrieben werden.
    Also:
    GIFR = GIFR OR &H80 => löschen INT1

    Reinhard

  7. #7
    Super-Moderator Robotik Visionär Avatar von PicNick
    Registriert seit
    23.11.2004
    Ort
    Wien
    Beiträge
    6.836
    Beim Zeus, du hast recht, lt. Datasheet ist das so, hoffentlich hört Reinhard noch zu.

    (aber ehrlich gesagt, sehr logisch klingt die Erläuterung nicht. Offenbar bewirkt das Setzen durche eine Flanke und das Setzen durchs Programm genau das Gegenteil. eigentlich strange)
    mfg robert
    Wer glaubt zu wissen, muß wissen, er glaubt.

  8. #8
    Neuer Benutzer Öfters hier
    Registriert seit
    17.10.2004
    Ort
    Berlin
    Beiträge
    21
    <...hoffentlich hört Reinhard noch zu

    Ja, ich habs ja selbst geschrieben! Jetzt funktioniert es auch so wie es soll.
    Das Ganze nennt sich dann Dialektik

    Gruß

    Reinhard

  9. #9
    Super-Moderator Robotik Visionär Avatar von PicNick
    Registriert seit
    23.11.2004
    Ort
    Wien
    Beiträge
    6.836
    Zitat Zitat von Reinhard
    Ja, ich habs ja selbst geschrieben!
    Ui, bei mir setzt offenbar schon die Demenz ein.

    Na, hauptsache es klappt
    mfg robert
    Wer glaubt zu wissen, muß wissen, er glaubt.

  10. #10
    Benutzer Stammmitglied
    Registriert seit
    16.06.2004
    Alter
    30
    Beiträge
    77
    Hi PicNick,
    ich hab da auch noch ne Frage zum löschen des Int1.
    Wenn du das folgendermaßen machst
    Code:
    GIFR 10011001
    &    10000000
        ==========
         10000000
    dann löscht du doch die restlichen Bits des GIFR auch. Wie löscht man denn wirklich nur BIT 7 und 8?

    Gruß
    Baui

Seite 1 von 2 12 LetzteLetzte

Berechtigungen

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