Forum: Mikrocontroller und Digitale Elektronik I2C Pegelproblem


von Florian (Gast)


Angehängte Dateien:

Lesenswert?

Hallöchen,

ich habe momentan ein sehr merkwürdiges Problem. Ist mir so noch nicht 
untergekommen. Und zwar geht es um eine I2C-Kommunikation zwischen dem 
MSP430F6638 und dem Temperatur- und Feuchtigkeitssensor CC2D_AD321.
Ich habe mich zunächst aus den Codebeispielen von TI bedient. Mein uC 
ist der Master und empfängt nach senden der Slave-Adresse die 
Datenwerte.

Ich habe mir einen Breakpoint in der ISR gesetzt, um zu sehen, ob ein 
Empfangs-Interrupt ausgelöst wird. Oft springt er da rein. Ab und zu 
macht er das aber auch nicht. Wenn ich mit dem Oszi an SDA und SCL die 
Spannung messe bemerke ich nach Kompilierung meines Programms (Programm 
aber noch nicht gestartet), dass die SDA-Leitung auf Low-Potential ist 
(0V). Eigentlich sollte diese LEitung ja auf Betriebsspannung liegen 
über den eingebauten Pull-Up von 2,2 kOhm. Wenn ich an SCL gehe sehe ich 
dort die Betriebsspannung und wenn ich dann wieder an SDA gehe, habe ich 
dort plötzlich auch Betriebsspannung. Und dann gelange ich auch in die 
ISR, wenn ich dann das Programm ausführe. Kann sich das jemand erklären, 
warum die Leitung auf Low liegt?

Ich danke euch schonmal für eure Hilfe:)

Florian

von Clemens L. (c_l)


Lesenswert?

Florian schrieb:
> Wenn ich mit dem Oszi an SDA und SCL die Spannung messe bemerke ich
> nach Kompilierung meines Programms (Programm aber noch nicht gestartet)

Wenn das Programm überhaupt nicht läuft, wieso erwartest du dann 
irgend etwas an den Pins?

> Wenn ich an SCL gehe sehe ich dort die Betriebsspannung und wenn ich
> dann wieder an SDA gehe, habe ich Dort plötzlich auch Betriebsspannung.

Hört sich an wie ein potentialfreier Eingang. Das sollte mit den 
Pull-Ups nicht möglich sein.

von Florian (Gast)


Lesenswert?

Ich erwarte eigentlich, wenn das Programm noch nicht läuft, dass durch 
den Pull-Up die Leitungen auf High sind.

Im Datenblatt zu dem Sensor steht ja, es sollen Pull-Ups verwendet 
werden. Das komische ist einfach, dass es nur ab und zu auftritt und 
genau dann, wenn ich kurz vor Programmstart ein Low auf der SDA Leitung 
messe. Also iwas muss den Kanal ja runterziehen.

von TK (Gast)


Lesenswert?

Es gibt Bausteine, die können nach einem Reset schon mal den SDA auf L 
ziehen. Hierzu gibt es - gerade bei IIC-EEPROMs - schöne Codebeispiele, 
wie
man das revidieren kann. Vielleicht macht der Sensor ja auch so was.
Da hilft z.B. 10x clocken (wenn der SDA schon auf L liegt), andernfalls 
sollte man einfach mal ein STOP senden (wenn der SDA nicht auf L liegt). 
Dadurch bekommt man zu 99% einen freien Bus hin.

Gruß
TK

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.