Wenn du auf die Arduino IDE umsteigst, musst du die Programme neu schreiben oder zumindest anpassen. Ich weiß nicht ob man C Programme importieren kann.
Die Library kenne ich nicht, aber du könntest versuchen auf eine andere I2C Library umsteigen. Eine häufig verwendete Library ist die von Peter Fleury.
die "i2cmaster" Library von hier http://www.peterfleury.epizy.com/avr-software.html#libs
Wichtig ist das du Pullup Widerstände zwischen VCC (+5V) und SCL bzw VCC und SDA hast. Entweder du nimmst externe Widerstände oder schaltest die internen Pullup Widerstände ein.
Ohne Widerstände funktioniert der Bus nicht.
Zusätzlich ist noch der Ablauf wichtig.
Die Unterscheidung zwischen Lesen und Schreiben wird mit dem niederwertigsten Bit bei der Adresse angegeben. Eine "0" bedeutet das du schreiben willst, eine "1" bedeutet lesen.
https://www.roboter-bausatz.de/media...asheet-1-0.pdf
Wenn das dieses IC ist hast du die I2C Grundadresse "0D" => 0001101
Somit hast du als Schreibadresse 00011010 => 1A
und die Leseadresse 00011011 => 1B
Hier der Ablauf in Pseudocode.
Beim Schreiben:
Code:
I2C Start
I2C Schreibadresse
I2C Register (im Datenblatt des ICs nachschauen)
I2C Daten (Daten die du ins Register schreiben willst, z.B. Einstellungen)
I2C Stopp
Beim Lesen:
Code:
I2C Start
I2C Schreibadresse
I2C Register (Register aus dem du lesen willst)
I2C Start (bzw repeated start)
I2C Leseadresse
Daten in Variable lesen mit ACK => wenn weitere Daten gelesen werden sollen, Registeradresse wird automatisch um 1 erhöht
Daten in Variable lesen mit NACK => wenn keine weiteren Daten gelesen werden sollen
I2C Stopp
Du hast oben Makrodefinitionen angegeben (aus der Headerdatei). Dort steht z.B. "#define I2C_TX(ADDR) ((ADDR)<<1)".
In diesem Fall müsstest du bei "ADDR" die "0D" angeben und nicht "1A" bzw "1B", weil dieses Makro das Linksschieben übernimmt.
MfG Hannes
Lesezeichen