-
Home
-
doc
-
support
-
driver
-
qei
qei.h
View on Github
/**
* @file qei.h
* @author Sebastien CAUX (sebcaux)
* @copyright Robotips 2016-2017
* @copyright UniSwarm 2018
*
* @date April 18, 2016, 22:33 PM
*
* @brief Quadrature Encoder Interface support driver
*/
#ifndef QEI_H
#define QEI_H
#include <driver/device.h>
// ======= specific include =======
#if defined(ARCHI_pic24f) || defined(ARCHI_pic24fj) || defined(ARCHI_pic24hj) \
|| defined(ARCHI_dspic33fj)
#include "qei_pic24f_dspic33f.h"
#elif defined(ARCHI_pic24ep) || defined(ARCHI_dspic33ep) || defined(ARCHI_dspic33ev) \
|| defined(ARCHI_dspic33ch) || defined(ARCHI_dspic33ck)
#include "qei_pic24e_dspic33e.h"
#elif defined(ARCHI_dspic30f)
#include "qei_dspic30f.h"
#elif defined(ARCHI_pic32mk)
#include "qei_pic32mk.h"
#else
#warning Unsuported ARCHI
#endif
#ifdef QEI_32B
typedef uint32_t qei_type;
#else
typedef uint16_t qei_type;
#endif
// ====== device assignation ======
#define qei(d) MKDEV(DEV_CLASS_QEI, (d)-1)
rt_dev_t qei_getFreeDevice();
int qei_open(rt_dev_t device);
int qei_close(rt_dev_t device);
// ==== device enable/disable =====
int qei_enable(rt_dev_t device);
int qei_disable(rt_dev_t device);
// ======== device settings =======
#define QEI_AB_INV 0x02
#define QEI_FILTER 0x04
#define QEI_I_INV 0x08
#define QEI_I_EN 0x10
#define QEI_X4MODE 0x20
int qei_setConfig(rt_dev_t device, uint16_t config);
// ======= device write/read ======
qei_type qei_getValue(rt_dev_t device);
int qei_setHomeValue(rt_dev_t device, qei_type home);
#endif // QEI_H