Forum: Mikrocontroller und Digitale Elektronik I2C: Idle Pegel nicht da, I2C geht nicht


von PIC-Besitzer (Gast)


Angehängte Dateien:

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

von Georg A. (georga)


Lesenswert?

Externe Pullups vergessen?

von Baldrian (Gast)


Lesenswert?

Georg A. schrieb:

> Externe Pullups vergessen?

Gute Antwort auf eine nicht gestellte Frage.

von PIC-Besitzer (Gast)


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 ;)

von Patrick J. (ho-bit-hun-ter)


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

von Volker S. (vloki)


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.

von PIC-Besitzer (Gast)


Lesenswert?

Fakt ist - es hat mich sehr viel Arbeit gekostet, die ich dem ein oder 
anderen ersparen möchte ;)

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
Noch kein Account? Hier anmelden.