   start = RTC::micros();
   for (uint16_t i = 0; i < 1000; i++)
     for (uint16_t j = 0; j < 1000; j++) {
-      digitalWrite(8, !digitalRead(8));
+      digitalWrite(8, !digitalRead(7));
       __asm__ __volatile__("nop");
     }
   stop = RTC::micros();
   base = (stop - start) / 1000L;
-  INFO("Arduino: %ul us per 1000 digitalWrite(8, !digitalRead(8))", base);
-
-  start = RTC::micros();
-  for (uint16_t i = 0; i < 1000; i++)
-    for (uint16_t j = 0; j < 1000; j++) {
-      outPin.write(!outPin.read());
-      __asm__ __volatile__("nop");
-    }
-  stop = RTC::micros();
-  us = (stop - start) / 1000L;
-  INFO("Cosa(%ulX): %ul us per 1000 outPin.write(!outPin.read())", base/us, us);
-
-  start = RTC::micros();
-  for (uint16_t i = 0; i < 1000; i++)
-    for (uint16_t j = 0; j < 1000; j++) {
-      if (outPin.is_set()) outPin.clear(); else outPin.set();
-      __asm__ __volatile__("nop");
-    }
-  stop = RTC::micros();
-  us = (stop - start) / 1000L;
-  INFO("Cosa(%ulX): %ul us per 1000 outPin.is_set/clear/set()", base/us, us);
+  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;
-      outPin >> var;
+      inPin >> var;
       outPin << !var;
       __asm__ __volatile__("nop");
     }
   stop = RTC::micros();
   us = (stop - start) / 1000L;
-  INFO("Cosa(%ulX): %ul us per 1000 outPin >> 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(outPin.is_clear());
-      __asm__ __volatile__("nop");
-    }
-  stop = RTC::micros();
-  us = (stop - start) / 1000L;
-  INFO("Cosa(%ulX): %ul us per 1000 outPin.set/is_clear()", base/us, us);
+  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++)

{
  uint32_t start, stop;
  uint32_t us, base;

  // 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, !InputPin::read(7));
      __asm__ __volatile__("nop");
    }
  stop = RTC::micros();
  us = (stop - start) / 1000L;
  INFO("Cosa(%ulX): %ul us per 1000 OutputPin::write(8, !InputPin::read(7))", base/us, us);

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