/**
  \example speed4.cpp 

  This sketch demonstrates a way to perform dynamic CPU throttling by
  combining the control offered by the #Processor object with the
  monitoring offered by the #Profile object.
  <p>
  It 'does work', piece by piece, in an alarm handler, while another
  alarm monitors the #Profile.  When the time spent in alarm handlers
  becomes too high or low, the #Processor is sped up or slowed down
  accordingly, if possible.

  An interaction with this sketch might look like:

\code
w300
Ln 16.424 Workload=300
Ln 17.060 Load: 22%, speed changed to: 36MHz
Ln 18.070 Load: 25%, speed changed to: 24MHz
w800
Ln 22.922 Workload=800
Ln 24.098 Load: 95%, speed changed to: 36MHz
Ln 25.108 Load: 67%, speed changed to: 48MHz
w10
Ln 30.467 Workload=10
Ln 31.116 Load: 20%, speed changed to: 36MHz
Ln 32.126 Load:  0%, speed changed to: 24MHz
Ln 33.146 Load:  1%, speed changed to: 12MHz
w1200
Ln 39.719 Workload=1200
Ln 41.188 Load: 92%, speed changed to: 24MHz
Ln 42.198 Load: 95%, speed changed to: 36MHz
Ln 43.213 Load: 96%, speed changed to: 48MHz
Ln 44.225 Load: 82%, speed changed to: 60MHz
Ln 45.230 Load: 72%, speed changed to: 72MHz
\endcode
  
  where we send 'w' packets to alter the workload at various times,
  provoking dynamic speed changes when the alarm handling load falls
  outside the 33% - 66% band.
 */
