Fix: add glitch filter to pcnt

main
rkcf 2023-02-07 18:41:50 -06:00
parent 58702666f2
commit 8f1add76b8
1 changed files with 9 additions and 3 deletions

View File

@ -15,8 +15,8 @@
#define PCNT_B_PIN 2 /* Rotary Encoder B Pin */
/* Pulse Count Settings */
#define PCNT_HIGH_LIMIT 100
#define PCNT_LOW_LIMIT -100
#define PCNT_HIGH_LIMIT 100 /* 100 total steps */
#define PCNT_LOW_LIMIT -1
static QueueHandle_t pcnt_queue = NULL;
@ -42,6 +42,12 @@ void app_main(void){
pcnt_unit_handle_t pcnt_unit = NULL;
ESP_ERROR_CHECK(pcnt_new_unit(&pcnt_unit_config, &pcnt_unit));
/* Setup glitch filter */
pcnt_glitch_filter_config_t filter_config = {
.max_glitch_ns = 1000
};
ESP_ERROR_CHECK(pcnt_unit_set_glitch_filter(pcnt_unit, &filter_config));
/* Configure PCNT A & B channels and get handles */
ESP_LOGI(TAG, "Setting up Pulse Counter Channels");
pcnt_chan_config_t pcnt_chan_a_config = {
@ -66,7 +72,7 @@ void app_main(void){
/* Install watch points */
ESP_LOGI(TAG, "Installing watch points and callback handler");
int watch_points[] = {PCNT_LOW_LIMIT, -50, 0, 50, PCNT_HIGH_LIMIT};
int watch_points[] = {PCNT_LOW_LIMIT, 1, PCNT_HIGH_LIMIT};
for (size_t i = 0; i < sizeof(watch_points) / sizeof(watch_points[0]); i++) {
ESP_ERROR_CHECK(pcnt_unit_add_watch_point(pcnt_unit, watch_points[i]));
}