Merge remote-tracking branch 'origin/master' into circuitpython/nickzoic/703-wiznet-5500-native
This commit is contained in:
commit
f6482699a0
32
.travis.yml
32
.travis.yml
@ -4,18 +4,26 @@ language: c
|
||||
compiler:
|
||||
- gcc
|
||||
git:
|
||||
depth: 1
|
||||
depth: 6
|
||||
|
||||
# Put a representative board from each port or sub-port near the top
|
||||
# to determine more quickly whether that port is going to build or not.
|
||||
# Each item under 'env' is a separate Travis job to execute.
|
||||
# They run in separate environments, so each one must take the time
|
||||
# to clone the repository and submodules; to download and install SDKs,
|
||||
# pip packages, and so forth. By gathering activities together in optimal
|
||||
# ways, the "run time" and "total time" of the travis jobs can be minimized.
|
||||
#
|
||||
# Since at the time of writing Travis generally starts 5 or 6 jobs, the
|
||||
# builds have been organized into 5 groups of *approximately* equal durations.
|
||||
# Additionally, the jobs that need extra SDKs are also organized together.
|
||||
#
|
||||
# When adding new boards, take a look on the travis CI page
|
||||
# https://travis-ci.org/adafruit/circuitpython to which build that installs
|
||||
# that SDK is shortest and add it there. In the case of major re-organizations,
|
||||
# just try to make the builds "about equal in run time"
|
||||
env:
|
||||
- TRAVIS_TESTS="unix docs translations"
|
||||
- TRAVIS_BOARDS="feather_huzzah circuitplayground_express pca10056" TRAVIS_SDK=arm:nrf:esp8266
|
||||
# Group nrf builds together..
|
||||
- TRAVIS_BOARDS="pca10056 pca10059 feather_nrf52832 feather_nrf52840_express" TRAVIS_SDK=arm:nrf
|
||||
# The rest of the M0/M4 boards, in arbitrary order.
|
||||
- TRAVIS_TESTS="unix docs translations" TRAVIS_BOARDS="feather_huzzah circuitplayground_express pca10056 pca10059 feather_nrf52832 feather_nrf52840_express makerdiary_nrf52840_mdk" TRAVIS_SDK=arm:nrf:esp8266
|
||||
- TRAVIS_BOARDS="metro_m0_express metro_m4_express pirkey_m0 trellis_m4_express trinket_m0" TRAVIS_SDK=arm
|
||||
- TRAVIS_BOARDS="feather_radiofruit_zigbee gemma_m0 hallowing_m0_express itsybitsy_m0_express itsybitsy_m4_express" TRAVIS_SDK=arm
|
||||
- TRAVIS_BOARDS="feather_radiofruit_zigbee gemma_m0 hallowing_m0_express itsybitsy_m0_express itsybitsy_m4_express meowmeow" TRAVIS_SDK=arm
|
||||
- TRAVIS_BOARDS="feather_m0_express_crickit feather_m0_rfm69 feather_m0_rfm9x feather_m4_express arduino_zero" TRAVIS_SDK=arm
|
||||
- TRAVIS_BOARDS="circuitplayground_express_crickit feather_m0_adalogger feather_m0_basic feather_m0_express" TRAVIS_SDK=arm
|
||||
|
||||
@ -45,8 +53,8 @@ before_script:
|
||||
- (! var_search "${TRAVIS_SDK-}" nrf || sudo ports/nrf/drivers/bluetooth/download_ble_stack.sh)
|
||||
|
||||
# For huzzah builds
|
||||
- (! var_search "${TRAVIS_SDK-}" esp8266 || (wget https://github.com/jepler/esp-open-sdk/releases/download/2018-06-10/xtensa-lx106-elf-standalone.tar.gz && tar xavf xtensa-lx106-elf-standalone.tar.gz))
|
||||
- if var_search "${TRAVIS_SDK-}" esp8266 ; then PATH=$(readlink -f xtensa-lx106-elf/bin):$PATH; fi
|
||||
- (! var_search "${TRAVIS_SDK-}" esp8266 || (wget https://github.com/jepler/esp-open-sdk/releases/download/2018-06-10/xtensa-lx106-elf-standalone.tar.gz && tar -C .. -xavf xtensa-lx106-elf-standalone.tar.gz))
|
||||
- if var_search "${TRAVIS_SDK-}" esp8266 ; then PATH=$(readlink -f ../xtensa-lx106-elf/bin):$PATH; fi
|
||||
|
||||
# For coverage testing (upgrade is used to get latest urllib3 version)
|
||||
- ([[ -z "$TRAVIS_TESTS" ]] || sudo apt-get install -y python3-pip)
|
||||
@ -54,7 +62,7 @@ before_script:
|
||||
- (! var_search "${TRAVIS_TESTS-}" docs || sudo pip install 'Sphinx<1.8.0' sphinx-rtd-theme recommonmark)
|
||||
- (! var_search "${TRAVIS_TESTS-}" translations || sudo pip3 install polib)
|
||||
|
||||
# report some good version numbers to the buil
|
||||
# report some good version numbers to the build
|
||||
- gcc --version
|
||||
- (! var_search "${TRAVIS_SDK-}" elf || arm-none-eabi-gcc --version)
|
||||
- (! var_search "${TRAVIS_SDK-}" esp8266 || xtensa-lx106-elf-gcc --version)
|
||||
|
12
README.rst
12
README.rst
@ -30,13 +30,21 @@ Supported Boards
|
||||
Designed for CircuitPython
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
**M0 Boards**
|
||||
|
||||
- `Adafruit CircuitPlayground Express <https://www.adafruit.com/product/3333>`__ (`CircuitPython Guide <https://learn.adafruit.com/adafruit-circuit-playground-express/circuitpython-quickstart>`__)
|
||||
- `Adafruit Feather M0 Express <https://www.adafruit.com/product/3403>`__ (`CircuitPython Guide <https://learn.adafruit.com/adafruit-feather-m0-express-designed-for-circuit-python-circuitpython/kattni-circuitpython>`__)
|
||||
- `Adafruit Metro M0 Express <https://www.adafruit.com/product/3505>`_ (`CircuitPython Guide <https://learn.adafruit.com/adafruit-metro-m0-express-designed-for-circuitpython/circuitpython>`__)
|
||||
- `Adafruit Gemma M0 <https://www.adafruit.com/product/3501>`__ (`CircuitPython Guide <https://learn.adafruit.com/adafruit-gemma-m0/circuitpython>`__)
|
||||
- `Adafruit Hallowing M0 Express <https://www.adafruit.com/product/3900>`__ (`CircuitPython Guide <https://learn.adafruit.com/adafruit-hallowing/circuitpython>`__)
|
||||
- `Adafruit ItsyBitsy M0 Express <https://www.adafruit.com/product/3727>`_ (`CircuitPython Guide <https://learn.adafruit.com/introducing-itsy-bitsy-m0/circuitpython>`__)
|
||||
- `Adafruit Metro M0 Express <https://www.adafruit.com/product/3505>`_ (`CircuitPython Guide <https://learn.adafruit.com/adafruit-metro-m0-express-designed-for-circuitpython/circuitpython>`__)
|
||||
- `Adafruit Trinket M0 <https://www.adafruit.com/product/3500>`__ (`CircuitPython Guide <https://learn.adafruit.com/adafruit-trinket-m0-circuitpython-arduino/circuitpython>`__)
|
||||
- `Adafruit Metro M4 <https://www.adafruit.com/product/3382>`__ (`CircuitPython Guide <https://learn.adafruit.com/adafruit-metro-m4-express-featuring-atsamd51/overview>`__)
|
||||
|
||||
**M4 Boards**
|
||||
|
||||
- `Adafruit Feather M4 Express <https://www.adafruit.com/product/3857>`__ (`CircuitPython Guide <https://learn.adafruit.com/adafruit-feather-m4-express-atsamd51/circuitpython>`__)
|
||||
- `Adafruit ItsyBitsy M4 Express <https://www.adafruit.com/product/3800>`__ (`CircuitPython Guide <https://learn.adafruit.com/introducing-adafruit-itsybitsy-m4/circuitpython>`__)
|
||||
- `Adafruit Metro M4 Express <https://www.adafruit.com/product/3382>`__ (`CircuitPython Guide <https://learn.adafruit.com/adafruit-metro-m4-express-featuring-atsamd51/circuitpython>`__)
|
||||
|
||||
Other
|
||||
~~~~~
|
||||
|
@ -1 +1 @@
|
||||
Subproject commit 07919641470edb602585c6a91f7b8eacf17e664b
|
||||
Subproject commit 97d4129b8117d177df2675839ec4081b3570838d
|
@ -1 +1 @@
|
||||
Subproject commit d0aa6dc56d66decfae92daced7384c1e3518a666
|
||||
Subproject commit 36ec7b371f1751961de6d2c910533618d931f109
|
@ -1 +1 @@
|
||||
Subproject commit 44f52c5dacd9fc605565e5794e95c9a785aaf693
|
||||
Subproject commit bbf2d897ae116531bfa15af3bcb32b0123acc435
|
@ -1 +1 @@
|
||||
Subproject commit af25424ee7dbebea3e5d77390c017018ffa52d36
|
||||
Subproject commit 03c24157d46672c723021686f7a838cfeb2db2ba
|
@ -1 +1 @@
|
||||
Subproject commit 5c2f6ef1ed80f24b6a3878067d40350d3725e198
|
||||
Subproject commit 99c71a6c1ea00bc14f0a4507116ff216beafafbd
|
@ -1 +1 @@
|
||||
Subproject commit c29e10b590efbdf06163897b49cd0c2bea82ad6e
|
||||
Subproject commit ec11164ec6682094a48d0f9848d2c4c89c08f3bc
|
@ -1 +1 @@
|
||||
Subproject commit c4152a0d87a04903ae0e612eb381af440c9e28b3
|
||||
Subproject commit 377910d5a9bfbf833dfd3064f80c5b2ae0c78c9a
|
@ -1 +1 @@
|
||||
Subproject commit e0b709f1710555da67705360870ba0d14ced7e06
|
||||
Subproject commit 00326214fc2ece8b31c07a654b192797e6a08043
|
@ -1 +1 @@
|
||||
Subproject commit e9f50cb6678a1684591ee021b95a3c4b51786fee
|
||||
Subproject commit 4b9563d6a74c6089d0ef5466975d11ef52851bca
|
@ -1 +1 @@
|
||||
Subproject commit 00f4ebca6c740b76c1c464f83d514ac20b0600e1
|
||||
Subproject commit 1570b23f7a6d62e169d2fd15969e507a1da05374
|
@ -1 +1 @@
|
||||
Subproject commit 340cd17fad0c29d3a70d6e298a30ecc753df054e
|
||||
Subproject commit e3e3021d8578fde450511b47a085d9d56ab46741
|
@ -8,7 +8,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: PACKAGE VERSION\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2018-10-11 22:08+1100\n"
|
||||
"POT-Creation-Date: 2018-10-25 12:20+1100\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"
|
||||
@ -147,7 +147,7 @@ msgstr ""
|
||||
msgid "invalid arguments"
|
||||
msgstr ""
|
||||
|
||||
#: lib/utils/pyexec.c:97 py/builtinimport.c:253
|
||||
#: lib/utils/pyexec.c:97 py/builtinimport.c:251
|
||||
msgid "script compilation not supported"
|
||||
msgstr ""
|
||||
|
||||
@ -291,12 +291,12 @@ msgid "Too many channels in sample."
|
||||
msgstr ""
|
||||
|
||||
#: ports/atmel-samd/common-hal/audiobusio/I2SOut.c:305
|
||||
#: ports/atmel-samd/common-hal/audioio/AudioOut.c:339
|
||||
#: ports/atmel-samd/common-hal/audioio/AudioOut.c:417
|
||||
msgid "No DMA channel found"
|
||||
msgstr ""
|
||||
|
||||
#: ports/atmel-samd/common-hal/audiobusio/I2SOut.c:308
|
||||
#: ports/atmel-samd/common-hal/audioio/AudioOut.c:341
|
||||
#: ports/atmel-samd/common-hal/audioio/AudioOut.c:419
|
||||
msgid "Unable to allocate buffers for signed conversion"
|
||||
msgstr ""
|
||||
|
||||
@ -312,43 +312,44 @@ msgstr ""
|
||||
msgid "sampling rate out of range"
|
||||
msgstr ""
|
||||
|
||||
#: ports/atmel-samd/common-hal/audioio/AudioOut.c:69
|
||||
#: ports/atmel-samd/common-hal/audioio/AudioOut.c:132
|
||||
msgid "DAC already in use"
|
||||
msgstr ""
|
||||
|
||||
#: ports/atmel-samd/common-hal/audioio/AudioOut.c:73
|
||||
#: ports/atmel-samd/common-hal/audioio/AudioOut.c:136
|
||||
msgid "Right channel unsupported"
|
||||
msgstr ""
|
||||
|
||||
#: ports/atmel-samd/common-hal/audioio/AudioOut.c:76
|
||||
#: ports/atmel-samd/common-hal/audioio/AudioOut.c:139
|
||||
#: ports/atmel-samd/common-hal/pulseio/PWMOut.c:116
|
||||
#: ports/atmel-samd/common-hal/touchio/TouchIn.c:65
|
||||
msgid "Invalid pin"
|
||||
msgstr ""
|
||||
|
||||
#: ports/atmel-samd/common-hal/audioio/AudioOut.c:84
|
||||
#: ports/atmel-samd/common-hal/audioio/AudioOut.c:147
|
||||
msgid "Invalid pin for left channel"
|
||||
msgstr ""
|
||||
|
||||
#: ports/atmel-samd/common-hal/audioio/AudioOut.c:88
|
||||
#: ports/atmel-samd/common-hal/audioio/AudioOut.c:151
|
||||
msgid "Invalid pin for right channel"
|
||||
msgstr ""
|
||||
|
||||
#: ports/atmel-samd/common-hal/audioio/AudioOut.c:91
|
||||
#: ports/atmel-samd/common-hal/audioio/AudioOut.c:154
|
||||
msgid "Cannot output both channels on the same pin"
|
||||
msgstr ""
|
||||
|
||||
#: ports/atmel-samd/common-hal/audioio/AudioOut.c:176
|
||||
#: ports/atmel-samd/common-hal/audioio/AudioOut.c:243
|
||||
#: ports/atmel-samd/common-hal/pulseio/PWMOut.c:189
|
||||
#: ports/atmel-samd/common-hal/pulseio/PulseOut.c:110
|
||||
#: ports/nrf/common-hal/pulseio/PulseOut.c:107
|
||||
msgid "All timers in use"
|
||||
msgstr ""
|
||||
|
||||
#: ports/atmel-samd/common-hal/audioio/AudioOut.c:218
|
||||
#: ports/atmel-samd/common-hal/audioio/AudioOut.c:285
|
||||
msgid "All event channels in use"
|
||||
msgstr ""
|
||||
|
||||
#: ports/atmel-samd/common-hal/audioio/AudioOut.c:297
|
||||
#: ports/atmel-samd/common-hal/audioio/AudioOut.c:375
|
||||
#, c-format
|
||||
msgid "Sample rate too high. It must be less than %d"
|
||||
msgstr ""
|
||||
@ -361,7 +362,7 @@ msgstr ""
|
||||
#: ports/atmel-samd/common-hal/busio/SPI.c:132
|
||||
#: ports/atmel-samd/common-hal/busio/UART.c:119
|
||||
#: ports/atmel-samd/common-hal/i2cslave/I2CSlave.c:45
|
||||
#: ports/nrf/common-hal/busio/I2C.c:81
|
||||
#: ports/nrf/common-hal/busio/I2C.c:82
|
||||
msgid "Invalid pins"
|
||||
msgstr ""
|
||||
|
||||
@ -413,7 +414,7 @@ msgstr ""
|
||||
|
||||
#: ports/atmel-samd/common-hal/pulseio/PWMOut.c:120
|
||||
#: ports/atmel-samd/common-hal/pulseio/PWMOut.c:369
|
||||
#: ports/nrf/common-hal/pulseio/PWMOut.c:120
|
||||
#: ports/nrf/common-hal/pulseio/PWMOut.c:119
|
||||
#: ports/nrf/common-hal/pulseio/PWMOut.c:233
|
||||
msgid "Invalid PWM frequency"
|
||||
msgstr ""
|
||||
@ -695,7 +696,7 @@ msgstr ""
|
||||
msgid "AnalogOut functionality not supported"
|
||||
msgstr ""
|
||||
|
||||
#: ports/nrf/common-hal/busio/I2C.c:95
|
||||
#: ports/nrf/common-hal/busio/I2C.c:96
|
||||
msgid "All I2C peripherals are in use"
|
||||
msgstr ""
|
||||
|
||||
@ -729,7 +730,7 @@ msgstr ""
|
||||
msgid "Can not get temperature. status: 0x%02x"
|
||||
msgstr ""
|
||||
|
||||
#: ports/nrf/common-hal/pulseio/PWMOut.c:162
|
||||
#: ports/nrf/common-hal/pulseio/PWMOut.c:161
|
||||
msgid "All PWM peripherals are in use"
|
||||
msgstr ""
|
||||
|
||||
@ -935,19 +936,19 @@ msgstr ""
|
||||
msgid "bad compile mode"
|
||||
msgstr ""
|
||||
|
||||
#: py/builtinimport.c:338
|
||||
#: py/builtinimport.c:336
|
||||
msgid "cannot perform relative import"
|
||||
msgstr ""
|
||||
|
||||
#: py/builtinimport.c:422 py/builtinimport.c:534
|
||||
#: py/builtinimport.c:420 py/builtinimport.c:532
|
||||
msgid "module not found"
|
||||
msgstr ""
|
||||
|
||||
#: py/builtinimport.c:425 py/builtinimport.c:537
|
||||
#: py/builtinimport.c:423 py/builtinimport.c:535
|
||||
msgid "no module named '%q'"
|
||||
msgstr ""
|
||||
|
||||
#: py/builtinimport.c:512
|
||||
#: py/builtinimport.c:510
|
||||
msgid "relative import"
|
||||
msgstr ""
|
||||
|
||||
@ -1994,7 +1995,7 @@ msgid "AnalogOut is only 16 bits. Value must be less than 65536."
|
||||
msgstr ""
|
||||
|
||||
#: shared-bindings/audiobusio/I2SOut.c:225
|
||||
#: shared-bindings/audioio/AudioOut.c:223
|
||||
#: shared-bindings/audioio/AudioOut.c:226
|
||||
msgid "Not playing"
|
||||
msgstr ""
|
||||
|
||||
@ -2201,7 +2202,7 @@ msgstr ""
|
||||
|
||||
#: shared-bindings/microcontroller/Pin.c:89
|
||||
#: shared-bindings/neopixel_write/__init__.c:67
|
||||
#: shared-bindings/pulseio/PulseOut.c:75
|
||||
#: shared-bindings/pulseio/PulseOut.c:76
|
||||
msgid "Expected a %q"
|
||||
msgstr ""
|
||||
|
||||
@ -2263,7 +2264,7 @@ msgstr ""
|
||||
msgid "Read-only"
|
||||
msgstr ""
|
||||
|
||||
#: shared-bindings/pulseio/PulseOut.c:134
|
||||
#: shared-bindings/pulseio/PulseOut.c:135
|
||||
msgid "Array must contain halfwords (type 'H')"
|
||||
msgstr ""
|
||||
|
||||
@ -2292,7 +2293,7 @@ msgstr ""
|
||||
msgid "RTC calibration is not supported on this board"
|
||||
msgstr ""
|
||||
|
||||
#: shared-bindings/socket/__init__.c:516 shared-module/network/__init__.c:64
|
||||
#: shared-bindings/socket/__init__.c:516 shared-module/network/__init__.c:81
|
||||
msgid "no available NIC"
|
||||
msgstr ""
|
||||
|
||||
@ -2320,15 +2321,15 @@ msgstr ""
|
||||
msgid "time.struct_time() takes a 9-sequence"
|
||||
msgstr ""
|
||||
|
||||
#: shared-bindings/time/__init__.c:169 shared-bindings/time/__init__.c:250
|
||||
#: shared-bindings/time/__init__.c:169 shared-bindings/time/__init__.c:264
|
||||
msgid "Tuple or struct_time argument required"
|
||||
msgstr ""
|
||||
|
||||
#: shared-bindings/time/__init__.c:174 shared-bindings/time/__init__.c:255
|
||||
#: shared-bindings/time/__init__.c:174 shared-bindings/time/__init__.c:269
|
||||
msgid "function takes exactly 9 arguments"
|
||||
msgstr ""
|
||||
|
||||
#: shared-bindings/time/__init__.c:226 shared-bindings/time/__init__.c:259
|
||||
#: shared-bindings/time/__init__.c:240 shared-bindings/time/__init__.c:273
|
||||
msgid "timestamp out of range for platform time_t"
|
||||
msgstr ""
|
||||
|
||||
|
132
locale/de_DE.po
132
locale/de_DE.po
@ -7,7 +7,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: \n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2018-10-11 22:08+1100\n"
|
||||
"POT-Creation-Date: 2018-10-25 12:20+1100\n"
|
||||
"PO-Revision-Date: 2018-07-27 11:55-0700\n"
|
||||
"Last-Translator: Sebastian Plamauer\n"
|
||||
"Language-Team: \n"
|
||||
@ -93,7 +93,7 @@ msgstr "struct: index außerhalb gültigen Bereichs"
|
||||
|
||||
#: extmod/moduheapq.c:38
|
||||
msgid "heap must be a list"
|
||||
msgstr "heap muss eine list sein"
|
||||
msgstr "heap muss eine Liste sein"
|
||||
|
||||
#: extmod/moduheapq.c:86 extmod/modutimeq.c:147 extmod/modutimeq.c:172
|
||||
msgid "empty heap"
|
||||
@ -147,7 +147,7 @@ msgstr "abort() wurde aufgerufen"
|
||||
msgid "invalid arguments"
|
||||
msgstr "ungültige argumente"
|
||||
|
||||
#: lib/utils/pyexec.c:97 py/builtinimport.c:253
|
||||
#: lib/utils/pyexec.c:97 py/builtinimport.c:251
|
||||
msgid "script compilation not supported"
|
||||
msgstr "kompilieren von Skripten ist nicht unterstützt"
|
||||
|
||||
@ -185,12 +185,12 @@ msgstr "Du hast das Starten im Sicherheitsmodus ausgelöst durch "
|
||||
|
||||
#: main.c:252
|
||||
msgid "To exit, please reset the board without "
|
||||
msgstr "Zum beenden bitte resete das board ohne "
|
||||
msgstr "Zum beenden bitte resette das board ohne "
|
||||
|
||||
#: main.c:259
|
||||
msgid ""
|
||||
"You are running in safe mode which means something really bad happened.\n"
|
||||
msgstr "Sicherheitsmodus aktive, etwas wirklich schlechtes ist passiert.\n"
|
||||
msgstr "Sicherheitsmodus aktiv, etwas wirklich schlechtes ist passiert.\n"
|
||||
|
||||
#: main.c:261
|
||||
msgid "Looks like our core CircuitPython code crashed hard. Whoops!\n"
|
||||
@ -214,8 +214,8 @@ msgid ""
|
||||
"enough power for the whole circuit and press reset (after ejecting "
|
||||
"CIRCUITPY).\n"
|
||||
msgstr ""
|
||||
"genug Strom für den ganzen Schaltkreis liefert und drücke reset (nach "
|
||||
"demsicheren Auswerfen von CIRCUITPY.)\n"
|
||||
"genug Strom für den ganzen Schaltkreis liefert und drücke reset (nach dem "
|
||||
"sicheren Auswerfen von CIRCUITPY.)\n"
|
||||
|
||||
#: main.c:270
|
||||
msgid "Press any key to enter the REPL. Use CTRL-D to reload."
|
||||
@ -225,7 +225,7 @@ msgstr ""
|
||||
|
||||
#: main.c:426
|
||||
msgid "soft reboot\n"
|
||||
msgstr "weicher reboot\n"
|
||||
msgstr "soft reboot\n"
|
||||
|
||||
#: ports/atmel-samd/audio_dma.c:209
|
||||
#: ports/atmel-samd/common-hal/audiobusio/PDMIn.c:361
|
||||
@ -268,7 +268,7 @@ msgstr "AnalogOut ist an diesem Pin nicht unterstützt"
|
||||
#: ports/atmel-samd/common-hal/audiobusio/I2SOut.c:147
|
||||
#: ports/atmel-samd/common-hal/audiobusio/I2SOut.c:150
|
||||
msgid "Invalid bit clock pin"
|
||||
msgstr "Ungülgites bit clock pin"
|
||||
msgstr "Ungültiges bit clock pin"
|
||||
|
||||
#: ports/atmel-samd/common-hal/audiobusio/I2SOut.c:153
|
||||
msgid "Bit clock and word select must share a clock unit"
|
||||
@ -284,7 +284,7 @@ msgstr "Ungültiger data pin"
|
||||
#: ports/atmel-samd/common-hal/audiobusio/PDMIn.c:145
|
||||
#: ports/atmel-samd/common-hal/audiobusio/PDMIn.c:150
|
||||
msgid "Serializer in use"
|
||||
msgstr "Serilaizer wird benutzt"
|
||||
msgstr "Serializer wird benutzt"
|
||||
|
||||
#: ports/atmel-samd/common-hal/audiobusio/I2SOut.c:230
|
||||
msgid "Clock unit in use"
|
||||
@ -300,12 +300,12 @@ msgid "Too many channels in sample."
|
||||
msgstr "Zu viele Kanäle im sample"
|
||||
|
||||
#: ports/atmel-samd/common-hal/audiobusio/I2SOut.c:305
|
||||
#: ports/atmel-samd/common-hal/audioio/AudioOut.c:339
|
||||
#: ports/atmel-samd/common-hal/audioio/AudioOut.c:417
|
||||
msgid "No DMA channel found"
|
||||
msgstr "Kein DMA Kanal gefunden"
|
||||
|
||||
#: ports/atmel-samd/common-hal/audiobusio/I2SOut.c:308
|
||||
#: ports/atmel-samd/common-hal/audioio/AudioOut.c:341
|
||||
#: ports/atmel-samd/common-hal/audioio/AudioOut.c:419
|
||||
msgid "Unable to allocate buffers for signed conversion"
|
||||
msgstr "Konnte keine Buffer für Vorzeichenumwandlung allozieren"
|
||||
|
||||
@ -321,43 +321,44 @@ msgstr "Nur 8 oder 16 bit mono mit "
|
||||
msgid "sampling rate out of range"
|
||||
msgstr "Abtastrate außerhalb der Reichweite"
|
||||
|
||||
#: ports/atmel-samd/common-hal/audioio/AudioOut.c:69
|
||||
#: ports/atmel-samd/common-hal/audioio/AudioOut.c:132
|
||||
msgid "DAC already in use"
|
||||
msgstr "DAC wird schon benutzt"
|
||||
|
||||
#: ports/atmel-samd/common-hal/audioio/AudioOut.c:73
|
||||
#: ports/atmel-samd/common-hal/audioio/AudioOut.c:136
|
||||
msgid "Right channel unsupported"
|
||||
msgstr "Rechter Kanal wird nicht unterstützt"
|
||||
|
||||
#: ports/atmel-samd/common-hal/audioio/AudioOut.c:76
|
||||
#: ports/atmel-samd/common-hal/audioio/AudioOut.c:139
|
||||
#: ports/atmel-samd/common-hal/pulseio/PWMOut.c:116
|
||||
#: ports/atmel-samd/common-hal/touchio/TouchIn.c:65
|
||||
msgid "Invalid pin"
|
||||
msgstr "Ungültiger Pin"
|
||||
|
||||
#: ports/atmel-samd/common-hal/audioio/AudioOut.c:84
|
||||
#: ports/atmel-samd/common-hal/audioio/AudioOut.c:147
|
||||
msgid "Invalid pin for left channel"
|
||||
msgstr "Ungültiger Pin für linken Kanal"
|
||||
|
||||
#: ports/atmel-samd/common-hal/audioio/AudioOut.c:88
|
||||
#: ports/atmel-samd/common-hal/audioio/AudioOut.c:151
|
||||
msgid "Invalid pin for right channel"
|
||||
msgstr "Ungültiger Pin für rechten Kanal"
|
||||
|
||||
#: ports/atmel-samd/common-hal/audioio/AudioOut.c:91
|
||||
#: ports/atmel-samd/common-hal/audioio/AudioOut.c:154
|
||||
msgid "Cannot output both channels on the same pin"
|
||||
msgstr "Kann nicht beite Kanäle auf dem gleichen Pin ausgeben"
|
||||
|
||||
#: ports/atmel-samd/common-hal/audioio/AudioOut.c:176
|
||||
#: ports/atmel-samd/common-hal/audioio/AudioOut.c:243
|
||||
#: ports/atmel-samd/common-hal/pulseio/PWMOut.c:189
|
||||
#: ports/atmel-samd/common-hal/pulseio/PulseOut.c:110
|
||||
#: ports/nrf/common-hal/pulseio/PulseOut.c:107
|
||||
msgid "All timers in use"
|
||||
msgstr "Alle timer werden benutzt"
|
||||
|
||||
#: ports/atmel-samd/common-hal/audioio/AudioOut.c:218
|
||||
#: ports/atmel-samd/common-hal/audioio/AudioOut.c:285
|
||||
msgid "All event channels in use"
|
||||
msgstr "Alle event Kanälre werden benutzt"
|
||||
msgstr "Alle event Kanäle werden benutzt"
|
||||
|
||||
#: ports/atmel-samd/common-hal/audioio/AudioOut.c:297
|
||||
#: ports/atmel-samd/common-hal/audioio/AudioOut.c:375
|
||||
#, c-format
|
||||
msgid "Sample rate too high. It must be less than %d"
|
||||
msgstr ""
|
||||
@ -370,7 +371,7 @@ msgstr "Nicht genug Pins vorhanden"
|
||||
#: ports/atmel-samd/common-hal/busio/SPI.c:132
|
||||
#: ports/atmel-samd/common-hal/busio/UART.c:119
|
||||
#: ports/atmel-samd/common-hal/i2cslave/I2CSlave.c:45
|
||||
#: ports/nrf/common-hal/busio/I2C.c:81
|
||||
#: ports/nrf/common-hal/busio/I2C.c:82
|
||||
msgid "Invalid pins"
|
||||
msgstr "Ungültige Pins"
|
||||
|
||||
@ -380,7 +381,7 @@ msgstr "SDA oder SCL brauchen pull up"
|
||||
|
||||
#: ports/atmel-samd/common-hal/busio/I2C.c:121
|
||||
msgid "Unsupported baudrate"
|
||||
msgstr "Baudrate wird nicht unterstütz"
|
||||
msgstr "Baudrate wird nicht unterstützt"
|
||||
|
||||
#: ports/atmel-samd/common-hal/busio/UART.c:66
|
||||
msgid "bytes > 8 bits not supported"
|
||||
@ -422,7 +423,7 @@ msgstr "Reset zum bootloader nicht möglich da bootloader nicht vorhanden"
|
||||
|
||||
#: ports/atmel-samd/common-hal/pulseio/PWMOut.c:120
|
||||
#: ports/atmel-samd/common-hal/pulseio/PWMOut.c:369
|
||||
#: ports/nrf/common-hal/pulseio/PWMOut.c:120
|
||||
#: ports/nrf/common-hal/pulseio/PWMOut.c:119
|
||||
#: ports/nrf/common-hal/pulseio/PWMOut.c:233
|
||||
msgid "Invalid PWM frequency"
|
||||
msgstr "Ungültige PWM Frequenz"
|
||||
@ -546,23 +547,25 @@ msgstr "Minimale PWM Frequenz ist %dHz"
|
||||
#, c-format
|
||||
msgid "Multiple PWM frequencies not supported. PWM already set to %dhz."
|
||||
msgstr ""
|
||||
"Mehrere PWM Frequenzen nicht unterstützt. PWM bereits auf %dHz gesetzt."
|
||||
|
||||
#: ports/esp8266/common-hal/pulseio/PWMOut.c:77 ports/esp8266/machine_pwm.c:70
|
||||
#, c-format
|
||||
msgid "PWM not supported on pin %d"
|
||||
msgstr ""
|
||||
msgstr "PWM nicht unterstützt an Pin %d"
|
||||
|
||||
#: ports/esp8266/common-hal/pulseio/PulseIn.c:78
|
||||
msgid "No PulseIn support for %q"
|
||||
msgstr ""
|
||||
msgstr "Keine PulseIn Unterstützung für %q"
|
||||
|
||||
#: ports/esp8266/common-hal/storage/__init__.c:34
|
||||
msgid "Unable to remount filesystem"
|
||||
msgstr ""
|
||||
msgstr "Dateisystem kann nicht wieder gemounted werden."
|
||||
|
||||
#: ports/esp8266/common-hal/storage/__init__.c:38
|
||||
msgid "Use esptool to erase flash and re-upload Python instead"
|
||||
msgstr ""
|
||||
"Benutze esptool um den flash zu löschen und stattdessen Python hochzuladen"
|
||||
|
||||
#: ports/esp8266/esp_mphal.c:154
|
||||
msgid "C-level assert"
|
||||
@ -571,102 +574,103 @@ msgstr ""
|
||||
#: ports/esp8266/machine_adc.c:57
|
||||
#, c-format
|
||||
msgid "not a valid ADC Channel: %d"
|
||||
msgstr ""
|
||||
msgstr "Kein gültiger ADC Kanal: %d"
|
||||
|
||||
#: ports/esp8266/machine_hspi.c:131 ports/esp8266/machine_hspi.c:137
|
||||
msgid "impossible baudrate"
|
||||
msgstr ""
|
||||
msgstr "Unmögliche Baudrate"
|
||||
|
||||
#: ports/esp8266/machine_pin.c:129
|
||||
msgid "expecting a pin"
|
||||
msgstr ""
|
||||
msgstr "Ein Pin wird erwartet"
|
||||
|
||||
#: ports/esp8266/machine_pin.c:284
|
||||
msgid "Pin(16) doesn't support pull"
|
||||
msgstr ""
|
||||
msgstr "Pin(16) unterstützt kein pull"
|
||||
|
||||
#: ports/esp8266/machine_pin.c:323
|
||||
msgid "invalid pin"
|
||||
msgstr ""
|
||||
msgstr "Ungültiger Pin"
|
||||
|
||||
#: ports/esp8266/machine_pin.c:389
|
||||
msgid "pin does not have IRQ capabilities"
|
||||
msgstr ""
|
||||
msgstr "Pin hat keine IRQ Fähigkeiten"
|
||||
|
||||
#: ports/esp8266/machine_rtc.c:185
|
||||
msgid "buffer too long"
|
||||
msgstr ""
|
||||
msgstr "Buffer zu lang"
|
||||
|
||||
#: ports/esp8266/machine_rtc.c:209 ports/esp8266/machine_rtc.c:223
|
||||
#: ports/esp8266/machine_rtc.c:246
|
||||
msgid "invalid alarm"
|
||||
msgstr ""
|
||||
msgstr "Ungültiger Alarm"
|
||||
|
||||
#: ports/esp8266/machine_uart.c:169
|
||||
#, c-format
|
||||
msgid "UART(%d) does not exist"
|
||||
msgstr ""
|
||||
msgstr "UART(%d) existiert nicht"
|
||||
|
||||
#: ports/esp8266/machine_uart.c:219
|
||||
msgid "UART(1) can't read"
|
||||
msgstr ""
|
||||
msgstr "UART(1) kann nicht lesen"
|
||||
|
||||
#: ports/esp8266/modesp.c:119
|
||||
msgid "len must be multiple of 4"
|
||||
msgstr ""
|
||||
msgstr "len muss ein vielfaches von 4 sein"
|
||||
|
||||
#: ports/esp8266/modesp.c:274
|
||||
#, c-format
|
||||
msgid "memory allocation failed, allocating %u bytes for native code"
|
||||
msgstr ""
|
||||
"Speicherallozierung fehlgeschlagen, alloziere %u Bytes für nativen Code"
|
||||
|
||||
#: ports/esp8266/modesp.c:317
|
||||
msgid "flash location must be below 1MByte"
|
||||
msgstr ""
|
||||
msgstr "flash location muss unter 1MByte sein"
|
||||
|
||||
#: ports/esp8266/modmachine.c:63
|
||||
msgid "frequency can only be either 80Mhz or 160MHz"
|
||||
msgstr ""
|
||||
msgstr "Die Frequenz kann nur 80Mhz oder 160Mhz sein"
|
||||
|
||||
#: ports/esp8266/modnetwork.c:61
|
||||
msgid "AP required"
|
||||
msgstr ""
|
||||
msgstr "AP erforderlich"
|
||||
|
||||
#: ports/esp8266/modnetwork.c:61
|
||||
msgid "STA required"
|
||||
msgstr ""
|
||||
msgstr "STA erforderlich"
|
||||
|
||||
#: ports/esp8266/modnetwork.c:87
|
||||
msgid "Cannot update i/f status"
|
||||
msgstr ""
|
||||
msgstr "Kann i/f Status nicht updaten"
|
||||
|
||||
#: ports/esp8266/modnetwork.c:142
|
||||
msgid "Cannot set STA config"
|
||||
msgstr ""
|
||||
msgstr "Kann STA Konfiguration nicht setzen"
|
||||
|
||||
#: ports/esp8266/modnetwork.c:144
|
||||
msgid "Cannot connect to AP"
|
||||
msgstr ""
|
||||
msgstr "Kann nicht zu AP verbinden"
|
||||
|
||||
#: ports/esp8266/modnetwork.c:152
|
||||
msgid "Cannot disconnect from AP"
|
||||
msgstr ""
|
||||
msgstr "Kann nicht trennen von AP"
|
||||
|
||||
#: ports/esp8266/modnetwork.c:173
|
||||
msgid "unknown status param"
|
||||
msgstr ""
|
||||
msgstr "Unbekannter Statusparameter"
|
||||
|
||||
#: ports/esp8266/modnetwork.c:222
|
||||
msgid "STA must be active"
|
||||
msgstr ""
|
||||
msgstr "STA muss aktiv sein"
|
||||
|
||||
#: ports/esp8266/modnetwork.c:239
|
||||
msgid "scan failed"
|
||||
msgstr ""
|
||||
msgstr "Scan fehlgeschlagen"
|
||||
|
||||
#: ports/esp8266/modnetwork.c:306
|
||||
msgid "wifi_set_ip_info() failed"
|
||||
msgstr ""
|
||||
msgstr "wifi_set_ip_info() fehlgeschlagen"
|
||||
|
||||
#: ports/esp8266/modnetwork.c:319
|
||||
msgid "either pos or kw args are allowed"
|
||||
@ -704,7 +708,7 @@ msgstr ""
|
||||
msgid "AnalogOut functionality not supported"
|
||||
msgstr ""
|
||||
|
||||
#: ports/nrf/common-hal/busio/I2C.c:95
|
||||
#: ports/nrf/common-hal/busio/I2C.c:96
|
||||
#, fuzzy
|
||||
msgid "All I2C peripherals are in use"
|
||||
msgstr "Alle timer werden benutzt"
|
||||
@ -742,7 +746,7 @@ msgstr ""
|
||||
msgid "Can not get temperature. status: 0x%02x"
|
||||
msgstr ""
|
||||
|
||||
#: ports/nrf/common-hal/pulseio/PWMOut.c:162
|
||||
#: ports/nrf/common-hal/pulseio/PWMOut.c:161
|
||||
#, fuzzy
|
||||
msgid "All PWM peripherals are in use"
|
||||
msgstr "Alle timer werden benutzt"
|
||||
@ -949,19 +953,19 @@ msgstr ""
|
||||
msgid "bad compile mode"
|
||||
msgstr ""
|
||||
|
||||
#: py/builtinimport.c:338
|
||||
#: py/builtinimport.c:336
|
||||
msgid "cannot perform relative import"
|
||||
msgstr ""
|
||||
|
||||
#: py/builtinimport.c:422 py/builtinimport.c:534
|
||||
#: py/builtinimport.c:420 py/builtinimport.c:532
|
||||
msgid "module not found"
|
||||
msgstr ""
|
||||
|
||||
#: py/builtinimport.c:425 py/builtinimport.c:537
|
||||
#: py/builtinimport.c:423 py/builtinimport.c:535
|
||||
msgid "no module named '%q'"
|
||||
msgstr ""
|
||||
|
||||
#: py/builtinimport.c:512
|
||||
#: py/builtinimport.c:510
|
||||
msgid "relative import"
|
||||
msgstr ""
|
||||
|
||||
@ -2009,7 +2013,7 @@ msgid "AnalogOut is only 16 bits. Value must be less than 65536."
|
||||
msgstr ""
|
||||
|
||||
#: shared-bindings/audiobusio/I2SOut.c:225
|
||||
#: shared-bindings/audioio/AudioOut.c:223
|
||||
#: shared-bindings/audioio/AudioOut.c:226
|
||||
msgid "Not playing"
|
||||
msgstr ""
|
||||
|
||||
@ -2220,7 +2224,7 @@ msgstr ""
|
||||
|
||||
#: shared-bindings/microcontroller/Pin.c:89
|
||||
#: shared-bindings/neopixel_write/__init__.c:67
|
||||
#: shared-bindings/pulseio/PulseOut.c:75
|
||||
#: shared-bindings/pulseio/PulseOut.c:76
|
||||
msgid "Expected a %q"
|
||||
msgstr ""
|
||||
|
||||
@ -2282,7 +2286,7 @@ msgstr ""
|
||||
msgid "Read-only"
|
||||
msgstr ""
|
||||
|
||||
#: shared-bindings/pulseio/PulseOut.c:134
|
||||
#: shared-bindings/pulseio/PulseOut.c:135
|
||||
msgid "Array must contain halfwords (type 'H')"
|
||||
msgstr ""
|
||||
|
||||
@ -2311,7 +2315,7 @@ msgstr ""
|
||||
msgid "RTC calibration is not supported on this board"
|
||||
msgstr ""
|
||||
|
||||
#: shared-bindings/socket/__init__.c:516 shared-module/network/__init__.c:64
|
||||
#: shared-bindings/socket/__init__.c:516 shared-module/network/__init__.c:81
|
||||
msgid "no available NIC"
|
||||
msgstr ""
|
||||
|
||||
@ -2339,15 +2343,15 @@ msgstr ""
|
||||
msgid "time.struct_time() takes a 9-sequence"
|
||||
msgstr ""
|
||||
|
||||
#: shared-bindings/time/__init__.c:169 shared-bindings/time/__init__.c:250
|
||||
#: shared-bindings/time/__init__.c:169 shared-bindings/time/__init__.c:264
|
||||
msgid "Tuple or struct_time argument required"
|
||||
msgstr ""
|
||||
|
||||
#: shared-bindings/time/__init__.c:174 shared-bindings/time/__init__.c:255
|
||||
#: shared-bindings/time/__init__.c:174 shared-bindings/time/__init__.c:269
|
||||
msgid "function takes exactly 9 arguments"
|
||||
msgstr ""
|
||||
|
||||
#: shared-bindings/time/__init__.c:226 shared-bindings/time/__init__.c:259
|
||||
#: shared-bindings/time/__init__.c:240 shared-bindings/time/__init__.c:273
|
||||
msgid "timestamp out of range for platform time_t"
|
||||
msgstr ""
|
||||
|
||||
|
@ -7,7 +7,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: \n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2018-10-11 22:08+1100\n"
|
||||
"POT-Creation-Date: 2018-10-25 12:20+1100\n"
|
||||
"PO-Revision-Date: 2018-07-27 11:55-0700\n"
|
||||
"Last-Translator: \n"
|
||||
"Language-Team: \n"
|
||||
@ -147,7 +147,7 @@ msgstr ""
|
||||
msgid "invalid arguments"
|
||||
msgstr ""
|
||||
|
||||
#: lib/utils/pyexec.c:97 py/builtinimport.c:253
|
||||
#: lib/utils/pyexec.c:97 py/builtinimport.c:251
|
||||
msgid "script compilation not supported"
|
||||
msgstr ""
|
||||
|
||||
@ -291,12 +291,12 @@ msgid "Too many channels in sample."
|
||||
msgstr ""
|
||||
|
||||
#: ports/atmel-samd/common-hal/audiobusio/I2SOut.c:305
|
||||
#: ports/atmel-samd/common-hal/audioio/AudioOut.c:339
|
||||
#: ports/atmel-samd/common-hal/audioio/AudioOut.c:417
|
||||
msgid "No DMA channel found"
|
||||
msgstr ""
|
||||
|
||||
#: ports/atmel-samd/common-hal/audiobusio/I2SOut.c:308
|
||||
#: ports/atmel-samd/common-hal/audioio/AudioOut.c:341
|
||||
#: ports/atmel-samd/common-hal/audioio/AudioOut.c:419
|
||||
msgid "Unable to allocate buffers for signed conversion"
|
||||
msgstr ""
|
||||
|
||||
@ -312,43 +312,44 @@ msgstr ""
|
||||
msgid "sampling rate out of range"
|
||||
msgstr ""
|
||||
|
||||
#: ports/atmel-samd/common-hal/audioio/AudioOut.c:69
|
||||
#: ports/atmel-samd/common-hal/audioio/AudioOut.c:132
|
||||
msgid "DAC already in use"
|
||||
msgstr ""
|
||||
|
||||
#: ports/atmel-samd/common-hal/audioio/AudioOut.c:73
|
||||
#: ports/atmel-samd/common-hal/audioio/AudioOut.c:136
|
||||
msgid "Right channel unsupported"
|
||||
msgstr ""
|
||||
|
||||
#: ports/atmel-samd/common-hal/audioio/AudioOut.c:76
|
||||
#: ports/atmel-samd/common-hal/audioio/AudioOut.c:139
|
||||
#: ports/atmel-samd/common-hal/pulseio/PWMOut.c:116
|
||||
#: ports/atmel-samd/common-hal/touchio/TouchIn.c:65
|
||||
msgid "Invalid pin"
|
||||
msgstr ""
|
||||
|
||||
#: ports/atmel-samd/common-hal/audioio/AudioOut.c:84
|
||||
#: ports/atmel-samd/common-hal/audioio/AudioOut.c:147
|
||||
msgid "Invalid pin for left channel"
|
||||
msgstr ""
|
||||
|
||||
#: ports/atmel-samd/common-hal/audioio/AudioOut.c:88
|
||||
#: ports/atmel-samd/common-hal/audioio/AudioOut.c:151
|
||||
msgid "Invalid pin for right channel"
|
||||
msgstr ""
|
||||
|
||||
#: ports/atmel-samd/common-hal/audioio/AudioOut.c:91
|
||||
#: ports/atmel-samd/common-hal/audioio/AudioOut.c:154
|
||||
msgid "Cannot output both channels on the same pin"
|
||||
msgstr ""
|
||||
|
||||
#: ports/atmel-samd/common-hal/audioio/AudioOut.c:176
|
||||
#: ports/atmel-samd/common-hal/audioio/AudioOut.c:243
|
||||
#: ports/atmel-samd/common-hal/pulseio/PWMOut.c:189
|
||||
#: ports/atmel-samd/common-hal/pulseio/PulseOut.c:110
|
||||
#: ports/nrf/common-hal/pulseio/PulseOut.c:107
|
||||
msgid "All timers in use"
|
||||
msgstr ""
|
||||
|
||||
#: ports/atmel-samd/common-hal/audioio/AudioOut.c:218
|
||||
#: ports/atmel-samd/common-hal/audioio/AudioOut.c:285
|
||||
msgid "All event channels in use"
|
||||
msgstr ""
|
||||
|
||||
#: ports/atmel-samd/common-hal/audioio/AudioOut.c:297
|
||||
#: ports/atmel-samd/common-hal/audioio/AudioOut.c:375
|
||||
#, c-format
|
||||
msgid "Sample rate too high. It must be less than %d"
|
||||
msgstr ""
|
||||
@ -361,7 +362,7 @@ msgstr ""
|
||||
#: ports/atmel-samd/common-hal/busio/SPI.c:132
|
||||
#: ports/atmel-samd/common-hal/busio/UART.c:119
|
||||
#: ports/atmel-samd/common-hal/i2cslave/I2CSlave.c:45
|
||||
#: ports/nrf/common-hal/busio/I2C.c:81
|
||||
#: ports/nrf/common-hal/busio/I2C.c:82
|
||||
msgid "Invalid pins"
|
||||
msgstr ""
|
||||
|
||||
@ -413,7 +414,7 @@ msgstr ""
|
||||
|
||||
#: ports/atmel-samd/common-hal/pulseio/PWMOut.c:120
|
||||
#: ports/atmel-samd/common-hal/pulseio/PWMOut.c:369
|
||||
#: ports/nrf/common-hal/pulseio/PWMOut.c:120
|
||||
#: ports/nrf/common-hal/pulseio/PWMOut.c:119
|
||||
#: ports/nrf/common-hal/pulseio/PWMOut.c:233
|
||||
msgid "Invalid PWM frequency"
|
||||
msgstr ""
|
||||
@ -695,7 +696,7 @@ msgstr ""
|
||||
msgid "AnalogOut functionality not supported"
|
||||
msgstr ""
|
||||
|
||||
#: ports/nrf/common-hal/busio/I2C.c:95
|
||||
#: ports/nrf/common-hal/busio/I2C.c:96
|
||||
msgid "All I2C peripherals are in use"
|
||||
msgstr ""
|
||||
|
||||
@ -729,7 +730,7 @@ msgstr ""
|
||||
msgid "Can not get temperature. status: 0x%02x"
|
||||
msgstr ""
|
||||
|
||||
#: ports/nrf/common-hal/pulseio/PWMOut.c:162
|
||||
#: ports/nrf/common-hal/pulseio/PWMOut.c:161
|
||||
msgid "All PWM peripherals are in use"
|
||||
msgstr ""
|
||||
|
||||
@ -935,19 +936,19 @@ msgstr ""
|
||||
msgid "bad compile mode"
|
||||
msgstr ""
|
||||
|
||||
#: py/builtinimport.c:338
|
||||
#: py/builtinimport.c:336
|
||||
msgid "cannot perform relative import"
|
||||
msgstr ""
|
||||
|
||||
#: py/builtinimport.c:422 py/builtinimport.c:534
|
||||
#: py/builtinimport.c:420 py/builtinimport.c:532
|
||||
msgid "module not found"
|
||||
msgstr ""
|
||||
|
||||
#: py/builtinimport.c:425 py/builtinimport.c:537
|
||||
#: py/builtinimport.c:423 py/builtinimport.c:535
|
||||
msgid "no module named '%q'"
|
||||
msgstr ""
|
||||
|
||||
#: py/builtinimport.c:512
|
||||
#: py/builtinimport.c:510
|
||||
msgid "relative import"
|
||||
msgstr ""
|
||||
|
||||
@ -1994,7 +1995,7 @@ msgid "AnalogOut is only 16 bits. Value must be less than 65536."
|
||||
msgstr ""
|
||||
|
||||
#: shared-bindings/audiobusio/I2SOut.c:225
|
||||
#: shared-bindings/audioio/AudioOut.c:223
|
||||
#: shared-bindings/audioio/AudioOut.c:226
|
||||
msgid "Not playing"
|
||||
msgstr ""
|
||||
|
||||
@ -2201,7 +2202,7 @@ msgstr ""
|
||||
|
||||
#: shared-bindings/microcontroller/Pin.c:89
|
||||
#: shared-bindings/neopixel_write/__init__.c:67
|
||||
#: shared-bindings/pulseio/PulseOut.c:75
|
||||
#: shared-bindings/pulseio/PulseOut.c:76
|
||||
msgid "Expected a %q"
|
||||
msgstr ""
|
||||
|
||||
@ -2263,7 +2264,7 @@ msgstr ""
|
||||
msgid "Read-only"
|
||||
msgstr ""
|
||||
|
||||
#: shared-bindings/pulseio/PulseOut.c:134
|
||||
#: shared-bindings/pulseio/PulseOut.c:135
|
||||
msgid "Array must contain halfwords (type 'H')"
|
||||
msgstr ""
|
||||
|
||||
@ -2292,7 +2293,7 @@ msgstr ""
|
||||
msgid "RTC calibration is not supported on this board"
|
||||
msgstr ""
|
||||
|
||||
#: shared-bindings/socket/__init__.c:516 shared-module/network/__init__.c:64
|
||||
#: shared-bindings/socket/__init__.c:516 shared-module/network/__init__.c:81
|
||||
msgid "no available NIC"
|
||||
msgstr ""
|
||||
|
||||
@ -2320,15 +2321,15 @@ msgstr ""
|
||||
msgid "time.struct_time() takes a 9-sequence"
|
||||
msgstr ""
|
||||
|
||||
#: shared-bindings/time/__init__.c:169 shared-bindings/time/__init__.c:250
|
||||
#: shared-bindings/time/__init__.c:169 shared-bindings/time/__init__.c:264
|
||||
msgid "Tuple or struct_time argument required"
|
||||
msgstr ""
|
||||
|
||||
#: shared-bindings/time/__init__.c:174 shared-bindings/time/__init__.c:255
|
||||
#: shared-bindings/time/__init__.c:174 shared-bindings/time/__init__.c:269
|
||||
msgid "function takes exactly 9 arguments"
|
||||
msgstr ""
|
||||
|
||||
#: shared-bindings/time/__init__.c:226 shared-bindings/time/__init__.c:259
|
||||
#: shared-bindings/time/__init__.c:240 shared-bindings/time/__init__.c:273
|
||||
msgid "timestamp out of range for platform time_t"
|
||||
msgstr ""
|
||||
|
||||
|
315
locale/es.po
315
locale/es.po
@ -7,7 +7,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: \n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2018-10-11 22:08+1100\n"
|
||||
"POT-Creation-Date: 2018-10-25 12:20+1100\n"
|
||||
"PO-Revision-Date: 2018-08-24 22:56-0500\n"
|
||||
"Last-Translator: \n"
|
||||
"Language-Team: \n"
|
||||
@ -65,7 +65,7 @@ msgstr "string de longitud impar"
|
||||
|
||||
#: extmod/modubinascii.c:101
|
||||
msgid "non-hex digit found"
|
||||
msgstr "se encontró un digito no hexadecimal"
|
||||
msgstr "se encontró un digito non-hex"
|
||||
|
||||
#: extmod/modubinascii.c:169
|
||||
msgid "incorrect padding"
|
||||
@ -81,7 +81,7 @@ msgstr "No se puede obtener inequívocamente sizeof escalar"
|
||||
|
||||
#: extmod/moductypes.c:397
|
||||
msgid "struct: no fields"
|
||||
msgstr "struct: no fields"
|
||||
msgstr "struct: sin campos"
|
||||
|
||||
#: extmod/moductypes.c:530
|
||||
msgid "struct: cannot index"
|
||||
@ -121,7 +121,7 @@ msgstr "certificado inválido"
|
||||
|
||||
#: extmod/modutimeq.c:131
|
||||
msgid "queue overflow"
|
||||
msgstr "desborde de queue"
|
||||
msgstr "desbordamiento de queue"
|
||||
|
||||
#: extmod/moduzlib.c:98
|
||||
msgid "compression header"
|
||||
@ -132,16 +132,14 @@ msgid "invalid dupterm index"
|
||||
msgstr "index dupterm inválido"
|
||||
|
||||
#: extmod/vfs_fat.c:426 py/moduerrno.c:150
|
||||
#, fuzzy
|
||||
msgid "Read-only filesystem"
|
||||
msgstr "sistema de archivos de Solo-Lectura"
|
||||
msgstr "Sistema de archivos de solo-Lectura"
|
||||
|
||||
#: extmod/vfs_posix_file.c:48 ports/unix/file.c:50 py/objstringio.c:43
|
||||
msgid "I/O operation on closed file"
|
||||
msgstr "Operación I/O en archivo cerrado"
|
||||
|
||||
#: lib/embed/abort_.c:8
|
||||
#, fuzzy
|
||||
msgid "abort() called"
|
||||
msgstr "se llamó abort()"
|
||||
|
||||
@ -149,7 +147,7 @@ msgstr "se llamó abort()"
|
||||
msgid "invalid arguments"
|
||||
msgstr "argumentos inválidos"
|
||||
|
||||
#: lib/utils/pyexec.c:97 py/builtinimport.c:253
|
||||
#: lib/utils/pyexec.c:97 py/builtinimport.c:251
|
||||
msgid "script compilation not supported"
|
||||
msgstr "script de compilación no soportado"
|
||||
|
||||
@ -158,21 +156,20 @@ msgid " output:\n"
|
||||
msgstr " salida:\n"
|
||||
|
||||
#: main.c:167 main.c:240
|
||||
#, fuzzy
|
||||
msgid ""
|
||||
"Auto-reload is on. Simply save files over USB to run them or enter REPL to "
|
||||
"disable.\n"
|
||||
msgstr ""
|
||||
"Auto-reload habilitado. Simplemente guarda los archivos via USB para "
|
||||
"ejecutarlos o entra REPL para desabilitarlos.\n"
|
||||
"ejecutarlos o entra al REPL para desabilitarlos.\n"
|
||||
|
||||
#: main.c:169
|
||||
msgid "Running in safe mode! Auto-reload is off.\n"
|
||||
msgstr "Ejecutando en modo seguro! Auto-recarga esta deshabilitado.\n"
|
||||
msgstr "Ejecutando en modo seguro! La auto-recarga esta deshabilitada.\n"
|
||||
|
||||
#: main.c:171 main.c:242
|
||||
msgid "Auto-reload is off.\n"
|
||||
msgstr "Auto-reload deshabilitado.\n"
|
||||
msgstr "Auto-recarga deshabilitada.\n"
|
||||
|
||||
#: main.c:185
|
||||
msgid "Running in safe mode! Not running saved code.\n"
|
||||
@ -184,7 +181,7 @@ msgstr "ADVERTENCIA: El nombre de archivo de tu código tiene dos extensiones\n"
|
||||
|
||||
#: main.c:249
|
||||
msgid "You requested starting safe mode by "
|
||||
msgstr "Solicitaste iniciar en modo seguro con "
|
||||
msgstr "Solicitaste iniciar en modo seguro por "
|
||||
|
||||
#: main.c:252
|
||||
msgid "To exit, please reset the board without "
|
||||
@ -199,29 +196,29 @@ msgstr ""
|
||||
|
||||
#: main.c:261
|
||||
msgid "Looks like our core CircuitPython code crashed hard. Whoops!\n"
|
||||
msgstr ""
|
||||
"Parece que nuestro código del núcleo CircuitPython dejó de funcionar. "
|
||||
"Whoops!\n"
|
||||
msgstr "Parece que nuestro código CircuitPython dejó de funcionar. Whoops!\n"
|
||||
|
||||
#: main.c:262
|
||||
#, fuzzy
|
||||
msgid "Please file an issue here with the contents of your CIRCUITPY drive:\n"
|
||||
msgstr ""
|
||||
"Por favor registra un problema aquí con los contenidos de tu unidad de "
|
||||
"almacenamiento CIRCUITPY:\n"
|
||||
"Por favor registra un issue en el siguiente URL con los contenidos de tu "
|
||||
"unidad de almacenamiento CIRCUITPY:\n"
|
||||
|
||||
#: main.c:265
|
||||
msgid ""
|
||||
"The microcontroller's power dipped. Please make sure your power supply "
|
||||
"provides\n"
|
||||
msgstr ""
|
||||
"La alimentación del microcontrolador cayó. Por favor asegurate de que tu "
|
||||
"fuente de alimentación provee\n"
|
||||
|
||||
#: main.c:266
|
||||
msgid ""
|
||||
"enough power for the whole circuit and press reset (after ejecting "
|
||||
"CIRCUITPY).\n"
|
||||
msgstr ""
|
||||
"suficiente poder para todo el circuito y pulsa reset (después de expulsar "
|
||||
"suficiente poder para todo el circuito y presiona reset (después de expulsar "
|
||||
"CIRCUITPY).\n"
|
||||
|
||||
#: main.c:270
|
||||
@ -261,7 +258,7 @@ msgstr "Sin bus UART por default"
|
||||
#: ports/atmel-samd/common-hal/analogio/AnalogIn.c:63
|
||||
#: ports/nrf/common-hal/analogio/AnalogIn.c:39
|
||||
msgid "Pin does not have ADC capabilities"
|
||||
msgstr "pin no tiene capacidades ADC"
|
||||
msgstr "Pin no tiene capacidad ADC"
|
||||
|
||||
#: ports/atmel-samd/common-hal/analogio/AnalogOut.c:49
|
||||
msgid "No DAC on chip"
|
||||
@ -278,7 +275,7 @@ msgstr "Pin bit clock inválido"
|
||||
|
||||
#: ports/atmel-samd/common-hal/audiobusio/I2SOut.c:153
|
||||
msgid "Bit clock and word select must share a clock unit"
|
||||
msgstr "Bit clock y Word select deben compartir la unidad de reloj"
|
||||
msgstr "Bit clock y word select deben compartir una unidad de reloj"
|
||||
|
||||
#: ports/atmel-samd/common-hal/audiobusio/I2SOut.c:156
|
||||
#: ports/atmel-samd/common-hal/audiobusio/PDMIn.c:130
|
||||
@ -299,19 +296,19 @@ msgstr "Clock unit está siendo utilizado"
|
||||
#: ports/atmel-samd/common-hal/audiobusio/I2SOut.c:240
|
||||
#: ports/atmel-samd/common-hal/audiobusio/PDMIn.c:172
|
||||
msgid "Unable to find free GCLK"
|
||||
msgstr "No se pudo encontrar un GCLK disponible"
|
||||
msgstr "No se pudo encontrar un GCLK libre"
|
||||
|
||||
#: ports/atmel-samd/common-hal/audiobusio/I2SOut.c:254
|
||||
msgid "Too many channels in sample."
|
||||
msgstr "Demasiados canales en sample"
|
||||
msgstr "Demasiados canales en sample."
|
||||
|
||||
#: ports/atmel-samd/common-hal/audiobusio/I2SOut.c:305
|
||||
#: ports/atmel-samd/common-hal/audioio/AudioOut.c:339
|
||||
#: ports/atmel-samd/common-hal/audioio/AudioOut.c:417
|
||||
msgid "No DMA channel found"
|
||||
msgstr "No se encontró el canal DMA"
|
||||
|
||||
#: ports/atmel-samd/common-hal/audiobusio/I2SOut.c:308
|
||||
#: ports/atmel-samd/common-hal/audioio/AudioOut.c:341
|
||||
#: ports/atmel-samd/common-hal/audioio/AudioOut.c:419
|
||||
msgid "Unable to allocate buffers for signed conversion"
|
||||
msgstr "No se pudieron asignar buffers para la conversión con signo"
|
||||
|
||||
@ -321,52 +318,53 @@ msgstr "Pin clock inválido"
|
||||
|
||||
#: ports/atmel-samd/common-hal/audiobusio/PDMIn.c:134
|
||||
msgid "Only 8 or 16 bit mono with "
|
||||
msgstr "Solo mono de 8 o 16 bit con"
|
||||
msgstr "Solo mono de 8 o 16 bit con "
|
||||
|
||||
#: ports/atmel-samd/common-hal/audiobusio/PDMIn.c:167
|
||||
msgid "sampling rate out of range"
|
||||
msgstr "velocidad de muestreo fuera de rango"
|
||||
msgstr "frecuencia de muestreo fuera de rango"
|
||||
|
||||
#: ports/atmel-samd/common-hal/audioio/AudioOut.c:69
|
||||
#: ports/atmel-samd/common-hal/audioio/AudioOut.c:132
|
||||
msgid "DAC already in use"
|
||||
msgstr "DAC ya está siendo utilizado"
|
||||
|
||||
#: ports/atmel-samd/common-hal/audioio/AudioOut.c:73
|
||||
#: ports/atmel-samd/common-hal/audioio/AudioOut.c:136
|
||||
msgid "Right channel unsupported"
|
||||
msgstr "El canal derecho no tiene soporte"
|
||||
msgstr "Canal derecho no soportado"
|
||||
|
||||
#: ports/atmel-samd/common-hal/audioio/AudioOut.c:76
|
||||
#: ports/atmel-samd/common-hal/audioio/AudioOut.c:139
|
||||
#: ports/atmel-samd/common-hal/pulseio/PWMOut.c:116
|
||||
#: ports/atmel-samd/common-hal/touchio/TouchIn.c:65
|
||||
msgid "Invalid pin"
|
||||
msgstr "pin inválido"
|
||||
msgstr "Pin inválido"
|
||||
|
||||
#: ports/atmel-samd/common-hal/audioio/AudioOut.c:84
|
||||
#: ports/atmel-samd/common-hal/audioio/AudioOut.c:147
|
||||
msgid "Invalid pin for left channel"
|
||||
msgstr "Pin inválido para canal izquierdo"
|
||||
|
||||
#: ports/atmel-samd/common-hal/audioio/AudioOut.c:88
|
||||
#: ports/atmel-samd/common-hal/audioio/AudioOut.c:151
|
||||
msgid "Invalid pin for right channel"
|
||||
msgstr "Pin inválido para canal derecho"
|
||||
|
||||
#: ports/atmel-samd/common-hal/audioio/AudioOut.c:91
|
||||
#: ports/atmel-samd/common-hal/audioio/AudioOut.c:154
|
||||
msgid "Cannot output both channels on the same pin"
|
||||
msgstr "No es posible utilizar el mismo pin para ambos canales"
|
||||
msgstr "No se puede tener ambos canales en el mismo pin"
|
||||
|
||||
#: ports/atmel-samd/common-hal/audioio/AudioOut.c:176
|
||||
#: ports/atmel-samd/common-hal/audioio/AudioOut.c:243
|
||||
#: ports/atmel-samd/common-hal/pulseio/PWMOut.c:189
|
||||
#: ports/atmel-samd/common-hal/pulseio/PulseOut.c:110
|
||||
#: ports/nrf/common-hal/pulseio/PulseOut.c:107
|
||||
msgid "All timers in use"
|
||||
msgstr "Todos los timers están siendo utilizados"
|
||||
msgstr "Todos los timers en uso"
|
||||
|
||||
#: ports/atmel-samd/common-hal/audioio/AudioOut.c:218
|
||||
#: ports/atmel-samd/common-hal/audioio/AudioOut.c:285
|
||||
msgid "All event channels in use"
|
||||
msgstr "Todos los canales de eventos están siendo utilizados"
|
||||
msgstr "Todos los event channels en uso"
|
||||
|
||||
#: ports/atmel-samd/common-hal/audioio/AudioOut.c:297
|
||||
#: ports/atmel-samd/common-hal/audioio/AudioOut.c:375
|
||||
#, c-format
|
||||
msgid "Sample rate too high. It must be less than %d"
|
||||
msgstr "Frecuencia de muestreo demasiado alta. Debe ser menor que %d"
|
||||
msgstr "Frecuencia de muestreo demasiado alta. Debe ser menor a %d"
|
||||
|
||||
#: ports/atmel-samd/common-hal/busio/I2C.c:71
|
||||
msgid "Not enough pins available"
|
||||
@ -376,7 +374,7 @@ msgstr "No hay suficientes pines disponibles"
|
||||
#: ports/atmel-samd/common-hal/busio/SPI.c:132
|
||||
#: ports/atmel-samd/common-hal/busio/UART.c:119
|
||||
#: ports/atmel-samd/common-hal/i2cslave/I2CSlave.c:45
|
||||
#: ports/nrf/common-hal/busio/I2C.c:81
|
||||
#: ports/nrf/common-hal/busio/I2C.c:82
|
||||
msgid "Invalid pins"
|
||||
msgstr "pines inválidos"
|
||||
|
||||
@ -386,25 +384,25 @@ msgstr "SDA o SCL necesitan una pull up"
|
||||
|
||||
#: ports/atmel-samd/common-hal/busio/I2C.c:121
|
||||
msgid "Unsupported baudrate"
|
||||
msgstr "Baudrate sin soporte"
|
||||
msgstr "Baudrate no soportado"
|
||||
|
||||
#: ports/atmel-samd/common-hal/busio/UART.c:66
|
||||
msgid "bytes > 8 bits not supported"
|
||||
msgstr "bytes > 8 bits no son soportados"
|
||||
msgstr "bytes > 8 bits no soportados"
|
||||
|
||||
#: ports/atmel-samd/common-hal/busio/UART.c:72
|
||||
#: ports/nrf/common-hal/busio/UART.c:82
|
||||
msgid "tx and rx cannot both be None"
|
||||
msgstr "tx y rx no pueden ser ambos None"
|
||||
msgstr "Ambos tx y rx no pueden ser None"
|
||||
|
||||
#: ports/atmel-samd/common-hal/busio/UART.c:145
|
||||
#: ports/nrf/common-hal/busio/UART.c:115
|
||||
msgid "Failed to allocate RX buffer"
|
||||
msgstr "Fallo la asignación del buffer RX"
|
||||
msgstr "Ha fallado la asignación del buffer RX"
|
||||
|
||||
#: ports/atmel-samd/common-hal/busio/UART.c:153
|
||||
msgid "Could not initialize UART"
|
||||
msgstr "No se pudo inicializar la UART"
|
||||
msgstr "No se puede inicializar la UART"
|
||||
|
||||
#: ports/atmel-samd/common-hal/busio/UART.c:240
|
||||
#: ports/nrf/common-hal/busio/UART.c:149
|
||||
@ -419,16 +417,16 @@ msgstr "Sin pin TX"
|
||||
#: ports/atmel-samd/common-hal/digitalio/DigitalInOut.c:170
|
||||
#: ports/nrf/common-hal/digitalio/DigitalInOut.c:142
|
||||
msgid "Cannot get pull while in output mode"
|
||||
msgstr "No se puede obtener pull mientras en modo de salida"
|
||||
msgstr "No puede ser pull mientras este en modo de salida"
|
||||
|
||||
#: ports/atmel-samd/common-hal/microcontroller/__init__.c:74
|
||||
#: ports/esp8266/common-hal/microcontroller/__init__.c:64
|
||||
msgid "Cannot reset into bootloader because no bootloader is present."
|
||||
msgstr "No se puede reiniciar en bootloader porque no hay bootloader presente."
|
||||
msgstr "No se puede reiniciar a bootloader porque no hay bootloader presente."
|
||||
|
||||
#: ports/atmel-samd/common-hal/pulseio/PWMOut.c:120
|
||||
#: ports/atmel-samd/common-hal/pulseio/PWMOut.c:369
|
||||
#: ports/nrf/common-hal/pulseio/PWMOut.c:120
|
||||
#: ports/nrf/common-hal/pulseio/PWMOut.c:119
|
||||
#: ports/nrf/common-hal/pulseio/PWMOut.c:233
|
||||
msgid "Invalid PWM frequency"
|
||||
msgstr "Frecuencia PWM inválida"
|
||||
@ -439,7 +437,7 @@ msgstr "Todos los timers para este pin están siendo utilizados"
|
||||
|
||||
#: ports/atmel-samd/common-hal/pulseio/PulseIn.c:110
|
||||
msgid "No hardware support on pin"
|
||||
msgstr "pin no tiene soporte en hardware"
|
||||
msgstr "Sin soporte de hardware en pin"
|
||||
|
||||
#: ports/atmel-samd/common-hal/pulseio/PulseIn.c:113
|
||||
msgid "EXTINT channel already in use"
|
||||
@ -449,12 +447,12 @@ msgstr "El canal EXTINT ya está siendo utilizado"
|
||||
#: ports/esp8266/common-hal/pulseio/PulseIn.c:86
|
||||
#, c-format
|
||||
msgid "Failed to allocate RX buffer of %d bytes"
|
||||
msgstr "Fallo la asignación del buffer RX de %d bytes"
|
||||
msgstr "Falló la asignación del buffer RX de %d bytes"
|
||||
|
||||
#: ports/atmel-samd/common-hal/pulseio/PulseIn.c:205
|
||||
#: ports/esp8266/common-hal/pulseio/PulseIn.c:151
|
||||
msgid "pop from an empty PulseIn"
|
||||
msgstr "pop en un PulseIn vacío"
|
||||
msgstr "pop de un PulseIn vacío"
|
||||
|
||||
#: ports/atmel-samd/common-hal/pulseio/PulseIn.c:237
|
||||
#: ports/esp8266/common-hal/pulseio/PulseIn.c:182 py/obj.c:420
|
||||
@ -475,7 +473,7 @@ msgstr "El canal EXTINT ya está siendo utilizado"
|
||||
|
||||
#: ports/atmel-samd/common-hal/rtc/RTC.c:101
|
||||
msgid "calibration value out of range +/-127"
|
||||
msgstr "Valor de calibración fuera de rango +/-127"
|
||||
msgstr "Valor de calibración fuera del rango +/-127"
|
||||
|
||||
#: ports/atmel-samd/common-hal/storage/__init__.c:48
|
||||
msgid "Cannot remount '/' when USB is active."
|
||||
@ -503,11 +501,11 @@ msgstr "Error USB"
|
||||
|
||||
#: ports/esp8266/common-hal/analogio/AnalogIn.c:43
|
||||
msgid "Pin %q does not have ADC capabilities"
|
||||
msgstr "Pin %q no tiene capacidades ADC"
|
||||
msgstr "Pin %q no tiene capacidades de ADC"
|
||||
|
||||
#: ports/esp8266/common-hal/analogio/AnalogOut.c:39
|
||||
msgid "No hardware support for analog out."
|
||||
msgstr "Sin soporte de hardware para salida análoga"
|
||||
msgstr "Sin soporte de hardware para analog out"
|
||||
|
||||
#: ports/esp8266/common-hal/busio/SPI.c:72
|
||||
msgid "Pins not valid for SPI"
|
||||
@ -527,21 +525,21 @@ msgstr "stop bits inválidos"
|
||||
|
||||
#: ports/esp8266/common-hal/digitalio/DigitalInOut.c:200
|
||||
msgid "ESP8266 does not support pull down."
|
||||
msgstr "ESP8266 no tiene soporte para pull down"
|
||||
msgstr "ESP8266 no soporta pull down."
|
||||
|
||||
#: ports/esp8266/common-hal/digitalio/DigitalInOut.c:210
|
||||
msgid "GPIO16 does not support pull up."
|
||||
msgstr "GPIO16 no tiene soporte para pull up."
|
||||
msgstr "GPIO16 no soporta pull up."
|
||||
|
||||
#: ports/esp8266/common-hal/microcontroller/__init__.c:66
|
||||
msgid "ESP8226 does not support safe mode."
|
||||
msgstr "ESP8226 no tiene soporte para modo seguro"
|
||||
msgstr "ESP8226 no soporta modo seguro."
|
||||
|
||||
#: ports/esp8266/common-hal/pulseio/PWMOut.c:54
|
||||
#: ports/esp8266/common-hal/pulseio/PWMOut.c:113
|
||||
#, c-format
|
||||
msgid "Maximum PWM frequency is %dhz."
|
||||
msgstr "La frecuencia máxima del PWM es %dhz"
|
||||
msgstr "La frecuencia máxima del PWM es %dhz."
|
||||
|
||||
#: ports/esp8266/common-hal/pulseio/PWMOut.c:57
|
||||
#: ports/esp8266/common-hal/pulseio/PWMOut.c:116
|
||||
@ -552,7 +550,7 @@ msgstr "La frecuencia mínima del PWM es 1hz"
|
||||
#, c-format
|
||||
msgid "Multiple PWM frequencies not supported. PWM already set to %dhz."
|
||||
msgstr ""
|
||||
"PWM de múltiples frecuencias no tiene soporte. El PWM ya se estableció a %dhz"
|
||||
"PWM de múltiples frecuencias no soportado. El PWM ya se estableció a %dhz"
|
||||
|
||||
#: ports/esp8266/common-hal/pulseio/PWMOut.c:77 ports/esp8266/machine_pwm.c:70
|
||||
#, c-format
|
||||
@ -561,11 +559,11 @@ msgstr "El pin %d no soporta PWM"
|
||||
|
||||
#: ports/esp8266/common-hal/pulseio/PulseIn.c:78
|
||||
msgid "No PulseIn support for %q"
|
||||
msgstr "%q no tiene soporte para PulseIn"
|
||||
msgstr "Sin soporte PulseIn para %q"
|
||||
|
||||
#: ports/esp8266/common-hal/storage/__init__.c:34
|
||||
msgid "Unable to remount filesystem"
|
||||
msgstr "No se pudo montar de nuevo el sistema de archivos"
|
||||
msgstr "Incapaz de montar de nuevo el sistema de archivos"
|
||||
|
||||
#: ports/esp8266/common-hal/storage/__init__.c:38
|
||||
msgid "Use esptool to erase flash and re-upload Python instead"
|
||||
@ -590,7 +588,7 @@ msgstr "esperando un pin"
|
||||
|
||||
#: ports/esp8266/machine_pin.c:284
|
||||
msgid "Pin(16) doesn't support pull"
|
||||
msgstr "Pin(16) no tiene soporte para pull"
|
||||
msgstr "Pin(16) no soporta para pull"
|
||||
|
||||
#: ports/esp8266/machine_pin.c:323
|
||||
msgid "invalid pin"
|
||||
@ -598,7 +596,7 @@ msgstr "pin inválido"
|
||||
|
||||
#: ports/esp8266/machine_pin.c:389
|
||||
msgid "pin does not have IRQ capabilities"
|
||||
msgstr "pin no tiene capacidades IRQ"
|
||||
msgstr "pin sin capacidades IRQ"
|
||||
|
||||
#: ports/esp8266/machine_rtc.c:185
|
||||
msgid "buffer too long"
|
||||
@ -625,8 +623,7 @@ msgstr "len debe de ser múltiple de 4"
|
||||
#: ports/esp8266/modesp.c:274
|
||||
#, c-format
|
||||
msgid "memory allocation failed, allocating %u bytes for native code"
|
||||
msgstr ""
|
||||
"la asignación de memoria ha fallado, asignando %u bytes para código nativo"
|
||||
msgstr "falló la asignación de memoria, asignando %u bytes para código nativo"
|
||||
|
||||
#: ports/esp8266/modesp.c:317
|
||||
msgid "flash location must be below 1MByte"
|
||||
@ -638,11 +635,11 @@ msgstr "la frecuencia solo puede ser 80MHz o 160MHz"
|
||||
|
||||
#: ports/esp8266/modnetwork.c:61
|
||||
msgid "AP required"
|
||||
msgstr "AP necesario"
|
||||
msgstr "AP requerido"
|
||||
|
||||
#: ports/esp8266/modnetwork.c:61
|
||||
msgid "STA required"
|
||||
msgstr "STA necesario"
|
||||
msgstr "STA requerido"
|
||||
|
||||
#: ports/esp8266/modnetwork.c:87
|
||||
msgid "Cannot update i/f status"
|
||||
@ -712,13 +709,13 @@ msgstr "parámetro config desconocido"
|
||||
msgid "AnalogOut functionality not supported"
|
||||
msgstr "Funcionalidad AnalogOut no soportada"
|
||||
|
||||
#: ports/nrf/common-hal/busio/I2C.c:95
|
||||
#: ports/nrf/common-hal/busio/I2C.c:96
|
||||
msgid "All I2C peripherals are in use"
|
||||
msgstr "Todos los timers están siendo utilizados"
|
||||
msgstr "Todos los timers están siendo usados"
|
||||
|
||||
#: ports/nrf/common-hal/busio/SPI.c:115
|
||||
msgid "All SPI peripherals are in use"
|
||||
msgstr "Todos los timers están siendo utilizados"
|
||||
msgstr "Todos los timers están siendo usados"
|
||||
|
||||
#: ports/nrf/common-hal/busio/UART.c:48
|
||||
#, c-format
|
||||
@ -746,10 +743,9 @@ msgstr "busio.UART no disponible"
|
||||
msgid "Can not get temperature. status: 0x%02x"
|
||||
msgstr "No se puede obtener la temperatura. status: 0x%02x"
|
||||
|
||||
#: ports/nrf/common-hal/pulseio/PWMOut.c:162
|
||||
#, fuzzy
|
||||
#: ports/nrf/common-hal/pulseio/PWMOut.c:161
|
||||
msgid "All PWM peripherals are in use"
|
||||
msgstr "Todos los timers están siendo utilizados"
|
||||
msgstr "Todos los periféricos PWM en uso"
|
||||
|
||||
#: ports/nrf/drivers/bluetooth/ble_drv.c:199
|
||||
msgid "Cannot apply GAP parameters."
|
||||
@ -765,16 +761,16 @@ msgstr "No se puede consultar la dirección del dispositivo."
|
||||
|
||||
#: ports/nrf/drivers/bluetooth/ble_drv.c:264
|
||||
msgid "Can not add Vendor Specific 128-bit UUID."
|
||||
msgstr "No se puede agregar el UUID de 128-bits Especifico del Vendedor."
|
||||
msgstr "No se puede agregar el Vendor Specific 128-bit UUID."
|
||||
|
||||
#: ports/nrf/drivers/bluetooth/ble_drv.c:284
|
||||
#: ports/nrf/drivers/bluetooth/ble_drv.c:298
|
||||
msgid "Can not add Service."
|
||||
msgstr "No se puede agregar el Servicio"
|
||||
msgstr "No se puede agregar el Servicio."
|
||||
|
||||
#: ports/nrf/drivers/bluetooth/ble_drv.c:373
|
||||
msgid "Can not add Characteristic."
|
||||
msgstr "No se puede agregar la Característica"
|
||||
msgstr "No se puede agregar la Característica."
|
||||
|
||||
#: ports/nrf/drivers/bluetooth/ble_drv.c:400
|
||||
msgid "Can not apply device name in the stack."
|
||||
@ -854,15 +850,15 @@ msgstr "Longitud de string UUID inválida"
|
||||
|
||||
#: ports/unix/modffi.c:138
|
||||
msgid "Unknown type"
|
||||
msgstr ""
|
||||
msgstr "Tipo desconocido"
|
||||
|
||||
#: ports/unix/modffi.c:207 ports/unix/modffi.c:265
|
||||
msgid "Error in ffi_prep_cif"
|
||||
msgstr ""
|
||||
msgstr "Error en ffi_prep_cif"
|
||||
|
||||
#: ports/unix/modffi.c:270
|
||||
msgid "ffi_prep_closure_loc"
|
||||
msgstr ""
|
||||
msgstr "ffi_prep_closure_loc"
|
||||
|
||||
#: ports/unix/modffi.c:413
|
||||
msgid "Don't know how to pass object to native function"
|
||||
@ -871,30 +867,30 @@ msgstr ""
|
||||
#: ports/unix/modusocket.c:474
|
||||
#, c-format
|
||||
msgid "[addrinfo error %d]"
|
||||
msgstr ""
|
||||
msgstr "[addrinfo error %d]"
|
||||
|
||||
#: py/argcheck.c:44
|
||||
msgid "function does not take keyword arguments"
|
||||
msgstr ""
|
||||
msgstr "la función no tiene argumentos por palabra clave"
|
||||
|
||||
#: py/argcheck.c:54 py/bc.c:85 py/objnamedtuple.c:104
|
||||
#, c-format
|
||||
msgid "function takes %d positional arguments but %d were given"
|
||||
msgstr ""
|
||||
msgstr "la función toma %d argumentos posicionales pero le fueron dados %d"
|
||||
|
||||
#: py/argcheck.c:64
|
||||
#, c-format
|
||||
msgid "function missing %d required positional arguments"
|
||||
msgstr ""
|
||||
msgstr "a la función le hacen falta %d argumentos posicionales requeridos"
|
||||
|
||||
#: py/argcheck.c:72
|
||||
#, c-format
|
||||
msgid "function expected at most %d arguments, got %d"
|
||||
msgstr ""
|
||||
msgstr "la función esperaba a lo sumo %d argumentos, tiene %d"
|
||||
|
||||
#: py/argcheck.c:97
|
||||
msgid "'%q' argument required"
|
||||
msgstr ""
|
||||
msgstr "argumento '%q' requerido"
|
||||
|
||||
#: py/argcheck.c:122
|
||||
msgid "extra positional arguments given"
|
||||
@ -918,11 +914,11 @@ msgstr ""
|
||||
|
||||
#: py/bc.c:197 py/bc.c:215
|
||||
msgid "unexpected keyword argument"
|
||||
msgstr ""
|
||||
msgstr "argumento por palabra clave inesperado"
|
||||
|
||||
#: py/bc.c:199
|
||||
msgid "keywords must be strings"
|
||||
msgstr ""
|
||||
msgstr "palabras clave deben ser strings"
|
||||
|
||||
#: py/bc.c:206 py/objnamedtuple.c:138
|
||||
msgid "function got multiple values for argument '%q'"
|
||||
@ -953,19 +949,19 @@ msgstr ""
|
||||
msgid "bad compile mode"
|
||||
msgstr ""
|
||||
|
||||
#: py/builtinimport.c:338
|
||||
#: py/builtinimport.c:336
|
||||
msgid "cannot perform relative import"
|
||||
msgstr ""
|
||||
|
||||
#: py/builtinimport.c:422 py/builtinimport.c:534
|
||||
#: py/builtinimport.c:420 py/builtinimport.c:532
|
||||
msgid "module not found"
|
||||
msgstr "módulo no encontrado"
|
||||
|
||||
#: py/builtinimport.c:425 py/builtinimport.c:537
|
||||
#: py/builtinimport.c:423 py/builtinimport.c:535
|
||||
msgid "no module named '%q'"
|
||||
msgstr "ningún módulo se llama '%q'"
|
||||
|
||||
#: py/builtinimport.c:512
|
||||
#: py/builtinimport.c:510
|
||||
msgid "relative import"
|
||||
msgstr "import relativo"
|
||||
|
||||
@ -1134,7 +1130,7 @@ msgid "'%s' expects a register"
|
||||
msgstr ""
|
||||
|
||||
#: py/emitinlinethumb.c:211
|
||||
#, fuzzy, c-format
|
||||
#, c-format
|
||||
msgid "'%s' expects a special register"
|
||||
msgstr "ord espera un carácter"
|
||||
|
||||
@ -1178,7 +1174,6 @@ msgid "unsupported Thumb instruction '%s' with %d arguments"
|
||||
msgstr ""
|
||||
|
||||
#: py/emitinlinethumb.c:810
|
||||
#, fuzzy
|
||||
msgid "branch not in range"
|
||||
msgstr "El argumento de chr() no esta en el rango(256)"
|
||||
|
||||
@ -1345,14 +1340,12 @@ msgid "File exists"
|
||||
msgstr ""
|
||||
|
||||
#: py/moduerrno.c:148
|
||||
#, fuzzy
|
||||
msgid "Unsupported operation"
|
||||
msgstr "El pin %d no soporta PWM"
|
||||
msgstr "Operacion no soportada"
|
||||
|
||||
#: py/moduerrno.c:149
|
||||
#, fuzzy
|
||||
msgid "Invalid argument"
|
||||
msgstr "argumentos inválidos"
|
||||
msgstr "Argumento inválido"
|
||||
|
||||
#: py/obj.c:90
|
||||
msgid "Traceback (most recent call last):\n"
|
||||
@ -1424,9 +1417,8 @@ msgid "%q indices must be integers, not %s"
|
||||
msgstr ""
|
||||
|
||||
#: py/obj.c:423
|
||||
#, fuzzy
|
||||
msgid "%q index out of range"
|
||||
msgstr "struct: index fuera de rango"
|
||||
msgstr "%w index fuera de rango"
|
||||
|
||||
#: py/obj.c:455
|
||||
msgid "object has no len"
|
||||
@ -1438,9 +1430,8 @@ msgid "object of type '%s' has no len()"
|
||||
msgstr ""
|
||||
|
||||
#: py/obj.c:496
|
||||
#, fuzzy
|
||||
msgid "object does not support item deletion"
|
||||
msgstr "ESP8226 no soporta modo seguro"
|
||||
msgstr "object no soporta supresión de item"
|
||||
|
||||
#: py/obj.c:499
|
||||
#, c-format
|
||||
@ -1499,9 +1490,8 @@ msgid "full"
|
||||
msgstr ""
|
||||
|
||||
#: py/objdeque.c:127
|
||||
#, fuzzy
|
||||
msgid "empty"
|
||||
msgstr "heap vacío"
|
||||
msgstr "vacío"
|
||||
|
||||
#: py/objdict.c:314
|
||||
msgid "popitem(): dictionary is empty"
|
||||
@ -1512,9 +1502,8 @@ msgid "dict update sequence has wrong length"
|
||||
msgstr ""
|
||||
|
||||
#: py/objfloat.c:308 py/parsenum.c:331
|
||||
#, fuzzy
|
||||
msgid "complex values not supported"
|
||||
msgstr "script de compilación no soportado"
|
||||
msgstr "valores complejos no soportados"
|
||||
|
||||
#: py/objgenerator.c:108
|
||||
msgid "can't send non-None value to a just-started generator"
|
||||
@ -1545,9 +1534,8 @@ msgid "float too big"
|
||||
msgstr ""
|
||||
|
||||
#: py/objint.c:328
|
||||
#, fuzzy
|
||||
msgid "long int not supported in this build"
|
||||
msgstr "AnalogOut no es soportado por el pin dado"
|
||||
msgstr "long int no soportado en esta compilación"
|
||||
|
||||
#: py/objint.c:334 py/objint.c:340 py/objint.c:350 py/objint.c:358
|
||||
msgid "small int overflow"
|
||||
@ -1586,9 +1574,8 @@ msgid "can't set attribute"
|
||||
msgstr ""
|
||||
|
||||
#: py/objobject.c:55
|
||||
#, fuzzy
|
||||
msgid "__new__ arg must be a user-type"
|
||||
msgstr "heap debe ser una lista"
|
||||
msgstr "__new__ arg debe ser un user-type"
|
||||
|
||||
#: py/objrange.c:110
|
||||
msgid "zero step"
|
||||
@ -1599,9 +1586,8 @@ msgid "pop from an empty set"
|
||||
msgstr ""
|
||||
|
||||
#: py/objslice.c:66
|
||||
#, fuzzy
|
||||
msgid "Length must be an int"
|
||||
msgstr "heap debe ser una lista"
|
||||
msgstr "Length debe ser un int"
|
||||
|
||||
#: py/objslice.c:71
|
||||
msgid "Length must be non-negative"
|
||||
@ -1616,9 +1602,8 @@ msgid "Cannot subclass slice"
|
||||
msgstr ""
|
||||
|
||||
#: py/objstr.c:261
|
||||
#, fuzzy
|
||||
msgid "bytes value out of range"
|
||||
msgstr "Valor de calibración fuera de rango +/-127"
|
||||
msgstr "valor de bytes fuera de rango"
|
||||
|
||||
#: py/objstr.c:270
|
||||
msgid "wrong number of arguments"
|
||||
@ -1629,18 +1614,16 @@ msgid "join expects a list of str/bytes objects consistent with self object"
|
||||
msgstr ""
|
||||
|
||||
#: py/objstr.c:542 py/objstr.c:647 py/objstr.c:1744
|
||||
#, fuzzy
|
||||
msgid "empty separator"
|
||||
msgstr "heap vacío"
|
||||
msgstr "separator vacío"
|
||||
|
||||
#: py/objstr.c:641
|
||||
msgid "rsplit(None,n)"
|
||||
msgstr ""
|
||||
|
||||
#: py/objstr.c:713
|
||||
#, fuzzy
|
||||
msgid "substring not found"
|
||||
msgstr "módulo no encontrado"
|
||||
msgstr "substring no encontrado"
|
||||
|
||||
#: py/objstr.c:770
|
||||
msgid "start/end indices"
|
||||
@ -1681,14 +1664,12 @@ msgid ""
|
||||
msgstr ""
|
||||
|
||||
#: py/objstr.c:1055 py/objstr.c:1083
|
||||
#, fuzzy
|
||||
msgid "tuple index out of range"
|
||||
msgstr "struct: index fuera de rango"
|
||||
msgstr "tuple index fuera de rango"
|
||||
|
||||
#: py/objstr.c:1071
|
||||
#, fuzzy
|
||||
msgid "attributes not supported yet"
|
||||
msgstr "bytes > 8 bits no soportados"
|
||||
msgstr "atributos aún no soportados"
|
||||
|
||||
#: py/objstr.c:1079
|
||||
msgid ""
|
||||
@ -1696,9 +1677,8 @@ msgid ""
|
||||
msgstr ""
|
||||
|
||||
#: py/objstr.c:1171
|
||||
#, fuzzy
|
||||
msgid "invalid format specifier"
|
||||
msgstr "formato inválido"
|
||||
msgstr "especificador de formato inválido"
|
||||
|
||||
#: py/objstr.c:1192
|
||||
msgid "sign not allowed in string format specifier"
|
||||
@ -1736,9 +1716,8 @@ msgid "incomplete format key"
|
||||
msgstr ""
|
||||
|
||||
#: py/objstr.c:1482
|
||||
#, fuzzy
|
||||
msgid "incomplete format"
|
||||
msgstr "formato inválido"
|
||||
msgstr "formato incompleto"
|
||||
|
||||
#: py/objstr.c:1490
|
||||
msgid "not enough arguments for format string"
|
||||
@ -1776,9 +1755,8 @@ msgid "string indices must be integers, not %s"
|
||||
msgstr ""
|
||||
|
||||
#: py/objstrunicode.c:145 py/objstrunicode.c:164
|
||||
#, fuzzy
|
||||
msgid "string index out of range"
|
||||
msgstr "struct: index fuera de rango"
|
||||
msgstr "string index fuera de rango"
|
||||
|
||||
#: py/objtype.c:358
|
||||
msgid "__init__() should return None"
|
||||
@ -1827,9 +1805,8 @@ msgid "type '%q' is not an acceptable base type"
|
||||
msgstr ""
|
||||
|
||||
#: py/objtype.c:1137
|
||||
#, fuzzy
|
||||
msgid "multiple inheritance not supported"
|
||||
msgstr "operación I2C no soportada"
|
||||
msgstr "herencia multiple no soportada"
|
||||
|
||||
#: py/objtype.c:1164
|
||||
msgid "multiple bases have instance lay-out conflict"
|
||||
@ -1848,14 +1825,12 @@ msgid "issubclass() arg 1 must be a class"
|
||||
msgstr ""
|
||||
|
||||
#: py/parse.c:726
|
||||
#, fuzzy
|
||||
msgid "constant must be an integer"
|
||||
msgstr "heap debe ser una lista"
|
||||
msgstr "constant debe ser un entero"
|
||||
|
||||
#: py/parse.c:868
|
||||
#, fuzzy
|
||||
msgid "Unable to init parser"
|
||||
msgstr "No se pudo encontrar un GCLK disponible"
|
||||
msgstr "Incapaz de inicializar el parser"
|
||||
|
||||
#: py/parse.c:1170
|
||||
msgid "unexpected indent"
|
||||
@ -1871,7 +1846,7 @@ msgstr ""
|
||||
|
||||
#: py/parsenum.c:151
|
||||
msgid "invalid syntax for integer"
|
||||
msgstr "formato inválido"
|
||||
msgstr "sintaxis inválido para entero"
|
||||
|
||||
#: py/parsenum.c:155
|
||||
#, c-format
|
||||
@ -1880,11 +1855,11 @@ msgstr ""
|
||||
|
||||
#: py/parsenum.c:339
|
||||
msgid "invalid syntax for number"
|
||||
msgstr "argumentos inválidos"
|
||||
msgstr "sintaxis inválido para número"
|
||||
|
||||
#: py/parsenum.c:342
|
||||
msgid "decimal numbers not supported"
|
||||
msgstr "bytes > 8 bits no son soportados"
|
||||
msgstr "números decimales no soportados"
|
||||
|
||||
#: py/persistentcode.c:223
|
||||
msgid ""
|
||||
@ -1898,7 +1873,7 @@ msgstr ""
|
||||
|
||||
#: py/runtime.c:206
|
||||
msgid "name not defined"
|
||||
msgstr "módulo no encontrado"
|
||||
msgstr "name no definido"
|
||||
|
||||
#: py/runtime.c:209
|
||||
msgid "name '%q' is not defined"
|
||||
@ -1973,9 +1948,8 @@ msgid "exceptions must derive from BaseException"
|
||||
msgstr ""
|
||||
|
||||
#: py/runtime.c:1430
|
||||
#, fuzzy
|
||||
msgid "cannot import name %q"
|
||||
msgstr "ningún módulo se llama '%q'"
|
||||
msgstr "no se puede importar name '%q'"
|
||||
|
||||
#: py/runtime.c:1535
|
||||
msgid "memory allocation failed, heap is locked"
|
||||
@ -1995,9 +1969,8 @@ msgid "object not in sequence"
|
||||
msgstr ""
|
||||
|
||||
#: py/stream.c:96
|
||||
#, fuzzy
|
||||
msgid "stream operation not supported"
|
||||
msgstr "operación I2C no soportada"
|
||||
msgstr "operación stream no soportada"
|
||||
|
||||
#: py/vm.c:255
|
||||
msgid "local variable referenced before assignment"
|
||||
@ -2036,7 +2009,7 @@ msgid "AnalogOut is only 16 bits. Value must be less than 65536."
|
||||
msgstr ""
|
||||
|
||||
#: shared-bindings/audiobusio/I2SOut.c:225
|
||||
#: shared-bindings/audioio/AudioOut.c:223
|
||||
#: shared-bindings/audioio/AudioOut.c:226
|
||||
msgid "Not playing"
|
||||
msgstr ""
|
||||
|
||||
@ -2074,34 +2047,32 @@ msgid ""
|
||||
msgstr ""
|
||||
|
||||
#: shared-bindings/audioio/Mixer.c:94
|
||||
#, fuzzy
|
||||
msgid "Invalid voice count"
|
||||
msgstr "Dirección inválida."
|
||||
msgstr "Cuenta de voces inválida"
|
||||
|
||||
#: shared-bindings/audioio/Mixer.c:99
|
||||
#, fuzzy
|
||||
msgid "Invalid channel count"
|
||||
msgstr "argumentos inválidos"
|
||||
msgstr "Cuenta de canales inválida"
|
||||
|
||||
#: shared-bindings/audioio/Mixer.c:103
|
||||
#, fuzzy
|
||||
msgid "Sample rate must be positive"
|
||||
msgstr "STA debe estar activo"
|
||||
msgstr "Sample rate debe ser positivo"
|
||||
|
||||
#: shared-bindings/audioio/Mixer.c:107
|
||||
#, fuzzy
|
||||
msgid "bits_per_sample must be 8 or 16"
|
||||
msgstr "bits debe ser 8"
|
||||
msgstr "bits_per_sample debe ser 8 o 16"
|
||||
|
||||
#: shared-bindings/audioio/RawSample.c:98
|
||||
msgid ""
|
||||
"sample_source buffer must be a bytearray or array of type 'h', 'H', 'b' or "
|
||||
"'B'"
|
||||
msgstr ""
|
||||
"sample_source buffer debe ser un bytearray o un array de tipo 'h', 'H', 'b' "
|
||||
"o'B'"
|
||||
|
||||
#: shared-bindings/audioio/RawSample.c:104
|
||||
msgid "buffer must be a bytes-like object"
|
||||
msgstr ""
|
||||
msgstr "buffer debe de ser un objeto bytes-like"
|
||||
|
||||
#: shared-bindings/audioio/WaveFile.c:78
|
||||
#: shared-bindings/displayio/OnDiskBitmap.c:85
|
||||
@ -2146,7 +2117,6 @@ msgid "stop must be 1 or 2"
|
||||
msgstr ""
|
||||
|
||||
#: shared-bindings/digitalio/DigitalInOut.c:211
|
||||
#, fuzzy
|
||||
msgid "Invalid direction."
|
||||
msgstr "Dirección inválida."
|
||||
|
||||
@ -2248,7 +2218,7 @@ msgstr ""
|
||||
|
||||
#: shared-bindings/microcontroller/Pin.c:89
|
||||
#: shared-bindings/neopixel_write/__init__.c:67
|
||||
#: shared-bindings/pulseio/PulseOut.c:75
|
||||
#: shared-bindings/pulseio/PulseOut.c:76
|
||||
msgid "Expected a %q"
|
||||
msgstr ""
|
||||
|
||||
@ -2307,11 +2277,10 @@ msgid "index must be int"
|
||||
msgstr ""
|
||||
|
||||
#: shared-bindings/pulseio/PulseIn.c:293
|
||||
#, fuzzy
|
||||
msgid "Read-only"
|
||||
msgstr "Solo lectura"
|
||||
msgstr "Solo-lectura"
|
||||
|
||||
#: shared-bindings/pulseio/PulseOut.c:134
|
||||
#: shared-bindings/pulseio/PulseOut.c:135
|
||||
msgid "Array must contain halfwords (type 'H')"
|
||||
msgstr ""
|
||||
|
||||
@ -2340,7 +2309,7 @@ msgstr ""
|
||||
msgid "RTC calibration is not supported on this board"
|
||||
msgstr ""
|
||||
|
||||
#: shared-bindings/socket/__init__.c:516 shared-module/network/__init__.c:64
|
||||
#: shared-bindings/socket/__init__.c:516 shared-module/network/__init__.c:81
|
||||
msgid "no available NIC"
|
||||
msgstr ""
|
||||
|
||||
@ -2368,15 +2337,15 @@ msgstr ""
|
||||
msgid "time.struct_time() takes a 9-sequence"
|
||||
msgstr ""
|
||||
|
||||
#: shared-bindings/time/__init__.c:169 shared-bindings/time/__init__.c:250
|
||||
#: shared-bindings/time/__init__.c:169 shared-bindings/time/__init__.c:264
|
||||
msgid "Tuple or struct_time argument required"
|
||||
msgstr ""
|
||||
|
||||
#: shared-bindings/time/__init__.c:174 shared-bindings/time/__init__.c:255
|
||||
#: shared-bindings/time/__init__.c:174 shared-bindings/time/__init__.c:269
|
||||
msgid "function takes exactly 9 arguments"
|
||||
msgstr ""
|
||||
|
||||
#: shared-bindings/time/__init__.c:226 shared-bindings/time/__init__.c:259
|
||||
#: shared-bindings/time/__init__.c:240 shared-bindings/time/__init__.c:273
|
||||
msgid "timestamp out of range for platform time_t"
|
||||
msgstr ""
|
||||
|
||||
@ -2391,31 +2360,31 @@ msgstr ""
|
||||
|
||||
#: shared-module/audioio/Mixer.c:47 shared-module/audioio/WaveFile.c:117
|
||||
msgid "Couldn't allocate first buffer"
|
||||
msgstr ""
|
||||
msgstr "No se pudo asignar el primer buffer"
|
||||
|
||||
#: shared-module/audioio/Mixer.c:53 shared-module/audioio/WaveFile.c:123
|
||||
msgid "Couldn't allocate second buffer"
|
||||
msgstr ""
|
||||
msgstr "No se pudo asignar el segundo buffer"
|
||||
|
||||
#: shared-module/audioio/Mixer.c:82
|
||||
msgid "Voice index too high"
|
||||
msgstr ""
|
||||
msgstr "Index de voz demasiado alto"
|
||||
|
||||
#: shared-module/audioio/Mixer.c:85
|
||||
msgid "The sample's sample rate does not match the mixer's"
|
||||
msgstr ""
|
||||
msgstr "El sample rate del sample no iguala al del mixer"
|
||||
|
||||
#: shared-module/audioio/Mixer.c:88
|
||||
msgid "The sample's channel count does not match the mixer's"
|
||||
msgstr ""
|
||||
msgstr "La cuenta de canales del sample no iguala a las del mixer"
|
||||
|
||||
#: shared-module/audioio/Mixer.c:91
|
||||
msgid "The sample's bits_per_sample does not match the mixer's"
|
||||
msgstr ""
|
||||
msgstr "Los bits_per_sample del sample no igualan a los del mixer"
|
||||
|
||||
#: shared-module/audioio/Mixer.c:100
|
||||
msgid "The sample's signedness does not match the mixer's"
|
||||
msgstr ""
|
||||
msgstr "El signo del sample no iguala al del mixer"
|
||||
|
||||
#: shared-module/audioio/WaveFile.c:61
|
||||
msgid "Invalid wave file"
|
||||
@ -2478,14 +2447,12 @@ msgid "Group full"
|
||||
msgstr ""
|
||||
|
||||
#: shared-module/displayio/Group.c:48
|
||||
#, fuzzy
|
||||
msgid "Group empty"
|
||||
msgstr "heap vacío"
|
||||
msgstr "Group vacío"
|
||||
|
||||
#: shared-module/displayio/OnDiskBitmap.c:49
|
||||
#, fuzzy
|
||||
msgid "Invalid BMP file"
|
||||
msgstr "pin inválido"
|
||||
msgstr "Archivo BMP inválido"
|
||||
|
||||
#: shared-module/displayio/OnDiskBitmap.c:59
|
||||
#, c-format
|
||||
|
@ -7,7 +7,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: \n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2018-10-11 22:08+1100\n"
|
||||
"POT-Creation-Date: 2018-10-25 12:20+1100\n"
|
||||
"PO-Revision-Date: 2018-08-30 23:04-0700\n"
|
||||
"Last-Translator: Timothy <me@timothygarcia.ca>\n"
|
||||
"Language-Team: fil\n"
|
||||
@ -147,7 +147,7 @@ msgstr "abort() tinawag"
|
||||
msgid "invalid arguments"
|
||||
msgstr "mali ang mga argumento"
|
||||
|
||||
#: lib/utils/pyexec.c:97 py/builtinimport.c:253
|
||||
#: lib/utils/pyexec.c:97 py/builtinimport.c:251
|
||||
msgid "script compilation not supported"
|
||||
msgstr "script kompilasyon hindi supportado"
|
||||
|
||||
@ -303,12 +303,12 @@ msgid "Too many channels in sample."
|
||||
msgstr "Sobra ang channels sa sample."
|
||||
|
||||
#: ports/atmel-samd/common-hal/audiobusio/I2SOut.c:305
|
||||
#: ports/atmel-samd/common-hal/audioio/AudioOut.c:339
|
||||
#: ports/atmel-samd/common-hal/audioio/AudioOut.c:417
|
||||
msgid "No DMA channel found"
|
||||
msgstr "Walang DMA channel na mahanap"
|
||||
|
||||
#: ports/atmel-samd/common-hal/audiobusio/I2SOut.c:308
|
||||
#: ports/atmel-samd/common-hal/audioio/AudioOut.c:341
|
||||
#: ports/atmel-samd/common-hal/audioio/AudioOut.c:419
|
||||
msgid "Unable to allocate buffers for signed conversion"
|
||||
msgstr "Hindi ma-allocate ang buffers para sa naka-sign na conversion"
|
||||
|
||||
@ -324,43 +324,44 @@ msgstr "Tanging 8 o 16 na bit mono na may "
|
||||
msgid "sampling rate out of range"
|
||||
msgstr "pagpili ng rate wala sa sakop"
|
||||
|
||||
#: ports/atmel-samd/common-hal/audioio/AudioOut.c:69
|
||||
#: ports/atmel-samd/common-hal/audioio/AudioOut.c:132
|
||||
msgid "DAC already in use"
|
||||
msgstr "Ginagamit na ang DAC"
|
||||
|
||||
#: ports/atmel-samd/common-hal/audioio/AudioOut.c:73
|
||||
#: ports/atmel-samd/common-hal/audioio/AudioOut.c:136
|
||||
msgid "Right channel unsupported"
|
||||
msgstr "Hindi supportado ang kanang channel"
|
||||
|
||||
#: ports/atmel-samd/common-hal/audioio/AudioOut.c:76
|
||||
#: ports/atmel-samd/common-hal/audioio/AudioOut.c:139
|
||||
#: ports/atmel-samd/common-hal/pulseio/PWMOut.c:116
|
||||
#: ports/atmel-samd/common-hal/touchio/TouchIn.c:65
|
||||
msgid "Invalid pin"
|
||||
msgstr "Mali ang pin"
|
||||
|
||||
#: ports/atmel-samd/common-hal/audioio/AudioOut.c:84
|
||||
#: ports/atmel-samd/common-hal/audioio/AudioOut.c:147
|
||||
msgid "Invalid pin for left channel"
|
||||
msgstr "Mali ang pin para sa kaliwang channel"
|
||||
|
||||
#: ports/atmel-samd/common-hal/audioio/AudioOut.c:88
|
||||
#: ports/atmel-samd/common-hal/audioio/AudioOut.c:151
|
||||
msgid "Invalid pin for right channel"
|
||||
msgstr "Mali ang pin para sa kanang channel"
|
||||
|
||||
#: ports/atmel-samd/common-hal/audioio/AudioOut.c:91
|
||||
#: ports/atmel-samd/common-hal/audioio/AudioOut.c:154
|
||||
msgid "Cannot output both channels on the same pin"
|
||||
msgstr "Hindi maaaring output ang mga parehong channel sa parehong pin"
|
||||
|
||||
#: ports/atmel-samd/common-hal/audioio/AudioOut.c:176
|
||||
#: ports/atmel-samd/common-hal/audioio/AudioOut.c:243
|
||||
#: ports/atmel-samd/common-hal/pulseio/PWMOut.c:189
|
||||
#: ports/atmel-samd/common-hal/pulseio/PulseOut.c:110
|
||||
#: ports/nrf/common-hal/pulseio/PulseOut.c:107
|
||||
msgid "All timers in use"
|
||||
msgstr "Lahat ng timer ginagamit"
|
||||
|
||||
#: ports/atmel-samd/common-hal/audioio/AudioOut.c:218
|
||||
#: ports/atmel-samd/common-hal/audioio/AudioOut.c:285
|
||||
msgid "All event channels in use"
|
||||
msgstr "Lahat ng event channels ginagamit"
|
||||
|
||||
#: ports/atmel-samd/common-hal/audioio/AudioOut.c:297
|
||||
#: ports/atmel-samd/common-hal/audioio/AudioOut.c:375
|
||||
#, c-format
|
||||
msgid "Sample rate too high. It must be less than %d"
|
||||
msgstr ""
|
||||
@ -373,7 +374,7 @@ msgstr "Hindi sapat ang magagamit na pins"
|
||||
#: ports/atmel-samd/common-hal/busio/SPI.c:132
|
||||
#: ports/atmel-samd/common-hal/busio/UART.c:119
|
||||
#: ports/atmel-samd/common-hal/i2cslave/I2CSlave.c:45
|
||||
#: ports/nrf/common-hal/busio/I2C.c:81
|
||||
#: ports/nrf/common-hal/busio/I2C.c:82
|
||||
msgid "Invalid pins"
|
||||
msgstr "Mali ang pins"
|
||||
|
||||
@ -425,7 +426,7 @@ msgstr "Hindi ma-reset sa bootloader dahil walang bootloader."
|
||||
|
||||
#: ports/atmel-samd/common-hal/pulseio/PWMOut.c:120
|
||||
#: ports/atmel-samd/common-hal/pulseio/PWMOut.c:369
|
||||
#: ports/nrf/common-hal/pulseio/PWMOut.c:120
|
||||
#: ports/nrf/common-hal/pulseio/PWMOut.c:119
|
||||
#: ports/nrf/common-hal/pulseio/PWMOut.c:233
|
||||
msgid "Invalid PWM frequency"
|
||||
msgstr "Mali ang PWM frequency"
|
||||
@ -710,7 +711,7 @@ msgstr "hindi alam na config param"
|
||||
msgid "AnalogOut functionality not supported"
|
||||
msgstr "Hindi supportado ang AnalogOut"
|
||||
|
||||
#: ports/nrf/common-hal/busio/I2C.c:95
|
||||
#: ports/nrf/common-hal/busio/I2C.c:96
|
||||
#, fuzzy
|
||||
msgid "All I2C peripherals are in use"
|
||||
msgstr "Lahat ng timer ginagamit"
|
||||
@ -748,7 +749,7 @@ msgstr ""
|
||||
msgid "Can not get temperature. status: 0x%02x"
|
||||
msgstr "Hindi makuha ang temperatura. status 0x%02x"
|
||||
|
||||
#: ports/nrf/common-hal/pulseio/PWMOut.c:162
|
||||
#: ports/nrf/common-hal/pulseio/PWMOut.c:161
|
||||
#, fuzzy
|
||||
msgid "All PWM peripherals are in use"
|
||||
msgstr "Lahat ng timer ginagamit"
|
||||
@ -959,19 +960,19 @@ msgstr "masamang typecode"
|
||||
msgid "bad compile mode"
|
||||
msgstr "masamang mode ng compile"
|
||||
|
||||
#: py/builtinimport.c:338
|
||||
#: py/builtinimport.c:336
|
||||
msgid "cannot perform relative import"
|
||||
msgstr "hindi maaring isagawa ang relative import"
|
||||
|
||||
#: py/builtinimport.c:422 py/builtinimport.c:534
|
||||
#: py/builtinimport.c:420 py/builtinimport.c:532
|
||||
msgid "module not found"
|
||||
msgstr "module hindi nakita"
|
||||
|
||||
#: py/builtinimport.c:425 py/builtinimport.c:537
|
||||
#: py/builtinimport.c:423 py/builtinimport.c:535
|
||||
msgid "no module named '%q'"
|
||||
msgstr "walang module na '%q'"
|
||||
|
||||
#: py/builtinimport.c:512
|
||||
#: py/builtinimport.c:510
|
||||
msgid "relative import"
|
||||
msgstr "relative import"
|
||||
|
||||
@ -2033,7 +2034,7 @@ msgid "AnalogOut is only 16 bits. Value must be less than 65536."
|
||||
msgstr "AnalogOut ay 16 bits. Value ay dapat hindi hihigit pa sa 65536."
|
||||
|
||||
#: shared-bindings/audiobusio/I2SOut.c:225
|
||||
#: shared-bindings/audioio/AudioOut.c:223
|
||||
#: shared-bindings/audioio/AudioOut.c:226
|
||||
msgid "Not playing"
|
||||
msgstr "Hindi playing"
|
||||
|
||||
@ -2265,7 +2266,7 @@ msgstr "walang laman ang address"
|
||||
|
||||
#: shared-bindings/microcontroller/Pin.c:89
|
||||
#: shared-bindings/neopixel_write/__init__.c:67
|
||||
#: shared-bindings/pulseio/PulseOut.c:75
|
||||
#: shared-bindings/pulseio/PulseOut.c:76
|
||||
msgid "Expected a %q"
|
||||
msgstr "Umasa ng %q"
|
||||
|
||||
@ -2329,7 +2330,7 @@ msgstr "index ay dapat int"
|
||||
msgid "Read-only"
|
||||
msgstr "Basahin-lamang"
|
||||
|
||||
#: shared-bindings/pulseio/PulseOut.c:134
|
||||
#: shared-bindings/pulseio/PulseOut.c:135
|
||||
msgid "Array must contain halfwords (type 'H')"
|
||||
msgstr "May halfwords (type 'H') dapat ang array"
|
||||
|
||||
@ -2358,7 +2359,7 @@ msgstr "Hindi supportado ang RTC sa board na ito"
|
||||
msgid "RTC calibration is not supported on this board"
|
||||
msgstr "RTC calibration ay hindi supportado ng board na ito"
|
||||
|
||||
#: shared-bindings/socket/__init__.c:516 shared-module/network/__init__.c:64
|
||||
#: shared-bindings/socket/__init__.c:516 shared-module/network/__init__.c:81
|
||||
msgid "no available NIC"
|
||||
msgstr ""
|
||||
|
||||
@ -2386,15 +2387,15 @@ msgstr "time.struct_time() kumukuha ng 1 argument"
|
||||
msgid "time.struct_time() takes a 9-sequence"
|
||||
msgstr "time.struct_time() kumukuha ng 9-sequence"
|
||||
|
||||
#: shared-bindings/time/__init__.c:169 shared-bindings/time/__init__.c:250
|
||||
#: shared-bindings/time/__init__.c:169 shared-bindings/time/__init__.c:264
|
||||
msgid "Tuple or struct_time argument required"
|
||||
msgstr "Tuple o struct_time argument kailangan"
|
||||
|
||||
#: shared-bindings/time/__init__.c:174 shared-bindings/time/__init__.c:255
|
||||
#: shared-bindings/time/__init__.c:174 shared-bindings/time/__init__.c:269
|
||||
msgid "function takes exactly 9 arguments"
|
||||
msgstr "function kumukuha ng 9 arguments"
|
||||
|
||||
#: shared-bindings/time/__init__.c:226 shared-bindings/time/__init__.c:259
|
||||
#: shared-bindings/time/__init__.c:240 shared-bindings/time/__init__.c:273
|
||||
msgid "timestamp out of range for platform time_t"
|
||||
msgstr "wala sa sakop ng timestamp ang platform time_t"
|
||||
|
||||
|
65
locale/fr.po
65
locale/fr.po
@ -7,7 +7,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: 0.1\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2018-10-11 22:08+1100\n"
|
||||
"POT-Creation-Date: 2018-10-25 12:20+1100\n"
|
||||
"PO-Revision-Date: 2018-08-14 11:01+0200\n"
|
||||
"Last-Translator: Pierrick Couturier <arofarn@arofarn.info>\n"
|
||||
"Language-Team: fr\n"
|
||||
@ -146,7 +146,7 @@ msgstr "abort() appelé"
|
||||
msgid "invalid arguments"
|
||||
msgstr "arguments invalides"
|
||||
|
||||
#: lib/utils/pyexec.c:97 py/builtinimport.c:253
|
||||
#: lib/utils/pyexec.c:97 py/builtinimport.c:251
|
||||
msgid "script compilation not supported"
|
||||
msgstr "compilation du script non supporté"
|
||||
|
||||
@ -298,12 +298,12 @@ msgid "Too many channels in sample."
|
||||
msgstr "Trop de canaux dans l'échantillon."
|
||||
|
||||
#: ports/atmel-samd/common-hal/audiobusio/I2SOut.c:305
|
||||
#: ports/atmel-samd/common-hal/audioio/AudioOut.c:339
|
||||
#: ports/atmel-samd/common-hal/audioio/AudioOut.c:417
|
||||
msgid "No DMA channel found"
|
||||
msgstr "Aucun canal DMA trouvé"
|
||||
|
||||
#: ports/atmel-samd/common-hal/audiobusio/I2SOut.c:308
|
||||
#: ports/atmel-samd/common-hal/audioio/AudioOut.c:341
|
||||
#: ports/atmel-samd/common-hal/audioio/AudioOut.c:419
|
||||
msgid "Unable to allocate buffers for signed conversion"
|
||||
msgstr "Impossible d'allouer des tampons pour une conversion signée"
|
||||
|
||||
@ -319,43 +319,44 @@ msgstr "Uniquement 8 ou 16 bit mono avec "
|
||||
msgid "sampling rate out of range"
|
||||
msgstr "taux d'échantillonage hors gamme"
|
||||
|
||||
#: ports/atmel-samd/common-hal/audioio/AudioOut.c:69
|
||||
#: ports/atmel-samd/common-hal/audioio/AudioOut.c:132
|
||||
msgid "DAC already in use"
|
||||
msgstr "DAC déjà utilisé"
|
||||
|
||||
#: ports/atmel-samd/common-hal/audioio/AudioOut.c:73
|
||||
#: ports/atmel-samd/common-hal/audioio/AudioOut.c:136
|
||||
msgid "Right channel unsupported"
|
||||
msgstr "Canal droit non supporté"
|
||||
|
||||
#: ports/atmel-samd/common-hal/audioio/AudioOut.c:76
|
||||
#: ports/atmel-samd/common-hal/audioio/AudioOut.c:139
|
||||
#: ports/atmel-samd/common-hal/pulseio/PWMOut.c:116
|
||||
#: ports/atmel-samd/common-hal/touchio/TouchIn.c:65
|
||||
msgid "Invalid pin"
|
||||
msgstr "Broche invalide"
|
||||
|
||||
#: ports/atmel-samd/common-hal/audioio/AudioOut.c:84
|
||||
#: ports/atmel-samd/common-hal/audioio/AudioOut.c:147
|
||||
msgid "Invalid pin for left channel"
|
||||
msgstr "Broche invalide pour le canal gauche"
|
||||
|
||||
#: ports/atmel-samd/common-hal/audioio/AudioOut.c:88
|
||||
#: ports/atmel-samd/common-hal/audioio/AudioOut.c:151
|
||||
msgid "Invalid pin for right channel"
|
||||
msgstr "Broche invalide pour le canal droit"
|
||||
|
||||
#: ports/atmel-samd/common-hal/audioio/AudioOut.c:91
|
||||
#: ports/atmel-samd/common-hal/audioio/AudioOut.c:154
|
||||
msgid "Cannot output both channels on the same pin"
|
||||
msgstr "On ne peut mettre les deux canaux sur la même broche"
|
||||
|
||||
#: ports/atmel-samd/common-hal/audioio/AudioOut.c:176
|
||||
#: ports/atmel-samd/common-hal/audioio/AudioOut.c:243
|
||||
#: ports/atmel-samd/common-hal/pulseio/PWMOut.c:189
|
||||
#: ports/atmel-samd/common-hal/pulseio/PulseOut.c:110
|
||||
#: ports/nrf/common-hal/pulseio/PulseOut.c:107
|
||||
msgid "All timers in use"
|
||||
msgstr "Tous les timers sont utilisés"
|
||||
|
||||
#: ports/atmel-samd/common-hal/audioio/AudioOut.c:218
|
||||
#: ports/atmel-samd/common-hal/audioio/AudioOut.c:285
|
||||
msgid "All event channels in use"
|
||||
msgstr "Tous les canaux d'événements sont utilisés"
|
||||
|
||||
#: ports/atmel-samd/common-hal/audioio/AudioOut.c:297
|
||||
#: ports/atmel-samd/common-hal/audioio/AudioOut.c:375
|
||||
#, c-format
|
||||
msgid "Sample rate too high. It must be less than %d"
|
||||
msgstr ""
|
||||
@ -368,7 +369,7 @@ msgstr "Pas assez de broches disponibles"
|
||||
#: ports/atmel-samd/common-hal/busio/SPI.c:132
|
||||
#: ports/atmel-samd/common-hal/busio/UART.c:119
|
||||
#: ports/atmel-samd/common-hal/i2cslave/I2CSlave.c:45
|
||||
#: ports/nrf/common-hal/busio/I2C.c:81
|
||||
#: ports/nrf/common-hal/busio/I2C.c:82
|
||||
msgid "Invalid pins"
|
||||
msgstr "Broche invalide"
|
||||
|
||||
@ -421,7 +422,7 @@ msgstr ""
|
||||
|
||||
#: ports/atmel-samd/common-hal/pulseio/PWMOut.c:120
|
||||
#: ports/atmel-samd/common-hal/pulseio/PWMOut.c:369
|
||||
#: ports/nrf/common-hal/pulseio/PWMOut.c:120
|
||||
#: ports/nrf/common-hal/pulseio/PWMOut.c:119
|
||||
#: ports/nrf/common-hal/pulseio/PWMOut.c:233
|
||||
msgid "Invalid PWM frequency"
|
||||
msgstr "Fréquence de PWM invalide"
|
||||
@ -706,7 +707,7 @@ msgstr "paramètre de config. inconnu"
|
||||
msgid "AnalogOut functionality not supported"
|
||||
msgstr "AnalogOut non supporté"
|
||||
|
||||
#: ports/nrf/common-hal/busio/I2C.c:95
|
||||
#: ports/nrf/common-hal/busio/I2C.c:96
|
||||
#, fuzzy
|
||||
msgid "All I2C peripherals are in use"
|
||||
msgstr "Tous les timers sont utilisés"
|
||||
@ -745,7 +746,7 @@ msgstr "busio.UART n'est pas disponible"
|
||||
msgid "Can not get temperature. status: 0x%02x"
|
||||
msgstr "Impossible de lire la température. status: 0x%02x"
|
||||
|
||||
#: ports/nrf/common-hal/pulseio/PWMOut.c:162
|
||||
#: ports/nrf/common-hal/pulseio/PWMOut.c:161
|
||||
#, fuzzy
|
||||
msgid "All PWM peripherals are in use"
|
||||
msgstr "Tous les timers sont utilisés"
|
||||
@ -953,19 +954,19 @@ msgstr "mauvais code type"
|
||||
msgid "bad compile mode"
|
||||
msgstr "mauvais mode de compilation"
|
||||
|
||||
#: py/builtinimport.c:338
|
||||
#: py/builtinimport.c:336
|
||||
msgid "cannot perform relative import"
|
||||
msgstr "ne peut pas réaliser un import relatif"
|
||||
|
||||
#: py/builtinimport.c:422 py/builtinimport.c:534
|
||||
#: py/builtinimport.c:420 py/builtinimport.c:532
|
||||
msgid "module not found"
|
||||
msgstr "module introuvable"
|
||||
|
||||
#: py/builtinimport.c:425 py/builtinimport.c:537
|
||||
#: py/builtinimport.c:423 py/builtinimport.c:535
|
||||
msgid "no module named '%q'"
|
||||
msgstr "pas de module '%q'"
|
||||
|
||||
#: py/builtinimport.c:512
|
||||
#: py/builtinimport.c:510
|
||||
msgid "relative import"
|
||||
msgstr "import relatif"
|
||||
|
||||
@ -2027,7 +2028,7 @@ msgstr ""
|
||||
"65536."
|
||||
|
||||
#: shared-bindings/audiobusio/I2SOut.c:225
|
||||
#: shared-bindings/audioio/AudioOut.c:223
|
||||
#: shared-bindings/audioio/AudioOut.c:226
|
||||
msgid "Not playing"
|
||||
msgstr "En pause"
|
||||
|
||||
@ -2258,7 +2259,7 @@ msgstr ""
|
||||
|
||||
#: shared-bindings/microcontroller/Pin.c:89
|
||||
#: shared-bindings/neopixel_write/__init__.c:67
|
||||
#: shared-bindings/pulseio/PulseOut.c:75
|
||||
#: shared-bindings/pulseio/PulseOut.c:76
|
||||
msgid "Expected a %q"
|
||||
msgstr "Attendu : %q"
|
||||
|
||||
@ -2325,7 +2326,7 @@ msgstr "l'index doit être un entier"
|
||||
msgid "Read-only"
|
||||
msgstr "Lecture seule"
|
||||
|
||||
#: shared-bindings/pulseio/PulseOut.c:134
|
||||
#: shared-bindings/pulseio/PulseOut.c:135
|
||||
msgid "Array must contain halfwords (type 'H')"
|
||||
msgstr "Le tableau doit contenir des halfwords (type 'H')"
|
||||
|
||||
@ -2354,7 +2355,7 @@ msgstr "RTC non supportée sur cette carte"
|
||||
msgid "RTC calibration is not supported on this board"
|
||||
msgstr "calibration de la RTC non supportée sur cette carte"
|
||||
|
||||
#: shared-bindings/socket/__init__.c:516 shared-module/network/__init__.c:64
|
||||
#: shared-bindings/socket/__init__.c:516 shared-module/network/__init__.c:81
|
||||
#, fuzzy
|
||||
msgid "no available NIC"
|
||||
msgstr "busio.UART n'est pas disponible"
|
||||
@ -2383,15 +2384,15 @@ msgstr "time.struct_time() prend exactement 1 argument"
|
||||
msgid "time.struct_time() takes a 9-sequence"
|
||||
msgstr "time.struct_time() prend une séquence de longueur 9"
|
||||
|
||||
#: shared-bindings/time/__init__.c:169 shared-bindings/time/__init__.c:250
|
||||
#: shared-bindings/time/__init__.c:169 shared-bindings/time/__init__.c:264
|
||||
msgid "Tuple or struct_time argument required"
|
||||
msgstr "Argument de type tuple ou struct_time nécessaire"
|
||||
|
||||
#: shared-bindings/time/__init__.c:174 shared-bindings/time/__init__.c:255
|
||||
#: shared-bindings/time/__init__.c:174 shared-bindings/time/__init__.c:269
|
||||
msgid "function takes exactly 9 arguments"
|
||||
msgstr "la fonction prend exactement 9 arguments"
|
||||
|
||||
#: shared-bindings/time/__init__.c:226 shared-bindings/time/__init__.c:259
|
||||
#: shared-bindings/time/__init__.c:240 shared-bindings/time/__init__.c:273
|
||||
msgid "timestamp out of range for platform time_t"
|
||||
msgstr "timestamp hors gamme pour la plateforme time_t"
|
||||
|
||||
@ -2522,10 +2523,10 @@ msgstr "'S' et 'O' ne sont pas des types de format supportés"
|
||||
msgid "too many arguments provided with the given format"
|
||||
msgstr "trop d'arguments fournis avec ce format"
|
||||
|
||||
#, fuzzy
|
||||
#~ msgid "value_size must be power of two"
|
||||
#~ msgstr "'len' doit être un multiple de 4"
|
||||
|
||||
#, fuzzy
|
||||
#~ msgid "palette must be displayio.Palette"
|
||||
#~ msgstr "la palette doit être longue de 32 octets"
|
||||
|
||||
#, fuzzy
|
||||
#~ msgid "value_size must be power of two"
|
||||
#~ msgstr "'len' doit être un multiple de 4"
|
||||
|
@ -8,7 +8,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: PACKAGE VERSION\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2018-10-11 22:08+1100\n"
|
||||
"POT-Creation-Date: 2018-10-25 12:20+1100\n"
|
||||
"PO-Revision-Date: 2018-10-02 16:27+0200\n"
|
||||
"Last-Translator: Enrico Paganin <enrico.paganin@mail.com>\n"
|
||||
"Language-Team: \n"
|
||||
@ -147,7 +147,7 @@ msgstr "abort() chiamato"
|
||||
msgid "invalid arguments"
|
||||
msgstr "argomenti non validi"
|
||||
|
||||
#: lib/utils/pyexec.c:97 py/builtinimport.c:253
|
||||
#: lib/utils/pyexec.c:97 py/builtinimport.c:251
|
||||
msgid "script compilation not supported"
|
||||
msgstr "compilazione dello scrip non suportata"
|
||||
|
||||
@ -305,12 +305,12 @@ msgid "Too many channels in sample."
|
||||
msgstr ""
|
||||
|
||||
#: ports/atmel-samd/common-hal/audiobusio/I2SOut.c:305
|
||||
#: ports/atmel-samd/common-hal/audioio/AudioOut.c:339
|
||||
#: ports/atmel-samd/common-hal/audioio/AudioOut.c:417
|
||||
msgid "No DMA channel found"
|
||||
msgstr "Nessun canale DMA trovato"
|
||||
|
||||
#: ports/atmel-samd/common-hal/audiobusio/I2SOut.c:308
|
||||
#: ports/atmel-samd/common-hal/audioio/AudioOut.c:341
|
||||
#: ports/atmel-samd/common-hal/audioio/AudioOut.c:419
|
||||
msgid "Unable to allocate buffers for signed conversion"
|
||||
msgstr "Ipossibilitato ad allocare buffer per la conversione con segno"
|
||||
|
||||
@ -326,43 +326,44 @@ msgstr ""
|
||||
msgid "sampling rate out of range"
|
||||
msgstr "frequenza di campionamento fuori intervallo"
|
||||
|
||||
#: ports/atmel-samd/common-hal/audioio/AudioOut.c:69
|
||||
#: ports/atmel-samd/common-hal/audioio/AudioOut.c:132
|
||||
msgid "DAC already in use"
|
||||
msgstr "DAC già in uso"
|
||||
|
||||
#: ports/atmel-samd/common-hal/audioio/AudioOut.c:73
|
||||
#: ports/atmel-samd/common-hal/audioio/AudioOut.c:136
|
||||
msgid "Right channel unsupported"
|
||||
msgstr "Canale destro non supportato"
|
||||
|
||||
#: ports/atmel-samd/common-hal/audioio/AudioOut.c:76
|
||||
#: ports/atmel-samd/common-hal/audioio/AudioOut.c:139
|
||||
#: ports/atmel-samd/common-hal/pulseio/PWMOut.c:116
|
||||
#: ports/atmel-samd/common-hal/touchio/TouchIn.c:65
|
||||
msgid "Invalid pin"
|
||||
msgstr "Pin non valido"
|
||||
|
||||
#: ports/atmel-samd/common-hal/audioio/AudioOut.c:84
|
||||
#: ports/atmel-samd/common-hal/audioio/AudioOut.c:147
|
||||
msgid "Invalid pin for left channel"
|
||||
msgstr "Pin non valido per il canale sinistro"
|
||||
|
||||
#: ports/atmel-samd/common-hal/audioio/AudioOut.c:88
|
||||
#: ports/atmel-samd/common-hal/audioio/AudioOut.c:151
|
||||
msgid "Invalid pin for right channel"
|
||||
msgstr "Pin non valido per il canale destro"
|
||||
|
||||
#: ports/atmel-samd/common-hal/audioio/AudioOut.c:91
|
||||
#: ports/atmel-samd/common-hal/audioio/AudioOut.c:154
|
||||
msgid "Cannot output both channels on the same pin"
|
||||
msgstr "Impossibile dare in output entrambi i canal sullo stesso pin"
|
||||
|
||||
#: ports/atmel-samd/common-hal/audioio/AudioOut.c:176
|
||||
#: ports/atmel-samd/common-hal/audioio/AudioOut.c:243
|
||||
#: ports/atmel-samd/common-hal/pulseio/PWMOut.c:189
|
||||
#: ports/atmel-samd/common-hal/pulseio/PulseOut.c:110
|
||||
#: ports/nrf/common-hal/pulseio/PulseOut.c:107
|
||||
msgid "All timers in use"
|
||||
msgstr "Tutti i timer utilizzati"
|
||||
|
||||
#: ports/atmel-samd/common-hal/audioio/AudioOut.c:218
|
||||
#: ports/atmel-samd/common-hal/audioio/AudioOut.c:285
|
||||
msgid "All event channels in use"
|
||||
msgstr "Tutti i canali eventi utilizati"
|
||||
|
||||
#: ports/atmel-samd/common-hal/audioio/AudioOut.c:297
|
||||
#: ports/atmel-samd/common-hal/audioio/AudioOut.c:375
|
||||
#, c-format
|
||||
msgid "Sample rate too high. It must be less than %d"
|
||||
msgstr ""
|
||||
@ -376,7 +377,7 @@ msgstr "Non sono presenti abbastanza pin"
|
||||
#: ports/atmel-samd/common-hal/busio/SPI.c:132
|
||||
#: ports/atmel-samd/common-hal/busio/UART.c:119
|
||||
#: ports/atmel-samd/common-hal/i2cslave/I2CSlave.c:45
|
||||
#: ports/nrf/common-hal/busio/I2C.c:81
|
||||
#: ports/nrf/common-hal/busio/I2C.c:82
|
||||
msgid "Invalid pins"
|
||||
msgstr "Pin non validi"
|
||||
|
||||
@ -429,7 +430,7 @@ msgstr ""
|
||||
|
||||
#: ports/atmel-samd/common-hal/pulseio/PWMOut.c:120
|
||||
#: ports/atmel-samd/common-hal/pulseio/PWMOut.c:369
|
||||
#: ports/nrf/common-hal/pulseio/PWMOut.c:120
|
||||
#: ports/nrf/common-hal/pulseio/PWMOut.c:119
|
||||
#: ports/nrf/common-hal/pulseio/PWMOut.c:233
|
||||
msgid "Invalid PWM frequency"
|
||||
msgstr "Frequenza PWM non valida"
|
||||
@ -712,7 +713,7 @@ msgstr "parametro di configurazione sconosciuto"
|
||||
msgid "AnalogOut functionality not supported"
|
||||
msgstr "funzionalità AnalogOut non supportata"
|
||||
|
||||
#: ports/nrf/common-hal/busio/I2C.c:95
|
||||
#: ports/nrf/common-hal/busio/I2C.c:96
|
||||
msgid "All I2C peripherals are in use"
|
||||
msgstr "Tutte le periferiche I2C sono in uso"
|
||||
|
||||
@ -749,7 +750,7 @@ msgstr "busio.UART non ancora implementato"
|
||||
msgid "Can not get temperature. status: 0x%02x"
|
||||
msgstr "Impossibile leggere la temperatura. status: 0x%02x"
|
||||
|
||||
#: ports/nrf/common-hal/pulseio/PWMOut.c:162
|
||||
#: ports/nrf/common-hal/pulseio/PWMOut.c:161
|
||||
#, fuzzy
|
||||
msgid "All PWM peripherals are in use"
|
||||
msgstr "Tutte le periferiche SPI sono in uso"
|
||||
@ -959,19 +960,19 @@ msgstr ""
|
||||
msgid "bad compile mode"
|
||||
msgstr ""
|
||||
|
||||
#: py/builtinimport.c:338
|
||||
#: py/builtinimport.c:336
|
||||
msgid "cannot perform relative import"
|
||||
msgstr "impossibile effettuare l'importazione relativa"
|
||||
|
||||
#: py/builtinimport.c:422 py/builtinimport.c:534
|
||||
#: py/builtinimport.c:420 py/builtinimport.c:532
|
||||
msgid "module not found"
|
||||
msgstr "modulo non trovato"
|
||||
|
||||
#: py/builtinimport.c:425 py/builtinimport.c:537
|
||||
#: py/builtinimport.c:423 py/builtinimport.c:535
|
||||
msgid "no module named '%q'"
|
||||
msgstr "nessun modulo chiamato '%q'"
|
||||
|
||||
#: py/builtinimport.c:512
|
||||
#: py/builtinimport.c:510
|
||||
msgid "relative import"
|
||||
msgstr "importazione relativa"
|
||||
|
||||
@ -2029,7 +2030,7 @@ msgid "AnalogOut is only 16 bits. Value must be less than 65536."
|
||||
msgstr "AnalogOut ha solo 16 bit. Il valore deve essere meno di 65536."
|
||||
|
||||
#: shared-bindings/audiobusio/I2SOut.c:225
|
||||
#: shared-bindings/audioio/AudioOut.c:223
|
||||
#: shared-bindings/audioio/AudioOut.c:226
|
||||
msgid "Not playing"
|
||||
msgstr "In pausa"
|
||||
|
||||
@ -2248,7 +2249,7 @@ msgstr "gli indirizzi sono vuoti"
|
||||
|
||||
#: shared-bindings/microcontroller/Pin.c:89
|
||||
#: shared-bindings/neopixel_write/__init__.c:67
|
||||
#: shared-bindings/pulseio/PulseOut.c:75
|
||||
#: shared-bindings/pulseio/PulseOut.c:76
|
||||
msgid "Expected a %q"
|
||||
msgstr "Atteso un %q"
|
||||
|
||||
@ -2315,7 +2316,7 @@ msgstr "l'indice deve essere int"
|
||||
msgid "Read-only"
|
||||
msgstr "Sola lettura"
|
||||
|
||||
#: shared-bindings/pulseio/PulseOut.c:134
|
||||
#: shared-bindings/pulseio/PulseOut.c:135
|
||||
msgid "Array must contain halfwords (type 'H')"
|
||||
msgstr ""
|
||||
|
||||
@ -2344,7 +2345,7 @@ msgstr "RTC non supportato su questa scheda"
|
||||
msgid "RTC calibration is not supported on this board"
|
||||
msgstr "calibrazione RTC non supportata su questa scheda"
|
||||
|
||||
#: shared-bindings/socket/__init__.c:516 shared-module/network/__init__.c:64
|
||||
#: shared-bindings/socket/__init__.c:516 shared-module/network/__init__.c:81
|
||||
#, fuzzy
|
||||
msgid "no available NIC"
|
||||
msgstr "busio.UART non ancora implementato"
|
||||
@ -2373,15 +2374,15 @@ msgstr "time.struct_time() prende esattamente un argomento"
|
||||
msgid "time.struct_time() takes a 9-sequence"
|
||||
msgstr ""
|
||||
|
||||
#: shared-bindings/time/__init__.c:169 shared-bindings/time/__init__.c:250
|
||||
#: shared-bindings/time/__init__.c:169 shared-bindings/time/__init__.c:264
|
||||
msgid "Tuple or struct_time argument required"
|
||||
msgstr "Tupla o struct_time richiesto come argomento"
|
||||
|
||||
#: shared-bindings/time/__init__.c:174 shared-bindings/time/__init__.c:255
|
||||
#: shared-bindings/time/__init__.c:174 shared-bindings/time/__init__.c:269
|
||||
msgid "function takes exactly 9 arguments"
|
||||
msgstr "la funzione prende esattamente 9 argomenti"
|
||||
|
||||
#: shared-bindings/time/__init__.c:226 shared-bindings/time/__init__.c:259
|
||||
#: shared-bindings/time/__init__.c:240 shared-bindings/time/__init__.c:273
|
||||
msgid "timestamp out of range for platform time_t"
|
||||
msgstr "timestamp è fuori intervallo per il time_t della piattaforma"
|
||||
|
||||
|
@ -8,7 +8,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: PACKAGE VERSION\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2018-10-11 22:08+1100\n"
|
||||
"POT-Creation-Date: 2018-10-25 12:20+1100\n"
|
||||
"PO-Revision-Date: 2018-10-02 21:14-0000\n"
|
||||
"Last-Translator: \n"
|
||||
"Language-Team: \n"
|
||||
@ -147,7 +147,7 @@ msgstr "abort() chamado"
|
||||
msgid "invalid arguments"
|
||||
msgstr "argumentos inválidos"
|
||||
|
||||
#: lib/utils/pyexec.c:97 py/builtinimport.c:253
|
||||
#: lib/utils/pyexec.c:97 py/builtinimport.c:251
|
||||
msgid "script compilation not supported"
|
||||
msgstr "compilação de script não suportada"
|
||||
|
||||
@ -291,12 +291,12 @@ msgid "Too many channels in sample."
|
||||
msgstr "Muitos canais na amostra."
|
||||
|
||||
#: ports/atmel-samd/common-hal/audiobusio/I2SOut.c:305
|
||||
#: ports/atmel-samd/common-hal/audioio/AudioOut.c:339
|
||||
#: ports/atmel-samd/common-hal/audioio/AudioOut.c:417
|
||||
msgid "No DMA channel found"
|
||||
msgstr "Nenhum canal DMA encontrado"
|
||||
|
||||
#: ports/atmel-samd/common-hal/audiobusio/I2SOut.c:308
|
||||
#: ports/atmel-samd/common-hal/audioio/AudioOut.c:341
|
||||
#: ports/atmel-samd/common-hal/audioio/AudioOut.c:419
|
||||
msgid "Unable to allocate buffers for signed conversion"
|
||||
msgstr "Não é possível alocar buffers para conversão assinada"
|
||||
|
||||
@ -312,43 +312,44 @@ msgstr ""
|
||||
msgid "sampling rate out of range"
|
||||
msgstr "Taxa de amostragem fora do intervalo"
|
||||
|
||||
#: ports/atmel-samd/common-hal/audioio/AudioOut.c:69
|
||||
#: ports/atmel-samd/common-hal/audioio/AudioOut.c:132
|
||||
msgid "DAC already in use"
|
||||
msgstr "DAC em uso"
|
||||
|
||||
#: ports/atmel-samd/common-hal/audioio/AudioOut.c:73
|
||||
#: ports/atmel-samd/common-hal/audioio/AudioOut.c:136
|
||||
msgid "Right channel unsupported"
|
||||
msgstr "Canal direito não suportado"
|
||||
|
||||
#: ports/atmel-samd/common-hal/audioio/AudioOut.c:76
|
||||
#: ports/atmel-samd/common-hal/audioio/AudioOut.c:139
|
||||
#: ports/atmel-samd/common-hal/pulseio/PWMOut.c:116
|
||||
#: ports/atmel-samd/common-hal/touchio/TouchIn.c:65
|
||||
msgid "Invalid pin"
|
||||
msgstr "Pino inválido"
|
||||
|
||||
#: ports/atmel-samd/common-hal/audioio/AudioOut.c:84
|
||||
#: ports/atmel-samd/common-hal/audioio/AudioOut.c:147
|
||||
msgid "Invalid pin for left channel"
|
||||
msgstr "Pino inválido para canal esquerdo"
|
||||
|
||||
#: ports/atmel-samd/common-hal/audioio/AudioOut.c:88
|
||||
#: ports/atmel-samd/common-hal/audioio/AudioOut.c:151
|
||||
msgid "Invalid pin for right channel"
|
||||
msgstr "Pino inválido para canal direito"
|
||||
|
||||
#: ports/atmel-samd/common-hal/audioio/AudioOut.c:91
|
||||
#: ports/atmel-samd/common-hal/audioio/AudioOut.c:154
|
||||
msgid "Cannot output both channels on the same pin"
|
||||
msgstr ""
|
||||
|
||||
#: ports/atmel-samd/common-hal/audioio/AudioOut.c:176
|
||||
#: ports/atmel-samd/common-hal/audioio/AudioOut.c:243
|
||||
#: ports/atmel-samd/common-hal/pulseio/PWMOut.c:189
|
||||
#: ports/atmel-samd/common-hal/pulseio/PulseOut.c:110
|
||||
#: ports/nrf/common-hal/pulseio/PulseOut.c:107
|
||||
msgid "All timers in use"
|
||||
msgstr "Todos os temporizadores em uso"
|
||||
|
||||
#: ports/atmel-samd/common-hal/audioio/AudioOut.c:218
|
||||
#: ports/atmel-samd/common-hal/audioio/AudioOut.c:285
|
||||
msgid "All event channels in use"
|
||||
msgstr "Todos os canais de eventos em uso"
|
||||
|
||||
#: ports/atmel-samd/common-hal/audioio/AudioOut.c:297
|
||||
#: ports/atmel-samd/common-hal/audioio/AudioOut.c:375
|
||||
#, c-format
|
||||
msgid "Sample rate too high. It must be less than %d"
|
||||
msgstr "Taxa de amostragem muito alta. Deve ser menor que %d"
|
||||
@ -361,7 +362,7 @@ msgstr "Não há pinos suficientes disponíveis"
|
||||
#: ports/atmel-samd/common-hal/busio/SPI.c:132
|
||||
#: ports/atmel-samd/common-hal/busio/UART.c:119
|
||||
#: ports/atmel-samd/common-hal/i2cslave/I2CSlave.c:45
|
||||
#: ports/nrf/common-hal/busio/I2C.c:81
|
||||
#: ports/nrf/common-hal/busio/I2C.c:82
|
||||
msgid "Invalid pins"
|
||||
msgstr "Pinos inválidos"
|
||||
|
||||
@ -413,7 +414,7 @@ msgstr ""
|
||||
|
||||
#: ports/atmel-samd/common-hal/pulseio/PWMOut.c:120
|
||||
#: ports/atmel-samd/common-hal/pulseio/PWMOut.c:369
|
||||
#: ports/nrf/common-hal/pulseio/PWMOut.c:120
|
||||
#: ports/nrf/common-hal/pulseio/PWMOut.c:119
|
||||
#: ports/nrf/common-hal/pulseio/PWMOut.c:233
|
||||
msgid "Invalid PWM frequency"
|
||||
msgstr "Frequência PWM inválida"
|
||||
@ -695,7 +696,7 @@ msgstr "parâmetro configuração desconhecido"
|
||||
msgid "AnalogOut functionality not supported"
|
||||
msgstr "Funcionalidade AnalogOut não suportada"
|
||||
|
||||
#: ports/nrf/common-hal/busio/I2C.c:95
|
||||
#: ports/nrf/common-hal/busio/I2C.c:96
|
||||
msgid "All I2C peripherals are in use"
|
||||
msgstr "Todos os periféricos I2C estão em uso"
|
||||
|
||||
@ -731,7 +732,7 @@ msgstr "busio.UART não disponível"
|
||||
msgid "Can not get temperature. status: 0x%02x"
|
||||
msgstr "Não pode obter a temperatura. status: 0x%02x"
|
||||
|
||||
#: ports/nrf/common-hal/pulseio/PWMOut.c:162
|
||||
#: ports/nrf/common-hal/pulseio/PWMOut.c:161
|
||||
#, fuzzy
|
||||
msgid "All PWM peripherals are in use"
|
||||
msgstr "Todos os temporizadores em uso"
|
||||
@ -938,19 +939,19 @@ msgstr ""
|
||||
msgid "bad compile mode"
|
||||
msgstr ""
|
||||
|
||||
#: py/builtinimport.c:338
|
||||
#: py/builtinimport.c:336
|
||||
msgid "cannot perform relative import"
|
||||
msgstr ""
|
||||
|
||||
#: py/builtinimport.c:422 py/builtinimport.c:534
|
||||
#: py/builtinimport.c:420 py/builtinimport.c:532
|
||||
msgid "module not found"
|
||||
msgstr ""
|
||||
|
||||
#: py/builtinimport.c:425 py/builtinimport.c:537
|
||||
#: py/builtinimport.c:423 py/builtinimport.c:535
|
||||
msgid "no module named '%q'"
|
||||
msgstr ""
|
||||
|
||||
#: py/builtinimport.c:512
|
||||
#: py/builtinimport.c:510
|
||||
msgid "relative import"
|
||||
msgstr ""
|
||||
|
||||
@ -1998,7 +1999,7 @@ msgid "AnalogOut is only 16 bits. Value must be less than 65536."
|
||||
msgstr ""
|
||||
|
||||
#: shared-bindings/audiobusio/I2SOut.c:225
|
||||
#: shared-bindings/audioio/AudioOut.c:223
|
||||
#: shared-bindings/audioio/AudioOut.c:226
|
||||
msgid "Not playing"
|
||||
msgstr ""
|
||||
|
||||
@ -2208,7 +2209,7 @@ msgstr ""
|
||||
|
||||
#: shared-bindings/microcontroller/Pin.c:89
|
||||
#: shared-bindings/neopixel_write/__init__.c:67
|
||||
#: shared-bindings/pulseio/PulseOut.c:75
|
||||
#: shared-bindings/pulseio/PulseOut.c:76
|
||||
msgid "Expected a %q"
|
||||
msgstr "Esperado um"
|
||||
|
||||
@ -2270,7 +2271,7 @@ msgstr "index deve ser int"
|
||||
msgid "Read-only"
|
||||
msgstr "Somente leitura"
|
||||
|
||||
#: shared-bindings/pulseio/PulseOut.c:134
|
||||
#: shared-bindings/pulseio/PulseOut.c:135
|
||||
msgid "Array must contain halfwords (type 'H')"
|
||||
msgstr "Array deve conter meias palavras (tipo 'H')"
|
||||
|
||||
@ -2299,7 +2300,7 @@ msgstr "O RTC não é suportado nesta placa"
|
||||
msgid "RTC calibration is not supported on this board"
|
||||
msgstr "A calibração RTC não é suportada nesta placa"
|
||||
|
||||
#: shared-bindings/socket/__init__.c:516 shared-module/network/__init__.c:64
|
||||
#: shared-bindings/socket/__init__.c:516 shared-module/network/__init__.c:81
|
||||
msgid "no available NIC"
|
||||
msgstr ""
|
||||
|
||||
@ -2327,15 +2328,15 @@ msgstr ""
|
||||
msgid "time.struct_time() takes a 9-sequence"
|
||||
msgstr ""
|
||||
|
||||
#: shared-bindings/time/__init__.c:169 shared-bindings/time/__init__.c:250
|
||||
#: shared-bindings/time/__init__.c:169 shared-bindings/time/__init__.c:264
|
||||
msgid "Tuple or struct_time argument required"
|
||||
msgstr "Tuple or struct_time argument required"
|
||||
|
||||
#: shared-bindings/time/__init__.c:174 shared-bindings/time/__init__.c:255
|
||||
#: shared-bindings/time/__init__.c:174 shared-bindings/time/__init__.c:269
|
||||
msgid "function takes exactly 9 arguments"
|
||||
msgstr "função leva exatamente 9 argumentos"
|
||||
|
||||
#: shared-bindings/time/__init__.c:226 shared-bindings/time/__init__.c:259
|
||||
#: shared-bindings/time/__init__.c:240 shared-bindings/time/__init__.c:273
|
||||
msgid "timestamp out of range for platform time_t"
|
||||
msgstr "timestamp fora do intervalo para a plataforma time_t"
|
||||
|
||||
|
@ -28,6 +28,7 @@ STATIC const mp_rom_map_elem_t board_global_dict_table[] = {
|
||||
{ MP_ROM_QSTR(MP_QSTR_GREEN_LED), MP_ROM_PTR(&pin_PA06) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_D9), MP_ROM_PTR(&pin_PA07) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_VOLTAGE_MONITOR), MP_ROM_PTR(&pin_PA07) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_BATTERY), MP_ROM_PTR(&pin_PA07) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_D10), MP_ROM_PTR(&pin_PA18) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_D11), MP_ROM_PTR(&pin_PA16) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_D12), MP_ROM_PTR(&pin_PA19) },
|
||||
|
@ -22,6 +22,7 @@ STATIC const mp_rom_map_elem_t board_global_dict_table[] = {
|
||||
{ MP_ROM_QSTR(MP_QSTR_D6), MP_ROM_PTR(&pin_PA20) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_D9), MP_ROM_PTR(&pin_PA07) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_VOLTAGE_MONITOR), MP_ROM_PTR(&pin_PA07) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_BATTERY), MP_ROM_PTR(&pin_PA07) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_D10), MP_ROM_PTR(&pin_PA18) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_D11), MP_ROM_PTR(&pin_PA16) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_D12), MP_ROM_PTR(&pin_PA19) },
|
||||
|
@ -22,6 +22,7 @@ STATIC const mp_rom_map_elem_t board_global_dict_table[] = {
|
||||
{ MP_ROM_QSTR(MP_QSTR_D6), MP_ROM_PTR(&pin_PA20) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_D9), MP_ROM_PTR(&pin_PA07) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_VOLTAGE_MONITOR), MP_ROM_PTR(&pin_PA07) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_BATTERY), MP_ROM_PTR(&pin_PA07) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_D10), MP_ROM_PTR(&pin_PA18) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_D11), MP_ROM_PTR(&pin_PA16) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_D12), MP_ROM_PTR(&pin_PA19) },
|
||||
|
@ -22,6 +22,7 @@ STATIC const mp_rom_map_elem_t board_global_dict_table[] = {
|
||||
{ MP_ROM_QSTR(MP_QSTR_D6), MP_ROM_PTR(&pin_PA20) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_D9), MP_ROM_PTR(&pin_PA07) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_VOLTAGE_MONITOR), MP_ROM_PTR(&pin_PA07) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_BATTERY), MP_ROM_PTR(&pin_PA07) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_D10), MP_ROM_PTR(&pin_PA18) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_D11), MP_ROM_PTR(&pin_PA16) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_D12), MP_ROM_PTR(&pin_PA19) },
|
||||
|
@ -22,6 +22,7 @@ STATIC const mp_rom_map_elem_t board_global_dict_table[] = {
|
||||
{ MP_ROM_QSTR(MP_QSTR_D6), MP_ROM_PTR(&pin_PA20) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_D9), MP_ROM_PTR(&pin_PA07) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_VOLTAGE_MONITOR), MP_ROM_PTR(&pin_PA07) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_BATTERY), MP_ROM_PTR(&pin_PA07) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_D10), MP_ROM_PTR(&pin_PA18) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_D11), MP_ROM_PTR(&pin_PA16) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_D12), MP_ROM_PTR(&pin_PA19) },
|
||||
|
@ -22,6 +22,7 @@ STATIC const mp_rom_map_elem_t board_global_dict_table[] = {
|
||||
{ MP_ROM_QSTR(MP_QSTR_D6), MP_ROM_PTR(&pin_PA20) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_D9), MP_ROM_PTR(&pin_PA07) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_VOLTAGE_MONITOR), MP_ROM_PTR(&pin_PA07) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_BATTERY), MP_ROM_PTR(&pin_PA07) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_D10), MP_ROM_PTR(&pin_PA18) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_D11), MP_ROM_PTR(&pin_PA16) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_D12), MP_ROM_PTR(&pin_PA19) },
|
||||
|
@ -22,6 +22,7 @@ STATIC const mp_rom_map_elem_t board_global_dict_table[] = {
|
||||
{ MP_ROM_QSTR(MP_QSTR_D6), MP_ROM_PTR(&pin_PA20) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_D9), MP_ROM_PTR(&pin_PA07) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_VOLTAGE_MONITOR), MP_ROM_PTR(&pin_PA07) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_BATTERY), MP_ROM_PTR(&pin_PA07) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_D10), MP_ROM_PTR(&pin_PA18) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_D11), MP_ROM_PTR(&pin_PA16) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_D12), MP_ROM_PTR(&pin_PA19) },
|
||||
|
@ -28,6 +28,7 @@ STATIC const mp_rom_map_elem_t board_global_dict_table[] = {
|
||||
{ MP_ROM_QSTR(MP_QSTR_D13), MP_ROM_PTR(&pin_PA23) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_NEOPIXEL), MP_ROM_PTR(&pin_PB03) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_VOLTAGE_MONITOR), MP_ROM_PTR(&pin_PB01) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_BATTERY), MP_ROM_PTR(&pin_PB01) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_I2C), MP_ROM_PTR(&board_i2c_obj) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_SPI), MP_ROM_PTR(&board_spi_obj) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_UART), MP_ROM_PTR(&board_uart_obj) },
|
||||
|
38
ports/atmel-samd/boards/meowmeow/board.c
Normal file
38
ports/atmel-samd/boards/meowmeow/board.c
Normal file
@ -0,0 +1,38 @@
|
||||
/*
|
||||
* This file is part of the MicroPython project, http://micropython.org/
|
||||
*
|
||||
* The MIT License (MIT)
|
||||
*
|
||||
* Copyright (c) 2017 Andrés Sabas for Electronic Cats
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
* of this software and associated documentation files (the "Software"), to deal
|
||||
* in the Software without restriction, including without limitation the rights
|
||||
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
* copies of the Software, and to permit persons to whom the Software is
|
||||
* furnished to do so, subject to the following conditions:
|
||||
*
|
||||
* The above copyright notice and this permission notice shall be included in
|
||||
* all copies or substantial portions of the Software.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||
* THE SOFTWARE.
|
||||
*/
|
||||
|
||||
#include "boards/board.h"
|
||||
|
||||
void board_init(void)
|
||||
{
|
||||
}
|
||||
|
||||
bool board_requests_safe_mode(void) {
|
||||
return false;
|
||||
}
|
||||
|
||||
void reset_board(void) {
|
||||
}
|
36
ports/atmel-samd/boards/meowmeow/mpconfigboard.h
Normal file
36
ports/atmel-samd/boards/meowmeow/mpconfigboard.h
Normal file
@ -0,0 +1,36 @@
|
||||
#define MICROPY_HW_BOARD_NAME "Meow Meow"
|
||||
#define MICROPY_HW_MCU_NAME "samd21g18"
|
||||
|
||||
|
||||
// These are pins not to reset.
|
||||
// PA24 and PA25 are USB.
|
||||
#define MICROPY_PORT_A (PORT_PA24 | PORT_PA25)
|
||||
#define MICROPY_PORT_B (0)
|
||||
#define MICROPY_PORT_C (0)
|
||||
|
||||
#include "internal_flash.h"
|
||||
|
||||
// If you change this, then make sure to update the linker scripts as well to
|
||||
// make sure you don't overwrite code.
|
||||
#define CIRCUITPY_INTERNAL_NVM_SIZE 0
|
||||
|
||||
#define BOARD_FLASH_SIZE (0x00040000 - 0x2000 - 0x010000)
|
||||
|
||||
#define CALIBRATE_CRYSTALLESS 1
|
||||
|
||||
// Explanation of how a user got into safe mode.
|
||||
#define BOARD_USER_SAFE_MODE_ACTION "pressing both buttons at start up"
|
||||
|
||||
#define DEFAULT_I2C_BUS_SCL (&pin_PA01)
|
||||
#define DEFAULT_I2C_BUS_SDA (&pin_PA00)
|
||||
|
||||
#define DEFAULT_SPI_BUS_SCK (&pin_PA15)
|
||||
#define DEFAULT_SPI_BUS_MOSI (&pin_PA14)
|
||||
#define DEFAULT_SPI_BUS_MISO (&pin_PA12)
|
||||
|
||||
#define DEFAULT_UART_BUS_RX (&pin_PA11)
|
||||
#define DEFAULT_UART_BUS_TX (&pin_PA10)
|
||||
|
||||
// USB is always used internally so skip the pin objects for it.
|
||||
#define IGNORE_PIN_PA24 1
|
||||
#define IGNORE_PIN_PA25 1
|
11
ports/atmel-samd/boards/meowmeow/mpconfigboard.mk
Normal file
11
ports/atmel-samd/boards/meowmeow/mpconfigboard.mk
Normal file
@ -0,0 +1,11 @@
|
||||
LD_FILE = boards/samd21x18-bootloader.ld
|
||||
USB_VID = 0xBAB1
|
||||
USB_PID = 0x1209
|
||||
USB_PRODUCT = "Meow Meow"
|
||||
USB_MANUFACTURER = "Electronic Cats"
|
||||
|
||||
INTERNAL_FLASH_FILESYSTEM = 1
|
||||
LONGINT_IMPL = NONE
|
||||
|
||||
CHIP_VARIANT = SAMD21G18A
|
||||
CHIP_FAMILY = samd21
|
43
ports/atmel-samd/boards/meowmeow/pins.c
Normal file
43
ports/atmel-samd/boards/meowmeow/pins.c
Normal file
@ -0,0 +1,43 @@
|
||||
#include "shared-bindings/board/__init__.h"
|
||||
|
||||
#include "board_busses.h"
|
||||
|
||||
STATIC const mp_rom_map_elem_t board_global_dict_table[] = {
|
||||
{ MP_ROM_QSTR(MP_QSTR_A0), MP_ROM_PTR(&pin_PA02) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_A1), MP_ROM_PTR(&pin_PA03) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_A2), MP_ROM_PTR(&pin_PA04) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_A3), MP_ROM_PTR(&pin_PA05) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_A4), MP_ROM_PTR(&pin_PA06) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_A5), MP_ROM_PTR(&pin_PA07) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_A6), MP_ROM_PTR(&pin_PB02) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_A7), MP_ROM_PTR(&pin_PB03) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_A8), MP_ROM_PTR(&pin_PB08) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_A9), MP_ROM_PTR(&pin_PB09) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_A10), MP_ROM_PTR(&pin_PA11) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_A11), MP_ROM_PTR(&pin_PA09) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_D0), MP_ROM_PTR(&pin_PA11) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_RX), MP_ROM_PTR(&pin_PA11) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_D1), MP_ROM_PTR(&pin_PA10) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_TX), MP_ROM_PTR(&pin_PA10) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_D2), MP_ROM_PTR(&pin_PB02) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_D3), MP_ROM_PTR(&pin_PB03) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_D4), MP_ROM_PTR(&pin_PA14) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_D5), MP_ROM_PTR(&pin_PA05) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_D6), MP_ROM_PTR(&pin_PA15) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_D7), MP_ROM_PTR(&pin_PB22) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_D8), MP_ROM_PTR(&pin_PA06) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_D9), MP_ROM_PTR(&pin_PA07) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_D10), MP_ROM_PTR(&pin_PA30) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_D11), MP_ROM_PTR(&pin_PA31) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_D12), MP_ROM_PTR(&pin_PA02) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_D13), MP_ROM_PTR(&pin_PB23) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_SDA), MP_ROM_PTR(&pin_PA00) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_SCL), MP_ROM_PTR(&pin_PA01) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_SCK), MP_ROM_PTR(&pin_PA15) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_MOSI), MP_ROM_PTR(&pin_PA14) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_MISO), MP_ROM_PTR(&pin_PA12) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_I2C), MP_ROM_PTR(&board_i2c_obj) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_SPI), MP_ROM_PTR(&board_spi_obj) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_UART), MP_ROM_PTR(&board_uart_obj) },
|
||||
};
|
||||
MP_DEFINE_CONST_DICT(board_module_globals, board_global_dict_table);
|
@ -3,7 +3,7 @@
|
||||
|
||||
#define CIRCUITPY_MCU_FAMILY samd51
|
||||
|
||||
// This is for a purple prototype which is Rev C
|
||||
// This is for Rev D
|
||||
#define MICROPY_HW_APA102_MOSI (&pin_PA01)
|
||||
#define MICROPY_HW_APA102_SCK (&pin_PA00)
|
||||
|
||||
@ -28,7 +28,7 @@
|
||||
#include "external_flash/devices.h"
|
||||
|
||||
#define EXTERNAL_FLASH_DEVICE_COUNT 1
|
||||
#define EXTERNAL_FLASH_DEVICES W25Q128JV_SQ
|
||||
#define EXTERNAL_FLASH_DEVICES GD25Q64C
|
||||
|
||||
#include "external_flash/external_flash.h"
|
||||
|
||||
|
@ -15,6 +15,9 @@ STATIC const mp_rom_map_elem_t board_global_dict_table[] = {
|
||||
{ MP_OBJ_NEW_QSTR(MP_QSTR_SDA), MP_ROM_PTR(&pin_PB08) },
|
||||
{ MP_OBJ_NEW_QSTR(MP_QSTR_SCL), MP_ROM_PTR(&pin_PB09) },
|
||||
|
||||
{ MP_OBJ_NEW_QSTR(MP_QSTR_ACCELEROMETER_SDA), MP_ROM_PTR(&pin_PA12) },
|
||||
{ MP_OBJ_NEW_QSTR(MP_QSTR_ACCELEROMETER_SCL), MP_ROM_PTR(&pin_PA13) },
|
||||
|
||||
// Key Grid columns
|
||||
{ MP_OBJ_NEW_QSTR(MP_QSTR_COL0), MP_ROM_PTR(&pin_PA14) },
|
||||
{ MP_OBJ_NEW_QSTR(MP_QSTR_COL1), MP_ROM_PTR(&pin_PA15) },
|
||||
|
@ -138,16 +138,5 @@ void common_hal_analogio_analogout_set_value(analogio_analogout_obj_t *self,
|
||||
}
|
||||
|
||||
void analogout_reset(void) {
|
||||
#if defined(SAMD21) && !defined(PIN_PA02)
|
||||
return;
|
||||
#endif
|
||||
#ifdef SAMD21
|
||||
while (DAC->STATUS.reg & DAC_STATUS_SYNCBUSY) {}
|
||||
#endif
|
||||
#ifdef SAMD51
|
||||
while (DAC->SYNCBUSY.reg & DAC_SYNCBUSY_SWRST) {}
|
||||
#endif
|
||||
DAC->CTRLA.reg |= DAC_CTRLA_SWRST;
|
||||
|
||||
// TODO(tannewt): Turn off the DAC clocks to save power.
|
||||
// AudioOut resets the DAC in case its been used for audio which requires special handling.
|
||||
}
|
||||
|
@ -33,6 +33,7 @@
|
||||
#include "py/runtime.h"
|
||||
#include "common-hal/audioio/AudioOut.h"
|
||||
#include "shared-bindings/audioio/AudioOut.h"
|
||||
#include "shared-bindings/microcontroller/__init__.h"
|
||||
#include "shared-bindings/microcontroller/Pin.h"
|
||||
#include "supervisor/shared/translate.h"
|
||||
|
||||
@ -52,11 +53,73 @@
|
||||
#include "samd/pins.h"
|
||||
#include "samd/timers.h"
|
||||
|
||||
#ifdef SAMD21
|
||||
static void ramp_value(uint16_t start, uint16_t end) {
|
||||
start = DAC->DATA.reg;
|
||||
int32_t diff = (int32_t) end - start;
|
||||
int32_t step = 49;
|
||||
int32_t steps = diff / step;
|
||||
if (diff < 0) {
|
||||
steps = -steps;
|
||||
step = -step;
|
||||
}
|
||||
for (int32_t i = 0; i < steps; i++) {
|
||||
uint32_t value = start + step * i;
|
||||
DAC->DATA.reg = value;
|
||||
DAC->DATABUF.reg = value;
|
||||
common_hal_mcu_delay_us(50);
|
||||
#ifdef MICROPY_VM_HOOK_LOOP
|
||||
MICROPY_VM_HOOK_LOOP
|
||||
#endif
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
#ifdef SAMD51
|
||||
static void ramp_value(uint16_t start, uint16_t end) {
|
||||
int32_t diff = (int32_t) end - start;
|
||||
int32_t step = 49;
|
||||
int32_t steps = diff / step;
|
||||
if (diff < 0) {
|
||||
steps = -steps;
|
||||
step = -step;
|
||||
}
|
||||
|
||||
for (int32_t i = 0; i < steps; i++) {
|
||||
uint16_t value = start + step * i;
|
||||
DAC->DATA[0].reg = value;
|
||||
DAC->DATABUF[0].reg = value;
|
||||
DAC->DATA[1].reg = value;
|
||||
DAC->DATABUF[1].reg = value;
|
||||
|
||||
common_hal_mcu_delay_us(50);
|
||||
#ifdef MICROPY_VM_HOOK_LOOP
|
||||
MICROPY_VM_HOOK_LOOP
|
||||
#endif
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
void audioout_reset(void) {
|
||||
#if defined(SAMD21) && !defined(PIN_PA02)
|
||||
return;
|
||||
#endif
|
||||
#ifdef SAMD21
|
||||
while (DAC->STATUS.reg & DAC_STATUS_SYNCBUSY) {}
|
||||
#endif
|
||||
#ifdef SAMD51
|
||||
while (DAC->SYNCBUSY.reg & DAC_SYNCBUSY_SWRST) {}
|
||||
#endif
|
||||
if (DAC->CTRLA.bit.ENABLE) {
|
||||
ramp_value(0x8000, 0);
|
||||
}
|
||||
DAC->CTRLA.reg |= DAC_CTRLA_SWRST;
|
||||
|
||||
// TODO(tannewt): Turn off the DAC clocks to save power.
|
||||
}
|
||||
|
||||
void common_hal_audioio_audioout_construct(audioio_audioout_obj_t* self,
|
||||
const mcu_pin_obj_t* left_channel, const mcu_pin_obj_t* right_channel) {
|
||||
const mcu_pin_obj_t* left_channel, const mcu_pin_obj_t* right_channel, uint16_t quiescent_value) {
|
||||
#ifdef SAMD51
|
||||
bool dac_clock_enabled = hri_mclk_get_APBDMASK_DAC_bit(MCLK);
|
||||
#endif
|
||||
@ -94,12 +157,10 @@ void common_hal_audioio_audioout_construct(audioio_audioout_obj_t* self,
|
||||
if (right_channel != NULL) {
|
||||
claim_pin(right_channel);
|
||||
self->right_channel = right_channel;
|
||||
gpio_set_pin_function(self->right_channel->number, GPIO_PIN_FUNCTION_B);
|
||||
audio_dma_init(&self->right_dma);
|
||||
}
|
||||
#endif
|
||||
self->left_channel = left_channel;
|
||||
gpio_set_pin_function(self->left_channel->number, GPIO_PIN_FUNCTION_B);
|
||||
audio_dma_init(&self->left_dma);
|
||||
|
||||
#ifdef SAMD51
|
||||
@ -118,6 +179,10 @@ void common_hal_audioio_audioout_construct(audioio_audioout_obj_t* self,
|
||||
|
||||
DAC->CTRLA.bit.SWRST = 1;
|
||||
while (DAC->CTRLA.bit.SWRST == 1) {}
|
||||
// Make sure there are no outstanding access errors. (Reading DATA can cause this.)
|
||||
#ifdef SAMD51
|
||||
PAC->INTFLAGD.reg = PAC_INTFLAGD_DAC;
|
||||
#endif
|
||||
|
||||
bool channel0_enabled = true;
|
||||
#ifdef SAMD51
|
||||
@ -159,6 +224,8 @@ void common_hal_audioio_audioout_construct(audioio_audioout_obj_t* self,
|
||||
#endif
|
||||
#ifdef SAMD51
|
||||
while (DAC->SYNCBUSY.bit.ENABLE == 1) {}
|
||||
while (channel0_enabled && DAC->STATUS.bit.READY0 == 0) {}
|
||||
while (channel1_enabled && DAC->STATUS.bit.READY1 == 0) {}
|
||||
#endif
|
||||
|
||||
// Use a timer to coordinate when DAC conversions occur.
|
||||
@ -220,13 +287,21 @@ void common_hal_audioio_audioout_construct(audioio_audioout_obj_t* self,
|
||||
|
||||
#ifdef SAMD51
|
||||
connect_event_user_to_channel(EVSYS_ID_USER_DAC_START_1, channel);
|
||||
if (right_channel != NULL) {
|
||||
gpio_set_pin_function(self->right_channel->number, GPIO_PIN_FUNCTION_B);
|
||||
}
|
||||
#define EVSYS_ID_USER_DAC_START EVSYS_ID_USER_DAC_START_0
|
||||
#endif
|
||||
connect_event_user_to_channel(EVSYS_ID_USER_DAC_START, channel);
|
||||
gpio_set_pin_function(self->left_channel->number, GPIO_PIN_FUNCTION_B);
|
||||
init_async_event_channel(channel, tc_gen_id);
|
||||
|
||||
self->tc_to_dac_event_channel = channel;
|
||||
|
||||
// Ramp the DAC up.
|
||||
self->quiescent_value = quiescent_value;
|
||||
ramp_value(0, quiescent_value);
|
||||
|
||||
// Leave the DMA setup to playback.
|
||||
}
|
||||
|
||||
@ -239,6 +314,9 @@ void common_hal_audioio_audioout_deinit(audioio_audioout_obj_t* self) {
|
||||
return;
|
||||
}
|
||||
|
||||
// Ramp the DAC down.
|
||||
ramp_value(self->quiescent_value, 0);
|
||||
|
||||
DAC->CTRLA.bit.ENABLE = 0;
|
||||
#ifdef SAMD21
|
||||
while (DAC->STATUS.bit.SYNCBUSY == 1) {}
|
||||
@ -381,6 +459,9 @@ void common_hal_audioio_audioout_stop(audioio_audioout_obj_t* self) {
|
||||
#ifdef SAMD51
|
||||
audio_dma_stop(&self->right_dma);
|
||||
#endif
|
||||
// Ramp the DAC to default. The start is ignored when the current value can be readback.
|
||||
// Otherwise, we just set it immediately.
|
||||
ramp_value(self->quiescent_value, self->quiescent_value);
|
||||
}
|
||||
|
||||
bool common_hal_audioio_audioout_get_playing(audioio_audioout_obj_t* self) {
|
||||
|
@ -44,6 +44,7 @@ typedef struct {
|
||||
|
||||
uint8_t tc_to_dac_event_channel;
|
||||
bool playing;
|
||||
uint16_t quiescent_value;
|
||||
} audioio_audioout_obj_t;
|
||||
|
||||
void audioout_reset(void);
|
||||
|
@ -20,8 +20,6 @@
|
||||
#define MICROPY_COMP_CONST (1)
|
||||
#define MICROPY_COMP_DOUBLE_TUPLE_ASSIGN (1)
|
||||
#define MICROPY_COMP_TRIPLE_TUPLE_ASSIGN (1)
|
||||
// Turn off for consistency
|
||||
#define MICROPY_CPYTHON_COMPAT (0)
|
||||
#define MICROPY_MEM_STATS (0)
|
||||
#define MICROPY_DEBUG_PRINTERS (0)
|
||||
#define MICROPY_ENABLE_GC (1)
|
||||
@ -57,7 +55,6 @@
|
||||
#define MICROPY_PY_DESCRIPTORS (1)
|
||||
#define MICROPY_PY_MATH (0)
|
||||
#define MICROPY_PY_CMATH (0)
|
||||
#define MICROPY_PY_IO (0)
|
||||
#define MICROPY_PY_URANDOM (0)
|
||||
#define MICROPY_PY_URANDOM_EXTRA_FUNCS (0)
|
||||
#define MICROPY_PY_STRUCT (0)
|
||||
@ -96,7 +93,6 @@
|
||||
#define MICROPY_VFS (1)
|
||||
#define MICROPY_VFS_FAT (1)
|
||||
#define MICROPY_PY_MACHINE (1)
|
||||
#define MICROPY_MODULE_WEAK_LINKS (0)
|
||||
#define MICROPY_REPL_AUTO_INDENT (1)
|
||||
#define MICROPY_HW_ENABLE_DAC (1)
|
||||
#define MICROPY_ENABLE_FINALISER (1)
|
||||
@ -155,15 +151,33 @@ typedef long mp_off_t;
|
||||
#include "include/sam.h"
|
||||
|
||||
#ifdef SAMD21
|
||||
#define CIRCUITPY_MCU_FAMILY samd21
|
||||
#define CIRCUITPY_MCU_FAMILY samd21
|
||||
#define MICROPY_PY_SYS_PLATFORM "Atmel SAMD21"
|
||||
#define PORT_HEAP_SIZE (16384 + 4096)
|
||||
#define PORT_HEAP_SIZE (16384 + 4096)
|
||||
#define CIRCUITPY_DEFAULT_STACK_SIZE 4096
|
||||
#define MICROPY_CPYTHON_COMPAT (0)
|
||||
#define MICROPY_MODULE_WEAK_LINKS (0)
|
||||
#define MICROPY_PY_BUILTINS_NOTIMPLEMENTED (0)
|
||||
#define MICROPY_PY_COLLECTIONS_ORDEREDDICT (0)
|
||||
#define MICROPY_PY_FUNCTION_ATTRS (0)
|
||||
#define MICROPY_PY_IO (0)
|
||||
#define MICROPY_PY_REVERSE_SPECIAL_METHODS (0)
|
||||
#define MICROPY_PY_SYS_EXC_INFO (0)
|
||||
#endif
|
||||
|
||||
#ifdef SAMD51
|
||||
#define CIRCUITPY_MCU_FAMILY samd51
|
||||
#define CIRCUITPY_MCU_FAMILY samd51
|
||||
#define MICROPY_PY_SYS_PLATFORM "MicroChip SAMD51"
|
||||
#define PORT_HEAP_SIZE (0x20000) // 128KiB
|
||||
#define PORT_HEAP_SIZE (0x20000) // 128KiB
|
||||
#define CIRCUITPY_DEFAULT_STACK_SIZE 8192
|
||||
#define MICROPY_CPYTHON_COMPAT (1)
|
||||
#define MICROPY_MODULE_WEAK_LINKS (1)
|
||||
#define MICROPY_PY_BUILTINS_NOTIMPLEMENTED (1)
|
||||
#define MICROPY_PY_COLLECTIONS_ORDEREDDICT (1)
|
||||
#define MICROPY_PY_FUNCTION_ATTRS (1)
|
||||
#define MICROPY_PY_IO (1)
|
||||
#define MICROPY_PY_REVERSE_SPECIAL_METHODS (1)
|
||||
#define MICROPY_PY_SYS_EXC_INFO (1)
|
||||
#endif
|
||||
|
||||
#ifdef LONGINT_IMPL_NONE
|
||||
@ -326,6 +340,34 @@ extern const struct _mp_obj_module_t wiznet_module;
|
||||
{ MP_OBJ_NEW_QSTR(MP_QSTR_supervisor), (mp_obj_t)&supervisor_module }, \
|
||||
{ MP_OBJ_NEW_QSTR(MP_QSTR_time), (mp_obj_t)&time_module }, \
|
||||
{ MP_OBJ_NEW_QSTR(MP_QSTR_usb_hid),(mp_obj_t)&usb_hid_module },
|
||||
#elif MICROPY_MODULE_WEAK_LINKS
|
||||
#define MICROPY_PORT_BUILTIN_MODULES \
|
||||
{ MP_OBJ_NEW_QSTR(MP_QSTR_analogio), (mp_obj_t)&analogio_module }, \
|
||||
{ MP_OBJ_NEW_QSTR(MP_QSTR_board), (mp_obj_t)&board_module }, \
|
||||
{ MP_OBJ_NEW_QSTR(MP_QSTR_busio), (mp_obj_t)&busio_module }, \
|
||||
{ MP_OBJ_NEW_QSTR(MP_QSTR_digitalio), (mp_obj_t)&digitalio_module }, \
|
||||
{ MP_OBJ_NEW_QSTR(MP_QSTR_microcontroller), (mp_obj_t)µcontroller_module }, \
|
||||
{ MP_OBJ_NEW_QSTR(MP_QSTR_neopixel_write),(mp_obj_t)&neopixel_write_module }, \
|
||||
{ MP_OBJ_NEW_QSTR(MP_QSTR__os), (mp_obj_t)&os_module }, \
|
||||
{ MP_OBJ_NEW_QSTR(MP_QSTR_pulseio), (mp_obj_t)&pulseio_module }, \
|
||||
{ MP_OBJ_NEW_QSTR(MP_QSTR_random), (mp_obj_t)&random_module }, \
|
||||
{ MP_OBJ_NEW_QSTR(MP_QSTR_rtc), (mp_obj_t)&rtc_module }, \
|
||||
{ MP_OBJ_NEW_QSTR(MP_QSTR_samd),(mp_obj_t)&samd_module }, \
|
||||
{ MP_OBJ_NEW_QSTR(MP_QSTR_storage), (mp_obj_t)&storage_module }, \
|
||||
{ MP_OBJ_NEW_QSTR(MP_QSTR_struct), (mp_obj_t)&struct_module }, \
|
||||
{ MP_OBJ_NEW_QSTR(MP_QSTR_supervisor), (mp_obj_t)&supervisor_module }, \
|
||||
{ MP_OBJ_NEW_QSTR(MP_QSTR_math), (mp_obj_t)&math_module }, \
|
||||
{ MP_OBJ_NEW_QSTR(MP_QSTR__time), (mp_obj_t)&time_module }, \
|
||||
{ MP_OBJ_NEW_QSTR(MP_QSTR_usb_hid),(mp_obj_t)&usb_hid_module }, \
|
||||
TOUCHIO_MODULE \
|
||||
EXTRA_BUILTIN_MODULES
|
||||
|
||||
#define MICROPY_PORT_BUILTIN_MODULE_WEAK_LINKS \
|
||||
{ MP_ROM_QSTR(MP_QSTR_errno), MP_ROM_PTR(&mp_module_uerrno) }, \
|
||||
{ MP_ROM_QSTR(MP_QSTR_io), MP_ROM_PTR(&mp_module_io) }, \
|
||||
{ MP_ROM_QSTR(MP_QSTR_os), MP_ROM_PTR(&os_module) }, \
|
||||
{ MP_OBJ_NEW_QSTR(MP_QSTR_time), (mp_obj_t)&time_module }, \
|
||||
|
||||
#else
|
||||
#define MICROPY_PORT_BUILTIN_MODULES \
|
||||
{ MP_OBJ_NEW_QSTR(MP_QSTR_analogio), (mp_obj_t)&analogio_module }, \
|
||||
@ -403,8 +445,4 @@ void run_background_tasks(void);
|
||||
#define CIRCUITPY_AUTORELOAD_DELAY_MS 500
|
||||
#define CIRCUITPY_BOOT_OUTPUT_FILE "/boot_out.txt"
|
||||
|
||||
// TODO(tannewt): Make this 6k+ for any non-express M4 boards because they cache sectors on the
|
||||
// stack.
|
||||
#define CIRCUITPY_DEFAULT_STACK_SIZE 4096
|
||||
|
||||
#endif // __INCLUDED_MPCONFIGPORT_H
|
||||
|
@ -249,11 +249,11 @@ void reset_port(void) {
|
||||
}
|
||||
|
||||
#if defined(EXPRESS_BOARD) && !defined(__SAMR21G18A__)
|
||||
audio_dma_reset();
|
||||
audioout_reset();
|
||||
#if !defined(__SAMD51G19A__) && !defined(__SAMD51G18A__)
|
||||
i2sout_reset();
|
||||
#endif
|
||||
audio_dma_reset();
|
||||
//pdmin_reset();
|
||||
#endif
|
||||
#ifdef SAMD21
|
||||
|
@ -90,6 +90,7 @@ LIBS += -L $(dir $(LIBGCC_FILE_NAME)) -lgcc
|
||||
SRC_NRFX = $(addprefix nrfx/,\
|
||||
drivers/src/nrfx_power.c \
|
||||
drivers/src/nrfx_spim.c \
|
||||
drivers/src/nrfx_timer.c \
|
||||
drivers/src/nrfx_twim.c \
|
||||
drivers/src/nrfx_uarte.c \
|
||||
)
|
||||
@ -123,6 +124,7 @@ SRC_C += \
|
||||
peripherals/nrf/clocks.c \
|
||||
peripherals/nrf/$(MCU_CHIP)/pins.c \
|
||||
peripherals/nrf/$(MCU_CHIP)/power.c \
|
||||
peripherals/nrf/timers.c \
|
||||
supervisor/shared/memory.c
|
||||
|
||||
DRIVERS_SRC_C += $(addprefix modules/,\
|
||||
@ -298,16 +300,16 @@ sd: $(BUILD)/$(OUTPUT_FILENAME).hex
|
||||
else ifeq ($(FLASHER), pyocd)
|
||||
|
||||
flash: $(BUILD)/$(OUTPUT_FILENAME).hex
|
||||
pyocd-flashtool -t $(MCU_SUB_VARIANT) $< --sector_erase
|
||||
pyocd-tool -t $(MCU_SUB_VARIANT) erase $(BOOT_SETTING_ADDR)
|
||||
pyocd-tool -t $(MCU_SUB_VARIANT) write32 $(BOOT_SETTING_ADDR) 0x00000001
|
||||
pyocd-tool -t $(MCU_SUB_VARIANT) reset
|
||||
pyocd-flashtool -t $(MCU_VARIANT) $< --sector_erase
|
||||
#pyocd-tool -t $(MCU_VARIANT) erase $(BOOT_SETTING_ADDR)
|
||||
pyocd-tool -t $(MCU_VARIANT) write32 $(BOOT_SETTING_ADDR) 0x00000001
|
||||
pyocd-tool -t $(MCU_VARIANT) reset
|
||||
|
||||
sd: $(BUILD)/$(OUTPUT_FILENAME).hex
|
||||
pyocd-flashtool -t $(MCU_SUB_VARIANT) --chip_erase
|
||||
pyocd-flashtool -t $(MCU_SUB_VARIANT) $(SOFTDEV_HEX)
|
||||
pyocd-flashtool -t $(MCU_SUB_VARIANT) $< --sector_erase
|
||||
pyocd-tool -t $(MCU_SUB_VARIANT) reset $(BOOT_SETTING_ADDR)
|
||||
pyocd-flashtool -t $(MCU_VARIANT) --chip_erase
|
||||
pyocd-flashtool -t $(MCU_VARIANT) $(SOFTDEV_HEX)
|
||||
pyocd-flashtool -t $(MCU_VARIANT) $< --sector_erase
|
||||
pyocd-tool -t $(MCU_VARIANT) reset $(BOOT_SETTING_ADDR)
|
||||
|
||||
endif
|
||||
|
||||
|
@ -39,6 +39,7 @@ the following links:
|
||||
* Adafruit [Feather nRF52](boards/feather_nrf52832/README.md): 512KB Flash, 64KB SRAM
|
||||
* Adafruit [Feather nRF52840](boards/feather_nrf52840_express/README.md): 1MB Flash, 256KB SRAM
|
||||
* Nordic PCA10056 see [Feather nRF52840](boards/pca10056/README.md)
|
||||
* MakerDiary NRF52840 MDK see [its README](boards/makerdiary_nrf52840_mdk/README.md)
|
||||
|
||||
For all other board targets, see the generic notes below.
|
||||
|
||||
@ -80,6 +81,7 @@ pca10040 | s132 | Peripheral and Scanner | [S
|
||||
pca10056 | s140 | Peripheral and Scanner | [Segger](#segger-targets)
|
||||
feather_nrf52832 | s132 | Peripheral and Scanner | [UART DFU](#dfu-targets)
|
||||
feather_nrf52840_express | s140 | Peripheral and Scanner | UF2 bootloader
|
||||
makerdiary_nrf52840_mdk | s140 | Peripheral and Scanner | pyocd or ARM mbed DAPLink
|
||||
|
||||
## Segger Targets
|
||||
|
||||
|
102
ports/nrf/boards/makerdiary_nrf52840_mdk/README.md
Normal file
102
ports/nrf/boards/makerdiary_nrf52840_mdk/README.md
Normal file
@ -0,0 +1,102 @@
|
||||
# MakerDiary NRF52840 MDK
|
||||
|
||||
Refer to https://github.com/makerdiary/nrf52840-mdk or
|
||||
https://wiki.makerdiary.com/nrf52840-mdk/ for more details about the device.
|
||||
|
||||
Notably, CircuitPython does not currently support QSPI external flash on NRF
|
||||
devices, so neither does this port - the 64Mb flash device is not used for
|
||||
anything. Also, don't confuse this with the 64MiB drive that shows up on your
|
||||
computer - it's actually part of the MSC driver provided by the DAPLink
|
||||
debugger, and is inaccessible at all from Python land (this drive is where you
|
||||
can copy `firmware.hex` if you'd prefer to flash that way as opposed to with
|
||||
`pyocd`. You'll still have access to 256KB of the onboard flash, however, for
|
||||
storing your Python files, cat pictures, or whatever.
|
||||
|
||||
It's also interesting to note that all three LEDs and the "user button" on this
|
||||
device are wired through sinks, not sources, so flip your boolean expectations
|
||||
when dealing with `digitalio.DigitalInOut` on this device - `my_led.value =
|
||||
True` turns the LED off! Likewise, the user button will read `False` when
|
||||
pressed.
|
||||
|
||||
## Installing CircuitPython submodules
|
||||
|
||||
Before you can build, you will need to run the following commands once, which
|
||||
will install the submodules that are part of the CircuitPython ecosystem, and
|
||||
build the `mpy-cross` tool:
|
||||
|
||||
```
|
||||
$ cd circuitpython
|
||||
$ git submodule update --init
|
||||
$ make -C mpy-cross
|
||||
```
|
||||
|
||||
You then need to download the SD and Nordic SDK files via:
|
||||
|
||||
> This script relies on `wget`, which must be available from the command line.
|
||||
|
||||
```
|
||||
$ cd ports/nrf
|
||||
$ ./drivers/bluetooth/download_ble_stack.sh
|
||||
```
|
||||
|
||||
## Note about bootloaders
|
||||
|
||||
While most Adafruit devices come with (or can easily be flashed with) an
|
||||
Adafruit-provided bootloader (supporting niceties like UF2 flashing), this
|
||||
board comes with DAPLink which (apparently?) handles everything from debugging
|
||||
to programming the device, as well as the boot sequence. What's particularly
|
||||
awesome about this board is that there is no physical interaction with the board
|
||||
required to flash new code (read: CircuitPython builds) - the device is _always_
|
||||
listening for new firmware uploads (via `pyocd-flashtool`), even if userspace
|
||||
code is running.
|
||||
|
||||
## Building and Flashing CircuitPython
|
||||
|
||||
You'll need to have [pyocd](https://github.com/mbedmicro/pyOCD) installed as
|
||||
appropriate for your system.
|
||||
|
||||
```sh
|
||||
make BOARD=makerdiary_nrf52840_mdk FLASHER=pyocd SD=s140 flash
|
||||
```
|
||||
|
||||
This should give you the following (or very similar) output, and you will see
|
||||
a DFU blinky pattern on one of the board LEDs:
|
||||
|
||||
```
|
||||
$ make BOARD=makerdiary_nrf52840_mdk FLASHER=pyocd SD=s140 flash
|
||||
Use make V=1, make V=2 or set BUILD_VERBOSE similarly in your environment to increase build verbosity.
|
||||
pyocd-flashtool -t nrf52 build-makerdiary_nrf52840_mdk-s140/firmware.hex --sector_erase
|
||||
INFO:root:DAP SWD MODE initialised
|
||||
INFO:root:ROM table #0 @ 0xe00ff000 cidr=b105100d pidr=2002c4008
|
||||
INFO:root:[0]<e000e000:SCS-M4 cidr=b105e00d, pidr=4000bb00c, class=14>
|
||||
WARNING:root:Invalid coresight component, cidr=0x0
|
||||
INFO:root:[1]<e0001000: cidr=0, pidr=0, component invalid>
|
||||
INFO:root:[2]<e0002000:FPB cidr=b105e00d, pidr=4002bb003, class=14>
|
||||
WARNING:root:Invalid coresight component, cidr=0x1010101
|
||||
INFO:root:[3]<e0000000: cidr=1010101, pidr=101010101010101, component invalid>
|
||||
WARNING:root:Invalid coresight component, cidr=0x0
|
||||
INFO:root:[4]<e0040000: cidr=0, pidr=0, component invalid>
|
||||
INFO:root:[5]<e0041000:ETM-M4 cidr=b105900d, pidr=4000bb925, class=9, devtype=13, devid=0>
|
||||
INFO:root:CPU core is Cortex-M4
|
||||
INFO:root:FPU present
|
||||
INFO:root:6 hardware breakpoints, 4 literal comparators
|
||||
INFO:root:4 hardware watchpoints
|
||||
[====================] 100%
|
||||
INFO:root:Programmed 237568 bytes (58 pages) at 14.28 kB/s
|
||||
#pyocd-tool -t nrf52 erase 0xFF000
|
||||
pyocd-tool -t nrf52 write32 0xFF000 0x00000001
|
||||
WARNING:root:Invalid coresight component, cidr=0x0
|
||||
WARNING:root:Invalid coresight component, cidr=0x1010101
|
||||
WARNING:root:Invalid coresight component, cidr=0x0
|
||||
pyocd-tool -t nrf52 reset
|
||||
WARNING:root:Invalid coresight component, cidr=0x0
|
||||
WARNING:root:Invalid coresight component, cidr=0x1010101
|
||||
WARNING:root:Invalid coresight component, cidr=0x0
|
||||
Resetting target
|
||||
```
|
||||
|
||||
Alternatively (and untested by me), it's apparently possible to copy
|
||||
`firmware.hex` to the MSC device provided by DAPLink and flash that way. Refer
|
||||
to [the upstream
|
||||
documentation](https://wiki.makerdiary.com/nrf52840-mdk/getting-started/#drag-n-drop-programming)
|
||||
for details.
|
40
ports/nrf/boards/makerdiary_nrf52840_mdk/board.c
Normal file
40
ports/nrf/boards/makerdiary_nrf52840_mdk/board.c
Normal file
@ -0,0 +1,40 @@
|
||||
/*
|
||||
* This file is part of the MicroPython project, http://micropython.org/
|
||||
*
|
||||
* The MIT License (MIT)
|
||||
*
|
||||
* Copyright (c) 2017 Scott Shawcroft for Adafruit Industries
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
* of this software and associated documentation files (the "Software"), to deal
|
||||
* in the Software without restriction, including without limitation the rights
|
||||
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
* copies of the Software, and to permit persons to whom the Software is
|
||||
* furnished to do so, subject to the following conditions:
|
||||
*
|
||||
* The above copyright notice and this permission notice shall be included in
|
||||
* all copies or substantial portions of the Software.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||
* THE SOFTWARE.
|
||||
*/
|
||||
|
||||
#include "boards/board.h"
|
||||
#include "usb.h"
|
||||
|
||||
void board_init(void) {
|
||||
usb_init();
|
||||
}
|
||||
|
||||
bool board_requests_safe_mode(void) {
|
||||
return false;
|
||||
}
|
||||
|
||||
void reset_board(void) {
|
||||
|
||||
}
|
64
ports/nrf/boards/makerdiary_nrf52840_mdk/mpconfigboard.h
Normal file
64
ports/nrf/boards/makerdiary_nrf52840_mdk/mpconfigboard.h
Normal file
@ -0,0 +1,64 @@
|
||||
/*
|
||||
* This file is part of the MicroPython project, http://micropython.org/
|
||||
*
|
||||
* The MIT License (MIT)
|
||||
*
|
||||
* Copyright (c) 2016 Glenn Ruben Bakke
|
||||
* Copyright (c) 2018 Dan Halbert for Adafruit Industries
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
* of this software and associated documentation files (the "Software"), to deal
|
||||
* in the Software without restriction, including without limitation the rights
|
||||
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
* copies of the Software, and to permit persons to whom the Software is
|
||||
* furnished to do so, subject to the following conditions:
|
||||
*
|
||||
* The above copyright notice and this permission notice shall be included in
|
||||
* all copies or substantial portions of the Software.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||
* THE SOFTWARE.
|
||||
*/
|
||||
|
||||
#define MAKERDIARYNRF52840MDK
|
||||
|
||||
#define MICROPY_HW_BOARD_NAME "MakerDiary nRF52840 MDK"
|
||||
#define MICROPY_HW_MCU_NAME "nRF52840"
|
||||
#define MICROPY_PY_SYS_PLATFORM "MakerDiary52840MDK"
|
||||
|
||||
#define MICROPY_QSPI_DATA0 (&pin_P1_05)
|
||||
#define MICROPY_QSPI_DATA1 (&pin_P1_04)
|
||||
#define MICROPY_QSPI_DATA2 (&pin_P1_02)
|
||||
#define MICROPY_QSPI_DATA3 (&pin_P1_01)
|
||||
#define MICROPY_QSPI_SCK (&pin_P1_03)
|
||||
#define MICROPY_QSPI_CS (&pin_P1_06)
|
||||
|
||||
#define CIRCUITPY_AUTORELOAD_DELAY_MS 500
|
||||
|
||||
// If you change this, then make sure to update the linker scripts as well to
|
||||
// make sure you don't overwrite code
|
||||
#define PORT_HEAP_SIZE (128 * 1024)
|
||||
// TODO #define CIRCUITPY_INTERNAL_NVM_SIZE 8192
|
||||
|
||||
#define BOARD_FLASH_SIZE (FLASH_SIZE - 0x4000 - CIRCUITPY_INTERNAL_NVM_SIZE)
|
||||
|
||||
// TODO #include "external_flash/devices.h"
|
||||
|
||||
#define EXTERNAL_FLASH_DEVICE_COUNT 1
|
||||
// Datasheet for when this is implemented:
|
||||
// http://www.mxic.com.tw/Lists/Datasheet/Attachments/7428/MX25R6435F,%20Wide%20Range,%2064Mb,%20v1.4.pdf
|
||||
#define EXTERNAL_FLASH_DEVICES MX25R6435F
|
||||
|
||||
#define EXTERNAL_FLASH_QSPI_DUAL
|
||||
|
||||
// TODO include "external_flash/external_flash.h"
|
||||
|
||||
#define BOARD_HAS_CRYSTAL 0
|
||||
|
||||
#define DEFAULT_UART_BUS_RX (&pin_P0_19)
|
||||
#define DEFAULT_UART_BUS_TX (&pin_P0_20)
|
16
ports/nrf/boards/makerdiary_nrf52840_mdk/mpconfigboard.mk
Normal file
16
ports/nrf/boards/makerdiary_nrf52840_mdk/mpconfigboard.mk
Normal file
@ -0,0 +1,16 @@
|
||||
MCU_SERIES = m4
|
||||
MCU_VARIANT = nrf52
|
||||
MCU_SUB_VARIANT = nrf52840
|
||||
MCU_CHIP = nrf52840
|
||||
SD ?= s140
|
||||
SOFTDEV_VERSION ?= 6.1.0
|
||||
|
||||
BOOT_SETTING_ADDR = 0xFF000
|
||||
|
||||
ifeq ($(SD),)
|
||||
LD_FILE = boards/nrf52840_1M_256k.ld
|
||||
else
|
||||
LD_FILE = boards/adafruit_$(MCU_SUB_VARIANT)_$(SD_LOWER)_v$(firstword $(subst ., ,$(SOFTDEV_VERSION))).ld
|
||||
endif
|
||||
|
||||
NRF_DEFINES += -DNRF52840_XXAA -DNRF52840
|
63
ports/nrf/boards/makerdiary_nrf52840_mdk/pins.c
Normal file
63
ports/nrf/boards/makerdiary_nrf52840_mdk/pins.c
Normal file
@ -0,0 +1,63 @@
|
||||
#include "shared-bindings/board/__init__.h"
|
||||
|
||||
#include "board_busses.h"
|
||||
|
||||
STATIC const mp_rom_map_elem_t board_module_globals_table[] = {
|
||||
{ MP_ROM_QSTR(MP_QSTR_AIN0), MP_ROM_PTR(&pin_P0_02) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_AIN1), MP_ROM_PTR(&pin_P0_03) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_AIN2), MP_ROM_PTR(&pin_P0_04) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_AIN3), MP_ROM_PTR(&pin_P0_05) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_AIN4), MP_ROM_PTR(&pin_P0_28) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_AIN5), MP_ROM_PTR(&pin_P0_29) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_AIN6), MP_ROM_PTR(&pin_P0_30) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_AIN7), MP_ROM_PTR(&pin_P0_31) },
|
||||
|
||||
{ MP_ROM_QSTR(MP_QSTR_AREF), MP_ROM_PTR(&pin_P0_04) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_VDIV), MP_ROM_PTR(&pin_P0_05) },
|
||||
|
||||
{ MP_ROM_QSTR(MP_QSTR_NFC1), MP_ROM_PTR(&pin_P0_09) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_NFC2), MP_ROM_PTR(&pin_P0_10) },
|
||||
|
||||
{ MP_ROM_QSTR(MP_QSTR_P2), MP_ROM_PTR(&pin_P0_02) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_P3), MP_ROM_PTR(&pin_P0_03) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_P4), MP_ROM_PTR(&pin_P0_04) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_P5), MP_ROM_PTR(&pin_P0_05) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_P6), MP_ROM_PTR(&pin_P0_06) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_P7), MP_ROM_PTR(&pin_P0_07) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_P8), MP_ROM_PTR(&pin_P0_08) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_P9), MP_ROM_PTR(&pin_P0_09) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_P10), MP_ROM_PTR(&pin_P0_10) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_P11), MP_ROM_PTR(&pin_P0_11) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_P12), MP_ROM_PTR(&pin_P0_12) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_P13), MP_ROM_PTR(&pin_P0_13) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_P14), MP_ROM_PTR(&pin_P0_14) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_P15), MP_ROM_PTR(&pin_P0_15) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_P16), MP_ROM_PTR(&pin_P0_16) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_P17), MP_ROM_PTR(&pin_P0_17) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_P21), MP_ROM_PTR(&pin_P0_21) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_P25), MP_ROM_PTR(&pin_P0_25) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_P26), MP_ROM_PTR(&pin_P0_26) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_P27), MP_ROM_PTR(&pin_P0_27) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_P28), MP_ROM_PTR(&pin_P0_28) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_P29), MP_ROM_PTR(&pin_P0_29) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_P30), MP_ROM_PTR(&pin_P0_30) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_P31), MP_ROM_PTR(&pin_P0_31) },
|
||||
|
||||
{ MP_ROM_QSTR(MP_QSTR_SCK), MP_ROM_PTR(&pin_P1_03) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_CSN), MP_ROM_PTR(&pin_P1_06) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_IO0), MP_ROM_PTR(&pin_P1_05) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_IO1), MP_ROM_PTR(&pin_P1_04) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_IO2), MP_ROM_PTR(&pin_P1_02) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_IO3), MP_ROM_PTR(&pin_P1_01) },
|
||||
|
||||
{ MP_ROM_QSTR(MP_QSTR_TXD), MP_ROM_PTR(&pin_P0_20) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_RXD), MP_ROM_PTR(&pin_P0_19) },
|
||||
|
||||
{ MP_ROM_QSTR(MP_QSTR_LED_RED), MP_ROM_PTR(&pin_P0_23) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_LED_GREEN), MP_ROM_PTR(&pin_P0_22) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_LED_BLUE), MP_ROM_PTR(&pin_P0_24) },
|
||||
|
||||
{ MP_ROM_QSTR(MP_QSTR_USR_BTN), MP_ROM_PTR(&pin_P1_00) },
|
||||
};
|
||||
|
||||
MP_DEFINE_CONST_DICT(board_module_globals, board_module_globals_table);
|
@ -3,7 +3,7 @@
|
||||
*
|
||||
* The MIT License (MIT)
|
||||
*
|
||||
* Copyright (c) 2013, 2014 Damien P. George
|
||||
* Copyright (c) 2018 Dan Halbert for Adafruit Industries
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
* of this software and associated documentation files (the "Software"), to deal
|
||||
|
@ -3,7 +3,7 @@
|
||||
*
|
||||
* The MIT License (MIT)
|
||||
*
|
||||
* Copyright (c) 2013, 2014 Damien P. George
|
||||
* Copyright (c) 2018 Dan Halbert for Adafruit Industries
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
* of this software and associated documentation files (the "Software"), to deal
|
||||
|
@ -56,6 +56,7 @@ STATIC twim_peripheral_t twim_peripherals[] = {
|
||||
|
||||
void i2c_reset(void) {
|
||||
for (size_t i = 0 ; i < MP_ARRAY_SIZE(twim_peripherals); i++) {
|
||||
nrf_twim_disable(twim_peripherals[i].twim.p_twim);
|
||||
twim_peripherals[i].in_use = false;
|
||||
}
|
||||
}
|
||||
|
@ -3,7 +3,7 @@
|
||||
*
|
||||
* The MIT License (MIT)
|
||||
*
|
||||
* Copyright (c) 2016 Damien P. George
|
||||
* Copyright (c) 2018 Ha Thach for Adafruit Industries
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
* of this software and associated documentation files (the "Software"), to deal
|
||||
@ -179,7 +179,7 @@ size_t common_hal_busio_uart_read(busio_uart_obj_t *self, uint8_t *data, size_t
|
||||
self->rx_count = -1;
|
||||
_VERIFY_ERR(nrfx_uarte_rx(&self->uarte, self->buffer, cnt));
|
||||
}
|
||||
|
||||
|
||||
// queue 1-byte transfer for rx_characters_available()
|
||||
if ( self->rx_count == 0 ) {
|
||||
self->rx_count = -1;
|
||||
|
@ -3,8 +3,7 @@
|
||||
*
|
||||
* The MIT License (MIT)
|
||||
*
|
||||
* Copyright (c) 2017 Scott Shawcroft for Adafruit Industries
|
||||
* Copyright (c) 2016 Damien P. George
|
||||
* Copyright (c) 2018 Dan Halbert for Adafruit Industries
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
* of this software and associated documentation files (the "Software"), to deal
|
||||
@ -168,6 +167,7 @@ void common_hal_pulseio_pwmout_construct(pulseio_pwmout_obj_t* self,
|
||||
self->frequency = frequency;
|
||||
self->variable_frequency = variable_frequency;
|
||||
|
||||
// Note this is standard, not strong drive.
|
||||
nrf_gpio_cfg_output(self->pin_number);
|
||||
|
||||
// disable before mapping pin channel
|
||||
|
@ -3,7 +3,7 @@
|
||||
*
|
||||
* The MIT License (MIT)
|
||||
*
|
||||
* Copyright (c) 2016 Damien P. George
|
||||
* Copyright (c) 2018 Dan Halbert for Adafruit Industries
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
* of this software and associated documentation files (the "Software"), to deal
|
||||
@ -29,31 +29,136 @@
|
||||
#include <stdint.h>
|
||||
|
||||
#include "mpconfigport.h"
|
||||
#include "nrf/pins.h"
|
||||
#include "nrf/timers.h"
|
||||
#include "py/gc.h"
|
||||
#include "py/runtime.h"
|
||||
|
||||
#include "shared-bindings/pulseio/PulseOut.h"
|
||||
#include "shared-bindings/pulseio/PWMOut.h"
|
||||
#include "supervisor/shared/translate.h"
|
||||
|
||||
//void pulse_finish(struct tc_module *const module) {
|
||||
//
|
||||
//}
|
||||
// A single timer is shared amongst all PulseOut objects under the assumption that
|
||||
// the code is single threaded.
|
||||
static uint8_t refcount = 0;
|
||||
|
||||
void pulseout_reset() {
|
||||
static nrfx_timer_t *timer = NULL;
|
||||
|
||||
static uint16_t *pulse_array = NULL;
|
||||
static volatile uint16_t pulse_array_index = 0;
|
||||
static uint16_t pulse_array_length;
|
||||
|
||||
static void turn_on(pulseio_pulseout_obj_t *pulseout) {
|
||||
pulseout->pwmout->pwm->PSEL.OUT[0] = pulseout->pwmout->pin_number;
|
||||
}
|
||||
|
||||
void common_hal_pulseio_pulseout_construct(pulseio_pulseout_obj_t* self, const pulseio_pwmout_obj_t* carrier) {
|
||||
mp_raise_NotImplementedError(NULL);
|
||||
static void turn_off(pulseio_pulseout_obj_t *pulseout) {
|
||||
// Disconnect pin from PWM.
|
||||
pulseout->pwmout->pwm->PSEL.OUT[0] = 0xffffffff;
|
||||
// Make sure pin is low.
|
||||
nrf_gpio_pin_clear(pulseout->pwmout->pin_number);
|
||||
}
|
||||
|
||||
static void start_timer(void) {
|
||||
nrfx_timer_clear(timer);
|
||||
// true enables interrupt.
|
||||
nrfx_timer_compare(timer, NRF_TIMER_CC_CHANNEL0, pulse_array[pulse_array_index], true);
|
||||
nrfx_timer_resume(timer);
|
||||
}
|
||||
|
||||
static void pulseout_event_handler(nrf_timer_event_t event_type, void *p_context) {
|
||||
pulseio_pulseout_obj_t *pulseout = (pulseio_pulseout_obj_t*) p_context;
|
||||
if (event_type != NRF_TIMER_EVENT_COMPARE0) {
|
||||
// Spurious event.
|
||||
return;
|
||||
}
|
||||
nrfx_timer_pause(timer);
|
||||
|
||||
pulse_array_index++;
|
||||
|
||||
// No more pulses. Turn off output and don't restart.
|
||||
if (pulse_array_index >= pulse_array_length) {
|
||||
turn_off(pulseout);
|
||||
return;
|
||||
}
|
||||
|
||||
// Alternate on and off, starting with on.
|
||||
if (pulse_array_index % 2 == 0) {
|
||||
turn_on(pulseout);
|
||||
} else {
|
||||
turn_off(pulseout);
|
||||
}
|
||||
|
||||
// Count up to the next given value.
|
||||
start_timer();
|
||||
}
|
||||
|
||||
void pulseout_reset() {
|
||||
if (timer != NULL) {
|
||||
nrf_peripherals_free_timer(timer);
|
||||
}
|
||||
refcount = 0;
|
||||
}
|
||||
|
||||
void common_hal_pulseio_pulseout_construct(pulseio_pulseout_obj_t* self,
|
||||
const pulseio_pwmout_obj_t* carrier) {
|
||||
if (refcount == 0) {
|
||||
timer = nrf_peripherals_allocate_timer();
|
||||
if (timer == NULL) {
|
||||
mp_raise_RuntimeError(translate("All timers in use"));
|
||||
}
|
||||
}
|
||||
refcount++;
|
||||
|
||||
nrfx_timer_config_t timer_config = {
|
||||
// PulseOut durations are in microseconds, so this is convenient.
|
||||
.frequency = NRF_TIMER_FREQ_1MHz,
|
||||
.mode = NRF_TIMER_MODE_TIMER,
|
||||
.bit_width = NRF_TIMER_BIT_WIDTH_32,
|
||||
.interrupt_priority = NRFX_TIMER_DEFAULT_CONFIG_IRQ_PRIORITY,
|
||||
.p_context = self,
|
||||
};
|
||||
|
||||
self->pwmout = carrier;
|
||||
|
||||
nrfx_timer_init(timer, &timer_config, &pulseout_event_handler);
|
||||
turn_off(self);
|
||||
}
|
||||
|
||||
bool common_hal_pulseio_pulseout_deinited(pulseio_pulseout_obj_t* self) {
|
||||
return 1;
|
||||
return self->pwmout == NULL;
|
||||
}
|
||||
|
||||
void common_hal_pulseio_pulseout_deinit(pulseio_pulseout_obj_t* self) {
|
||||
if (common_hal_pulseio_pulseout_deinited(self)) {
|
||||
return;
|
||||
}
|
||||
turn_on(self);
|
||||
self->pwmout = NULL;
|
||||
|
||||
refcount--;
|
||||
if (refcount == 0) {
|
||||
nrf_peripherals_free_timer(timer);
|
||||
}
|
||||
}
|
||||
|
||||
void common_hal_pulseio_pulseout_send(pulseio_pulseout_obj_t* self, uint16_t* pulses, uint16_t length) {
|
||||
pulse_array = pulses;
|
||||
pulse_array_index = 0;
|
||||
pulse_array_length = length;
|
||||
|
||||
nrfx_timer_enable(timer);
|
||||
|
||||
turn_on(self);
|
||||
// Count up to the next given value.
|
||||
start_timer();
|
||||
|
||||
while(pulse_array_index < length) {
|
||||
// Do other things while we wait. The interrupts will handle sending the
|
||||
// signal.
|
||||
#ifdef MICROPY_VM_HOOK_LOOP
|
||||
MICROPY_VM_HOOK_LOOP
|
||||
#endif
|
||||
}
|
||||
|
||||
nrfx_timer_disable(timer);
|
||||
}
|
||||
|
@ -3,7 +3,7 @@
|
||||
*
|
||||
* The MIT License (MIT)
|
||||
*
|
||||
* Copyright (c) 2017 Scott Shawcroft for Adafruit Industries
|
||||
* Copyright (c) 2018 Dan Halbert for Adafruit Industries
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
* of this software and associated documentation files (the "Software"), to deal
|
||||
@ -28,13 +28,13 @@
|
||||
#define MICROPY_INCLUDED_NRF_COMMON_HAL_PULSEIO_PULSEOUT_H
|
||||
|
||||
#include "common-hal/microcontroller/Pin.h"
|
||||
#include "common-hal/pulseio/PWMOut.h"
|
||||
|
||||
#include "py/obj.h"
|
||||
|
||||
typedef struct {
|
||||
mp_obj_base_t base;
|
||||
// __IO PORT_PINCFG_Type *pincfg;
|
||||
uint8_t pin;
|
||||
const pulseio_pwmout_obj_t *pwmout;
|
||||
} pulseio_pulseout_obj_t;
|
||||
|
||||
void pulseout_reset(void);
|
||||
|
@ -27,8 +27,10 @@
|
||||
|
||||
// Enable SPIM2 and SPIM3 (if available)
|
||||
#define NRFX_SPIM2_ENABLED 1
|
||||
#ifdef NRF52840_XXAA
|
||||
#ifdef NRF_SPIM3
|
||||
#define NRFX_SPIM3_ENABLED 1
|
||||
#else
|
||||
#define NRFX_SPIM3_ENABLED 0
|
||||
#endif
|
||||
|
||||
|
||||
@ -59,4 +61,24 @@
|
||||
#define NRFX_PWM3_ENABLED 0
|
||||
#endif
|
||||
|
||||
// TIMERS
|
||||
#define NRFX_TIMER_ENABLED 1
|
||||
// Don't enable TIMER0: it's used by the SoftDevice.
|
||||
#define NRFX_TIMER1_ENABLED 1
|
||||
#define NRFX_TIMER2_ENABLED 1
|
||||
|
||||
#ifdef NRFX_TIMER3
|
||||
#define NRFX_TIMER3_ENABLED 1
|
||||
#else
|
||||
#define NRFX_TIMER3_ENABLED 0
|
||||
#endif
|
||||
|
||||
#ifdef NRFX_TIMER4
|
||||
#define NRFX_TIMER4_ENABLED 1
|
||||
#else
|
||||
#define NRFX_TIMER4_ENABLED 0
|
||||
#endif
|
||||
|
||||
#define NRFX_TIMER_DEFAULT_CONFIG_IRQ_PRIORITY 7
|
||||
|
||||
#endif // NRFX_CONFIG_H__
|
||||
|
@ -3,7 +3,7 @@
|
||||
*
|
||||
* The MIT License (MIT)
|
||||
*
|
||||
* Copyright (c) 2013, 2014 Damien P. George
|
||||
* Copyright (c) 2018 Dan Halbert for Adafruit Industries
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
* of this software and associated documentation files (the "Software"), to deal
|
||||
|
88
ports/nrf/peripherals/nrf/timers.c
Normal file
88
ports/nrf/peripherals/nrf/timers.c
Normal file
@ -0,0 +1,88 @@
|
||||
/*
|
||||
* This file is part of the MicroPython project, http://micropython.org/
|
||||
*
|
||||
* The MIT License (MIT)
|
||||
*
|
||||
* Copyright (c) 2018 Dan Halbert for Adafruit Industries
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
* of this software and associated documentation files (the "Software"), to deal
|
||||
* in the Software without restriction, including without limitation the rights
|
||||
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
* copies of the Software, and to permit persons to whom the Software is
|
||||
* furnished to do so, subject to the following conditions:
|
||||
*
|
||||
* The above copyright notice and this permission notice shall be included in
|
||||
* all copies or substantial portions of the Software.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||
* THE SOFTWARE.
|
||||
*/
|
||||
|
||||
#include "common-hal/pulseio/PulseOut.h"
|
||||
|
||||
#include <stdint.h>
|
||||
|
||||
#include "nrfx.h"
|
||||
#include "nrfx_timer.h"
|
||||
|
||||
#include "mpconfigport.h"
|
||||
#include "py/runtime.h"
|
||||
|
||||
STATIC nrfx_timer_t nrfx_timers[] = {
|
||||
#if NRFX_CHECK(NRFX_TIMER0_ENABLED)
|
||||
// Note that TIMER0 is reserved for use by the SoftDevice, so it should not usually be enabled.
|
||||
NRFX_TIMER_INSTANCE(0),
|
||||
#endif
|
||||
#if NRFX_CHECK(NRFX_TIMER1_ENABLED)
|
||||
NRFX_TIMER_INSTANCE(1),
|
||||
#endif
|
||||
#if NRFX_CHECK(NRFX_TIMER2_ENABLED)
|
||||
NRFX_TIMER_INSTANCE(2),
|
||||
#endif
|
||||
#if NRFX_CHECK(NRFX_TIMER3_ENABLED)
|
||||
NRFX_TIMER_INSTANCE(3),
|
||||
#endif
|
||||
#if NRFX_CHECK(NRFX_TIMER4_ENABLED)
|
||||
NRFX_TIMER_INSTANCE(4),
|
||||
#endif
|
||||
};
|
||||
|
||||
static bool nrfx_timer_allocated[ARRAY_SIZE(nrfx_timers)];
|
||||
|
||||
void timers_reset(void) {
|
||||
for (size_t i = 0; i < ARRAY_SIZE(nrfx_timers); i ++) {
|
||||
nrfx_timer_uninit(&nrfx_timers[i]);
|
||||
nrfx_timer_allocated[i] = false;
|
||||
}
|
||||
}
|
||||
|
||||
// Returns a free nrfx_timer instance, and marks it as allocated.
|
||||
// The caller should init as with the desired config.
|
||||
// Returns NULL if no timer is available.
|
||||
nrfx_timer_t* nrf_peripherals_allocate_timer(void) {
|
||||
for (size_t i = 0; i < ARRAY_SIZE(nrfx_timers); i ++) {
|
||||
if (!nrfx_timer_allocated[i]) {
|
||||
nrfx_timer_allocated[i] = true;
|
||||
return &nrfx_timers[i];
|
||||
}
|
||||
}
|
||||
return NULL;
|
||||
}
|
||||
|
||||
// Free a timer, which may or may not have been initialized.
|
||||
void nrf_peripherals_free_timer(nrfx_timer_t* timer) {
|
||||
for (size_t i = 0; i < ARRAY_SIZE(nrfx_timers); i ++) {
|
||||
if (timer == &nrfx_timers[i]) {
|
||||
nrfx_timer_allocated[i] = false;
|
||||
// Safe to call even if not initialized.
|
||||
nrfx_timer_uninit(timer);
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
32
ports/nrf/peripherals/nrf/timers.h
Normal file
32
ports/nrf/peripherals/nrf/timers.h
Normal file
@ -0,0 +1,32 @@
|
||||
/*
|
||||
* This file is part of the MicroPython project, http://micropython.org/
|
||||
*
|
||||
* The MIT License (MIT)
|
||||
*
|
||||
* Copyright (c) 2018 Dan Halbert for Adafruit Industries
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
* of this software and associated documentation files (the "Software"), to deal
|
||||
* in the Software without restriction, including without limitation the rights
|
||||
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
* copies of the Software, and to permit persons to whom the Software is
|
||||
* furnished to do so, subject to the following conditions:
|
||||
*
|
||||
* The above copyright notice and this permission notice shall be included in
|
||||
* all copies or substantial portions of the Software.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||
* THE SOFTWARE.
|
||||
*/
|
||||
|
||||
#include "nrfx.h"
|
||||
#include "nrfx_timer.h"
|
||||
|
||||
void timers_reset(void);
|
||||
nrfx_timer_t* nrf_peripherals_allocate_timer(void);
|
||||
void nrf_peripherals_free_timer(nrfx_timer_t* timer);
|
@ -31,12 +31,14 @@
|
||||
#include "nrf/cache.h"
|
||||
#include "nrf/clocks.h"
|
||||
#include "nrf/power.h"
|
||||
#include "nrf/timers.h"
|
||||
|
||||
#include "shared-module/gamepad/__init__.h"
|
||||
#include "common-hal/microcontroller/Pin.h"
|
||||
#include "common-hal/busio/I2C.h"
|
||||
#include "common-hal/busio/SPI.h"
|
||||
#include "common-hal/pulseio/PWMOut.h"
|
||||
#include "common-hal/pulseio/PulseOut.h"
|
||||
#include "tick.h"
|
||||
|
||||
safe_mode_t port_init(void) {
|
||||
@ -81,6 +83,8 @@ void reset_port(void) {
|
||||
i2c_reset();
|
||||
spi_reset();
|
||||
pwmout_reset();
|
||||
pulseout_reset();
|
||||
timers_reset();
|
||||
|
||||
reset_all_pins();
|
||||
}
|
||||
@ -88,16 +92,7 @@ void reset_port(void) {
|
||||
|
||||
void HardFault_Handler(void)
|
||||
{
|
||||
// static volatile uint32_t reg;
|
||||
// static volatile uint32_t reg2;
|
||||
// static volatile uint32_t bfar;
|
||||
// reg = SCB->HFSR;
|
||||
// reg2 = SCB->CFSR;
|
||||
// bfar = SCB->BFAR;
|
||||
// for (int i = 0; i < 0; i++)
|
||||
// {
|
||||
// (void)reg;
|
||||
// (void)reg2;
|
||||
// (void)bfar;
|
||||
// }
|
||||
while (true) {
|
||||
asm("");
|
||||
}
|
||||
}
|
||||
|
10
py/builtinimport.c
Executable file → Normal file
10
py/builtinimport.c
Executable file → Normal file
@ -155,11 +155,9 @@ STATIC void do_load_from_lexer(mp_obj_t module_obj, mp_lexer_t *lex) {
|
||||
#endif
|
||||
|
||||
#if MICROPY_PERSISTENT_CODE_LOAD || MICROPY_MODULE_FROZEN_MPY
|
||||
STATIC void do_execute_raw_code(mp_obj_t module_obj, mp_raw_code_t *raw_code) {
|
||||
STATIC void do_execute_raw_code(mp_obj_t module_obj, mp_raw_code_t *raw_code, const char *filename) {
|
||||
#if MICROPY_PY___FILE__
|
||||
// TODO
|
||||
//qstr source_name = lex->source_name;
|
||||
//mp_store_attr(module_obj, MP_QSTR___file__, MP_OBJ_NEW_QSTR(source_name));
|
||||
mp_store_attr(module_obj, MP_QSTR___file__, MP_OBJ_NEW_QSTR(qstr_from_str(filename)));
|
||||
#endif
|
||||
|
||||
// execute the module in its context
|
||||
@ -222,7 +220,7 @@ STATIC void do_load(mp_obj_t module_obj, vstr_t *file) {
|
||||
// its data) in the list of frozen files, execute it.
|
||||
#if MICROPY_MODULE_FROZEN_MPY
|
||||
if (frozen_type == MP_FROZEN_MPY) {
|
||||
do_execute_raw_code(module_obj, modref);
|
||||
do_execute_raw_code(module_obj, modref, file_str);
|
||||
return;
|
||||
}
|
||||
#endif
|
||||
@ -235,7 +233,7 @@ STATIC void do_load(mp_obj_t module_obj, vstr_t *file) {
|
||||
#if MICROPY_PERSISTENT_CODE_LOAD
|
||||
if (file_str[file->len - 3] == 'm') {
|
||||
mp_raw_code_t *raw_code = mp_raw_code_load_file(file_str);
|
||||
do_execute_raw_code(module_obj, raw_code);
|
||||
do_execute_raw_code(module_obj, raw_code, file_str);
|
||||
return;
|
||||
}
|
||||
#endif
|
||||
|
@ -72,7 +72,7 @@ endif
|
||||
|
||||
MAKE_FROZEN = $(PYTHON) $(TOP)/tools/make-frozen.py
|
||||
MPY_CROSS = $(TOP)/mpy-cross/mpy-cross
|
||||
MPY_TOOL = $(PYTHON) $(TOP)/tools/mpy-tool.py
|
||||
MPY_TOOL = $(PYTHON3) $(TOP)/tools/mpy-tool.py
|
||||
PREPROCESS_FROZEN_MODULES = PYTHONPATH=$(TOP)/tools/python-semver $(TOP)/tools/preprocess_frozen_modules.py
|
||||
|
||||
all:
|
||||
|
@ -130,7 +130,7 @@ xargs -n1 "$(abspath $(MPY_CROSS))" $(MPY_CROSS_FLAGS)
|
||||
# to build frozen_mpy.c from all .mpy files
|
||||
# You need to define MPY_TOOL_LONGINT_IMPL in mpconfigport.mk
|
||||
# if the default will not work (mpz is the default).
|
||||
$(BUILD)/frozen_mpy.c: $(BUILD)/frozen_mpy $(BUILD)/genhdr/qstrdefs.generated.h
|
||||
$(BUILD)/frozen_mpy.c: $(BUILD)/frozen_mpy $(BUILD)/genhdr/qstrdefs.generated.h $(TOP)/tools/mpy-tool.py
|
||||
$(STEPECHO) "Creating $@"
|
||||
$(Q)$(MPY_TOOL) $(MPY_TOOL_LONGINT_IMPL) -f -q $(BUILD)/genhdr/qstrdefs.preprocessed.h $(shell $(FIND) -L $(BUILD)/frozen_mpy -type f -name '*.mpy') > $@
|
||||
endif
|
||||
|
@ -135,7 +135,7 @@ STATIC mp_obj_t mp_sys_exc_info(void) {
|
||||
|
||||
t->items[0] = MP_OBJ_FROM_PTR(mp_obj_get_type(cur_exc));
|
||||
t->items[1] = cur_exc;
|
||||
t->items[2] = mp_const_none;
|
||||
t->items[2] = mp_obj_exception_get_traceback_obj(cur_exc);
|
||||
return MP_OBJ_FROM_PTR(t);
|
||||
}
|
||||
MP_DEFINE_CONST_FUN_OBJ_0(mp_sys_exc_info_obj, mp_sys_exc_info);
|
||||
|
1
py/obj.h
1
py/obj.h
@ -717,6 +717,7 @@ bool mp_obj_exception_match(mp_obj_t exc, mp_const_obj_t exc_type);
|
||||
void mp_obj_exception_clear_traceback(mp_obj_t self_in);
|
||||
void mp_obj_exception_add_traceback(mp_obj_t self_in, qstr file, size_t line, qstr block);
|
||||
void mp_obj_exception_get_traceback(mp_obj_t self_in, size_t *n, size_t **values);
|
||||
mp_obj_t mp_obj_exception_get_traceback_obj(mp_obj_t self_in);
|
||||
mp_obj_t mp_obj_exception_get_value(mp_obj_t self_in);
|
||||
mp_obj_t mp_obj_exception_make_new(const mp_obj_type_t *type_in, size_t n_args, size_t n_kw, const mp_obj_t *args);
|
||||
mp_obj_t mp_alloc_emergency_exception_buf(mp_obj_t size_in);
|
||||
|
@ -92,6 +92,9 @@ STATIC void bound_meth_attr(mp_obj_t self_in, qstr attr, mp_obj_t *dest) {
|
||||
if (attr == MP_QSTR___name__) {
|
||||
mp_obj_bound_meth_t *o = MP_OBJ_TO_PTR(self_in);
|
||||
dest[0] = MP_OBJ_NEW_QSTR(mp_obj_fun_get_name(o->meth));
|
||||
} else if (attr == MP_QSTR___func__) {
|
||||
mp_obj_bound_meth_t *o = MP_OBJ_TO_PTR(self_in);
|
||||
dest[0] = o->meth;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
162
py/objexcept.c
162
py/objexcept.c
@ -30,6 +30,7 @@
|
||||
#include <stdio.h>
|
||||
|
||||
#include "py/objlist.h"
|
||||
#include "py/objnamedtuple.h"
|
||||
#include "py/objstr.h"
|
||||
#include "py/objtuple.h"
|
||||
#include "py/objtype.h"
|
||||
@ -531,3 +532,164 @@ void mp_obj_exception_get_traceback(mp_obj_t self_in, size_t *n, size_t **values
|
||||
*values = self->traceback_data;
|
||||
}
|
||||
}
|
||||
|
||||
#if MICROPY_PY_SYS_EXC_INFO
|
||||
STATIC const mp_obj_namedtuple_type_t code_type_obj = {
|
||||
.base = {
|
||||
.base = {
|
||||
.type = &mp_type_type
|
||||
},
|
||||
.name = MP_QSTR_code,
|
||||
.print = namedtuple_print,
|
||||
.make_new = namedtuple_make_new,
|
||||
.unary_op = mp_obj_tuple_unary_op,
|
||||
.binary_op = mp_obj_tuple_binary_op,
|
||||
.attr = namedtuple_attr,
|
||||
.subscr = mp_obj_tuple_subscr,
|
||||
.getiter = mp_obj_tuple_getiter,
|
||||
.parent = &mp_type_tuple,
|
||||
},
|
||||
.n_fields = 15,
|
||||
.fields = {
|
||||
MP_QSTR_co_argcount,
|
||||
MP_QSTR_co_kwonlyargcount,
|
||||
MP_QSTR_co_nlocals,
|
||||
MP_QSTR_co_stacksize,
|
||||
MP_QSTR_co_flags,
|
||||
MP_QSTR_co_code,
|
||||
MP_QSTR_co_consts,
|
||||
MP_QSTR_co_names,
|
||||
MP_QSTR_co_varnames,
|
||||
MP_QSTR_co_freevars,
|
||||
MP_QSTR_co_cellvars,
|
||||
MP_QSTR_co_filename,
|
||||
MP_QSTR_co_name,
|
||||
MP_QSTR_co_firstlineno,
|
||||
MP_QSTR_co_lnotab,
|
||||
},
|
||||
};
|
||||
|
||||
STATIC mp_obj_t code_make_new(qstr file, qstr block) {
|
||||
mp_obj_t elems[15] = {
|
||||
mp_obj_new_int(0), // co_argcount
|
||||
mp_obj_new_int(0), // co_kwonlyargcount
|
||||
mp_obj_new_int(0), // co_nlocals
|
||||
mp_obj_new_int(0), // co_stacksize
|
||||
mp_obj_new_int(0), // co_flags
|
||||
mp_obj_new_bytearray(0, NULL), // co_code
|
||||
mp_obj_new_tuple(0, NULL), // co_consts
|
||||
mp_obj_new_tuple(0, NULL), // co_names
|
||||
mp_obj_new_tuple(0, NULL), // co_varnames
|
||||
mp_obj_new_tuple(0, NULL), // co_freevars
|
||||
mp_obj_new_tuple(0, NULL), // co_cellvars
|
||||
MP_OBJ_NEW_QSTR(file), // co_filename
|
||||
MP_OBJ_NEW_QSTR(block), // co_name
|
||||
mp_obj_new_int(1), // co_firstlineno
|
||||
mp_obj_new_bytearray(0, NULL), // co_lnotab
|
||||
};
|
||||
|
||||
return namedtuple_make_new((const mp_obj_type_t*)&code_type_obj, 15, 0, elems);
|
||||
}
|
||||
|
||||
STATIC const mp_obj_namedtuple_type_t frame_type_obj = {
|
||||
.base = {
|
||||
.base = {
|
||||
.type = &mp_type_type
|
||||
},
|
||||
.name = MP_QSTR_frame,
|
||||
.print = namedtuple_print,
|
||||
.make_new = namedtuple_make_new,
|
||||
.unary_op = mp_obj_tuple_unary_op,
|
||||
.binary_op = mp_obj_tuple_binary_op,
|
||||
.attr = namedtuple_attr,
|
||||
.subscr = mp_obj_tuple_subscr,
|
||||
.getiter = mp_obj_tuple_getiter,
|
||||
.parent = &mp_type_tuple,
|
||||
},
|
||||
.n_fields = 8,
|
||||
.fields = {
|
||||
MP_QSTR_f_back,
|
||||
MP_QSTR_f_builtins,
|
||||
MP_QSTR_f_code,
|
||||
MP_QSTR_f_globals,
|
||||
MP_QSTR_f_lasti,
|
||||
MP_QSTR_f_lineno,
|
||||
MP_QSTR_f_locals,
|
||||
MP_QSTR_f_trace,
|
||||
},
|
||||
};
|
||||
|
||||
STATIC mp_obj_t frame_make_new(mp_obj_t f_code, int f_lineno) {
|
||||
mp_obj_t elems[8] = {
|
||||
mp_const_none, // f_back
|
||||
mp_obj_new_dict(0), // f_builtins
|
||||
f_code, // f_code
|
||||
mp_obj_new_dict(0), // f_globals
|
||||
mp_obj_new_int(0), // f_lasti
|
||||
mp_obj_new_int(f_lineno), // f_lineno
|
||||
mp_obj_new_dict(0), // f_locals
|
||||
mp_const_none, // f_trace
|
||||
};
|
||||
|
||||
return namedtuple_make_new((const mp_obj_type_t*)&frame_type_obj, 8, 0, elems);
|
||||
}
|
||||
|
||||
STATIC const mp_obj_namedtuple_type_t traceback_type_obj = {
|
||||
.base = {
|
||||
.base = {
|
||||
.type = &mp_type_type
|
||||
},
|
||||
.name = MP_QSTR_traceback,
|
||||
.print = namedtuple_print,
|
||||
.make_new = namedtuple_make_new,
|
||||
.unary_op = mp_obj_tuple_unary_op,
|
||||
.binary_op = mp_obj_tuple_binary_op,
|
||||
.attr = namedtuple_attr,
|
||||
.subscr = mp_obj_tuple_subscr,
|
||||
.getiter = mp_obj_tuple_getiter,
|
||||
.parent = &mp_type_tuple,
|
||||
},
|
||||
.n_fields = 4,
|
||||
.fields = {
|
||||
MP_QSTR_tb_frame,
|
||||
MP_QSTR_tb_lasti,
|
||||
MP_QSTR_tb_lineno,
|
||||
MP_QSTR_tb_next,
|
||||
},
|
||||
};
|
||||
|
||||
STATIC mp_obj_t traceback_from_values(size_t *values, mp_obj_t tb_next) {
|
||||
int lineno = values[1];
|
||||
|
||||
mp_obj_t elems[4] = {
|
||||
frame_make_new(code_make_new(values[0], values[2]), lineno),
|
||||
mp_obj_new_int(0),
|
||||
mp_obj_new_int(lineno),
|
||||
tb_next,
|
||||
};
|
||||
|
||||
return namedtuple_make_new((const mp_obj_type_t*)&traceback_type_obj, 4, 0, elems);
|
||||
};
|
||||
|
||||
mp_obj_t mp_obj_exception_get_traceback_obj(mp_obj_t self_in) {
|
||||
mp_obj_exception_t *self = MP_OBJ_TO_PTR(self_in);
|
||||
|
||||
if (!mp_obj_is_exception_instance(self)) {
|
||||
return mp_const_none;
|
||||
}
|
||||
|
||||
size_t n, *values;
|
||||
mp_obj_exception_get_traceback(self, &n, &values);
|
||||
if (n == 0) {
|
||||
return mp_const_none;
|
||||
}
|
||||
|
||||
mp_obj_t tb_next = mp_const_none;
|
||||
|
||||
for (size_t i = 0; i < n; i += 3) {
|
||||
tb_next = traceback_from_values(&values[i], tb_next);
|
||||
}
|
||||
|
||||
return tb_next;
|
||||
}
|
||||
#endif
|
||||
|
@ -43,13 +43,15 @@
|
||||
//|
|
||||
//| AudioOut can be used to output an analog audio signal on a given pin.
|
||||
//|
|
||||
//| .. class:: AudioOut(left_channel, right_channel=None)
|
||||
//| .. class:: AudioOut(left_channel, *, right_channel=None, quiescent_value=0x8000)
|
||||
//|
|
||||
//| Create a AudioOut object associated with the given pin(s). This allows you to
|
||||
//| play audio signals out on the given pin(s).
|
||||
//|
|
||||
//| :param ~microcontroller.Pin left_channel: The pin to output the left channel to
|
||||
//| :param ~microcontroller.Pin right_channel: The pin to output the right channel to
|
||||
//| :param int quiescent_value: The output value when no signal is present. Samples should start
|
||||
//| and end with this value to prevent audible popping.
|
||||
//|
|
||||
//| Simple 8ksps 440 Hz sin wave::
|
||||
//|
|
||||
@ -95,10 +97,11 @@ STATIC mp_obj_t audioio_audioout_make_new(const mp_obj_type_t *type, size_t n_ar
|
||||
mp_arg_check_num(n_args, n_kw, 1, 2, true);
|
||||
mp_map_t kw_args;
|
||||
mp_map_init_fixed_table(&kw_args, n_kw, pos_args + n_args);
|
||||
enum { ARG_left_channel, ARG_right_channel };
|
||||
enum { ARG_left_channel, ARG_right_channel, ARG_quiescent_value };
|
||||
static const mp_arg_t allowed_args[] = {
|
||||
{ MP_QSTR_left_channel, MP_ARG_OBJ | MP_ARG_REQUIRED },
|
||||
{ MP_QSTR_right_channel, MP_ARG_OBJ | MP_ARG_KW_ONLY, {.u_rom_obj = mp_const_none} },
|
||||
{ MP_QSTR_quiescent_value, MP_ARG_OBJ | MP_ARG_KW_ONLY, {.u_int = 0x8000} },
|
||||
};
|
||||
mp_arg_val_t args[MP_ARRAY_SIZE(allowed_args)];
|
||||
mp_arg_parse_all(n_args, pos_args, &kw_args, MP_ARRAY_SIZE(allowed_args), allowed_args, args);
|
||||
@ -117,7 +120,7 @@ STATIC mp_obj_t audioio_audioout_make_new(const mp_obj_type_t *type, size_t n_ar
|
||||
// create AudioOut object from the given pin
|
||||
audioio_audioout_obj_t *self = m_new_obj(audioio_audioout_obj_t);
|
||||
self->base.type = &audioio_audioout_type;
|
||||
common_hal_audioio_audioout_construct(self, left_channel_pin, right_channel_pin);
|
||||
common_hal_audioio_audioout_construct(self, left_channel_pin, right_channel_pin, args[ARG_quiescent_value].u_int);
|
||||
|
||||
return MP_OBJ_FROM_PTR(self);
|
||||
}
|
||||
|
@ -35,7 +35,7 @@ extern const mp_obj_type_t audioio_audioout_type;
|
||||
|
||||
// left_channel will always be non-NULL but right_channel may be for mono output.
|
||||
void common_hal_audioio_audioout_construct(audioio_audioout_obj_t* self,
|
||||
const mcu_pin_obj_t* left_channel, const mcu_pin_obj_t* right_channel);
|
||||
const mcu_pin_obj_t* left_channel, const mcu_pin_obj_t* right_channel, uint16_t default_value);
|
||||
|
||||
void common_hal_audioio_audioout_deinit(audioio_audioout_obj_t* self);
|
||||
bool common_hal_audioio_audioout_deinited(audioio_audioout_obj_t* self);
|
||||
|
@ -47,7 +47,7 @@
|
||||
//|
|
||||
//| .. class:: PulseOut(carrier)
|
||||
//|
|
||||
//| Create a PulseOut object associated with the given PWM out experience.
|
||||
//| Create a PulseOut object associated with the given PWMout object.
|
||||
//|
|
||||
//| :param ~pulseio.PWMOut carrier: PWMOut that is set to output on the desired pin.
|
||||
//|
|
||||
@ -57,9 +57,10 @@
|
||||
//| import pulseio
|
||||
//| import board
|
||||
//|
|
||||
//| pwm = pulseio.PWMOut(board.D13, duty_cycle=2 ** 15)
|
||||
//| # 50% duty cycle at 38kHz.
|
||||
//| pwm = pulseio.PWMOut(board.D13, frequency=38000, duty_cycle=32768)
|
||||
//| pulse = pulseio.PulseOut(pwm)
|
||||
//| # on off on off on
|
||||
//| # on off on off on
|
||||
//| pulses = array.array('H', [65000, 1000, 65000, 65000, 1000])
|
||||
//| pulse.send(pulses)
|
||||
//|
|
||||
|
@ -206,6 +206,20 @@ STATIC mp_obj_t time_time(void) {
|
||||
}
|
||||
MP_DEFINE_CONST_FUN_OBJ_0(time_time_obj, time_time);
|
||||
|
||||
//| .. method:: monotonic_ns(clk_id)
|
||||
//|
|
||||
//| Return the time of the specified clock clk_id in nanoseconds. Refer to
|
||||
//| Clock ID Constants for a list of accepted values for clk_id.
|
||||
//|
|
||||
//| :return: the current time
|
||||
//| :rtype: int
|
||||
//|
|
||||
STATIC mp_obj_t time_monotonic_ns(void) {
|
||||
uint64_t time64 = common_hal_time_monotonic() * 1000000llu;
|
||||
return mp_obj_new_int_from_ll((long long) time64);
|
||||
}
|
||||
MP_DEFINE_CONST_FUN_OBJ_0(time_monotonic_ns_obj, time_monotonic_ns);
|
||||
|
||||
//| .. method:: localtime([secs])
|
||||
//|
|
||||
//| Convert a time expressed in seconds since Jan 1, 1970 to a struct_time in
|
||||
@ -280,6 +294,7 @@ STATIC const mp_rom_map_elem_t time_module_globals_table[] = {
|
||||
#endif // MICROPY_PY_COLLECTIONS
|
||||
#if MICROPY_LONGINT_IMPL != MICROPY_LONGINT_IMPL_NONE
|
||||
{ MP_ROM_QSTR(MP_QSTR_time), MP_ROM_PTR(&time_time_obj) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_monotonic_ns), MP_ROM_PTR(&time_monotonic_ns_obj) },
|
||||
#endif
|
||||
};
|
||||
|
||||
|
@ -25,8 +25,10 @@ grandcentral_m4_express \
|
||||
hallowing_m0_express \
|
||||
itsybitsy_m0_express \
|
||||
itsybitsy_m4_express \
|
||||
makerdiary_nrf52840_mdk \
|
||||
metro_m0_express \
|
||||
metro_m4_express \
|
||||
meowmeow \
|
||||
pca10056 \
|
||||
pca10059 \
|
||||
pirkey_m0 \
|
||||
@ -81,6 +83,11 @@ for board in $boards; do
|
||||
(( exit_status = exit_status || $? ))
|
||||
temp_filename=ports/nrf/build-$board-s140/firmware.uf2
|
||||
extension=uf2
|
||||
elif [[ $board == "makerdiary_nrf52840_mdk" ]]; then
|
||||
make $PARALLEL -C ports/nrf TRANSLATION=$language BOARD=$board SD=s140
|
||||
(( exit_status = exit_status || $? ))
|
||||
temp_filename=ports/nrf/build-$board-s140/firmware.hex
|
||||
extension=hex
|
||||
else
|
||||
time make $PARALLEL -C ports/atmel-samd TRANSLATION=$language BOARD=$board
|
||||
(( exit_status = exit_status || $? ))
|
||||
|
@ -78,6 +78,18 @@ MP_BC_LOAD_GLOBAL = 0x1d
|
||||
MP_BC_LOAD_ATTR = 0x1e
|
||||
MP_BC_STORE_ATTR = 0x26
|
||||
|
||||
# load opcode names
|
||||
opcode_names = {}
|
||||
with open("../../py/bc0.h") as f:
|
||||
for line in f.readlines():
|
||||
if line.startswith("#define"):
|
||||
s = line.split(maxsplit=3)
|
||||
if len(s) < 3:
|
||||
continue
|
||||
_, name, value = s[:3]
|
||||
opcode = int(value.strip("()"), 0)
|
||||
opcode_names[opcode] = name
|
||||
|
||||
def make_opcode_format():
|
||||
def OC4(a, b, c, d):
|
||||
return a | (b << 2) | (c << 4) | (d << 6)
|
||||
@ -252,35 +264,50 @@ class RawCode:
|
||||
i += 1
|
||||
RawCode.escaped_names.add(self.escaped_name)
|
||||
|
||||
sizes = {"bytecode": 0, "strings": 0, "raw_code_overhead": 0, "const_table_overhead": 0, "string_overhead": 0, "number_overhead": 0}
|
||||
# emit children first
|
||||
for rc in self.raw_codes:
|
||||
rc.freeze(self.escaped_name + '_')
|
||||
subsize = rc.freeze(self.escaped_name + '_')
|
||||
for k in sizes:
|
||||
sizes[k] += subsize[k]
|
||||
|
||||
|
||||
# generate bytecode data
|
||||
print()
|
||||
print('// frozen bytecode for file %s, scope %s%s' % (self.source_file.str, parent_name, self.simple_name.str))
|
||||
print("// bytecode size", len(self.bytecode))
|
||||
print('STATIC ', end='')
|
||||
if not config.MICROPY_OPT_CACHE_MAP_LOOKUP_IN_BYTECODE:
|
||||
print('const ', end='')
|
||||
print('byte bytecode_data_%s[%u] = {' % (self.escaped_name, len(self.bytecode)))
|
||||
sizes["bytecode"] += len(self.bytecode)
|
||||
print(' ', end='')
|
||||
for i in range(self.ip2):
|
||||
print(' 0x%02x,' % self.bytecode[i], end='')
|
||||
print()
|
||||
print(" // simple name")
|
||||
print(' ', self.simple_name.qstr_id, '& 0xff,', self.simple_name.qstr_id, '>> 8,')
|
||||
print(" // source file")
|
||||
print(' ', self.source_file.qstr_id, '& 0xff,', self.source_file.qstr_id, '>> 8,')
|
||||
print(" // code info")
|
||||
print(' ', end='')
|
||||
for i in range(self.ip2 + 4, self.ip):
|
||||
print(' 0x%02x,' % self.bytecode[i], end='')
|
||||
print()
|
||||
print(" // bytecode")
|
||||
ip = self.ip
|
||||
while ip < len(self.bytecode):
|
||||
f, sz = mp_opcode_format(self.bytecode, ip)
|
||||
opcode = self.bytecode[ip]
|
||||
if opcode in opcode_names:
|
||||
opcode = opcode_names[opcode]
|
||||
else:
|
||||
opcode = '0x%02x' % opcode
|
||||
if f == 1:
|
||||
qst = self._unpack_qstr(ip + 1).qstr_id
|
||||
print(' ', '0x%02x,' % self.bytecode[ip], qst, '& 0xff,', qst, '>> 8,')
|
||||
print(' {}, {} & 0xff, {} >> 8,'.format(opcode, qst, qst))
|
||||
else:
|
||||
print(' ', ''.join('0x%02x, ' % self.bytecode[ip + i] for i in range(sz)))
|
||||
print(' {},{}'.format(opcode, ''.join(' 0x%02x,' % self.bytecode[ip + i] for i in range(1, sz))))
|
||||
ip += sz
|
||||
print('};')
|
||||
|
||||
@ -295,9 +322,12 @@ class RawCode:
|
||||
obj_type = 'mp_type_str'
|
||||
else:
|
||||
obj_type = 'mp_type_bytes'
|
||||
print('STATIC const mp_obj_str_t %s = {{&%s}, %u, %u, (const byte*)"%s"};'
|
||||
print('STATIC const mp_obj_str_t %s = {{&%s}, %u, %u, (const byte*)"%s"}; // %s'
|
||||
% (obj_name, obj_type, qstrutil.compute_hash(obj, config.MICROPY_QSTR_BYTES_IN_HASH),
|
||||
len(obj), ''.join(('\\x%02x' % b) for b in obj)))
|
||||
len(obj), ''.join(('\\x%02x' % b) for b in obj), obj))
|
||||
sizes["strings"] += len(obj)
|
||||
sizes["string_overhead"] += 16
|
||||
|
||||
elif is_int_type(obj):
|
||||
if config.MICROPY_LONGINT_IMPL == config.MICROPY_LONGINT_IMPL_NONE:
|
||||
# TODO check if we can actually fit this long-int into a small-int
|
||||
@ -321,14 +351,17 @@ class RawCode:
|
||||
print('STATIC const mp_obj_int_t %s = {{&mp_type_int}, '
|
||||
'{.neg=%u, .fixed_dig=1, .alloc=%u, .len=%u, .dig=(uint%u_t[]){%s}}};'
|
||||
% (obj_name, neg, ndigs, ndigs, bits_per_dig, digs))
|
||||
sizes["number_overhead"] += 16
|
||||
elif type(obj) is float:
|
||||
print('#if MICROPY_OBJ_REPR == MICROPY_OBJ_REPR_A || MICROPY_OBJ_REPR == MICROPY_OBJ_REPR_B')
|
||||
print('STATIC const mp_obj_float_t %s = {{&mp_type_float}, %.16g};'
|
||||
% (obj_name, obj))
|
||||
print('#endif')
|
||||
sizes["number_overhead"] += 8
|
||||
elif type(obj) is complex:
|
||||
print('STATIC const mp_obj_complex_t %s = {{&mp_type_complex}, %.16g, %.16g};'
|
||||
% (obj_name, obj.real, obj.imag))
|
||||
sizes["number_overhead"] += 12
|
||||
else:
|
||||
raise FreezeError(self, 'freezing of object %r is not implemented' % (obj,))
|
||||
|
||||
@ -338,8 +371,10 @@ class RawCode:
|
||||
print('STATIC const mp_rom_obj_t const_table_data_%s[%u] = {'
|
||||
% (self.escaped_name, const_table_len))
|
||||
for qst in self.qstrs:
|
||||
sizes["const_table_overhead"] += 4
|
||||
print(' MP_ROM_QSTR(%s),' % global_qstrs[qst].qstr_id)
|
||||
for i in range(len(self.objs)):
|
||||
sizes["const_table_overhead"] += 4
|
||||
if type(self.objs[i]) is float:
|
||||
print('#if MICROPY_OBJ_REPR == MICROPY_OBJ_REPR_A || MICROPY_OBJ_REPR == MICROPY_OBJ_REPR_B')
|
||||
print(' MP_ROM_PTR(&const_obj_%s_%u),' % (self.escaped_name, i))
|
||||
@ -353,6 +388,7 @@ class RawCode:
|
||||
else:
|
||||
print(' MP_ROM_PTR(&const_obj_%s_%u),' % (self.escaped_name, i))
|
||||
for rc in self.raw_codes:
|
||||
sizes["const_table_overhead"] += 4
|
||||
print(' MP_ROM_PTR(&raw_code_%s),' % rc.escaped_name)
|
||||
print('};')
|
||||
|
||||
@ -376,6 +412,9 @@ class RawCode:
|
||||
print(' #endif')
|
||||
print(' },')
|
||||
print('};')
|
||||
sizes["raw_code_overhead"] += 16
|
||||
|
||||
return sizes
|
||||
|
||||
def read_uint(f):
|
||||
i = 0
|
||||
@ -467,6 +506,7 @@ def freeze_mpy(base_qstrs, raw_codes):
|
||||
new[q.qstr_esc] = (len(new), q.qstr_esc, q.str)
|
||||
new = sorted(new.values(), key=lambda x: x[0])
|
||||
|
||||
print('#include "py/bc0.h"')
|
||||
print('#include "py/mpconfig.h"')
|
||||
print('#include "py/objint.h"')
|
||||
print('#include "py/objstr.h"')
|
||||
@ -523,27 +563,45 @@ def freeze_mpy(base_qstrs, raw_codes):
|
||||
print(' %u, // allocated entries' % len(new))
|
||||
print(' %u, // used entries' % len(new))
|
||||
print(' {')
|
||||
qstr_size = {"metadata": 0, "data": 0}
|
||||
for _, _, qstr in new:
|
||||
qstr_size["metadata"] += config.MICROPY_QSTR_BYTES_IN_LEN + config.MICROPY_QSTR_BYTES_IN_HASH
|
||||
qstr_size["data"] += len(qstr)
|
||||
print(' %s,'
|
||||
% qstrutil.make_bytes(config.MICROPY_QSTR_BYTES_IN_LEN, config.MICROPY_QSTR_BYTES_IN_HASH, qstr))
|
||||
print(' },')
|
||||
print('};')
|
||||
|
||||
sizes = {}
|
||||
for rc in raw_codes:
|
||||
rc.freeze(rc.source_file.str.replace('/', '_')[:-3] + '_')
|
||||
sizes[rc.source_file.str] = rc.freeze(rc.source_file.str.replace('/', '_')[:-3] + '_')
|
||||
|
||||
print()
|
||||
print('const char mp_frozen_mpy_names[] = {')
|
||||
qstr_size["filenames"] = 1
|
||||
for rc in raw_codes:
|
||||
module_name = rc.source_file.str
|
||||
print('"%s\\0"' % module_name)
|
||||
qstr_size["filenames"] += len(module_name) + 1
|
||||
print('"\\0"};')
|
||||
|
||||
print('const mp_raw_code_t *const mp_frozen_mpy_content[] = {')
|
||||
for rc in raw_codes:
|
||||
print(' &raw_code_%s,' % rc.escaped_name)
|
||||
size = sizes[rc.source_file.str]
|
||||
print(' // Total size:', sum(size.values()))
|
||||
for k in size:
|
||||
print(" // {} {}".format(k, size[k]))
|
||||
print('};')
|
||||
|
||||
print()
|
||||
print('// Total size:', sum([sum(x.values()) for x in sizes.values()]) + sum(qstr_size.values()))
|
||||
for k in size:
|
||||
total = sum([x[k] for x in sizes.values()])
|
||||
print("// {} {}".format(k, total))
|
||||
for k in qstr_size:
|
||||
print("// qstr {} {}".format(k, qstr_size[k]))
|
||||
|
||||
def main():
|
||||
import argparse
|
||||
cmd_parser = argparse.ArgumentParser(description='A tool to work with MicroPython .mpy files.')
|
||||
|
Loading…
x
Reference in New Issue
Block a user