You know, I'm just not sure about that...
There are separate Tx&Rx lines, so it _should_ be possible
to do 56Kb in both directions simultaneously. But it never
occurred to me to look. Anybody know for sure?
I have been counting each message (send-command and recv-
reply in my tests) in coming up with my 100msg/sec ballpark.
I don't think TOSBase radio and UART interrupts are mutually
exclusive, so the relaying of messages should interleave fairly
transparently. Is your 21Kbps number for a total roundtrip?
Can you describe your test methodology?
In any case I should do some more testing on the 'Z's to
see if my speed estimates are more than misleading due
to the host-UART speed issue...
MS
Raghu Ganti wrote:
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] <mailto:[EMAIL PROTECTED]>>
Subject: Re: [Tinyos-help] Packet loss on Tmote (using TinyOS 1.x)
To: Cory Sharp <[EMAIL PROTECTED] <mailto:[EMAIL PROTECTED]>>
Cc: tinyos-help_list < [email protected]
<mailto:[email protected]>>
Message-ID: <[EMAIL PROTECTED]
<mailto:[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]>
> <mailto:[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>
<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>
<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
[email protected]
https://mail.millennium.berkeley.edu/cgi-bin/mailman/listinfo/tinyos-help