From 52fa40dca7b8505cc239ff7b176b25d062b74b49 Mon Sep 17 00:00:00 2001 From: asterix Date: Mon, 26 May 2008 20:49:22 +0000 Subject: [PATCH] Add stepper timer example implementation for avr. git-svn-id: https://src.develer.com/svnoss/bertos/trunk@1383 38d2e660-2303-0410-9eaa-f027e97ec537 --- bertos/cpu/avr/drv/stepper_avr.c | 81 ++++++++++++++++++++ bertos/cpu/avr/drv/stepper_avr.h | 122 +++++++++++++++++++++++++++++++ 2 files changed, 203 insertions(+) create mode 100644 bertos/cpu/avr/drv/stepper_avr.c create mode 100644 bertos/cpu/avr/drv/stepper_avr.h diff --git a/bertos/cpu/avr/drv/stepper_avr.c b/bertos/cpu/avr/drv/stepper_avr.c new file mode 100644 index 00000000..87c7389b --- /dev/null +++ b/bertos/cpu/avr/drv/stepper_avr.c @@ -0,0 +1,81 @@ +/** + * \file + * + * + * \brief Low-level stepper timer module for AVR (inplementation). + * + * \version $Id$ + * + * \author Daniele Basile + * + */ + +#include "stepper_avr.h" + +#include +#include +#include + +#include +#include + + +#warning TODO:This is an example, you must implement it! + +///< Static array of timer counter struct for stepper. +static struct TimerCounter stepper_timers[CONFIG_TC_STEPPER_MAX_NUM] = +{ + { //Timer Counter settings for TIO0 output pin + /* fill with stepper timer channel settings */ + } + + /* Add here other stepper timer channel settings */ +}; + +/** + * Timer couter setup. + * + * This function apply to select timer couter all needed settings. + * Every settings are stored in stepper_timers[]. + */ +void stepper_tc_setup(int index, stepper_isr_t callback, struct Stepper *motor) +{ + /* Put here the code to setup the stepper timer drive */ +} + +/** + * Timer counter init. + */ +void stepper_tc_init(void) +{ + /* Put here the code to init the stepper timer drive */ +} + diff --git a/bertos/cpu/avr/drv/stepper_avr.h b/bertos/cpu/avr/drv/stepper_avr.h new file mode 100644 index 00000000..0173e4e9 --- /dev/null +++ b/bertos/cpu/avr/drv/stepper_avr.h @@ -0,0 +1,122 @@ +/** + * \file + * + * + * \brief Low-level stepper timer module for AVR (inplementation). + * + * \version $Id$ + * + * \author Daniele Basile + * + */ + +#ifndef DRV_STEPPER_AVR_H +#define DRV_STEPPER_AVR_H + + +#include +#include + +#include + +#warning TODO:This is an example, you must implement it! + +/** + * IRQ callback function type definition. + */ +typedef void (*irq_t)(void); + +/** + * Timer contex structure. + */ +typedef struct TimerCounter +{ + int timer_id; ///< Timer counter ID + irq_t isr; ///< IRQ handler + stepper_isr_t callback; ///< Interrupt callback pointer + struct Stepper *motor; ///< Stepper context structure + +} TimerCounter; + +/** + * Enable interrupt for timer counter compare event. + */ +INLINE void stepper_tc_irq_enable(struct TimerCounter *timer) +{ + /* put here code to enable timer irq */ +} + + +/** + * Disable interrupt for timer counter compare event. + */ +INLINE void stepper_tc_irq_disable(struct TimerCounter *timer) +{ + /* put here code to disable timer irq */ +} + +/** + * Set delay for next interrupt compare event. + */ +INLINE void stepper_tc_setDelay(struct TimerCounter *timer, stepper_time_t delay) +{ + /* put here code to set the delay for next irq */ +} + + +/** + * Set delay for next interrupt compare event. + */ +INLINE void stepper_tc_resetTimer(struct TimerCounter *timer) +{ + /* put here code to reset the timer */ +} + +/** + * Programm timer counter to generate a pulse on select TIO output. + */ +INLINE void FAST_FUNC stepper_tc_doPulse(struct TimerCounter *timer) +{ + /* put here code to generate a pulse */ +} + +/** + * Programm timer counter to not generate a pulse on select TIO output. + */ +INLINE void FAST_FUNC stepper_tc_skipPulse(struct TimerCounter *timer) +{ + /* put here code to skip a pulse */ +} + +void stepper_tc_setup(int index, stepper_isr_t callback, struct Stepper *motor); +void stepper_tc_init(void); + +#endif /*DRV_STEPPER_AVR_H */ -- 2.25.1