|
|
|
|
|
|
|
|
#define PIN_TO_BITMASK(pin) (digitalPinToBitMask(pin)) |
|
|
#define PIN_TO_BITMASK(pin) (digitalPinToBitMask(pin)) |
|
|
#define IO_REG_TYPE uint8_t |
|
|
#define IO_REG_TYPE uint8_t |
|
|
#define IO_REG_ASM asm("r30") |
|
|
#define IO_REG_ASM asm("r30") |
|
|
|
|
|
#if defined(__AVR_ATmega4809__) |
|
|
|
|
|
#define DIRECT_READ(base, mask) (((*(base)) & (mask)) ? 1 : 0) |
|
|
|
|
|
#define DIRECT_MODE_INPUT(base, mask) ((*((base)-8)) &= ~(mask)) |
|
|
|
|
|
#define DIRECT_MODE_OUTPUT(base, mask) ((*((base)-8)) |= (mask)) |
|
|
|
|
|
#define DIRECT_WRITE_LOW(base, mask) ((*((base)-4)) &= ~(mask)) |
|
|
|
|
|
#define DIRECT_WRITE_HIGH(base, mask) ((*((base)-4)) |= (mask)) |
|
|
|
|
|
#else |
|
|
#define DIRECT_READ(base, mask) (((*(base)) & (mask)) ? 1 : 0) |
|
|
#define DIRECT_READ(base, mask) (((*(base)) & (mask)) ? 1 : 0) |
|
|
#define DIRECT_MODE_INPUT(base, mask) ((*((base)+1)) &= ~(mask)) |
|
|
#define DIRECT_MODE_INPUT(base, mask) ((*((base)+1)) &= ~(mask)) |
|
|
#define DIRECT_MODE_OUTPUT(base, mask) ((*((base)+1)) |= (mask)) |
|
|
#define DIRECT_MODE_OUTPUT(base, mask) ((*((base)+1)) |= (mask)) |
|
|
#define DIRECT_WRITE_LOW(base, mask) ((*((base)+2)) &= ~(mask)) |
|
|
#define DIRECT_WRITE_LOW(base, mask) ((*((base)+2)) &= ~(mask)) |
|
|
#define DIRECT_WRITE_HIGH(base, mask) ((*((base)+2)) |= (mask)) |
|
|
#define DIRECT_WRITE_HIGH(base, mask) ((*((base)+2)) |= (mask)) |
|
|
|
|
|
#endif |
|
|
|
|
|
|
|
|
#elif defined(__MK20DX128__) || defined(__MK20DX256__) || defined(__MK66FX1M0__) || defined(__MK64FX512__) |
|
|
#elif defined(__MK20DX128__) || defined(__MK20DX256__) || defined(__MK66FX1M0__) || defined(__MK64FX512__) |
|
|
#define PIN_TO_BASEREG(pin) (portOutputRegister(pin)) |
|
|
#define PIN_TO_BASEREG(pin) (portOutputRegister(pin)) |