From 631660116597bf80cc90d4aed5235cb4b46e2b27 Mon Sep 17 00:00:00 2001 From: Theodore Ateba Date: Fri, 14 Jul 2017 21:52:58 +0000 Subject: Add NIL support for AVR Tiny architecture. git-svn-id: svn://svn.code.sf.net/p/chibios/svn/trunk@10332 35acf78f-673a-0410-8e92-d51de3d6d3f4 --- os/hal/ports/AVR/TINY/TIMv1/hal_st_lld.c | 253 +++++++++++++++++++++++++++++++ 1 file changed, 253 insertions(+) create mode 100644 os/hal/ports/AVR/TINY/TIMv1/hal_st_lld.c (limited to 'os/hal/ports/AVR/TINY/TIMv1/hal_st_lld.c') diff --git a/os/hal/ports/AVR/TINY/TIMv1/hal_st_lld.c b/os/hal/ports/AVR/TINY/TIMv1/hal_st_lld.c new file mode 100644 index 000000000..4732ec7dd --- /dev/null +++ b/os/hal/ports/AVR/TINY/TIMv1/hal_st_lld.c @@ -0,0 +1,253 @@ +/* + ChibiOS - Copyright (C) 2006..2016 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. +*/ + +/** + * @file hal_st_lld.c + * @brief AVR ST subsystem low level driver source. + * + * @addtogroup ST + * @{ + */ + +#include "hal.h" + +#if (OSAL_ST_MODE != OSAL_ST_MODE_NONE) || defined(__DOXYGEN__) + +/*===========================================================================*/ +/* Driver local definitions. */ +/*===========================================================================*/ + +/** + * @brief Timer maximum value + */ +#define AVR_TIMER_COUNTER_MAX 255 + +/*===========================================================================*/ +/* Driver exported variables. */ +/*===========================================================================*/ + +/*===========================================================================*/ +/* Driver local types. */ +/*===========================================================================*/ + +/*===========================================================================*/ +/* Driver local variables and types. */ +/*===========================================================================*/ + +#if (OSAL_ST_MODE == OSAL_ST_MODE_PERIODIC) || defined(__DOXYGEN__) + +/* Work out what the timer interrupt is called on this MCU */ +#ifdef TIMER0_COMPA_vect + #define AVR_TIMER_VECT TIMER0_COMPA_vect +#elif defined(TIMER_COMPA_vect) + #define AVR_TIMER_VECT TIMER_COMPA_vect +#elif defined(TIMER0_COMP_vect) + #define AVR_TIMER_VECT TIMER0_COMP_vect +#else + #error "Cannot find interrupt vector name for timer" +#endif + +/* Find the most suitable prescaler setting for the desired OSAL_ST_FREQUENCY */ +#if ((F_CPU / OSAL_ST_FREQUENCY) <= AVR_TIMER_COUNTER_MAX) + + #define AVR_TIMER_PRESCALER 1 + #define AVR_TIMER_PRESCALER_BITS ((0<