Guten Tag, Ich habe einen Drucksensor den man über I2C auslesen kann. Jedoch bekomme ich das nicht richtig hin. Ich habe mein Programm und den Auszug aus dem Datenblatt als Anhang beigefügt. Kann mir jemand sagen was ich falsch mache ? Gruß Dennis
Wenn du irgendwen ernstlich ansprechen möchtest, dann würde ich zumindest verraten welchen Controller du verwendest und wie der Sensor genau heißt. Ist das was kundenspezifisches, was du nicht verraten darfst?
Oh ich stimmt das habe ich ja ganz vergessen. Also ich benutze einen RNmega2560 und programmiere mit Bascom.
Da kann ich dir leider nicht weiterhelfen. An deiner Stelle würde ich mal ein anderes i2c-Device anschließen, z.B. ein EEPROM. Rein als Gegencheck. Und vielleicht brauch der Bus auch noch seine Pull-Up R's?? Das BASCOM scheint die i2c-Funktionalität bereits in Firmware vorhanden zu haben. Schau dir halt die Fehlercodes an und berichte was denn nun genau nicht geht? Wo ist das Datenblatt des Sensors?
Deine BascomRoutine sieht ja auf den ersten Blick korrekt aus. Was ist denn die genaue Fehlererscheinung?
Hier zum gucken mal mein Code um ein i²c ADC abzufragen..
1 | Sub I2c_adc |
2 | I = 0 |
3 | I2cstart |
4 | I2cwbyte I2c_adress_w 'Schreibadresse adressieren |
5 | I2cwbyte I2c_init 'Init senden |
6 | I2cstop |
7 | ' Waitms 150 'laut DatenBlatt min 11SpS |
8 | Try2: |
9 | Waitms 1 |
10 | I2cstart |
11 | I2cwbyte I2c_adress_r 'Leseadresse adressieren |
12 | If Err = 1 Then Errorflag.1 = 1 'bei Adressierfehlern -> Errorflag 1 setzen |
13 | I2crbyte Msbyte , Ack 'Highbyte lesen |
14 | I2crbyte Lsbyte , Ack 'Lowbyte lesen |
15 | I2crbyte Configbyte , Nack 'Configbyte lesen |
16 | I2cstop |
17 | |
18 | If Configbyte.7 > 0 Then I = I + 1 'Counter Anzahl Abholversuche |
19 | If I > 100 Then Errorflag.2 = 1 'Mehr als 100 Versuche -> Errorflag 2 setzen |
20 | If Configbyte.7 > 0 Then Goto Try2 'Loop bis Daten abholbereit sind |
21 | If Configbyte.7 = 0 Then 'Cb.7 = 0 -> Daten abholbereit |
22 | Adc1 = Makeint(lsbyte , Msbyte) 'zusammensetzen der 2 Byte zu einem 16Bit-Wort |
23 | End If |
24 | End Sub I2c_adc |
Bist du dir sicher dass dein Config korrekt ist?
1 | 'Register auswählen |
2 | I2cstart |
3 | I2cwbyte Cmps_slaveid |
4 | I2cwbyte 2 |
5 | I2cstop |
Gruß Anselm
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.