From c22cdf9ac65ce2bf70aa8512842c26bfddb25e49 Mon Sep 17 00:00:00 2001 From: "Earle F. Philhower, III" Date: Mon, 26 Dec 2022 12:31:40 -0800 Subject: [PATCH 1/2] Add digitalWrite/ReadFast macros Fix #1067 --- cores/rp2040/Arduino.h | 2 ++ keywords.txt | 3 +++ 2 files changed, 5 insertions(+) diff --git a/cores/rp2040/Arduino.h b/cores/rp2040/Arduino.h index d73ff549..e42a7207 100644 --- a/cores/rp2040/Arduino.h +++ b/cores/rp2040/Arduino.h @@ -68,6 +68,8 @@ void noInterrupts(); #define portOutputRegister(port) ((volatile uint32_t*) sio_hw->gpio_out) #define portInputRegister(port) ((volatile uint32_t*) sio_hw->gpio_in) #define portModeRegister(port) ((volatile uint32_t*) sio_hw->gpio_oe) +#define digitalWriteFast(pin, val) gpio_put(pin, val ? 1 : 0) +#define digitalReadFast(pin) (gpio_get(pin) ? 1 : 0) // ADC RP2040-specific calls void analogReadResolution(int bits); diff --git a/keywords.txt b/keywords.txt index 26e39005..d6d25f18 100644 --- a/keywords.txt +++ b/keywords.txt @@ -54,6 +54,9 @@ SerialPIO KEYWORD2 setFIFOSize KEYWORD2 setPollingMode KEYWORD2 +digitalWriteFast KEYWORD2 +digitalReadFast KEYWORD2 + enableDoubleResetBootloader KEYWORD2 OUTPUT_2MA LITERAL1 -- 2.54.0 From 60c7423175af6fb64a412f5741ea62cd1814780e Mon Sep 17 00:00:00 2001 From: "Earle F. Philhower, III" Date: Wed, 28 Dec 2022 10:35:38 -0800 Subject: [PATCH 2/2] Update using @neilger's macros --- cores/rp2040/Arduino.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/cores/rp2040/Arduino.h b/cores/rp2040/Arduino.h index e42a7207..3b04399e 100644 --- a/cores/rp2040/Arduino.h +++ b/cores/rp2040/Arduino.h @@ -68,8 +68,8 @@ void noInterrupts(); #define portOutputRegister(port) ((volatile uint32_t*) sio_hw->gpio_out) #define portInputRegister(port) ((volatile uint32_t*) sio_hw->gpio_in) #define portModeRegister(port) ((volatile uint32_t*) sio_hw->gpio_oe) -#define digitalWriteFast(pin, val) gpio_put(pin, val ? 1 : 0) -#define digitalReadFast(pin) (gpio_get(pin) ? 1 : 0) +#define digitalWriteFast(pin, val) (val ? gpio_set_mask (1 << pin) : gpio_clr_mask(1 << pin)) +#define digitalReadFast(pin) gpio_get(pin) // ADC RP2040-specific calls void analogReadResolution(int bits); -- 2.54.0