 	<< Kbps << PSTR(" Kbps")
 	<< endl;
 
+#if defined(BACKGROUND_PULSE)
+  uint16_t pulses = trace.measure / BACKGROUND_PULSE;
+  trace << PSTR("background pulses (") << pulses << PSTR("):")
+	<< (uint32_t) pulses * PULSE_WIDTH << PSTR(" us")
+	<< endl;
+  sleep(1);
+#else
   ASSERT(true == false);
-  // Take a nap before starting over
-  // sleep(1);
+#endif
 }

    expire_at(100000UL);
  }

  virtual void on_expired()
  {
    run();
    reschedule();
  }

  virtual void run()
  {
    m_pin.toggle();
    m_pin.toggle();
  }



// This benchmark can be run with a background interrupt load. Set the
// below symbol to enable a periodic job with the given period in
// micro-seconds.
#define BACKGROUND_PULSE 150
#define PULSE_WIDTH 50

#if defined(BACKGROUND_PULSE)
#include "Cosa/OutputPin.hh"
#include "Cosa/Periodic.hh"

// Schedule from interrupt with time or fixed period
// #define USE_ISR_TIME_PERIOD
#define USE_ISR_RESCHEDULE

class Pulse : public Periodic {
public:
