Merge branch 'mimxrt-uart-oneway' into mimxrt-busio-cleanup
This commit is contained in:
commit
a59798ed49
5
.github/workflows/build.yml
vendored
5
.github/workflows/build.yml
vendored
@ -180,10 +180,12 @@ jobs:
|
||||
- "feather_nrf52840_express"
|
||||
- "feather_radiofruit_zigbee"
|
||||
- "feather_stm32f405_express"
|
||||
- "fluff_m0"
|
||||
- "gemma_m0"
|
||||
- "grandcentral_m4_express"
|
||||
- "hallowing_m0_express"
|
||||
- "hallowing_m4_express"
|
||||
- "hiibot_bluefi"
|
||||
- "imxrt1010_evk"
|
||||
- "imxrt1020_evk"
|
||||
- "imxrt1060_evk"
|
||||
@ -389,9 +391,8 @@ jobs:
|
||||
id: idf-cache
|
||||
with:
|
||||
path: ${{ github.workspace }}/.idf_tools
|
||||
key: ${{ runner.os }}-idf-tools-${{ hashFiles('.git/modules/ports/esp32s2/esp-idf/HEAD') }}
|
||||
key: ${{ runner.os }}-idf-tools-${{ hashFiles('.git/modules/ports/esp32s2/esp-idf/HEAD') }}-20200523
|
||||
- name: Install IDF tools
|
||||
if: steps.idf-cache.outputs.cache-hit != 'true'
|
||||
run: |
|
||||
$IDF_PATH/tools/idf_tools.py --non-interactive install required
|
||||
$IDF_PATH/tools/idf_tools.py --non-interactive install cmake
|
||||
|
6
Makefile
6
Makefile
@ -210,6 +210,12 @@ locale/circuitpython.pot: all-source
|
||||
translate: locale/circuitpython.pot
|
||||
for po in $(shell ls locale/*.po); do msgmerge -U $$po -s --no-fuzzy-matching --add-location=file locale/circuitpython.pot; done
|
||||
|
||||
merge-translate:
|
||||
git merge HEAD 1>&2 2> /dev/null; test $$? -eq 128
|
||||
rm locale/*~ || true
|
||||
git checkout --ours -- locale/*
|
||||
make translate
|
||||
|
||||
check-translate: locale/circuitpython.pot $(wildcard locale/*.po)
|
||||
$(PYTHON) tools/check_translations.py $^
|
||||
|
||||
|
@ -24,49 +24,11 @@
|
||||
import json
|
||||
import os
|
||||
import re
|
||||
import subprocess
|
||||
import sys
|
||||
|
||||
|
||||
SUPPORTED_PORTS = ["atmel-samd", "nrf", "stm", "mimxrt10xx"]
|
||||
|
||||
|
||||
def parse_port_config(contents, chip_keyword=None):
|
||||
""" Compile a dictionary of port-wide module configs, which may
|
||||
be categorized by chipset.
|
||||
"""
|
||||
chip_fam = "all"
|
||||
ifeq_found = False
|
||||
port_config_results = {"all": []}
|
||||
|
||||
chip_pattern = ""
|
||||
if chip_keyword:
|
||||
chip_pattern = (
|
||||
re.compile("(?<=ifeq\s\(\$\({}\)\,)(\w+)".format(chip_keyword))
|
||||
)
|
||||
|
||||
for line in contents:
|
||||
if chip_keyword:
|
||||
if not ifeq_found:
|
||||
check_ifeq = chip_pattern.search(line)
|
||||
if check_ifeq:
|
||||
ifeq_found = True
|
||||
chip_fam = check_ifeq.group(1)
|
||||
#print("found chip:", chip_fam)
|
||||
else:
|
||||
ifeq_found = False
|
||||
chip_fam = "all"
|
||||
else:
|
||||
if "endif" in line:
|
||||
ifeq_found = False
|
||||
chip_fam = "all"
|
||||
|
||||
if "CIRCUITPY_" in line:
|
||||
if chip_fam in port_config_results:
|
||||
port_config_results[chip_fam].append(line.rstrip("\n"))
|
||||
else:
|
||||
port_config_results[chip_fam] = [line.rstrip("\n")]
|
||||
|
||||
#print(port_config_results)
|
||||
return port_config_results
|
||||
SUPPORTED_PORTS = ['atmel-samd', 'esp32s2', 'litex', 'mimxrt10xx', 'nrf', 'stm']
|
||||
|
||||
def get_shared_bindings():
|
||||
""" Get a list of modules in shared-bindings based on folder names
|
||||
@ -117,149 +79,64 @@ def build_module_map():
|
||||
"excluded": {}
|
||||
}
|
||||
|
||||
#print(base)
|
||||
return base
|
||||
|
||||
def get_settings_from_makefile(port_dir, board_name):
|
||||
""" Invoke make in a mode which prints the database, then parse it for
|
||||
settings.
|
||||
|
||||
def get_excluded_boards(base):
|
||||
""" Cycles through each board's `mpconfigboard.mk` file to determine
|
||||
if each module is included or not. Boards are selected by existence
|
||||
in a port listed in `SUPPORTED_PORTS` (e.g. `/port/nrf/feather_52840`)
|
||||
|
||||
Boards are further categorized by their respective chipset (SAMD21,
|
||||
SAMD51, nRF52840, etc.)
|
||||
This means that the effect of all Makefile directives is taken
|
||||
into account, without having to re-encode the logic that sets them
|
||||
in this script, something that has proved error-prone
|
||||
"""
|
||||
modules = list(base.keys())
|
||||
contents = subprocess.run(
|
||||
["make", "-C", port_dir, f"BOARD={board_name}", "-qp", "print-CC"],
|
||||
encoding="utf-8",
|
||||
errors="replace",
|
||||
stdout=subprocess.PIPE,
|
||||
stderr=subprocess.PIPE
|
||||
)
|
||||
# Make signals errors with exit status 2; 0 and 1 are "non-error" statuses
|
||||
if contents.returncode not in (0, 1):
|
||||
error_msg = (
|
||||
f"Invoking '{' '.join(contents.args)}' exited with "
|
||||
f"{contents.returncode}: {contents.stderr}"
|
||||
)
|
||||
raise RuntimeError(error_msg)
|
||||
|
||||
re_board_chip = None
|
||||
chip_keyword = None
|
||||
for port in SUPPORTED_PORTS:
|
||||
# each port appears to use its own define for the chipset
|
||||
if port in ["atmel-samd"]:
|
||||
re_board_chip = re.compile("CHIP_FAMILY\s=\s(\w+)")
|
||||
chip_keyword = "CHIP_FAMILY"
|
||||
elif port in ["nrf"]:
|
||||
re_board_chip = re.compile(r"MCU_VARIANT\s=\s(\w+)")
|
||||
elif port in ["stm"]:
|
||||
re_board_chip = re.compile(r"MCU_SERIES\s*=\s*(\w+)")
|
||||
chip_keyword = "MCU_SERIES"
|
||||
settings = {}
|
||||
for line in contents.stdout.split('\n'):
|
||||
m = re.match(r'^([A-Z][A-Z0-9_]*) = (.*)$', line)
|
||||
if m:
|
||||
settings[m.group(1)] = m.group(2)
|
||||
|
||||
port_dir = "ports/{}".format(port)
|
||||
return settings
|
||||
|
||||
port_config_contents = ""
|
||||
with open(os.path.join(port_dir, "mpconfigport.mk")) as port_config:
|
||||
port_config_contents = port_config.readlines()
|
||||
port_config = parse_port_config(port_config_contents, chip_keyword)
|
||||
|
||||
for entry in os.scandir(os.path.join(port_dir, "boards")):
|
||||
if not entry.is_dir():
|
||||
continue
|
||||
|
||||
contents = ""
|
||||
board_dir = os.path.join(entry.path, "mpconfigboard.mk")
|
||||
with open(board_dir) as board:
|
||||
contents = board.read()
|
||||
|
||||
board_chip = re_board_chip.search(contents)
|
||||
if not board_chip:
|
||||
board_chip = "Unknown Chip"
|
||||
else:
|
||||
#print(entry.name, board_chip.group(1))
|
||||
board_chip = board_chip.group(1)
|
||||
|
||||
# add port_config results to contents
|
||||
contents += "\n" + "\n".join(port_config["all"])
|
||||
if board_chip in port_config:
|
||||
contents += "\n" + "\n".join(port_config[board_chip])
|
||||
|
||||
check_dependent_modules = dict()
|
||||
for module in modules:
|
||||
board_is_excluded = False
|
||||
# check if board turns off `FULL_BUILD`. if yes, and current
|
||||
# module is marked as `FULL_BUILD`, board is excluded
|
||||
small_build = re.search("CIRCUITPY_FULL_BUILD = 0", contents)
|
||||
if small_build and base[module]["full_build"] == "1":
|
||||
board_is_excluded = True
|
||||
|
||||
# check if module is specifically disabled for this board
|
||||
re_pattern = r"CIRCUITPY_{}\s=\s(\w)".format(module.upper())
|
||||
find_module = re.search(re_pattern, contents)
|
||||
if not find_module:
|
||||
if base[module]["default_value"].isdigit():
|
||||
# check if default inclusion is off ('0'). if the board doesn't
|
||||
# have it explicitly enabled, its excluded.
|
||||
if base[module]["default_value"] == "0":
|
||||
board_is_excluded = True
|
||||
else:
|
||||
# this module is dependent on another module. add it
|
||||
# to the list to check after processing all other modules.
|
||||
# only need to check exclusion if it isn't already excluded.
|
||||
if (not board_is_excluded and
|
||||
base[module]["default_value"] not in [
|
||||
"None",
|
||||
"CIRCUITPY_DEFAULT_BUILD"
|
||||
]):
|
||||
check_dependent_modules[module] = base[module]["default_value"]
|
||||
else:
|
||||
board_is_excluded = find_module.group(1) == "0"
|
||||
|
||||
if board_is_excluded:
|
||||
if board_chip in base[module]["excluded"]:
|
||||
base[module]["excluded"][board_chip].append(entry.name)
|
||||
else:
|
||||
base[module]["excluded"][board_chip] = [entry.name]
|
||||
|
||||
for module in check_dependent_modules:
|
||||
depend_results = set()
|
||||
|
||||
parents = check_dependent_modules[module].split("CIRCUITPY_")
|
||||
parents = [item.strip(", ").lower() for item in parents if item]
|
||||
|
||||
for parent in parents:
|
||||
if parent in base:
|
||||
if (board_chip in base[parent]["excluded"] and
|
||||
entry.name in base[parent]["excluded"][board_chip]):
|
||||
depend_results.add(False)
|
||||
else:
|
||||
depend_results.add(True)
|
||||
|
||||
# only exclude the module if there were zero parents enabled
|
||||
# as determined by the 'depend_results' set.
|
||||
if not any(depend_results):
|
||||
if board_chip in base[module]["excluded"]:
|
||||
base[module]["excluded"][board_chip].append(entry.name)
|
||||
else:
|
||||
base[module]["excluded"][board_chip] = [entry.name]
|
||||
|
||||
#print(json.dumps(base, indent=2))
|
||||
return base
|
||||
|
||||
|
||||
def support_matrix_excluded_boards():
|
||||
""" Compiles a list of available modules, and which board definitions
|
||||
do not include them.
|
||||
"""
|
||||
base = build_module_map()
|
||||
|
||||
return get_excluded_boards(base)
|
||||
def lookup_setting(settings, key, default=''):
|
||||
while True:
|
||||
value = settings.get(key, default)
|
||||
if not value.startswith('$'):
|
||||
break
|
||||
key = value[2:-1]
|
||||
return value
|
||||
|
||||
def support_matrix_by_board():
|
||||
""" Compiles a list of the available core modules available for each
|
||||
board.
|
||||
"""
|
||||
base = build_module_map()
|
||||
base_with_exclusions = get_excluded_boards(base)
|
||||
|
||||
boards = dict()
|
||||
for port in SUPPORTED_PORTS:
|
||||
|
||||
port_dir = "ports/{}/boards".format(port)
|
||||
for entry in os.scandir(port_dir):
|
||||
if not entry.is_dir():
|
||||
continue
|
||||
board_modules = []
|
||||
|
||||
board_name = entry.name
|
||||
board_contents = ""
|
||||
settings = get_settings_from_makefile(f'ports/{port}', entry.name)
|
||||
|
||||
with open(os.path.join(entry.path, "mpconfigboard.h")) as get_name:
|
||||
board_contents = get_name.read()
|
||||
board_name_re = re.search("(?<=MICROPY_HW_BOARD_NAME)\s+(.+)",
|
||||
@ -267,18 +144,15 @@ def support_matrix_by_board():
|
||||
if board_name_re:
|
||||
board_name = board_name_re.group(1).strip('"')
|
||||
|
||||
for module in base_with_exclusions.keys():
|
||||
#print(module)
|
||||
board_has_module = True
|
||||
if base_with_exclusions[module]["excluded"]:
|
||||
for port in base_with_exclusions[module]["excluded"].values():
|
||||
#print(port)
|
||||
if entry.name in port:
|
||||
board_has_module = False
|
||||
|
||||
if board_has_module:
|
||||
board_modules.append(base_with_exclusions[module]["name"])
|
||||
board_modules = []
|
||||
for module in base:
|
||||
key = f'CIRCUITPY_{module.upper()}'
|
||||
if int(lookup_setting(settings, key, '0')):
|
||||
board_modules.append(base[module]['name'])
|
||||
boards[board_name] = sorted(board_modules)
|
||||
|
||||
#print(json.dumps(boards, indent=2))
|
||||
return boards
|
||||
|
||||
if __name__ == '__main__':
|
||||
print(json.dumps(support_matrix_by_board(), indent=2))
|
||||
|
@ -1 +1 @@
|
||||
Subproject commit 76bf96bcb0c12ba241ee4ecc175afb257e550d19
|
||||
Subproject commit dc5445e2f45cb348a44fe24fc1be4bc8b5ba5bab
|
17
locale/ID.po
17
locale/ID.po
@ -8,7 +8,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: PACKAGE VERSION\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2020-05-21 11:18-0400\n"
|
||||
"POT-Creation-Date: 2020-05-27 11:55-0400\n"
|
||||
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"Language-Team: LANGUAGE <LL@li.org>\n"
|
||||
@ -895,11 +895,11 @@ msgstr ""
|
||||
msgid "Invalid PWM frequency"
|
||||
msgstr "Frekuensi PWM tidak valid"
|
||||
|
||||
#: ports/mimxrt10xx/common-hal/busio/SPI.c ports/stm/common-hal/busio/SPI.c
|
||||
#: ports/stm/common-hal/busio/SPI.c
|
||||
msgid "Invalid SPI pin selection"
|
||||
msgstr ""
|
||||
|
||||
#: ports/mimxrt10xx/common-hal/busio/UART.c ports/stm/common-hal/busio/UART.c
|
||||
#: ports/stm/common-hal/busio/UART.c
|
||||
msgid "Invalid UART pin selection"
|
||||
msgstr ""
|
||||
|
||||
@ -975,7 +975,8 @@ msgstr "Pin untuk channel kanan tidak valid"
|
||||
#: ports/atmel-samd/common-hal/busio/UART.c
|
||||
#: ports/atmel-samd/common-hal/i2cslave/I2CSlave.c
|
||||
#: ports/cxd56/common-hal/busio/I2C.c ports/cxd56/common-hal/busio/SPI.c
|
||||
#: ports/cxd56/common-hal/busio/UART.c ports/nrf/common-hal/busio/I2C.c
|
||||
#: ports/cxd56/common-hal/busio/UART.c ports/mimxrt10xx/common-hal/busio/SPI.c
|
||||
#: ports/mimxrt10xx/common-hal/busio/UART.c ports/nrf/common-hal/busio/I2C.c
|
||||
msgid "Invalid pins"
|
||||
msgstr "Pin-pin tidak valid"
|
||||
|
||||
@ -1086,10 +1087,6 @@ msgstr ""
|
||||
msgid "Name too long"
|
||||
msgstr ""
|
||||
|
||||
#: shared-bindings/_pixelbuf/PixelBuf.c
|
||||
msgid "Negative step not supported"
|
||||
msgstr ""
|
||||
|
||||
#: ports/nrf/common-hal/_bleio/Characteristic.c
|
||||
msgid "No CCCD for this Characteristic"
|
||||
msgstr ""
|
||||
@ -1253,6 +1250,10 @@ msgstr ""
|
||||
msgid "Pin does not have ADC capabilities"
|
||||
msgstr "Pin tidak mempunya kemampuan untuk ADC (Analog Digital Converter)"
|
||||
|
||||
#: shared-bindings/digitalio/DigitalInOut.c
|
||||
msgid "Pin is input only"
|
||||
msgstr ""
|
||||
|
||||
#: ports/atmel-samd/common-hal/countio/Counter.c
|
||||
msgid "Pin must support hardware interrupts"
|
||||
msgstr ""
|
||||
|
@ -8,7 +8,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: PACKAGE VERSION\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2020-05-21 11:18-0400\n"
|
||||
"POT-Creation-Date: 2020-05-27 11:55-0400\n"
|
||||
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"Language-Team: LANGUAGE <LL@li.org>\n"
|
||||
@ -884,11 +884,11 @@ msgstr ""
|
||||
msgid "Invalid PWM frequency"
|
||||
msgstr ""
|
||||
|
||||
#: ports/mimxrt10xx/common-hal/busio/SPI.c ports/stm/common-hal/busio/SPI.c
|
||||
#: ports/stm/common-hal/busio/SPI.c
|
||||
msgid "Invalid SPI pin selection"
|
||||
msgstr ""
|
||||
|
||||
#: ports/mimxrt10xx/common-hal/busio/UART.c ports/stm/common-hal/busio/UART.c
|
||||
#: ports/stm/common-hal/busio/UART.c
|
||||
msgid "Invalid UART pin selection"
|
||||
msgstr ""
|
||||
|
||||
@ -964,7 +964,8 @@ msgstr ""
|
||||
#: ports/atmel-samd/common-hal/busio/UART.c
|
||||
#: ports/atmel-samd/common-hal/i2cslave/I2CSlave.c
|
||||
#: ports/cxd56/common-hal/busio/I2C.c ports/cxd56/common-hal/busio/SPI.c
|
||||
#: ports/cxd56/common-hal/busio/UART.c ports/nrf/common-hal/busio/I2C.c
|
||||
#: ports/cxd56/common-hal/busio/UART.c ports/mimxrt10xx/common-hal/busio/SPI.c
|
||||
#: ports/mimxrt10xx/common-hal/busio/UART.c ports/nrf/common-hal/busio/I2C.c
|
||||
msgid "Invalid pins"
|
||||
msgstr ""
|
||||
|
||||
@ -1075,10 +1076,6 @@ msgstr ""
|
||||
msgid "Name too long"
|
||||
msgstr ""
|
||||
|
||||
#: shared-bindings/_pixelbuf/PixelBuf.c
|
||||
msgid "Negative step not supported"
|
||||
msgstr ""
|
||||
|
||||
#: ports/nrf/common-hal/_bleio/Characteristic.c
|
||||
msgid "No CCCD for this Characteristic"
|
||||
msgstr ""
|
||||
@ -1241,6 +1238,10 @@ msgstr ""
|
||||
msgid "Pin does not have ADC capabilities"
|
||||
msgstr ""
|
||||
|
||||
#: shared-bindings/digitalio/DigitalInOut.c
|
||||
msgid "Pin is input only"
|
||||
msgstr ""
|
||||
|
||||
#: ports/atmel-samd/common-hal/countio/Counter.c
|
||||
msgid "Pin must support hardware interrupts"
|
||||
msgstr ""
|
||||
|
17
locale/cs.po
17
locale/cs.po
@ -8,7 +8,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: PACKAGE VERSION\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2020-05-21 11:18-0400\n"
|
||||
"POT-Creation-Date: 2020-05-27 11:55-0400\n"
|
||||
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"Language-Team: LANGUAGE <LL@li.org>\n"
|
||||
@ -884,11 +884,11 @@ msgstr ""
|
||||
msgid "Invalid PWM frequency"
|
||||
msgstr ""
|
||||
|
||||
#: ports/mimxrt10xx/common-hal/busio/SPI.c ports/stm/common-hal/busio/SPI.c
|
||||
#: ports/stm/common-hal/busio/SPI.c
|
||||
msgid "Invalid SPI pin selection"
|
||||
msgstr ""
|
||||
|
||||
#: ports/mimxrt10xx/common-hal/busio/UART.c ports/stm/common-hal/busio/UART.c
|
||||
#: ports/stm/common-hal/busio/UART.c
|
||||
msgid "Invalid UART pin selection"
|
||||
msgstr ""
|
||||
|
||||
@ -964,7 +964,8 @@ msgstr ""
|
||||
#: ports/atmel-samd/common-hal/busio/UART.c
|
||||
#: ports/atmel-samd/common-hal/i2cslave/I2CSlave.c
|
||||
#: ports/cxd56/common-hal/busio/I2C.c ports/cxd56/common-hal/busio/SPI.c
|
||||
#: ports/cxd56/common-hal/busio/UART.c ports/nrf/common-hal/busio/I2C.c
|
||||
#: ports/cxd56/common-hal/busio/UART.c ports/mimxrt10xx/common-hal/busio/SPI.c
|
||||
#: ports/mimxrt10xx/common-hal/busio/UART.c ports/nrf/common-hal/busio/I2C.c
|
||||
msgid "Invalid pins"
|
||||
msgstr ""
|
||||
|
||||
@ -1075,10 +1076,6 @@ msgstr ""
|
||||
msgid "Name too long"
|
||||
msgstr ""
|
||||
|
||||
#: shared-bindings/_pixelbuf/PixelBuf.c
|
||||
msgid "Negative step not supported"
|
||||
msgstr ""
|
||||
|
||||
#: ports/nrf/common-hal/_bleio/Characteristic.c
|
||||
msgid "No CCCD for this Characteristic"
|
||||
msgstr ""
|
||||
@ -1241,6 +1238,10 @@ msgstr ""
|
||||
msgid "Pin does not have ADC capabilities"
|
||||
msgstr ""
|
||||
|
||||
#: shared-bindings/digitalio/DigitalInOut.c
|
||||
msgid "Pin is input only"
|
||||
msgstr ""
|
||||
|
||||
#: ports/atmel-samd/common-hal/countio/Counter.c
|
||||
msgid "Pin must support hardware interrupts"
|
||||
msgstr ""
|
||||
|
@ -7,7 +7,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: \n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2020-05-21 11:18-0400\n"
|
||||
"POT-Creation-Date: 2020-05-27 11:55-0400\n"
|
||||
"PO-Revision-Date: 2020-05-18 02:48+0000\n"
|
||||
"Last-Translator: Jeff Epler <jepler@gmail.com>\n"
|
||||
"Language-Team: German <https://later.unpythonic.net/projects/circuitpython/"
|
||||
@ -899,11 +899,11 @@ msgstr ""
|
||||
msgid "Invalid PWM frequency"
|
||||
msgstr "Ungültige PWM Frequenz"
|
||||
|
||||
#: ports/mimxrt10xx/common-hal/busio/SPI.c ports/stm/common-hal/busio/SPI.c
|
||||
#: ports/stm/common-hal/busio/SPI.c
|
||||
msgid "Invalid SPI pin selection"
|
||||
msgstr ""
|
||||
|
||||
#: ports/mimxrt10xx/common-hal/busio/UART.c ports/stm/common-hal/busio/UART.c
|
||||
#: ports/stm/common-hal/busio/UART.c
|
||||
msgid "Invalid UART pin selection"
|
||||
msgstr ""
|
||||
|
||||
@ -979,7 +979,8 @@ msgstr "Ungültiger Pin für rechten Kanal"
|
||||
#: ports/atmel-samd/common-hal/busio/UART.c
|
||||
#: ports/atmel-samd/common-hal/i2cslave/I2CSlave.c
|
||||
#: ports/cxd56/common-hal/busio/I2C.c ports/cxd56/common-hal/busio/SPI.c
|
||||
#: ports/cxd56/common-hal/busio/UART.c ports/nrf/common-hal/busio/I2C.c
|
||||
#: ports/cxd56/common-hal/busio/UART.c ports/mimxrt10xx/common-hal/busio/SPI.c
|
||||
#: ports/mimxrt10xx/common-hal/busio/UART.c ports/nrf/common-hal/busio/I2C.c
|
||||
msgid "Invalid pins"
|
||||
msgstr "Ungültige Pins"
|
||||
|
||||
@ -1091,10 +1092,6 @@ msgstr ""
|
||||
msgid "Name too long"
|
||||
msgstr ""
|
||||
|
||||
#: shared-bindings/_pixelbuf/PixelBuf.c
|
||||
msgid "Negative step not supported"
|
||||
msgstr ""
|
||||
|
||||
#: ports/nrf/common-hal/_bleio/Characteristic.c
|
||||
msgid "No CCCD for this Characteristic"
|
||||
msgstr "Kein CCCD für diese Charakteristik"
|
||||
@ -1263,6 +1260,10 @@ msgstr "Zugang verweigert"
|
||||
msgid "Pin does not have ADC capabilities"
|
||||
msgstr "Pin hat keine ADC Funktionalität"
|
||||
|
||||
#: shared-bindings/digitalio/DigitalInOut.c
|
||||
msgid "Pin is input only"
|
||||
msgstr ""
|
||||
|
||||
#: ports/atmel-samd/common-hal/countio/Counter.c
|
||||
msgid "Pin must support hardware interrupts"
|
||||
msgstr ""
|
||||
|
@ -7,7 +7,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: \n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2020-05-21 11:18-0400\n"
|
||||
"POT-Creation-Date: 2020-05-27 11:55-0400\n"
|
||||
"PO-Revision-Date: 2018-07-27 11:55-0700\n"
|
||||
"Last-Translator: \n"
|
||||
"Language-Team: \n"
|
||||
@ -884,11 +884,11 @@ msgstr ""
|
||||
msgid "Invalid PWM frequency"
|
||||
msgstr ""
|
||||
|
||||
#: ports/mimxrt10xx/common-hal/busio/SPI.c ports/stm/common-hal/busio/SPI.c
|
||||
#: ports/stm/common-hal/busio/SPI.c
|
||||
msgid "Invalid SPI pin selection"
|
||||
msgstr ""
|
||||
|
||||
#: ports/mimxrt10xx/common-hal/busio/UART.c ports/stm/common-hal/busio/UART.c
|
||||
#: ports/stm/common-hal/busio/UART.c
|
||||
msgid "Invalid UART pin selection"
|
||||
msgstr ""
|
||||
|
||||
@ -964,7 +964,8 @@ msgstr ""
|
||||
#: ports/atmel-samd/common-hal/busio/UART.c
|
||||
#: ports/atmel-samd/common-hal/i2cslave/I2CSlave.c
|
||||
#: ports/cxd56/common-hal/busio/I2C.c ports/cxd56/common-hal/busio/SPI.c
|
||||
#: ports/cxd56/common-hal/busio/UART.c ports/nrf/common-hal/busio/I2C.c
|
||||
#: ports/cxd56/common-hal/busio/UART.c ports/mimxrt10xx/common-hal/busio/SPI.c
|
||||
#: ports/mimxrt10xx/common-hal/busio/UART.c ports/nrf/common-hal/busio/I2C.c
|
||||
msgid "Invalid pins"
|
||||
msgstr ""
|
||||
|
||||
@ -1075,10 +1076,6 @@ msgstr ""
|
||||
msgid "Name too long"
|
||||
msgstr ""
|
||||
|
||||
#: shared-bindings/_pixelbuf/PixelBuf.c
|
||||
msgid "Negative step not supported"
|
||||
msgstr ""
|
||||
|
||||
#: ports/nrf/common-hal/_bleio/Characteristic.c
|
||||
msgid "No CCCD for this Characteristic"
|
||||
msgstr ""
|
||||
@ -1241,6 +1238,10 @@ msgstr ""
|
||||
msgid "Pin does not have ADC capabilities"
|
||||
msgstr ""
|
||||
|
||||
#: shared-bindings/digitalio/DigitalInOut.c
|
||||
msgid "Pin is input only"
|
||||
msgstr ""
|
||||
|
||||
#: ports/atmel-samd/common-hal/countio/Counter.c
|
||||
msgid "Pin must support hardware interrupts"
|
||||
msgstr ""
|
||||
|
@ -7,7 +7,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: \n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2020-05-21 11:18-0400\n"
|
||||
"POT-Creation-Date: 2020-05-27 11:55-0400\n"
|
||||
"PO-Revision-Date: 2020-03-30 22:11+0000\n"
|
||||
"Last-Translator: Tannewt <devnull@unpythonic.net>\n"
|
||||
"Language-Team: English <https://later.unpythonic.net/projects/circuitpython/"
|
||||
@ -893,11 +893,11 @@ msgstr ""
|
||||
msgid "Invalid PWM frequency"
|
||||
msgstr ""
|
||||
|
||||
#: ports/mimxrt10xx/common-hal/busio/SPI.c ports/stm/common-hal/busio/SPI.c
|
||||
#: ports/stm/common-hal/busio/SPI.c
|
||||
msgid "Invalid SPI pin selection"
|
||||
msgstr ""
|
||||
|
||||
#: ports/mimxrt10xx/common-hal/busio/UART.c ports/stm/common-hal/busio/UART.c
|
||||
#: ports/stm/common-hal/busio/UART.c
|
||||
msgid "Invalid UART pin selection"
|
||||
msgstr ""
|
||||
|
||||
@ -973,7 +973,8 @@ msgstr "Belay that! Invalid pin for starboard-side channel"
|
||||
#: ports/atmel-samd/common-hal/busio/UART.c
|
||||
#: ports/atmel-samd/common-hal/i2cslave/I2CSlave.c
|
||||
#: ports/cxd56/common-hal/busio/I2C.c ports/cxd56/common-hal/busio/SPI.c
|
||||
#: ports/cxd56/common-hal/busio/UART.c ports/nrf/common-hal/busio/I2C.c
|
||||
#: ports/cxd56/common-hal/busio/UART.c ports/mimxrt10xx/common-hal/busio/SPI.c
|
||||
#: ports/mimxrt10xx/common-hal/busio/UART.c ports/nrf/common-hal/busio/I2C.c
|
||||
msgid "Invalid pins"
|
||||
msgstr ""
|
||||
|
||||
@ -1084,10 +1085,6 @@ msgstr ""
|
||||
msgid "Name too long"
|
||||
msgstr ""
|
||||
|
||||
#: shared-bindings/_pixelbuf/PixelBuf.c
|
||||
msgid "Negative step not supported"
|
||||
msgstr ""
|
||||
|
||||
#: ports/nrf/common-hal/_bleio/Characteristic.c
|
||||
msgid "No CCCD for this Characteristic"
|
||||
msgstr ""
|
||||
@ -1250,6 +1247,10 @@ msgstr ""
|
||||
msgid "Pin does not have ADC capabilities"
|
||||
msgstr "Belay that! Th' Pin be not ADC capable"
|
||||
|
||||
#: shared-bindings/digitalio/DigitalInOut.c
|
||||
msgid "Pin is input only"
|
||||
msgstr ""
|
||||
|
||||
#: ports/atmel-samd/common-hal/countio/Counter.c
|
||||
msgid "Pin must support hardware interrupts"
|
||||
msgstr ""
|
||||
|
17
locale/es.po
17
locale/es.po
@ -7,7 +7,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: \n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2020-05-21 11:18-0400\n"
|
||||
"POT-Creation-Date: 2020-05-27 11:55-0400\n"
|
||||
"PO-Revision-Date: 2020-05-17 20:56+0000\n"
|
||||
"Last-Translator: Jeff Epler <jepler@gmail.com>\n"
|
||||
"Language-Team: \n"
|
||||
@ -893,11 +893,11 @@ msgstr ""
|
||||
msgid "Invalid PWM frequency"
|
||||
msgstr "Frecuencia PWM inválida"
|
||||
|
||||
#: ports/mimxrt10xx/common-hal/busio/SPI.c ports/stm/common-hal/busio/SPI.c
|
||||
#: ports/stm/common-hal/busio/SPI.c
|
||||
msgid "Invalid SPI pin selection"
|
||||
msgstr ""
|
||||
|
||||
#: ports/mimxrt10xx/common-hal/busio/UART.c ports/stm/common-hal/busio/UART.c
|
||||
#: ports/stm/common-hal/busio/UART.c
|
||||
msgid "Invalid UART pin selection"
|
||||
msgstr ""
|
||||
|
||||
@ -973,7 +973,8 @@ msgstr "Pin inválido para canal derecho"
|
||||
#: ports/atmel-samd/common-hal/busio/UART.c
|
||||
#: ports/atmel-samd/common-hal/i2cslave/I2CSlave.c
|
||||
#: ports/cxd56/common-hal/busio/I2C.c ports/cxd56/common-hal/busio/SPI.c
|
||||
#: ports/cxd56/common-hal/busio/UART.c ports/nrf/common-hal/busio/I2C.c
|
||||
#: ports/cxd56/common-hal/busio/UART.c ports/mimxrt10xx/common-hal/busio/SPI.c
|
||||
#: ports/mimxrt10xx/common-hal/busio/UART.c ports/nrf/common-hal/busio/I2C.c
|
||||
msgid "Invalid pins"
|
||||
msgstr "pines inválidos"
|
||||
|
||||
@ -1084,10 +1085,6 @@ msgstr ""
|
||||
msgid "Name too long"
|
||||
msgstr ""
|
||||
|
||||
#: shared-bindings/_pixelbuf/PixelBuf.c
|
||||
msgid "Negative step not supported"
|
||||
msgstr ""
|
||||
|
||||
#: ports/nrf/common-hal/_bleio/Characteristic.c
|
||||
msgid "No CCCD for this Characteristic"
|
||||
msgstr ""
|
||||
@ -1256,6 +1253,10 @@ msgstr "Permiso denegado"
|
||||
msgid "Pin does not have ADC capabilities"
|
||||
msgstr "Pin no tiene capacidad ADC"
|
||||
|
||||
#: shared-bindings/digitalio/DigitalInOut.c
|
||||
msgid "Pin is input only"
|
||||
msgstr ""
|
||||
|
||||
#: ports/atmel-samd/common-hal/countio/Counter.c
|
||||
msgid "Pin must support hardware interrupts"
|
||||
msgstr ""
|
||||
|
@ -7,7 +7,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: \n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2020-05-21 11:18-0400\n"
|
||||
"POT-Creation-Date: 2020-05-27 11:55-0400\n"
|
||||
"PO-Revision-Date: 2018-12-20 22:15-0800\n"
|
||||
"Last-Translator: Timothy <me@timothygarcia.ca>\n"
|
||||
"Language-Team: fil\n"
|
||||
@ -900,11 +900,11 @@ msgstr ""
|
||||
msgid "Invalid PWM frequency"
|
||||
msgstr "Mali ang PWM frequency"
|
||||
|
||||
#: ports/mimxrt10xx/common-hal/busio/SPI.c ports/stm/common-hal/busio/SPI.c
|
||||
#: ports/stm/common-hal/busio/SPI.c
|
||||
msgid "Invalid SPI pin selection"
|
||||
msgstr ""
|
||||
|
||||
#: ports/mimxrt10xx/common-hal/busio/UART.c ports/stm/common-hal/busio/UART.c
|
||||
#: ports/stm/common-hal/busio/UART.c
|
||||
msgid "Invalid UART pin selection"
|
||||
msgstr ""
|
||||
|
||||
@ -980,7 +980,8 @@ msgstr "Mali ang pin para sa kanang channel"
|
||||
#: ports/atmel-samd/common-hal/busio/UART.c
|
||||
#: ports/atmel-samd/common-hal/i2cslave/I2CSlave.c
|
||||
#: ports/cxd56/common-hal/busio/I2C.c ports/cxd56/common-hal/busio/SPI.c
|
||||
#: ports/cxd56/common-hal/busio/UART.c ports/nrf/common-hal/busio/I2C.c
|
||||
#: ports/cxd56/common-hal/busio/UART.c ports/mimxrt10xx/common-hal/busio/SPI.c
|
||||
#: ports/mimxrt10xx/common-hal/busio/UART.c ports/nrf/common-hal/busio/I2C.c
|
||||
msgid "Invalid pins"
|
||||
msgstr "Mali ang pins"
|
||||
|
||||
@ -1091,10 +1092,6 @@ msgstr ""
|
||||
msgid "Name too long"
|
||||
msgstr ""
|
||||
|
||||
#: shared-bindings/_pixelbuf/PixelBuf.c
|
||||
msgid "Negative step not supported"
|
||||
msgstr ""
|
||||
|
||||
#: ports/nrf/common-hal/_bleio/Characteristic.c
|
||||
msgid "No CCCD for this Characteristic"
|
||||
msgstr ""
|
||||
@ -1261,6 +1258,10 @@ msgstr "Walang pahintulot"
|
||||
msgid "Pin does not have ADC capabilities"
|
||||
msgstr "Ang pin ay walang kakayahan sa ADC"
|
||||
|
||||
#: shared-bindings/digitalio/DigitalInOut.c
|
||||
msgid "Pin is input only"
|
||||
msgstr ""
|
||||
|
||||
#: ports/atmel-samd/common-hal/countio/Counter.c
|
||||
msgid "Pin must support hardware interrupts"
|
||||
msgstr ""
|
||||
|
28
locale/fr.po
28
locale/fr.po
@ -8,9 +8,9 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: 0.1\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2020-05-21 11:18-0400\n"
|
||||
"PO-Revision-Date: 2020-05-17 20:56+0000\n"
|
||||
"Last-Translator: Anonymous <noreply@weblate.org>\n"
|
||||
"POT-Creation-Date: 2020-05-27 11:55-0400\n"
|
||||
"PO-Revision-Date: 2020-05-26 19:37+0000\n"
|
||||
"Last-Translator: Jeff Epler <jepler@gmail.com>\n"
|
||||
"Language-Team: French <https://later.unpythonic.net/projects/circuitpython/"
|
||||
"circuitpython-master/fr/>\n"
|
||||
"Language: fr\n"
|
||||
@ -915,11 +915,11 @@ msgstr "Sélection de broches I2C non valide"
|
||||
msgid "Invalid PWM frequency"
|
||||
msgstr "Fréquence de PWM invalide"
|
||||
|
||||
#: ports/mimxrt10xx/common-hal/busio/SPI.c ports/stm/common-hal/busio/SPI.c
|
||||
#: ports/stm/common-hal/busio/SPI.c
|
||||
msgid "Invalid SPI pin selection"
|
||||
msgstr "Sélection de broches SPI non valide"
|
||||
|
||||
#: ports/mimxrt10xx/common-hal/busio/UART.c ports/stm/common-hal/busio/UART.c
|
||||
#: ports/stm/common-hal/busio/UART.c
|
||||
msgid "Invalid UART pin selection"
|
||||
msgstr "Sélection de broches UART non valide"
|
||||
|
||||
@ -995,7 +995,8 @@ msgstr "Broche invalide pour le canal droit"
|
||||
#: ports/atmel-samd/common-hal/busio/UART.c
|
||||
#: ports/atmel-samd/common-hal/i2cslave/I2CSlave.c
|
||||
#: ports/cxd56/common-hal/busio/I2C.c ports/cxd56/common-hal/busio/SPI.c
|
||||
#: ports/cxd56/common-hal/busio/UART.c ports/nrf/common-hal/busio/I2C.c
|
||||
#: ports/cxd56/common-hal/busio/UART.c ports/mimxrt10xx/common-hal/busio/SPI.c
|
||||
#: ports/mimxrt10xx/common-hal/busio/UART.c ports/nrf/common-hal/busio/I2C.c
|
||||
msgid "Invalid pins"
|
||||
msgstr "Broches invalides"
|
||||
|
||||
@ -1106,10 +1107,6 @@ msgstr "Doit utiliser un multiple de 6 broches RVB, pas %d"
|
||||
msgid "Name too long"
|
||||
msgstr "Nom trop long"
|
||||
|
||||
#: shared-bindings/_pixelbuf/PixelBuf.c
|
||||
msgid "Negative step not supported"
|
||||
msgstr "Étape négative non prise en charge"
|
||||
|
||||
#: ports/nrf/common-hal/_bleio/Characteristic.c
|
||||
msgid "No CCCD for this Characteristic"
|
||||
msgstr "Pas de CCCD pour cette caractéristique"
|
||||
@ -1282,6 +1279,10 @@ msgstr "Permission refusée"
|
||||
msgid "Pin does not have ADC capabilities"
|
||||
msgstr "La broche ne peut être utilisée pour l'ADC"
|
||||
|
||||
#: shared-bindings/digitalio/DigitalInOut.c
|
||||
msgid "Pin is input only"
|
||||
msgstr ""
|
||||
|
||||
#: ports/atmel-samd/common-hal/countio/Counter.c
|
||||
msgid "Pin must support hardware interrupts"
|
||||
msgstr "La broche doit prendre en charge les interruptions matérielles"
|
||||
@ -1307,7 +1308,7 @@ msgstr "Ainsi que tout autre module présent sur le système de fichiers\n"
|
||||
|
||||
#: shared-module/vectorio/Polygon.c
|
||||
msgid "Polygon needs at least 3 points"
|
||||
msgstr ""
|
||||
msgstr "Polygone a besoin d’au moins 3 points"
|
||||
|
||||
#: shared-bindings/ps2io/Ps2.c
|
||||
msgid "Pop from an empty Ps2 buffer"
|
||||
@ -1533,7 +1534,7 @@ msgstr "La largeur de la tuile doit diviser exactement la largeur de l'image"
|
||||
#: ports/nrf/common-hal/_bleio/Adapter.c
|
||||
#, c-format
|
||||
msgid "Timeout is too long: Maximum timeout length is %d seconds"
|
||||
msgstr ""
|
||||
msgstr "Le délai est trop long : le délai maximal est de %d secondes"
|
||||
|
||||
#: ports/atmel-samd/common-hal/audiobusio/I2SOut.c
|
||||
msgid "Too many channels in sample."
|
||||
@ -3548,6 +3549,9 @@ msgstr "'step' nul"
|
||||
#~ msgid "Must be a Group subclass."
|
||||
#~ msgstr "Doit être une sous-classe de 'Group'"
|
||||
|
||||
#~ msgid "Negative step not supported"
|
||||
#~ msgstr "Étape négative non prise en charge"
|
||||
|
||||
#~ msgid "No PulseIn support for %q"
|
||||
#~ msgstr "Pas de support de PulseIn pour %q"
|
||||
|
||||
|
@ -8,7 +8,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: PACKAGE VERSION\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2020-05-21 11:18-0400\n"
|
||||
"POT-Creation-Date: 2020-05-27 11:55-0400\n"
|
||||
"PO-Revision-Date: 2018-10-02 16:27+0200\n"
|
||||
"Last-Translator: Enrico Paganin <enrico.paganin@mail.com>\n"
|
||||
"Language-Team: \n"
|
||||
@ -900,11 +900,11 @@ msgstr ""
|
||||
msgid "Invalid PWM frequency"
|
||||
msgstr "Frequenza PWM non valida"
|
||||
|
||||
#: ports/mimxrt10xx/common-hal/busio/SPI.c ports/stm/common-hal/busio/SPI.c
|
||||
#: ports/stm/common-hal/busio/SPI.c
|
||||
msgid "Invalid SPI pin selection"
|
||||
msgstr ""
|
||||
|
||||
#: ports/mimxrt10xx/common-hal/busio/UART.c ports/stm/common-hal/busio/UART.c
|
||||
#: ports/stm/common-hal/busio/UART.c
|
||||
msgid "Invalid UART pin selection"
|
||||
msgstr ""
|
||||
|
||||
@ -982,7 +982,8 @@ msgstr "Pin non valido per il canale destro"
|
||||
#: ports/atmel-samd/common-hal/busio/UART.c
|
||||
#: ports/atmel-samd/common-hal/i2cslave/I2CSlave.c
|
||||
#: ports/cxd56/common-hal/busio/I2C.c ports/cxd56/common-hal/busio/SPI.c
|
||||
#: ports/cxd56/common-hal/busio/UART.c ports/nrf/common-hal/busio/I2C.c
|
||||
#: ports/cxd56/common-hal/busio/UART.c ports/mimxrt10xx/common-hal/busio/SPI.c
|
||||
#: ports/mimxrt10xx/common-hal/busio/UART.c ports/nrf/common-hal/busio/I2C.c
|
||||
msgid "Invalid pins"
|
||||
msgstr "Pin non validi"
|
||||
|
||||
@ -1095,10 +1096,6 @@ msgstr ""
|
||||
msgid "Name too long"
|
||||
msgstr ""
|
||||
|
||||
#: shared-bindings/_pixelbuf/PixelBuf.c
|
||||
msgid "Negative step not supported"
|
||||
msgstr ""
|
||||
|
||||
#: ports/nrf/common-hal/_bleio/Characteristic.c
|
||||
msgid "No CCCD for this Characteristic"
|
||||
msgstr ""
|
||||
@ -1270,6 +1267,10 @@ msgstr "Permesso negato"
|
||||
msgid "Pin does not have ADC capabilities"
|
||||
msgstr "Il pin non ha capacità di ADC"
|
||||
|
||||
#: shared-bindings/digitalio/DigitalInOut.c
|
||||
msgid "Pin is input only"
|
||||
msgstr ""
|
||||
|
||||
#: ports/atmel-samd/common-hal/countio/Counter.c
|
||||
msgid "Pin must support hardware interrupts"
|
||||
msgstr ""
|
||||
|
17
locale/ko.po
17
locale/ko.po
@ -8,7 +8,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: PACKAGE VERSION\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2020-05-21 11:18-0400\n"
|
||||
"POT-Creation-Date: 2020-05-27 11:55-0400\n"
|
||||
"PO-Revision-Date: 2019-05-06 14:22-0700\n"
|
||||
"Last-Translator: \n"
|
||||
"Language-Team: LANGUAGE <LL@li.org>\n"
|
||||
@ -888,11 +888,11 @@ msgstr ""
|
||||
msgid "Invalid PWM frequency"
|
||||
msgstr ""
|
||||
|
||||
#: ports/mimxrt10xx/common-hal/busio/SPI.c ports/stm/common-hal/busio/SPI.c
|
||||
#: ports/stm/common-hal/busio/SPI.c
|
||||
msgid "Invalid SPI pin selection"
|
||||
msgstr ""
|
||||
|
||||
#: ports/mimxrt10xx/common-hal/busio/UART.c ports/stm/common-hal/busio/UART.c
|
||||
#: ports/stm/common-hal/busio/UART.c
|
||||
msgid "Invalid UART pin selection"
|
||||
msgstr ""
|
||||
|
||||
@ -968,7 +968,8 @@ msgstr "오른쪽 채널 핀이 잘못되었습니다"
|
||||
#: ports/atmel-samd/common-hal/busio/UART.c
|
||||
#: ports/atmel-samd/common-hal/i2cslave/I2CSlave.c
|
||||
#: ports/cxd56/common-hal/busio/I2C.c ports/cxd56/common-hal/busio/SPI.c
|
||||
#: ports/cxd56/common-hal/busio/UART.c ports/nrf/common-hal/busio/I2C.c
|
||||
#: ports/cxd56/common-hal/busio/UART.c ports/mimxrt10xx/common-hal/busio/SPI.c
|
||||
#: ports/mimxrt10xx/common-hal/busio/UART.c ports/nrf/common-hal/busio/I2C.c
|
||||
msgid "Invalid pins"
|
||||
msgstr "핀이 유효하지 않습니다"
|
||||
|
||||
@ -1079,10 +1080,6 @@ msgstr ""
|
||||
msgid "Name too long"
|
||||
msgstr ""
|
||||
|
||||
#: shared-bindings/_pixelbuf/PixelBuf.c
|
||||
msgid "Negative step not supported"
|
||||
msgstr ""
|
||||
|
||||
#: ports/nrf/common-hal/_bleio/Characteristic.c
|
||||
msgid "No CCCD for this Characteristic"
|
||||
msgstr ""
|
||||
@ -1245,6 +1242,10 @@ msgstr ""
|
||||
msgid "Pin does not have ADC capabilities"
|
||||
msgstr ""
|
||||
|
||||
#: shared-bindings/digitalio/DigitalInOut.c
|
||||
msgid "Pin is input only"
|
||||
msgstr ""
|
||||
|
||||
#: ports/atmel-samd/common-hal/countio/Counter.c
|
||||
msgid "Pin must support hardware interrupts"
|
||||
msgstr ""
|
||||
|
20
locale/nl.po
20
locale/nl.po
@ -7,7 +7,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: PACKAGE VERSION\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2020-05-21 11:18-0400\n"
|
||||
"POT-Creation-Date: 2020-05-27 11:55-0400\n"
|
||||
"PO-Revision-Date: 2020-05-19 17:08+0000\n"
|
||||
"Last-Translator: Dustin Watts <dustin_watts@yahoo.com>\n"
|
||||
"Language-Team: none\n"
|
||||
@ -904,11 +904,11 @@ msgstr "Ongeldige I2C pin selectie"
|
||||
msgid "Invalid PWM frequency"
|
||||
msgstr "Ongeldige PWM frequentie"
|
||||
|
||||
#: ports/mimxrt10xx/common-hal/busio/SPI.c ports/stm/common-hal/busio/SPI.c
|
||||
#: ports/stm/common-hal/busio/SPI.c
|
||||
msgid "Invalid SPI pin selection"
|
||||
msgstr "Ongeldige SPI pin selectie"
|
||||
|
||||
#: ports/mimxrt10xx/common-hal/busio/UART.c ports/stm/common-hal/busio/UART.c
|
||||
#: ports/stm/common-hal/busio/UART.c
|
||||
msgid "Invalid UART pin selection"
|
||||
msgstr "Ongeldige UART pin selectie"
|
||||
|
||||
@ -984,7 +984,8 @@ msgstr "Ongeldige pin voor rechter kanaal"
|
||||
#: ports/atmel-samd/common-hal/busio/UART.c
|
||||
#: ports/atmel-samd/common-hal/i2cslave/I2CSlave.c
|
||||
#: ports/cxd56/common-hal/busio/I2C.c ports/cxd56/common-hal/busio/SPI.c
|
||||
#: ports/cxd56/common-hal/busio/UART.c ports/nrf/common-hal/busio/I2C.c
|
||||
#: ports/cxd56/common-hal/busio/UART.c ports/mimxrt10xx/common-hal/busio/SPI.c
|
||||
#: ports/mimxrt10xx/common-hal/busio/UART.c ports/nrf/common-hal/busio/I2C.c
|
||||
msgid "Invalid pins"
|
||||
msgstr "Ongeldige pinnen"
|
||||
|
||||
@ -1095,10 +1096,6 @@ msgstr "Een meervoud van 6 rgb pinnen moet worden gebruikt, niet %d"
|
||||
msgid "Name too long"
|
||||
msgstr "Naam te lang"
|
||||
|
||||
#: shared-bindings/_pixelbuf/PixelBuf.c
|
||||
msgid "Negative step not supported"
|
||||
msgstr "Negatieve stappen niet ondersteund"
|
||||
|
||||
#: ports/nrf/common-hal/_bleio/Characteristic.c
|
||||
msgid "No CCCD for this Characteristic"
|
||||
msgstr "Geen CCCD voor deze Characteristic"
|
||||
@ -1270,6 +1267,10 @@ msgstr "Toegang geweigerd"
|
||||
msgid "Pin does not have ADC capabilities"
|
||||
msgstr "Pin heeft geen ADC mogelijkheden"
|
||||
|
||||
#: shared-bindings/digitalio/DigitalInOut.c
|
||||
msgid "Pin is input only"
|
||||
msgstr ""
|
||||
|
||||
#: ports/atmel-samd/common-hal/countio/Counter.c
|
||||
msgid "Pin must support hardware interrupts"
|
||||
msgstr "Pin moet hardware interrupts ondersteunen"
|
||||
@ -3269,3 +3270,6 @@ msgstr ""
|
||||
#: py/objrange.c
|
||||
msgid "zero step"
|
||||
msgstr ""
|
||||
|
||||
#~ msgid "Negative step not supported"
|
||||
#~ msgstr "Negatieve stappen niet ondersteund"
|
||||
|
17
locale/pl.po
17
locale/pl.po
@ -7,7 +7,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: \n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2020-05-21 11:18-0400\n"
|
||||
"POT-Creation-Date: 2020-05-27 11:55-0400\n"
|
||||
"PO-Revision-Date: 2019-03-19 18:37-0700\n"
|
||||
"Last-Translator: Radomir Dopieralski <circuitpython@sheep.art.pl>\n"
|
||||
"Language-Team: pl\n"
|
||||
@ -889,11 +889,11 @@ msgstr ""
|
||||
msgid "Invalid PWM frequency"
|
||||
msgstr "Zła częstotliwość PWM"
|
||||
|
||||
#: ports/mimxrt10xx/common-hal/busio/SPI.c ports/stm/common-hal/busio/SPI.c
|
||||
#: ports/stm/common-hal/busio/SPI.c
|
||||
msgid "Invalid SPI pin selection"
|
||||
msgstr ""
|
||||
|
||||
#: ports/mimxrt10xx/common-hal/busio/UART.c ports/stm/common-hal/busio/UART.c
|
||||
#: ports/stm/common-hal/busio/UART.c
|
||||
msgid "Invalid UART pin selection"
|
||||
msgstr ""
|
||||
|
||||
@ -969,7 +969,8 @@ msgstr "Zła nóżka dla prawego kanału"
|
||||
#: ports/atmel-samd/common-hal/busio/UART.c
|
||||
#: ports/atmel-samd/common-hal/i2cslave/I2CSlave.c
|
||||
#: ports/cxd56/common-hal/busio/I2C.c ports/cxd56/common-hal/busio/SPI.c
|
||||
#: ports/cxd56/common-hal/busio/UART.c ports/nrf/common-hal/busio/I2C.c
|
||||
#: ports/cxd56/common-hal/busio/UART.c ports/mimxrt10xx/common-hal/busio/SPI.c
|
||||
#: ports/mimxrt10xx/common-hal/busio/UART.c ports/nrf/common-hal/busio/I2C.c
|
||||
msgid "Invalid pins"
|
||||
msgstr "Złe nóżki"
|
||||
|
||||
@ -1080,10 +1081,6 @@ msgstr ""
|
||||
msgid "Name too long"
|
||||
msgstr ""
|
||||
|
||||
#: shared-bindings/_pixelbuf/PixelBuf.c
|
||||
msgid "Negative step not supported"
|
||||
msgstr ""
|
||||
|
||||
#: ports/nrf/common-hal/_bleio/Characteristic.c
|
||||
msgid "No CCCD for this Characteristic"
|
||||
msgstr ""
|
||||
@ -1246,6 +1243,10 @@ msgstr "Odmowa dostępu"
|
||||
msgid "Pin does not have ADC capabilities"
|
||||
msgstr "Nóżka nie obsługuje ADC"
|
||||
|
||||
#: shared-bindings/digitalio/DigitalInOut.c
|
||||
msgid "Pin is input only"
|
||||
msgstr ""
|
||||
|
||||
#: ports/atmel-samd/common-hal/countio/Counter.c
|
||||
msgid "Pin must support hardware interrupts"
|
||||
msgstr ""
|
||||
|
@ -8,7 +8,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: PACKAGE VERSION\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2020-05-21 11:18-0400\n"
|
||||
"POT-Creation-Date: 2020-05-27 11:55-0400\n"
|
||||
"PO-Revision-Date: 2018-10-02 21:14-0000\n"
|
||||
"Last-Translator: \n"
|
||||
"Language-Team: \n"
|
||||
@ -893,11 +893,11 @@ msgstr ""
|
||||
msgid "Invalid PWM frequency"
|
||||
msgstr "Frequência PWM inválida"
|
||||
|
||||
#: ports/mimxrt10xx/common-hal/busio/SPI.c ports/stm/common-hal/busio/SPI.c
|
||||
#: ports/stm/common-hal/busio/SPI.c
|
||||
msgid "Invalid SPI pin selection"
|
||||
msgstr ""
|
||||
|
||||
#: ports/mimxrt10xx/common-hal/busio/UART.c ports/stm/common-hal/busio/UART.c
|
||||
#: ports/stm/common-hal/busio/UART.c
|
||||
msgid "Invalid UART pin selection"
|
||||
msgstr ""
|
||||
|
||||
@ -975,7 +975,8 @@ msgstr "Pino inválido para canal direito"
|
||||
#: ports/atmel-samd/common-hal/busio/UART.c
|
||||
#: ports/atmel-samd/common-hal/i2cslave/I2CSlave.c
|
||||
#: ports/cxd56/common-hal/busio/I2C.c ports/cxd56/common-hal/busio/SPI.c
|
||||
#: ports/cxd56/common-hal/busio/UART.c ports/nrf/common-hal/busio/I2C.c
|
||||
#: ports/cxd56/common-hal/busio/UART.c ports/mimxrt10xx/common-hal/busio/SPI.c
|
||||
#: ports/mimxrt10xx/common-hal/busio/UART.c ports/nrf/common-hal/busio/I2C.c
|
||||
msgid "Invalid pins"
|
||||
msgstr "Pinos inválidos"
|
||||
|
||||
@ -1087,10 +1088,6 @@ msgstr ""
|
||||
msgid "Name too long"
|
||||
msgstr ""
|
||||
|
||||
#: shared-bindings/_pixelbuf/PixelBuf.c
|
||||
msgid "Negative step not supported"
|
||||
msgstr ""
|
||||
|
||||
#: ports/nrf/common-hal/_bleio/Characteristic.c
|
||||
msgid "No CCCD for this Characteristic"
|
||||
msgstr ""
|
||||
@ -1256,6 +1253,10 @@ msgstr "Permissão negada"
|
||||
msgid "Pin does not have ADC capabilities"
|
||||
msgstr "O pino não tem recursos de ADC"
|
||||
|
||||
#: shared-bindings/digitalio/DigitalInOut.c
|
||||
msgid "Pin is input only"
|
||||
msgstr ""
|
||||
|
||||
#: ports/atmel-samd/common-hal/countio/Counter.c
|
||||
msgid "Pin must support hardware interrupts"
|
||||
msgstr ""
|
||||
|
20
locale/sv.po
20
locale/sv.po
@ -7,7 +7,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: PACKAGE VERSION\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2020-05-19 15:01+0800\n"
|
||||
"POT-Creation-Date: 2020-05-27 11:55-0400\n"
|
||||
"PO-Revision-Date: 2020-05-20 18:32+0000\n"
|
||||
"Last-Translator: Jonny Bergdahl <jonny@bergdahl.it>\n"
|
||||
"Language-Team: LANGUAGE <LL@li.org>\n"
|
||||
@ -903,11 +903,11 @@ msgstr "Ogiltigt val av I2C-pinne"
|
||||
msgid "Invalid PWM frequency"
|
||||
msgstr "Ogiltig PWM-frekvens"
|
||||
|
||||
#: ports/mimxrt10xx/common-hal/busio/SPI.c ports/stm/common-hal/busio/SPI.c
|
||||
#: ports/stm/common-hal/busio/SPI.c
|
||||
msgid "Invalid SPI pin selection"
|
||||
msgstr "Ogiltigt val av SPI-pinne"
|
||||
|
||||
#: ports/mimxrt10xx/common-hal/busio/UART.c ports/stm/common-hal/busio/UART.c
|
||||
#: ports/stm/common-hal/busio/UART.c
|
||||
msgid "Invalid UART pin selection"
|
||||
msgstr "Ogiltigt val av UART-pinne"
|
||||
|
||||
@ -983,7 +983,8 @@ msgstr "Ogiltig pinne för höger kanal"
|
||||
#: ports/atmel-samd/common-hal/busio/UART.c
|
||||
#: ports/atmel-samd/common-hal/i2cslave/I2CSlave.c
|
||||
#: ports/cxd56/common-hal/busio/I2C.c ports/cxd56/common-hal/busio/SPI.c
|
||||
#: ports/cxd56/common-hal/busio/UART.c ports/nrf/common-hal/busio/I2C.c
|
||||
#: ports/cxd56/common-hal/busio/UART.c ports/mimxrt10xx/common-hal/busio/SPI.c
|
||||
#: ports/mimxrt10xx/common-hal/busio/UART.c ports/nrf/common-hal/busio/I2C.c
|
||||
msgid "Invalid pins"
|
||||
msgstr "Ogiltiga pinnar"
|
||||
|
||||
@ -1095,10 +1096,6 @@ msgstr "Måste använda ett multipel av 6 rgb-pinnar, inte %d"
|
||||
msgid "Name too long"
|
||||
msgstr "Name är för långt"
|
||||
|
||||
#: shared-bindings/_pixelbuf/PixelBuf.c
|
||||
msgid "Negative step not supported"
|
||||
msgstr "Negativt step stöds inte"
|
||||
|
||||
#: ports/nrf/common-hal/_bleio/Characteristic.c
|
||||
msgid "No CCCD for this Characteristic"
|
||||
msgstr "Ingen CCCD för denna karaktäristik"
|
||||
@ -1268,6 +1265,10 @@ msgstr "Åtkomst nekad"
|
||||
msgid "Pin does not have ADC capabilities"
|
||||
msgstr "Pinnen har inte ADC-funktionalitet"
|
||||
|
||||
#: shared-bindings/digitalio/DigitalInOut.c
|
||||
msgid "Pin is input only"
|
||||
msgstr ""
|
||||
|
||||
#: ports/atmel-samd/common-hal/countio/Counter.c
|
||||
msgid "Pin must support hardware interrupts"
|
||||
msgstr "Pinnen måste stödja hårdvaruavbrott"
|
||||
@ -3278,5 +3279,8 @@ msgstr "y-värde utanför intervall"
|
||||
msgid "zero step"
|
||||
msgstr "noll steg"
|
||||
|
||||
#~ msgid "Negative step not supported"
|
||||
#~ msgstr "Negativt step stöds inte"
|
||||
|
||||
#~ msgid "empty %q list"
|
||||
#~ msgstr "tom %q-lista"
|
||||
|
@ -7,7 +7,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: circuitpython-cn\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2020-05-21 11:18-0400\n"
|
||||
"POT-Creation-Date: 2020-05-27 11:55-0400\n"
|
||||
"PO-Revision-Date: 2019-04-13 10:10-0700\n"
|
||||
"Last-Translator: hexthat\n"
|
||||
"Language-Team: Chinese Hanyu Pinyin\n"
|
||||
@ -897,11 +897,11 @@ msgstr "Wúxiào de I2C yǐn jiǎo xuǎnzé"
|
||||
msgid "Invalid PWM frequency"
|
||||
msgstr "Wúxiào de PWM pínlǜ"
|
||||
|
||||
#: ports/mimxrt10xx/common-hal/busio/SPI.c ports/stm/common-hal/busio/SPI.c
|
||||
#: ports/stm/common-hal/busio/SPI.c
|
||||
msgid "Invalid SPI pin selection"
|
||||
msgstr "Wúxiào de SPI yǐn jiǎo xuǎnzé"
|
||||
|
||||
#: ports/mimxrt10xx/common-hal/busio/UART.c ports/stm/common-hal/busio/UART.c
|
||||
#: ports/stm/common-hal/busio/UART.c
|
||||
msgid "Invalid UART pin selection"
|
||||
msgstr "Wúxiào de UART yǐn jiǎo xuǎnzé"
|
||||
|
||||
@ -977,7 +977,8 @@ msgstr "Yòuxián tōngdào yǐn jiǎo wúxiào"
|
||||
#: ports/atmel-samd/common-hal/busio/UART.c
|
||||
#: ports/atmel-samd/common-hal/i2cslave/I2CSlave.c
|
||||
#: ports/cxd56/common-hal/busio/I2C.c ports/cxd56/common-hal/busio/SPI.c
|
||||
#: ports/cxd56/common-hal/busio/UART.c ports/nrf/common-hal/busio/I2C.c
|
||||
#: ports/cxd56/common-hal/busio/UART.c ports/mimxrt10xx/common-hal/busio/SPI.c
|
||||
#: ports/mimxrt10xx/common-hal/busio/UART.c ports/nrf/common-hal/busio/I2C.c
|
||||
msgid "Invalid pins"
|
||||
msgstr "Wúxiào de yǐn jiǎo"
|
||||
|
||||
@ -1088,10 +1089,6 @@ msgstr ""
|
||||
msgid "Name too long"
|
||||
msgstr ""
|
||||
|
||||
#: shared-bindings/_pixelbuf/PixelBuf.c
|
||||
msgid "Negative step not supported"
|
||||
msgstr "Bù zhīchí fù bù"
|
||||
|
||||
#: ports/nrf/common-hal/_bleio/Characteristic.c
|
||||
msgid "No CCCD for this Characteristic"
|
||||
msgstr "Zhège tèzhēng méiyǒu CCCD"
|
||||
@ -1260,6 +1257,10 @@ msgstr "Quánxiàn bèi jùjué"
|
||||
msgid "Pin does not have ADC capabilities"
|
||||
msgstr "Pin méiyǒu ADC nénglì"
|
||||
|
||||
#: shared-bindings/digitalio/DigitalInOut.c
|
||||
msgid "Pin is input only"
|
||||
msgstr ""
|
||||
|
||||
#: ports/atmel-samd/common-hal/countio/Counter.c
|
||||
msgid "Pin must support hardware interrupts"
|
||||
msgstr ""
|
||||
@ -3446,6 +3447,9 @@ msgstr "líng bù"
|
||||
#~ msgid "Must be a Group subclass."
|
||||
#~ msgstr "Bìxū shì fēnzǔ zi lèi."
|
||||
|
||||
#~ msgid "Negative step not supported"
|
||||
#~ msgstr "Bù zhīchí fù bù"
|
||||
|
||||
#~ msgid "No default I2C bus"
|
||||
#~ msgstr "Méiyǒu mòrèn I2C gōnggòng qìchē"
|
||||
|
||||
|
@ -9,5 +9,6 @@ CHIP_FAMILY = samd21
|
||||
INTERNAL_FLASH_FILESYSTEM = 1
|
||||
LONGINT_IMPL = NONE
|
||||
CIRCUITPY_FULL_BUILD = 0
|
||||
CIRCUITPY_RTC = 0
|
||||
|
||||
SUPEROPT_GC = 0
|
||||
|
38
ports/atmel-samd/boards/fluff_m0/board.c
Normal file
38
ports/atmel-samd/boards/fluff_m0/board.c
Normal file
@ -0,0 +1,38 @@
|
||||
/*
|
||||
* This file is part of the MicroPython project, http://micropython.org/
|
||||
*
|
||||
* The MIT License (MIT)
|
||||
*
|
||||
* Copyright (c) 2017 Scott Shawcroft for Adafruit Industries
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
* of this software and associated documentation files (the "Software"), to deal
|
||||
* in the Software without restriction, including without limitation the rights
|
||||
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
* copies of the Software, and to permit persons to whom the Software is
|
||||
* furnished to do so, subject to the following conditions:
|
||||
*
|
||||
* The above copyright notice and this permission notice shall be included in
|
||||
* all copies or substantial portions of the Software.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||
* THE SOFTWARE.
|
||||
*/
|
||||
|
||||
#include "boards/board.h"
|
||||
|
||||
void board_init(void)
|
||||
{
|
||||
}
|
||||
|
||||
bool board_requests_safe_mode(void) {
|
||||
return false;
|
||||
}
|
||||
|
||||
void reset_board(void) {
|
||||
}
|
20
ports/atmel-samd/boards/fluff_m0/mpconfigboard.h
Normal file
20
ports/atmel-samd/boards/fluff_m0/mpconfigboard.h
Normal file
@ -0,0 +1,20 @@
|
||||
#define MICROPY_HW_BOARD_NAME "Fluff M0"
|
||||
#define MICROPY_HW_MCU_NAME "samd21e18"
|
||||
|
||||
#define MICROPY_PORT_A (0)
|
||||
#define MICROPY_PORT_B (0)
|
||||
#define MICROPY_PORT_C (0)
|
||||
|
||||
#define DEFAULT_I2C_BUS_SCL (&pin_PA23)
|
||||
#define DEFAULT_I2C_BUS_SDA (&pin_PA22)
|
||||
|
||||
#define DEFAULT_SPI_BUS_SCK (&pin_PA30)
|
||||
#define DEFAULT_SPI_BUS_MOSI (&pin_PA00)
|
||||
#define DEFAULT_SPI_BUS_MISO (&pin_PA31)
|
||||
|
||||
#define DEFAULT_UART_BUS_RX (&pin_PA11)
|
||||
#define DEFAULT_UART_BUS_TX (&pin_PA10)
|
||||
|
||||
// USB is always used internally so skip the pin objects for it.
|
||||
#define IGNORE_PIN_PA24 1
|
||||
#define IGNORE_PIN_PA25 1
|
18
ports/atmel-samd/boards/fluff_m0/mpconfigboard.mk
Normal file
18
ports/atmel-samd/boards/fluff_m0/mpconfigboard.mk
Normal file
@ -0,0 +1,18 @@
|
||||
USB_VID = 0x239A
|
||||
USB_PID = 0x80B0
|
||||
USB_PRODUCT = "Fluff M0"
|
||||
USB_MANUFACTURER = "Radomir Dopieralski"
|
||||
|
||||
CHIP_VARIANT = SAMD21E18A
|
||||
CHIP_FAMILY = samd21
|
||||
|
||||
INTERNAL_FLASH_FILESYSTEM = 1
|
||||
LONGINT_IMPL = NONE
|
||||
CIRCUITPY_FULL_BUILD = 0
|
||||
|
||||
SUPEROPT_GC = 0
|
||||
|
||||
CFLAGS_BOARD = --param max-inline-insns-auto=15
|
||||
ifeq ($(TRANSLATION), zh_Latn_pinyin)
|
||||
CFLAGS_INLINE_LIMIT = 35
|
||||
endif
|
38
ports/atmel-samd/boards/fluff_m0/pins.c
Normal file
38
ports/atmel-samd/boards/fluff_m0/pins.c
Normal file
@ -0,0 +1,38 @@
|
||||
#include "shared-bindings/board/__init__.h"
|
||||
|
||||
STATIC const mp_rom_map_elem_t board_global_dict_table[] = {
|
||||
{ MP_ROM_QSTR(MP_QSTR_AREF), MP_ROM_PTR(&pin_PA03) },
|
||||
|
||||
{ MP_ROM_QSTR(MP_QSTR_A0), MP_ROM_PTR(&pin_PA02) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_A1), MP_ROM_PTR(&pin_PA06) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_A2), MP_ROM_PTR(&pin_PA08) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_A3), MP_ROM_PTR(&pin_PA04) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_A4), MP_ROM_PTR(&pin_PA05) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_A5), MP_ROM_PTR(&pin_PA09) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_A6), MP_ROM_PTR(&pin_PA07) },
|
||||
|
||||
{ MP_ROM_QSTR(MP_QSTR_SCK), MP_ROM_PTR(&pin_PA31) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_MOSI), MP_ROM_PTR(&pin_PA00) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_MISO), MP_ROM_PTR(&pin_PA30) },
|
||||
|
||||
{ MP_ROM_QSTR(MP_QSTR_D0), MP_ROM_PTR(&pin_PA11) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_RX), MP_ROM_PTR(&pin_PA11) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_D1), MP_ROM_PTR(&pin_PA10) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_TX), MP_ROM_PTR(&pin_PA10) },
|
||||
|
||||
{ MP_ROM_QSTR(MP_QSTR_SDA), MP_ROM_PTR(&pin_PA22) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_SCL), MP_ROM_PTR(&pin_PA23) },
|
||||
|
||||
{ MP_ROM_QSTR(MP_QSTR_D5), MP_ROM_PTR(&pin_PA15) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_D6), MP_ROM_PTR(&pin_PA01) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_D9), MP_ROM_PTR(&pin_PA14) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_D10), MP_ROM_PTR(&pin_PA18) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_D11), MP_ROM_PTR(&pin_PA16) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_D12), MP_ROM_PTR(&pin_PA19) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_D13), MP_ROM_PTR(&pin_PA17) },
|
||||
|
||||
{ MP_ROM_QSTR(MP_QSTR_I2C), MP_ROM_PTR(&board_i2c_obj) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_SPI), MP_ROM_PTR(&board_spi_obj) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_UART), MP_ROM_PTR(&board_uart_obj) },
|
||||
};
|
||||
MP_DEFINE_CONST_DICT(board_module_globals, board_global_dict_table);
|
@ -9,5 +9,8 @@ CHIP_FAMILY = samd21
|
||||
INTERNAL_FLASH_FILESYSTEM = 1
|
||||
LONGINT_IMPL = NONE
|
||||
CIRCUITPY_FULL_BUILD = 0
|
||||
CIRCUITPY_ROTARYIO = 0
|
||||
CIRCUITPY_COUNTIO = 0
|
||||
CIRCUITPY_RTC = 0
|
||||
|
||||
SUPEROPT_GC = 0
|
||||
|
@ -10,6 +10,7 @@ INTERNAL_FLASH_FILESYSTEM = 1
|
||||
LONGINT_IMPL = NONE
|
||||
CIRCUITPY_FULL_BUILD = 0
|
||||
CIRCUITPY_COUNTIO = 0
|
||||
CIRCUITPY_RTC = 0
|
||||
SUPEROPT_GC = 0
|
||||
|
||||
CFLAGS_BOARD = --param max-inline-insns-auto=15
|
||||
|
@ -13,6 +13,7 @@ LONGINT_IMPL = MPZ
|
||||
|
||||
CIRCUITPY_BITBANGIO = 0
|
||||
CIRCUITPY_COUNTIO = 0
|
||||
CIRCUITPY_RTC = 0
|
||||
CIRCUITPY_FREQUENCYIO = 0
|
||||
CIRCUITPY_I2CSLAVE = 0
|
||||
|
||||
|
@ -73,7 +73,7 @@ void common_hal_digitalio_digitalinout_switch_to_input(
|
||||
common_hal_digitalio_digitalinout_set_pull(self, pull);
|
||||
}
|
||||
|
||||
void common_hal_digitalio_digitalinout_switch_to_output(
|
||||
digitalinout_result_t common_hal_digitalio_digitalinout_switch_to_output(
|
||||
digitalio_digitalinout_obj_t* self, bool value,
|
||||
digitalio_drive_mode_t drive_mode) {
|
||||
const uint8_t pin = self->pin->number;
|
||||
@ -86,6 +86,7 @@ void common_hal_digitalio_digitalinout_switch_to_output(
|
||||
|
||||
// Direction is set in set_value. We don't need to do it here.
|
||||
common_hal_digitalio_digitalinout_set_value(self, value);
|
||||
return DIGITALINOUT_OK;
|
||||
}
|
||||
|
||||
digitalio_direction_t common_hal_digitalio_digitalinout_get_direction(
|
||||
@ -128,7 +129,7 @@ bool common_hal_digitalio_digitalinout_get_value(
|
||||
}
|
||||
}
|
||||
|
||||
void common_hal_digitalio_digitalinout_set_drive_mode(
|
||||
digitalinout_result_t common_hal_digitalio_digitalinout_set_drive_mode(
|
||||
digitalio_digitalinout_obj_t* self,
|
||||
digitalio_drive_mode_t drive_mode) {
|
||||
bool value = common_hal_digitalio_digitalinout_get_value(self);
|
||||
@ -138,6 +139,7 @@ void common_hal_digitalio_digitalinout_set_drive_mode(
|
||||
if (value) {
|
||||
common_hal_digitalio_digitalinout_set_value(self, value);
|
||||
}
|
||||
return DIGITALINOUT_OK;
|
||||
}
|
||||
|
||||
digitalio_drive_mode_t common_hal_digitalio_digitalinout_get_drive_mode(
|
||||
|
@ -181,7 +181,7 @@ pwmout_result_t common_hal_pulseio_pwmout_construct(pulseio_pwmout_obj_t* self,
|
||||
mux_position = j;
|
||||
// Claim channel.
|
||||
tcc_channels[timer->index] |= (1 << tcc_channel(timer));
|
||||
|
||||
tcc_refcount[timer->index]++;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -69,6 +69,7 @@
|
||||
#include "samd/events.h"
|
||||
#include "samd/external_interrupts.h"
|
||||
#include "samd/dma.h"
|
||||
#include "shared-bindings/microcontroller/__init__.h"
|
||||
#include "shared-bindings/rtc/__init__.h"
|
||||
#include "reset.h"
|
||||
|
||||
@ -496,7 +497,12 @@ void port_sleep_until_interrupt(void) {
|
||||
(void) __get_FPSCR();
|
||||
}
|
||||
#endif
|
||||
__WFI();
|
||||
common_hal_mcu_disable_interrupts();
|
||||
if (!tud_task_event_ready()) {
|
||||
__DSB();
|
||||
__WFI();
|
||||
}
|
||||
common_hal_mcu_enable_interrupts();
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -70,7 +70,7 @@ void common_hal_digitalio_digitalinout_switch_to_input(digitalio_digitalinout_ob
|
||||
board_gpio_config(self->pin->number, 0, true, true, pull);
|
||||
}
|
||||
|
||||
void common_hal_digitalio_digitalinout_switch_to_output(digitalio_digitalinout_obj_t *self, bool value, digitalio_drive_mode_t drive_mode) {
|
||||
digitalinout_result_t common_hal_digitalio_digitalinout_switch_to_output(digitalio_digitalinout_obj_t *self, bool value, digitalio_drive_mode_t drive_mode) {
|
||||
self->input = false;
|
||||
self->open_drain = drive_mode == DRIVE_MODE_OPEN_DRAIN;
|
||||
board_gpio_write(self->pin->number, -1);
|
||||
@ -80,6 +80,7 @@ void common_hal_digitalio_digitalinout_switch_to_output(digitalio_digitalinout_o
|
||||
board_gpio_write(self->pin->number, 0);
|
||||
}
|
||||
common_hal_digitalio_digitalinout_set_value(self, value);
|
||||
return DIGITALINOUT_OK;
|
||||
}
|
||||
|
||||
digitalio_direction_t common_hal_digitalio_digitalinout_get_direction(digitalio_digitalinout_obj_t *self) {
|
||||
@ -104,7 +105,7 @@ bool common_hal_digitalio_digitalinout_get_value(digitalio_digitalinout_obj_t *s
|
||||
return board_gpio_read(self->pin->number);
|
||||
}
|
||||
|
||||
void common_hal_digitalio_digitalinout_set_drive_mode(digitalio_digitalinout_obj_t *self, digitalio_drive_mode_t drive_mode) {
|
||||
digitalinout_result_t common_hal_digitalio_digitalinout_set_drive_mode(digitalio_digitalinout_obj_t *self, digitalio_drive_mode_t drive_mode) {
|
||||
if (drive_mode == DRIVE_MODE_PUSH_PULL) {
|
||||
board_gpio_write(self->pin->number, -1);
|
||||
board_gpio_config(self->pin->number, 0, false, true, PIN_FLOAT);
|
||||
@ -115,6 +116,7 @@ void common_hal_digitalio_digitalinout_set_drive_mode(digitalio_digitalinout_obj
|
||||
board_gpio_write(self->pin->number, 0);
|
||||
self->open_drain = true;
|
||||
}
|
||||
return DIGITALINOUT_OK;
|
||||
}
|
||||
|
||||
digitalio_drive_mode_t common_hal_digitalio_digitalinout_get_drive_mode(digitalio_digitalinout_obj_t *self) {
|
||||
|
@ -31,6 +31,9 @@ else
|
||||
endif
|
||||
endif
|
||||
|
||||
# If the flash PORT is not given, use the default /dev/tty.SLAB_USBtoUART.
|
||||
PORT ?= /dev/tty.SLAB_USBtoUART
|
||||
|
||||
# If the build directory is not given, make it reflect the board name.
|
||||
BUILD ?= build-$(BOARD)
|
||||
|
||||
@ -149,6 +152,7 @@ SRC_C += \
|
||||
mphalport.c \
|
||||
boards/$(BOARD)/board.c \
|
||||
boards/$(BOARD)/pins.c \
|
||||
modules/$(CIRCUITPY_MODULE).c \
|
||||
lib/libc/string0.c \
|
||||
lib/mp-readline/readline.c \
|
||||
lib/oofatfs/ff.c \
|
||||
@ -270,7 +274,7 @@ $(BUILD)/firmware.bin: $(BUILD)/esp-idf/partition_table/partition-table.bin $(BU
|
||||
$(Q)$(PYTHON) ../../tools/join_bins.py $@ 0x1000 $(BUILD)/esp-idf/bootloader/bootloader.bin 0x8000 $(BUILD)/esp-idf/partition_table/partition-table.bin 0x10000 $(BUILD)/circuitpython-firmware.bin
|
||||
|
||||
flash: $(BUILD)/firmware.bin
|
||||
esptool.py --chip esp32s2 -p /dev/tty.SLAB_USBtoUART -b 460800 --before=default_reset --after=hard_reset write_flash $(FLASH_FLAGS) 0x0000 $^
|
||||
esptool.py --chip esp32s2 -p $(PORT) -b 460800 --before=default_reset --after=hard_reset write_flash $(FLASH_FLAGS) 0x0000 $^
|
||||
|
||||
include $(TOP)/py/mkrules.mk
|
||||
|
||||
|
@ -26,8 +26,16 @@
|
||||
|
||||
#include "boards/board.h"
|
||||
#include "mpconfigboard.h"
|
||||
#include "shared-bindings/microcontroller/Pin.h"
|
||||
|
||||
void board_init(void) {
|
||||
// USB
|
||||
never_reset_pin(&pin_GPIO19);
|
||||
never_reset_pin(&pin_GPIO20);
|
||||
|
||||
// Debug UART
|
||||
never_reset_pin(&pin_GPIO43);
|
||||
never_reset_pin(&pin_GPIO44);
|
||||
}
|
||||
|
||||
bool board_requests_safe_mode(void) {
|
||||
|
@ -18,3 +18,5 @@ CIRCUITPY_MICROCONTROLLER = 0
|
||||
CIRCUITPY_ESP_FLASH_MODE=dio
|
||||
CIRCUITPY_ESP_FLASH_FREQ=40m
|
||||
CIRCUITPY_ESP_FLASH_SIZE=4MB
|
||||
|
||||
CIRCUITPY_MODULE=wroom
|
||||
|
@ -26,8 +26,16 @@
|
||||
|
||||
#include "boards/board.h"
|
||||
#include "mpconfigboard.h"
|
||||
#include "shared-bindings/microcontroller/Pin.h"
|
||||
|
||||
void board_init(void) {
|
||||
// USB
|
||||
never_reset_pin(&pin_GPIO19);
|
||||
never_reset_pin(&pin_GPIO20);
|
||||
|
||||
// Debug UART
|
||||
never_reset_pin(&pin_GPIO43);
|
||||
never_reset_pin(&pin_GPIO44);
|
||||
}
|
||||
|
||||
bool board_requests_safe_mode(void) {
|
||||
|
@ -18,3 +18,5 @@ CIRCUITPY_MICROCONTROLLER = 0
|
||||
CIRCUITPY_ESP_FLASH_MODE=dio
|
||||
CIRCUITPY_ESP_FLASH_FREQ=40m
|
||||
CIRCUITPY_ESP_FLASH_SIZE=4MB
|
||||
|
||||
CIRCUITPY_MODULE=wrover
|
||||
|
@ -30,24 +30,18 @@
|
||||
|
||||
#include "driver/gpio.h"
|
||||
|
||||
|
||||
#include "esp_log.h"
|
||||
|
||||
static const char* TAG = "CircuitPython digitalio";
|
||||
#include "esp-idf/components/soc/include/hal/gpio_hal.h"
|
||||
|
||||
void common_hal_digitalio_digitalinout_never_reset(
|
||||
digitalio_digitalinout_obj_t *self) {
|
||||
(void)self;
|
||||
never_reset_pin_number(self->pin->number);
|
||||
}
|
||||
|
||||
digitalinout_result_t common_hal_digitalio_digitalinout_construct(
|
||||
digitalio_digitalinout_obj_t *self, const mcu_pin_obj_t *pin) {
|
||||
|
||||
// claim_pin(pin);
|
||||
claim_pin(pin);
|
||||
self->pin = pin;
|
||||
|
||||
ESP_EARLY_LOGW(TAG, "construct %d", pin->number);
|
||||
|
||||
return DIGITALINOUT_OK;
|
||||
}
|
||||
|
||||
@ -60,78 +54,86 @@ void common_hal_digitalio_digitalinout_deinit(digitalio_digitalinout_obj_t *self
|
||||
return;
|
||||
}
|
||||
|
||||
// reset_pin_number(0, self->pin->number);
|
||||
reset_pin_number(self->pin->number);
|
||||
self->pin = mp_const_none;
|
||||
}
|
||||
|
||||
void common_hal_digitalio_digitalinout_switch_to_input(
|
||||
digitalio_digitalinout_obj_t *self, digitalio_pull_t pull) {
|
||||
gpio_config_t config = {
|
||||
.pin_bit_mask = 1 << self->pin->number,
|
||||
.mode = GPIO_MODE_INPUT
|
||||
};
|
||||
if (pull == PULL_UP) {
|
||||
config.pull_up_en = GPIO_PULLUP_ENABLE;
|
||||
} else if (pull == PULL_DOWN) {
|
||||
config.pull_down_en = GPIO_PULLDOWN_ENABLE;
|
||||
}
|
||||
|
||||
gpio_config(&config);
|
||||
common_hal_digitalio_digitalinout_set_pull(self, pull);
|
||||
gpio_set_direction(self->pin->number, GPIO_MODE_DEF_INPUT);
|
||||
}
|
||||
|
||||
void common_hal_digitalio_digitalinout_switch_to_output(
|
||||
digitalinout_result_t common_hal_digitalio_digitalinout_switch_to_output(
|
||||
digitalio_digitalinout_obj_t *self, bool value,
|
||||
digitalio_drive_mode_t drive_mode) {
|
||||
gpio_config_t config = {
|
||||
.pin_bit_mask = 1ULL << self->pin->number,
|
||||
.mode = GPIO_MODE_OUTPUT
|
||||
};
|
||||
if (drive_mode == DRIVE_MODE_OPEN_DRAIN) {
|
||||
config.mode = GPIO_MODE_OUTPUT_OD;
|
||||
}
|
||||
gpio_set_level(self->pin->number, value);
|
||||
gpio_config(&config);
|
||||
return common_hal_digitalio_digitalinout_set_drive_mode(self, drive_mode);
|
||||
}
|
||||
|
||||
digitalio_direction_t common_hal_digitalio_digitalinout_get_direction(
|
||||
digitalio_digitalinout_obj_t *self) {
|
||||
|
||||
uint32_t iomux = READ_PERI_REG(GPIO_PIN_MUX_REG[self->pin->number]);
|
||||
if ((iomux & FUN_IE) != 0) {
|
||||
return DIRECTION_INPUT;
|
||||
}
|
||||
return DIRECTION_OUTPUT;
|
||||
}
|
||||
|
||||
void common_hal_digitalio_digitalinout_set_value(
|
||||
digitalio_digitalinout_obj_t *self, bool value) {
|
||||
ESP_EARLY_LOGW(TAG, "set %d %d", self->pin->number, value);
|
||||
gpio_set_level(self->pin->number, value);
|
||||
}
|
||||
|
||||
bool common_hal_digitalio_digitalinout_get_value(
|
||||
digitalio_digitalinout_obj_t *self) {
|
||||
return true;
|
||||
return gpio_get_level(self->pin->number) == 1;
|
||||
}
|
||||
|
||||
void common_hal_digitalio_digitalinout_set_drive_mode(
|
||||
digitalinout_result_t common_hal_digitalio_digitalinout_set_drive_mode(
|
||||
digitalio_digitalinout_obj_t *self,
|
||||
digitalio_drive_mode_t drive_mode) {
|
||||
(void)self;
|
||||
(void)drive_mode;
|
||||
gpio_num_t number = self->pin->number;
|
||||
gpio_mode_t mode;
|
||||
if (drive_mode == DRIVE_MODE_OPEN_DRAIN) {
|
||||
mode = GPIO_MODE_DEF_OD;
|
||||
} else {
|
||||
mode = GPIO_MODE_DEF_OUTPUT;
|
||||
}
|
||||
esp_err_t result = gpio_set_direction(number, mode);
|
||||
if (result != ESP_OK) {
|
||||
return DIGITALINOUT_INPUT_ONLY;
|
||||
}
|
||||
return DIGITALINOUT_OK;
|
||||
}
|
||||
|
||||
digitalio_drive_mode_t common_hal_digitalio_digitalinout_get_drive_mode(
|
||||
digitalio_digitalinout_obj_t *self) {
|
||||
// if (common_hal_digitalio_digitalinout_get_direction(self) == DIRECTION_OUTPUT)
|
||||
// return DRIVE_MODE_PUSH_PULL;
|
||||
// else
|
||||
return DRIVE_MODE_OPEN_DRAIN;
|
||||
if (GPIO_HAL_GET_HW(GPIO_PORT_0)->pin[self->pin->number].pad_driver == 1) {
|
||||
return DRIVE_MODE_OPEN_DRAIN;
|
||||
}
|
||||
return DRIVE_MODE_PUSH_PULL;
|
||||
}
|
||||
|
||||
void common_hal_digitalio_digitalinout_set_pull(
|
||||
digitalio_digitalinout_obj_t *self, digitalio_pull_t pull) {
|
||||
(void)self;
|
||||
(void)pull;
|
||||
gpio_num_t number = self->pin->number;
|
||||
gpio_pullup_dis(number);
|
||||
gpio_pulldown_dis(number);
|
||||
if (pull == PULL_UP) {
|
||||
gpio_pullup_en(number);
|
||||
} else if (pull == PULL_DOWN) {
|
||||
gpio_pulldown_en(number);
|
||||
}
|
||||
}
|
||||
|
||||
digitalio_pull_t common_hal_digitalio_digitalinout_get_pull(
|
||||
digitalio_digitalinout_obj_t *self) {
|
||||
gpio_num_t gpio_num = self->pin->number;
|
||||
if (REG_GET_BIT(GPIO_PIN_MUX_REG[gpio_num], FUN_PU) == 1) {
|
||||
return PULL_UP;
|
||||
} else if (REG_GET_BIT(GPIO_PIN_MUX_REG[gpio_num], FUN_PD) == 1) {
|
||||
return PULL_DOWN;
|
||||
}
|
||||
return PULL_NONE;
|
||||
}
|
||||
|
@ -29,18 +29,51 @@
|
||||
|
||||
#include "py/mphal.h"
|
||||
|
||||
// Mark pin as free and return it to a quiescent state.
|
||||
void reset_pin_number(uint8_t pin_port, uint8_t pin_number) {
|
||||
#include "esp-idf/components/driver/include/driver/gpio.h"
|
||||
#include "esp-idf/components/soc/include/hal/gpio_hal.h"
|
||||
|
||||
STATIC uint32_t never_reset_pins[2];
|
||||
STATIC uint32_t in_use[2];
|
||||
|
||||
void never_reset_pin_number(gpio_num_t pin_number) {
|
||||
never_reset_pins[pin_number / 32] |= 1 << pin_number % 32;
|
||||
}
|
||||
|
||||
void never_reset_pin(const mcu_pin_obj_t* pin) {
|
||||
never_reset_pin_number(pin->number);
|
||||
}
|
||||
|
||||
// Mark pin as free and return it to a quiescent state.
|
||||
void reset_pin_number(gpio_num_t pin_number) {
|
||||
never_reset_pins[pin_number / 32] &= ~(1 << pin_number % 32);
|
||||
in_use[pin_number / 32] &= ~(1 << pin_number % 32);
|
||||
}
|
||||
|
||||
void reset_all_pins(void) {
|
||||
for (uint8_t i = 0; i < GPIO_PIN_COUNT; i++) {
|
||||
uint32_t iomux_address = GPIO_PIN_MUX_REG[i];
|
||||
if (iomux_address == 0 ||
|
||||
(never_reset_pins[i / 32] & (1 << i % 32)) != 0) {
|
||||
continue;
|
||||
}
|
||||
gpio_set_direction(i, GPIO_MODE_DEF_INPUT);
|
||||
gpio_pullup_dis(i);
|
||||
gpio_pulldown_dis(i);
|
||||
}
|
||||
in_use[0] = 0;
|
||||
in_use[1] = 0;
|
||||
}
|
||||
|
||||
void claim_pin(const mcu_pin_obj_t* pin) {
|
||||
in_use[pin->number / 32] |= (1 << pin->number % 32);
|
||||
}
|
||||
|
||||
bool pin_number_is_free(uint8_t pin_port, uint8_t pin_number) {
|
||||
return true;
|
||||
bool pin_number_is_free(gpio_num_t pin_number) {
|
||||
uint8_t offset = pin_number / 32;
|
||||
uint8_t mask = 1 << pin_number % 32;
|
||||
return (never_reset_pins[offset] & mask) == 0 && (in_use[offset] & mask) == 0;
|
||||
}
|
||||
|
||||
bool common_hal_mcu_pin_is_free(const mcu_pin_obj_t *pin) {
|
||||
return pin_number_is_free(0, pin->number);
|
||||
return pin_number_is_free(pin->number);
|
||||
}
|
||||
|
@ -34,11 +34,10 @@
|
||||
void reset_all_pins(void);
|
||||
// reset_pin_number takes the pin number instead of the pointer so that objects don't
|
||||
// need to store a full pointer.
|
||||
void reset_pin_number(uint8_t pin_port, uint8_t pin_number);
|
||||
void reset_pin_number(gpio_num_t pin_number);
|
||||
void claim_pin(const mcu_pin_obj_t* pin);
|
||||
bool pin_number_is_free(uint8_t pin_port, uint8_t pin_number);
|
||||
void never_reset_pin_number(uint8_t pin_port, uint8_t pin_number);
|
||||
// GPIO_TypeDef * pin_port(uint8_t pin_port);
|
||||
uint16_t pin_mask(uint8_t pin_number);
|
||||
bool pin_number_is_free(gpio_num_t pin_number);
|
||||
void never_reset_pin_number(gpio_num_t pin_number);
|
||||
void never_reset_pin(const mcu_pin_obj_t* pin);
|
||||
|
||||
#endif // MICROPY_INCLUDED_ESP32S2_COMMON_HAL_MICROCONTROLLER_PIN_H
|
||||
|
@ -39,24 +39,31 @@
|
||||
#include "supervisor/filesystem.h"
|
||||
#include "supervisor/shared/safe_mode.h"
|
||||
|
||||
#include "freertos/FreeRTOS.h"
|
||||
|
||||
void common_hal_mcu_delay_us(uint32_t delay) {
|
||||
|
||||
}
|
||||
|
||||
volatile uint32_t nesting_count = 0;
|
||||
static portMUX_TYPE cp_mutex = portMUX_INITIALIZER_UNLOCKED;
|
||||
|
||||
void common_hal_mcu_disable_interrupts(void) {
|
||||
if (nesting_count == 0) {
|
||||
portENTER_CRITICAL(&cp_mutex);
|
||||
}
|
||||
nesting_count++;
|
||||
}
|
||||
|
||||
void common_hal_mcu_enable_interrupts(void) {
|
||||
if (nesting_count == 0) {
|
||||
|
||||
// Maybe log here because it's very bad.
|
||||
}
|
||||
nesting_count--;
|
||||
if (nesting_count > 0) {
|
||||
return;
|
||||
}
|
||||
portEXIT_CRITICAL(&cp_mutex);
|
||||
}
|
||||
|
||||
void common_hal_mcu_on_next_reset(mcu_runmode_t runmode) {
|
||||
|
35
ports/esp32s2/modules/module.h
Normal file
35
ports/esp32s2/modules/module.h
Normal file
@ -0,0 +1,35 @@
|
||||
/*
|
||||
* This file is part of the Micro Python project, http://micropython.org/
|
||||
*
|
||||
* The MIT License (MIT)
|
||||
*
|
||||
* Copyright (c) 2020 Scott Shawcroft for Adafruit Industries
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
* of this software and associated documentation files (the "Software"), to deal
|
||||
* in the Software without restriction, including without limitation the rights
|
||||
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
* copies of the Software, and to permit persons to whom the Software is
|
||||
* furnished to do so, subject to the following conditions:
|
||||
*
|
||||
* The above copyright notice and this permission notice shall be included in
|
||||
* all copies or substantial portions of the Software.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||
* THE SOFTWARE.
|
||||
*/
|
||||
|
||||
|
||||
#ifndef MICROPY_INCLUDED_ESP32S2_MODULES_MODULE_H
|
||||
#define MICROPY_INCLUDED_ESP32S2_MODULES_MODULE_H
|
||||
|
||||
#include "shared-bindings/microcontroller/Pin.h"
|
||||
|
||||
void never_reset_module_internal_pins(void);
|
||||
|
||||
#endif // MICROPY_INCLUDED_ESP32S2_MODULES_MODULE_H
|
28
ports/esp32s2/modules/none.c
Normal file
28
ports/esp32s2/modules/none.c
Normal file
@ -0,0 +1,28 @@
|
||||
/*
|
||||
* This file is part of the Micro Python project, http://micropython.org/
|
||||
*
|
||||
* The MIT License (MIT)
|
||||
*
|
||||
* Copyright (c) 2020 Scott Shawcroft for Adafruit Industries
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
* of this software and associated documentation files (the "Software"), to deal
|
||||
* in the Software without restriction, including without limitation the rights
|
||||
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
* copies of the Software, and to permit persons to whom the Software is
|
||||
* furnished to do so, subject to the following conditions:
|
||||
*
|
||||
* The above copyright notice and this permission notice shall be included in
|
||||
* all copies or substantial portions of the Software.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||
* THE SOFTWARE.
|
||||
*/
|
||||
|
||||
void never_reset_module_internal_pins(void) {
|
||||
}
|
37
ports/esp32s2/modules/wroom.c
Normal file
37
ports/esp32s2/modules/wroom.c
Normal file
@ -0,0 +1,37 @@
|
||||
/*
|
||||
* This file is part of the Micro Python project, http://micropython.org/
|
||||
*
|
||||
* The MIT License (MIT)
|
||||
*
|
||||
* Copyright (c) 2020 Scott Shawcroft for Adafruit Industries
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
* of this software and associated documentation files (the "Software"), to deal
|
||||
* in the Software without restriction, including without limitation the rights
|
||||
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
* copies of the Software, and to permit persons to whom the Software is
|
||||
* furnished to do so, subject to the following conditions:
|
||||
*
|
||||
* The above copyright notice and this permission notice shall be included in
|
||||
* all copies or substantial portions of the Software.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||
* THE SOFTWARE.
|
||||
*/
|
||||
|
||||
#include "modules/module.h"
|
||||
|
||||
void never_reset_module_internal_pins(void) {
|
||||
// SPI Flash
|
||||
never_reset_pin(&pin_GPIO27);
|
||||
never_reset_pin(&pin_GPIO28);
|
||||
never_reset_pin(&pin_GPIO29);
|
||||
never_reset_pin(&pin_GPIO30);
|
||||
never_reset_pin(&pin_GPIO31);
|
||||
never_reset_pin(&pin_GPIO32);
|
||||
}
|
38
ports/esp32s2/modules/wrover.c
Normal file
38
ports/esp32s2/modules/wrover.c
Normal file
@ -0,0 +1,38 @@
|
||||
/*
|
||||
* This file is part of the Micro Python project, http://micropython.org/
|
||||
*
|
||||
* The MIT License (MIT)
|
||||
*
|
||||
* Copyright (c) 2020 Scott Shawcroft for Adafruit Industries
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
* of this software and associated documentation files (the "Software"), to deal
|
||||
* in the Software without restriction, including without limitation the rights
|
||||
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
* copies of the Software, and to permit persons to whom the Software is
|
||||
* furnished to do so, subject to the following conditions:
|
||||
*
|
||||
* The above copyright notice and this permission notice shall be included in
|
||||
* all copies or substantial portions of the Software.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||
* THE SOFTWARE.
|
||||
*/
|
||||
|
||||
#include "modules/module.h"
|
||||
|
||||
void never_reset_module_internal_pins(void) {
|
||||
// SPI Flash and RAM
|
||||
never_reset_pin(&pin_GPIO26);
|
||||
never_reset_pin(&pin_GPIO27);
|
||||
never_reset_pin(&pin_GPIO28);
|
||||
never_reset_pin(&pin_GPIO29);
|
||||
never_reset_pin(&pin_GPIO30);
|
||||
never_reset_pin(&pin_GPIO31);
|
||||
never_reset_pin(&pin_GPIO32);
|
||||
}
|
@ -33,3 +33,5 @@ CIRCUITPY_TOUCHIO = 0
|
||||
# Enable USB support
|
||||
CIRCUITPY_USB_HID = 1
|
||||
CIRCUITPY_USB_MIDI = 1
|
||||
|
||||
CIRCUITPY_MODULE ?= none
|
||||
|
@ -33,10 +33,12 @@
|
||||
#include <stdint.h>
|
||||
|
||||
#include "esp32s2_peripherals_config.h"
|
||||
#include "esp-idf/config/sdkconfig.h"
|
||||
#include "esp-idf/components/soc/include/hal/gpio_types.h"
|
||||
|
||||
typedef struct {
|
||||
PIN_PREFIX_FIELDS
|
||||
uint8_t number;
|
||||
gpio_num_t number;
|
||||
} mcu_pin_obj_t;
|
||||
|
||||
extern const mcu_pin_obj_t pin_GPIO0;
|
||||
|
@ -29,10 +29,12 @@
|
||||
#include <sys/time.h>
|
||||
#include "supervisor/port.h"
|
||||
#include "boards/board.h"
|
||||
#include "modules/module.h"
|
||||
|
||||
#include "freertos/FreeRTOS.h"
|
||||
#include "freertos/task.h"
|
||||
|
||||
#include "common-hal/microcontroller/Pin.h"
|
||||
#include "supervisor/memory.h"
|
||||
#include "supervisor/shared/tick.h"
|
||||
|
||||
@ -56,12 +58,14 @@ safe_mode_t port_init(void) {
|
||||
if (result != ESP_OK) {
|
||||
ESP_EARLY_LOGE(TAG, "Unable to create tick timer.");
|
||||
}
|
||||
never_reset_module_internal_pins();
|
||||
ESP_EARLY_LOGW(TAG, "port init done");
|
||||
return NO_SAFE_MODE;
|
||||
}
|
||||
|
||||
void reset_port(void) {
|
||||
|
||||
reset_all_pins();
|
||||
}
|
||||
|
||||
void reset_to_bootloader(void) {
|
||||
|
@ -64,12 +64,13 @@ void common_hal_digitalio_digitalinout_switch_to_input(
|
||||
touch_oe_write(touch_oe_read() & ~(1 << self->pin->number));
|
||||
}
|
||||
|
||||
void common_hal_digitalio_digitalinout_switch_to_output(
|
||||
digitalinout_result_t common_hal_digitalio_digitalinout_switch_to_output(
|
||||
digitalio_digitalinout_obj_t *self, bool value,
|
||||
digitalio_drive_mode_t drive_mode) {
|
||||
(void)drive_mode;
|
||||
common_hal_digitalio_digitalinout_set_value(self, value);
|
||||
touch_oe_write(touch_oe_read() | (1 << self->pin->number));
|
||||
return DIGITALINOUT_OK;
|
||||
}
|
||||
|
||||
digitalio_direction_t common_hal_digitalio_digitalinout_get_direction(
|
||||
@ -92,11 +93,12 @@ bool common_hal_digitalio_digitalinout_get_value(
|
||||
return !!(touch_i_read() & (1 << self->pin->number));
|
||||
}
|
||||
|
||||
void common_hal_digitalio_digitalinout_set_drive_mode(
|
||||
digitalinout_result_t common_hal_digitalio_digitalinout_set_drive_mode(
|
||||
digitalio_digitalinout_obj_t *self,
|
||||
digitalio_drive_mode_t drive_mode) {
|
||||
(void)self;
|
||||
(void)drive_mode;
|
||||
return DIGITALINOUT_OK;
|
||||
}
|
||||
|
||||
digitalio_drive_mode_t common_hal_digitalio_digitalinout_get_drive_mode(
|
||||
|
@ -136,7 +136,7 @@ void common_hal_busio_i2c_construct(busio_i2c_obj_t *self,
|
||||
}
|
||||
|
||||
if(self->sda == NULL || self->scl == NULL) {
|
||||
mp_raise_RuntimeError(translate("Invalid I2C pin selection"));
|
||||
mp_raise_ValueError(translate("Invalid pins"));
|
||||
} else {
|
||||
self->i2c = mcu_i2c_banks[self->sda->bank_idx - 1];
|
||||
}
|
||||
|
@ -162,7 +162,7 @@ void common_hal_busio_spi_construct(busio_spi_obj_t *self,
|
||||
if (spi_taken) {
|
||||
mp_raise_ValueError(translate("Hardware busy, try alternative pins"));
|
||||
} else {
|
||||
mp_raise_ValueError(translate("Invalid SPI pin selection"));
|
||||
mp_raise_ValueError(translate("Invalid pins"));
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -151,15 +151,15 @@ void common_hal_busio_uart_construct(busio_uart_obj_t *self,
|
||||
}
|
||||
|
||||
if (uart_taken) {
|
||||
mp_raise_RuntimeError(translate("Hardware in use, try alternative pins"));
|
||||
mp_raise_ValueError(translate("Hardware in use, try alternative pins"));
|
||||
}
|
||||
|
||||
if(self->rx == NULL && self->tx == NULL) {
|
||||
mp_raise_RuntimeError(translate("Invalid UART pin selection"));
|
||||
mp_raise_ValueError(translate("Invalid pins"));
|
||||
}
|
||||
|
||||
if (is_onedirection && ((rts != NULL) || (cts != NULL))) {
|
||||
mp_raise_RuntimeError(translate("Both RX and TX required for flow control"));
|
||||
mp_raise_ValueError(translate("Both RX and TX required for flow control"));
|
||||
}
|
||||
|
||||
// Filter for sane settings for RS485
|
||||
|
@ -97,7 +97,7 @@ void common_hal_digitalio_digitalinout_switch_to_input(
|
||||
common_hal_digitalio_digitalinout_set_pull(self, pull);
|
||||
}
|
||||
|
||||
void common_hal_digitalio_digitalinout_switch_to_output(
|
||||
digitalinout_result_t common_hal_digitalio_digitalinout_switch_to_output(
|
||||
digitalio_digitalinout_obj_t* self, bool value,
|
||||
digitalio_drive_mode_t drive_mode) {
|
||||
self->output = true;
|
||||
@ -108,6 +108,7 @@ void common_hal_digitalio_digitalinout_switch_to_output(
|
||||
|
||||
const gpio_pin_config_t config = { kGPIO_DigitalOutput, value, kGPIO_NoIntmode };
|
||||
GPIO_PinInit(self->pin->gpio, self->pin->number, &config);
|
||||
return DIGITALINOUT_OK;
|
||||
}
|
||||
|
||||
digitalio_direction_t common_hal_digitalio_digitalinout_get_direction(
|
||||
@ -125,7 +126,7 @@ bool common_hal_digitalio_digitalinout_get_value(
|
||||
return GPIO_PinRead(self->pin->gpio, self->pin->number);
|
||||
}
|
||||
|
||||
void common_hal_digitalio_digitalinout_set_drive_mode(
|
||||
digitalinout_result_t common_hal_digitalio_digitalinout_set_drive_mode(
|
||||
digitalio_digitalinout_obj_t* self,
|
||||
digitalio_drive_mode_t drive_mode) {
|
||||
bool value = common_hal_digitalio_digitalinout_get_value(self);
|
||||
@ -138,6 +139,7 @@ void common_hal_digitalio_digitalinout_set_drive_mode(
|
||||
if (value) {
|
||||
common_hal_digitalio_digitalinout_set_value(self, value);
|
||||
}
|
||||
return DIGITALINOUT_OK;
|
||||
}
|
||||
|
||||
digitalio_drive_mode_t common_hal_digitalio_digitalinout_get_drive_mode(
|
||||
|
103
ports/nrf/boards/hiibot_bluefi/board.c
Normal file
103
ports/nrf/boards/hiibot_bluefi/board.c
Normal file
@ -0,0 +1,103 @@
|
||||
/*
|
||||
* This file is part of the MicroPython project, http://micropython.org/
|
||||
*
|
||||
* The MIT License (MIT)
|
||||
*
|
||||
* Copyright (c) 2017 Scott Shawcroft for Adafruit Industries
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
* of this software and associated documentation files (the "Software"), to deal
|
||||
* in the Software without restriction, including without limitation the rights
|
||||
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
* copies of the Software, and to permit persons to whom the Software is
|
||||
* furnished to do so, subject to the following conditions:
|
||||
*
|
||||
* The above copyright notice and this permission notice shall be included in
|
||||
* all copies or substantial portions of the Software.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||
* THE SOFTWARE.
|
||||
*/
|
||||
|
||||
#include "boards/board.h"
|
||||
#include "mpconfigboard.h"
|
||||
|
||||
#include "shared-bindings/busio/SPI.h"
|
||||
#include "shared-bindings/displayio/FourWire.h"
|
||||
#include "shared-module/displayio/__init__.h"
|
||||
#include "shared-module/displayio/mipi_constants.h"
|
||||
|
||||
displayio_fourwire_obj_t board_display_obj;
|
||||
|
||||
#define DELAY 0x80
|
||||
|
||||
uint8_t display_init_sequence[] = {
|
||||
0x01, 0 | DELAY, 150, // SWRESET
|
||||
0x11, 0 | DELAY, 255, // SLPOUT
|
||||
0x36, 1, 0b10100000, // _MADCTL for rotation 0
|
||||
0x3a, 1, 0x55, // COLMOD - 16bit color
|
||||
0x21, 0 | DELAY, 10, // _INVON
|
||||
0x13, 0 | DELAY, 10, // _NORON
|
||||
0x29, 0 | DELAY, 255, // _DISPON
|
||||
};
|
||||
|
||||
void board_init(void) {
|
||||
busio_spi_obj_t* spi = &displays[0].fourwire_bus.inline_bus;
|
||||
common_hal_busio_spi_construct(spi, &pin_P0_07, &pin_P1_08, NULL); // SCK, MOSI, MISO
|
||||
common_hal_busio_spi_never_reset(spi);
|
||||
|
||||
displayio_fourwire_obj_t* bus = &displays[0].fourwire_bus;
|
||||
bus->base.type = &displayio_fourwire_type;
|
||||
common_hal_displayio_fourwire_construct(bus,
|
||||
spi,
|
||||
&pin_P0_27, // TFT_DC Command or data
|
||||
&pin_P0_05, // TFT_CS Chip select
|
||||
NULL, // no TFT_RST Reset
|
||||
//&pin_P1_14, // TFT_RST Reset
|
||||
60000000, // Baudrate
|
||||
0, // Polarity
|
||||
0); // Phase
|
||||
|
||||
displayio_display_obj_t* display = &displays[0].display;
|
||||
display->base.type = &displayio_display_type;
|
||||
common_hal_displayio_display_construct(display,
|
||||
bus,
|
||||
240, // Width (after rotation)
|
||||
240, // Height (after rotation)
|
||||
80, // column start
|
||||
0, // row start
|
||||
180, // rotation
|
||||
16, // Color depth
|
||||
false, // Grayscale
|
||||
false, // Pixels in a byte share a row. Only used for depth < 8
|
||||
1, // bytes per cell. Only valid for depths < 8
|
||||
false, // reverse_pixels_in_byte. Only valid for depths < 8
|
||||
true, // reverse_pixels_in_word
|
||||
MIPI_COMMAND_SET_COLUMN_ADDRESS, // Set column command
|
||||
MIPI_COMMAND_SET_PAGE_ADDRESS, // Set row command
|
||||
MIPI_COMMAND_WRITE_MEMORY_START, // Write memory command
|
||||
0x37, // set vertical scroll command
|
||||
display_init_sequence,
|
||||
sizeof(display_init_sequence),
|
||||
&pin_P1_13, // backlight pin
|
||||
NO_BRIGHTNESS_COMMAND,
|
||||
1.0f, // brightness (ignored)
|
||||
true, // auto_brightness
|
||||
false, // single_byte_bounds
|
||||
false, // data_as_commands
|
||||
true, // auto_refresh
|
||||
60, // native_frames_per_second
|
||||
true); // backlight_on_high
|
||||
}
|
||||
|
||||
bool board_requests_safe_mode(void) {
|
||||
return false;
|
||||
}
|
||||
|
||||
void reset_board(void) {
|
||||
}
|
67
ports/nrf/boards/hiibot_bluefi/mpconfigboard.h
Normal file
67
ports/nrf/boards/hiibot_bluefi/mpconfigboard.h
Normal file
@ -0,0 +1,67 @@
|
||||
/*
|
||||
* This file is part of the MicroPython project, http://micropython.org/
|
||||
*
|
||||
* The MIT License (MIT)
|
||||
*
|
||||
* Copyright (c) 2016 Glenn Ruben Bakke
|
||||
* Copyright (c) 2018 Dan Halbert for Adafruit Industries
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
* of this software and associated documentation files (the "Software"), to deal
|
||||
* in the Software without restriction, including without limitation the rights
|
||||
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
* copies of the Software, and to permit persons to whom the Software is
|
||||
* furnished to do so, subject to the following conditions:
|
||||
*
|
||||
* The above copyright notice and this permission notice shall be included in
|
||||
* all copies or substantial portions of the Software.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||
* THE SOFTWARE.
|
||||
*/
|
||||
|
||||
#include "nrfx/hal/nrf_gpio.h"
|
||||
|
||||
#define MICROPY_HW_BOARD_NAME "HiiBot BlueFi"
|
||||
#define MICROPY_HW_MCU_NAME "nRF52840"
|
||||
|
||||
#define MICROPY_HW_NEOPIXEL (&pin_P1_10) // P18 / D18
|
||||
|
||||
#define MICROPY_HW_LED_STATUS (&pin_P1_12) // P17 / D17
|
||||
|
||||
#if QSPI_FLASH_FILESYSTEM
|
||||
#define MICROPY_QSPI_DATA0 NRF_GPIO_PIN_MAP(1, 1)
|
||||
#define MICROPY_QSPI_DATA1 NRF_GPIO_PIN_MAP(1, 4)
|
||||
#define MICROPY_QSPI_DATA2 NRF_GPIO_PIN_MAP(1, 6)
|
||||
#define MICROPY_QSPI_DATA3 NRF_GPIO_PIN_MAP(1, 5)
|
||||
#define MICROPY_QSPI_SCK NRF_GPIO_PIN_MAP(1, 3)
|
||||
#define MICROPY_QSPI_CS NRF_GPIO_PIN_MAP(1, 2)
|
||||
#endif
|
||||
|
||||
#if SPI_FLASH_FILESYSTEM
|
||||
#define SPI_FLASH_MOSI_PIN &pin_P1_01
|
||||
#define SPI_FLASH_MISO_PIN &pin_P1_04
|
||||
#define SPI_FLASH_SCK_PIN &pin_P1_03
|
||||
#define SPI_FLASH_CS_PIN &pin_P1_02
|
||||
#endif
|
||||
|
||||
// No 32kHz crystal. THere's a 32MHz crystal in the nRF module.
|
||||
#define BOARD_HAS_32KHZ_XTAL (0)
|
||||
|
||||
#define DEFAULT_I2C_BUS_SCL (&pin_P0_00)
|
||||
#define DEFAULT_I2C_BUS_SDA (&pin_P0_31)
|
||||
|
||||
#define DEFAULT_SPI_BUS_SCK (&pin_P0_06)
|
||||
#define DEFAULT_SPI_BUS_MOSI (&pin_P0_26)
|
||||
#define DEFAULT_SPI_BUS_MISO (&pin_P0_04)
|
||||
|
||||
#define DEFAULT_UART_BUS_RX (&pin_P0_28)
|
||||
#define DEFAULT_UART_BUS_TX (&pin_P0_02)
|
||||
|
||||
|
||||
|
18
ports/nrf/boards/hiibot_bluefi/mpconfigboard.mk
Normal file
18
ports/nrf/boards/hiibot_bluefi/mpconfigboard.mk
Normal file
@ -0,0 +1,18 @@
|
||||
USB_VID = 0x239A
|
||||
USB_PID = 0x0016
|
||||
USB_PRODUCT = "HiiBot BlueFi"
|
||||
USB_MANUFACTURER = "HiiBot"
|
||||
|
||||
MCU_CHIP = nrf52840
|
||||
|
||||
QSPI_FLASH_FILESYSTEM = 1
|
||||
EXTERNAL_FLASH_DEVICE_COUNT = 1
|
||||
EXTERNAL_FLASH_DEVICES = "W25Q16JV_IQ"
|
||||
|
||||
# Allocate two, not just one I2C peripheral for Bluefi, so that we have both
|
||||
# on-board and off-board I2C available.
|
||||
# When SPIM3 becomes available we'll be able to have two I2C and two SPI peripherals.
|
||||
# We use a CFLAGS define here because there are include order issues
|
||||
# if we try to include "mpconfigport.h" into nrfx_config.h .
|
||||
CFLAGS += -DCIRCUITPY_NRF_NUM_I2C=2
|
||||
|
180
ports/nrf/boards/hiibot_bluefi/pins.c
Normal file
180
ports/nrf/boards/hiibot_bluefi/pins.c
Normal file
@ -0,0 +1,180 @@
|
||||
#include "shared-bindings/board/__init__.h"
|
||||
|
||||
#include "boards/board.h"
|
||||
#include "shared-module/displayio/__init__.h"
|
||||
|
||||
STATIC const mp_rom_map_elem_t board_module_globals_table[] = {
|
||||
{ MP_ROM_QSTR(MP_QSTR_P0), MP_ROM_PTR(&pin_P0_28) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_D0), MP_ROM_PTR(&pin_P0_28) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_A0), MP_ROM_PTR(&pin_P0_28) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_RX), MP_ROM_PTR(&pin_P0_28) },
|
||||
|
||||
{ MP_ROM_QSTR(MP_QSTR_P1), MP_ROM_PTR(&pin_P0_02) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_D1), MP_ROM_PTR(&pin_P0_02) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_A1), MP_ROM_PTR(&pin_P0_02) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_TX), MP_ROM_PTR(&pin_P0_02) },
|
||||
|
||||
{ MP_ROM_QSTR(MP_QSTR_P2), MP_ROM_PTR(&pin_P0_29) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_D2), MP_ROM_PTR(&pin_P0_29) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_A2), MP_ROM_PTR(&pin_P0_29) },
|
||||
|
||||
{ MP_ROM_QSTR(MP_QSTR_P3), MP_ROM_PTR(&pin_P0_30) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_D3), MP_ROM_PTR(&pin_P0_30) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_A3), MP_ROM_PTR(&pin_P0_30) },
|
||||
|
||||
{ MP_ROM_QSTR(MP_QSTR_P4), MP_ROM_PTR(&pin_P0_03) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_D4), MP_ROM_PTR(&pin_P0_03) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_A4), MP_ROM_PTR(&pin_P0_03) },
|
||||
|
||||
{ MP_ROM_QSTR(MP_QSTR_P5), MP_ROM_PTR(&pin_P1_07) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_D5), MP_ROM_PTR(&pin_P1_07) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_BUTTON_A), MP_ROM_PTR(&pin_P1_07) },
|
||||
|
||||
{ MP_ROM_QSTR(MP_QSTR_P6), MP_ROM_PTR(&pin_P0_08) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_D6), MP_ROM_PTR(&pin_P0_08) },
|
||||
|
||||
{ MP_ROM_QSTR(MP_QSTR_P7), MP_ROM_PTR(&pin_P0_25) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_D7), MP_ROM_PTR(&pin_P0_25) },
|
||||
|
||||
{ MP_ROM_QSTR(MP_QSTR_P8), MP_ROM_PTR(&pin_P0_23) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_D8), MP_ROM_PTR(&pin_P0_23) },
|
||||
|
||||
{ MP_ROM_QSTR(MP_QSTR_P9), MP_ROM_PTR(&pin_P0_21) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_D9), MP_ROM_PTR(&pin_P0_21) },
|
||||
|
||||
{ MP_ROM_QSTR(MP_QSTR_P10), MP_ROM_PTR(&pin_P0_19) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_D10), MP_ROM_PTR(&pin_P0_19) },
|
||||
|
||||
{ MP_ROM_QSTR(MP_QSTR_P11), MP_ROM_PTR(&pin_P1_09) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_D11), MP_ROM_PTR(&pin_P1_09) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_BUTTON_B), MP_ROM_PTR(&pin_P1_09) },
|
||||
|
||||
{ MP_ROM_QSTR(MP_QSTR_P12), MP_ROM_PTR(&pin_P0_16) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_D12), MP_ROM_PTR(&pin_P0_16) },
|
||||
|
||||
{ MP_ROM_QSTR(MP_QSTR_P13), MP_ROM_PTR(&pin_P0_06) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_D13), MP_ROM_PTR(&pin_P0_06) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_SCK), MP_ROM_PTR(&pin_P0_06) },
|
||||
|
||||
{ MP_ROM_QSTR(MP_QSTR_P14), MP_ROM_PTR(&pin_P0_04) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_D14), MP_ROM_PTR(&pin_P0_04) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_A5), MP_ROM_PTR(&pin_P0_04) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_MISO), MP_ROM_PTR(&pin_P0_04) },
|
||||
|
||||
{ MP_ROM_QSTR(MP_QSTR_P15), MP_ROM_PTR(&pin_P0_26) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_D15), MP_ROM_PTR(&pin_P0_26) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_MOSI), MP_ROM_PTR(&pin_P0_26) },
|
||||
|
||||
{ MP_ROM_QSTR(MP_QSTR_P16), MP_ROM_PTR(&pin_P0_01) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_D16), MP_ROM_PTR(&pin_P0_01) },
|
||||
|
||||
{ MP_ROM_QSTR(MP_QSTR_P17), MP_ROM_PTR(&pin_P1_12) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_D17), MP_ROM_PTR(&pin_P1_12) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_REDLED), MP_ROM_PTR(&pin_P1_12) },
|
||||
|
||||
{ MP_ROM_QSTR(MP_QSTR_P18), MP_ROM_PTR(&pin_P1_10) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_D18), MP_ROM_PTR(&pin_P1_10) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_NEOPIXEL), MP_ROM_PTR(&pin_P1_10) },
|
||||
|
||||
{ MP_ROM_QSTR(MP_QSTR_P19), MP_ROM_PTR(&pin_P0_00) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_D19), MP_ROM_PTR(&pin_P0_00) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_SCL), MP_ROM_PTR(&pin_P0_00) },
|
||||
|
||||
{ MP_ROM_QSTR(MP_QSTR_P20), MP_ROM_PTR(&pin_P0_31) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_D20), MP_ROM_PTR(&pin_P0_31) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_A6), MP_ROM_PTR(&pin_P0_31) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_SDA), MP_ROM_PTR(&pin_P0_31) },
|
||||
|
||||
{ MP_ROM_QSTR(MP_QSTR_P21), MP_ROM_PTR(&pin_P0_09) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_D21), MP_ROM_PTR(&pin_P0_09) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_MICROPHONE_CLOCK), MP_ROM_PTR(&pin_P0_09) },
|
||||
|
||||
{ MP_ROM_QSTR(MP_QSTR_P22), MP_ROM_PTR(&pin_P0_10) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_D22), MP_ROM_PTR(&pin_P0_10) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_MICROPHONE_DATA), MP_ROM_PTR(&pin_P0_10) },
|
||||
|
||||
{ MP_ROM_QSTR(MP_QSTR_P23), MP_ROM_PTR(&pin_P0_07) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_D23), MP_ROM_PTR(&pin_P0_07) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_TFT_SCK), MP_ROM_PTR(&pin_P0_07) },
|
||||
|
||||
{ MP_ROM_QSTR(MP_QSTR_P24), MP_ROM_PTR(&pin_P1_08) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_D24), MP_ROM_PTR(&pin_P1_08) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_TFT_MOSI), MP_ROM_PTR(&pin_P1_08) },
|
||||
|
||||
{ MP_ROM_QSTR(MP_QSTR_P25), MP_ROM_PTR(&pin_P0_05) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_D25), MP_ROM_PTR(&pin_P0_05) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_TFT_CS), MP_ROM_PTR(&pin_P0_05) },
|
||||
|
||||
{ MP_ROM_QSTR(MP_QSTR_P26), MP_ROM_PTR(&pin_P0_27) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_D26), MP_ROM_PTR(&pin_P0_27) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_TFT_DC), MP_ROM_PTR(&pin_P0_27) },
|
||||
|
||||
{ MP_ROM_QSTR(MP_QSTR_P27), MP_ROM_PTR(&pin_P1_14) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_D27), MP_ROM_PTR(&pin_P1_14) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_TFT_RESET), MP_ROM_PTR(&pin_P1_14) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_TFT_BACKLIGHT), MP_ROM_PTR(&pin_P1_14) },
|
||||
|
||||
// P28~P33/D28~D33 connecte into QSPI FlashROM (W25Q16JV_IQ)
|
||||
|
||||
{ MP_ROM_QSTR(MP_QSTR_P34), MP_ROM_PTR(&pin_P0_22) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_D34), MP_ROM_PTR(&pin_P0_22) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_WIFI_SCK), MP_ROM_PTR(&pin_P0_22) },
|
||||
|
||||
{ MP_ROM_QSTR(MP_QSTR_P35), MP_ROM_PTR(&pin_P0_17) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_D35), MP_ROM_PTR(&pin_P0_17) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_WIFI_MISO), MP_ROM_PTR(&pin_P0_17) },
|
||||
|
||||
{ MP_ROM_QSTR(MP_QSTR_P36), MP_ROM_PTR(&pin_P0_20) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_D36), MP_ROM_PTR(&pin_P0_20) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_WIFI_MOSI), MP_ROM_PTR(&pin_P0_20) },
|
||||
|
||||
{ MP_ROM_QSTR(MP_QSTR_P37), MP_ROM_PTR(&pin_P0_15) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_D37), MP_ROM_PTR(&pin_P0_15) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_WIFI_BUSY), MP_ROM_PTR(&pin_P0_15) },
|
||||
|
||||
{ MP_ROM_QSTR(MP_QSTR_P38), MP_ROM_PTR(&pin_P0_24) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_D38), MP_ROM_PTR(&pin_P0_24) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_WIFI_CS), MP_ROM_PTR(&pin_P0_24) },
|
||||
|
||||
{ MP_ROM_QSTR(MP_QSTR_P39), MP_ROM_PTR(&pin_P1_00) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_D39), MP_ROM_PTR(&pin_P1_00) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_WIFI_RESET), MP_ROM_PTR(&pin_P1_00) },
|
||||
|
||||
{ MP_ROM_QSTR(MP_QSTR_P40), MP_ROM_PTR(&pin_P0_13) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_D40), MP_ROM_PTR(&pin_P0_13) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_WIFI_PWR), MP_ROM_PTR(&pin_P0_13) },
|
||||
|
||||
{ MP_ROM_QSTR(MP_QSTR_P41), MP_ROM_PTR(&pin_P0_11) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_D41), MP_ROM_PTR(&pin_P0_11) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_SENSORS_SCL), MP_ROM_PTR(&pin_P0_11) },
|
||||
|
||||
{ MP_ROM_QSTR(MP_QSTR_P42), MP_ROM_PTR(&pin_P0_12) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_D42), MP_ROM_PTR(&pin_P0_12) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_SENSORS_SDA), MP_ROM_PTR(&pin_P0_12) },
|
||||
|
||||
{ MP_ROM_QSTR(MP_QSTR_P43), MP_ROM_PTR(&pin_P0_14) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_D43), MP_ROM_PTR(&pin_P0_14) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_IMU_IRQ), MP_ROM_PTR(&pin_P0_14) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_ACCELEROMETER_INTERRUPT), MP_ROM_PTR(&pin_P0_14) },
|
||||
|
||||
{ MP_ROM_QSTR(MP_QSTR_P44), MP_ROM_PTR(&pin_P1_14) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_D44), MP_ROM_PTR(&pin_P1_14) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_WHITELED), MP_ROM_PTR(&pin_P1_14) },
|
||||
|
||||
{ MP_ROM_QSTR(MP_QSTR_P45), MP_ROM_PTR(&pin_P1_11) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_D45), MP_ROM_PTR(&pin_P1_11) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_SPEAKER_ENABLE), MP_ROM_PTR(&pin_P1_11) },
|
||||
|
||||
{ MP_ROM_QSTR(MP_QSTR_P46), MP_ROM_PTR(&pin_P1_15) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_D46), MP_ROM_PTR(&pin_P1_15) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_SPEAKER), MP_ROM_PTR(&pin_P1_15) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_AUDIO), MP_ROM_PTR(&pin_P1_15) },
|
||||
|
||||
{ MP_ROM_QSTR(MP_QSTR_I2C), MP_ROM_PTR(&board_i2c_obj) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_SPI), MP_ROM_PTR(&board_spi_obj) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_UART), MP_ROM_PTR(&board_uart_obj) },
|
||||
|
||||
{ MP_ROM_QSTR(MP_QSTR_DISPLAY), MP_ROM_PTR(&displays[0].display)}
|
||||
};
|
||||
|
||||
MP_DEFINE_CONST_DICT(board_module_globals, board_module_globals_table);
|
@ -65,12 +65,13 @@ void common_hal_digitalio_digitalinout_switch_to_input(
|
||||
common_hal_digitalio_digitalinout_set_pull(self, pull);
|
||||
}
|
||||
|
||||
void common_hal_digitalio_digitalinout_switch_to_output(
|
||||
digitalinout_result_t common_hal_digitalio_digitalinout_switch_to_output(
|
||||
digitalio_digitalinout_obj_t *self, bool value,
|
||||
digitalio_drive_mode_t drive_mode) {
|
||||
|
||||
common_hal_digitalio_digitalinout_set_drive_mode(self, drive_mode);
|
||||
common_hal_digitalio_digitalinout_set_value(self, value);
|
||||
return DIGITALINOUT_OK;
|
||||
}
|
||||
|
||||
digitalio_direction_t common_hal_digitalio_digitalinout_get_direction(
|
||||
@ -92,7 +93,7 @@ bool common_hal_digitalio_digitalinout_get_value(
|
||||
: nrf_gpio_pin_out_read(self->pin->number);
|
||||
}
|
||||
|
||||
void common_hal_digitalio_digitalinout_set_drive_mode(
|
||||
digitalinout_result_t common_hal_digitalio_digitalinout_set_drive_mode(
|
||||
digitalio_digitalinout_obj_t *self,
|
||||
digitalio_drive_mode_t drive_mode) {
|
||||
nrf_gpio_cfg(self->pin->number,
|
||||
@ -101,6 +102,7 @@ void common_hal_digitalio_digitalinout_set_drive_mode(
|
||||
NRF_GPIO_PIN_NOPULL,
|
||||
drive_mode == DRIVE_MODE_OPEN_DRAIN ? NRF_GPIO_PIN_H0D1 : NRF_GPIO_PIN_H0H1,
|
||||
NRF_GPIO_PIN_NOSENSE);
|
||||
return DIGITALINOUT_OK;
|
||||
}
|
||||
|
||||
digitalio_drive_mode_t common_hal_digitalio_digitalinout_get_drive_mode(
|
||||
|
@ -29,7 +29,7 @@
|
||||
#include "py/runtime.h"
|
||||
#include "supervisor/shared/translate.h"
|
||||
|
||||
// The HAL is sparse on obtaining register information, so we use the LLs here.
|
||||
// The HAL is sparse on obtaining register information, so we use the LLs here.
|
||||
#if (CPY_STM32H7)
|
||||
#include "stm32h7xx_ll_gpio.h"
|
||||
#elif (CPY_STM32F7)
|
||||
@ -85,12 +85,13 @@ void common_hal_digitalio_digitalinout_switch_to_input(
|
||||
common_hal_digitalio_digitalinout_set_pull(self, pull);
|
||||
}
|
||||
|
||||
void common_hal_digitalio_digitalinout_switch_to_output(
|
||||
digitalinout_result_t common_hal_digitalio_digitalinout_switch_to_output(
|
||||
digitalio_digitalinout_obj_t *self, bool value,
|
||||
digitalio_drive_mode_t drive_mode) {
|
||||
|
||||
common_hal_digitalio_digitalinout_set_drive_mode(self, drive_mode);
|
||||
common_hal_digitalio_digitalinout_set_value(self, value);
|
||||
return DIGITALINOUT_OK;
|
||||
}
|
||||
|
||||
digitalio_direction_t common_hal_digitalio_digitalinout_get_direction(
|
||||
@ -112,7 +113,7 @@ bool common_hal_digitalio_digitalinout_get_value(
|
||||
: LL_GPIO_IsOutputPinSet(pin_port(self->pin->port), pin_mask(self->pin->number));
|
||||
}
|
||||
|
||||
void common_hal_digitalio_digitalinout_set_drive_mode(
|
||||
digitalinout_result_t common_hal_digitalio_digitalinout_set_drive_mode(
|
||||
digitalio_digitalinout_obj_t *self,
|
||||
digitalio_drive_mode_t drive_mode) {
|
||||
GPIO_InitTypeDef GPIO_InitStruct = {0};
|
||||
@ -122,6 +123,7 @@ void common_hal_digitalio_digitalinout_set_drive_mode(
|
||||
GPIO_InitStruct.Pull = GPIO_NOPULL;
|
||||
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_VERY_HIGH;
|
||||
HAL_GPIO_Init(pin_port(self->pin->port), &GPIO_InitStruct);
|
||||
return DIGITALINOUT_OK;
|
||||
}
|
||||
|
||||
digitalio_drive_mode_t common_hal_digitalio_digitalinout_get_drive_mode(
|
||||
|
@ -53,18 +53,13 @@ static void parse_byteorder(mp_obj_t byteorder_obj, pixelbuf_byteorder_details_t
|
||||
//| When brightness is less than 1.0, a second buffer will be used to store the color values
|
||||
//| before they are adjusted for brightness.
|
||||
//|
|
||||
//| When ``P`` (pwm duration) is present as the 4th character of the byteorder
|
||||
//| When ``P`` (PWM duration) is present as the 4th character of the byteorder
|
||||
//| string, the 4th value in the tuple/list for a pixel is the individual pixel
|
||||
//| brightness (0.0-1.0) and will enable a Dotstar compatible 1st byte in the
|
||||
//| output buffer (``buf``).
|
||||
//|
|
||||
//| When ``P`` (pwm duration) is present as the first character of the byteorder
|
||||
//| string, the 4th value in the tuple/list for a pixel is the individual pixel
|
||||
//| brightness (0.0-1.0) and will enable a Dotstar compatible 1st byte in the
|
||||
//| output buffer (``buf``).
|
||||
//| brightness (0.0-1.0) and will enable a Dotstar compatible 1st byte for each
|
||||
//| pixel.
|
||||
//|
|
||||
//| :param ~int size: Number of pixels
|
||||
//| :param ~str byteorder: Byte order string (such as "BGR" or "PBGR")
|
||||
//| :param ~str byteorder: Byte order string (such as "RGB", "RGBW" or "PBGR")
|
||||
//| :param ~float brightness: Brightness (0 to 1.0, default 1.0)
|
||||
//| :param ~bool auto_write: Whether to automatically write pixels (Default False)
|
||||
//| :param bytes header: Sequence of bytes to always send before pixel values.
|
||||
@ -276,13 +271,16 @@ STATIC MP_DEFINE_CONST_FUN_OBJ_2(pixelbuf_pixelbuf_fill_obj, pixelbuf_pixelbuf_f
|
||||
|
||||
//| def __getitem__(self, index: Any) -> Any:
|
||||
//| """Returns the pixel value at the given index as a tuple of (Red, Green, Blue[, White]) values
|
||||
//| between 0 and 255."""
|
||||
//| between 0 and 255. When in PWM (DotStar) mode, the 4th tuple value is a float of the pixel
|
||||
//| intensity from 0-1.0."""
|
||||
//| ...
|
||||
//|
|
||||
//| def __setitem__(self, index: Any, value: Any) -> Any:
|
||||
//| """Sets the pixel value at the given index. Value can either be a tuple of (Red, Green, Blue
|
||||
//| [, White]) values between 0 and 255 or an integer where the red, green and blue values are
|
||||
//| packed into the lower three bytes (0xRRGGBB)."""
|
||||
//| """Sets the pixel value at the given index. Value can either be a tuple or integer. Tuples are
|
||||
//| The individual (Red, Green, Blue[, White]) values between 0 and 255. If given an integer, the
|
||||
//| red, green and blue values are packed into the lower three bytes (0xRRGGBB).
|
||||
//| For RGBW byteorders, if given only RGB values either as an int or as a tuple, the white value
|
||||
//| is used instead when the red, green, and blue values are the same."""
|
||||
//| ...
|
||||
//|
|
||||
STATIC mp_obj_t pixelbuf_pixelbuf_subscr(mp_obj_t self_in, mp_obj_t index_in, mp_obj_t value) {
|
||||
@ -300,17 +298,20 @@ STATIC mp_obj_t pixelbuf_pixelbuf_subscr(mp_obj_t self_in, mp_obj_t index_in, mp
|
||||
size_t length = common_hal__pixelbuf_pixelbuf_get_len(self_in);
|
||||
mp_seq_get_fast_slice_indexes(length, index_in, &slice);
|
||||
|
||||
if (slice.step < 0) {
|
||||
mp_raise_IndexError(translate("Negative step not supported"));
|
||||
size_t slice_len;
|
||||
if (slice.step > 0) {
|
||||
slice_len = slice.stop - slice.start;
|
||||
} else {
|
||||
slice_len = 1 + slice.start - slice.stop;
|
||||
}
|
||||
if (slice.step > 1 || slice.step < -1) {
|
||||
size_t step = slice.step > 0 ? slice.step : slice.step * -1;
|
||||
slice_len = (slice_len / step) + (slice_len % step ? 1 : 0);
|
||||
}
|
||||
|
||||
if (value == MP_OBJ_SENTINEL) { // Get
|
||||
size_t len = slice.stop - slice.start;
|
||||
if (slice.step > 1) {
|
||||
len = (len / slice.step) + (len % slice.step ? 1 : 0);
|
||||
}
|
||||
mp_obj_tuple_t* t = MP_OBJ_TO_PTR(mp_obj_new_tuple(len, NULL));
|
||||
for (uint i = 0; i < len; i++) {
|
||||
mp_obj_tuple_t* t = MP_OBJ_TO_PTR(mp_obj_new_tuple(slice_len, NULL));
|
||||
for (uint i = 0; i < slice_len; i++) {
|
||||
t->items[i] = common_hal__pixelbuf_pixelbuf_get_pixel(self_in, i * slice.step + slice.start);
|
||||
}
|
||||
return MP_OBJ_FROM_PTR(t);
|
||||
@ -321,10 +322,6 @@ STATIC mp_obj_t pixelbuf_pixelbuf_subscr(mp_obj_t self_in, mp_obj_t index_in, mp
|
||||
mp_raise_ValueError(translate("tuple/list required on RHS"));
|
||||
}
|
||||
|
||||
size_t dst_len = (slice.stop - slice.start);
|
||||
if (slice.step > 1) {
|
||||
dst_len = (dst_len / slice.step) + (dst_len % slice.step ? 1 : 0);
|
||||
}
|
||||
mp_obj_t *src_objs;
|
||||
size_t num_items;
|
||||
if (MP_OBJ_IS_TYPE(value, &mp_type_list)) {
|
||||
@ -336,12 +333,12 @@ STATIC mp_obj_t pixelbuf_pixelbuf_subscr(mp_obj_t self_in, mp_obj_t index_in, mp
|
||||
num_items = l->len;
|
||||
src_objs = l->items;
|
||||
}
|
||||
if (num_items != dst_len) {
|
||||
if (num_items != slice_len) {
|
||||
mp_raise_ValueError_varg(translate("Unmatched number of items on RHS (expected %d, got %d)."),
|
||||
dst_len, num_items);
|
||||
slice_len, num_items);
|
||||
}
|
||||
|
||||
common_hal__pixelbuf_pixelbuf_set_pixels(self_in, slice.start, slice.stop, slice.step, src_objs);
|
||||
common_hal__pixelbuf_pixelbuf_set_pixels(self_in, slice.start, slice.step, slice_len, src_objs);
|
||||
return mp_const_none;
|
||||
#else
|
||||
return MP_OBJ_NULL; // op not supported
|
||||
|
@ -47,6 +47,6 @@ void common_hal__pixelbuf_pixelbuf_fill(mp_obj_t self, mp_obj_t item);
|
||||
void common_hal__pixelbuf_pixelbuf_show(mp_obj_t self);
|
||||
mp_obj_t common_hal__pixelbuf_pixelbuf_get_pixel(mp_obj_t self, size_t index);
|
||||
void common_hal__pixelbuf_pixelbuf_set_pixel(mp_obj_t self, size_t index, mp_obj_t item);
|
||||
void common_hal__pixelbuf_pixelbuf_set_pixels(mp_obj_t self_in, size_t start, size_t stop, size_t step, mp_obj_t* values);
|
||||
void common_hal__pixelbuf_pixelbuf_set_pixels(mp_obj_t self_in, size_t start, mp_int_t step, size_t slice_len, mp_obj_t* values);
|
||||
|
||||
#endif // CP_SHARED_BINDINGS_PIXELBUF_PIXELBUF_H
|
||||
|
@ -131,7 +131,10 @@ STATIC mp_obj_t digitalio_digitalinout_switch_to_output(size_t n_args, const mp_
|
||||
drive_mode = DRIVE_MODE_OPEN_DRAIN;
|
||||
}
|
||||
// do the transfer
|
||||
common_hal_digitalio_digitalinout_switch_to_output(self, args[ARG_value].u_bool, drive_mode);
|
||||
digitalinout_result_t result = common_hal_digitalio_digitalinout_switch_to_output(self, args[ARG_value].u_bool, drive_mode);
|
||||
if (result == DIGITALINOUT_INPUT_ONLY) {
|
||||
mp_raise_NotImplementedError(translate("Pin is input only"));
|
||||
}
|
||||
return mp_const_none;
|
||||
}
|
||||
MP_DEFINE_CONST_FUN_OBJ_KW(digitalio_digitalinout_switch_to_output_obj, 1, digitalio_digitalinout_switch_to_output);
|
||||
@ -207,7 +210,10 @@ STATIC mp_obj_t digitalio_digitalinout_obj_set_direction(mp_obj_t self_in, mp_ob
|
||||
if (value == &digitalio_direction_input_obj) {
|
||||
common_hal_digitalio_digitalinout_switch_to_input(self, PULL_NONE);
|
||||
} else if (value == &digitalio_direction_output_obj) {
|
||||
common_hal_digitalio_digitalinout_switch_to_output(self, false, DRIVE_MODE_PUSH_PULL);
|
||||
digitalinout_result_t result = common_hal_digitalio_digitalinout_switch_to_output(self, false, DRIVE_MODE_PUSH_PULL);
|
||||
if (result == DIGITALINOUT_INPUT_ONLY) {
|
||||
mp_raise_NotImplementedError(translate("Pin is input only"));
|
||||
}
|
||||
} else {
|
||||
mp_raise_ValueError(translate("Invalid direction."));
|
||||
}
|
||||
|
@ -37,18 +37,19 @@ extern const mp_obj_type_t digitalio_digitalinout_type;
|
||||
|
||||
typedef enum {
|
||||
DIGITALINOUT_OK,
|
||||
DIGITALINOUT_PIN_BUSY
|
||||
DIGITALINOUT_PIN_BUSY,
|
||||
DIGITALINOUT_INPUT_ONLY
|
||||
} digitalinout_result_t;
|
||||
|
||||
digitalinout_result_t common_hal_digitalio_digitalinout_construct(digitalio_digitalinout_obj_t* self, const mcu_pin_obj_t* pin);
|
||||
void common_hal_digitalio_digitalinout_deinit(digitalio_digitalinout_obj_t* self);
|
||||
bool common_hal_digitalio_digitalinout_deinited(digitalio_digitalinout_obj_t* self);
|
||||
void common_hal_digitalio_digitalinout_switch_to_input(digitalio_digitalinout_obj_t* self, digitalio_pull_t pull);
|
||||
void common_hal_digitalio_digitalinout_switch_to_output(digitalio_digitalinout_obj_t* self, bool value, digitalio_drive_mode_t drive_mode);
|
||||
digitalinout_result_t common_hal_digitalio_digitalinout_switch_to_output(digitalio_digitalinout_obj_t* self, bool value, digitalio_drive_mode_t drive_mode);
|
||||
digitalio_direction_t common_hal_digitalio_digitalinout_get_direction(digitalio_digitalinout_obj_t* self);
|
||||
void common_hal_digitalio_digitalinout_set_value(digitalio_digitalinout_obj_t* self, bool value);
|
||||
bool common_hal_digitalio_digitalinout_get_value(digitalio_digitalinout_obj_t* self);
|
||||
void common_hal_digitalio_digitalinout_set_drive_mode(digitalio_digitalinout_obj_t* self, digitalio_drive_mode_t drive_mode);
|
||||
digitalinout_result_t common_hal_digitalio_digitalinout_set_drive_mode(digitalio_digitalinout_obj_t* self, digitalio_drive_mode_t drive_mode);
|
||||
digitalio_drive_mode_t common_hal_digitalio_digitalinout_get_drive_mode(digitalio_digitalinout_obj_t* self);
|
||||
void common_hal_digitalio_digitalinout_set_pull(digitalio_digitalinout_obj_t* self, digitalio_pull_t pull);
|
||||
digitalio_pull_t common_hal_digitalio_digitalinout_get_pull(digitalio_digitalinout_obj_t* self);
|
||||
|
@ -147,18 +147,11 @@ void _pixelbuf_parse_color(pixelbuf_pixelbuf_obj_t* self, mp_obj_t color, uint8_
|
||||
*r = value >> 16 & 0xff;
|
||||
*g = (value >> 8) & 0xff;
|
||||
*b = value & 0xff;
|
||||
// Int colors can't set white directly so convert to white when all components are equal.
|
||||
if (!byteorder->is_dotstar && byteorder->bpp == 4 && byteorder->has_white && *r == *g && *r == *b) {
|
||||
*w = *r;
|
||||
*r = 0;
|
||||
*g = 0;
|
||||
*b = 0;
|
||||
}
|
||||
} else {
|
||||
mp_obj_t *items;
|
||||
size_t len;
|
||||
mp_obj_get_array(color, &len, &items);
|
||||
if (len != byteorder->bpp && !byteorder->is_dotstar) {
|
||||
if (len < 3 || len > 4) {
|
||||
mp_raise_ValueError_varg(translate("Expected tuple of length %d, got %d"), byteorder->bpp, len);
|
||||
}
|
||||
|
||||
@ -171,8 +164,17 @@ void _pixelbuf_parse_color(pixelbuf_pixelbuf_obj_t* self, mp_obj_t color, uint8_
|
||||
} else {
|
||||
*w = mp_obj_get_int_truncated(items[PIXEL_W]);
|
||||
}
|
||||
return;
|
||||
}
|
||||
}
|
||||
// Int colors can't set white directly so convert to white when all components are equal.
|
||||
// Also handles RGBW values assigned an RGB tuple.
|
||||
if (!byteorder->is_dotstar && byteorder->bpp == 4 && byteorder->has_white && *r == *g && *r == *b) {
|
||||
*w = *r;
|
||||
*r = 0;
|
||||
*g = 0;
|
||||
*b = 0;
|
||||
}
|
||||
}
|
||||
|
||||
void _pixelbuf_set_pixel_color(pixelbuf_pixelbuf_obj_t* self, size_t index, uint8_t r, uint8_t g, uint8_t b, uint8_t w) {
|
||||
@ -216,12 +218,11 @@ void _pixelbuf_set_pixel(pixelbuf_pixelbuf_obj_t* self, size_t index, mp_obj_t v
|
||||
_pixelbuf_set_pixel_color(self, index, r, g, b, w);
|
||||
}
|
||||
|
||||
void common_hal__pixelbuf_pixelbuf_set_pixels(mp_obj_t self_in, size_t start, size_t stop, size_t step, mp_obj_t* values) {
|
||||
void common_hal__pixelbuf_pixelbuf_set_pixels(mp_obj_t self_in, size_t start, mp_int_t step, size_t slice_len, mp_obj_t* values) {
|
||||
pixelbuf_pixelbuf_obj_t* self = native_pixelbuf(self_in);
|
||||
size_t source_i = 0;
|
||||
for (size_t target_i = start; target_i < stop; target_i += step) {
|
||||
_pixelbuf_set_pixel(self, target_i, values[source_i]);
|
||||
source_i++;
|
||||
for (size_t i = 0; i < slice_len; i++) {
|
||||
_pixelbuf_set_pixel(self, start, values[i]);
|
||||
start+=step;
|
||||
}
|
||||
if (self->auto_write) {
|
||||
common_hal__pixelbuf_pixelbuf_show(self_in);
|
||||
|
Loading…
Reference in New Issue
Block a user