mirror of
https://github.com/micropython/micropython.git
synced 2026-01-06 04:00:28 +01:00
MicroPython currently runs on core 0 of the esp32. Calling rmt_driver_install will mean that the RMT interrupt handler is also serviced on core 0. This can lead to glitches in the RMT output if WiFi is enabled (for esp32.RMT and machine.bitstream). This patch calls rmt_driver_install on core 1, ensuring that the RMT interrupt handler is serviced on core 1. This prevents glitches. Fixes issue #8161. Signed-off-by: Damien George <damien@micropython.org>
40 lines
994 B
C
40 lines
994 B
C
#ifndef MICROPY_INCLUDED_ESP32_MODESP32_H
|
|
#define MICROPY_INCLUDED_ESP32_MODESP32_H
|
|
|
|
#define RTC_VALID_EXT_PINS \
|
|
( \
|
|
(1ll << 0) | \
|
|
(1ll << 2) | \
|
|
(1ll << 4) | \
|
|
(1ll << 12) | \
|
|
(1ll << 13) | \
|
|
(1ll << 14) | \
|
|
(1ll << 15) | \
|
|
(1ll << 25) | \
|
|
(1ll << 26) | \
|
|
(1ll << 27) | \
|
|
(1ll << 32) | \
|
|
(1ll << 33) | \
|
|
(1ll << 34) | \
|
|
(1ll << 35) | \
|
|
(1ll << 36) | \
|
|
(1ll << 37) | \
|
|
(1ll << 38) | \
|
|
(1ll << 39) \
|
|
)
|
|
|
|
#define RTC_LAST_EXT_PIN 39
|
|
#define RTC_IS_VALID_EXT_PIN(pin_id) ((1ll << (pin_id)) & RTC_VALID_EXT_PINS)
|
|
|
|
extern const mp_obj_type_t esp32_nvs_type;
|
|
extern const mp_obj_type_t esp32_partition_type;
|
|
extern const mp_obj_type_t esp32_rmt_type;
|
|
extern const mp_obj_type_t esp32_ulp_type;
|
|
|
|
// Reserve the last channel for machine.bitstream.
|
|
#define MICROPY_HW_ESP32_RMT_CHANNEL_BITSTREAM (RMT_CHANNEL_MAX - 1)
|
|
|
|
esp_err_t rmt_driver_install_core1(uint8_t channel_id);
|
|
|
|
#endif // MICROPY_INCLUDED_ESP32_MODESP32_H
|