einfügst, siehst du dann das "hallo" im SerialMonitor ?
Falls ja, kannst du dieses delay ja mal versuchsweise in loop mehr oder weniger weit hinten einbauen, bis du die Stelle findest, die deinen Arduino killt.
Also warum ich die Wire libary nicht benutze ist. Ich habe es auch schon ausprobiert, aber es hat nicht funktioniert. Bis ich gelesen habe das ich für diesen SM-Bus die I2Cmaster libary benötige.
Der eingebaute Chip ist ein PIC140000
Das mit der delay idee hat leider auch nicht funktioniert
Die ist nicht für die Arduino-IDE gedacht, sondern für eine AVR-Umgebung. Auch wenn der Arduino-Microcontroller von Atmel ist, genau wie die Chips, die der Bibliotheksautor verwendet, kannst Du nicht einfach so die Bibliothek transferieren und davon ausgehen, dass dann alles schon richtig gemacht wird.
Der Code wird von der IDE compiliert und globaler Code ausgeführt, bevor setup() aufgerufen wird.
Selber anpacken und lernen. Es sollte nicht so schwer sein, deinen Code anzupassen an die Wire lib.
Komplette Referenzen zur Arduino Wire Lib durch arbeiten und schaun, ob entsprechende Funktionsaufrufe 1:1 geändert werden können.
Bis ich gelesen habe das ich für diesen SM-Bus die I2Cmaster libary benötige.
Der SMbus ist eine Sub-Menge der I2C-Spezifikation, somit sollte die Wire-Bibliothek in den meisten Fällen damit zurecht kommen. Hast Du eine Dokumentation für Dein Device?
Könnte mir einer einen denkanstoss geben ?
Vereinfacht:
i2c_start_wait(I2C_WRITE) = Wire.beginTransaction
i2c_write = Wire.write
i2c_rep_start(I2C_READ) = Wire.endTransaction(false) + Wire.requestFrom
i2c_readXXX = Wire.read
i2c_stop brauchst Du nicht, das wird von den Wire-Methoden selbst erledigt.
Dies Übersetzungtabelle braucht noch etwas Hirnschmalz, um angewandt zu werden, also nicht einfach drauf los schiessen.
Das erste ist das Datenblatt des eingesetzten Microcontrollers, das zweite die SMbus Spezifikation. Eigentlich solltest Du eine Dokumentation bekommen haben, die beschreibt, wie sich die Firmware, die aufgespielt wurde, verhält. Wie konntest Du denn den geposteten Sketch erstellen? Woher wusstest Du z.B. die I2C-Adresse?
die Adresse habe ich direkt vom Hersteller bekommen. 0x16 aber die im oben genannten sketch, habe ich mittels i2C-scanner ausgelesen.Habe auch schon beide probiert (Ohne erfolg ).
Hier die mail vom Hersteller !
Dear Christian,
The battery communications is the same using the Microchip or Bq chipset.
The battery address is (Hex16) with the various registers detailed in the data sheet.
I have provided a link to a page on our website you may find useful.
Die Adresse 0x16 ist wahrscheinlich die 8-bit-Adresse, die Arduino-Bibliothek will aber eine 7-bit-Adresse haben. Hast Du's mit 0x0b (= 0x16 >> 1) schon mal versucht? Wenn ja, zeige uns den Sketch, den Du verwendet hast.