Merge branch 'master' into master
This commit is contained in:
commit
c534a872a2
27
.github/workflows/build.yml
vendored
27
.github/workflows/build.yml
vendored
@ -10,7 +10,7 @@ on:
|
||||
|
||||
jobs:
|
||||
test:
|
||||
runs-on: ubuntu-16.04
|
||||
runs-on: ubuntu-18.04
|
||||
steps:
|
||||
- name: Dump GitHub context
|
||||
env:
|
||||
@ -94,15 +94,16 @@ jobs:
|
||||
path: mpy-cross/mpy-cross.static.exe
|
||||
|
||||
mpy-cross-mac:
|
||||
runs-on: macos-latest
|
||||
runs-on: macos-10.15
|
||||
steps:
|
||||
- name: Dump GitHub context
|
||||
env:
|
||||
GITHUB_CONTEXT: ${{ toJson(github) }}
|
||||
run: echo "$GITHUB_CONTEXT"
|
||||
- name: Install deps
|
||||
- name: Make gettext programs available
|
||||
run: |
|
||||
brew link --force gettext
|
||||
brew install gettext
|
||||
echo "::set-env name=PATH::/usr/local/opt/gettext/bin:$PATH"
|
||||
- name: Versions
|
||||
run: |
|
||||
gcc --version
|
||||
@ -126,7 +127,7 @@ jobs:
|
||||
path: mpy-cross/mpy-cross
|
||||
|
||||
build-arm:
|
||||
runs-on: ubuntu-16.04
|
||||
runs-on: ubuntu-18.04
|
||||
needs: test
|
||||
strategy:
|
||||
fail-fast: false
|
||||
@ -200,18 +201,22 @@ jobs:
|
||||
- "monster_m4sk"
|
||||
- "ndgarage_ndbit6"
|
||||
- "nfc_copy_cat"
|
||||
- "nucleo_f746zg"
|
||||
- "nucleo_f767zi"
|
||||
- "nucleo_h743zi_2"
|
||||
- "ohs2020_badge"
|
||||
- "openbook_m4"
|
||||
- "openmv_h7"
|
||||
- "particle_argon"
|
||||
- "particle_boron"
|
||||
- "particle_xenon"
|
||||
- "pca10056"
|
||||
- "pca10059"
|
||||
- "pca10100"
|
||||
- "pewpew10"
|
||||
- "pewpew_m4"
|
||||
- "pirkey_m0"
|
||||
- "pitaya_go"
|
||||
- "pyb_nano_v2"
|
||||
- "pybadge"
|
||||
- "pybadge_airlift"
|
||||
@ -227,6 +232,7 @@ jobs:
|
||||
- "seeeduino_xiao"
|
||||
- "serpente"
|
||||
- "shirtty"
|
||||
- "simmel"
|
||||
- "snekboard"
|
||||
- "sparkfun_lumidrive"
|
||||
- "sparkfun_nrf52840_mini"
|
||||
@ -241,8 +247,10 @@ jobs:
|
||||
- "stm32f411ve_discovery"
|
||||
- "stm32f412zg_discovery"
|
||||
- "stm32f4_discovery"
|
||||
- "stm32f746g_discovery"
|
||||
- "stringcar_m0_express"
|
||||
- "teensy40"
|
||||
- "teensy41"
|
||||
- "teknikio_bluebird"
|
||||
- "thunderpack"
|
||||
- "trellis_m4_express"
|
||||
@ -299,7 +307,7 @@ jobs:
|
||||
if: github.event_name == 'push' || (github.event_name == 'release' && (github.event.action == 'published' || github.event.action == 'rerequested'))
|
||||
|
||||
build-riscv:
|
||||
runs-on: ubuntu-16.04
|
||||
runs-on: ubuntu-18.04
|
||||
needs: test
|
||||
strategy:
|
||||
fail-fast: false
|
||||
@ -323,9 +331,14 @@ jobs:
|
||||
gcc --version
|
||||
riscv64-unknown-elf-gcc --version
|
||||
python3 --version
|
||||
- uses: actions/checkout@v1
|
||||
- uses: actions/checkout@v2
|
||||
with:
|
||||
submodules: true
|
||||
fetch-depth: 0
|
||||
- run: git fetch --recurse-submodules=no https://github.com/adafruit/circuitpython refs/tags/*:refs/tags/*
|
||||
- run: git submodule sync
|
||||
- run: git submodule foreach git remote -v
|
||||
- run: git submodule foreach git fetch --recurse-submodules=no origin +refs/tags/*:refs/tags/*
|
||||
- name: mpy-cross
|
||||
run: make -C mpy-cross -j2
|
||||
- name: build
|
||||
|
18
.gitmodules
vendored
18
.gitmodules
vendored
@ -122,3 +122,21 @@
|
||||
[submodule "lib/protomatter"]
|
||||
path = lib/protomatter
|
||||
url = https://github.com/adafruit/Adafruit_Protomatter
|
||||
[submodule "frozen/Adafruit_CircuitPython_LSM6DS"]
|
||||
path = frozen/Adafruit_CircuitPython_LSM6DS
|
||||
url = https://github.com/adafruit/Adafruit_CircuitPython_LSM6DS
|
||||
[submodule "frozen/Adafruit_CircuitPython_FocalTouch"]
|
||||
path = frozen/Adafruit_CircuitPython_FocalTouch
|
||||
url = https://github.com/adafruit/Adafruit_CircuitPython_FocalTouch
|
||||
[submodule "frozen/Adafruit_CircuitPython_DS3231"]
|
||||
path = frozen/Adafruit_CircuitPython_DS3231
|
||||
url = https://github.com/adafruit/Adafruit_CircuitPython_DS3231
|
||||
[submodule "frozen/Adafruit_CircuitPython_DRV2605"]
|
||||
path = frozen/Adafruit_CircuitPython_DRV2605
|
||||
url = https://github.com/adafruit/Adafruit_CircuitPython_DRV2605
|
||||
[submodule "frozen/Adafruit_CircuitPython_BLE"]
|
||||
path = frozen/Adafruit_CircuitPython_BLE
|
||||
url = https://github.com/adafruit/Adafruit_CircuitPython_BLE
|
||||
[submodule "frozen/Adafruit_CircuitPython_BLE_Apple_Notification_Center"]
|
||||
path = frozen/Adafruit_CircuitPython_BLE_Apple_Notification_Center
|
||||
url = https://github.com/adafruit/Adafruit_CircuitPython_BLE_Apple_Notification_Center
|
||||
|
@ -1,5 +1,5 @@
|
||||
We love CircuitPython and would love to see it come to more microcontroller
|
||||
platforms. With 3.0 we've reworked CircuitPython to make it easier than ever to
|
||||
platforms. Since 3.0 we've reworked CircuitPython to make it easier than ever to
|
||||
add support. While there are some major differences between ports, this page
|
||||
covers the similarities that make CircuitPython what it is and how that core
|
||||
fits into a variety of microcontrollers.
|
||||
@ -19,7 +19,7 @@ prepping file systems and automatically running user code on boot. In
|
||||
CircuitPython we've dubbed this component the supervisor because it monitors
|
||||
and facilitates the VMs which run user Python code. Porting involves the
|
||||
supervisor because many of the tasks it does while interfacing with the
|
||||
hardware. Once its going though, the REPL works and debugging can migrate to a
|
||||
hardware. Once complete, the REPL works and debugging can migrate to a
|
||||
Python based approach rather than C.
|
||||
|
||||
The third core piece is the plethora of low level APIs that CircuitPython
|
||||
@ -42,6 +42,44 @@ to the port's directory (in the top level until the ``ports`` directory is
|
||||
present). This includes the Makefile and any C library resources. Make sure
|
||||
these resources are compatible with the MIT License of the rest of the code!
|
||||
|
||||
Circuitpython has a number of modules enabled by default in
|
||||
``py/circuitpy_mpconfig.mk``. Most of these modules will need to be disabled in
|
||||
``mpconfigboard.mk`` during the early stages of a port in order for it to
|
||||
compile. As the port progresses in module support, this list can be pruned down
|
||||
as a natural "TODO" list. An example minimal build list is shown below:
|
||||
|
||||
.. code-block:: makefile
|
||||
|
||||
# These modules are implemented in ports/<port>/common-hal:
|
||||
CIRCUITPY_MICROCONTROLLER = 0 # Typically the first module to create
|
||||
CIRCUITPY_DIGITALIO = 0 # Typically the second module to create
|
||||
CIRCUITPY_ANALOGIO = 0
|
||||
CIRCUITPY_BUSIO = 0
|
||||
CIRCUITPY_NEOPIXEL_WRITE = 0
|
||||
CIRCUITPY_PULSEIO = 0
|
||||
CIRCUITPY_OS = 0
|
||||
CIRCUITPY_NVM = 0
|
||||
CIRCUITPY_AUDIOBUSIO = 0
|
||||
CIRCUITPY_AUDIOIO = 0
|
||||
CIRCUITPY_ROTARYIO = 0
|
||||
CIRCUITPY_RTC = 0
|
||||
CIRCUITPY_FREQUENCYIO = 0
|
||||
CIRCUITPY_I2CSLAVE = 0
|
||||
CIRCUITPY_DISPLAYIO = 0 # Requires SPI, PulseIO (stub ok)
|
||||
|
||||
# These modules are implemented in shared-module/ - they can be included in
|
||||
# any port once their prerequisites in common-hal are complete.
|
||||
CIRCUITPY_BITBANGIO = 0 # Requires DigitalIO
|
||||
CIRCUITPY_GAMEPAD = 0 # Requires DigitalIO
|
||||
CIRCUITPY_PIXELBUF = 0 # Requires neopixel_write or SPI (dotstar)
|
||||
CIRCUITPY_RANDOM = 0 # Requires OS
|
||||
CIRCUITPY_STORAGE = 0 # Requires OS, filesystem
|
||||
CIRCUITPY_TOUCHIO = 0 # Requires Microcontroller
|
||||
CIRCUITPY_USB_HID = 0 # Requires USB
|
||||
CIRCUITPY_USB_MIDI = 0 # Requires USB
|
||||
CIRCUITPY_REQUIRE_I2C_PULLUPS = 0 # Does nothing without I2C
|
||||
CIRCUITPY_ULAB = 0 # No requirements, but takes extra flash
|
||||
|
||||
Step 2: Init
|
||||
--------------
|
||||
Once your build is setup, the next step should be to get your clocks going as
|
||||
|
@ -26,7 +26,7 @@ import os
|
||||
import re
|
||||
|
||||
|
||||
SUPPORTED_PORTS = ["atmel-samd", "nrf", "mimxrt10xx"]
|
||||
SUPPORTED_PORTS = ["atmel-samd", "nrf", "stm", "mimxrt10xx"]
|
||||
|
||||
|
||||
def parse_port_config(contents, chip_keyword=None):
|
||||
@ -98,7 +98,7 @@ def build_module_map():
|
||||
for module in modules:
|
||||
full_name = module
|
||||
search_name = module.lstrip("_")
|
||||
re_pattern = "CIRCUITPY_{}\s=\s(.+)".format(search_name.upper())
|
||||
re_pattern = "CIRCUITPY_{}\s*\??=\s*(.+)".format(search_name.upper())
|
||||
find_config = re.findall(re_pattern, configs)
|
||||
if not find_config:
|
||||
continue
|
||||
@ -139,7 +139,10 @@ def get_excluded_boards(base):
|
||||
re_board_chip = re.compile("CHIP_FAMILY\s=\s(\w+)")
|
||||
chip_keyword = "CHIP_FAMILY"
|
||||
elif port in ["nrf"]:
|
||||
re_board_chip = re.compile("MCU_VARIANT\s=\s(\w+)")
|
||||
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"
|
||||
|
||||
port_dir = "ports/{}".format(port)
|
||||
|
||||
@ -158,10 +161,10 @@ def get_excluded_boards(base):
|
||||
contents = board.read()
|
||||
|
||||
board_chip = re_board_chip.search(contents)
|
||||
#print(entry.name, board_chip.group(1))
|
||||
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
|
||||
@ -172,18 +175,12 @@ def get_excluded_boards(base):
|
||||
check_dependent_modules = dict()
|
||||
for module in modules:
|
||||
board_is_excluded = False
|
||||
# check if board uses `SMALL_BUILD`. if yes, and current
|
||||
# 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_SMALL_BUILD = 1", contents)
|
||||
small_build = re.search("CIRCUITPY_FULL_BUILD = 0", contents)
|
||||
if small_build and base[module]["full_build"] == "1":
|
||||
board_is_excluded = True
|
||||
|
||||
# check if board uses `MINIMAL_BUILD`. if yes, and current
|
||||
# module is marked as `DEFAULT_BUILD`, board is excluded
|
||||
min_build = re.search("CIRCUITPY_MINIMAL_BUILD = 1", contents)
|
||||
if min_build and base[module]["default_value"] == "CIRCUITPY_DEFAULT_BUILD":
|
||||
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)
|
||||
|
@ -1,14 +1,19 @@
|
||||
Supported Ports
|
||||
==============================
|
||||
|
||||
Adafruit's CircuitPython currently has limited support with a focus on supporting the Atmel SAMD
|
||||
and ESP8266.
|
||||
CircuitPython supports a number of microcontroller families. Support quality for each varies
|
||||
depending on the active contributors for each port.
|
||||
|
||||
Adafruit sponsored developers are actively contributing to atmel-samd, mimxrt10xx, nrf and stm
|
||||
ports. They also maintain the other ports in order to ensure the boards build. Additional testing
|
||||
is limited.
|
||||
|
||||
.. toctree::
|
||||
:maxdepth: 2
|
||||
|
||||
../ports/atmel-samd/README
|
||||
../ports/cxd56/README
|
||||
../ports/litex/README
|
||||
../ports/mimxrt10xx/README
|
||||
../ports/nrf/README
|
||||
../ports/stm/README
|
||||
../ports/cxd56/README
|
||||
|
@ -53,6 +53,10 @@ STATIC mp_obj_t mod_ujson_dumps(mp_obj_t obj) {
|
||||
}
|
||||
STATIC MP_DEFINE_CONST_FUN_OBJ_1(mod_ujson_dumps_obj, mod_ujson_dumps);
|
||||
|
||||
#define JSON_DEBUG(...) (void)0
|
||||
// #define JSON_DEBUG(...) mp_printf(&mp_plat_print __VA_OPT__(,) __VA_ARGS__)
|
||||
|
||||
|
||||
// The function below implements a simple non-recursive JSON parser.
|
||||
//
|
||||
// The JSON specification is at http://www.ietf.org/rfc/rfc4627.txt
|
||||
@ -80,6 +84,7 @@ typedef struct _ujson_stream_t {
|
||||
|
||||
STATIC byte ujson_stream_next(ujson_stream_t *s) {
|
||||
mp_uint_t ret = s->read(s->stream_obj, &s->cur, 1, &s->errcode);
|
||||
JSON_DEBUG(" usjon_stream_next err:%2d cur: %c \n", s->errcode, s->cur);
|
||||
if (s->errcode != 0) {
|
||||
mp_raise_OSError(s->errcode);
|
||||
}
|
||||
@ -89,9 +94,10 @@ STATIC byte ujson_stream_next(ujson_stream_t *s) {
|
||||
return s->cur;
|
||||
}
|
||||
|
||||
STATIC mp_obj_t mod_ujson_load(mp_obj_t stream_obj) {
|
||||
STATIC mp_obj_t _mod_ujson_load(mp_obj_t stream_obj, bool return_first_json) {
|
||||
const mp_stream_p_t *stream_p = mp_get_stream_raise(stream_obj, MP_STREAM_OP_READ);
|
||||
ujson_stream_t s = {stream_obj, stream_p->read, 0, 0};
|
||||
JSON_DEBUG("got JSON stream\n");
|
||||
vstr_t vstr;
|
||||
vstr_init(&vstr, 8);
|
||||
mp_obj_list_t stack; // we use a list as a simple stack for nested JSON
|
||||
@ -262,7 +268,11 @@ STATIC mp_obj_t mod_ujson_load(mp_obj_t stream_obj) {
|
||||
}
|
||||
}
|
||||
success:
|
||||
// eat trailing whitespace
|
||||
// It is legal for a stream to have contents after JSON.
|
||||
// E.g., A UART is not closed after receiving an object; in load() we will
|
||||
// return the first complete JSON object, while in loads() we will retain
|
||||
// strict adherence to the buffer's complete semantic.
|
||||
if (!return_first_json) {
|
||||
while (unichar_isspace(S_CUR(s))) {
|
||||
S_NEXT(s);
|
||||
}
|
||||
@ -270,6 +280,7 @@ STATIC mp_obj_t mod_ujson_load(mp_obj_t stream_obj) {
|
||||
// unexpected chars
|
||||
goto fail;
|
||||
}
|
||||
}
|
||||
if (stack_top == MP_OBJ_NULL || stack.len != 0) {
|
||||
// not exactly 1 object
|
||||
goto fail;
|
||||
@ -280,6 +291,10 @@ STATIC mp_obj_t mod_ujson_load(mp_obj_t stream_obj) {
|
||||
fail:
|
||||
mp_raise_ValueError(translate("syntax error in JSON"));
|
||||
}
|
||||
|
||||
STATIC mp_obj_t mod_ujson_load(mp_obj_t stream_obj) {
|
||||
return _mod_ujson_load(stream_obj, true);
|
||||
}
|
||||
STATIC MP_DEFINE_CONST_FUN_OBJ_1(mod_ujson_load_obj, mod_ujson_load);
|
||||
|
||||
STATIC mp_obj_t mod_ujson_loads(mp_obj_t obj) {
|
||||
@ -287,7 +302,7 @@ STATIC mp_obj_t mod_ujson_loads(mp_obj_t obj) {
|
||||
const char *buf = mp_obj_str_get_data(obj, &len);
|
||||
vstr_t vstr = {len, len, (char*)buf, true};
|
||||
mp_obj_stringio_t sio = {{&mp_type_stringio}, &vstr, 0, MP_OBJ_NULL};
|
||||
return mod_ujson_load(MP_OBJ_FROM_PTR(&sio));
|
||||
return _mod_ujson_load(MP_OBJ_FROM_PTR(&sio), false);
|
||||
}
|
||||
STATIC MP_DEFINE_CONST_FUN_OBJ_1(mod_ujson_loads_obj, mod_ujson_loads);
|
||||
|
||||
|
@ -1 +1 @@
|
||||
Subproject commit a746bd8e0953853056ee405e2fa02c8ebca4fb79
|
||||
Subproject commit cf61d728e70b9ec57e5711b40540793a89296f5d
|
1
frozen/Adafruit_CircuitPython_BLE
Submodule
1
frozen/Adafruit_CircuitPython_BLE
Submodule
@ -0,0 +1 @@
|
||||
Subproject commit 96774b15da61da54662bcfbbf15b5bdc27315a9f
|
@ -0,0 +1 @@
|
||||
Subproject commit 3ffb3f02d2046910e09d1f5a74721bd1a4cdf8cf
|
1
frozen/Adafruit_CircuitPython_DRV2605
Submodule
1
frozen/Adafruit_CircuitPython_DRV2605
Submodule
@ -0,0 +1 @@
|
||||
Subproject commit 7914a6390318687bb8e2e9c4119aa932fea01531
|
1
frozen/Adafruit_CircuitPython_DS3231
Submodule
1
frozen/Adafruit_CircuitPython_DS3231
Submodule
@ -0,0 +1 @@
|
||||
Subproject commit 0d49a1fcd96c13a94e8bdf26f92abe79b8517906
|
1
frozen/Adafruit_CircuitPython_FocalTouch
Submodule
1
frozen/Adafruit_CircuitPython_FocalTouch
Submodule
@ -0,0 +1 @@
|
||||
Subproject commit 72968d3546f9d6c5af138d4c179343007cb9662c
|
1
frozen/Adafruit_CircuitPython_LSM6DS
Submodule
1
frozen/Adafruit_CircuitPython_LSM6DS
Submodule
@ -0,0 +1 @@
|
||||
Subproject commit 24224cc905fad4646506caeb2451b4a495804ffc
|
@ -1 +1 @@
|
||||
Subproject commit c411714cbdc05725e80398acb18c3c1fb6fa68a4
|
||||
Subproject commit 9f71088d2c32206c6f0495704ae0c040426d5764
|
@ -1 +1 @@
|
||||
Subproject commit 1f95f439e11f519e69d75a4a8b7b9f28eaf5060e
|
||||
Subproject commit a74a823b0a140667a4e4e80fa2678870faba2bd0
|
57
locale/ID.po
57
locale/ID.po
@ -8,7 +8,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: PACKAGE VERSION\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2020-04-17 18:44-0500\n"
|
||||
"POT-Creation-Date: 2020-05-06 17:47+0800\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"
|
||||
@ -285,11 +285,12 @@ msgstr "Semua timer untuk pin ini sedang digunakan"
|
||||
|
||||
#: ports/atmel-samd/common-hal/audioio/AudioOut.c
|
||||
#: ports/atmel-samd/common-hal/frequencyio/FrequencyIn.c
|
||||
#: ports/atmel-samd/common-hal/pulseio/PulseIn.c
|
||||
#: ports/atmel-samd/common-hal/pulseio/PulseOut.c
|
||||
#: ports/cxd56/common-hal/pulseio/PulseOut.c
|
||||
#: ports/nrf/common-hal/audiopwmio/PWMAudioOut.c
|
||||
#: ports/nrf/peripherals/nrf/timers.c shared-bindings/pulseio/PWMOut.c
|
||||
#: shared-module/_pew/PewPew.c
|
||||
#: ports/nrf/common-hal/pulseio/PulseIn.c ports/nrf/peripherals/nrf/timers.c
|
||||
#: shared-bindings/pulseio/PWMOut.c shared-module/_pew/PewPew.c
|
||||
msgid "All timers in use"
|
||||
msgstr "Semua timer sedang digunakan"
|
||||
|
||||
@ -433,6 +434,10 @@ msgstr "buffers harus mempunyai panjang yang sama"
|
||||
msgid "Bytes must be between 0 and 255."
|
||||
msgstr ""
|
||||
|
||||
#: shared-bindings/aesio/aes.c
|
||||
msgid "CBC blocks must be multiples of 16 bytes"
|
||||
msgstr ""
|
||||
|
||||
#: py/objtype.c
|
||||
msgid "Call super().__init__() before accessing native object."
|
||||
msgstr ""
|
||||
@ -670,6 +675,10 @@ msgstr ""
|
||||
msgid "Drive mode not used when direction is input."
|
||||
msgstr ""
|
||||
|
||||
#: shared-bindings/aesio/aes.c
|
||||
msgid "ECB only operates on 16 bytes at a time"
|
||||
msgstr ""
|
||||
|
||||
#: ports/atmel-samd/common-hal/frequencyio/FrequencyIn.c
|
||||
#: ports/atmel-samd/common-hal/ps2io/Ps2.c
|
||||
#: ports/atmel-samd/common-hal/pulseio/PulseIn.c
|
||||
@ -681,7 +690,7 @@ msgstr "Channel EXTINT sedang digunakan"
|
||||
msgid "Error in regex"
|
||||
msgstr "Error pada regex"
|
||||
|
||||
#: shared-bindings/microcontroller/Pin.c
|
||||
#: shared-bindings/aesio/aes.c shared-bindings/microcontroller/Pin.c
|
||||
#: shared-bindings/neopixel_write/__init__.c shared-bindings/pulseio/PulseOut.c
|
||||
#: shared-bindings/terminalio/Terminal.c
|
||||
msgid "Expected a %q"
|
||||
@ -808,6 +817,11 @@ msgstr ""
|
||||
msgid "I2C operation not supported"
|
||||
msgstr "operasi I2C tidak didukung"
|
||||
|
||||
#: shared-bindings/aesio/aes.c
|
||||
#, c-format
|
||||
msgid "IV must be %d bytes long"
|
||||
msgstr ""
|
||||
|
||||
#: py/persistentcode.c
|
||||
msgid ""
|
||||
"Incompatible .mpy file. Please update all .mpy files. See http://adafru.it/"
|
||||
@ -987,6 +1001,10 @@ msgstr ""
|
||||
msgid "Invalid word/bit length"
|
||||
msgstr ""
|
||||
|
||||
#: shared-bindings/aesio/aes.c
|
||||
msgid "Key must be 16, 24, or 32 bytes long"
|
||||
msgstr ""
|
||||
|
||||
#: py/compile.c
|
||||
msgid "LHS of keyword arg must be an id"
|
||||
msgstr "LHS dari keyword arg harus menjadi sebuah id"
|
||||
@ -1095,6 +1113,10 @@ msgstr "Tidak ada pin TX"
|
||||
msgid "No available clocks"
|
||||
msgstr ""
|
||||
|
||||
#: shared-bindings/_bleio/PacketBuffer.c
|
||||
msgid "No connection: length cannot be determined"
|
||||
msgstr ""
|
||||
|
||||
#: shared-bindings/board/__init__.c
|
||||
msgid "No default %q bus"
|
||||
msgstr "Tidak ada standar bus %q"
|
||||
@ -1116,6 +1138,10 @@ msgstr ""
|
||||
msgid "No hardware support on pin"
|
||||
msgstr "Tidak ada dukungan hardware untuk pin"
|
||||
|
||||
#: shared-bindings/aesio/aes.c
|
||||
msgid "No key was specified"
|
||||
msgstr ""
|
||||
|
||||
#: ports/stm/common-hal/pulseio/PWMOut.c
|
||||
msgid "No more timers available on this pin."
|
||||
msgstr ""
|
||||
@ -1242,6 +1268,10 @@ msgstr ""
|
||||
msgid "Pull not used when direction is output."
|
||||
msgstr ""
|
||||
|
||||
#: ports/stm/common-hal/pulseio/PulseIn.c
|
||||
msgid "PulseIn not supported on this chip"
|
||||
msgstr ""
|
||||
|
||||
#: ports/stm/common-hal/pulseio/PulseOut.c
|
||||
msgid "PulseOut not supported on this chip"
|
||||
msgstr ""
|
||||
@ -1293,6 +1323,10 @@ msgstr "sistem file (filesystem) bersifat Read-only"
|
||||
msgid "Refresh too soon"
|
||||
msgstr ""
|
||||
|
||||
#: shared-bindings/aesio/aes.c
|
||||
msgid "Requested AES mode is unsupported"
|
||||
msgstr ""
|
||||
|
||||
#: ports/atmel-samd/common-hal/audioio/AudioOut.c
|
||||
msgid "Right channel unsupported"
|
||||
msgstr "Channel Kanan tidak didukung"
|
||||
@ -1357,6 +1391,10 @@ msgstr ""
|
||||
msgid "Slices not supported"
|
||||
msgstr ""
|
||||
|
||||
#: shared-bindings/aesio/aes.c
|
||||
msgid "Source and destination buffers must be the same length"
|
||||
msgstr ""
|
||||
|
||||
#: extmod/modure.c
|
||||
msgid "Splitting with sub-captures"
|
||||
msgstr "Memisahkan dengan menggunakan sub-captures"
|
||||
@ -1440,6 +1478,10 @@ msgstr ""
|
||||
msgid "Too many displays"
|
||||
msgstr ""
|
||||
|
||||
#: ports/nrf/common-hal/_bleio/PacketBuffer.c
|
||||
msgid "Total data to write is larger than outgoing_packet_length"
|
||||
msgstr ""
|
||||
|
||||
#: py/obj.c
|
||||
msgid "Traceback (most recent call last):\n"
|
||||
msgstr ""
|
||||
@ -2215,6 +2257,10 @@ msgstr "fungsi diharapkan setidaknya %d argumen, hanya mendapatkan %d"
|
||||
msgid "function got multiple values for argument '%q'"
|
||||
msgstr "fungsi mendapatkan nilai ganda untuk argumen '%q'"
|
||||
|
||||
#: extmod/ulab/code/compare.c
|
||||
msgid "function is implemented for scalars and ndarrays only"
|
||||
msgstr ""
|
||||
|
||||
#: py/argcheck.c
|
||||
#, c-format
|
||||
msgid "function missing %d required positional arguments"
|
||||
@ -2704,7 +2750,8 @@ msgstr ""
|
||||
msgid "only slices with step=1 (aka None) are supported"
|
||||
msgstr ""
|
||||
|
||||
#: extmod/ulab/code/ndarray.c extmod/ulab/code/vectorise.c
|
||||
#: extmod/ulab/code/compare.c extmod/ulab/code/ndarray.c
|
||||
#: extmod/ulab/code/vectorise.c
|
||||
msgid "operands could not be broadcast together"
|
||||
msgstr ""
|
||||
|
||||
|
@ -8,7 +8,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: PACKAGE VERSION\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2020-04-17 18:44-0500\n"
|
||||
"POT-Creation-Date: 2020-05-06 17:47+0800\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"
|
||||
@ -283,11 +283,12 @@ msgstr ""
|
||||
|
||||
#: ports/atmel-samd/common-hal/audioio/AudioOut.c
|
||||
#: ports/atmel-samd/common-hal/frequencyio/FrequencyIn.c
|
||||
#: ports/atmel-samd/common-hal/pulseio/PulseIn.c
|
||||
#: ports/atmel-samd/common-hal/pulseio/PulseOut.c
|
||||
#: ports/cxd56/common-hal/pulseio/PulseOut.c
|
||||
#: ports/nrf/common-hal/audiopwmio/PWMAudioOut.c
|
||||
#: ports/nrf/peripherals/nrf/timers.c shared-bindings/pulseio/PWMOut.c
|
||||
#: shared-module/_pew/PewPew.c
|
||||
#: ports/nrf/common-hal/pulseio/PulseIn.c ports/nrf/peripherals/nrf/timers.c
|
||||
#: shared-bindings/pulseio/PWMOut.c shared-module/_pew/PewPew.c
|
||||
msgid "All timers in use"
|
||||
msgstr ""
|
||||
|
||||
@ -428,6 +429,10 @@ msgstr ""
|
||||
msgid "Bytes must be between 0 and 255."
|
||||
msgstr ""
|
||||
|
||||
#: shared-bindings/aesio/aes.c
|
||||
msgid "CBC blocks must be multiples of 16 bytes"
|
||||
msgstr ""
|
||||
|
||||
#: py/objtype.c
|
||||
msgid "Call super().__init__() before accessing native object."
|
||||
msgstr ""
|
||||
@ -659,6 +664,10 @@ msgstr ""
|
||||
msgid "Drive mode not used when direction is input."
|
||||
msgstr ""
|
||||
|
||||
#: shared-bindings/aesio/aes.c
|
||||
msgid "ECB only operates on 16 bytes at a time"
|
||||
msgstr ""
|
||||
|
||||
#: ports/atmel-samd/common-hal/frequencyio/FrequencyIn.c
|
||||
#: ports/atmel-samd/common-hal/ps2io/Ps2.c
|
||||
#: ports/atmel-samd/common-hal/pulseio/PulseIn.c
|
||||
@ -670,7 +679,7 @@ msgstr ""
|
||||
msgid "Error in regex"
|
||||
msgstr ""
|
||||
|
||||
#: shared-bindings/microcontroller/Pin.c
|
||||
#: shared-bindings/aesio/aes.c shared-bindings/microcontroller/Pin.c
|
||||
#: shared-bindings/neopixel_write/__init__.c shared-bindings/pulseio/PulseOut.c
|
||||
#: shared-bindings/terminalio/Terminal.c
|
||||
msgid "Expected a %q"
|
||||
@ -797,6 +806,11 @@ msgstr ""
|
||||
msgid "I2C operation not supported"
|
||||
msgstr ""
|
||||
|
||||
#: shared-bindings/aesio/aes.c
|
||||
#, c-format
|
||||
msgid "IV must be %d bytes long"
|
||||
msgstr ""
|
||||
|
||||
#: py/persistentcode.c
|
||||
msgid ""
|
||||
"Incompatible .mpy file. Please update all .mpy files. See http://adafru.it/"
|
||||
@ -976,6 +990,10 @@ msgstr ""
|
||||
msgid "Invalid word/bit length"
|
||||
msgstr ""
|
||||
|
||||
#: shared-bindings/aesio/aes.c
|
||||
msgid "Key must be 16, 24, or 32 bytes long"
|
||||
msgstr ""
|
||||
|
||||
#: py/compile.c
|
||||
msgid "LHS of keyword arg must be an id"
|
||||
msgstr ""
|
||||
@ -1084,6 +1102,10 @@ msgstr ""
|
||||
msgid "No available clocks"
|
||||
msgstr ""
|
||||
|
||||
#: shared-bindings/_bleio/PacketBuffer.c
|
||||
msgid "No connection: length cannot be determined"
|
||||
msgstr ""
|
||||
|
||||
#: shared-bindings/board/__init__.c
|
||||
msgid "No default %q bus"
|
||||
msgstr ""
|
||||
@ -1105,6 +1127,10 @@ msgstr ""
|
||||
msgid "No hardware support on pin"
|
||||
msgstr ""
|
||||
|
||||
#: shared-bindings/aesio/aes.c
|
||||
msgid "No key was specified"
|
||||
msgstr ""
|
||||
|
||||
#: ports/stm/common-hal/pulseio/PWMOut.c
|
||||
msgid "No more timers available on this pin."
|
||||
msgstr ""
|
||||
@ -1228,6 +1254,10 @@ msgstr ""
|
||||
msgid "Pull not used when direction is output."
|
||||
msgstr ""
|
||||
|
||||
#: ports/stm/common-hal/pulseio/PulseIn.c
|
||||
msgid "PulseIn not supported on this chip"
|
||||
msgstr ""
|
||||
|
||||
#: ports/stm/common-hal/pulseio/PulseOut.c
|
||||
msgid "PulseOut not supported on this chip"
|
||||
msgstr ""
|
||||
@ -1278,6 +1308,10 @@ msgstr ""
|
||||
msgid "Refresh too soon"
|
||||
msgstr ""
|
||||
|
||||
#: shared-bindings/aesio/aes.c
|
||||
msgid "Requested AES mode is unsupported"
|
||||
msgstr ""
|
||||
|
||||
#: ports/atmel-samd/common-hal/audioio/AudioOut.c
|
||||
msgid "Right channel unsupported"
|
||||
msgstr ""
|
||||
@ -1341,6 +1375,10 @@ msgstr ""
|
||||
msgid "Slices not supported"
|
||||
msgstr ""
|
||||
|
||||
#: shared-bindings/aesio/aes.c
|
||||
msgid "Source and destination buffers must be the same length"
|
||||
msgstr ""
|
||||
|
||||
#: extmod/modure.c
|
||||
msgid "Splitting with sub-captures"
|
||||
msgstr ""
|
||||
@ -1424,6 +1462,10 @@ msgstr ""
|
||||
msgid "Too many displays"
|
||||
msgstr ""
|
||||
|
||||
#: ports/nrf/common-hal/_bleio/PacketBuffer.c
|
||||
msgid "Total data to write is larger than outgoing_packet_length"
|
||||
msgstr ""
|
||||
|
||||
#: py/obj.c
|
||||
msgid "Traceback (most recent call last):\n"
|
||||
msgstr ""
|
||||
@ -2191,6 +2233,10 @@ msgstr ""
|
||||
msgid "function got multiple values for argument '%q'"
|
||||
msgstr ""
|
||||
|
||||
#: extmod/ulab/code/compare.c
|
||||
msgid "function is implemented for scalars and ndarrays only"
|
||||
msgstr ""
|
||||
|
||||
#: py/argcheck.c
|
||||
#, c-format
|
||||
msgid "function missing %d required positional arguments"
|
||||
@ -2679,7 +2725,8 @@ msgstr ""
|
||||
msgid "only slices with step=1 (aka None) are supported"
|
||||
msgstr ""
|
||||
|
||||
#: extmod/ulab/code/ndarray.c extmod/ulab/code/vectorise.c
|
||||
#: extmod/ulab/code/compare.c extmod/ulab/code/ndarray.c
|
||||
#: extmod/ulab/code/vectorise.c
|
||||
msgid "operands could not be broadcast together"
|
||||
msgstr ""
|
||||
|
||||
|
@ -7,15 +7,17 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: \n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2020-04-17 18:44-0500\n"
|
||||
"PO-Revision-Date: 2018-07-27 11:55-0700\n"
|
||||
"Last-Translator: Pascal Deneaux\n"
|
||||
"Language-Team: Sebastian Plamauer, Pascal Deneaux\n"
|
||||
"POT-Creation-Date: 2020-05-06 17:47+0800\n"
|
||||
"PO-Revision-Date: 2020-04-30 17:01+0000\n"
|
||||
"Last-Translator: Jeff Epler <jepler@gmail.com>\n"
|
||||
"Language-Team: German <https://later.unpythonic.net/projects/circuitpython/"
|
||||
"circuitpython-master/de/>\n"
|
||||
"Language: de_DE\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Generator: Poedit 2.1.1\n"
|
||||
"Plural-Forms: nplurals=2; plural=n != 1;\n"
|
||||
"X-Generator: Weblate 4.0.2\n"
|
||||
|
||||
#: main.c
|
||||
msgid ""
|
||||
@ -31,12 +33,17 @@ msgid ""
|
||||
"Please file an issue with the contents of your CIRCUITPY drive at \n"
|
||||
"https://github.com/adafruit/circuitpython/issues\n"
|
||||
msgstr ""
|
||||
"\n"
|
||||
"Bitte melden Sie ein Problem mit dem Inhalt Ihres CIRCUITPY-Laufwerks unter\n"
|
||||
"https://github.com/adafruit/circuitpython/issues\n"
|
||||
|
||||
#: supervisor/shared/safe_mode.c
|
||||
msgid ""
|
||||
"\n"
|
||||
"To exit, please reset the board without "
|
||||
msgstr ""
|
||||
"\n"
|
||||
"Zum Beenden setzen Sie bitte die Karte ohne "
|
||||
|
||||
#: py/obj.c
|
||||
msgid " File \"%q\""
|
||||
@ -142,11 +149,11 @@ msgstr "'%s' Integer 0x%x passt nicht in Maske 0x%x"
|
||||
|
||||
#: py/runtime.c
|
||||
msgid "'%s' object cannot assign attribute '%q'"
|
||||
msgstr ""
|
||||
msgstr "Das Objekt '%s' kann das Attribut '%q' nicht zuweisen"
|
||||
|
||||
#: py/proto.c
|
||||
msgid "'%s' object does not support '%q'"
|
||||
msgstr ""
|
||||
msgstr "Das Objekt '%s' unterstützt '%q' nicht"
|
||||
|
||||
#: py/obj.c
|
||||
#, c-format
|
||||
@ -196,7 +203,7 @@ msgstr "'align' erfordert genau ein Argument"
|
||||
|
||||
#: py/compile.c
|
||||
msgid "'async for' or 'async with' outside async function"
|
||||
msgstr ""
|
||||
msgstr "'async for' oder 'async with' außerhalb der asynchronen Funktion"
|
||||
|
||||
#: py/compile.c
|
||||
msgid "'await' outside function"
|
||||
@ -240,7 +247,7 @@ msgstr ""
|
||||
|
||||
#: py/objcomplex.c
|
||||
msgid "0.0 to a complex power"
|
||||
msgstr ""
|
||||
msgstr "0.0 zu einer komplexen Potenz"
|
||||
|
||||
#: py/modbuiltins.c
|
||||
msgid "3-arg pow() not supported"
|
||||
@ -285,11 +292,12 @@ msgstr "Alle timer für diesen Pin werden bereits benutzt"
|
||||
|
||||
#: ports/atmel-samd/common-hal/audioio/AudioOut.c
|
||||
#: ports/atmel-samd/common-hal/frequencyio/FrequencyIn.c
|
||||
#: ports/atmel-samd/common-hal/pulseio/PulseIn.c
|
||||
#: ports/atmel-samd/common-hal/pulseio/PulseOut.c
|
||||
#: ports/cxd56/common-hal/pulseio/PulseOut.c
|
||||
#: ports/nrf/common-hal/audiopwmio/PWMAudioOut.c
|
||||
#: ports/nrf/peripherals/nrf/timers.c shared-bindings/pulseio/PWMOut.c
|
||||
#: shared-module/_pew/PewPew.c
|
||||
#: ports/nrf/common-hal/pulseio/PulseIn.c ports/nrf/peripherals/nrf/timers.c
|
||||
#: shared-bindings/pulseio/PWMOut.c shared-module/_pew/PewPew.c
|
||||
msgid "All timers in use"
|
||||
msgstr "Alle timer werden benutzt"
|
||||
|
||||
@ -432,6 +440,10 @@ msgstr "Der Puffer muss 16 Bytes lang sein"
|
||||
msgid "Bytes must be between 0 and 255."
|
||||
msgstr "Ein Bytes kann nur Werte zwischen 0 und 255 annehmen."
|
||||
|
||||
#: shared-bindings/aesio/aes.c
|
||||
msgid "CBC blocks must be multiples of 16 bytes"
|
||||
msgstr ""
|
||||
|
||||
#: py/objtype.c
|
||||
msgid "Call super().__init__() before accessing native object."
|
||||
msgstr "Rufe super().__init__() vor dem Zugriff auf ein natives Objekt auf."
|
||||
@ -663,6 +675,10 @@ msgstr "Die Rotation der Anzeige muss in 90-Grad-Schritten erfolgen"
|
||||
msgid "Drive mode not used when direction is input."
|
||||
msgstr "Drive mode wird nicht verwendet, wenn die Richtung input ist."
|
||||
|
||||
#: shared-bindings/aesio/aes.c
|
||||
msgid "ECB only operates on 16 bytes at a time"
|
||||
msgstr ""
|
||||
|
||||
#: ports/atmel-samd/common-hal/frequencyio/FrequencyIn.c
|
||||
#: ports/atmel-samd/common-hal/ps2io/Ps2.c
|
||||
#: ports/atmel-samd/common-hal/pulseio/PulseIn.c
|
||||
@ -674,7 +690,7 @@ msgstr "EXTINT Kanal ist schon in Benutzung"
|
||||
msgid "Error in regex"
|
||||
msgstr "Fehler in regex"
|
||||
|
||||
#: shared-bindings/microcontroller/Pin.c
|
||||
#: shared-bindings/aesio/aes.c shared-bindings/microcontroller/Pin.c
|
||||
#: shared-bindings/neopixel_write/__init__.c shared-bindings/pulseio/PulseOut.c
|
||||
#: shared-bindings/terminalio/Terminal.c
|
||||
msgid "Expected a %q"
|
||||
@ -803,6 +819,11 @@ msgstr ""
|
||||
msgid "I2C operation not supported"
|
||||
msgstr "I2C-operation nicht unterstützt"
|
||||
|
||||
#: shared-bindings/aesio/aes.c
|
||||
#, c-format
|
||||
msgid "IV must be %d bytes long"
|
||||
msgstr ""
|
||||
|
||||
#: py/persistentcode.c
|
||||
msgid ""
|
||||
"Incompatible .mpy file. Please update all .mpy files. See http://adafru.it/"
|
||||
@ -984,6 +1005,10 @@ msgstr "Ungültige wave Datei"
|
||||
msgid "Invalid word/bit length"
|
||||
msgstr ""
|
||||
|
||||
#: shared-bindings/aesio/aes.c
|
||||
msgid "Key must be 16, 24, or 32 bytes long"
|
||||
msgstr ""
|
||||
|
||||
#: py/compile.c
|
||||
msgid "LHS of keyword arg must be an id"
|
||||
msgstr "LHS des Schlüsselwortarguments muss eine id sein"
|
||||
@ -1093,6 +1118,10 @@ msgstr "Kein TX Pin"
|
||||
msgid "No available clocks"
|
||||
msgstr "Keine Taktgeber verfügbar"
|
||||
|
||||
#: shared-bindings/_bleio/PacketBuffer.c
|
||||
msgid "No connection: length cannot be determined"
|
||||
msgstr ""
|
||||
|
||||
#: shared-bindings/board/__init__.c
|
||||
msgid "No default %q bus"
|
||||
msgstr "Kein Standard %q Bus"
|
||||
@ -1114,6 +1143,10 @@ msgstr "Keine Hardwareunterstützung am clk Pin"
|
||||
msgid "No hardware support on pin"
|
||||
msgstr "Keine Hardwareunterstützung an diesem Pin"
|
||||
|
||||
#: shared-bindings/aesio/aes.c
|
||||
msgid "No key was specified"
|
||||
msgstr ""
|
||||
|
||||
#: ports/stm/common-hal/pulseio/PWMOut.c
|
||||
msgid "No more timers available on this pin."
|
||||
msgstr ""
|
||||
@ -1245,6 +1278,10 @@ msgstr ""
|
||||
msgid "Pull not used when direction is output."
|
||||
msgstr "Pull wird nicht verwendet, wenn die Richtung output ist."
|
||||
|
||||
#: ports/stm/common-hal/pulseio/PulseIn.c
|
||||
msgid "PulseIn not supported on this chip"
|
||||
msgstr ""
|
||||
|
||||
#: ports/stm/common-hal/pulseio/PulseOut.c
|
||||
msgid "PulseOut not supported on this chip"
|
||||
msgstr ""
|
||||
@ -1295,6 +1332,10 @@ msgstr "Schreibgeschützte Objekt"
|
||||
msgid "Refresh too soon"
|
||||
msgstr "Zu früh neu geladen"
|
||||
|
||||
#: shared-bindings/aesio/aes.c
|
||||
msgid "Requested AES mode is unsupported"
|
||||
msgstr ""
|
||||
|
||||
#: ports/atmel-samd/common-hal/audioio/AudioOut.c
|
||||
msgid "Right channel unsupported"
|
||||
msgstr "Rechter Kanal wird nicht unterstützt"
|
||||
@ -1358,6 +1399,10 @@ msgstr "Slice und Wert (value) haben unterschiedliche Längen."
|
||||
msgid "Slices not supported"
|
||||
msgstr "Slices werden nicht unterstützt"
|
||||
|
||||
#: shared-bindings/aesio/aes.c
|
||||
msgid "Source and destination buffers must be the same length"
|
||||
msgstr ""
|
||||
|
||||
#: extmod/modure.c
|
||||
msgid "Splitting with sub-captures"
|
||||
msgstr "Splitting mit sub-captures"
|
||||
@ -1443,6 +1488,10 @@ msgstr ""
|
||||
msgid "Too many displays"
|
||||
msgstr "Zu viele displays"
|
||||
|
||||
#: ports/nrf/common-hal/_bleio/PacketBuffer.c
|
||||
msgid "Total data to write is larger than outgoing_packet_length"
|
||||
msgstr ""
|
||||
|
||||
#: py/obj.c
|
||||
msgid "Traceback (most recent call last):\n"
|
||||
msgstr "Zurückverfolgung (jüngste Aufforderung zuletzt):\n"
|
||||
@ -2220,6 +2269,10 @@ msgstr "Funktion erwartet maximal %d Argumente, aber hat %d erhalten"
|
||||
msgid "function got multiple values for argument '%q'"
|
||||
msgstr "Funktion hat mehrere Werte für Argument '%q'"
|
||||
|
||||
#: extmod/ulab/code/compare.c
|
||||
msgid "function is implemented for scalars and ndarrays only"
|
||||
msgstr ""
|
||||
|
||||
#: py/argcheck.c
|
||||
#, c-format
|
||||
msgid "function missing %d required positional arguments"
|
||||
@ -2715,7 +2768,8 @@ msgstr "nur eine sample_rate=16000 wird unterstützt"
|
||||
msgid "only slices with step=1 (aka None) are supported"
|
||||
msgstr ""
|
||||
|
||||
#: extmod/ulab/code/ndarray.c extmod/ulab/code/vectorise.c
|
||||
#: extmod/ulab/code/compare.c extmod/ulab/code/ndarray.c
|
||||
#: extmod/ulab/code/vectorise.c
|
||||
msgid "operands could not be broadcast together"
|
||||
msgstr ""
|
||||
|
||||
|
@ -7,7 +7,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: \n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2020-04-17 18:44-0500\n"
|
||||
"POT-Creation-Date: 2020-05-06 17:47+0800\n"
|
||||
"PO-Revision-Date: 2018-07-27 11:55-0700\n"
|
||||
"Last-Translator: \n"
|
||||
"Language-Team: \n"
|
||||
@ -283,11 +283,12 @@ msgstr ""
|
||||
|
||||
#: ports/atmel-samd/common-hal/audioio/AudioOut.c
|
||||
#: ports/atmel-samd/common-hal/frequencyio/FrequencyIn.c
|
||||
#: ports/atmel-samd/common-hal/pulseio/PulseIn.c
|
||||
#: ports/atmel-samd/common-hal/pulseio/PulseOut.c
|
||||
#: ports/cxd56/common-hal/pulseio/PulseOut.c
|
||||
#: ports/nrf/common-hal/audiopwmio/PWMAudioOut.c
|
||||
#: ports/nrf/peripherals/nrf/timers.c shared-bindings/pulseio/PWMOut.c
|
||||
#: shared-module/_pew/PewPew.c
|
||||
#: ports/nrf/common-hal/pulseio/PulseIn.c ports/nrf/peripherals/nrf/timers.c
|
||||
#: shared-bindings/pulseio/PWMOut.c shared-module/_pew/PewPew.c
|
||||
msgid "All timers in use"
|
||||
msgstr ""
|
||||
|
||||
@ -428,6 +429,10 @@ msgstr ""
|
||||
msgid "Bytes must be between 0 and 255."
|
||||
msgstr ""
|
||||
|
||||
#: shared-bindings/aesio/aes.c
|
||||
msgid "CBC blocks must be multiples of 16 bytes"
|
||||
msgstr ""
|
||||
|
||||
#: py/objtype.c
|
||||
msgid "Call super().__init__() before accessing native object."
|
||||
msgstr ""
|
||||
@ -659,6 +664,10 @@ msgstr ""
|
||||
msgid "Drive mode not used when direction is input."
|
||||
msgstr ""
|
||||
|
||||
#: shared-bindings/aesio/aes.c
|
||||
msgid "ECB only operates on 16 bytes at a time"
|
||||
msgstr ""
|
||||
|
||||
#: ports/atmel-samd/common-hal/frequencyio/FrequencyIn.c
|
||||
#: ports/atmel-samd/common-hal/ps2io/Ps2.c
|
||||
#: ports/atmel-samd/common-hal/pulseio/PulseIn.c
|
||||
@ -670,7 +679,7 @@ msgstr ""
|
||||
msgid "Error in regex"
|
||||
msgstr ""
|
||||
|
||||
#: shared-bindings/microcontroller/Pin.c
|
||||
#: shared-bindings/aesio/aes.c shared-bindings/microcontroller/Pin.c
|
||||
#: shared-bindings/neopixel_write/__init__.c shared-bindings/pulseio/PulseOut.c
|
||||
#: shared-bindings/terminalio/Terminal.c
|
||||
msgid "Expected a %q"
|
||||
@ -797,6 +806,11 @@ msgstr ""
|
||||
msgid "I2C operation not supported"
|
||||
msgstr ""
|
||||
|
||||
#: shared-bindings/aesio/aes.c
|
||||
#, c-format
|
||||
msgid "IV must be %d bytes long"
|
||||
msgstr ""
|
||||
|
||||
#: py/persistentcode.c
|
||||
msgid ""
|
||||
"Incompatible .mpy file. Please update all .mpy files. See http://adafru.it/"
|
||||
@ -976,6 +990,10 @@ msgstr ""
|
||||
msgid "Invalid word/bit length"
|
||||
msgstr ""
|
||||
|
||||
#: shared-bindings/aesio/aes.c
|
||||
msgid "Key must be 16, 24, or 32 bytes long"
|
||||
msgstr ""
|
||||
|
||||
#: py/compile.c
|
||||
msgid "LHS of keyword arg must be an id"
|
||||
msgstr ""
|
||||
@ -1084,6 +1102,10 @@ msgstr ""
|
||||
msgid "No available clocks"
|
||||
msgstr ""
|
||||
|
||||
#: shared-bindings/_bleio/PacketBuffer.c
|
||||
msgid "No connection: length cannot be determined"
|
||||
msgstr ""
|
||||
|
||||
#: shared-bindings/board/__init__.c
|
||||
msgid "No default %q bus"
|
||||
msgstr ""
|
||||
@ -1105,6 +1127,10 @@ msgstr ""
|
||||
msgid "No hardware support on pin"
|
||||
msgstr ""
|
||||
|
||||
#: shared-bindings/aesio/aes.c
|
||||
msgid "No key was specified"
|
||||
msgstr ""
|
||||
|
||||
#: ports/stm/common-hal/pulseio/PWMOut.c
|
||||
msgid "No more timers available on this pin."
|
||||
msgstr ""
|
||||
@ -1228,6 +1254,10 @@ msgstr ""
|
||||
msgid "Pull not used when direction is output."
|
||||
msgstr ""
|
||||
|
||||
#: ports/stm/common-hal/pulseio/PulseIn.c
|
||||
msgid "PulseIn not supported on this chip"
|
||||
msgstr ""
|
||||
|
||||
#: ports/stm/common-hal/pulseio/PulseOut.c
|
||||
msgid "PulseOut not supported on this chip"
|
||||
msgstr ""
|
||||
@ -1278,6 +1308,10 @@ msgstr ""
|
||||
msgid "Refresh too soon"
|
||||
msgstr ""
|
||||
|
||||
#: shared-bindings/aesio/aes.c
|
||||
msgid "Requested AES mode is unsupported"
|
||||
msgstr ""
|
||||
|
||||
#: ports/atmel-samd/common-hal/audioio/AudioOut.c
|
||||
msgid "Right channel unsupported"
|
||||
msgstr ""
|
||||
@ -1341,6 +1375,10 @@ msgstr ""
|
||||
msgid "Slices not supported"
|
||||
msgstr ""
|
||||
|
||||
#: shared-bindings/aesio/aes.c
|
||||
msgid "Source and destination buffers must be the same length"
|
||||
msgstr ""
|
||||
|
||||
#: extmod/modure.c
|
||||
msgid "Splitting with sub-captures"
|
||||
msgstr ""
|
||||
@ -1424,6 +1462,10 @@ msgstr ""
|
||||
msgid "Too many displays"
|
||||
msgstr ""
|
||||
|
||||
#: ports/nrf/common-hal/_bleio/PacketBuffer.c
|
||||
msgid "Total data to write is larger than outgoing_packet_length"
|
||||
msgstr ""
|
||||
|
||||
#: py/obj.c
|
||||
msgid "Traceback (most recent call last):\n"
|
||||
msgstr ""
|
||||
@ -2191,6 +2233,10 @@ msgstr ""
|
||||
msgid "function got multiple values for argument '%q'"
|
||||
msgstr ""
|
||||
|
||||
#: extmod/ulab/code/compare.c
|
||||
msgid "function is implemented for scalars and ndarrays only"
|
||||
msgstr ""
|
||||
|
||||
#: py/argcheck.c
|
||||
#, c-format
|
||||
msgid "function missing %d required positional arguments"
|
||||
@ -2679,7 +2725,8 @@ msgstr ""
|
||||
msgid "only slices with step=1 (aka None) are supported"
|
||||
msgstr ""
|
||||
|
||||
#: extmod/ulab/code/ndarray.c extmod/ulab/code/vectorise.c
|
||||
#: extmod/ulab/code/compare.c extmod/ulab/code/ndarray.c
|
||||
#: extmod/ulab/code/vectorise.c
|
||||
msgid "operands could not be broadcast together"
|
||||
msgstr ""
|
||||
|
||||
|
@ -7,15 +7,17 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: \n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2020-04-17 18:44-0500\n"
|
||||
"PO-Revision-Date: 2018-07-27 11:55-0700\n"
|
||||
"Last-Translator: \n"
|
||||
"Language-Team: @sommersoft, @MrCertainly\n"
|
||||
"POT-Creation-Date: 2020-05-06 17:47+0800\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/"
|
||||
"circuitpython-master/en_X@pirate/>\n"
|
||||
"Language: en_x_pirate\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Generator: Poedit 2.1.1\n"
|
||||
"Plural-Forms: nplurals=2; plural=n != 1;\n"
|
||||
"X-Generator: Weblate 3.11.3\n"
|
||||
|
||||
#: main.c
|
||||
msgid ""
|
||||
@ -31,6 +33,9 @@ msgid ""
|
||||
"Please file an issue with the contents of your CIRCUITPY drive at \n"
|
||||
"https://github.com/adafruit/circuitpython/issues\n"
|
||||
msgstr ""
|
||||
"\n"
|
||||
"Yar, there is a hole in the keel. Let the cap'n know at\n"
|
||||
"https://github.com/adafruit/circuitpython/issues\n"
|
||||
|
||||
#: supervisor/shared/safe_mode.c
|
||||
msgid ""
|
||||
@ -285,11 +290,12 @@ msgstr ""
|
||||
|
||||
#: ports/atmel-samd/common-hal/audioio/AudioOut.c
|
||||
#: ports/atmel-samd/common-hal/frequencyio/FrequencyIn.c
|
||||
#: ports/atmel-samd/common-hal/pulseio/PulseIn.c
|
||||
#: ports/atmel-samd/common-hal/pulseio/PulseOut.c
|
||||
#: ports/cxd56/common-hal/pulseio/PulseOut.c
|
||||
#: ports/nrf/common-hal/audiopwmio/PWMAudioOut.c
|
||||
#: ports/nrf/peripherals/nrf/timers.c shared-bindings/pulseio/PWMOut.c
|
||||
#: shared-module/_pew/PewPew.c
|
||||
#: ports/nrf/common-hal/pulseio/PulseIn.c ports/nrf/peripherals/nrf/timers.c
|
||||
#: shared-bindings/pulseio/PWMOut.c shared-module/_pew/PewPew.c
|
||||
msgid "All timers in use"
|
||||
msgstr ""
|
||||
|
||||
@ -432,6 +438,10 @@ msgstr ""
|
||||
msgid "Bytes must be between 0 and 255."
|
||||
msgstr ""
|
||||
|
||||
#: shared-bindings/aesio/aes.c
|
||||
msgid "CBC blocks must be multiples of 16 bytes"
|
||||
msgstr ""
|
||||
|
||||
#: py/objtype.c
|
||||
msgid "Call super().__init__() before accessing native object."
|
||||
msgstr ""
|
||||
@ -663,6 +673,10 @@ msgstr ""
|
||||
msgid "Drive mode not used when direction is input."
|
||||
msgstr ""
|
||||
|
||||
#: shared-bindings/aesio/aes.c
|
||||
msgid "ECB only operates on 16 bytes at a time"
|
||||
msgstr ""
|
||||
|
||||
#: ports/atmel-samd/common-hal/frequencyio/FrequencyIn.c
|
||||
#: ports/atmel-samd/common-hal/ps2io/Ps2.c
|
||||
#: ports/atmel-samd/common-hal/pulseio/PulseIn.c
|
||||
@ -674,7 +688,7 @@ msgstr "Avast! EXTINT channel already in use"
|
||||
msgid "Error in regex"
|
||||
msgstr ""
|
||||
|
||||
#: shared-bindings/microcontroller/Pin.c
|
||||
#: shared-bindings/aesio/aes.c shared-bindings/microcontroller/Pin.c
|
||||
#: shared-bindings/neopixel_write/__init__.c shared-bindings/pulseio/PulseOut.c
|
||||
#: shared-bindings/terminalio/Terminal.c
|
||||
msgid "Expected a %q"
|
||||
@ -801,6 +815,11 @@ msgstr ""
|
||||
msgid "I2C operation not supported"
|
||||
msgstr ""
|
||||
|
||||
#: shared-bindings/aesio/aes.c
|
||||
#, c-format
|
||||
msgid "IV must be %d bytes long"
|
||||
msgstr ""
|
||||
|
||||
#: py/persistentcode.c
|
||||
msgid ""
|
||||
"Incompatible .mpy file. Please update all .mpy files. See http://adafru.it/"
|
||||
@ -980,6 +999,10 @@ msgstr ""
|
||||
msgid "Invalid word/bit length"
|
||||
msgstr ""
|
||||
|
||||
#: shared-bindings/aesio/aes.c
|
||||
msgid "Key must be 16, 24, or 32 bytes long"
|
||||
msgstr ""
|
||||
|
||||
#: py/compile.c
|
||||
msgid "LHS of keyword arg must be an id"
|
||||
msgstr ""
|
||||
@ -1088,6 +1111,10 @@ msgstr ""
|
||||
msgid "No available clocks"
|
||||
msgstr ""
|
||||
|
||||
#: shared-bindings/_bleio/PacketBuffer.c
|
||||
msgid "No connection: length cannot be determined"
|
||||
msgstr ""
|
||||
|
||||
#: shared-bindings/board/__init__.c
|
||||
msgid "No default %q bus"
|
||||
msgstr ""
|
||||
@ -1109,6 +1136,10 @@ msgstr ""
|
||||
msgid "No hardware support on pin"
|
||||
msgstr ""
|
||||
|
||||
#: shared-bindings/aesio/aes.c
|
||||
msgid "No key was specified"
|
||||
msgstr ""
|
||||
|
||||
#: ports/stm/common-hal/pulseio/PWMOut.c
|
||||
msgid "No more timers available on this pin."
|
||||
msgstr ""
|
||||
@ -1232,6 +1263,10 @@ msgstr ""
|
||||
msgid "Pull not used when direction is output."
|
||||
msgstr ""
|
||||
|
||||
#: ports/stm/common-hal/pulseio/PulseIn.c
|
||||
msgid "PulseIn not supported on this chip"
|
||||
msgstr ""
|
||||
|
||||
#: ports/stm/common-hal/pulseio/PulseOut.c
|
||||
msgid "PulseOut not supported on this chip"
|
||||
msgstr ""
|
||||
@ -1282,6 +1317,10 @@ msgstr ""
|
||||
msgid "Refresh too soon"
|
||||
msgstr ""
|
||||
|
||||
#: shared-bindings/aesio/aes.c
|
||||
msgid "Requested AES mode is unsupported"
|
||||
msgstr ""
|
||||
|
||||
#: ports/atmel-samd/common-hal/audioio/AudioOut.c
|
||||
msgid "Right channel unsupported"
|
||||
msgstr ""
|
||||
@ -1345,6 +1384,10 @@ msgstr ""
|
||||
msgid "Slices not supported"
|
||||
msgstr ""
|
||||
|
||||
#: shared-bindings/aesio/aes.c
|
||||
msgid "Source and destination buffers must be the same length"
|
||||
msgstr ""
|
||||
|
||||
#: extmod/modure.c
|
||||
msgid "Splitting with sub-captures"
|
||||
msgstr ""
|
||||
@ -1428,6 +1471,10 @@ msgstr ""
|
||||
msgid "Too many displays"
|
||||
msgstr ""
|
||||
|
||||
#: ports/nrf/common-hal/_bleio/PacketBuffer.c
|
||||
msgid "Total data to write is larger than outgoing_packet_length"
|
||||
msgstr ""
|
||||
|
||||
#: py/obj.c
|
||||
msgid "Traceback (most recent call last):\n"
|
||||
msgstr ""
|
||||
@ -2195,6 +2242,10 @@ msgstr ""
|
||||
msgid "function got multiple values for argument '%q'"
|
||||
msgstr ""
|
||||
|
||||
#: extmod/ulab/code/compare.c
|
||||
msgid "function is implemented for scalars and ndarrays only"
|
||||
msgstr ""
|
||||
|
||||
#: py/argcheck.c
|
||||
#, c-format
|
||||
msgid "function missing %d required positional arguments"
|
||||
@ -2683,7 +2734,8 @@ msgstr ""
|
||||
msgid "only slices with step=1 (aka None) are supported"
|
||||
msgstr ""
|
||||
|
||||
#: extmod/ulab/code/ndarray.c extmod/ulab/code/vectorise.c
|
||||
#: extmod/ulab/code/compare.c extmod/ulab/code/ndarray.c
|
||||
#: extmod/ulab/code/vectorise.c
|
||||
msgid "operands could not be broadcast together"
|
||||
msgstr ""
|
||||
|
||||
|
57
locale/es.po
57
locale/es.po
@ -7,7 +7,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: \n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2020-04-17 18:44-0500\n"
|
||||
"POT-Creation-Date: 2020-05-06 17:47+0800\n"
|
||||
"PO-Revision-Date: 2018-08-24 22:56-0500\n"
|
||||
"Last-Translator: \n"
|
||||
"Language-Team: \n"
|
||||
@ -287,11 +287,12 @@ msgstr "Todos los timers para este pin están siendo utilizados"
|
||||
|
||||
#: ports/atmel-samd/common-hal/audioio/AudioOut.c
|
||||
#: ports/atmel-samd/common-hal/frequencyio/FrequencyIn.c
|
||||
#: ports/atmel-samd/common-hal/pulseio/PulseIn.c
|
||||
#: ports/atmel-samd/common-hal/pulseio/PulseOut.c
|
||||
#: ports/cxd56/common-hal/pulseio/PulseOut.c
|
||||
#: ports/nrf/common-hal/audiopwmio/PWMAudioOut.c
|
||||
#: ports/nrf/peripherals/nrf/timers.c shared-bindings/pulseio/PWMOut.c
|
||||
#: shared-module/_pew/PewPew.c
|
||||
#: ports/nrf/common-hal/pulseio/PulseIn.c ports/nrf/peripherals/nrf/timers.c
|
||||
#: shared-bindings/pulseio/PWMOut.c shared-module/_pew/PewPew.c
|
||||
msgid "All timers in use"
|
||||
msgstr "Todos los timers en uso"
|
||||
|
||||
@ -434,6 +435,10 @@ msgstr "Byte buffer debe de ser 16 bytes"
|
||||
msgid "Bytes must be between 0 and 255."
|
||||
msgstr "Bytes debe estar entre 0 y 255."
|
||||
|
||||
#: shared-bindings/aesio/aes.c
|
||||
msgid "CBC blocks must be multiples of 16 bytes"
|
||||
msgstr ""
|
||||
|
||||
#: py/objtype.c
|
||||
msgid "Call super().__init__() before accessing native object."
|
||||
msgstr ""
|
||||
@ -665,6 +670,10 @@ msgstr "Rotación de display debe ser en incrementos de 90 grados"
|
||||
msgid "Drive mode not used when direction is input."
|
||||
msgstr "Modo Drive no se usa cuando la dirección es input."
|
||||
|
||||
#: shared-bindings/aesio/aes.c
|
||||
msgid "ECB only operates on 16 bytes at a time"
|
||||
msgstr ""
|
||||
|
||||
#: ports/atmel-samd/common-hal/frequencyio/FrequencyIn.c
|
||||
#: ports/atmel-samd/common-hal/ps2io/Ps2.c
|
||||
#: ports/atmel-samd/common-hal/pulseio/PulseIn.c
|
||||
@ -676,7 +685,7 @@ msgstr "El canal EXTINT ya está siendo utilizado"
|
||||
msgid "Error in regex"
|
||||
msgstr "Error en regex"
|
||||
|
||||
#: shared-bindings/microcontroller/Pin.c
|
||||
#: shared-bindings/aesio/aes.c shared-bindings/microcontroller/Pin.c
|
||||
#: shared-bindings/neopixel_write/__init__.c shared-bindings/pulseio/PulseOut.c
|
||||
#: shared-bindings/terminalio/Terminal.c
|
||||
msgid "Expected a %q"
|
||||
@ -803,6 +812,11 @@ msgstr ""
|
||||
msgid "I2C operation not supported"
|
||||
msgstr "operación I2C no soportada"
|
||||
|
||||
#: shared-bindings/aesio/aes.c
|
||||
#, c-format
|
||||
msgid "IV must be %d bytes long"
|
||||
msgstr ""
|
||||
|
||||
#: py/persistentcode.c
|
||||
msgid ""
|
||||
"Incompatible .mpy file. Please update all .mpy files. See http://adafru.it/"
|
||||
@ -984,6 +998,10 @@ msgstr "Archivo wave inválido"
|
||||
msgid "Invalid word/bit length"
|
||||
msgstr ""
|
||||
|
||||
#: shared-bindings/aesio/aes.c
|
||||
msgid "Key must be 16, 24, or 32 bytes long"
|
||||
msgstr ""
|
||||
|
||||
#: py/compile.c
|
||||
msgid "LHS of keyword arg must be an id"
|
||||
msgstr "LHS del agumento por palabra clave deberia ser un identificador"
|
||||
@ -1092,6 +1110,10 @@ msgstr "Sin pin TX"
|
||||
msgid "No available clocks"
|
||||
msgstr "Relojes no disponibles"
|
||||
|
||||
#: shared-bindings/_bleio/PacketBuffer.c
|
||||
msgid "No connection: length cannot be determined"
|
||||
msgstr ""
|
||||
|
||||
#: shared-bindings/board/__init__.c
|
||||
msgid "No default %q bus"
|
||||
msgstr "Sin bus %q por defecto"
|
||||
@ -1113,6 +1135,10 @@ msgstr "Sin soporte de hardware en el pin clk"
|
||||
msgid "No hardware support on pin"
|
||||
msgstr "Sin soporte de hardware en pin"
|
||||
|
||||
#: shared-bindings/aesio/aes.c
|
||||
msgid "No key was specified"
|
||||
msgstr ""
|
||||
|
||||
#: ports/stm/common-hal/pulseio/PWMOut.c
|
||||
msgid "No more timers available on this pin."
|
||||
msgstr ""
|
||||
@ -1244,6 +1270,10 @@ msgstr ""
|
||||
msgid "Pull not used when direction is output."
|
||||
msgstr "Pull no se usa cuando la dirección es output."
|
||||
|
||||
#: ports/stm/common-hal/pulseio/PulseIn.c
|
||||
msgid "PulseIn not supported on this chip"
|
||||
msgstr ""
|
||||
|
||||
#: ports/stm/common-hal/pulseio/PulseOut.c
|
||||
msgid "PulseOut not supported on this chip"
|
||||
msgstr ""
|
||||
@ -1295,6 +1325,10 @@ msgstr "Solo-lectura"
|
||||
msgid "Refresh too soon"
|
||||
msgstr ""
|
||||
|
||||
#: shared-bindings/aesio/aes.c
|
||||
msgid "Requested AES mode is unsupported"
|
||||
msgstr ""
|
||||
|
||||
#: ports/atmel-samd/common-hal/audioio/AudioOut.c
|
||||
msgid "Right channel unsupported"
|
||||
msgstr "Canal derecho no soportado"
|
||||
@ -1358,6 +1392,10 @@ msgstr "Slice y value tienen diferentes longitudes"
|
||||
msgid "Slices not supported"
|
||||
msgstr "Rebanadas no soportadas"
|
||||
|
||||
#: shared-bindings/aesio/aes.c
|
||||
msgid "Source and destination buffers must be the same length"
|
||||
msgstr ""
|
||||
|
||||
#: extmod/modure.c
|
||||
msgid "Splitting with sub-captures"
|
||||
msgstr "Dividiendo con sub-capturas"
|
||||
@ -1441,6 +1479,10 @@ msgstr "Demasiados buses de pantalla"
|
||||
msgid "Too many displays"
|
||||
msgstr "Muchos displays"
|
||||
|
||||
#: ports/nrf/common-hal/_bleio/PacketBuffer.c
|
||||
msgid "Total data to write is larger than outgoing_packet_length"
|
||||
msgstr ""
|
||||
|
||||
#: py/obj.c
|
||||
msgid "Traceback (most recent call last):\n"
|
||||
msgstr "Traceback (ultima llamada reciente):\n"
|
||||
@ -2222,6 +2264,10 @@ msgstr "la función esperaba minimo %d argumentos, tiene %d"
|
||||
msgid "function got multiple values for argument '%q'"
|
||||
msgstr "la función tiene múltiples valores para el argumento '%q'"
|
||||
|
||||
#: extmod/ulab/code/compare.c
|
||||
msgid "function is implemented for scalars and ndarrays only"
|
||||
msgstr ""
|
||||
|
||||
#: py/argcheck.c
|
||||
#, c-format
|
||||
msgid "function missing %d required positional arguments"
|
||||
@ -2717,7 +2763,8 @@ msgstr ""
|
||||
msgid "only slices with step=1 (aka None) are supported"
|
||||
msgstr "solo se admiten segmentos con step=1 (alias None)"
|
||||
|
||||
#: extmod/ulab/code/ndarray.c extmod/ulab/code/vectorise.c
|
||||
#: extmod/ulab/code/compare.c extmod/ulab/code/ndarray.c
|
||||
#: extmod/ulab/code/vectorise.c
|
||||
msgid "operands could not be broadcast together"
|
||||
msgstr ""
|
||||
|
||||
|
@ -7,7 +7,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: \n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2020-04-17 18:44-0500\n"
|
||||
"POT-Creation-Date: 2020-05-06 17:47+0800\n"
|
||||
"PO-Revision-Date: 2018-12-20 22:15-0800\n"
|
||||
"Last-Translator: Timothy <me@timothygarcia.ca>\n"
|
||||
"Language-Team: fil\n"
|
||||
@ -287,11 +287,12 @@ msgstr "Lahat ng timers para sa pin na ito ay ginagamit"
|
||||
|
||||
#: ports/atmel-samd/common-hal/audioio/AudioOut.c
|
||||
#: ports/atmel-samd/common-hal/frequencyio/FrequencyIn.c
|
||||
#: ports/atmel-samd/common-hal/pulseio/PulseIn.c
|
||||
#: ports/atmel-samd/common-hal/pulseio/PulseOut.c
|
||||
#: ports/cxd56/common-hal/pulseio/PulseOut.c
|
||||
#: ports/nrf/common-hal/audiopwmio/PWMAudioOut.c
|
||||
#: ports/nrf/peripherals/nrf/timers.c shared-bindings/pulseio/PWMOut.c
|
||||
#: shared-module/_pew/PewPew.c
|
||||
#: ports/nrf/common-hal/pulseio/PulseIn.c ports/nrf/peripherals/nrf/timers.c
|
||||
#: shared-bindings/pulseio/PWMOut.c shared-module/_pew/PewPew.c
|
||||
msgid "All timers in use"
|
||||
msgstr "Lahat ng timer ginagamit"
|
||||
|
||||
@ -435,6 +436,10 @@ msgstr "buffer ay dapat bytes-like object"
|
||||
msgid "Bytes must be between 0 and 255."
|
||||
msgstr "Sa gitna ng 0 o 255 dapat ang bytes."
|
||||
|
||||
#: shared-bindings/aesio/aes.c
|
||||
msgid "CBC blocks must be multiples of 16 bytes"
|
||||
msgstr ""
|
||||
|
||||
#: py/objtype.c
|
||||
msgid "Call super().__init__() before accessing native object."
|
||||
msgstr ""
|
||||
@ -671,6 +676,10 @@ msgstr ""
|
||||
msgid "Drive mode not used when direction is input."
|
||||
msgstr "Drive mode ay hindi ginagamit kapag ang direksyon ay input."
|
||||
|
||||
#: shared-bindings/aesio/aes.c
|
||||
msgid "ECB only operates on 16 bytes at a time"
|
||||
msgstr ""
|
||||
|
||||
#: ports/atmel-samd/common-hal/frequencyio/FrequencyIn.c
|
||||
#: ports/atmel-samd/common-hal/ps2io/Ps2.c
|
||||
#: ports/atmel-samd/common-hal/pulseio/PulseIn.c
|
||||
@ -682,7 +691,7 @@ msgstr "Ginagamit na ang EXTINT channel"
|
||||
msgid "Error in regex"
|
||||
msgstr "May pagkakamali sa REGEX"
|
||||
|
||||
#: shared-bindings/microcontroller/Pin.c
|
||||
#: shared-bindings/aesio/aes.c shared-bindings/microcontroller/Pin.c
|
||||
#: shared-bindings/neopixel_write/__init__.c shared-bindings/pulseio/PulseOut.c
|
||||
#: shared-bindings/terminalio/Terminal.c
|
||||
msgid "Expected a %q"
|
||||
@ -811,6 +820,11 @@ msgstr ""
|
||||
msgid "I2C operation not supported"
|
||||
msgstr "Hindi supportado ang operasyong I2C"
|
||||
|
||||
#: shared-bindings/aesio/aes.c
|
||||
#, c-format
|
||||
msgid "IV must be %d bytes long"
|
||||
msgstr ""
|
||||
|
||||
#: py/persistentcode.c
|
||||
msgid ""
|
||||
"Incompatible .mpy file. Please update all .mpy files. See http://adafru.it/"
|
||||
@ -992,6 +1006,10 @@ msgstr "May hindi tama sa wave file"
|
||||
msgid "Invalid word/bit length"
|
||||
msgstr ""
|
||||
|
||||
#: shared-bindings/aesio/aes.c
|
||||
msgid "Key must be 16, 24, or 32 bytes long"
|
||||
msgstr ""
|
||||
|
||||
#: py/compile.c
|
||||
msgid "LHS of keyword arg must be an id"
|
||||
msgstr "LHS ng keyword arg ay dapat na id"
|
||||
@ -1100,6 +1118,10 @@ msgstr "Walang TX pin"
|
||||
msgid "No available clocks"
|
||||
msgstr ""
|
||||
|
||||
#: shared-bindings/_bleio/PacketBuffer.c
|
||||
msgid "No connection: length cannot be determined"
|
||||
msgstr ""
|
||||
|
||||
#: shared-bindings/board/__init__.c
|
||||
msgid "No default %q bus"
|
||||
msgstr "Walang default na %q bus"
|
||||
@ -1121,6 +1143,10 @@ msgstr ""
|
||||
msgid "No hardware support on pin"
|
||||
msgstr "Walang support sa hardware ang pin"
|
||||
|
||||
#: shared-bindings/aesio/aes.c
|
||||
msgid "No key was specified"
|
||||
msgstr ""
|
||||
|
||||
#: ports/stm/common-hal/pulseio/PWMOut.c
|
||||
msgid "No more timers available on this pin."
|
||||
msgstr ""
|
||||
@ -1250,6 +1276,10 @@ msgstr ""
|
||||
msgid "Pull not used when direction is output."
|
||||
msgstr "Pull hindi ginagamit kapag ang direksyon ay output."
|
||||
|
||||
#: ports/stm/common-hal/pulseio/PulseIn.c
|
||||
msgid "PulseIn not supported on this chip"
|
||||
msgstr ""
|
||||
|
||||
#: ports/stm/common-hal/pulseio/PulseOut.c
|
||||
msgid "PulseOut not supported on this chip"
|
||||
msgstr ""
|
||||
@ -1301,6 +1331,10 @@ msgstr "Basahin-lamang"
|
||||
msgid "Refresh too soon"
|
||||
msgstr ""
|
||||
|
||||
#: shared-bindings/aesio/aes.c
|
||||
msgid "Requested AES mode is unsupported"
|
||||
msgstr ""
|
||||
|
||||
#: ports/atmel-samd/common-hal/audioio/AudioOut.c
|
||||
msgid "Right channel unsupported"
|
||||
msgstr "Hindi supportado ang kanang channel"
|
||||
@ -1364,6 +1398,10 @@ msgstr "Slice at value iba't ibang haba."
|
||||
msgid "Slices not supported"
|
||||
msgstr "Hindi suportado ang Slices"
|
||||
|
||||
#: shared-bindings/aesio/aes.c
|
||||
msgid "Source and destination buffers must be the same length"
|
||||
msgstr ""
|
||||
|
||||
#: extmod/modure.c
|
||||
msgid "Splitting with sub-captures"
|
||||
msgstr "Binibiyak gamit ang sub-captures"
|
||||
@ -1447,6 +1485,10 @@ msgstr ""
|
||||
msgid "Too many displays"
|
||||
msgstr ""
|
||||
|
||||
#: ports/nrf/common-hal/_bleio/PacketBuffer.c
|
||||
msgid "Total data to write is larger than outgoing_packet_length"
|
||||
msgstr ""
|
||||
|
||||
#: py/obj.c
|
||||
msgid "Traceback (most recent call last):\n"
|
||||
msgstr "Traceback (pinakahuling huling tawag): \n"
|
||||
@ -2236,6 +2278,10 @@ msgstr "function na inaasahang %d ang argumento, ngunit %d ang nakuha"
|
||||
msgid "function got multiple values for argument '%q'"
|
||||
msgstr "ang function ay nakakuha ng maraming values para sa argument '%q'"
|
||||
|
||||
#: extmod/ulab/code/compare.c
|
||||
msgid "function is implemented for scalars and ndarrays only"
|
||||
msgstr ""
|
||||
|
||||
#: py/argcheck.c
|
||||
#, c-format
|
||||
msgid "function missing %d required positional arguments"
|
||||
@ -2730,7 +2776,8 @@ msgstr ""
|
||||
msgid "only slices with step=1 (aka None) are supported"
|
||||
msgstr "ang mga slices lamang na may hakbang = 1 (aka None) ang sinusuportahan"
|
||||
|
||||
#: extmod/ulab/code/ndarray.c extmod/ulab/code/vectorise.c
|
||||
#: extmod/ulab/code/compare.c extmod/ulab/code/ndarray.c
|
||||
#: extmod/ulab/code/vectorise.c
|
||||
msgid "operands could not be broadcast together"
|
||||
msgstr ""
|
||||
|
||||
|
88
locale/fr.po
88
locale/fr.po
@ -8,14 +8,17 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: 0.1\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2020-04-17 18:44-0500\n"
|
||||
"PO-Revision-Date: 2019-04-14 20:05+0100\n"
|
||||
"Last-Translator: Pierrick Couturier <arofarn@arofarn.info>\n"
|
||||
"Language-Team: fr\n"
|
||||
"POT-Creation-Date: 2020-05-06 17:47+0800\n"
|
||||
"PO-Revision-Date: 2020-05-05 20:24+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"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=utf-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Plural-Forms: nplurals=2; plural=n > 1;\n"
|
||||
"X-Generator: Weblate 4.1-dev\n"
|
||||
|
||||
#: main.c
|
||||
msgid ""
|
||||
@ -31,12 +34,18 @@ msgid ""
|
||||
"Please file an issue with the contents of your CIRCUITPY drive at \n"
|
||||
"https://github.com/adafruit/circuitpython/issues\n"
|
||||
msgstr ""
|
||||
"\n"
|
||||
"Veuillez signaler un problème avec le contenu de votre lecteur CIRCUITPY à "
|
||||
"l'adresse\n"
|
||||
"https://github.com/adafruit/circuitpython/issues\n"
|
||||
|
||||
#: supervisor/shared/safe_mode.c
|
||||
msgid ""
|
||||
"\n"
|
||||
"To exit, please reset the board without "
|
||||
msgstr ""
|
||||
"\n"
|
||||
"Pour repartir, veuillez réinitialiser sans "
|
||||
|
||||
#: py/obj.c
|
||||
msgid " File \"%q\""
|
||||
@ -48,7 +57,7 @@ msgstr " Fichier \"%q\", ligne %d"
|
||||
|
||||
#: main.c
|
||||
msgid " output:\n"
|
||||
msgstr " sortie:\n"
|
||||
msgstr " sortie :\n"
|
||||
|
||||
#: py/objstr.c
|
||||
#, c-format
|
||||
@ -75,14 +84,12 @@ msgstr "les indices %q doivent être des entiers, pas %s"
|
||||
#: shared-bindings/_bleio/CharacteristicBuffer.c
|
||||
#: shared-bindings/_bleio/PacketBuffer.c shared-bindings/displayio/Group.c
|
||||
#: shared-bindings/displayio/Shape.c
|
||||
#, fuzzy
|
||||
msgid "%q must be >= 1"
|
||||
msgstr "%d doit être >=1"
|
||||
msgstr "%q doit être >=1"
|
||||
|
||||
#: shared-bindings/fontio/BuiltinFont.c
|
||||
#, fuzzy
|
||||
msgid "%q should be an int"
|
||||
msgstr "y doit être un entier (int)"
|
||||
msgstr "%q doit être un entier (int)"
|
||||
|
||||
#: py/bc.c py/objnamedtuple.c
|
||||
msgid "%q() takes %d positional arguments but %d were given"
|
||||
@ -113,7 +120,7 @@ msgid "'%s' expects an FPU register"
|
||||
msgstr "'%s' attend un registre FPU"
|
||||
|
||||
#: py/emitinlinethumb.c
|
||||
#, fuzzy, c-format
|
||||
#, c-format
|
||||
msgid "'%s' expects an address of the form [a, b]"
|
||||
msgstr "'%s' attend une adresse de la forme [a, b]"
|
||||
|
||||
@ -144,11 +151,11 @@ msgstr "'%s' l'entier 0x%x ne correspond pas au masque 0x%x"
|
||||
|
||||
#: py/runtime.c
|
||||
msgid "'%s' object cannot assign attribute '%q'"
|
||||
msgstr ""
|
||||
msgstr "L'objet '%s' ne peut pas assigner l'attribut '%q'"
|
||||
|
||||
#: py/proto.c
|
||||
msgid "'%s' object does not support '%q'"
|
||||
msgstr ""
|
||||
msgstr "L'objet '%s' ne prends pas en charge '%q'"
|
||||
|
||||
#: py/obj.c
|
||||
#, c-format
|
||||
@ -198,7 +205,7 @@ msgstr "'align' nécessite 1 argument"
|
||||
|
||||
#: py/compile.c
|
||||
msgid "'async for' or 'async with' outside async function"
|
||||
msgstr ""
|
||||
msgstr "'async for' ou 'async with' sans fonction async"
|
||||
|
||||
#: py/compile.c
|
||||
msgid "'await' outside function"
|
||||
@ -290,11 +297,12 @@ msgstr "Tous les timers pour cette broche sont utilisés"
|
||||
|
||||
#: ports/atmel-samd/common-hal/audioio/AudioOut.c
|
||||
#: ports/atmel-samd/common-hal/frequencyio/FrequencyIn.c
|
||||
#: ports/atmel-samd/common-hal/pulseio/PulseIn.c
|
||||
#: ports/atmel-samd/common-hal/pulseio/PulseOut.c
|
||||
#: ports/cxd56/common-hal/pulseio/PulseOut.c
|
||||
#: ports/nrf/common-hal/audiopwmio/PWMAudioOut.c
|
||||
#: ports/nrf/peripherals/nrf/timers.c shared-bindings/pulseio/PWMOut.c
|
||||
#: shared-module/_pew/PewPew.c
|
||||
#: ports/nrf/common-hal/pulseio/PulseIn.c ports/nrf/peripherals/nrf/timers.c
|
||||
#: shared-bindings/pulseio/PWMOut.c shared-module/_pew/PewPew.c
|
||||
msgid "All timers in use"
|
||||
msgstr "Tous les timers sont utilisés"
|
||||
|
||||
@ -439,6 +447,10 @@ msgstr "Le tampon d'octets doit être de 16 octets."
|
||||
msgid "Bytes must be between 0 and 255."
|
||||
msgstr "Les octets 'bytes' doivent être entre 0 et 255"
|
||||
|
||||
#: shared-bindings/aesio/aes.c
|
||||
msgid "CBC blocks must be multiples of 16 bytes"
|
||||
msgstr ""
|
||||
|
||||
#: py/objtype.c
|
||||
msgid "Call super().__init__() before accessing native object."
|
||||
msgstr ""
|
||||
@ -674,6 +686,10 @@ msgstr "La rotation d'affichage doit se faire par incréments de 90 degrés"
|
||||
msgid "Drive mode not used when direction is input."
|
||||
msgstr "Le mode Drive n'est pas utilisé quand la direction est 'input'."
|
||||
|
||||
#: shared-bindings/aesio/aes.c
|
||||
msgid "ECB only operates on 16 bytes at a time"
|
||||
msgstr ""
|
||||
|
||||
#: ports/atmel-samd/common-hal/frequencyio/FrequencyIn.c
|
||||
#: ports/atmel-samd/common-hal/ps2io/Ps2.c
|
||||
#: ports/atmel-samd/common-hal/pulseio/PulseIn.c
|
||||
@ -685,7 +701,7 @@ msgstr "Canal EXTINT déjà utilisé"
|
||||
msgid "Error in regex"
|
||||
msgstr "Erreur dans l'expression régulière"
|
||||
|
||||
#: shared-bindings/microcontroller/Pin.c
|
||||
#: shared-bindings/aesio/aes.c shared-bindings/microcontroller/Pin.c
|
||||
#: shared-bindings/neopixel_write/__init__.c shared-bindings/pulseio/PulseOut.c
|
||||
#: shared-bindings/terminalio/Terminal.c
|
||||
msgid "Expected a %q"
|
||||
@ -814,6 +830,11 @@ msgstr ""
|
||||
msgid "I2C operation not supported"
|
||||
msgstr "opération sur I2C non supportée"
|
||||
|
||||
#: shared-bindings/aesio/aes.c
|
||||
#, c-format
|
||||
msgid "IV must be %d bytes long"
|
||||
msgstr ""
|
||||
|
||||
#: py/persistentcode.c
|
||||
msgid ""
|
||||
"Incompatible .mpy file. Please update all .mpy files. See http://adafru.it/"
|
||||
@ -999,6 +1020,10 @@ msgstr "Fichier WAVE invalide"
|
||||
msgid "Invalid word/bit length"
|
||||
msgstr ""
|
||||
|
||||
#: shared-bindings/aesio/aes.c
|
||||
msgid "Key must be 16, 24, or 32 bytes long"
|
||||
msgstr ""
|
||||
|
||||
#: py/compile.c
|
||||
msgid "LHS of keyword arg must be an id"
|
||||
msgstr "La partie gauche de l'argument nommé doit être un identifiant"
|
||||
@ -1107,6 +1132,10 @@ msgstr "Pas de broche TX"
|
||||
msgid "No available clocks"
|
||||
msgstr "Pas d'horloge disponible"
|
||||
|
||||
#: shared-bindings/_bleio/PacketBuffer.c
|
||||
msgid "No connection: length cannot be determined"
|
||||
msgstr ""
|
||||
|
||||
#: shared-bindings/board/__init__.c
|
||||
msgid "No default %q bus"
|
||||
msgstr "Pas de bus %q par défaut"
|
||||
@ -1128,6 +1157,10 @@ msgstr ""
|
||||
msgid "No hardware support on pin"
|
||||
msgstr "Pas de support matériel pour cette broche"
|
||||
|
||||
#: shared-bindings/aesio/aes.c
|
||||
msgid "No key was specified"
|
||||
msgstr ""
|
||||
|
||||
#: ports/stm/common-hal/pulseio/PWMOut.c
|
||||
msgid "No more timers available on this pin."
|
||||
msgstr ""
|
||||
@ -1263,6 +1296,10 @@ msgstr "Appuyez sur une touche pour entrer sur REPL ou CTRL-D pour recharger."
|
||||
msgid "Pull not used when direction is output."
|
||||
msgstr "Le tirage 'pull' n'est pas utilisé quand la direction est 'output'."
|
||||
|
||||
#: ports/stm/common-hal/pulseio/PulseIn.c
|
||||
msgid "PulseIn not supported on this chip"
|
||||
msgstr ""
|
||||
|
||||
#: ports/stm/common-hal/pulseio/PulseOut.c
|
||||
msgid "PulseOut not supported on this chip"
|
||||
msgstr ""
|
||||
@ -1314,6 +1351,10 @@ msgstr "Objet en lecture seule"
|
||||
msgid "Refresh too soon"
|
||||
msgstr ""
|
||||
|
||||
#: shared-bindings/aesio/aes.c
|
||||
msgid "Requested AES mode is unsupported"
|
||||
msgstr ""
|
||||
|
||||
#: ports/atmel-samd/common-hal/audioio/AudioOut.c
|
||||
msgid "Right channel unsupported"
|
||||
msgstr "Canal droit non supporté"
|
||||
@ -1378,6 +1419,10 @@ msgstr "Tranche et valeur de tailles différentes"
|
||||
msgid "Slices not supported"
|
||||
msgstr "Tranches non supportées"
|
||||
|
||||
#: shared-bindings/aesio/aes.c
|
||||
msgid "Source and destination buffers must be the same length"
|
||||
msgstr ""
|
||||
|
||||
#: extmod/modure.c
|
||||
msgid "Splitting with sub-captures"
|
||||
msgstr "Fractionnement avec des sous-captures"
|
||||
@ -1462,6 +1507,10 @@ msgstr "Trop de bus d'affichage"
|
||||
msgid "Too many displays"
|
||||
msgstr "Trop d'affichages"
|
||||
|
||||
#: ports/nrf/common-hal/_bleio/PacketBuffer.c
|
||||
msgid "Total data to write is larger than outgoing_packet_length"
|
||||
msgstr ""
|
||||
|
||||
#: py/obj.c
|
||||
msgid "Traceback (most recent call last):\n"
|
||||
msgstr "Trace (appels les plus récents en dernier):\n"
|
||||
@ -2261,6 +2310,10 @@ msgstr "la fonction attendait au plus %d arguments, reçu %d"
|
||||
msgid "function got multiple values for argument '%q'"
|
||||
msgstr "la fonction a reçu plusieurs valeurs pour l'argument '%q'"
|
||||
|
||||
#: extmod/ulab/code/compare.c
|
||||
msgid "function is implemented for scalars and ndarrays only"
|
||||
msgstr ""
|
||||
|
||||
#: py/argcheck.c
|
||||
#, c-format
|
||||
msgid "function missing %d required positional arguments"
|
||||
@ -2757,7 +2810,8 @@ msgstr ""
|
||||
msgid "only slices with step=1 (aka None) are supported"
|
||||
msgstr "seules les tranches avec 'step=1' (cad None) sont supportées"
|
||||
|
||||
#: extmod/ulab/code/ndarray.c extmod/ulab/code/vectorise.c
|
||||
#: extmod/ulab/code/compare.c extmod/ulab/code/ndarray.c
|
||||
#: extmod/ulab/code/vectorise.c
|
||||
msgid "operands could not be broadcast together"
|
||||
msgstr ""
|
||||
|
||||
|
@ -8,7 +8,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: PACKAGE VERSION\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2020-04-17 18:44-0500\n"
|
||||
"POT-Creation-Date: 2020-05-06 17:47+0800\n"
|
||||
"PO-Revision-Date: 2018-10-02 16:27+0200\n"
|
||||
"Last-Translator: Enrico Paganin <enrico.paganin@mail.com>\n"
|
||||
"Language-Team: \n"
|
||||
@ -286,11 +286,12 @@ msgstr "Tutti i timer per questo pin sono in uso"
|
||||
|
||||
#: ports/atmel-samd/common-hal/audioio/AudioOut.c
|
||||
#: ports/atmel-samd/common-hal/frequencyio/FrequencyIn.c
|
||||
#: ports/atmel-samd/common-hal/pulseio/PulseIn.c
|
||||
#: ports/atmel-samd/common-hal/pulseio/PulseOut.c
|
||||
#: ports/cxd56/common-hal/pulseio/PulseOut.c
|
||||
#: ports/nrf/common-hal/audiopwmio/PWMAudioOut.c
|
||||
#: ports/nrf/peripherals/nrf/timers.c shared-bindings/pulseio/PWMOut.c
|
||||
#: shared-module/_pew/PewPew.c
|
||||
#: ports/nrf/common-hal/pulseio/PulseIn.c ports/nrf/peripherals/nrf/timers.c
|
||||
#: shared-bindings/pulseio/PWMOut.c shared-module/_pew/PewPew.c
|
||||
msgid "All timers in use"
|
||||
msgstr "Tutti i timer utilizzati"
|
||||
|
||||
@ -435,6 +436,10 @@ msgstr "i buffer devono essere della stessa lunghezza"
|
||||
msgid "Bytes must be between 0 and 255."
|
||||
msgstr "I byte devono essere compresi tra 0 e 255"
|
||||
|
||||
#: shared-bindings/aesio/aes.c
|
||||
msgid "CBC blocks must be multiples of 16 bytes"
|
||||
msgstr ""
|
||||
|
||||
#: py/objtype.c
|
||||
msgid "Call super().__init__() before accessing native object."
|
||||
msgstr ""
|
||||
@ -671,6 +676,10 @@ msgstr ""
|
||||
msgid "Drive mode not used when direction is input."
|
||||
msgstr ""
|
||||
|
||||
#: shared-bindings/aesio/aes.c
|
||||
msgid "ECB only operates on 16 bytes at a time"
|
||||
msgstr ""
|
||||
|
||||
#: ports/atmel-samd/common-hal/frequencyio/FrequencyIn.c
|
||||
#: ports/atmel-samd/common-hal/ps2io/Ps2.c
|
||||
#: ports/atmel-samd/common-hal/pulseio/PulseIn.c
|
||||
@ -682,7 +691,7 @@ msgstr "Canale EXTINT già in uso"
|
||||
msgid "Error in regex"
|
||||
msgstr "Errore nella regex"
|
||||
|
||||
#: shared-bindings/microcontroller/Pin.c
|
||||
#: shared-bindings/aesio/aes.c shared-bindings/microcontroller/Pin.c
|
||||
#: shared-bindings/neopixel_write/__init__.c shared-bindings/pulseio/PulseOut.c
|
||||
#: shared-bindings/terminalio/Terminal.c
|
||||
msgid "Expected a %q"
|
||||
@ -811,6 +820,11 @@ msgstr ""
|
||||
msgid "I2C operation not supported"
|
||||
msgstr "operazione I2C non supportata"
|
||||
|
||||
#: shared-bindings/aesio/aes.c
|
||||
#, c-format
|
||||
msgid "IV must be %d bytes long"
|
||||
msgstr ""
|
||||
|
||||
#: py/persistentcode.c
|
||||
msgid ""
|
||||
"Incompatible .mpy file. Please update all .mpy files. See http://adafru.it/"
|
||||
@ -995,6 +1009,10 @@ msgstr "File wave non valido"
|
||||
msgid "Invalid word/bit length"
|
||||
msgstr ""
|
||||
|
||||
#: shared-bindings/aesio/aes.c
|
||||
msgid "Key must be 16, 24, or 32 bytes long"
|
||||
msgstr ""
|
||||
|
||||
#: py/compile.c
|
||||
msgid "LHS of keyword arg must be an id"
|
||||
msgstr ""
|
||||
@ -1104,6 +1122,10 @@ msgstr "Nessun pin TX"
|
||||
msgid "No available clocks"
|
||||
msgstr "Nessun orologio a disposizione"
|
||||
|
||||
#: shared-bindings/_bleio/PacketBuffer.c
|
||||
msgid "No connection: length cannot be determined"
|
||||
msgstr ""
|
||||
|
||||
#: shared-bindings/board/__init__.c
|
||||
msgid "No default %q bus"
|
||||
msgstr "Nessun bus %q predefinito"
|
||||
@ -1125,6 +1147,10 @@ msgstr ""
|
||||
msgid "No hardware support on pin"
|
||||
msgstr "Nessun supporto hardware sul pin"
|
||||
|
||||
#: shared-bindings/aesio/aes.c
|
||||
msgid "No key was specified"
|
||||
msgstr ""
|
||||
|
||||
#: ports/stm/common-hal/pulseio/PWMOut.c
|
||||
msgid "No more timers available on this pin."
|
||||
msgstr ""
|
||||
@ -1259,6 +1285,10 @@ msgstr ""
|
||||
msgid "Pull not used when direction is output."
|
||||
msgstr ""
|
||||
|
||||
#: ports/stm/common-hal/pulseio/PulseIn.c
|
||||
msgid "PulseIn not supported on this chip"
|
||||
msgstr ""
|
||||
|
||||
#: ports/stm/common-hal/pulseio/PulseOut.c
|
||||
msgid "PulseOut not supported on this chip"
|
||||
msgstr ""
|
||||
@ -1310,6 +1340,10 @@ msgstr "Sola lettura"
|
||||
msgid "Refresh too soon"
|
||||
msgstr ""
|
||||
|
||||
#: shared-bindings/aesio/aes.c
|
||||
msgid "Requested AES mode is unsupported"
|
||||
msgstr ""
|
||||
|
||||
#: ports/atmel-samd/common-hal/audioio/AudioOut.c
|
||||
msgid "Right channel unsupported"
|
||||
msgstr "Canale destro non supportato"
|
||||
@ -1375,6 +1409,10 @@ msgstr ""
|
||||
msgid "Slices not supported"
|
||||
msgstr "Slice non supportate"
|
||||
|
||||
#: shared-bindings/aesio/aes.c
|
||||
msgid "Source and destination buffers must be the same length"
|
||||
msgstr ""
|
||||
|
||||
#: extmod/modure.c
|
||||
msgid "Splitting with sub-captures"
|
||||
msgstr "Suddivisione con sotto-catture"
|
||||
@ -1458,6 +1496,10 @@ msgstr ""
|
||||
msgid "Too many displays"
|
||||
msgstr "Troppi schermi"
|
||||
|
||||
#: ports/nrf/common-hal/_bleio/PacketBuffer.c
|
||||
msgid "Total data to write is larger than outgoing_packet_length"
|
||||
msgstr ""
|
||||
|
||||
#: py/obj.c
|
||||
msgid "Traceback (most recent call last):\n"
|
||||
msgstr "Traceback (chiamata più recente per ultima):\n"
|
||||
@ -2237,6 +2279,10 @@ msgstr "la funzione prevede al massimo %d argmoneti, ma ne ha ricevuti %d"
|
||||
msgid "function got multiple values for argument '%q'"
|
||||
msgstr "la funzione ha ricevuto valori multipli per l'argomento '%q'"
|
||||
|
||||
#: extmod/ulab/code/compare.c
|
||||
msgid "function is implemented for scalars and ndarrays only"
|
||||
msgstr ""
|
||||
|
||||
#: py/argcheck.c
|
||||
#, c-format
|
||||
msgid "function missing %d required positional arguments"
|
||||
@ -2735,7 +2781,8 @@ msgstr ""
|
||||
msgid "only slices with step=1 (aka None) are supported"
|
||||
msgstr "solo slice con step=1 (aka None) sono supportate"
|
||||
|
||||
#: extmod/ulab/code/ndarray.c extmod/ulab/code/vectorise.c
|
||||
#: extmod/ulab/code/compare.c extmod/ulab/code/ndarray.c
|
||||
#: extmod/ulab/code/vectorise.c
|
||||
msgid "operands could not be broadcast together"
|
||||
msgstr ""
|
||||
|
||||
|
57
locale/ko.po
57
locale/ko.po
@ -8,7 +8,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: PACKAGE VERSION\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2020-04-17 18:44-0500\n"
|
||||
"POT-Creation-Date: 2020-05-06 17:47+0800\n"
|
||||
"PO-Revision-Date: 2019-05-06 14:22-0700\n"
|
||||
"Last-Translator: \n"
|
||||
"Language-Team: LANGUAGE <LL@li.org>\n"
|
||||
@ -285,11 +285,12 @@ msgstr "핀의 모든 타이머가 사용 중입니다"
|
||||
|
||||
#: ports/atmel-samd/common-hal/audioio/AudioOut.c
|
||||
#: ports/atmel-samd/common-hal/frequencyio/FrequencyIn.c
|
||||
#: ports/atmel-samd/common-hal/pulseio/PulseIn.c
|
||||
#: ports/atmel-samd/common-hal/pulseio/PulseOut.c
|
||||
#: ports/cxd56/common-hal/pulseio/PulseOut.c
|
||||
#: ports/nrf/common-hal/audiopwmio/PWMAudioOut.c
|
||||
#: ports/nrf/peripherals/nrf/timers.c shared-bindings/pulseio/PWMOut.c
|
||||
#: shared-module/_pew/PewPew.c
|
||||
#: ports/nrf/common-hal/pulseio/PulseIn.c ports/nrf/peripherals/nrf/timers.c
|
||||
#: shared-bindings/pulseio/PWMOut.c shared-module/_pew/PewPew.c
|
||||
msgid "All timers in use"
|
||||
msgstr "모든 타이머가 사용 중입니다"
|
||||
|
||||
@ -432,6 +433,10 @@ msgstr "잘못된 크기의 버퍼. 16 바이트 여야합니다."
|
||||
msgid "Bytes must be between 0 and 255."
|
||||
msgstr "바이트는 0에서 255 사이 여야합니다."
|
||||
|
||||
#: shared-bindings/aesio/aes.c
|
||||
msgid "CBC blocks must be multiples of 16 bytes"
|
||||
msgstr ""
|
||||
|
||||
#: py/objtype.c
|
||||
msgid "Call super().__init__() before accessing native object."
|
||||
msgstr ""
|
||||
@ -663,6 +668,10 @@ msgstr ""
|
||||
msgid "Drive mode not used when direction is input."
|
||||
msgstr ""
|
||||
|
||||
#: shared-bindings/aesio/aes.c
|
||||
msgid "ECB only operates on 16 bytes at a time"
|
||||
msgstr ""
|
||||
|
||||
#: ports/atmel-samd/common-hal/frequencyio/FrequencyIn.c
|
||||
#: ports/atmel-samd/common-hal/ps2io/Ps2.c
|
||||
#: ports/atmel-samd/common-hal/pulseio/PulseIn.c
|
||||
@ -674,7 +683,7 @@ msgstr ""
|
||||
msgid "Error in regex"
|
||||
msgstr "Regex에 오류가 있습니다."
|
||||
|
||||
#: shared-bindings/microcontroller/Pin.c
|
||||
#: shared-bindings/aesio/aes.c shared-bindings/microcontroller/Pin.c
|
||||
#: shared-bindings/neopixel_write/__init__.c shared-bindings/pulseio/PulseOut.c
|
||||
#: shared-bindings/terminalio/Terminal.c
|
||||
msgid "Expected a %q"
|
||||
@ -801,6 +810,11 @@ msgstr ""
|
||||
msgid "I2C operation not supported"
|
||||
msgstr ""
|
||||
|
||||
#: shared-bindings/aesio/aes.c
|
||||
#, c-format
|
||||
msgid "IV must be %d bytes long"
|
||||
msgstr ""
|
||||
|
||||
#: py/persistentcode.c
|
||||
msgid ""
|
||||
"Incompatible .mpy file. Please update all .mpy files. See http://adafru.it/"
|
||||
@ -980,6 +994,10 @@ msgstr ""
|
||||
msgid "Invalid word/bit length"
|
||||
msgstr ""
|
||||
|
||||
#: shared-bindings/aesio/aes.c
|
||||
msgid "Key must be 16, 24, or 32 bytes long"
|
||||
msgstr ""
|
||||
|
||||
#: py/compile.c
|
||||
msgid "LHS of keyword arg must be an id"
|
||||
msgstr ""
|
||||
@ -1088,6 +1106,10 @@ msgstr ""
|
||||
msgid "No available clocks"
|
||||
msgstr ""
|
||||
|
||||
#: shared-bindings/_bleio/PacketBuffer.c
|
||||
msgid "No connection: length cannot be determined"
|
||||
msgstr ""
|
||||
|
||||
#: shared-bindings/board/__init__.c
|
||||
msgid "No default %q bus"
|
||||
msgstr ""
|
||||
@ -1109,6 +1131,10 @@ msgstr ""
|
||||
msgid "No hardware support on pin"
|
||||
msgstr ""
|
||||
|
||||
#: shared-bindings/aesio/aes.c
|
||||
msgid "No key was specified"
|
||||
msgstr ""
|
||||
|
||||
#: ports/stm/common-hal/pulseio/PWMOut.c
|
||||
msgid "No more timers available on this pin."
|
||||
msgstr ""
|
||||
@ -1232,6 +1258,10 @@ msgstr ""
|
||||
msgid "Pull not used when direction is output."
|
||||
msgstr ""
|
||||
|
||||
#: ports/stm/common-hal/pulseio/PulseIn.c
|
||||
msgid "PulseIn not supported on this chip"
|
||||
msgstr ""
|
||||
|
||||
#: ports/stm/common-hal/pulseio/PulseOut.c
|
||||
msgid "PulseOut not supported on this chip"
|
||||
msgstr ""
|
||||
@ -1282,6 +1312,10 @@ msgstr ""
|
||||
msgid "Refresh too soon"
|
||||
msgstr ""
|
||||
|
||||
#: shared-bindings/aesio/aes.c
|
||||
msgid "Requested AES mode is unsupported"
|
||||
msgstr ""
|
||||
|
||||
#: ports/atmel-samd/common-hal/audioio/AudioOut.c
|
||||
msgid "Right channel unsupported"
|
||||
msgstr ""
|
||||
@ -1345,6 +1379,10 @@ msgstr ""
|
||||
msgid "Slices not supported"
|
||||
msgstr ""
|
||||
|
||||
#: shared-bindings/aesio/aes.c
|
||||
msgid "Source and destination buffers must be the same length"
|
||||
msgstr ""
|
||||
|
||||
#: extmod/modure.c
|
||||
msgid "Splitting with sub-captures"
|
||||
msgstr ""
|
||||
@ -1428,6 +1466,10 @@ msgstr ""
|
||||
msgid "Too many displays"
|
||||
msgstr ""
|
||||
|
||||
#: ports/nrf/common-hal/_bleio/PacketBuffer.c
|
||||
msgid "Total data to write is larger than outgoing_packet_length"
|
||||
msgstr ""
|
||||
|
||||
#: py/obj.c
|
||||
msgid "Traceback (most recent call last):\n"
|
||||
msgstr ""
|
||||
@ -2196,6 +2238,10 @@ msgstr ""
|
||||
msgid "function got multiple values for argument '%q'"
|
||||
msgstr ""
|
||||
|
||||
#: extmod/ulab/code/compare.c
|
||||
msgid "function is implemented for scalars and ndarrays only"
|
||||
msgstr ""
|
||||
|
||||
#: py/argcheck.c
|
||||
#, c-format
|
||||
msgid "function missing %d required positional arguments"
|
||||
@ -2684,7 +2730,8 @@ msgstr ""
|
||||
msgid "only slices with step=1 (aka None) are supported"
|
||||
msgstr ""
|
||||
|
||||
#: extmod/ulab/code/ndarray.c extmod/ulab/code/vectorise.c
|
||||
#: extmod/ulab/code/compare.c extmod/ulab/code/ndarray.c
|
||||
#: extmod/ulab/code/vectorise.c
|
||||
msgid "operands could not be broadcast together"
|
||||
msgstr ""
|
||||
|
||||
|
57
locale/pl.po
57
locale/pl.po
@ -7,7 +7,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: \n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2020-04-17 18:44-0500\n"
|
||||
"POT-Creation-Date: 2020-05-06 17:47+0800\n"
|
||||
"PO-Revision-Date: 2019-03-19 18:37-0700\n"
|
||||
"Last-Translator: Radomir Dopieralski <circuitpython@sheep.art.pl>\n"
|
||||
"Language-Team: pl\n"
|
||||
@ -284,11 +284,12 @@ msgstr "Wszystkie timery tej nóżki w użyciu"
|
||||
|
||||
#: ports/atmel-samd/common-hal/audioio/AudioOut.c
|
||||
#: ports/atmel-samd/common-hal/frequencyio/FrequencyIn.c
|
||||
#: ports/atmel-samd/common-hal/pulseio/PulseIn.c
|
||||
#: ports/atmel-samd/common-hal/pulseio/PulseOut.c
|
||||
#: ports/cxd56/common-hal/pulseio/PulseOut.c
|
||||
#: ports/nrf/common-hal/audiopwmio/PWMAudioOut.c
|
||||
#: ports/nrf/peripherals/nrf/timers.c shared-bindings/pulseio/PWMOut.c
|
||||
#: shared-module/_pew/PewPew.c
|
||||
#: ports/nrf/common-hal/pulseio/PulseIn.c ports/nrf/peripherals/nrf/timers.c
|
||||
#: shared-bindings/pulseio/PWMOut.c shared-module/_pew/PewPew.c
|
||||
msgid "All timers in use"
|
||||
msgstr "Wszystkie timery w użyciu"
|
||||
|
||||
@ -431,6 +432,10 @@ msgstr "Bufor musi mieć 16 bajtów."
|
||||
msgid "Bytes must be between 0 and 255."
|
||||
msgstr "Bytes musi być między 0 a 255."
|
||||
|
||||
#: shared-bindings/aesio/aes.c
|
||||
msgid "CBC blocks must be multiples of 16 bytes"
|
||||
msgstr ""
|
||||
|
||||
#: py/objtype.c
|
||||
msgid "Call super().__init__() before accessing native object."
|
||||
msgstr ""
|
||||
@ -662,6 +667,10 @@ msgstr "Wyświetlacz można obracać co 90 stopni"
|
||||
msgid "Drive mode not used when direction is input."
|
||||
msgstr "Tryb sterowania nieużywany w trybie wejścia."
|
||||
|
||||
#: shared-bindings/aesio/aes.c
|
||||
msgid "ECB only operates on 16 bytes at a time"
|
||||
msgstr ""
|
||||
|
||||
#: ports/atmel-samd/common-hal/frequencyio/FrequencyIn.c
|
||||
#: ports/atmel-samd/common-hal/ps2io/Ps2.c
|
||||
#: ports/atmel-samd/common-hal/pulseio/PulseIn.c
|
||||
@ -673,7 +682,7 @@ msgstr "Kanał EXTINT w użyciu"
|
||||
msgid "Error in regex"
|
||||
msgstr "Błąd w regex"
|
||||
|
||||
#: shared-bindings/microcontroller/Pin.c
|
||||
#: shared-bindings/aesio/aes.c shared-bindings/microcontroller/Pin.c
|
||||
#: shared-bindings/neopixel_write/__init__.c shared-bindings/pulseio/PulseOut.c
|
||||
#: shared-bindings/terminalio/Terminal.c
|
||||
msgid "Expected a %q"
|
||||
@ -800,6 +809,11 @@ msgstr ""
|
||||
msgid "I2C operation not supported"
|
||||
msgstr "Operacja I2C nieobsługiwana"
|
||||
|
||||
#: shared-bindings/aesio/aes.c
|
||||
#, c-format
|
||||
msgid "IV must be %d bytes long"
|
||||
msgstr ""
|
||||
|
||||
#: py/persistentcode.c
|
||||
msgid ""
|
||||
"Incompatible .mpy file. Please update all .mpy files. See http://adafru.it/"
|
||||
@ -981,6 +995,10 @@ msgstr "Zły plik wave"
|
||||
msgid "Invalid word/bit length"
|
||||
msgstr ""
|
||||
|
||||
#: shared-bindings/aesio/aes.c
|
||||
msgid "Key must be 16, 24, or 32 bytes long"
|
||||
msgstr ""
|
||||
|
||||
#: py/compile.c
|
||||
msgid "LHS of keyword arg must be an id"
|
||||
msgstr "Lewa strona argumentu nazwanego musi być nazwą"
|
||||
@ -1089,6 +1107,10 @@ msgstr "Brak nóżki TX"
|
||||
msgid "No available clocks"
|
||||
msgstr "Brak wolnych zegarów"
|
||||
|
||||
#: shared-bindings/_bleio/PacketBuffer.c
|
||||
msgid "No connection: length cannot be determined"
|
||||
msgstr ""
|
||||
|
||||
#: shared-bindings/board/__init__.c
|
||||
msgid "No default %q bus"
|
||||
msgstr "Nie ma domyślnej magistrali %q"
|
||||
@ -1110,6 +1132,10 @@ msgstr ""
|
||||
msgid "No hardware support on pin"
|
||||
msgstr "Brak sprzętowej obsługi na nóżce"
|
||||
|
||||
#: shared-bindings/aesio/aes.c
|
||||
msgid "No key was specified"
|
||||
msgstr ""
|
||||
|
||||
#: ports/stm/common-hal/pulseio/PWMOut.c
|
||||
msgid "No more timers available on this pin."
|
||||
msgstr ""
|
||||
@ -1233,6 +1259,10 @@ msgstr "Dowolny klawisz aby uruchomić konsolę. CTRL-D aby przeładować."
|
||||
msgid "Pull not used when direction is output."
|
||||
msgstr "Podciągnięcie nieużywane w trybie wyjścia."
|
||||
|
||||
#: ports/stm/common-hal/pulseio/PulseIn.c
|
||||
msgid "PulseIn not supported on this chip"
|
||||
msgstr ""
|
||||
|
||||
#: ports/stm/common-hal/pulseio/PulseOut.c
|
||||
msgid "PulseOut not supported on this chip"
|
||||
msgstr ""
|
||||
@ -1283,6 +1313,10 @@ msgstr "Obiekt tylko do odczytu"
|
||||
msgid "Refresh too soon"
|
||||
msgstr ""
|
||||
|
||||
#: shared-bindings/aesio/aes.c
|
||||
msgid "Requested AES mode is unsupported"
|
||||
msgstr ""
|
||||
|
||||
#: ports/atmel-samd/common-hal/audioio/AudioOut.c
|
||||
msgid "Right channel unsupported"
|
||||
msgstr "Prawy kanał jest niewspierany"
|
||||
@ -1346,6 +1380,10 @@ msgstr "Fragment i wartość są różnych długości."
|
||||
msgid "Slices not supported"
|
||||
msgstr "Fragmenty nieobsługiwane"
|
||||
|
||||
#: shared-bindings/aesio/aes.c
|
||||
msgid "Source and destination buffers must be the same length"
|
||||
msgstr ""
|
||||
|
||||
#: extmod/modure.c
|
||||
msgid "Splitting with sub-captures"
|
||||
msgstr "Podział z podgrupami"
|
||||
@ -1429,6 +1467,10 @@ msgstr "Zbyt wiele magistrali"
|
||||
msgid "Too many displays"
|
||||
msgstr "Zbyt wiele wyświetlaczy"
|
||||
|
||||
#: ports/nrf/common-hal/_bleio/PacketBuffer.c
|
||||
msgid "Total data to write is larger than outgoing_packet_length"
|
||||
msgstr ""
|
||||
|
||||
#: py/obj.c
|
||||
msgid "Traceback (most recent call last):\n"
|
||||
msgstr "Ślad wyjątku (najnowsze wywołanie na końcu):\n"
|
||||
@ -2200,6 +2242,10 @@ msgstr "funkcja bierze najwyżej %d argumentów, jest %d"
|
||||
msgid "function got multiple values for argument '%q'"
|
||||
msgstr "funkcja dostała wiele wartości dla argumentu '%q'"
|
||||
|
||||
#: extmod/ulab/code/compare.c
|
||||
msgid "function is implemented for scalars and ndarrays only"
|
||||
msgstr ""
|
||||
|
||||
#: py/argcheck.c
|
||||
#, c-format
|
||||
msgid "function missing %d required positional arguments"
|
||||
@ -2688,7 +2734,8 @@ msgstr ""
|
||||
msgid "only slices with step=1 (aka None) are supported"
|
||||
msgstr "tylko fragmenty ze step=1 (lub None) są wspierane"
|
||||
|
||||
#: extmod/ulab/code/ndarray.c extmod/ulab/code/vectorise.c
|
||||
#: extmod/ulab/code/compare.c extmod/ulab/code/ndarray.c
|
||||
#: extmod/ulab/code/vectorise.c
|
||||
msgid "operands could not be broadcast together"
|
||||
msgstr ""
|
||||
|
||||
|
@ -8,7 +8,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: PACKAGE VERSION\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2020-04-17 18:44-0500\n"
|
||||
"POT-Creation-Date: 2020-05-06 17:47+0800\n"
|
||||
"PO-Revision-Date: 2018-10-02 21:14-0000\n"
|
||||
"Last-Translator: \n"
|
||||
"Language-Team: \n"
|
||||
@ -286,11 +286,12 @@ msgstr "Todos os temporizadores para este pino estão em uso"
|
||||
|
||||
#: ports/atmel-samd/common-hal/audioio/AudioOut.c
|
||||
#: ports/atmel-samd/common-hal/frequencyio/FrequencyIn.c
|
||||
#: ports/atmel-samd/common-hal/pulseio/PulseIn.c
|
||||
#: ports/atmel-samd/common-hal/pulseio/PulseOut.c
|
||||
#: ports/cxd56/common-hal/pulseio/PulseOut.c
|
||||
#: ports/nrf/common-hal/audiopwmio/PWMAudioOut.c
|
||||
#: ports/nrf/peripherals/nrf/timers.c shared-bindings/pulseio/PWMOut.c
|
||||
#: shared-module/_pew/PewPew.c
|
||||
#: ports/nrf/common-hal/pulseio/PulseIn.c ports/nrf/peripherals/nrf/timers.c
|
||||
#: shared-bindings/pulseio/PWMOut.c shared-module/_pew/PewPew.c
|
||||
msgid "All timers in use"
|
||||
msgstr "Todos os temporizadores em uso"
|
||||
|
||||
@ -432,6 +433,10 @@ msgstr "buffers devem ser o mesmo tamanho"
|
||||
msgid "Bytes must be between 0 and 255."
|
||||
msgstr "Os bytes devem estar entre 0 e 255."
|
||||
|
||||
#: shared-bindings/aesio/aes.c
|
||||
msgid "CBC blocks must be multiples of 16 bytes"
|
||||
msgstr ""
|
||||
|
||||
#: py/objtype.c
|
||||
msgid "Call super().__init__() before accessing native object."
|
||||
msgstr ""
|
||||
@ -666,6 +671,10 @@ msgstr ""
|
||||
msgid "Drive mode not used when direction is input."
|
||||
msgstr ""
|
||||
|
||||
#: shared-bindings/aesio/aes.c
|
||||
msgid "ECB only operates on 16 bytes at a time"
|
||||
msgstr ""
|
||||
|
||||
#: ports/atmel-samd/common-hal/frequencyio/FrequencyIn.c
|
||||
#: ports/atmel-samd/common-hal/ps2io/Ps2.c
|
||||
#: ports/atmel-samd/common-hal/pulseio/PulseIn.c
|
||||
@ -677,7 +686,7 @@ msgstr "Canal EXTINT em uso"
|
||||
msgid "Error in regex"
|
||||
msgstr "Erro no regex"
|
||||
|
||||
#: shared-bindings/microcontroller/Pin.c
|
||||
#: shared-bindings/aesio/aes.c shared-bindings/microcontroller/Pin.c
|
||||
#: shared-bindings/neopixel_write/__init__.c shared-bindings/pulseio/PulseOut.c
|
||||
#: shared-bindings/terminalio/Terminal.c
|
||||
msgid "Expected a %q"
|
||||
@ -806,6 +815,11 @@ msgstr ""
|
||||
msgid "I2C operation not supported"
|
||||
msgstr "I2C operação não suportada"
|
||||
|
||||
#: shared-bindings/aesio/aes.c
|
||||
#, c-format
|
||||
msgid "IV must be %d bytes long"
|
||||
msgstr ""
|
||||
|
||||
#: py/persistentcode.c
|
||||
msgid ""
|
||||
"Incompatible .mpy file. Please update all .mpy files. See http://adafru.it/"
|
||||
@ -988,6 +1002,10 @@ msgstr "Aqruivo de ondas inválido"
|
||||
msgid "Invalid word/bit length"
|
||||
msgstr ""
|
||||
|
||||
#: shared-bindings/aesio/aes.c
|
||||
msgid "Key must be 16, 24, or 32 bytes long"
|
||||
msgstr ""
|
||||
|
||||
#: py/compile.c
|
||||
msgid "LHS of keyword arg must be an id"
|
||||
msgstr ""
|
||||
@ -1096,6 +1114,10 @@ msgstr "Nenhum pino TX"
|
||||
msgid "No available clocks"
|
||||
msgstr ""
|
||||
|
||||
#: shared-bindings/_bleio/PacketBuffer.c
|
||||
msgid "No connection: length cannot be determined"
|
||||
msgstr ""
|
||||
|
||||
#: shared-bindings/board/__init__.c
|
||||
msgid "No default %q bus"
|
||||
msgstr "Nenhum barramento %q padrão"
|
||||
@ -1117,6 +1139,10 @@ msgstr "Sem suporte de hardware no pino de clock"
|
||||
msgid "No hardware support on pin"
|
||||
msgstr "Nenhum suporte de hardware no pino"
|
||||
|
||||
#: shared-bindings/aesio/aes.c
|
||||
msgid "No key was specified"
|
||||
msgstr ""
|
||||
|
||||
#: ports/stm/common-hal/pulseio/PWMOut.c
|
||||
msgid "No more timers available on this pin."
|
||||
msgstr ""
|
||||
@ -1244,6 +1270,10 @@ msgstr ""
|
||||
msgid "Pull not used when direction is output."
|
||||
msgstr ""
|
||||
|
||||
#: ports/stm/common-hal/pulseio/PulseIn.c
|
||||
msgid "PulseIn not supported on this chip"
|
||||
msgstr ""
|
||||
|
||||
#: ports/stm/common-hal/pulseio/PulseOut.c
|
||||
msgid "PulseOut not supported on this chip"
|
||||
msgstr ""
|
||||
@ -1295,6 +1325,10 @@ msgstr "Somente leitura"
|
||||
msgid "Refresh too soon"
|
||||
msgstr ""
|
||||
|
||||
#: shared-bindings/aesio/aes.c
|
||||
msgid "Requested AES mode is unsupported"
|
||||
msgstr ""
|
||||
|
||||
#: ports/atmel-samd/common-hal/audioio/AudioOut.c
|
||||
msgid "Right channel unsupported"
|
||||
msgstr "Canal direito não suportado"
|
||||
@ -1358,6 +1392,10 @@ msgstr ""
|
||||
msgid "Slices not supported"
|
||||
msgstr ""
|
||||
|
||||
#: shared-bindings/aesio/aes.c
|
||||
msgid "Source and destination buffers must be the same length"
|
||||
msgstr ""
|
||||
|
||||
#: extmod/modure.c
|
||||
msgid "Splitting with sub-captures"
|
||||
msgstr ""
|
||||
@ -1441,6 +1479,10 @@ msgstr ""
|
||||
msgid "Too many displays"
|
||||
msgstr ""
|
||||
|
||||
#: ports/nrf/common-hal/_bleio/PacketBuffer.c
|
||||
msgid "Total data to write is larger than outgoing_packet_length"
|
||||
msgstr ""
|
||||
|
||||
#: py/obj.c
|
||||
msgid "Traceback (most recent call last):\n"
|
||||
msgstr ""
|
||||
@ -2213,6 +2255,10 @@ msgstr "função esperada na maioria dos %d argumentos, obteve %d"
|
||||
msgid "function got multiple values for argument '%q'"
|
||||
msgstr ""
|
||||
|
||||
#: extmod/ulab/code/compare.c
|
||||
msgid "function is implemented for scalars and ndarrays only"
|
||||
msgstr ""
|
||||
|
||||
#: py/argcheck.c
|
||||
#, c-format
|
||||
msgid "function missing %d required positional arguments"
|
||||
@ -2701,7 +2747,8 @@ msgstr ""
|
||||
msgid "only slices with step=1 (aka None) are supported"
|
||||
msgstr ""
|
||||
|
||||
#: extmod/ulab/code/ndarray.c extmod/ulab/code/vectorise.c
|
||||
#: extmod/ulab/code/compare.c extmod/ulab/code/ndarray.c
|
||||
#: extmod/ulab/code/vectorise.c
|
||||
msgid "operands could not be broadcast together"
|
||||
msgstr ""
|
||||
|
||||
|
3182
locale/sv.po
Normal file
3182
locale/sv.po
Normal file
File diff suppressed because it is too large
Load Diff
@ -7,7 +7,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: circuitpython-cn\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2020-04-17 18:44-0500\n"
|
||||
"POT-Creation-Date: 2020-05-06 17:47+0800\n"
|
||||
"PO-Revision-Date: 2019-04-13 10:10-0700\n"
|
||||
"Last-Translator: hexthat\n"
|
||||
"Language-Team: Chinese Hanyu Pinyin\n"
|
||||
@ -290,11 +290,12 @@ msgstr "Cǐ yǐn jiǎo de suǒyǒu jìshí qì zhèngzài shǐyòng"
|
||||
|
||||
#: ports/atmel-samd/common-hal/audioio/AudioOut.c
|
||||
#: ports/atmel-samd/common-hal/frequencyio/FrequencyIn.c
|
||||
#: ports/atmel-samd/common-hal/pulseio/PulseIn.c
|
||||
#: ports/atmel-samd/common-hal/pulseio/PulseOut.c
|
||||
#: ports/cxd56/common-hal/pulseio/PulseOut.c
|
||||
#: ports/nrf/common-hal/audiopwmio/PWMAudioOut.c
|
||||
#: ports/nrf/peripherals/nrf/timers.c shared-bindings/pulseio/PWMOut.c
|
||||
#: shared-module/_pew/PewPew.c
|
||||
#: ports/nrf/common-hal/pulseio/PulseIn.c ports/nrf/peripherals/nrf/timers.c
|
||||
#: shared-bindings/pulseio/PWMOut.c shared-module/_pew/PewPew.c
|
||||
msgid "All timers in use"
|
||||
msgstr "Suǒyǒu jìshí qì shǐyòng"
|
||||
|
||||
@ -437,6 +438,10 @@ msgstr "Zì jié huǎnchōng qū bìxū shì 16 zì jié."
|
||||
msgid "Bytes must be between 0 and 255."
|
||||
msgstr "Zì jié bìxū jiè yú 0 dào 255 zhī jiān."
|
||||
|
||||
#: shared-bindings/aesio/aes.c
|
||||
msgid "CBC blocks must be multiples of 16 bytes"
|
||||
msgstr ""
|
||||
|
||||
#: py/objtype.c
|
||||
msgid "Call super().__init__() before accessing native object."
|
||||
msgstr "Zài fǎngwèn běn jī wùjiàn zhīqián diàoyòng super().__init__()"
|
||||
@ -670,6 +675,10 @@ msgstr "Xiǎnshì xuánzhuǎn bìxū 90 dù jiā xīn"
|
||||
msgid "Drive mode not used when direction is input."
|
||||
msgstr "Fāngxiàng shūrù shí qūdòng móshì méiyǒu shǐyòng."
|
||||
|
||||
#: shared-bindings/aesio/aes.c
|
||||
msgid "ECB only operates on 16 bytes at a time"
|
||||
msgstr ""
|
||||
|
||||
#: ports/atmel-samd/common-hal/frequencyio/FrequencyIn.c
|
||||
#: ports/atmel-samd/common-hal/ps2io/Ps2.c
|
||||
#: ports/atmel-samd/common-hal/pulseio/PulseIn.c
|
||||
@ -681,7 +690,7 @@ msgstr "EXTINT píndào yǐjīng shǐyòng"
|
||||
msgid "Error in regex"
|
||||
msgstr "Zhèngzé biǎodá shì cuòwù"
|
||||
|
||||
#: shared-bindings/microcontroller/Pin.c
|
||||
#: shared-bindings/aesio/aes.c shared-bindings/microcontroller/Pin.c
|
||||
#: shared-bindings/neopixel_write/__init__.c shared-bindings/pulseio/PulseOut.c
|
||||
#: shared-bindings/terminalio/Terminal.c
|
||||
msgid "Expected a %q"
|
||||
@ -808,6 +817,11 @@ msgstr "I2C chūshǐhuà cuòwù"
|
||||
msgid "I2C operation not supported"
|
||||
msgstr "I2C cāozuò bù zhīchí"
|
||||
|
||||
#: shared-bindings/aesio/aes.c
|
||||
#, c-format
|
||||
msgid "IV must be %d bytes long"
|
||||
msgstr ""
|
||||
|
||||
#: py/persistentcode.c
|
||||
msgid ""
|
||||
"Incompatible .mpy file. Please update all .mpy files. See http://adafru.it/"
|
||||
@ -989,6 +1003,10 @@ msgstr "Wúxiào de làng làngcháo wénjiàn"
|
||||
msgid "Invalid word/bit length"
|
||||
msgstr "Wúxiào de zì/wèi chángdù"
|
||||
|
||||
#: shared-bindings/aesio/aes.c
|
||||
msgid "Key must be 16, 24, or 32 bytes long"
|
||||
msgstr ""
|
||||
|
||||
#: py/compile.c
|
||||
msgid "LHS of keyword arg must be an id"
|
||||
msgstr "Guānjiàn zì arg de LHS bìxū shì id"
|
||||
@ -1097,6 +1115,10 @@ msgstr "Wèi zhǎodào TX yǐn jiǎo"
|
||||
msgid "No available clocks"
|
||||
msgstr "Méiyǒu kěyòng de shízhōng"
|
||||
|
||||
#: shared-bindings/_bleio/PacketBuffer.c
|
||||
msgid "No connection: length cannot be determined"
|
||||
msgstr ""
|
||||
|
||||
#: shared-bindings/board/__init__.c
|
||||
msgid "No default %q bus"
|
||||
msgstr "wú mòrèn %q zǒngxiàn"
|
||||
@ -1118,6 +1140,10 @@ msgstr "Shízhōng yǐn jiǎo wú yìngjiàn zhīchí"
|
||||
msgid "No hardware support on pin"
|
||||
msgstr "Méiyǒu zài yǐn jiǎo shàng de yìngjiàn zhīchí"
|
||||
|
||||
#: shared-bindings/aesio/aes.c
|
||||
msgid "No key was specified"
|
||||
msgstr ""
|
||||
|
||||
#: ports/stm/common-hal/pulseio/PWMOut.c
|
||||
msgid "No more timers available on this pin."
|
||||
msgstr "Gāi yǐn jiǎo shàng méiyǒu kěyòng de dìngshí qì."
|
||||
@ -1247,6 +1273,10 @@ msgstr "Àn xià rènhé jiàn jìnrù REPL. Shǐyòng CTRL-D chóngxīn jiāzà
|
||||
msgid "Pull not used when direction is output."
|
||||
msgstr "Fāngxiàng shūchū shí Pull méiyǒu shǐyòng."
|
||||
|
||||
#: ports/stm/common-hal/pulseio/PulseIn.c
|
||||
msgid "PulseIn not supported on this chip"
|
||||
msgstr ""
|
||||
|
||||
#: ports/stm/common-hal/pulseio/PulseOut.c
|
||||
msgid "PulseOut not supported on this chip"
|
||||
msgstr ""
|
||||
@ -1297,6 +1327,10 @@ msgstr "Zhǐ dú duìxiàng"
|
||||
msgid "Refresh too soon"
|
||||
msgstr "Shuāxīn tài kuàile"
|
||||
|
||||
#: shared-bindings/aesio/aes.c
|
||||
msgid "Requested AES mode is unsupported"
|
||||
msgstr ""
|
||||
|
||||
#: ports/atmel-samd/common-hal/audioio/AudioOut.c
|
||||
msgid "Right channel unsupported"
|
||||
msgstr "Bù zhīchí yòu tōngdào"
|
||||
@ -1360,6 +1394,10 @@ msgstr "Qiēpiàn hé zhí bùtóng chángdù."
|
||||
msgid "Slices not supported"
|
||||
msgstr "Qiēpiàn bù shòu zhīchí"
|
||||
|
||||
#: shared-bindings/aesio/aes.c
|
||||
msgid "Source and destination buffers must be the same length"
|
||||
msgstr ""
|
||||
|
||||
#: extmod/modure.c
|
||||
msgid "Splitting with sub-captures"
|
||||
msgstr "Yǔ zi bǔhuò fēnliè"
|
||||
@ -1450,6 +1488,10 @@ msgstr "Xiǎnshì zǒngxiàn tài duōle"
|
||||
msgid "Too many displays"
|
||||
msgstr "Xiǎnshì tài duō"
|
||||
|
||||
#: ports/nrf/common-hal/_bleio/PacketBuffer.c
|
||||
msgid "Total data to write is larger than outgoing_packet_length"
|
||||
msgstr ""
|
||||
|
||||
#: py/obj.c
|
||||
msgid "Traceback (most recent call last):\n"
|
||||
msgstr "Traceback (Zuìjìn yīcì dǎ diànhuà):\n"
|
||||
@ -2228,6 +2270,10 @@ msgstr "hánshù yùjì zuìduō %d cānshù, huòdé %d"
|
||||
msgid "function got multiple values for argument '%q'"
|
||||
msgstr "hánshù huòdé cānshù '%q' de duōchóng zhí"
|
||||
|
||||
#: extmod/ulab/code/compare.c
|
||||
msgid "function is implemented for scalars and ndarrays only"
|
||||
msgstr ""
|
||||
|
||||
#: py/argcheck.c
|
||||
#, c-format
|
||||
msgid "function missing %d required positional arguments"
|
||||
@ -2718,7 +2764,8 @@ msgstr "Jǐn zhīchí cǎiyàng lǜ = 16000"
|
||||
msgid "only slices with step=1 (aka None) are supported"
|
||||
msgstr "jǐn zhīchí bù zhǎng = 1(jí wú) de qiēpiàn"
|
||||
|
||||
#: extmod/ulab/code/ndarray.c extmod/ulab/code/vectorise.c
|
||||
#: extmod/ulab/code/compare.c extmod/ulab/code/ndarray.c
|
||||
#: extmod/ulab/code/vectorise.c
|
||||
msgid "operands could not be broadcast together"
|
||||
msgstr ""
|
||||
|
||||
|
@ -114,7 +114,7 @@ else
|
||||
|
||||
# Do a default shrink for small builds.
|
||||
ifndef CFLAGS_INLINE_LIMIT
|
||||
ifeq ($(CIRCUITPY_SMALL_BUILD),1)
|
||||
ifeq ($(CIRCUITPY_FULL_BUILD),0)
|
||||
CFLAGS_INLINE_LIMIT = 50
|
||||
endif
|
||||
endif
|
||||
@ -125,7 +125,7 @@ else
|
||||
|
||||
CFLAGS += -flto -flto-partition=none
|
||||
|
||||
ifeq ($(CIRCUITPY_SMALL_BUILD),1)
|
||||
ifeq ($(CIRCUITPY_FULL_BUILD),0)
|
||||
CFLAGS += --param inline-unit-growth=15 --param max-inline-insns-auto=20
|
||||
endif
|
||||
|
||||
@ -194,7 +194,6 @@ SRC_ASF := \
|
||||
hpl/gclk/hpl_gclk.c \
|
||||
hpl/nvmctrl/hpl_nvmctrl.c \
|
||||
hpl/pm/hpl_pm.c \
|
||||
hpl/rtc/hpl_rtc.c \
|
||||
hpl/sercom/hpl_sercom.c \
|
||||
hpl/systick/hpl_systick.c \
|
||||
hal/utils/src/utils_list.c \
|
||||
@ -258,7 +257,6 @@ SRC_C = \
|
||||
peripherals/samd/timers.c \
|
||||
reset.c \
|
||||
supervisor/shared/memory.c \
|
||||
tick.c \
|
||||
timer_handler.c \
|
||||
|
||||
|
||||
@ -306,7 +304,6 @@ SRC_SHARED_MODULE_EXPANDED = $(addprefix shared-bindings/, $(SRC_SHARED_MODULE))
|
||||
# Doing a $(sort ...) removes duplicates as part of sorting.
|
||||
SRC_COMMON_HAL_SHARED_MODULE_EXPANDED = $(sort $(SRC_COMMON_HAL_EXPANDED) $(SRC_SHARED_MODULE_EXPANDED))
|
||||
|
||||
|
||||
SRC_S = supervisor/$(CHIP_FAMILY)_cpu.s
|
||||
|
||||
OBJ = $(PY_O) $(SUPERVISOR_O) $(addprefix $(BUILD)/, $(SRC_C:.c=.o))
|
||||
|
@ -1,243 +1,21 @@
|
||||
SAMD21x18
|
||||
=========
|
||||
SAMD21 and SAMD51
|
||||
==================
|
||||
|
||||
This port brings MicroPython to SAMD21x18 based development boards under the name
|
||||
CircuitPython. Supported boards include:
|
||||
This port supports many development boards that utilize SAMD21 and SAMD51 chips. See
|
||||
https://circuitpython.org/downloads for all supported boards.
|
||||
|
||||
- Adafruit CircuitPlayground Express
|
||||
- Adafruit Feather M0 Basic
|
||||
- Adafruit Feather M0 Express
|
||||
- Adafruit Metro M0 Express
|
||||
- Adafruit M0 Bluefruit LE
|
||||
- Arduino Zero
|
||||
- Arduino MKR Zero
|
||||
- Arduino Nano 33 IoT
|
||||
|
||||
|
||||
Pinout
|
||||
------
|
||||
|
||||
All of the boards share the same core pin functionality but call pins by
|
||||
different names. The table below matches the pin order in
|
||||
`the datasheet <http://ww1.microchip.com/downloads/en/DeviceDoc/40001882A.pdf>`_
|
||||
and omits the pins only available on the largest package because all supported
|
||||
boards use smaller version.
|
||||
|
||||
===================== =================== =================== =============== =========================== ====================== ================ ================== ========================= ================ ================================ ====================== ================
|
||||
`microcontroller.pin` `board`
|
||||
--------------------- -----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
|
||||
Datasheet arduino_mkrzero arduino_nano_33_iot arduino_zero circuitplayground_express feather_m0_adalogger feather_m0_basic feather_m0_express gemma_m0 metro_m0_express sparkfun_samd21_mini sparkfun_samd21_dev trinket_m0
|
||||
===================== =================== =================== =============== =========================== ====================== ================ ================== ========================= ================ ================================ ====================== ================
|
||||
PA00 ``ACCELEROMETER_SDA`` ``APA102_MOSI`` ``APA102_MOSI``
|
||||
PA01 ``ACCELEROMETER_SCL`` ``APA102_SCK`` ``APA102_SCK``
|
||||
PA02 ``A0`` ``A0`` ``A0`` ``A0`` / ``SPEAKER`` ``A0`` ``A0`` ``A0`` ``A0`` / ``D1`` ``A0`` ``A0`` ``A0`` ``D1`` / ``A0``
|
||||
PA03
|
||||
PB08 ``L`` ``A4`` / ``SDA`` ``A1`` ``A7`` / ``TX`` ``A1`` ``A1`` ``A1`` ``A1`` ``A1`` ``A1``
|
||||
PB09 ``BATTERY`` ``A5`` / ``SCL`` ``A2`` ``A6`` / ``RX`` ``A2`` ``A2`` ``A2`` ``A2`` ``A2`` ``A2``
|
||||
PA04 ``A3`` ``D6`` ``A3`` ``IR_PROXIMITY`` ``A3`` ``A3`` ``A3`` ``D0`` / ``TX`` / ``SDA`` ``A3`` ``A3`` ``A3``
|
||||
PA05 ``A4`` ``D5`` ``A4`` ``A1`` ``A4`` ``A4`` ``A4`` ``D2`` / ``RX`` / ``SCL`` ``A4`` ``A4``
|
||||
PA06 ``A5`` ``D7`` ``D8`` ``A2`` ``D8`` / ``GREEN_LED`` ``NEOPIXEL`` ``D8`` ``D8`` ``D8`` ``D4`` / ``TX``
|
||||
PA07 ``A6`` ``D4`` ``D9`` ``A3`` ``D9`` ``D9`` ``D9`` ``D9`` ``D9`` ``D9`` ``D3`` / ``RX``
|
||||
PA08 ``D11`` / ``SDA`` ``ESP_RESET`` ``D4`` ``MICROPHONE_DO`` ``D4`` / ``SD_CS`` ``D4`` ``D4`` ``D4`` ``D0`` / ``SDA``
|
||||
PA09 ``D12`` / ``SCL`` ``A6`` ``D3`` ``TEMPERATURE`` / ``A9`` ``D3`` ``D3`` ``D3`` ``D2`` / ``SCL``
|
||||
PA10 ``D2`` ``A3`` ``D1`` / ``TX`` ``MICROPHONE_SCK`` ``D1`` / ``TX`` ``D1`` / ``TX`` ``D1`` / ``TX`` ``D1`` / ``TX`` ``D1`` / ``TX`` ``D1`` / ``TX`` ``D13``
|
||||
PA11 ``D3`` ``A2`` ``D0`` / ``RX`` ``LIGHT`` / ``A8`` ``D0`` / ``RX`` ``D0`` / ``RX`` ``D0`` / ``RX`` ``D0`` / ``RX`` ``D0`` / ``RX`` ``D0`` / ``RX``
|
||||
PB10 ``D4`` ``D2`` ``MOSI`` ``MOSI`` ``MOSI`` ``MOSI`` ``MOSI`` ``MOSI``
|
||||
PB11 ``D5`` ``D3`` ``SCK`` ``SCK`` ``SCK`` ``SCK`` ``SCK`` ``SCK``
|
||||
PA12 ``SD_MOSI`` ``ESP_MOSI`` ``MISO`` ``REMOTEIN`` / ``IR_RX`` ``MISO`` ``MISO`` ``MISO`` ``MISO`` ``MISO``
|
||||
PA13 ``SD_SCK`` ``ESP_MISO`` ``ACCELEROMETER_INTERRUPT`` ``FLASH_CS`` ``D38``
|
||||
PA14 ``SD_CS`` ``ESP_CS`` ``D2`` ``BUTTON_B`` / ``D5`` ``D2`` ``D2`` ``D2``
|
||||
PA15 ``SD_MISO`` ``ESP_SCK`` ``D5`` ``SLIDE_SWITCH`` / ``D7`` ``D5`` ``D5`` ``D5`` ``D5`` ``D5`` ``D5``
|
||||
PA16 ``D8`` / ``MOSI`` ``D11`` / ``MOSI`` ``D11`` ``MISO`` ``D11`` ``D11`` ``D11`` ``D11`` ``D11`` / ``MOSI`` ``D11``
|
||||
PA17 ``D9`` / ``SCK`` ``D13`` / ``SCK`` ``D13`` ``D13`` ``D13`` / ``RED_LED`` ``D13`` ``D13`` ``D13`` ``D13`` / ``SCK`` / ``BLUE_LED`` ``D13`` / ``BLUE_LED``
|
||||
PA18 ``D8`` ``D10`` ``D10`` ``D10`` ``D10`` ``D10`` ``D10`` ``D10``
|
||||
PA19 ``D10`` / ``MISO`` ``D12`` / ``MISO`` ``D12`` ``D12`` ``D12`` ``D12`` ``D12`` ``D12`` / ``MISO`` ``D12``
|
||||
PA20 ``D6`` ``D9`` ``D6`` ``MOSI`` ``D6`` ``D6`` ``D6`` ``D6`` ``D6`` ``D6``
|
||||
PA21 ``D7`` ``D10`` ``D7`` ``SCK`` ``D7`` / ``SD_CD`` ``D7`` ``D7`` ``D7``
|
||||
PA22 ``D0`` ``ESP_TX`` ``SDA`` ``SDA`` ``SDA`` ``SDA`` ``SDA`` ``SDA`` ``SDA``
|
||||
PA23 ``D1`` ``ESP_RX`` ``SCL`` ``REMOTEOUT`` / ``IR_TX`` ``SCL`` ``SCL`` ``SCL`` ``L`` / ``D13`` ``SCL`` ``SCL`` ``SCL``
|
||||
PA24
|
||||
PA25
|
||||
PB22 ``D14`` / ``TX`` ``D1`` / ``TX`` ``FLASH_CS`` ``D30`` / ``TX1``
|
||||
PB23 ``D13`` / ``RX`` ``D0`` / ``RX`` ``NEOPIXEL`` / ``D8`` ``D31`` / ``RX1``
|
||||
PA27 ``SD_CD`` ``ESP_GPIO0`` ``GREEN_LED`` ``GREEN_LED``
|
||||
PA28 ``ESP_BUSY`` ``BUTTON_A`` / ``D4``
|
||||
PA29
|
||||
PA30 ``SPEAKER_ENABLE`` ``NEOPIXEL``
|
||||
PA31
|
||||
PB02 ``A1`` ``A1`` ``A5`` ``A5`` / ``SDA`` ``A5`` ``A5`` ``A5`` ``A5`` ``A5``
|
||||
PB03 ``A2`` ``A7`` ``A4`` / ``SCL`` ``YELLOW_LED`` ``YELLOW_LED``
|
||||
===================== =================== =================== =============== =========================== ====================== ================ ================== ========================= ================ ================================ ====================== ================
|
||||
|
||||
Here is a table about which pins can do what in CircuitPython terms. However,
|
||||
just because something is listed, doesn't mean it will always work. Existing use
|
||||
of other pins and functionality will impact your ability to use a pin for your
|
||||
desired purpose. For example, only certain combinations of SPI pins will work
|
||||
because they use shared hardware internally.
|
||||
|
||||
===================== ======== ========= ========= ======= ======= ======= ========= ========= ======= ========== ========== ========= ========= ========= ============ ======= ======= =========
|
||||
`microcontroller.pin` `analogio` `audioio` `bitbangio` `busio` `digitalio` `pulseio` `touchio`
|
||||
--------------------- ------------------- --------- ------------------------- -------------------------------------------------------------------------------------- ------------ ---------------- ---------
|
||||
Datasheet AnalogIn AnalogOut AudioOut I2C OneWire SPI I2C - SDA I2C - SCL OneWire SPI - MISO SPI - MOSI SPI - SCK UART - RX UART - TX DigitalInOut PulseIn PWMOut TouchIn
|
||||
===================== ======== ========= ========= ======= ======= ======= ========= ========= ======= ========== ========== ========= ========= ========= ============ ======= ======= =========
|
||||
PA00 **Yes** **Yes** **Yes** **Yes** **Yes** **Yes** **Yes** **Yes** **Yes** **Yes** **Yes**
|
||||
PA01 **Yes** **Yes** **Yes** **Yes** **Yes** **Yes** **Yes** **Yes** **Yes** **Yes** **Yes**
|
||||
PA02 **Yes** **Yes** **Yes** **Yes** **Yes** **Yes** **Yes** **Yes** **Yes** **Yes**
|
||||
PA03 **Yes** **Yes** **Yes** **Yes** **Yes** **Yes** **Yes** **Yes**
|
||||
PB08 **Yes** **Yes** **Yes** **Yes** **Yes** **Yes** **Yes** **Yes** **Yes** **Yes** **Yes** **Yes** **Yes**
|
||||
PB09 **Yes** **Yes** **Yes** **Yes** **Yes** **Yes** **Yes** **Yes** **Yes** **Yes** **Yes** **Yes** **Yes**
|
||||
PA04 **Yes** **Yes** **Yes** **Yes** **Yes** **Yes** **Yes** **Yes** **Yes** **Yes** **Yes** **Yes** **Yes**
|
||||
PA05 **Yes** **Yes** **Yes** **Yes** **Yes** **Yes** **Yes** **Yes** **Yes** **Yes** **Yes** **Yes**
|
||||
PA06 **Yes** **Yes** **Yes** **Yes** **Yes** **Yes** **Yes** **Yes** **Yes** **Yes** **Yes** **Yes** **Yes**
|
||||
PA07 **Yes** **Yes** **Yes** **Yes** **Yes** **Yes** **Yes** **Yes** **Yes** **Yes** **Yes** **Yes**
|
||||
PA08 **Yes** **Yes** **Yes** **Yes** **Yes** **Yes** **Yes** **Yes** **Yes** **Yes** **Yes** **Yes** **Yes**
|
||||
PA09 **Yes** **Yes** **Yes** **Yes** **Yes** **Yes** **Yes** **Yes** **Yes** **Yes** **Yes** **Yes**
|
||||
PA10 **Yes** **Yes** **Yes** **Yes** **Yes** **Yes** **Yes** **Yes** **Yes** **Yes** **Yes** **Yes**
|
||||
PA11 **Yes** **Yes** **Yes** **Yes** **Yes** **Yes** **Yes** **Yes** **Yes** **Yes** **Yes** **Yes**
|
||||
PB10 **Yes** **Yes** **Yes** **Yes** **Yes** **Yes** **Yes** **Yes** **Yes** **Yes** **Yes**
|
||||
PB11 **Yes** **Yes** **Yes** **Yes** **Yes** **Yes** **Yes** **Yes** **Yes** **Yes** **Yes**
|
||||
PA12 **Yes** **Yes** **Yes** **Yes** **Yes** **Yes** **Yes** **Yes** **Yes** **Yes** **Yes**
|
||||
PA13 **Yes** **Yes** **Yes** **Yes** **Yes** **Yes** **Yes** **Yes** **Yes** **Yes** **Yes**
|
||||
PA14 **Yes** **Yes** **Yes** **Yes** **Yes** **Yes** **Yes** **Yes** **Yes** **Yes** **Yes**
|
||||
PA15 **Yes** **Yes** **Yes** **Yes** **Yes** **Yes** **Yes** **Yes** **Yes** **Yes** **Yes**
|
||||
PA16 **Yes** **Yes** **Yes** **Yes** **Yes** **Yes** **Yes** **Yes** **Yes** **Yes** **Yes** **Yes**
|
||||
PA17 **Yes** **Yes** **Yes** **Yes** **Yes** **Yes** **Yes** **Yes** **Yes** **Yes** **Yes**
|
||||
PA18 **Yes** **Yes** **Yes** **Yes** **Yes** **Yes** **Yes** **Yes** **Yes** **Yes** **Yes**
|
||||
PA19 **Yes** **Yes** **Yes** **Yes** **Yes** **Yes** **Yes** **Yes** **Yes** **Yes** **Yes**
|
||||
PA20 **Yes** **Yes** **Yes** **Yes** **Yes** **Yes** **Yes** **Yes** **Yes** **Yes** **Yes**
|
||||
PA21 **Yes** **Yes** **Yes** **Yes** **Yes** **Yes** **Yes** **Yes** **Yes** **Yes** **Yes**
|
||||
PA22 **Yes** **Yes** **Yes** **Yes** **Yes** **Yes** **Yes** **Yes** **Yes** **Yes** **Yes** **Yes**
|
||||
PA23 **Yes** **Yes** **Yes** **Yes** **Yes** **Yes** **Yes** **Yes** **Yes** **Yes** **Yes**
|
||||
PA24
|
||||
PA25
|
||||
PB22 **Yes** **Yes** **Yes** **Yes** **Yes** **Yes** **Yes** **Yes** **Yes** **Yes**
|
||||
PB23 **Yes** **Yes** **Yes** **Yes** **Yes** **Yes** **Yes** **Yes** **Yes** **Yes**
|
||||
PA27 **Yes** **Yes** **Yes** **Yes** **Yes** **Yes**
|
||||
PA28 **Yes** **Yes** **Yes** **Yes** **Yes** **Yes**
|
||||
PA29 **Yes** **Yes** **Yes** **Yes** **Yes** **Yes**
|
||||
PA30 **Yes** **Yes** **Yes** **Yes** **Yes** **Yes** **Yes** **Yes** **Yes** **Yes** **Yes**
|
||||
PA31 **Yes** **Yes** **Yes** **Yes** **Yes** **Yes** **Yes** **Yes** **Yes** **Yes** **Yes**
|
||||
PB02 **Yes** **Yes** **Yes** **Yes** **Yes** **Yes** **Yes** **Yes** **Yes** **Yes** **Yes** **Yes** **Yes**
|
||||
PB03 **Yes** **Yes** **Yes** **Yes** **Yes** **Yes** **Yes** **Yes** **Yes** **Yes** **Yes** **Yes**
|
||||
===================== ======== ========= ========= ======= ======= ======= ========= ========= ======= ========== ========== ========= ========= ========= ============ ======= ======= =========
|
||||
|
||||
Setup
|
||||
-----
|
||||
|
||||
An ARM compiler is required for the build, along with the associated binary
|
||||
utilities. They can be installed as follows:
|
||||
|
||||
- Ubuntu
|
||||
|
||||
.. code-block:: shell
|
||||
|
||||
sudo add-apt-repository ppa:team-gcc-arm-embedded/ppa
|
||||
sudo apt-get install gcc-arm-embedded
|
||||
|
||||
- Arch Linux
|
||||
|
||||
.. code-block:: shell
|
||||
|
||||
sudo pacman -S arm-none-eabi-gcc arm-none-eabi-newlib
|
||||
|
||||
For other systems, the `GNU Arm Embedded Toolchain <https://developer.arm.com/open-source/gnu-toolchain/gnu-rm/downloads>`_
|
||||
may be available in binary form.
|
||||
|
||||
The latest available package from team-gcc-arm-embedded is used to produce the
|
||||
binaries shipped by AdaFruit. Other compiler versions, particularly older
|
||||
ones, may not work properly. In particular, the ``gcc-arm-none-eabi`` package
|
||||
in Debian Stretch is too old.
|
||||
|
||||
The compiler can be changed using the ``CROSS_COMPILE`` variable when invoking
|
||||
``make``.
|
||||
|
||||
Building
|
||||
--------
|
||||
|
||||
Before building the firmware for a given board, there are two additional steps.
|
||||
These commands should be executed from the root directory of the repository
|
||||
(``circuitpython/``).
|
||||
|
||||
1. There are various submodules that reside in different repositories. In order
|
||||
to have these submodules locally, you must pull them into your clone, using:
|
||||
|
||||
.. code-block:: shell
|
||||
|
||||
git submodule update --init --recursive
|
||||
|
||||
2. The MicroPython cross-compiler must be built; it will be used to pre-compile
|
||||
some of the built-in scripts to bytecode. The cross-compiler is built and
|
||||
run on the host machine, using:
|
||||
|
||||
.. code-block:: shell
|
||||
|
||||
make -C mpy-cross
|
||||
For build instructions see this guide: https://learn.adafruit.com/building-circuitpython/
|
||||
|
||||
|
||||
Build commands are run from the ``circuitpython/ports/atmel-samd`` directory.
|
||||
|
||||
To build for a given board you must specify it by setting ``BOARD``. For example:
|
||||
|
||||
.. code-block:: shell
|
||||
|
||||
make BOARD=feather_m0_basic
|
||||
|
||||
Board names are the directory names in the `boards <https://github.com/adafruit/circuitpython/tree/master/ports/atmel-samd/boards>`_ folder.
|
||||
|
||||
Deploying
|
||||
Debugging
|
||||
---------
|
||||
|
||||
Arduino Bootloader
|
||||
^^^^^^^^^^^^^^^^^^
|
||||
For debugging instructions see this guide: https://learn.adafruit.com/debugging-the-samd21-with-gdb
|
||||
|
||||
If your board has an existing Arduino bootloader on it then you can use bossac
|
||||
to flash MicroPython. First, activate the bootloader. On Adafruit Feathers you
|
||||
can double click the reset button and the #13 will fade in and out. Finally,
|
||||
run bossac:
|
||||
|
||||
tools/bossac_osx -e -w -v -b -R build-feather_m0_basic/firmware.bin
|
||||
|
||||
No Bootloader via GDB
|
||||
^^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
This method works for loading MicroPython onto the Arduino Zero via the
|
||||
programming port rather than the native USB port.
|
||||
|
||||
Note: These instructions are tested on Mac OSX and will vary for different
|
||||
platforms.
|
||||
|
||||
openocd -f ~/Library/Arduino15/packages/arduino/hardware/samd/1.6.6/variants/arduino_zero/openocd_scripts/arduino_zero.cfg
|
||||
|
||||
In another terminal from ``micropython/atmel-samd``:
|
||||
|
||||
arm-none-eabi-gdb build-arduino_zero/firmware.elf
|
||||
(gdb) tar ext :3333
|
||||
...
|
||||
(gdb) load
|
||||
...
|
||||
(gdb) monitor reset init
|
||||
...
|
||||
(gdb) continue
|
||||
|
||||
Connecting
|
||||
----------
|
||||
|
||||
Serial
|
||||
^^^^^^
|
||||
|
||||
All boards are currently configured to work over USB rather than UART. To
|
||||
connect to it from OSX do something like this:
|
||||
|
||||
screen /dev/tty.usbmodem142422 115200
|
||||
|
||||
You may not see a prompt immediately because it doesn't know you connected. To
|
||||
get one either hit enter to get `>>>` or do CTRL-B to get the full header.
|
||||
|
||||
Mass storage
|
||||
^^^^^^^^^^^^
|
||||
|
||||
All boards will also show up as a mass storage device. Make sure to eject it
|
||||
before resetting or disconnecting the board.
|
||||
|
||||
Port Specific modules
|
||||
---------------------
|
||||
|
@ -26,7 +26,6 @@
|
||||
#include "background.h"
|
||||
|
||||
#include "audio_dma.h"
|
||||
#include "tick.h"
|
||||
#include "supervisor/filesystem.h"
|
||||
#include "supervisor/shared/tick.h"
|
||||
#include "supervisor/usb.h"
|
||||
@ -34,6 +33,7 @@
|
||||
#include "py/runtime.h"
|
||||
#include "shared-module/network/__init__.h"
|
||||
#include "supervisor/shared/stack.h"
|
||||
#include "supervisor/port.h"
|
||||
|
||||
#ifdef CIRCUITPY_DISPLAYIO
|
||||
#include "shared-module/displayio/__init__.h"
|
||||
@ -92,10 +92,10 @@ void run_background_tasks(void) {
|
||||
running_background_tasks = false;
|
||||
assert_heap_ok();
|
||||
|
||||
last_finished_tick = supervisor_ticks_ms64();
|
||||
last_finished_tick = port_get_raw_ticks(NULL);
|
||||
finish_background_task();
|
||||
}
|
||||
|
||||
bool background_tasks_ok(void) {
|
||||
return supervisor_ticks_ms64() - last_finished_tick < 1000;
|
||||
return port_get_raw_ticks(NULL) - last_finished_tick < 1024;
|
||||
}
|
||||
|
@ -13,7 +13,7 @@ EXTERNAL_FLASH_DEVICE_COUNT = 1
|
||||
EXTERNAL_FLASH_DEVICES = "W25Q128JV_SQ"
|
||||
|
||||
LONGINT_IMPL = NONE
|
||||
CIRCUITPY_SMALL_BUILD = 1
|
||||
CIRCUITPY_FULL_BUILD = 0
|
||||
|
||||
SUPEROPT_GC = 0
|
||||
|
||||
|
@ -8,5 +8,5 @@ CHIP_FAMILY = samd21
|
||||
|
||||
INTERNAL_FLASH_FILESYSTEM = 1
|
||||
LONGINT_IMPL = NONE
|
||||
CIRCUITPY_SMALL_BUILD = 1
|
||||
CIRCUITPY_FULL_BUILD = 0
|
||||
SUPEROPT_GC = 0
|
||||
|
@ -8,6 +8,6 @@ CHIP_FAMILY = samd21
|
||||
|
||||
INTERNAL_FLASH_FILESYSTEM = 1
|
||||
LONGINT_IMPL = NONE
|
||||
CIRCUITPY_SMALL_BUILD = 1
|
||||
CIRCUITPY_FULL_BUILD = 0
|
||||
|
||||
SUPEROPT_GC = 0
|
||||
|
@ -8,6 +8,6 @@ CHIP_FAMILY = samd21
|
||||
|
||||
INTERNAL_FLASH_FILESYSTEM = 1
|
||||
LONGINT_IMPL = NONE
|
||||
CIRCUITPY_SMALL_BUILD = 1
|
||||
CIRCUITPY_FULL_BUILD = 0
|
||||
|
||||
SUPEROPT_GC = 0
|
||||
|
@ -8,6 +8,6 @@ CHIP_FAMILY = samd21
|
||||
|
||||
INTERNAL_FLASH_FILESYSTEM = 1
|
||||
LONGINT_IMPL = NONE
|
||||
CIRCUITPY_SMALL_BUILD = 1
|
||||
CIRCUITPY_FULL_BUILD = 0
|
||||
|
||||
SUPEROPT_GC = 0
|
||||
|
@ -8,4 +8,4 @@ CHIP_FAMILY = samd21
|
||||
|
||||
INTERNAL_FLASH_FILESYSTEM = 1
|
||||
LONGINT_IMPL = NONE
|
||||
CIRCUITPY_SMALL_BUILD = 1
|
||||
CIRCUITPY_FULL_BUILD = 0
|
||||
|
@ -8,4 +8,4 @@ CHIP_FAMILY = samd21
|
||||
|
||||
INTERNAL_FLASH_FILESYSTEM = 1
|
||||
LONGINT_IMPL = NONE
|
||||
CIRCUITPY_SMALL_BUILD = 1
|
||||
CIRCUITPY_FULL_BUILD = 0
|
||||
|
@ -12,10 +12,11 @@ EXTERNAL_FLASH_DEVICES = "S25FL216K, GD25Q16C"
|
||||
|
||||
# Turn off features and optimizations for Crickit build to make room for additional frozen libs.
|
||||
LONGINT_IMPL = NONE
|
||||
CIRCUITPY_BITBANGIO = 0
|
||||
CIRCUITPY_DISPLAYIO = 0
|
||||
CIRCUITPY_FREQUENCYIO = 0
|
||||
CIRCUITPY_I2CSLAVE = 0
|
||||
CIRCUITPY_PIXELBUF = 0
|
||||
CIRCUITPY_PIXELBUF = 1
|
||||
CIRCUITPY_RTC = 0
|
||||
|
||||
SUPEROPT_GC = 0
|
||||
|
@ -8,6 +8,6 @@ CHIP_FAMILY = samd21
|
||||
|
||||
INTERNAL_FLASH_FILESYSTEM = 1
|
||||
LONGINT_IMPL = NONE
|
||||
CIRCUITPY_SMALL_BUILD = 1
|
||||
CIRCUITPY_FULL_BUILD = 0
|
||||
|
||||
SUPEROPT_GC = 0
|
||||
|
@ -8,6 +8,6 @@ CHIP_FAMILY = samd21
|
||||
|
||||
INTERNAL_FLASH_FILESYSTEM = 1
|
||||
LONGINT_IMPL = NONE
|
||||
CIRCUITPY_SMALL_BUILD = 1
|
||||
CIRCUITPY_FULL_BUILD = 0
|
||||
|
||||
SUPEROPT_GC = 0
|
||||
|
@ -8,6 +8,6 @@ CHIP_FAMILY = samd21
|
||||
|
||||
INTERNAL_FLASH_FILESYSTEM = 1
|
||||
LONGINT_IMPL = NONE
|
||||
CIRCUITPY_SMALL_BUILD = 1
|
||||
CIRCUITPY_FULL_BUILD = 0
|
||||
|
||||
SUPEROPT_GC = 0
|
||||
|
@ -8,6 +8,6 @@ CHIP_FAMILY = samd21
|
||||
|
||||
INTERNAL_FLASH_FILESYSTEM = 1
|
||||
LONGINT_IMPL = NONE
|
||||
CIRCUITPY_SMALL_BUILD = 1
|
||||
CIRCUITPY_FULL_BUILD = 0
|
||||
|
||||
SUPEROPT_GC = 0
|
||||
|
@ -8,6 +8,6 @@ CHIP_FAMILY = samd21
|
||||
|
||||
INTERNAL_FLASH_FILESYSTEM = 1
|
||||
LONGINT_IMPL = NONE
|
||||
CIRCUITPY_SMALL_BUILD = 1
|
||||
CIRCUITPY_FULL_BUILD = 0
|
||||
|
||||
SUPEROPT_GC = 0
|
||||
|
@ -8,6 +8,6 @@ CHIP_FAMILY = samd21
|
||||
|
||||
INTERNAL_FLASH_FILESYSTEM = 1
|
||||
LONGINT_IMPL = NONE
|
||||
CIRCUITPY_SMALL_BUILD = 1
|
||||
CIRCUITPY_FULL_BUILD = 0
|
||||
|
||||
SUPEROPT_GC = 0
|
||||
|
@ -8,6 +8,6 @@ CHIP_FAMILY = samd21
|
||||
|
||||
INTERNAL_FLASH_FILESYSTEM = 1
|
||||
LONGINT_IMPL = NONE
|
||||
CIRCUITPY_SMALL_BUILD = 1
|
||||
CIRCUITPY_FULL_BUILD = 0
|
||||
|
||||
SUPEROPT_GC = 0
|
||||
|
@ -8,6 +8,6 @@ CHIP_FAMILY = samd21
|
||||
|
||||
INTERNAL_FLASH_FILESYSTEM = 1
|
||||
LONGINT_IMPL = NONE
|
||||
CIRCUITPY_SMALL_BUILD = 1
|
||||
CIRCUITPY_FULL_BUILD = 0
|
||||
|
||||
SUPEROPT_GC = 0
|
||||
|
@ -8,6 +8,6 @@ CHIP_FAMILY = samd21
|
||||
|
||||
INTERNAL_FLASH_FILESYSTEM = 1
|
||||
LONGINT_IMPL = NONE
|
||||
CIRCUITPY_SMALL_BUILD = 1
|
||||
CIRCUITPY_FULL_BUILD = 0
|
||||
|
||||
SUPEROPT_GC = 0
|
||||
|
@ -8,6 +8,6 @@ CHIP_FAMILY = samd21
|
||||
|
||||
INTERNAL_FLASH_FILESYSTEM = 1
|
||||
LONGINT_IMPL = NONE
|
||||
CIRCUITPY_SMALL_BUILD = 1
|
||||
CIRCUITPY_FULL_BUILD = 0
|
||||
|
||||
SUPEROPT_GC = 0
|
||||
|
@ -32,8 +32,6 @@
|
||||
#include "shared-module/displayio/mipi_constants.h"
|
||||
#include "shared-bindings/busio/SPI.h"
|
||||
|
||||
#include "tick.h"
|
||||
|
||||
displayio_fourwire_obj_t board_display_obj;
|
||||
|
||||
#define DELAY 0x80
|
||||
|
@ -20,7 +20,7 @@ CIRCUITPY_I2CSLAVE = 0
|
||||
CIRCUITPY_ROTARYIO = 0
|
||||
CIRCUITPY_RTC = 0
|
||||
|
||||
CFLAGS_INLINE_LIMIT = 60
|
||||
CFLAGS_INLINE_LIMIT = 55
|
||||
SUPEROPT_GC = 0
|
||||
|
||||
# Include these Python libraries in firmware.
|
||||
|
@ -31,7 +31,6 @@
|
||||
#include "shared-bindings/displayio/FourWire.h"
|
||||
#include "shared-module/displayio/__init__.h"
|
||||
#include "shared-module/displayio/mipi_constants.h"
|
||||
#include "tick.h"
|
||||
|
||||
displayio_fourwire_obj_t board_display_obj;
|
||||
|
||||
|
@ -8,6 +8,6 @@ CHIP_FAMILY = samd21
|
||||
|
||||
INTERNAL_FLASH_FILESYSTEM = 1
|
||||
LONGINT_IMPL = NONE
|
||||
CIRCUITPY_SMALL_BUILD = 1
|
||||
CIRCUITPY_FULL_BUILD = 0
|
||||
|
||||
SUPEROPT_GC = 0
|
||||
|
@ -31,7 +31,6 @@
|
||||
#include "shared-bindings/displayio/FourWire.h"
|
||||
#include "shared-module/displayio/__init__.h"
|
||||
#include "shared-module/displayio/mipi_constants.h"
|
||||
#include "tick.h"
|
||||
|
||||
displayio_fourwire_obj_t board_display_obj;
|
||||
|
||||
|
@ -9,7 +9,7 @@ CHIP_FAMILY = samd21
|
||||
|
||||
INTERNAL_FLASH_FILESYSTEM = 1
|
||||
LONGINT_IMPL = NONE
|
||||
CIRCUITPY_SMALL_BUILD = 1
|
||||
CIRCUITPY_FULL_BUILD = 0
|
||||
|
||||
SUPEROPT_GC = 0
|
||||
|
||||
|
@ -11,4 +11,4 @@ EXTERNAL_FLASH_DEVICE_COUNT = 1
|
||||
EXTERNAL_FLASH_DEVICES = "GD25Q16C"
|
||||
LONGINT_IMPL = NONE
|
||||
|
||||
CIRCUITPY_SMALL_BUILD = 1
|
||||
CIRCUITPY_FULL_BUILD = 0
|
||||
|
@ -32,7 +32,6 @@
|
||||
#include "shared-bindings/time/__init__.h"
|
||||
#include "shared-module/displayio/__init__.h"
|
||||
#include "shared-module/displayio/mipi_constants.h"
|
||||
#include "tick.h"
|
||||
|
||||
displayio_fourwire_obj_t board_display_obj;
|
||||
|
||||
|
@ -8,7 +8,7 @@ CHIP_FAMILY = samd21
|
||||
|
||||
INTERNAL_FLASH_FILESYSTEM = 1
|
||||
LONGINT_IMPL = NONE
|
||||
CIRCUITPY_SMALL_BUILD = 1
|
||||
CIRCUITPY_FULL_BUILD = 0
|
||||
|
||||
CIRCUITPY_PEW = 1
|
||||
CIRCUITPY_ANALOGIO = 1
|
||||
|
@ -32,7 +32,6 @@
|
||||
#include "shared-bindings/displayio/FourWire.h"
|
||||
#include "shared-module/displayio/__init__.h"
|
||||
#include "shared-module/displayio/mipi_constants.h"
|
||||
#include "tick.h"
|
||||
|
||||
displayio_fourwire_obj_t board_display_obj;
|
||||
|
||||
|
@ -9,7 +9,7 @@ CHIP_FAMILY = samd51
|
||||
INTERNAL_FLASH_FILESYSTEM = 1
|
||||
LONGINT_IMPL = NONE
|
||||
|
||||
CIRCUITPY_SMALL_BUILD = 1
|
||||
CIRCUITPY_FULL_BUILD = 0
|
||||
# TODO: Turn off analogio for now for space reasons, but restore it
|
||||
# when frozen module gets smaller.
|
||||
CIRCUITPY_ANALOGIO = 0
|
||||
|
@ -20,7 +20,7 @@ CIRCUITPY_RTC = 0
|
||||
CIRCUITPY_SAMD = 0
|
||||
CIRCUITPY_USB_MIDI = 1
|
||||
CIRCUITPY_TOUCHIO = 0
|
||||
CIRCUITPY_SMALL_BUILD = 1
|
||||
CIRCUITPY_FULL_BUILD = 0
|
||||
# Make more room.
|
||||
SUPEROPT_GC = 0
|
||||
|
||||
|
@ -32,7 +32,6 @@
|
||||
#include "shared-module/displayio/__init__.h"
|
||||
#include "shared-module/displayio/mipi_constants.h"
|
||||
#include "supervisor/shared/board.h"
|
||||
#include "tick.h"
|
||||
|
||||
displayio_fourwire_obj_t board_display_obj;
|
||||
|
||||
|
@ -32,7 +32,6 @@
|
||||
#include "shared-module/displayio/__init__.h"
|
||||
#include "shared-module/displayio/mipi_constants.h"
|
||||
#include "supervisor/shared/board.h"
|
||||
#include "tick.h"
|
||||
|
||||
displayio_fourwire_obj_t board_display_obj;
|
||||
|
||||
|
@ -32,7 +32,6 @@
|
||||
#include "shared-module/displayio/__init__.h"
|
||||
#include "shared-module/displayio/mipi_constants.h"
|
||||
#include "supervisor/shared/board.h"
|
||||
#include "tick.h"
|
||||
|
||||
displayio_fourwire_obj_t board_display_obj;
|
||||
|
||||
|
@ -32,7 +32,6 @@
|
||||
#include "shared-module/displayio/__init__.h"
|
||||
#include "shared-module/displayio/mipi_constants.h"
|
||||
#include "supervisor/shared/board.h"
|
||||
#include "tick.h"
|
||||
|
||||
displayio_fourwire_obj_t board_display_obj;
|
||||
|
||||
|
@ -31,8 +31,6 @@
|
||||
#include "shared-module/displayio/__init__.h"
|
||||
#include "shared-module/displayio/mipi_constants.h"
|
||||
|
||||
#include "tick.h"
|
||||
|
||||
#define DELAY 0x80
|
||||
|
||||
uint8_t display_init_sequence[] = {
|
||||
|
@ -34,8 +34,6 @@
|
||||
#include "shared-module/displayio/__init__.h"
|
||||
#include "shared-module/displayio/mipi_constants.h"
|
||||
|
||||
#include "tick.h"
|
||||
|
||||
#define DELAY 0x80
|
||||
|
||||
uint8_t display_init_sequence[] = {
|
||||
|
@ -8,7 +8,7 @@ CHIP_FAMILY = samd21
|
||||
|
||||
INTERNAL_FLASH_FILESYSTEM = 1
|
||||
LONGINT_IMPL = NONE
|
||||
CIRCUITPY_SMALL_BUILD = 1
|
||||
CIRCUITPY_FULL_BUILD = 0
|
||||
|
||||
SUPEROPT_GC = 0
|
||||
|
||||
|
@ -8,6 +8,6 @@ CHIP_FAMILY = samd21
|
||||
|
||||
INTERNAL_FLASH_FILESYSTEM = 1
|
||||
LONGINT_IMPL = NONE
|
||||
CIRCUITPY_SMALL_BUILD = 1
|
||||
CIRCUITPY_FULL_BUILD = 0
|
||||
|
||||
SUPEROPT_GC = 0
|
||||
|
@ -8,7 +8,7 @@ CHIP_FAMILY = samd21
|
||||
|
||||
INTERNAL_FLASH_FILESYSTEM = 1
|
||||
LONGINT_IMPL = NONE
|
||||
CIRCUITPY_SMALL_BUILD = 1
|
||||
CIRCUITPY_FULL_BUILD = 0
|
||||
CIRCUITPY_I2CSLAVE = 1
|
||||
CIRCUITPY_TOUCHIO = 0
|
||||
|
||||
|
@ -9,5 +9,5 @@ CHIP_FAMILY = samd21
|
||||
INTERNAL_FLASH_FILESYSTEM = 1
|
||||
LONGINT_IMPL = NONE
|
||||
|
||||
CIRCUITPY_SMALL_BUILD = 1
|
||||
CIRCUITPY_FULL_BUILD = 0
|
||||
SUPEROPT_GC = 0
|
||||
|
@ -11,5 +11,5 @@ EXTERNAL_FLASH_DEVICE_COUNT = 1
|
||||
EXTERNAL_FLASH_DEVICES = "W25Q32FV"
|
||||
LONGINT_IMPL = MPZ
|
||||
|
||||
CIRCUITPY_SMALL_BUILD = 1
|
||||
CIRCUITPY_FULL_BUILD = 0
|
||||
SUPEROPT_GC = 0
|
||||
|
@ -8,6 +8,6 @@ CHIP_FAMILY = samd21
|
||||
|
||||
INTERNAL_FLASH_FILESYSTEM = 1
|
||||
LONGINT_IMPL = NONE
|
||||
CIRCUITPY_SMALL_BUILD = 1
|
||||
CIRCUITPY_FULL_BUILD = 0
|
||||
|
||||
SUPEROPT_GC = 0
|
||||
|
@ -8,6 +8,6 @@ CHIP_FAMILY = samd21
|
||||
|
||||
INTERNAL_FLASH_FILESYSTEM = 1
|
||||
LONGINT_IMPL = NONE
|
||||
CIRCUITPY_SMALL_BUILD = 1
|
||||
CIRCUITPY_FULL_BUILD = 0
|
||||
|
||||
SUPEROPT_GC = 0
|
||||
|
@ -8,7 +8,7 @@ CHIP_FAMILY = samd21
|
||||
|
||||
INTERNAL_FLASH_FILESYSTEM = 1
|
||||
LONGINT_IMPL = NONE
|
||||
CIRCUITPY_SMALL_BUILD = 1
|
||||
CIRCUITPY_FULL_BUILD = 0
|
||||
|
||||
SUPEROPT_GC = 0
|
||||
|
||||
|
@ -8,4 +8,4 @@ CHIP_FAMILY = samd21
|
||||
|
||||
INTERNAL_FLASH_FILESYSTEM = 1
|
||||
LONGINT_IMPL = NONE
|
||||
CIRCUITPY_SMALL_BUILD = 1
|
||||
CIRCUITPY_FULL_BUILD = 0
|
||||
|
@ -33,8 +33,6 @@
|
||||
#include "shared-module/displayio/mipi_constants.h"
|
||||
#include "shared-bindings/busio/SPI.h"
|
||||
|
||||
#include "tick.h"
|
||||
|
||||
displayio_fourwire_obj_t board_display_obj;
|
||||
|
||||
#define DELAY 0x80
|
||||
|
@ -9,7 +9,7 @@ CHIP_FAMILY = samd21
|
||||
|
||||
INTERNAL_FLASH_FILESYSTEM = 1
|
||||
LONGINT_IMPL = MPZ
|
||||
CIRCUITPY_SMALL_BUILD = 1
|
||||
CIRCUITPY_FULL_BUILD = 0
|
||||
|
||||
SUPEROPT_GC = 0
|
||||
|
||||
|
@ -9,7 +9,7 @@ CHIP_FAMILY = samd21
|
||||
|
||||
INTERNAL_FLASH_FILESYSTEM = 1
|
||||
LONGINT_IMPL = MPZ
|
||||
CIRCUITPY_SMALL_BUILD = 1
|
||||
CIRCUITPY_FULL_BUILD = 0
|
||||
|
||||
SUPEROPT_GC = 0
|
||||
|
||||
|
@ -49,7 +49,6 @@
|
||||
#include "samd/dma.h"
|
||||
|
||||
#include "audio_dma.h"
|
||||
#include "tick.h"
|
||||
|
||||
#define OVERSAMPLING 64
|
||||
#define SAMPLES_PER_BUFFER 32
|
||||
|
@ -45,6 +45,9 @@
|
||||
|
||||
#include "samd/sercom.h"
|
||||
|
||||
#define UART_DEBUG(...) (void)0
|
||||
// #define UART_DEBUG(...) mp_printf(&mp_plat_print __VA_OPT__(,) __VA_ARGS__)
|
||||
|
||||
// Do-nothing callback needed so that usart_async code will enable rx interrupts.
|
||||
// See comment below re usart_async_register_callback()
|
||||
static void usart_async_rxc_callback(const struct usart_async_descriptor *const descr) {
|
||||
|
@ -33,8 +33,6 @@
|
||||
#include "shared-bindings/digitalio/DigitalInOut.h"
|
||||
#include "shared-bindings/microcontroller/__init__.h"
|
||||
|
||||
#include "tick.h"
|
||||
|
||||
void common_hal_displayio_parallelbus_construct(displayio_parallelbus_obj_t* self,
|
||||
const mcu_pin_obj_t* data0, const mcu_pin_obj_t* command, const mcu_pin_obj_t* chip_select,
|
||||
const mcu_pin_obj_t* write, const mcu_pin_obj_t* read, const mcu_pin_obj_t* reset) {
|
||||
|
@ -24,11 +24,12 @@
|
||||
* THE SOFTWARE.
|
||||
*/
|
||||
|
||||
#include "shared-bindings/frequencyio/FrequencyIn.h"
|
||||
|
||||
#include <stdint.h>
|
||||
|
||||
#include "hal/include/hal_gpio.h"
|
||||
#include "atmel_start_pins.h"
|
||||
#include "supervisor/shared/translate.h"
|
||||
|
||||
#include "mpconfigport.h"
|
||||
#include "py/runtime.h"
|
||||
@ -41,11 +42,11 @@
|
||||
#include "samd/pins.h"
|
||||
#include "samd/external_interrupts.h"
|
||||
|
||||
#include "shared-bindings/frequencyio/FrequencyIn.h"
|
||||
#include "peripheral_clk_config.h"
|
||||
#include "hpl_gclk_config.h"
|
||||
|
||||
#include "tick.h"
|
||||
#include "shared-bindings/time/__init__.h"
|
||||
#include "supervisor/shared/translate.h"
|
||||
|
||||
#ifdef SAMD21
|
||||
#include "hpl/gclk/hpl_gclk_base.h"
|
||||
@ -88,9 +89,7 @@ void frequencyin_interrupt_handler(uint8_t index) {
|
||||
|
||||
if (!ref_tc->COUNT16.INTFLAG.bit.OVF) return; // false trigger
|
||||
|
||||
uint32_t current_us;
|
||||
uint64_t current_ms;
|
||||
current_tick(¤t_ms, ¤t_us);
|
||||
uint64_t current_ns = common_hal_time_monotonic_ns();
|
||||
|
||||
for (uint8_t i = 0; i <= (TC_INST_NUM - 1); i++) {
|
||||
if (active_frequencyins[i] != NULL) {
|
||||
@ -101,14 +100,12 @@ void frequencyin_interrupt_handler(uint8_t index) {
|
||||
if ((EIC->INTFLAG.reg & mask) == mask) {
|
||||
// Make sure capture_period has elapsed before we
|
||||
// record a new event count.
|
||||
if (current_ms - self->last_ms >= self->capture_period) {
|
||||
float new_factor = self->last_us + (1000 - current_us);
|
||||
if ((current_ns - self->last_ns) / 1000000 >= self->capture_period) {
|
||||
// ms difference will not need 64 bits. If we use 64 bits,
|
||||
// double-precision float routines are required, and we don't
|
||||
// want to include them because they're very large.
|
||||
self->factor = (uint32_t) (current_ms - self->last_ms) + (new_factor / 1000);
|
||||
self->last_ms = current_ms;
|
||||
self->last_us = current_us;
|
||||
self->factor = (uint32_t) (current_ns - self->last_ns) / 1000000.0;
|
||||
self->last_ns = current_ns;
|
||||
|
||||
#ifdef SAMD51
|
||||
tc->COUNT16.CTRLBSET.bit.CMD = TC_CTRLBSET_CMD_READSYNC_Val;
|
||||
@ -278,8 +275,7 @@ void common_hal_frequencyio_frequencyin_construct(frequencyio_frequencyin_obj_t*
|
||||
self->pin = pin->number;
|
||||
self->channel = pin->extint_channel;
|
||||
self->errored_too_fast = false;
|
||||
self->last_ms = 0;
|
||||
self->last_us = 1000;
|
||||
self->last_ns = 0;
|
||||
self->capture_period = capture_period;
|
||||
#ifdef SAMD21
|
||||
self->TC_IRQ = TC3_IRQn + timer_index;
|
||||
|
@ -38,8 +38,7 @@ typedef struct {
|
||||
uint8_t channel;
|
||||
uint8_t event_channel;
|
||||
uint32_t frequency;
|
||||
volatile uint64_t last_ms;
|
||||
volatile uint32_t last_us;
|
||||
volatile uint64_t last_ns;
|
||||
float factor;
|
||||
uint32_t capture_period;
|
||||
uint8_t TC_IRQ;
|
||||
|
@ -29,7 +29,7 @@
|
||||
|
||||
#include "shared-bindings/neopixel_write/__init__.h"
|
||||
|
||||
#include "tick.h"
|
||||
#include "supervisor/port.h"
|
||||
|
||||
#ifdef SAMD51
|
||||
#include "hri/hri_cmcc_d51.h"
|
||||
@ -91,8 +91,7 @@ static void neopixel_send_buffer_core(volatile uint32_t *clraddr, uint32_t pinMa
|
||||
"");
|
||||
}
|
||||
|
||||
uint64_t next_start_tick_ms = 0;
|
||||
uint32_t next_start_tick_us = 1000;
|
||||
uint64_t next_start_raw_ticks = 0;
|
||||
|
||||
void common_hal_neopixel_write(const digitalio_digitalinout_obj_t* digitalinout, uint8_t *pixels, uint32_t numBytes) {
|
||||
// This is adapted directly from the Adafruit NeoPixel library SAMD21G18A code:
|
||||
@ -101,9 +100,9 @@ void common_hal_neopixel_write(const digitalio_digitalinout_obj_t* digitalinout,
|
||||
uint32_t pinMask;
|
||||
PortGroup* port;
|
||||
|
||||
// This must be called while interrupts are on in case we're waiting for a
|
||||
// future ms tick.
|
||||
wait_until(next_start_tick_ms, next_start_tick_us);
|
||||
// Wait to make sure we don't append onto the last transmission. This should only be a tick or
|
||||
// two.
|
||||
while (port_get_raw_ticks(NULL) < next_start_raw_ticks) {}
|
||||
|
||||
// Turn off interrupts of any kind during timing-sensitive code.
|
||||
mp_hal_disable_all_interrupts();
|
||||
@ -144,15 +143,8 @@ void common_hal_neopixel_write(const digitalio_digitalinout_obj_t* digitalinout,
|
||||
|
||||
#endif
|
||||
|
||||
// ticks_ms may be out of date at this point because we stopped the
|
||||
// interrupt. We'll risk it anyway.
|
||||
current_tick(&next_start_tick_ms, &next_start_tick_us);
|
||||
if (next_start_tick_us < 100) {
|
||||
next_start_tick_ms += 1;
|
||||
next_start_tick_us = 100 - next_start_tick_us;
|
||||
} else {
|
||||
next_start_tick_us -= 100;
|
||||
}
|
||||
// Update the next start.
|
||||
next_start_raw_ticks = port_get_raw_ticks(NULL) + 4;
|
||||
|
||||
// Turn on interrupts after timing-sensitive code.
|
||||
mp_hal_enable_all_interrupts();
|
||||
|
@ -41,10 +41,9 @@
|
||||
#include "samd/pins.h"
|
||||
#include "shared-bindings/microcontroller/__init__.h"
|
||||
#include "shared-bindings/ps2io/Ps2.h"
|
||||
#include "supervisor/port.h"
|
||||
#include "supervisor/shared/translate.h"
|
||||
|
||||
#include "tick.h"
|
||||
|
||||
#define STATE_IDLE 0
|
||||
#define STATE_RECV 1
|
||||
#define STATE_RECV_PARITY 2
|
||||
@ -168,24 +167,21 @@ static void delay_us(uint32_t t) {
|
||||
|
||||
void ps2_interrupt_handler(uint8_t channel) {
|
||||
// Grab the current time first.
|
||||
uint32_t current_us;
|
||||
uint64_t current_ms;
|
||||
current_tick(¤t_ms, ¤t_us);
|
||||
uint64_t current_tick = port_get_raw_ticks(NULL);
|
||||
|
||||
ps2io_ps2_obj_t* self = get_eic_channel_data(channel);
|
||||
int data_bit = gpio_get_pin_level(self->data_pin) ? 1 : 0;
|
||||
|
||||
// test for timeout
|
||||
if (self->state != STATE_IDLE) {
|
||||
int64_t diff_ms = current_ms - self->last_int_ms;
|
||||
if (diff_ms >= 2) { // a.k.a. > 1.001ms
|
||||
int64_t diff_ms = current_tick - self->last_raw_ticks;
|
||||
if (diff_ms > 1) { // a.k.a. > 1.001ms
|
||||
self->last_errors |= ERROR_TIMEOUT;
|
||||
self->state = STATE_IDLE;
|
||||
}
|
||||
}
|
||||
|
||||
self->last_int_us = current_us;
|
||||
self->last_int_ms = current_ms;
|
||||
self->last_raw_ticks = current_tick;
|
||||
|
||||
if (self->state == STATE_IDLE) {
|
||||
self->bits = 0;
|
||||
|
@ -39,8 +39,7 @@ typedef struct {
|
||||
uint8_t data_pin;
|
||||
|
||||
uint8_t state;
|
||||
uint64_t last_int_ms;
|
||||
uint32_t last_int_us;
|
||||
uint64_t last_raw_ticks;
|
||||
|
||||
uint16_t bits;
|
||||
bool parity;
|
||||
|
@ -34,15 +34,31 @@
|
||||
#include "background.h"
|
||||
#include "eic_handler.h"
|
||||
#include "mpconfigport.h"
|
||||
#include "timer_handler.h"
|
||||
#include "py/gc.h"
|
||||
#include "py/runtime.h"
|
||||
#include "samd/external_interrupts.h"
|
||||
#include "samd/pins.h"
|
||||
#include "samd/timers.h"
|
||||
#include "shared-bindings/microcontroller/__init__.h"
|
||||
#include "shared-bindings/pulseio/PulseIn.h"
|
||||
#include "supervisor/shared/translate.h"
|
||||
|
||||
#include "tick.h"
|
||||
// This timer is shared amongst all PulseIn objects as a higher resolution clock.
|
||||
static uint8_t refcount = 0;
|
||||
static uint8_t pulsein_tc_index = 0xff;
|
||||
|
||||
volatile static uint32_t overflow_count = 0;
|
||||
|
||||
void pulsein_timer_interrupt_handler(uint8_t index) {
|
||||
if (index != pulsein_tc_index) return;
|
||||
overflow_count++;
|
||||
Tc* tc = tc_insts[index];
|
||||
if (!tc->COUNT16.INTFLAG.bit.OVF) return;
|
||||
|
||||
// Clear the interrupt bit.
|
||||
tc->COUNT16.INTFLAG.reg = TC_INTFLAG_OVF;
|
||||
}
|
||||
|
||||
static void pulsein_set_config(pulseio_pulsein_obj_t* self, bool first_edge) {
|
||||
uint32_t sense_setting;
|
||||
@ -61,13 +77,15 @@ static void pulsein_set_config(pulseio_pulsein_obj_t* self, bool first_edge) {
|
||||
|
||||
void pulsein_interrupt_handler(uint8_t channel) {
|
||||
// Grab the current time first.
|
||||
uint32_t current_us;
|
||||
uint64_t current_ms;
|
||||
current_tick(¤t_ms, ¤t_us);
|
||||
uint32_t current_overflow = overflow_count;
|
||||
Tc* tc = tc_insts[pulsein_tc_index];
|
||||
#ifdef SAMD51
|
||||
tc->COUNT16.CTRLBSET.reg = TC_CTRLBSET_CMD_READSYNC;
|
||||
while (tc->COUNT16.SYNCBUSY.bit.COUNT == 1 ||
|
||||
tc->COUNT16.CTRLBSET.bit.CMD == TC_CTRLBSET_CMD_READSYNC_Val) {}
|
||||
#endif
|
||||
uint32_t current_count = tc->COUNT16.COUNT.reg;
|
||||
|
||||
// current_tick gives us the remaining us until the next tick but we want the number since the
|
||||
// last ms.
|
||||
current_us = 1000 - current_us;
|
||||
pulseio_pulsein_obj_t* self = get_eic_channel_data(channel);
|
||||
if (!background_tasks_ok() || self->errored_too_fast) {
|
||||
self->errored_too_fast = true;
|
||||
@ -78,17 +96,17 @@ void pulsein_interrupt_handler(uint8_t channel) {
|
||||
self->first_edge = false;
|
||||
pulsein_set_config(self, false);
|
||||
} else {
|
||||
uint32_t ms_diff = current_ms - self->last_ms;
|
||||
uint16_t us_diff = current_us - self->last_us;
|
||||
uint32_t total_diff = us_diff;
|
||||
if (self->last_us > current_us) {
|
||||
total_diff = 1000 + current_us - self->last_us;
|
||||
if (ms_diff > 1) {
|
||||
total_diff += (ms_diff - 1) * 1000;
|
||||
}
|
||||
} else {
|
||||
total_diff += ms_diff * 1000;
|
||||
// Sometimes we beat the overflow interrupt so just fudge overflow in
|
||||
// that case.
|
||||
if (current_count < self->last_count && current_overflow == self->last_overflow) {
|
||||
current_overflow += 1;
|
||||
}
|
||||
uint32_t total_diff = current_count + 0xffff * (current_overflow - self->last_overflow) - self->last_count;
|
||||
// The SAMD21 clock is 48MHz. We prescale it to 3MHz so // 3 here.
|
||||
#ifdef SAMD21
|
||||
total_diff /= 3;
|
||||
#endif
|
||||
// Cap duration at 16 bits.
|
||||
uint16_t duration = 0xffff;
|
||||
if (total_diff < duration) {
|
||||
duration = total_diff;
|
||||
@ -102,8 +120,14 @@ void pulsein_interrupt_handler(uint8_t channel) {
|
||||
self->start++;
|
||||
}
|
||||
}
|
||||
self->last_ms = current_ms;
|
||||
self->last_us = current_us;
|
||||
self->last_overflow = current_overflow;
|
||||
self->last_count = current_count;
|
||||
}
|
||||
|
||||
void pulsein_reset() {
|
||||
refcount = 0;
|
||||
pulsein_tc_index = 0xff;
|
||||
overflow_count = 0;
|
||||
}
|
||||
|
||||
void common_hal_pulseio_pulsein_construct(pulseio_pulsein_obj_t* self,
|
||||
@ -126,10 +150,62 @@ void common_hal_pulseio_pulsein_construct(pulseio_pulsein_obj_t* self,
|
||||
self->start = 0;
|
||||
self->len = 0;
|
||||
self->first_edge = true;
|
||||
self->last_us = 0;
|
||||
self->last_ms = 0;
|
||||
self->errored_too_fast = false;
|
||||
|
||||
if (refcount == 0) {
|
||||
// Find a spare timer.
|
||||
Tc *tc = NULL;
|
||||
int8_t index = TC_INST_NUM - 1;
|
||||
for (; index >= 0; index--) {
|
||||
if (tc_insts[index]->COUNT16.CTRLA.bit.ENABLE == 0) {
|
||||
tc = tc_insts[index];
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (tc == NULL) {
|
||||
mp_raise_RuntimeError(translate("All timers in use"));
|
||||
}
|
||||
|
||||
pulsein_tc_index = index;
|
||||
|
||||
set_timer_handler(true, index, TC_HANDLER_PULSEIN);
|
||||
#ifdef SAMD21
|
||||
// We use GCLK0 for SAMD21 which is 48MHz. We prescale it to 3MHz.
|
||||
turn_on_clocks(true, index, 0);
|
||||
#endif
|
||||
#ifdef SAMD51
|
||||
// We use GCLK5 for SAMD51 because it runs at 2MHz and we can use it for a 1MHz clock,
|
||||
// 1us per tick.
|
||||
turn_on_clocks(true, index, 5);
|
||||
#endif
|
||||
|
||||
|
||||
#ifdef SAMD21
|
||||
tc->COUNT16.CTRLA.reg = TC_CTRLA_MODE_COUNT16 |
|
||||
TC_CTRLA_PRESCALER_DIV16 |
|
||||
TC_CTRLA_WAVEGEN_NFRQ;
|
||||
#endif
|
||||
#ifdef SAMD51
|
||||
tc_reset(tc);
|
||||
tc_set_enable(tc, false);
|
||||
tc->COUNT16.CTRLA.reg = TC_CTRLA_MODE_COUNT16 | TC_CTRLA_PRESCALER_DIV2;
|
||||
tc->COUNT16.WAVE.reg = TC_WAVE_WAVEGEN_NFRQ;
|
||||
#endif
|
||||
|
||||
tc_set_enable(tc, true);
|
||||
|
||||
// Clear our interrupt in case it was set earlier
|
||||
tc->COUNT16.INTFLAG.reg = TC_INTFLAG_OVF;
|
||||
tc->COUNT16.INTENSET.reg = TC_INTENSET_OVF;
|
||||
tc_enable_interrupts(pulsein_tc_index);
|
||||
tc->COUNT16.CTRLBSET.reg = TC_CTRLBSET_CMD_RETRIGGER;
|
||||
|
||||
overflow_count = 0;
|
||||
}
|
||||
refcount++;
|
||||
self->last_overflow = overflow_count;
|
||||
self->last_count = 0;
|
||||
|
||||
set_eic_channel_data(pin->extint_channel, (void*) self);
|
||||
|
||||
// Check to see if the EIC is enabled and start it up if its not.'
|
||||
@ -158,6 +234,12 @@ void common_hal_pulseio_pulsein_deinit(pulseio_pulsein_obj_t* self) {
|
||||
set_eic_handler(self->channel, EIC_HANDLER_NO_INTERRUPT);
|
||||
turn_off_eic_channel(self->channel);
|
||||
reset_pin_number(self->pin);
|
||||
|
||||
refcount--;
|
||||
if (refcount == 0) {
|
||||
tc_reset(tc_insts[pulsein_tc_index]);
|
||||
pulsein_tc_index = 0xff;
|
||||
}
|
||||
self->pin = NO_PIN;
|
||||
}
|
||||
|
||||
@ -185,8 +267,8 @@ void common_hal_pulseio_pulsein_resume(pulseio_pulsein_obj_t* self,
|
||||
|
||||
// Reconfigure the pin and make sure its set to detect the first edge.
|
||||
self->first_edge = true;
|
||||
self->last_ms = 0;
|
||||
self->last_us = 0;
|
||||
self->last_overflow = 0;
|
||||
self->last_count = 0;
|
||||
gpio_set_pin_function(self->pin, GPIO_PIN_FUNCTION_A);
|
||||
uint32_t mask = 1 << self->channel;
|
||||
// Clear previous interrupt state and re-enable it.
|
||||
|
@ -41,13 +41,14 @@ typedef struct {
|
||||
volatile uint16_t start;
|
||||
volatile uint16_t len;
|
||||
volatile bool first_edge;
|
||||
volatile uint64_t last_ms;
|
||||
volatile uint16_t last_us;
|
||||
volatile uint32_t last_overflow;
|
||||
volatile uint16_t last_count;
|
||||
volatile bool errored_too_fast;
|
||||
} pulseio_pulsein_obj_t;
|
||||
|
||||
void pulsein_reset(void);
|
||||
|
||||
void pulsein_interrupt_handler(uint8_t channel);
|
||||
void pulsein_timer_interrupt_handler(uint8_t index);
|
||||
|
||||
#endif // MICROPY_INCLUDED_ATMEL_SAMD_COMMON_HAL_PULSEIO_PULSEIN_H
|
||||
|
@ -30,76 +30,47 @@
|
||||
#include <hal_init.h>
|
||||
#include <hpl_gclk_base.h>
|
||||
#include <hpl_pm_base.h>
|
||||
#include <hal_calendar.h>
|
||||
|
||||
#include "py/obj.h"
|
||||
#include "py/runtime.h"
|
||||
#include "lib/timeutils/timeutils.h"
|
||||
#include "shared-bindings/rtc/__init__.h"
|
||||
#include "supervisor/port.h"
|
||||
#include "supervisor/shared/translate.h"
|
||||
|
||||
static struct calendar_descriptor calendar;
|
||||
|
||||
void rtc_init(void) {
|
||||
#ifdef SAMD21
|
||||
_gclk_enable_channel(RTC_GCLK_ID, CONF_GCLK_RTC_SRC);
|
||||
#endif
|
||||
#ifdef SAMD51
|
||||
hri_mclk_set_APBAMASK_RTC_bit(MCLK);
|
||||
#endif
|
||||
calendar_init(&calendar, RTC);
|
||||
calendar_set_baseyear(&calendar, 2000);
|
||||
calendar_enable(&calendar);
|
||||
}
|
||||
// This is the time in seconds since 2000 that the RTC was started.
|
||||
// TODO: Change the offset to ticks so that it can be a subsecond adjustment.
|
||||
static uint32_t rtc_offset = 0;
|
||||
|
||||
void common_hal_rtc_get_time(timeutils_struct_time_t *tm) {
|
||||
struct calendar_date_time datetime;
|
||||
calendar_get_date_time(&calendar, &datetime);
|
||||
|
||||
tm->tm_year = datetime.date.year;
|
||||
tm->tm_mon = datetime.date.month;
|
||||
tm->tm_mday = datetime.date.day;
|
||||
tm->tm_hour = datetime.time.hour;
|
||||
tm->tm_min = datetime.time.min;
|
||||
tm->tm_sec = datetime.time.sec;
|
||||
uint64_t ticks_s = port_get_raw_ticks(NULL) / 1024;
|
||||
timeutils_seconds_since_2000_to_struct_time(rtc_offset + ticks_s, tm);
|
||||
}
|
||||
|
||||
void common_hal_rtc_set_time(timeutils_struct_time_t *tm) {
|
||||
// Reset prescaler to increase initial precision. Otherwise we can be up to 1 second off already.
|
||||
uint32_t freqcorr = hri_rtcmode0_read_FREQCORR_reg(calendar.device.hw);
|
||||
calendar_deinit(&calendar);
|
||||
rtc_init();
|
||||
hri_rtcmode0_write_FREQCORR_reg(calendar.device.hw, freqcorr);
|
||||
|
||||
struct calendar_date date = {
|
||||
.year = tm->tm_year,
|
||||
.month = tm->tm_mon,
|
||||
.day = tm->tm_mday,
|
||||
};
|
||||
calendar_set_date(&calendar, &date);
|
||||
|
||||
struct calendar_time time = {
|
||||
.hour = tm->tm_hour,
|
||||
.min = tm->tm_min,
|
||||
.sec = tm->tm_sec,
|
||||
};
|
||||
calendar_set_time(&calendar, &time);
|
||||
uint64_t ticks_s = port_get_raw_ticks(NULL) / 1024;
|
||||
uint32_t epoch_s = timeutils_seconds_since_2000(
|
||||
tm->tm_year, tm->tm_mon, tm->tm_mday, tm->tm_hour, tm->tm_min, tm->tm_sec
|
||||
);
|
||||
rtc_offset = epoch_s - ticks_s;
|
||||
}
|
||||
|
||||
// A positive value speeds up the clock by removing clock cycles.
|
||||
int common_hal_rtc_get_calibration(void) {
|
||||
int calibration = hri_rtcmode0_read_FREQCORR_VALUE_bf(calendar.device.hw);
|
||||
int calibration = hri_rtcmode0_read_FREQCORR_VALUE_bf(RTC);
|
||||
|
||||
if (!hri_rtcmode0_get_FREQCORR_SIGN_bit(calendar.device.hw))
|
||||
if (!hri_rtcmode0_get_FREQCORR_SIGN_bit(RTC)) {
|
||||
calibration = -calibration;
|
||||
}
|
||||
|
||||
return calibration;
|
||||
}
|
||||
|
||||
void common_hal_rtc_set_calibration(int calibration) {
|
||||
if (calibration > 127 || calibration < -127)
|
||||
if (calibration > 127 || calibration < -127) {
|
||||
mp_raise_ValueError(translate("calibration value out of range +/-127"));
|
||||
|
||||
hri_rtcmode0_write_FREQCORR_SIGN_bit(calendar.device.hw, calibration < 0 ? 0 : 1);
|
||||
hri_rtcmode0_write_FREQCORR_VALUE_bf(calendar.device.hw, abs(calibration));
|
||||
}
|
||||
|
||||
hri_rtcmode0_write_FREQCORR_SIGN_bit(RTC, calibration < 0 ? 0 : 1);
|
||||
hri_rtcmode0_write_FREQCORR_VALUE_bf(RTC, abs(calibration));
|
||||
}
|
||||
|
@ -27,6 +27,4 @@
|
||||
#ifndef MICROPY_INCLUDED_ATMEL_SAMD_COMMON_HAL_RTC_RTC_H
|
||||
#define MICROPY_INCLUDED_ATMEL_SAMD_COMMON_HAL_RTC_RTC_H
|
||||
|
||||
extern void rtc_init(void);
|
||||
|
||||
#endif // MICROPY_INCLUDED_ATMEL_SAMD_COMMON_HAL_RTC_RTC_H
|
||||
|
@ -42,7 +42,6 @@
|
||||
#include "samd/clocks.h"
|
||||
#include "samd/pins.h"
|
||||
|
||||
#include "tick.h"
|
||||
#include "adafruit_ptc.h"
|
||||
|
||||
bool touch_enabled = false;
|
||||
|
@ -64,22 +64,12 @@ ifndef CIRCUITPY_SAMD
|
||||
CIRCUITPY_SAMD = 1
|
||||
endif
|
||||
|
||||
ifndef CIRCUITPY_ULAB
|
||||
ifneq ($(CIRCUITPY_SMALL_BUILD),1)
|
||||
CIRCUITPY_ULAB = 1
|
||||
endif
|
||||
endif
|
||||
|
||||
ifndef CIRCUITPY_RGBMATRIX
|
||||
ifneq ($(CIRCUITPY_SMALL_BUILD),1)
|
||||
CIRCUITPY_RGBMATRIX = 1
|
||||
endif
|
||||
CIRCUITPY_RGBMATRIX = $(CIRCUITPY_FULL_BUILD)
|
||||
endif
|
||||
|
||||
ifndef CIRCUITPY_FRAMEBUFFERIO
|
||||
ifneq ($(CIRCUITPY_SMALL_BUILD),1)
|
||||
CIRCUITPY_FRAMEBUFFERIO = 1
|
||||
endif
|
||||
CIRCUITPY_FRAMEBUFFERIO = $(CIRCUITPY_FULL_BUILD)
|
||||
endif
|
||||
|
||||
endif # samd51
|
||||
|
@ -49,21 +49,6 @@
|
||||
|
||||
extern uint32_t common_hal_mcu_processor_get_frequency(void);
|
||||
|
||||
void mp_hal_delay_ms(mp_uint_t delay) {
|
||||
uint64_t start_tick = supervisor_ticks_ms64();
|
||||
uint64_t duration = 0;
|
||||
while (duration < delay) {
|
||||
RUN_BACKGROUND_TASKS;
|
||||
// Check to see if we've been CTRL-Ced by autoreload or the user.
|
||||
if(MP_STATE_VM(mp_pending_exception) == MP_OBJ_FROM_PTR(&MP_STATE_VM(mp_kbd_exception)) ||
|
||||
MP_STATE_VM(mp_pending_exception) == MP_OBJ_FROM_PTR(&MP_STATE_VM(mp_reload_exception))) {
|
||||
break;
|
||||
}
|
||||
duration = (supervisor_ticks_ms64() - start_tick);
|
||||
// TODO(tannewt): Go to sleep for a little while while we wait.
|
||||
}
|
||||
}
|
||||
|
||||
// Use mp_hal_delay_us() for timing of less than 1ms.
|
||||
// Do a simple timing loop to wait for a certain number of microseconds.
|
||||
// Can be used when interrupts are disabled, which makes tick_delay() unreliable.
|
||||
|
@ -34,9 +34,8 @@
|
||||
#include "supervisor/shared/tick.h"
|
||||
|
||||
// Global millisecond tick count (driven by SysTick interrupt).
|
||||
static inline mp_uint_t mp_hal_ticks_ms(void) {
|
||||
return supervisor_ticks_ms32();
|
||||
}
|
||||
#define mp_hal_ticks_ms() ((mp_uint_t) supervisor_ticks_ms32())
|
||||
|
||||
// Number of bytes in receive buffer
|
||||
volatile uint8_t usb_rx_count;
|
||||
volatile bool mp_cdc_enabled;
|
||||
|
@ -1 +1 @@
|
||||
Subproject commit f528240c2a4c2d7a39de786f1aa56895c12227b4
|
||||
Subproject commit 6b531fc923d9f02b14bd731a5f584ddf716e8773
|
@ -41,6 +41,7 @@
|
||||
#endif
|
||||
#include "hal/include/hal_flash.h"
|
||||
|
||||
#include "supervisor/flash.h"
|
||||
#include "supervisor/shared/rgb_led_status.h"
|
||||
|
||||
static struct flash_descriptor supervisor_flash_desc;
|
||||
@ -73,7 +74,7 @@ uint32_t supervisor_flash_get_block_count(void) {
|
||||
return INTERNAL_FLASH_PART1_NUM_BLOCKS;
|
||||
}
|
||||
|
||||
void supervisor_flash_flush(void) {
|
||||
void port_internal_flash_flush(void) {
|
||||
}
|
||||
|
||||
void supervisor_flash_release_cache(void) {
|
||||
|
@ -32,6 +32,7 @@
|
||||
|
||||
// ASF 4
|
||||
#include "atmel_start_pins.h"
|
||||
#include "peripheral_clk_config.h"
|
||||
#include "hal/include/hal_delay.h"
|
||||
#include "hal/include/hal_flash.h"
|
||||
#include "hal/include/hal_gpio.h"
|
||||
@ -70,10 +71,10 @@
|
||||
#include "samd/dma.h"
|
||||
#include "shared-bindings/rtc/__init__.h"
|
||||
#include "reset.h"
|
||||
#include "tick.h"
|
||||
|
||||
#include "supervisor/shared/safe_mode.h"
|
||||
#include "supervisor/shared/stack.h"
|
||||
#include "supervisor/shared/tick.h"
|
||||
|
||||
#include "tusb.h"
|
||||
|
||||
@ -132,6 +133,53 @@ static void save_usb_clock_calibration(void) {
|
||||
}
|
||||
#endif
|
||||
|
||||
static void rtc_init(void) {
|
||||
#ifdef SAMD21
|
||||
_gclk_enable_channel(RTC_GCLK_ID, GCLK_CLKCTRL_GEN_GCLK2_Val);
|
||||
RTC->MODE0.CTRL.bit.SWRST = true;
|
||||
while (RTC->MODE0.CTRL.bit.SWRST != 0) {}
|
||||
|
||||
RTC->MODE0.CTRL.reg = RTC_MODE0_CTRL_ENABLE |
|
||||
RTC_MODE0_CTRL_MODE_COUNT32 |
|
||||
RTC_MODE0_CTRL_PRESCALER_DIV2;
|
||||
#endif
|
||||
#ifdef SAMD51
|
||||
hri_mclk_set_APBAMASK_RTC_bit(MCLK);
|
||||
RTC->MODE0.CTRLA.bit.SWRST = true;
|
||||
while (RTC->MODE0.SYNCBUSY.bit.SWRST != 0) {}
|
||||
|
||||
RTC->MODE0.CTRLA.reg = RTC_MODE0_CTRLA_ENABLE |
|
||||
RTC_MODE0_CTRLA_MODE_COUNT32 |
|
||||
RTC_MODE0_CTRLA_PRESCALER_DIV2 |
|
||||
RTC_MODE0_CTRLA_COUNTSYNC;
|
||||
#endif
|
||||
|
||||
RTC->MODE0.INTENSET.reg = RTC_MODE0_INTENSET_OVF;
|
||||
|
||||
// Set all peripheral interrupt priorities to the lowest priority by default.
|
||||
for (uint16_t i = 0; i < PERIPH_COUNT_IRQn; i++) {
|
||||
NVIC_SetPriority(i, (1UL << __NVIC_PRIO_BITS) - 1UL);
|
||||
}
|
||||
// Bump up the rtc interrupt so nothing else interferes with timekeeping.
|
||||
NVIC_SetPriority(RTC_IRQn, 0);
|
||||
#ifdef SAMD21
|
||||
NVIC_SetPriority(USB_IRQn, 1);
|
||||
#endif
|
||||
|
||||
#ifdef SAMD51
|
||||
NVIC_SetPriority(USB_0_IRQn, 1);
|
||||
NVIC_SetPriority(USB_1_IRQn, 1);
|
||||
NVIC_SetPriority(USB_2_IRQn, 1);
|
||||
NVIC_SetPriority(USB_3_IRQn, 1);
|
||||
#endif
|
||||
NVIC_ClearPendingIRQ(RTC_IRQn);
|
||||
NVIC_EnableIRQ(RTC_IRQn);
|
||||
#if CIRCUITPY_RTC
|
||||
rtc_reset();
|
||||
#endif
|
||||
|
||||
}
|
||||
|
||||
safe_mode_t port_init(void) {
|
||||
#if defined(SAMD21)
|
||||
|
||||
@ -220,12 +268,7 @@ safe_mode_t port_init(void) {
|
||||
clock_init(BOARD_HAS_CRYSTAL, DEFAULT_DFLL48M_FINE_CALIBRATION);
|
||||
#endif
|
||||
|
||||
// Configure millisecond timer initialization.
|
||||
tick_init();
|
||||
|
||||
#if CIRCUITPY_RTC
|
||||
rtc_init();
|
||||
#endif
|
||||
|
||||
init_shared_dma();
|
||||
|
||||
@ -267,6 +310,7 @@ void reset_port(void) {
|
||||
#endif
|
||||
eic_reset();
|
||||
#if CIRCUITPY_PULSEIO
|
||||
pulsein_reset();
|
||||
pulseout_reset();
|
||||
pwmout_reset();
|
||||
#endif
|
||||
@ -275,9 +319,6 @@ void reset_port(void) {
|
||||
analogin_reset();
|
||||
analogout_reset();
|
||||
#endif
|
||||
#if CIRCUITPY_RTC
|
||||
rtc_reset();
|
||||
#endif
|
||||
|
||||
reset_gclks();
|
||||
|
||||
@ -352,6 +393,108 @@ uint32_t port_get_saved_word(void) {
|
||||
return *safe_word;
|
||||
}
|
||||
|
||||
// TODO: Move this to an RTC backup register so we can preserve it when only the BACKUP power domain
|
||||
// is enabled.
|
||||
static volatile uint64_t overflowed_ticks = 0;
|
||||
static volatile bool _ticks_enabled = false;
|
||||
|
||||
void RTC_Handler(void) {
|
||||
uint32_t intflag = RTC->MODE0.INTFLAG.reg;
|
||||
if (intflag & RTC_MODE0_INTFLAG_OVF) {
|
||||
RTC->MODE0.INTFLAG.reg = RTC_MODE0_INTFLAG_OVF;
|
||||
// Our RTC is 32 bits and we're clocking it at 16.384khz which is 16 (2 ** 4) subticks per
|
||||
// tick.
|
||||
overflowed_ticks += (1L<< (32 - 4));
|
||||
#ifdef SAMD51
|
||||
} else if (intflag & RTC_MODE0_INTFLAG_PER2) {
|
||||
RTC->MODE0.INTFLAG.reg = RTC_MODE0_INTFLAG_PER2;
|
||||
// Do things common to all ports when the tick occurs
|
||||
supervisor_tick();
|
||||
#endif
|
||||
} else if (intflag & RTC_MODE0_INTFLAG_CMP0) {
|
||||
// Clear the interrupt because we may have hit a sleep and _ticks_enabled
|
||||
RTC->MODE0.INTFLAG.reg = RTC_MODE0_INTFLAG_CMP0;
|
||||
#ifdef SAMD21
|
||||
if (_ticks_enabled) {
|
||||
// Do things common to all ports when the tick occurs.
|
||||
supervisor_tick();
|
||||
// Check _ticks_enabled again because a tick handler may have turned it off.
|
||||
if (_ticks_enabled) {
|
||||
port_interrupt_after_ticks(1);
|
||||
}
|
||||
}
|
||||
#endif
|
||||
#ifdef SAMD51
|
||||
RTC->MODE0.INTENCLR.reg = RTC_MODE0_INTENCLR_CMP0;
|
||||
#endif
|
||||
}
|
||||
}
|
||||
|
||||
static uint32_t _get_count(void) {
|
||||
#ifdef SAMD51
|
||||
while ((RTC->MODE0.SYNCBUSY.reg & (RTC_MODE0_SYNCBUSY_COUNTSYNC | RTC_MODE0_SYNCBUSY_COUNT)) != 0) {}
|
||||
#endif
|
||||
#ifdef SAMD21
|
||||
while (RTC->MODE0.STATUS.bit.SYNCBUSY != 0) {}
|
||||
#endif
|
||||
|
||||
return RTC->MODE0.COUNT.reg;
|
||||
}
|
||||
|
||||
uint64_t port_get_raw_ticks(uint8_t* subticks) {
|
||||
uint32_t current_ticks = _get_count();
|
||||
if (subticks != NULL) {
|
||||
*subticks = (current_ticks % 16) * 2;
|
||||
}
|
||||
|
||||
return overflowed_ticks + current_ticks / 16;
|
||||
}
|
||||
|
||||
// Enable 1/1024 second tick.
|
||||
void port_enable_tick(void) {
|
||||
#ifdef SAMD51
|
||||
// PER2 will generate an interrupt every 32 ticks of the source 32.768 clock.
|
||||
RTC->MODE0.INTENSET.reg = RTC_MODE0_INTENSET_PER2;
|
||||
#endif
|
||||
#ifdef SAMD21
|
||||
_ticks_enabled = true;
|
||||
port_interrupt_after_ticks(1);
|
||||
#endif
|
||||
}
|
||||
|
||||
// Disable 1/1024 second tick.
|
||||
void port_disable_tick(void) {
|
||||
#ifdef SAMD51
|
||||
RTC->MODE0.INTENCLR.reg = RTC_MODE0_INTENCLR_PER2;
|
||||
#endif
|
||||
#ifdef SAMD21
|
||||
_ticks_enabled = false;
|
||||
RTC->MODE0.INTENCLR.reg = RTC_MODE0_INTENCLR_CMP0;
|
||||
#endif
|
||||
}
|
||||
|
||||
void port_interrupt_after_ticks(uint32_t ticks) {
|
||||
uint32_t current_ticks = _get_count();
|
||||
if (ticks > 1 << 28) {
|
||||
// We'll interrupt sooner with an overflow.
|
||||
return;
|
||||
}
|
||||
RTC->MODE0.COMP[0].reg = current_ticks + (ticks << 4);
|
||||
RTC->MODE0.INTFLAG.reg = RTC_MODE0_INTFLAG_CMP0;
|
||||
RTC->MODE0.INTENSET.reg = RTC_MODE0_INTENSET_CMP0;
|
||||
}
|
||||
|
||||
void port_sleep_until_interrupt(void) {
|
||||
#ifdef SAMD51
|
||||
// Clear the FPU interrupt because it can prevent us from sleeping.
|
||||
if (__get_FPSCR() & ~(0x9f)) {
|
||||
__set_FPSCR(__get_FPSCR() & ~(0x9f));
|
||||
(void) __get_FPSCR();
|
||||
}
|
||||
#endif
|
||||
__WFI();
|
||||
}
|
||||
|
||||
/**
|
||||
* \brief Default interrupt handler for unused IRQs.
|
||||
*/
|
||||
|
@ -28,6 +28,7 @@
|
||||
#include "hpl/pm/hpl_pm_base.h"
|
||||
#include "hpl/gclk/hpl_gclk_base.h"
|
||||
#include "hal_gpio.h"
|
||||
#include "lib/tinyusb/src/device/usbd.h"
|
||||
|
||||
void init_usb_hardware(void) {
|
||||
#ifdef SAMD21
|
||||
@ -57,3 +58,27 @@ void init_usb_hardware(void) {
|
||||
gpio_set_pin_function(PIN_PA25, PINMUX_PA25H_USB_DP);
|
||||
#endif
|
||||
}
|
||||
|
||||
#ifdef SAMD21
|
||||
void USB_Handler(void) {
|
||||
tud_int_handler(0);
|
||||
}
|
||||
#endif
|
||||
|
||||
#ifdef SAMD51
|
||||
void USB_0_Handler (void) {
|
||||
tud_int_handler(0);
|
||||
}
|
||||
|
||||
void USB_1_Handler (void) {
|
||||
tud_int_handler(0);
|
||||
}
|
||||
|
||||
void USB_2_Handler (void) {
|
||||
tud_int_handler(0);
|
||||
}
|
||||
|
||||
void USB_3_Handler (void) {
|
||||
tud_int_handler(0);
|
||||
}
|
||||
#endif
|
||||
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
x
Reference in New Issue
Block a user