[Tinyos-devel] Re: I2C and SPI sharing

Vlado Handziski vlado.handziski at gmail.com
Thu Oct 12 12:32:42 PDT 2006


No, I don't have an idea what can be wrong. It definitely sounded as USART
config problem in the original mail. As for the example below, I don't see
how it correlates with the original problem. SerialActiveMessageC is on
USART1 and is not sharing the bus with the radio. Plus, I don't see any
requests to the arbiter  for the Uart, just for the I2C.

Vlado

On 10/12/06, Max CORTIANA <max.cortiana at st.com> wrote:
>
> Here the Minimal Code:
> I2C is done, while nothing is sent to CC2420 over SPI
>
> Here's the Module. Wiring is over.
>
> module I2Capp
> {
>   uses interface I2CPacket<TI2CBasicAddr> as I2CBasicRegister;
>   uses interface Boot;
>   uses interface HplMsp430GeneralIO as HplMsp430GeneralIOADC;
>   uses interface HplMsp430GeneralIO as HplMsp430GeneralIOInterrupt;
>   uses interface Leds;
>   uses interface Resource;
>
>   uses interface Packet as UartPacket;
>   uses interface AMSend as UartSend;
>   uses interface SplitControl as UartControl;
> }
>
> implementation
> {
>   uint8_t buffer[10];
>   message_t myMsg;
>   message_t pMsg;
>
>   task void test(){
>     buffer[0] = 0x00;
>     if (call I2CBasicRegister.write(I2C_START|I2C_STOP, 0x1D, 1,
> &buffer[0]) != SUCCESS){
>       post test();
>     }
>     return;
>   }
>
>   event void Boot.booted()
>   {
>     call HplMsp430GeneralIOADC.makeInput();
>     call HplMsp430GeneralIOInterrupt.makeInput();
>     call UartControl.start();
>   }
>
>   async event void I2CBasicRegister.writeDone(error_t error, uint16_t
> addr, uint8_t length, uint8_t *data) {
>     call Resource.release();
>     return;
>   }
>
>   async event void I2CBasicRegister.readDone(error_t error, uint16_t
> addr, uint8_t length, uint8_t *data){
>     return;
>   }
>
>   task void sendTask(){
>     if (call UartSend.send(AM_BROADCAST_ADDR, &pMsg, sizeof(pMsg)) !=
> SUCCESS) {
>       post sendTask();
>     }
>     return;
>   }
>
>   event void Resource.granted(){
>     post test();
>     post sendTask();
>     return;
>   }
>
>   event void UartControl.startDone(error_t error) {
>     call Resource.request();
>   }
>
>   event void UartControl.stopDone(error_t error){
>     return;
>   }
>
>   event void UartSend.sendDone(message_t *msg, error_t error){
>   }
>
> }
>
>
>
> --------------------------------------------------------------------------------------------------------------------------------
> Wiring:
>
> #include "I2C.h"
> #include "oscilloscope.h"
>
> configuration I2CappC
> {
> }
> implementation
> {
>   components MainC, I2Capp, LedsC;
>
>   I2Capp.Boot -> MainC.Boot;
>
>   components HplMsp430GeneralIOC;
>   I2Capp.HplMsp430GeneralIOADC -> HplMsp430GeneralIOC.ADC3;
>   I2Capp.HplMsp430GeneralIOInterrupt -> HplMsp430GeneralIOC.Port20;
>   I2Capp.Leds -> LedsC;
>
>   components new Msp430I2CC();
>   I2Capp.I2CBasicRegister->Msp430I2CC;
>   I2Capp.Resource -> Msp430I2CC;
>
>   //components SerialActiveMessageC as Message;
>   components ActiveMessageC as Message;
>   I2Capp.UartControl -> Message;
>   I2Capp.UartPacket -> Message.Packet;
>   I2Capp.UartSend -> Message.AMSend[AM_OSCILLOSCOPE];
> }
>
>
>
>
> Jonathan Hui wrote:
> > Where are you making this change?
> >
> > It looks like it's either a problem with configuring the SPI or the
> > arbiter, which signals events to configure the SPI.
> >
> > Just to confirm, are you seeing that exact order of events with
> > setModeSpi() occurring between 2 and 3? If so, it's probably not the
> > arbiter itself.
> >
> > The code to configure/unconfigure the SPI has also changed somewhat
> > recently. Though I don't see anything obious in the code. Vlado or
> > Philipp, do you have any ideas?
> >
> > A few additional questions:
> > - Does SpiByte.write() always fail after using the I2C for the first
> > time? Or after some number of I2C request()/release() cycles?
> > - Does it still fail if you simply request()/release() the I2C
> > resource but don't actually send any I2C packets in between?
> > - Can you send minimal code that reproduces the problem?
> >
>
> _______________________________________________
> Tinyos-devel mailing list
> Tinyos-devel at Millennium.Berkeley.EDU
> https://mail.millennium.berkeley.edu/cgi-bin/mailman/listinfo/tinyos-devel
>
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://mail.millennium.berkeley.edu/pipermail/tinyos-devel/attachments/20061012/07f9bd4e/attachment.html


More information about the Tinyos-devel mailing list