# SLEEP

SLEEP Example

Syntax: SLEEP Duration

## Function

Put the BASIC Stamp into low-power mode for a specified period of time.

- Duration is a variable/constant/expression* (1 - 65535) that specifies the duration of sleep. The unit of time for Duration is one second, though the BASIC Stamp rounds up to the nearest multiple of 2.3 seconds.

* Note: expressions are not allowed as arguments on the BS1.

## Quick Facts

| BS1 | BS2 | BS2e | BS2sx | BS2p | BS2pe | BS2px
Current Draw during Run | 1 mA | 3 mA | 25 mA | 60 mA | 40 mA | 15 mA | 55 mA
Current Draw during SLEEP | 25 µA | 50 µA | 200 µA | 500 µA | 350 µA | 36 µA | 450 µA
Related Commands | END , NAP | END, NAP, POLLWAIT
Accuracy of SLEEP | ±1% @ 75°F with stable power supply

## Explanation

SLEEP allows the BASIC Stamp to turn itself off, then turn back on after a programmed duration. The length of SLEEP can range from 2.3 seconds to slightly over 18 hours. Power consumption is reduced to the amount described in the table above, assuming no loads are being driven.

### Sleep Units vs Sleep Resolution

The units for Duration are 1 second, but the resolution of the SLEEP instruction is 2.304 seconds. SLEEP rounds the specified number of seconds up to the nearest multiple of 2.304. Because of this, Duration values below 10 are not very accurate.

When the Duration value is... | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10
Sleep time (in seconds) is approximately... | 2.304 | 2.304 | 4.608 | 4.608 | 6.912 | 6.912 | 9.216 | 9.216 | 9.216 | 11.52

To estimate the actual sleeping period for any Duration value, use this equation:

The open-bottom square brackets indicate the ceiling function, which essentially means "round up the quantity inside to the next integer."

For example, SLEEP 1 sleeps for 2.304 seconds:

And, SLEEP 10 sleeps for approximately 11.52 seconds:

### The Watchdog Timer Improves Sleep Accuracy Automatically

Pins retain their previous I/O directions during SLEEP. However, outputs are interrupted every 2.3 seconds during SLEEP due to the way the chip keeps time. The alarm clock that wakes the BASIC Stamp up is called the watchdog timer. The watchdog is a resistor/capacitor oscillator built into the interpreter chip. During SLEEP, the chip periodically wakes up and adjusts a counter to determine how long it has been asleep. If it isn't time to wake up, the chip "hits the snooze bar" and goes back to sleep.

To ensure accuracy of SLEEP intervals, the BASIC Stamp periodically compares the watchdog timer to the more-accurate resonator time base. It calculates a correction factor that it uses during SLEEP. As a result, longer SLEEP intervals are accurate to approximately ±1 percent.

During execution of power conserving commands (END, NAP, POLLWAIT, and SLEEP), current will occasionally be interrupted on I/O pins for about 18 ms durations (60 µs on the BS2pe). The reason is that the watchdog-timer reset that awakens the BASIC Stamp during these commands also causes all of the pins to switch to input mode for approximately 18 ms (60 µs on the BS2pe). When the interpreter firmware regains control of the processor, it restores the I/O direction dictated by your program.

If you plan to use END, NAP, POLLWAIT, or SLEEP in your programs, make sure that your loads can tolerate these power outages. The simplest solution is often to connect resistors high or low (to +5V or ground) as appropriate to ensure a continuing supply of current during the reset.

The SLEEP Example can be used to demonstrate the effects of this reset with an LED and resistor.

Go to Welcome page

BASIC Stamp Help Version 2.5.4

Copyright © Parallax Inc.

8/8/2012