Port Direction bei I2C Bus

Gast #3730159
Lesenswert?

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?
Gast #3730360
Lesenswert?

> 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.
Gast #3730417
Lesenswert?

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.
#3730851
Lesenswert?

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.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren