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 <[EMAIL PROTECTED]> 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: [EMAIL PROTECTED] 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 > [email protected] > https://www.millennium.berkeley.edu/cgi-bin/mailman/listinfo/tinyos-help > > > > _______________________________________________ Tinyos-help mailing list [email protected] https://www.millennium.berkeley.edu/cgi-bin/mailman/listinfo/tinyos-help
