The AVRA open source macro assembler is a fair alternative for hobbyists developing for AVR microcontrollers. For others the official full blown IDE is also available from MICROCHIP for download.
I stated using the official AVRA macro assembler, but soon enough I hit the wall when I wanted to write an include file with macros calculating delay cycles for busy-wait loops. It turns out that the official AVRA macro assembler comes with a serious limitation. That is, it comes with 32 integers for expression values, while the AVRSAM2 -the official macro assembler from Atmel- has 64 bit integers for the same.
Another oddity is that it blurs the boundaries between the preprocessor- and assembler directives. Also lacks support for function-like preprocessor macros, like #define SQR(X) ((X)*(X))
.
So I decided to contribute and implement some missing features. After submitting the PRs, I had to realize that the origin seems to be abandoned and not being maintained any more.
Finally I continued to work on my fork and implemented those parts which I was lacking. All is on the devel
branch.
Check out the change log. My repo can be found here.
ARVA Change log
Release 1.4.2b (2024-04-26, by Imre Horvath)
- Add 64 bit expressions
- Add preprocessor directives
#define
and#undef
to define and undefine object- and function-like preprocessor macros - Add preprocessor operator
##
to concatenate preprocessor tokens - Implement
.undef
assembler directive - Update makefile for macOS
- Add the command line option
-W
to the help text - Add tests for the new features