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