make nrf touchio be generic: now available for SAMD51 too
This commit is contained in:
parent
85d7398476
commit
e2a4c76a37
@ -14,5 +14,3 @@ LONGINT_IMPL = MPZ
|
|||||||
|
|
||||||
# No I2S on SAMD51G
|
# No I2S on SAMD51G
|
||||||
CIRCUITPY_AUDIOBUSIO = 0
|
CIRCUITPY_AUDIOBUSIO = 0
|
||||||
# No touch on SAMD51 yet
|
|
||||||
CIRCUITPY_TOUCHIO = 0
|
|
||||||
|
@ -14,5 +14,3 @@ EXTERNAL_FLASH_DEVICES = "W25Q128JV_PM"
|
|||||||
CIRCUITPY_PS2IO = 1
|
CIRCUITPY_PS2IO = 1
|
||||||
# No I2S on SAMD51G.
|
# No I2S on SAMD51G.
|
||||||
CIRCUITPY_AUDIOBUSIO = 0
|
CIRCUITPY_AUDIOBUSIO = 0
|
||||||
# No touch on SAMD51 yet.
|
|
||||||
CIRCUITPY_TOUCHIO = 0
|
|
||||||
|
@ -15,5 +15,3 @@ LONGINT_IMPL = MPZ
|
|||||||
CIRCUITPY_NETWORK = 1
|
CIRCUITPY_NETWORK = 1
|
||||||
MICROPY_PY_WIZNET5K = 5500
|
MICROPY_PY_WIZNET5K = 5500
|
||||||
CIRCUITPY_PS2IO = 1
|
CIRCUITPY_PS2IO = 1
|
||||||
# No touch on SAMD51 yet
|
|
||||||
CIRCUITPY_TOUCHIO = 0
|
|
||||||
|
@ -15,5 +15,3 @@ LONGINT_IMPL = MPZ
|
|||||||
CIRCUITPY_NETWORK = 1
|
CIRCUITPY_NETWORK = 1
|
||||||
MICROPY_PY_WIZNET5K = 5500
|
MICROPY_PY_WIZNET5K = 5500
|
||||||
CIRCUITPY_PS2IO = 1
|
CIRCUITPY_PS2IO = 1
|
||||||
# No touch on SAMD51 yet
|
|
||||||
CIRCUITPY_TOUCHIO = 0
|
|
||||||
|
@ -13,5 +13,3 @@ EXTERNAL_FLASH_DEVICES = "W25Q64JV_IQ, GD25Q64C"
|
|||||||
LONGINT_IMPL = MPZ
|
LONGINT_IMPL = MPZ
|
||||||
|
|
||||||
CIRCUITPY_PS2IO = 1
|
CIRCUITPY_PS2IO = 1
|
||||||
# No touch on SAMD51 yet
|
|
||||||
CIRCUITPY_TOUCHIO = 0
|
|
||||||
|
@ -15,5 +15,3 @@ LONGINT_IMPL = MPZ
|
|||||||
CIRCUITPY_PS2IO = 1
|
CIRCUITPY_PS2IO = 1
|
||||||
# No I2S on SAMD51G
|
# No I2S on SAMD51G
|
||||||
CIRCUITPY_AUDIOBUSIO = 0
|
CIRCUITPY_AUDIOBUSIO = 0
|
||||||
# No touch on SAMD51 yet
|
|
||||||
CIRCUITPY_TOUCHIO = 0
|
|
||||||
|
@ -11,8 +11,6 @@ QSPI_FLASH_FILESYSTEM = 0
|
|||||||
INTERNAL_FLASH_FILESYSTEM = 1
|
INTERNAL_FLASH_FILESYSTEM = 1
|
||||||
LONGINT_IMPL = MPZ
|
LONGINT_IMPL = MPZ
|
||||||
|
|
||||||
# No touch on SAMD51 yet
|
|
||||||
CIRCUITPY_TOUCHIO = 0
|
|
||||||
# Not needed.
|
# Not needed.
|
||||||
CIRCUITPY_AUDIOBUSIO = 0
|
CIRCUITPY_AUDIOBUSIO = 0
|
||||||
CIRCUITPY_DISPLAYIO = 0
|
CIRCUITPY_DISPLAYIO = 0
|
||||||
|
@ -15,5 +15,3 @@ LONGINT_IMPL = MPZ
|
|||||||
CIRCUITPY_NETWORK = 1
|
CIRCUITPY_NETWORK = 1
|
||||||
MICROPY_PY_WIZNET5K = 5500
|
MICROPY_PY_WIZNET5K = 5500
|
||||||
CIRCUITPY_PS2IO = 1
|
CIRCUITPY_PS2IO = 1
|
||||||
# No touch on SAMD51 yet
|
|
||||||
CIRCUITPY_TOUCHIO = 0
|
|
||||||
|
@ -15,5 +15,3 @@ LONGINT_IMPL = MPZ
|
|||||||
CIRCUITPY_NETWORK = 1
|
CIRCUITPY_NETWORK = 1
|
||||||
MICROPY_PY_WIZNET5K = 5500
|
MICROPY_PY_WIZNET5K = 5500
|
||||||
CIRCUITPY_PS2IO = 1
|
CIRCUITPY_PS2IO = 1
|
||||||
# No touch on SAMD51 yet
|
|
||||||
CIRCUITPY_TOUCHIO = 0
|
|
||||||
|
@ -15,5 +15,3 @@ LONGINT_IMPL = MPZ
|
|||||||
CIRCUITPY_PS2IO = 1
|
CIRCUITPY_PS2IO = 1
|
||||||
# No I2S on SAMD51G
|
# No I2S on SAMD51G
|
||||||
CIRCUITPY_AUDIOBUSIO = 0
|
CIRCUITPY_AUDIOBUSIO = 0
|
||||||
# No touch on SAMD51 yet
|
|
||||||
CIRCUITPY_TOUCHIO = 0
|
|
||||||
|
@ -17,7 +17,5 @@ CIRCUITPY_DISPLAYIO = 1
|
|||||||
CIRCUITPY_GAMEPAD = 1
|
CIRCUITPY_GAMEPAD = 1
|
||||||
CIRCUITPY_GAMEPADSHIFT = 1
|
CIRCUITPY_GAMEPADSHIFT = 1
|
||||||
CIRCUITPY_STAGE = 1
|
CIRCUITPY_STAGE = 1
|
||||||
# No touch on SAMD51 yet
|
|
||||||
CIRCUITPY_TOUCHIO = 0
|
|
||||||
|
|
||||||
FROZEN_MPY_DIRS += $(TOP)/frozen/circuitpython-stage/pybadge
|
FROZEN_MPY_DIRS += $(TOP)/frozen/circuitpython-stage/pybadge
|
||||||
|
@ -17,7 +17,5 @@ CIRCUITPY_DISPLAYIO = 1
|
|||||||
CIRCUITPY_GAMEPAD = 1
|
CIRCUITPY_GAMEPAD = 1
|
||||||
CIRCUITPY_GAMEPADSHIFT = 1
|
CIRCUITPY_GAMEPADSHIFT = 1
|
||||||
CIRCUITPY_STAGE = 1
|
CIRCUITPY_STAGE = 1
|
||||||
# No touch on SAMD51 yet
|
|
||||||
CIRCUITPY_TOUCHIO = 0
|
|
||||||
|
|
||||||
FROZEN_MPY_DIRS += $(TOP)/frozen/circuitpython-stage/pybadge
|
FROZEN_MPY_DIRS += $(TOP)/frozen/circuitpython-stage/pybadge
|
||||||
|
@ -17,7 +17,5 @@ CIRCUITPY_DISPLAYIO = 1
|
|||||||
CIRCUITPY_GAMEPAD = 1
|
CIRCUITPY_GAMEPAD = 1
|
||||||
CIRCUITPY_GAMEPADSHIFT = 1
|
CIRCUITPY_GAMEPADSHIFT = 1
|
||||||
CIRCUITPY_STAGE = 1
|
CIRCUITPY_STAGE = 1
|
||||||
# No touch on SAMD51 yet
|
|
||||||
CIRCUITPY_TOUCHIO = 0
|
|
||||||
|
|
||||||
FROZEN_MPY_DIRS += $(TOP)/frozen/circuitpython-stage/pygamer
|
FROZEN_MPY_DIRS += $(TOP)/frozen/circuitpython-stage/pygamer
|
||||||
|
@ -17,7 +17,5 @@ CIRCUITPY_DISPLAYIO = 1
|
|||||||
CIRCUITPY_GAMEPAD = 1
|
CIRCUITPY_GAMEPAD = 1
|
||||||
CIRCUITPY_GAMEPADSHIFT = 1
|
CIRCUITPY_GAMEPADSHIFT = 1
|
||||||
CIRCUITPY_STAGE = 1
|
CIRCUITPY_STAGE = 1
|
||||||
# No touch on SAMD51 yet
|
|
||||||
CIRCUITPY_TOUCHIO = 0
|
|
||||||
|
|
||||||
FROZEN_MPY_DIRS += $(TOP)/frozen/circuitpython-stage/pybadge
|
FROZEN_MPY_DIRS += $(TOP)/frozen/circuitpython-stage/pybadge
|
||||||
|
@ -11,6 +11,3 @@ QSPI_FLASH_FILESYSTEM = 1
|
|||||||
EXTERNAL_FLASH_DEVICE_COUNT = 2
|
EXTERNAL_FLASH_DEVICE_COUNT = 2
|
||||||
EXTERNAL_FLASH_DEVICES = "W25Q64JV_IQ, GD25Q64C"
|
EXTERNAL_FLASH_DEVICES = "W25Q64JV_IQ, GD25Q64C"
|
||||||
LONGINT_IMPL = MPZ
|
LONGINT_IMPL = MPZ
|
||||||
|
|
||||||
# No touch on SAMD51 yet
|
|
||||||
CIRCUITPY_TOUCHIO = 0
|
|
||||||
|
@ -11,6 +11,3 @@ QSPI_FLASH_FILESYSTEM = 1
|
|||||||
EXTERNAL_FLASH_DEVICE_COUNT = 2
|
EXTERNAL_FLASH_DEVICE_COUNT = 2
|
||||||
EXTERNAL_FLASH_DEVICES = "W25Q64JV_IQ, GD25Q64C"
|
EXTERNAL_FLASH_DEVICES = "W25Q64JV_IQ, GD25Q64C"
|
||||||
LONGINT_IMPL = MPZ
|
LONGINT_IMPL = MPZ
|
||||||
|
|
||||||
# No touch on SAMD51 yet
|
|
||||||
CIRCUITPY_TOUCHIO = 0
|
|
||||||
|
@ -17,8 +17,6 @@ LONGINT_IMPL = MPZ
|
|||||||
CIRCUITPY_PS2IO = 1
|
CIRCUITPY_PS2IO = 1
|
||||||
# No I2S on SAMD51G
|
# No I2S on SAMD51G
|
||||||
CIRCUITPY_AUDIOBUSIO = 0
|
CIRCUITPY_AUDIOBUSIO = 0
|
||||||
# No touch on SAMD51 yet
|
|
||||||
CIRCUITPY_TOUCHIO = 0
|
|
||||||
# Make room for more stuff
|
# Make room for more stuff
|
||||||
CIRCUITPY_DISPLAYIO = 0
|
CIRCUITPY_DISPLAYIO = 0
|
||||||
CIRCUITPY_FREQUENCYIO = 0
|
CIRCUITPY_FREQUENCYIO = 0
|
||||||
@ -28,4 +26,3 @@ FROZEN_MPY_DIRS += $(TOP)/frozen/Adafruit_CircuitPython_BusDevice
|
|||||||
FROZEN_MPY_DIRS += $(TOP)/frozen/Adafruit_CircuitPython_NeoPixel
|
FROZEN_MPY_DIRS += $(TOP)/frozen/Adafruit_CircuitPython_NeoPixel
|
||||||
#FROZEN_MPY_DIRS += $(TOP)/frozen/Adafruit_CircuitPython_INA219
|
#FROZEN_MPY_DIRS += $(TOP)/frozen/Adafruit_CircuitPython_INA219
|
||||||
#FROZEN_MPY_DIRS += $(TOP)/frozen/RoboticsMasters_CircuitPython_MPU9250
|
#FROZEN_MPY_DIRS += $(TOP)/frozen/RoboticsMasters_CircuitPython_MPU9250
|
||||||
|
|
||||||
|
@ -9,6 +9,3 @@ CHIP_FAMILY = samd51
|
|||||||
|
|
||||||
INTERNAL_FLASH_FILESYSTEM = 1
|
INTERNAL_FLASH_FILESYSTEM = 1
|
||||||
LONGINT_IMPL = MPZ
|
LONGINT_IMPL = MPZ
|
||||||
|
|
||||||
# No touch on SAMD51 yet
|
|
||||||
CIRCUITPY_TOUCHIO = 0
|
|
||||||
|
@ -15,5 +15,3 @@ LONGINT_IMPL = MPZ
|
|||||||
CIRCUITPY_PS2IO = 1
|
CIRCUITPY_PS2IO = 1
|
||||||
# No I2S on SAMD51G
|
# No I2S on SAMD51G
|
||||||
CIRCUITPY_AUDIOBUSIO = 0
|
CIRCUITPY_AUDIOBUSIO = 0
|
||||||
# No touch on SAMD51 yet
|
|
||||||
CIRCUITPY_TOUCHIO = 0
|
|
||||||
|
@ -34,9 +34,10 @@
|
|||||||
#include "shared-bindings/touchio/TouchIn.h"
|
#include "shared-bindings/touchio/TouchIn.h"
|
||||||
#include "supervisor/shared/translate.h"
|
#include "supervisor/shared/translate.h"
|
||||||
|
|
||||||
|
// Native touchio only exists for SAMD21
|
||||||
#ifdef SAMD21
|
#ifdef SAMD21
|
||||||
|
|
||||||
#include "hpl/pm/hpl_pm_base.h"
|
#include "hpl/pm/hpl_pm_base.h"
|
||||||
#endif
|
|
||||||
|
|
||||||
#include "samd/clocks.h"
|
#include "samd/clocks.h"
|
||||||
#include "samd/pins.h"
|
#include "samd/pins.h"
|
||||||
@ -67,7 +68,6 @@ void common_hal_touchio_touchin_construct(touchio_touchin_obj_t* self,
|
|||||||
claim_pin(pin);
|
claim_pin(pin);
|
||||||
|
|
||||||
// Turn on the PTC if its not in use. We won't turn it off until reset.
|
// Turn on the PTC if its not in use. We won't turn it off until reset.
|
||||||
#ifdef SAMD21
|
|
||||||
if ((( Ptc *) PTC)->CTRLA.bit.ENABLE == 0) {
|
if ((( Ptc *) PTC)->CTRLA.bit.ENABLE == 0) {
|
||||||
// We run the PTC at 8mhz so divide the 48mhz clock by 6.
|
// We run the PTC at 8mhz so divide the 48mhz clock by 6.
|
||||||
uint8_t gclk = find_free_gclk(6);
|
uint8_t gclk = find_free_gclk(6);
|
||||||
@ -96,7 +96,6 @@ void common_hal_touchio_touchin_construct(touchio_touchin_obj_t* self,
|
|||||||
// but for touches using fruit or other objects, the difference is much less.
|
// but for touches using fruit or other objects, the difference is much less.
|
||||||
|
|
||||||
self->threshold = get_raw_reading(self) + 100;
|
self->threshold = get_raw_reading(self) + 100;
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
|
|
||||||
bool common_hal_touchio_touchin_deinited(touchio_touchin_obj_t* self) {
|
bool common_hal_touchio_touchin_deinited(touchio_touchin_obj_t* self) {
|
||||||
@ -141,3 +140,5 @@ uint16_t common_hal_touchio_touchin_get_threshold(touchio_touchin_obj_t *self) {
|
|||||||
void common_hal_touchio_touchin_set_threshold(touchio_touchin_obj_t *self, uint16_t new_threshold) {
|
void common_hal_touchio_touchin_set_threshold(touchio_touchin_obj_t *self, uint16_t new_threshold) {
|
||||||
self->threshold = new_threshold;
|
self->threshold = new_threshold;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#endif // SAMD21
|
||||||
|
@ -27,6 +27,9 @@
|
|||||||
#ifndef MICROPY_INCLUDED_ATMEL_SAMD_COMMON_HAL_TOUCHIO_TOUCHIN_H
|
#ifndef MICROPY_INCLUDED_ATMEL_SAMD_COMMON_HAL_TOUCHIO_TOUCHIN_H
|
||||||
#define MICROPY_INCLUDED_ATMEL_SAMD_COMMON_HAL_TOUCHIO_TOUCHIN_H
|
#define MICROPY_INCLUDED_ATMEL_SAMD_COMMON_HAL_TOUCHIO_TOUCHIN_H
|
||||||
|
|
||||||
|
// Native touchio only exists for SAMD21
|
||||||
|
#ifdef SAMD21
|
||||||
|
|
||||||
#include "common-hal/microcontroller/Pin.h"
|
#include "common-hal/microcontroller/Pin.h"
|
||||||
|
|
||||||
#include "samd21_ptc_component.h"
|
#include "samd21_ptc_component.h"
|
||||||
@ -42,4 +45,6 @@ typedef struct {
|
|||||||
|
|
||||||
void touchin_reset(void);
|
void touchin_reset(void);
|
||||||
|
|
||||||
|
#endif // SAMD21
|
||||||
|
|
||||||
#endif // MICROPY_INCLUDED_ATMEL_SAMD_COMMON_HAL_TOUCHIO_TOUCHIN_H
|
#endif // MICROPY_INCLUDED_ATMEL_SAMD_COMMON_HAL_TOUCHIO_TOUCHIN_H
|
||||||
|
@ -18,11 +18,13 @@ endif
|
|||||||
ifeq ($(CHIP_FAMILY),samd21)
|
ifeq ($(CHIP_FAMILY),samd21)
|
||||||
# frequencyio not yet verified as working on SAMD21.
|
# frequencyio not yet verified as working on SAMD21.
|
||||||
CIRCUITPY_FREQUENCYIO = 0
|
CIRCUITPY_FREQUENCYIO = 0
|
||||||
|
CIRCUITPY_TOUCHIO_USE_NATIVE = 1
|
||||||
endif
|
endif
|
||||||
|
|
||||||
# Put samd51-only choices here.
|
# Put samd51-only choices here.
|
||||||
ifeq ($(CHIP_FAMILY),samd51)
|
ifeq ($(CHIP_FAMILY),samd51)
|
||||||
CIRCUITPY_SAMD = 1
|
CIRCUITPY_SAMD = 1
|
||||||
|
CIRCUITPY_TOUCHIO_USE_NATIVE = 0
|
||||||
endif
|
endif
|
||||||
|
|
||||||
INTERNAL_LIBM = 1
|
INTERNAL_LIBM = 1
|
||||||
|
@ -54,7 +54,11 @@
|
|||||||
#include "common-hal/pulseio/PWMOut.h"
|
#include "common-hal/pulseio/PWMOut.h"
|
||||||
#include "common-hal/ps2io/Ps2.h"
|
#include "common-hal/ps2io/Ps2.h"
|
||||||
#include "common-hal/rtc/RTC.h"
|
#include "common-hal/rtc/RTC.h"
|
||||||
|
|
||||||
|
#if CIRCUITPY_TOUCHIO_USE_NATIVE
|
||||||
#include "common-hal/touchio/TouchIn.h"
|
#include "common-hal/touchio/TouchIn.h"
|
||||||
|
#endif
|
||||||
|
|
||||||
#include "samd/cache.h"
|
#include "samd/cache.h"
|
||||||
#include "samd/clocks.h"
|
#include "samd/clocks.h"
|
||||||
#include "samd/events.h"
|
#include "samd/events.h"
|
||||||
@ -211,7 +215,7 @@ void reset_port(void) {
|
|||||||
//pdmin_reset();
|
//pdmin_reset();
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if CIRCUITPY_TOUCHIO
|
#if CIRCUITPY_TOUCHIO && CIRCUITPY_TOUCHIO_USE_NATIVE
|
||||||
touchin_reset();
|
touchin_reset();
|
||||||
#endif
|
#endif
|
||||||
eic_reset();
|
eic_reset();
|
||||||
|
@ -217,9 +217,8 @@ ifeq ($(CIRCUITPY_PEW),1)
|
|||||||
SRC_PATTERNS += _pew/%
|
SRC_PATTERNS += _pew/%
|
||||||
endif
|
endif
|
||||||
|
|
||||||
# All possible sources are listed here, and are filtered by SRC_PATTERNS.
|
# All possible sources are listed here, and are filtered by SRC_PATTERNS in SRC_COMMON_HAL
|
||||||
SRC_COMMON_HAL = \
|
SRC_COMMON_HAL_ALL = \
|
||||||
$(filter $(SRC_PATTERNS), \
|
|
||||||
analogio/AnalogIn.c \
|
analogio/AnalogIn.c \
|
||||||
analogio/AnalogOut.c \
|
analogio/AnalogOut.c \
|
||||||
analogio/__init__.c \
|
analogio/__init__.c \
|
||||||
@ -272,10 +271,9 @@ $(filter $(SRC_PATTERNS), \
|
|||||||
rtc/__init__.c \
|
rtc/__init__.c \
|
||||||
supervisor/Runtime.c \
|
supervisor/Runtime.c \
|
||||||
supervisor/__init__.c \
|
supervisor/__init__.c \
|
||||||
time/__init__.c \
|
time/__init__.c
|
||||||
touchio/TouchIn.c \
|
|
||||||
touchio/__init__.c \
|
SRC_COMMON_HAL = $(filter $(SRC_PATTERNS), $(SRC_COMMON_HAL_ALL))
|
||||||
)
|
|
||||||
|
|
||||||
# These don't have corresponding files in each port but are still located in
|
# These don't have corresponding files in each port but are still located in
|
||||||
# shared-bindings to make it clear what the contents of the modules are.
|
# shared-bindings to make it clear what the contents of the modules are.
|
||||||
@ -298,9 +296,7 @@ SRC_BINDINGS_ENUMS += \
|
|||||||
help.c \
|
help.c \
|
||||||
util.c
|
util.c
|
||||||
|
|
||||||
# All possible sources are listed here, and are filtered by SRC_PATTERNS.
|
SRC_SHARED_MODULE_ALL = \
|
||||||
SRC_SHARED_MODULE = \
|
|
||||||
$(filter $(SRC_PATTERNS), \
|
|
||||||
_pixelbuf/PixelBuf.c \
|
_pixelbuf/PixelBuf.c \
|
||||||
_pixelbuf/__init__.c \
|
_pixelbuf/__init__.c \
|
||||||
_stage/Layer.c \
|
_stage/Layer.c \
|
||||||
@ -349,8 +345,23 @@ $(filter $(SRC_PATTERNS), \
|
|||||||
uheap/__init__.c \
|
uheap/__init__.c \
|
||||||
ustack/__init__.c \
|
ustack/__init__.c \
|
||||||
_pew/__init__.c \
|
_pew/__init__.c \
|
||||||
_pew/PewPew.c \
|
_pew/PewPew.c
|
||||||
)
|
|
||||||
|
# All possible sources are listed here, and are filtered by SRC_PATTERNS.
|
||||||
|
SRC_SHARED_MODULE = $(filter $(SRC_PATTERNS), $(SRC_SHARED_MODULE_ALL))
|
||||||
|
|
||||||
|
# Use the native touchio if requested. This flag is set conditionally in, say, mpconfigport.h.
|
||||||
|
# The presence of common-hal/touchio/* # does not imply it's available for all chips in a port,
|
||||||
|
# so there is an explicit flag. For example, SAMD21 touchio is native, but SAMD51 is not.
|
||||||
|
ifeq ($(CIRCUITPY_TOUCHIO_USE_NATIVE),1)
|
||||||
|
SRC_COMMON_HAL_ALL += \
|
||||||
|
touchio/TouchIn.c \
|
||||||
|
touchio/__init__.c
|
||||||
|
else
|
||||||
|
SRC_SHARED_MODULE_ALL += \
|
||||||
|
touchio/TouchIn.c \
|
||||||
|
touchio/__init__.c
|
||||||
|
endif
|
||||||
|
|
||||||
ifeq ($(INTERNAL_LIBM),1)
|
ifeq ($(INTERNAL_LIBM),1)
|
||||||
SRC_LIBM = \
|
SRC_LIBM = \
|
||||||
|
@ -235,6 +235,12 @@ CIRCUITPY_TIME = $(CIRCUITPY_DEFAULT_BUILD)
|
|||||||
endif
|
endif
|
||||||
CFLAGS += -DCIRCUITPY_TIME=$(CIRCUITPY_TIME)
|
CFLAGS += -DCIRCUITPY_TIME=$(CIRCUITPY_TIME)
|
||||||
|
|
||||||
|
# touchio might be native or generic. See circuitpy_defns.mk.
|
||||||
|
ifndef CIRCUITPY_TOUCHIO_USE_NATIVE
|
||||||
|
CIRCUITPY_TOUCHIO_USE_NATIVE = 0
|
||||||
|
endif
|
||||||
|
CFLAGS += -DCIRCUITPY_TOUCHIO_USE_NATIVE=$(CIRCUITPY_TOUCHIO_USE_NATIVE)
|
||||||
|
|
||||||
ifndef CIRCUITPY_TOUCHIO
|
ifndef CIRCUITPY_TOUCHIO
|
||||||
CIRCUITPY_TOUCHIO = $(CIRCUITPY_DEFAULT_BUILD)
|
CIRCUITPY_TOUCHIO = $(CIRCUITPY_DEFAULT_BUILD)
|
||||||
endif
|
endif
|
||||||
|
@ -28,7 +28,12 @@
|
|||||||
#define MICROPY_INCLUDED_SHARED_BINDINGS_TOUCHIO_TOUCHIN_H
|
#define MICROPY_INCLUDED_SHARED_BINDINGS_TOUCHIO_TOUCHIN_H
|
||||||
|
|
||||||
#include "common-hal/microcontroller/Pin.h"
|
#include "common-hal/microcontroller/Pin.h"
|
||||||
|
|
||||||
|
#if CIRCUITPY_TOUCHIO_USE_NATIVE
|
||||||
#include "common-hal/touchio/TouchIn.h"
|
#include "common-hal/touchio/TouchIn.h"
|
||||||
|
#else
|
||||||
|
#include "shared-module/touchio/TouchIn.h"
|
||||||
|
#endif
|
||||||
|
|
||||||
extern const mp_obj_type_t touchio_touchin_type;
|
extern const mp_obj_type_t touchio_touchin_type;
|
||||||
|
|
||||||
|
@ -28,15 +28,9 @@
|
|||||||
#include <string.h>
|
#include <string.h>
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
|
|
||||||
#include "py/nlr.h"
|
|
||||||
#include "py/mperrno.h"
|
|
||||||
#include "py/runtime.h"
|
#include "py/runtime.h"
|
||||||
#include "py/binary.h"
|
|
||||||
#include "py/mphal.h"
|
#include "py/mphal.h"
|
||||||
#include "shared-bindings/touchio/TouchIn.h"
|
#include "shared-bindings/touchio/TouchIn.h"
|
||||||
#include "supervisor/shared/translate.h"
|
|
||||||
|
|
||||||
#include "nrf.h"
|
|
||||||
|
|
||||||
// This is a capacitive touch sensing routine using a single digital
|
// This is a capacitive touch sensing routine using a single digital
|
||||||
// pin. The pin should be connected to the sensing pad, and to ground
|
// pin. The pin should be connected to the sensing pad, and to ground
|
||||||
@ -57,15 +51,14 @@ static uint16_t get_raw_reading(touchio_touchin_obj_t *self) {
|
|||||||
for (uint16_t i = 0; i < N_SAMPLES; i++) {
|
for (uint16_t i = 0; i < N_SAMPLES; i++) {
|
||||||
// set pad to digital output high for 10us to charge it
|
// set pad to digital output high for 10us to charge it
|
||||||
|
|
||||||
nrf_gpio_cfg_output(self->pin->number);
|
common_hal_digitalio_digitalinout_switch_to_output(self->digitalinout, true, DRIVE_MODE_PUSH_PULL);
|
||||||
nrf_gpio_pin_set(self->pin->number);
|
|
||||||
mp_hal_delay_us(10);
|
mp_hal_delay_us(10);
|
||||||
|
|
||||||
// set pad back to an input and take some samples
|
// set pad back to an input and take some samples
|
||||||
|
|
||||||
nrf_gpio_cfg_input(self->pin->number, NRF_GPIO_PIN_NOPULL);
|
common_hal_digitalio_digitalinout_switch_to_input(self->digitalinout, PULL_NONE);
|
||||||
|
|
||||||
while(nrf_gpio_pin_read(self->pin->number)) {
|
while(common_hal_digitalio_digitalinout_get_value(self->digitalinout)) {
|
||||||
if (ticks >= TIMEOUT_TICKS) return TIMEOUT_TICKS;
|
if (ticks >= TIMEOUT_TICKS) return TIMEOUT_TICKS;
|
||||||
ticks++;
|
ticks++;
|
||||||
}
|
}
|
||||||
@ -73,16 +66,17 @@ static uint16_t get_raw_reading(touchio_touchin_obj_t *self) {
|
|||||||
return ticks;
|
return ticks;
|
||||||
}
|
}
|
||||||
|
|
||||||
void common_hal_touchio_touchin_construct(touchio_touchin_obj_t* self,
|
void common_hal_touchio_touchin_construct(touchio_touchin_obj_t* self, const mcu_pin_obj_t *pin) {
|
||||||
const mcu_pin_obj_t *pin) {
|
self->digitalinout = m_new_obj(digitalio_digitalinout_obj_t);
|
||||||
self->pin = pin;
|
self->digitalinout->base.type = &digitalio_digitalinout_type;
|
||||||
claim_pin(pin);
|
|
||||||
|
common_hal_digitalio_digitalinout_construct(self->digitalinout, pin);
|
||||||
|
|
||||||
self->threshold = get_raw_reading(self) * 1.05 + 100;
|
self->threshold = get_raw_reading(self) * 1.05 + 100;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool common_hal_touchio_touchin_deinited(touchio_touchin_obj_t* self) {
|
bool common_hal_touchio_touchin_deinited(touchio_touchin_obj_t* self) {
|
||||||
return self->pin == NULL;
|
return self->digitalinout == MP_OBJ_NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
void common_hal_touchio_touchin_deinit(touchio_touchin_obj_t* self) {
|
void common_hal_touchio_touchin_deinit(touchio_touchin_obj_t* self) {
|
||||||
@ -90,8 +84,8 @@ void common_hal_touchio_touchin_deinit(touchio_touchin_obj_t* self) {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
reset_pin_number(self->pin->number);
|
common_hal_digitalio_digitalinout_deinit(self->digitalinout);
|
||||||
self->pin = NULL;
|
self->digitalinout = MP_OBJ_NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
void touchin_reset() {
|
void touchin_reset() {
|
@ -25,19 +25,20 @@
|
|||||||
* THE SOFTWARE.
|
* THE SOFTWARE.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#ifndef MICROPY_INCLUDED_NRF_COMMON_HAL_TOUCHIO_TOUCHIN_H
|
#ifndef MICROPY_INCLUDED_SHARED_MODULE_TOUCHIO_TOUCHIN_H
|
||||||
#define MICROPY_INCLUDED_NRF_COMMON_HAL_TOUCHIO_TOUCHIN_H
|
#define MICROPY_INCLUDED_SHARED_MODULE_TOUCHIO_TOUCHIN_H
|
||||||
|
|
||||||
#include "common-hal/microcontroller/Pin.h"
|
#include "common-hal/microcontroller/Pin.h"
|
||||||
|
#include "shared-bindings/digitalio/DigitalInOut.h"
|
||||||
|
|
||||||
#include "py/obj.h"
|
#include "py/obj.h"
|
||||||
|
|
||||||
typedef struct {
|
typedef struct {
|
||||||
mp_obj_base_t base;
|
mp_obj_base_t base;
|
||||||
const mcu_pin_obj_t *pin;
|
digitalio_digitalinout_obj_t *digitalinout;
|
||||||
uint16_t threshold;
|
uint16_t threshold;
|
||||||
} touchio_touchin_obj_t;
|
} touchio_touchin_obj_t;
|
||||||
|
|
||||||
void touchin_reset(void);
|
void touchin_reset(void);
|
||||||
|
|
||||||
#endif // MICROPY_INCLUDED_NRF_COMMON_HAL_TOUCHIO_TOUCHIN_H
|
#endif // MICROPY_INCLUDED_SHARED_MODULE_TOUCHIO_TOUCHIN_H
|
Loading…
Reference in New Issue
Block a user