[Tinyos-devel] Fwd: [Tinyos-help] Bug report (was: ReadStream period off on a telosb?)

Jan Hauer hauer at tkn.tu-berlin.de
Thu Mar 6 04:09:46 PST 2008


yes, it's a bug: the upper 16bit of the "usPeriod" parameter are
currently truncated

>  What's the proper way to fix this? If there's no (nice) way of supporting
> 32-bit wide periods on the MSP430, change the ReadStream interface to be
> generic on both the sampled type and the width of the period and have the
> MSP430 provide a ReadStream<uint16_t, uint16_t>?

ReadStream is a standard TinyOS interface and I'm afraid we can't
change it just because it doesn't 100% fit the HAL of the msp430
adc... The usual approach here is "software simulation of the missing
hardware capabilities" (TEP2) - i.e. I will put a small ReadStream
wrapper on top of AdcP (which is wired only if there is a ReadStream
client) which then uses an Alarm<TMicro, uint32_t> to schedule
sampling in case usPeriod > 0xFFFF (I can probably copy some code from
the atmega implementation)

Jan

On Wed, Mar 5, 2008 at 11:22 PM, Kevin Klues <klueska at gmail.com> wrote:
> Forwarding to devel list.  Jan do you have anything to say about this?
>
>  Kevin
>
>
>
>  ---------- Forwarded message ----------
>  From: Sivan Toledo <stoledo at tau.ac.il>
>
>
> Date: Wed, Mar 5, 2008 at 6:28 AM
>  Subject: [Tinyos-help] Bug report (was: ReadStream period off on a telosb?)
>  To: TinyOS Help Mailing List <tinyos-help at millennium.berkeley.edu>,
>  Michiel Konstapel <m.konstapel at sownet.nl>
>
>
>  You're right, but fixing it didn't help so I dug deeper and found that
>   the ReadStream implementation on the MSP430 is broken.
>
>   The problem is that chips/msp430/adc12/AdcP represents the usecond
>   period as uint32_t, but its ResourceReadStream.granted event passes
>   the usecond argument to
>   Msp430Adc12SingleChannel.configureMultiple, which expects a uint16_t period.
>
>   So even if I set the usecond period correctly in my program to a large
>   value, it gets truncated in this function call. For some reason, GCC
>   does not complain.
>
>   The bug actually goes a bit deeper; it's not a simple matter of
>   changing the argument of  Msp430Adc12SingleChannel.configureMultiple
>   to uint32_t, because the argument is eventually used to directy set a
>   compare register, and the compare registers are 16 bits on the MSP430.
>   So there is no easy way to fix this except by using a virtual timer or
>   alarm. Not a good solution.
>
>   The bug does not affect me because I need a short period and was just
>   using the 1 second period as a sanity check, but it is there (and as
>   far as I could see, there was no warning about it anywhere).
>
>   Regards, Sivan
>
>   On 3/5/08, Michiel Konstapel <m.konstapel at sownet.nl> wrote:
>   >
>   >
>   >
>   > In C, integer constants are of type int, which on the MSP is 16 bits. I.e.,
>   > you're actually sampling every (1000000 & 0xFFFF) clock ticks (are those
>   > microseconds?). To specify a long integer (32 bit) constant, add an L to the
>   > number. You can also add a U to make it unsigned: read(1000000UL) should do
>   > the trick.
>   >
>   >  HTH,
>   >  Michiel
>   >
>   >
>   >  -----Original Message-----
>   >  From: tinyos-help-bounces at millennium.berkeley.edu on
>   > behalf of Sivan Toledo
>   >  Sent: Tue 3/4/2008 9:07 PM
>   >  To: TinyOS Help Mailing List
>   >  Subject: [Tinyos-help] ReadStream period off on a telosb?
>   >
>   >  I am trying to read from the TelosB ADC using the ReadStream interface
>   >  (wired to AdcReadStreamClientC), and it seems that when I set a large
>   >  period, for sanity checking, the actual sampling period is much
>   >  smaller. For example, if I call read(1000000) when the posted buffers
>   >  are of size 8, I get several buffers per second back, rather than 1
>   >  every 8 seconds.
>   >
>   >  Any idea why this is happening?
>   >
>   >  Thanks, Sivan
>   >  _______________________________________________
>   >  Tinyos-help mailing list
>   >  Tinyos-help at millennium.berkeley.edu
>   > https://www.millennium.berkeley.edu/cgi-bin/mailman/listinfo/tinyos-help
>   >
>   >
>   >
>   >
>   _______________________________________________
>   Tinyos-help mailing list
>   Tinyos-help at millennium.berkeley.edu
>   https://www.millennium.berkeley.edu/cgi-bin/mailman/listinfo/tinyos-help
>
>
>
>  --
>  ~Kevin
>  _______________________________________________
>  Tinyos-devel mailing list
>  Tinyos-devel at millennium.berkeley.edu
>  https://www.millennium.berkeley.edu/cgi-bin/mailman/listinfo/tinyos-devel
>


More information about the Tinyos-devel mailing list