Merge pull request #4052 from tannewt/get_pull

Fix DigitalInOut.pull on RP2040
This commit is contained in:
Dan Halbert 2021-01-23 09:24:36 -05:00 committed by GitHub
commit 97f5d218a5
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 14 additions and 25 deletions

View File

@ -22,7 +22,7 @@ CIRCUITPY_ROTARYIO = 0
CIRCUITPY_RTC = 0
SUPEROPT_GC = 0
CFLAGS_INLINE_LIMIT = 50
CFLAGS_INLINE_LIMIT = 40
# Include these Python libraries in firmware.

View File

@ -11,14 +11,6 @@ LONGINT_IMPL = NONE
CIRCUITPY_FULL_BUILD = 0
SUPEROPT_GC = 0
SUPEROPT_VM = 0
CFLAGS_BOARD = --param max-inline-insns-auto=15
ifeq ($(TRANSLATION), zh_Latn_pinyin)
RELEASE_NEEDS_CLEAN_BUILD = 1
CFLAGS_INLINE_LIMIT = 35
endif
ifeq ($(TRANSLATION), de_DE)
RELEASE_NEEDS_CLEAN_BUILD = 1
CFLAGS_INLINE_LIMIT = 35
SUPEROPT_VM = 0
endif

View File

@ -76,8 +76,7 @@ digitalinout_result_t common_hal_digitalio_digitalinout_switch_to_output(
digitalio_drive_mode_t drive_mode) {
const uint8_t pin = self->pin->number;
gpio_set_dir(pin, GPIO_OUT);
// Turn on "strong" pin driving (more current available). See DRVSTR doc in datasheet.
// hri_port_set_PINCFG_DRVSTR_bit(PORT, (enum gpio_port)GPIO_PORT(pin), GPIO_PIN(pin));
// TODO: Turn on "strong" pin driving (more current available).
self->output = true;
common_hal_digitalio_digitalinout_set_drive_mode(self, drive_mode);
@ -140,18 +139,16 @@ void common_hal_digitalio_digitalinout_set_pull(
digitalio_pull_t common_hal_digitalio_digitalinout_get_pull(
digitalio_digitalinout_obj_t* self) {
// uint32_t pin = self->pin->number;
// if (self->output) {
// mp_raise_AttributeError(translate("Cannot get pull while in output mode"));
// return PULL_NONE;
// } else {
// if (hri_port_get_PINCFG_PULLEN_bit(PORT, GPIO_PORT(pin), GPIO_PIN(pin)) == 0) {
// return PULL_NONE;
// } if (hri_port_get_OUT_reg(PORT, GPIO_PORT(pin), 1U << GPIO_PIN(pin)) > 0) {
// return PULL_UP;
// } else {
// return PULL_DOWN;
// }
// }
uint32_t pin = self->pin->number;
if (self->output) {
mp_raise_AttributeError(translate("Cannot get pull while in output mode"));
return PULL_NONE;
} else {
if (gpio_is_pulled_up(pin)) {
return PULL_UP;
} else if (gpio_is_pulled_down(pin)) {
return PULL_DOWN;
}
}
return PULL_NONE;
}