commit
749b2b0aac
2
.gitmodules
vendored
2
.gitmodules
vendored
@ -78,7 +78,7 @@
|
||||
url = https://github.com/adafruit/nrfx.git
|
||||
[submodule "lib/tinyusb"]
|
||||
path = lib/tinyusb
|
||||
url = https://github.com/tannewt/tinyusb.git
|
||||
url = https://github.com/hathach/tinyusb.git
|
||||
branch = develop
|
||||
[submodule "tools/huffman"]
|
||||
path = tools/huffman
|
||||
|
12
.travis.yml
12
.travis.yml
@ -21,10 +21,10 @@ git:
|
||||
# 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 website" TRAVIS_BOARDS="feather_huzzah circuitplayground_express grandcentral_m4_express pca10056 pca10059 feather_nrf52832 feather_nrf52840_express makerdiary_nrf52840_mdk" TRAVIS_SDK=arm:nrf:esp8266
|
||||
- TRAVIS_TESTS="unix docs translations website" TRAVIS_BOARDS="feather_huzzah circuitplayground_express mini_sam_m4 grandcentral_m4_express pca10056 pca10059 feather_nrf52832 feather_nrf52840_express makerdiary_nrf52840_mdk particle_boron particle_argon particle_xenon sparkfun_nrf52840_mini" 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 meowmeow" TRAVIS_SDK=arm
|
||||
- TRAVIS_BOARDS="feather_m0_express_crickit feather_m0_rfm69 feather_m0_rfm9x feather_m4_express arduino_zero arduino_mkr1300" TRAVIS_SDK=arm
|
||||
- TRAVIS_BOARDS="feather_m0_express_crickit feather_m0_rfm69 feather_m0_rfm9x feather_m4_express arduino_zero arduino_mkr1300 arduino_mkrzero" TRAVIS_SDK=arm
|
||||
- TRAVIS_BOARDS="circuitplayground_express_crickit feather_m0_adalogger feather_m0_basic feather_m0_express catwan_usbstick" TRAVIS_SDK=arm
|
||||
|
||||
addons:
|
||||
@ -37,8 +37,8 @@ deploy:
|
||||
provider: releases
|
||||
api_key:
|
||||
secure: "jdqVFw6itRY4qwQF4ReXo0uaymT+Mob6RhYX0lw8KWFNqBgHnLVuKmKKcGMEuRvBVMPkvxF7bMuOQzSBOunqwlHFse3oMzdWvQODv1zwV7pSRXGwTdIvTPbBjKWxnBG9uSNRf2R5AMflJFUxy2CbtBpgvNzr+4VLREZDrrjEu8C1iTtXGpSm5AQ5iIp2fkMAWD85FP7CQPpkqRoxhSIFZmTdurfYRmenq1OZ/4SeD5TESKcyvqJNzVT9z210B3cg3eAkP6ukvelW4qE2zgIANqUkGqvDEnAvEII9M89kuwhCMAekdfwnUSPrry+g77i1dUZHoRN1+MFj+waYtPaqxdYo2G1sysa6enxlu4jHMR5MfMk9eKHgaNgL3PiyANusYSS44amh8QIiVaX5nw82myZDCpQOZW7YqJKE6WX70Lbs4mS+wIs+ig4KIXO1B0p9kMb0OeVjHRl+KcXsWGRu/ECG/ExpqlVIssSPU407LohMXT2cJ37CY/R/EeK2XSDsQ2M3L3EAGUjCJdBGuwsOJ+2lG+HQpAVu9vAB4kq5jy9Ye+MG+8Xlkly3XZZ5+FkXyYxKnXb26/QVv0e5sIG5OmdJCPYFaH2J1QdKo7CdhEcBtrf6DMPWaimGMldShFqzLjOz3b3qLysRxFF0aGb7ipKPa57vawNzYHoPAViOcXQ="
|
||||
file:
|
||||
- $(ls -d1 bin/*/* | tr "\n" ":")
|
||||
file_glob: true
|
||||
file: "$TRAVIS_BUILD_DIR/bin/*/*"
|
||||
skip_cleanup: true
|
||||
draft: true
|
||||
on:
|
||||
@ -92,7 +92,9 @@ script:
|
||||
- make -C mpy-cross -j2
|
||||
- echo -en 'travis_fold:end:mpy-cross\\r'
|
||||
|
||||
- cd tools && python3 build_adafruit_bins.py
|
||||
# Use unbuffered output because building all the releases can take a long time.
|
||||
# Travis will cancel the job if it sees no output for >10 minutes.
|
||||
- cd tools && python3 -u build_release_files.py
|
||||
- cd ..
|
||||
|
||||
- echo 'Building unix' && echo -en 'travis_fold:start:unix\\r'
|
||||
|
10
README.rst
10
README.rst
@ -60,13 +60,15 @@ Other
|
||||
supported using the `Adafruit CircuitPython SD
|
||||
library <https://github.com/adafruit/Adafruit_CircuitPython_SD>`__)
|
||||
- `Arduino Zero <https://www.arduino.cc/en/Main/ArduinoBoardZero>`__
|
||||
- `Arduino MKR Zero <https://store.arduino.cc/arduino-mkrzero>`__ (MicroSD card
|
||||
supported using the `Adafruit CircuitPython SD
|
||||
library <https://github.com/adafruit/Adafruit_CircuitPython_SD>`__)
|
||||
|
||||
"Third-party" or "non-Adafruit" boards
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
- `Electronic Cats Meow Meow <https://electroniccats.com/gomeow/>`__
|
||||
- `Electronic Cats CatWAN USB Stick <https://electroniccats.com/producto/catwan_usb_stick/>`__
|
||||
|
||||
- `Electronic Cats CatWAN USB Stick <https://electroniccats.com/producto/catwan_usb_stick/>`__
|
||||
|
||||
Download
|
||||
--------
|
||||
@ -207,7 +209,7 @@ amongst ports including CircuitPython:
|
||||
- ``extmod`` Shared C code used in multiple ports' modules.
|
||||
- ``lib`` Shared core C code including externally developed libraries
|
||||
such as FATFS.
|
||||
- ``logo`` The MicroPython logo.
|
||||
- ``logo`` The CircuitPython logo.
|
||||
- ``mpy-cross`` A cross compiler that converts Python files to byte
|
||||
code prior to being run in MicroPython. Useful for reducing library
|
||||
size.
|
||||
@ -262,7 +264,7 @@ project.
|
||||
|
||||
`⬆ back to top <#adafruit-circuitpython>`__
|
||||
|
||||
.. |Build Status| image:: https://travis-ci.org/adafruit/circuitpython.svg?branch=master
|
||||
.. |Build Status| image:: https://travis-ci.com/adafruit/circuitpython.svg?branch=master
|
||||
:target: https://travis-ci.org/adafruit/circuitpython
|
||||
.. |Doc Status| image:: https://readthedocs.org/projects/circuitpython/badge/?version=latest
|
||||
:target: http://circuitpython.readthedocs.io/
|
||||
|
@ -1 +1 @@
|
||||
Subproject commit 47fabe42edaae4a5da6aa0d48c664a9184578753
|
||||
Subproject commit 3bb53273cd3770328f55ba317af3df0cce4333c1
|
@ -8,7 +8,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: PACKAGE VERSION\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2018-11-09 16:20-0800\n"
|
||||
"POT-Creation-Date: 2018-12-06 17:04-0800\n"
|
||||
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"Language-Team: LANGUAGE <LL@li.org>\n"
|
||||
@ -131,7 +131,7 @@ msgstr ""
|
||||
msgid "invalid dupterm index"
|
||||
msgstr ""
|
||||
|
||||
#: extmod/vfs_fat.c:426 py/moduerrno.c:150
|
||||
#: extmod/vfs_fat.c:426 py/moduerrno.c:154
|
||||
msgid "Read-only filesystem"
|
||||
msgstr ""
|
||||
|
||||
@ -151,70 +151,37 @@ msgstr ""
|
||||
msgid "script compilation not supported"
|
||||
msgstr ""
|
||||
|
||||
#: main.c:154
|
||||
#: main.c:150
|
||||
msgid " output:\n"
|
||||
msgstr ""
|
||||
|
||||
#: main.c:168 main.c:241
|
||||
#: main.c:164 main.c:237
|
||||
msgid ""
|
||||
"Auto-reload is on. Simply save files over USB to run them or enter REPL to "
|
||||
"disable.\n"
|
||||
msgstr ""
|
||||
|
||||
#: main.c:170
|
||||
#: main.c:166
|
||||
msgid "Running in safe mode! Auto-reload is off.\n"
|
||||
msgstr ""
|
||||
|
||||
#: main.c:172 main.c:243
|
||||
#: main.c:168 main.c:239
|
||||
msgid "Auto-reload is off.\n"
|
||||
msgstr ""
|
||||
|
||||
#: main.c:186
|
||||
#: main.c:182
|
||||
msgid "Running in safe mode! Not running saved code.\n"
|
||||
msgstr ""
|
||||
|
||||
#: main.c:202
|
||||
#: main.c:198
|
||||
msgid "WARNING: Your code filename has two extensions\n"
|
||||
msgstr ""
|
||||
|
||||
#: main.c:250
|
||||
msgid "You requested starting safe mode by "
|
||||
msgstr ""
|
||||
|
||||
#: main.c:253
|
||||
msgid "To exit, please reset the board without "
|
||||
msgstr ""
|
||||
|
||||
#: main.c:260
|
||||
msgid ""
|
||||
"You are running in safe mode which means something really bad happened.\n"
|
||||
msgstr ""
|
||||
|
||||
#: main.c:262
|
||||
msgid "Looks like our core CircuitPython code crashed hard. Whoops!\n"
|
||||
msgstr ""
|
||||
|
||||
#: main.c:263
|
||||
msgid "Please file an issue here with the contents of your CIRCUITPY drive:\n"
|
||||
msgstr ""
|
||||
|
||||
#: main.c:266
|
||||
msgid ""
|
||||
"The microcontroller's power dipped. Please make sure your power supply "
|
||||
"provides\n"
|
||||
msgstr ""
|
||||
|
||||
#: main.c:267
|
||||
msgid ""
|
||||
"enough power for the whole circuit and press reset (after ejecting "
|
||||
"CIRCUITPY).\n"
|
||||
msgstr ""
|
||||
|
||||
#: main.c:271
|
||||
#: main.c:244
|
||||
msgid "Press any key to enter the REPL. Use CTRL-D to reload."
|
||||
msgstr ""
|
||||
|
||||
#: main.c:429
|
||||
#: main.c:407
|
||||
msgid "soft reboot\n"
|
||||
msgstr ""
|
||||
|
||||
@ -360,7 +327,7 @@ msgstr ""
|
||||
|
||||
#: ports/atmel-samd/common-hal/busio/I2C.c:78
|
||||
#: ports/atmel-samd/common-hal/busio/SPI.c:171
|
||||
#: ports/atmel-samd/common-hal/busio/UART.c:119
|
||||
#: ports/atmel-samd/common-hal/busio/UART.c:120
|
||||
#: ports/atmel-samd/common-hal/i2cslave/I2CSlave.c:45
|
||||
#: ports/nrf/common-hal/busio/I2C.c:82
|
||||
msgid "Invalid pins"
|
||||
@ -374,31 +341,31 @@ msgstr ""
|
||||
msgid "Unsupported baudrate"
|
||||
msgstr ""
|
||||
|
||||
#: ports/atmel-samd/common-hal/busio/UART.c:66
|
||||
#: ports/atmel-samd/common-hal/busio/UART.c:67
|
||||
msgid "bytes > 8 bits not supported"
|
||||
msgstr ""
|
||||
|
||||
#: ports/atmel-samd/common-hal/busio/UART.c:72
|
||||
#: ports/nrf/common-hal/busio/UART.c:82
|
||||
#: ports/atmel-samd/common-hal/busio/UART.c:73
|
||||
#: ports/nrf/common-hal/busio/UART.c:83
|
||||
msgid "tx and rx cannot both be None"
|
||||
msgstr ""
|
||||
|
||||
#: ports/atmel-samd/common-hal/busio/UART.c:145
|
||||
#: ports/nrf/common-hal/busio/UART.c:115
|
||||
#: ports/atmel-samd/common-hal/busio/UART.c:146
|
||||
#: ports/nrf/common-hal/busio/UART.c:116
|
||||
msgid "Failed to allocate RX buffer"
|
||||
msgstr ""
|
||||
|
||||
#: ports/atmel-samd/common-hal/busio/UART.c:153
|
||||
#: ports/atmel-samd/common-hal/busio/UART.c:154
|
||||
msgid "Could not initialize UART"
|
||||
msgstr ""
|
||||
|
||||
#: ports/atmel-samd/common-hal/busio/UART.c:240
|
||||
#: ports/nrf/common-hal/busio/UART.c:149
|
||||
#: ports/atmel-samd/common-hal/busio/UART.c:241
|
||||
#: ports/nrf/common-hal/busio/UART.c:157
|
||||
msgid "No RX pin"
|
||||
msgstr ""
|
||||
|
||||
#: ports/atmel-samd/common-hal/busio/UART.c:294
|
||||
#: ports/nrf/common-hal/busio/UART.c:195
|
||||
#: ports/atmel-samd/common-hal/busio/UART.c:300
|
||||
#: ports/nrf/common-hal/busio/UART.c:207
|
||||
msgid "No TX pin"
|
||||
msgstr ""
|
||||
|
||||
@ -443,7 +410,7 @@ msgid "pop from an empty PulseIn"
|
||||
msgstr ""
|
||||
|
||||
#: ports/atmel-samd/common-hal/pulseio/PulseIn.c:237
|
||||
#: ports/esp8266/common-hal/pulseio/PulseIn.c:182 py/obj.c:420
|
||||
#: ports/esp8266/common-hal/pulseio/PulseIn.c:182 py/obj.c:422
|
||||
msgid "index out of range"
|
||||
msgstr ""
|
||||
|
||||
@ -807,24 +774,24 @@ msgstr ""
|
||||
msgid "All SPI peripherals are in use"
|
||||
msgstr ""
|
||||
|
||||
#: ports/nrf/common-hal/busio/UART.c:48
|
||||
#: ports/nrf/common-hal/busio/UART.c:49
|
||||
#, c-format
|
||||
msgid "error = 0x%08lX"
|
||||
msgstr ""
|
||||
|
||||
#: ports/nrf/common-hal/busio/UART.c:86
|
||||
#: ports/nrf/common-hal/busio/UART.c:87
|
||||
msgid "Invalid buffer size"
|
||||
msgstr ""
|
||||
|
||||
#: ports/nrf/common-hal/busio/UART.c:90
|
||||
#: ports/nrf/common-hal/busio/UART.c:91
|
||||
msgid "Odd parity is not supported"
|
||||
msgstr ""
|
||||
|
||||
#: ports/nrf/common-hal/busio/UART.c:322 ports/nrf/common-hal/busio/UART.c:326
|
||||
#: ports/nrf/common-hal/busio/UART.c:331 ports/nrf/common-hal/busio/UART.c:336
|
||||
#: ports/nrf/common-hal/busio/UART.c:342 ports/nrf/common-hal/busio/UART.c:347
|
||||
#: ports/nrf/common-hal/busio/UART.c:352 ports/nrf/common-hal/busio/UART.c:356
|
||||
#: ports/nrf/common-hal/busio/UART.c:364
|
||||
#: ports/nrf/common-hal/busio/UART.c:334 ports/nrf/common-hal/busio/UART.c:338
|
||||
#: ports/nrf/common-hal/busio/UART.c:343 ports/nrf/common-hal/busio/UART.c:348
|
||||
#: ports/nrf/common-hal/busio/UART.c:354 ports/nrf/common-hal/busio/UART.c:359
|
||||
#: ports/nrf/common-hal/busio/UART.c:364 ports/nrf/common-hal/busio/UART.c:368
|
||||
#: ports/nrf/common-hal/busio/UART.c:376
|
||||
msgid "busio.UART not available"
|
||||
msgstr ""
|
||||
|
||||
@ -1325,140 +1292,140 @@ msgstr ""
|
||||
msgid "expecting a dict for keyword args"
|
||||
msgstr ""
|
||||
|
||||
#: py/moduerrno.c:143 py/moduerrno.c:146
|
||||
#: py/moduerrno.c:147 py/moduerrno.c:150
|
||||
msgid "Permission denied"
|
||||
msgstr ""
|
||||
|
||||
#: py/moduerrno.c:144
|
||||
#: py/moduerrno.c:148
|
||||
msgid "No such file/directory"
|
||||
msgstr ""
|
||||
|
||||
#: py/moduerrno.c:145
|
||||
#: py/moduerrno.c:149
|
||||
msgid "Input/output error"
|
||||
msgstr ""
|
||||
|
||||
#: py/moduerrno.c:147
|
||||
#: py/moduerrno.c:151
|
||||
msgid "File exists"
|
||||
msgstr ""
|
||||
|
||||
#: py/moduerrno.c:148
|
||||
#: py/moduerrno.c:152
|
||||
msgid "Unsupported operation"
|
||||
msgstr ""
|
||||
|
||||
#: py/moduerrno.c:149
|
||||
#: py/moduerrno.c:153
|
||||
msgid "Invalid argument"
|
||||
msgstr ""
|
||||
|
||||
#: py/obj.c:90
|
||||
#: py/obj.c:92
|
||||
msgid "Traceback (most recent call last):\n"
|
||||
msgstr ""
|
||||
|
||||
#: py/obj.c:94
|
||||
#: py/obj.c:96
|
||||
msgid " File \"%q\", line %d"
|
||||
msgstr ""
|
||||
|
||||
#: py/obj.c:96
|
||||
#: py/obj.c:98
|
||||
msgid " File \"%q\""
|
||||
msgstr ""
|
||||
|
||||
#: py/obj.c:100
|
||||
#: py/obj.c:102
|
||||
msgid ", in %q\n"
|
||||
msgstr ""
|
||||
|
||||
#: py/obj.c:257
|
||||
#: py/obj.c:259
|
||||
msgid "can't convert to int"
|
||||
msgstr ""
|
||||
|
||||
#: py/obj.c:260
|
||||
#: py/obj.c:262
|
||||
#, c-format
|
||||
msgid "can't convert %s to int"
|
||||
msgstr ""
|
||||
|
||||
#: py/obj.c:320
|
||||
#: py/obj.c:322
|
||||
msgid "can't convert to float"
|
||||
msgstr ""
|
||||
|
||||
#: py/obj.c:323
|
||||
#: py/obj.c:325
|
||||
#, c-format
|
||||
msgid "can't convert %s to float"
|
||||
msgstr ""
|
||||
|
||||
#: py/obj.c:353
|
||||
#: py/obj.c:355
|
||||
msgid "can't convert to complex"
|
||||
msgstr ""
|
||||
|
||||
#: py/obj.c:356
|
||||
#: py/obj.c:358
|
||||
#, c-format
|
||||
msgid "can't convert %s to complex"
|
||||
msgstr ""
|
||||
|
||||
#: py/obj.c:371
|
||||
#: py/obj.c:373
|
||||
msgid "expected tuple/list"
|
||||
msgstr ""
|
||||
|
||||
#: py/obj.c:374
|
||||
#: py/obj.c:376
|
||||
#, c-format
|
||||
msgid "object '%s' is not a tuple or list"
|
||||
msgstr ""
|
||||
|
||||
#: py/obj.c:385
|
||||
#: py/obj.c:387
|
||||
msgid "tuple/list has wrong length"
|
||||
msgstr ""
|
||||
|
||||
#: py/obj.c:387
|
||||
#: py/obj.c:389
|
||||
#, c-format
|
||||
msgid "requested length %d but object has length %d"
|
||||
msgstr ""
|
||||
|
||||
#: py/obj.c:400
|
||||
#: py/obj.c:402
|
||||
msgid "indices must be integers"
|
||||
msgstr ""
|
||||
|
||||
#: py/obj.c:403
|
||||
#: py/obj.c:405
|
||||
msgid "%q indices must be integers, not %s"
|
||||
msgstr ""
|
||||
|
||||
#: py/obj.c:423
|
||||
#: py/obj.c:425
|
||||
msgid "%q index out of range"
|
||||
msgstr ""
|
||||
|
||||
#: py/obj.c:455
|
||||
#: py/obj.c:457
|
||||
msgid "object has no len"
|
||||
msgstr ""
|
||||
|
||||
#: py/obj.c:458
|
||||
#: py/obj.c:460
|
||||
#, c-format
|
||||
msgid "object of type '%s' has no len()"
|
||||
msgstr ""
|
||||
|
||||
#: py/obj.c:496
|
||||
#: py/obj.c:500
|
||||
msgid "object does not support item deletion"
|
||||
msgstr ""
|
||||
|
||||
#: py/obj.c:499
|
||||
#: py/obj.c:503
|
||||
#, c-format
|
||||
msgid "'%s' object does not support item deletion"
|
||||
msgstr ""
|
||||
|
||||
#: py/obj.c:503
|
||||
#: py/obj.c:507
|
||||
msgid "object is not subscriptable"
|
||||
msgstr ""
|
||||
|
||||
#: py/obj.c:506
|
||||
#: py/obj.c:510
|
||||
#, c-format
|
||||
msgid "'%s' object is not subscriptable"
|
||||
msgstr ""
|
||||
|
||||
#: py/obj.c:510
|
||||
#: py/obj.c:514
|
||||
msgid "object does not support item assignment"
|
||||
msgstr ""
|
||||
|
||||
#: py/obj.c:513
|
||||
#: py/obj.c:517
|
||||
#, c-format
|
||||
msgid "'%s' object does not support item assignment"
|
||||
msgstr ""
|
||||
|
||||
#: py/obj.c:544
|
||||
#: py/obj.c:548
|
||||
msgid "object with buffer protocol required"
|
||||
msgstr ""
|
||||
|
||||
@ -1974,6 +1941,14 @@ msgstr ""
|
||||
msgid "stream operation not supported"
|
||||
msgstr ""
|
||||
|
||||
#: py/stream.c:254
|
||||
msgid "string not supported; use bytes or bytearray"
|
||||
msgstr ""
|
||||
|
||||
#: py/stream.c:289
|
||||
msgid "length argument not allowed for this type"
|
||||
msgstr ""
|
||||
|
||||
#: py/vm.c:255
|
||||
msgid "local variable referenced before assignment"
|
||||
msgstr ""
|
||||
@ -2132,14 +2107,18 @@ msgstr ""
|
||||
msgid "Function requires lock."
|
||||
msgstr ""
|
||||
|
||||
#: shared-bindings/busio/UART.c:102
|
||||
#: shared-bindings/busio/UART.c:106
|
||||
msgid "bits must be 7, 8 or 9"
|
||||
msgstr ""
|
||||
|
||||
#: shared-bindings/busio/UART.c:114
|
||||
#: shared-bindings/busio/UART.c:118
|
||||
msgid "stop must be 1 or 2"
|
||||
msgstr ""
|
||||
|
||||
#: shared-bindings/busio/UART.c:123
|
||||
msgid "timeout >100 (units are now seconds, not msecs)"
|
||||
msgstr ""
|
||||
|
||||
#: shared-bindings/digitalio/DigitalInOut.c:211
|
||||
msgid "Invalid direction."
|
||||
msgstr ""
|
||||
@ -2361,15 +2340,15 @@ msgstr ""
|
||||
msgid "time.struct_time() takes a 9-sequence"
|
||||
msgstr ""
|
||||
|
||||
#: shared-bindings/time/__init__.c:169 shared-bindings/time/__init__.c:264
|
||||
#: shared-bindings/time/__init__.c:169 shared-bindings/time/__init__.c:263
|
||||
msgid "Tuple or struct_time argument required"
|
||||
msgstr ""
|
||||
|
||||
#: shared-bindings/time/__init__.c:174 shared-bindings/time/__init__.c:269
|
||||
#: shared-bindings/time/__init__.c:174 shared-bindings/time/__init__.c:268
|
||||
msgid "function takes exactly 9 arguments"
|
||||
msgstr ""
|
||||
|
||||
#: shared-bindings/time/__init__.c:240 shared-bindings/time/__init__.c:273
|
||||
#: shared-bindings/time/__init__.c:239 shared-bindings/time/__init__.c:272
|
||||
msgid "timestamp out of range for platform time_t"
|
||||
msgstr ""
|
||||
|
||||
@ -2512,3 +2491,58 @@ msgstr ""
|
||||
#: shared-module/usb_hid/Device.c:59
|
||||
msgid "USB Error"
|
||||
msgstr ""
|
||||
|
||||
#: supervisor/shared/safe_mode.c:97
|
||||
msgid "You requested starting safe mode by "
|
||||
msgstr ""
|
||||
|
||||
#: supervisor/shared/safe_mode.c:100
|
||||
msgid "To exit, please reset the board without "
|
||||
msgstr ""
|
||||
|
||||
#: supervisor/shared/safe_mode.c:107
|
||||
msgid ""
|
||||
"You are running in safe mode which means something unanticipated happened.\n"
|
||||
msgstr ""
|
||||
|
||||
#: supervisor/shared/safe_mode.c:109
|
||||
msgid ""
|
||||
"Looks like our core CircuitPython code crashed hard. Whoops!\n"
|
||||
"Please file an issue at https://github.com/adafruit/circuitpython/issues\n"
|
||||
" with the contents of your CIRCUITPY drive and this message:\n"
|
||||
msgstr ""
|
||||
|
||||
#: supervisor/shared/safe_mode.c:111
|
||||
msgid "Crash into the HardFault_Handler.\n"
|
||||
msgstr ""
|
||||
|
||||
#: supervisor/shared/safe_mode.c:113
|
||||
msgid "MicroPython NLR jump failed. Likely memory corruption.\n"
|
||||
msgstr ""
|
||||
|
||||
#: supervisor/shared/safe_mode.c:115
|
||||
msgid "MicroPython fatal error.\n"
|
||||
msgstr ""
|
||||
|
||||
#: supervisor/shared/safe_mode.c:118
|
||||
msgid ""
|
||||
"The microcontroller's power dipped. Please make sure your power supply "
|
||||
"provides\n"
|
||||
"enough power for the whole circuit and press reset (after ejecting "
|
||||
"CIRCUITPY).\n"
|
||||
msgstr ""
|
||||
|
||||
#: supervisor/shared/safe_mode.c:120
|
||||
msgid ""
|
||||
"The CircuitPython heap was corrupted because the stack was too small.\n"
|
||||
"Please increase stack size limits and press reset (after ejecting "
|
||||
"CIRCUITPY).\n"
|
||||
"If you didn't change the stack, then file an issue here with the contents of "
|
||||
"your CIRCUITPY drive:\n"
|
||||
msgstr ""
|
||||
|
||||
#: supervisor/shared/safe_mode.c:123
|
||||
msgid ""
|
||||
"The reset button was pressed while booting CircuitPython. Press again to "
|
||||
"exit safe mode.\n"
|
||||
msgstr ""
|
||||
|
290
locale/de_DE.po
290
locale/de_DE.po
@ -7,7 +7,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: \n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2018-11-09 16:20-0800\n"
|
||||
"POT-Creation-Date: 2018-12-06 17:04-0800\n"
|
||||
"PO-Revision-Date: 2018-07-27 11:55-0700\n"
|
||||
"Last-Translator: Sebastian Plamauer\n"
|
||||
"Language-Team: \n"
|
||||
@ -131,7 +131,7 @@ msgstr "kompression header"
|
||||
msgid "invalid dupterm index"
|
||||
msgstr "ungültiger dupterm index"
|
||||
|
||||
#: extmod/vfs_fat.c:426 py/moduerrno.c:150
|
||||
#: extmod/vfs_fat.c:426 py/moduerrno.c:154
|
||||
msgid "Read-only filesystem"
|
||||
msgstr "Schreibgeschützte Dateisystem"
|
||||
|
||||
@ -151,11 +151,11 @@ msgstr "ungültige argumente"
|
||||
msgid "script compilation not supported"
|
||||
msgstr "kompilieren von Skripten ist nicht unterstützt"
|
||||
|
||||
#: main.c:154
|
||||
#: main.c:150
|
||||
msgid " output:\n"
|
||||
msgstr " Ausgabe:\n"
|
||||
|
||||
#: main.c:168 main.c:241
|
||||
#: main.c:164 main.c:237
|
||||
msgid ""
|
||||
"Auto-reload is on. Simply save files over USB to run them or enter REPL to "
|
||||
"disable.\n"
|
||||
@ -163,67 +163,29 @@ msgstr ""
|
||||
"Automatisches Neuladen ist aktiv. Speichere Dateien über USB um sie "
|
||||
"auszuführen oder verbinde dich mit der REPL um zu deaktivieren.\n"
|
||||
|
||||
#: main.c:170
|
||||
#: main.c:166
|
||||
msgid "Running in safe mode! Auto-reload is off.\n"
|
||||
msgstr "Sicherheitsmodus aktiv! Automatisches Neuladen ist deaktiviert.\n"
|
||||
|
||||
#: main.c:172 main.c:243
|
||||
#: main.c:168 main.c:239
|
||||
msgid "Auto-reload is off.\n"
|
||||
msgstr "Automatisches Neuladen ist deaktiviert.\n"
|
||||
|
||||
#: main.c:186
|
||||
#: main.c:182
|
||||
msgid "Running in safe mode! Not running saved code.\n"
|
||||
msgstr "Sicherheitsmodus aktiv! Gespeicherter Code wird nicht ausgeführt\n"
|
||||
|
||||
#: main.c:202
|
||||
#: main.c:198
|
||||
msgid "WARNING: Your code filename has two extensions\n"
|
||||
msgstr "WARNUNG: Der Dateiname deines codes hat zwei Dateityperweiterungen\n"
|
||||
|
||||
#: main.c:250
|
||||
msgid "You requested starting safe mode by "
|
||||
msgstr "Du hast das Starten im Sicherheitsmodus ausgelöst durch "
|
||||
|
||||
#: main.c:253
|
||||
msgid "To exit, please reset the board without "
|
||||
msgstr "Zum beenden bitte resette das board ohne "
|
||||
|
||||
#: main.c:260
|
||||
msgid ""
|
||||
"You are running in safe mode which means something really bad happened.\n"
|
||||
msgstr "Sicherheitsmodus aktiv, etwas wirklich schlechtes ist passiert.\n"
|
||||
|
||||
#: main.c:262
|
||||
msgid "Looks like our core CircuitPython code crashed hard. Whoops!\n"
|
||||
msgstr "CircuitPython ist abgestürzt. Ups!\n"
|
||||
|
||||
#: main.c:263
|
||||
msgid "Please file an issue here with the contents of your CIRCUITPY drive:\n"
|
||||
msgstr ""
|
||||
"Bitte erstelle ein issue hier mit dem Inhalt deines CIRCUITPY-speichers:\n"
|
||||
|
||||
#: main.c:266
|
||||
msgid ""
|
||||
"The microcontroller's power dipped. Please make sure your power supply "
|
||||
"provides\n"
|
||||
msgstr ""
|
||||
"Die Stromversorgung des Mikrocontrollers ist eingebrochen. Stelle sicher,"
|
||||
"dass deine Stromversorgung\n"
|
||||
|
||||
#: main.c:267
|
||||
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 dem "
|
||||
"sicheren Auswerfen von CIRCUITPY.)\n"
|
||||
|
||||
#: main.c:271
|
||||
#: main.c:244
|
||||
msgid "Press any key to enter the REPL. Use CTRL-D to reload."
|
||||
msgstr ""
|
||||
"Drücke eine Taste um dich mit der REPL zu verbinden. Drücke Strg-D zum neu "
|
||||
"laden"
|
||||
|
||||
#: main.c:429
|
||||
#: main.c:407
|
||||
msgid "soft reboot\n"
|
||||
msgstr "soft reboot\n"
|
||||
|
||||
@ -369,7 +331,7 @@ msgstr "Nicht genug Pins vorhanden"
|
||||
|
||||
#: ports/atmel-samd/common-hal/busio/I2C.c:78
|
||||
#: ports/atmel-samd/common-hal/busio/SPI.c:171
|
||||
#: ports/atmel-samd/common-hal/busio/UART.c:119
|
||||
#: ports/atmel-samd/common-hal/busio/UART.c:120
|
||||
#: ports/atmel-samd/common-hal/i2cslave/I2CSlave.c:45
|
||||
#: ports/nrf/common-hal/busio/I2C.c:82
|
||||
msgid "Invalid pins"
|
||||
@ -383,31 +345,31 @@ msgstr "SDA oder SCL brauchen pull up"
|
||||
msgid "Unsupported baudrate"
|
||||
msgstr "Baudrate wird nicht unterstützt"
|
||||
|
||||
#: ports/atmel-samd/common-hal/busio/UART.c:66
|
||||
#: ports/atmel-samd/common-hal/busio/UART.c:67
|
||||
msgid "bytes > 8 bits not supported"
|
||||
msgstr "bytes mit merh als 8 bits werden nicht unterstützt"
|
||||
|
||||
#: ports/atmel-samd/common-hal/busio/UART.c:72
|
||||
#: ports/nrf/common-hal/busio/UART.c:82
|
||||
#: ports/atmel-samd/common-hal/busio/UART.c:73
|
||||
#: ports/nrf/common-hal/busio/UART.c:83
|
||||
msgid "tx and rx cannot both be None"
|
||||
msgstr "tx und rx können nicht beide None sein"
|
||||
|
||||
#: ports/atmel-samd/common-hal/busio/UART.c:145
|
||||
#: ports/nrf/common-hal/busio/UART.c:115
|
||||
#: ports/atmel-samd/common-hal/busio/UART.c:146
|
||||
#: ports/nrf/common-hal/busio/UART.c:116
|
||||
msgid "Failed to allocate RX buffer"
|
||||
msgstr "Konnte keinen RX Buffer allozieren"
|
||||
|
||||
#: ports/atmel-samd/common-hal/busio/UART.c:153
|
||||
#: ports/atmel-samd/common-hal/busio/UART.c:154
|
||||
msgid "Could not initialize UART"
|
||||
msgstr "Konnte UART nicht initialisieren"
|
||||
|
||||
#: ports/atmel-samd/common-hal/busio/UART.c:240
|
||||
#: ports/nrf/common-hal/busio/UART.c:149
|
||||
#: ports/atmel-samd/common-hal/busio/UART.c:241
|
||||
#: ports/nrf/common-hal/busio/UART.c:157
|
||||
msgid "No RX pin"
|
||||
msgstr "Kein RX Pin"
|
||||
|
||||
#: ports/atmel-samd/common-hal/busio/UART.c:294
|
||||
#: ports/nrf/common-hal/busio/UART.c:195
|
||||
#: ports/atmel-samd/common-hal/busio/UART.c:300
|
||||
#: ports/nrf/common-hal/busio/UART.c:207
|
||||
msgid "No TX pin"
|
||||
msgstr "Kein TX Pin"
|
||||
|
||||
@ -452,7 +414,7 @@ msgid "pop from an empty PulseIn"
|
||||
msgstr "pop von einem leeren PulseIn"
|
||||
|
||||
#: ports/atmel-samd/common-hal/pulseio/PulseIn.c:237
|
||||
#: ports/esp8266/common-hal/pulseio/PulseIn.c:182 py/obj.c:420
|
||||
#: ports/esp8266/common-hal/pulseio/PulseIn.c:182 py/obj.c:422
|
||||
msgid "index out of range"
|
||||
msgstr "index außerhalb der Reichweite"
|
||||
|
||||
@ -822,26 +784,26 @@ msgstr "Alle timer werden benutzt"
|
||||
msgid "All SPI peripherals are in use"
|
||||
msgstr "Alle timer werden benutzt"
|
||||
|
||||
#: ports/nrf/common-hal/busio/UART.c:48
|
||||
#: ports/nrf/common-hal/busio/UART.c:49
|
||||
#, c-format
|
||||
msgid "error = 0x%08lX"
|
||||
msgstr ""
|
||||
|
||||
#: ports/nrf/common-hal/busio/UART.c:86
|
||||
#: ports/nrf/common-hal/busio/UART.c:87
|
||||
#, fuzzy
|
||||
msgid "Invalid buffer size"
|
||||
msgstr "ungültiger dupterm index"
|
||||
|
||||
#: ports/nrf/common-hal/busio/UART.c:90
|
||||
#: ports/nrf/common-hal/busio/UART.c:91
|
||||
#, fuzzy
|
||||
msgid "Odd parity is not supported"
|
||||
msgstr "bytes mit merh als 8 bits werden nicht unterstützt"
|
||||
|
||||
#: ports/nrf/common-hal/busio/UART.c:322 ports/nrf/common-hal/busio/UART.c:326
|
||||
#: ports/nrf/common-hal/busio/UART.c:331 ports/nrf/common-hal/busio/UART.c:336
|
||||
#: ports/nrf/common-hal/busio/UART.c:342 ports/nrf/common-hal/busio/UART.c:347
|
||||
#: ports/nrf/common-hal/busio/UART.c:352 ports/nrf/common-hal/busio/UART.c:356
|
||||
#: ports/nrf/common-hal/busio/UART.c:364
|
||||
#: ports/nrf/common-hal/busio/UART.c:334 ports/nrf/common-hal/busio/UART.c:338
|
||||
#: ports/nrf/common-hal/busio/UART.c:343 ports/nrf/common-hal/busio/UART.c:348
|
||||
#: ports/nrf/common-hal/busio/UART.c:354 ports/nrf/common-hal/busio/UART.c:359
|
||||
#: ports/nrf/common-hal/busio/UART.c:364 ports/nrf/common-hal/busio/UART.c:368
|
||||
#: ports/nrf/common-hal/busio/UART.c:376
|
||||
msgid "busio.UART not available"
|
||||
msgstr ""
|
||||
|
||||
@ -1345,140 +1307,140 @@ msgstr ""
|
||||
msgid "expecting a dict for keyword args"
|
||||
msgstr ""
|
||||
|
||||
#: py/moduerrno.c:143 py/moduerrno.c:146
|
||||
#: py/moduerrno.c:147 py/moduerrno.c:150
|
||||
msgid "Permission denied"
|
||||
msgstr ""
|
||||
|
||||
#: py/moduerrno.c:144
|
||||
#: py/moduerrno.c:148
|
||||
msgid "No such file/directory"
|
||||
msgstr ""
|
||||
|
||||
#: py/moduerrno.c:145
|
||||
#: py/moduerrno.c:149
|
||||
msgid "Input/output error"
|
||||
msgstr ""
|
||||
|
||||
#: py/moduerrno.c:147
|
||||
#: py/moduerrno.c:151
|
||||
msgid "File exists"
|
||||
msgstr ""
|
||||
|
||||
#: py/moduerrno.c:148
|
||||
#: py/moduerrno.c:152
|
||||
msgid "Unsupported operation"
|
||||
msgstr ""
|
||||
|
||||
#: py/moduerrno.c:149
|
||||
#: py/moduerrno.c:153
|
||||
msgid "Invalid argument"
|
||||
msgstr ""
|
||||
|
||||
#: py/obj.c:90
|
||||
#: py/obj.c:92
|
||||
msgid "Traceback (most recent call last):\n"
|
||||
msgstr ""
|
||||
|
||||
#: py/obj.c:94
|
||||
#: py/obj.c:96
|
||||
msgid " File \"%q\", line %d"
|
||||
msgstr ""
|
||||
|
||||
#: py/obj.c:96
|
||||
#: py/obj.c:98
|
||||
msgid " File \"%q\""
|
||||
msgstr ""
|
||||
|
||||
#: py/obj.c:100
|
||||
#: py/obj.c:102
|
||||
msgid ", in %q\n"
|
||||
msgstr ""
|
||||
|
||||
#: py/obj.c:257
|
||||
#: py/obj.c:259
|
||||
msgid "can't convert to int"
|
||||
msgstr ""
|
||||
|
||||
#: py/obj.c:260
|
||||
#: py/obj.c:262
|
||||
#, c-format
|
||||
msgid "can't convert %s to int"
|
||||
msgstr ""
|
||||
|
||||
#: py/obj.c:320
|
||||
#: py/obj.c:322
|
||||
msgid "can't convert to float"
|
||||
msgstr ""
|
||||
|
||||
#: py/obj.c:323
|
||||
#: py/obj.c:325
|
||||
#, c-format
|
||||
msgid "can't convert %s to float"
|
||||
msgstr ""
|
||||
|
||||
#: py/obj.c:353
|
||||
#: py/obj.c:355
|
||||
msgid "can't convert to complex"
|
||||
msgstr ""
|
||||
|
||||
#: py/obj.c:356
|
||||
#: py/obj.c:358
|
||||
#, c-format
|
||||
msgid "can't convert %s to complex"
|
||||
msgstr ""
|
||||
|
||||
#: py/obj.c:371
|
||||
#: py/obj.c:373
|
||||
msgid "expected tuple/list"
|
||||
msgstr ""
|
||||
|
||||
#: py/obj.c:374
|
||||
#: py/obj.c:376
|
||||
#, c-format
|
||||
msgid "object '%s' is not a tuple or list"
|
||||
msgstr ""
|
||||
|
||||
#: py/obj.c:385
|
||||
#: py/obj.c:387
|
||||
msgid "tuple/list has wrong length"
|
||||
msgstr ""
|
||||
|
||||
#: py/obj.c:387
|
||||
#: py/obj.c:389
|
||||
#, c-format
|
||||
msgid "requested length %d but object has length %d"
|
||||
msgstr ""
|
||||
|
||||
#: py/obj.c:400
|
||||
#: py/obj.c:402
|
||||
msgid "indices must be integers"
|
||||
msgstr ""
|
||||
|
||||
#: py/obj.c:403
|
||||
#: py/obj.c:405
|
||||
msgid "%q indices must be integers, not %s"
|
||||
msgstr ""
|
||||
|
||||
#: py/obj.c:423
|
||||
#: py/obj.c:425
|
||||
msgid "%q index out of range"
|
||||
msgstr ""
|
||||
|
||||
#: py/obj.c:455
|
||||
#: py/obj.c:457
|
||||
msgid "object has no len"
|
||||
msgstr ""
|
||||
|
||||
#: py/obj.c:458
|
||||
#: py/obj.c:460
|
||||
#, c-format
|
||||
msgid "object of type '%s' has no len()"
|
||||
msgstr ""
|
||||
|
||||
#: py/obj.c:496
|
||||
#: py/obj.c:500
|
||||
msgid "object does not support item deletion"
|
||||
msgstr ""
|
||||
|
||||
#: py/obj.c:499
|
||||
#: py/obj.c:503
|
||||
#, c-format
|
||||
msgid "'%s' object does not support item deletion"
|
||||
msgstr ""
|
||||
|
||||
#: py/obj.c:503
|
||||
#: py/obj.c:507
|
||||
msgid "object is not subscriptable"
|
||||
msgstr ""
|
||||
|
||||
#: py/obj.c:506
|
||||
#: py/obj.c:510
|
||||
#, c-format
|
||||
msgid "'%s' object is not subscriptable"
|
||||
msgstr ""
|
||||
|
||||
#: py/obj.c:510
|
||||
#: py/obj.c:514
|
||||
msgid "object does not support item assignment"
|
||||
msgstr ""
|
||||
|
||||
#: py/obj.c:513
|
||||
#: py/obj.c:517
|
||||
#, c-format
|
||||
msgid "'%s' object does not support item assignment"
|
||||
msgstr ""
|
||||
|
||||
#: py/obj.c:544
|
||||
#: py/obj.c:548
|
||||
msgid "object with buffer protocol required"
|
||||
msgstr ""
|
||||
|
||||
@ -1994,6 +1956,14 @@ msgstr ""
|
||||
msgid "stream operation not supported"
|
||||
msgstr ""
|
||||
|
||||
#: py/stream.c:254
|
||||
msgid "string not supported; use bytes or bytearray"
|
||||
msgstr ""
|
||||
|
||||
#: py/stream.c:289
|
||||
msgid "length argument not allowed for this type"
|
||||
msgstr ""
|
||||
|
||||
#: py/vm.c:255
|
||||
msgid "local variable referenced before assignment"
|
||||
msgstr ""
|
||||
@ -2155,14 +2125,18 @@ msgstr ""
|
||||
msgid "Function requires lock."
|
||||
msgstr ""
|
||||
|
||||
#: shared-bindings/busio/UART.c:102
|
||||
#: shared-bindings/busio/UART.c:106
|
||||
msgid "bits must be 7, 8 or 9"
|
||||
msgstr ""
|
||||
|
||||
#: shared-bindings/busio/UART.c:114
|
||||
#: shared-bindings/busio/UART.c:118
|
||||
msgid "stop must be 1 or 2"
|
||||
msgstr ""
|
||||
|
||||
#: shared-bindings/busio/UART.c:123
|
||||
msgid "timeout >100 (units are now seconds, not msecs)"
|
||||
msgstr ""
|
||||
|
||||
#: shared-bindings/digitalio/DigitalInOut.c:211
|
||||
msgid "Invalid direction."
|
||||
msgstr ""
|
||||
@ -2385,15 +2359,15 @@ msgstr ""
|
||||
msgid "time.struct_time() takes a 9-sequence"
|
||||
msgstr ""
|
||||
|
||||
#: shared-bindings/time/__init__.c:169 shared-bindings/time/__init__.c:264
|
||||
#: shared-bindings/time/__init__.c:169 shared-bindings/time/__init__.c:263
|
||||
msgid "Tuple or struct_time argument required"
|
||||
msgstr ""
|
||||
|
||||
#: shared-bindings/time/__init__.c:174 shared-bindings/time/__init__.c:269
|
||||
#: shared-bindings/time/__init__.c:174 shared-bindings/time/__init__.c:268
|
||||
msgid "function takes exactly 9 arguments"
|
||||
msgstr ""
|
||||
|
||||
#: shared-bindings/time/__init__.c:240 shared-bindings/time/__init__.c:273
|
||||
#: shared-bindings/time/__init__.c:239 shared-bindings/time/__init__.c:272
|
||||
msgid "timestamp out of range for platform time_t"
|
||||
msgstr ""
|
||||
|
||||
@ -2538,32 +2512,106 @@ msgstr "USB beschäftigt"
|
||||
msgid "USB Error"
|
||||
msgstr "USB Fehler"
|
||||
|
||||
#~ msgid "Invalid Service type"
|
||||
#~ msgstr "Ungültiger Diensttyp"
|
||||
#: supervisor/shared/safe_mode.c:97
|
||||
msgid "You requested starting safe mode by "
|
||||
msgstr "Du hast das Starten im Sicherheitsmodus ausgelöst durch "
|
||||
|
||||
#~ msgid "Can not query for the device address."
|
||||
#~ msgstr "Kann nicht nach der Geräteadresse suchen."
|
||||
#: supervisor/shared/safe_mode.c:100
|
||||
msgid "To exit, please reset the board without "
|
||||
msgstr "Zum beenden bitte resette das board ohne "
|
||||
|
||||
#~ msgid "Cannot set PPCP parameters."
|
||||
#~ msgstr "Kann PPCP Parameter nicht setzen."
|
||||
#: supervisor/shared/safe_mode.c:107
|
||||
#, fuzzy
|
||||
msgid ""
|
||||
"You are running in safe mode which means something unanticipated happened.\n"
|
||||
msgstr "Sicherheitsmodus aktiv, etwas wirklich schlechtes ist passiert.\n"
|
||||
|
||||
#~ msgid "Cannot apply GAP parameters."
|
||||
#~ msgstr "Kann GAP Parameter nicht anwenden."
|
||||
#: supervisor/shared/safe_mode.c:109
|
||||
msgid ""
|
||||
"Looks like our core CircuitPython code crashed hard. Whoops!\n"
|
||||
"Please file an issue at https://github.com/adafruit/circuitpython/issues\n"
|
||||
" with the contents of your CIRCUITPY drive and this message:\n"
|
||||
msgstr ""
|
||||
|
||||
#~ msgid "Can not encode UUID, to check length."
|
||||
#~ msgstr "Kann UUID nicht kodieren, um die Länge zu überprüfen."
|
||||
#: supervisor/shared/safe_mode.c:111
|
||||
msgid "Crash into the HardFault_Handler.\n"
|
||||
msgstr ""
|
||||
|
||||
#~ msgid "Can encode UUID into the advertisement packet."
|
||||
#~ msgstr "Kann UUID in das advertisement packet kodieren."
|
||||
#: supervisor/shared/safe_mode.c:113
|
||||
msgid "MicroPython NLR jump failed. Likely memory corruption.\n"
|
||||
msgstr ""
|
||||
|
||||
#~ msgid "Can not apply device name in the stack."
|
||||
#~ msgstr "Der Gerätename kann nicht im Stack verwendet werden."
|
||||
#: supervisor/shared/safe_mode.c:115
|
||||
msgid "MicroPython fatal error.\n"
|
||||
msgstr ""
|
||||
|
||||
#~ msgid "Can not apply advertisement data. status: 0x%02x"
|
||||
#~ msgstr "Kann advertisement data nicht anwenden. Status: 0x%02x"
|
||||
#: supervisor/shared/safe_mode.c:118
|
||||
#, fuzzy
|
||||
msgid ""
|
||||
"The microcontroller's power dipped. Please make sure your power supply "
|
||||
"provides\n"
|
||||
"enough power for the whole circuit and press reset (after ejecting "
|
||||
"CIRCUITPY).\n"
|
||||
msgstr ""
|
||||
"Die Stromversorgung des Mikrocontrollers ist eingebrochen. Stelle sicher,"
|
||||
"dass deine Stromversorgung\n"
|
||||
|
||||
#: supervisor/shared/safe_mode.c:120
|
||||
msgid ""
|
||||
"The CircuitPython heap was corrupted because the stack was too small.\n"
|
||||
"Please increase stack size limits and press reset (after ejecting "
|
||||
"CIRCUITPY).\n"
|
||||
"If you didn't change the stack, then file an issue here with the contents of "
|
||||
"your CIRCUITPY drive:\n"
|
||||
msgstr ""
|
||||
|
||||
#: supervisor/shared/safe_mode.c:123
|
||||
msgid ""
|
||||
"The reset button was pressed while booting CircuitPython. Press again to "
|
||||
"exit safe mode.\n"
|
||||
msgstr ""
|
||||
|
||||
#~ msgid "Looks like our core CircuitPython code crashed hard. Whoops!\n"
|
||||
#~ msgstr "CircuitPython ist abgestürzt. Ups!\n"
|
||||
|
||||
#~ msgid ""
|
||||
#~ "Please file an issue here with the contents of your CIRCUITPY drive:\n"
|
||||
#~ msgstr ""
|
||||
#~ "Bitte erstelle ein issue hier mit dem Inhalt deines CIRCUITPY-speichers:\n"
|
||||
|
||||
#~ msgid "Can not add Service."
|
||||
#~ msgstr "Kann den Dienst nicht hinzufügen."
|
||||
|
||||
#~ msgid "Can encode UUID into the advertisement packet."
|
||||
#~ msgstr "Kann UUID in das advertisement packet kodieren."
|
||||
|
||||
#~ msgid "Can not encode UUID, to check length."
|
||||
#~ msgstr "Kann UUID nicht kodieren, um die Länge zu überprüfen."
|
||||
|
||||
#~ msgid "Can not add Characteristic."
|
||||
#~ msgstr "Kann das Merkmal nicht hinzufügen."
|
||||
|
||||
#~ msgid "Can not query for the device address."
|
||||
#~ msgstr "Kann nicht nach der Geräteadresse suchen."
|
||||
|
||||
#~ 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 dem "
|
||||
#~ "sicheren Auswerfen von CIRCUITPY.)\n"
|
||||
|
||||
#~ msgid "Cannot set PPCP parameters."
|
||||
#~ msgstr "Kann PPCP Parameter nicht setzen."
|
||||
|
||||
#~ msgid "Can not apply device name in the stack."
|
||||
#~ msgstr "Der Gerätename kann nicht im Stack verwendet werden."
|
||||
|
||||
#~ msgid "Cannot apply GAP parameters."
|
||||
#~ msgstr "Kann GAP Parameter nicht anwenden."
|
||||
|
||||
#~ msgid "Can not apply advertisement data. status: 0x%02x"
|
||||
#~ msgstr "Kann advertisement data nicht anwenden. Status: 0x%02x"
|
||||
|
||||
#~ msgid "Invalid Service type"
|
||||
#~ msgstr "Ungültiger Diensttyp"
|
||||
|
234
locale/en_US.po
234
locale/en_US.po
@ -7,7 +7,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: \n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2018-11-09 15:57-0800\n"
|
||||
"POT-Creation-Date: 2018-12-06 17:04-0800\n"
|
||||
"PO-Revision-Date: 2018-07-27 11:55-0700\n"
|
||||
"Last-Translator: \n"
|
||||
"Language-Team: \n"
|
||||
@ -131,7 +131,7 @@ msgstr ""
|
||||
msgid "invalid dupterm index"
|
||||
msgstr ""
|
||||
|
||||
#: extmod/vfs_fat.c:426 py/moduerrno.c:150
|
||||
#: extmod/vfs_fat.c:426 py/moduerrno.c:154
|
||||
msgid "Read-only filesystem"
|
||||
msgstr ""
|
||||
|
||||
@ -151,70 +151,37 @@ msgstr ""
|
||||
msgid "script compilation not supported"
|
||||
msgstr ""
|
||||
|
||||
#: main.c:154
|
||||
#: main.c:150
|
||||
msgid " output:\n"
|
||||
msgstr ""
|
||||
|
||||
#: main.c:168 main.c:241
|
||||
#: main.c:164 main.c:237
|
||||
msgid ""
|
||||
"Auto-reload is on. Simply save files over USB to run them or enter REPL to "
|
||||
"disable.\n"
|
||||
msgstr ""
|
||||
|
||||
#: main.c:170
|
||||
#: main.c:166
|
||||
msgid "Running in safe mode! Auto-reload is off.\n"
|
||||
msgstr ""
|
||||
|
||||
#: main.c:172 main.c:243
|
||||
#: main.c:168 main.c:239
|
||||
msgid "Auto-reload is off.\n"
|
||||
msgstr ""
|
||||
|
||||
#: main.c:186
|
||||
#: main.c:182
|
||||
msgid "Running in safe mode! Not running saved code.\n"
|
||||
msgstr ""
|
||||
|
||||
#: main.c:202
|
||||
#: main.c:198
|
||||
msgid "WARNING: Your code filename has two extensions\n"
|
||||
msgstr ""
|
||||
|
||||
#: main.c:250
|
||||
msgid "You requested starting safe mode by "
|
||||
msgstr ""
|
||||
|
||||
#: main.c:253
|
||||
msgid "To exit, please reset the board without "
|
||||
msgstr ""
|
||||
|
||||
#: main.c:260
|
||||
msgid ""
|
||||
"You are running in safe mode which means something really bad happened.\n"
|
||||
msgstr ""
|
||||
|
||||
#: main.c:262
|
||||
msgid "Looks like our core CircuitPython code crashed hard. Whoops!\n"
|
||||
msgstr ""
|
||||
|
||||
#: main.c:263
|
||||
msgid "Please file an issue here with the contents of your CIRCUITPY drive:\n"
|
||||
msgstr ""
|
||||
|
||||
#: main.c:266
|
||||
msgid ""
|
||||
"The microcontroller's power dipped. Please make sure your power supply "
|
||||
"provides\n"
|
||||
msgstr ""
|
||||
|
||||
#: main.c:267
|
||||
msgid ""
|
||||
"enough power for the whole circuit and press reset (after ejecting "
|
||||
"CIRCUITPY).\n"
|
||||
msgstr ""
|
||||
|
||||
#: main.c:271
|
||||
#: main.c:244
|
||||
msgid "Press any key to enter the REPL. Use CTRL-D to reload."
|
||||
msgstr ""
|
||||
|
||||
#: main.c:429
|
||||
#: main.c:407
|
||||
msgid "soft reboot\n"
|
||||
msgstr ""
|
||||
|
||||
@ -360,7 +327,7 @@ msgstr ""
|
||||
|
||||
#: ports/atmel-samd/common-hal/busio/I2C.c:78
|
||||
#: ports/atmel-samd/common-hal/busio/SPI.c:171
|
||||
#: ports/atmel-samd/common-hal/busio/UART.c:119
|
||||
#: ports/atmel-samd/common-hal/busio/UART.c:120
|
||||
#: ports/atmel-samd/common-hal/i2cslave/I2CSlave.c:45
|
||||
#: ports/nrf/common-hal/busio/I2C.c:82
|
||||
msgid "Invalid pins"
|
||||
@ -374,31 +341,31 @@ msgstr ""
|
||||
msgid "Unsupported baudrate"
|
||||
msgstr ""
|
||||
|
||||
#: ports/atmel-samd/common-hal/busio/UART.c:66
|
||||
#: ports/atmel-samd/common-hal/busio/UART.c:67
|
||||
msgid "bytes > 8 bits not supported"
|
||||
msgstr ""
|
||||
|
||||
#: ports/atmel-samd/common-hal/busio/UART.c:72
|
||||
#: ports/nrf/common-hal/busio/UART.c:82
|
||||
#: ports/atmel-samd/common-hal/busio/UART.c:73
|
||||
#: ports/nrf/common-hal/busio/UART.c:83
|
||||
msgid "tx and rx cannot both be None"
|
||||
msgstr ""
|
||||
|
||||
#: ports/atmel-samd/common-hal/busio/UART.c:145
|
||||
#: ports/nrf/common-hal/busio/UART.c:115
|
||||
#: ports/atmel-samd/common-hal/busio/UART.c:146
|
||||
#: ports/nrf/common-hal/busio/UART.c:116
|
||||
msgid "Failed to allocate RX buffer"
|
||||
msgstr ""
|
||||
|
||||
#: ports/atmel-samd/common-hal/busio/UART.c:153
|
||||
#: ports/atmel-samd/common-hal/busio/UART.c:154
|
||||
msgid "Could not initialize UART"
|
||||
msgstr ""
|
||||
|
||||
#: ports/atmel-samd/common-hal/busio/UART.c:240
|
||||
#: ports/nrf/common-hal/busio/UART.c:149
|
||||
#: ports/atmel-samd/common-hal/busio/UART.c:241
|
||||
#: ports/nrf/common-hal/busio/UART.c:157
|
||||
msgid "No RX pin"
|
||||
msgstr ""
|
||||
|
||||
#: ports/atmel-samd/common-hal/busio/UART.c:294
|
||||
#: ports/nrf/common-hal/busio/UART.c:195
|
||||
#: ports/atmel-samd/common-hal/busio/UART.c:300
|
||||
#: ports/nrf/common-hal/busio/UART.c:207
|
||||
msgid "No TX pin"
|
||||
msgstr ""
|
||||
|
||||
@ -443,7 +410,7 @@ msgid "pop from an empty PulseIn"
|
||||
msgstr ""
|
||||
|
||||
#: ports/atmel-samd/common-hal/pulseio/PulseIn.c:237
|
||||
#: ports/esp8266/common-hal/pulseio/PulseIn.c:182 py/obj.c:420
|
||||
#: ports/esp8266/common-hal/pulseio/PulseIn.c:182 py/obj.c:422
|
||||
msgid "index out of range"
|
||||
msgstr ""
|
||||
|
||||
@ -807,24 +774,24 @@ msgstr ""
|
||||
msgid "All SPI peripherals are in use"
|
||||
msgstr ""
|
||||
|
||||
#: ports/nrf/common-hal/busio/UART.c:48
|
||||
#: ports/nrf/common-hal/busio/UART.c:49
|
||||
#, c-format
|
||||
msgid "error = 0x%08lX"
|
||||
msgstr ""
|
||||
|
||||
#: ports/nrf/common-hal/busio/UART.c:86
|
||||
#: ports/nrf/common-hal/busio/UART.c:87
|
||||
msgid "Invalid buffer size"
|
||||
msgstr ""
|
||||
|
||||
#: ports/nrf/common-hal/busio/UART.c:90
|
||||
#: ports/nrf/common-hal/busio/UART.c:91
|
||||
msgid "Odd parity is not supported"
|
||||
msgstr ""
|
||||
|
||||
#: ports/nrf/common-hal/busio/UART.c:322 ports/nrf/common-hal/busio/UART.c:326
|
||||
#: ports/nrf/common-hal/busio/UART.c:331 ports/nrf/common-hal/busio/UART.c:336
|
||||
#: ports/nrf/common-hal/busio/UART.c:342 ports/nrf/common-hal/busio/UART.c:347
|
||||
#: ports/nrf/common-hal/busio/UART.c:352 ports/nrf/common-hal/busio/UART.c:356
|
||||
#: ports/nrf/common-hal/busio/UART.c:364
|
||||
#: ports/nrf/common-hal/busio/UART.c:334 ports/nrf/common-hal/busio/UART.c:338
|
||||
#: ports/nrf/common-hal/busio/UART.c:343 ports/nrf/common-hal/busio/UART.c:348
|
||||
#: ports/nrf/common-hal/busio/UART.c:354 ports/nrf/common-hal/busio/UART.c:359
|
||||
#: ports/nrf/common-hal/busio/UART.c:364 ports/nrf/common-hal/busio/UART.c:368
|
||||
#: ports/nrf/common-hal/busio/UART.c:376
|
||||
msgid "busio.UART not available"
|
||||
msgstr ""
|
||||
|
||||
@ -1325,140 +1292,140 @@ msgstr ""
|
||||
msgid "expecting a dict for keyword args"
|
||||
msgstr ""
|
||||
|
||||
#: py/moduerrno.c:143 py/moduerrno.c:146
|
||||
#: py/moduerrno.c:147 py/moduerrno.c:150
|
||||
msgid "Permission denied"
|
||||
msgstr ""
|
||||
|
||||
#: py/moduerrno.c:144
|
||||
#: py/moduerrno.c:148
|
||||
msgid "No such file/directory"
|
||||
msgstr ""
|
||||
|
||||
#: py/moduerrno.c:145
|
||||
#: py/moduerrno.c:149
|
||||
msgid "Input/output error"
|
||||
msgstr ""
|
||||
|
||||
#: py/moduerrno.c:147
|
||||
#: py/moduerrno.c:151
|
||||
msgid "File exists"
|
||||
msgstr ""
|
||||
|
||||
#: py/moduerrno.c:148
|
||||
#: py/moduerrno.c:152
|
||||
msgid "Unsupported operation"
|
||||
msgstr ""
|
||||
|
||||
#: py/moduerrno.c:149
|
||||
#: py/moduerrno.c:153
|
||||
msgid "Invalid argument"
|
||||
msgstr ""
|
||||
|
||||
#: py/obj.c:90
|
||||
#: py/obj.c:92
|
||||
msgid "Traceback (most recent call last):\n"
|
||||
msgstr ""
|
||||
|
||||
#: py/obj.c:94
|
||||
#: py/obj.c:96
|
||||
msgid " File \"%q\", line %d"
|
||||
msgstr ""
|
||||
|
||||
#: py/obj.c:96
|
||||
#: py/obj.c:98
|
||||
msgid " File \"%q\""
|
||||
msgstr ""
|
||||
|
||||
#: py/obj.c:100
|
||||
#: py/obj.c:102
|
||||
msgid ", in %q\n"
|
||||
msgstr ""
|
||||
|
||||
#: py/obj.c:257
|
||||
#: py/obj.c:259
|
||||
msgid "can't convert to int"
|
||||
msgstr ""
|
||||
|
||||
#: py/obj.c:260
|
||||
#: py/obj.c:262
|
||||
#, c-format
|
||||
msgid "can't convert %s to int"
|
||||
msgstr ""
|
||||
|
||||
#: py/obj.c:320
|
||||
#: py/obj.c:322
|
||||
msgid "can't convert to float"
|
||||
msgstr ""
|
||||
|
||||
#: py/obj.c:323
|
||||
#: py/obj.c:325
|
||||
#, c-format
|
||||
msgid "can't convert %s to float"
|
||||
msgstr ""
|
||||
|
||||
#: py/obj.c:353
|
||||
#: py/obj.c:355
|
||||
msgid "can't convert to complex"
|
||||
msgstr ""
|
||||
|
||||
#: py/obj.c:356
|
||||
#: py/obj.c:358
|
||||
#, c-format
|
||||
msgid "can't convert %s to complex"
|
||||
msgstr ""
|
||||
|
||||
#: py/obj.c:371
|
||||
#: py/obj.c:373
|
||||
msgid "expected tuple/list"
|
||||
msgstr ""
|
||||
|
||||
#: py/obj.c:374
|
||||
#: py/obj.c:376
|
||||
#, c-format
|
||||
msgid "object '%s' is not a tuple or list"
|
||||
msgstr ""
|
||||
|
||||
#: py/obj.c:385
|
||||
#: py/obj.c:387
|
||||
msgid "tuple/list has wrong length"
|
||||
msgstr ""
|
||||
|
||||
#: py/obj.c:387
|
||||
#: py/obj.c:389
|
||||
#, c-format
|
||||
msgid "requested length %d but object has length %d"
|
||||
msgstr ""
|
||||
|
||||
#: py/obj.c:400
|
||||
#: py/obj.c:402
|
||||
msgid "indices must be integers"
|
||||
msgstr ""
|
||||
|
||||
#: py/obj.c:403
|
||||
#: py/obj.c:405
|
||||
msgid "%q indices must be integers, not %s"
|
||||
msgstr ""
|
||||
|
||||
#: py/obj.c:423
|
||||
#: py/obj.c:425
|
||||
msgid "%q index out of range"
|
||||
msgstr ""
|
||||
|
||||
#: py/obj.c:455
|
||||
#: py/obj.c:457
|
||||
msgid "object has no len"
|
||||
msgstr ""
|
||||
|
||||
#: py/obj.c:458
|
||||
#: py/obj.c:460
|
||||
#, c-format
|
||||
msgid "object of type '%s' has no len()"
|
||||
msgstr ""
|
||||
|
||||
#: py/obj.c:496
|
||||
#: py/obj.c:500
|
||||
msgid "object does not support item deletion"
|
||||
msgstr ""
|
||||
|
||||
#: py/obj.c:499
|
||||
#: py/obj.c:503
|
||||
#, c-format
|
||||
msgid "'%s' object does not support item deletion"
|
||||
msgstr ""
|
||||
|
||||
#: py/obj.c:503
|
||||
#: py/obj.c:507
|
||||
msgid "object is not subscriptable"
|
||||
msgstr ""
|
||||
|
||||
#: py/obj.c:506
|
||||
#: py/obj.c:510
|
||||
#, c-format
|
||||
msgid "'%s' object is not subscriptable"
|
||||
msgstr ""
|
||||
|
||||
#: py/obj.c:510
|
||||
#: py/obj.c:514
|
||||
msgid "object does not support item assignment"
|
||||
msgstr ""
|
||||
|
||||
#: py/obj.c:513
|
||||
#: py/obj.c:517
|
||||
#, c-format
|
||||
msgid "'%s' object does not support item assignment"
|
||||
msgstr ""
|
||||
|
||||
#: py/obj.c:544
|
||||
#: py/obj.c:548
|
||||
msgid "object with buffer protocol required"
|
||||
msgstr ""
|
||||
|
||||
@ -1974,6 +1941,14 @@ msgstr ""
|
||||
msgid "stream operation not supported"
|
||||
msgstr ""
|
||||
|
||||
#: py/stream.c:254
|
||||
msgid "string not supported; use bytes or bytearray"
|
||||
msgstr ""
|
||||
|
||||
#: py/stream.c:289
|
||||
msgid "length argument not allowed for this type"
|
||||
msgstr ""
|
||||
|
||||
#: py/vm.c:255
|
||||
msgid "local variable referenced before assignment"
|
||||
msgstr ""
|
||||
@ -2132,14 +2107,18 @@ msgstr ""
|
||||
msgid "Function requires lock."
|
||||
msgstr ""
|
||||
|
||||
#: shared-bindings/busio/UART.c:102
|
||||
#: shared-bindings/busio/UART.c:106
|
||||
msgid "bits must be 7, 8 or 9"
|
||||
msgstr ""
|
||||
|
||||
#: shared-bindings/busio/UART.c:114
|
||||
#: shared-bindings/busio/UART.c:118
|
||||
msgid "stop must be 1 or 2"
|
||||
msgstr ""
|
||||
|
||||
#: shared-bindings/busio/UART.c:123
|
||||
msgid "timeout >100 (units are now seconds, not msecs)"
|
||||
msgstr ""
|
||||
|
||||
#: shared-bindings/digitalio/DigitalInOut.c:211
|
||||
msgid "Invalid direction."
|
||||
msgstr ""
|
||||
@ -2361,15 +2340,15 @@ msgstr ""
|
||||
msgid "time.struct_time() takes a 9-sequence"
|
||||
msgstr ""
|
||||
|
||||
#: shared-bindings/time/__init__.c:169 shared-bindings/time/__init__.c:264
|
||||
#: shared-bindings/time/__init__.c:169 shared-bindings/time/__init__.c:263
|
||||
msgid "Tuple or struct_time argument required"
|
||||
msgstr ""
|
||||
|
||||
#: shared-bindings/time/__init__.c:174 shared-bindings/time/__init__.c:269
|
||||
#: shared-bindings/time/__init__.c:174 shared-bindings/time/__init__.c:268
|
||||
msgid "function takes exactly 9 arguments"
|
||||
msgstr ""
|
||||
|
||||
#: shared-bindings/time/__init__.c:240 shared-bindings/time/__init__.c:273
|
||||
#: shared-bindings/time/__init__.c:239 shared-bindings/time/__init__.c:272
|
||||
msgid "timestamp out of range for platform time_t"
|
||||
msgstr ""
|
||||
|
||||
@ -2512,3 +2491,58 @@ msgstr ""
|
||||
#: shared-module/usb_hid/Device.c:59
|
||||
msgid "USB Error"
|
||||
msgstr ""
|
||||
|
||||
#: supervisor/shared/safe_mode.c:97
|
||||
msgid "You requested starting safe mode by "
|
||||
msgstr ""
|
||||
|
||||
#: supervisor/shared/safe_mode.c:100
|
||||
msgid "To exit, please reset the board without "
|
||||
msgstr ""
|
||||
|
||||
#: supervisor/shared/safe_mode.c:107
|
||||
msgid ""
|
||||
"You are running in safe mode which means something unanticipated happened.\n"
|
||||
msgstr ""
|
||||
|
||||
#: supervisor/shared/safe_mode.c:109
|
||||
msgid ""
|
||||
"Looks like our core CircuitPython code crashed hard. Whoops!\n"
|
||||
"Please file an issue at https://github.com/adafruit/circuitpython/issues\n"
|
||||
" with the contents of your CIRCUITPY drive and this message:\n"
|
||||
msgstr ""
|
||||
|
||||
#: supervisor/shared/safe_mode.c:111
|
||||
msgid "Crash into the HardFault_Handler.\n"
|
||||
msgstr ""
|
||||
|
||||
#: supervisor/shared/safe_mode.c:113
|
||||
msgid "MicroPython NLR jump failed. Likely memory corruption.\n"
|
||||
msgstr ""
|
||||
|
||||
#: supervisor/shared/safe_mode.c:115
|
||||
msgid "MicroPython fatal error.\n"
|
||||
msgstr ""
|
||||
|
||||
#: supervisor/shared/safe_mode.c:118
|
||||
msgid ""
|
||||
"The microcontroller's power dipped. Please make sure your power supply "
|
||||
"provides\n"
|
||||
"enough power for the whole circuit and press reset (after ejecting "
|
||||
"CIRCUITPY).\n"
|
||||
msgstr ""
|
||||
|
||||
#: supervisor/shared/safe_mode.c:120
|
||||
msgid ""
|
||||
"The CircuitPython heap was corrupted because the stack was too small.\n"
|
||||
"Please increase stack size limits and press reset (after ejecting "
|
||||
"CIRCUITPY).\n"
|
||||
"If you didn't change the stack, then file an issue here with the contents of "
|
||||
"your CIRCUITPY drive:\n"
|
||||
msgstr ""
|
||||
|
||||
#: supervisor/shared/safe_mode.c:123
|
||||
msgid ""
|
||||
"The reset button was pressed while booting CircuitPython. Press again to "
|
||||
"exit safe mode.\n"
|
||||
msgstr ""
|
||||
|
329
locale/es.po
329
locale/es.po
@ -8,7 +8,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: \n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2018-11-09 16:20-0800\n"
|
||||
"POT-Creation-Date: 2018-12-06 17:04-0800\n"
|
||||
"PO-Revision-Date: 2018-08-24 22:56-0500\n"
|
||||
"Last-Translator: \n"
|
||||
"Language-Team: \n"
|
||||
@ -132,7 +132,7 @@ msgstr "encabezado de compresión"
|
||||
msgid "invalid dupterm index"
|
||||
msgstr "index dupterm inválido"
|
||||
|
||||
#: extmod/vfs_fat.c:426 py/moduerrno.c:150
|
||||
#: extmod/vfs_fat.c:426 py/moduerrno.c:154
|
||||
msgid "Read-only filesystem"
|
||||
msgstr "Sistema de archivos de solo-Lectura"
|
||||
|
||||
@ -152,11 +152,11 @@ msgstr "argumentos inválidos"
|
||||
msgid "script compilation not supported"
|
||||
msgstr "script de compilación no soportado"
|
||||
|
||||
#: main.c:154
|
||||
#: main.c:150
|
||||
msgid " output:\n"
|
||||
msgstr " salida:\n"
|
||||
|
||||
#: main.c:168 main.c:241
|
||||
#: main.c:164 main.c:237
|
||||
msgid ""
|
||||
"Auto-reload is on. Simply save files over USB to run them or enter REPL to "
|
||||
"disable.\n"
|
||||
@ -164,78 +164,37 @@ msgstr ""
|
||||
"Auto-reload habilitado. Simplemente guarda los archivos via USB para "
|
||||
"ejecutarlos o entra al REPL para desabilitarlos.\n"
|
||||
|
||||
#: main.c:170
|
||||
#: main.c:166
|
||||
msgid "Running in safe mode! Auto-reload is off.\n"
|
||||
msgstr "Ejecutando en modo seguro! La auto-recarga esta deshabilitada.\n"
|
||||
|
||||
#: main.c:172 main.c:243
|
||||
#: main.c:168 main.c:239
|
||||
msgid "Auto-reload is off.\n"
|
||||
msgstr "Auto-recarga deshabilitada.\n"
|
||||
|
||||
#: main.c:186
|
||||
#: main.c:182
|
||||
msgid "Running in safe mode! Not running saved code.\n"
|
||||
msgstr "Ejecutando en modo seguro! No se esta ejecutando el código guardado.\n"
|
||||
|
||||
#: main.c:202
|
||||
#: main.c:198
|
||||
msgid "WARNING: Your code filename has two extensions\n"
|
||||
msgstr "ADVERTENCIA: El nombre de archivo de tu código tiene dos extensiones\n"
|
||||
|
||||
#: main.c:250
|
||||
msgid "You requested starting safe mode by "
|
||||
msgstr "Solicitaste iniciar en modo seguro por "
|
||||
|
||||
#: main.c:253
|
||||
msgid "To exit, please reset the board without "
|
||||
msgstr "Para salir, por favor reinicia la tarjeta sin "
|
||||
|
||||
#: main.c:260
|
||||
msgid ""
|
||||
"You are running in safe mode which means something really bad happened.\n"
|
||||
msgstr ""
|
||||
"Estás ejecutando en modo seguro, lo cual significa que algo realmente malo "
|
||||
"ha sucedido.\n"
|
||||
|
||||
#: main.c:262
|
||||
msgid "Looks like our core CircuitPython code crashed hard. Whoops!\n"
|
||||
msgstr "Parece que nuestro código CircuitPython dejó de funcionar. Whoops!\n"
|
||||
|
||||
#: main.c:263
|
||||
#, fuzzy
|
||||
msgid "Please file an issue here with the contents of your CIRCUITPY drive:\n"
|
||||
msgstr ""
|
||||
"Por favor registra un issue en la siguiente URL con el contenidos de tu "
|
||||
"unidad de almacenamiento CIRCUITPY:\n"
|
||||
|
||||
#: main.c:266
|
||||
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:267
|
||||
msgid ""
|
||||
"enough power for the whole circuit and press reset (after ejecting "
|
||||
"CIRCUITPY).\n"
|
||||
msgstr ""
|
||||
"suficiente poder para todo el circuito y presiona reset (después de expulsar "
|
||||
"CIRCUITPY).\n"
|
||||
|
||||
#: main.c:271
|
||||
#: main.c:244
|
||||
msgid "Press any key to enter the REPL. Use CTRL-D to reload."
|
||||
msgstr ""
|
||||
"Presiona cualquier tecla para entrar al REPL. Usa CTRL-D para recargar."
|
||||
|
||||
#: main.c:429
|
||||
#: main.c:407
|
||||
msgid "soft reboot\n"
|
||||
msgstr "reinicio suave\n"
|
||||
|
||||
#: ports/atmel-samd/audio_dma.c:209
|
||||
#: ports/atmel-samd/common-hal/audiobusio/PDMIn.c:361
|
||||
msgid "All sync event channels in use"
|
||||
msgstr "Todos los canales de eventos de sincronización(sync event channels)"
|
||||
" están siendo utilizados"
|
||||
msgstr ""
|
||||
"Todos los canales de eventos de sincronización(sync event channels) están "
|
||||
"siendo utilizados"
|
||||
|
||||
#: ports/atmel-samd/bindings/samd/Clock.c:135
|
||||
msgid "calibration is read only"
|
||||
@ -374,7 +333,7 @@ msgstr "No hay suficientes pines disponibles"
|
||||
|
||||
#: ports/atmel-samd/common-hal/busio/I2C.c:78
|
||||
#: ports/atmel-samd/common-hal/busio/SPI.c:171
|
||||
#: ports/atmel-samd/common-hal/busio/UART.c:119
|
||||
#: ports/atmel-samd/common-hal/busio/UART.c:120
|
||||
#: ports/atmel-samd/common-hal/i2cslave/I2CSlave.c:45
|
||||
#: ports/nrf/common-hal/busio/I2C.c:82
|
||||
msgid "Invalid pins"
|
||||
@ -388,31 +347,31 @@ msgstr "SDA o SCL necesitan una pull up"
|
||||
msgid "Unsupported baudrate"
|
||||
msgstr "Baudrate no soportado"
|
||||
|
||||
#: ports/atmel-samd/common-hal/busio/UART.c:66
|
||||
#: ports/atmel-samd/common-hal/busio/UART.c:67
|
||||
msgid "bytes > 8 bits not supported"
|
||||
msgstr "bytes > 8 bits no soportados"
|
||||
|
||||
#: ports/atmel-samd/common-hal/busio/UART.c:72
|
||||
#: ports/nrf/common-hal/busio/UART.c:82
|
||||
#: ports/atmel-samd/common-hal/busio/UART.c:73
|
||||
#: ports/nrf/common-hal/busio/UART.c:83
|
||||
msgid "tx and rx cannot both be 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
|
||||
#: ports/atmel-samd/common-hal/busio/UART.c:146
|
||||
#: ports/nrf/common-hal/busio/UART.c:116
|
||||
msgid "Failed to allocate RX buffer"
|
||||
msgstr "Ha fallado la asignación del buffer RX"
|
||||
|
||||
#: ports/atmel-samd/common-hal/busio/UART.c:153
|
||||
#: ports/atmel-samd/common-hal/busio/UART.c:154
|
||||
msgid "Could not initialize 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
|
||||
#: ports/atmel-samd/common-hal/busio/UART.c:241
|
||||
#: ports/nrf/common-hal/busio/UART.c:157
|
||||
msgid "No RX pin"
|
||||
msgstr "Sin pin RX"
|
||||
|
||||
#: ports/atmel-samd/common-hal/busio/UART.c:294
|
||||
#: ports/nrf/common-hal/busio/UART.c:195
|
||||
#: ports/atmel-samd/common-hal/busio/UART.c:300
|
||||
#: ports/nrf/common-hal/busio/UART.c:207
|
||||
msgid "No TX pin"
|
||||
msgstr "Sin pin TX"
|
||||
|
||||
@ -457,7 +416,7 @@ msgid "pop from an empty PulseIn"
|
||||
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
|
||||
#: ports/esp8266/common-hal/pulseio/PulseIn.c:182 py/obj.c:422
|
||||
msgid "index out of range"
|
||||
msgstr "index fuera de rango"
|
||||
|
||||
@ -823,24 +782,24 @@ msgstr "Todos los timers están siendo usados"
|
||||
msgid "All SPI peripherals are in use"
|
||||
msgstr "Todos los timers están siendo usados"
|
||||
|
||||
#: ports/nrf/common-hal/busio/UART.c:48
|
||||
#: ports/nrf/common-hal/busio/UART.c:49
|
||||
#, c-format
|
||||
msgid "error = 0x%08lX"
|
||||
msgstr "error = 0x%08lx"
|
||||
|
||||
#: ports/nrf/common-hal/busio/UART.c:86
|
||||
#: ports/nrf/common-hal/busio/UART.c:87
|
||||
msgid "Invalid buffer size"
|
||||
msgstr "Tamaño de buffer inválido"
|
||||
|
||||
#: ports/nrf/common-hal/busio/UART.c:90
|
||||
#: ports/nrf/common-hal/busio/UART.c:91
|
||||
msgid "Odd parity is not supported"
|
||||
msgstr "Paridad impar no soportada"
|
||||
|
||||
#: ports/nrf/common-hal/busio/UART.c:322 ports/nrf/common-hal/busio/UART.c:326
|
||||
#: ports/nrf/common-hal/busio/UART.c:331 ports/nrf/common-hal/busio/UART.c:336
|
||||
#: ports/nrf/common-hal/busio/UART.c:342 ports/nrf/common-hal/busio/UART.c:347
|
||||
#: ports/nrf/common-hal/busio/UART.c:352 ports/nrf/common-hal/busio/UART.c:356
|
||||
#: ports/nrf/common-hal/busio/UART.c:364
|
||||
#: ports/nrf/common-hal/busio/UART.c:334 ports/nrf/common-hal/busio/UART.c:338
|
||||
#: ports/nrf/common-hal/busio/UART.c:343 ports/nrf/common-hal/busio/UART.c:348
|
||||
#: ports/nrf/common-hal/busio/UART.c:354 ports/nrf/common-hal/busio/UART.c:359
|
||||
#: ports/nrf/common-hal/busio/UART.c:364 ports/nrf/common-hal/busio/UART.c:368
|
||||
#: ports/nrf/common-hal/busio/UART.c:376
|
||||
msgid "busio.UART not available"
|
||||
msgstr "busio.UART no disponible"
|
||||
|
||||
@ -911,8 +870,9 @@ msgstr "argumento número/tipos no coinciden"
|
||||
|
||||
#: py/argcheck.c:147
|
||||
msgid "keyword argument(s) not yet implemented - use normal args instead"
|
||||
msgstr "argumento(s) por palabra clave aún no implementados - usa argumentos"
|
||||
" normales en su lugar"
|
||||
msgstr ""
|
||||
"argumento(s) por palabra clave aún no implementados - usa argumentos "
|
||||
"normales en su lugar"
|
||||
|
||||
#: py/bc.c:88 py/objnamedtuple.c:108
|
||||
msgid "%q() takes %d positional arguments but %d were given"
|
||||
@ -971,7 +931,8 @@ msgid ""
|
||||
msgstr ""
|
||||
"Bienvenido a Adafruit CircuitPython %s!\n"
|
||||
"\n"
|
||||
"Visita learn.adafruit.com/category/circuitpython para obtener guías de proyectos.\n"
|
||||
"Visita learn.adafruit.com/category/circuitpython para obtener guías de "
|
||||
"proyectos.\n"
|
||||
"\n"
|
||||
"Para listar los módulos incorporados por favor haga `help(\"modules\")`.\n"
|
||||
|
||||
@ -1069,8 +1030,9 @@ msgstr "no deberia estar/tener agumento por palabra clave despues de */**"
|
||||
|
||||
#: py/compile.c:2291
|
||||
msgid "non-keyword arg after keyword arg"
|
||||
msgstr "no deberia estar/tener agumento por palabra clave despues de argumento "
|
||||
"por palabra clave"
|
||||
msgstr ""
|
||||
"no deberia estar/tener agumento por palabra clave despues de argumento por "
|
||||
"palabra clave"
|
||||
|
||||
#: py/compile.c:2463 py/compile.c:2473 py/compile.c:2712 py/compile.c:2742
|
||||
#: py/parse.c:1176
|
||||
@ -1350,140 +1312,140 @@ msgstr "buffer demasiado pequeño"
|
||||
msgid "expecting a dict for keyword args"
|
||||
msgstr "esperando un diccionario para argumentos por palabra clave"
|
||||
|
||||
#: py/moduerrno.c:143 py/moduerrno.c:146
|
||||
#: py/moduerrno.c:147 py/moduerrno.c:150
|
||||
msgid "Permission denied"
|
||||
msgstr "Permiso denegado"
|
||||
|
||||
#: py/moduerrno.c:144
|
||||
#: py/moduerrno.c:148
|
||||
msgid "No such file/directory"
|
||||
msgstr "No existe el archivo/directorio"
|
||||
|
||||
#: py/moduerrno.c:145
|
||||
#: py/moduerrno.c:149
|
||||
msgid "Input/output error"
|
||||
msgstr "error Input/output"
|
||||
|
||||
#: py/moduerrno.c:147
|
||||
#: py/moduerrno.c:151
|
||||
msgid "File exists"
|
||||
msgstr "El archivo ya existe"
|
||||
|
||||
#: py/moduerrno.c:148
|
||||
#: py/moduerrno.c:152
|
||||
msgid "Unsupported operation"
|
||||
msgstr "Operación no soportada"
|
||||
|
||||
#: py/moduerrno.c:149
|
||||
#: py/moduerrno.c:153
|
||||
msgid "Invalid argument"
|
||||
msgstr "Argumento inválido"
|
||||
|
||||
#: py/obj.c:90
|
||||
#: py/obj.c:92
|
||||
msgid "Traceback (most recent call last):\n"
|
||||
msgstr ""
|
||||
|
||||
#: py/obj.c:94
|
||||
#: py/obj.c:96
|
||||
msgid " File \"%q\", line %d"
|
||||
msgstr " Archivo \"%q\", línea %d"
|
||||
|
||||
#: py/obj.c:96
|
||||
#: py/obj.c:98
|
||||
msgid " File \"%q\""
|
||||
msgstr " Archivo \"%q\""
|
||||
|
||||
#: py/obj.c:100
|
||||
#: py/obj.c:102
|
||||
msgid ", in %q\n"
|
||||
msgstr ", en %q\n"
|
||||
|
||||
#: py/obj.c:257
|
||||
#: py/obj.c:259
|
||||
msgid "can't convert to int"
|
||||
msgstr "no se puede convertir a int"
|
||||
|
||||
#: py/obj.c:260
|
||||
#: py/obj.c:262
|
||||
#, c-format
|
||||
msgid "can't convert %s to int"
|
||||
msgstr "no se puede convertir %s a int"
|
||||
|
||||
#: py/obj.c:320
|
||||
#: py/obj.c:322
|
||||
msgid "can't convert to float"
|
||||
msgstr "no se puede convertir a float"
|
||||
|
||||
#: py/obj.c:323
|
||||
#: py/obj.c:325
|
||||
#, c-format
|
||||
msgid "can't convert %s to float"
|
||||
msgstr "no se puede convertir %s a float"
|
||||
|
||||
#: py/obj.c:353
|
||||
#: py/obj.c:355
|
||||
msgid "can't convert to complex"
|
||||
msgstr "no se puede convertir a complejo"
|
||||
|
||||
#: py/obj.c:356
|
||||
#: py/obj.c:358
|
||||
#, c-format
|
||||
msgid "can't convert %s to complex"
|
||||
msgstr "no se puede convertir %s a complejo"
|
||||
|
||||
#: py/obj.c:371
|
||||
#: py/obj.c:373
|
||||
msgid "expected tuple/list"
|
||||
msgstr "tupla/lista esperada"
|
||||
|
||||
#: py/obj.c:374
|
||||
#: py/obj.c:376
|
||||
#, c-format
|
||||
msgid "object '%s' is not a tuple or list"
|
||||
msgstr "el objeto '%s' no es una tupla o lista"
|
||||
|
||||
#: py/obj.c:385
|
||||
#: py/obj.c:387
|
||||
msgid "tuple/list has wrong length"
|
||||
msgstr "tupla/lista tiene una longitud incorrecta"
|
||||
|
||||
#: py/obj.c:387
|
||||
#: py/obj.c:389
|
||||
#, c-format
|
||||
msgid "requested length %d but object has length %d"
|
||||
msgstr "longitud solicitada %d pero el objeto tiene longitud %d"
|
||||
|
||||
#: py/obj.c:400
|
||||
#: py/obj.c:402
|
||||
msgid "indices must be integers"
|
||||
msgstr "indices deben ser enteros"
|
||||
|
||||
#: py/obj.c:403
|
||||
#: py/obj.c:405
|
||||
msgid "%q indices must be integers, not %s"
|
||||
msgstr "%q indices deben ser enteros, no %s"
|
||||
|
||||
#: py/obj.c:423
|
||||
#: py/obj.c:425
|
||||
msgid "%q index out of range"
|
||||
msgstr "%w indice fuera de rango"
|
||||
|
||||
#: py/obj.c:455
|
||||
#: py/obj.c:457
|
||||
msgid "object has no len"
|
||||
msgstr "el objeto no tiene longitud"
|
||||
|
||||
#: py/obj.c:458
|
||||
#: py/obj.c:460
|
||||
#, c-format
|
||||
msgid "object of type '%s' has no len()"
|
||||
msgstr "el objeto de tipo '%s' no tiene len()"
|
||||
|
||||
#: py/obj.c:496
|
||||
#: py/obj.c:500
|
||||
msgid "object does not support item deletion"
|
||||
msgstr "object no soporta la eliminación de elementos"
|
||||
|
||||
#: py/obj.c:499
|
||||
#: py/obj.c:503
|
||||
#, c-format
|
||||
msgid "'%s' object does not support item deletion"
|
||||
msgstr "objeto '%s' no soporta la eliminación de elementos"
|
||||
|
||||
#: py/obj.c:503
|
||||
#: py/obj.c:507
|
||||
msgid "object is not subscriptable"
|
||||
msgstr ""
|
||||
|
||||
#: py/obj.c:506
|
||||
#: py/obj.c:510
|
||||
#, c-format
|
||||
msgid "'%s' object is not subscriptable"
|
||||
msgstr ""
|
||||
|
||||
#: py/obj.c:510
|
||||
#: py/obj.c:514
|
||||
msgid "object does not support item assignment"
|
||||
msgstr "el objeto no soporta la asignación de elementos"
|
||||
|
||||
#: py/obj.c:513
|
||||
#: py/obj.c:517
|
||||
#, c-format
|
||||
msgid "'%s' object does not support item assignment"
|
||||
msgstr "el objeto '%s' no soporta la asignación de elementos"
|
||||
|
||||
#: py/obj.c:544
|
||||
#: py/obj.c:548
|
||||
msgid "object with buffer protocol required"
|
||||
msgstr "objeto con protocolo de buffer requerido"
|
||||
|
||||
@ -1534,8 +1496,8 @@ msgstr "valores complejos no soportados"
|
||||
|
||||
#: py/objgenerator.c:108
|
||||
msgid "can't send non-None value to a just-started generator"
|
||||
msgstr "no se puede enviar un valor que no sea None a un generador recién "
|
||||
"iniciado"
|
||||
msgstr ""
|
||||
"no se puede enviar un valor que no sea None a un generador recién iniciado"
|
||||
|
||||
#: py/objgenerator.c:126
|
||||
msgid "generator already executing"
|
||||
@ -1639,8 +1601,8 @@ msgstr "numero erroneo de argumentos"
|
||||
|
||||
#: py/objstr.c:467
|
||||
msgid "join expects a list of str/bytes objects consistent with self object"
|
||||
msgstr "join espera una lista de objetos str/bytes consistentes con el mismo"
|
||||
" objeto"
|
||||
msgstr ""
|
||||
"join espera una lista de objetos str/bytes consistentes con el mismo objeto"
|
||||
|
||||
#: py/objstr.c:542 py/objstr.c:647 py/objstr.c:1744
|
||||
msgid "empty separator"
|
||||
@ -1691,8 +1653,8 @@ msgstr "se espera ':' despues de un especificaro de tipo format"
|
||||
msgid ""
|
||||
"can't switch from automatic field numbering to manual field specification"
|
||||
msgstr ""
|
||||
"no se puede cambiar de la numeración automática de campos a la especificación"
|
||||
" de campo manual"
|
||||
"no se puede cambiar de la numeración automática de campos a la "
|
||||
"especificación de campo manual"
|
||||
|
||||
#: py/objstr.c:1055 py/objstr.c:1083
|
||||
msgid "tuple index out of range"
|
||||
@ -1897,8 +1859,8 @@ msgid ""
|
||||
"Incompatible .mpy file. Please update all .mpy files. See http://adafru.it/"
|
||||
"mpy-update for more info."
|
||||
msgstr ""
|
||||
"Archivo .mpy incompatible. Actualice todos los archivos .mpy. "
|
||||
"Consulte http://adafru.it/mpy-update para más información"
|
||||
"Archivo .mpy incompatible. Actualice todos los archivos .mpy. Consulte "
|
||||
"http://adafru.it/mpy-update para más información"
|
||||
|
||||
#: py/persistentcode.c:326
|
||||
msgid "can only save bytecode"
|
||||
@ -2005,6 +1967,14 @@ msgstr "objeto no en secuencia"
|
||||
msgid "stream operation not supported"
|
||||
msgstr "operación stream no soportada"
|
||||
|
||||
#: py/stream.c:254
|
||||
msgid "string not supported; use bytes or bytearray"
|
||||
msgstr ""
|
||||
|
||||
#: py/stream.c:289
|
||||
msgid "length argument not allowed for this type"
|
||||
msgstr ""
|
||||
|
||||
#: py/vm.c:255
|
||||
msgid "local variable referenced before assignment"
|
||||
msgstr "variable local referenciada antes de la asignación"
|
||||
@ -2167,14 +2137,18 @@ msgstr ""
|
||||
msgid "Function requires lock."
|
||||
msgstr "La función requiere lock"
|
||||
|
||||
#: shared-bindings/busio/UART.c:102
|
||||
#: shared-bindings/busio/UART.c:106
|
||||
msgid "bits must be 7, 8 or 9"
|
||||
msgstr "bits deben ser 7, 8 o 9"
|
||||
|
||||
#: shared-bindings/busio/UART.c:114
|
||||
#: shared-bindings/busio/UART.c:118
|
||||
msgid "stop must be 1 or 2"
|
||||
msgstr "stop debe ser 1 o 2"
|
||||
|
||||
#: shared-bindings/busio/UART.c:123
|
||||
msgid "timeout >100 (units are now seconds, not msecs)"
|
||||
msgstr ""
|
||||
|
||||
#: shared-bindings/digitalio/DigitalInOut.c:211
|
||||
msgid "Invalid direction."
|
||||
msgstr "Dirección inválida."
|
||||
@ -2396,15 +2370,15 @@ msgstr "time.struct_time() acepta exactamente 1 argumento"
|
||||
msgid "time.struct_time() takes a 9-sequence"
|
||||
msgstr ""
|
||||
|
||||
#: shared-bindings/time/__init__.c:169 shared-bindings/time/__init__.c:264
|
||||
#: shared-bindings/time/__init__.c:169 shared-bindings/time/__init__.c:263
|
||||
msgid "Tuple or struct_time argument required"
|
||||
msgstr "Argumento tuple o struct_time requerido"
|
||||
|
||||
#: shared-bindings/time/__init__.c:174 shared-bindings/time/__init__.c:269
|
||||
#: shared-bindings/time/__init__.c:174 shared-bindings/time/__init__.c:268
|
||||
msgid "function takes exactly 9 arguments"
|
||||
msgstr "la función toma exactamente 9 argumentos."
|
||||
|
||||
#: shared-bindings/time/__init__.c:240 shared-bindings/time/__init__.c:273
|
||||
#: shared-bindings/time/__init__.c:239 shared-bindings/time/__init__.c:272
|
||||
msgid "timestamp out of range for platform time_t"
|
||||
msgstr ""
|
||||
|
||||
@ -2416,8 +2390,8 @@ msgstr ""
|
||||
msgid ""
|
||||
"Object has been deinitialized and can no longer be used. Create a new object."
|
||||
msgstr ""
|
||||
"El objeto se ha desinicializado y ya no se puede utilizar. "
|
||||
"Crea un nuevo objeto"
|
||||
"El objeto se ha desinicializado y ya no se puede utilizar. Crea un nuevo "
|
||||
"objeto"
|
||||
|
||||
#: shared-module/audioio/Mixer.c:47 shared-module/audioio/WaveFile.c:117
|
||||
msgid "Couldn't allocate first buffer"
|
||||
@ -2550,9 +2524,100 @@ msgstr "USB ocupado"
|
||||
msgid "USB Error"
|
||||
msgstr "Error USB"
|
||||
|
||||
#: supervisor/shared/safe_mode.c:97
|
||||
msgid "You requested starting safe mode by "
|
||||
msgstr "Solicitaste iniciar en modo seguro por "
|
||||
|
||||
#: supervisor/shared/safe_mode.c:100
|
||||
msgid "To exit, please reset the board without "
|
||||
msgstr "Para salir, por favor reinicia la tarjeta sin "
|
||||
|
||||
#: supervisor/shared/safe_mode.c:107
|
||||
#, fuzzy
|
||||
msgid ""
|
||||
"You are running in safe mode which means something unanticipated happened.\n"
|
||||
msgstr ""
|
||||
"Estás ejecutando en modo seguro, lo cual significa que algo realmente malo "
|
||||
"ha sucedido.\n"
|
||||
|
||||
#: supervisor/shared/safe_mode.c:109
|
||||
msgid ""
|
||||
"Looks like our core CircuitPython code crashed hard. Whoops!\n"
|
||||
"Please file an issue at https://github.com/adafruit/circuitpython/issues\n"
|
||||
" with the contents of your CIRCUITPY drive and this message:\n"
|
||||
msgstr ""
|
||||
|
||||
#: supervisor/shared/safe_mode.c:111
|
||||
msgid "Crash into the HardFault_Handler.\n"
|
||||
msgstr ""
|
||||
|
||||
#: supervisor/shared/safe_mode.c:113
|
||||
msgid "MicroPython NLR jump failed. Likely memory corruption.\n"
|
||||
msgstr ""
|
||||
|
||||
#: supervisor/shared/safe_mode.c:115
|
||||
msgid "MicroPython fatal error.\n"
|
||||
msgstr ""
|
||||
|
||||
#: supervisor/shared/safe_mode.c:118
|
||||
#, fuzzy
|
||||
msgid ""
|
||||
"The microcontroller's power dipped. Please make sure your power supply "
|
||||
"provides\n"
|
||||
"enough power for the whole circuit and press reset (after ejecting "
|
||||
"CIRCUITPY).\n"
|
||||
msgstr ""
|
||||
"La alimentación del microcontrolador cayó. Por favor asegurate de que tu "
|
||||
"fuente de alimentación provee\n"
|
||||
|
||||
#: supervisor/shared/safe_mode.c:120
|
||||
msgid ""
|
||||
"The CircuitPython heap was corrupted because the stack was too small.\n"
|
||||
"Please increase stack size limits and press reset (after ejecting "
|
||||
"CIRCUITPY).\n"
|
||||
"If you didn't change the stack, then file an issue here with the contents of "
|
||||
"your CIRCUITPY drive:\n"
|
||||
msgstr ""
|
||||
|
||||
#: supervisor/shared/safe_mode.c:123
|
||||
msgid ""
|
||||
"The reset button was pressed while booting CircuitPython. Press again to "
|
||||
"exit safe mode.\n"
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy
|
||||
#~ msgid ""
|
||||
#~ "Please file an issue here with the contents of your CIRCUITPY drive:\n"
|
||||
#~ msgstr ""
|
||||
#~ "Por favor registra un issue en la siguiente URL con el contenidos de tu "
|
||||
#~ "unidad de almacenamiento CIRCUITPY:\n"
|
||||
|
||||
#~ msgid "Looks like our core CircuitPython code crashed hard. Whoops!\n"
|
||||
#~ msgstr ""
|
||||
#~ "Parece que nuestro código CircuitPython dejó de funcionar. Whoops!\n"
|
||||
|
||||
#~ msgid ""
|
||||
#~ "enough power for the whole circuit and press reset (after ejecting "
|
||||
#~ "CIRCUITPY).\n"
|
||||
#~ msgstr ""
|
||||
#~ "suficiente poder para todo el circuito y presiona reset (después de "
|
||||
#~ "expulsar CIRCUITPY).\n"
|
||||
|
||||
#~ msgid "Cannot set PPCP parameters."
|
||||
#~ msgstr "No se pueden establecer los parámetros PPCP."
|
||||
|
||||
#~ msgid "Can not apply advertisement data. status: 0x%02x"
|
||||
#~ msgstr "No se puede aplicar los datos de anuncio. status: 0x%02x"
|
||||
|
||||
#~ msgid "Baud rate too high for this SPI peripheral"
|
||||
#~ msgstr "Baud rate demasiado alto para este periférico SPI"
|
||||
|
||||
#~ msgid "Can not query for the device address."
|
||||
#~ msgstr "No se puede consultar la dirección del dispositivo."
|
||||
|
||||
#~ msgid "Can not add Service."
|
||||
#~ msgstr "No se puede agregar el Servicio."
|
||||
|
||||
#~ msgid "Invalid Service type"
|
||||
#~ msgstr "Tipo de Servicio inválido"
|
||||
|
||||
@ -2562,12 +2627,6 @@ msgstr "Error USB"
|
||||
#~ msgid "Can not encode UUID, to check length."
|
||||
#~ msgstr "No se puede codificar el UUID, para revisar la longitud."
|
||||
|
||||
#~ msgid "Can not query for the device address."
|
||||
#~ msgstr "No se puede consultar la dirección del dispositivo."
|
||||
|
||||
#~ msgid "Can not apply advertisement data. status: 0x%02x"
|
||||
#~ msgstr "No se puede aplicar los datos de anuncio. status: 0x%02x"
|
||||
|
||||
#~ msgid "Can not apply device name in the stack."
|
||||
#~ msgstr "No se puede aplicar el nombre del dispositivo en el stack."
|
||||
|
||||
@ -2576,9 +2635,3 @@ msgstr "Error USB"
|
||||
|
||||
#~ msgid "Cannot apply GAP parameters."
|
||||
#~ msgstr "No se pueden aplicar los parámetros GAP."
|
||||
|
||||
#~ msgid "Cannot set PPCP parameters."
|
||||
#~ msgstr "No se pueden establecer los parámetros PPCP."
|
||||
|
||||
#~ msgid "Can not add Service."
|
||||
#~ msgstr "No se puede agregar el Servicio."
|
||||
|
289
locale/fil.po
289
locale/fil.po
@ -7,7 +7,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: \n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2018-11-09 16:20-0800\n"
|
||||
"POT-Creation-Date: 2018-12-06 17:04-0800\n"
|
||||
"PO-Revision-Date: 2018-08-30 23:04-0700\n"
|
||||
"Last-Translator: Timothy <me@timothygarcia.ca>\n"
|
||||
"Language-Team: fil\n"
|
||||
@ -131,7 +131,7 @@ msgstr "compression header"
|
||||
msgid "invalid dupterm index"
|
||||
msgstr "mali ang dupterm index"
|
||||
|
||||
#: extmod/vfs_fat.c:426 py/moduerrno.c:150
|
||||
#: extmod/vfs_fat.c:426 py/moduerrno.c:154
|
||||
msgid "Read-only filesystem"
|
||||
msgstr "Basahin-lamang mode"
|
||||
|
||||
@ -151,11 +151,11 @@ msgstr "mali ang mga argumento"
|
||||
msgid "script compilation not supported"
|
||||
msgstr "script kompilasyon hindi supportado"
|
||||
|
||||
#: main.c:154
|
||||
#: main.c:150
|
||||
msgid " output:\n"
|
||||
msgstr " output:\n"
|
||||
|
||||
#: main.c:168 main.c:241
|
||||
#: main.c:164 main.c:237
|
||||
msgid ""
|
||||
"Auto-reload is on. Simply save files over USB to run them or enter REPL to "
|
||||
"disable.\n"
|
||||
@ -163,70 +163,29 @@ msgstr ""
|
||||
"Ang awtomatikong pag re-reload ay ON. i-save lamang ang mga files sa USB "
|
||||
"para patakbuhin sila o pasukin ang REPL para i-disable ito.\n"
|
||||
|
||||
#: main.c:170
|
||||
#: main.c:166
|
||||
msgid "Running in safe mode! Auto-reload is off.\n"
|
||||
msgstr "Tumatakbo sa safe mode! Awtomatikong pag re-reload ay OFF.\n"
|
||||
|
||||
#: main.c:172 main.c:243
|
||||
#: main.c:168 main.c:239
|
||||
msgid "Auto-reload is off.\n"
|
||||
msgstr "Awtomatikong pag re-reload ay OFF.\n"
|
||||
|
||||
#: main.c:186
|
||||
#: main.c:182
|
||||
msgid "Running in safe mode! Not running saved code.\n"
|
||||
msgstr "Tumatakbo sa safe mode! Hindi tumatakbo ang nai-save na code.\n"
|
||||
|
||||
#: main.c:202
|
||||
#: main.c:198
|
||||
msgid "WARNING: Your code filename has two extensions\n"
|
||||
msgstr "BABALA: Ang pangalan ng file ay may dalawang extension\n"
|
||||
|
||||
#: main.c:250
|
||||
msgid "You requested starting safe mode by "
|
||||
msgstr "Ikaw ang humiling sa safe mode sa pamamagitan ng "
|
||||
|
||||
#: main.c:253
|
||||
msgid "To exit, please reset the board without "
|
||||
msgstr "Para lumabas, paki-reset ang board na wala ang "
|
||||
|
||||
#: main.c:260
|
||||
msgid ""
|
||||
"You are running in safe mode which means something really bad happened.\n"
|
||||
msgstr ""
|
||||
"Ikaw ay tumatakbo sa safe mode, ang ibig sabihin nito ay may masamang "
|
||||
"nangyari.\n"
|
||||
|
||||
#: main.c:262
|
||||
msgid "Looks like our core CircuitPython code crashed hard. Whoops!\n"
|
||||
msgstr "Mukhang ang core CircuitPython code ay nag-crash ng malakas. Aray!\n"
|
||||
|
||||
#: main.c:263
|
||||
msgid "Please file an issue here with the contents of your CIRCUITPY drive:\n"
|
||||
msgstr ""
|
||||
"Mag-file ng isang isyu dito gamit ang mga nilalaman ng iyong CIRCUITPY "
|
||||
"drive:\n"
|
||||
|
||||
#: main.c:266
|
||||
msgid ""
|
||||
"The microcontroller's power dipped. Please make sure your power supply "
|
||||
"provides\n"
|
||||
msgstr ""
|
||||
"Ang kapangyarihan ng mikrokontroller ay bumaba. Mangyaring suriin ang power "
|
||||
"supply \n"
|
||||
|
||||
#: main.c:267
|
||||
msgid ""
|
||||
"enough power for the whole circuit and press reset (after ejecting "
|
||||
"CIRCUITPY).\n"
|
||||
msgstr ""
|
||||
"ay nagbibigay ng sapat na power para sa buong circuit at i-press ang reset "
|
||||
"(pagkatapos i-eject ang CIRCUITPY).\n"
|
||||
|
||||
#: main.c:271
|
||||
#: main.c:244
|
||||
msgid "Press any key to enter the REPL. Use CTRL-D to reload."
|
||||
msgstr ""
|
||||
"Pindutin ang anumang key upang ipasok ang REPL. Gamitin ang CTRL-D upang i-"
|
||||
"reload."
|
||||
|
||||
#: main.c:429
|
||||
#: main.c:407
|
||||
msgid "soft reboot\n"
|
||||
msgstr "malambot na reboot\n"
|
||||
|
||||
@ -372,7 +331,7 @@ msgstr "Hindi sapat ang magagamit na pins"
|
||||
|
||||
#: ports/atmel-samd/common-hal/busio/I2C.c:78
|
||||
#: ports/atmel-samd/common-hal/busio/SPI.c:171
|
||||
#: ports/atmel-samd/common-hal/busio/UART.c:119
|
||||
#: ports/atmel-samd/common-hal/busio/UART.c:120
|
||||
#: ports/atmel-samd/common-hal/i2cslave/I2CSlave.c:45
|
||||
#: ports/nrf/common-hal/busio/I2C.c:82
|
||||
msgid "Invalid pins"
|
||||
@ -386,31 +345,31 @@ msgstr "Kailangan ng pull up resistors ang SDA o SCL"
|
||||
msgid "Unsupported baudrate"
|
||||
msgstr "Hindi supportadong baudrate"
|
||||
|
||||
#: ports/atmel-samd/common-hal/busio/UART.c:66
|
||||
#: ports/atmel-samd/common-hal/busio/UART.c:67
|
||||
msgid "bytes > 8 bits not supported"
|
||||
msgstr "hindi sinusuportahan ang bytes > 8 bits"
|
||||
|
||||
#: ports/atmel-samd/common-hal/busio/UART.c:72
|
||||
#: ports/nrf/common-hal/busio/UART.c:82
|
||||
#: ports/atmel-samd/common-hal/busio/UART.c:73
|
||||
#: ports/nrf/common-hal/busio/UART.c:83
|
||||
msgid "tx and rx cannot both be None"
|
||||
msgstr "tx at rx hindi pwedeng parehas na None"
|
||||
|
||||
#: ports/atmel-samd/common-hal/busio/UART.c:145
|
||||
#: ports/nrf/common-hal/busio/UART.c:115
|
||||
#: ports/atmel-samd/common-hal/busio/UART.c:146
|
||||
#: ports/nrf/common-hal/busio/UART.c:116
|
||||
msgid "Failed to allocate RX buffer"
|
||||
msgstr "Nabigong ilaan ang RX buffer"
|
||||
|
||||
#: ports/atmel-samd/common-hal/busio/UART.c:153
|
||||
#: ports/atmel-samd/common-hal/busio/UART.c:154
|
||||
msgid "Could not initialize UART"
|
||||
msgstr "Hindi ma-initialize ang UART"
|
||||
|
||||
#: ports/atmel-samd/common-hal/busio/UART.c:240
|
||||
#: ports/nrf/common-hal/busio/UART.c:149
|
||||
#: ports/atmel-samd/common-hal/busio/UART.c:241
|
||||
#: ports/nrf/common-hal/busio/UART.c:157
|
||||
msgid "No RX pin"
|
||||
msgstr "Walang RX pin"
|
||||
|
||||
#: ports/atmel-samd/common-hal/busio/UART.c:294
|
||||
#: ports/nrf/common-hal/busio/UART.c:195
|
||||
#: ports/atmel-samd/common-hal/busio/UART.c:300
|
||||
#: ports/nrf/common-hal/busio/UART.c:207
|
||||
msgid "No TX pin"
|
||||
msgstr "Walang TX pin"
|
||||
|
||||
@ -455,7 +414,7 @@ msgid "pop from an empty PulseIn"
|
||||
msgstr "pop mula sa walang laman na PulseIn"
|
||||
|
||||
#: ports/atmel-samd/common-hal/pulseio/PulseIn.c:237
|
||||
#: ports/esp8266/common-hal/pulseio/PulseIn.c:182 py/obj.c:420
|
||||
#: ports/esp8266/common-hal/pulseio/PulseIn.c:182 py/obj.c:422
|
||||
msgid "index out of range"
|
||||
msgstr "index wala sa sakop"
|
||||
|
||||
@ -825,26 +784,26 @@ msgstr "Lahat ng timer ginagamit"
|
||||
msgid "All SPI peripherals are in use"
|
||||
msgstr "Lahat ng timer ginagamit"
|
||||
|
||||
#: ports/nrf/common-hal/busio/UART.c:48
|
||||
#: ports/nrf/common-hal/busio/UART.c:49
|
||||
#, c-format
|
||||
msgid "error = 0x%08lX"
|
||||
msgstr ""
|
||||
|
||||
#: ports/nrf/common-hal/busio/UART.c:86
|
||||
#: ports/nrf/common-hal/busio/UART.c:87
|
||||
#, fuzzy
|
||||
msgid "Invalid buffer size"
|
||||
msgstr "mali ang buffer length"
|
||||
|
||||
#: ports/nrf/common-hal/busio/UART.c:90
|
||||
#: ports/nrf/common-hal/busio/UART.c:91
|
||||
#, fuzzy
|
||||
msgid "Odd parity is not supported"
|
||||
msgstr "hindi sinusuportahan ang bytes > 8 bits"
|
||||
|
||||
#: ports/nrf/common-hal/busio/UART.c:322 ports/nrf/common-hal/busio/UART.c:326
|
||||
#: ports/nrf/common-hal/busio/UART.c:331 ports/nrf/common-hal/busio/UART.c:336
|
||||
#: ports/nrf/common-hal/busio/UART.c:342 ports/nrf/common-hal/busio/UART.c:347
|
||||
#: ports/nrf/common-hal/busio/UART.c:352 ports/nrf/common-hal/busio/UART.c:356
|
||||
#: ports/nrf/common-hal/busio/UART.c:364
|
||||
#: ports/nrf/common-hal/busio/UART.c:334 ports/nrf/common-hal/busio/UART.c:338
|
||||
#: ports/nrf/common-hal/busio/UART.c:343 ports/nrf/common-hal/busio/UART.c:348
|
||||
#: ports/nrf/common-hal/busio/UART.c:354 ports/nrf/common-hal/busio/UART.c:359
|
||||
#: ports/nrf/common-hal/busio/UART.c:364 ports/nrf/common-hal/busio/UART.c:368
|
||||
#: ports/nrf/common-hal/busio/UART.c:376
|
||||
msgid "busio.UART not available"
|
||||
msgstr ""
|
||||
|
||||
@ -1356,140 +1315,140 @@ msgstr "masyadong maliit ang buffer"
|
||||
msgid "expecting a dict for keyword args"
|
||||
msgstr "umaasa ng dict para sa keyword args"
|
||||
|
||||
#: py/moduerrno.c:143 py/moduerrno.c:146
|
||||
#: py/moduerrno.c:147 py/moduerrno.c:150
|
||||
msgid "Permission denied"
|
||||
msgstr "Walang pahintulot"
|
||||
|
||||
#: py/moduerrno.c:144
|
||||
#: py/moduerrno.c:148
|
||||
msgid "No such file/directory"
|
||||
msgstr "Walang file/directory"
|
||||
|
||||
#: py/moduerrno.c:145
|
||||
#: py/moduerrno.c:149
|
||||
msgid "Input/output error"
|
||||
msgstr "May mali sa Input/Output"
|
||||
|
||||
#: py/moduerrno.c:147
|
||||
#: py/moduerrno.c:151
|
||||
msgid "File exists"
|
||||
msgstr "Mayroong file"
|
||||
|
||||
#: py/moduerrno.c:148
|
||||
#: py/moduerrno.c:152
|
||||
msgid "Unsupported operation"
|
||||
msgstr "Hindi sinusuportahang operasyon"
|
||||
|
||||
#: py/moduerrno.c:149
|
||||
#: py/moduerrno.c:153
|
||||
msgid "Invalid argument"
|
||||
msgstr "Maling argumento"
|
||||
|
||||
#: py/obj.c:90
|
||||
#: py/obj.c:92
|
||||
msgid "Traceback (most recent call last):\n"
|
||||
msgstr "Traceback (pinakahuling huling tawag): \n"
|
||||
|
||||
#: py/obj.c:94
|
||||
#: py/obj.c:96
|
||||
msgid " File \"%q\", line %d"
|
||||
msgstr " File \"%q\", line %d"
|
||||
|
||||
#: py/obj.c:96
|
||||
#: py/obj.c:98
|
||||
msgid " File \"%q\""
|
||||
msgstr " File \"%q\""
|
||||
|
||||
#: py/obj.c:100
|
||||
#: py/obj.c:102
|
||||
msgid ", in %q\n"
|
||||
msgstr ", sa %q\n"
|
||||
|
||||
#: py/obj.c:257
|
||||
#: py/obj.c:259
|
||||
msgid "can't convert to int"
|
||||
msgstr "hindi ma-convert sa int"
|
||||
|
||||
#: py/obj.c:260
|
||||
#: py/obj.c:262
|
||||
#, c-format
|
||||
msgid "can't convert %s to int"
|
||||
msgstr "hindi ma-convert %s sa int"
|
||||
|
||||
#: py/obj.c:320
|
||||
#: py/obj.c:322
|
||||
msgid "can't convert to float"
|
||||
msgstr "hindi ma-convert sa float"
|
||||
|
||||
#: py/obj.c:323
|
||||
#: py/obj.c:325
|
||||
#, c-format
|
||||
msgid "can't convert %s to float"
|
||||
msgstr "hindi ma-convert %s sa int"
|
||||
|
||||
#: py/obj.c:353
|
||||
#: py/obj.c:355
|
||||
msgid "can't convert to complex"
|
||||
msgstr "hindi ma-convert sa complex"
|
||||
|
||||
#: py/obj.c:356
|
||||
#: py/obj.c:358
|
||||
#, c-format
|
||||
msgid "can't convert %s to complex"
|
||||
msgstr "hindi ma-convert %s sa complex"
|
||||
|
||||
#: py/obj.c:371
|
||||
#: py/obj.c:373
|
||||
msgid "expected tuple/list"
|
||||
msgstr "umaasa ng tuple/list"
|
||||
|
||||
#: py/obj.c:374
|
||||
#: py/obj.c:376
|
||||
#, c-format
|
||||
msgid "object '%s' is not a tuple or list"
|
||||
msgstr "object '%s' ay hindi tuple o list"
|
||||
|
||||
#: py/obj.c:385
|
||||
#: py/obj.c:387
|
||||
msgid "tuple/list has wrong length"
|
||||
msgstr "mali ang haba ng tuple/list"
|
||||
|
||||
#: py/obj.c:387
|
||||
#: py/obj.c:389
|
||||
#, c-format
|
||||
msgid "requested length %d but object has length %d"
|
||||
msgstr "hiniling ang haba %d ngunit may haba ang object na %d"
|
||||
|
||||
#: py/obj.c:400
|
||||
#: py/obj.c:402
|
||||
msgid "indices must be integers"
|
||||
msgstr "ang mga indeks ay dapat na integer"
|
||||
|
||||
#: py/obj.c:403
|
||||
#: py/obj.c:405
|
||||
msgid "%q indices must be integers, not %s"
|
||||
msgstr "%q indeks ay dapat integers, hindi %s"
|
||||
|
||||
#: py/obj.c:423
|
||||
#: py/obj.c:425
|
||||
msgid "%q index out of range"
|
||||
msgstr "%q indeks wala sa sakop"
|
||||
|
||||
#: py/obj.c:455
|
||||
#: py/obj.c:457
|
||||
msgid "object has no len"
|
||||
msgstr "object walang len"
|
||||
|
||||
#: py/obj.c:458
|
||||
#: py/obj.c:460
|
||||
#, c-format
|
||||
msgid "object of type '%s' has no len()"
|
||||
msgstr "object na type '%s' walang len()"
|
||||
|
||||
#: py/obj.c:496
|
||||
#: py/obj.c:500
|
||||
msgid "object does not support item deletion"
|
||||
msgstr "ang object ay hindi sumusuporta sa pagbura ng item"
|
||||
|
||||
#: py/obj.c:499
|
||||
#: py/obj.c:503
|
||||
#, c-format
|
||||
msgid "'%s' object does not support item deletion"
|
||||
msgstr "'%s' object ay hindi sumusuporta sa pagtanggal ng item"
|
||||
|
||||
#: py/obj.c:503
|
||||
#: py/obj.c:507
|
||||
msgid "object is not subscriptable"
|
||||
msgstr "ang bagay ay hindi maaaring ma-subscript"
|
||||
|
||||
#: py/obj.c:506
|
||||
#: py/obj.c:510
|
||||
#, c-format
|
||||
msgid "'%s' object is not subscriptable"
|
||||
msgstr "'%s' object ay hindi maaaring i-subscript"
|
||||
|
||||
#: py/obj.c:510
|
||||
#: py/obj.c:514
|
||||
msgid "object does not support item assignment"
|
||||
msgstr "ang object na '%s' ay hindi maaaring i-subscript"
|
||||
|
||||
#: py/obj.c:513
|
||||
#: py/obj.c:517
|
||||
#, c-format
|
||||
msgid "'%s' object does not support item assignment"
|
||||
msgstr "'%s' object hindi sumusuporta ng item assignment"
|
||||
|
||||
#: py/obj.c:544
|
||||
#: py/obj.c:548
|
||||
msgid "object with buffer protocol required"
|
||||
msgstr "object na may buffer protocol kinakailangan"
|
||||
|
||||
@ -2015,6 +1974,14 @@ msgstr "object wala sa sequence"
|
||||
msgid "stream operation not supported"
|
||||
msgstr "stream operation hindi sinusuportahan"
|
||||
|
||||
#: py/stream.c:254
|
||||
msgid "string not supported; use bytes or bytearray"
|
||||
msgstr ""
|
||||
|
||||
#: py/stream.c:289
|
||||
msgid "length argument not allowed for this type"
|
||||
msgstr ""
|
||||
|
||||
#: py/vm.c:255
|
||||
msgid "local variable referenced before assignment"
|
||||
msgstr "local variable na reference bago na i-assign"
|
||||
@ -2185,14 +2152,18 @@ msgstr ""
|
||||
msgid "Function requires lock."
|
||||
msgstr "Kailangan ng lock ang function."
|
||||
|
||||
#: shared-bindings/busio/UART.c:102
|
||||
#: shared-bindings/busio/UART.c:106
|
||||
msgid "bits must be 7, 8 or 9"
|
||||
msgstr "bits ay dapat 7, 8 o 9"
|
||||
|
||||
#: shared-bindings/busio/UART.c:114
|
||||
#: shared-bindings/busio/UART.c:118
|
||||
msgid "stop must be 1 or 2"
|
||||
msgstr "stop dapat 1 o 2"
|
||||
|
||||
#: shared-bindings/busio/UART.c:123
|
||||
msgid "timeout >100 (units are now seconds, not msecs)"
|
||||
msgstr ""
|
||||
|
||||
#: shared-bindings/digitalio/DigitalInOut.c:211
|
||||
msgid "Invalid direction."
|
||||
msgstr "Mali ang direksyon."
|
||||
@ -2430,15 +2401,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:264
|
||||
#: shared-bindings/time/__init__.c:169 shared-bindings/time/__init__.c:263
|
||||
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:269
|
||||
#: shared-bindings/time/__init__.c:174 shared-bindings/time/__init__.c:268
|
||||
msgid "function takes exactly 9 arguments"
|
||||
msgstr "function kumukuha ng 9 arguments"
|
||||
|
||||
#: shared-bindings/time/__init__.c:240 shared-bindings/time/__init__.c:273
|
||||
#: shared-bindings/time/__init__.c:239 shared-bindings/time/__init__.c:272
|
||||
msgid "timestamp out of range for platform time_t"
|
||||
msgstr "wala sa sakop ng timestamp ang platform time_t"
|
||||
|
||||
@ -2586,10 +2557,100 @@ msgstr "Busy ang USB"
|
||||
msgid "USB Error"
|
||||
msgstr "May pagkakamali ang USB"
|
||||
|
||||
#: supervisor/shared/safe_mode.c:97
|
||||
msgid "You requested starting safe mode by "
|
||||
msgstr "Ikaw ang humiling sa safe mode sa pamamagitan ng "
|
||||
|
||||
#: supervisor/shared/safe_mode.c:100
|
||||
msgid "To exit, please reset the board without "
|
||||
msgstr "Para lumabas, paki-reset ang board na wala ang "
|
||||
|
||||
#: supervisor/shared/safe_mode.c:107
|
||||
#, fuzzy
|
||||
msgid ""
|
||||
"You are running in safe mode which means something unanticipated happened.\n"
|
||||
msgstr ""
|
||||
"Ikaw ay tumatakbo sa safe mode, ang ibig sabihin nito ay may masamang "
|
||||
"nangyari.\n"
|
||||
|
||||
#: supervisor/shared/safe_mode.c:109
|
||||
msgid ""
|
||||
"Looks like our core CircuitPython code crashed hard. Whoops!\n"
|
||||
"Please file an issue at https://github.com/adafruit/circuitpython/issues\n"
|
||||
" with the contents of your CIRCUITPY drive and this message:\n"
|
||||
msgstr ""
|
||||
|
||||
#: supervisor/shared/safe_mode.c:111
|
||||
msgid "Crash into the HardFault_Handler.\n"
|
||||
msgstr ""
|
||||
|
||||
#: supervisor/shared/safe_mode.c:113
|
||||
msgid "MicroPython NLR jump failed. Likely memory corruption.\n"
|
||||
msgstr ""
|
||||
|
||||
#: supervisor/shared/safe_mode.c:115
|
||||
msgid "MicroPython fatal error.\n"
|
||||
msgstr ""
|
||||
|
||||
#: supervisor/shared/safe_mode.c:118
|
||||
#, fuzzy
|
||||
msgid ""
|
||||
"The microcontroller's power dipped. Please make sure your power supply "
|
||||
"provides\n"
|
||||
"enough power for the whole circuit and press reset (after ejecting "
|
||||
"CIRCUITPY).\n"
|
||||
msgstr ""
|
||||
"Ang kapangyarihan ng mikrokontroller ay bumaba. Mangyaring suriin ang power "
|
||||
"supply \n"
|
||||
|
||||
#: supervisor/shared/safe_mode.c:120
|
||||
msgid ""
|
||||
"The CircuitPython heap was corrupted because the stack was too small.\n"
|
||||
"Please increase stack size limits and press reset (after ejecting "
|
||||
"CIRCUITPY).\n"
|
||||
"If you didn't change the stack, then file an issue here with the contents of "
|
||||
"your CIRCUITPY drive:\n"
|
||||
msgstr ""
|
||||
|
||||
#: supervisor/shared/safe_mode.c:123
|
||||
msgid ""
|
||||
"The reset button was pressed while booting CircuitPython. Press again to "
|
||||
"exit safe mode.\n"
|
||||
msgstr ""
|
||||
|
||||
#~ msgid ""
|
||||
#~ "Please file an issue here with the contents of your CIRCUITPY drive:\n"
|
||||
#~ msgstr ""
|
||||
#~ "Mag-file ng isang isyu dito gamit ang mga nilalaman ng iyong CIRCUITPY "
|
||||
#~ "drive:\n"
|
||||
|
||||
#~ msgid "Looks like our core CircuitPython code crashed hard. Whoops!\n"
|
||||
#~ msgstr ""
|
||||
#~ "Mukhang ang core CircuitPython code ay nag-crash ng malakas. Aray!\n"
|
||||
|
||||
#~ msgid ""
|
||||
#~ "enough power for the whole circuit and press reset (after ejecting "
|
||||
#~ "CIRCUITPY).\n"
|
||||
#~ msgstr ""
|
||||
#~ "ay nagbibigay ng sapat na power para sa buong circuit at i-press ang "
|
||||
#~ "reset (pagkatapos i-eject ang CIRCUITPY).\n"
|
||||
|
||||
#~ msgid "Cannot set PPCP parameters."
|
||||
#~ msgstr "Hindi ma-set ang PPCP parameters."
|
||||
|
||||
#~ msgid "Can not apply advertisement data. status: 0x%02x"
|
||||
#~ msgstr "Hindi ma i-apply ang advertisement data. status: 0x%02x"
|
||||
|
||||
#, fuzzy
|
||||
#~ msgid "palette must be displayio.Palette"
|
||||
#~ msgstr "ang palette ay dapat 32 bytes ang haba"
|
||||
|
||||
#~ msgid "Can not query for the device address."
|
||||
#~ msgstr "Hindi maaaring mag-query para sa address ng device."
|
||||
|
||||
#~ msgid "Can not add Service."
|
||||
#~ msgstr "Hindi maidaragdag ang serbisyo."
|
||||
|
||||
#~ msgid "Invalid Service type"
|
||||
#~ msgstr "Mali ang tipo ng serbisyo"
|
||||
|
||||
@ -2599,12 +2660,6 @@ msgstr "May pagkakamali ang USB"
|
||||
#~ msgid "Can not encode UUID, to check length."
|
||||
#~ msgstr "Hindi ma-encode UUID, para suriin ang haba."
|
||||
|
||||
#~ msgid "Can not query for the device address."
|
||||
#~ msgstr "Hindi maaaring mag-query para sa address ng device."
|
||||
|
||||
#~ msgid "Can not apply advertisement data. status: 0x%02x"
|
||||
#~ msgstr "Hindi ma i-apply ang advertisement data. status: 0x%02x"
|
||||
|
||||
#~ msgid "Can not apply device name in the stack."
|
||||
#~ msgstr "Hindi maaaring ma-aplay ang device name sa stack."
|
||||
|
||||
@ -2613,9 +2668,3 @@ msgstr "May pagkakamali ang USB"
|
||||
|
||||
#~ msgid "Cannot apply GAP parameters."
|
||||
#~ msgstr "Hindi ma-apply ang GAP parameters."
|
||||
|
||||
#~ msgid "Cannot set PPCP parameters."
|
||||
#~ msgstr "Hindi ma-set ang PPCP parameters."
|
||||
|
||||
#~ msgid "Can not add Service."
|
||||
#~ msgstr "Hindi maidaragdag ang serbisyo."
|
||||
|
292
locale/fr.po
292
locale/fr.po
@ -7,7 +7,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: 0.1\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2018-11-09 16:20-0800\n"
|
||||
"POT-Creation-Date: 2018-12-06 17:04-0800\n"
|
||||
"PO-Revision-Date: 2018-08-14 11:01+0200\n"
|
||||
"Last-Translator: Pierrick Couturier <arofarn@arofarn.info>\n"
|
||||
"Language-Team: fr\n"
|
||||
@ -130,7 +130,7 @@ msgstr "entête de compression"
|
||||
msgid "invalid dupterm index"
|
||||
msgstr "index invalide pour dupterm"
|
||||
|
||||
#: extmod/vfs_fat.c:426 py/moduerrno.c:150
|
||||
#: extmod/vfs_fat.c:426 py/moduerrno.c:154
|
||||
msgid "Read-only filesystem"
|
||||
msgstr "Système de fichier en lecture seule"
|
||||
|
||||
@ -150,11 +150,11 @@ msgstr "arguments invalides"
|
||||
msgid "script compilation not supported"
|
||||
msgstr "compilation du script non supporté"
|
||||
|
||||
#: main.c:154
|
||||
#: main.c:150
|
||||
msgid " output:\n"
|
||||
msgstr " sortie:\n"
|
||||
|
||||
#: main.c:168 main.c:241
|
||||
#: main.c:164 main.c:237
|
||||
msgid ""
|
||||
"Auto-reload is on. Simply save files over USB to run them or enter REPL to "
|
||||
"disable.\n"
|
||||
@ -162,66 +162,27 @@ msgstr ""
|
||||
"Auto-chargement activé. Copiez simplement les fichiers en USB pour les "
|
||||
"lancer ou entrez sur REPL pour le désactiver.\n"
|
||||
|
||||
#: main.c:170
|
||||
#: main.c:166
|
||||
msgid "Running in safe mode! Auto-reload is off.\n"
|
||||
msgstr "Mode sans-échec. Auto-rechargement désactivé.\n"
|
||||
|
||||
#: main.c:172 main.c:243
|
||||
#: main.c:168 main.c:239
|
||||
msgid "Auto-reload is off.\n"
|
||||
msgstr "Auto-rechargement désactivé.\n"
|
||||
|
||||
#: main.c:186
|
||||
#: main.c:182
|
||||
msgid "Running in safe mode! Not running saved code.\n"
|
||||
msgstr "Mode sans-échec! Le code sauvegardé ne s'éxecute pas.\n"
|
||||
|
||||
#: main.c:202
|
||||
#: main.c:198
|
||||
msgid "WARNING: Your code filename has two extensions\n"
|
||||
msgstr "ATTENTION: le nom de fichier de votre code a deux extensions\n"
|
||||
|
||||
#: main.c:250
|
||||
msgid "You requested starting safe mode by "
|
||||
msgstr "Vous avez demandé à démarrer en mode sans-échec par "
|
||||
|
||||
#: main.c:253
|
||||
msgid "To exit, please reset the board without "
|
||||
msgstr "Pour quitter, redémarrez la carte SVP sans "
|
||||
|
||||
#: main.c:260
|
||||
msgid ""
|
||||
"You are running in safe mode which means something really bad happened.\n"
|
||||
msgstr ""
|
||||
"Vous êtes en mode sans-échec ce qui signifie que quelque chose demauvais est "
|
||||
"arrivé.\n"
|
||||
|
||||
#: main.c:262
|
||||
msgid "Looks like our core CircuitPython code crashed hard. Whoops!\n"
|
||||
msgstr "Il semblerait que votre code CircuitPython a durement planté. Oups!\n"
|
||||
|
||||
#: main.c:263
|
||||
msgid "Please file an issue here with the contents of your CIRCUITPY drive:\n"
|
||||
msgstr "SVP, remontez le problème là avec le contenu du lecteur CIRCUITPY:\n"
|
||||
|
||||
#: main.c:266
|
||||
msgid ""
|
||||
"The microcontroller's power dipped. Please make sure your power supply "
|
||||
"provides\n"
|
||||
msgstr ""
|
||||
"L'alimentation du microcontroleur a chuté. Merci de vérifier que votre "
|
||||
"alimentation fournit\n"
|
||||
|
||||
#: main.c:267
|
||||
msgid ""
|
||||
"enough power for the whole circuit and press reset (after ejecting "
|
||||
"CIRCUITPY).\n"
|
||||
msgstr ""
|
||||
"assez de puissance pour l'ensemble du circuit et appuyez sur 'reset' (après "
|
||||
"avoir éjecter CIRCUITPY).\n"
|
||||
|
||||
#: main.c:271
|
||||
#: main.c:244
|
||||
msgid "Press any key to enter the REPL. Use CTRL-D to reload."
|
||||
msgstr "Appuyez sur une touche pour entrer sur REPL ou CTRL-D pour recharger."
|
||||
|
||||
#: main.c:429
|
||||
#: main.c:407
|
||||
msgid "soft reboot\n"
|
||||
msgstr "redémarrage logiciel\n"
|
||||
|
||||
@ -367,7 +328,7 @@ msgstr "Pas assez de broches disponibles"
|
||||
|
||||
#: ports/atmel-samd/common-hal/busio/I2C.c:78
|
||||
#: ports/atmel-samd/common-hal/busio/SPI.c:171
|
||||
#: ports/atmel-samd/common-hal/busio/UART.c:119
|
||||
#: ports/atmel-samd/common-hal/busio/UART.c:120
|
||||
#: ports/atmel-samd/common-hal/i2cslave/I2CSlave.c:45
|
||||
#: ports/nrf/common-hal/busio/I2C.c:82
|
||||
msgid "Invalid pins"
|
||||
@ -381,31 +342,31 @@ msgstr "SDA ou SCL a besoin d'une résistance de tirage ('pull up')"
|
||||
msgid "Unsupported baudrate"
|
||||
msgstr "Débit non supporté"
|
||||
|
||||
#: ports/atmel-samd/common-hal/busio/UART.c:66
|
||||
#: ports/atmel-samd/common-hal/busio/UART.c:67
|
||||
msgid "bytes > 8 bits not supported"
|
||||
msgstr "octets > 8 bits non supporté"
|
||||
|
||||
#: ports/atmel-samd/common-hal/busio/UART.c:72
|
||||
#: ports/nrf/common-hal/busio/UART.c:82
|
||||
#: ports/atmel-samd/common-hal/busio/UART.c:73
|
||||
#: ports/nrf/common-hal/busio/UART.c:83
|
||||
msgid "tx and rx cannot both be None"
|
||||
msgstr "TX et RX ne peuvent être None tous les deux"
|
||||
|
||||
#: ports/atmel-samd/common-hal/busio/UART.c:145
|
||||
#: ports/nrf/common-hal/busio/UART.c:115
|
||||
#: ports/atmel-samd/common-hal/busio/UART.c:146
|
||||
#: ports/nrf/common-hal/busio/UART.c:116
|
||||
msgid "Failed to allocate RX buffer"
|
||||
msgstr "Echec de l'allocation du tampon RX"
|
||||
|
||||
#: ports/atmel-samd/common-hal/busio/UART.c:153
|
||||
#: ports/atmel-samd/common-hal/busio/UART.c:154
|
||||
msgid "Could not initialize UART"
|
||||
msgstr "L'UART n'a pu être initialisé"
|
||||
|
||||
#: ports/atmel-samd/common-hal/busio/UART.c:240
|
||||
#: ports/nrf/common-hal/busio/UART.c:149
|
||||
#: ports/atmel-samd/common-hal/busio/UART.c:241
|
||||
#: ports/nrf/common-hal/busio/UART.c:157
|
||||
msgid "No RX pin"
|
||||
msgstr "Pas de broche RX"
|
||||
|
||||
#: ports/atmel-samd/common-hal/busio/UART.c:294
|
||||
#: ports/nrf/common-hal/busio/UART.c:195
|
||||
#: ports/atmel-samd/common-hal/busio/UART.c:300
|
||||
#: ports/nrf/common-hal/busio/UART.c:207
|
||||
msgid "No TX pin"
|
||||
msgstr "Pas de broche TX"
|
||||
|
||||
@ -451,7 +412,7 @@ msgid "pop from an empty PulseIn"
|
||||
msgstr "'pop' d'une entrée PulseIn vide"
|
||||
|
||||
#: ports/atmel-samd/common-hal/pulseio/PulseIn.c:237
|
||||
#: ports/esp8266/common-hal/pulseio/PulseIn.c:182 py/obj.c:420
|
||||
#: ports/esp8266/common-hal/pulseio/PulseIn.c:182 py/obj.c:422
|
||||
msgid "index out of range"
|
||||
msgstr "index hors gamme"
|
||||
|
||||
@ -820,26 +781,26 @@ msgstr "Tous les timers sont utilisés"
|
||||
msgid "All SPI peripherals are in use"
|
||||
msgstr "Tous les timers sont utilisés"
|
||||
|
||||
#: ports/nrf/common-hal/busio/UART.c:48
|
||||
#: ports/nrf/common-hal/busio/UART.c:49
|
||||
#, c-format
|
||||
msgid "error = 0x%08lX"
|
||||
msgstr ""
|
||||
|
||||
#: ports/nrf/common-hal/busio/UART.c:86
|
||||
#: ports/nrf/common-hal/busio/UART.c:87
|
||||
#, fuzzy
|
||||
msgid "Invalid buffer size"
|
||||
msgstr "longueur de tampon invalide"
|
||||
|
||||
#: ports/nrf/common-hal/busio/UART.c:90
|
||||
#: ports/nrf/common-hal/busio/UART.c:91
|
||||
#, fuzzy
|
||||
msgid "Odd parity is not supported"
|
||||
msgstr "octets > 8 bits non supporté"
|
||||
|
||||
#: ports/nrf/common-hal/busio/UART.c:322 ports/nrf/common-hal/busio/UART.c:326
|
||||
#: ports/nrf/common-hal/busio/UART.c:331 ports/nrf/common-hal/busio/UART.c:336
|
||||
#: ports/nrf/common-hal/busio/UART.c:342 ports/nrf/common-hal/busio/UART.c:347
|
||||
#: ports/nrf/common-hal/busio/UART.c:352 ports/nrf/common-hal/busio/UART.c:356
|
||||
#: ports/nrf/common-hal/busio/UART.c:364
|
||||
#: ports/nrf/common-hal/busio/UART.c:334 ports/nrf/common-hal/busio/UART.c:338
|
||||
#: ports/nrf/common-hal/busio/UART.c:343 ports/nrf/common-hal/busio/UART.c:348
|
||||
#: ports/nrf/common-hal/busio/UART.c:354 ports/nrf/common-hal/busio/UART.c:359
|
||||
#: ports/nrf/common-hal/busio/UART.c:364 ports/nrf/common-hal/busio/UART.c:368
|
||||
#: ports/nrf/common-hal/busio/UART.c:376
|
||||
#, fuzzy
|
||||
msgid "busio.UART not available"
|
||||
msgstr "busio.UART n'est pas disponible"
|
||||
@ -1346,140 +1307,140 @@ msgstr "tampon trop petit"
|
||||
msgid "expecting a dict for keyword args"
|
||||
msgstr "un dict est attendu pour les arguments nommés"
|
||||
|
||||
#: py/moduerrno.c:143 py/moduerrno.c:146
|
||||
#: py/moduerrno.c:147 py/moduerrno.c:150
|
||||
msgid "Permission denied"
|
||||
msgstr "Permission refusée"
|
||||
|
||||
#: py/moduerrno.c:144
|
||||
#: py/moduerrno.c:148
|
||||
msgid "No such file/directory"
|
||||
msgstr "Fichier/dossier introuvable"
|
||||
|
||||
#: py/moduerrno.c:145
|
||||
#: py/moduerrno.c:149
|
||||
msgid "Input/output error"
|
||||
msgstr "Erreur d'entrée/sortie"
|
||||
|
||||
#: py/moduerrno.c:147
|
||||
#: py/moduerrno.c:151
|
||||
msgid "File exists"
|
||||
msgstr "Le fichier existe"
|
||||
|
||||
#: py/moduerrno.c:148
|
||||
#: py/moduerrno.c:152
|
||||
msgid "Unsupported operation"
|
||||
msgstr "Opération non supportée"
|
||||
|
||||
#: py/moduerrno.c:149
|
||||
#: py/moduerrno.c:153
|
||||
msgid "Invalid argument"
|
||||
msgstr "Argument invalide"
|
||||
|
||||
#: py/obj.c:90
|
||||
#: py/obj.c:92
|
||||
msgid "Traceback (most recent call last):\n"
|
||||
msgstr "Trace (appels les plus récents en dernier):\n"
|
||||
|
||||
#: py/obj.c:94
|
||||
#: py/obj.c:96
|
||||
msgid " File \"%q\", line %d"
|
||||
msgstr " Fichier \"%q\", ligne %d"
|
||||
|
||||
#: py/obj.c:96
|
||||
#: py/obj.c:98
|
||||
msgid " File \"%q\""
|
||||
msgstr " Fichier \"%q\""
|
||||
|
||||
#: py/obj.c:100
|
||||
#: py/obj.c:102
|
||||
msgid ", in %q\n"
|
||||
msgstr ", dans %q\n"
|
||||
|
||||
#: py/obj.c:257
|
||||
#: py/obj.c:259
|
||||
msgid "can't convert to int"
|
||||
msgstr "ne peut convertir en entier int"
|
||||
|
||||
#: py/obj.c:260
|
||||
#: py/obj.c:262
|
||||
#, c-format
|
||||
msgid "can't convert %s to int"
|
||||
msgstr "ne peut convertir %s en entier int"
|
||||
|
||||
#: py/obj.c:320
|
||||
#: py/obj.c:322
|
||||
msgid "can't convert to float"
|
||||
msgstr "ne peut convertir en nombre à virgule flottante (float)"
|
||||
|
||||
#: py/obj.c:323
|
||||
#: py/obj.c:325
|
||||
#, c-format
|
||||
msgid "can't convert %s to float"
|
||||
msgstr "ne peut convertir %s en nombre à virgule flottante (float)"
|
||||
|
||||
#: py/obj.c:353
|
||||
#: py/obj.c:355
|
||||
msgid "can't convert to complex"
|
||||
msgstr "ne peut convertir en nombre complexe"
|
||||
|
||||
#: py/obj.c:356
|
||||
#: py/obj.c:358
|
||||
#, c-format
|
||||
msgid "can't convert %s to complex"
|
||||
msgstr "ne peut convertir %s en nombre complexe"
|
||||
|
||||
#: py/obj.c:371
|
||||
#: py/obj.c:373
|
||||
msgid "expected tuple/list"
|
||||
msgstr "un tuple ou une liste est attendu"
|
||||
|
||||
#: py/obj.c:374
|
||||
#: py/obj.c:376
|
||||
#, c-format
|
||||
msgid "object '%s' is not a tuple or list"
|
||||
msgstr "l'objet '%s' n'est pas un tuple ou une liste"
|
||||
|
||||
#: py/obj.c:385
|
||||
#: py/obj.c:387
|
||||
msgid "tuple/list has wrong length"
|
||||
msgstr "tuple/liste a une mauvaise longueur"
|
||||
|
||||
#: py/obj.c:387
|
||||
#: py/obj.c:389
|
||||
#, c-format
|
||||
msgid "requested length %d but object has length %d"
|
||||
msgstr "la longueur requise est %d mais l'objet est long de %d"
|
||||
|
||||
#: py/obj.c:400
|
||||
#: py/obj.c:402
|
||||
msgid "indices must be integers"
|
||||
msgstr "les indices doivent être des entiers"
|
||||
|
||||
#: py/obj.c:403
|
||||
#: py/obj.c:405
|
||||
msgid "%q indices must be integers, not %s"
|
||||
msgstr "les indices %q doivent être des entiers, pas %s"
|
||||
|
||||
#: py/obj.c:423
|
||||
#: py/obj.c:425
|
||||
msgid "%q index out of range"
|
||||
msgstr "index %q hors gamme"
|
||||
|
||||
#: py/obj.c:455
|
||||
#: py/obj.c:457
|
||||
msgid "object has no len"
|
||||
msgstr "l'objet n'a pas de len"
|
||||
|
||||
#: py/obj.c:458
|
||||
#: py/obj.c:460
|
||||
#, c-format
|
||||
msgid "object of type '%s' has no len()"
|
||||
msgstr "l'objet de type '%s' n'a pas de len()"
|
||||
|
||||
#: py/obj.c:496
|
||||
#: py/obj.c:500
|
||||
msgid "object does not support item deletion"
|
||||
msgstr "l'objet ne supporte pas la suppression d'éléments"
|
||||
|
||||
#: py/obj.c:499
|
||||
#: py/obj.c:503
|
||||
#, c-format
|
||||
msgid "'%s' object does not support item deletion"
|
||||
msgstr "l'objet '%s' ne supporte pas la suppression d'éléments"
|
||||
|
||||
#: py/obj.c:503
|
||||
#: py/obj.c:507
|
||||
msgid "object is not subscriptable"
|
||||
msgstr "l'objet n'est pas sous-scriptable"
|
||||
|
||||
#: py/obj.c:506
|
||||
#: py/obj.c:510
|
||||
#, c-format
|
||||
msgid "'%s' object is not subscriptable"
|
||||
msgstr "l'objet '%s' n'est pas sous-scriptable"
|
||||
|
||||
#: py/obj.c:510
|
||||
#: py/obj.c:514
|
||||
msgid "object does not support item assignment"
|
||||
msgstr "l'objet ne supporte pas l'assignation d'éléments"
|
||||
|
||||
#: py/obj.c:513
|
||||
#: py/obj.c:517
|
||||
#, c-format
|
||||
msgid "'%s' object does not support item assignment"
|
||||
msgstr "l'objet '%s' ne supporte pas l'assignation d'éléments"
|
||||
|
||||
#: py/obj.c:544
|
||||
#: py/obj.c:548
|
||||
msgid "object with buffer protocol required"
|
||||
msgstr "un objet avec un protocol de tampon est nécessaire"
|
||||
|
||||
@ -2006,6 +1967,14 @@ msgstr "l'objet n'est pas dans la séquence"
|
||||
msgid "stream operation not supported"
|
||||
msgstr "opération de flux non supportée"
|
||||
|
||||
#: py/stream.c:254
|
||||
msgid "string not supported; use bytes or bytearray"
|
||||
msgstr ""
|
||||
|
||||
#: py/stream.c:289
|
||||
msgid "length argument not allowed for this type"
|
||||
msgstr ""
|
||||
|
||||
#: py/vm.c:255
|
||||
msgid "local variable referenced before assignment"
|
||||
msgstr "variable locale référencée avant d'être assignée"
|
||||
@ -2175,14 +2144,18 @@ msgstr ""
|
||||
msgid "Function requires lock."
|
||||
msgstr "La fonction nécessite un verrou."
|
||||
|
||||
#: shared-bindings/busio/UART.c:102
|
||||
#: shared-bindings/busio/UART.c:106
|
||||
msgid "bits must be 7, 8 or 9"
|
||||
msgstr "bits doivent être 7, 8 ou 9"
|
||||
|
||||
#: shared-bindings/busio/UART.c:114
|
||||
#: shared-bindings/busio/UART.c:118
|
||||
msgid "stop must be 1 or 2"
|
||||
msgstr "stop doit être 1 ou 2"
|
||||
|
||||
#: shared-bindings/busio/UART.c:123
|
||||
msgid "timeout >100 (units are now seconds, not msecs)"
|
||||
msgstr ""
|
||||
|
||||
#: shared-bindings/digitalio/DigitalInOut.c:211
|
||||
msgid "Invalid direction."
|
||||
msgstr "Direction invalide"
|
||||
@ -2428,15 +2401,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:264
|
||||
#: shared-bindings/time/__init__.c:169 shared-bindings/time/__init__.c:263
|
||||
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:269
|
||||
#: shared-bindings/time/__init__.c:174 shared-bindings/time/__init__.c:268
|
||||
msgid "function takes exactly 9 arguments"
|
||||
msgstr "la fonction prend exactement 9 arguments"
|
||||
|
||||
#: shared-bindings/time/__init__.c:240 shared-bindings/time/__init__.c:273
|
||||
#: shared-bindings/time/__init__.c:239 shared-bindings/time/__init__.c:272
|
||||
msgid "timestamp out of range for platform time_t"
|
||||
msgstr "timestamp hors gamme pour la plateforme time_t"
|
||||
|
||||
@ -2584,34 +2557,111 @@ msgstr "USB occupé"
|
||||
msgid "USB Error"
|
||||
msgstr "Erreur USB"
|
||||
|
||||
#: supervisor/shared/safe_mode.c:97
|
||||
msgid "You requested starting safe mode by "
|
||||
msgstr "Vous avez demandé à démarrer en mode sans-échec par "
|
||||
|
||||
#: supervisor/shared/safe_mode.c:100
|
||||
msgid "To exit, please reset the board without "
|
||||
msgstr "Pour quitter, redémarrez la carte SVP sans "
|
||||
|
||||
#: supervisor/shared/safe_mode.c:107
|
||||
#, fuzzy
|
||||
#~ msgid "palette must be displayio.Palette"
|
||||
#~ msgstr "palettre doit être displayio.Palette"
|
||||
msgid ""
|
||||
"You are running in safe mode which means something unanticipated happened.\n"
|
||||
msgstr ""
|
||||
"Vous êtes en mode sans-échec ce qui signifie que quelque chose demauvais est "
|
||||
"arrivé.\n"
|
||||
|
||||
#~ msgid "Can not query for the device address."
|
||||
#~ msgstr "Impossible d'obtenir l'adresse du périphérique"
|
||||
#: supervisor/shared/safe_mode.c:109
|
||||
msgid ""
|
||||
"Looks like our core CircuitPython code crashed hard. Whoops!\n"
|
||||
"Please file an issue at https://github.com/adafruit/circuitpython/issues\n"
|
||||
" with the contents of your CIRCUITPY drive and this message:\n"
|
||||
msgstr ""
|
||||
|
||||
#~ msgid "Cannot set PPCP parameters."
|
||||
#~ msgstr "Impossible d'appliquer les paramètres PPCP"
|
||||
#: supervisor/shared/safe_mode.c:111
|
||||
msgid "Crash into the HardFault_Handler.\n"
|
||||
msgstr ""
|
||||
|
||||
#~ msgid "Cannot apply GAP parameters."
|
||||
#~ msgstr "Impossible d'appliquer les paramètres GAP"
|
||||
#: supervisor/shared/safe_mode.c:113
|
||||
msgid "MicroPython NLR jump failed. Likely memory corruption.\n"
|
||||
msgstr ""
|
||||
|
||||
#~ msgid "Can not encode UUID, to check length."
|
||||
#~ msgstr "Impossible d'encoder l'UUID pour vérifier la longueur."
|
||||
#: supervisor/shared/safe_mode.c:115
|
||||
msgid "MicroPython fatal error.\n"
|
||||
msgstr ""
|
||||
|
||||
#: supervisor/shared/safe_mode.c:118
|
||||
#, fuzzy
|
||||
msgid ""
|
||||
"The microcontroller's power dipped. Please make sure your power supply "
|
||||
"provides\n"
|
||||
"enough power for the whole circuit and press reset (after ejecting "
|
||||
"CIRCUITPY).\n"
|
||||
msgstr ""
|
||||
"L'alimentation du microcontroleur a chuté. Merci de vérifier que votre "
|
||||
"alimentation fournit\n"
|
||||
|
||||
#: supervisor/shared/safe_mode.c:120
|
||||
msgid ""
|
||||
"The CircuitPython heap was corrupted because the stack was too small.\n"
|
||||
"Please increase stack size limits and press reset (after ejecting "
|
||||
"CIRCUITPY).\n"
|
||||
"If you didn't change the stack, then file an issue here with the contents of "
|
||||
"your CIRCUITPY drive:\n"
|
||||
msgstr ""
|
||||
|
||||
#: supervisor/shared/safe_mode.c:123
|
||||
msgid ""
|
||||
"The reset button was pressed while booting CircuitPython. Press again to "
|
||||
"exit safe mode.\n"
|
||||
msgstr ""
|
||||
|
||||
#~ msgid "Looks like our core CircuitPython code crashed hard. Whoops!\n"
|
||||
#~ msgstr ""
|
||||
#~ "Il semblerait que votre code CircuitPython a durement planté. Oups!\n"
|
||||
|
||||
#~ msgid ""
|
||||
#~ "Please file an issue here with the contents of your CIRCUITPY drive:\n"
|
||||
#~ msgstr ""
|
||||
#~ "SVP, remontez le problème là avec le contenu du lecteur CIRCUITPY:\n"
|
||||
|
||||
#~ msgid "Can not add Service."
|
||||
#~ msgstr "Impossible d'ajouter le Service"
|
||||
|
||||
#~ msgid "Invalid Service type"
|
||||
#~ msgstr "Type de service invalide"
|
||||
|
||||
#~ msgid "Can not encode UUID, to check length."
|
||||
#~ msgstr "Impossible d'encoder l'UUID pour vérifier la longueur."
|
||||
|
||||
#~ msgid "Can not add Characteristic."
|
||||
#~ msgstr "Impossible d'ajouter la Characteristic."
|
||||
|
||||
#~ msgid "Can not query for the device address."
|
||||
#~ msgstr "Impossible d'obtenir l'adresse du périphérique"
|
||||
|
||||
#~ msgid ""
|
||||
#~ "enough power for the whole circuit and press reset (after ejecting "
|
||||
#~ "CIRCUITPY).\n"
|
||||
#~ msgstr ""
|
||||
#~ "assez de puissance pour l'ensemble du circuit et appuyez sur "
|
||||
#~ "'reset' (après avoir éjecter CIRCUITPY).\n"
|
||||
|
||||
#~ msgid "Cannot set PPCP parameters."
|
||||
#~ msgstr "Impossible d'appliquer les paramètres PPCP"
|
||||
|
||||
#~ msgid "Can not apply device name in the stack."
|
||||
#~ msgstr "Impossible d'appliquer le nom de périphérique dans la pile"
|
||||
|
||||
#~ msgid "Cannot apply GAP parameters."
|
||||
#~ msgstr "Impossible d'appliquer les paramètres GAP"
|
||||
|
||||
#, fuzzy
|
||||
#~ msgid "value_size must be power of two"
|
||||
#~ msgstr "value_size est une puissance de deux"
|
||||
|
||||
#~ msgid "Can not add Service."
|
||||
#~ msgstr "Impossible d'ajouter le Service"
|
||||
|
||||
#~ msgid "Can not add Characteristic."
|
||||
#~ msgstr "Impossible d'ajouter la Characteristic."
|
||||
#, fuzzy
|
||||
#~ msgid "palette must be displayio.Palette"
|
||||
#~ msgstr "palettre doit être displayio.Palette"
|
||||
|
300
locale/it_IT.po
300
locale/it_IT.po
@ -8,7 +8,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: PACKAGE VERSION\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2018-11-09 16:20-0800\n"
|
||||
"POT-Creation-Date: 2018-12-06 17:04-0800\n"
|
||||
"PO-Revision-Date: 2018-10-02 16:27+0200\n"
|
||||
"Last-Translator: Enrico Paganin <enrico.paganin@mail.com>\n"
|
||||
"Language-Team: \n"
|
||||
@ -131,7 +131,7 @@ msgstr "compressione dell'header"
|
||||
msgid "invalid dupterm index"
|
||||
msgstr "indice dupterm non valido"
|
||||
|
||||
#: extmod/vfs_fat.c:426 py/moduerrno.c:150
|
||||
#: extmod/vfs_fat.c:426 py/moduerrno.c:154
|
||||
msgid "Read-only filesystem"
|
||||
msgstr "Filesystem in sola lettura"
|
||||
|
||||
@ -151,11 +151,11 @@ msgstr "argomenti non validi"
|
||||
msgid "script compilation not supported"
|
||||
msgstr "compilazione dello scrip non suportata"
|
||||
|
||||
#: main.c:154
|
||||
#: main.c:150
|
||||
msgid " output:\n"
|
||||
msgstr " output:\n"
|
||||
|
||||
#: main.c:168 main.c:241
|
||||
#: main.c:164 main.c:237
|
||||
msgid ""
|
||||
"Auto-reload is on. Simply save files over USB to run them or enter REPL to "
|
||||
"disable.\n"
|
||||
@ -163,71 +163,28 @@ msgstr ""
|
||||
"L'auto-reload è attivo. Salva i file su USB per eseguirli o entra nel REPL "
|
||||
"per disabilitarlo.\n"
|
||||
|
||||
#: main.c:170
|
||||
#: main.c:166
|
||||
msgid "Running in safe mode! Auto-reload is off.\n"
|
||||
msgstr "Modalità sicura in esecuzione! Auto-reload disattivato.\n"
|
||||
|
||||
#: main.c:172 main.c:243
|
||||
#: main.c:168 main.c:239
|
||||
msgid "Auto-reload is off.\n"
|
||||
msgstr "Auto-reload disattivato.\n"
|
||||
|
||||
#: main.c:186
|
||||
#: main.c:182
|
||||
msgid "Running in safe mode! Not running saved code.\n"
|
||||
msgstr "Modalità sicura in esecuzione! Codice salvato non in esecuzione.\n"
|
||||
|
||||
#: main.c:202
|
||||
#: main.c:198
|
||||
msgid "WARNING: Your code filename has two extensions\n"
|
||||
msgstr "ATTENZIONE: Il nome del sorgente ha due estensioni\n"
|
||||
|
||||
#: main.c:250
|
||||
msgid "You requested starting safe mode by "
|
||||
msgstr "È stato richiesto l'avvio in modalità sicura da "
|
||||
|
||||
#: main.c:253
|
||||
msgid "To exit, please reset the board without "
|
||||
msgstr "Per uscire resettare la scheda senza "
|
||||
|
||||
#: main.c:260
|
||||
msgid ""
|
||||
"You are running in safe mode which means something really bad happened.\n"
|
||||
msgstr ""
|
||||
"Sei nella modalità sicura che significa che qualcosa di molto brutto è "
|
||||
"successo.\n"
|
||||
|
||||
#: main.c:262
|
||||
msgid "Looks like our core CircuitPython code crashed hard. Whoops!\n"
|
||||
msgstr ""
|
||||
"Sembra che il codice del core di CircuitPython sia crashato malamente. "
|
||||
"Whoops!\n"
|
||||
|
||||
#: main.c:263
|
||||
msgid "Please file an issue here with the contents of your CIRCUITPY drive:\n"
|
||||
msgstr ""
|
||||
"Ti preghiamo di compilare una issue con il contenuto del tuo drie "
|
||||
"CIRCUITPY:\n"
|
||||
|
||||
#: main.c:266
|
||||
msgid ""
|
||||
"The microcontroller's power dipped. Please make sure your power supply "
|
||||
"provides\n"
|
||||
msgstr ""
|
||||
"La potenza del microcontrollore è calata. Assicurati che l'alimentazione sia "
|
||||
"attaccata correttamente\n"
|
||||
|
||||
#: main.c:267
|
||||
msgid ""
|
||||
"enough power for the whole circuit and press reset (after ejecting "
|
||||
"CIRCUITPY).\n"
|
||||
msgstr ""
|
||||
"abbastanza potenza per l'intero circuito e premere reset (dopo aver espulso "
|
||||
"CIRCUITPY).\n"
|
||||
|
||||
#: main.c:271
|
||||
#: main.c:244
|
||||
msgid "Press any key to enter the REPL. Use CTRL-D to reload."
|
||||
msgstr ""
|
||||
"Premi un qualunque tasto per entrare nel REPL. Usa CTRL-D per ricaricare."
|
||||
|
||||
#: main.c:429
|
||||
#: main.c:407
|
||||
msgid "soft reboot\n"
|
||||
msgstr "soft reboot\n"
|
||||
|
||||
@ -375,7 +332,7 @@ msgstr "Non sono presenti abbastanza pin"
|
||||
|
||||
#: ports/atmel-samd/common-hal/busio/I2C.c:78
|
||||
#: ports/atmel-samd/common-hal/busio/SPI.c:171
|
||||
#: ports/atmel-samd/common-hal/busio/UART.c:119
|
||||
#: ports/atmel-samd/common-hal/busio/UART.c:120
|
||||
#: ports/atmel-samd/common-hal/i2cslave/I2CSlave.c:45
|
||||
#: ports/nrf/common-hal/busio/I2C.c:82
|
||||
msgid "Invalid pins"
|
||||
@ -389,31 +346,31 @@ msgstr "SDA o SCL necessitano un pull-up"
|
||||
msgid "Unsupported baudrate"
|
||||
msgstr "baudrate non supportato"
|
||||
|
||||
#: ports/atmel-samd/common-hal/busio/UART.c:66
|
||||
#: ports/atmel-samd/common-hal/busio/UART.c:67
|
||||
msgid "bytes > 8 bits not supported"
|
||||
msgstr "byte > 8 bit non supportati"
|
||||
|
||||
#: ports/atmel-samd/common-hal/busio/UART.c:72
|
||||
#: ports/nrf/common-hal/busio/UART.c:82
|
||||
#: ports/atmel-samd/common-hal/busio/UART.c:73
|
||||
#: ports/nrf/common-hal/busio/UART.c:83
|
||||
msgid "tx and rx cannot both be None"
|
||||
msgstr "tx e rx non possono essere entrambi None"
|
||||
|
||||
#: ports/atmel-samd/common-hal/busio/UART.c:145
|
||||
#: ports/nrf/common-hal/busio/UART.c:115
|
||||
#: ports/atmel-samd/common-hal/busio/UART.c:146
|
||||
#: ports/nrf/common-hal/busio/UART.c:116
|
||||
msgid "Failed to allocate RX buffer"
|
||||
msgstr "Impossibile allocare buffer RX"
|
||||
|
||||
#: ports/atmel-samd/common-hal/busio/UART.c:153
|
||||
#: ports/atmel-samd/common-hal/busio/UART.c:154
|
||||
msgid "Could not initialize UART"
|
||||
msgstr "Impossibile inizializzare l'UART"
|
||||
|
||||
#: ports/atmel-samd/common-hal/busio/UART.c:240
|
||||
#: ports/nrf/common-hal/busio/UART.c:149
|
||||
#: ports/atmel-samd/common-hal/busio/UART.c:241
|
||||
#: ports/nrf/common-hal/busio/UART.c:157
|
||||
msgid "No RX pin"
|
||||
msgstr "Nessun pin RX"
|
||||
|
||||
#: ports/atmel-samd/common-hal/busio/UART.c:294
|
||||
#: ports/nrf/common-hal/busio/UART.c:195
|
||||
#: ports/atmel-samd/common-hal/busio/UART.c:300
|
||||
#: ports/nrf/common-hal/busio/UART.c:207
|
||||
msgid "No TX pin"
|
||||
msgstr "Nessun pin TX"
|
||||
|
||||
@ -459,7 +416,7 @@ msgid "pop from an empty PulseIn"
|
||||
msgstr "pop sun un PulseIn vuoto"
|
||||
|
||||
#: ports/atmel-samd/common-hal/pulseio/PulseIn.c:237
|
||||
#: ports/esp8266/common-hal/pulseio/PulseIn.c:182 py/obj.c:420
|
||||
#: ports/esp8266/common-hal/pulseio/PulseIn.c:182 py/obj.c:422
|
||||
msgid "index out of range"
|
||||
msgstr "indice fuori intervallo"
|
||||
|
||||
@ -825,26 +782,26 @@ msgstr "Tutte le periferiche I2C sono in uso"
|
||||
msgid "All SPI peripherals are in use"
|
||||
msgstr "Tutte le periferiche SPI sono in uso"
|
||||
|
||||
#: ports/nrf/common-hal/busio/UART.c:48
|
||||
#: ports/nrf/common-hal/busio/UART.c:49
|
||||
#, c-format
|
||||
msgid "error = 0x%08lX"
|
||||
msgstr ""
|
||||
|
||||
#: ports/nrf/common-hal/busio/UART.c:86
|
||||
#: ports/nrf/common-hal/busio/UART.c:87
|
||||
#, fuzzy
|
||||
msgid "Invalid buffer size"
|
||||
msgstr "lunghezza del buffer non valida"
|
||||
|
||||
#: ports/nrf/common-hal/busio/UART.c:90
|
||||
#: ports/nrf/common-hal/busio/UART.c:91
|
||||
#, fuzzy
|
||||
msgid "Odd parity is not supported"
|
||||
msgstr "operazione I2C non supportata"
|
||||
|
||||
#: ports/nrf/common-hal/busio/UART.c:322 ports/nrf/common-hal/busio/UART.c:326
|
||||
#: ports/nrf/common-hal/busio/UART.c:331 ports/nrf/common-hal/busio/UART.c:336
|
||||
#: ports/nrf/common-hal/busio/UART.c:342 ports/nrf/common-hal/busio/UART.c:347
|
||||
#: ports/nrf/common-hal/busio/UART.c:352 ports/nrf/common-hal/busio/UART.c:356
|
||||
#: ports/nrf/common-hal/busio/UART.c:364
|
||||
#: ports/nrf/common-hal/busio/UART.c:334 ports/nrf/common-hal/busio/UART.c:338
|
||||
#: ports/nrf/common-hal/busio/UART.c:343 ports/nrf/common-hal/busio/UART.c:348
|
||||
#: ports/nrf/common-hal/busio/UART.c:354 ports/nrf/common-hal/busio/UART.c:359
|
||||
#: ports/nrf/common-hal/busio/UART.c:364 ports/nrf/common-hal/busio/UART.c:368
|
||||
#: ports/nrf/common-hal/busio/UART.c:376
|
||||
#, fuzzy
|
||||
msgid "busio.UART not available"
|
||||
msgstr "busio.UART non ancora implementato"
|
||||
@ -1355,140 +1312,140 @@ msgstr "buffer troppo piccolo"
|
||||
msgid "expecting a dict for keyword args"
|
||||
msgstr "argomenti nominati necessitano un dizionario"
|
||||
|
||||
#: py/moduerrno.c:143 py/moduerrno.c:146
|
||||
#: py/moduerrno.c:147 py/moduerrno.c:150
|
||||
msgid "Permission denied"
|
||||
msgstr "Permesso negato"
|
||||
|
||||
#: py/moduerrno.c:144
|
||||
#: py/moduerrno.c:148
|
||||
msgid "No such file/directory"
|
||||
msgstr "Nessun file/directory esistente"
|
||||
|
||||
#: py/moduerrno.c:145
|
||||
#: py/moduerrno.c:149
|
||||
msgid "Input/output error"
|
||||
msgstr "Errore input/output"
|
||||
|
||||
#: py/moduerrno.c:147
|
||||
#: py/moduerrno.c:151
|
||||
msgid "File exists"
|
||||
msgstr "File esistente"
|
||||
|
||||
#: py/moduerrno.c:148
|
||||
#: py/moduerrno.c:152
|
||||
msgid "Unsupported operation"
|
||||
msgstr "Operazione non supportata"
|
||||
|
||||
#: py/moduerrno.c:149
|
||||
#: py/moduerrno.c:153
|
||||
msgid "Invalid argument"
|
||||
msgstr "Argomento non valido"
|
||||
|
||||
#: py/obj.c:90
|
||||
#: py/obj.c:92
|
||||
msgid "Traceback (most recent call last):\n"
|
||||
msgstr "Traceback (chiamata più recente per ultima):\n"
|
||||
|
||||
#: py/obj.c:94
|
||||
#: py/obj.c:96
|
||||
msgid " File \"%q\", line %d"
|
||||
msgstr " File \"%q\", riga %d"
|
||||
|
||||
#: py/obj.c:96
|
||||
#: py/obj.c:98
|
||||
msgid " File \"%q\""
|
||||
msgstr " File \"%q\""
|
||||
|
||||
#: py/obj.c:100
|
||||
#: py/obj.c:102
|
||||
msgid ", in %q\n"
|
||||
msgstr ", in %q\n"
|
||||
|
||||
#: py/obj.c:257
|
||||
#: py/obj.c:259
|
||||
msgid "can't convert to int"
|
||||
msgstr "non è possibile convertire a int"
|
||||
|
||||
#: py/obj.c:260
|
||||
#: py/obj.c:262
|
||||
#, c-format
|
||||
msgid "can't convert %s to int"
|
||||
msgstr "non è possibile convertire %s a int"
|
||||
|
||||
#: py/obj.c:320
|
||||
#: py/obj.c:322
|
||||
msgid "can't convert to float"
|
||||
msgstr "non è possibile convertire a float"
|
||||
|
||||
#: py/obj.c:323
|
||||
#: py/obj.c:325
|
||||
#, c-format
|
||||
msgid "can't convert %s to float"
|
||||
msgstr "non è possibile convertire %s a float"
|
||||
|
||||
#: py/obj.c:353
|
||||
#: py/obj.c:355
|
||||
msgid "can't convert to complex"
|
||||
msgstr "non è possibile convertire a complex"
|
||||
|
||||
#: py/obj.c:356
|
||||
#: py/obj.c:358
|
||||
#, c-format
|
||||
msgid "can't convert %s to complex"
|
||||
msgstr "non è possibile convertire a complex"
|
||||
|
||||
#: py/obj.c:371
|
||||
#: py/obj.c:373
|
||||
msgid "expected tuple/list"
|
||||
msgstr "lista/tupla prevista"
|
||||
|
||||
#: py/obj.c:374
|
||||
#: py/obj.c:376
|
||||
#, c-format
|
||||
msgid "object '%s' is not a tuple or list"
|
||||
msgstr "oggetto '%s' non è una tupla o una lista"
|
||||
|
||||
#: py/obj.c:385
|
||||
#: py/obj.c:387
|
||||
msgid "tuple/list has wrong length"
|
||||
msgstr "tupla/lista ha la lunghezza sbagliata"
|
||||
|
||||
#: py/obj.c:387
|
||||
#: py/obj.c:389
|
||||
#, c-format
|
||||
msgid "requested length %d but object has length %d"
|
||||
msgstr "lunghezza %d richiesta ma l'oggetto ha lunghezza %d"
|
||||
|
||||
#: py/obj.c:400
|
||||
#: py/obj.c:402
|
||||
msgid "indices must be integers"
|
||||
msgstr "gli indici devono essere interi"
|
||||
|
||||
#: py/obj.c:403
|
||||
#: py/obj.c:405
|
||||
msgid "%q indices must be integers, not %s"
|
||||
msgstr "gli indici %q devono essere interi, non %s"
|
||||
|
||||
#: py/obj.c:423
|
||||
#: py/obj.c:425
|
||||
msgid "%q index out of range"
|
||||
msgstr "indice %q fuori intervallo"
|
||||
|
||||
#: py/obj.c:455
|
||||
#: py/obj.c:457
|
||||
msgid "object has no len"
|
||||
msgstr "l'oggetto non ha lunghezza"
|
||||
|
||||
#: py/obj.c:458
|
||||
#: py/obj.c:460
|
||||
#, c-format
|
||||
msgid "object of type '%s' has no len()"
|
||||
msgstr "l'oggetto di tipo '%s' non implementa len()"
|
||||
|
||||
#: py/obj.c:496
|
||||
#: py/obj.c:500
|
||||
msgid "object does not support item deletion"
|
||||
msgstr ""
|
||||
|
||||
#: py/obj.c:499
|
||||
#: py/obj.c:503
|
||||
#, c-format
|
||||
msgid "'%s' object does not support item deletion"
|
||||
msgstr ""
|
||||
|
||||
#: py/obj.c:503
|
||||
#: py/obj.c:507
|
||||
msgid "object is not subscriptable"
|
||||
msgstr ""
|
||||
|
||||
#: py/obj.c:506
|
||||
#: py/obj.c:510
|
||||
#, c-format
|
||||
msgid "'%s' object is not subscriptable"
|
||||
msgstr ""
|
||||
|
||||
#: py/obj.c:510
|
||||
#: py/obj.c:514
|
||||
msgid "object does not support item assignment"
|
||||
msgstr ""
|
||||
|
||||
#: py/obj.c:513
|
||||
#: py/obj.c:517
|
||||
#, c-format
|
||||
msgid "'%s' object does not support item assignment"
|
||||
msgstr ""
|
||||
|
||||
#: py/obj.c:544
|
||||
#: py/obj.c:548
|
||||
msgid "object with buffer protocol required"
|
||||
msgstr ""
|
||||
|
||||
@ -2011,6 +1968,14 @@ msgstr "oggetto non in sequenza"
|
||||
msgid "stream operation not supported"
|
||||
msgstr "operazione di stream non supportata"
|
||||
|
||||
#: py/stream.c:254
|
||||
msgid "string not supported; use bytes or bytearray"
|
||||
msgstr ""
|
||||
|
||||
#: py/stream.c:289
|
||||
msgid "length argument not allowed for this type"
|
||||
msgstr ""
|
||||
|
||||
#: py/vm.c:255
|
||||
msgid "local variable referenced before assignment"
|
||||
msgstr "variabile locale richiamata prima di un assegnamento"
|
||||
@ -2180,14 +2145,18 @@ msgstr ""
|
||||
msgid "Function requires lock."
|
||||
msgstr ""
|
||||
|
||||
#: shared-bindings/busio/UART.c:102
|
||||
#: shared-bindings/busio/UART.c:106
|
||||
msgid "bits must be 7, 8 or 9"
|
||||
msgstr "i bit devono essere 7, 8 o 9"
|
||||
|
||||
#: shared-bindings/busio/UART.c:114
|
||||
#: shared-bindings/busio/UART.c:118
|
||||
msgid "stop must be 1 or 2"
|
||||
msgstr ""
|
||||
|
||||
#: shared-bindings/busio/UART.c:123
|
||||
msgid "timeout >100 (units are now seconds, not msecs)"
|
||||
msgstr ""
|
||||
|
||||
#: shared-bindings/digitalio/DigitalInOut.c:211
|
||||
msgid "Invalid direction."
|
||||
msgstr "Direzione non valida."
|
||||
@ -2417,15 +2386,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:264
|
||||
#: shared-bindings/time/__init__.c:169 shared-bindings/time/__init__.c:263
|
||||
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:269
|
||||
#: shared-bindings/time/__init__.c:174 shared-bindings/time/__init__.c:268
|
||||
msgid "function takes exactly 9 arguments"
|
||||
msgstr "la funzione prende esattamente 9 argomenti"
|
||||
|
||||
#: shared-bindings/time/__init__.c:240 shared-bindings/time/__init__.c:273
|
||||
#: shared-bindings/time/__init__.c:239 shared-bindings/time/__init__.c:272
|
||||
msgid "timestamp out of range for platform time_t"
|
||||
msgstr "timestamp è fuori intervallo per il time_t della piattaforma"
|
||||
|
||||
@ -2571,32 +2540,111 @@ msgstr "USB occupata"
|
||||
msgid "USB Error"
|
||||
msgstr "Errore USB"
|
||||
|
||||
#~ msgid "Invalid Service type"
|
||||
#~ msgstr "Tipo di servizio non valido"
|
||||
#: supervisor/shared/safe_mode.c:97
|
||||
msgid "You requested starting safe mode by "
|
||||
msgstr "È stato richiesto l'avvio in modalità sicura da "
|
||||
|
||||
#~ msgid "Can not query for the device address."
|
||||
#~ msgstr "Non è possibile trovare l'indirizzo del dispositivo."
|
||||
#: supervisor/shared/safe_mode.c:100
|
||||
msgid "To exit, please reset the board without "
|
||||
msgstr "Per uscire resettare la scheda senza "
|
||||
|
||||
#~ msgid "Cannot set PPCP parameters."
|
||||
#~ msgstr "Impossibile impostare i parametri PPCP."
|
||||
#: supervisor/shared/safe_mode.c:107
|
||||
#, fuzzy
|
||||
msgid ""
|
||||
"You are running in safe mode which means something unanticipated happened.\n"
|
||||
msgstr ""
|
||||
"Sei nella modalità sicura che significa che qualcosa di molto brutto è "
|
||||
"successo.\n"
|
||||
|
||||
#~ msgid "Cannot apply GAP parameters."
|
||||
#~ msgstr "Impossibile applicare i parametri GAP."
|
||||
#: supervisor/shared/safe_mode.c:109
|
||||
msgid ""
|
||||
"Looks like our core CircuitPython code crashed hard. Whoops!\n"
|
||||
"Please file an issue at https://github.com/adafruit/circuitpython/issues\n"
|
||||
" with the contents of your CIRCUITPY drive and this message:\n"
|
||||
msgstr ""
|
||||
|
||||
#~ msgid "Can not encode UUID, to check length."
|
||||
#~ msgstr "Non è possibile codificare l'UUID, lunghezza da controllare."
|
||||
#: supervisor/shared/safe_mode.c:111
|
||||
msgid "Crash into the HardFault_Handler.\n"
|
||||
msgstr ""
|
||||
|
||||
#~ msgid "Can encode UUID into the advertisement packet."
|
||||
#~ msgstr "È possibile codificare l'UUID nel pacchetto di advertisement."
|
||||
#: supervisor/shared/safe_mode.c:113
|
||||
msgid "MicroPython NLR jump failed. Likely memory corruption.\n"
|
||||
msgstr ""
|
||||
|
||||
#~ msgid "Can not apply device name in the stack."
|
||||
#~ msgstr "Non è possibile inserire il nome del dipositivo nella lista."
|
||||
#: supervisor/shared/safe_mode.c:115
|
||||
msgid "MicroPython fatal error.\n"
|
||||
msgstr ""
|
||||
|
||||
#~ msgid "Can not apply advertisement data. status: 0x%02x"
|
||||
#~ msgstr "Impossible inserire dati advertisement. status: 0x%02x"
|
||||
#: supervisor/shared/safe_mode.c:118
|
||||
#, fuzzy
|
||||
msgid ""
|
||||
"The microcontroller's power dipped. Please make sure your power supply "
|
||||
"provides\n"
|
||||
"enough power for the whole circuit and press reset (after ejecting "
|
||||
"CIRCUITPY).\n"
|
||||
msgstr ""
|
||||
"La potenza del microcontrollore è calata. Assicurati che l'alimentazione sia "
|
||||
"attaccata correttamente\n"
|
||||
|
||||
#: supervisor/shared/safe_mode.c:120
|
||||
msgid ""
|
||||
"The CircuitPython heap was corrupted because the stack was too small.\n"
|
||||
"Please increase stack size limits and press reset (after ejecting "
|
||||
"CIRCUITPY).\n"
|
||||
"If you didn't change the stack, then file an issue here with the contents of "
|
||||
"your CIRCUITPY drive:\n"
|
||||
msgstr ""
|
||||
|
||||
#: supervisor/shared/safe_mode.c:123
|
||||
msgid ""
|
||||
"The reset button was pressed while booting CircuitPython. Press again to "
|
||||
"exit safe mode.\n"
|
||||
msgstr ""
|
||||
|
||||
#~ msgid "Looks like our core CircuitPython code crashed hard. Whoops!\n"
|
||||
#~ msgstr ""
|
||||
#~ "Sembra che il codice del core di CircuitPython sia crashato malamente. "
|
||||
#~ "Whoops!\n"
|
||||
|
||||
#~ msgid ""
|
||||
#~ "Please file an issue here with the contents of your CIRCUITPY drive:\n"
|
||||
#~ msgstr ""
|
||||
#~ "Ti preghiamo di compilare una issue con il contenuto del tuo drie "
|
||||
#~ "CIRCUITPY:\n"
|
||||
|
||||
#~ msgid "Can not add Service."
|
||||
#~ msgstr "Non è possibile aggiungere Service."
|
||||
|
||||
#~ msgid "Can encode UUID into the advertisement packet."
|
||||
#~ msgstr "È possibile codificare l'UUID nel pacchetto di advertisement."
|
||||
|
||||
#~ msgid "Can not encode UUID, to check length."
|
||||
#~ msgstr "Non è possibile codificare l'UUID, lunghezza da controllare."
|
||||
|
||||
#~ msgid "Can not add Characteristic."
|
||||
#~ msgstr "Non è possibile aggiungere Characteristic."
|
||||
|
||||
#~ msgid "Can not query for the device address."
|
||||
#~ msgstr "Non è possibile trovare l'indirizzo del dispositivo."
|
||||
|
||||
#~ msgid ""
|
||||
#~ "enough power for the whole circuit and press reset (after ejecting "
|
||||
#~ "CIRCUITPY).\n"
|
||||
#~ msgstr ""
|
||||
#~ "abbastanza potenza per l'intero circuito e premere reset (dopo aver "
|
||||
#~ "espulso CIRCUITPY).\n"
|
||||
|
||||
#~ msgid "Cannot set PPCP parameters."
|
||||
#~ msgstr "Impossibile impostare i parametri PPCP."
|
||||
|
||||
#~ msgid "Can not apply device name in the stack."
|
||||
#~ msgstr "Non è possibile inserire il nome del dipositivo nella lista."
|
||||
|
||||
#~ msgid "Cannot apply GAP parameters."
|
||||
#~ msgstr "Impossibile applicare i parametri GAP."
|
||||
|
||||
#~ msgid "Can not apply advertisement data. status: 0x%02x"
|
||||
#~ msgstr "Impossible inserire dati advertisement. status: 0x%02x"
|
||||
|
||||
#~ msgid "Invalid Service type"
|
||||
#~ msgstr "Tipo di servizio non valido"
|
||||
|
256
locale/pt_BR.po
256
locale/pt_BR.po
@ -8,7 +8,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: PACKAGE VERSION\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2018-11-09 16:20-0800\n"
|
||||
"POT-Creation-Date: 2018-12-06 17:04-0800\n"
|
||||
"PO-Revision-Date: 2018-10-02 21:14-0000\n"
|
||||
"Last-Translator: \n"
|
||||
"Language-Team: \n"
|
||||
@ -131,7 +131,7 @@ msgstr ""
|
||||
msgid "invalid dupterm index"
|
||||
msgstr "Índice de dupterm inválido"
|
||||
|
||||
#: extmod/vfs_fat.c:426 py/moduerrno.c:150
|
||||
#: extmod/vfs_fat.c:426 py/moduerrno.c:154
|
||||
msgid "Read-only filesystem"
|
||||
msgstr "Sistema de arquivos somente leitura"
|
||||
|
||||
@ -151,70 +151,37 @@ msgstr "argumentos inválidos"
|
||||
msgid "script compilation not supported"
|
||||
msgstr "compilação de script não suportada"
|
||||
|
||||
#: main.c:154
|
||||
#: main.c:150
|
||||
msgid " output:\n"
|
||||
msgstr " saída:\n"
|
||||
|
||||
#: main.c:168 main.c:241
|
||||
#: main.c:164 main.c:237
|
||||
msgid ""
|
||||
"Auto-reload is on. Simply save files over USB to run them or enter REPL to "
|
||||
"disable.\n"
|
||||
msgstr ""
|
||||
|
||||
#: main.c:170
|
||||
#: main.c:166
|
||||
msgid "Running in safe mode! Auto-reload is off.\n"
|
||||
msgstr "Rodando em modo seguro! Atualização automática está desligada.\n"
|
||||
|
||||
#: main.c:172 main.c:243
|
||||
#: main.c:168 main.c:239
|
||||
msgid "Auto-reload is off.\n"
|
||||
msgstr "A atualização automática está desligada.\n"
|
||||
|
||||
#: main.c:186
|
||||
#: main.c:182
|
||||
msgid "Running in safe mode! Not running saved code.\n"
|
||||
msgstr "Rodando em modo seguro! Não está executando o código salvo.\n"
|
||||
|
||||
#: main.c:202
|
||||
#: main.c:198
|
||||
msgid "WARNING: Your code filename has two extensions\n"
|
||||
msgstr "AVISO: Seu arquivo de código tem duas extensões\n"
|
||||
|
||||
#: main.c:250
|
||||
msgid "You requested starting safe mode by "
|
||||
msgstr "Você solicitou o início do modo de segurança"
|
||||
|
||||
#: main.c:253
|
||||
msgid "To exit, please reset the board without "
|
||||
msgstr "Para sair, por favor, reinicie a placa sem "
|
||||
|
||||
#: main.c:260
|
||||
msgid ""
|
||||
"You are running in safe mode which means something really bad happened.\n"
|
||||
msgstr ""
|
||||
|
||||
#: main.c:262
|
||||
msgid "Looks like our core CircuitPython code crashed hard. Whoops!\n"
|
||||
msgstr ""
|
||||
|
||||
#: main.c:263
|
||||
msgid "Please file an issue here with the contents of your CIRCUITPY drive:\n"
|
||||
msgstr ""
|
||||
|
||||
#: main.c:266
|
||||
msgid ""
|
||||
"The microcontroller's power dipped. Please make sure your power supply "
|
||||
"provides\n"
|
||||
msgstr ""
|
||||
|
||||
#: main.c:267
|
||||
msgid ""
|
||||
"enough power for the whole circuit and press reset (after ejecting "
|
||||
"CIRCUITPY).\n"
|
||||
msgstr ""
|
||||
|
||||
#: main.c:271
|
||||
#: main.c:244
|
||||
msgid "Press any key to enter the REPL. Use CTRL-D to reload."
|
||||
msgstr ""
|
||||
|
||||
#: main.c:429
|
||||
#: main.c:407
|
||||
msgid "soft reboot\n"
|
||||
msgstr ""
|
||||
|
||||
@ -360,7 +327,7 @@ msgstr "Não há pinos suficientes disponíveis"
|
||||
|
||||
#: ports/atmel-samd/common-hal/busio/I2C.c:78
|
||||
#: ports/atmel-samd/common-hal/busio/SPI.c:171
|
||||
#: ports/atmel-samd/common-hal/busio/UART.c:119
|
||||
#: ports/atmel-samd/common-hal/busio/UART.c:120
|
||||
#: ports/atmel-samd/common-hal/i2cslave/I2CSlave.c:45
|
||||
#: ports/nrf/common-hal/busio/I2C.c:82
|
||||
msgid "Invalid pins"
|
||||
@ -374,31 +341,31 @@ msgstr "SDA ou SCL precisa de um pull up"
|
||||
msgid "Unsupported baudrate"
|
||||
msgstr "Taxa de transmissão não suportada"
|
||||
|
||||
#: ports/atmel-samd/common-hal/busio/UART.c:66
|
||||
#: ports/atmel-samd/common-hal/busio/UART.c:67
|
||||
msgid "bytes > 8 bits not supported"
|
||||
msgstr "bytes > 8 bits não suportado"
|
||||
|
||||
#: ports/atmel-samd/common-hal/busio/UART.c:72
|
||||
#: ports/nrf/common-hal/busio/UART.c:82
|
||||
#: ports/atmel-samd/common-hal/busio/UART.c:73
|
||||
#: ports/nrf/common-hal/busio/UART.c:83
|
||||
msgid "tx and rx cannot both be None"
|
||||
msgstr "TX e RX não podem ser ambos"
|
||||
|
||||
#: ports/atmel-samd/common-hal/busio/UART.c:145
|
||||
#: ports/nrf/common-hal/busio/UART.c:115
|
||||
#: ports/atmel-samd/common-hal/busio/UART.c:146
|
||||
#: ports/nrf/common-hal/busio/UART.c:116
|
||||
msgid "Failed to allocate RX buffer"
|
||||
msgstr "Falha ao alocar buffer RX"
|
||||
|
||||
#: ports/atmel-samd/common-hal/busio/UART.c:153
|
||||
#: ports/atmel-samd/common-hal/busio/UART.c:154
|
||||
msgid "Could not initialize UART"
|
||||
msgstr "Não foi possível inicializar o UART"
|
||||
|
||||
#: ports/atmel-samd/common-hal/busio/UART.c:240
|
||||
#: ports/nrf/common-hal/busio/UART.c:149
|
||||
#: ports/atmel-samd/common-hal/busio/UART.c:241
|
||||
#: ports/nrf/common-hal/busio/UART.c:157
|
||||
msgid "No RX pin"
|
||||
msgstr "Nenhum pino RX"
|
||||
|
||||
#: ports/atmel-samd/common-hal/busio/UART.c:294
|
||||
#: ports/nrf/common-hal/busio/UART.c:195
|
||||
#: ports/atmel-samd/common-hal/busio/UART.c:300
|
||||
#: ports/nrf/common-hal/busio/UART.c:207
|
||||
msgid "No TX pin"
|
||||
msgstr "Nenhum pino TX"
|
||||
|
||||
@ -443,7 +410,7 @@ msgid "pop from an empty PulseIn"
|
||||
msgstr ""
|
||||
|
||||
#: ports/atmel-samd/common-hal/pulseio/PulseIn.c:237
|
||||
#: ports/esp8266/common-hal/pulseio/PulseIn.c:182 py/obj.c:420
|
||||
#: ports/esp8266/common-hal/pulseio/PulseIn.c:182 py/obj.c:422
|
||||
msgid "index out of range"
|
||||
msgstr "Índice fora do intervalo"
|
||||
|
||||
@ -808,26 +775,26 @@ msgstr "Todos os periféricos I2C estão em uso"
|
||||
msgid "All SPI peripherals are in use"
|
||||
msgstr "Todos os periféricos SPI estão em uso"
|
||||
|
||||
#: ports/nrf/common-hal/busio/UART.c:48
|
||||
#: ports/nrf/common-hal/busio/UART.c:49
|
||||
#, c-format
|
||||
msgid "error = 0x%08lX"
|
||||
msgstr "erro = 0x%08lX"
|
||||
|
||||
#: ports/nrf/common-hal/busio/UART.c:86
|
||||
#: ports/nrf/common-hal/busio/UART.c:87
|
||||
#, fuzzy
|
||||
msgid "Invalid buffer size"
|
||||
msgstr "Arquivo inválido"
|
||||
|
||||
#: ports/nrf/common-hal/busio/UART.c:90
|
||||
#: ports/nrf/common-hal/busio/UART.c:91
|
||||
#, fuzzy
|
||||
msgid "Odd parity is not supported"
|
||||
msgstr "I2C operação não suportada"
|
||||
|
||||
#: ports/nrf/common-hal/busio/UART.c:322 ports/nrf/common-hal/busio/UART.c:326
|
||||
#: ports/nrf/common-hal/busio/UART.c:331 ports/nrf/common-hal/busio/UART.c:336
|
||||
#: ports/nrf/common-hal/busio/UART.c:342 ports/nrf/common-hal/busio/UART.c:347
|
||||
#: ports/nrf/common-hal/busio/UART.c:352 ports/nrf/common-hal/busio/UART.c:356
|
||||
#: ports/nrf/common-hal/busio/UART.c:364
|
||||
#: ports/nrf/common-hal/busio/UART.c:334 ports/nrf/common-hal/busio/UART.c:338
|
||||
#: ports/nrf/common-hal/busio/UART.c:343 ports/nrf/common-hal/busio/UART.c:348
|
||||
#: ports/nrf/common-hal/busio/UART.c:354 ports/nrf/common-hal/busio/UART.c:359
|
||||
#: ports/nrf/common-hal/busio/UART.c:364 ports/nrf/common-hal/busio/UART.c:368
|
||||
#: ports/nrf/common-hal/busio/UART.c:376
|
||||
msgid "busio.UART not available"
|
||||
msgstr "busio.UART não disponível"
|
||||
|
||||
@ -1331,140 +1298,140 @@ msgstr ""
|
||||
msgid "expecting a dict for keyword args"
|
||||
msgstr ""
|
||||
|
||||
#: py/moduerrno.c:143 py/moduerrno.c:146
|
||||
#: py/moduerrno.c:147 py/moduerrno.c:150
|
||||
msgid "Permission denied"
|
||||
msgstr "Permissão negada"
|
||||
|
||||
#: py/moduerrno.c:144
|
||||
#: py/moduerrno.c:148
|
||||
msgid "No such file/directory"
|
||||
msgstr ""
|
||||
|
||||
#: py/moduerrno.c:145
|
||||
#: py/moduerrno.c:149
|
||||
msgid "Input/output error"
|
||||
msgstr ""
|
||||
|
||||
#: py/moduerrno.c:147
|
||||
#: py/moduerrno.c:151
|
||||
msgid "File exists"
|
||||
msgstr "Arquivo já existe"
|
||||
|
||||
#: py/moduerrno.c:148
|
||||
#: py/moduerrno.c:152
|
||||
msgid "Unsupported operation"
|
||||
msgstr ""
|
||||
|
||||
#: py/moduerrno.c:149
|
||||
#: py/moduerrno.c:153
|
||||
msgid "Invalid argument"
|
||||
msgstr "Argumento inválido"
|
||||
|
||||
#: py/obj.c:90
|
||||
#: py/obj.c:92
|
||||
msgid "Traceback (most recent call last):\n"
|
||||
msgstr ""
|
||||
|
||||
#: py/obj.c:94
|
||||
#: py/obj.c:96
|
||||
msgid " File \"%q\", line %d"
|
||||
msgstr " Arquivo \"%q\", linha %d"
|
||||
|
||||
#: py/obj.c:96
|
||||
#: py/obj.c:98
|
||||
msgid " File \"%q\""
|
||||
msgstr " Arquivo \"%q\""
|
||||
|
||||
#: py/obj.c:100
|
||||
#: py/obj.c:102
|
||||
msgid ", in %q\n"
|
||||
msgstr ""
|
||||
|
||||
#: py/obj.c:257
|
||||
#: py/obj.c:259
|
||||
msgid "can't convert to int"
|
||||
msgstr ""
|
||||
|
||||
#: py/obj.c:260
|
||||
#: py/obj.c:262
|
||||
#, c-format
|
||||
msgid "can't convert %s to int"
|
||||
msgstr ""
|
||||
|
||||
#: py/obj.c:320
|
||||
#: py/obj.c:322
|
||||
msgid "can't convert to float"
|
||||
msgstr ""
|
||||
|
||||
#: py/obj.c:323
|
||||
#: py/obj.c:325
|
||||
#, c-format
|
||||
msgid "can't convert %s to float"
|
||||
msgstr ""
|
||||
|
||||
#: py/obj.c:353
|
||||
#: py/obj.c:355
|
||||
msgid "can't convert to complex"
|
||||
msgstr ""
|
||||
|
||||
#: py/obj.c:356
|
||||
#: py/obj.c:358
|
||||
#, c-format
|
||||
msgid "can't convert %s to complex"
|
||||
msgstr ""
|
||||
|
||||
#: py/obj.c:371
|
||||
#: py/obj.c:373
|
||||
msgid "expected tuple/list"
|
||||
msgstr ""
|
||||
|
||||
#: py/obj.c:374
|
||||
#: py/obj.c:376
|
||||
#, c-format
|
||||
msgid "object '%s' is not a tuple or list"
|
||||
msgstr ""
|
||||
|
||||
#: py/obj.c:385
|
||||
#: py/obj.c:387
|
||||
msgid "tuple/list has wrong length"
|
||||
msgstr ""
|
||||
|
||||
#: py/obj.c:387
|
||||
#: py/obj.c:389
|
||||
#, c-format
|
||||
msgid "requested length %d but object has length %d"
|
||||
msgstr ""
|
||||
|
||||
#: py/obj.c:400
|
||||
#: py/obj.c:402
|
||||
msgid "indices must be integers"
|
||||
msgstr ""
|
||||
|
||||
#: py/obj.c:403
|
||||
#: py/obj.c:405
|
||||
msgid "%q indices must be integers, not %s"
|
||||
msgstr ""
|
||||
|
||||
#: py/obj.c:423
|
||||
#: py/obj.c:425
|
||||
msgid "%q index out of range"
|
||||
msgstr ""
|
||||
|
||||
#: py/obj.c:455
|
||||
#: py/obj.c:457
|
||||
msgid "object has no len"
|
||||
msgstr ""
|
||||
|
||||
#: py/obj.c:458
|
||||
#: py/obj.c:460
|
||||
#, c-format
|
||||
msgid "object of type '%s' has no len()"
|
||||
msgstr ""
|
||||
|
||||
#: py/obj.c:496
|
||||
#: py/obj.c:500
|
||||
msgid "object does not support item deletion"
|
||||
msgstr ""
|
||||
|
||||
#: py/obj.c:499
|
||||
#: py/obj.c:503
|
||||
#, c-format
|
||||
msgid "'%s' object does not support item deletion"
|
||||
msgstr ""
|
||||
|
||||
#: py/obj.c:503
|
||||
#: py/obj.c:507
|
||||
msgid "object is not subscriptable"
|
||||
msgstr ""
|
||||
|
||||
#: py/obj.c:506
|
||||
#: py/obj.c:510
|
||||
#, c-format
|
||||
msgid "'%s' object is not subscriptable"
|
||||
msgstr ""
|
||||
|
||||
#: py/obj.c:510
|
||||
#: py/obj.c:514
|
||||
msgid "object does not support item assignment"
|
||||
msgstr ""
|
||||
|
||||
#: py/obj.c:513
|
||||
#: py/obj.c:517
|
||||
#, c-format
|
||||
msgid "'%s' object does not support item assignment"
|
||||
msgstr ""
|
||||
|
||||
#: py/obj.c:544
|
||||
#: py/obj.c:548
|
||||
msgid "object with buffer protocol required"
|
||||
msgstr ""
|
||||
|
||||
@ -1980,6 +1947,14 @@ msgstr "objeto não em seqüência"
|
||||
msgid "stream operation not supported"
|
||||
msgstr ""
|
||||
|
||||
#: py/stream.c:254
|
||||
msgid "string not supported; use bytes or bytearray"
|
||||
msgstr ""
|
||||
|
||||
#: py/stream.c:289
|
||||
msgid "length argument not allowed for this type"
|
||||
msgstr ""
|
||||
|
||||
#: py/vm.c:255
|
||||
msgid "local variable referenced before assignment"
|
||||
msgstr ""
|
||||
@ -2141,14 +2116,18 @@ msgstr ""
|
||||
msgid "Function requires lock."
|
||||
msgstr ""
|
||||
|
||||
#: shared-bindings/busio/UART.c:102
|
||||
#: shared-bindings/busio/UART.c:106
|
||||
msgid "bits must be 7, 8 or 9"
|
||||
msgstr ""
|
||||
|
||||
#: shared-bindings/busio/UART.c:114
|
||||
#: shared-bindings/busio/UART.c:118
|
||||
msgid "stop must be 1 or 2"
|
||||
msgstr ""
|
||||
|
||||
#: shared-bindings/busio/UART.c:123
|
||||
msgid "timeout >100 (units are now seconds, not msecs)"
|
||||
msgstr ""
|
||||
|
||||
#: shared-bindings/digitalio/DigitalInOut.c:211
|
||||
msgid "Invalid direction."
|
||||
msgstr "Direção inválida"
|
||||
@ -2370,15 +2349,15 @@ msgstr ""
|
||||
msgid "time.struct_time() takes a 9-sequence"
|
||||
msgstr ""
|
||||
|
||||
#: shared-bindings/time/__init__.c:169 shared-bindings/time/__init__.c:264
|
||||
#: shared-bindings/time/__init__.c:169 shared-bindings/time/__init__.c:263
|
||||
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:269
|
||||
#: shared-bindings/time/__init__.c:174 shared-bindings/time/__init__.c:268
|
||||
msgid "function takes exactly 9 arguments"
|
||||
msgstr "função leva exatamente 9 argumentos"
|
||||
|
||||
#: shared-bindings/time/__init__.c:240 shared-bindings/time/__init__.c:273
|
||||
#: shared-bindings/time/__init__.c:239 shared-bindings/time/__init__.c:272
|
||||
msgid "timestamp out of range for platform time_t"
|
||||
msgstr "timestamp fora do intervalo para a plataforma time_t"
|
||||
|
||||
@ -2523,6 +2502,67 @@ msgstr "USB ocupada"
|
||||
msgid "USB Error"
|
||||
msgstr "Erro na USB"
|
||||
|
||||
#: supervisor/shared/safe_mode.c:97
|
||||
msgid "You requested starting safe mode by "
|
||||
msgstr "Você solicitou o início do modo de segurança"
|
||||
|
||||
#: supervisor/shared/safe_mode.c:100
|
||||
msgid "To exit, please reset the board without "
|
||||
msgstr "Para sair, por favor, reinicie a placa sem "
|
||||
|
||||
#: supervisor/shared/safe_mode.c:107
|
||||
msgid ""
|
||||
"You are running in safe mode which means something unanticipated happened.\n"
|
||||
msgstr ""
|
||||
|
||||
#: supervisor/shared/safe_mode.c:109
|
||||
msgid ""
|
||||
"Looks like our core CircuitPython code crashed hard. Whoops!\n"
|
||||
"Please file an issue at https://github.com/adafruit/circuitpython/issues\n"
|
||||
" with the contents of your CIRCUITPY drive and this message:\n"
|
||||
msgstr ""
|
||||
|
||||
#: supervisor/shared/safe_mode.c:111
|
||||
msgid "Crash into the HardFault_Handler.\n"
|
||||
msgstr ""
|
||||
|
||||
#: supervisor/shared/safe_mode.c:113
|
||||
msgid "MicroPython NLR jump failed. Likely memory corruption.\n"
|
||||
msgstr ""
|
||||
|
||||
#: supervisor/shared/safe_mode.c:115
|
||||
msgid "MicroPython fatal error.\n"
|
||||
msgstr ""
|
||||
|
||||
#: supervisor/shared/safe_mode.c:118
|
||||
msgid ""
|
||||
"The microcontroller's power dipped. Please make sure your power supply "
|
||||
"provides\n"
|
||||
"enough power for the whole circuit and press reset (after ejecting "
|
||||
"CIRCUITPY).\n"
|
||||
msgstr ""
|
||||
|
||||
#: supervisor/shared/safe_mode.c:120
|
||||
msgid ""
|
||||
"The CircuitPython heap was corrupted because the stack was too small.\n"
|
||||
"Please increase stack size limits and press reset (after ejecting "
|
||||
"CIRCUITPY).\n"
|
||||
"If you didn't change the stack, then file an issue here with the contents of "
|
||||
"your CIRCUITPY drive:\n"
|
||||
msgstr ""
|
||||
|
||||
#: supervisor/shared/safe_mode.c:123
|
||||
msgid ""
|
||||
"The reset button was pressed while booting CircuitPython. Press again to "
|
||||
"exit safe mode.\n"
|
||||
msgstr ""
|
||||
|
||||
#~ msgid "Can not add Service."
|
||||
#~ msgstr "Não é possível adicionar o serviço."
|
||||
|
||||
#~ msgid "Can not apply advertisement data. status: 0x%02x"
|
||||
#~ msgstr "Não é possível aplicar dados de anúncio. status: 0x%02x"
|
||||
|
||||
#~ msgid "Baud rate too high for this SPI peripheral"
|
||||
#~ msgstr "Taxa de transmissão muito alta para esse periférico SPI"
|
||||
|
||||
@ -2535,20 +2575,14 @@ msgstr "Erro na USB"
|
||||
#~ msgid "Cannot apply GAP parameters."
|
||||
#~ msgstr "Não é possível aplicar parâmetros GAP."
|
||||
|
||||
#~ msgid "Can encode UUID into the advertisement packet."
|
||||
#~ msgstr "Pode codificar o UUID no pacote de anúncios."
|
||||
|
||||
#~ msgid "Can not apply advertisement data. status: 0x%02x"
|
||||
#~ msgstr "Não é possível aplicar dados de anúncio. status: 0x%02x"
|
||||
|
||||
#~ msgid "Can not apply device name in the stack."
|
||||
#~ msgstr "Não é possível aplicar o nome do dispositivo na pilha."
|
||||
|
||||
#~ msgid "Invalid Service type"
|
||||
#~ msgstr "Tipo de serviço inválido"
|
||||
|
||||
#~ msgid "Can not add Service."
|
||||
#~ msgstr "Não é possível adicionar o serviço."
|
||||
#~ msgid "Can encode UUID into the advertisement packet."
|
||||
#~ msgstr "Pode codificar o UUID no pacote de anúncios."
|
||||
|
||||
#~ msgid "Can not add Characteristic."
|
||||
#~ msgstr "Não é possível adicionar Característica."
|
||||
|
||||
#~ msgid "Can not apply device name in the stack."
|
||||
#~ msgstr "Não é possível aplicar o nome do dispositivo na pilha."
|
||||
|
59
main.c
59
main.c
@ -51,6 +51,7 @@
|
||||
#include "supervisor/shared/autoreload.h"
|
||||
#include "supervisor/shared/translate.h"
|
||||
#include "supervisor/shared/rgb_led_status.h"
|
||||
#include "supervisor/shared/safe_mode.h"
|
||||
#include "supervisor/shared/status_leds.h"
|
||||
#include "supervisor/shared/stack.h"
|
||||
#include "supervisor/serial.h"
|
||||
@ -140,12 +141,6 @@ const char* first_existing_file_in_list(const char ** filenames) {
|
||||
return NULL;
|
||||
}
|
||||
|
||||
void write_compressed(const compressed_string_t* compressed) {
|
||||
char decompressed[compressed->length];
|
||||
decompress(compressed, decompressed);
|
||||
serial_write(decompressed);
|
||||
}
|
||||
|
||||
bool maybe_run_list(const char ** filenames, pyexec_result_t* exec_result) {
|
||||
const char* filename = first_existing_file_in_list(filenames);
|
||||
if (filename == NULL) {
|
||||
@ -166,11 +161,11 @@ bool run_code_py(safe_mode_t safe_mode) {
|
||||
if (serial_connected_at_start) {
|
||||
serial_write("\n");
|
||||
if (autoreload_is_enabled()) {
|
||||
write_compressed(translate("Auto-reload is on. Simply save files over USB to run them or enter REPL to disable.\n"));
|
||||
serial_write_compressed(translate("Auto-reload is on. Simply save files over USB to run them or enter REPL to disable.\n"));
|
||||
} else if (safe_mode != NO_SAFE_MODE) {
|
||||
write_compressed(translate("Running in safe mode! Auto-reload is off.\n"));
|
||||
serial_write_compressed(translate("Running in safe mode! Auto-reload is off.\n"));
|
||||
} else if (!autoreload_is_enabled()) {
|
||||
write_compressed(translate("Auto-reload is off.\n"));
|
||||
serial_write_compressed(translate("Auto-reload is off.\n"));
|
||||
}
|
||||
}
|
||||
#endif
|
||||
@ -184,7 +179,7 @@ bool run_code_py(safe_mode_t safe_mode) {
|
||||
bool found_main = false;
|
||||
|
||||
if (safe_mode != NO_SAFE_MODE) {
|
||||
write_compressed(translate("Running in safe mode! Not running saved code.\n"));
|
||||
serial_write_compressed(translate("Running in safe mode! Not running saved code.\n"));
|
||||
} else {
|
||||
new_status_color(MAIN_RUNNING);
|
||||
|
||||
@ -200,7 +195,7 @@ bool run_code_py(safe_mode_t safe_mode) {
|
||||
if (!found_main){
|
||||
found_main = maybe_run_list(double_extension_filenames, &result);
|
||||
if (found_main) {
|
||||
write_compressed(translate("WARNING: Your code filename has two extensions\n"));
|
||||
serial_write_compressed(translate("WARNING: Your code filename has two extensions\n"));
|
||||
}
|
||||
}
|
||||
stop_mp();
|
||||
@ -239,37 +234,14 @@ bool run_code_py(safe_mode_t safe_mode) {
|
||||
|
||||
if (!serial_connected_at_start) {
|
||||
if (autoreload_is_enabled()) {
|
||||
write_compressed(translate("Auto-reload is on. Simply save files over USB to run them or enter REPL to disable.\n"));
|
||||
serial_write_compressed(translate("Auto-reload is on. Simply save files over USB to run them or enter REPL to disable.\n"));
|
||||
} else {
|
||||
write_compressed(translate("Auto-reload is off.\n"));
|
||||
}
|
||||
}
|
||||
// Output a user safe mode string if its set.
|
||||
#ifdef BOARD_USER_SAFE_MODE
|
||||
if (safe_mode == USER_SAFE_MODE) {
|
||||
serial_write("\n");
|
||||
write_compressed(translate("You requested starting safe mode by "));
|
||||
serial_write(BOARD_USER_SAFE_MODE_ACTION);
|
||||
serial_write("\n");
|
||||
write_compressed(translate("To exit, please reset the board without "));
|
||||
serial_write(BOARD_USER_SAFE_MODE_ACTION);
|
||||
serial_write("\n");
|
||||
} else
|
||||
#endif
|
||||
if (safe_mode != NO_SAFE_MODE) {
|
||||
serial_write("\n");
|
||||
write_compressed(translate("You are running in safe mode which means something really bad happened.\n"));
|
||||
if (safe_mode == HARD_CRASH) {
|
||||
write_compressed(translate("Looks like our core CircuitPython code crashed hard. Whoops!\n"));
|
||||
write_compressed(translate("Please file an issue here with the contents of your CIRCUITPY drive:\n"));
|
||||
serial_write("https://github.com/adafruit/circuitpython/issues\n");
|
||||
} else if (safe_mode == BROWNOUT) {
|
||||
write_compressed(translate("The microcontroller's power dipped. Please make sure your power supply provides\n"));
|
||||
write_compressed(translate("enough power for the whole circuit and press reset (after ejecting CIRCUITPY).\n"));
|
||||
serial_write_compressed(translate("Auto-reload is off.\n"));
|
||||
}
|
||||
}
|
||||
print_safe_mode_message(safe_mode);
|
||||
serial_write("\n");
|
||||
write_compressed(translate("Press any key to enter the REPL. Use CTRL-D to reload."));
|
||||
serial_write_compressed(translate("Press any key to enter the REPL. Use CTRL-D to reload."));
|
||||
}
|
||||
if (serial_connected_before_animation && !serial_connected()) {
|
||||
serial_connected_at_start = false;
|
||||
@ -394,6 +366,11 @@ int __attribute__((used)) main(void) {
|
||||
init_status_leds();
|
||||
rgb_led_status_init();
|
||||
|
||||
// Wait briefly to give a reset window where we'll enter safe mode after the reset.
|
||||
if (safe_mode == NO_SAFE_MODE) {
|
||||
safe_mode = wait_for_safe_mode_reset();
|
||||
}
|
||||
|
||||
stack_init();
|
||||
|
||||
// Create a new filesystem only if we're not in a safe mode.
|
||||
@ -427,7 +404,7 @@ int __attribute__((used)) main(void) {
|
||||
}
|
||||
if (exit_code == PYEXEC_FORCED_EXIT) {
|
||||
if (!first_run) {
|
||||
write_compressed(translate("soft reboot\n"));
|
||||
serial_write_compressed(translate("soft reboot\n"));
|
||||
}
|
||||
first_run = false;
|
||||
skip_repl = run_code_py(safe_mode);
|
||||
@ -455,12 +432,12 @@ void gc_collect(void) {
|
||||
}
|
||||
|
||||
void NORETURN nlr_jump_fail(void *val) {
|
||||
HardFault_Handler();
|
||||
reset_into_safe_mode(MICROPY_NLR_JUMP_FAIL);
|
||||
while (true) {}
|
||||
}
|
||||
|
||||
void NORETURN __fatal_error(const char *msg) {
|
||||
HardFault_Handler();
|
||||
reset_into_safe_mode(MICROPY_FATAL_ERROR);
|
||||
while (true) {}
|
||||
}
|
||||
|
||||
|
@ -78,6 +78,7 @@ endif
|
||||
SRC_C = \
|
||||
main.c \
|
||||
gccollect.c \
|
||||
supervisor/stub/stack.c \
|
||||
supervisor/shared/translate.c
|
||||
|
||||
# Add fmode when compiling with mingw gcc
|
||||
|
@ -81,7 +81,9 @@ BASE_CFLAGS = \
|
||||
-DCIRCUITPY_SAFE_RESTART_WORD=0xDEADBEEF \
|
||||
--param max-inline-insns-single=500
|
||||
|
||||
|
||||
# Use these flags to debug build times and header includes.
|
||||
# -ftime-report
|
||||
# -H
|
||||
# NDEBUG disables assert() statements. This reduces code size pretty dramatically, per tannewt.
|
||||
|
||||
ifeq ($(CHIP_FAMILY), samd21)
|
||||
|
@ -2,9 +2,16 @@ SAMD21x18
|
||||
=========
|
||||
|
||||
This port brings MicroPython to SAMD21x18 based development boards under the name
|
||||
CircuitPython. Supported boards include the Adafruit CircuitPlayground Express,
|
||||
Adafruit Feather M0 Express, Adafruit Metro M0 Express, Arduino Zero, Adafruit
|
||||
Feather M0 Basic and Adafruit M0 Bluefruit LE.
|
||||
CircuitPython. Supported boards include:
|
||||
|
||||
- Adafruit CircuitPlayground Express
|
||||
- Adafruit Feather M0 Basic
|
||||
- Adafruit Feather M0 Express
|
||||
- Adafruit Metro M0 Express
|
||||
- Adafruit M0 Bluefruit LE
|
||||
- Arduino Zero
|
||||
- Arduino MKR Zero
|
||||
|
||||
|
||||
Pinout
|
||||
------
|
||||
@ -15,51 +22,51 @@ different names. The table below matches the pin order in
|
||||
and omits the pins only available on the largest package because all supported
|
||||
boards use smaller version.
|
||||
|
||||
===================== =============== =========================== ====================== ================ ================== ========================= ================ ================
|
||||
===================== =================== =============== =========================== ====================== ================ ================== ========================= ================ ================
|
||||
`microcontroller.pin` `board`
|
||||
--------------------- -------------------------------------------------------------------------------------------------------------------------------------------------------------------------
|
||||
Datasheet arduino_zero circuitplayground_express feather_m0_adalogger feather_m0_basic feather_m0_express gemma_m0 metro_m0_express trinket_m0
|
||||
===================== =============== =========================== ====================== ================ ================== ========================= ================ ================
|
||||
PA00 ``ACCELEROMETER_SDA`` ``APA102_MOSI`` ``APA102_MOSI``
|
||||
PA01 ``ACCELEROMETER_SCL`` ``APA102_SCK`` ``APA102_SCK``
|
||||
PA02 ``A0`` ``A0`` / ``SPEAKER`` ``A0`` ``A0`` ``A0`` ``A0`` / ``D1`` ``A0`` ``D1`` / ``A0``
|
||||
--------------------- ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
|
||||
Datasheet arduino_mkrzero arduino_zero circuitplayground_express feather_m0_adalogger feather_m0_basic feather_m0_express gemma_m0 metro_m0_express trinket_m0
|
||||
===================== =================== =============== =========================== ====================== ================ ================== ========================= ================ ================
|
||||
PA00 ``ACCELEROMETER_SDA`` ``APA102_MOSI`` ``APA102_MOSI``
|
||||
PA01 ``ACCELEROMETER_SCL`` ``APA102_SCK`` ``APA102_SCK``
|
||||
PA02 ``A0`` ``A0`` ``A0`` / ``SPEAKER`` ``A0`` ``A0`` ``A0`` ``A0`` / ``D1`` ``A0`` ``D1`` / ``A0``
|
||||
PA03
|
||||
PB08 ``A1`` ``A7`` / ``TX`` ``A1`` ``A1`` ``A1`` ``A1``
|
||||
PB09 ``A2`` ``A6`` / ``RX`` ``A2`` ``A2`` ``A2`` ``A2``
|
||||
PA04 ``A3`` ``IR_PROXIMITY`` ``A3`` ``A3`` ``A3`` ``D0`` / ``TX`` / ``SDA`` ``A3``
|
||||
PA05 ``A4`` ``A1`` ``A4`` ``A4`` ``A4`` ``D2`` / ``RX`` / ``SCL`` ``A4``
|
||||
PA06 ``D8`` ``A2`` ``D8`` / ``GREEN_LED`` ``NEOPIXEL`` ``D8`` ``D4`` / ``TX``
|
||||
PA07 ``D9`` ``A3`` ``D9`` ``D9`` ``D9`` ``D9`` ``D3`` / ``RX``
|
||||
PA08 ``D4`` ``MICROPHONE_DO`` ``D4`` / ``SD_CS`` ``D4`` ``D0`` / ``SDA``
|
||||
PA09 ``D3`` ``TEMPERATURE`` / ``A9`` ``D3`` ``D2`` / ``SCL``
|
||||
PA10 ``D1`` / ``TX`` ``MICROPHONE_SCK`` ``D1`` / ``TX`` ``D1`` / ``TX`` ``D1`` / ``TX`` ``D1`` / ``TX`` ``D13``
|
||||
PA11 ``D0`` / ``RX`` ``LIGHT`` / ``A8`` ``D0`` / ``RX`` ``D0`` / ``RX`` ``D0`` / ``RX`` ``D0`` / ``RX``
|
||||
PB10 ``MOSI`` ``MOSI`` ``MOSI`` ``MOSI`` ``MOSI``
|
||||
PB11 ``SCK`` ``SCK`` ``SCK`` ``SCK`` ``SCK``
|
||||
PA12 ``MISO`` ``REMOTEIN`` / ``IR_RX`` ``MISO`` ``MISO`` ``MISO`` ``MISO``
|
||||
PA13 ``ACCELEROMETER_INTERRUPT`` ``FLASH_CS``
|
||||
PA14 ``D2`` ``BUTTON_B`` / ``D5`` ``D2``
|
||||
PA15 ``D5`` ``SLIDE_SWITCH`` / ``D7`` ``D5`` ``D5`` ``D5`` ``D5``
|
||||
PA16 ``D11`` ``MISO`` ``D11`` ``D11`` ``D11`` ``D11``
|
||||
PA17 ``D13`` ``D13`` ``D13`` / ``RED_LED`` ``D13`` ``D13`` ``D13``
|
||||
PA18 ``D10`` ``D10`` ``D10`` ``D10`` ``D10``
|
||||
PA19 ``D12`` ``D12`` ``D12`` ``D12`` ``D12``
|
||||
PA20 ``D6`` ``MOSI`` ``D6`` ``D6`` ``D6`` ``D6``
|
||||
PA21 ``D7`` ``SCK`` ``D7`` / ``SD_CD`` ``D7``
|
||||
PA22 ``SDA`` ``SDA`` ``SDA`` ``SDA`` ``SDA``
|
||||
PA23 ``SCL`` ``REMOTEOUT`` / ``IR_TX`` ``SCL`` ``SCL`` ``SCL`` ``L`` / ``D13`` ``SCL``
|
||||
PB08 ``L`` ``A1`` ``A7`` / ``TX`` ``A1`` ``A1`` ``A1`` ``A1``
|
||||
PB09 ``BATTERY`` ``A2`` ``A6`` / ``RX`` ``A2`` ``A2`` ``A2`` ``A2``
|
||||
PA04 ``A3`` ``A3`` ``IR_PROXIMITY`` ``A3`` ``A3`` ``A3`` ``D0`` / ``TX`` / ``SDA`` ``A3``
|
||||
PA05 ``A4`` ``A4`` ``A1`` ``A4`` ``A4`` ``A4`` ``D2`` / ``RX`` / ``SCL`` ``A4``
|
||||
PA06 ``A5`` ``D8`` ``A2`` ``D8`` / ``GREEN_LED`` ``NEOPIXEL`` ``D8`` ``D4`` / ``TX``
|
||||
PA07 ``A6`` ``D9`` ``A3`` ``D9`` ``D9`` ``D9`` ``D9`` ``D3`` / ``RX``
|
||||
PA08 ``D11`` / ``SDA`` ``D4`` ``MICROPHONE_DO`` ``D4`` / ``SD_CS`` ``D4`` ``D0`` / ``SDA``
|
||||
PA09 ``D12`` / ``SCL`` ``D3`` ``TEMPERATURE`` / ``A9`` ``D3`` ``D2`` / ``SCL``
|
||||
PA10 ``D2`` ``D1`` / ``TX`` ``MICROPHONE_SCK`` ``D1`` / ``TX`` ``D1`` / ``TX`` ``D1`` / ``TX`` ``D1`` / ``TX`` ``D13``
|
||||
PA11 ``D3`` ``D0`` / ``RX`` ``LIGHT`` / ``A8`` ``D0`` / ``RX`` ``D0`` / ``RX`` ``D0`` / ``RX`` ``D0`` / ``RX``
|
||||
PB10 ``D4`` ``MOSI`` ``MOSI`` ``MOSI`` ``MOSI`` ``MOSI``
|
||||
PB11 ``D5`` ``SCK`` ``SCK`` ``SCK`` ``SCK`` ``SCK``
|
||||
PA12 ``SD_MOSI`` ``MISO`` ``REMOTEIN`` / ``IR_RX`` ``MISO`` ``MISO`` ``MISO`` ``MISO``
|
||||
PA13 ``SD_SCK`` ``ACCELEROMETER_INTERRUPT`` ``FLASH_CS``
|
||||
PA14 ``SD_CS`` ``D2`` ``BUTTON_B`` / ``D5`` ``D2``
|
||||
PA15 ``SD_MISO`` ``D5`` ``SLIDE_SWITCH`` / ``D7`` ``D5`` ``D5`` ``D5`` ``D5``
|
||||
PA16 ``D8`` / ``MOSI`` ``D11`` ``MISO`` ``D11`` ``D11`` ``D11`` ``D11``
|
||||
PA17 ``D9`` / ``SCK`` ``D13`` ``D13`` ``D13`` / ``RED_LED`` ``D13`` ``D13`` ``D13``
|
||||
PA18 ``D10`` ``D10`` ``D10`` ``D10`` ``D10``
|
||||
PA19 ``D10`` / ``MISO`` ``D12`` ``D12`` ``D12`` ``D12`` ``D12``
|
||||
PA20 ``D6`` ``D6`` ``MOSI`` ``D6`` ``D6`` ``D6`` ``D6``
|
||||
PA21 ``D7`` ``D7`` ``SCK`` ``D7`` / ``SD_CD`` ``D7``
|
||||
PA22 ``D0`` ``SDA`` ``SDA`` ``SDA`` ``SDA`` ``SDA``
|
||||
PA23 ``D1`` ``SCL`` ``REMOTEOUT`` / ``IR_TX`` ``SCL`` ``SCL`` ``SCL`` ``L`` / ``D13`` ``SCL``
|
||||
PA24
|
||||
PA25
|
||||
PB22 ``FLASH_CS``
|
||||
PB23 ``NEOPIXEL`` / ``D8``
|
||||
PA27
|
||||
PA28 ``BUTTON_A`` / ``D4``
|
||||
PB22 ``D14`` / ``TX`` ``FLASH_CS``
|
||||
PB23 ``D13`` / ``RX`` ``NEOPIXEL`` / ``D8``
|
||||
PA27 ``SD_CD``
|
||||
PA28 ``BUTTON_A`` / ``D4``
|
||||
PA29
|
||||
PA30 ``SPEAKER_ENABLE`` ``NEOPIXEL``
|
||||
PA30 ``SPEAKER_ENABLE`` ``NEOPIXEL``
|
||||
PA31
|
||||
PB02 ``A5`` ``A5`` / ``SDA`` ``A5`` ``A5`` ``A5`` ``A5``
|
||||
PB03 ``A4`` / ``SCL``
|
||||
===================== =============== =========================== ====================== ================ ================== ========================= ================ ================
|
||||
PB02 ``A1`` ``A5`` ``A5`` / ``SDA`` ``A5`` ``A5`` ``A5`` ``A5``
|
||||
PB03 ``A2`` ``A4`` / ``SCL``
|
||||
===================== =================== =============== =========================== ====================== ================ ================== ========================= ================ ================
|
||||
|
||||
Here is a table about which pins can do what in CircuitPython terms. However,
|
||||
just because something is listed, doesn't mean it will always work. Existing use
|
||||
|
@ -1 +1 @@
|
||||
Subproject commit 4007ba846bc937410f7eb8350e62e0f5fe9ed8f5
|
||||
Subproject commit 039b5f3bbc3f4ba4421e581db290560d59fef625
|
@ -29,22 +29,29 @@
|
||||
#include "tick.h"
|
||||
#include "supervisor/usb.h"
|
||||
|
||||
#include "py/runtime.h"
|
||||
#include "shared-module/displayio/__init__.h"
|
||||
#include "shared-module/network/__init__.h"
|
||||
#include "supervisor/shared/stack.h"
|
||||
|
||||
volatile uint64_t last_finished_tick = 0;
|
||||
|
||||
bool stack_ok_so_far = true;
|
||||
|
||||
void run_background_tasks(void) {
|
||||
assert_heap_ok();
|
||||
#if (defined(SAMD21) && defined(PIN_PA02)) || defined(SAMD51)
|
||||
audio_dma_background();
|
||||
#endif
|
||||
#ifdef CIRCUITPY_DISPLAYIO
|
||||
displayio_refresh_display();
|
||||
#endif
|
||||
|
||||
#if MICROPY_PY_NETWORK
|
||||
network_module_background();
|
||||
#endif
|
||||
usb_background();
|
||||
assert_heap_ok();
|
||||
|
||||
last_finished_tick = ticks_ms;
|
||||
}
|
||||
|
@ -30,6 +30,7 @@
|
||||
#include <stdbool.h>
|
||||
|
||||
void run_background_tasks(void);
|
||||
void run_background_vm_tasks(void);
|
||||
bool background_tasks_ok(void);
|
||||
|
||||
#endif // MICROPY_INCLUDED_ATMEL_SAMD_BACKGROUND_H
|
||||
|
@ -5,6 +5,8 @@
|
||||
#define MICROPY_PORT_B (0)
|
||||
#define MICROPY_PORT_C (0)
|
||||
|
||||
#define MICROPY_HW_LED_STATUS (&pin_PB23)
|
||||
|
||||
#define CIRCUITPY_INTERNAL_NVM_SIZE 0
|
||||
|
||||
#define BOARD_FLASH_SIZE (0x00040000 - 0x2000 - 0x010000)
|
||||
|
39
ports/atmel-samd/boards/arduino_mkrzero/board.c
Normal file
39
ports/atmel-samd/boards/arduino_mkrzero/board.c
Normal file
@ -0,0 +1,39 @@
|
||||
/*
|
||||
* This file is part of the MicroPython project, http://micropython.org/
|
||||
*
|
||||
* The MIT License (MIT)
|
||||
*
|
||||
* Copyright (c) 2017 Scott Shawcroft for Adafruit Industries
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
* of this software and associated documentation files (the "Software"), to deal
|
||||
* in the Software without restriction, including without limitation the rights
|
||||
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
* copies of the Software, and to permit persons to whom the Software is
|
||||
* furnished to do so, subject to the following conditions:
|
||||
*
|
||||
* The above copyright notice and this permission notice shall be included in
|
||||
* all copies or substantial portions of the Software.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||
* THE SOFTWARE.
|
||||
*/
|
||||
|
||||
#include "boards/board.h"
|
||||
#include "mpconfigboard.h"
|
||||
#include "hal/include/hal_gpio.h"
|
||||
|
||||
void board_init(void) {
|
||||
}
|
||||
|
||||
bool board_requests_safe_mode(void) {
|
||||
return false;
|
||||
}
|
||||
|
||||
void reset_board(void) {
|
||||
}
|
24
ports/atmel-samd/boards/arduino_mkrzero/mpconfigboard.h
Normal file
24
ports/atmel-samd/boards/arduino_mkrzero/mpconfigboard.h
Normal file
@ -0,0 +1,24 @@
|
||||
#define MICROPY_HW_BOARD_NAME "Arduino MKR Zero"
|
||||
#define MICROPY_HW_MCU_NAME "samd21g18"
|
||||
|
||||
#define MICROPY_PORT_A (0)
|
||||
#define MICROPY_PORT_B (0)
|
||||
#define MICROPY_PORT_C (0)
|
||||
|
||||
#define CIRCUITPY_INTERNAL_NVM_SIZE 0
|
||||
|
||||
#define BOARD_FLASH_SIZE (0x00040000 - 0x2000 - 0x010000)
|
||||
|
||||
#define DEFAULT_I2C_BUS_SCL (&pin_PA09)
|
||||
#define DEFAULT_I2C_BUS_SDA (&pin_PA08)
|
||||
|
||||
#define DEFAULT_SPI_BUS_SCK (&pin_PA17)
|
||||
#define DEFAULT_SPI_BUS_MOSI (&pin_PA16)
|
||||
#define DEFAULT_SPI_BUS_MISO (&pin_PA19)
|
||||
|
||||
#define DEFAULT_UART_BUS_RX (&pin_PB23)
|
||||
#define DEFAULT_UART_BUS_TX (&pin_PB22)
|
||||
|
||||
// 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/arduino_mkrzero/mpconfigboard.mk
Normal file
11
ports/atmel-samd/boards/arduino_mkrzero/mpconfigboard.mk
Normal file
@ -0,0 +1,11 @@
|
||||
LD_FILE = boards/samd21x18-bootloader.ld
|
||||
USB_VID = 0x239A
|
||||
USB_PID = 0x8035
|
||||
USB_PRODUCT = "Arduino MKRZero"
|
||||
USB_MANUFACTURER = "Arduino"
|
||||
|
||||
INTERNAL_FLASH_FILESYSTEM = 1
|
||||
LONGINT_IMPL = NONE
|
||||
|
||||
CHIP_VARIANT = SAMD21G18A
|
||||
CHIP_FAMILY = samd21
|
47
ports/atmel-samd/boards/arduino_mkrzero/pins.c
Normal file
47
ports/atmel-samd/boards/arduino_mkrzero/pins.c
Normal file
@ -0,0 +1,47 @@
|
||||
#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_PB02) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_A2), MP_ROM_PTR(&pin_PB03) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_A3), MP_ROM_PTR(&pin_PA04) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_A4), MP_ROM_PTR(&pin_PA05) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_A5), MP_ROM_PTR(&pin_PA06) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_A6), MP_ROM_PTR(&pin_PA07) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_D0), MP_ROM_PTR(&pin_PA22) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_D1), MP_ROM_PTR(&pin_PA23) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_D2), MP_ROM_PTR(&pin_PA10) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_D3), MP_ROM_PTR(&pin_PA11) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_D4), MP_ROM_PTR(&pin_PB10) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_D5), MP_ROM_PTR(&pin_PB11) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_D6), MP_ROM_PTR(&pin_PA20) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_D7), MP_ROM_PTR(&pin_PA21) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_D8), MP_ROM_PTR(&pin_PA16) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_MOSI), MP_ROM_PTR(&pin_PA16) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_D9), MP_ROM_PTR(&pin_PA17) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_SCK), MP_ROM_PTR(&pin_PA17) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_D10), MP_ROM_PTR(&pin_PA19) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_MISO), MP_ROM_PTR(&pin_PA19) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_D11), MP_ROM_PTR(&pin_PA08) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_SDA), MP_ROM_PTR(&pin_PA08) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_D12), MP_ROM_PTR(&pin_PA09) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_SCL), MP_ROM_PTR(&pin_PA09) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_D13), MP_ROM_PTR(&pin_PB23) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_RX), MP_ROM_PTR(&pin_PB23) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_D14), MP_ROM_PTR(&pin_PB22) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_TX), MP_ROM_PTR(&pin_PB22) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_SD_SCK), MP_ROM_PTR(&pin_PA13) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_SD_MOSI), MP_ROM_PTR(&pin_PA12) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_SD_MISO), MP_ROM_PTR(&pin_PA15) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_SD_CS), MP_ROM_PTR(&pin_PA14) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_SD_CD), MP_ROM_PTR(&pin_PA27) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_L), MP_ROM_PTR(&pin_PB08) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_VOLTAGE_MONITOR), MP_ROM_PTR(&pin_PB09) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_BATTERY), MP_ROM_PTR(&pin_PB09) },
|
||||
{ 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);
|
@ -1,7 +1,8 @@
|
||||
#define MICROPY_HW_BOARD_NAME "Arduino Zero"
|
||||
#define MICROPY_HW_MCU_NAME "samd21g18"
|
||||
|
||||
// #define MICROPY_HW_LED_MSC &pin_PA17 // red
|
||||
#define MICROPY_HW_LED_STATUS (&pin_PA17)
|
||||
|
||||
#define MICROPY_HW_LED_TX &pin_PA27
|
||||
#define MICROPY_HW_LED_RX &pin_PB03
|
||||
|
||||
|
@ -1,6 +1,8 @@
|
||||
#define MICROPY_HW_BOARD_NAME "Adafruit CircuitPlayground Express"
|
||||
#define MICROPY_HW_MCU_NAME "samd21g18"
|
||||
|
||||
#define MICROPY_HW_LED_STATUS (&pin_PA17)
|
||||
|
||||
// Don't allow touch on A0 (PA02), because it's connected to the speaker.
|
||||
#define PA02_NO_TOUCH (true)
|
||||
|
||||
|
@ -1,6 +1,8 @@
|
||||
#define MICROPY_HW_BOARD_NAME "Adafruit CircuitPlayground Express with Crickit libraries"
|
||||
#define MICROPY_HW_MCU_NAME "samd21g18"
|
||||
|
||||
#define MICROPY_HW_LED_STATUS (&pin_PA17)
|
||||
|
||||
// No framebuf on CRICKit version to save space.
|
||||
#define MICROPY_PY_FRAMEBUF (0)
|
||||
|
||||
|
@ -20,14 +20,6 @@
|
||||
|
||||
#define BOARD_FLASH_SIZE (FLASH_SIZE - 0x4000 - CIRCUITPY_INTERNAL_NVM_SIZE)
|
||||
|
||||
#include "external_flash/devices.h"
|
||||
|
||||
// these are the labeled pins (SDA, SCL, SCK, MOSI, MISO, etc)
|
||||
#define EXTERNAL_FLASH_DEVICE_COUNT 1
|
||||
#define EXTERNAL_FLASH_DEVICES W25Q128JV_PM
|
||||
|
||||
#include "external_flash/external_flash.h"
|
||||
|
||||
#define DEFAULT_I2C_BUS_SCL (&pin_PB09)
|
||||
#define DEFAULT_I2C_BUS_SDA (&pin_PB08)
|
||||
|
||||
|
@ -5,6 +5,8 @@ USB_PRODUCT = "CP32-M4"
|
||||
USB_MANUFACTURER = "Nadda-Reel Company LLC"
|
||||
|
||||
QSPI_FLASH_FILESYSTEM = 1
|
||||
EXTERNAL_FLASH_DEVICE_COUNT = 1
|
||||
EXTERNAL_FLASH_DEVICES = "W25Q128JV_PM"
|
||||
|
||||
CHIP_VARIANT = SAMD51G19A
|
||||
CHIP_FAMILY = samd51
|
||||
|
@ -1,5 +1,6 @@
|
||||
// LEDs
|
||||
//#define MICROPY_HW_LED_MSC PIN_PA17 // red
|
||||
#define MICROPY_HW_LED_STATUS (&pin_PA17)
|
||||
|
||||
#define MICROPY_HW_BOARD_NAME "Adafruit Feather M0 Adalogger"
|
||||
#define MICROPY_HW_MCU_NAME "samd21g18"
|
||||
|
||||
|
@ -1,5 +1,5 @@
|
||||
// LEDs
|
||||
//#define MICROPY_HW_LED_MSC PIN_PA17 // red
|
||||
#define MICROPY_HW_LED_STATUS (&pin_PA17)
|
||||
|
||||
#define MICROPY_HW_BOARD_NAME "Adafruit Feather M0 Basic"
|
||||
#define MICROPY_HW_MCU_NAME "samd21g18"
|
||||
|
@ -1,6 +1,8 @@
|
||||
#define MICROPY_HW_BOARD_NAME "Adafruit Feather M0 Express"
|
||||
#define MICROPY_HW_MCU_NAME "samd21g18"
|
||||
|
||||
#define MICROPY_HW_LED_STATUS (&pin_PA17)
|
||||
|
||||
#define MICROPY_HW_NEOPIXEL (&pin_PA06)
|
||||
|
||||
#define SPI_FLASH_MOSI_PIN &pin_PA08
|
||||
|
@ -1,6 +1,8 @@
|
||||
#define MICROPY_HW_BOARD_NAME "Adafruit Feather M0 Express with Crickit libraries"
|
||||
#define MICROPY_HW_MCU_NAME "samd21g18"
|
||||
|
||||
#define MICROPY_HW_LED_STATUS (&pin_PA17)
|
||||
|
||||
#define MICROPY_HW_NEOPIXEL (&pin_PA06)
|
||||
|
||||
#define SPI_FLASH_MOSI_PIN &pin_PA08
|
||||
|
@ -1,5 +1,5 @@
|
||||
// LEDs
|
||||
//#define MICROPY_HW_LED_MSC PIN_PA17 // red
|
||||
#define MICROPY_HW_LED_STATUS (&pin_PA17)
|
||||
|
||||
#define MICROPY_HW_BOARD_NAME "Adafruit Feather M0 RFM69"
|
||||
#define MICROPY_HW_MCU_NAME "samd21g18"
|
||||
|
@ -1,5 +1,5 @@
|
||||
// LEDs
|
||||
//#define MICROPY_HW_LED_MSC PIN_PA17 // red
|
||||
#define MICROPY_HW_LED_STATUS (&pin_PA17)
|
||||
|
||||
#define MICROPY_HW_BOARD_NAME "Adafruit Feather M0 RFM9x"
|
||||
#define MICROPY_HW_MCU_NAME "samd21g18"
|
||||
|
@ -3,6 +3,8 @@
|
||||
#define MICROPY_HW_BOARD_NAME "Hacked Feather M0 Express with 8Mbyte SPI flash"
|
||||
#define MICROPY_HW_MCU_NAME "samd21g18"
|
||||
|
||||
#define MICROPY_HW_LED_STATUS (&pin_PA17)
|
||||
|
||||
#define MICROPY_HW_NEOPIXEL (&pin_PA06)
|
||||
|
||||
#define SPI_FLASH_MOSI_PIN &pin_PA08
|
||||
|
@ -5,6 +5,7 @@
|
||||
|
||||
// Rev E
|
||||
|
||||
#define MICROPY_HW_LED_STATUS (&pin_PA23)
|
||||
#define MICROPY_HW_NEOPIXEL (&pin_PB03)
|
||||
|
||||
// These are pins not to reset.
|
||||
|
@ -1,6 +1,7 @@
|
||||
#define MICROPY_HW_BOARD_NAME "Adafruit Feather RadioFruit Zigbee"
|
||||
#define MICROPY_HW_MCU_NAME "samr21g18"
|
||||
|
||||
#define MICROPY_HW_LED_STATUS (&pin_PA27)
|
||||
#define MICROPY_HW_NEOPIXEL (&pin_PA22)
|
||||
|
||||
#define SPI_FLASH_MOSI_PIN &pin_PA31
|
||||
|
@ -1,6 +1,8 @@
|
||||
#define MICROPY_HW_BOARD_NAME "Adafruit Gemma M0"
|
||||
#define MICROPY_HW_MCU_NAME "samd21e18"
|
||||
|
||||
#define MICROPY_HW_LED_STATUS (&pin_PA23)
|
||||
|
||||
#define MICROPY_HW_APA102_MOSI (&pin_PA00)
|
||||
#define MICROPY_HW_APA102_SCK (&pin_PA01)
|
||||
|
||||
|
@ -5,6 +5,8 @@
|
||||
|
||||
// This is for Rev B which is green and has the SD card slot at the edge of the board.
|
||||
|
||||
#define MICROPY_HW_LED_STATUS (&pin_PB01)
|
||||
|
||||
#define MICROPY_HW_LED_TX &(pin_PC30)
|
||||
#define MICROPY_HW_LED_RX &(pin_PC31)
|
||||
|
||||
|
@ -1,6 +1,7 @@
|
||||
#define MICROPY_HW_BOARD_NAME "HalloWing M0 Express"
|
||||
#define MICROPY_HW_MCU_NAME "samd21g18"
|
||||
|
||||
#define MICROPY_HW_LED_STATUS (&pin_PA23)
|
||||
#define MICROPY_HW_NEOPIXEL (&pin_PA12)
|
||||
|
||||
#define SPI_FLASH_MOSI_PIN &pin_PB10
|
||||
|
@ -1,6 +1,8 @@
|
||||
#define MICROPY_HW_BOARD_NAME "Adafruit ItsyBitsy M0 Express"
|
||||
#define MICROPY_HW_MCU_NAME "samd21g18"
|
||||
|
||||
#define MICROPY_HW_LED_STATUS (&pin_PA17)
|
||||
|
||||
#define CIRCUITPY_BITBANG_APA102
|
||||
#define MICROPY_HW_APA102_MOSI (&pin_PA01)
|
||||
#define MICROPY_HW_APA102_SCK (&pin_PA00)
|
||||
|
@ -4,6 +4,8 @@
|
||||
#define CIRCUITPY_MCU_FAMILY samd51
|
||||
|
||||
// This is for Rev B
|
||||
#define MICROPY_HW_LED_STATUS (&pin_PA22)
|
||||
|
||||
#define MICROPY_HW_APA102_MOSI (&pin_PB03)
|
||||
#define MICROPY_HW_APA102_SCK (&pin_PB02)
|
||||
|
||||
|
@ -1,6 +1,8 @@
|
||||
#define MICROPY_HW_BOARD_NAME "Meow Meow"
|
||||
#define MICROPY_HW_MCU_NAME "samd21g18"
|
||||
|
||||
#define MICROPY_HW_LED_STATUS (&pin_PB23)
|
||||
|
||||
// These are pins not to reset.
|
||||
#define MICROPY_PORT_A (0)
|
||||
#define MICROPY_PORT_B (0)
|
||||
|
@ -1,6 +1,7 @@
|
||||
#define MICROPY_HW_BOARD_NAME "Adafruit Metro M0 Express"
|
||||
#define MICROPY_HW_MCU_NAME "samd21g18"
|
||||
|
||||
#define MICROPY_HW_LED_STATUS (&pin_PA17)
|
||||
#define MICROPY_HW_LED_TX &pin_PA27
|
||||
// Comment this out if you have trouble connecting over SWD. It's one of the SWD pins.
|
||||
#define MICROPY_HW_LED_RX &pin_PA31
|
||||
|
@ -8,6 +8,8 @@
|
||||
#define MICROPY_HW_LED_TX (&pin_PA27)
|
||||
#define MICROPY_HW_LED_RX (&pin_PB06)
|
||||
|
||||
#define MICROPY_HW_LED_STATUS (&pin_PA16)
|
||||
|
||||
#define MICROPY_HW_NEOPIXEL (&pin_PB22)
|
||||
|
||||
// These are pins not to reset.
|
||||
|
39
ports/atmel-samd/boards/mini_sam_m4/board.c
Normal file
39
ports/atmel-samd/boards/mini_sam_m4/board.c
Normal file
@ -0,0 +1,39 @@
|
||||
/*
|
||||
* This file is part of the MicroPython project, http://micropython.org/
|
||||
*
|
||||
* The MIT License (MIT)
|
||||
*
|
||||
* Copyright (c) 2017 Scott Shawcroft for Adafruit Industries
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
* of this software and associated documentation files (the "Software"), to deal
|
||||
* in the Software without restriction, including without limitation the rights
|
||||
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
* copies of the Software, and to permit persons to whom the Software is
|
||||
* furnished to do so, subject to the following conditions:
|
||||
*
|
||||
* The above copyright notice and this permission notice shall be included in
|
||||
* all copies or substantial portions of the Software.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||
* THE SOFTWARE.
|
||||
*/
|
||||
|
||||
#include "boards/board.h"
|
||||
#include "mpconfigboard.h"
|
||||
#include "hal/include/hal_gpio.h"
|
||||
|
||||
void board_init(void) {
|
||||
}
|
||||
|
||||
bool board_requests_safe_mode(void) {
|
||||
return false;
|
||||
}
|
||||
|
||||
void reset_board(void) {
|
||||
}
|
42
ports/atmel-samd/boards/mini_sam_m4/mpconfigboard.h
Normal file
42
ports/atmel-samd/boards/mini_sam_m4/mpconfigboard.h
Normal file
@ -0,0 +1,42 @@
|
||||
#define MICROPY_HW_BOARD_NAME "Mini SAM M4"
|
||||
#define MICROPY_HW_MCU_NAME "samd51g19"
|
||||
|
||||
#define CIRCUITPY_MCU_FAMILY samd51
|
||||
|
||||
#define MICROPY_HW_LED_STATUS (&pin_PA15)
|
||||
|
||||
// RGB Status LED Pins
|
||||
#define MICROPY_HW_APA102_MOSI (&pin_PB03)
|
||||
#define MICROPY_HW_APA102_SCK (&pin_PB02)
|
||||
|
||||
#define CIRCUITPY_BITBANG_APA102
|
||||
|
||||
// These are pins not to reset.
|
||||
// QSPI Data pins
|
||||
#define MICROPY_PORT_A (PORT_PA08 | PORT_PA09 | PORT_PA10 | PORT_PA11)
|
||||
// RGB Status LED pins, QSPI CS, and QSPI SCK
|
||||
#define MICROPY_PORT_B (PORT_PB02 | PORT_PB03 | PORT_PB10 | PORT_PB11)
|
||||
#define MICROPY_PORT_C (0)
|
||||
#define MICROPY_PORT_D (0)
|
||||
|
||||
#define AUTORESET_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 CIRCUITPY_INTERNAL_NVM_SIZE 8192
|
||||
|
||||
#define BOARD_FLASH_SIZE (FLASH_SIZE - 0x4000 - CIRCUITPY_INTERNAL_NVM_SIZE)
|
||||
|
||||
#define DEFAULT_I2C_BUS_SCL (&pin_PA13)
|
||||
#define DEFAULT_I2C_BUS_SDA (&pin_PA12)
|
||||
|
||||
#define DEFAULT_SPI_BUS_SCK (&pin_PA01)
|
||||
#define DEFAULT_SPI_BUS_MOSI (&pin_PB22)
|
||||
#define DEFAULT_SPI_BUS_MISO (&pin_PB23)
|
||||
|
||||
#define DEFAULT_UART_BUS_RX (&pin_PA16)
|
||||
#define DEFAULT_UART_BUS_TX (&pin_PA17)
|
||||
|
||||
// USB is always used internally so skip the pin objects for it.
|
||||
#define IGNORE_PIN_PA24 1
|
||||
#define IGNORE_PIN_PA25 1
|
13
ports/atmel-samd/boards/mini_sam_m4/mpconfigboard.mk
Normal file
13
ports/atmel-samd/boards/mini_sam_m4/mpconfigboard.mk
Normal file
@ -0,0 +1,13 @@
|
||||
LD_FILE = boards/samd51x19-bootloader-external-flash.ld
|
||||
USB_VID = 0x1209
|
||||
USB_PID = 0x2017
|
||||
USB_PRODUCT = "Mini SAM M4"
|
||||
USB_MANUFACTURER = "Benjamin Shockley"
|
||||
|
||||
QSPI_FLASH_FILESYSTEM = 1
|
||||
EXTERNAL_FLASH_DEVICE_COUNT = 1
|
||||
EXTERNAL_FLASH_DEVICES = "W25Q16JV_IM"
|
||||
LONGINT_IMPL = MPZ
|
||||
|
||||
CHIP_VARIANT = SAMD51G19A
|
||||
CHIP_FAMILY = samd51
|
44
ports/atmel-samd/boards/mini_sam_m4/pins.c
Normal file
44
ports/atmel-samd/boards/mini_sam_m4/pins.c
Normal file
@ -0,0 +1,44 @@
|
||||
#include "shared-bindings/board/__init__.h"
|
||||
|
||||
#include "board_busses.h"
|
||||
|
||||
// This mapping only includes functional names because pins broken
|
||||
// out on connectors are labeled with their MCU name available from
|
||||
// microcontroller.pin.
|
||||
STATIC const mp_rom_map_elem_t board_global_dict_table[] = {
|
||||
{ MP_OBJ_NEW_QSTR(MP_QSTR_A0), MP_ROM_PTR(&pin_PA02) },
|
||||
{ MP_OBJ_NEW_QSTR(MP_QSTR_A1), MP_ROM_PTR(&pin_PB08) },
|
||||
{ MP_OBJ_NEW_QSTR(MP_QSTR_A2), MP_ROM_PTR(&pin_PB09) },
|
||||
{ MP_OBJ_NEW_QSTR(MP_QSTR_A3), MP_ROM_PTR(&pin_PA04) },
|
||||
{ MP_OBJ_NEW_QSTR(MP_QSTR_A4), MP_ROM_PTR(&pin_PA05) },
|
||||
{ MP_OBJ_NEW_QSTR(MP_QSTR_A5), MP_ROM_PTR(&pin_PA06) },
|
||||
{ MP_OBJ_NEW_QSTR(MP_QSTR_A6), MP_ROM_PTR(&pin_PA07) },
|
||||
{ MP_OBJ_NEW_QSTR(MP_QSTR_AREF), MP_ROM_PTR(&pin_PA03) },
|
||||
|
||||
{ MP_OBJ_NEW_QSTR(MP_QSTR_D0), MP_ROM_PTR(&pin_PA16) },
|
||||
{ MP_OBJ_NEW_QSTR(MP_QSTR_RX), MP_ROM_PTR(&pin_PA16) },
|
||||
{ MP_OBJ_NEW_QSTR(MP_QSTR_D1), MP_ROM_PTR(&pin_PA17) },
|
||||
{ MP_OBJ_NEW_QSTR(MP_QSTR_TX), MP_ROM_PTR(&pin_PA17) },
|
||||
{ MP_OBJ_NEW_QSTR(MP_QSTR_D2), MP_ROM_PTR(&pin_PA07) },
|
||||
{ MP_OBJ_NEW_QSTR(MP_QSTR_D3), MP_ROM_PTR(&pin_PA19) },
|
||||
{ MP_OBJ_NEW_QSTR(MP_QSTR_D4), MP_ROM_PTR(&pin_PA20) },
|
||||
{ MP_OBJ_NEW_QSTR(MP_QSTR_D5), MP_ROM_PTR(&pin_PA21) },
|
||||
{ MP_OBJ_NEW_QSTR(MP_QSTR_D6), MP_ROM_PTR(&pin_PA00) },
|
||||
{ MP_OBJ_NEW_QSTR(MP_QSTR_BUTTON), MP_ROM_PTR(&pin_PA00) },
|
||||
{ MP_OBJ_NEW_QSTR(MP_QSTR_D7), MP_ROM_PTR(&pin_PA15) },
|
||||
{ MP_OBJ_NEW_QSTR(MP_QSTR_LED), MP_ROM_PTR(&pin_PA15) },
|
||||
|
||||
{ MP_OBJ_NEW_QSTR(MP_QSTR_SDA), MP_ROM_PTR(&pin_PA12) },
|
||||
{ MP_OBJ_NEW_QSTR(MP_QSTR_SCL), MP_ROM_PTR(&pin_PA13) },
|
||||
|
||||
{ MP_OBJ_NEW_QSTR(MP_QSTR_SCK), MP_ROM_PTR(&pin_PA01) },
|
||||
{ MP_OBJ_NEW_QSTR(MP_QSTR_MOSI), MP_ROM_PTR(&pin_PB22) },
|
||||
{ MP_OBJ_NEW_QSTR(MP_QSTR_MISO), MP_ROM_PTR(&pin_PB23) },
|
||||
|
||||
{ MP_ROM_QSTR(MP_QSTR_APA102_MOSI), MP_ROM_PTR(&pin_PB03) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_APA102_SCK), MP_ROM_PTR(&pin_PB02) },
|
||||
{ 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);
|
@ -2,6 +2,8 @@
|
||||
#define MICROPY_HW_MCU_NAME "samd21e18"
|
||||
|
||||
// Rev B - Black
|
||||
#define MICROPY_HW_LED_STATUS (&pin_PA10)
|
||||
|
||||
#define MICROPY_HW_APA102_MOSI (&pin_PA00)
|
||||
#define MICROPY_HW_APA102_SCK (&pin_PA01)
|
||||
|
||||
|
@ -2,6 +2,7 @@
|
||||
#define MICROPY_HW_MCU_NAME "samd21e18"
|
||||
|
||||
// Rev B - Black
|
||||
#define MICROPY_HW_LED_STATUS (&pin_PA10)
|
||||
// #define MICROPY_HW_APA102_MOSI (&pin_PA00)
|
||||
// #define MICROPY_HW_APA102_SCK (&pin_PA01)
|
||||
|
||||
|
@ -28,6 +28,7 @@
|
||||
#include "shared-bindings/busio/UART.h"
|
||||
|
||||
#include "mpconfigport.h"
|
||||
#include "lib/utils/interrupt_char.h"
|
||||
#include "py/gc.h"
|
||||
#include "py/mperrno.h"
|
||||
#include "py/runtime.h"
|
||||
@ -53,7 +54,7 @@ static void usart_async_rxc_callback(const struct usart_async_descriptor *const
|
||||
|
||||
void common_hal_busio_uart_construct(busio_uart_obj_t *self,
|
||||
const mcu_pin_obj_t * tx, const mcu_pin_obj_t * rx, uint32_t baudrate,
|
||||
uint8_t bits, uart_parity_t parity, uint8_t stop, uint32_t timeout,
|
||||
uint8_t bits, uart_parity_t parity, uint8_t stop, mp_float_t timeout,
|
||||
uint8_t receiver_buffer_size) {
|
||||
Sercom* sercom = NULL;
|
||||
uint8_t sercom_index = 255; // Unset index
|
||||
@ -74,7 +75,7 @@ void common_hal_busio_uart_construct(busio_uart_obj_t *self,
|
||||
|
||||
self->baudrate = baudrate;
|
||||
self->character_bits = bits;
|
||||
self->timeout_ms = timeout;
|
||||
self->timeout_ms = timeout * 1000;
|
||||
|
||||
// This assignment is only here because the usart_async routines take a *const argument.
|
||||
struct usart_async_descriptor * const usart_desc_p = (struct usart_async_descriptor * const) &self->usart_desc;
|
||||
@ -272,12 +273,17 @@ size_t common_hal_busio_uart_read(busio_uart_obj_t *self, uint8_t *data, size_t
|
||||
start_ticks = ticks_ms;
|
||||
}
|
||||
#ifdef MICROPY_VM_HOOK_LOOP
|
||||
MICROPY_VM_HOOK_LOOP
|
||||
#endif
|
||||
// If we are zero timeout, make sure we don't loop again (in the event
|
||||
// we read in under 1ms)
|
||||
if (self->timeout_ms == 0)
|
||||
MICROPY_VM_HOOK_LOOP ;
|
||||
// Allow user to break out of a timeout with a KeyboardInterrupt.
|
||||
if (mp_hal_is_interrupted()) {
|
||||
break;
|
||||
}
|
||||
#endif
|
||||
// If we are zero timeout, make sure we don't loop again (in the event
|
||||
// we read in under 1ms)
|
||||
if (self->timeout_ms == 0) {
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (total_read == 0) {
|
||||
@ -324,10 +330,8 @@ size_t common_hal_busio_uart_write(busio_uart_obj_t *self, const uint8_t *data,
|
||||
return MP_STREAM_ERROR;
|
||||
}
|
||||
|
||||
struct usart_async_status async_status;
|
||||
// Could return ERR_BUSY, but if that's true there's already a problem.
|
||||
usart_async_get_status(usart_desc_p, &async_status);
|
||||
return async_status.txcnt;
|
||||
// All the characters got written.
|
||||
return len;
|
||||
}
|
||||
|
||||
uint32_t common_hal_busio_uart_get_baudrate(busio_uart_obj_t *self) {
|
||||
|
@ -28,6 +28,8 @@
|
||||
|
||||
#include "hal_flash.h"
|
||||
|
||||
#include "supervisor/shared/stack.h"
|
||||
|
||||
#include <stdint.h>
|
||||
#include <string.h>
|
||||
|
||||
@ -42,6 +44,7 @@ bool common_hal_nvm_bytearray_set_bytes(nvm_bytearray_obj_t *self,
|
||||
struct flash_descriptor desc;
|
||||
desc.dev.hw = NVMCTRL;
|
||||
flash_write(&desc, (uint32_t) self->start_address + start_index, values, len);
|
||||
assert_heap_ok();
|
||||
return true;
|
||||
}
|
||||
|
||||
|
@ -182,7 +182,7 @@ typedef long mp_off_t;
|
||||
#define MICROPY_PY_SYS_PLATFORM "MicroChip SAMD51"
|
||||
#define PORT_HEAP_SIZE (0x20000) // 128KiB
|
||||
#define SPI_FLASH_MAX_BAUDRATE 24000000
|
||||
#define CIRCUITPY_DEFAULT_STACK_SIZE 8192
|
||||
#define CIRCUITPY_DEFAULT_STACK_SIZE 0x6000
|
||||
#define MICROPY_CPYTHON_COMPAT (1)
|
||||
#define MICROPY_MODULE_WEAK_LINKS (1)
|
||||
#define MICROPY_PY_BUILTINS_NOTIMPLEMENTED (1)
|
||||
@ -432,10 +432,6 @@ extern const struct _mp_obj_module_t wiznet_module;
|
||||
|
||||
#define MP_STATE_PORT MP_STATE_VM
|
||||
|
||||
void run_background_tasks(void);
|
||||
#define MICROPY_VM_HOOK_LOOP run_background_tasks();
|
||||
#define MICROPY_VM_HOOK_RETURN run_background_tasks();
|
||||
|
||||
#include "peripherals/samd/dma.h"
|
||||
|
||||
#include "supervisor/flash_root_pointers.h"
|
||||
@ -454,6 +450,9 @@ void run_background_tasks(void);
|
||||
mp_obj_t gamepad_singleton; \
|
||||
NETWORK_ROOT_POINTERS \
|
||||
|
||||
void run_background_tasks(void);
|
||||
#define MICROPY_VM_HOOK_LOOP run_background_tasks();
|
||||
#define MICROPY_VM_HOOK_RETURN run_background_tasks();
|
||||
|
||||
#define CIRCUITPY_AUTORELOAD_DELAY_MS 500
|
||||
#define CIRCUITPY_BOOT_OUTPUT_FILE "/boot_out.txt"
|
||||
|
@ -1 +1 @@
|
||||
Subproject commit f20fcf642b5654ee68d7d551ea7db39716ef83bf
|
||||
Subproject commit f3bd5b1fd96f2ab0dde5cad61d41e607061ed46c
|
@ -64,6 +64,9 @@
|
||||
#include "reset.h"
|
||||
#include "tick.h"
|
||||
|
||||
#include "supervisor/shared/safe_mode.h"
|
||||
#include "supervisor/shared/stack.h"
|
||||
|
||||
#include "tusb.h"
|
||||
|
||||
#ifdef CIRCUITPY_GAMEPAD_TICKS
|
||||
@ -80,7 +83,7 @@ extern volatile bool mp_msc_enabled;
|
||||
#define TRACE_BUFFER_SIZE (1 << (TRACE_BUFFER_MAGNITUDE_PACKETS + 1))
|
||||
// Size in bytes. 4 bytes per uint32_t.
|
||||
#define TRACE_BUFFER_SIZE_BYTES (TRACE_BUFFER_SIZE << 2)
|
||||
__attribute__((__aligned__(TRACE_BUFFER_SIZE_BYTES))) uint32_t mtb[TRACE_BUFFER_SIZE];
|
||||
__attribute__((__aligned__(TRACE_BUFFER_SIZE_BYTES))) uint32_t mtb[TRACE_BUFFER_SIZE] = {0};
|
||||
#endif
|
||||
|
||||
safe_mode_t port_init(void) {
|
||||
@ -153,35 +156,6 @@ safe_mode_t port_init(void) {
|
||||
samd_peripherals_enable_cache();
|
||||
#endif
|
||||
|
||||
// On power on start or external reset, set _ezero to the canary word. If it
|
||||
// gets killed, we boot in safe mode. _ezero is the boundary between statically
|
||||
// allocated memory including the fixed MicroPython heap and the stack. If either
|
||||
// misbehaves, the canary will not be intact after soft reset.
|
||||
#ifdef CIRCUITPY_CANARY_WORD
|
||||
#ifdef SAMD21
|
||||
bool power_on_or_external_reset = hri_pm_get_RCAUSE_POR_bit(PM) || hri_pm_get_RCAUSE_EXT_bit(PM);
|
||||
bool system_reset = hri_pm_get_RCAUSE_SYST_bit(PM);
|
||||
#endif
|
||||
#ifdef SAMD51
|
||||
bool power_on_or_external_reset = hri_rstc_get_RCAUSE_POR_bit(RSTC) || hri_rstc_get_RCAUSE_EXT_bit(RSTC);
|
||||
bool system_reset = hri_rstc_get_RCAUSE_SYST_bit(RSTC);
|
||||
#endif
|
||||
if (power_on_or_external_reset) {
|
||||
_ezero = CIRCUITPY_CANARY_WORD;
|
||||
} else if (system_reset) {
|
||||
// If we're starting from a system reset we're likely coming from the
|
||||
// bootloader or hard fault handler. If we're coming from the handler
|
||||
// the canary will be CIRCUITPY_SAFE_RESTART_WORD and we don't want to
|
||||
// revive the canary so that a second hard fault won't restart. Resets
|
||||
// from anywhere else are ok.
|
||||
if (_ezero == CIRCUITPY_SAFE_RESTART_WORD) {
|
||||
_ezero = ~CIRCUITPY_CANARY_WORD;
|
||||
} else {
|
||||
_ezero = CIRCUITPY_CANARY_WORD;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
#ifdef SAMD21
|
||||
hri_nvmctrl_set_CTRLB_RWS_bf(NVMCTRL, 2);
|
||||
_pm_init();
|
||||
@ -200,13 +174,6 @@ safe_mode_t port_init(void) {
|
||||
// Init the board last so everything else is ready
|
||||
board_init();
|
||||
|
||||
#ifdef CIRCUITPY_CANARY_WORD
|
||||
// Run in safe mode if the canary is corrupt.
|
||||
if (_ezero != CIRCUITPY_CANARY_WORD) {
|
||||
return HARD_CRASH;
|
||||
}
|
||||
#endif
|
||||
|
||||
#ifdef SAMD21
|
||||
if (PM->RCAUSE.bit.BOD33 == 1 || PM->RCAUSE.bit.BOD12 == 1) {
|
||||
return BROWNOUT;
|
||||
@ -280,15 +247,33 @@ void reset_to_bootloader(void) {
|
||||
reset();
|
||||
}
|
||||
|
||||
void reset_cpu(void) {
|
||||
reset();
|
||||
}
|
||||
|
||||
extern uint32_t _ebss;
|
||||
// Place the word to save just after our BSS section that gets blanked.
|
||||
void port_set_saved_word(uint32_t value) {
|
||||
_ebss = value;
|
||||
}
|
||||
|
||||
uint32_t port_get_saved_word(void) {
|
||||
return _ebss;
|
||||
}
|
||||
|
||||
/**
|
||||
* \brief Default interrupt handler for unused IRQs.
|
||||
*/
|
||||
__attribute__((used)) void HardFault_Handler(void)
|
||||
{
|
||||
#ifdef ENABLE_MICRO_TRACE_BUFFER
|
||||
// Turn off the micro trace buffer so we don't fill it up in the infinite
|
||||
// loop below.
|
||||
REG_MTB_MASTER = 0x00000000 + 6;
|
||||
#endif
|
||||
|
||||
reset_into_safe_mode(HARD_CRASH);
|
||||
while (true) {
|
||||
asm("");
|
||||
}
|
||||
for (uint32_t i = 0; i < 100000; i++) {
|
||||
asm("noop;");
|
||||
asm("nop;");
|
||||
}
|
||||
}
|
||||
|
@ -97,6 +97,7 @@ SRC_C = \
|
||||
posix_helpers.c \
|
||||
hspi.c \
|
||||
boards/$(BOARD)/pins.c \
|
||||
supervisor/stub/stack.c \
|
||||
supervisor/shared/translate.c \
|
||||
$(SRC_MOD)
|
||||
|
||||
|
@ -39,7 +39,7 @@ extern UartDevice UartDev;
|
||||
|
||||
void common_hal_busio_uart_construct(busio_uart_obj_t *self,
|
||||
const mcu_pin_obj_t * tx, const mcu_pin_obj_t * rx, uint32_t baudrate,
|
||||
uint8_t bits, uart_parity_t parity, uint8_t stop, uint32_t timeout,
|
||||
uint8_t bits, uart_parity_t parity, uint8_t stop, mp_float_t timeout,
|
||||
uint8_t receiver_buffer_size) {
|
||||
if (rx != mp_const_none || tx != &pin_GPIO2) {
|
||||
nlr_raise(mp_obj_new_exception_msg(&mp_type_OSError, translate("Only tx supported on UART1 (GPIO2).")));
|
||||
|
@ -28,8 +28,11 @@
|
||||
#include "supervisor/usb.h"
|
||||
#endif
|
||||
|
||||
#include "supervisor/shared/stack.h"
|
||||
|
||||
void run_background_tasks(void) {
|
||||
#ifdef NRF52840
|
||||
usb_background();
|
||||
#endif
|
||||
assert_heap_ok();
|
||||
}
|
||||
|
@ -28,6 +28,8 @@
|
||||
#define MICROPY_HW_MCU_NAME "nRF52832"
|
||||
#define MICROPY_PY_SYS_PLATFORM "nRF52"
|
||||
|
||||
#define MICROPY_HW_LED_STATUS (&pin_P0_17)
|
||||
|
||||
#define MICROPY_HW_UART_RX NRF_GPIO_PIN_MAP(0, 8)
|
||||
#define MICROPY_HW_UART_TX NRF_GPIO_PIN_MAP(0, 6)
|
||||
|
||||
|
@ -35,6 +35,8 @@
|
||||
|
||||
#define MICROPY_HW_NEOPIXEL (&pin_P0_16)
|
||||
|
||||
#define MICROPY_HW_LED_STATUS (&pin_P1_15)
|
||||
|
||||
#ifdef QSPI_FLASH_FILESYSTEM
|
||||
#define MICROPY_QSPI_DATA0 NRF_GPIO_PIN_MAP(0, 17)
|
||||
#define MICROPY_QSPI_DATA1 NRF_GPIO_PIN_MAP(0, 22)
|
||||
|
@ -35,8 +35,8 @@ STATIC const mp_rom_map_elem_t board_module_globals_table[] = {
|
||||
{ MP_ROM_QSTR(MP_QSTR_MOSI), MP_ROM_PTR(&pin_P0_13) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_MISO), MP_ROM_PTR(&pin_P0_15) },
|
||||
|
||||
{ MP_ROM_QSTR(MP_QSTR_TXD), MP_ROM_PTR(&pin_P0_25) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_RXD), MP_ROM_PTR(&pin_P0_24) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_TX), MP_ROM_PTR(&pin_P0_25) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_RX), MP_ROM_PTR(&pin_P0_24) },
|
||||
|
||||
{ MP_ROM_QSTR(MP_QSTR_SCL), MP_ROM_PTR(&pin_P0_11) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_SDA), MP_ROM_PTR(&pin_P0_12) },
|
||||
|
38
ports/nrf/boards/particle_argon/board.c
Normal file
38
ports/nrf/boards/particle_argon/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) 2018 Scott Shawcroft for Adafruit Industries
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
* of this software and associated documentation files (the "Software"), to deal
|
||||
* in the Software without restriction, including without limitation the rights
|
||||
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
* copies of the Software, and to permit persons to whom the Software is
|
||||
* furnished to do so, subject to the following conditions:
|
||||
*
|
||||
* The above copyright notice and this permission notice shall be included in
|
||||
* all copies or substantial portions of the Software.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||
* THE SOFTWARE.
|
||||
*/
|
||||
|
||||
#include "boards/board.h"
|
||||
|
||||
void board_init(void) {
|
||||
}
|
||||
|
||||
bool board_requests_safe_mode(void) {
|
||||
return false;
|
||||
}
|
||||
|
||||
void reset_board(void) {
|
||||
|
||||
}
|
77
ports/nrf/boards/particle_argon/mpconfigboard.h
Normal file
77
ports/nrf/boards/particle_argon/mpconfigboard.h
Normal file
@ -0,0 +1,77 @@
|
||||
/*
|
||||
* This file is part of the MicroPython project, http://micropython.org/
|
||||
*
|
||||
* The MIT License (MIT)
|
||||
*
|
||||
* Copyright (c) 2016 Glenn Ruben Bakke
|
||||
* Copyright (c) 2018 Dan Halbert for Adafruit Industries
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
* of this software and associated documentation files (the "Software"), to deal
|
||||
* in the Software without restriction, including without limitation the rights
|
||||
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
* copies of the Software, and to permit persons to whom the Software is
|
||||
* furnished to do so, subject to the following conditions:
|
||||
*
|
||||
* The above copyright notice and this permission notice shall be included in
|
||||
* all copies or substantial portions of the Software.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||
* THE SOFTWARE.
|
||||
*/
|
||||
|
||||
#include "nrfx/hal/nrf_gpio.h"
|
||||
|
||||
#define FEATHER52840
|
||||
|
||||
#define MICROPY_HW_BOARD_NAME "Particle Argon"
|
||||
#define MICROPY_HW_MCU_NAME "nRF52840"
|
||||
#define MICROPY_PY_SYS_PLATFORM "Particle Argon"
|
||||
|
||||
#define MICROPY_HW_LED_STATUS (&pin_P1_12)
|
||||
|
||||
#define MICROPY_HW_RGB_LED_RED (&pin_P0_13)
|
||||
#define MICROPY_HW_RGB_LED_GREEN (&pin_P0_14)
|
||||
#define MICROPY_HW_RGB_LED_BLUE (&pin_P0_15)
|
||||
|
||||
#ifdef QSPI_FLASH_FILESYSTEM
|
||||
#define MICROPY_QSPI_DATA0 NRF_GPIO_PIN_MAP(0, 20)
|
||||
#define MICROPY_QSPI_DATA1 NRF_GPIO_PIN_MAP(0, 21)
|
||||
#define MICROPY_QSPI_DATA2 NRF_GPIO_PIN_MAP(0, 22)
|
||||
#define MICROPY_QSPI_DATA3 NRF_GPIO_PIN_MAP(0, 23)
|
||||
#define MICROPY_QSPI_SCK NRF_GPIO_PIN_MAP(0, 19)
|
||||
#define MICROPY_QSPI_CS NRF_GPIO_PIN_MAP(0, 17)
|
||||
#endif
|
||||
|
||||
#ifdef SPI_FLASH_FILESYSTEM
|
||||
#define SPI_FLASH_MOSI_PIN &pin_P0_20
|
||||
#define SPI_FLASH_MISO_PIN &pin_P0_21
|
||||
#define SPI_FLASH_SCK_PIN &pin_P0_19
|
||||
#define SPI_FLASH_CS_PIN &pin_P0_17
|
||||
#endif
|
||||
|
||||
#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)
|
||||
|
||||
#define BOARD_HAS_CRYSTAL 1
|
||||
|
||||
#define DEFAULT_I2C_BUS_SCL (&pin_P0_27)
|
||||
#define DEFAULT_I2C_BUS_SDA (&pin_P0_26)
|
||||
|
||||
#define DEFAULT_SPI_BUS_SCK (&pin_P1_15)
|
||||
#define DEFAULT_SPI_BUS_MOSI (&pin_P1_13)
|
||||
#define DEFAULT_SPI_BUS_MISO (&pin_P1_14)
|
||||
|
||||
#define DEFAULT_UART_BUS_RX (&pin_P0_08)
|
||||
#define DEFAULT_UART_BUS_TX (&pin_P0_06)
|
25
ports/nrf/boards/particle_argon/mpconfigboard.mk
Normal file
25
ports/nrf/boards/particle_argon/mpconfigboard.mk
Normal file
@ -0,0 +1,25 @@
|
||||
USB_VID = 0x2b04
|
||||
USB_PID = 0xc00c
|
||||
USB_PRODUCT = "Argon"
|
||||
USB_MANUFACTURER = "Particle"
|
||||
|
||||
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
|
||||
|
||||
SPI_FLASH_FILESYSTEM = 1
|
||||
EXTERNAL_FLASH_DEVICE_COUNT = 1
|
||||
EXTERNAL_FLASH_DEVICES = "MX25L3233F"
|
66
ports/nrf/boards/particle_argon/pins.c
Normal file
66
ports/nrf/boards/particle_argon/pins.c
Normal file
@ -0,0 +1,66 @@
|
||||
#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_A0), MP_ROM_PTR(&pin_P0_03) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_A1), MP_ROM_PTR(&pin_P0_04) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_A2), MP_ROM_PTR(&pin_P0_28) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_A3), MP_ROM_PTR(&pin_P0_29) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_A4), MP_ROM_PTR(&pin_P0_30) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_A5), MP_ROM_PTR(&pin_P0_31) },
|
||||
|
||||
{ MP_ROM_QSTR(MP_QSTR_MODE), MP_ROM_PTR(&pin_P0_11) },
|
||||
|
||||
{ MP_ROM_QSTR(MP_QSTR_VOLTAGE_MONITOR), MP_ROM_PTR(&pin_P0_05) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_BATTERY), MP_ROM_PTR(&pin_P0_05) },
|
||||
|
||||
{ MP_ROM_QSTR(MP_QSTR_CHARGE_STATUS), MP_ROM_PTR(&pin_P1_09) },
|
||||
|
||||
{ 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_D2), MP_ROM_PTR(&pin_P1_01) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_D3), MP_ROM_PTR(&pin_P1_02) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_D4), MP_ROM_PTR(&pin_P1_08) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_D5), MP_ROM_PTR(&pin_P1_10) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_D6), MP_ROM_PTR(&pin_P1_11) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_D7), MP_ROM_PTR(&pin_P1_12) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_BLUE_LED), MP_ROM_PTR(&pin_P1_12) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_D8), MP_ROM_PTR(&pin_P1_03) },
|
||||
|
||||
{ MP_ROM_QSTR(MP_QSTR_RGB_LED_RED), MP_ROM_PTR(&pin_P0_13) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_RGB_LED_GREEN), MP_ROM_PTR(&pin_P0_14) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_RGB_LED_BLUE), MP_ROM_PTR(&pin_P0_15) },
|
||||
|
||||
{ MP_ROM_QSTR(MP_QSTR_D13), MP_ROM_PTR(&pin_P1_15) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_SCK), MP_ROM_PTR(&pin_P1_15) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_D12), MP_ROM_PTR(&pin_P1_13) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_MOSI), MP_ROM_PTR(&pin_P1_13) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_D11), MP_ROM_PTR(&pin_P1_14) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_MISO), MP_ROM_PTR(&pin_P1_14) },
|
||||
|
||||
{ MP_ROM_QSTR(MP_QSTR_D9), MP_ROM_PTR(&pin_P0_06) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_TX), MP_ROM_PTR(&pin_P0_06) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_D10), MP_ROM_PTR(&pin_P0_08) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_RX), MP_ROM_PTR(&pin_P0_08) },
|
||||
|
||||
{ MP_ROM_QSTR(MP_QSTR_D1), MP_ROM_PTR(&pin_P0_27) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_SCL), MP_ROM_PTR(&pin_P0_27) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_D0), MP_ROM_PTR(&pin_P0_26) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_SDA), MP_ROM_PTR(&pin_P0_26) },
|
||||
|
||||
{ MP_ROM_QSTR(MP_QSTR_ANTENNA_EXTERNAL), MP_ROM_PTR(&pin_P0_25) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_ANTENNA_PCB), MP_ROM_PTR(&pin_P0_02) },
|
||||
|
||||
|
||||
{ MP_ROM_QSTR(MP_QSTR_ESP_TX), MP_ROM_PTR(&pin_P1_04) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_ESP_RX), MP_ROM_PTR(&pin_P1_05) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_ESP_CTS), MP_ROM_PTR(&pin_P1_07) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_ESP_RTS), MP_ROM_PTR(&pin_P1_06) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_ESP_BOOT_MODE), MP_ROM_PTR(&pin_P0_16) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_ESP_WIFI_EN), MP_ROM_PTR(&pin_P0_24) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_ESP_HOST_WK), MP_ROM_PTR(&pin_P0_07) },
|
||||
};
|
||||
|
||||
MP_DEFINE_CONST_DICT(board_module_globals, board_module_globals_table);
|
38
ports/nrf/boards/particle_boron/board.c
Normal file
38
ports/nrf/boards/particle_boron/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) 2018 Scott Shawcroft for Adafruit Industries
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
* of this software and associated documentation files (the "Software"), to deal
|
||||
* in the Software without restriction, including without limitation the rights
|
||||
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
* copies of the Software, and to permit persons to whom the Software is
|
||||
* furnished to do so, subject to the following conditions:
|
||||
*
|
||||
* The above copyright notice and this permission notice shall be included in
|
||||
* all copies or substantial portions of the Software.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||
* THE SOFTWARE.
|
||||
*/
|
||||
|
||||
#include "boards/board.h"
|
||||
|
||||
void board_init(void) {
|
||||
}
|
||||
|
||||
bool board_requests_safe_mode(void) {
|
||||
return false;
|
||||
}
|
||||
|
||||
void reset_board(void) {
|
||||
|
||||
}
|
77
ports/nrf/boards/particle_boron/mpconfigboard.h
Normal file
77
ports/nrf/boards/particle_boron/mpconfigboard.h
Normal file
@ -0,0 +1,77 @@
|
||||
/*
|
||||
* This file is part of the MicroPython project, http://micropython.org/
|
||||
*
|
||||
* The MIT License (MIT)
|
||||
*
|
||||
* Copyright (c) 2016 Glenn Ruben Bakke
|
||||
* Copyright (c) 2018 Dan Halbert for Adafruit Industries
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
* of this software and associated documentation files (the "Software"), to deal
|
||||
* in the Software without restriction, including without limitation the rights
|
||||
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
* copies of the Software, and to permit persons to whom the Software is
|
||||
* furnished to do so, subject to the following conditions:
|
||||
*
|
||||
* The above copyright notice and this permission notice shall be included in
|
||||
* all copies or substantial portions of the Software.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||
* THE SOFTWARE.
|
||||
*/
|
||||
|
||||
#include "nrfx/hal/nrf_gpio.h"
|
||||
|
||||
#define FEATHER52840
|
||||
|
||||
#define MICROPY_HW_BOARD_NAME "Particle Boron"
|
||||
#define MICROPY_HW_MCU_NAME "nRF52840"
|
||||
#define MICROPY_PY_SYS_PLATFORM "Particle Boron"
|
||||
|
||||
#define MICROPY_HW_LED_STATUS (&pin_P1_12)
|
||||
|
||||
#define MICROPY_HW_RGB_LED_RED (&pin_P0_13)
|
||||
#define MICROPY_HW_RGB_LED_GREEN (&pin_P0_14)
|
||||
#define MICROPY_HW_RGB_LED_BLUE (&pin_P0_15)
|
||||
|
||||
#ifdef QSPI_FLASH_FILESYSTEM
|
||||
#define MICROPY_QSPI_DATA0 NRF_GPIO_PIN_MAP(0, 20)
|
||||
#define MICROPY_QSPI_DATA1 NRF_GPIO_PIN_MAP(0, 21)
|
||||
#define MICROPY_QSPI_DATA2 NRF_GPIO_PIN_MAP(0, 22)
|
||||
#define MICROPY_QSPI_DATA3 NRF_GPIO_PIN_MAP(0, 23)
|
||||
#define MICROPY_QSPI_SCK NRF_GPIO_PIN_MAP(0, 19)
|
||||
#define MICROPY_QSPI_CS NRF_GPIO_PIN_MAP(0, 17)
|
||||
#endif
|
||||
|
||||
#ifdef SPI_FLASH_FILESYSTEM
|
||||
#define SPI_FLASH_MOSI_PIN &pin_P0_20
|
||||
#define SPI_FLASH_MISO_PIN &pin_P0_21
|
||||
#define SPI_FLASH_SCK_PIN &pin_P0_19
|
||||
#define SPI_FLASH_CS_PIN &pin_P0_17
|
||||
#endif
|
||||
|
||||
#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)
|
||||
|
||||
#define BOARD_HAS_CRYSTAL 1
|
||||
|
||||
#define DEFAULT_I2C_BUS_SCL (&pin_P0_27)
|
||||
#define DEFAULT_I2C_BUS_SDA (&pin_P0_26)
|
||||
|
||||
#define DEFAULT_SPI_BUS_SCK (&pin_P1_15)
|
||||
#define DEFAULT_SPI_BUS_MOSI (&pin_P1_13)
|
||||
#define DEFAULT_SPI_BUS_MISO (&pin_P1_14)
|
||||
|
||||
#define DEFAULT_UART_BUS_RX (&pin_P0_08)
|
||||
#define DEFAULT_UART_BUS_TX (&pin_P0_06)
|
25
ports/nrf/boards/particle_boron/mpconfigboard.mk
Normal file
25
ports/nrf/boards/particle_boron/mpconfigboard.mk
Normal file
@ -0,0 +1,25 @@
|
||||
USB_VID = 0x2b04
|
||||
USB_PID = 0xc00d
|
||||
USB_PRODUCT = "Boron"
|
||||
USB_MANUFACTURER = "Particle"
|
||||
|
||||
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
|
||||
|
||||
QSPI_FLASH_FILESYSTEM = 1
|
||||
EXTERNAL_FLASH_DEVICE_COUNT = 1
|
||||
EXTERNAL_FLASH_DEVICES = "MX25L3233F"
|
64
ports/nrf/boards/particle_boron/pins.c
Normal file
64
ports/nrf/boards/particle_boron/pins.c
Normal file
@ -0,0 +1,64 @@
|
||||
#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_A0), MP_ROM_PTR(&pin_P0_03) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_A1), MP_ROM_PTR(&pin_P0_04) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_A2), MP_ROM_PTR(&pin_P0_28) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_A3), MP_ROM_PTR(&pin_P0_29) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_A4), MP_ROM_PTR(&pin_P0_30) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_A5), MP_ROM_PTR(&pin_P0_31) },
|
||||
|
||||
{ MP_ROM_QSTR(MP_QSTR_MODE), MP_ROM_PTR(&pin_P0_11) },
|
||||
|
||||
{ MP_ROM_QSTR(MP_QSTR_POWER_I2C_SDA), MP_ROM_PTR(&pin_P0_24) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_POWER_I2C_SCL), MP_ROM_PTR(&pin_P1_09) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_POWER_INTERRUPT), 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_D2), MP_ROM_PTR(&pin_P1_01) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_D3), MP_ROM_PTR(&pin_P1_02) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_D4), MP_ROM_PTR(&pin_P1_08) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_D5), MP_ROM_PTR(&pin_P1_10) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_D6), MP_ROM_PTR(&pin_P1_11) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_D7), MP_ROM_PTR(&pin_P1_12) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_BLUE_LED), MP_ROM_PTR(&pin_P1_12) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_D8), MP_ROM_PTR(&pin_P1_03) },
|
||||
|
||||
{ MP_ROM_QSTR(MP_QSTR_RGB_LED_RED), MP_ROM_PTR(&pin_P0_13) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_RGB_LED_GREEN), MP_ROM_PTR(&pin_P0_14) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_RGB_LED_BLUE), MP_ROM_PTR(&pin_P0_15) },
|
||||
|
||||
{ MP_ROM_QSTR(MP_QSTR_D13), MP_ROM_PTR(&pin_P1_15) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_SCK), MP_ROM_PTR(&pin_P1_15) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_D12), MP_ROM_PTR(&pin_P1_13) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_MOSI), MP_ROM_PTR(&pin_P1_13) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_D11), MP_ROM_PTR(&pin_P1_14) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_MISO), MP_ROM_PTR(&pin_P1_14) },
|
||||
|
||||
{ MP_ROM_QSTR(MP_QSTR_D9), MP_ROM_PTR(&pin_P0_06) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_TX), MP_ROM_PTR(&pin_P0_06) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_D10), MP_ROM_PTR(&pin_P0_08) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_RX), MP_ROM_PTR(&pin_P0_08) },
|
||||
|
||||
{ MP_ROM_QSTR(MP_QSTR_D1), MP_ROM_PTR(&pin_P0_27) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_SCL), MP_ROM_PTR(&pin_P0_27) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_D0), MP_ROM_PTR(&pin_P0_26) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_SDA), MP_ROM_PTR(&pin_P0_26) },
|
||||
|
||||
{ MP_ROM_QSTR(MP_QSTR_ANTENNA_SWITCH), MP_ROM_PTR(&pin_P0_07) },
|
||||
|
||||
{ MP_ROM_QSTR(MP_QSTR_UBLOX_TX), MP_ROM_PTR(&pin_P1_05) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_UBLOX_RX), MP_ROM_PTR(&pin_P1_04) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_UBLOX_CTS), MP_ROM_PTR(&pin_P1_06) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_UBLOX_RTS), MP_ROM_PTR(&pin_P1_07) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_UBLOX_POWER_ENABLE), MP_ROM_PTR(&pin_P0_25) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_UBLOX_POWER_MONITOR), MP_ROM_PTR(&pin_P0_02) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_UBLOX_RESET), MP_ROM_PTR(&pin_P0_12) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_UBLOX_POWER_ON), MP_ROM_PTR(&pin_P0_16) },
|
||||
};
|
||||
|
||||
MP_DEFINE_CONST_DICT(board_module_globals, board_module_globals_table);
|
38
ports/nrf/boards/particle_xenon/board.c
Normal file
38
ports/nrf/boards/particle_xenon/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) 2018 Scott Shawcroft for Adafruit Industries
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
* of this software and associated documentation files (the "Software"), to deal
|
||||
* in the Software without restriction, including without limitation the rights
|
||||
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
* copies of the Software, and to permit persons to whom the Software is
|
||||
* furnished to do so, subject to the following conditions:
|
||||
*
|
||||
* The above copyright notice and this permission notice shall be included in
|
||||
* all copies or substantial portions of the Software.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||
* THE SOFTWARE.
|
||||
*/
|
||||
|
||||
#include "boards/board.h"
|
||||
|
||||
void board_init(void) {
|
||||
}
|
||||
|
||||
bool board_requests_safe_mode(void) {
|
||||
return false;
|
||||
}
|
||||
|
||||
void reset_board(void) {
|
||||
|
||||
}
|
77
ports/nrf/boards/particle_xenon/mpconfigboard.h
Normal file
77
ports/nrf/boards/particle_xenon/mpconfigboard.h
Normal file
@ -0,0 +1,77 @@
|
||||
/*
|
||||
* This file is part of the MicroPython project, http://micropython.org/
|
||||
*
|
||||
* The MIT License (MIT)
|
||||
*
|
||||
* Copyright (c) 2016 Glenn Ruben Bakke
|
||||
* Copyright (c) 2018 Dan Halbert for Adafruit Industries
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
* of this software and associated documentation files (the "Software"), to deal
|
||||
* in the Software without restriction, including without limitation the rights
|
||||
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
* copies of the Software, and to permit persons to whom the Software is
|
||||
* furnished to do so, subject to the following conditions:
|
||||
*
|
||||
* The above copyright notice and this permission notice shall be included in
|
||||
* all copies or substantial portions of the Software.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||
* THE SOFTWARE.
|
||||
*/
|
||||
|
||||
#include "nrfx/hal/nrf_gpio.h"
|
||||
|
||||
#define FEATHER52840
|
||||
|
||||
#define MICROPY_HW_BOARD_NAME "Particle Xenon"
|
||||
#define MICROPY_HW_MCU_NAME "nRF52840"
|
||||
#define MICROPY_PY_SYS_PLATFORM "Particle Xenon"
|
||||
|
||||
#define MICROPY_HW_LED_STATUS (&pin_P1_12)
|
||||
|
||||
#define MICROPY_HW_RGB_LED_RED (&pin_P0_13)
|
||||
#define MICROPY_HW_RGB_LED_GREEN (&pin_P0_14)
|
||||
#define MICROPY_HW_RGB_LED_BLUE (&pin_P0_15)
|
||||
|
||||
#ifdef QSPI_FLASH_FILESYSTEM
|
||||
#define MICROPY_QSPI_DATA0 NRF_GPIO_PIN_MAP(0, 20)
|
||||
#define MICROPY_QSPI_DATA1 NRF_GPIO_PIN_MAP(0, 21)
|
||||
#define MICROPY_QSPI_DATA2 NRF_GPIO_PIN_MAP(0, 22)
|
||||
#define MICROPY_QSPI_DATA3 NRF_GPIO_PIN_MAP(0, 23)
|
||||
#define MICROPY_QSPI_SCK NRF_GPIO_PIN_MAP(0, 19)
|
||||
#define MICROPY_QSPI_CS NRF_GPIO_PIN_MAP(0, 17)
|
||||
#endif
|
||||
|
||||
#ifdef SPI_FLASH_FILESYSTEM
|
||||
#define SPI_FLASH_MOSI_PIN &pin_P0_20
|
||||
#define SPI_FLASH_MISO_PIN &pin_P0_21
|
||||
#define SPI_FLASH_SCK_PIN &pin_P0_19
|
||||
#define SPI_FLASH_CS_PIN &pin_P0_17
|
||||
#endif
|
||||
|
||||
#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)
|
||||
|
||||
#define BOARD_HAS_CRYSTAL 1
|
||||
|
||||
#define DEFAULT_I2C_BUS_SCL (&pin_P0_27)
|
||||
#define DEFAULT_I2C_BUS_SDA (&pin_P0_26)
|
||||
|
||||
#define DEFAULT_SPI_BUS_SCK (&pin_P1_15)
|
||||
#define DEFAULT_SPI_BUS_MOSI (&pin_P1_13)
|
||||
#define DEFAULT_SPI_BUS_MISO (&pin_P1_14)
|
||||
|
||||
#define DEFAULT_UART_BUS_RX (&pin_P0_08)
|
||||
#define DEFAULT_UART_BUS_TX (&pin_P0_06)
|
25
ports/nrf/boards/particle_xenon/mpconfigboard.mk
Normal file
25
ports/nrf/boards/particle_xenon/mpconfigboard.mk
Normal file
@ -0,0 +1,25 @@
|
||||
USB_VID = 0x2b04
|
||||
USB_PID = 0xc00e # argon is 0xc00c
|
||||
USB_PRODUCT = "Xenon"
|
||||
USB_MANUFACTURER = "Particle"
|
||||
|
||||
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
|
||||
|
||||
QSPI_FLASH_FILESYSTEM = 1
|
||||
EXTERNAL_FLASH_DEVICE_COUNT = 1
|
||||
EXTERNAL_FLASH_DEVICES = "MX25L3233F"
|
57
ports/nrf/boards/particle_xenon/pins.c
Normal file
57
ports/nrf/boards/particle_xenon/pins.c
Normal file
@ -0,0 +1,57 @@
|
||||
#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_A0), MP_ROM_PTR(&pin_P0_03) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_A1), MP_ROM_PTR(&pin_P0_04) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_A2), MP_ROM_PTR(&pin_P0_28) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_A3), MP_ROM_PTR(&pin_P0_29) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_A4), MP_ROM_PTR(&pin_P0_30) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_A5), MP_ROM_PTR(&pin_P0_31) },
|
||||
|
||||
{ MP_ROM_QSTR(MP_QSTR_MODE), MP_ROM_PTR(&pin_P0_11) },
|
||||
|
||||
{ MP_ROM_QSTR(MP_QSTR_VOLTAGE_MONITOR), MP_ROM_PTR(&pin_P0_05) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_BATTERY), MP_ROM_PTR(&pin_P0_05) },
|
||||
|
||||
{ MP_ROM_QSTR(MP_QSTR_CHARGE_STATUS), MP_ROM_PTR(&pin_P1_09) },
|
||||
|
||||
{ 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_D2), MP_ROM_PTR(&pin_P1_01) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_D3), MP_ROM_PTR(&pin_P1_02) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_D4), MP_ROM_PTR(&pin_P1_08) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_D5), MP_ROM_PTR(&pin_P1_10) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_D6), MP_ROM_PTR(&pin_P1_11) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_D7), MP_ROM_PTR(&pin_P1_12) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_BLUE_LED), MP_ROM_PTR(&pin_P1_12) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_D8), MP_ROM_PTR(&pin_P1_03) },
|
||||
|
||||
{ MP_ROM_QSTR(MP_QSTR_RGB_LED_RED), MP_ROM_PTR(&pin_P0_13) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_RGB_LED_GREEN), MP_ROM_PTR(&pin_P0_14) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_RGB_LED_BLUE), MP_ROM_PTR(&pin_P0_15) },
|
||||
|
||||
{ MP_ROM_QSTR(MP_QSTR_D13), MP_ROM_PTR(&pin_P1_15) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_SCK), MP_ROM_PTR(&pin_P1_15) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_D12), MP_ROM_PTR(&pin_P1_13) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_MOSI), MP_ROM_PTR(&pin_P1_13) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_D11), MP_ROM_PTR(&pin_P1_14) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_MISO), MP_ROM_PTR(&pin_P1_14) },
|
||||
|
||||
{ MP_ROM_QSTR(MP_QSTR_D9), MP_ROM_PTR(&pin_P0_06) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_TX), MP_ROM_PTR(&pin_P0_06) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_D10), MP_ROM_PTR(&pin_P0_08) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_RX), MP_ROM_PTR(&pin_P0_08) },
|
||||
|
||||
{ MP_ROM_QSTR(MP_QSTR_D1), MP_ROM_PTR(&pin_P0_27) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_SCL), MP_ROM_PTR(&pin_P0_27) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_D0), MP_ROM_PTR(&pin_P0_26) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_SDA), MP_ROM_PTR(&pin_P0_26) },
|
||||
|
||||
{ MP_ROM_QSTR(MP_QSTR_ANTENNA_EXTERNAL), MP_ROM_PTR(&pin_P0_25) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_ANTENNA_PCB), MP_ROM_PTR(&pin_P0_24) },
|
||||
};
|
||||
|
||||
MP_DEFINE_CONST_DICT(board_module_globals, board_module_globals_table);
|
@ -29,6 +29,8 @@
|
||||
#define MICROPY_HW_MCU_NAME "nRF52832"
|
||||
#define MICROPY_PY_SYS_PLATFORM "nRF52-DK"
|
||||
|
||||
#define MICROPY_HW_LED_STATUS (&pin_P0_17)
|
||||
|
||||
#define MICROPY_HW_UART_RX NRF_GPIO_PIN_MAP(0, 8)
|
||||
#define MICROPY_HW_UART_TX NRF_GPIO_PIN_MAP(0, 6)
|
||||
#define MICROPY_HW_UART_HWFC (0)
|
||||
|
@ -21,9 +21,13 @@ STATIC const mp_rom_map_elem_t board_module_globals_table[] = {
|
||||
{ MP_ROM_QSTR(MP_QSTR_P0_15), MP_ROM_PTR(&pin_P0_15) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_P0_16), MP_ROM_PTR(&pin_P0_16) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_P0_17), MP_ROM_PTR(&pin_P0_17) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_LED1), MP_ROM_PTR(&pin_P0_17) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_P0_18), MP_ROM_PTR(&pin_P0_18) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_LED2), MP_ROM_PTR(&pin_P0_18) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_P0_19), MP_ROM_PTR(&pin_P0_19) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_LED3), MP_ROM_PTR(&pin_P0_19) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_P0_20), MP_ROM_PTR(&pin_P0_20) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_LED4), MP_ROM_PTR(&pin_P0_20) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_P0_21), MP_ROM_PTR(&pin_P0_21) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_P0_22), MP_ROM_PTR(&pin_P0_22) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_P0_23), MP_ROM_PTR(&pin_P0_23) },
|
||||
|
@ -33,6 +33,8 @@
|
||||
#define PORT_HEAP_SIZE (128 * 1024)
|
||||
#define CIRCUITPY_AUTORELOAD_DELAY_MS 500
|
||||
|
||||
#define MICROPY_HW_LED_STATUS (&pin_P0_13)
|
||||
|
||||
#define DEFAULT_I2C_BUS_SCL (&pin_P0_27)
|
||||
#define DEFAULT_I2C_BUS_SDA (&pin_P0_26)
|
||||
|
||||
|
@ -28,5 +28,7 @@
|
||||
#define MICROPY_HW_MCU_NAME "nRF52840"
|
||||
#define MICROPY_PY_SYS_PLATFORM "nRF52840-DK"
|
||||
|
||||
#define MICROPY_HW_LED_STATUS (&pin_P0_06)
|
||||
|
||||
#define PORT_HEAP_SIZE (128 * 1024)
|
||||
#define CIRCUITPY_AUTORELOAD_DELAY_MS 500
|
||||
|
48
ports/nrf/boards/sparkfun_nrf52840_mini/README.md
Normal file
48
ports/nrf/boards/sparkfun_nrf52840_mini/README.md
Normal file
@ -0,0 +1,48 @@
|
||||
# SparkFun Pro nRF52840 Mini Breakout
|
||||
|
||||
The [SparkFun Pro nRF52840 Mini](https://www.sparkfun.com/products/15025) small breakout board for Raytac's MDBT50Q-P1M module, which features an nRF52840. It breaks out as many pins as it can in an Arduino Pro Mini footprint. Also included on the board are a qwiic (I<sup>2</sup>C) connector, LiPo battery charger, and on/off switch.
|
||||
|
||||
Note: the SparkFun Pro nRF52840 Mini Breakout does not include a QSPI external flash. Any Python code will need to be stored on the internal flash filesystem.
|
||||
|
||||
## CircuitPython Pin Defs
|
||||
|
||||
CircuitPython pin definitions try to follow those of the [Arduino Pro Mini](https://www.sparkfun.com/products/11113), which the footprint is based on.
|
||||
|
||||
This can be somewhat confusing, especially around the analog pins. Here's a quick pin-map:
|
||||
|
||||
<table>
|
||||
<tr><th>Board pin label</th><th>Digital Pin Reference</th><th>Additional Pin Capabilities</th><th>Pin/Port Reference</th></tr>
|
||||
<tr><td>17</td><td>D1</td><td>TX</td><td>P0_17</td></tr>
|
||||
<tr><td>15</td><td>D0</td><td>RX</td><td>P0_15</td></tr>
|
||||
<tr><td>8</td><td></td><td>SDA</td><td>P0_08</td></tr>
|
||||
<tr><td>11</td><td></td><td>SCL</td><td>P0_11</td></tr>
|
||||
<tr><td>19</td><td>D3</td><td></td><td>P0_19</td></tr>
|
||||
<tr><td>20</td><td>D4</td><td></td><td>P0_20</td></tr>
|
||||
<tr><td>21</td><td>D5</td><td></td><td>P0_21</td></tr>
|
||||
<tr><td>22</td><td>D6</td><td></td><td>P0_22</td></tr>
|
||||
<tr><td>23</td><td>D7</td><td></td><td>P0_23</td></tr>
|
||||
<tr><td>9</td><td>D8</td><td></td><td>P0_09</td></tr>
|
||||
<tr><td>10</td><td>D9</td><td></td><td>P0_10</td></tr>
|
||||
<tr><td>2</td><td>D10</td><td>A0</td><td>P0_02</td></tr>
|
||||
<tr><td>3</td><td>D11</td><td>MOSI, A1</td><td>P0_03</td></tr>
|
||||
<tr><td>31</td><td>D12</td><td>MISO, A7</td><td>P0_31</td></tr>
|
||||
<tr><td>30</td><td>D13</td><td>SCK, A6</td><td>P0_31</td></tr>
|
||||
<tr><td>29</td><td></td><td>A5</td><td>P0_29</td></tr>
|
||||
<tr><td>28</td><td></td><td>A4</td><td>P0_28</td></tr>
|
||||
<tr><td>5</td><td></td><td>A3</td><td>P0_05</td></tr>
|
||||
<tr><td>4</td><td></td><td>A2</td><td>P0_04</td></tr>
|
||||
</table>
|
||||
|
||||
If a pin isn't defined as D0, D1, etc., standard port/pin references should work -- e.g. `P0_17` is pin 17, `P0_02` is pin 2, etc.
|
||||
|
||||
## Bootloader Notes
|
||||
|
||||
The nRF52840 Mini ships with a slightly modified (i.e pin defs and USB defs) version of the Adafruit nRF52 bootloader, which supports UF2 and CDC bootloading.
|
||||
|
||||
## Hardware Reference
|
||||
|
||||
The nRF52840 Mini hardware layout is open source:
|
||||
|
||||
* [Schematic](https://cdn.sparkfun.com/assets/learn_tutorials/8/2/0/nrf52840-breakout-mdbt50q-v10.pdf)
|
||||
* [Eagle Files](https://cdn.sparkfun.com/assets/learn_tutorials/8/2/0/nrf52840-breakout-mdbt50q-v10.zip)
|
||||
* [Hookup Guide](https://learn.sparkfun.com/tutorials/sparkfun-pro-nrf52840-mini-hookup-guide)
|
38
ports/nrf/boards/sparkfun_nrf52840_mini/board.c
Normal file
38
ports/nrf/boards/sparkfun_nrf52840_mini/board.c
Normal file
@ -0,0 +1,38 @@
|
||||
/*
|
||||
* This file is part of the MicroPython project, http://micropython.org/
|
||||
*
|
||||
* The MIT License (MIT)
|
||||
*
|
||||
* Copyright (c) 2017 Scott Shawcroft for Adafruit Industries
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
* of this software and associated documentation files (the "Software"), to deal
|
||||
* in the Software without restriction, including without limitation the rights
|
||||
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
* copies of the Software, and to permit persons to whom the Software is
|
||||
* furnished to do so, subject to the following conditions:
|
||||
*
|
||||
* The above copyright notice and this permission notice shall be included in
|
||||
* all copies or substantial portions of the Software.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||
* THE SOFTWARE.
|
||||
*/
|
||||
|
||||
#include "boards/board.h"
|
||||
|
||||
void board_init(void) {
|
||||
}
|
||||
|
||||
bool board_requests_safe_mode(void) {
|
||||
return false;
|
||||
}
|
||||
|
||||
void reset_board(void) {
|
||||
|
||||
}
|
68
ports/nrf/boards/sparkfun_nrf52840_mini/mpconfigboard.h
Normal file
68
ports/nrf/boards/sparkfun_nrf52840_mini/mpconfigboard.h
Normal file
@ -0,0 +1,68 @@
|
||||
/*
|
||||
* This file is part of the MicroPython project, http://micropython.org/
|
||||
*
|
||||
* The MIT License (MIT)
|
||||
*
|
||||
* Copyright (c) 2016 Glenn Ruben Bakke
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
* of this software and associated documentation files (the "Software"), to deal
|
||||
* in the Software without restriction, including without limitation the rights
|
||||
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
* copies of the Software, and to permit persons to whom the Software is
|
||||
* furnished to do so, subject to the following conditions:
|
||||
*
|
||||
* The above copyright notice and this permission notice shall be included in
|
||||
* all copies or substantial portions of the Software.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||
* THE SOFTWARE.
|
||||
*/
|
||||
|
||||
#include "nrfx/hal/nrf_gpio.h"
|
||||
|
||||
#define MICROPY_HW_BOARD_NAME "SparkFun Pro nRF52840 Mini"
|
||||
#define MICROPY_HW_MCU_NAME "nRF52840"
|
||||
#define MICROPY_PY_SYS_PLATFORM "SFE_NRF52840_Mini"
|
||||
|
||||
#define PORT_HEAP_SIZE (128 * 1024)
|
||||
#define CIRCUITPY_AUTORELOAD_DELAY_MS 500
|
||||
|
||||
#define DEFAULT_I2C_BUS_SCL (&pin_P0_11)
|
||||
#define DEFAULT_I2C_BUS_SDA (&pin_P0_08)
|
||||
|
||||
#define DEFAULT_SPI_BUS_SCK (&pin_P0_30)
|
||||
#define DEFAULT_SPI_BUS_MOSI (&pin_P0_03)
|
||||
#define DEFAULT_SPI_BUS_MISO (&pin_P0_31)
|
||||
|
||||
#define DEFAULT_UART_BUS_RX (&pin_P0_15)
|
||||
#define DEFAULT_UART_BUS_TX (&pin_P0_17)
|
||||
|
||||
/* Note: Flash chip is not provided on SparkFun nRF52840 Mini.
|
||||
* Leaving this as a reminder for future/similar versions of the board. */
|
||||
// Flash operation mode is determined by MICROPY_QSPI_DATAn pin configuration.
|
||||
// A pin config is valid if it is defined and its value is not 0xFF.
|
||||
// Quad mode: If all DATA0 --> DATA3 are valid
|
||||
// Dual mode: If DATA0 and DATA1 are valid while either DATA2 and/or DATA3 are invalid
|
||||
// Single mode: If only DATA0 is valid
|
||||
/*#ifdef QSPI_FLASH_FILESYSTEM
|
||||
#define MICROPY_QSPI_DATA0 NRF_GPIO_PIN_MAP(0, 20)
|
||||
#define MICROPY_QSPI_DATA1 NRF_GPIO_PIN_MAP(0, 21)
|
||||
#define MICROPY_QSPI_DATA2 NRF_GPIO_PIN_MAP(0, 22)
|
||||
#define MICROPY_QSPI_DATA3 NRF_GPIO_PIN_MAP(0, 23)
|
||||
#define MICROPY_QSPI_SCK NRF_GPIO_PIN_MAP(0, 19)
|
||||
#define MICROPY_QSPI_CS NRF_GPIO_PIN_MAP(0, 17)
|
||||
#endif
|
||||
|
||||
#ifdef SPI_FLASH_FILESYSTEM
|
||||
#define SPI_FLASH_MOSI_PIN &pin_P0_20
|
||||
#define SPI_FLASH_MISO_PIN &pin_P0_21
|
||||
#define SPI_FLASH_SCK_PIN &pin_P0_19
|
||||
#define SPI_FLASH_CS_PIN &pin_P0_17
|
||||
#endif*/
|
||||
|
25
ports/nrf/boards/sparkfun_nrf52840_mini/mpconfigboard.mk
Normal file
25
ports/nrf/boards/sparkfun_nrf52840_mini/mpconfigboard.mk
Normal file
@ -0,0 +1,25 @@
|
||||
USB_VID = 0x1B4F
|
||||
USB_PID = 0x5289
|
||||
USB_PRODUCT = "SFE_nRF52840_Mini"
|
||||
USB_MANUFACTURER = "SparkFun Electronics"
|
||||
|
||||
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
|
||||
|
||||
QSPI_FLASH_FILESYSTEM = 0
|
||||
EXTERNAL_FLASH_DEVICE_COUNT = 0
|
||||
EXTERNAL_FLASH_DEVICES =
|
55
ports/nrf/boards/sparkfun_nrf52840_mini/pins.c
Normal file
55
ports/nrf/boards/sparkfun_nrf52840_mini/pins.c
Normal file
@ -0,0 +1,55 @@
|
||||
#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_D0), MP_ROM_PTR(&pin_P1_15) }, // D1/TX
|
||||
{ MP_ROM_QSTR(MP_QSTR_D1), MP_ROM_PTR(&pin_P0_17) }, // D0/RX
|
||||
// D2 on qwiic gap
|
||||
{ MP_ROM_QSTR(MP_QSTR_D3), MP_ROM_PTR(&pin_P0_19) }, // D3
|
||||
{ MP_ROM_QSTR(MP_QSTR_D4), MP_ROM_PTR(&pin_P0_20) }, // D4
|
||||
{ MP_ROM_QSTR(MP_QSTR_D5), MP_ROM_PTR(&pin_P0_21) }, // D5
|
||||
{ MP_ROM_QSTR(MP_QSTR_D6), MP_ROM_PTR(&pin_P0_22) }, // D6
|
||||
{ MP_ROM_QSTR(MP_QSTR_D7), MP_ROM_PTR(&pin_P0_23) }, // D7
|
||||
{ MP_ROM_QSTR(MP_QSTR_D8), MP_ROM_PTR(&pin_P0_09) }, // D8
|
||||
{ MP_ROM_QSTR(MP_QSTR_D9), MP_ROM_PTR(&pin_P0_10) }, // D9
|
||||
|
||||
{ MP_ROM_QSTR(MP_QSTR_D10), MP_ROM_PTR(&pin_P0_02) }, // D10
|
||||
{ MP_ROM_QSTR(MP_QSTR_D11), MP_ROM_PTR(&pin_P0_03) }, // D11
|
||||
{ MP_ROM_QSTR(MP_QSTR_D12), MP_ROM_PTR(&pin_P0_31) }, // D12
|
||||
{ MP_ROM_QSTR(MP_QSTR_D13), MP_ROM_PTR(&pin_P0_30) }, // D13
|
||||
{ MP_ROM_QSTR(MP_QSTR_D14), MP_ROM_PTR(&pin_P0_29) }, // D14
|
||||
{ MP_ROM_QSTR(MP_QSTR_D15), MP_ROM_PTR(&pin_P0_28) }, // D15
|
||||
{ MP_ROM_QSTR(MP_QSTR_D16), MP_ROM_PTR(&pin_P0_05) }, // D16
|
||||
{ MP_ROM_QSTR(MP_QSTR_D17), MP_ROM_PTR(&pin_P0_04) }, // D17
|
||||
|
||||
{ MP_ROM_QSTR(MP_QSTR_A0), MP_ROM_PTR(&pin_P0_02) }, // A0
|
||||
{ MP_ROM_QSTR(MP_QSTR_A1), MP_ROM_PTR(&pin_P0_03) }, // A1
|
||||
{ MP_ROM_QSTR(MP_QSTR_A2), MP_ROM_PTR(&pin_P0_04) }, // A2
|
||||
{ MP_ROM_QSTR(MP_QSTR_A3), MP_ROM_PTR(&pin_P0_05) }, // A3
|
||||
{ MP_ROM_QSTR(MP_QSTR_A4), MP_ROM_PTR(&pin_P0_28) }, // A4
|
||||
{ MP_ROM_QSTR(MP_QSTR_A5), MP_ROM_PTR(&pin_P0_29) }, // A5
|
||||
{ MP_ROM_QSTR(MP_QSTR_A6), MP_ROM_PTR(&pin_P0_30) }, // A6
|
||||
{ MP_ROM_QSTR(MP_QSTR_A7), MP_ROM_PTR(&pin_P0_31) }, // A7
|
||||
|
||||
{ MP_ROM_QSTR(MP_QSTR_SDA), MP_ROM_PTR(&pin_P0_08) }, // 8 - SDA
|
||||
{ MP_ROM_QSTR(MP_QSTR_SCL), MP_ROM_PTR(&pin_P0_11) }, // 11 - SCL
|
||||
|
||||
{ MP_ROM_QSTR(MP_QSTR_MISO), MP_ROM_PTR(&pin_P0_31) }, // 31 - MISO
|
||||
{ MP_ROM_QSTR(MP_QSTR_MOSI), MP_ROM_PTR(&pin_P0_03) }, // 3 - MOSI
|
||||
{ MP_ROM_QSTR(MP_QSTR_SCK), MP_ROM_PTR(&pin_P0_30) }, // 30 - SCK
|
||||
|
||||
{ MP_ROM_QSTR(MP_QSTR_LED1), MP_ROM_PTR(&pin_P0_07) }, // 7 - Blue LED
|
||||
|
||||
{ MP_ROM_QSTR(MP_QSTR_BUTTON1), MP_ROM_PTR(&pin_P0_13) }, // 13 - Button
|
||||
|
||||
{ MP_ROM_QSTR(MP_QSTR_RX), MP_ROM_PTR(&pin_P0_15) }, // 15 - UART RX
|
||||
{ MP_ROM_QSTR(MP_QSTR_TX), MP_ROM_PTR(&pin_P0_17) }, // 17 - UART TX
|
||||
|
||||
{ MP_ROM_QSTR(MP_QSTR_UART), MP_ROM_PTR(&board_uart_obj) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_SPI), MP_ROM_PTR(&board_spi_obj) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_QWIIC), MP_ROM_PTR(&board_i2c_obj) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_I2C), MP_ROM_PTR(&board_i2c_obj) },
|
||||
};
|
||||
|
||||
MP_DEFINE_CONST_DICT(board_module_globals, board_module_globals_table);
|
@ -27,6 +27,7 @@
|
||||
#include "shared-bindings/microcontroller/__init__.h"
|
||||
#include "shared-bindings/busio/UART.h"
|
||||
|
||||
#include "lib/utils/interrupt_char.h"
|
||||
#include "py/mpconfig.h"
|
||||
#include "py/gc.h"
|
||||
#include "py/mperrno.h"
|
||||
@ -76,7 +77,7 @@ static void uart_callback_irq (const nrfx_uarte_event_t * event, void * context)
|
||||
|
||||
void common_hal_busio_uart_construct (busio_uart_obj_t *self,
|
||||
const mcu_pin_obj_t * tx, const mcu_pin_obj_t * rx, uint32_t baudrate,
|
||||
uint8_t bits, uart_parity_t parity, uint8_t stop, uint32_t timeout,
|
||||
uint8_t bits, uart_parity_t parity, uint8_t stop, mp_float_t timeout,
|
||||
uint8_t receiver_buffer_size) {
|
||||
if ( (tx == mp_const_none) && (rx == mp_const_none) ) {
|
||||
mp_raise_ValueError(translate("tx and rx cannot both be None"));
|
||||
@ -116,15 +117,19 @@ void common_hal_busio_uart_construct (busio_uart_obj_t *self,
|
||||
}
|
||||
self->bufsize = receiver_buffer_size;
|
||||
|
||||
self->rx_pin_number = rx->number;
|
||||
claim_pin(rx);
|
||||
}
|
||||
|
||||
if ( tx != mp_const_none ) {
|
||||
self->tx_pin_number = tx->number;
|
||||
claim_pin(tx);
|
||||
} else {
|
||||
self->tx_pin_number = NO_PIN;
|
||||
}
|
||||
|
||||
self->baudrate = baudrate;
|
||||
self->timeout_ms = timeout;
|
||||
self->timeout_ms = timeout * 1000;
|
||||
|
||||
// queue 1-byte transfer for rx_characters_available()
|
||||
self->rx_count = -1;
|
||||
@ -132,13 +137,16 @@ void common_hal_busio_uart_construct (busio_uart_obj_t *self,
|
||||
}
|
||||
|
||||
bool common_hal_busio_uart_deinited(busio_uart_obj_t *self) {
|
||||
return (nrf_uarte_rx_pin_get(self->uarte.p_reg) == NRF_UARTE_PSEL_DISCONNECTED) &&
|
||||
(nrf_uarte_tx_pin_get(self->uarte.p_reg) == NRF_UARTE_PSEL_DISCONNECTED);
|
||||
return self->rx_pin_number == NO_PIN;
|
||||
}
|
||||
|
||||
void common_hal_busio_uart_deinit(busio_uart_obj_t *self) {
|
||||
if ( !common_hal_busio_uart_deinited(self) ) {
|
||||
nrfx_uarte_uninit(&self->uarte);
|
||||
reset_pin_number(self->tx_pin_number);
|
||||
reset_pin_number(self->rx_pin_number);
|
||||
self->tx_pin_number = NO_PIN;
|
||||
self->rx_pin_number = NO_PIN;
|
||||
gc_free(self->buffer);
|
||||
}
|
||||
}
|
||||
@ -156,7 +164,11 @@ size_t common_hal_busio_uart_read(busio_uart_obj_t *self, uint8_t *data, size_t
|
||||
// Wait for on-going transfer to complete
|
||||
while ( (self->rx_count == -1) && (ticks_ms - start_ticks < self->timeout_ms) ) {
|
||||
#ifdef MICROPY_VM_HOOK_LOOP
|
||||
MICROPY_VM_HOOK_LOOP
|
||||
MICROPY_VM_HOOK_LOOP;
|
||||
// Allow user to break out of a timeout with a KeyboardInterrupt.
|
||||
if (mp_hal_is_interrupted()) {
|
||||
return 0;
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
||||
@ -317,7 +329,7 @@ static uint32_t get_nrf_baud (uint32_t baudrate)
|
||||
|
||||
void common_hal_busio_uart_construct (busio_uart_obj_t *self,
|
||||
const mcu_pin_obj_t * tx, const mcu_pin_obj_t * rx, uint32_t baudrate,
|
||||
uint8_t bits, uart_parity_t parity, uint8_t stop, uint32_t timeout,
|
||||
uint8_t bits, uart_parity_t parity, uint8_t stop, float timeout,
|
||||
uint8_t receiver_buffer_size) {
|
||||
mp_raise_NotImplementedError(translate("busio.UART not available"));
|
||||
}
|
||||
|
@ -44,6 +44,9 @@ typedef struct {
|
||||
uint8_t* buffer;
|
||||
uint32_t bufsize;
|
||||
volatile int32_t rx_count;
|
||||
|
||||
uint8_t tx_pin_number;
|
||||
uint8_t rx_pin_number;
|
||||
} busio_uart_obj_t;
|
||||
|
||||
#endif // MICROPY_INCLUDED_NRF_COMMON_HAL_BUSIO_UART_H
|
||||
|
@ -28,6 +28,8 @@
|
||||
#include "shared-bindings/neopixel_write/__init__.h"
|
||||
#include "nrf_pwm.h"
|
||||
|
||||
#include "tick.h"
|
||||
|
||||
// https://github.com/adafruit/Adafruit_NeoPixel/blob/master/Adafruit_NeoPixel.cpp
|
||||
// [[[Begin of the Neopixel NRF52 EasyDMA implementation
|
||||
// by the Hackerspace San Salvador]]]
|
||||
@ -95,6 +97,9 @@ static NRF_PWM_Type* find_free_pwm (void) {
|
||||
return NULL;
|
||||
}
|
||||
|
||||
uint64_t next_start_tick_ms = 0;
|
||||
uint32_t next_start_tick_us = 1000;
|
||||
|
||||
void common_hal_neopixel_write (const digitalio_digitalinout_obj_t* digitalinout, uint8_t *pixels, uint32_t numBytes) {
|
||||
// To support both the SoftDevice + Neopixels we use the EasyDMA
|
||||
// feature from the NRF25. However this technique implies to
|
||||
@ -117,7 +122,7 @@ void common_hal_neopixel_write (const digitalio_digitalinout_obj_t* digitalinout
|
||||
|
||||
// only malloc if there is PWM device available
|
||||
if ( pwm != NULL ) {
|
||||
if (numBytes == 4) {
|
||||
if (pattern_size <= sizeof(one_pixel) * sizeof(uint32_t)) {
|
||||
pixels_pattern = (uint16_t *) one_pixel;
|
||||
} else {
|
||||
pixels_pattern = (uint16_t *) m_malloc_maybe(pattern_size, false);
|
||||
@ -125,6 +130,9 @@ void common_hal_neopixel_write (const digitalio_digitalinout_obj_t* digitalinout
|
||||
}
|
||||
}
|
||||
|
||||
// Wait to make sure we don't append onto the last transmission.
|
||||
wait_until(next_start_tick_ms, next_start_tick_us);
|
||||
|
||||
// Use the identified device to choose the implementation
|
||||
// If a PWM device is available use DMA
|
||||
if ( (pixels_pattern != NULL) && (pwm != NULL) ) {
|
||||
@ -140,8 +148,8 @@ void common_hal_neopixel_write (const digitalio_digitalinout_obj_t* digitalinout
|
||||
}
|
||||
|
||||
// Zero padding to indicate the end of sequence
|
||||
pixels_pattern[++pos] = 0 | (0x8000); // Seq end
|
||||
pixels_pattern[++pos] = 0 | (0x8000); // Seq end
|
||||
pixels_pattern[pos++] = 0 | (0x8000); // Seq end
|
||||
pixels_pattern[pos++] = 0 | (0x8000); // Seq end
|
||||
|
||||
// Set the wave mode to count UP
|
||||
// Set the PWM to use the 16MHz clock
|
||||
@ -274,4 +282,13 @@ void common_hal_neopixel_write (const digitalio_digitalinout_obj_t* digitalinout
|
||||
// Enable interrupts again
|
||||
__enable_irq();
|
||||
}
|
||||
|
||||
// Update the next start.
|
||||
current_tick(&next_start_tick_ms, &next_start_tick_us);
|
||||
if (next_start_tick_us < 100) {
|
||||
next_start_tick_ms += 1;
|
||||
next_start_tick_us = 100 - next_start_tick_us;
|
||||
} else {
|
||||
next_start_tick_us -= 100;
|
||||
}
|
||||
}
|
||||
|
@ -74,16 +74,16 @@
|
||||
#define mp_builtin_open_obj mp_vfs_open_obj
|
||||
#endif
|
||||
|
||||
#define MICROPY_CPYTHON_COMPAT (0)
|
||||
#define MICROPY_CPYTHON_COMPAT (1)
|
||||
#define MICROPY_STREAMS_NON_BLOCK (1)
|
||||
#define MICROPY_MODULE_WEAK_LINKS (1)
|
||||
#define MICROPY_CAN_OVERRIDE_BUILTINS (1)
|
||||
#define MICROPY_USE_INTERNAL_ERRNO (0)
|
||||
#define MICROPY_PY_FUNCTION_ATTRS (1)
|
||||
#define MICROPY_PY_BUILTINS_STR_UNICODE (1)
|
||||
#define MICROPY_PY_BUILTINS_STR_CENTER (0)
|
||||
#define MICROPY_PY_BUILTINS_STR_PARTITION (0)
|
||||
#define MICROPY_PY_BUILTINS_STR_SPLITLINES (0)
|
||||
#define MICROPY_PY_BUILTINS_STR_CENTER (1)
|
||||
#define MICROPY_PY_BUILTINS_STR_PARTITION (1)
|
||||
#define MICROPY_PY_BUILTINS_STR_SPLITLINES (1)
|
||||
#define MICROPY_PY_BUILTINS_MEMORYVIEW (1)
|
||||
#define MICROPY_PY_BUILTINS_FROZENSET (1)
|
||||
#define MICROPY_PY_BUILTINS_EXECFILE (0)
|
||||
@ -155,6 +155,7 @@ typedef long mp_off_t;
|
||||
|
||||
#define MP_PLAT_PRINT_STRN(str, len) mp_hal_stdout_tx_strn_cooked(str, len)
|
||||
#define mp_type_fileio mp_type_vfs_fat_fileio
|
||||
#define mp_type_textio mp_type_vfs_fat_textio
|
||||
|
||||
// extra built in modules to add to the list of known ones
|
||||
|
||||
|
@ -32,4 +32,7 @@ void nrf_peripherals_clocks_init(void) {
|
||||
// generalized.
|
||||
NRF_CLOCK->LFCLKSRC = (uint32_t)((CLOCK_LFCLKSRC_SRC_Xtal << CLOCK_LFCLKSRC_SRC_Pos) & CLOCK_LFCLKSRC_SRC_Msk);
|
||||
NRF_CLOCK->TASKS_LFCLKSTART = 1UL;
|
||||
|
||||
// Wait for clocks to start.
|
||||
while (NRF_CLOCK->EVENTS_LFCLKSTARTED == 0) {}
|
||||
}
|
||||
|
@ -28,6 +28,9 @@
|
||||
#include "supervisor/port.h"
|
||||
#include "boards/board.h"
|
||||
|
||||
#include "nrfx/hal/nrf_power.h"
|
||||
#include "nrfx/drivers/include/nrfx_power.h"
|
||||
|
||||
#include "nrf/cache.h"
|
||||
#include "nrf/clocks.h"
|
||||
#include "nrf/power.h"
|
||||
@ -41,37 +44,34 @@
|
||||
#include "common-hal/pulseio/PulseOut.h"
|
||||
#include "tick.h"
|
||||
|
||||
safe_mode_t port_init(void) {
|
||||
static void power_warning_handler(void) {
|
||||
reset_into_safe_mode(BROWNOUT);
|
||||
}
|
||||
|
||||
safe_mode_t port_init(void) {
|
||||
nrf_peripherals_clocks_init();
|
||||
|
||||
// If GPIO voltage is set wrong in UICR, this will fix it, and
|
||||
// will also do a reset to make the change take effect.
|
||||
nrf_peripherals_power_init();
|
||||
|
||||
nrfx_power_pofwarn_config_t power_failure_config;
|
||||
power_failure_config.handler = power_warning_handler;
|
||||
power_failure_config.thr = NRF_POWER_POFTHR_V27;
|
||||
#if NRF_POWER_HAS_VDDH
|
||||
power_failure_config.thrvddh = NRF_POWER_POFTHRVDDH_V27;
|
||||
#endif
|
||||
nrfx_power_pof_init(&power_failure_config);
|
||||
nrfx_power_pof_enable(&power_failure_config);
|
||||
|
||||
nrf_peripherals_enable_cache();
|
||||
|
||||
// Configure millisecond timer initialization.
|
||||
tick_init();
|
||||
|
||||
#if 0
|
||||
#ifdef CIRCUITPY_CANARY_WORD
|
||||
// Run in safe mode if the canary is corrupt.
|
||||
if (_ezero != CIRCUITPY_CANARY_WORD) {
|
||||
return HARD_CRASH;
|
||||
}
|
||||
#endif
|
||||
#endif
|
||||
|
||||
// Will do usb_init() if chip supports USB.
|
||||
board_init();
|
||||
|
||||
#if 0
|
||||
if (board_requests_safe_mode()) {
|
||||
return USER_SAFE_MODE;
|
||||
}
|
||||
#endif
|
||||
|
||||
return NO_SAFE_MODE;
|
||||
}
|
||||
|
||||
@ -93,13 +93,26 @@ void reset_to_bootloader(void) {
|
||||
enum { DFU_MAGIC_SERIAL = 0x4e };
|
||||
|
||||
NRF_POWER->GPREGRET = DFU_MAGIC_SERIAL;
|
||||
reset_cpu();
|
||||
}
|
||||
|
||||
void reset_cpu(void) {
|
||||
NVIC_SystemReset();
|
||||
}
|
||||
|
||||
extern uint32_t _ebss;
|
||||
// Place the word to save just after our BSS section that gets blanked.
|
||||
void port_set_saved_word(uint32_t value) {
|
||||
_ebss = value;
|
||||
}
|
||||
|
||||
void HardFault_Handler(void)
|
||||
{
|
||||
uint32_t port_get_saved_word(void) {
|
||||
return _ebss;
|
||||
}
|
||||
|
||||
void HardFault_Handler(void) {
|
||||
reset_into_safe_mode(HARD_CRASH);
|
||||
while (true) {
|
||||
asm("");
|
||||
asm("nop;");
|
||||
}
|
||||
}
|
||||
|
@ -149,6 +149,8 @@ SRC_C = \
|
||||
alloc.c \
|
||||
coverage.c \
|
||||
fatfs_port.c \
|
||||
supervisor/stub/serial.c \
|
||||
supervisor/stub/stack.c \
|
||||
supervisor/shared/translate.c \
|
||||
$(SRC_MOD)
|
||||
|
||||
|
6
py/obj.c
6
py/obj.c
@ -33,10 +33,12 @@
|
||||
#include "py/objtype.h"
|
||||
#include "py/objint.h"
|
||||
#include "py/objstr.h"
|
||||
#include "py/qstr.h"
|
||||
#include "py/runtime.h"
|
||||
#include "py/stackctrl.h"
|
||||
#include "py/stream.h" // for mp_obj_print
|
||||
|
||||
#include "supervisor/shared/stack.h"
|
||||
#include "supervisor/shared/translate.h"
|
||||
|
||||
mp_obj_type_t *mp_obj_get_type(mp_const_obj_t o_in) {
|
||||
@ -81,7 +83,7 @@ void mp_obj_print(mp_obj_t o_in, mp_print_kind_t kind) {
|
||||
|
||||
// helper function to print an exception with traceback
|
||||
void mp_obj_print_exception(const mp_print_t *print, mp_obj_t exc) {
|
||||
if (mp_obj_is_exception_instance(exc)) {
|
||||
if (mp_obj_is_exception_instance(exc) && stack_ok()) {
|
||||
size_t n, *values;
|
||||
mp_obj_exception_get_traceback(exc, &n, &values);
|
||||
if (n > 0) {
|
||||
@ -486,6 +488,8 @@ mp_obj_t mp_obj_subscr(mp_obj_t base, mp_obj_t index, mp_obj_t value) {
|
||||
mp_obj_type_t *type = mp_obj_get_type(base);
|
||||
if (type->subscr != NULL) {
|
||||
mp_obj_t ret = type->subscr(base, index, value);
|
||||
// May have called port specific C code. Make sure it didn't mess up the heap.
|
||||
assert_heap_ok();
|
||||
if (ret != MP_OBJ_NULL) {
|
||||
return ret;
|
||||
}
|
||||
|
@ -250,6 +250,9 @@ void mp_stream_write_adaptor(void *self, const char *buf, size_t len) {
|
||||
STATIC mp_obj_t stream_write_method(size_t n_args, const mp_obj_t *args) {
|
||||
mp_buffer_info_t bufinfo;
|
||||
mp_get_buffer_raise(args[1], &bufinfo, MP_BUFFER_READ);
|
||||
if (!mp_get_stream(args[0])->is_text && MP_OBJ_IS_STR(args[1])) {
|
||||
mp_raise_ValueError(translate("string not supported; use bytes or bytearray"));
|
||||
}
|
||||
size_t max_len = (size_t)-1;
|
||||
size_t off = 0;
|
||||
if (n_args == 3) {
|
||||
@ -282,6 +285,9 @@ STATIC mp_obj_t stream_readinto(size_t n_args, const mp_obj_t *args) {
|
||||
// https://docs.python.org/3/library/socket.html#socket.socket.recv_into
|
||||
mp_uint_t len = bufinfo.len;
|
||||
if (n_args > 2) {
|
||||
if (mp_get_stream(args[0])->pyserial_compatibility) {
|
||||
mp_raise_ValueError(translate("length argument not allowed for this type"));
|
||||
}
|
||||
len = mp_obj_get_int(args[2]);
|
||||
if (len > bufinfo.len) {
|
||||
len = bufinfo.len;
|
||||
|
@ -70,6 +70,7 @@ typedef struct _mp_stream_p_t {
|
||||
mp_uint_t (*write)(mp_obj_t obj, const void *buf, mp_uint_t size, int *errcode);
|
||||
mp_uint_t (*ioctl)(mp_obj_t obj, mp_uint_t request, uintptr_t arg, int *errcode);
|
||||
mp_uint_t is_text : 1; // default is bytes, set this for text stream
|
||||
bool pyserial_compatibility: 1; // adjust API to match pyserial more closely
|
||||
} mp_stream_p_t;
|
||||
|
||||
MP_DECLARE_CONST_FUN_OBJ_VAR_BETWEEN(mp_stream_read_obj);
|
||||
|
@ -101,7 +101,7 @@ STATIC mp_obj_t audioio_audioout_make_new(const mp_obj_type_t *type, size_t n_ar
|
||||
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_QSTR_quiescent_value, MP_ARG_INT | 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);
|
||||
|
@ -58,7 +58,7 @@
|
||||
//| :param ~microcontroller.Pin scl: The clock pin
|
||||
//| :param ~microcontroller.Pin sda: The data pin
|
||||
//| :param int frequency: The clock frequency in Hertz
|
||||
//| :param int timeout: The maximum clock stretching timeut - only for bitbang
|
||||
//| :param int timeout: The maximum clock stretching timeut - (used only for bitbangio.I2C; ignored for busio.I2C)
|
||||
//|
|
||||
STATIC mp_obj_t busio_i2c_make_new(const mp_obj_type_t *type, size_t n_args, size_t n_kw, const mp_obj_t *pos_args) {
|
||||
mp_arg_check_num(n_args, n_kw, 0, MP_OBJ_FUN_ARGS_MAX, true);
|
||||
|
@ -31,6 +31,7 @@
|
||||
#include "shared-bindings/util.h"
|
||||
|
||||
#include "lib/utils/context_manager_helpers.h"
|
||||
#include "lib/utils/interrupt_char.h"
|
||||
|
||||
#include "py/ioctl.h"
|
||||
#include "py/objproperty.h"
|
||||
@ -45,7 +46,7 @@
|
||||
//| =================================================
|
||||
//|
|
||||
//|
|
||||
//| .. class:: UART(tx, rx, \*, baudrate=9600, bits=8, parity=None, stop=1, timeout=1000, receiver_buffer_size=64)
|
||||
//| .. class:: UART(tx, rx, \*, baudrate=9600, bits=8, parity=None, stop=1, timeout=1, receiver_buffer_size=64)
|
||||
//|
|
||||
//| A common bidirectional serial protocol that uses an an agreed upon speed
|
||||
//| rather than a shared clock line.
|
||||
@ -53,12 +54,15 @@
|
||||
//| :param ~microcontroller.Pin tx: the pin to transmit with, or ``None`` if this ``UART`` is receive-only.
|
||||
//| :param ~microcontroller.Pin rx: the pin to receive on, or ``None`` if this ``UART`` is transmit-only.
|
||||
//| :param int baudrate: the transmit and receive speed.
|
||||
/// :param int bits: the number of bits per byte, 7, 8 or 9.
|
||||
/// :param Parity parity: the parity used for error checking.
|
||||
/// :param int stop: the number of stop bits, 1 or 2.
|
||||
/// :param int timeout: the timeout in milliseconds to wait for the first character and between subsequent characters.
|
||||
/// :param int receiver_buffer_size: the character length of the read buffer (0 to disable). (When a character is 9 bits the buffer will be 2 * receiver_buffer_size bytes.)
|
||||
//| :param int bits: the number of bits per byte, 7, 8 or 9.
|
||||
//| :param Parity parity: the parity used for error checking.
|
||||
//| :param int stop: the number of stop bits, 1 or 2.
|
||||
//| :param int timeout: the timeout in seconds to wait for the first character and between subsequent characters. Raises ``ValueError`` if timeout >100 seconds.
|
||||
//| :param int receiver_buffer_size: the character length of the read buffer (0 to disable). (When a character is 9 bits the buffer will be 2 * receiver_buffer_size bytes.)
|
||||
//|
|
||||
//| *New in CircuitPython 4.0:* ``timeout`` has incompatibly changed units from milliseconds to seconds.
|
||||
//| The new upper limit on ``timeout`` is meant to catch mistaken use of milliseconds.
|
||||
|
||||
typedef struct {
|
||||
mp_obj_base_t base;
|
||||
} busio_uart_parity_obj_t;
|
||||
@ -83,7 +87,7 @@ STATIC mp_obj_t busio_uart_make_new(const mp_obj_type_t *type, size_t n_args, si
|
||||
{ MP_QSTR_bits, MP_ARG_KW_ONLY | MP_ARG_INT, {.u_int = 8} },
|
||||
{ MP_QSTR_parity, MP_ARG_KW_ONLY | MP_ARG_OBJ, {.u_obj = mp_const_none} },
|
||||
{ MP_QSTR_stop, MP_ARG_KW_ONLY | MP_ARG_INT, {.u_int = 1} },
|
||||
{ MP_QSTR_timeout, MP_ARG_KW_ONLY | MP_ARG_INT, {.u_int = 1000} },
|
||||
{ MP_QSTR_timeout, MP_ARG_KW_ONLY | MP_ARG_OBJ, {.u_obj = MP_OBJ_NEW_SMALL_INT(1)} },
|
||||
{ MP_QSTR_receiver_buffer_size, MP_ARG_KW_ONLY | MP_ARG_INT, {.u_int = 64} },
|
||||
};
|
||||
mp_arg_val_t args[MP_ARRAY_SIZE(allowed_args)];
|
||||
@ -114,9 +118,14 @@ STATIC mp_obj_t busio_uart_make_new(const mp_obj_type_t *type, size_t n_args, si
|
||||
mp_raise_ValueError(translate("stop must be 1 or 2"));
|
||||
}
|
||||
|
||||
mp_float_t timeout = mp_obj_get_float(args[ARG_timeout].u_obj);
|
||||
if (timeout > 100.0f) {
|
||||
mp_raise_ValueError(translate("timeout >100 (units are now seconds, not msecs)"));
|
||||
}
|
||||
|
||||
common_hal_busio_uart_construct(self, tx, rx,
|
||||
args[ARG_baudrate].u_int, bits, parity, stop, args[ARG_timeout].u_int,
|
||||
args[ARG_receiver_buffer_size].u_int);
|
||||
args[ARG_baudrate].u_int, bits, parity, stop, timeout,
|
||||
args[ARG_receiver_buffer_size].u_int);
|
||||
return (mp_obj_t)self;
|
||||
}
|
||||
|
||||
@ -161,14 +170,15 @@ STATIC MP_DEFINE_CONST_FUN_OBJ_VAR_BETWEEN(busio_uart___exit___obj, 4, 4, busio_
|
||||
//| :return: Data read
|
||||
//| :rtype: bytes or None
|
||||
//|
|
||||
//| .. method:: readinto(buf, nbytes=None)
|
||||
//| .. method:: readinto(buf)
|
||||
//|
|
||||
//| Read bytes into the ``buf``. If ``nbytes`` is specified then read at most
|
||||
//| that many bytes. Otherwise, read at most ``len(buf)`` bytes.
|
||||
//| Read bytes into the ``buf``. Read at most ``len(buf)`` bytes.
|
||||
//|
|
||||
//| :return: number of bytes read and stored into ``buf``
|
||||
//| :rtype: bytes or None
|
||||
//|
|
||||
//| *New in CircuitPython 4.0:* No length parameter is permitted.
|
||||
|
||||
//| .. method:: readline()
|
||||
//|
|
||||
//| Read a line, ending in a newline character.
|
||||
@ -180,6 +190,8 @@ STATIC MP_DEFINE_CONST_FUN_OBJ_VAR_BETWEEN(busio_uart___exit___obj, 4, 4, busio_
|
||||
//|
|
||||
//| Write the buffer of bytes to the bus.
|
||||
//|
|
||||
//| *New in CircuitPython 4.0:* ``buf`` must be bytes, not a string.
|
||||
//|
|
||||
//| :return: the number of bytes written
|
||||
//| :rtype: int or None
|
||||
//|
|
||||
@ -353,6 +365,8 @@ STATIC const mp_stream_p_t uart_stream_p = {
|
||||
.write = busio_uart_write,
|
||||
.ioctl = busio_uart_ioctl,
|
||||
.is_text = false,
|
||||
// Match PySerial when possible, such as disallowing optional length argument for .readinto()
|
||||
.pyserial_compatibility = true,
|
||||
};
|
||||
|
||||
const mp_obj_type_t busio_uart_type = {
|
||||
|
@ -41,7 +41,7 @@ typedef enum {
|
||||
// Construct an underlying UART object.
|
||||
extern void common_hal_busio_uart_construct(busio_uart_obj_t *self,
|
||||
const mcu_pin_obj_t * tx, const mcu_pin_obj_t * rx, uint32_t baudrate,
|
||||
uint8_t bits, uart_parity_t parity, uint8_t stop, uint32_t timeout,
|
||||
uint8_t bits, uart_parity_t parity, uint8_t stop, mp_float_t timeout,
|
||||
uint8_t receiver_buffer_size);
|
||||
|
||||
extern void common_hal_busio_uart_deinit(busio_uart_obj_t *self);
|
||||
|
@ -33,12 +33,7 @@
|
||||
#error "Please define PORT_HEAP_SIZE to specify heap size in bytes."
|
||||
#endif
|
||||
|
||||
typedef enum {
|
||||
NO_SAFE_MODE = 0,
|
||||
BROWNOUT,
|
||||
HARD_CRASH,
|
||||
USER_SAFE_MODE,
|
||||
} safe_mode_t;
|
||||
#include "supervisor/shared/safe_mode.h"
|
||||
|
||||
// Provided by the linker;
|
||||
extern uint32_t _ezero;
|
||||
@ -51,7 +46,10 @@ extern uint32_t _ebss;
|
||||
|
||||
safe_mode_t port_init(void);
|
||||
|
||||
// Reset the microcontroller.
|
||||
// Reset the microcontroller completely.
|
||||
void reset_cpu(void);
|
||||
|
||||
// Reset the microcontroller state.
|
||||
void reset_port(void);
|
||||
|
||||
// Reset the rest of the board.
|
||||
@ -60,8 +58,8 @@ void reset_board(void);
|
||||
// Reset to the bootloader
|
||||
void reset_to_bootloader(void);
|
||||
|
||||
#ifdef NRF52_SERIES
|
||||
void HardFault_Handler(void);
|
||||
#endif
|
||||
// Save and retrieve a word from memory that is preserved over reset. Used for safe mode.
|
||||
void port_set_saved_word(uint32_t);
|
||||
uint32_t port_get_saved_word(void);
|
||||
|
||||
#endif // MICROPY_INCLUDED_SUPERVISOR_PORT_H
|
||||
|
@ -220,10 +220,10 @@ typedef struct {
|
||||
.memory_type = 0x70, \
|
||||
.capacity = 0x15, \
|
||||
.max_clock_speed_mhz = 133, \
|
||||
.quad_enable_bit_mask = 0x02, \
|
||||
.has_sector_protection = false, \
|
||||
.supports_fast_read = true, \
|
||||
.supports_qspi = true, \
|
||||
.has_quad_enable = true, \
|
||||
.supports_qspi_writes = true, \
|
||||
.write_status_register_split = false, \
|
||||
}
|
||||
@ -254,10 +254,10 @@ typedef struct {
|
||||
.memory_type = 0x70, \
|
||||
.capacity = 0x16, \
|
||||
.max_clock_speed_mhz = 133, \
|
||||
.quad_enable_bit_mask = 0x02, \
|
||||
.has_sector_protection = false, \
|
||||
.supports_fast_read = true, \
|
||||
.supports_qspi = true, \
|
||||
.has_quad_enable = true, \
|
||||
.supports_qspi_writes = true, \
|
||||
.write_status_register_split = false, \
|
||||
}
|
||||
@ -275,7 +275,6 @@ typedef struct {
|
||||
.has_sector_protection = false, \
|
||||
.supports_fast_read = true, \
|
||||
.supports_qspi = true, \
|
||||
.has_quad_enable = true, \
|
||||
.supports_qspi_writes = true, \
|
||||
.write_status_register_split = false, \
|
||||
.single_status_byte = false, \
|
||||
@ -336,6 +335,42 @@ typedef struct {
|
||||
.single_status_byte = false, \
|
||||
}
|
||||
|
||||
// Settings for the Macronix MX25L1606 2MiB SPI flash.
|
||||
// Datasheet:
|
||||
#define MX25L1606 {\
|
||||
.total_size = (1 << 21), /* 2 MiB */ \
|
||||
.start_up_time_us = 5000, \
|
||||
.manufacturer_id = 0xc2, \
|
||||
.memory_type = 0x20, \
|
||||
.capacity = 0x15, \
|
||||
.max_clock_speed_mhz = 8, \
|
||||
.quad_enable_bit_mask = 0x40, \
|
||||
.has_sector_protection = false, \
|
||||
.supports_fast_read = true, \
|
||||
.supports_qspi = true, \
|
||||
.supports_qspi_writes = true, \
|
||||
.write_status_register_split = false, \
|
||||
.single_status_byte = true, \
|
||||
}
|
||||
|
||||
// Settings for the Macronix MX25L3233F 4MiB SPI flash.
|
||||
// Datasheet: http://www.macronix.com/Lists/Datasheet/Attachments/7426/MX25L3233F,%203V,%2032Mb,%20v1.6.pdf
|
||||
#define MX25L3233F {\
|
||||
.total_size = (1 << 22), /* 4 MiB */ \
|
||||
.start_up_time_us = 5000, \
|
||||
.manufacturer_id = 0xc2, \
|
||||
.memory_type = 0x20, \
|
||||
.capacity = 0x16, \
|
||||
.max_clock_speed_mhz = 133, \
|
||||
.quad_enable_bit_mask = 0x40, \
|
||||
.has_sector_protection = false, \
|
||||
.supports_fast_read = true, \
|
||||
.supports_qspi = true, \
|
||||
.supports_qspi_writes = true, \
|
||||
.write_status_register_split = false, \
|
||||
.single_status_byte = true, \
|
||||
}
|
||||
|
||||
// Settings for the Macronix MX25R6435F 8MiB SPI flash.
|
||||
// Datasheet: http://www.macronix.com/Lists/Datasheet/Attachments/7428/MX25R6435F,%20Wide%20Range,%2064Mb,%20v1.4.pdf
|
||||
// By default its in lower power mode which can only do 8mhz. In high power mode it can do 80mhz.
|
||||
@ -364,10 +399,10 @@ typedef struct {
|
||||
.memory_type = 0x70, \
|
||||
.capacity = 0x18, \
|
||||
.max_clock_speed_mhz = 133, \
|
||||
.quad_enable_bit_mask = 0x02, \
|
||||
.has_sector_protection = false, \
|
||||
.supports_fast_read = true, \
|
||||
.supports_qspi = true, \
|
||||
.has_quad_enable = true, \
|
||||
.supports_qspi_writes = true, \
|
||||
.write_status_register_split = false, \
|
||||
}
|
||||
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
x
Reference in New Issue
Block a user