ZX2D10GE01R-V4848_Arduino

This commit is contained in:
Eric
2023-03-19 11:16:59 -07:00
parent a717c7570c
commit 63a5152bfa
5 changed files with 358 additions and 0 deletions

View File

@@ -0,0 +1,44 @@
#include "freertos/FreeRTOS.h"
#include "freertos/task.h"
#include "freertos/queue.h"
#include "driver/pcnt.h"
#define PCNT_H_LIM_VAL INT16_MAX
#define PCNT_L_LIM_VAL INT16_MIN
static pcnt_unit_t unit = PCNT_UNIT_0;
void mt8901_init(int16_t sig_pin, int16_t dir_pin) {
/* Prepare configuration for the PCNT unit */
pcnt_config_t pcnt_config;
pcnt_config.pulse_gpio_num = sig_pin;
pcnt_config.ctrl_gpio_num = dir_pin;
pcnt_config.channel = PCNT_CHANNEL_0;
pcnt_config.unit = unit;
pcnt_config.pos_mode = PCNT_COUNT_DEC;
pcnt_config.neg_mode = PCNT_COUNT_INC;
pcnt_config.lctrl_mode = PCNT_MODE_REVERSE;
pcnt_config.hctrl_mode = PCNT_MODE_KEEP;
pcnt_config.counter_h_lim = PCNT_H_LIM_VAL;
pcnt_config.counter_l_lim = PCNT_L_LIM_VAL;
/* Initialize PCNT unit */
pcnt_unit_config(&pcnt_config);
/* Configure and enable the input filter */
pcnt_set_filter_value(unit, 1000);
pcnt_filter_enable(unit);
/* Initialize PCNT's counter */
pcnt_counter_pause(unit);
pcnt_counter_clear(unit);
/* Everything is set up, now go to counting */
pcnt_counter_resume(unit);
}
int16_t mt8901_get_count() {
int16_t count = 0;
pcnt_get_counter_value(unit, &count);
return count;
}