From 247f72793fab8d8a7460d3a8d657cbdc709e454d Mon Sep 17 00:00:00 2001 From: wemos Date: Fri, 27 Jul 2018 12:32:32 +0800 Subject: [PATCH 1/3] fix digitalPinToBitMask(), portOutputRegister(), portInputRegister() and portModeRegister() error when the pin is GPIO16. --- cores/esp8266/Arduino.h | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/cores/esp8266/Arduino.h b/cores/esp8266/Arduino.h index c1e185414f..fbb370f125 100644 --- a/cores/esp8266/Arduino.h +++ b/cores/esp8266/Arduino.h @@ -224,12 +224,13 @@ void loop(void); void yield(void); void optimistic_yield(uint32_t interval_us); -#define digitalPinToPort(pin) (0) -#define digitalPinToBitMask(pin) (1UL << (pin)) +#define _PORT_GPIO16 1 +#define digitalPinToPort(pin) (pin==16)?(_PORT_GPIO16):(0) +#define digitalPinToBitMask(pin) (pin==16)?(1):(1UL << (pin)) #define digitalPinToTimer(pin) (0) -#define portOutputRegister(port) ((volatile uint32_t*) &GPO) -#define portInputRegister(port) ((volatile uint32_t*) &GPI) -#define portModeRegister(port) ((volatile uint32_t*) &GPE) +#define portOutputRegister(port) (port==_PORT_GPIO16)?((volatile uint32_t*) &GP16O):((volatile uint32_t*) &GPO) +#define portInputRegister(port) (port==_PORT_GPIO16)?((volatile uint32_t*) &GP16I):((volatile uint32_t*) &GPI) +#define portModeRegister(port) (port==_PORT_GPIO16)?((volatile uint32_t*) &GP16E):((volatile uint32_t*) &GPE) #define NOT_A_PIN -1 #define NOT_A_PORT -1 From 0824c0f358f38156442245089cdb88e8c7f4d6aa Mon Sep 17 00:00:00 2001 From: wemos Date: Sat, 28 Jul 2018 09:25:59 +0800 Subject: [PATCH 2/3] fix macros (..) parenthesis lost --- cores/esp8266/Arduino.h | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/cores/esp8266/Arduino.h b/cores/esp8266/Arduino.h index fbb370f125..ae51372a7e 100644 --- a/cores/esp8266/Arduino.h +++ b/cores/esp8266/Arduino.h @@ -225,12 +225,12 @@ void yield(void); void optimistic_yield(uint32_t interval_us); #define _PORT_GPIO16 1 -#define digitalPinToPort(pin) (pin==16)?(_PORT_GPIO16):(0) -#define digitalPinToBitMask(pin) (pin==16)?(1):(1UL << (pin)) +#define digitalPinToPort(pin) ((pin)==16)?(_PORT_GPIO16):(0) +#define digitalPinToBitMask(pin) ((pin)==16)?(1):(1UL << (pin)) #define digitalPinToTimer(pin) (0) -#define portOutputRegister(port) (port==_PORT_GPIO16)?((volatile uint32_t*) &GP16O):((volatile uint32_t*) &GPO) -#define portInputRegister(port) (port==_PORT_GPIO16)?((volatile uint32_t*) &GP16I):((volatile uint32_t*) &GPI) -#define portModeRegister(port) (port==_PORT_GPIO16)?((volatile uint32_t*) &GP16E):((volatile uint32_t*) &GPE) +#define portOutputRegister(port) ((port)==_PORT_GPIO16)?((volatile uint32_t*) &GP16O):((volatile uint32_t*) &GPO) +#define portInputRegister(port) ((port)==_PORT_GPIO16)?((volatile uint32_t*) &GP16I):((volatile uint32_t*) &GPI) +#define portModeRegister(port) ((port)==_PORT_GPIO16)?((volatile uint32_t*) &GP16E):((volatile uint32_t*) &GPE) #define NOT_A_PIN -1 #define NOT_A_PORT -1 From 090ae545fab797d0a23eb6e76447fafe09906ff3 Mon Sep 17 00:00:00 2001 From: wemos Date: Sat, 28 Jul 2018 14:26:31 +0800 Subject: [PATCH 3/3] surround the entire ternary --- cores/esp8266/Arduino.h | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/cores/esp8266/Arduino.h b/cores/esp8266/Arduino.h index ae51372a7e..b13817ae8f 100644 --- a/cores/esp8266/Arduino.h +++ b/cores/esp8266/Arduino.h @@ -225,12 +225,12 @@ void yield(void); void optimistic_yield(uint32_t interval_us); #define _PORT_GPIO16 1 -#define digitalPinToPort(pin) ((pin)==16)?(_PORT_GPIO16):(0) -#define digitalPinToBitMask(pin) ((pin)==16)?(1):(1UL << (pin)) +#define digitalPinToPort(pin) (((pin)==16)?(_PORT_GPIO16):(0)) +#define digitalPinToBitMask(pin) (((pin)==16)?(1):(1UL << (pin))) #define digitalPinToTimer(pin) (0) -#define portOutputRegister(port) ((port)==_PORT_GPIO16)?((volatile uint32_t*) &GP16O):((volatile uint32_t*) &GPO) -#define portInputRegister(port) ((port)==_PORT_GPIO16)?((volatile uint32_t*) &GP16I):((volatile uint32_t*) &GPI) -#define portModeRegister(port) ((port)==_PORT_GPIO16)?((volatile uint32_t*) &GP16E):((volatile uint32_t*) &GPE) +#define portOutputRegister(port) (((port)==_PORT_GPIO16)?((volatile uint32_t*) &GP16O):((volatile uint32_t*) &GPO)) +#define portInputRegister(port) (((port)==_PORT_GPIO16)?((volatile uint32_t*) &GP16I):((volatile uint32_t*) &GPI)) +#define portModeRegister(port) (((port)==_PORT_GPIO16)?((volatile uint32_t*) &GP16E):((volatile uint32_t*) &GPE)) #define NOT_A_PIN -1 #define NOT_A_PORT -1