Zitat :
|
| /* SLA+R has been transmitted; NOT ACK has been received */ |
Wenn ein NACK zurückkommt, deutet das aber darauf hin, dass der Slave gar nicht angesprochen wurde.
Denn NACK ist HIGH-Potential, was über den Pullup-Widerstand anliegt. Das wird nicht aktiv durch den Slave erzeugt.
Es gibt halt nicht
das I²C-Protokoll für solche Geschichten.
Nach meinem Verständnis muss der Slave aber an dieser Stelle mit einem ACK antworten, um zu bestätigen, dass er seine Adresse gelesen hat.
Bei Slaves, von denen gelesen wird, ist es aber auch üblich, vor dem eigentlichen Lesen noch ein paar Daten zu schicken, z.B. eine Registeradresse oder eine Instruktion. Dann kommt ein zweites Start, ein sogenannte repeated start condition und man beginnt zu lesen.
Hast du mal geguckt, ob es für diesen Slave schon Code gibt?
Sind die Massen synchronisiert?
100nF-Blockkondensatoren verbaut?
Für mich klingt das immer noch nach fehlerhafter Hardware.
_________________