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

Reply via email to