I have a project that includes a WiFly (not on a shield) and the Mini Pro. After some reading, I've decided the best approach for power management is using the RTC on the WiFly to control waking up both. I'll use the Mini to put both units to sleep after transmission. I've figured out all the pieces of the puzzle (I think) other than getting the WiFLy to wake up the Mini. It seems the only acceptable way to wake the Mini from deep sleep is taking one of the interrupt pins low. If my assessment of the various wake up options on the WiFLy is correct, it will only drive pins high (GPIO8, GPIO4, sensor power, etc) or, better but still not quite workable, drive the RTS pin high on wakeup, then low when the unit is ready. But, the Arduino seems to need the interrupt pin driven high from the time it falls asleep until it goes low for wakeup. My tests of the momentary high then low arrangement on the WiFly RTS after the mini is asleep doesn't seem to work for wakeup. I assume there's an an easy way to get the effect I need with some sort of simple arrangement of components. Any ideas or a better general approach would be appreciated. Thanks!
I did the same thing with an XBee by connecting the On/Sleep pin (13) on the XBee to pin 2 on the Arduino. Then I configured the XBee to wake up every 10 minutes and go back to sleep after 20 seconds. I put the Arduino to sleep and had it wake on a change to pin 2.
Reading section 10 of the WiFly-RN-UM user manual it looks like you can use the WiFly GPIO pin 4 for the same purpose. It can be configured to go high after the WiFly wakes and associates with an access point. You could also use the Sensor Power pin instead if you don't want to wait for the WiFly to associate with the AP.
If your wakeup tests aren't working then you may have a configuration problem in the Arduino code. Post it here with the # button and we'll be able to help.
Interesting, I'll have to look at the code when I get home. If I recall correctly, there weren't any pins available on the WiFly that stayed high while it was asleep which, of course, is required in order for the Arduino to wake when it should: when a WiFly pin goes low after waking up.
I'm pretty sure you can have the Arduino wake on a high level interrupt in any sleep mode. It's the edge interrupt that only works in idle sleep mode. I just re-read the appropriate sections in the avr atmega328 spec to be sure.
I'll post my sleep code when I get access to it on Monday.
You are so right. I didn't bother to try that because I read in one of the sleep/wake example on this site that going low was the only wake option available when sleep state is deeper than IDLE. Well, CHANGE also works and the RTS pin from the WiFly is doing the job just great. Thanks for the advice!