If you could guarantee that there are 255 unused bytes of SRAM below the lowest
stack location, maybe this would be OK. But imagine the AVR sees an interrupt
just after __SP_H__ changes. It begins by pushing a bunch of registers, which
clobbers the heap, or even worse writes to I/O space or the r
I missed Nils' code, but I suspect that a a template-based approach
would avoid one shortcoming of your approach: your io::IOClass uses 6
bytes of RAM storage for each instance, which would probably be
unacceptable in many cases. A template approach might use none, since
the I/O addresses are com