Zitat Zitat von Klebwax Beitrag anzeigen
Um aber mit der SW weiterzukommen, habe aus einem Beispiel-Code aus dem Netz ein Stück zusammengeschnitten, mit dem ich auf meinem Desktop-PC vermutlich das EEPROM meines Monitors auslesen kann. Wegen der Übersichtlichkeit sind die Adressen hardcoded und ein wirkliches Schreiben habe ich nicht probiert, um den Rechner nicht zu gefärden.

Code:
#include <linux/i2c-dev.h>
#include <stdio.h>
#include <fcntl.h>

#define NUMBYTES 20

int main() {

    int file;
    char filename[] = "/dev/i2c-0";
    char buffer[20];
    int i;
  
    file = open(filename, O_RDWR);
    if (file < 0) {
        perror("i2c-test open: ");
        return -1;
    }
/* You can do plain I2C transactions by using read(2) and write(2) calls.
 * You do not need to pass the address byte; instead, set it through
 * ioctl I2C_SLAVE before you try to access the device.
 */
    if (ioctl(file, I2C_SLAVE, 0x50) < 0) {
        perror("i2c-test set slave address: ");
        return -1;
    }
    buffer[0] = 0;    // set read pointer in I2C slave
    if(write(file, buffer, 1) != 1) {
        perror("i2c-test write: ");
        return -1;
    }
        if (read(file, buffer, NUMBYTES) != NUMBYTES) {
        perror("i2c-test read: ");
        return -1;
    } else {
        for(i = 0; i < NUMBYTES; i++) {
            printf("x ", (unsigned char)buffer[i]);
        }
        printf("\nok\n");
    }
    return 0;
}
Vielleicht hilfts

MfG Klebwax
Also das Programm funktioniert. Er ließt die Zellen aus.
Jetzt muss ich das nur mal mit einem Write kombinieren um zu sehen ob das auch klappt
Danke dafür!

Edit: Beim zweiten mal ausführen spuckt er aber nur 0xff aus. Wieso?