mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Problem beim umschreiben BME680 Library auf onewire


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
Autor: zwanni (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Guten Morgen,

ich suche immer gute Sensoren für den Smarthome Bereich und jetzt gibt's 
ja den BME680 mit zusätzlichem Luftqualitätssensor.
Da mir I2C Sensoren nicht viel bringen habe ich schon den BME280 als 
onewire umgestrickt. Extra so gebaut, dass man alte DHT22 Gehäuse nutzen 
kann.
Leider ist die BME680 Library für mich etwas zu objektorientiert 
gestrickt. Die vom BME280 konnte ich noch selbst ganz gut umschreiben. 
Diesmal brauche ich etwas Hilfe.

Ich nutze die Adafruit Library, die so strukturiert ist:
Adafruit_BME680.cpp
Adafruit_BME680.h
bme680.c
bme680.h
bme680_defs.h

Die "bme680" Sourcen kommen diesmal scheinbar direkt von Bosch.

zunächst ist eine Struktur für den Sensor definiert, darin werden ein 
paar Einstellungen und Sensordaten hinterlegt, soweit kein Problem.
Auch darin enthalten sind aber Pointer zu den I2C schreib und 
lese-Funktionen und da wird's für mich kompliziert. Die 
Schreib-/Lesefunktionen selbst sind nicht in der Adafruit Klasse, 
deshalb muss ich einen Pointer auf mein Onewire Element übergeben.
Die Funktionen kennen aber den Datentyp Onewire scheinbar nicht, was ich 
nicht verstehe.

Definition der read/write Funktionen mit hinzugefügtem Onewire Pointer:
typedef int8_t (*bme680_com_fptr_t)(Onewire* onewire, uint8_t dev_id, uint8_t reg_addr, uint8_t *data, uint16_t len);


Beispielaufruf der Funktion auch mit hinzugefügtem Onewire:
gas_sensor->write(gas_sensor->onewire, gas_sensor->dev_id, BME680_MEM_PAGE_ADDR & BME680_SPI_WR_MSK, &reg, 1);


Die Funktion wird also aus dem struct aufgerufen und noch mit Daten aus 
dem struct gefüttert. Augenverdreh

Die Eigentliche Frage ist aber quasi warum die read write Funtkionen 
behaupten sie kennen den Datentyp onewire nicht?


Das ganze ist natürlich für jemand der das ganze nicht vorliegen hat nun 
auch nicht einfach zu verstehen, aber vielleicht hat trotzdem jemand 
eine Idee.


zwanni

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.