Meine bescheidene Ansicht nach einem Blick in den Pseudocode im DB des Sensors,...Dieses enthielt aber leider den Wert 0x80, der aber nirgends dokumentiert ist.
Der Wert 0x01, 0x02 oder 0x03 wurde erwartet.
...dass das oberste Bit in Status offensichtlich nicht verwendet wird. Stattdessen werden die beiden Flags im Statusregister einzeln als Bits ausmaskiert. Eine 0 gibt dabei an, dass Du auf das Read-, bzw. Write-Register zugreifen darfst (weil der Sensor da nicht gerade busy ist).Code:while (1) { // Read slave I²C status to see if the write buffer is ready. status = i2cm_read(I2C_AS72XX_SLAVE_STATUS_REG); if ((status & I2C_AS72XX_SLAVE_TX_VALID) == 0) // No inbound TX pending at slave. Okay to write now. break ; }
Vereinfacht:
0x81, 0x82, oder 0x83 sind also böse, da musst Du auf irgendwas warten.
0x80 ist gut, dann darfst Du weitermachen.
P.S.: Code als Zitat sieht grauselig aus. Über die "Erweitert"-Schaltfläche unten kannst Du ein Code-Tag einfügen.







Zitieren
Lesezeichen