[Tinyos-help] Problem with I2CPacket.read(...) in Atm128I2CMasterC for Iris and Mica platforms
Philip Levis
pal at cs.stanford.edu
Mon Jun 2 13:40:55 PDT 2008
On Jun 2, 2008, at 1:18 PM, Christopher Leung wrote:
> This is just a heads-up about the I2CPacket.read(i2c_flags_t flags,
> uint16_t addr, uint8_t length, uint8_t* data) function in the
> Atm128I2CMasterC component.
>
> To read n bytes from a slave, the parameter length must be set to (n
> +1). In the returned function, async event void readDone(error_t
> error, uint16_t addr, uint8_t length, uint8_t* data), the first
> bytes read will be in data[1]; second byte in data[2] and so on. The
> byte in data[0] will contain the slave address and the R/notW bit.
>
> I don't know if that was done on purpose as I couldn't find any of
> that mentionned in the comments.
>
> If someone does want to fix this, the source of the problem is in
> the Atm128I2CMasterPacketP component (I have version 1.7 2007/11/01
> 18:10:36 fredjiang Exp). More specifically, in the
> I2C.commandComplete() function. The problem is that the index value
> is incremented before the first byte is read from the slave.
> Therefore, at line 260 when the contents of the Two-Wire-Interface
> buffer is read and stored, the function is actually storing the byte
> it last sent. That is, it is reading the address and the R/notW bit
> it just wrote onto the I2C bus.
Can you send a patch to the list?
Phil
More information about the Tinyos-help
mailing list