aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorgdisirio <gdisirio@35acf78f-673a-0410-8e92-d51de3d6d3f4>2014-01-28 15:48:34 +0000
committergdisirio <gdisirio@35acf78f-673a-0410-8e92-d51de3d6d3f4>2014-01-28 15:48:34 +0000
commit6cb1afbda0359bc1d15f398b862b522ccf9c4307 (patch)
treef9861ac3dc648bef076bd7fa3107e3972afdc127
parent6d6546dac1f6d8848df3037b7c32176c34745b1c (diff)
downloadChibiOS-6cb1afbda0359bc1d15f398b862b522ccf9c4307.tar.gz
ChibiOS-6cb1afbda0359bc1d15f398b862b522ccf9c4307.tar.bz2
ChibiOS-6cb1afbda0359bc1d15f398b862b522ccf9c4307.zip
git-svn-id: svn://svn.code.sf.net/p/chibios/svn/branches/kernel_3_dev@6654 35acf78f-673a-0410-8e92-d51de3d6d3f4
-rw-r--r--os/hal/include/icu.h6
-rw-r--r--os/hal/ports/STM32/LLD/TIMv1/icu_lld.c1
2 files changed, 5 insertions, 2 deletions
diff --git a/os/hal/include/icu.h b/os/hal/include/icu.h
index ef42470cb..7db895fbf 100644
--- a/os/hal/include/icu.h
+++ b/os/hal/include/icu.h
@@ -140,8 +140,10 @@ typedef void (*icucallback_t)(ICUDriver *icup);
* @notapi
*/
#define _icu_isr_invoke_width_cb(icup) { \
- (icup)->state = ICU_IDLE; \
- (icup)->config->width_cb(icup); \
+ if ((icup)->state != ICU_WAITING) { \
+ (icup)->state = ICU_IDLE; \
+ (icup)->config->width_cb(icup); \
+ } \
}
/**
diff --git a/os/hal/ports/STM32/LLD/TIMv1/icu_lld.c b/os/hal/ports/STM32/LLD/TIMv1/icu_lld.c
index ae9cc944f..18d7ca7d5 100644
--- a/os/hal/ports/STM32/LLD/TIMv1/icu_lld.c
+++ b/os/hal/ports/STM32/LLD/TIMv1/icu_lld.c
@@ -604,6 +604,7 @@ void icu_lld_stop(ICUDriver *icup) {
*/
void icu_lld_enable(ICUDriver *icup) {
+ icup->tim->EGR |= STM32_TIM_EGR_UG;
icup->tim->SR = 0; /* Clear pending IRQs (if any). */
if (icup->config->channel == ICU_CHANNEL_1) {
if (icup->config->period_cb != NULL)