-
        

Ergebnis 1 bis 3 von 3

Thema: Externe Interrupts?

  1. #1
    Benutzer Stammmitglied
    Registriert seit
    18.07.2005
    Beiträge
    49

    Externe Interrupts?

    Anzeige

    Hallo zusammen,

    mich würde das mal interessieren, wie das mit den externen Interrupts funktioniert.
    Ich habe eine Schaltung mit einem IR-Empfänger (RC5) und im Programm steht oben "Enable Interrupts".
    Woher weiß der AVR, dass er genau auf den Pin, an dem der IR-Empfänger sitzt, einen externen Interrupt legen soll?
    Checkt er das mit dem
    Config Rc5 = Pinb.4
    ?

    Ich müsste in einer anderen Schaltung mit einem ATMega8515 4 Bit (parallel) abfragen und das soll auch funktionieren, wenn der AVR gerade anderweitig beschäftigt ist.
    Wie kann man das bewerkstelligen?
    Gibt es denn so viele externe Interrupts und wie gibt man das im Programm an?

    Gruß, Dane

  2. #2
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    10.03.2005
    Ort
    Schifferstadt
    Alter
    35
    Beiträge
    318
    hi dane,

    Du musst dir mal das datenblatt von deinem Controller ansehen. Da steht drin, welche Pins Interrupt fähig sind. beim mega8 z.B. ist es Portd.2 (Int0) und Portd.3 (1). Das sind beide externe Interrupts. Du gibst im Programm dann an. Enable Int0 oder Enable Int1. Somit aktivierst Du die externen Interrupts.

    mfg Kay

  3. #3
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    06.11.2004
    Beiträge
    1.693
    In der Bascom-Hilfe steht auch, das für Getrc5() der Interrupt nicht benötigt wird. Ich vermute mal, das der Schaltplan einfah von einer Atmel AppNote so übernommen wurde.
    Das Enable Interrupts im Programm wird benötigt, um den Timer für den RC5-Empfang einzuschalten.
    Ein externen Interrupt wird für Getrc5() also nicht benötigt.

    Zum zweiten Teil deiner Frage:
    Die externen Interrupts (INT0, INT1, ...) sind fest den Pins zugeordnet. Welcher Pin welchen INT hat, steht im jeweiligen Datenblatt.
    Mit Config INT0 wird eingestellt, bei was der INT auslösen soll.
    Mit Enable INT0 wird er an einer beliebigen Stelle im Programm eingeschaltet. Somit wird er nicht ausgelöst, wenn er es auch nicht soll.
    Mit Disable INT0 wird er ausgeschaltet.
    Enable Interrupts aktiviert die Interrupt erstmal allgemein und kann/sollte am Anfang des Programms stehen.

    Um deine vier parallelen Bits abzufragen brauchst du nicht unbedingt vier INT's. Wie lange liegt das Signal denn an?
    Wahrscheinlich reicht es schon, wenn das erste Bit den INT auslöst und dort dann an drei anderen Pins abgefragt wird, welcher Zusand da grade anliegt.

Berechtigungen

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