Hallo Leute, ich verwende einen ATXMEGA32A4U Mikrocontroller. Ich habe an Port E (Bit 0 und Bit 1) ein IC angeschlossen das den I2C Bus verwendet. Ich kann auch inzwischen mit dem IC kommunizieren, jedoch habe ich Bedenken das ich die I/O Port Direction richtig eingestellt habe. Momentan habe ich es so eingestellt. // PORTE initialization // OUT register PORTE.OUT = 0x00; // Pin0: Input --> TWI_SDA // Pin1: Output --> TWI_SCL // Pin2: Input // Pin3: Input PORTE.DIR = 0x02; Wenn ich die I2C Schnittstelle benutze übdernimmt diese dann die Kontroller über die Ports?
Hi >Wenn ich die I2C Schnittstelle benutze übdernimmt diese dann die >Kontroller über die Ports? Nicht über die Ports, aber über die I2C-Pins. MfG Spess
Ist es demnach egal wie ich die beiden PINs konfiguriere. Ich benutze natürlich externe Pullups.
Die Umschaltung macht die I2C-Logic im Prozessor. Das ist nötig, weil beide Leitungen bidirektional sind und Du sie garnicht richtig vorgeben kannst.
> Ist es demnach egal wie ich die beiden PINs konfiguriere. Ich benutze > natürlich externe Pullups. Nö ist es nicht. SCL ist beim Master immer Output und an den Slaves immer input der Master gibt den Takt an. SDA kann Input oder Output sein, das ist vom Protokol abhängig. Aber es ist wichtig zu wissen das SDA (wenn als Output geschaltet) kein richtiger Output ist sondern nur Open Collector bzw. Open Drain. Das bedeutet SDA kann nur =V ausgeben (nur der Transitor nach GND kann enabled werden). Wenn eine 1 Ausgegeben wird dann wird der Ausgang hochohmig und keine Spannung wird ausgegeben. Deshalb muß da halt nen Pullup ran, damit VCC anliegen wenn Hochohmig ist. Und deshalb kann auch jeder was gleichzeitig senden ohne das was passiert, weil alle nur 0V auf SDA legen können.
Demnach sind doch beide Pins Open Collector bzw. Open Drain, es ist ja auch an beiden Leitungen ein Pullup angeschlossen. Mit dem Clock Stretching wird kann doch eine fehlerhafte Übertragung an den Master symbolisiert werden.
MIchael schrieb: > Mit dem Clock > Stretching wird kann doch eine fehlerhafte Übertragung an den Master > symbolisiert werden. Nein, damit signalisiert der Slave daß er noch Zeit braucht. So lassen sich sogar 100kHz-Slaves mit 400kHz-Slaves an einem Bus mischen. Und ja, beide Leitungen sind OC, jeder Slave kann den Bus anhalten, und eigendlich ist nur ein sauberer Low-Pegel interessant.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.