0x13D kann nicht sein. I2C Adressen haben 7 Bit, der Maximalwert ist also 0x7f. 0x13d braucht mehr als 8 Bit.
MfG Klebwax
0x13D kann nicht sein. I2C Adressen haben 7 Bit, der Maximalwert ist also 0x7f. 0x13d braucht mehr als 8 Bit.
MfG Klebwax
Strom fließt auch durch krumme Drähte !
Das ist ein Fehler in der Konvertierung....13(dec) ergibt D(hex).
Grüssle, Sly
..dem Inschenör ist nix zu schwör..
Hallo Frank!
Ich habe zwar den GY273, der hat auch den HMC5883L und hatte da mit und Arduino nie Probleme. Kann aber jetzt aus dem Stehgreif nicht auf ein Codebeispiel zu greiffen, weil es in den Tiefen der Datensicherung schlummert.
Ich hatte das Modul zu meiner aktiven QuadroKopter Zeit zu Testzwecken bei der Code Entwicklung verwendet.
Also wenn noch Probleme, schreibe mal ..ich bin aber erst mal einige Zeit im Urlaub
Gerhard
Arduinos, STK-500(AVR), EasyPIC-40, PICKIT 3 & MPLABX-IDE , Linux Mint
ich würde evtl auch noch mal die I2C Adresse(n) checken.
Probier mal mein Programm
Code:// -------------------------------------- // i2c_scanner // // This sketch tests the standard 7-bit addresses // Devices with higher bit address might not be seen properly. // #include <Wire.h> #define ESP_SDA 4 //GPIO4=D2 SDA ESP8266 default #define ESP_SCL 5 //GPIO5=D1 DCL ESP8266 default byte error, address; int nDevices; void setup() { // Wire.begin(ESP_SDA,ESP_SCL); // ESP8266 if not default Wire.begin(); // AVR, ARM, Leonardo, ESP8266 default Serial.begin(115200); while (!Serial); // Leonardo: wait for serial monitor Serial.println("\nI2C Scanner"); Serial.println("\nScanning..."); } void loop() { nDevices = 0; for(address = 0; address < 128; address++ ) { if (address%16 == 0) { Serial.println(); Serial.print( (address+1)/16); Serial.print(" "); } if(address==0 || address==127) { Serial.print("** "); continue; } Wire.beginTransmission(address); error = Wire.endTransmission(); if (error == 0) // no error, device found { if (address<16) Serial.print("0"); Serial.print(address,HEX); Serial.print(" "); nDevices++; } else if (error==4) // unknown error or conflicting { Serial.print("?? "); } else { Serial.print("-- "); // nothing found } } Serial.println(); Serial.print("found: "); Serial.print(nDevices); Serial.print(" devices \n"); delay(10000); }
Geändert von HaWe (20.07.2017 um 14:31 Uhr) Grund: typo
Hallo Frank,
ich würde mir da die Kommunikation auf dem I2C Bus mit Skop oder Softwareoszi über die PC Soundkarte ansehen. Da siehst du, was tatsächlich passiert, und wo du genauer hinsehen musst. Das Herumprobieren mit Software und Komponenten, ohne sich die Ergebnisse auf elektrischer Ebene anzusehen ist nur ein Stochern im Nebel. Kurz kann man das machen, aber wenn das nicht schnell hilft, sollte man ganz schnell damit wieder aufhören.
also, nee, da würde ich schon eher dann mit 2 Elektronenmikroskop-Manipulatoren die Elektronen in ihren Schalen in µC- und Sensor-Atomen einzeln setzen und löschen, um die Zustandsverteilungen quantenmechanisch zu evaluieren, allerdings ohne Doppelspalt dazwischen.
Oder alternativ vlt doch erstmal sicherheitshalber die i2c-Adressen per Software-i2c-Scanner checken, dann weiß man hinterher auch evtl besser wohin dann mit den einzelnen Elektronen.
Welche Widerstandswerte für die Pullups, welche Leitungslängen?
Hast Du die typischen Abblockkondensatoren (100n parallel zu 10..100µ) zwischen VCC und GND mal ausprobiert?
Kannst Du die Leitungen verkürzen? Kannst Du den Takt weiter verringern?
Auf'm Breadboard mit 400kHz halte ich für kniffelig.
Dem User HaWe sind - vermutlich wegen mangelndem Verständnis für die Hardware - nur mehr absurde Vergleiche eingefallen. Lediglich absurde Vergleiche zu posten finde ich äusserst unhöflich. Darum werde ich ihn bis auf Weiteres ignorieren - unabhängig von eventuell auftauchenden sachlichen Inhalten.
das ist gut, damit tust du uns beiden einen Gefallen.
...
den Sensor des OPs kenne ich zwar nicht, aber mein CMPS11 läuft mit 1m Leitung per 400kHz über ein Breadboard, und nur mit 2.2k oder altrnativ 4.7k Pullups (am Raspi, am Arduino Mega und am Due sogar nur mit den eingebauten), ohne jegliche Kondensatoren.
Auskunft, ob der Sensor aber überhaupt erkannt wird, kann aber sicherlich der Software-I2C-Scanner geben, und im Zweifel würde ich ntl schon zunächst mit 100kHz Bustakt anfangen, bis es dann endlich erst mal funktioniert.
Lesezeichen