Hi,

I have experienced some strange behavior using the I2C interface on a Tmote sky - at present I am using TinyOS version 1.1.15 (not MoteIV Boomerang).

During heavy traffic, simultaneously on the I2C bus and on the radio, it is possible that an interrupt is missed (or is never generated?) after an I2C read/writePacket operation has returned SUCCESS from MSP430I2CM. I am wiring my application to I2CPacketC in tos/platform/telosb, therefore BusArbitration is taken care of. I am loosing some incoming radio traffic during the I2C transactions, however this is to be expected. The missing IRQ causes more of a problem, as the I2C component will not release the bus until the transaction completes (async event void HPLI2CInterrupt.fired() fires in MSP430I2CM).

The only possible cause I can see is that the offending I2C transaction occurs after a radio transaction has been partially started - the radio seems to request/release the USART 3 times for every send. I have not fully investigated how the CC2420 works with BusArbitration though, so this may be irrelevant.

I have implemented a workaround by starting a timer for every successful request in the I2C driver, and subsequently stopping it when the read/writePacketDone events are signalled. This works, but is obviously not ideal. If anyone has had similar experiences I'd like to hear from you.



Thanks,

Andrew



--
Andrew Jamieson
Research Engineer

Institute for System Level Integration
Alba Centre, Alba Campus, Livingston, EH54 7EG
Tel: +44 1506 469 300  Fax: +44 1506 469 301
http://www.sli-institute.ac.uk/
_______________________________________________
Tinyos-help mailing list
[email protected]
https://mail.millennium.berkeley.edu/cgi-bin/mailman/listinfo/tinyos-help

Reply via email to