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
Druckbare Version
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
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
Ja, und vergiss GND nicht
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
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 :confused:)
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
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
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
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