From 7dbe94d4acf5fb3fbfe9b516538e33c161f27403 Mon Sep 17 00:00:00 2001 From: Jack Humbert Date: Fri, 27 Oct 2017 12:35:50 -0400 Subject: [PATCH] fix macros --- quantum/config_common.h | 18 ++++++++++++++---- quantum/matrix.c | 6 +++--- 2 files changed, 17 insertions(+), 7 deletions(-) diff --git a/quantum/config_common.h b/quantum/config_common.h index 10e0b67d1..029aa69ba 100644 --- a/quantum/config_common.h +++ b/quantum/config_common.h @@ -26,18 +26,28 @@ #define ROW2COL 1 #define CUSTOM_MATRIX 2 /* Disables built-in matrix scanning code */ +#if defined(__AVR_ATmega32U4__) + #define pin_t uint8_t +#else + #define pin_t uint16_t +#endif + /* I/O pins */ // #define PINDEF(port, pin) (uint8_t)((((uint16_t)&PIN##port) << 4) + PIN##port##pin) -#define PINDEF(port, pin) (uint8_t)(((((uint16_t)&PIN##port) - __SFR_OFFSET)<< 4) + PIN##port##pin) +#define PINDEF(port, pin) ((pin_t)(((((uint16_t)&PIN##port) - __SFR_OFFSET)<< 4) + PIN##port##pin)) -#define PIN(p) (*((volatile uint16_t*)(p >> 4) + 0 + __SFR_OFFSET)) +static inline uint8_t* helper(pin_t p, uint8_t offset) { + return (uint8_t*)((p >> 4) + offset + __SFR_OFFSET); +} + +#define PIN(p) *helper(p, 0) #define PIN_VALUE(p) (PIN(p) & _BV(p & 0xF)) -#define DDR(p) (*((volatile uint16_t*)(p >> 4) + 1 + __SFR_OFFSET)) +#define DDR(p) *helper(p, 1) #define DDR_OUTPUT(p) (DDR(p) |= _BV(p & 0xF)) #define DDR_INPUT(p) (DDR(p) &= ~_BV(p & 0xF)) -#define PORT(p) (*((volatile uint16_t*)(p >> 4) + 2 + __SFR_OFFSET)) +#define PORT(p) *helper(p, 2) #define PORT_HIGH(p) (PORT(p) |= _BV(p & 0xF)) #define PORT_LOW(p) (PORT(p) &= ~_BV(p & 0xF)) diff --git a/quantum/matrix.c b/quantum/matrix.c index 00110a329..9dcc8e116 100644 --- a/quantum/matrix.c +++ b/quantum/matrix.c @@ -60,8 +60,8 @@ along with this program. If not, see . #endif #if (DIODE_DIRECTION == ROW2COL) || (DIODE_DIRECTION == COL2ROW) -static const uint8_t row_pins[MATRIX_ROWS] = MATRIX_ROW_PINS; -static const uint8_t col_pins[MATRIX_COLS] = MATRIX_COL_PINS; +static const pin_t row_pins[MATRIX_ROWS] = MATRIX_ROW_PINS; +static const pin_t col_pins[MATRIX_COLS] = MATRIX_COL_PINS; #endif /* matrix state(1:on, 0:off) */ @@ -221,7 +221,7 @@ uint8_t matrix_scan(void) # endif - dprintf("%x\n", PINDEF(B,0)); + dprintf("%x\n", B0); matrix_scan_quantum(); return 1;