Hello,
Wäre dann super, wenn Du mir mal 'nen Schups geben könntest:
Wie kann ich mit C den Gain-Amplifier pro Abfrage programmieren?siehe unten. 😉
Und da ich ja auch immer alle vier Werte benötige (Süd-Dach, West-Dach) muss ich den Dauermodus ausschalten und die Einzelabfrage benutzen.
Kann sein. So genau habe ich mir die Spezifikation vom ADS1115 noch nicht angesehen.
15 Minuten später:
Vielleicht war der Schups auch eben schon da. Wenn Du so überzeugt etwas schreibst, muss man meistens einfach nochmal lesen ;-)
Nun, ich bin nicht Dr. Allwissend, aber in dem Bereich fühle ich mich schon relativ sicher.
Ich vermute jetzt mal, dass dies die Stelle ist, entsprechend der Tabelle darüber "Der ADS1115 besitzt drei Register":
buf[0] = 1; buf[1] = 0xc3; buf[2] = 0x85; if (write(fd, buf, 3) != 3) { perror("Write to register 1"); exit(-1); }
Sag mal "Ja".
Ja! Wobei buf[0], buf[1] und buf[2] nicht die drei Register repräsentieren, sondern buf[0] (1 Byte) das Register auswählt, und buf[1] und buf[2] (2 Byte, also 16 bit) ist der Inhalt, der in das ausgewählte Register geschrieben wird.
Habe ich inzwischen verstanden. Da wird der Request-Response-Zyklus des I²C-Protokolls des Chips durchlaufen.
Ich bin zuerst über die Registerbreite gestolpert. Da es aber zwei Schritte sind, ist es klar geworden.
Die Registertypen könnte man fürs Schreiben und Lesen sicher auch als varianten Datentyp definieren? Das könnte dann ggf. das Umrechnen des Ergebnisses ersparen. Muss ich nochmal drüber nachsinnen, wegen LSB , MSB, Intel-Notation aka bigendian, littleendian, ...
Glück Auf
Tom vom Berg
Es gibt nichts Gutes, außer man tut es!
Das Leben selbst ist der Sinn.