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

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.