@Dennis
Es ist natürlich schwer, einen Code zu analysieren, der nur aus Calls in eine unbekannte Library besteht.
Einiges kann man ahnen, anderes weniger.
I2C_start() und I2C_stop() dürften die entsprechenden Signale auf den Bus legen und I2C_write(xx) ein Byte senden. Aber was macht I2C_clock()? Die Clock auf einen Wert einstellen kann nicht sein, es gibt ja keinen Parameter und die Clock starten kann auch nicht sein, vor einem Start gibt es bei I2C keine Clock. Und was macht I2C_ack()? Ein ACK senden kann es nicht sein, das ACK kommt immer von dem, der gerade Daten empfangen hat. Und eine Abfrage, ob ein ACK empfangen wurde, kann es eigentlich auch nicht sein, dann würde ja irgendwas wie ein if im Code vorkommen.
Bevor das nicht wirklich geklärt ist, braucht man sich über Bitkombinationen keine Gedanken zu machen.
Hier mal kurz den Anfang einer I2C Übertragung:
MfG KlebwaxCode:Start erzeugen Adressbyte senden empfangenes ACK bzw NAK auswerten wenn NAK Slave antwortet nicht, Übertragung abbrechen Stop erzeugen wenn ACK weiter senden . .
Lesezeichen