Merge pull request #3710 from jepler/esp32-i2c-crash
esp32: Two random changes that also fixed the I2C crash for me
This commit is contained in:
commit
18513dedd1
@ -77,7 +77,9 @@ void pulsein_reset(void) {
|
|||||||
for (size_t i = 0; i < RMT_CHANNEL_MAX; i++) {
|
for (size_t i = 0; i < RMT_CHANNEL_MAX; i++) {
|
||||||
handles[i] = NULL;
|
handles[i] = NULL;
|
||||||
}
|
}
|
||||||
supervisor_disable_tick();
|
if (refcount != 0) {
|
||||||
|
supervisor_disable_tick();
|
||||||
|
}
|
||||||
refcount = 0;
|
refcount = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -122,8 +124,10 @@ void common_hal_pulseio_pulsein_construct(pulseio_pulsein_obj_t* self, const mcu
|
|||||||
|
|
||||||
// start RMT RX, and enable ticks so the core doesn't turn off.
|
// start RMT RX, and enable ticks so the core doesn't turn off.
|
||||||
rmt_rx_start(channel, true);
|
rmt_rx_start(channel, true);
|
||||||
supervisor_enable_tick();
|
|
||||||
refcount++;
|
refcount++;
|
||||||
|
if (refcount == 1) {
|
||||||
|
supervisor_enable_tick();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
bool common_hal_pulseio_pulsein_deinited(pulseio_pulsein_obj_t* self) {
|
bool common_hal_pulseio_pulsein_deinited(pulseio_pulsein_obj_t* self) {
|
||||||
|
@ -191,14 +191,14 @@ uint32_t port_get_saved_word(void) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
uint64_t port_get_raw_ticks(uint8_t* subticks) {
|
uint64_t port_get_raw_ticks(uint8_t* subticks) {
|
||||||
struct timeval tv_now;
|
// Convert microseconds to subticks of 1/32768 seconds
|
||||||
gettimeofday(&tv_now, NULL);
|
// 32768/1000000 = 64/15625 in lowest terms
|
||||||
// convert usec back to ticks
|
// this arithmetic overflows after 570 years
|
||||||
uint64_t all_subticks = (uint64_t)(tv_now.tv_usec * 2) / 71;
|
int64_t all_subticks = esp_timer_get_time() * 512 / 15625;
|
||||||
if (subticks != NULL) {
|
if (subticks != NULL) {
|
||||||
*subticks = all_subticks % 32;
|
*subticks = all_subticks % 32;
|
||||||
}
|
}
|
||||||
return (uint64_t)tv_now.tv_sec * 1024L + all_subticks / 32;
|
return all_subticks / 32;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Enable 1/1024 second tick.
|
// Enable 1/1024 second tick.
|
||||||
|
Loading…
Reference in New Issue
Block a user