Hi all,
i have trouble getting data from the temperature sensor on the MTS300 sensor
board in both tinyOS 1.x and 2.x.
I get values from all the other sensors, but a zero for temperature and i can't
figure out why. The code i used is
shown below:
TinyOS 1.x:
static void start()
{
call BattControl.start();
call Mic.gainAdjust(64); // Set the gain of the microphone. (refer to
Mic)
call MicControl.start();
call TempControl.start();
call PhotoControl.start();
}
event result_t Timer0.fired()
{
// . . .
start();
call ADCBATT.getData();
return SUCCESS;
}
/**
* Battery Ref or thermistor data ready
* @return Always returns <code>SUCCESS</code>
*/
async event result_t ADCBATT.dataReady(uint16_t data)
{
atomic dpack->datap3.vref = data;
//post battstop();
call BattControl.stop();
//call TempControl.start();
call Temperature.getData();
return SUCCESS;
}
/**
* Temperature ADC data ready
* Read and get next channel.
* @return Always returns <code>SUCCESS</code>
*/
async event result_t Temperature.dataReady(uint16_t data)
{
//if(data==0) {
atomic dpack->datap3.thermistor = data;
call TempControl.stop();
//call PhotoControl.start();
call Light.getData();
return SUCCESS;
}
/**
* Photocell ADC data ready
* Read and get next channel.
* @return Always returns <code>SUCCESS</code>
*/
async event result_t Light.dataReady(uint16_t data)
{
atomic dpack->datap3.light = data;
call PhotoControl.stop();
call MicADC.getData();
return SUCCESS;
}
/**
* MicroPhone ADC data ready
* send data packet
* @return Always returns <code>SUCCESS</code>
*/
async event result_t MicADC.dataReady(uint16_t data)
{
if(miccnt<50){
atomic miccnt=miccnt+1;
TOSH_uwait(1000);
if(val<data)
atomic val=data;
call MicADC.getData();
return SUCCESS;
}
else
atomic miccnt=0;
atomic dpack->datap3.mic = val;//data;
post Micstop();
val=0;
post sendDataMsg();
return SUCCESS;
}
TinyOS 2.x:
event void Timer0.fired()
{
if(!connected)
post sendInit();
else {
call Vref.read();
}
}
/**
* Battery Ref data ready
*/
event void Vref.readDone(error_t result, uint16_t data)
{
if(result==SUCCESS)
dpack->datap3.vref = data;
call Temp.read();
}
/**
* Temperature data ready
*/
event void Temp.readDone(error_t result, uint16_t data)
{
if(result==SUCCESS)
dpack->datap3.thermistor = data;
call Light.read();
}
/**
* Light data ready
*/
event void Light.readDone(error_t result, uint16_t data)
{
if(result==SUCCESS)
dpack->datap3.light = data;
call Microphone.read();
}
/**
* Microphone data ready
*/
event void Microphone.readDone(error_t result, uint16_t data)
{
if(result==SUCCESS)
dpack->datap3.mic = data;
post sendDataMsg();
}
what am i not doing, or what am i doing wrong ?
I would appreciate any help i can get.
thanks,
Edwin.
_______________________________________________
Tinyos-help mailing list
[email protected]
https://www.millennium.berkeley.edu/cgi-bin/mailman/listinfo/tinyos-help