![background image](http://html2.mh-extra.com/html/rabbit/2000/2000_user-manual_3110256175.webp)
User’s Manual
169
17. O
THER
R
ABBIT
S
OFTWARE
17.1 Power Management Support
The power consumption and speed of operation can be throttled up and down with rough
synchronism. This is done by changing the clock speed or the clock doubler. The range of
control is quite wide: the speed can vary by a factor of 16 when the main clock is driving
the processor. In addition, the main clock can be switched to the 32.768 kHz clock. In this
case, the slowdown is very dramatic, a factor of perhaps 500. In this ultra slow mode, each
clock takes about 30 µs, and a typical instruction takes 150 µs to execute. At this speed,
the periodic interrupt cannot operate because the interrupt routine would execute too
slowly to keep up with an interrupt every 16 clocks. Only about 3 instructions could be
executed between ticks.
A different set of rules applies in the ultra slow or “sleepy” mode. The Rabbit 2000 auto-
matically disables periodic interrupts when the clock mode is switched to 32 kHz or one of
the multiples of 32 kHz. This means that the periodic-interrupt hardware does not function
when running at any of these 32 kHz clock speeds simply because there are not enough
clock cycles available to service the interrupt. Hence virtual watchdogs (which depend on
the periodic interrupt)
cannot
be used in the sleepy mode. The user must set up an endless
loop to determine when to exit sleepy mode. A routine,
updateTimers()
, is provided to
update the system timer variables by directly reading the real-time clock and to hit the watch-
dog while in sleepy mode. If the user’s routine cannot get around the loop in the maximum
watchdog timer time-out time, the user should put several calls to
updateTimers()
in
the loop. The user should avoid indiscriminate direct access to the watchdog timer and
real-time clock. The least significant bits of the real-time clock cannot be read in ultra
slow mode because they count fast compared to the instruction execution time. To reduce
bus activity and thus power consumption, it is useful to multiply zero by zero. This
requires 12 clocks for one memory cycle and reduces power consumption. Typically a
number of
mul
instructions can be executed between each test of the condition being
waited for.
Dynamic C libraries also provide functions to change clock speeds to enter and exit sleepy
mode. See the
Rabbit 2000 Designer’s Handbook
chapter
Low Power Design and Sup-
port
for more details.
Summary of Contents for 2000
Page 1: ...Rabbit 2000 Microprocessor User s Manual 019 0069 041018 M...
Page 12: ...6 Rabbit 2000 Microprocessor...
Page 46: ...40 Rabbit 2000 Microprocessor...
Page 54: ...48 Rabbit 2000 Microprocessor...
Page 76: ...70 Rabbit 2000 Microprocessor...
Page 96: ...90 Rabbit 2000 Microprocessor...
Page 142: ...136 Rabbit 2000 Microprocessor...
Page 154: ...148 Rabbit 2000 Microprocessor...
Page 170: ...164 Rabbit 2000 Microprocessor...
Page 174: ...168 Rabbit 2000 Microprocessor...
Page 180: ...174 Rabbit 2000 Microprocessor...
Page 202: ...196 Rabbit 2000 Microprocessor...
Page 206: ...200 Rabbit 2000 Microprocessor...
Page 226: ......
Page 230: ...224 Rabbit 2000 Microprocessor...