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


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
von Ray (Gast)


Angehängte Dateien:

Bewertung
0 lesenswert
nicht 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)


Bewertung
0 lesenswert
nicht 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)


Bewertung
-1 lesenswert
nicht 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)


Bewertung
0 lesenswert
nicht 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)


Bewertung
0 lesenswert
nicht 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)


Bewertung
0 lesenswert
nicht 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. (souleye) Benutzerseite


Bewertung
0 lesenswert
nicht 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.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.