 {
   uint32_t start, stop;
   uint32_t us, base;
+  uint8_t cnt;
 
   // Start the trace output stream on the serial port
   uart.begin(9600);

  start = RTC::micros();
  for (uint16_t i = 0; i < 1000; i++)
    for (uint16_t j = 0; j < 1000; j++) {
      OutputPin::write(8, !OutputPin::read(8));
      __asm__ __volatile__("nop");
    }
  stop = RTC::micros();
  us = (stop - start) / 1000L;
  INFO("Cosa(%ulX): %ul us per 1000 OutputPin::write(8, !OutputPin::read(8))", base/us, us);

  start = RTC::micros();
  for (uint16_t i = 0; i < 1000; i++)
    for (uint16_t j = 0; j < 1000; j++) {
      if (OutputPin::read(8))
	OutputPin::write(8, 0);
      else
	OutputPin::write(8, 1);

  start = RTC::micros();
  for (uint16_t i = 0; i < 1000; i++)
    for (uint16_t j = 0; j < 1000; j++) {
      digitalWrite(8, !digitalRead(7));
      __asm__ __volatile__("nop");
    }
  stop = RTC::micros();
  base = (stop - start) / 1000L;
  INFO("Arduino: %ul us per 1000 digitalWrite(8, !digitalRead(7))", base);

  start = RTC::micros();
  for (uint16_t i = 0; i < 1000; i++)
    for (uint16_t j = 0; j < 1000; j++) {
      outPin.write(!inPin.read());
      __asm__ __volatile__("nop");
    }
  stop = RTC::micros();
  us = (stop - start) / 1000L;
  INFO("Cosa(%ulX): %ul us per 1000 outPin.write(!inPin.read())", base/us, us);

  start = RTC::micros();
  for (uint16_t i = 0; i < 1000; i++)
    for (uint16_t j = 0; j < 1000; j++) {
      if (inPin.is_set()) outPin.clear(); else outPin.set();
      __asm__ __volatile__("nop");
    }
  stop = RTC::micros();
  us = (stop - start) / 1000L;
  INFO("Cosa(%ulX): %ul us per 1000 inPin.is_set/outPin.clear/set()", base/us, us);

  start = RTC::micros();
  for (uint16_t i = 0; i < 1000; i++)
    for (uint16_t j = 0; j < 1000; j++) {
      uint8_t var;
      inPin >> var;
      outPin << !var;
      __asm__ __volatile__("nop");
    }
  stop = RTC::micros();
  us = (stop - start) / 1000L;
  INFO("Cosa(%ulX): %ul us per 1000 inPin >> var; outPin << !var", base/us, us);

  start = RTC::micros();
  for (uint16_t i = 0; i < 1000; i++)
    for (uint16_t j = 0; j < 1000; j++) {
      outPin.set(inPin.is_clear());
      __asm__ __volatile__("nop");
    }
  stop = RTC::micros();
  us = (stop - start) / 1000L;
  INFO("Cosa(%ulX): %ul us per 1000 outPin.set(inPin.is_clear())", base/us, us);

  start = RTC::micros();
  for (uint16_t i = 0; i < 1000; i++)
