Hallo zusammen,
ich verwende zur Sensorabfrage den I2C-Bus. Master ist ein Atmega328 auf
5V, die Sensoren (1x MPU6050, 2x SI1133) haben 3.3V. Level Shifter ist
ein PCA9515A, welcher auch funktioniert. Pull-Up ist je ein 10k
Widerstand (Fehlerquelle?).
Allerdings kann ich keine Adresse der Sensoren erreichen. Und langsam
verzweifle ich.
Eine Idee habe ich noch. Die angehängten Verläufe sind je SDA und SCL
des I2C nach dem PCA9515A, also 3.3V high.
Aber ist es normal das sie so abgerundet aussehen? Könnte das vielleicht
mein Problem sein?
Es wirkt irgendwie als würde da ein Kondensator was glätten oder so.
Oder liegt es an den Widerständen?
Danke für eure Hilfe.
Grüße,
Niine
Niine schrieb:> Aber ist es normal das sie so abgerundet aussehen? Könnte das vielleicht> mein Problem sein?
Das kommt durch die 10k Widerstände. Der "glättende Kondensator" ist die
Summe der Pin-Kapazitäten der Chips. Wenn es so rund aussieht, sollte
man mit der Frequenz deutlich runtergehen.
Der Masse Kontakt des Scopes ist Mist, die Überschwinger werden viel zu
stark angezeigt.
Den level Shifter hättest Du Dir schenken können - einfach die
Buswiderstände auf 3,3V legen, fertich. Ja, das ist etwas knapp für den
Mega - funktioniert aber.
Jim M. schrieb:> Den level Shifter hättest Du Dir schenken können - einfach die> Buswiderstände auf 3,3V legen, fertich. Ja, das ist etwas knapp für den> Mega - funktioniert aber.
Es verschärft aber die Situation bei relativ hoher Buskapazität
erheblivh.
A. K. schrieb:> Zu viel. Wie lang ist die Leitung?
Auf zwei kleine Platinen verteilt. Ich würde insgesamt vll so 10-15 cm
schätzen.
Jim M. schrieb:> Das kommt durch die 10k Widerstände. Der "glättende Kondensator" ist die> Summe der Pin-Kapazitäten der Chips. Wenn es so rund aussieht, sollte> man mit der Frequenz deutlich runtergehen.
Also tausche ich auf 4k7 Widerstände und reduzier die Frequenz zum
Testen erstmal auf 10kHz?
> Den level Shifter hättest Du Dir schenken können - einfach die> Buswiderstände auf 3,3V legen, fertich. Ja, das ist etwas knapp für den> Mega - funktioniert aber.
Das wäre dann meine letzte Option, wenn es nie geht :-)
Viele Grüße,
Niine
Also ich habe jetzt die Widerstände durch 4k3 getauscht und bekomme
jetzt bei 100kHz diese Kurven (siehe Anhang).
Aber es gibt immernoch kein Sensor sein Acknowledge.
Ist die Qualität so ausreichend der Pegel, oder ist das immernoch der
Grund?
Vielen Dank!
Niine
Um etwas zum Protokoll zu sagen müsste man allerdings beide Signale
synchron auf einem Bild sehen. Und um etwas zum Code zu sagen, müsste
man den Code sehen.
Schuss ins Blaue: Die I2C-Adresse besteht aus den oberen 7 Bits des
Adressbytes. Die Verschiebung um 1 Bit führt gelegentlich zu Verwirrung,
weil das Adressbyte 0x40/0x41 für die I2C-Adresse 0x20 steht. Mancher
I2C-Code will diese Adresse als dann 0x20 haben, mancher als 0x40, je
nach Laune des Entwicklers.
Niine schrieb:> Ist die Qualität so ausreichend der Pegel, oder ist das immernoch der> Grund?
Nein, muss so gehen - zumindest auf der 3V3-Seite. Sehen SDA und SCL
auch auf der 5V-Seite so aus?
Wenn ja, musst du in der SW suchen ...
Tipp: Handling der Adressen, 7Bit links ausgerichtet, das LSB ist R/W.
Ich habe eben endlich eine Antwort (zumindest vom MPU6050) erhalten, was
dann ja auch die ordentliche Protokollverwendung bestätigt.
Problem war:
Anscheinend war die Lötverbindung nicht optimal. Hab vorsichtig alle
Seiten nochmal gelötet. Und nun geht es erstmal.
Endlich kann ich weiterarbeiten :-)
Danke an euch alle für eure Hilfe!!
Vor allem die Signalauswertung und die Widerstandsänderung hat mir sehr
geholfen.
Danke und einen schönen 2. Advent!
Niine
Niine schrieb:> Vor allem die Signalauswertung und die Widerstandsänderung hat mir sehr> geholfen.
Die Frequenzänderung hat mehr dazu beigetragen als die
Widerstandsänderung.