The Arduino GPIO library has been developed to allow high performance digital pin access. Most access functions are compiled to a single instruction and execute in 1-2 clock cycles. The library functions are more than 10 times faster than the Arduino digital pin functions. In some cases as much as 100 times faster.
Additional support classes are available for Shift Register Input/Output, and Software Serial. These also demonstrate how the GPIO template class may be used to construct additional libraries.
This library supports boards based on SAM3X8E, ATmega168, ATmega328P, ATmega32U4, ATmega1280, ATmega2560, ATtinyX4 and ATtinyX5.
The classical blink sketch looks like this:
GPIO<BOARD::D13> led;
void setup()
{
led.output();
}
void loop()
{
led = HIGH;
delay(1000);
led = LOW;
delay(1000);
}
Please see github for benchmarks and further documentation and examples.