It seems OK except "// get data from X channel and fire off Y channel
conversion".
I found no method to fire off.
I use tmote sky
OS: tinyos 1.1.15
> Date: Thu, 13 Sep 2007 11:14:00 -0600> From: [EMAIL PROTECTED]> To: [EMAIL
> PROTECTED]> CC: [email protected]> Subject: Re:
> [Tinyos-help] how to get 3 ADC Port value from Tmote sky> > I think what you
> need to do is have separate names for each ADC 'channel'> and call their
> getData()'s in sequence, something like this:> > in the Config file:> >
> ProjectOtherM.ADCx -> ADCC.ADC[TOS_ADC_SENSORX_PORT];> ProjectOtherM.ADCy ->
> ADCC.ADC[TOS_ADC_SENSORY_PORT];> ProjectOtherM.ADCz ->
> ADCC.ADC[TOS_ADC_SENSORZ_PORT];> > (I'm not sure about your
> ASSOCIATE_ADC_CHANNEL() stuff, on micaX's> under T1 I simply use the channel
> number. Is this perhaps T2, or> else I'm still unfamiliar with Tmote
> specifics...?)> > in the code:> > after startup or in your timer.fired():> >
> call ADCx.getData();> > Then chain the gets in the individual Ready()
> methods:> > // get data from X channel and fire off Y channel conversion>
> async event result_t ADCx.dataReady( uint16_t data )> {> ...> call
> ADCy.getData();> return SUCCESS;> }> > > MS> > Chen Bleed wrote:> > I want to
> get three value from tmote sky.I use 3-axis accelerator > > sensor, and I
> need the X, Y, Z Output.> > I'm unable to get three values at one time, so i
> try to get one value > > at one time, then get three times to be a cycle.> >
> (If anyone get some solutione like get three values at one time, please > >
> tell my how to do.)> > This program seems to get only one value.Please help
> me to solve this > > problem.> > > > ***************** IntMsg.h
> *****************> > typedef struct IntMsg {> > uint16_t val;> > //uint16_t
> src;> > uint16_t testval;> > //uint16_t testval2;> > //uint16_t testval3;> >
> } IntMsg;> > > > enum {> > AM_INTMSG = 153> > };> > > > > > *****************
> SensorX.h *****************> > enum> > {> > TOS_ADC_SENSORX_PORT =
> unique("ADCPort"),> > > > TOSH_ACTUAL_ADC_SENSORX_PORT =
> ASSOCIATE_ADC_CHANNEL(> > /* INPUT_CHANNEL_A3,*/> > INPUT_CHANNEL_A2,> >
> REFERENCE_VREFplus_AVss,> > REFVOLT_LEVEL_1_5> > ),> > };> > > > > >
> ***************** SensorY.h *****************> > enum> > {> >
> TOS_ADC_SENSORY_PORT = unique("ADCPort"),> > > > TOSH_ACTUAL_ADC_SENSORY_PORT
> = ASSOCIATE_ADC_CHANNEL(> > /* INPUT_CHANNEL_A1, */> > INPUT_CHANNEL_A0,> >
> REFERENCE_VREFplus_AVss,> > REFVOLT_LEVEL_1_5> > ),> > };> > > > > >
> ***************** SensorZ.h *****************> > enum> > {> >
> TOS_ADC_SENSORZ_PORT = unique("ADCPort"),> > > > TOSH_ACTUAL_ADC_SENSORZ_PORT
> = ASSOCIATE_ADC_CHANNEL(> > /* INPUT_CHANNEL_A2,*/> > INPUT_CHANNEL_A1,> >
> REFERENCE_VREFplus_AVss,> > REFVOLT_LEVEL_1_5> > ),> > };> > > >
> ***************** ProjectOther.nc *****************> > includes IntMsg;> >
> includes SensorX;> > includes SensorY;> > includes SensorZ;> > > >
> configuration ProjectOther {> > > > }> > > > implementation> > {> >
> components Main, ProjectOtherM, TimerC, LedsC, ADCC, GenericComm as Comm;> >
> > > Main.StdControl -> ProjectOtherM.StdControl;> > ProjectOtherM.Timer ->
> TimerC.Timer[unique("Timer")];> > Main.StdControl -> TimerC.StdControl;> >
> ProjectOtherM.Leds -> LedsC.Leds;> > ProjectOtherM.SendMsg ->
> Comm.SendMsg[AM_INTMSG];> > ProjectOtherM.SubControl -> Comm.Control;> >
> ProjectOtherM.ADC -> ADCC.ADC[TOS_ADC_SENSORX_PORT];> > ProjectOtherM.ADC ->
> ADCC.ADC[TOS_ADC_SENSORY_PORT];> > ProjectOtherM.ADC ->
> ADCC.ADC[TOS_ADC_SENSORZ_PORT];> > ProjectOtherM.ADCControl -> ADCC;> > > >
> }> > > > ***************** ProjectOtherM.nc *****************> > includes
> IntMsg;> > includes SensorX;> > includes SensorY;> > includes SensorZ;> > > >
> module ProjectOtherM {> > provides {> > interface StdControl;> > interface
> IntOutput;> > }> > uses {> > interface StdControl as SubControl;> > interface
> SendMsg;> > interface Timer;> > interface Leds;> > interface ADC;> >
> interface ADCControl;> > }> > }> > > > implementation {> > int state;> > bool
> pending, flag_y, flag_g, flag_r;> > TOS_Msg msg_data;> > uint16_t ADCval;> >
> > > void readIRSensor();> > task void chooseADCChannel();> > > > /* interface
> StdControl */> > command result_t StdControl.init() {> > atomic ADCval = 0;>
> > atomic state = 1;> > pending = FALSE;> > call Leds.init();> > call
> Leds.redOff();> > call Leds.yellowOff();> > call Leds.greenOff();> > call
> ADCControl.init();> > > > return call SubControl.init();> > }> > > > command
> result_t StdControl.start() {> > call Timer.start(TIMER_REPEAT, 1000);> >
> return call SubControl.start();> > }> > > > command result_t
> StdControl.stop() {> > return call SubControl.stop();> > }> > > > /*
> interface IntOutput */> > command result_t IntOutput.output(uint16_t value)
> {> > IntMsg *message = (IntMsg *)msg_data.data;> > > > if(!pending)> > {> >
> pending = TRUE; > > readIRSensor(); > > atomic {> > message->val = ADCval;> >
> /*message->src = TOS_LOCAL_ADDRESS;*/> > if(!(state%3)) message->testval =
> 0x0099;> > else if((state%3)==1) message->testval = 0x0088;> > else
> message->testval = 0x0077;> > }> > > > if (call SendMsg.send(0x0111,
> sizeof(IntMsg), &msg_data))> > return SUCCESS;> > > > pending = FALSE;> > }>
> > return FAIL;> > }> > /* interface ADC */> > void readIRSensor(){> > call
> Leds.greenToggle();> > call ADC.getData();> > }> > async event result_t
> ADC.dataReady( uint16_t data ) {> > ADCval = data;> > post
> chooseADCChannel();> > return SUCCESS;> > }> > > > task void
> chooseADCChannel()> > {> > if(!(state%3)) call ADCControl.bindPort(
> TOS_ADC_SENSORX_PORT, > > TOSH_ACTUAL_ADC_SENSORX_PORT );> > else
> if((state%3)==1)call ADCControl.bindPort( > > TOS_ADC_SENSORY_PORT,
> TOSH_ACTUAL_ADC_SENSORY_PORT );> > else call ADCControl.bindPort(
> TOS_ADC_SENSORZ_PORT, > > TOSH_ACTUAL_ADC_SENSORZ_PORT );> > > > }> > > > /*
> interface SendMsg */> > event result_t SendMsg.sendDone(TOS_MsgPtr msg,
> result_t success) {> > if (pending && msg == &msg_data)> > {> > pending =
> FALSE;> > if(success == 0) atomic state--;> > }> > return SUCCESS;> > }> > >
> > /* interface Timer */> > event result_t Timer.fired() {> > if (call
> IntOutput.output(state))> > atomic state++;> >
> dbg(DBG_USR1,"state=%i\n",state);> > dbg(DBG_USR1,"ADCval=%i\n",ADCval);> >
> return SUCCESS;> > }> > }> >
> ------------------------------------------------------------------------> > 2
> GB 超大容量 、創新便捷、安全防護垃圾郵件和病毒 — 立即升級 Windows Live > > Hotmail?
> <http://mail.live.com >> > > > > >
> ------------------------------------------------------------------------> > >
> > _______________________________________________> > Tinyos-help mailing
> list> > [email protected]> >
> https://www.millennium.berkeley.edu/cgi-bin/mailman/listinfo/tinyos-help> >
> -- > Platform: WinXP/Cygwin> TinyOS version: 1.x, Boomerang> Programmer:
> MIB510> Device(s): Mica2, MicaZ, Tmote> Sensor board: homebrew>
_________________________________________________________________
聰明搜尋和瀏覽網路的免費工具列 — MSN 搜尋工具列
http://toolbar.live.com/_______________________________________________
Tinyos-help mailing list
[email protected]
https://www.millennium.berkeley.edu/cgi-bin/mailman/listinfo/tinyos-help