Lines Matching refs:pcnt_port

44 #define PCNT_OBJ_CHECK(pcnt_port) { \  argument
45 PCNT_CHECK((pcnt_port < PCNT_PORT_MAX), PCNT_NUM_ERR_STR, ESP_ERR_INVALID_ARG); \
46 PCNT_CHECK((p_pcnt_obj[pcnt_port]), PCNT_DRIVER_ERR_STR, ESP_ERR_INVALID_STATE); \
61 static inline esp_err_t _pcnt_set_mode(pcnt_port_t pcnt_port, pcnt_unit_t unit, pcnt_channel_t chan… in _pcnt_set_mode() argument
63 PCNT_OBJ_CHECK(pcnt_port); in _pcnt_set_mode()
69 pcnt_ll_set_edge_action(p_pcnt_obj[pcnt_port]->hal.dev, unit, channel, pos_mode, neg_mode); in _pcnt_set_mode()
70 pcnt_ll_set_level_action(p_pcnt_obj[pcnt_port]->hal.dev, unit, channel, hctrl_mode, lctrl_mode); in _pcnt_set_mode()
74 static inline esp_err_t _pcnt_set_pin(pcnt_port_t pcnt_port, pcnt_unit_t unit, pcnt_channel_t chann… in _pcnt_set_pin() argument
76 PCNT_OBJ_CHECK(pcnt_port); in _pcnt_set_pin()
86 …esp_rom_gpio_connect_in_signal(pulse_io, pcnt_periph_signals.groups[pcnt_port].units[unit].channel… in _pcnt_set_pin()
93 …esp_rom_gpio_connect_in_signal(ctrl_io, pcnt_periph_signals.groups[pcnt_port].units[unit].channels… in _pcnt_set_pin()
99 static inline esp_err_t _pcnt_get_counter_value(pcnt_port_t pcnt_port, pcnt_unit_t pcnt_unit, int16… in _pcnt_get_counter_value() argument
101 PCNT_OBJ_CHECK(pcnt_port); in _pcnt_get_counter_value()
104 *count = pcnt_ll_get_count(p_pcnt_obj[pcnt_port]->hal.dev, pcnt_unit); in _pcnt_get_counter_value()
108 static inline esp_err_t _pcnt_counter_pause(pcnt_port_t pcnt_port, pcnt_unit_t pcnt_unit) in _pcnt_counter_pause() argument
110 PCNT_OBJ_CHECK(pcnt_port); in _pcnt_counter_pause()
113 pcnt_ll_stop_count(p_pcnt_obj[pcnt_port]->hal.dev, pcnt_unit); in _pcnt_counter_pause()
118 static inline esp_err_t _pcnt_counter_resume(pcnt_port_t pcnt_port, pcnt_unit_t pcnt_unit) in _pcnt_counter_resume() argument
120 PCNT_OBJ_CHECK(pcnt_port); in _pcnt_counter_resume()
123 pcnt_ll_start_count(p_pcnt_obj[pcnt_port]->hal.dev, pcnt_unit); in _pcnt_counter_resume()
128 static inline esp_err_t _pcnt_counter_clear(pcnt_port_t pcnt_port, pcnt_unit_t pcnt_unit) in _pcnt_counter_clear() argument
130 PCNT_OBJ_CHECK(pcnt_port); in _pcnt_counter_clear()
133 pcnt_ll_clear_count(p_pcnt_obj[pcnt_port]->hal.dev, pcnt_unit); in _pcnt_counter_clear()
138 static inline esp_err_t _pcnt_intr_enable(pcnt_port_t pcnt_port, pcnt_unit_t pcnt_unit, bool enable) in _pcnt_intr_enable() argument
140 PCNT_OBJ_CHECK(pcnt_port); in _pcnt_intr_enable()
143 pcnt_ll_enable_intr(p_pcnt_obj[pcnt_port]->hal.dev, 1 << pcnt_unit, enable); in _pcnt_intr_enable()
148 static inline esp_err_t _pcnt_event_enable(pcnt_port_t pcnt_port, pcnt_unit_t unit, pcnt_evt_type_t… in _pcnt_event_enable() argument
150 PCNT_OBJ_CHECK(pcnt_port); in _pcnt_event_enable()
155 pcnt_ll_enable_thres_event(p_pcnt_obj[pcnt_port]->hal.dev, unit, 1, enable); in _pcnt_event_enable()
158 pcnt_ll_enable_thres_event(p_pcnt_obj[pcnt_port]->hal.dev, unit, 0, enable); in _pcnt_event_enable()
161 pcnt_ll_enable_low_limit_event(p_pcnt_obj[pcnt_port]->hal.dev, unit, enable); in _pcnt_event_enable()
164 pcnt_ll_enable_high_limit_event(p_pcnt_obj[pcnt_port]->hal.dev, unit, enable); in _pcnt_event_enable()
167 pcnt_ll_enable_zero_cross_event(p_pcnt_obj[pcnt_port]->hal.dev, unit, enable); in _pcnt_event_enable()
176 static inline esp_err_t _pcnt_set_event_value(pcnt_port_t pcnt_port, pcnt_unit_t unit, pcnt_evt_typ… in _pcnt_set_event_value() argument
178 PCNT_OBJ_CHECK(pcnt_port); in _pcnt_set_event_value()
185 pcnt_ll_set_thres_value(p_pcnt_obj[pcnt_port]->hal.dev, unit, 1, value); in _pcnt_set_event_value()
188 pcnt_ll_set_thres_value(p_pcnt_obj[pcnt_port]->hal.dev, unit, 0, value); in _pcnt_set_event_value()
191 pcnt_ll_set_low_limit_value(p_pcnt_obj[pcnt_port]->hal.dev, unit, value); in _pcnt_set_event_value()
194 pcnt_ll_set_high_limit_value(p_pcnt_obj[pcnt_port]->hal.dev, unit, value); in _pcnt_set_event_value()
202 static inline esp_err_t _pcnt_get_event_value(pcnt_port_t pcnt_port, pcnt_unit_t unit, pcnt_evt_typ… in _pcnt_get_event_value() argument
204 PCNT_OBJ_CHECK(pcnt_port); in _pcnt_get_event_value()
210 *value = pcnt_ll_get_thres_value(p_pcnt_obj[pcnt_port]->hal.dev, unit, 1); in _pcnt_get_event_value()
213 *value = pcnt_ll_get_thres_value(p_pcnt_obj[pcnt_port]->hal.dev, unit, 0); in _pcnt_get_event_value()
216 *value = pcnt_ll_get_low_limit_value(p_pcnt_obj[pcnt_port]->hal.dev, unit); in _pcnt_get_event_value()
219 *value = pcnt_ll_get_high_limit_value(p_pcnt_obj[pcnt_port]->hal.dev, unit); in _pcnt_get_event_value()
227 static inline esp_err_t _pcnt_get_event_status(pcnt_port_t pcnt_port, pcnt_unit_t unit, uint32_t *s… in _pcnt_get_event_status() argument
229 PCNT_OBJ_CHECK(pcnt_port); in _pcnt_get_event_status()
233 *status = pcnt_ll_get_unit_status(p_pcnt_obj[pcnt_port]->hal.dev, unit); in _pcnt_get_event_status()
237 static inline esp_err_t _pcnt_set_filter_value(pcnt_port_t pcnt_port, pcnt_unit_t unit, uint16_t fi… in _pcnt_set_filter_value() argument
239 PCNT_OBJ_CHECK(pcnt_port); in _pcnt_set_filter_value()
242 pcnt_ll_set_glitch_filter_thres(p_pcnt_obj[pcnt_port]->hal.dev, unit, filter_val); in _pcnt_set_filter_value()
246 static inline esp_err_t _pcnt_get_filter_value(pcnt_port_t pcnt_port, pcnt_unit_t unit, uint16_t *f… in _pcnt_get_filter_value() argument
248 PCNT_OBJ_CHECK(pcnt_port); in _pcnt_get_filter_value()
252 *filter_val = (uint16_t)pcnt_ll_get_glitch_filter_thres(p_pcnt_obj[pcnt_port]->hal.dev, unit); in _pcnt_get_filter_value()
256 static inline esp_err_t _pcnt_filter_enable(pcnt_port_t pcnt_port, pcnt_unit_t unit, bool enable) in _pcnt_filter_enable() argument
258 PCNT_OBJ_CHECK(pcnt_port); in _pcnt_filter_enable()
260 pcnt_ll_enable_glitch_filter(p_pcnt_obj[pcnt_port]->hal.dev, unit, enable); in _pcnt_filter_enable()
264 static inline esp_err_t _pcnt_isr_handler_add(pcnt_port_t pcnt_port, pcnt_unit_t unit, void(*isr_ha… in _pcnt_isr_handler_add() argument
266 PCNT_OBJ_CHECK(pcnt_port); in _pcnt_isr_handler_add()
282 static inline esp_err_t _pcnt_isr_handler_remove(pcnt_port_t pcnt_port, pcnt_unit_t unit) in _pcnt_isr_handler_remove() argument
284 PCNT_OBJ_CHECK(pcnt_port); in _pcnt_isr_handler_remove()
303 pcnt_port_t pcnt_port = (pcnt_port_t)arg; in pcnt_intr_service() local
304 status = pcnt_ll_get_intr_status(p_pcnt_obj[pcnt_port]->hal.dev); in pcnt_intr_service()
305 pcnt_ll_clear_intr_status(p_pcnt_obj[pcnt_port]->hal.dev, status); in pcnt_intr_service()
317 static inline esp_err_t _pcnt_isr_service_install(pcnt_port_t pcnt_port, int intr_alloc_flags) in _pcnt_isr_service_install() argument
319 PCNT_OBJ_CHECK(pcnt_port); in _pcnt_isr_service_install()
327 …ret = pcnt_isr_register(pcnt_intr_service, (void *)pcnt_port, intr_alloc_flags, &pcnt_isr_service); in _pcnt_isr_service_install()
338 static inline esp_err_t _pcnt_isr_service_uninstall(pcnt_port_t pcnt_port) in _pcnt_isr_service_uninstall() argument
340 PCNT_OBJ_CHECK(pcnt_port); in _pcnt_isr_service_uninstall()
351 static inline esp_err_t _pcnt_unit_config(pcnt_port_t pcnt_port, const pcnt_config_t *pcnt_config) in _pcnt_unit_config() argument
353 PCNT_OBJ_CHECK(pcnt_port); in _pcnt_unit_config()
368 periph_module_reset(pcnt_periph_signals.groups[pcnt_port].module); in _pcnt_unit_config()
371 periph_module_enable(pcnt_periph_signals.groups[pcnt_port].module); in _pcnt_unit_config()
373 _pcnt_set_event_value(pcnt_port, unit, PCNT_EVT_H_LIM, pcnt_config->counter_h_lim); in _pcnt_unit_config()
374 _pcnt_set_event_value(pcnt_port, unit, PCNT_EVT_L_LIM, pcnt_config->counter_l_lim); in _pcnt_unit_config()
376 _pcnt_event_enable(pcnt_port, unit, PCNT_EVT_H_LIM, false); in _pcnt_unit_config()
377 _pcnt_event_enable(pcnt_port, unit, PCNT_EVT_L_LIM, false); in _pcnt_unit_config()
378 _pcnt_event_enable(pcnt_port, unit, PCNT_EVT_ZERO, false); in _pcnt_unit_config()
379 _pcnt_filter_enable(pcnt_port, unit, false); in _pcnt_unit_config()
381 …_pcnt_set_mode(pcnt_port, unit, channel, pcnt_config->pos_mode, pcnt_config->neg_mode, pcnt_config… in _pcnt_unit_config()
383 _pcnt_set_pin(pcnt_port, unit, channel, input_io, ctrl_io); in _pcnt_unit_config()
387 esp_err_t pcnt_deinit(pcnt_port_t pcnt_port) in pcnt_deinit() argument
389 PCNT_OBJ_CHECK(pcnt_port); in pcnt_deinit()
391 heap_caps_free(p_pcnt_obj[pcnt_port]); in pcnt_deinit()
392 p_pcnt_obj[pcnt_port] = NULL; in pcnt_deinit()
396 esp_err_t pcnt_init(pcnt_port_t pcnt_port) in pcnt_init() argument
398 PCNT_CHECK((pcnt_port < PCNT_PORT_MAX), PCNT_NUM_ERR_STR, ESP_ERR_INVALID_ARG); in pcnt_init()
399 … PCNT_CHECK((p_pcnt_obj[pcnt_port]) == NULL, "pcnt driver already initted", ESP_ERR_INVALID_STATE); in pcnt_init()
401 … p_pcnt_obj[pcnt_port] = (pcnt_obj_t *)heap_caps_calloc(1, sizeof(pcnt_obj_t), MALLOC_CAP_DEFAULT); in pcnt_init()
403 if (p_pcnt_obj[pcnt_port] == NULL) { in pcnt_init()
408 pcnt_hal_init(&(p_pcnt_obj[pcnt_port]->hal), pcnt_port); in pcnt_init()