Hi,
I am trying to use Resource interface to arbitrate between CC2420 and
another SPI slave device. I am doing as follows:
/* TestLedScreenC.nc
** Display messages received from the BaseStation on an SPI enabled LED
screen
*/
uses interface Timer<TMilli> as Timer1;
uses interface SpiPacket;
uses interface Resource as LedResource;
uint8_t buff[] = {0xfc, 0x60, 0xda, 0xf2, 0x66, 0xb6}; // Data to be
sent over the SPI bus
/* Request the resource every second */
event void Timer1.fired() {
call LedResource.request();
call Leds.led2Toggle();
}
/* If the resource is granted then send a Packet over the SPI bus */
event void LedResource.granted() {
call SpiPacket.send(buff, NULL, sizeof(buff));
}
/* Signal 'senddone' when the packet is successfully sent */
async event void SpiPacket.sendDone(uint8_t* txBuffer, uint8_t*
rxBuffer, uint16_t length, error_t ok ) {
if (ok == SUCCESS) {
call Leds.led0Toggle();
call LedResource.release();
}
}
enum {
CLIENT_ID = unique( "LedSpi.Resource" ),
};
components new TimerMilliC();
TestLedScreenC.Timer1 -> TimerMilliC;
components Atm128SpiC as LedPacket;
TestLedScreenC.SpiPacket -> LedPacket.SpiPacket;
TestLedScreenC.LedResource -> LedPacket.Resource[CLIENT_ID];
I add the above code to any application which is operating with the
CC2420 every few seconds, i.e the nodes are receiving data from the
BaseStation every few seonds, for example, TestDissemination. The
problem I am facing is that once I add the above code, it does not
appear to work correctly, the LEDS start toggling at undefined intervals
(indicating the senddone's being implemented erratically). I am
believing its an "arbitration" issue and I am not able to grab the SPI
bus at the correct time and it probably interferes with the CC2420
(which is connected via SPI as well). I understand that the SPI bus gets
released if the CC2420 is not active so I should be able to grab the SPI
bus every second for external device but it appears that I am not able
to send anything on Radio at all.
Am I missing something, do I need to do something more to arbitrate??
I hope I was able to explain the issues, if not, please mail back and I
will try to explain again whatever you do not understand.
My Setup - TinyOS-2.0.2, Cygwin, Texas Instruments CC2420DBK (has an
atmel and CC2420 connected via SPI and the SPI signal is also provided
on a 10-pin connector where I am trying to connect an 7-segment LED
screen).
Cheers,
Varun
_______________________________________________
Tinyos-help mailing list
[email protected]
https://www.millennium.berkeley.edu/cgi-bin/mailman/listinfo/tinyos-help