Merge remote-tracking branch 'adafruit/master' into wdt-nrf
This commit is contained in:
commit
323cca8910
21
Makefile
21
Makefile
@ -202,22 +202,37 @@ pseudoxml:
|
||||
@echo "Build finished. The pseudo-XML files are in $(BUILDDIR)/pseudoxml."
|
||||
|
||||
# phony target so we always run
|
||||
.PHONY: all-source
|
||||
all-source:
|
||||
|
||||
locale/circuitpython.pot: all-source
|
||||
find $(TRANSLATE_SOURCES) -iname "*.c" -print | (LC_ALL=C sort) | xgettext -f- -L C -s --add-location=file --keyword=translate -o circuitpython.pot -p locale
|
||||
|
||||
# Historically, `make translate` updated the .pot file and ran msgmerge.
|
||||
# However, this was a frequent source of merge conflicts. Weblate can perform
|
||||
# msgmerge, so make translate merely update the translation template file.
|
||||
.PHONY: translate
|
||||
translate: locale/circuitpython.pot
|
||||
|
||||
# Note that normally we rely on weblate to perform msgmerge. This reduces the
|
||||
# chance of a merge conflict between developer changes (that only add and
|
||||
# remove source strings) and weblate changes (that only add and remove
|
||||
# translated strings from po files). However, in case this is legitimately
|
||||
# needed we preserve a rule to do it.
|
||||
.PHONY: msgmerge
|
||||
msgmerge:
|
||||
for po in $(shell ls locale/*.po); do msgmerge -U $$po -s --no-fuzzy-matching --add-location=file locale/circuitpython.pot; done
|
||||
|
||||
merge-translate:
|
||||
git merge HEAD 1>&2 2> /dev/null; test $$? -eq 128
|
||||
rm locale/*~ || true
|
||||
git checkout --ours -- locale/*
|
||||
git checkout --theirs -- locale/*
|
||||
make translate
|
||||
|
||||
check-translate: locale/circuitpython.pot $(wildcard locale/*.po)
|
||||
$(PYTHON) tools/check_translations.py $^
|
||||
.PHONY: check-translate
|
||||
check-translate:
|
||||
find $(TRANSLATE_SOURCES) -iname "*.c" -print | (LC_ALL=C sort) | xgettext -f- -L C -s --add-location=file --keyword=translate -o circuitpython.pot.tmp -p locale
|
||||
$(PYTHON) tools/check_translations.py locale/circuitpython.pot.tmp locale/circuitpython.pot; status=$$?; rm -f locale/circuitpython.pot.tmp; exit $$status
|
||||
|
||||
stubs:
|
||||
@mkdir -p circuitpython-stubs
|
||||
|
30
locale/ID.po
30
locale/ID.po
@ -8,7 +8,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: PACKAGE VERSION\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2020-05-27 10:46-0700\n"
|
||||
"POT-Creation-Date: 2020-05-27 20:51-0500\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"
|
||||
@ -1667,26 +1667,6 @@ msgstr ""
|
||||
msgid "WARNING: Your code filename has two extensions\n"
|
||||
msgstr "PERINGATAN: Nama file kode anda mempunyai dua ekstensi\n"
|
||||
|
||||
#: shared-bindings/watchdog/WatchDogTimer.c
|
||||
msgid "WatchDogTimer cannot be deinitialized once mode is set to RESET"
|
||||
msgstr ""
|
||||
|
||||
#: shared-bindings/watchdog/WatchDogTimer.c
|
||||
msgid "WatchDogTimer is not currently running"
|
||||
msgstr ""
|
||||
|
||||
#: shared-bindings/watchdog/WatchDogTimer.c
|
||||
msgid "WatchDogTimer.mode cannot be changed once set to WatchDogMode.RESET"
|
||||
msgstr ""
|
||||
|
||||
#: shared-bindings/watchdog/WatchDogTimer.c
|
||||
msgid "WatchDogTimer.timeout must be greater than 0"
|
||||
msgstr ""
|
||||
|
||||
#: supervisor/shared/safe_mode.c
|
||||
msgid "Watchdog timer expired."
|
||||
msgstr ""
|
||||
|
||||
#: py/builtinhelp.c
|
||||
#, c-format
|
||||
msgid ""
|
||||
@ -3074,10 +3054,6 @@ msgstr ""
|
||||
msgid "time.struct_time() takes a 9-sequence"
|
||||
msgstr ""
|
||||
|
||||
#: ports/nrf/common-hal/watchdog/WatchDogTimer.c
|
||||
msgid "timeout duration exceeded the maximum supported value"
|
||||
msgstr ""
|
||||
|
||||
#: shared-bindings/busio/UART.c
|
||||
msgid "timeout must be 0.0-100.0 seconds"
|
||||
msgstr ""
|
||||
@ -3232,10 +3208,6 @@ msgstr ""
|
||||
msgid "value_count must be > 0"
|
||||
msgstr ""
|
||||
|
||||
#: shared-bindings/watchdog/WatchDogTimer.c
|
||||
msgid "watchdog timeout must be greater than 0"
|
||||
msgstr ""
|
||||
|
||||
#: shared-bindings/_bleio/Adapter.c
|
||||
msgid "window must be <= interval"
|
||||
msgstr ""
|
||||
|
@ -8,7 +8,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: PACKAGE VERSION\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2020-05-29 10:15-0700\n"
|
||||
"POT-Creation-Date: 2020-06-01 15:17-0700\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"
|
||||
@ -874,7 +874,7 @@ msgstr ""
|
||||
msgid "Invalid DAC pin supplied"
|
||||
msgstr ""
|
||||
|
||||
#: ports/mimxrt10xx/common-hal/busio/I2C.c ports/stm/common-hal/busio/I2C.c
|
||||
#: ports/stm/common-hal/busio/I2C.c
|
||||
msgid "Invalid I2C pin selection"
|
||||
msgstr ""
|
||||
|
||||
@ -964,7 +964,8 @@ msgstr ""
|
||||
#: ports/atmel-samd/common-hal/busio/UART.c
|
||||
#: ports/atmel-samd/common-hal/i2cslave/I2CSlave.c
|
||||
#: ports/cxd56/common-hal/busio/I2C.c ports/cxd56/common-hal/busio/SPI.c
|
||||
#: ports/cxd56/common-hal/busio/UART.c ports/mimxrt10xx/common-hal/busio/SPI.c
|
||||
#: ports/cxd56/common-hal/busio/UART.c ports/mimxrt10xx/common-hal/busio/I2C.c
|
||||
#: ports/mimxrt10xx/common-hal/busio/SPI.c
|
||||
#: ports/mimxrt10xx/common-hal/busio/UART.c ports/nrf/common-hal/busio/I2C.c
|
||||
msgid "Invalid pins"
|
||||
msgstr ""
|
||||
@ -1356,7 +1357,8 @@ msgstr ""
|
||||
msgid "Running in safe mode! Not running saved code.\n"
|
||||
msgstr ""
|
||||
|
||||
#: ports/atmel-samd/common-hal/busio/I2C.c ports/nrf/common-hal/busio/I2C.c
|
||||
#: ports/atmel-samd/common-hal/busio/I2C.c
|
||||
#: ports/mimxrt10xx/common-hal/busio/I2C.c ports/nrf/common-hal/busio/I2C.c
|
||||
msgid "SDA or SCL needs a pull up"
|
||||
msgstr ""
|
||||
|
||||
|
@ -7,9 +7,9 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: \n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2020-05-29 10:15-0700\n"
|
||||
"PO-Revision-Date: 2020-05-23 16:13+0000\n"
|
||||
"Last-Translator: Timon <timon@skerutsch.de>\n"
|
||||
"POT-Creation-Date: 2020-05-27 20:51-0500\n"
|
||||
"PO-Revision-Date: 2020-05-29 17:42+0000\n"
|
||||
"Last-Translator: Thomas Friehoff <thomas.friehoff@googlemail.com>\n"
|
||||
"Language-Team: German <https://later.unpythonic.net/projects/circuitpython/"
|
||||
"circuitpython-master/de/>\n"
|
||||
"Language: de_DE\n"
|
||||
@ -383,7 +383,7 @@ msgstr "Bit depth muss ein Vielfaches von 8 sein."
|
||||
|
||||
#: ports/mimxrt10xx/common-hal/busio/UART.c
|
||||
msgid "Both RX and TX required for flow control"
|
||||
msgstr ""
|
||||
msgstr "Sowohl RX als auch TX sind zu Flusssteuerung erforderlich"
|
||||
|
||||
#: ports/atmel-samd/common-hal/rotaryio/IncrementalEncoder.c
|
||||
msgid "Both pins must support hardware interrupts"
|
||||
@ -652,7 +652,7 @@ msgstr "DAC Kanal Intialisierungs Fehler"
|
||||
|
||||
#: ports/stm/common-hal/analogio/AnalogOut.c
|
||||
msgid "DAC Device Init Error"
|
||||
msgstr "DAC Device Init Error"
|
||||
msgstr "DAC Device Initialisierungs-Fehler"
|
||||
|
||||
#: ports/atmel-samd/common-hal/audioio/AudioOut.c
|
||||
msgid "DAC already in use"
|
||||
@ -1275,7 +1275,7 @@ msgstr "Pin hat keine ADC Funktionalität"
|
||||
|
||||
#: shared-bindings/digitalio/DigitalInOut.c
|
||||
msgid "Pin is input only"
|
||||
msgstr ""
|
||||
msgstr "Pin kann nur als Eingang verwendet werden"
|
||||
|
||||
#: ports/atmel-samd/common-hal/countio/Counter.c
|
||||
msgid "Pin must support hardware interrupts"
|
||||
@ -1709,26 +1709,6 @@ msgid "WARNING: Your code filename has two extensions\n"
|
||||
msgstr ""
|
||||
"WARNUNG: Der Dateiname deines Programms hat zwei Dateityperweiterungen\n"
|
||||
|
||||
#: shared-bindings/watchdog/WatchDogTimer.c
|
||||
msgid "WatchDogTimer cannot be deinitialized once mode is set to RESET"
|
||||
msgstr ""
|
||||
|
||||
#: shared-bindings/watchdog/WatchDogTimer.c
|
||||
msgid "WatchDogTimer is not currently running"
|
||||
msgstr ""
|
||||
|
||||
#: shared-bindings/watchdog/WatchDogTimer.c
|
||||
msgid "WatchDogTimer.mode cannot be changed once set to WatchDogMode.RESET"
|
||||
msgstr ""
|
||||
|
||||
#: shared-bindings/watchdog/WatchDogTimer.c
|
||||
msgid "WatchDogTimer.timeout must be greater than 0"
|
||||
msgstr ""
|
||||
|
||||
#: supervisor/shared/safe_mode.c
|
||||
msgid "Watchdog timer expired."
|
||||
msgstr ""
|
||||
|
||||
#: py/builtinhelp.c
|
||||
#, c-format
|
||||
msgid ""
|
||||
@ -2985,7 +2965,7 @@ msgstr "die ersuchte Länge ist %d, aber das Objekt hat eine Länge von %d"
|
||||
|
||||
#: py/compile.c
|
||||
msgid "return annotation must be an identifier"
|
||||
msgstr "return annotation muss ein identifier sein"
|
||||
msgstr "Rückgabewert-Beschreibung muss ein Identifier sein"
|
||||
|
||||
#: py/emitnative.c
|
||||
msgid "return expected '%q' but got '%q'"
|
||||
@ -3143,10 +3123,6 @@ msgstr "threshold muss im Intervall 0-65536 liegen"
|
||||
msgid "time.struct_time() takes a 9-sequence"
|
||||
msgstr "time.struct_time() nimmt eine 9-Sequenz an"
|
||||
|
||||
#: ports/nrf/common-hal/watchdog/WatchDogTimer.c
|
||||
msgid "timeout duration exceeded the maximum supported value"
|
||||
msgstr ""
|
||||
|
||||
#: shared-bindings/busio/UART.c
|
||||
msgid "timeout must be 0.0-100.0 seconds"
|
||||
msgstr "Das Zeitlimit muss 0,0-100,0 Sekunden betragen"
|
||||
@ -3304,10 +3280,6 @@ msgstr "Wert muss in %d Byte(s) passen"
|
||||
msgid "value_count must be > 0"
|
||||
msgstr "value_count muss größer als 0 sein"
|
||||
|
||||
#: shared-bindings/watchdog/WatchDogTimer.c
|
||||
msgid "watchdog timeout must be greater than 0"
|
||||
msgstr ""
|
||||
|
||||
#: shared-bindings/_bleio/Adapter.c
|
||||
msgid "window must be <= interval"
|
||||
msgstr "Fenster muss <= Intervall sein"
|
||||
|
30
locale/es.po
30
locale/es.po
@ -7,7 +7,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: \n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2020-05-27 10:46-0700\n"
|
||||
"POT-Creation-Date: 2020-05-27 20:51-0500\n"
|
||||
"PO-Revision-Date: 2020-05-17 20:56+0000\n"
|
||||
"Last-Translator: Jeff Epler <jepler@gmail.com>\n"
|
||||
"Language-Team: \n"
|
||||
@ -1669,26 +1669,6 @@ msgstr ""
|
||||
msgid "WARNING: Your code filename has two extensions\n"
|
||||
msgstr "ADVERTENCIA: El nombre de archivo de tu código tiene dos extensiones\n"
|
||||
|
||||
#: shared-bindings/watchdog/WatchDogTimer.c
|
||||
msgid "WatchDogTimer cannot be deinitialized once mode is set to RESET"
|
||||
msgstr ""
|
||||
|
||||
#: shared-bindings/watchdog/WatchDogTimer.c
|
||||
msgid "WatchDogTimer is not currently running"
|
||||
msgstr ""
|
||||
|
||||
#: shared-bindings/watchdog/WatchDogTimer.c
|
||||
msgid "WatchDogTimer.mode cannot be changed once set to WatchDogMode.RESET"
|
||||
msgstr ""
|
||||
|
||||
#: shared-bindings/watchdog/WatchDogTimer.c
|
||||
msgid "WatchDogTimer.timeout must be greater than 0"
|
||||
msgstr ""
|
||||
|
||||
#: supervisor/shared/safe_mode.c
|
||||
msgid "Watchdog timer expired."
|
||||
msgstr ""
|
||||
|
||||
#: py/builtinhelp.c
|
||||
#, c-format
|
||||
msgid ""
|
||||
@ -3092,10 +3072,6 @@ msgstr "limite debe ser en el rango 0-65536"
|
||||
msgid "time.struct_time() takes a 9-sequence"
|
||||
msgstr "time.struct_time() toma un sequencio 9"
|
||||
|
||||
#: ports/nrf/common-hal/watchdog/WatchDogTimer.c
|
||||
msgid "timeout duration exceeded the maximum supported value"
|
||||
msgstr ""
|
||||
|
||||
#: shared-bindings/busio/UART.c
|
||||
msgid "timeout must be 0.0-100.0 seconds"
|
||||
msgstr ""
|
||||
@ -3249,10 +3225,6 @@ msgstr ""
|
||||
msgid "value_count must be > 0"
|
||||
msgstr ""
|
||||
|
||||
#: shared-bindings/watchdog/WatchDogTimer.c
|
||||
msgid "watchdog timeout must be greater than 0"
|
||||
msgstr ""
|
||||
|
||||
#: shared-bindings/_bleio/Adapter.c
|
||||
msgid "window must be <= interval"
|
||||
msgstr ""
|
||||
|
@ -7,7 +7,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: \n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2020-05-27 10:46-0700\n"
|
||||
"POT-Creation-Date: 2020-05-27 20:51-0500\n"
|
||||
"PO-Revision-Date: 2018-12-20 22:15-0800\n"
|
||||
"Last-Translator: Timothy <me@timothygarcia.ca>\n"
|
||||
"Language-Team: fil\n"
|
||||
@ -1677,26 +1677,6 @@ msgstr ""
|
||||
msgid "WARNING: Your code filename has two extensions\n"
|
||||
msgstr "BABALA: Ang pangalan ng file ay may dalawang extension\n"
|
||||
|
||||
#: shared-bindings/watchdog/WatchDogTimer.c
|
||||
msgid "WatchDogTimer cannot be deinitialized once mode is set to RESET"
|
||||
msgstr ""
|
||||
|
||||
#: shared-bindings/watchdog/WatchDogTimer.c
|
||||
msgid "WatchDogTimer is not currently running"
|
||||
msgstr ""
|
||||
|
||||
#: shared-bindings/watchdog/WatchDogTimer.c
|
||||
msgid "WatchDogTimer.mode cannot be changed once set to WatchDogMode.RESET"
|
||||
msgstr ""
|
||||
|
||||
#: shared-bindings/watchdog/WatchDogTimer.c
|
||||
msgid "WatchDogTimer.timeout must be greater than 0"
|
||||
msgstr ""
|
||||
|
||||
#: supervisor/shared/safe_mode.c
|
||||
msgid "Watchdog timer expired."
|
||||
msgstr ""
|
||||
|
||||
#: py/builtinhelp.c
|
||||
#, c-format
|
||||
msgid ""
|
||||
@ -3104,10 +3084,6 @@ msgstr "ang threshold ay dapat sa range 0-65536"
|
||||
msgid "time.struct_time() takes a 9-sequence"
|
||||
msgstr "time.struct_time() kumukuha ng 9-sequence"
|
||||
|
||||
#: ports/nrf/common-hal/watchdog/WatchDogTimer.c
|
||||
msgid "timeout duration exceeded the maximum supported value"
|
||||
msgstr ""
|
||||
|
||||
#: shared-bindings/busio/UART.c
|
||||
msgid "timeout must be 0.0-100.0 seconds"
|
||||
msgstr ""
|
||||
@ -3262,10 +3238,6 @@ msgstr ""
|
||||
msgid "value_count must be > 0"
|
||||
msgstr ""
|
||||
|
||||
#: shared-bindings/watchdog/WatchDogTimer.c
|
||||
msgid "watchdog timeout must be greater than 0"
|
||||
msgstr ""
|
||||
|
||||
#: shared-bindings/_bleio/Adapter.c
|
||||
msgid "window must be <= interval"
|
||||
msgstr ""
|
||||
|
42
locale/fr.po
42
locale/fr.po
@ -8,9 +8,9 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: 0.1\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2020-05-27 10:46-0700\n"
|
||||
"PO-Revision-Date: 2020-05-26 19:37+0000\n"
|
||||
"Last-Translator: Jeff Epler <jepler@gmail.com>\n"
|
||||
"POT-Creation-Date: 2020-05-27 20:51-0500\n"
|
||||
"PO-Revision-Date: 2020-06-01 13:17+0000\n"
|
||||
"Last-Translator: David Glaude <david.glaude@gmail.com>\n"
|
||||
"Language-Team: French <https://later.unpythonic.net/projects/circuitpython/"
|
||||
"circuitpython-master/fr/>\n"
|
||||
"Language: fr\n"
|
||||
@ -190,12 +190,12 @@ msgstr "l'objet '%s' n'est pas un itérateur"
|
||||
#: py/objtype.c py/runtime.c
|
||||
#, c-format
|
||||
msgid "'%s' object is not callable"
|
||||
msgstr "objet '%s' n'est pas appelable"
|
||||
msgstr "l'objet '%s' n'est pas appelable"
|
||||
|
||||
#: py/runtime.c
|
||||
#, c-format
|
||||
msgid "'%s' object is not iterable"
|
||||
msgstr "objet '%s' n'est pas itérable"
|
||||
msgstr "l'objet '%s' n'est pas itérable"
|
||||
|
||||
#: py/obj.c
|
||||
#, c-format
|
||||
@ -388,7 +388,7 @@ msgstr "La profondeur de bit doit être un multiple de 8."
|
||||
|
||||
#: ports/mimxrt10xx/common-hal/busio/UART.c
|
||||
msgid "Both RX and TX required for flow control"
|
||||
msgstr ""
|
||||
msgstr "RX et TX requis pour le contrôle de flux"
|
||||
|
||||
#: ports/atmel-samd/common-hal/rotaryio/IncrementalEncoder.c
|
||||
msgid "Both pins must support hardware interrupts"
|
||||
@ -1281,7 +1281,7 @@ msgstr "La broche ne peut être utilisée pour l'ADC"
|
||||
|
||||
#: shared-bindings/digitalio/DigitalInOut.c
|
||||
msgid "Pin is input only"
|
||||
msgstr ""
|
||||
msgstr "La broche est entrée uniquement"
|
||||
|
||||
#: ports/atmel-samd/common-hal/countio/Counter.c
|
||||
msgid "Pin must support hardware interrupts"
|
||||
@ -1711,26 +1711,6 @@ msgstr "La lecture de la tension a expiré"
|
||||
msgid "WARNING: Your code filename has two extensions\n"
|
||||
msgstr "ATTENTION : le nom de fichier de votre code a deux extensions\n"
|
||||
|
||||
#: shared-bindings/watchdog/WatchDogTimer.c
|
||||
msgid "WatchDogTimer cannot be deinitialized once mode is set to RESET"
|
||||
msgstr ""
|
||||
|
||||
#: shared-bindings/watchdog/WatchDogTimer.c
|
||||
msgid "WatchDogTimer is not currently running"
|
||||
msgstr ""
|
||||
|
||||
#: shared-bindings/watchdog/WatchDogTimer.c
|
||||
msgid "WatchDogTimer.mode cannot be changed once set to WatchDogMode.RESET"
|
||||
msgstr ""
|
||||
|
||||
#: shared-bindings/watchdog/WatchDogTimer.c
|
||||
msgid "WatchDogTimer.timeout must be greater than 0"
|
||||
msgstr ""
|
||||
|
||||
#: supervisor/shared/safe_mode.c
|
||||
msgid "Watchdog timer expired."
|
||||
msgstr ""
|
||||
|
||||
#: py/builtinhelp.c
|
||||
#, c-format
|
||||
msgid ""
|
||||
@ -3145,10 +3125,6 @@ msgstr "le seuil doit être dans la gamme 0-65536"
|
||||
msgid "time.struct_time() takes a 9-sequence"
|
||||
msgstr "time.struct_time() prend une séquence de longueur 9"
|
||||
|
||||
#: ports/nrf/common-hal/watchdog/WatchDogTimer.c
|
||||
msgid "timeout duration exceeded the maximum supported value"
|
||||
msgstr ""
|
||||
|
||||
#: shared-bindings/busio/UART.c
|
||||
msgid "timeout must be 0.0-100.0 seconds"
|
||||
msgstr "le délai doit être compris entre 0.0 et 100.0 secondes"
|
||||
@ -3302,10 +3278,6 @@ msgstr "la valeur doit tenir dans %d octet(s)"
|
||||
msgid "value_count must be > 0"
|
||||
msgstr "'value_count' doit être > 0"
|
||||
|
||||
#: shared-bindings/watchdog/WatchDogTimer.c
|
||||
msgid "watchdog timeout must be greater than 0"
|
||||
msgstr ""
|
||||
|
||||
#: shared-bindings/_bleio/Adapter.c
|
||||
msgid "window must be <= interval"
|
||||
msgstr "la fenêtre doit être <= intervalle"
|
||||
|
@ -8,7 +8,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: PACKAGE VERSION\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2020-05-27 10:46-0700\n"
|
||||
"POT-Creation-Date: 2020-05-27 20:51-0500\n"
|
||||
"PO-Revision-Date: 2018-10-02 16:27+0200\n"
|
||||
"Last-Translator: Enrico Paganin <enrico.paganin@mail.com>\n"
|
||||
"Language-Team: \n"
|
||||
@ -1686,26 +1686,6 @@ msgstr ""
|
||||
msgid "WARNING: Your code filename has two extensions\n"
|
||||
msgstr "ATTENZIONE: Il nome del sorgente ha due estensioni\n"
|
||||
|
||||
#: shared-bindings/watchdog/WatchDogTimer.c
|
||||
msgid "WatchDogTimer cannot be deinitialized once mode is set to RESET"
|
||||
msgstr ""
|
||||
|
||||
#: shared-bindings/watchdog/WatchDogTimer.c
|
||||
msgid "WatchDogTimer is not currently running"
|
||||
msgstr ""
|
||||
|
||||
#: shared-bindings/watchdog/WatchDogTimer.c
|
||||
msgid "WatchDogTimer.mode cannot be changed once set to WatchDogMode.RESET"
|
||||
msgstr ""
|
||||
|
||||
#: shared-bindings/watchdog/WatchDogTimer.c
|
||||
msgid "WatchDogTimer.timeout must be greater than 0"
|
||||
msgstr ""
|
||||
|
||||
#: supervisor/shared/safe_mode.c
|
||||
msgid "Watchdog timer expired."
|
||||
msgstr ""
|
||||
|
||||
#: py/builtinhelp.c
|
||||
#, c-format
|
||||
msgid ""
|
||||
@ -3111,10 +3091,6 @@ msgstr "la soglia deve essere nell'intervallo 0-65536"
|
||||
msgid "time.struct_time() takes a 9-sequence"
|
||||
msgstr ""
|
||||
|
||||
#: ports/nrf/common-hal/watchdog/WatchDogTimer.c
|
||||
msgid "timeout duration exceeded the maximum supported value"
|
||||
msgstr ""
|
||||
|
||||
#: shared-bindings/busio/UART.c
|
||||
msgid "timeout must be 0.0-100.0 seconds"
|
||||
msgstr ""
|
||||
@ -3269,10 +3245,6 @@ msgstr ""
|
||||
msgid "value_count must be > 0"
|
||||
msgstr ""
|
||||
|
||||
#: shared-bindings/watchdog/WatchDogTimer.c
|
||||
msgid "watchdog timeout must be greater than 0"
|
||||
msgstr ""
|
||||
|
||||
#: shared-bindings/_bleio/Adapter.c
|
||||
msgid "window must be <= interval"
|
||||
msgstr ""
|
||||
|
30
locale/ko.po
30
locale/ko.po
@ -8,7 +8,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: PACKAGE VERSION\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2020-05-27 10:46-0700\n"
|
||||
"POT-Creation-Date: 2020-05-27 20:51-0500\n"
|
||||
"PO-Revision-Date: 2019-05-06 14:22-0700\n"
|
||||
"Last-Translator: \n"
|
||||
"Language-Team: LANGUAGE <LL@li.org>\n"
|
||||
@ -1655,26 +1655,6 @@ msgstr ""
|
||||
msgid "WARNING: Your code filename has two extensions\n"
|
||||
msgstr ""
|
||||
|
||||
#: shared-bindings/watchdog/WatchDogTimer.c
|
||||
msgid "WatchDogTimer cannot be deinitialized once mode is set to RESET"
|
||||
msgstr ""
|
||||
|
||||
#: shared-bindings/watchdog/WatchDogTimer.c
|
||||
msgid "WatchDogTimer is not currently running"
|
||||
msgstr ""
|
||||
|
||||
#: shared-bindings/watchdog/WatchDogTimer.c
|
||||
msgid "WatchDogTimer.mode cannot be changed once set to WatchDogMode.RESET"
|
||||
msgstr ""
|
||||
|
||||
#: shared-bindings/watchdog/WatchDogTimer.c
|
||||
msgid "WatchDogTimer.timeout must be greater than 0"
|
||||
msgstr ""
|
||||
|
||||
#: supervisor/shared/safe_mode.c
|
||||
msgid "Watchdog timer expired."
|
||||
msgstr ""
|
||||
|
||||
#: py/builtinhelp.c
|
||||
#, c-format
|
||||
msgid ""
|
||||
@ -3054,10 +3034,6 @@ msgstr ""
|
||||
msgid "time.struct_time() takes a 9-sequence"
|
||||
msgstr ""
|
||||
|
||||
#: ports/nrf/common-hal/watchdog/WatchDogTimer.c
|
||||
msgid "timeout duration exceeded the maximum supported value"
|
||||
msgstr ""
|
||||
|
||||
#: shared-bindings/busio/UART.c
|
||||
msgid "timeout must be 0.0-100.0 seconds"
|
||||
msgstr ""
|
||||
@ -3211,10 +3187,6 @@ msgstr ""
|
||||
msgid "value_count must be > 0"
|
||||
msgstr ""
|
||||
|
||||
#: shared-bindings/watchdog/WatchDogTimer.c
|
||||
msgid "watchdog timeout must be greater than 0"
|
||||
msgstr ""
|
||||
|
||||
#: shared-bindings/_bleio/Adapter.c
|
||||
msgid "window must be <= interval"
|
||||
msgstr ""
|
||||
|
38
locale/nl.po
38
locale/nl.po
@ -7,9 +7,9 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: PACKAGE VERSION\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2020-05-29 10:15-0700\n"
|
||||
"PO-Revision-Date: 2020-05-25 13:52+0000\n"
|
||||
"Last-Translator: Dustin Watts <dustin_watts@yahoo.com>\n"
|
||||
"POT-Creation-Date: 2020-05-27 20:51-0500\n"
|
||||
"PO-Revision-Date: 2020-05-31 11:41+0000\n"
|
||||
"Last-Translator: _fonzlate <vooralfred@gmail.com>\n"
|
||||
"Language-Team: none\n"
|
||||
"Language: nl\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
@ -380,7 +380,7 @@ msgstr "Bit diepte moet een meervoud van 8 zijn."
|
||||
|
||||
#: ports/mimxrt10xx/common-hal/busio/UART.c
|
||||
msgid "Both RX and TX required for flow control"
|
||||
msgstr ""
|
||||
msgstr "RX en TX zijn beide vereist voor stroomregeling"
|
||||
|
||||
#: ports/atmel-samd/common-hal/rotaryio/IncrementalEncoder.c
|
||||
msgid "Both pins must support hardware interrupts"
|
||||
@ -1269,7 +1269,7 @@ msgstr "Pin heeft geen ADC mogelijkheden"
|
||||
|
||||
#: shared-bindings/digitalio/DigitalInOut.c
|
||||
msgid "Pin is input only"
|
||||
msgstr ""
|
||||
msgstr "Pin kan alleen voor invoer gebruikt worden"
|
||||
|
||||
#: ports/atmel-samd/common-hal/countio/Counter.c
|
||||
msgid "Pin must support hardware interrupts"
|
||||
@ -1694,26 +1694,6 @@ msgstr "Voltage lees time-out"
|
||||
msgid "WARNING: Your code filename has two extensions\n"
|
||||
msgstr "WAARSCHUWING: De bestandsnaam van de code heeft twee extensies\n"
|
||||
|
||||
#: shared-bindings/watchdog/WatchDogTimer.c
|
||||
msgid "WatchDogTimer cannot be deinitialized once mode is set to RESET"
|
||||
msgstr ""
|
||||
|
||||
#: shared-bindings/watchdog/WatchDogTimer.c
|
||||
msgid "WatchDogTimer is not currently running"
|
||||
msgstr ""
|
||||
|
||||
#: shared-bindings/watchdog/WatchDogTimer.c
|
||||
msgid "WatchDogTimer.mode cannot be changed once set to WatchDogMode.RESET"
|
||||
msgstr ""
|
||||
|
||||
#: shared-bindings/watchdog/WatchDogTimer.c
|
||||
msgid "WatchDogTimer.timeout must be greater than 0"
|
||||
msgstr ""
|
||||
|
||||
#: supervisor/shared/safe_mode.c
|
||||
msgid "Watchdog timer expired."
|
||||
msgstr ""
|
||||
|
||||
#: py/builtinhelp.c
|
||||
#, c-format
|
||||
msgid ""
|
||||
@ -3109,10 +3089,6 @@ msgstr "drempelwaarde moet in het bereik 0-65536 liggen"
|
||||
msgid "time.struct_time() takes a 9-sequence"
|
||||
msgstr "time.struct_time() accepteert een 9-rij"
|
||||
|
||||
#: ports/nrf/common-hal/watchdog/WatchDogTimer.c
|
||||
msgid "timeout duration exceeded the maximum supported value"
|
||||
msgstr ""
|
||||
|
||||
#: shared-bindings/busio/UART.c
|
||||
msgid "timeout must be 0.0-100.0 seconds"
|
||||
msgstr "timeout moet tussen 0.0 en 100.0 seconden zijn"
|
||||
@ -3266,10 +3242,6 @@ msgstr "waarde moet in %d byte(s) passen"
|
||||
msgid "value_count must be > 0"
|
||||
msgstr "value_count moet groter dan 0 zijn"
|
||||
|
||||
#: shared-bindings/watchdog/WatchDogTimer.c
|
||||
msgid "watchdog timeout must be greater than 0"
|
||||
msgstr ""
|
||||
|
||||
#: shared-bindings/_bleio/Adapter.c
|
||||
msgid "window must be <= interval"
|
||||
msgstr "window moet <= interval zijn"
|
||||
|
30
locale/pl.po
30
locale/pl.po
@ -7,7 +7,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: \n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2020-05-27 10:46-0700\n"
|
||||
"POT-Creation-Date: 2020-05-27 20:51-0500\n"
|
||||
"PO-Revision-Date: 2019-03-19 18:37-0700\n"
|
||||
"Last-Translator: Radomir Dopieralski <circuitpython@sheep.art.pl>\n"
|
||||
"Language-Team: pl\n"
|
||||
@ -1655,26 +1655,6 @@ msgstr ""
|
||||
msgid "WARNING: Your code filename has two extensions\n"
|
||||
msgstr "UWAGA: Nazwa pliku ma dwa rozszerzenia\n"
|
||||
|
||||
#: shared-bindings/watchdog/WatchDogTimer.c
|
||||
msgid "WatchDogTimer cannot be deinitialized once mode is set to RESET"
|
||||
msgstr ""
|
||||
|
||||
#: shared-bindings/watchdog/WatchDogTimer.c
|
||||
msgid "WatchDogTimer is not currently running"
|
||||
msgstr ""
|
||||
|
||||
#: shared-bindings/watchdog/WatchDogTimer.c
|
||||
msgid "WatchDogTimer.mode cannot be changed once set to WatchDogMode.RESET"
|
||||
msgstr ""
|
||||
|
||||
#: shared-bindings/watchdog/WatchDogTimer.c
|
||||
msgid "WatchDogTimer.timeout must be greater than 0"
|
||||
msgstr ""
|
||||
|
||||
#: supervisor/shared/safe_mode.c
|
||||
msgid "Watchdog timer expired."
|
||||
msgstr ""
|
||||
|
||||
#: py/builtinhelp.c
|
||||
#, c-format
|
||||
msgid ""
|
||||
@ -3060,10 +3040,6 @@ msgstr "threshold musi być w zakresie 0-65536"
|
||||
msgid "time.struct_time() takes a 9-sequence"
|
||||
msgstr "time.struct_time() wymaga 9-elementowej sekwencji"
|
||||
|
||||
#: ports/nrf/common-hal/watchdog/WatchDogTimer.c
|
||||
msgid "timeout duration exceeded the maximum supported value"
|
||||
msgstr ""
|
||||
|
||||
#: shared-bindings/busio/UART.c
|
||||
msgid "timeout must be 0.0-100.0 seconds"
|
||||
msgstr ""
|
||||
@ -3217,10 +3193,6 @@ msgstr ""
|
||||
msgid "value_count must be > 0"
|
||||
msgstr "value_count musi być > 0"
|
||||
|
||||
#: shared-bindings/watchdog/WatchDogTimer.c
|
||||
msgid "watchdog timeout must be greater than 0"
|
||||
msgstr ""
|
||||
|
||||
#: shared-bindings/_bleio/Adapter.c
|
||||
msgid "window must be <= interval"
|
||||
msgstr ""
|
||||
|
@ -8,7 +8,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: PACKAGE VERSION\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2020-05-27 10:46-0700\n"
|
||||
"POT-Creation-Date: 2020-05-27 20:51-0500\n"
|
||||
"PO-Revision-Date: 2018-10-02 21:14-0000\n"
|
||||
"Last-Translator: \n"
|
||||
"Language-Team: \n"
|
||||
@ -1668,26 +1668,6 @@ msgstr ""
|
||||
msgid "WARNING: Your code filename has two extensions\n"
|
||||
msgstr "AVISO: Seu arquivo de código tem duas extensões\n"
|
||||
|
||||
#: shared-bindings/watchdog/WatchDogTimer.c
|
||||
msgid "WatchDogTimer cannot be deinitialized once mode is set to RESET"
|
||||
msgstr ""
|
||||
|
||||
#: shared-bindings/watchdog/WatchDogTimer.c
|
||||
msgid "WatchDogTimer is not currently running"
|
||||
msgstr ""
|
||||
|
||||
#: shared-bindings/watchdog/WatchDogTimer.c
|
||||
msgid "WatchDogTimer.mode cannot be changed once set to WatchDogMode.RESET"
|
||||
msgstr ""
|
||||
|
||||
#: shared-bindings/watchdog/WatchDogTimer.c
|
||||
msgid "WatchDogTimer.timeout must be greater than 0"
|
||||
msgstr ""
|
||||
|
||||
#: supervisor/shared/safe_mode.c
|
||||
msgid "Watchdog timer expired."
|
||||
msgstr ""
|
||||
|
||||
#: py/builtinhelp.c
|
||||
#, c-format
|
||||
msgid ""
|
||||
@ -3072,10 +3052,6 @@ msgstr "Limite deve estar no alcance de 0-65536"
|
||||
msgid "time.struct_time() takes a 9-sequence"
|
||||
msgstr ""
|
||||
|
||||
#: ports/nrf/common-hal/watchdog/WatchDogTimer.c
|
||||
msgid "timeout duration exceeded the maximum supported value"
|
||||
msgstr ""
|
||||
|
||||
#: shared-bindings/busio/UART.c
|
||||
msgid "timeout must be 0.0-100.0 seconds"
|
||||
msgstr ""
|
||||
@ -3230,10 +3206,6 @@ msgstr ""
|
||||
msgid "value_count must be > 0"
|
||||
msgstr ""
|
||||
|
||||
#: shared-bindings/watchdog/WatchDogTimer.c
|
||||
msgid "watchdog timeout must be greater than 0"
|
||||
msgstr ""
|
||||
|
||||
#: shared-bindings/_bleio/Adapter.c
|
||||
msgid "window must be <= interval"
|
||||
msgstr ""
|
||||
|
40
locale/sv.po
40
locale/sv.po
@ -7,9 +7,9 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: PACKAGE VERSION\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2020-05-27 10:46-0700\n"
|
||||
"PO-Revision-Date: 2020-05-20 18:32+0000\n"
|
||||
"Last-Translator: Jonny Bergdahl <jonny@bergdahl.it>\n"
|
||||
"POT-Creation-Date: 2020-05-27 20:51-0500\n"
|
||||
"PO-Revision-Date: 2020-06-01 13:17+0000\n"
|
||||
"Last-Translator: Jeff Epler <jepler@gmail.com>\n"
|
||||
"Language-Team: LANGUAGE <LL@li.org>\n"
|
||||
"Language: sv\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
@ -380,7 +380,7 @@ msgstr "Bitdjupet måste vara multipel av 8."
|
||||
|
||||
#: ports/mimxrt10xx/common-hal/busio/UART.c
|
||||
msgid "Both RX and TX required for flow control"
|
||||
msgstr ""
|
||||
msgstr "Både RX och TX krävs för handskakning"
|
||||
|
||||
#: ports/atmel-samd/common-hal/rotaryio/IncrementalEncoder.c
|
||||
msgid "Both pins must support hardware interrupts"
|
||||
@ -1267,7 +1267,7 @@ msgstr "Pinnen har inte ADC-funktionalitet"
|
||||
|
||||
#: shared-bindings/digitalio/DigitalInOut.c
|
||||
msgid "Pin is input only"
|
||||
msgstr ""
|
||||
msgstr "Pinnen är enbart ingång"
|
||||
|
||||
#: ports/atmel-samd/common-hal/countio/Counter.c
|
||||
msgid "Pin must support hardware interrupts"
|
||||
@ -1691,26 +1691,6 @@ msgstr "Avläsning av spänning tog för lång tid"
|
||||
msgid "WARNING: Your code filename has two extensions\n"
|
||||
msgstr "VARNING: Ditt filnamn för kod har två tillägg\n"
|
||||
|
||||
#: shared-bindings/watchdog/WatchDogTimer.c
|
||||
msgid "WatchDogTimer cannot be deinitialized once mode is set to RESET"
|
||||
msgstr ""
|
||||
|
||||
#: shared-bindings/watchdog/WatchDogTimer.c
|
||||
msgid "WatchDogTimer is not currently running"
|
||||
msgstr ""
|
||||
|
||||
#: shared-bindings/watchdog/WatchDogTimer.c
|
||||
msgid "WatchDogTimer.mode cannot be changed once set to WatchDogMode.RESET"
|
||||
msgstr ""
|
||||
|
||||
#: shared-bindings/watchdog/WatchDogTimer.c
|
||||
msgid "WatchDogTimer.timeout must be greater than 0"
|
||||
msgstr ""
|
||||
|
||||
#: supervisor/shared/safe_mode.c
|
||||
msgid "Watchdog timer expired."
|
||||
msgstr ""
|
||||
|
||||
#: py/builtinhelp.c
|
||||
#, c-format
|
||||
msgid ""
|
||||
@ -3106,10 +3086,6 @@ msgstr "tröskelvärdet måste ligga i intervallet 0-65536"
|
||||
msgid "time.struct_time() takes a 9-sequence"
|
||||
msgstr "time.struct_time() kräver en 9-sekvens"
|
||||
|
||||
#: ports/nrf/common-hal/watchdog/WatchDogTimer.c
|
||||
msgid "timeout duration exceeded the maximum supported value"
|
||||
msgstr ""
|
||||
|
||||
#: shared-bindings/busio/UART.c
|
||||
msgid "timeout must be 0.0-100.0 seconds"
|
||||
msgstr "timeout måste vara 0.0-100.0 sekunder"
|
||||
@ -3190,7 +3166,7 @@ msgstr "oväntat nyckelordsargument '%q'"
|
||||
|
||||
#: py/lexer.c
|
||||
msgid "unicode name escapes"
|
||||
msgstr "unicode name escapes"
|
||||
msgstr "unicode-namn flyr"
|
||||
|
||||
#: py/parse.c
|
||||
msgid "unindent does not match any outer indentation level"
|
||||
@ -3263,10 +3239,6 @@ msgstr "värdet måste passa i %d byte(s)"
|
||||
msgid "value_count must be > 0"
|
||||
msgstr "value_count måste vara > 0"
|
||||
|
||||
#: shared-bindings/watchdog/WatchDogTimer.c
|
||||
msgid "watchdog timeout must be greater than 0"
|
||||
msgstr ""
|
||||
|
||||
#: shared-bindings/_bleio/Adapter.c
|
||||
msgid "window must be <= interval"
|
||||
msgstr "window måste vara <= interval"
|
||||
|
@ -7,7 +7,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: circuitpython-cn\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2020-05-27 10:46-0700\n"
|
||||
"POT-Creation-Date: 2020-05-27 20:51-0500\n"
|
||||
"PO-Revision-Date: 2019-04-13 10:10-0700\n"
|
||||
"Last-Translator: hexthat\n"
|
||||
"Language-Team: Chinese Hanyu Pinyin\n"
|
||||
@ -1678,26 +1678,6 @@ msgstr ""
|
||||
msgid "WARNING: Your code filename has two extensions\n"
|
||||
msgstr "Jǐnggào: Nǐ de dàimǎ wénjiàn míng yǒu liǎng gè kuòzhǎn míng\n"
|
||||
|
||||
#: shared-bindings/watchdog/WatchDogTimer.c
|
||||
msgid "WatchDogTimer cannot be deinitialized once mode is set to RESET"
|
||||
msgstr ""
|
||||
|
||||
#: shared-bindings/watchdog/WatchDogTimer.c
|
||||
msgid "WatchDogTimer is not currently running"
|
||||
msgstr ""
|
||||
|
||||
#: shared-bindings/watchdog/WatchDogTimer.c
|
||||
msgid "WatchDogTimer.mode cannot be changed once set to WatchDogMode.RESET"
|
||||
msgstr ""
|
||||
|
||||
#: shared-bindings/watchdog/WatchDogTimer.c
|
||||
msgid "WatchDogTimer.timeout must be greater than 0"
|
||||
msgstr ""
|
||||
|
||||
#: supervisor/shared/safe_mode.c
|
||||
msgid "Watchdog timer expired."
|
||||
msgstr ""
|
||||
|
||||
#: py/builtinhelp.c
|
||||
#, c-format
|
||||
msgid ""
|
||||
@ -3090,10 +3070,6 @@ msgstr "yùzhí bìxū zài fànwéi 0-65536"
|
||||
msgid "time.struct_time() takes a 9-sequence"
|
||||
msgstr "time.struct_time() xūyào 9 xùliè"
|
||||
|
||||
#: ports/nrf/common-hal/watchdog/WatchDogTimer.c
|
||||
msgid "timeout duration exceeded the maximum supported value"
|
||||
msgstr ""
|
||||
|
||||
#: shared-bindings/busio/UART.c
|
||||
msgid "timeout must be 0.0-100.0 seconds"
|
||||
msgstr "Chāo shí shíjiān bìxū wèi 0.0 Dào 100.0 Miǎo"
|
||||
@ -3247,10 +3223,6 @@ msgstr "Zhí bìxū fúhé %d zì jié"
|
||||
msgid "value_count must be > 0"
|
||||
msgstr "zhí jìshù bìxū wèi > 0"
|
||||
|
||||
#: shared-bindings/watchdog/WatchDogTimer.c
|
||||
msgid "watchdog timeout must be greater than 0"
|
||||
msgstr ""
|
||||
|
||||
#: shared-bindings/_bleio/Adapter.c
|
||||
msgid "window must be <= interval"
|
||||
msgstr "Chuāngkǒu bìxū shì <= jiàngé"
|
||||
|
@ -29,6 +29,8 @@
|
||||
#include <sys/boardctl.h>
|
||||
#include <sys/time.h>
|
||||
|
||||
#include <cxd56_rtc.h>
|
||||
|
||||
#include "sched/sched.h"
|
||||
|
||||
#include "boards/board.h"
|
||||
@ -45,7 +47,8 @@
|
||||
safe_mode_t port_init(void) {
|
||||
boardctl(BOARDIOC_INIT, 0);
|
||||
|
||||
board_init();
|
||||
// Wait until RTC is available
|
||||
while (g_rtc_enabled == false);
|
||||
|
||||
if (board_requests_safe_mode()) {
|
||||
return USER_SAFE_MODE;
|
||||
@ -121,14 +124,10 @@ void board_timerhook(void)
|
||||
}
|
||||
|
||||
uint64_t port_get_raw_ticks(uint8_t* subticks) {
|
||||
struct timeval tv;
|
||||
gettimeofday(&tv, NULL);
|
||||
long computed_subticks = tv.tv_usec * 1024 * 32 / 1000000;
|
||||
if (subticks != NULL) {
|
||||
*subticks = computed_subticks % 32;
|
||||
}
|
||||
uint64_t count = cxd56_rtc_count();
|
||||
*subticks = count % 32;
|
||||
|
||||
return tv.tv_sec * 1024 + computed_subticks / 32;
|
||||
return count / 32;
|
||||
}
|
||||
|
||||
// Enable 1/1024 second tick.
|
||||
|
@ -33,7 +33,6 @@ void board_init(void) {
|
||||
// SWD Pins
|
||||
common_hal_never_reset_pin(&pin_GPIO_AD_13); //SWDIO
|
||||
common_hal_never_reset_pin(&pin_GPIO_AD_12); //SWCLK
|
||||
common_hal_never_reset_pin(&pin_GPIO_AD_09); //SWO
|
||||
// FLEX flash
|
||||
common_hal_never_reset_pin(&pin_GPIO_SD_12);
|
||||
common_hal_never_reset_pin(&pin_GPIO_SD_11);
|
||||
|
@ -7,6 +7,10 @@
|
||||
|
||||
#define BOARD_FLASH_SIZE (16 * 1024 * 1024)
|
||||
|
||||
#define DEFAULT_SPI_BUS_SCK (&pin_GPIO_AD_06)
|
||||
#define DEFAULT_SPI_BUS_MOSI (&pin_GPIO_AD_04)
|
||||
#define DEFAULT_SPI_BUS_MISO (&pin_GPIO_AD_03)
|
||||
|
||||
#define DEFAULT_I2C_BUS_SCL (&pin_GPIO_02)
|
||||
#define DEFAULT_I2C_BUS_SDA (&pin_GPIO_01)
|
||||
|
||||
|
@ -4,9 +4,7 @@
|
||||
|
||||
STATIC const mp_rom_map_elem_t board_global_dict_table[] = {
|
||||
{ MP_OBJ_NEW_QSTR(MP_QSTR_D0), MP_ROM_PTR(&pin_GPIO_09) },
|
||||
{ MP_OBJ_NEW_QSTR(MP_QSTR_RX), MP_ROM_PTR(&pin_GPIO_09) },
|
||||
{ MP_OBJ_NEW_QSTR(MP_QSTR_D1), MP_ROM_PTR(&pin_GPIO_10) },
|
||||
{ MP_OBJ_NEW_QSTR(MP_QSTR_TX), MP_ROM_PTR(&pin_GPIO_10) },
|
||||
{ MP_OBJ_NEW_QSTR(MP_QSTR_D2), MP_ROM_PTR(&pin_GPIO_AD_05) },
|
||||
{ MP_OBJ_NEW_QSTR(MP_QSTR_D3), MP_ROM_PTR(&pin_GPIO_AD_06) },
|
||||
{ MP_OBJ_NEW_QSTR(MP_QSTR_D4), MP_ROM_PTR(&pin_GPIO_08) },
|
||||
@ -20,9 +18,7 @@ STATIC const mp_rom_map_elem_t board_global_dict_table[] = {
|
||||
{ MP_OBJ_NEW_QSTR(MP_QSTR_D12), MP_ROM_PTR(&pin_GPIO_AD_03) },
|
||||
{ MP_OBJ_NEW_QSTR(MP_QSTR_D13), MP_ROM_PTR(&pin_GPIO_AD_06) },
|
||||
{ MP_OBJ_NEW_QSTR(MP_QSTR_D14), MP_ROM_PTR(&pin_GPIO_01) },
|
||||
{ MP_OBJ_NEW_QSTR(MP_QSTR_SDA), MP_ROM_PTR(&pin_GPIO_01) },
|
||||
{ MP_OBJ_NEW_QSTR(MP_QSTR_D15), MP_ROM_PTR(&pin_GPIO_02) },
|
||||
{ MP_OBJ_NEW_QSTR(MP_QSTR_SCL), MP_ROM_PTR(&pin_GPIO_02) },
|
||||
|
||||
{ MP_OBJ_NEW_QSTR(MP_QSTR_A0), MP_ROM_PTR(&pin_GPIO_AD_07) },
|
||||
{ MP_OBJ_NEW_QSTR(MP_QSTR_A1), MP_ROM_PTR(&pin_GPIO_AD_09) },
|
||||
@ -31,6 +27,16 @@ STATIC const mp_rom_map_elem_t board_global_dict_table[] = {
|
||||
{ MP_OBJ_NEW_QSTR(MP_QSTR_A4), MP_ROM_PTR(&pin_GPIO_AD_01) },
|
||||
{ MP_OBJ_NEW_QSTR(MP_QSTR_A5), MP_ROM_PTR(&pin_GPIO_AD_02) },
|
||||
|
||||
{ MP_OBJ_NEW_QSTR(MP_QSTR_RX), MP_ROM_PTR(&pin_GPIO_09) },
|
||||
{ MP_OBJ_NEW_QSTR(MP_QSTR_TX), MP_ROM_PTR(&pin_GPIO_10) },
|
||||
|
||||
{ MP_OBJ_NEW_QSTR(MP_QSTR_MOSI), MP_ROM_PTR(&pin_GPIO_AD_04) },
|
||||
{ MP_OBJ_NEW_QSTR(MP_QSTR_MISO), MP_ROM_PTR(&pin_GPIO_AD_03) },
|
||||
{ MP_OBJ_NEW_QSTR(MP_QSTR_SCK), MP_ROM_PTR(&pin_GPIO_AD_06) },
|
||||
|
||||
{ MP_OBJ_NEW_QSTR(MP_QSTR_SDA), MP_ROM_PTR(&pin_GPIO_01) },
|
||||
{ MP_OBJ_NEW_QSTR(MP_QSTR_SCL), MP_ROM_PTR(&pin_GPIO_02) },
|
||||
|
||||
{ MP_OBJ_NEW_QSTR(MP_QSTR_USER_LED), MP_ROM_PTR(&pin_GPIO_11) },
|
||||
{ MP_OBJ_NEW_QSTR(MP_QSTR_USER_SW), MP_ROM_PTR(&pin_GPIO_SD_05) },
|
||||
|
||||
|
@ -33,7 +33,6 @@ void board_init(void) {
|
||||
// SWD Pins
|
||||
common_hal_never_reset_pin(&pin_GPIO_AD_B0_00);//SWDIO
|
||||
common_hal_never_reset_pin(&pin_GPIO_AD_B0_01);//SWCLK
|
||||
common_hal_never_reset_pin(&pin_GPIO_AD_B0_04);//SWO
|
||||
|
||||
// FLEX flash
|
||||
common_hal_never_reset_pin(&pin_GPIO_SD_B1_06);
|
||||
|
@ -33,7 +33,6 @@ void board_init(void) {
|
||||
// SWD Pins
|
||||
common_hal_never_reset_pin(&pin_GPIO_AD_B0_06);//SWDIO
|
||||
common_hal_never_reset_pin(&pin_GPIO_AD_B0_07);//SWCLK
|
||||
common_hal_never_reset_pin(&pin_GPIO_AD_B0_10);//SWO
|
||||
|
||||
// FLEX flash
|
||||
common_hal_never_reset_pin(&pin_GPIO_SD_B1_00);
|
||||
|
@ -27,15 +27,32 @@
|
||||
|
||||
#include <stdio.h>
|
||||
|
||||
#include "shared-bindings/microcontroller/Pin.h"
|
||||
#include "shared-bindings/microcontroller/__init__.h"
|
||||
#include "shared-bindings/busio/I2C.h"
|
||||
#include "py/mperrno.h"
|
||||
#include "py/runtime.h"
|
||||
#include "periph.h"
|
||||
|
||||
#include "fsl_lpi2c.h"
|
||||
#include "fsl_gpio.h"
|
||||
|
||||
#define I2C_CLOCK_FREQ (CLOCK_GetFreq(kCLOCK_Usb1PllClk) / 8 / (1+CLOCK_GetDiv(kCLOCK_Lpi2cDiv)))
|
||||
#define IOMUXC_SW_MUX_CTL_PAD_MUX_MODE_ALT5 5U
|
||||
|
||||
//arrays use 0 based numbering: I2C1 is stored at index 0
|
||||
#define MAX_I2C 4
|
||||
STATIC bool reserved_i2c[MAX_I2C];
|
||||
STATIC bool never_reset_i2c[MAX_I2C];
|
||||
|
||||
void i2c_reset(void) {
|
||||
for(uint i = 0; i < MP_ARRAY_SIZE(mcu_i2c_banks); i++) {
|
||||
if (!never_reset_i2c[i]) {
|
||||
reserved_i2c[i] = false;
|
||||
LPI2C_MasterDeinit(mcu_i2c_banks[i]);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
static void config_periph_pin(const mcu_periph_obj_t *periph) {
|
||||
IOMUXC_SetPinMux(
|
||||
@ -56,11 +73,49 @@ static void config_periph_pin(const mcu_periph_obj_t *periph) {
|
||||
| IOMUXC_SW_PAD_CTL_PAD_SRE(0));
|
||||
}
|
||||
|
||||
static void i2c_check_pin_config(const mcu_pin_obj_t *pin, uint32_t pull)
|
||||
{
|
||||
IOMUXC_SetPinConfig(0, 0, 0, 0, pin->cfg_reg,
|
||||
IOMUXC_SW_PAD_CTL_PAD_HYS(1)
|
||||
| IOMUXC_SW_PAD_CTL_PAD_PUS(0) // Pulldown
|
||||
| IOMUXC_SW_PAD_CTL_PAD_PUE(pull) // 0=nopull (keeper), 1=pull
|
||||
| IOMUXC_SW_PAD_CTL_PAD_PKE(1)
|
||||
| IOMUXC_SW_PAD_CTL_PAD_ODE(0)
|
||||
| IOMUXC_SW_PAD_CTL_PAD_SPEED(2)
|
||||
| IOMUXC_SW_PAD_CTL_PAD_DSE(1)
|
||||
| IOMUXC_SW_PAD_CTL_PAD_SRE(0));
|
||||
}
|
||||
|
||||
void common_hal_busio_i2c_construct(busio_i2c_obj_t *self,
|
||||
const mcu_pin_obj_t *scl, const mcu_pin_obj_t *sda, uint32_t frequency, uint32_t timeout) {
|
||||
|
||||
const uint32_t sda_count = sizeof(mcu_i2c_sda_list) / sizeof(mcu_periph_obj_t);
|
||||
const uint32_t scl_count = sizeof(mcu_i2c_scl_list) / sizeof(mcu_periph_obj_t);
|
||||
#if CIRCUITPY_REQUIRE_I2C_PULLUPS
|
||||
// Test that the pins are in a high state. (Hopefully indicating they are pulled up.)
|
||||
IOMUXC_SetPinMux(sda->mux_reg, IOMUXC_SW_MUX_CTL_PAD_MUX_MODE_ALT5, 0, 0, 0, 0);
|
||||
IOMUXC_SetPinMux(scl->mux_reg, IOMUXC_SW_MUX_CTL_PAD_MUX_MODE_ALT5, 0, 0, 0, 0);
|
||||
i2c_check_pin_config(sda, 1);
|
||||
i2c_check_pin_config(scl, 1);
|
||||
const gpio_pin_config_t check_config = { kGPIO_DigitalInput, 0, kGPIO_NoIntmode };
|
||||
GPIO_PinInit(sda->gpio, sda->number, &check_config);
|
||||
GPIO_PinInit(scl->gpio, scl->number, &check_config);
|
||||
|
||||
common_hal_mcu_delay_us(10);
|
||||
|
||||
i2c_check_pin_config(sda, 0);
|
||||
i2c_check_pin_config(scl, 0);
|
||||
|
||||
// We must pull up within 3us to achieve 400khz.
|
||||
common_hal_mcu_delay_us(3);
|
||||
|
||||
if( !GPIO_PinRead(sda->gpio, sda->number) || !GPIO_PinRead(scl->gpio, scl->number)) {
|
||||
common_hal_reset_pin(sda);
|
||||
common_hal_reset_pin(scl);
|
||||
mp_raise_RuntimeError(translate("SDA or SCL needs a pull up"));
|
||||
}
|
||||
#endif
|
||||
|
||||
const uint32_t sda_count = MP_ARRAY_SIZE(mcu_i2c_sda_list);
|
||||
const uint32_t scl_count = MP_ARRAY_SIZE(mcu_i2c_scl_list);
|
||||
|
||||
for (uint32_t i = 0; i < sda_count; ++i) {
|
||||
if (mcu_i2c_sda_list[i].pin != sda)
|
||||
@ -73,21 +128,21 @@ void common_hal_busio_i2c_construct(busio_i2c_obj_t *self,
|
||||
if (mcu_i2c_scl_list[j].bank_idx != mcu_i2c_sda_list[i].bank_idx)
|
||||
continue;
|
||||
|
||||
self->sda_pin = &mcu_i2c_sda_list[i];
|
||||
self->scl_pin = &mcu_i2c_scl_list[j];
|
||||
self->sda = &mcu_i2c_sda_list[i];
|
||||
self->scl = &mcu_i2c_scl_list[j];
|
||||
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if(self->sda_pin == NULL || self->scl_pin == NULL) {
|
||||
mp_raise_ValueError(translate("Invalid I2C pin selection"));
|
||||
if(self->sda == NULL || self->scl == NULL) {
|
||||
mp_raise_ValueError(translate("Invalid pins"));
|
||||
} else {
|
||||
self->i2c = mcu_i2c_banks[self->sda_pin->bank_idx - 1];
|
||||
self->i2c = mcu_i2c_banks[self->sda->bank_idx - 1];
|
||||
}
|
||||
|
||||
config_periph_pin(self->sda_pin);
|
||||
config_periph_pin(self->scl_pin);
|
||||
config_periph_pin(self->sda);
|
||||
config_periph_pin(self->scl);
|
||||
|
||||
lpi2c_master_config_t config = { 0 };
|
||||
LPI2C_MasterGetDefaultConfig(&config);
|
||||
@ -96,34 +151,35 @@ void common_hal_busio_i2c_construct(busio_i2c_obj_t *self,
|
||||
|
||||
LPI2C_MasterInit(self->i2c, &config, I2C_CLOCK_FREQ);
|
||||
|
||||
#if CIRCUITPY_REQUIRE_I2C_PULLUPS
|
||||
// if (!gpio_get_pin_level(sda->number) || !gpio_get_pin_level(scl->number)) {
|
||||
// reset_pin_number(sda->number);
|
||||
// reset_pin_number(scl->number);
|
||||
// mp_raise_RuntimeError(translate("SDA or SCL needs a pull up"));
|
||||
// }
|
||||
#endif
|
||||
claim_pin(self->sda->pin);
|
||||
claim_pin(self->scl->pin);
|
||||
}
|
||||
|
||||
claim_pin(self->sda_pin->pin);
|
||||
claim_pin(self->scl_pin->pin);
|
||||
void common_hal_busio_i2c_never_reset(busio_i2c_obj_t *self) {
|
||||
never_reset_i2c[self->sda->bank_idx - 1] = true;
|
||||
|
||||
common_hal_never_reset_pin(self->sda->pin);
|
||||
common_hal_never_reset_pin(self->scl->pin);
|
||||
}
|
||||
|
||||
bool common_hal_busio_i2c_deinited(busio_i2c_obj_t *self) {
|
||||
return self->sda_pin == NULL;
|
||||
return self->sda == NULL;
|
||||
}
|
||||
|
||||
void common_hal_busio_i2c_deinit(busio_i2c_obj_t *self) {
|
||||
if (common_hal_busio_i2c_deinited(self)) {
|
||||
return;
|
||||
}
|
||||
reserved_i2c[self->sda->bank_idx - 1] = false;
|
||||
never_reset_i2c[self->sda->bank_idx - 1] = false;
|
||||
|
||||
LPI2C_MasterDeinit(self->i2c);
|
||||
|
||||
// reset_pin_number(self->sda_pin);
|
||||
// reset_pin_number(self->scl_pin);
|
||||
common_hal_reset_pin(self->sda->pin);
|
||||
common_hal_reset_pin(self->scl->pin);
|
||||
|
||||
self->sda_pin = NULL;
|
||||
self->scl_pin = NULL;
|
||||
self->sda = NULL;
|
||||
self->scl = NULL;
|
||||
}
|
||||
|
||||
bool common_hal_busio_i2c_probe(busio_i2c_obj_t *self, uint8_t addr) {
|
||||
@ -183,10 +239,3 @@ uint8_t common_hal_busio_i2c_read(busio_i2c_obj_t *self, uint16_t addr,
|
||||
|
||||
return MP_EIO;
|
||||
}
|
||||
|
||||
void common_hal_busio_i2c_never_reset(busio_i2c_obj_t *self) {
|
||||
// never_reset_sercom(self->i2c_desc.device.hw);
|
||||
//
|
||||
// never_reset_pin_number(self->scl_pin);
|
||||
// never_reset_pin_number(self->sda_pin);
|
||||
}
|
||||
|
@ -37,8 +37,8 @@ typedef struct {
|
||||
mp_obj_base_t base;
|
||||
LPI2C_Type *i2c;
|
||||
bool has_lock;
|
||||
const mcu_periph_obj_t *scl_pin;
|
||||
const mcu_periph_obj_t *sda_pin;
|
||||
const mcu_periph_obj_t *scl;
|
||||
const mcu_periph_obj_t *sda;
|
||||
} busio_i2c_obj_t;
|
||||
|
||||
#endif // MICROPY_INCLUDED_MIMXRT10XX_COMMON_HAL_BUSIO_I2C_H
|
||||
|
@ -25,6 +25,8 @@
|
||||
* THE SOFTWARE.
|
||||
*/
|
||||
|
||||
#include "shared-bindings/microcontroller/Pin.h"
|
||||
#include "shared-bindings/microcontroller/__init__.h"
|
||||
#include "shared-bindings/busio/SPI.h"
|
||||
#include "py/mperrno.h"
|
||||
#include "py/runtime.h"
|
||||
@ -34,6 +36,8 @@
|
||||
|
||||
#include <stdio.h>
|
||||
|
||||
#define LPSPI_MASTER_CLK_FREQ (CLOCK_GetFreq(kCLOCK_Usb1PllPfd0Clk) / (CLOCK_GetDiv(kCLOCK_LpspiDiv) + 1))
|
||||
|
||||
//arrays use 0 based numbering: SPI1 is stored at index 0
|
||||
#define MAX_SPI 4
|
||||
STATIC bool reserved_spi[MAX_SPI];
|
||||
@ -58,11 +62,12 @@ STATIC void config_periph_pin(const mcu_periph_obj_t *periph) {
|
||||
| IOMUXC_SW_PAD_CTL_PAD_SRE(0));
|
||||
}
|
||||
|
||||
#define LPSPI_MASTER_CLK_FREQ (CLOCK_GetFreq(kCLOCK_Usb1PllPfd0Clk) / (CLOCK_GetDiv(kCLOCK_LpspiDiv) + 1))
|
||||
|
||||
void spi_reset(void) {
|
||||
for (int i = 0; i < MAX_SPI; i++) {
|
||||
reserved_spi[i] = false;
|
||||
for (uint i = 0; i < MP_ARRAY_SIZE(mcu_spi_banks); i++) {
|
||||
if (!never_reset_spi[i]) {
|
||||
reserved_spi[i] = false;
|
||||
LPSPI_Deinit(mcu_spi_banks[i]);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -192,7 +197,14 @@ void common_hal_busio_spi_construct(busio_spi_obj_t *self,
|
||||
}
|
||||
|
||||
void common_hal_busio_spi_never_reset(busio_spi_obj_t *self) {
|
||||
// TODO
|
||||
never_reset_spi[self->clock->bank_idx - 1] = true;
|
||||
common_hal_never_reset_pin(self->clock->pin);
|
||||
if (self->mosi != NULL) {
|
||||
common_hal_never_reset_pin(self->mosi->pin);
|
||||
}
|
||||
if (self->miso != NULL) {
|
||||
common_hal_never_reset_pin(self->miso->pin);
|
||||
}
|
||||
}
|
||||
|
||||
bool common_hal_busio_spi_deinited(busio_spi_obj_t *self) {
|
||||
@ -203,8 +215,20 @@ void common_hal_busio_spi_deinit(busio_spi_obj_t *self) {
|
||||
if (common_hal_busio_spi_deinited(self)) {
|
||||
return;
|
||||
}
|
||||
LPSPI_Deinit(self->spi);
|
||||
reserved_spi[self->clock->bank_idx - 1] = false;
|
||||
never_reset_spi[self->clock->bank_idx - 1] = false;
|
||||
|
||||
common_hal_reset_pin(self->clock->pin);
|
||||
if (self->mosi != NULL) {
|
||||
common_hal_reset_pin(self->mosi->pin);
|
||||
}
|
||||
if (self->miso != NULL) {
|
||||
common_hal_reset_pin(self->miso->pin);
|
||||
}
|
||||
self->clock = NULL;
|
||||
self->mosi = NULL;
|
||||
self->miso = NULL;
|
||||
}
|
||||
|
||||
bool common_hal_busio_spi_configure(busio_spi_obj_t *self,
|
||||
|
@ -25,6 +25,7 @@
|
||||
* THE SOFTWARE.
|
||||
*/
|
||||
|
||||
#include "shared-bindings/microcontroller/Pin.h"
|
||||
#include "shared-bindings/microcontroller/__init__.h"
|
||||
#include "shared-bindings/busio/UART.h"
|
||||
|
||||
@ -73,6 +74,13 @@ void LPUART_UserCallback(LPUART_Type *base, lpuart_handle_t *handle, status_t st
|
||||
}
|
||||
}
|
||||
|
||||
void uart_reset(void) {
|
||||
for(uint i = 0; i < MP_ARRAY_SIZE(mcu_uart_banks); i++) {
|
||||
reserved_uart[i] = false;
|
||||
LPUART_Deinit(mcu_uart_banks[i]);
|
||||
}
|
||||
}
|
||||
|
||||
void common_hal_busio_uart_construct(busio_uart_obj_t *self,
|
||||
const mcu_pin_obj_t * tx, const mcu_pin_obj_t * rx,
|
||||
const mcu_pin_obj_t * rts, const mcu_pin_obj_t * cts,
|
||||
@ -278,13 +286,21 @@ void common_hal_busio_uart_deinit(busio_uart_obj_t *self) {
|
||||
if (common_hal_busio_uart_deinited(self)) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (self->rx) {
|
||||
reserved_uart[self->rx->bank_idx - 1] = false;
|
||||
} else {
|
||||
reserved_uart[self->tx->bank_idx - 1] = false;
|
||||
}
|
||||
|
||||
LPUART_Deinit(self->uart);
|
||||
|
||||
gc_free(self->ringbuf);
|
||||
|
||||
// reset_pin_number(self->rx);
|
||||
// reset_pin_number(self->tx);
|
||||
if (self->rx) {
|
||||
common_hal_reset_pin(self->rx->pin);
|
||||
}
|
||||
if (self->tx) {
|
||||
common_hal_reset_pin(self->tx->pin);
|
||||
}
|
||||
|
||||
self->rx = NULL;
|
||||
self->tx = NULL;
|
||||
|
@ -5,6 +5,7 @@
|
||||
*
|
||||
* Copyright (c) 2016 Scott Shawcroft for Adafruit Industries
|
||||
* Copyright (c) 2019 Artur Pacholec
|
||||
* Copyright (c) 2020 Lucian Copeland for Adafruit Industries
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
* of this software and associated documentation files (the "Software"), to deal
|
||||
|
@ -29,7 +29,7 @@
|
||||
#include "py/mphal.h"
|
||||
#include "mimxrt10xx/periph.h"
|
||||
|
||||
LPI2C_Type *mcu_i2c_banks[] = { LPI2C1, LPI2C2 };
|
||||
LPI2C_Type *mcu_i2c_banks[2] = { LPI2C1, LPI2C2 };
|
||||
|
||||
const mcu_periph_obj_t mcu_i2c_sda_list[8] = {
|
||||
PERIPH_PIN(1, 0, kIOMUXC_LPI2C1_SDA_SELECT_INPUT, 0, &pin_GPIO_AD_13),
|
||||
@ -55,7 +55,7 @@ const mcu_periph_obj_t mcu_i2c_scl_list[8] = {
|
||||
PERIPH_PIN(2, 3, kIOMUXC_LPI2C2_SCL_SELECT_INPUT, 3, &pin_GPIO_10),
|
||||
};
|
||||
|
||||
LPSPI_Type *mcu_spi_banks[] = { LPSPI1, LPSPI2 };
|
||||
LPSPI_Type *mcu_spi_banks[2] = { LPSPI1, LPSPI2 };
|
||||
|
||||
const mcu_periph_obj_t mcu_spi_sck_list[4] = {
|
||||
PERIPH_PIN(1, 0, kIOMUXC_LPSPI1_SCK_SELECT_INPUT, 0, &pin_GPIO_AD_06),
|
||||
@ -81,7 +81,7 @@ const mcu_periph_obj_t mcu_spi_miso_list[4] = {
|
||||
PERIPH_PIN(2, 1, kIOMUXC_LPSPI2_SDI_SELECT_INPUT, 1, &pin_GPIO_SD_09),
|
||||
};
|
||||
|
||||
LPUART_Type *mcu_uart_banks[] = { LPUART1, LPUART2, LPUART3, LPUART4 };
|
||||
LPUART_Type *mcu_uart_banks[4] = { LPUART1, LPUART2, LPUART3, LPUART4 };
|
||||
|
||||
const mcu_periph_obj_t mcu_uart_rx_list[9] = {
|
||||
PERIPH_PIN(1, 2, kIOMUXC_LPUART1_RXD_SELECT_INPUT, 0, &pin_GPIO_SD_11),
|
||||
|
@ -27,13 +27,19 @@
|
||||
#ifndef MICROPY_INCLUDED_MIMXRT10XX_PERIPHERALS_MIMXRT1011_PERIPH_H
|
||||
#define MICROPY_INCLUDED_MIMXRT10XX_PERIPHERALS_MIMXRT1011_PERIPH_H
|
||||
|
||||
LPI2C_Type *mcu_i2c_banks[2];
|
||||
|
||||
extern const mcu_periph_obj_t mcu_i2c_sda_list[8];
|
||||
extern const mcu_periph_obj_t mcu_i2c_scl_list[8];
|
||||
|
||||
LPSPI_Type *mcu_spi_banks[2];
|
||||
|
||||
extern const mcu_periph_obj_t mcu_spi_sck_list[4];
|
||||
extern const mcu_periph_obj_t mcu_spi_mosi_list[4];
|
||||
extern const mcu_periph_obj_t mcu_spi_miso_list[4];
|
||||
|
||||
LPUART_Type *mcu_uart_banks[4];
|
||||
|
||||
extern const mcu_periph_obj_t mcu_uart_rx_list[9];
|
||||
extern const mcu_periph_obj_t mcu_uart_tx_list[9];
|
||||
extern const mcu_periph_obj_t mcu_uart_rts_list[4];
|
||||
|
@ -30,7 +30,7 @@
|
||||
#include "py/mphal.h"
|
||||
#include "mimxrt10xx/periph.h"
|
||||
|
||||
LPI2C_Type *mcu_i2c_banks[] = { LPI2C1, LPI2C2, LPI2C3, LPI2C4 };
|
||||
LPI2C_Type *mcu_i2c_banks[4] = { LPI2C1, LPI2C2, LPI2C3, LPI2C4 };
|
||||
|
||||
const mcu_periph_obj_t mcu_i2c_sda_list[8] = {
|
||||
PERIPH_PIN(1, 6, kIOMUXC_LPI2C1_SDA_SELECT_INPUT, 0, &pin_GPIO_EMC_03),
|
||||
@ -60,7 +60,7 @@ const mcu_periph_obj_t mcu_i2c_scl_list[8] = {
|
||||
PERIPH_PIN(4, 3, kIOMUXC_LPI2C4_SCL_SELECT_INPUT, 1, &pin_GPIO_SD_B1_02),
|
||||
};
|
||||
|
||||
LPSPI_Type *mcu_spi_banks[] = { LPSPI1, LPSPI2, LPSPI3, LPSPI4 };
|
||||
LPSPI_Type *mcu_spi_banks[4] = { LPSPI1, LPSPI2, LPSPI3, LPSPI4 };
|
||||
|
||||
const mcu_periph_obj_t mcu_spi_sck_list[8] = {
|
||||
PERIPH_PIN(1, 4, kIOMUXC_LPSPI1_SCK_SELECT_INPUT, 0, &pin_GPIO_SD_B0_02),
|
||||
@ -104,7 +104,7 @@ const mcu_periph_obj_t mcu_spi_miso_list[8] = {
|
||||
PERIPH_PIN(4, 4, kIOMUXC_LPSPI2_SDI_SELECT_INPUT, 1, &pin_GPIO_EMC_35),
|
||||
};
|
||||
|
||||
LPUART_Type *mcu_uart_banks[] = { LPUART1, LPUART2, LPUART3, LPUART4, LPUART5, LPUART6, LPUART7, LPUART8 };
|
||||
LPUART_Type *mcu_uart_banks[8] = { LPUART1, LPUART2, LPUART3, LPUART4, LPUART5, LPUART6, LPUART7, LPUART8 };
|
||||
|
||||
const mcu_periph_obj_t mcu_uart_rx_list[16] = {
|
||||
PERIPH_PIN(1, 2, 0, 0, &pin_GPIO_AD_B0_07),
|
||||
|
@ -28,13 +28,19 @@
|
||||
#ifndef MICROPY_INCLUDED_MIMXRT10XX_PERIPHERALS_MIMXRT1021_PERIPH_H
|
||||
#define MICROPY_INCLUDED_MIMXRT10XX_PERIPHERALS_MIMXRT1021_PERIPH_H
|
||||
|
||||
LPI2C_Type *mcu_i2c_banks[4];
|
||||
|
||||
extern const mcu_periph_obj_t mcu_i2c_sda_list[8];
|
||||
extern const mcu_periph_obj_t mcu_i2c_scl_list[8];
|
||||
|
||||
LPSPI_Type *mcu_spi_banks[4];
|
||||
|
||||
extern const mcu_periph_obj_t mcu_spi_sck_list[8];
|
||||
extern const mcu_periph_obj_t mcu_spi_mosi_list[8];
|
||||
extern const mcu_periph_obj_t mcu_spi_miso_list[8];
|
||||
|
||||
LPUART_Type *mcu_uart_banks[8];
|
||||
|
||||
extern const mcu_periph_obj_t mcu_uart_rx_list[16];
|
||||
extern const mcu_periph_obj_t mcu_uart_tx_list[16];
|
||||
extern const mcu_periph_obj_t mcu_uart_rts_list[10];
|
||||
|
@ -29,7 +29,7 @@
|
||||
#include "py/mphal.h"
|
||||
#include "mimxrt10xx/periph.h"
|
||||
|
||||
LPI2C_Type *mcu_i2c_banks[] = { LPI2C1, LPI2C2, LPI2C3, LPI2C4 };
|
||||
LPI2C_Type *mcu_i2c_banks[4] = { LPI2C1, LPI2C2, LPI2C3, LPI2C4 };
|
||||
|
||||
const mcu_periph_obj_t mcu_i2c_sda_list[9] = {
|
||||
PERIPH_PIN(1, 2, kIOMUXC_LPI2C1_SDA_SELECT_INPUT, 0, &pin_GPIO_SD_B1_05),
|
||||
@ -61,7 +61,7 @@ const mcu_periph_obj_t mcu_i2c_scl_list[9] = {
|
||||
PERIPH_PIN(4, 0, kIOMUXC_LPI2C4_SCL_SELECT_INPUT, 1, &pin_GPIO_AD_B0_12),
|
||||
};
|
||||
|
||||
LPSPI_Type *mcu_spi_banks[] = { LPSPI1, LPSPI2, LPSPI3, LPSPI4 };
|
||||
LPSPI_Type *mcu_spi_banks[4] = { LPSPI1, LPSPI2, LPSPI3, LPSPI4 };
|
||||
|
||||
const mcu_periph_obj_t mcu_spi_sck_list[8] = {
|
||||
PERIPH_PIN(1, 3, kIOMUXC_LPSPI1_SCK_SELECT_INPUT, 0, &pin_GPIO_EMC_27),
|
||||
@ -105,7 +105,7 @@ const mcu_periph_obj_t mcu_spi_miso_list[8] = {
|
||||
PERIPH_PIN(4, 1, kIOMUXC_LPSPI4_SDI_SELECT_INPUT, 1, &pin_GPIO_B1_05),
|
||||
};
|
||||
|
||||
LPUART_Type *mcu_uart_banks[] = { LPUART1, LPUART2, LPUART3, LPUART4, LPUART5, LPUART6, LPUART7, LPUART8 };
|
||||
LPUART_Type *mcu_uart_banks[8] = { LPUART1, LPUART2, LPUART3, LPUART4, LPUART5, LPUART6, LPUART7, LPUART8 };
|
||||
|
||||
const mcu_periph_obj_t mcu_uart_rx_list[18] = {
|
||||
PERIPH_PIN(1, 2, 0, 0, &pin_GPIO_AD_B0_13),
|
||||
|
@ -27,13 +27,19 @@
|
||||
#ifndef MICROPY_INCLUDED_MIMXRT10XX_PERIPHERALS_MIMXRT1011_PERIPH_H
|
||||
#define MICROPY_INCLUDED_MIMXRT10XX_PERIPHERALS_MIMXRT1011_PERIPH_H
|
||||
|
||||
LPI2C_Type *mcu_i2c_banks[4];
|
||||
|
||||
extern const mcu_periph_obj_t mcu_i2c_sda_list[9];
|
||||
extern const mcu_periph_obj_t mcu_i2c_scl_list[9];
|
||||
|
||||
LPSPI_Type *mcu_spi_banks[4];
|
||||
|
||||
extern const mcu_periph_obj_t mcu_spi_sck_list[8];
|
||||
extern const mcu_periph_obj_t mcu_spi_mosi_list[8];
|
||||
extern const mcu_periph_obj_t mcu_spi_miso_list[8];
|
||||
|
||||
LPUART_Type *mcu_uart_banks[8];
|
||||
|
||||
extern const mcu_periph_obj_t mcu_uart_rx_list[18];
|
||||
extern const mcu_periph_obj_t mcu_uart_tx_list[18];
|
||||
extern const mcu_periph_obj_t mcu_uart_rts_list[9];
|
||||
|
@ -257,8 +257,8 @@ safe_mode_t port_init(void) {
|
||||
// enabled. It won't occur very often so it'll be low overhead.
|
||||
NVIC_EnableIRQ(SNVS_HP_WRAPPER_IRQn);
|
||||
|
||||
// Reset everything into a known state before board_init.
|
||||
reset_port();
|
||||
// Note that `reset_port` CANNOT GO HERE, unlike other ports, because `board_init` hasn't been
|
||||
// run yet, which uses `never_reset` to protect critical pins from being reset by `reset_port`.
|
||||
|
||||
if (board_requests_safe_mode()) {
|
||||
return USER_SAFE_MODE;
|
||||
|
@ -46,6 +46,9 @@ MCU_SERIES = m4
|
||||
MCU_VARIANT = nrf52
|
||||
MCU_SUB_VARIANT = nrf52840
|
||||
|
||||
# Fits on nrf52840 but space is tight on nrf52833.
|
||||
CIRCUITPY_AESIO ?= 1
|
||||
|
||||
SD ?= s140
|
||||
SOFTDEV_VERSION ?= 6.1.0
|
||||
|
||||
|
@ -122,7 +122,7 @@ void common_hal_busio_i2c_construct(busio_i2c_obj_t *self,
|
||||
#if (CPY_STM32H7 || CPY_STM32F7)
|
||||
self->handle.Init.Timing = 0x40604E73; //Taken from STCube examples
|
||||
#else
|
||||
self->handle.Init.ClockSpeed = 100000;
|
||||
self->handle.Init.ClockSpeed = frequency;
|
||||
self->handle.Init.DutyCycle = I2C_DUTYCYCLE_2;
|
||||
#endif
|
||||
|
||||
|
@ -269,18 +269,14 @@ void common_hal_busio_spi_construct(busio_spi_obj_t *self,
|
||||
}
|
||||
|
||||
void common_hal_busio_spi_never_reset(busio_spi_obj_t *self) {
|
||||
for (size_t i = 0; i < MP_ARRAY_SIZE(mcu_spi_banks); i++) {
|
||||
if (mcu_spi_banks[i] == self->handle.Instance) {
|
||||
never_reset_spi[i] = true;
|
||||
never_reset_pin_number(self->sck->pin->port, self->sck->pin->number);
|
||||
if (self->mosi != NULL) {
|
||||
never_reset_pin_number(self->mosi->pin->port, self->mosi->pin->number);
|
||||
}
|
||||
if (self->miso != NULL) {
|
||||
never_reset_pin_number(self->miso->pin->port, self->miso->pin->number);
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
never_reset_spi[self->sck->periph_index - 1] = true;
|
||||
never_reset_pin_number(self->sck->pin->port, self->sck->pin->number);
|
||||
if (self->mosi != NULL) {
|
||||
never_reset_pin_number(self->mosi->pin->port, self->mosi->pin->number);
|
||||
}
|
||||
if (self->miso != NULL) {
|
||||
never_reset_pin_number(self->miso->pin->port, self->miso->pin->number);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -167,54 +167,55 @@ STATIC const mp_rom_map_elem_t storage_module_globals_table[] = {
|
||||
{ MP_ROM_QSTR(MP_QSTR_getmount), MP_ROM_PTR(&storage_getmount_obj) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_erase_filesystem), MP_ROM_PTR(&storage_erase_filesystem_obj) },
|
||||
|
||||
//| class VfsFat:
|
||||
//| def __init__(self, block_device: Any): ...
|
||||
//| """Create a new VfsFat filesystem around the given block device.
|
||||
//|
|
||||
//| :param block_device: Block device the the filesystem lives on"""
|
||||
//|
|
||||
//| label: Any = ...
|
||||
//| """The filesystem label, up to 11 case-insensitive bytes. Note that
|
||||
//| this property can only be set when the device is writable by the
|
||||
//| microcontroller."""
|
||||
//|
|
||||
//| def mkfs(self, ) -> Any:
|
||||
//| """Format the block device, deleting any data that may have been there"""
|
||||
//| ...
|
||||
//|
|
||||
//| def open(self, path: Any, mode: Any) -> Any:
|
||||
//| """Like builtin ``open()``"""
|
||||
//| ...
|
||||
//|
|
||||
//| def ilistdir(self, path: Any) -> Any:
|
||||
//| """Return an iterator whose values describe files and folders within
|
||||
//| ``path``"""
|
||||
//| ...
|
||||
//|
|
||||
//| def mkdir(self, path: Any) -> Any:
|
||||
//| """Like `os.mkdir`"""
|
||||
//| ...
|
||||
//|
|
||||
//| def rmdir(self, path: Any) -> Any:
|
||||
//| """Like `os.rmdir`"""
|
||||
//| ...
|
||||
//|
|
||||
//| def stat(self, path: Any) -> Any:
|
||||
//| """Like `os.stat`"""
|
||||
//| ...
|
||||
//|
|
||||
//| def statvfs(self, path: Any) -> Any:
|
||||
//| """Like `os.statvfs`"""
|
||||
//| ...
|
||||
//|
|
||||
//| def mount(self, readonly: Any, mkfs: Any) -> Any:
|
||||
//| """Don't call this directly, call `storage.mount`."""
|
||||
//| ...
|
||||
//|
|
||||
//| def umount(self, ) -> Any:
|
||||
//| """Don't call this directly, call `storage.umount`."""
|
||||
//| ...
|
||||
//|
|
||||
//| class VfsFat:
|
||||
//| def __init__(self, block_device: Any):
|
||||
//| """Create a new VfsFat filesystem around the given block device.
|
||||
//|
|
||||
//| :param block_device: Block device the the filesystem lives on"""
|
||||
//|
|
||||
//| label: Any = ...
|
||||
//| """The filesystem label, up to 11 case-insensitive bytes. Note that
|
||||
//| this property can only be set when the device is writable by the
|
||||
//| microcontroller."""
|
||||
//| ...
|
||||
//|
|
||||
//| def mkfs(self) -> Any:
|
||||
//| """Format the block device, deleting any data that may have been there"""
|
||||
//| ...
|
||||
//|
|
||||
//| def open(self, path: Any, mode: Any) -> Any:
|
||||
//| """Like builtin ``open()``"""
|
||||
//| ...
|
||||
//|
|
||||
//| def ilistdir(self, path: Any) -> Any:
|
||||
//| """Return an iterator whose values describe files and folders within
|
||||
//| ``path``"""
|
||||
//| ...
|
||||
//|
|
||||
//| def mkdir(self, path: Any) -> Any:
|
||||
//| """Like `os.mkdir`"""
|
||||
//| ...
|
||||
//|
|
||||
//| def rmdir(self, path: Any) -> Any:
|
||||
//| """Like `os.rmdir`"""
|
||||
//| ...
|
||||
//|
|
||||
//| def stat(self, path: Any) -> Any:
|
||||
//| """Like `os.stat`"""
|
||||
//| ...
|
||||
//|
|
||||
//| def statvfs(self, path: Any) -> Any:
|
||||
//| """Like `os.statvfs`"""
|
||||
//| ...
|
||||
//|
|
||||
//| def mount(self, readonly: Any, mkfs: Any) -> Any:
|
||||
//| """Don't call this directly, call `storage.mount`."""
|
||||
//| ...
|
||||
//|
|
||||
//| def umount(self) -> Any:
|
||||
//| """Don't call this directly, call `storage.umount`."""
|
||||
//| ...
|
||||
//|
|
||||
{ MP_ROM_QSTR(MP_QSTR_VfsFat), MP_ROM_PTR(&mp_fat_vfs_type) },
|
||||
};
|
||||
|
||||
|
@ -187,6 +187,24 @@ typedef struct {
|
||||
.single_status_byte = false, \
|
||||
}
|
||||
|
||||
// Settings for the Gigadevice GD25S512MD 64MiB SPI flash.
|
||||
// Datasheet: http://www.gigadevice.com/datasheet/gd25s512md/
|
||||
#define GD25S512MD {\
|
||||
.total_size = (1 << 26), /* 64 MiB */ \
|
||||
.start_up_time_us = 5000, \
|
||||
.manufacturer_id = 0xc8, \
|
||||
.memory_type = 0x40, \
|
||||
.capacity = 0x19, \
|
||||
.max_clock_speed_mhz = 104, /* if we need 120 then we can turn on high performance mode */ \
|
||||
.quad_enable_bit_mask = 0x02, \
|
||||
.has_sector_protection = false, \
|
||||
.supports_fast_read = true, \
|
||||
.supports_qspi = true, \
|
||||
.supports_qspi_writes = true, \
|
||||
.write_status_register_split = true, \
|
||||
.single_status_byte = false, \
|
||||
}
|
||||
|
||||
// Settings for the Cypress (was Spansion) S25FL064L 8MiB SPI flash.
|
||||
// Datasheet: http://www.cypress.com/file/316661/download
|
||||
#define S25FL064L {\
|
||||
|
@ -53,7 +53,7 @@ extension_by_board = {
|
||||
|
||||
# nRF52840 dev kits that may not have UF2 bootloaders,
|
||||
"makerdiary_nrf52840_mdk": HEX,
|
||||
"makerdiary_nrf52840_mdk_usb_dongle": HEX,
|
||||
"makerdiary_nrf52840_mdk_usb_dongle": HEX_UF2,
|
||||
"pca10056": BIN_UF2,
|
||||
"pca10059": BIN_UF2,
|
||||
"electronut_labs_blip": HEX
|
||||
|
Loading…
x
Reference in New Issue
Block a user