I'm on arduino (-mmcu=atmega328p), so I end up wtih __AVR_ARCH__ of 5 and
__SFR_OFFSET of 0x20.  I'm not using _SFR_ASM_COMPAT.  So _SFR_IO8 ends up
coming from:

  #define _SFR_IO8(io_addr) _MMIO_BYTE((io_addr) + __SFR_OFFSET)

I'd like to allow a register to be initialized using one of the
symbolic macros, e.g. DDRD:

   uint8_t dir_reg = DDRD;

and later be able to use it:

  macro_expecting_DDRD (dir_reg);

But I guess this won't work, since the dereference in __MMIO_BYTE will
already have happened.  Nor do I want __SFR_OFFSET added in a second time.
So I'm guessing what I should do is:

  macro_expecting_DDRD (_SFR_MEM8 (dir_reg));

I'm just a tiny bit sad at the fact that the DDRD macro isn't hiding the
underlying interface entirely, and wondering if this is the correct and
decent way or if there is some other nearby way?

Thanks,
Britton

_______________________________________________
AVR-chat mailing list
[email protected]
https://lists.nongnu.org/mailman/listinfo/avr-chat

Reply via email to