|
|
@@ -93,15 +93,15 @@
|
|
|
#define DIRECT_WRITE_HIGH(base, mask) ((*(base+8+2)) = (mask)) //LATXSET + 0x28
|
|
|
|
|
|
#elif defined(ARDUINO_ARCH_ESP8266)
|
|
|
-#define PIN_TO_BASEREG(pin) (portOutputRegister(digitalPinToPort(pin)))
|
|
|
-#define PIN_TO_BITMASK(pin) (digitalPinToBitMask(pin))
|
|
|
+#define PIN_TO_BASEREG(pin) ((volatile uint32_t*) GPO)
|
|
|
+#define PIN_TO_BITMASK(pin) (1 << pin)
|
|
|
#define IO_REG_TYPE uint32_t
|
|
|
#define IO_REG_ASM
|
|
|
-#define DIRECT_READ(base, mask) (((*(base+6)) & (mask)) ? 1 : 0) //GPIO_IN_ADDRESS
|
|
|
-#define DIRECT_MODE_INPUT(base, mask) ((*(base+5)) = (mask)) //GPIO_ENABLE_W1TC_ADDRESS
|
|
|
-#define DIRECT_MODE_OUTPUT(base, mask) ((*(base+4)) = (mask)) //GPIO_ENABLE_W1TS_ADDRESS
|
|
|
-#define DIRECT_WRITE_LOW(base, mask) ((*(base+2)) = (mask)) //GPIO_OUT_W1TC_ADDRESS
|
|
|
-#define DIRECT_WRITE_HIGH(base, mask) ((*(base+1)) = (mask)) //GPIO_OUT_W1TS_ADDRESS
|
|
|
+#define DIRECT_READ(base, mask) ((GPI & (mask)) ? 1 : 0) //GPIO_IN_ADDRESS
|
|
|
+#define DIRECT_MODE_INPUT(base, mask) (GPE &= ~(mask)) //GPIO_ENABLE_W1TC_ADDRESS
|
|
|
+#define DIRECT_MODE_OUTPUT(base, mask) (GPE |= (mask)) //GPIO_ENABLE_W1TS_ADDRESS
|
|
|
+#define DIRECT_WRITE_LOW(base, mask) (GPOC = (mask)) //GPIO_OUT_W1TC_ADDRESS
|
|
|
+#define DIRECT_WRITE_HIGH(base, mask) (GPOS = (mask)) //GPIO_OUT_W1TS_ADDRESS
|
|
|
|
|
|
#elif defined(__SAMD21G18A__)
|
|
|
// runs extremely slow/unreliable on Arduino Zero - help wanted....
|