     expire_at(100000UL);
   }
 
+#if defined(USE_ISR_TIME_PERIOD)
+  virtual void on_expired()
+  {
+    run();
+    expire_at(time() + period());
+    start();
+  }
+#endif
+
+#if defined(USE_ISR_RESCHEDULE)
   virtual void on_expired()
   {
     run();
     reschedule();
   }
+#endif
 
   virtual void run()
   {
     m_pin.toggle();
+#if defined(PULSE_WIDTH)
+    DELAY(PULSE_WIDTH);
+#endif
     m_pin.toggle();
   }
 


// The RTC job scheduler and background pulse generator
RTC::Scheduler scheduler;
Pulse background(&scheduler, BACKGROUND_PULSE, Board::LED);
#endif

void setup()
{
  // Start serial output with given baud-rate
  uart.begin(2000000);
  // uart.begin(2000000);
  // uart.begin(1000000);
  // uart.begin(500000);

	<< 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);
#endif
}
