I2C: Idle Pegel nicht da, I2C geht nicht

Gast #5054117
Lesenswert?

Hallo zusammen,

da es mich jetzt 1 Woche Arbeit gekostet hat, würde ich gerne dem ein 
oder anderen das Problem ersparen.

Ich habe versucht, einen I2C an einem PIC18f26k80 in Betrieb zu nehmen. 
Leider hatte ich das Problem, dass meine Signalleitungen einfach nicht 
in den IDLE gehen wollten, bzw. genauer gesagt SCL.

Obwohl im Datenblatt dick und fett steht, dass das MSSP/I2C Modul TRIS 
überschreibt, wird in einer anderen Randnote erwähnt, dass die beiden 
zugehörigen Pins als INPUT geschaltet werden müssen (siehe Anhänge).

Vielleicht hilft es dem ein oder anderen mal weiter (via google Suche 
o.ä.).

Beste Grüße
ein überfroher PIC-Besitzer
Angehängte Dateien:
Gast #5054138
Lesenswert?

Pullups waren/sind da. Es lag lediglich daran, dass ich die beiden eben 
(aufgrund des Abschnittes "ist ja e Wurst, wird überschrieben", bzw. 
Output macht ja halbwegs Sinn, wenn ich als Master agiere) als OUTPUT 
definiert hatte, obwohl sie laut der zweiten Randnotiz eben als INPUT 
definiert werden müssen.

Bei mir geht jetzt alles, alles gut ;)
#5054150
Lesenswert?

Hi

Auch als Master ist ein OUT nicht wirklich sinnvoll - zumindest nicht 
als HIGH.
Wenn dann ein Slave die Leitung auf GND zieht, war's das mit der 
Schaltung.

Umschalten zwischen High(=Idle) und LOW per Input-no-PullUp und 
Output-LOW.
Hochgezogen werden beide Leitungen per externem PullUp-Widerstand.

Beim AVR nur durch das Umschalten des DDR-Register (dabei Portx=0 -> 
LOW/PullUp off).

Durch das weglassen der internen PullUp ist auch berechenbar, wie viel 
Strom die Einzelchips sinken können müssen - bei anwachsender Anzahl an 
Slaves würde sonst dieser Strom mit anwachsen, was zu Problemen führen 
kann.

MfG
#5054894
Lesenswert?

PIC-Besitzer schrieb im Beitrag #5054117:
> Obwohl im Datenblatt dick und fett steht, dass das MSSP/I2C Modul TRIS
> überschreibt, wird in einer anderen Randnote erwähnt, dass die beiden
> zugehörigen Pins als INPUT geschaltet werden müssen (siehe Anhänge).

Vielleicht muss man das so verstehen/übersetzen, dass zunächst die PINs 
immer als Input konfiguriert werden müssen und dann bei Bedarf vom 
Peripheriemodul als Ausgang konfiguriert werden. Das ist eigentlich 
zumindest bei den 8Bit PICs normal.

So kann es nicht dazu kommen, dass der Pin von zwei Seiten getrieben 
wird.
Also vom Digital Output LATCH und vom I2C.

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