Skip to content

Commit ee87ac0

Browse files
authored
Merge pull request #10470 from bill88t/revert-10397
Revert #10397
2 parents f004816 + 8f54e33 commit ee87ac0

File tree

1 file changed

+6
-16
lines changed

1 file changed

+6
-16
lines changed

ports/espressif/common-hal/pulseio/PulseIn.c

Lines changed: 6 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -80,9 +80,8 @@ void common_hal_pulseio_pulsein_construct(pulseio_pulsein_obj_t *self, const mcu
8080
}
8181
// We add one to the maxlen version to ensure that two symbols at lease are
8282
// captured because we may skip the first portion of a symbol.
83-
self->raw_symbols_size = (maxlen / 2 + 1) * sizeof(rmt_symbol_word_t);
84-
// RMT DMA mode cannot access PSRAM -> ensure raw_symbols is in internal ram
85-
self->raw_symbols = (rmt_symbol_word_t *)port_malloc(self->raw_symbols_size, true);
83+
self->raw_symbols_size = MIN(64, maxlen / 2 + 1) * sizeof(rmt_symbol_word_t);
84+
self->raw_symbols = (rmt_symbol_word_t *)m_malloc_without_collect(self->raw_symbols_size);
8685
if (self->raw_symbols == NULL) {
8786
m_free(self->buffer);
8887
m_malloc_fail(self->raw_symbols_size);
@@ -110,26 +109,17 @@ void common_hal_pulseio_pulsein_construct(pulseio_pulsein_obj_t *self, const mcu
110109
.clk_src = RMT_CLK_SRC_DEFAULT,
111110
// 2 us resolution so we can capture 65ms pulses. The RMT period is only 15 bits.
112111
.resolution_hz = 1000000 / 2,
113-
.mem_block_symbols = self->raw_symbols_size,
114-
.flags.with_dma = 1
112+
.mem_block_symbols = SOC_RMT_MEM_WORDS_PER_CHANNEL,
115113
};
116-
// If we fail here, the self->buffer will be garbage collected.
117-
esp_err_t result = rmt_new_rx_channel(&config, &self->channel);
118-
if (result != ESP_OK) {
119-
port_free(self->raw_symbols);
120-
raise_esp_error(result);
121-
}
114+
// If we fail here, the buffers allocated above will be garbage collected.
115+
CHECK_ESP_RESULT(rmt_new_rx_channel(&config, &self->channel));
122116

123117
rmt_rx_event_callbacks_t rx_callback = {
124118
.on_recv_done = _done_callback
125119
};
126120
rmt_rx_register_event_callbacks(self->channel, &rx_callback, self);
127121
rmt_enable(self->channel);
128-
result = rmt_receive(self->channel, self->raw_symbols, self->raw_symbols_size, &rx_config);
129-
if (result != ESP_OK) {
130-
port_free(self->raw_symbols);
131-
raise_esp_error(result);
132-
}
122+
rmt_receive(self->channel, self->raw_symbols, self->raw_symbols_size, &rx_config);
133123
}
134124

135125
bool common_hal_pulseio_pulsein_deinited(pulseio_pulsein_obj_t *self) {

0 commit comments

Comments
 (0)