/*! * \file xc_drv_qdec.h * * \brief The header of xc_drv_qdec.c * * \copyright Revised BSD License, see section \ref LICENSE. * * \code * * _ __ _ ________ _ * | |/ /(_)___ / ____/ /_ (_)___ * | // / __ \/ / / __ \/ / __ \ * / |/ / / / / /___/ / / / / /_/ / * /_/|_/_/_/ /_/\____/_/ /_/_/ .___/ * /_/ * (C) 2022-2025 XinChip * * \endcode * * \author ( XinChip ) Alex-J * * \author ( XinChip ) */ #ifndef _XC_DRV_QDEC_H_ #define _XC_DRV_QDEC_H_ /*----------------------------------------------------------------------------------- INCLUDE HEADE FILES ------------------------------------------------------------------------------------*/ #include #include #include "xc6xxx.h" /*------------------------------------------------------------------------------------ Macros -------------------------------------------------------------------------------------*/ /*------------------------------------------------------------------------------------ TypeDef -------------------------------------------------------------------------------------*/ typedef enum { QDEC_DIVIDE_DIV_1 = 0, QDEC_DIVIDE_DIV_2 = 1, QDEC_DIVIDE_DIV_4 = 2, QDEC_DIVIDE_DIV_8 = 3, QDEC_DIVIDE_DIV_16 = 4, QDEC_DIVIDE_DIV_32 = 5, QDEC_DIVIDE_DIV_64 = 6, QDEC_DIVIDE_DIV_128 = 7, QDEC_DIVIDE_DIV_256 = 8, QDEC_DIVIDE_DIV_512 = 9, QDEC_DIVIDE_DIV_1024 = 10, QDEC_DIVIDE_DIV_2048 = 11, QDEC_DIVIDE_DIV_4096 = 12, QDEC_DIVIDE_DIV_8192 = 13, QDEC_DIVIDE_DIV_16384 = 14, QDEC_DIVIDE_DIV_32768 = 15, QDEC_DIVIDE_DIV_65536 = 16, QDEC_DIVIDE_DIV_131072 = 17, QDEC_DIVIDE_DIV_262144 = 18, QDEC_DIVIDE_DIV_524288 = 19, QDEC_DIVIDE_DIV_1048576 = 20 } eSampleDivide; typedef enum { QDEC_PTS_NUM_5 = 0, QDEC_PTS_NUM_10 = 1, QDEC_PTS_NUM_40 = 2, QDEC_PTS_NUM_80 = 3, QDEC_PTS_NUM_120 = 4, QDEC_PTS_NUM_160 = 5, QDEC_PTS_NUM_200 = 6, QDEC_PTS_NUM_240 = 7, QDEC_PTS_NUM_280 = 8, QDEC_PTS_NUM_320 = 9, QDEC_PTS_NUM_360 = 10, QDEC_PTS_NUM_400 = 11 } ePtsNum; typedef enum { QDEC_DB_SAMP_DIV_1 = 0, QDEC_DB_SAMP_DIV_2 = 1, QDEC_DB_SAMP_DIV_4 = 2, QDEC_DB_SAMP_DIV_8 = 3, QDEC_DB_SAMP_DIV_16 = 4, QDEC_DB_SAMP_DIV_32 = 5, QDEC_DB_SAMP_DIV_64 = 6 } eDBSampDiv; typedef struct { uint8_t auto_clr_en; uint8_t single_sample_rst_en; uint8_t db_filter_en; eSampleDivide acc_sample_div; ePtsNum num_pts_sampled; eDBSampDiv db_sample_div; } Qdec_InitCfg_t; /*------------------------------------------------------------------------------------ Global Variables -------------------------------------------------------------------------------------*/ /*------------------------------------------------------------------------------------ Exported Functions -------------------------------------------------------------------------------------*/ void xc_qdec_init(Qdec_InitCfg_t *init_cfg); void xc_qdec_enable(void); void xc_qdec_disable(void); void xc_qdec_start(void); void xc_qdec_stop(void); #endif // _XC_DRV_AOTIMER_H_