diff --git a/quantum/config_common.h b/quantum/config_common.h index 029aa69b..69126e25 100644 --- a/quantum/config_common.h +++ b/quantum/config_common.h @@ -36,21 +36,6 @@ // #define PINDEF(port, pin) (uint8_t)((((uint16_t)&PIN##port) << 4) + PIN##port##pin) #define PINDEF(port, pin) ((pin_t)(((((uint16_t)&PIN##port) - __SFR_OFFSET)<< 4) + PIN##port##pin)) -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) *helper(p, 1) -#define DDR_OUTPUT(p) (DDR(p) |= _BV(p & 0xF)) -#define DDR_INPUT(p) (DDR(p) &= ~_BV(p & 0xF)) - -#define PORT(p) *helper(p, 2) -#define PORT_HIGH(p) (PORT(p) |= _BV(p & 0xF)) -#define PORT_LOW(p) (PORT(p) &= ~_BV(p & 0xF)) - #ifdef PORTA #define A0 PINDEF(A, 0) #define A1 PINDEF(A, 1) diff --git a/quantum/matrix.c b/quantum/matrix.c index 9dcc8e11..ef6122fb 100644 --- a/quantum/matrix.c +++ b/quantum/matrix.c @@ -25,7 +25,7 @@ along with this program. If not, see . #include "util.h" #include "matrix.h" #include "timer.h" - +#include "quantum.h" /* Set 0 if debouncing isn't needed */ diff --git a/quantum/pincontrol.h b/quantum/pincontrol.h index d77977eb..9cfca480 100644 --- a/quantum/pincontrol.h +++ b/quantum/pincontrol.h @@ -15,7 +15,26 @@ */ #pragma once // Some helpers for controlling gpio pins -#include +#if defined(__AVR__) + #include +#endif + +static inline volatile uint8_t* helper(pin_t p, uint8_t offset) { + return (volatile 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) *helper(p, 1) +#define DDR_OUTPUT(p) (DDR(p) |= _BV(p & 0xF)) +#define DDR_INPUT(p) (DDR(p) &= ~_BV(p & 0xF)) + +#define PORT(p) *helper(p, 2) +#define PORT_HIGH(p) (PORT(p) |= _BV(p & 0xF)) +#define PORT_LOW(p) (PORT(p) &= ~_BV(p & 0xF)) + +// Arduino shortcuts enum { PinDirectionInput = 0, diff --git a/quantum/quantum.h b/quantum/quantum.h index 534819c8..a16f9ed7 100644 --- a/quantum/quantum.h +++ b/quantum/quantum.h @@ -41,6 +41,7 @@ #include #include "print.h" #include "send_string_keycodes.h" +#include "pincontrol.h" extern uint32_t default_layer_state;