diff --git a/lib/pulse_reader/pulse_reader.c b/lib/pulse_reader/pulse_reader.c index 20f993844..64fde7fc9 100644 --- a/lib/pulse_reader/pulse_reader.c +++ b/lib/pulse_reader/pulse_reader.c @@ -137,9 +137,9 @@ void pulse_reader_start(PulseReader* signal) { /* capture current timer */ signal->pos = 0; - signal->start_level = furi_hal_gpio_read(signal->gpio); signal->timer_value = TIM2->CNT; signal->gpio_mask = signal->gpio->pin; + signal->gpio_value = signal->gpio->port->IDR & signal->gpio_mask; /* now set up DMA with these settings */ LL_DMA_Init(DMA1, signal->dma_channel, &signal->dma_config_timer); diff --git a/lib/pulse_reader/pulse_reader.h b/lib/pulse_reader/pulse_reader.h index 564bf1063..b4e6bca57 100644 --- a/lib/pulse_reader/pulse_reader.h +++ b/lib/pulse_reader/pulse_reader.h @@ -29,7 +29,6 @@ typedef enum { } PulseReaderUnit; typedef struct { - bool start_level; uint32_t* timer_buffer; uint32_t* gpio_buffer; uint32_t size; @@ -65,7 +64,8 @@ void pulse_reader_free(PulseReader* signal); /** Start signal capturing * - * Initializes DMA1, TIM2 and DMAMUX_REQ_GEN_0 to automatically capture timer values + * Initializes DMA1, TIM2 and DMAMUX_REQ_GEN_0 to automatically capture timer values. + * Ensure that interrupts are always enabled, as the used EXTI line is handled as one. * * @param[in] signal previously allocated PulseReader object. */