3 ms·
I tried micropython on an ESP32-S3. On one hand, it's just amazing in a lot of regards. Writing BT with aioble is a breeze (can't say that about ESP-IDF). On th
by Scene_Cast2 2y ago
I tried micropython on an ESP32-S3. On one hand, it's just amazing in a lot of regards. Writing BT with aioble is a breeze (can't say that about ESP-IDF). On the other hand, it's limited. No dual core support, no hardware interrupts, no enums... Dual core support is needed for anything real time at multi-kHz together with BT (BT takes over the core for about half a millisecond when sending anything).
The saving grace is that modifying or adding functionality to micropython is pretty straight forward. It's just a FreeRTOS app, the organization is intuitive, the code is fairly short. Anything performance heavy can be written in C and called from micropython (same idea as torch or numpy).
- blt 2y agono hardware interrupts? that seems like a big limitation for a microcontroller environment.
- Scene_Cast2 2y agoIt only supports hardware interrupts on some platforms, with some pretty hefty limitations (not being able to allocate memory means that a lot of Python stuff is unavailable). I timed the "soft interrupts", those triggered within 80 or so microseconds IIRC.
- jononor 2y agoMicroPython supports interrupts. But on some platform, like ESP32, the callback is scheduled. Preemption is still used, but it adds some microseconds and the delay is a bit variable. So it will work for some things, like reacting to a interrupt from an I2C sensor etc, or button push. But probably not good enough for a high speed protocol (so better use peripherals for that, like RMT in ESP32).