-
        

Ergebnis 1 bis 9 von 9

Thema: Interrupt-Controller

  1. #1
    Erfahrener Benutzer Roboter Experte Avatar von ikarus_177
    Registriert seit
    31.12.2007
    Ort
    Grein
    Alter
    24
    Beiträge
    601

    Interrupt-Controller

    Anzeige

    Hi,

    für mein Projekt muss ich ca. 20 Interrupts auswerten und feststellen können, von welchem Gerät diese kommen, damit ich darauf reagieren kann.

    Nun hat ein ATMega 32 blos 2 solcher Eingänge. Im RN-Wiki steht, es gibt solche Interrupt-Controller, die eigentlich geradezu perfekt für mein Vorhaben wären.

    Kennt ihr solche Bausteine / IC's? Kann ich die dann einfach mit einem normalen Datenbus (I2C wäre mir am liebsten) abfragen, um festzustellen, von welchem Gerät der Interrupt ausgeht?

    Viele Grüße
    ikarus_177

  2. #2
    Benutzer Stammmitglied
    Registriert seit
    23.09.2004
    Ort
    Hamburg
    Alter
    28
    Beiträge
    90
    Ich kenne keine ICs der Art, aber ich wuerde einfach alle Interruptleitungen an den einen Pin haengen, und wenn der getriggert wird, in einer Matrix o.ae. scannen, von wem dieser Interrupt kam. Die Frage ist, ob das fuer deine Anwendung schnell genug ist.

  3. #3
    Erfahrener Benutzer Robotik Einstein Avatar von Jaecko
    Registriert seit
    16.10.2006
    Ort
    Lkr. Rottal/Inn
    Alter
    35
    Beiträge
    1.987
    Wenns ein ATMega ist, dann kann man ja alle Interruptquellen an 3 Ports anschliessen. Über Dioden o.ä. dann alle auf z.B. INT0.
    Wird INT0 ausgelöst, einfach den Zustand der 3 Ports sichern, dass man den hat. Das auswerten, welches Bit auf welchem Port gesetzt ist, kann man ja danach machen und sich Zeit lassen.
    #ifndef MfG
    #define MfG

  4. #4
    Super-Moderator Robotik Visionär Avatar von PicNick
    Registriert seit
    23.11.2004
    Ort
    Wien
    Beiträge
    6.836
    Programmable Interrupt-Controller z.B.
    Intel 8259
    Aber da müssen die devices schon mitspielen.
    mfg robert
    Wer glaubt zu wissen, muß wissen, er glaubt.

  5. #5
    Erfahrener Benutzer Roboter Experte Avatar von ikarus_177
    Registriert seit
    31.12.2007
    Ort
    Grein
    Alter
    24
    Beiträge
    601
    Hi,

    erst mal Danke für die Antworten. Mir ist eben noch eine weitere Möglichkeit eingefallen, wie man das realisieren könnte.

    Und zwar:

    ein ATMega16, der als Coprozessor fungiert, fragt im Hauptprogramm ständig alle seine Eingänge ab. An diese Eingänge würde ich dann die Interrupts legen. Wenn ein Eingang des uC's von Gerät1 auf high gesetzt wird, erkennt das der Controller, und schaltet einen Ausgang, der ebenfalls mit Gerät1 verbunden ist, auf high, worauf Gerät1 das ursprüngliche Signal wieder zurücknimmt, der ATMega schaltet dann ebenfalls sein Signal wieder auf low. Da die Eingänge den bestimmten Geräten zugeordnet sind, lässt sich nun feststellen, von welchem Gerät der Interrupt ausgelöst wurde. Der Coprozessor meldet sich nun über I2C beim eigenlichen Masteer und gibt die Informationen weiter, worauf der Master dann reagieren kann.

    Könnte man das so realisieren?


    Viele Grüße
    ikarus_177

  6. #6
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    25.11.2003
    Beiträge
    1.111
    Du könntest Dir einen weiteren µC mit 20 Eingängen so programmieren, dass er diese Eingänge ständig abfragt (pollt) und bei einem IRQ dessen Nr per SPI, I2C oder einfach binär an der anderen µC übermittelt. Bei binär bräuchtest Du 5^2=32, also 5 Ports+INTx -> 6 Leitungen.
    Gruß

    Edit: war ich wohl zu spät...

  7. #7
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    22.05.2005
    Ort
    12°29´ O, 48°38´ N
    Alter
    48
    Beiträge
    2.731
    Hallo,

    bei einem Mega88 zB. kann man auf alle Pins einen Interupt legen, den PinChangeInterupt - PCINT, evtl. reicht da auch ein Mega48, da der nur auf die INTs wartet.
    Mit den Mega48/88/168 kann man max. 23 solcher Eingänge bearbeiten, dann brauchts aber noch eine Schnittstelle, und den Reset, sinds 20, wenn man den internen Takt verwendet.

  8. #8
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    17.04.2006
    Beiträge
    2.193
    @ikarus: wenn Du selbst schon polling vorschlägst, kann es mit der Interrupt-Notwendigkeit (heisst: schnell und prioritär) ja nicht so weit her sein. Entscheidend für den Verzicht auf "richtige" INTs wäre ja, wie schnell reagiert werden muss und wie lange die Signale anstehen. Mit ein paar Multiplexern und einigen Portpins liesse sich die Funktion ja vielleicht auch in den "Hauptcontroller" verlegen.

  9. #9
    Erfahrener Benutzer Roboter Experte Avatar von ikarus_177
    Registriert seit
    31.12.2007
    Ort
    Grein
    Alter
    24
    Beiträge
    601
    @shaun: ich dachte nur, wenn ein ATMega 16 nichts anderes zu tun hat, als seine Eingänge zu überwachen, müsste das auch sehr schnell gehen? Außerdem kann ich dann gleich das "Interruptabschaltesignal" an das betreffende Gerät zurücksenden.


    Viele Grüße
    ikarus_177

Berechtigungen

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