No subject
Tue Jan 13 16:53:41 PST 2009
93.2ms not 100ms now.
Why is it incorrectly operate?
Our project must integrate sensor value with time. Thus exact conversion
period is important.
implementation
{
const msp430adc12_channel_config_t config = {
INPUT_CHANNEL_A0, REFERENCE_AVcc_AVss, REFVOLT_LEVEL_NONE,
SHT_SOURCE_SMCLK, SHT_CLOCK_DIV_1, SAMPLE_HOLD_64_CYCLES,
SAMPCON_SOURCE_SMCLK, SAMPCON_CLOCK_DIV_1
};
event void Boot.booted()
{
call Resource.request(); //from adc test
}
adc12memctl_t memctl[16];
uint8_t numMemctl;
#define ADCNUMS 5
#define NUM_SAMPLES 50
uint16_t buffer[NUM_SAMPLES];
event void Resource.granted()
{
error_t result;
uint8_t i;
for(i=0; i<ADCNUMS-1; i++){
memctl[i].inch=i+1; //List of additional channels
memctl[i].sref=REFERENCE_AVcc_AVss;
}
numMemctl = ADCNUMS - 1;//chs - 1
//1000000 MCLK / 500 sample per sec for all chs = 2000.
result = call MultiChannel.configure(&config, memctl, numMemctl, buffer,
NUM_SAMPLES, 2000);
if (result == SUCCESS){
call MultiChannel.getData();
}
else{
}
}
//This must be called every 100ms. 10hz.
//But now it is called 93.2ms every.!!! Why?
async event void MultiChannel.dataReady(uint16_t *buf, uint16_t
numSamples)
{
call Leds.led1Toggle(); //check by oscilloscope LED1 pin.
call MultiChannel.getData(); //call next conversion sequence...
}
best regards,
K.S.Lee
--0016e64f683ae8999a0462dbaef2
Content-Type: text/html; charset=ISO-8859-1
Content-Transfer-Encoding: quoted-printable
<span class=3D"Apple-style-span" style=3D"border-collapse: collapse; ">Hi a=
ll,<div><br></div><div>I am working with Msp430Adc12MultiChannel inter=
face.</div><div>But it has problem about conversion period.</div><div><br><=
/div><div>
It has 5 sensors which is assigned to from A0 to A4. Conversion period for =
each channel is </div><div>100hz and all channels have same configurat=
ion.</div><div>Thus a ADC into MSP430 will convert 500 per second.</div><di=
v>
To check ADC conversion complete timing I have used oscilloscope and LED1 p=
in.</div><div>From Below code , LED1 should toggle every 100ms. but it is t=
oggling at 93.2ms not 100ms now.</div><div><br></div><div>Why is it incorre=
ctly operate?</div>
<div>Our project must integrate sensor value with time. Thus exact conversi=
on period is important.</div><div><br></div><div><div>implementation</div><=
div>{ </div><div> </div><div> &nbs=
p;</div><div> const msp430adc12_channel_config_t config =3D {</=
div>
<div> </div><div> INPUT_CHANNEL_A0, REF=
ERENCE_AVcc_AVss, REFVOLT_LEVEL_NONE,</div><div> SHT_SOUR=
CE_SMCLK, SHT_CLOCK_DIV_1, SAMPLE_HOLD_64_CYCLES,</div><div> &n=
bsp;SAMPCON_SOURCE_SMCLK, SAMPCON_CLOCK_DIV_1 </div><div>
</div><div> };</div><div> </div><=
div> event void Boot.booted()</div><div> {</div><div>=
call Resource.request();<span style=3D"white-space: pre;=
"> </span>//from adc test</div><div> </div><div>&=
nbsp; }</div><div>
adc12memctl_t memctl[16];</div><div> &nb=
sp;uint8_t numMemctl;</div><div> #define ADCNUMS 5<span style=3D=
"white-space: pre; "> </span></div><div> #define NUM_SAMPLES 50<=
/div><div> uint16_t buffer[NUM_SAMPLES];</div><div> =
</div>
<div> event void Resource.granted()</div><div> {</div=
><div> error_t result;</div><div> uint8=
_t i;</div><div> </div><div> for(i=3D0;=
i<ADCNUMS-1; i++){</div><div> <span style=3D"white-sp=
ace: pre; "> </span>memctl[i].inch=3Di+1;<span style=3D"white-space: pre; "=
> </span>//List of additional channels</div>
<div> <span style=3D"white-space: pre; "> </span>memctl[i=
].sref=3DREFERENCE_AVcc_AVss;</div><div> }</div><div>&nbs=
p; <span style=3D"white-space: pre; "> </span></div><div> =
numMemctl =3D ADCNUMS - 1;//chs - 1</div><div> &nb=
sp;</div>
<div> //1000000 MCLK / 500 sample per sec for all chs =3D=
2000. </div><div> result =3D call MultiChannel.conf=
igure(&config, memctl, numMemctl, buffer, NUM_SAMPLES, 2000);</div><div=
> </div><div> &nb=
sp;if (result =3D=3D SUCCESS){</div>
<div> call MultiChannel.getData();</div><div> =
; }</div><div> else{</div><div> &=
nbsp;<span style=3D"white-space: pre; "> </span></div><div> &nb=
sp;}</div><div> </div><div> }</div><div>=
<br></div><div><span style=3D"white-space: pre; "> </span>//This must be ca=
lled every 100ms. 10hz.</div>
<div> //But now it is called 93.2ms every.!!! Why=
?</div><div> async event void MultiChannel.dataReady(uint16_t *b=
uf, uint16_t numSamples)</div><div> {</div><div><span style=3D"w=
hite-space: pre; "> </span>call Leds.led1Toggle();<span style=3D"white-spac=
e: pre; "> </span>//check by oscilloscope LED1 pin.</div>
<div><br></div><div><span style=3D"white-space: pre; "> </span>call MultiCh=
annel.getData();<span style=3D"white-space: pre; "> </span>//call next conv=
ersion sequence...</div><div> </div><div> &nb=
sp;}</div><div><br></div><div>
<br></div><div>best regards,</div><div>K.S.Lee</div></div></span>
--0016e64f683ae8999a0462dbaef2--
More information about the Tinyos-help
mailing list