modify tick.c to simplify - remove interupt disable from common_hal_pulseio_pulsein_resume
This commit is contained in:
parent
16bb40b110
commit
fe738598da
@ -283,13 +283,9 @@ void common_hal_pulseio_pulsein_resume(pulseio_pulsein_obj_t* self,
|
||||
if (trigger_duration > 0) {
|
||||
gpio_set_pin_pull_mode(self->pin, GPIO_PULL_OFF);
|
||||
gpio_set_pin_direction(self->pin, GPIO_DIRECTION_OUT);
|
||||
if(trigger_duration < 1000 ){ // only disable interrupts for < 1 ms
|
||||
common_hal_mcu_disable_interrupts();
|
||||
}
|
||||
gpio_set_pin_level(self->pin, !self->idle_state);
|
||||
common_hal_mcu_delay_us((uint32_t)trigger_duration);
|
||||
gpio_set_pin_level(self->pin, self->idle_state);
|
||||
common_hal_mcu_enable_interrupts();
|
||||
}
|
||||
|
||||
// Reconfigure the pin and make sure its set to detect the first edge.
|
||||
|
@ -60,25 +60,14 @@ void tick_delay(uint32_t us) {
|
||||
uint32_t ticks_per_us = common_hal_mcu_processor_get_frequency() / 1000 / 1000;
|
||||
uint32_t us_until_next_tick = SysTick->VAL / ticks_per_us;
|
||||
uint32_t start_tick;
|
||||
while (us > 1000) {
|
||||
// check if interrupts are disabled
|
||||
if(__get_PRIMASK())
|
||||
return; // if not just return
|
||||
while (us > us_until_next_tick) {
|
||||
start_tick=SysTick->VAL; // wait for SysTick->VAL to RESET
|
||||
while (SysTick->VAL < start_tick) {}
|
||||
us -= us_until_next_tick;
|
||||
us_until_next_tick = 1000;
|
||||
}
|
||||
if(us&&(us < us_until_next_tick)){
|
||||
while (SysTick->VAL > ((us_until_next_tick - us) * ticks_per_us)) {}
|
||||
}
|
||||
else {
|
||||
start_tick=SysTick->VAL; // wait for SysTick->VAL to RESET
|
||||
while (SysTick->VAL < start_tick) {}
|
||||
us -= us_until_next_tick;
|
||||
if(us){
|
||||
while (SysTick->VAL > ((1000 - us) * ticks_per_us)) {}
|
||||
}
|
||||
while (SysTick->VAL > ((us_until_next_tick - us) * ticks_per_us)) {}
|
||||
}
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user