Merge pull request #2 from adafruit/master

Get latest
This commit is contained in:
Juan Biondi 2018-12-12 21:05:16 +01:00 committed by GitHub
commit 749b2b0aac
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
112 changed files with 3040 additions and 1182 deletions

2
.gitmodules vendored
View File

@ -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

View File

@ -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'

View File

@ -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

View File

@ -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 ""

View File

@ -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"

View File

@ -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 ""

View File

@ -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."

View File

@ -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."

View File

@ -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"

View File

@ -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"

View File

@ -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
View File

@ -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) {}
}

View File

@ -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

View File

@ -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)

View File

@ -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

View File

@ -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;
}

View File

@ -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

View File

@ -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)

View 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) {
}

View 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

View 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

View 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);

View File

@ -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

View File

@ -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)

View File

@ -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)

View File

@ -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)

View File

@ -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

View File

@ -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"

View File

@ -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"

View File

@ -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

View File

@ -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

View File

@ -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"

View File

@ -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"

View File

@ -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

View File

@ -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.

View File

@ -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

View File

@ -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)

View File

@ -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)

View File

@ -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

View File

@ -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)

View File

@ -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)

View File

@ -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)

View File

@ -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

View File

@ -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.

View 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) {
}

View 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

View 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

View 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);

View File

@ -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)

View File

@ -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)

View File

@ -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) {

View File

@ -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;
}

View File

@ -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

View File

@ -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;");
}
}

View File

@ -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)

View File

@ -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).")));

View File

@ -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();
}

View File

@ -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)

View File

@ -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)

View File

@ -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) },

View 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) {
}

View 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)

View 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"

View 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);

View 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) {
}

View 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)

View 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"

View 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);

View 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) {
}

View 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)

View 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"

View 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);

View File

@ -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)

View File

@ -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) },

View File

@ -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)

View File

@ -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

View 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)

View 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) {
}

View 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*/

View 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 =

View 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);

View File

@ -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"));
}

View File

@ -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

View File

@ -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;
}
}

View File

@ -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

View File

@ -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) {}
}

View File

@ -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;");
}
}

View File

@ -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)

View File

@ -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;
}

View File

@ -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;

View File

@ -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);

View File

@ -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);

View File

@ -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);

View File

@ -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 = {

View File

@ -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);

View File

@ -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

View File

@ -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