I'm writing a C++11/17/20 library to manipulate the I/O ports of AVR-8. The purpose of the work is to raise the level of abstraction to operate I/O ports with zero-overhead in mind. It’s a header only library that doesn’t require any external dependency to be used, the only requirement is avr-gcc with at least C++11 support.
Optionally, C++20 Concepts are used to better error messages and code readability if the C++20 support is enabled.
One goal of the library is to allow the design of APIs that are flexible enough to accept pins of ports of different microcontrollers as also the possibility to adapt other abstractions that solve the same problem to operate with the concept provided by the library.
Contributions are very welcome :)