renamed QDEC1 to QDEC0, misc...
This commit is contained in:
parent
7b8e263f8c
commit
dde47ff1ab
|
@ -39,13 +39,18 @@
|
|||
static void serve_interrupt(QEIDriver *qeip) {
|
||||
NRF_QDEC_Type *qdec = qeip->qdec;
|
||||
|
||||
/* Accumulator overflowed
|
||||
*/
|
||||
if (qdec->EVENTS_ACCOF) {
|
||||
qdec->EVENTS_ACCOF = 0;
|
||||
|
||||
qeip->overflowed++;
|
||||
if (qeip->config->overflowed_cb)
|
||||
qeip->config->overflowed_cb(qeip);
|
||||
}
|
||||
|
||||
|
||||
/* Report ready
|
||||
*/
|
||||
if (qdec->EVENTS_REPORTRDY) {
|
||||
qdec->EVENTS_REPORTRDY = 0;
|
||||
|
||||
|
@ -130,7 +135,7 @@ static void serve_interrupt(QEIDriver *qeip) {
|
|||
/**
|
||||
* @brief QEID1 driver identifier.
|
||||
*/
|
||||
#if NRF51_QEI_USE_QDEC1 || defined(__DOXYGEN__)
|
||||
#if NRF51_QEI_USE_QDEC0 || defined(__DOXYGEN__)
|
||||
QEIDriver QEID1;
|
||||
#endif
|
||||
|
||||
|
@ -147,7 +152,7 @@ QEIDriver QEID1;
|
|||
/* Driver interrupt handlers. */
|
||||
/*===========================================================================*/
|
||||
|
||||
#if NRF51_QEI_USE_QDEC1 == TRUE
|
||||
#if NRF51_QEI_USE_QDEC0 == TRUE
|
||||
/**
|
||||
* @brief Quadrature decoder vector (QDEC)
|
||||
*
|
||||
|
@ -172,7 +177,7 @@ OSAL_IRQ_HANDLER(Vector88) {
|
|||
*/
|
||||
void qei_lld_init(void) {
|
||||
|
||||
#if NRF51_QEI_USE_QDEC1
|
||||
#if NRF51_QEI_USE_QDEC0 == TRUE
|
||||
/* Driver initialization.*/
|
||||
qeiObjectInit(&QEID1);
|
||||
QEID1.qdec = NRF_QDEC;
|
||||
|
@ -201,9 +206,9 @@ void qei_lld_start(QEIDriver *qeip) {
|
|||
// Set interrupt masks and enable interrupt
|
||||
qdec->INTENSET = QDEC_INTENSET_REPORTRDY_Msk |
|
||||
QDEC_INTENSET_ACCOF_Msk;
|
||||
#if NRF51_QEI_USE_QDEC1
|
||||
#if NRF51_QEI_USE_QDEC0 == TRUE
|
||||
if (&QEID1 == qeip) {
|
||||
nvicEnableVector(QDEC_IRQn, NRF51_QEI_IRQ_PRIORITY);
|
||||
nvicEnableVector(QDEC_IRQn, NRF51_QEI_QDEC0_IRQ_PRIORITY);
|
||||
}
|
||||
#endif
|
||||
|
||||
|
@ -212,8 +217,7 @@ void qei_lld_start(QEIDriver *qeip) {
|
|||
qdec->PSELB = PAL_PAD(cfg->phase_b);
|
||||
|
||||
// Select (optional) pin for LED, and configure it
|
||||
qdec->PSELLED = (cfg->led == PAL_NOLINE) ? (uint32_t)-1
|
||||
: PAL_PAD(cfg->led);
|
||||
qdec->PSELLED = PAL_PAD(cfg->led);
|
||||
qdec->LEDPOL = ((cfg->led_polarity == QEI_LED_POLARITY_LOW)
|
||||
? QDEC_LEDPOL_LEDPOL_ActiveLow
|
||||
: QDEC_LEDPOL_LEDPOL_ActiveHigh)
|
||||
|
@ -257,7 +261,7 @@ void qei_lld_stop(QEIDriver *qeip) {
|
|||
if (qeip->state == QEI_READY) {
|
||||
qdec->TASKS_STOP = 1;
|
||||
qdec->ENABLE = 0;
|
||||
#if NRF51_QEI_USE_QDEC1
|
||||
#if NRF51_QEI_USE_QDEC0 == TRUE
|
||||
if (&QEID1 == qeip) {
|
||||
nvicDisableVector(QDEC_IRQn);
|
||||
}
|
||||
|
|
|
@ -56,15 +56,15 @@
|
|||
* @details If set to @p TRUE the support for QEID1 is included.
|
||||
* @note The default is @p FALSE.
|
||||
*/
|
||||
#if !defined(NRF51_QEI_USE_QDEC1) || defined(__DOXYGEN__)
|
||||
#define NRF51_QEI_USE_QDEC1 FALSE
|
||||
#if !defined(NRF51_QEI_USE_QDEC0) || defined(__DOXYGEN__)
|
||||
#define NRF51_QEI_USE_QDEC0 FALSE
|
||||
#endif
|
||||
|
||||
/**
|
||||
* @brief QEID interrupt priority level setting.
|
||||
*/
|
||||
#if !defined(NRF51_QEI_IRQ_PRIORITY) || defined(__DOXYGEN__)
|
||||
#define NRF51_QEI_IRQ_PRIORITY 2
|
||||
#if !defined(NRF51_QEI_QDEC0_IRQ_PRIORITY) || defined(__DOXYGEN__)
|
||||
#define NRF51_QEI_QDEC0_IRQ_PRIORITY 2
|
||||
#endif
|
||||
/** @} */
|
||||
|
||||
|
@ -72,11 +72,16 @@
|
|||
/* Derived constants and error checks. */
|
||||
/*===========================================================================*/
|
||||
|
||||
#if NRF51_QEI_USE_QDEC1 && \
|
||||
!OSAL_IRQ_IS_VALID_PRIORITY(NRF51_QEI_IRQ_PRIORITY)
|
||||
#error "Invalid IRQ priority assigned to QDEC1"
|
||||
#if NRF51_QEI_USE_QDEC0 && \
|
||||
!OSAL_IRQ_IS_VALID_PRIORITY(NRF51_QEI_QDEC0_IRQ_PRIORITY)
|
||||
#error "Invalid IRQ priority assigned to QDEC0"
|
||||
#endif
|
||||
|
||||
#if NRF51_QEI_USE_QDEC0 == FALSE
|
||||
#error "Requesting QEI driver, but no QDEC peripheric attached"
|
||||
#endif
|
||||
|
||||
|
||||
/*===========================================================================*/
|
||||
/* Driver data structures and types. */
|
||||
/*===========================================================================*/
|
||||
|
@ -277,6 +282,7 @@ struct QEIDriver {
|
|||
#endif
|
||||
/* End of the mandatory fields.*/
|
||||
/**
|
||||
* @brief Counter
|
||||
*/
|
||||
qeicnt_t count;
|
||||
/**
|
||||
|
@ -285,7 +291,7 @@ struct QEIDriver {
|
|||
*/
|
||||
uint32_t overflowed;
|
||||
/**
|
||||
* @brief Pointer to the ADCx registers block.
|
||||
* @brief Pointer to the QDECx registers block.
|
||||
*/
|
||||
NRF_QDEC_Type *qdec;
|
||||
};
|
||||
|
@ -305,11 +311,25 @@ struct QEIDriver {
|
|||
#define qei_lld_get_count(qeip) ((qeip)->count)
|
||||
|
||||
|
||||
/**
|
||||
* @brief Set the counter value.
|
||||
*
|
||||
* @param[in] qeip pointer to the @p QEIDriver object
|
||||
* @param[in] value counter value
|
||||
*
|
||||
* @notapi
|
||||
*/
|
||||
#define qei_lld_set_count(qeip, value) \
|
||||
do { \
|
||||
(qeip)->count = value; \
|
||||
} while(0)
|
||||
|
||||
|
||||
/*===========================================================================*/
|
||||
/* External declarations. */
|
||||
/*===========================================================================*/
|
||||
|
||||
#if NRF51_QEI_USE_QDEC1 && !defined(__DOXYGEN__)
|
||||
#if NRF51_QEI_USE_QDEC0 && !defined(__DOXYGEN__)
|
||||
extern QEIDriver QEID1;
|
||||
#endif
|
||||
|
||||
|
|
Loading…
Reference in New Issue