EICU. Cosmetical improvements.

This commit is contained in:
barthess 2015-03-03 21:07:44 +03:00
parent 75688209c2
commit 28ab149cf7
2 changed files with 19 additions and 21 deletions

View File

@ -32,6 +32,16 @@
/*===========================================================================*/
/* Driver local definitions. */
/*===========================================================================*/
/**
* @brief Inverts the polarity for the given channel.
*
* @param[in] eicup Pointer to the EICUDriver object.
* @param[in] channel The timer channel to invert.
*
* @notapi
*/
#define eicu_lld_invert_polarity(eicup, channel) \
(eicup)->tim->CCER ^= ((uint16_t)(STM32_TIM_CCER_CC1P << ((channel) * 4)))
/*===========================================================================*/
/* Driver exported variables. */
@ -129,7 +139,7 @@ static eicuresult_t eicu_lld_get_both(EICUDriver *eicup,
/* 16-bit timer */
if (0xFFFF == eicup->tim->ARR) {
uint16_t cmp = compare & 0xFFFF;
uint16_t cmp = compare;
uint16_t la = chp->last_active;
uint16_t li = chp->last_idle;
uint16_t w = li - la;
@ -165,7 +175,7 @@ static eicucnt_t eicu_lld_get_width(EICUDriver *eicup,
/* 16-bit timer */
if (0xFFFF == eicup->tim->ARR) {
uint16_t cmp = compare & 0xFFFF;
uint16_t cmp = compare;
uint16_t la = chp->last_active;
uint16_t ret = cmp - la;
return ret;
@ -195,7 +205,7 @@ static eicucnt_t eicu_lld_get_period(EICUDriver *eicup,
/* 16-bit timer */
if (0xFFFF == eicup->tim->ARR) {
uint16_t cmp = compare & 0xFFFF;
uint16_t cmp = compare;
uint16_t li = chp->last_idle;
uint16_t ret = cmp - li;
return ret;
@ -212,7 +222,7 @@ static eicucnt_t eicu_lld_get_period(EICUDriver *eicup,
}
/**
* @brief Common ISR code, EICU width or (width + period) event.
* @brief EICU width or (width + period) event.
* @note Needs special care since it needs to invert the
* correct polarity bit to detect pulses.
* @note Assumes that the polarity is not changed by some
@ -248,15 +258,14 @@ static void isr_invoke_pulse_cb(EICUDriver *eicup, eicuchannel_t channel) {
}
/**
* @brief Common ISR code, EICU Edge detect event.
* @brief EICU Edge detect event.
*
* @param[in] eicup Pointer to the @p EICUDriver object
* @param[in] channel The timer channel that fired the interrupt.
*
* @notapi
*/
static void isr_invoke_edge_cb(EICUDriver *eicup,
eicuchannel_t channel) {
static void isr_invoke_edge_cb(EICUDriver *eicup, eicuchannel_t channel) {
EICUChannelDriver *chp = &eicup->channel[channel];
eicucnt_t compare = eicu_lld_get_compare(chp);
uint32_t period = eicu_lld_get_period(eicup, channel, compare);
@ -284,7 +293,7 @@ static void eicu_isr_invoke_cb(EICUDriver *eicup, eicuchannel_t channel) {
/**
*
*/
static void slow_mode_handler(EICUDriver *eicup, uint16_t sr) {
static void slow_mode_isr_handler(EICUDriver *eicup, uint16_t sr) {
if ((sr & STM32_TIM_SR_CC1IF) != 0)
eicu_isr_invoke_cb(eicup, EICU_CHANNEL_1);
@ -334,7 +343,7 @@ static void eicu_lld_serve_interrupt(EICUDriver *eicup) {
if (EICU_FAST == eicup->config->mode)
fast_mode_handler(eicup, sr);
else
slow_mode_handler(eicup, sr);
slow_mode_isr_handler(eicup, sr);
if ((sr & STM32_TIM_SR_UIF) != 0)
_eicu_isr_invoke_overflow_cb(eicup);

View File

@ -298,7 +298,7 @@ typedef uint32_t eicufreq_t;
typedef uint32_t eicucnt_t;
/**
* @brief EICU Captured time(s).
* @brief EICU captured width and (or) period.
*/
typedef struct {
/**
@ -446,17 +446,6 @@ struct EICUDriver {
*/
#define eicu_lld_get_compare(chp) (*((chp)->wccrp) + 1)
/**
* @brief Inverts the polarity for the given channel.
*
* @param[in] eicup Pointer to the EICUDriver object.
* @param[in] channel The timer channel to invert.
*
* @notapi
*/
#define eicu_lld_invert_polarity(eicup, channel) \
(eicup)->tim->CCER ^= ((uint16_t)(STM32_TIM_CCER_CC1P << ((channel) * 4)))
/*===========================================================================*/
/* External declarations. */
/*===========================================================================*/