From: twa127 <46624596+twa127@users.noreply.github.com> Date: Sat, 19 Dec 2020 20:16:06 +0000 (+0000) Subject: Merge pull request #1 from adafruit/master X-Git-Tag: 5.9.2~1^2~1 X-Git-Url: https://git.ayoreis.com/Adafruit_Blinka-hackapet.git/commitdiff_plain/1a7e2819f86fee2f3f4b829d325ad059b1f14e31?hp=294537307c7e94239781c3abde86acb36b3e69f6 Merge pull request #1 from adafruit/master Merge --- diff --git a/README.rst b/README.rst index 24db28b..40df1a9 100755 --- a/README.rst +++ b/README.rst @@ -6,7 +6,7 @@ Introduction :alt: Documentation Status .. image:: https://img.shields.io/discord/327254708534116352.svg - :target: https://discord.gg/nBQh6qu + :target: https://adafru.it/discord :alt: Discord .. image:: https://travis-ci.com/adafruit/Adafruit_Blinka.svg?branch=master @@ -26,8 +26,10 @@ on hosts running micropython. Working code exists to emulate the CircuitPython p * **digitalio** - digital input/output pins, using pin identities from board+microcontroller packages * **bitbangio** - software-driven interfaces for I2C, SPI * **busio** - hardware-driven interfaces for I2C, SPI, UART -* **time** * - substitute functions monkey-patched to time module +* **pulseio** - contains classes that provide access to basic pulse IO (PWM) +For details, see the `Blinka API reference +`_. Dependencies ============= @@ -97,7 +99,7 @@ install dependencies (feel free to reuse the virtual environment from above): python3 -m venv .env source .env/bin/activate - pip install Sphinx sphinx-rtd-theme + pip install Sphinx sphinx-rtd-theme Adafruit-PlatformDetect Now, once you have the virtual environment activated: diff --git a/docs/api.rst b/docs/api.rst index 66bca16..61e9bbe 100755 --- a/docs/api.rst +++ b/docs/api.rst @@ -24,3 +24,14 @@ .. automodule:: digitalio :members: + +.. automodule:: analogio + :members: + +.. automodule:: pulseio + :members: + +.. automodule:: neopixel_write + :members: + + diff --git a/docs/conf.py b/docs/conf.py index cadf23f..c51cebd 100755 --- a/docs/conf.py +++ b/docs/conf.py @@ -19,7 +19,14 @@ extensions = [ # Uncomment the below if you use native CircuitPython modules such as # digitalio, micropython and busio. List the modules you use. Without it, the # autodoc module docs will fail to generate with a warning. -autodoc_mock_imports = ["machine", "Adafruit_GPIO"] +autodoc_mock_imports = [ + "machine", + "Adafruit_GPIO", + "RPi", + "RPi.GPIO", + "hid", + "sysv_ipc", +] intersphinx_mapping = { "python": ("https://docs.python.org/3.4", None), diff --git a/src/adafruit_blinka/board/coral_dev_board.py b/src/adafruit_blinka/board/coral_dev_board.py new file mode 100644 index 0000000..fd860d2 --- /dev/null +++ b/src/adafruit_blinka/board/coral_dev_board.py @@ -0,0 +1,24 @@ +"""Pin definitions for the Coral Dev Board.""" + +from adafruit_blinka.microcontroller.nxp_imx8m import pin + +# Board name = RPI name [= alias] = pin name +I2C2_SDA = D2 = SDA = pin.I2C2_SDA +I2C2_SCL = D3 = SCL = pin.I2C2_SCL + +PWM1 = D12 = pin.PWM1 +PWM2 = D13 = pin.PWM2 +PWM3 = D22 = pin.PWM3 + +GPIO_P13 = D27 = pin.GPIO6 +GPIO_P16 = D23 = pin.GPIO73 +GPIO_P18 = D24 = pin.GPIO138 +GPIO_P29 = D5 = pin.GPIO7 +GPIO_P31 = D6 = pin.GPIO8 +GPIO_P36 = D16 = pin.GPIO141 +GPIO_P37 = D26 = pin.GPIO77 + +ECSPI1_MISO = D9 = MISO = pin.ECSPI1_MISO +ECSPI1_MOSI = D10 = MOSI = pin.ECSPI1_MOSI +ECSPI1_SCLK = D11 = SCLK = SCK = pin.ECSPI1_SCLK +ECSPI1_SS0 = D8 = SS0 = pin.ECSPI1_SS0 diff --git a/src/adafruit_blinka/board/coral_dev_board_mini.py b/src/adafruit_blinka/board/coral_dev_board_mini.py new file mode 100644 index 0000000..b0b425c --- /dev/null +++ b/src/adafruit_blinka/board/coral_dev_board_mini.py @@ -0,0 +1,38 @@ +"""Pin definitions for the Coral Dev Board Mini.""" + +from adafruit_blinka.microcontroller.mt8167 import pin + +# Board name = RPI name [= alias] = pin name +GPIO22 = D4 = pin.GPIO22 # Pin 7 +GPIO9 = D17 = pin.GPIO9 # Pin 11 +GPIO36 = D18 = pin.GPIO36 # Pin 12 +GPIO10 = D27 = pin.GPIO10 # Pin 13 +GPIO0 = D23 = pin.GPIO0 # Pin 16 +GPIO1 = D24 = pin.GPIO1 # Pin 18 +GPIO7 = D25 = pin.GPIO7 # Pin 22 +GPIO8 = D7 = pin.GPIO8 # Pin 26 +GPIO37 = D19 = pin.GPIO37 # Pin 35 +GPIO13 = D16 = pin.GPIO13 # Pin 36 +GPIO45 = D26 = pin.GPIO45 # Pin 37 +GPIO38 = D20 = pin.GPIO38 # Pin 38 +GPIO39 = D21 = pin.GPIO39 # Pin 40 + +I2C1_SDA = D2 = SDA1 = pin.I2C1_SDA # Pin 3 +I2C1_SCL = D3 = SCL1 = pin.I2C1_SCL # Pin 5 +I2C2_SDA = D0 = SDA2 = pin.I2C2_SDA # Pin 27 +I2C2_SCL = D1 = SCL2 = pin.I2C2_SCL # Pin 28 + +PWM_A = D12 = pin.PWM_A # Pin 32 +PWM_B = D13 = pin.PWM_B # Pin 33 +PWM_C = D22 = pin.PWM_C # Pin 15 + +SPI_MO = D10 = MOSI = pin.SPI_MO # Pin 19 +SPI_MI = D9 = MISO = pin.SPI_MI # Pin 21 +SPI_CLK = D11 = SCLK = pin.SPI_CLK # Pin 23 +SPI_CSB = D8 = CS0 = pin.SPI_CSB # Pin 24 + +# UART currently not supported +GPIO63 = D14 = pin.GPIO63 # UART0_TX, Pin 8 +GPIO62 = D15 = pin.GPIO62 # UART0_RX, Pin 10 +GPIO65 = D5 = pin.GPIO65 # UART1_TX, Pin 29 +GPIO64 = D6 = pin.GPIO64 # UART1_RX, Pin 31 diff --git a/src/adafruit_blinka/board/coral_edge_tpu.py b/src/adafruit_blinka/board/coral_edge_tpu.py deleted file mode 100644 index 667e245..0000000 --- a/src/adafruit_blinka/board/coral_edge_tpu.py +++ /dev/null @@ -1,24 +0,0 @@ -"""Pin definitions for the Coral Edge TPU Dev board.""" - -from adafruit_blinka.microcontroller.nxp_imx8m import pin - -SDA = pin.I2C2_SDA -SCL = pin.I2C2_SCL - -PWM1 = pin.PWM1 -PWM2 = pin.PWM2 -PWM3 = pin.PWM3 - -GPIO_P13 = pin.GPIO6 -GPIO_P16 = pin.GPIO73 -GPIO_P18 = pin.GPIO138 -GPIO_P29 = pin.GPIO7 -GPIO_P31 = pin.GPIO8 -GPIO_P36 = pin.GPIO141 -GPIO_P37 = pin.GPIO77 - -MISO = pin.ECSPI1_MISO -MOSI = pin.ECSPI1_MOSI -SCLK = pin.ECSPI1_SCLK -SCK = pin.ECSPI1_SCLK -SS0 = pin.ECSPI1_SS0 diff --git a/src/adafruit_blinka/board/pineH64.py b/src/adafruit_blinka/board/pineH64.py new file mode 100644 index 0000000..9a51362 --- /dev/null +++ b/src/adafruit_blinka/board/pineH64.py @@ -0,0 +1,41 @@ +"""Pin definitions for the PineH64.""" + +from adafruit_blinka.microcontroller.allwinner.h6 import pin + +D2 = pin.PD26 +D3 = pin.PD25 +D4 = pin.PL8 +D5 = pin.PH2 +D6 = pin.PG14 +D7 = pin.PC16 +D8 = pin.PH3 +D9 = pin.PH6 +D10 = pin.PH5 +D11 = pin.PH4 +D12 = pin.PD22 +D13 = pin.PD21 +D14 = pin.PD19 +D15 = pin.PD20 +D16 = pin.PD24 +D17 = pin.PL9 +D18 = pin.PG11 +D19 = pin.PG10 +D21 = pin.PG12 +D22 = pin.PG13 +D23 = pin.PD16 +D24 = pin.PD17 +D25 = pin.PD18 +D26 = pin.PD23 +D27 = pin.PD14 + +SDA = D2 +SCL = D3 + +SCLK = D11 +MOSI = D10 +MISO = D9 +CS = D8 +SCK = SCLK + +UART_TX = D14 +UART_RX = D15 diff --git a/src/adafruit_blinka/board/soPine.py b/src/adafruit_blinka/board/soPine.py new file mode 100644 index 0000000..00ba5b6 --- /dev/null +++ b/src/adafruit_blinka/board/soPine.py @@ -0,0 +1,51 @@ +"""Pin definitions for the SoPine.""" + +from adafruit_blinka.microcontroller.allwinner.a64 import pin + +D2 = pin.PH3 +D3 = pin.PH2 +D4 = pin.PL10 +D5 = pin.PH5 +D6 = pin.PH6 +D7 = pin.PH7 +D8 = pin.PC3 +D9 = pin.PC1 +D10 = pin.PC0 +D11 = pin.PC2 +D12 = pin.PC4 +D13 = pin.PC5 +D14 = pin.PB0 +D15 = pin.PB1 +D16 = pin.PC6 +D17 = pin.PC7 +D18 = pin.PC8 +D19 = pin.PC9 +D20 = pin.PC10 +D21 = pin.PC11 +D22 = pin.PC12 +D23 = pin.PC13 +D24 = pin.PC14 +D25 = pin.PC15 +D26 = pin.PC16 +D27 = pin.PH9 + +SDA = D2 +SCL = D3 + +SCL2 = pin.PL8 +SDA2 = pin.PL9 + +SCLK = D11 +MOSI = D10 +MISO = D9 +CS = D8 +SCK = SCLK + +UART_TX = D14 +UART_RX = D15 + +UART3_TX = pin.PD0 +UART3_RX = pin.PD1 + +UART4_TX = pin.PD2 +UART4_RX = pin.PD3 diff --git a/src/adafruit_blinka/microcontroller/allwinner/h6/__init__.py b/src/adafruit_blinka/microcontroller/allwinner/h6/__init__.py new file mode 100644 index 0000000..0eabf00 --- /dev/null +++ b/src/adafruit_blinka/microcontroller/allwinner/h6/__init__.py @@ -0,0 +1 @@ +"""Definition for the AllWinner H6 chip""" diff --git a/src/adafruit_blinka/microcontroller/allwinner/h6/pin.py b/src/adafruit_blinka/microcontroller/allwinner/h6/pin.py new file mode 100644 index 0000000..af944e3 --- /dev/null +++ b/src/adafruit_blinka/microcontroller/allwinner/h6/pin.py @@ -0,0 +1,47 @@ +"""Allwinner H6 Pin Names""" +from adafruit_blinka.microcontroller.generic_linux.libgpiod_pin import Pin + +PC16 = Pin((1, 79)) + +PD14 = Pin((1, 110)) +PD15 = Pin((1, 111)) +PD16 = Pin((1, 112)) +PD17 = Pin((1, 113)) +PD18 = Pin((1, 114)) +PD19 = Pin((1, 115)) +UART2_TX = PD19 +PD20 = Pin((1, 116)) +UART2_RX = PD20 +PD21 = Pin((1, 117)) +PD22 = Pin((1, 118)) +PD23 = Pin((1, 119)) +PD24 = Pin((1, 120)) +PD25 = Pin((1, 121)) +TWI0_SCL = PD25 +PD26 = Pin((1, 122)) +TWI0_SDA = PD26 + +PG10 = Pin((1, 202)) +PG11 = Pin((1, 203)) +PG12 = Pin((1, 204)) +PG13 = Pin((1, 205)) +PG14 = Pin((1, 206)) + +PH2 = Pin((1, 226)) +PH3 = Pin((1, 227)) +SPI1_CS = PH3 +PH4 = Pin((1, 228)) +SPI1_SCLK = PH4 +PH5 = Pin((1, 229)) +SPI1_MOSI = PH5 +PH6 = Pin((1, 230)) +SPI1_MISO = PH6 +PH8 = Pin((1, 230)) +PH9 = Pin((1, 231)) + +PL8 = Pin((1, 360)) +PL9 = Pin((1, 361)) + +i2cPorts = ((0, TWI0_SCL, TWI0_SDA),) +spiPorts = ((0, SPI1_SCLK, SPI1_MOSI, SPI1_MISO),) +uartPorts = ((2, UART2_TX, UART2_RX),) diff --git a/src/adafruit_blinka/microcontroller/bcm283x/pulseio/PulseIn.py b/src/adafruit_blinka/microcontroller/bcm283x/pulseio/PulseIn.py index aef942a..19dc98f 100644 --- a/src/adafruit_blinka/microcontroller/bcm283x/pulseio/PulseIn.py +++ b/src/adafruit_blinka/microcontroller/bcm283x/pulseio/PulseIn.py @@ -70,26 +70,29 @@ class PulseIn: # wait for it to start up if DEBUG: print("Waiting for startup success message from subprocess") - message = self._wait_receive_msg() + message = self._wait_receive_msg(timeout=0.25) if message[0] != b"!": raise RuntimeError("Could not establish message queue with subprocess") self._paused = False # pylint: disable=redefined-builtin - def _wait_receive_msg(self, timeout=0.25, type=2): + def _wait_receive_msg(self, timeout=0, type=2): """Internal helper that will wait for new messages of a given type, and throw an exception on timeout""" - stamp = time.monotonic() - while (time.monotonic() - stamp) < timeout: - try: - message = self._mq.receive(block=False, type=type) - return message - except sysv_ipc.BusyError: - time.sleep(0.001) # wait a bit then retry! - # uh-oh timed out - raise RuntimeError( - "Timed out waiting for PulseIn message. Make sure libgpiod is installed." - ) + if timeout > 0: + stamp = time.monotonic() + while (time.monotonic() - stamp) < timeout: + try: + message = self._mq.receive(block=False, type=type) + return message + except sysv_ipc.BusyError: + time.sleep(0.001) # wait a bit then retry! + # uh-oh timed out + raise RuntimeError( + "Timed out waiting for PulseIn message. Make sure libgpiod is installed." + ) + message = self._mq.receive(block=True, type=type) + return message # pylint: enable=redefined-builtin diff --git a/src/adafruit_blinka/microcontroller/generic_linux/sysfs_pwmout.py b/src/adafruit_blinka/microcontroller/generic_linux/sysfs_pwmout.py index 4fc8e23..f751b71 100644 --- a/src/adafruit_blinka/microcontroller/generic_linux/sysfs_pwmout.py +++ b/src/adafruit_blinka/microcontroller/generic_linux/sysfs_pwmout.py @@ -5,6 +5,8 @@ License: MIT """ import os +from time import sleep +from errno import EACCES try: from microcontroller.pin import pwmOuts @@ -25,6 +27,11 @@ class PWMError(IOError): class PWMOut: """Pulse Width Modulation Output Class""" + # Number of retries to check for successful PWM export on open + PWM_STAT_RETRIES = 10 + # Delay between check for scucessful PWM export on open (100ms) + PWM_STAT_DELAY = 0.1 + # Sysfs paths _sysfs_path = "/sys/class/pwm/" _channel_path = "pwmchip{}" @@ -109,6 +116,25 @@ class PWMOut: except IOError as e: raise PWMError(e.errno, "Exporting PWM pin: " + e.strerror) from IOError + # Loop until 'period' is writable, because application of udev rules + # after the above pin export is asynchronous. + # Without this loop, the following properties may not be writable yet. + for i in range(PWMOut.PWM_STAT_RETRIES): + try: + with open( + os.path.join( + channel_path, self._pin_path.format(self._pwmpin), "period" + ), + "w", + ): + break + except IOError as e: + if e.errno != EACCES or ( + e.errno == EACCES and i == PWMOut.PWM_STAT_RETRIES - 1 + ): + raise PWMError(e.errno, "Opening PWM period: " + e.strerror) from e + sleep(PWMOut.PWM_STAT_DELAY) + # self._set_enabled(False) # This line causes a write error when trying to enable # Look up the period, for fast duty cycle updates diff --git a/src/adafruit_blinka/microcontroller/mt8167/__init__.py b/src/adafruit_blinka/microcontroller/mt8167/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/src/adafruit_blinka/microcontroller/mt8167/pin.py b/src/adafruit_blinka/microcontroller/mt8167/pin.py new file mode 100644 index 0000000..ff5e0e5 --- /dev/null +++ b/src/adafruit_blinka/microcontroller/mt8167/pin.py @@ -0,0 +1,64 @@ +"""MediaTek MT8167 pin names""" +from adafruit_blinka.microcontroller.generic_linux.libgpiod_pin import Pin + +# All pins +GPIO52 = Pin(52) # SDA1 (pin 3) +GPIO53 = Pin(53) # SCL1 (pin 5) +GPIO22 = Pin(22) # EINT22 (pin 7) +GPIO63 = Pin(63) # UTXD0 (pin 8) +GPIO62 = Pin(62) # URXD0 (pin 10) +GPIO9 = Pin(9) # EINT9 (pin 11) +GPIO36 = Pin(36) # MRG_CLK (pin 12) +GPIO10 = Pin(10) # EINT10 (pin 13) +GPIO11 = Pin(11) # EINT11 (pin 15) +GPIO0 = Pin(0) # EINT0 (pin 16) +GPIO1 = Pin(1) # EINT1 (pin 18) +GPIO4 = Pin(4) # EINT4 (pin 19) +GPIO3 = Pin(3) # EINT3 (pin 21) +GPIO7 = Pin(7) # EINT7 (pin 22) +GPIO6 = Pin(6) # EINT6 (pin 23) +GPIO5 = Pin(5) # EINT5 (pin 24) +GPIO8 = Pin(8) # EINT8 (pin 26) +GPIO60 = Pin(60) # SDA2 (pin 27) +GPIO61 = Pin(61) # SCL2 (pin 28) +GPIO65 = Pin(65) # UTXD1 (pin 29) +GPIO64 = Pin(64) # URXD1 (pin 31) +GPIO12 = Pin(12) # EINT12 (pin 32) +GPIO25 = Pin(25) # EINT25 (pin 33) +GPIO37 = Pin(37) # MRG_SYNC (pin 35) +GPIO13 = Pin(13) # EINT13 (pin 36) +GPIO45 = Pin(45) # JTCLK (pin 37) +GPIO38 = Pin(38) # MRG_DI (pin 38) +GPIO39 = Pin(39) # MRG_DO (pin 40) + +# Aliases +PWM_A = GPIO25 # EINT12 (pin 32) +PWM_B = GPIO11 # EINT25 (pin 33) +PWM_C = GPIO12 # EINT11 (pin 15) + +I2C1_SDA = GPIO52 # SDA1 (pin 3) +I2C1_SCL = GPIO53 # SCL1 (pin 5) + +I2C2_SDA = GPIO60 # SDA2 (pin 27) +I2C2_SCL = GPIO61 # SCL2 (pin 28) + +SPI_MO = GPIO4 # EINT4 (pin 19) +SPI_MI = GPIO3 # EINT3 (pin 21) +SPI_CLK = GPIO6 # EINT6 (pin 23) +SPI_CSB = GPIO5 # EINT5 (pin 24) + +# SysFS pwm outputs, pwm channel and pin in first tuple +pwmOuts = ( + ((0, 0), PWM_A), + ((0, 1), PWM_B), + ((0, 2), PWM_C), +) + +# ordered as i2cId, sclId, sdaId +i2cPorts = ( + (3, I2C1_SCL, I2C1_SDA), + (0, I2C2_SCL, I2C2_SDA), +) + +# ordered as spiId, sckId, mosiId, misoId +spiPorts = ((0, SPI_CLK, SPI_MO, SPI_MI),) diff --git a/src/analogio.py b/src/analogio.py index f126ef3..97323e4 100644 --- a/src/analogio.py +++ b/src/analogio.py @@ -1,10 +1,14 @@ """ `analogio` - Analog input and output control -================================================= +============================================ See `CircuitPython:analogio` in CircuitPython for more details. +Not supported by all boards. + * Author(s): Carter Nelson, Melissa LeBlanc-Williams """ +import sys + from adafruit_blinka.agnostic import detector # pylint: disable=ungrouped-imports,wrong-import-position,unused-import @@ -17,5 +21,7 @@ elif detector.board.greatfet_one: from adafruit_blinka.microcontroller.nxp_lpc4330.analogio import AnalogOut elif detector.chip.RK3308: from adafruit_blinka.microcontroller.generic_linux.sysfs_analogin import AnalogIn +elif "sphinx" in sys.modules: + pass else: raise NotImplementedError("analogio not supported for this board.") diff --git a/src/board.py b/src/board.py index 9710f67..63c41e1 100755 --- a/src/board.py +++ b/src/board.py @@ -121,7 +121,10 @@ elif board_id == ap_board.CLARA_AGX_XAVIER: from adafruit_blinka.board.nvidia.clara_agx_xavier import * elif board_id == ap_board.CORAL_EDGE_TPU_DEV: - from adafruit_blinka.board.coral_edge_tpu import * + from adafruit_blinka.board.coral_dev_board import * + +elif board_id == ap_board.CORAL_EDGE_TPU_DEV_MINI: + from adafruit_blinka.board.coral_dev_board_mini import * elif board_id == ap_board.ODROID_C2: from adafruit_blinka.board.hardkernel.odroidc2 import * @@ -156,6 +159,12 @@ elif board_id == ap_board.SIFIVE_UNLEASHED: elif board_id == ap_board.PINE64: from adafruit_blinka.board.pine64 import * +elif board_id == ap_board.PINEH64: + from adafruit_blinka.board.pineH64 import * + +elif board_id == ap_board.SOPINE: + from adafruit_blinka.board.soPine import * + elif board_id == ap_board.CLOCKWORK_CPI3: from adafruit_blinka.board.clockworkcpi3 import * diff --git a/src/busio.py b/src/busio.py index 1cad051..35e7c88 100755 --- a/src/busio.py +++ b/src/busio.py @@ -210,6 +210,9 @@ class SPI(Lockable): elif board_id == ap_board.CORAL_EDGE_TPU_DEV: from adafruit_blinka.microcontroller.nxp_imx8m.pin import Pin from adafruit_blinka.microcontroller.generic_linux.spi import SPI as _SPI + elif board_id == ap_board.CORAL_EDGE_TPU_DEV_MINI: + from adafruit_blinka.microcontroller.mt8167.pin import Pin + from adafruit_blinka.microcontroller.generic_linux.spi import SPI as _SPI elif board_id == ap_board.ODROID_C2: from adafruit_blinka.microcontroller.amlogic.s905.pin import Pin from adafruit_blinka.microcontroller.generic_linux.spi import SPI as _SPI @@ -252,7 +255,12 @@ class SPI(Lockable): elif detector.board.greatfet_one: from adafruit_blinka.microcontroller.nxp_lpc4330.spi import SPI as _SPI from adafruit_blinka.microcontroller.nxp_lpc4330.pin import Pin - elif board_id in (ap_board.PINE64, ap_board.PINEBOOK, ap_board.PINEPHONE): + elif board_id in ( + ap_board.PINE64, + ap_board.PINEBOOK, + ap_board.PINEPHONE, + ap_board.SOPINE, + ): from adafruit_blinka.microcontroller.allwinner.a64.pin import Pin from adafruit_blinka.microcontroller.generic_linux.spi import SPI as _SPI elif board_id == ap_board.CLOCKWORK_CPI3: diff --git a/src/digitalio.py b/src/digitalio.py index 080abbf..0ed3ab4 100755 --- a/src/digitalio.py +++ b/src/digitalio.py @@ -1,6 +1,6 @@ """ -`digitalio` - Digital input and output control -================================================= +`digitalio` - Digital input and output control (GPIO) +===================================================== See `CircuitPython:digitalio` in CircuitPython for more details. @@ -61,6 +61,8 @@ elif detector.chip.PENTIUM_N3710: from adafruit_blinka.microcontroller.pentium.n3710.pin import Pin elif detector.chip.STM32MP157: from adafruit_blinka.microcontroller.stm32.stm32mp157.pin import Pin +elif detector.chip.MT8167: + from adafruit_blinka.microcontroller.mt8167.pin import Pin from adafruit_blinka import Enum, ContextManaged diff --git a/src/microcontroller/__init__.py b/src/microcontroller/__init__.py index afca22a..8f352e5 100755 --- a/src/microcontroller/__init__.py +++ b/src/microcontroller/__init__.py @@ -82,5 +82,7 @@ elif chip_id == ap_chip.PENTIUM_N3710: from adafruit_blinka.microcontroller.pentium.n3710.pin import * elif chip_id == ap_chip.STM32MP157: from adafruit_blinka.microcontroller.stm32.stm32mp157.pin import * +elif chip_id == ap_chip.MT8167: + from adafruit_blinka.microcontroller.mt8167.pin import * else: raise NotImplementedError("Microcontroller not supported:", chip_id) diff --git a/src/microcontroller/pin.py b/src/microcontroller/pin.py index fe89bd9..3e5a6e2 100755 --- a/src/microcontroller/pin.py +++ b/src/microcontroller/pin.py @@ -60,5 +60,7 @@ elif chip_id == ap_chip.PENTIUM_N3710: from adafruit_blinka.microcontroller.pentium.n3710.pin import * elif chip_id == ap_chip.STM32MP157: from adafruit_blinka.microcontroller.stm32.stm32mp157.pin import * +elif chip_id == ap_chip.MT8167: + from adafruit_blinka.microcontroller.mt8167.pin import * else: raise NotImplementedError("Microcontroller not supported: ", chip_id) diff --git a/src/neopixel_write.py b/src/neopixel_write.py index 5626bc6..2c85f01 100644 --- a/src/neopixel_write.py +++ b/src/neopixel_write.py @@ -1,8 +1,9 @@ """ `neopixel_write` - NeoPixel precision timed writing support -================================================= +=========================================================== See `CircuitPython:neopixel_write` in CircuitPython for more details. +Currently supported on Raspberry Pi only. * Author(s): ladyada """ diff --git a/src/pulseio.py b/src/pulseio.py index 7c53457..848ff14 100644 --- a/src/pulseio.py +++ b/src/pulseio.py @@ -1,10 +1,14 @@ """ -`pulseio` - Pulse Width Modulation Input and Output control -================================================= +`pulseio` - Pulse Width Modulation input and output control +=========================================================== See `CircuitPython:pulseio` in CircuitPython for more details. +Not supported by all boards. + * Author(s): Melissa LeBlanc-Williams """ +import sys + from adafruit_blinka.agnostic import detector # pylint: disable=unused-import @@ -12,15 +16,19 @@ from adafruit_blinka.agnostic import detector if detector.board.any_raspberry_pi: from adafruit_blinka.microcontroller.bcm283x.pulseio.PulseIn import PulseIn from adafruit_blinka.microcontroller.bcm283x.pulseio.PWMOut import PWMOut -if detector.board.any_coral_board: +elif detector.board.any_coral_board: from adafruit_blinka.microcontroller.generic_linux.sysfs_pwmout import PWMOut -if detector.board.any_giant_board: +elif detector.board.any_giant_board: from adafruit_blinka.microcontroller.generic_linux.sysfs_pwmout import PWMOut -if detector.board.any_beaglebone: +elif detector.board.any_beaglebone: from adafruit_blinka.microcontroller.am335x.sysfs_pwmout import PWMOut -if detector.board.any_rock_pi_board: +elif detector.board.any_rock_pi_board: from adafruit_blinka.microcontroller.generic_linux.sysfs_pwmout import PWMOut -if detector.board.binho_nova: +elif detector.board.binho_nova: from adafruit_blinka.microcontroller.nova.pwmout import PWMOut -if detector.board.greatfet_one: +elif detector.board.greatfet_one: from adafruit_blinka.microcontroller.nxp_lpc4330.pwmout import PWMOut +elif "sphinx" in sys.modules: + pass +else: + raise NotImplementedError("pulseio not supported for this board.")