From 06cc9ea04a04bd171f1ef7d10db02567447b59d0 Mon Sep 17 00:00:00 2001 From: utzig Date: Tue, 16 Jul 2013 23:08:40 +0000 Subject: [PATCH] [AVR] Disable shared use of a single timer between multiple drivers git-svn-id: svn://svn.code.sf.net/p/chibios/svn/trunk@5979 35acf78f-673a-0410-8e92-d51de3d6d3f4 --- os/hal/platforms/AVR/avr_timers.h | 48 +++++++++++++++++++++++++++++++ os/hal/platforms/AVR/gpt_lld.h | 2 ++ os/hal/platforms/AVR/icu_lld.h | 2 ++ os/hal/platforms/AVR/pwm_lld.h | 2 ++ 4 files changed, 54 insertions(+) create mode 100644 os/hal/platforms/AVR/avr_timers.h diff --git a/os/hal/platforms/AVR/avr_timers.h b/os/hal/platforms/AVR/avr_timers.h new file mode 100644 index 000000000..28fd90b7e --- /dev/null +++ b/os/hal/platforms/AVR/avr_timers.h @@ -0,0 +1,48 @@ +/* + ChibiOS/RT - Copyright (C) 2006-2013 Giovanni Di Sirio + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +*/ + +#ifndef _AVR_TIMERS_H_ +#define _AVR_TIMERS_H_ + +#if ((AVR_GPT_USE_TIM1 && AVR_PWM_USE_TIM1) || \ + (AVR_GPT_USE_TIM1 && AVR_ICU_USE_TIM1) || \ + (AVR_PWM_USE_TIM1 && AVR_ICU_USE_TIM1)) + #error "Timer 1 cannot simultaneously be used by multiple drivers." +#endif + +#if ((AVR_GPT_USE_TIM2 && AVR_PWM_USE_TIM2)) + #error "Timer 2 cannot simultaneously be used by multiple drivers." +#endif + +#if ((AVR_GPT_USE_TIM3 && AVR_PWM_USE_TIM3) || \ + (AVR_GPT_USE_TIM3 && AVR_ICU_USE_TIM3) || \ + (AVR_PWM_USE_TIM3 && AVR_ICU_USE_TIM3)) + #error "Timer 3 cannot simultaneously be used by multiple drivers." +#endif + +#if ((AVR_GPT_USE_TIM4 && AVR_PWM_USE_TIM4) || \ + (AVR_GPT_USE_TIM4 && AVR_ICU_USE_TIM4) || \ + (AVR_PWM_USE_TIM4 && AVR_ICU_USE_TIM4)) + #error "Timer 4 cannot simultaneously be used by multiple drivers." +#endif + +#if ((AVR_GPT_USE_TIM5 && AVR_PWM_USE_TIM5) || \ + (AVR_GPT_USE_TIM5 && AVR_ICU_USE_TIM5) || \ + (AVR_PWM_USE_TIM5 && AVR_ICU_USE_TIM5)) + #error "Timer 5 cannot simultaneously be used by multiple drivers." +#endif + +#endif /* _AVR_TIMERS_H_ */ diff --git a/os/hal/platforms/AVR/gpt_lld.h b/os/hal/platforms/AVR/gpt_lld.h index 31a623f39..387a2d4bb 100644 --- a/os/hal/platforms/AVR/gpt_lld.h +++ b/os/hal/platforms/AVR/gpt_lld.h @@ -32,6 +32,8 @@ #if HAL_USE_GPT || defined(__DOXYGEN__) +#include "avr_timers.h" + /*===========================================================================*/ /* Driver constants. */ /*===========================================================================*/ diff --git a/os/hal/platforms/AVR/icu_lld.h b/os/hal/platforms/AVR/icu_lld.h index a9b420f1a..407ffba30 100644 --- a/os/hal/platforms/AVR/icu_lld.h +++ b/os/hal/platforms/AVR/icu_lld.h @@ -27,6 +27,8 @@ #if HAL_USE_ICU || defined(__DOXYGEN__) +#include "avr_timers.h" + /*===========================================================================*/ /* Driver constants. */ /*===========================================================================*/ diff --git a/os/hal/platforms/AVR/pwm_lld.h b/os/hal/platforms/AVR/pwm_lld.h index 51776bb21..36ab5cb73 100644 --- a/os/hal/platforms/AVR/pwm_lld.h +++ b/os/hal/platforms/AVR/pwm_lld.h @@ -32,6 +32,8 @@ #if HAL_USE_PWM || defined(__DOXYGEN__) +#include "avr_timers.h" + /*===========================================================================*/ /* Driver constants. */ /*===========================================================================*/