From 93cb4b805159d9e4e993d897dfd3ec47e4f21cf1 Mon Sep 17 00:00:00 2001 From: Nicolas Schodet Date: Sat, 8 Mar 2008 19:31:41 +0100 Subject: * analog/motor-power-avr/src: - right channel source files autogeneration. --- analog/motor-power-avr/src/Makefile | 17 ++- analog/motor-power-avr/src/mp_pwm_R_.c | 206 --------------------------------- analog/motor-power-avr/src/mp_pwm_R_.h | 37 ------ 3 files changed, 12 insertions(+), 248 deletions(-) delete mode 100644 analog/motor-power-avr/src/mp_pwm_R_.c delete mode 100644 analog/motor-power-avr/src/mp_pwm_R_.h (limited to 'analog/motor-power-avr/src') diff --git a/analog/motor-power-avr/src/Makefile b/analog/motor-power-avr/src/Makefile index 37e67d18..cd76c623 100644 --- a/analog/motor-power-avr/src/Makefile +++ b/analog/motor-power-avr/src/Makefile @@ -1,6 +1,5 @@ BASE = ../../../digital/avr -PROGS = mp -HOST_PROGS = test_mp +AVR_PROGS = mp mp_SOURCES = main.c mp_pwm_L_.c mp_pwm_R_.c mp_pwm_LR_.c adc.c MODULES = adc proto uart utils math/fixed CONFIGFILE = avrconfig.h @@ -13,6 +12,14 @@ HOST_LIBS = -lm include $(BASE)/make/Makefile.gen -src: - sed -e 's/_L_/_R_/g' mp_pwm_L_.c > mp_pwm_R_.c - sed -e 's/_L_/_R_/g' mp_pwm_L_.h > mp_pwm_R_.h +SED_L_R = sed -e 's/_L_/_R_/g' +EXTRA_CLEAN_FILES = mp_pwm_R_.c mp_pwm_R_.h + +mp_pwm_R_.c: mp_pwm_L_.c + ${SED_L_R} $< > $@ + +mp_pwm_R_.h: mp_pwm_L_.h + ${SED_L_R} $< > $@ + +# Extra dependencies for bootstrap. +main.c mp_pwm_LR_.c mp_pwm_R_.c: mp_pwm_R_.h diff --git a/analog/motor-power-avr/src/mp_pwm_R_.c b/analog/motor-power-avr/src/mp_pwm_R_.c deleted file mode 100644 index a66645b1..00000000 --- a/analog/motor-power-avr/src/mp_pwm_R_.c +++ /dev/null @@ -1,206 +0,0 @@ -/* "mp_pwm_R_.c" - * this file contains routines for managing the _R_ channel of mp board - * the command sed -e 's/_R_/_R_/g' can be used for generating the _R_ file - */ - -#include "mp_pwm_LR_.h" -#include "mp_pwm_R_.h" -#include "io.h" - -// static variables -static uint8_t state_R_; -static uint8_t state_R_cmd; -static uint8_t pwm_R_; - -// Le PC, afin de faire le saut calculé -//#define PC PC_REG - -// init -void init_pwm_R_ (void) { - state_R_cmd = CMD_STATE_HIGH_Z; - pwm_R_ = 0x00; - - // Set outputs to 0 (ie HIGH_Z) - _R_AL_0; - _R_AH_0; - _R_BL_0; - _R_BH_0; - - // status LEDs - _R_LED0_0; - _R_LED1_0; - - // Set IOs as outputs - _R_ACTIVATE_OUTPUTS; -} - -// PWM rising edge on timer overflow IT -ISR(OVF_R_vect) { - // programs the state which is ordered by the core code - state_R_ = state_R_cmd; - - // the falling of the other side may have delayed a few our IT - OCR_R_ = pwm_R_; - - //PC = PC + state_R_; // j'aurais bien aimé faire un calculated jump - - switch (state_R_) - { - case CMD_STATE_DIR_0: - // dir 0 - //rise_R_label0: - _R_BH_0; - _R_BL_1; - _R_AL_0; - _R_AH_1; - sei(); // set back interrupts - - // Display CMD_STATE on LEDs - _R_LED0_1; - _R_LED1_0; - - break; - - case CMD_STATE_DIR_1: - // dir 1 - //org rise_R_label0 + 0x10 - _R_AH_0; - _R_AL_1; - _R_BL_0; - _R_BH_1; - sei(); // set back interrupts - - // Display CMD_STATE on LEDs - _R_LED0_0; - _R_LED1_1; - - break; - - case CMD_STATE_BRAKE: - // switch to forced low steady state - //org rise_R_label0 + 0x20 - _R_AH_0; - _R_AL_1; - _R_BH_0; - _R_BL_1; - sei(); // set back interrupts - - // Display CMD_STATE on LEDs - _R_LED0_0; - _R_LED1_0; - - break; - - case CMD_STATE_HIGH_Z: - default: - // switch to high impedance steady state - //org rise_R_label0 + 0x30 - _R_AL_0; - _R_AH_0; - _R_BL_0; - _R_BH_0; - sei(); // set back interrupts - - // Display CMD_STATE on LEDs - _R_LED0_1; - _R_LED1_1; - - break; - - } -} - -// PWM falling edge on timer compare IT -ISR(COMP_R_vect) { - // PC = PC + state_R_; TODO :saut calculé ? - - switch (state_R_) - { - case CMD_STATE_DIR_0: - // in the case we are in 0x00 direction - //fall_R_label0: - _R_AH_0; - _R_AL_1; - sei(); // set back interrupts - - // Display CMD_STATE on LEDs - _R_LED0_0; - _R_LED1_0; - - break; - - case CMD_STATE_DIR_1: - // in the case we are in 0x10 direction - //org fall_R_label0 + 0x10 - _R_BH_0; - _R_BL_1; - sei(); // set back interrupts - - // Display CMD_STATE on LEDs - _R_LED0_0; - _R_LED1_0; - - break; - - case CMD_STATE_BRAKE: - // forced low - //org fall_R_label0 + 0x20 - sei(); // set back interrupts - break; - - case CMD_STATE_HIGH_Z: - default: - // left high Z - //org fall_R_label0 + 0x30 - sei(); // set back interrupts - break; - } -} - -// overcurrent detected by comparators -ISR(ILIM_R_vect) { - _R_AL_0; - _R_AH_0; - _R_BL_0; - _R_BH_0; - sei(); // set back interrupts - // following line orders to keep high Z state when faling edge will arrive - state_R_ = CMD_STATE_HIGH_Z; - return; -} - -// starts the motor -void start_motor_R_ (uint8_t pwmspeed, uint8_t direction) { - // checking direction - if (direction) - { - state_R_cmd = CMD_STATE_DIR_1; - } - else - { - state_R_cmd = CMD_STATE_DIR_0; - } - - // setting pwm value - if (pwmspeed == 0) - {// brake - state_R_cmd = CMD_STATE_BRAKE; - pwm_R_ = 0; - } - else - { - // adding offset - pwmspeed = pwmspeed + PWM_OFFSET_LR_; - - // clamp the value - UTILS_BOUND(pwmspeed, PWM_MIN_LR_, PWM_MAX_LR_); - - // Apply the value - pwm_R_ = pwmspeed; - } -} - -// puts motor in high Z -void stop_motor_R_ (void) { - state_R_cmd = CMD_STATE_HIGH_Z; -} diff --git a/analog/motor-power-avr/src/mp_pwm_R_.h b/analog/motor-power-avr/src/mp_pwm_R_.h deleted file mode 100644 index 6819e4ab..00000000 --- a/analog/motor-power-avr/src/mp_pwm_R_.h +++ /dev/null @@ -1,37 +0,0 @@ -#ifndef mp_pwm_R__h -#define mp_pwm_R__h -/* mp_pwm_R_.h */ -/* {{{ - * - * Copyright (C) 2008 Pierre Prot - * - * APBTeam: - * Web: http://apbteam.org/ - * Email: team AT apbteam DOT org - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. - * - * }}} */ - - -void init_pwm_R_ (void); -void rise_R_ (void); -void fall_R_ (void); -void ovc_R_ (void); -void start_motor_R_ (uint8_t pwmspeed, uint8_t direction); -void stop_motor_R_ (void); - - -#endif /* mp_pwm_R__h */ -- cgit v1.2.3