summaryrefslogtreecommitdiffstatshomepage
path: root/docs
Commit message (Collapse)AuthorAge
* rp2/machine_uart: Make it so TX is done only when no longer busy.Damien George2024-10-22
| | | | | | | | | | | | | | | | Prior to this commit, when flushing a UART on the rp2 port, it returns just before the last character is sent out the wire. Fix this by waiting until the BUSY flag is cleared. This also fixes the behaviour of `UART.txdone()` to return `True` only when the last byte has gone out. Updated docs and tests to match. The test now checks that UART TX time is very close to the expected time (prior, it was just testing that the TX time was less than the expected time). Signed-off-by: Damien George <damien@micropython.org>
* rp2/rp2_pio: Add support for RP2350A/B variants in PIO interface.Phil Howard2024-10-15
| | | | | | | | | Add support for 32 and 48 pin variants of RP2350. Add new `PIO.gpio_base()` method, mirroring the Pico SDK. Signed-off-by: Phil Howard <phil@gadgetoid.com> Signed-off-by: Damien George <damien@micropython.org>
* esp32: Add support for esp32c6.Andrew Leech2024-10-09
| | | | | | This commit adds general support for ESP32-C6 SoCs. Signed-off-by: Andrew Leech <andrew@alelec.net>
* docs/reference/mpremote: Update docs to mention new features.Damien George2024-10-09
| | | | Signed-off-by: Damien George <damien@micropython.org>
* zephyr: Allow using devicetree node labels to construct machine objects.Maureen Helm2024-10-01
| | | | | | | | | | | | | | | | | | Zephyr v3.7.0 added a new feature to allow getting devices by their devicetree node labels. Use this feature in the MicroPython Zephyr port to simplify constructing machine module objects, including Pin, SPI, I2C, and UART. It's still possible to use the more verbose device names (e.g., gpio@400ff040, i2c@40066000, spi@4002c000), but now we can also use their devicetree node labels (e.g., gpiob, i2c0, spi0). Node labels aren't standardized across all SoC families because they generally try to follow their respective SoC hardware user manual naming convention, however many boards define common labels for devices routed to Arduino headers (e.g., arduino_i2c, arduino_serial, and arduino_spi). That means I2C("arduino_i2c") will work on quite a few boards (>100 in the main Zephyr tree). Signed-off-by: Maureen Helm <maureen.helm@analog.com>
* zephyr: Upgrade to Zephyr v3.7.0.Maureen Helm2024-10-02
| | | | | | | | | Updates the Zephyr port build instructions and CI to use the latest Zephyr release tag. Tested on frdm_k64f. Signed-off-by: Maureen Helm <maureen.helm@analog.com>
* docs/zephyr: Update docs to reflect device name changes.Maureen Helm2024-10-02
| | | | | | | | | | Zephyr v3.2.0 deprecated the devicetree label property as a base property, which had been used as the device name string for device_get_binding(). The device name string is now the devicetree node name appended with its unit-address. Update Zephyr port documentation to reflect this change. Signed-off-by: Maureen Helm <maureen.helm@intel.com>
* py/objringio: Add micropython.RingIO() interface for general use.Andrew Leech2024-09-19
| | | | | | | | | | | | This commit adds a new `RingIO` type which exposes the internal ring-buffer code for general use in Python programs. It has the stream interface making it similar to `StringIO` and `BytesIO`, except `RingIO` has a fixed buffer size and is automatically safe when reads and writes are in different threads or an IRQ. This new type is enabled at the "extra features" ROM level. Signed-off-by: Andrew Leech <andrew.leech@planetinnovation.com.au>
* py/scheduler: Only run callbacks on the main thread if GIL is disabled.Angus Gratton2024-09-19
| | | | | | | | | | Otherwise it's very difficult to reason about thread safety in a scheduler callback, as it can run at any time on any thread - including racing against any bytecode operation on any thread. This work was funded through GitHub Sponsors. Signed-off-by: Angus Gratton <angus@redyak.com.au>
* docs/library: Document machine.Pin.toggle() method.Angus Gratton2024-09-19
| | | | | | | Original commit was by @millosolomillo from 2022, but CI no longer accepts their auto-generated GitHub commit email... Signed-off-by: Angus Gratton <angus@redyak.com.au>
* docs/library: Document math.log with two arguments.Damien George2024-09-17
| | | | | | The functionality is there but was not documented. Signed-off-by: Damien George <damien@micropython.org>
* docs/reference: Fix pyboard.py filesystem cp example with three files.Damien George2024-09-17
| | | | | | | | Fix documentation to match behaviour (directories are not preserved). Fixes issue #11101. Signed-off-by: Damien George <damien@micropython.org>
* docs/esp32: Update pin access example with addresses for ESP32-S3.Paul Grayson2024-09-17
| | | | | Signed-off-by: Paul Grayson <pdg@alum.mit.edu> Signed-off-by: Angus Gratton <angus@redyak.com.au>
* samd/mphalport: Simplify mp_hal_delay_ms().robert-hh2024-09-06
| | | | | | | | Do NOT use `mp_hal_delay_us()` for short delays. This was initially done to make short delays precise, but it does not allow for scheduling. Leave using `mp_hal_delay_us()` to user code if needed. Signed-off-by: robert-hh <robert@hammelrath.com>
* docs/library: Document the network.PPP class.Damien George2024-08-29
| | | | Signed-off-by: Damien George <damien@micropython.org>
* docs/library/machine.UART: Extend the documentation for UART.irq.robert-hh2024-08-29
| | | | | | For more ports and trigger options, based on the current state of the code. Signed-off-by: robert-hh <robert@hammelrath.com>
* docs/library/machine.UART: Fix UART.irq docs to match current code.Damien George2024-08-29
| | | | | | | | These docs now match the code in `extmod/machine_uart.c`. IRQ trigger support still need to be updated for each port (to be done in a follow-up commit). Signed-off-by: Damien George <damien@micropython.org>
* rp2/modmachine: Set the peripheral frequency with machine.freq().robert-hh2024-08-20
| | | | | | | | | | | | By default, the peripheral clock for UART and SPI is set to 48 MHz and will not be affected by the MCU clock change. This can be changed by a second argument to `machine.freq(freq, peripheral_freq)`. The second argument must be either 48 MHz or identical with the first argument. Note that UART and SPI baud rates may have to be re-configured after changing the MCU clock. Signed-off-by: robert-hh <robert@hammelrath.com>
* docs/mimxrt/quickref: Add a note about machine.RTC() subseconds.robert-hh2024-08-20
| | | | | | | Telling that subseconds is not supported and returns always 0. This was changed in 913f9ad5ad9bb446c6e4310b6b5eda310098a1cf. Signed-off-by: robert-hh <robert@hammelrath.com>
* docs/library/neopixel: Mention bitstream timing tuple.Tim Weber2024-08-01
| | | | Signed-off-by: Tim Weber <scy@scy.name>
* py/py.mk: Add SRC_USERMOD_LIB_ASM to include assembly files.George Hopkins2024-08-01
| | | | | | | | Introduce SRC_USERMOD_LIB_ASM to allow users to include assembly files as part of their user modules. It could be used to include optimized functions or outputs of other programming languages. Signed-off-by: George Hopkins <george-hopkins@null.net>
* docs: Specify that machine.idle() returns at least every 1ms.Angus Gratton2024-07-23
| | | | | | | | | | | | | | | | | A lot of existing code (i.e. micropython-lib lps22h, lcd160cr sensor drivers, lora sync_modem driver, usb-device-hid) calls machine.idle() inside a tight loop that is polling some condition. This reduces the power usage compared to constantly looping, but can be faster than calling a sleep function. However on a tickless port there's not always an interrupt before the condition they are polling for, so it's difficult to restructure this code if machine.idle() doesn't have any upper limit on execution time. This commit specifies an upper limit of 1ms before machine.idle() resumes execution. This is already the case for all ports except rp2. This work was funded through GitHub Sponsors. Signed-off-by: Angus Gratton <angus@redyak.com.au>
* docs: Update docs to replace ifconfig with ipconfig.Felix Dörre2024-07-05
| | | | | | Follow up to 1c6012b0b5c62f18130217f30e73ad3ce4c8c9e6 Signed-off-by: Felix Dörre <felix@dogcraft.de>
* docs/rp2/quickref: Document the use of channel numbers for ADC.robert-hh2024-07-04
| | | | Signed-off-by: robert-hh <robert@hammelrath.com>
* extmod/machine_usb_device: Add USBDevice.remote_wakeup method.Felix Dörre2024-07-02
| | | | | | This simply exposes the TinyUSB function. Signed-off-by: Felix Dörre <felix@dogcraft.de>
* py/objint: Fix int.to_bytes() buffer size checks.Angus Gratton2024-06-24
| | | | | | | | | | | | | | | | | | | | | | | | Fixes and improvements to `int.to_bytes()` are: - No longer overflows if byte size is 0 (closes #13041). - Raises OverflowError in any case where number won't fit into byte length (now matches CPython, previously MicroPython would return a truncated bytes object). - Document that `micropython int.to_bytes()` doesn't implement the optional signed kwarg, but will behave as if `signed=True` when the integer is negative (this is the current behaviour). Add tests for this also. Requires changes for small ints, MPZ large ints, and "long long" large ints. Adds a new set of unit tests for ints between 32 and 64 bits to increase coverage of "long long" large ints, which are otherwise untested. Tested on unix port (64 bit small ints, MPZ long ints) and Zephyr STM32WB board (32 bit small ints, long long large ints). This work was funded through GitHub Sponsors. Signed-off-by: Angus Gratton <angus@redyak.com.au>
* mpy-cross: Add RISC-V RV32IMC support in MPY files.Alessandro Gatti2024-06-21
| | | | | | | MPY files can now hold generated RV32IMC native code. This can be accomplished by passing the `-march=rv32imc` flag to mpy-cross. Signed-off-by: Alessandro Gatti <a.gatti@frob.it>
* LICENSE,docs: Update copyright year range to include 2024.Damien George2024-05-27
| | | | Signed-off-by: Damien George <damien@micropython.org>
* docs/library/asyncio: Document that ThreadSafeFlag now works on unix.Damien George2024-05-15
| | | | | | | ThreadSafeFlag works on the unix port since commit df08c38c286561c08d5ac354428074817eb0c163. Signed-off-by: Damien George <damien@micropython.org>
* docs/reference: Document how to mip install packages from GitLab.Olivier Lenoir2024-05-15
| | | | Signed-off-by: Olivier Lenoir <olivier.len02@gmail.com>
* docs/library/machine.USBDevice: Update note about packages in mp-lib.Angus Gratton2024-05-09
| | | | | | Also fix a small typo. Signed-off-by: Angus Gratton <angus@redyak.com.au>
* esp32/modesp32: Add mcu_temperature() function for C3/S2/S3 devices.Rick Sorensen2024-05-07
| | | | | | | | | | | | For ESP32C3/S2/S3 IDFv5 exposes new internal temperature API which is different to the base ESP32, IDFv4. Thanks to @robert-hh for cleaner code and testing sensor capability in these devices. See discussion #10443. Signed-off-by: Rick Sorensen <rick.sorensen@gmail.com>
* docs/esp32/quickref: Add note about different ESP32 varieties.Rick Sorensen2024-05-07
| | | | Signed-off-by: Rick Sorensen <rick.sorensen@gmail.com>
* docs/develop/optimizations: Fix typo identified in issue 14391.Matt Trentini2024-04-29
| | | | Signed-off-by: Matt Trentini <matt.trentini@gmail.com>
* shared/tinyusb: Fix dynamic USB control callbacks for wLength==0.Angus Gratton2024-04-17
| | | | | | | | | | | | | | | | | | | | In the case where an OUT control transfer triggers with wLength==0 (i.e. all data sent in the SETUP phase, and no additional data phase) the callbacks were previously implemented to return b"" (i.e. an empty buffer for the data phase). However this didn't actually work as intended because b"" can't provide a RW buffer (needed for OUT transfers with a data phase to write data into), so actually the endpoint would stall. The symptom was often that the device process the request (if processing it in the SETUP phase when all information was already available), but the host sees the endpoint stall and eventually returns an error. This commit changes the behaviour so returning True from the SETUP phase of a control transfer queues a zero length status response. Signed-off-by: Angus Gratton <angus@redyak.com.au>
* docs/reference/mpyfiles: Document change in .mpy sub-version.Damien George2024-03-28
| | | | Signed-off-by: Damien George <damien@micropython.org>
* docs/library/machine.RTC: Add docs for RTC.memory() method.Amirreza Hamzavi2024-03-26
| | | | | | Co-Authored-By: glenn20 <glenn20@users.noreply.github.com> Signed-off-by: Amirreza Hamzavi <amirrezahamzavi2000@gmail.com>
* py/binary: Support half-float 'e' format in struct pack/unpack.Matthias Urlichs2024-03-20
| | | | | | | | | This commit implements the 'e' half-float format: 10-bit mantissa, 5-bit exponent. It uses native _Float16 if supported by the compiler, otherwise uses custom bitshifting encoding/decoding routines. Signed-off-by: Matthias Urlichs <matthias@urlichs.de> Signed-off-by: Damien George <damien@micropython.org>
* docs/library/rp2.DMA: Add documentation for rp2 DMA support.Nicko van Someren2024-03-19
| | | | Signed-off-by: Nicko van Someren <nicko@nicko.org>
* docs/library/collections: Update deque docs to describe new features.Damien George2024-03-19
| | | | Signed-off-by: Damien George <damien@micropython.org>
* docs/library/openamp: Document the new openamp module.iabdalkader2024-03-15
| | | | Signed-off-by: iabdalkader <i.abdalkader@gmail.com>
* extmod/machine_usb_device: Add support for Python USB devices.Angus Gratton2024-03-15
| | | | | | | | | | | | | This new machine-module driver provides a "USBDevice" singleton object and a shim TinyUSB "runtime" driver that delegates the descriptors and all of the TinyUSB callbacks to Python functions. This allows writing arbitrary USB devices in pure Python. It's also possible to have a base built-in USB device implemented in C (eg CDC, or CDC+MSC) and a Python USB device added on top of that. This work was funded through GitHub Sponsors. Signed-off-by: Angus Gratton <angus@redyak.com.au>
* esp32/network_lan: Add a separate argument to set PHY power pin.robert-hh2024-03-08
| | | | | | | | | | | | | | | | Prior to this commit, the pin defined for power would be used by the esp_idf driver to reset the PHY. That worked, but sometimes the MDIO configuration started before the power was fully settled, leading to an error. With the change in this commit, the power for the PHY is independently enabled in network_lan.c with a 100ms delay to allow the power to settle. A separate define for a reset pin is provided, even if the PHY reset pin is rarely connected. Fixes issue #14013. Signed-off-by: robert-hh <robert@hammelrath.com>
* all: Prune trailing whitespace.Phil Howard2024-03-07
| | | | | | | | | | | | | | | | Prune trailing whitespace across the whole project (almost), done automatically with: grep -IUrl --color "[[:blank:]]$" --exclude-dir=.git --exclude=*.exp |\ xargs sed -i 's/[[:space:]]*$//' Exceptions: - Skip third-party code in lib/ and drivers/cc3100/ - Skip generated code in bluetooth_init_cc2564C_1.5.c - Preserve command output whitespace in docs, eg: docs/esp8266/tutorial/repl.rst Signed-off-by: Phil Howard <phil@gadgetoid.com>
* all: Remove the "STATIC" macro and just use "static" instead.Angus Gratton2024-03-07
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The STATIC macro was introduced a very long time ago in commit d5df6cd44a433d6253a61cb0f987835fbc06b2de. The original reason for this was to have the option to define it to nothing so that all static functions become global functions and therefore visible to certain debug tools, so one could do function size comparison and other things. This STATIC feature is rarely (if ever) used. And with the use of LTO and heavy inline optimisation, analysing the size of individual functions when they are not static is not a good representation of the size of code when fully optimised. So the macro does not have much use and it's simpler to just remove it. Then you know exactly what it's doing. For example, newcomers don't have to learn what the STATIC macro is and why it exists. Reading the code is also less "loud" with a lowercase static. One other minor point in favour of removing it, is that it stops bugs with `STATIC inline`, which should always be `static inline`. Methodology for this commit was: 1) git ls-files | egrep '\.[ch]$' | \ xargs sed -Ei "s/(^| )STATIC($| )/\1static\2/" 2) Do some manual cleanup in the diff by searching for the word STATIC in comments and changing those back. 3) "git-grep STATIC docs/", manually fixed those cases. 4) "rg -t python STATIC", manually fixed codegen lines that used STATIC. This work was funded through GitHub Sponsors. Signed-off-by: Angus Gratton <angus@redyak.com.au>
* docs/library/bluetooth: Add note that ESP32 supports pairing/bonding.Daniël van de Giessen2024-02-29
| | | | | | Pairing and bonding was fixed for the ESP32 in the two previous commits. Signed-off-by: Daniël van de Giessen <daniel@dvdgiessen.nl>
* py/emitglue: Introduce mp_proto_fun_t as a more general mp_raw_code_t.Damien George2024-02-16
| | | | | | | | | | Allows bytecode itself to be used instead of an mp_raw_code_t in the simple and common cases of a bytecode function without any children. This can be used to further reduce frozen code size, and has the potential to optimise other areas like importing. Signed-off-by: Damien George <damien@micropython.org>
* tools/manifestfile.py: Change library search to use a list of paths.Damien George2024-02-08
| | | | | | | | | | | | | | | | | | | This commit changes how library packages are searched for when a manifest file is loaded: there is now simply a list of library paths that is searched in order for the given package. This list defaults to the main directories in micropython-lib, but can be added to -- either appended or prepended -- by using `add_library()`. In particular the way unix-ffi library packages are searched has changed, because the `unix_ffi` argument to `require()` is now removed. Instead, if a build wants to include packages from micropython-lib/unix-ffi, then it must explicitly add this to the list of paths to search using: add_library("unix-ffi", "$(MPY_LIB_DIR)/unix-ffi") Work done in collaboration with Jim Mussared. Signed-off-by: Damien George <damien@micropython.org>
* docs/library/sys.rst: Document implementation.version.releaselevel.Jos Verlinde2024-02-07
| | | | Signed-off-by: Jos Verlinde <jos_verlinde@hotmail.com>
* docs: Use vfs module instead of os.Damien George2024-02-07
| | | | Signed-off-by: Damien George <damien@micropython.org>