Forum: Mikrocontroller und Digitale Elektronik I2C Kommunikation Arduino Uno (Master) & PIC16F1787(Slave) funktioniert nicht mit Messsonde


von Ray (Gast)


Angehängte Dateien:

Lesenswert?

Hallo zusammen

Projektbeschrieb:
Ich habe eine I2C Kommunikation zwischen einem Arduino Uno (Master) & 
PIC16F1787 (Slave) aufgebaut, welche Daten vom Master an den Slave 
sendet (write) und Daten vom Slave per Anfrage vom Master an den Master 
sendet
(read).
Alles funktioniert einwandfrei, die Daten werden richtig übertragen & 
empfangen.

Abfolge Programm Master:
1.) Master scannt alle verfügbaren Slaves auf dem Bus
2.) Master sendet ein Datarequest an Slave (read)
3.) Master sendet Daten an den Slave (write)

Problem:
Sobald ich die I2C Kommunikation mit dem Oszilloskop messen will, 
funktioniert der I2C Bus nicht mehr. Beim Schritt 1 der Programmabfolge 
vom Master bleibt das Programm stehen. Wenn ich die Messsonden nicht mit 
dem I2C Bus verbinde funktioniert die Kommunikation jedoch einwandfrei 
ohne Probleme.

Angaben:
- Slave: PIC16F1787
- Master: Arduino Uno
- Oszilloskop: RTB2002 (RHODE&SCHWARZ)
- Messonden: PM9011/001  (1MOhm / 130pF)
- Pullup Widerstände SDA & SCL = 4.7kOhm
- VCC = 5V (Slave & Master)

Frage:
Was vermutet ihr, verursacht das Problem? Die Kapazität vom I2C Bus 
sollte 430pF (Laut Internet max Kapazität) ja nicht überschreiten (siehe 
Angaben Messsonden). Ich bin über jeden kleinen Hinweis froh. Bis jetzt 
habe ich noch nichts relevantes im Internet gefunden.

Ich bin für eure Hilfe & Zeit äußerst Dankbar.

Lg Ray

von Pittiplatsch (Gast)


Lesenswert?

Da wirst du wohl einige I2C-Treiber/Expander verbauen muessen.
Fuer jede
> PM9011/001  (1MOhm / 130pF)
einen Treiber/Expander.

Oder (c-hater-Semantik):
Dreh den verschissenen I2C-Takt runter.

> RTB2002 (RHODE&SCHWARZ)

Das Problem sitzt ueberwiegend vor dem Scope.

von Ray (Gast)


Lesenswert?

Vielen Dank für die rasche Antwort

Pittiplatsch schrieb:
> Dreh den verschissenen I2C-Takt runter.
Ich verwende eine Taktrate von 100kHz. Die Taktrate darf ich nicht 
ändern.

Pittiplatsch schrieb:
> Das Problem sitzt ueberwiegend vor dem Scope.
Ich bin mir nun sicher, dass die Kapazität das Problem ist. Sobald ich 
100pF Konensatoren von SDA & SCL auf GND dazuschalte, ergibt sich das 
gleiche Problem.

Ich versuchte auch schon mit einem kleineren Rp der Leitungskapazität 
entgegenzuwirken, jedoch ohne Erfolg.

Verwende ich als Master einen Raspberry Pi 3B, kann ich ohne Problem die 
Kommunikation am Oszilloskop aufzeigen + Funktion ist gewährleistet.
Das Problem muss also vom Arduino Uno hervorgerufen werden.

Pittiplatsch schrieb:
> Da wirst du wohl einige I2C-Treiber/Expander verbauen muessen.
> Fuer jede
>> PM9011/001  (1MOhm / 130pF)

Gibt es noch andere Lösungsansätze?
Könnte das Programm aus irgend einem Grund eine solche Auswirkung 
hervorrufen?

Lg & Danke

von Brain 2.0 (Gast)


Lesenswert?

Ray schrieb:
> Könnte das Programm aus irgend einem Grund eine solche Auswirkung
> hervorrufen?

Da wir deinen Sketch nicht kennen, können wir dazu nichts schreiben.

von PittyJ (Gast)


Lesenswert?

Auch wenn ein Datenbus gestört ist, dann sollte das Programm weiter 
laufen.

Bau ein paar Timeouts ein, und warte nicht ewig auf irgendwelche 
Flanken, die evtl nicht kommen.

von Klaus (Gast)


Lesenswert?

Ray schrieb:
> Ich bin mir nun sicher, dass die Kapazität das Problem ist. Sobald ich
> 100pF Konensatoren von SDA & SCL auf GND dazuschalte, ergibt sich das
> gleiche Problem.

Jedes I2C Device muß mindestens 400pf treiben können, siehe Spec.

Hat der Uno keine Pullups?

MfG Klaus

von Soul E. (Gast)


Lesenswert?

Besorg Dir 1:10 Tastköpfe. Oder wenn die umschaltbar sind, stell sie auf 
1:10. 1:1 ist nur für Gleichstrom und Audio brauchbar.

Tritt das Problem schon auf wenn Du nur die Massekabel der Tastköpfe 
anklemmst und die Spitzen noch gar nicht dranhältst?

Du hast die Massekabel ja angeklemmt, und zwar nahe bei der Messtelle? 
Nicht etwa eine Verbindung über ein langes Laborkabel?

Das was Du beim Messen siehst, ungeachtet ob es nun funktioniert oder 
nicht, sieht das wie ein vernünftiges I2C-Signal aus? Anstiegszeit, 
Pegel, etc.

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.