Also consider the fact that the TOSBase has to interleave the reception of the packet and the transmission on the serial port. This reduces your transmission rate further on the serial port. I had done experiments earlier to measure this and found about 21 Kbps was the max rate I could achieve without losing any packets.

Raghu
 

Message: 3
Date: Tue, 17 Oct 2006 10:31:23 -0600
From: Michael Schippling < [EMAIL PROTECTED]>
Subject: Re: [Tinyos-help] Packet loss on Tmote (using TinyOS 1.x)
To: Cory Sharp <[EMAIL PROTECTED]>
Cc: tinyos-help_list < tinyos-help@Millennium.Berkeley.EDU>
Message-ID: <[EMAIL PROTECTED]>
Content-Type: text/plain; charset=ISO-8859-1; format=flowed

huh, I hadn't considered that...good point. However...
at ~40 bytes (320 bits) per message, 100 messages is
32000 bits which _should_ still fit pretty easily
and I seem to remember pooping out around that rate.
Also I had the same-only-worse problem on the mica2,
needing a 20ms "retraction period" to minimize lost
messages. Has anyone actually measured the message
rate with a faster UART? Or between two micaz's
without UART overhead?

thx
MS

Cory Sharp wrote:
> It is packet loss at the TOSBase where the serial port operating at
> 56kbps cannot keep up with the radio operating up to 250kbps.  You could
> try chaning the UART baudrate:
> http://www.moteiv.com/community/Change_the_default_UART_baud_rate .
>
> Cory
>
> On 10/16/06, *harish prabhu* < [EMAIL PROTECTED]
> <mailto:[EMAIL PROTECTED]>> wrote:
>
>     Hi folks,
>
>       I find that on Tmotes (tinyos 1.x - latest CVS files for
>     CC2420RadioM.nc and CC2420RadioC.nc)
>       there is significant packet loss (while sending) under the
>     following conditions :
>
>       a) There is only one mote on the channel
>       b) Multiple packets are sent one after the other.
>       c) The packets are sent by posting a task in the send.SendDone of
>          the previous packet.The posted task calls Send.send.
>       d) The Radio does not return FAIL in the Send.sendDone
>
>       The packet loss rate increases with size of the packets.
>
>        I changed CntToRfm(Counter.nc <http://counter.nc/> ) to send 3
>     packets in a manner described above.
>        I also  hacked IntToRfmM.nc to send a packet of size 44
>     (including TOS header) - with dummy bytes
>        and changed the TOSH_DATA_LENGTH to 60.
>
>
>       I wonder if this is a bug in the CC2420 radio library.
>       Adding a delay after Send.sendDone seems to reduce the packet loss.
>
>       I think this is not a problem with TOSBase missing packets -
>     because when
>       I changed CntToRfm to send a packet every 20 ms, TOSBase still did
>     not seem to
>       be losing any packets.
>
>
>       Here is the TOSBase log:
>
>       SAPP: 1E 01 08 30 FF FF FF FF 04 7D 30 07 01 00 00 00 00 00 00 00
>     00 00 00 00 00 00 00 00 00 00 00 00
>     SAPP: 1E 01 08 31 FF FF FF FF 04 7D 31 07 01 00 00 00 00 00 00 00 00
>     00 00 00 00 00 00 00 00 00 00 00
>     SAPP: 1E 01 08 32 FF FF FF FF 04 7D 32 07 01 00 00 00 00 00 00 00 00
>     00 00 00 00 00 00 00 00 00 00 00
>     SAPP: 1E 01 08 33 FF FF FF FF 04 7D 33 07 01 00 00 00 00 00 00 00 00
>     00 00 00 00 00 00 00 00 00 00 00
>     SAPP: 1E 01 08 35 FF FF FF FF 04 7D 35 07 01 00 00 00 00 00 00 00 00
>     00 00 00 00 00 00 00 00 00 00 00
>     SAPP: 1E 01 08 37 FF FF FF FF 04 7D 37 07 01 00 00 00 00 00 00 00 00
>     00 00 00 00 00 00 00 00 00 00 00
>     SAPP: 1E 01 08 39 FF FF FF FF 04 7D 39 07 01 00 00 00 00 00 00 00 00
>     00 00 00 00 00 00 00 00 00 00 00
>     SAPP: 1E 01 08 3B FF FF FF FF 04 7D 3B 07 01 00 00 00 00 00 00 00 00
>     00 00 00 00 00 00 00 00 00 00 00
>     SAPP: 1E 01 08 3D FF FF FF FF 04 7D 3D 07 01 00 00 00 00 00 00 00 00
>     00 00 00 00 00 00 00 00 00 00 00
>     SAPP: 1E 01 08 3F FF FF FF FF 04 7D 3F 07 01 00 00 00 00 00 00 00 00
>     00 00 00 00 00 00 00 00 00 00 00
>     SAPP: 1E 01 08 40 FF FF FF FF 04 7D 40 07 01 00 00 00 00 00 00 00 00
>     00 00 00 00 00 00 00 00 00 00 00
>     SAPP: 1E 01 08 41 FF FF FF FF 04 7D 41 07 01 00 00 00 00 00 00 00 00
>     00 00 00 00 00 00 00 00 00 00 00
>     SAPP: 1E 01 08 42 FF FF FF FF 04 7D 42 07 01 00 00 00 00 00 00 00 00
>     00 00 00 00 00 00 00 00 00 00 00
>     SAPP: 1E 01 08 44 FF FF FF FF 04 7D 44 07 01 00 00 00 00 00 00 00 00
>     00 00 00 00 00 00 00 00 00 00 00
>     SAPP: 1E 01 08 45 FF FF FF FF 04 7D 45 07 01 00 00 00 00 00 00 00 00
>     00 00 00 00 00 00 00 00 00 00 00
>     SAPP: 1E 01 08 46 FF FF FF FF 04 7D 46 07 01 00 00 00 00 00 00 00 00
>     00 00 00 00 00 00 00 00 00 00 00
>     SAPP: 1E 01 08 47 FF FF FF FF 04 7D 47 07 01 00 00 00 00 00 00 00 00
>     00 00 00 00 00 00 00 00 00 00 00
>     SAPP: 1E 01 08 48 FF FF FF FF 04 7D 48 07 01 00 00 00 00 00 00 00 00
>     00 00 00 00 00 00 00 00 00 00 00
>     SAPP: 1E 01 08 49 FF FF FF FF 04 7D 49 07 01 00 00 00 00 00 00 00 00
>     00 00 00 00 00 00 00 00 00 00 00
>
>      The code for Counter.nc <http://counter.nc/> :
>
>      module Counter {
>       provides {
>         interface StdControl;
>       }
>       uses {
>         interface Timer;
>         interface IntOutput;
>       }
>     }
>     implementation {
>       int state;
>       uint8_t num;
>       command result_t StdControl.init()
>       {
>         state = 1;
>         atomic num = 0;
>         return SUCCESS;
>       }
>
>       command result_t StdControl.start ()
>       {
>         return call Timer.start (TIMER_REPEAT, 1000);
>       }
>
>       command result_t StdControl.stop()
>       {
>         return call Timer.stop();
>       }
>       task void intOutput()
>       {
>           if (call IntOutput.output(state))
>           state++;
>       }
>
>
>       event result_t Timer.fired()
>       {
>         post intOutput();
>     #if 0
>         if (call IntOutput.output(state))
>           state++;
>           dbg(DBG_TEMP|DBG_USR1, "Counter: Value is %i\n", (int)state);
>     #endif
>         return SUCCESS;
>       }
>
>       event result_t IntOutput.outputComplete(result_t success)
>       {
>         uint8_t temp;
>         if(success == 0) state --;
>
>         atomic temp = num;
>         if (temp < 3)
>         {
>             post intOutput();
>             atomic num++;
>         }
>         else
>         {
>             atomic num = 0;
>         }
>         return SUCCESS;
>       }
>     }
>
>
>
>     Regards,
>     Harish
>     _______________________________________________
_______________________________________________
Tinyos-help mailing list
Tinyos-help@Millennium.Berkeley.EDU
https://mail.millennium.berkeley.edu/cgi-bin/mailman/listinfo/tinyos-help

Reply via email to