Previously the intent of this library was to implement Arduino functions efficiently in C++ templates. That was three years ago and since then I've decided I don't want to quite do that. There may be a Arduino compatibility layer at some point in the future, (don't hold your breath). The intent now is to create a high level AVR library using C++ templates that compile down to assembly that is as fast as one could write using straight C and a lot of bit twiddling.
- ATTiny25
- ATTiny45
- ATTiny85
- ATMega168
- ATMega8
- ATMega328P
- ATMega640
- ATMega1280
- ATMega1281
- ATMega2560
- ATMega2561
I don't own development boards for each of those platforms, so support will be on a best effort basis mostly using simulavr
If I can successfully impemlent support for those 4 different platforms then chances are pretty good that generalizing support to any other AVR microcontroller shouldn't be to difficult.
The code will be C++17 which means running it in Arduino will only work by updating the compiler to a more recent version. Details on how to do that can be found at Zakk Emble's Website.
Support for the C++ stdlib will be from my fork of StandardCplusplus
- Add tuple support to StandardCplusplus
- Implement assignment for various interfaces that accept a tuple to preform a as few register writes as possible
- Implement each of the register types
- Expand support to the ATmega640+
- Expand support to the ATTiny28
- Expand support to the ATTiny26
- Use CMake to avoid manually setting up tools
Use CMake
git clone --recursive [email protected]:e2thenegpii/machew.git
cmake -DAVR\_MCU=atmega328 -build-toolchain=ON .