Hey, Once the mote is sleeping, how can it be woken back up?? After shuting down the radio and all, can a simple timer be used to wake the mote back up??
THanks, Josh Quoting David Moss <[EMAIL PROTECTED]>: > I'm using 1.1.15, and have found similar to previous versions that your app > for mica(2|2dot|z) must wire in HPLPowerManagementM and then call > HPLPowerManagement.enable() at start before anything useful happens. > > Without doing this, the mote consumes somewhere around 2-3 mA while the > radio is disabled. With HPLPowerManagement.enable()'d at startup, the mote > consumes approximately 0.102 mA when the radio is disabled and everything is > quiet. > > For reference, using a 0.106% duty cycling CC2420 radio on a micaz, the mote > will last about 16 days on 1500 mAh batteries with no power management. > When you add in that power management, you get about 266 days on the same > 1500 mAh batteries. > > That's a big difference. I think HPLPowerManagement should be enabled by > default when compiling for the mica2/z's > > -david > > > > > -----Original Message----- > From: [EMAIL PROTECTED] > [mailto:[EMAIL PROTECTED] On Behalf Of Michael > Schippling > Sent: Thursday, April 27, 2006 12:20 PM > To: Harri Siirtola > Cc: tinyos-help@Millennium.Berkeley.EDU > Subject: Re: [Tinyos-help] Mica2, CPU Timed Sleep and Wakeup > > > wow...coulda fooled me about the automatic part...kewel. > Will have to try it sometime. > Which is the "current tree" however? > MS > > Harri Siirtola wrote: > > > > First, as far as I know, the Snooze component is deprecated. There are > > many improvements in the newer TInyOS versions that make things much > > more simple. For example, the CountSleepRadio app (previously in > > "contrib/ucb", now in the "apps" dir IIRC) is good for just testing that > > power saving works. It just sends an incremented integer over the air > > and goes to sleep. When a timer expires, the mote wakes up and sends the > > next one. There's another example, "apps/examples/TestSleep" which > > toggles a led between sleeping periods. > > > > Second, in the current tree, power saving is transparent to the user. > > When there are no interrupts (nor tasks, IIRC) pending, and only Timer 0 > > running, power saving kicks in. You can test it with the latest > > measuring apps, just study the "make/avr/route.extra" to see which > > commad line switches you must use to enable power saving. The > > "PowerManagement.AdjustPower()" call is deeper down the radio stack and > > is automatic once you compile the app correctly. > > > > Regards, > > > > Harri > > > > At 01:18 PM 4/26/2006 -0600, Michael Schippling wrote: > >> Sorry, I'm at a loss. I thought that one of the features of the motes > >> was the ability to sleep between samples to save power, but I never > >> paid attention to how/where/why this might work. I actually have it > >> on my list of things to do for a project that I never work on anymore... > >> > >> Assuming as usual that no one who actually knows how to do this will > >> answer your question...Perhaps there is something in the atmega spec > >> book about it? > >> > >> MS > >> > >> Gregory A. Moore wrote: > >>> Michael, > >>> Thank you for your response, but: > >>> SnoozeC only works for Mica motes, not Mica2. They have a slightly > >>> different processor so I am sure there are some dependency issues > >>> that don't quite fit. > >>> I have also looked at the OnOffApp which is supposed to essentially > >>> be the Snooze for the mica2, but it relies on a radio packet to start > >>> the mote again. > >>> If you have any other suggestions I am greatly appreciative. > >>> Thanks, > >>> Greg > >>> > >>>> There is a module tos\platform\mica\SnoozeC.nc that purports to > >>>> do the shutdown and timer wakeup. And a TestSnooze demo app. > >>>> I haven't tried them, YMMV... > >>>> MS > >>>> > >>>> > >>>> Gregory A. Moore wrote: > >>>>> Hi All, > >>>>> > >>>>> I have perused the archives about this pesky timed mica2 sleep > >>>>> problem and have not found > >>>>> any code snippets or anything of huge benifit. > >>>>> > >>>>> So I repeat the question: > >>>>> I am working with Mica2. > >>>>> I would like to put the mote's CPU to sleep for a set period of > >>>>> time and then have it > >>>>> awoken by some timer, not an incomming radio packet. > >>>>> > >>>>> I have done the power measurements with the use of > >>>>> HPPowerManagementM and I have not > >>>>> gotten any successful current readings that show me that the > >>>>> module is doing anything in > >>>>> the way of sleeping. > >>>>> > >>>>> The code from Berkely's study for P-TOSSIM shows us how to set the > >>>>> mote's CPU to sleep, > >>>>> but it does not show us how to wake it up with a timer. > >>>>> > >>>>> I write nesC well, but I am not an experienced embedded programmer > >>>>> so I am not quite sure > >>>>> how to program the awake tasks from the schematics. > >>>>> > >>>>> I hope there is someone out there who can help me with my woes. > >>>>> > >>>>> The code snippet I am using to put the mote to sleep is at the end > >>>>> of this email. > >>>>> > >>>>> Thank you in advance, > >>>>> > >>>>> Greg > >>>>> > >>>>> > >>>>> Successful code. thanks to Berkely folks, to put the mote to sleep: > >>>>> > >>>>> task void gotoSleep() { > >>>>> cli(); > >>>>> //fires the interupt pin to signal data recording > >>>>> //This is PIN5 on the connector, use probe to read signal > >>>>> TOSH_SET_INT1_PIN(); > >>>>> TOSH_CLR_INT1_PIN(); > >>>>> > >>>>> // set the PA_POW to 00h to ensure lowest possible leakage current > >>>>> call CC1000Control.SetRFPower(0x00); > >>>>> > >>>>> // power down the radio > >>>>> call CC1000StdControl.stop(); > >>>>> //call CC1000RadioIntM.StdControl.stop(); > >>>>> //call HPLPowerManagement.adjustPower() > >>>>> > >>>>> > >>>>> ///Code taken from Snooze.nc, this is current code used to > >>>>> //put the Mica2 into different low power states > >>>>> // save port state > >>>>> port[0] = inp(PORTA); nops(8); > >>>>> port[1] = inp(PORTB); nops(8); > >>>>> port[2] = inp(PORTC); nops(8); > >>>>> port[3] = inp(PORTD); nops(8); > >>>>> port[4] = inp(PORTE); nops(8); > >>>>> port[5] = inp(DDRA); nops(8); > >>>>> port[6] = inp(DDRB); nops(8); > >>>>> port[7] = inp(DDRD); nops(8); > >>>>> port[8] = inp(DDRE); nops(8); > >>>>> port[9] = inp(TCCR0); nops(8); > >>>>> // Disable TC0 interrupt and set timer/counter0 > >>>>> //to be asynchronous from the CPU > >>>>> // clock with a second external clock (32,768kHz) driving it. > >>>>> //Prescale to 32 Hz. > >>>>> cbi(TIMSK, OCIE0); nops(8); > >>>>> > >>>>> // set minimum power state > >>>>> // NOTE: this enables pull-ups; > >>>>> // -may be sensor board dependant > >>>>> // - (ex: Port C should be lo during sleep, not hi?) > >>>>> > >>>>> outp(0x00, DDRA); // input > >>>>> outp(0x01, DDRB); // input > >>>>> > >>>>> // changed 00 to ff because the impedance was high in the sleep > >>>>> // state, drawing 8mA for 5 sec before sleeping. Now it immediately > >>>>> // snoozes. > >>>>> outp(0xff, DDRC); // input > >>>>> outp(0x00, DDRD); // input > >>>>> outp(0x00, DDRE); // input > >>>>> > >>>>> outp(0xff, PORTA); // enable pull-ups > >>>>> outp(0xfe, PORTB); // enable pull-ups except for PB0 > >>>>> > >>>>> // changed the value of PORTC from ff to 0 because ff > >>>>> // sounds the alarm when the mote goes to sleep. > >>>>> outp(0x00, PORTC); // enable pull-ups > >>>>> outp(0xff, PORTD); // enable pull-ups > >>>>> > >>>>> cbi(ADCSRA, ADEN); // disable adc > >>>>> sbi(ACSR,ACD); // disable analog comparator > >>>>> > >>>>> //goes into sleep modes > >>>>> if (sm2 == 1){ > >>>>> sbi(MCUCR, SM2); nops(8); > >>>>> } > >>>>> if (sm1 == 1){ > >>>>> sbi(MCUCR, SM1); nops(8); > >>>>> } > >>>>> if (sm0 == 1){ > >>>>> sbi(MCUCR, SM0); nops(8); > >>>>> } > >>>>> > >>>>> //enable sleep, clocks stop > >>>>> sbi(MCUCR, SE); nops(8); > >>>>> > >>>>> //enable interupts (after wakingup - if you do) > >>>>> sei(); nops(8); > >>>>> //fires the red LED, and the pin > >>>>> TOSH_SET_INT1_PIN(); > >>>>> call Leds.redOn(); > >>>>> } > >>>>> > >>>>> > >>>>> > >>>>> > >>>>> > >>>>> _______________________________________________ > >>>>> Tinyos-help mailing list > >>>>> Tinyos-help@Millennium.Berkeley.EDU > >>>>> > https://mail.millennium.berkeley.edu/cgi-bin/mailman/listinfo/tinyos-help > >>>>> > >>> > >>> --Gregory Moore > >>> [EMAIL PROTECTED] > >> _______________________________________________ > >> Tinyos-help mailing list > >> Tinyos-help@Millennium.Berkeley.EDU > >> https://mail.millennium.berkeley.edu/cgi-bin/mailman/listinfo/tinyos-help > _______________________________________________ > Tinyos-help mailing list > Tinyos-help@Millennium.Berkeley.EDU > https://mail.millennium.berkeley.edu/cgi-bin/mailman/listinfo/tinyos-help > > > _______________________________________________ > Tinyos-help mailing list > Tinyos-help@Millennium.Berkeley.EDU > https://mail.millennium.berkeley.edu/cgi-bin/mailman/listinfo/tinyos-help > ------------------------------------------------- This mail sent through IMP: http://horde.org/imp/ _______________________________________________ Tinyos-help mailing list Tinyos-help@Millennium.Berkeley.EDU https://mail.millennium.berkeley.edu/cgi-bin/mailman/listinfo/tinyos-help