-         

Seite 1 von 3 123 LetzteLetzte
Ergebnis 1 bis 10 von 21

Thema: I2C Bus

  1. #1
    Benutzer Stammmitglied
    Registriert seit
    24.03.2010
    Ort
    Steiermark
    Alter
    25
    Beiträge
    65

    I2C Bus

    Anzeige

    Hallo

    Meine Frage ist eigentlich recht simpel und zwar wenn ich einen ATmega16 über I2C Bus etwas ansteuern will muss ich nur SCL, SDA und INT verbunden werden?

    MfG Snow Wolf

  2. #2
    Erfahrener Benutzer Roboter Genie Avatar von BMS
    Registriert seit
    21.06.2006
    Ort
    TT,KA
    Alter
    26
    Beiträge
    1.192
    Hallo,
    die INT-Leitung ("Interrupt") musst du nicht zwangsläufig anschließen, außer du möchtest z.B. einen Portexpander anschließen, der über die INT-Leitung dem Prozessor bedeuten kann, dass sich die Eingangszustände geändert haben.
    Wichtig sind noch zwei Pull-up-Widerstände zwischen SDA und +5V sowie zwischen SCL und 5V. Wähle so etwa im Bereich 2,2k...10kOhm. Interne Pull-ups gibt es zwar auch, aber die sind zu hochohmig dafür.
    Die angeschlossene Hardware braucht meist auch noch Versorgungsspannung, üblicherweise wird dann I2C-Bus und Versorgungsspannung auf einem Flachbandkabel gemeinsam verkabelt.

    Grüße, Bernhard

  3. #3
    Super-Moderator Robotik Visionär Avatar von PicNick
    Registriert seit
    23.11.2004
    Ort
    Wien
    Beiträge
    6.836
    Ja, und vergiss GND nicht
    mfg robert
    Wer glaubt zu wissen, muß wissen, er glaubt.

  4. #4
    Benutzer Stammmitglied
    Registriert seit
    24.03.2010
    Ort
    Steiermark
    Alter
    25
    Beiträge
    65
    Ok das heißt ich muss folgende Leitungen in den Bus intigrieren damit alles funktioniert: SCL, SDA, INT (nur wenn ich eingänge habe), GND. Muss ich auch die Versorgungsspannung mit einschließen?

    MfG Snow Wolf

  5. #5
    Erfahrener Benutzer Begeisterter Techniker Avatar von Chypsylon
    Registriert seit
    02.02.2011
    Ort
    Graz/Österreich
    Beiträge
    256
    Prinzipiell benötigst du nur SCL und SDA. INT ist, wie Bernhard schon erwähnt hat, rein optional und hat mit dem Bus selber nichts zu tun. Auch GND und VCC haben mit dem Bus nichts zu tun, aber wenn dein Bauteil GND und VCC Pins hat solltest du die auch dementsprechend versorgen.
    Welche erweiterungen willst du überhaupt anschließen? (Ich würde auf einen pcf8574 tippen )

  6. #6
    Erfahrener Benutzer Robotik Einstein Avatar von 021aet04
    Registriert seit
    17.01.2005
    Ort
    Niklasdorf
    Alter
    29
    Beiträge
    4.570
    Du brauchst die Versorgungsspannung, damit die Schaltung versorgt wird. Damit der I2C Bus funktioniert brauchst du SCL, SDA (über Pullup Widerstände mit pos. Versorgungsspannung verbinden) und GND (hast du schon über die Versorgung. Den INT brauchst du nicht. Solltest du z.B. bei einem PCF8574 (Portexpander) wichtige Eingänge haben, kannst du den INT-Anschluss mit einem Int Eingang des µCs verbinden. Wenn die Eingänge eher unwichtig sind und du den z.B. PCF8574 zyklisch ausließt brauchst du den INT nicht. Du kannst die INT Ausgänge von mehreren I2C Bausteinen an einen INT-Eingang des µC schließen (parallel). Du musst aber einen Pullup Widerstand verwenden (es geht auch der interne des µC).

    Mit dem RTC-Baustein PCF8583 kannst du z.B. jede Sekunde einen INT auslösen. So hast du am µC eine relativ genaue Zeit, die du verwenden kannst.

    Noch einmal aufgeschlüsselt:
    Wichtig:
    >+U
    >GND
    >SCL
    >SDA
    Wenn nötig:
    >INT
    MfG Hannes

  7. #7
    Benutzer Stammmitglied
    Registriert seit
    24.03.2010
    Ort
    Steiermark
    Alter
    25
    Beiträge
    65
    Ok es ist sind 2 PCA9555D Bausteine die ich verwenden will. Das heißt ich muss due +5V vom µC und GND an den Bus hängen damit alles einwandfrei funktioniert?

    MfG Snow Wolf

  8. #8
    Erfahrener Benutzer Begeisterter Techniker Avatar von Chypsylon
    Registriert seit
    02.02.2011
    Ort
    Graz/Österreich
    Beiträge
    256
    Zitat Zitat von Snow Wolf Beitrag anzeigen
    Ok es ist sind 2 PCA9555D Bausteine die ich verwenden will. Das heißt ich muss due +5V vom µC und GND an den Bus hängen damit alles einwandfrei funktioniert?
    Mit dem Bus (also SCL und SDA) ist nur +5V über Pullup Wiederstände (z.B. 4,7k) verbunden aber die PCA9555D musst du mit GND und +5V versorgen (wahrscheinlich eh was du gemeint hast )
    Grüße aus Graz

  9. #9
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    07.03.2011
    Beiträge
    1.415
    Zitat Zitat von Chypsylon Beitrag anzeigen
    Mit dem Bus (also SCL und SDA) ist nur +5V über Pullup Wiederstände (z.B. 4,7k) verbunden aber die PCA9555D musst du mit GND und +5V versorgen (wahrscheinlich eh was du gemeint hast )
    Grüße aus Graz
    Ich versuche mal ein wenig System in das Ganze zu bringen. Jeder Chip braucht eine Versorgung. Ich hab jetzt die PCA9555 nicht nachgesehen, aber ich vermute sie brauchen 5V, der ATmega16 auch. Wenn sie miteinander kommunizieren sollen, sollten sie eine gemeinsame Masse haben.

    Und nun der Bus. I2C hat 2 Leitungen, die müssen an alle Beteiligten gehen, es ist ja ein Bus. Der Bus ist OC, daher werden Pullups an beiden Leitungen gebraucht. Die I2C Spec sagt, jeder Ausgang muß 3mA treiben können, also darf der Pullup nicht so klein sein, daß mehr als 3mA fließen. Von der Physik ist das schon alles. Von der Logik muß man noch beachten, das alle Knoten am Bus eine eigene Adresse haben. Der µC ist der Master, die beiden PCA9555 müssen auf unterschiedliche Adressen gesetzt werden.

    Ein Interrupt gehört nicht zum I2C Bus. Wenn ich aber als Master nicht dauernd die Slaves pollen will, kann mir ein Interrupt die Arbeit erleichtern. Dazu wird jeder Interruptausgang eines PCA9555 an einen Interrupteingang des µC gelegt. Wenn dann ein Interrupt auftritt, weiß der µC an welchem PCA ein Ereigniss aufgetreten ist, um das er sich kümmern muß.

    MfG Klebwax
    Strom fließt auch durch krumme Drähte !

  10. #10
    Benutzer Stammmitglied Avatar von modtronic
    Registriert seit
    14.05.2011
    Ort
    Hagen
    Alter
    40
    Beiträge
    41
    Hallo

    Ich gebe dir noch einen kleinen Tip.

    Ich habe das so gelöst. die I2c-Bausteine benötigen für ihre Arbeit ja +5V. Da ich jetzt nicht weiß wie lange deine Leitung dazwischen ist empfehle ich dir
    bei längerer Leitung den Spannungsregler für die beiden PCA mit auf der Platine unterzubringen wo sich sich befinden.
    Ich habe das über eine 10 poligen Wannenstecker gemacht
    Ich habe dort + 12V, GND, SCA und SCL. Die 5 Volt werden dann über ein 78L05 aus den 12 Volt gewonnen.
    Ich habe mich für diese Lösung entschieden um SPannungsverlust vorzubeugen da ich dazwischen längere Leitungen haben.

    MFG
    Patrick

Seite 1 von 3 123 LetzteLetzte

Berechtigungen

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