From 9943963706b24fec06d09999e706cca975039e92 Mon Sep 17 00:00:00 2001 From: Nicolas Schodet Date: Sun, 9 Mar 2008 17:39:55 +0100 Subject: * digital/asserv/src/asserv: - cleaned up counter. --- digital/asserv/src/asserv/Makefile | 3 ++- digital/asserv/src/asserv/counter.h | 37 +++++++++++++++++++++++++++++ digital/asserv/src/asserv/counter_ext.avr.c | 11 +++++---- digital/asserv/src/asserv/counter_tcc.avr.c | 14 +++++++---- digital/asserv/src/asserv/main.c | 6 +---- 5 files changed, 57 insertions(+), 14 deletions(-) create mode 100644 digital/asserv/src/asserv/counter.h (limited to 'digital') diff --git a/digital/asserv/src/asserv/Makefile b/digital/asserv/src/asserv/Makefile index 50ad719a..3ddd904c 100644 --- a/digital/asserv/src/asserv/Makefile +++ b/digital/asserv/src/asserv/Makefile @@ -1,7 +1,8 @@ BASE = ../../../avr PROGS = asserv HOST_PROGS = test_motor_model -asserv_SOURCES = main.c twi_proto.c simu.host.c motor_model.host.c models.host.c +asserv_SOURCES = main.c twi_proto.c counter_ext.avr.c \ + simu.host.c motor_model.host.c models.host.c test_motor_model_SOURCES = test_motor_model.c motor_model.host.c models.host.c MODULES = proto uart utils math/fixed twi test_motor_model_MODULES = diff --git a/digital/asserv/src/asserv/counter.h b/digital/asserv/src/asserv/counter.h new file mode 100644 index 00000000..2e17dbfb --- /dev/null +++ b/digital/asserv/src/asserv/counter.h @@ -0,0 +1,37 @@ +#ifndef counter_h +#define counter_h +/* counter.h */ +/* asserv - Position & speed motor control on AVR. {{{ + * + * Copyright (C) 2008 Nicolas Schodet + * + * 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. + * + * }}} */ + +extern uint16_t counter_left, counter_right, counter_aux0; +extern int16_t counter_left_diff, counter_right_diff, counter_aux0_diff; + +void +counter_init (void); + +void +counter_update (void); + +#endif /* counter_h */ diff --git a/digital/asserv/src/asserv/counter_ext.avr.c b/digital/asserv/src/asserv/counter_ext.avr.c index 9a6ddec8..ff962496 100644 --- a/digital/asserv/src/asserv/counter_ext.avr.c +++ b/digital/asserv/src/asserv/counter_ext.avr.c @@ -22,6 +22,9 @@ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * * }}} */ +#include "common.h" +#include "counter.h" +#include "io.h" /** * This file add support for an external counter like the hdlcounter or @@ -50,10 +53,10 @@ /** Last values. */ static uint8_t counter_left_old, counter_right_old, counter_aux0_old; /** Overall counter values. */ -static uint16_t counter_left, counter_right, counter_aux0; +uint16_t counter_left, counter_right, counter_aux0; /** Counter differences since last update. * Maximum of 7 significant bits, sign included. */ -static int16_t counter_left_diff, counter_right_diff, counter_aux0_diff; +int16_t counter_left_diff, counter_right_diff, counter_aux0_diff; #if !COUNTER_USE_XMEM # define COUNTER_ALE _BV (2) @@ -86,7 +89,7 @@ counter_read (uint8_t n) } /** Initialize the counters. */ -static inline void +void counter_init (void) { #if COUNTER_USE_XMEM @@ -109,7 +112,7 @@ counter_init (void) } /** Update overall counter values and compute diffs. */ -static inline void +void counter_update (void) { uint8_t left, right, aux0; diff --git a/digital/asserv/src/asserv/counter_tcc.avr.c b/digital/asserv/src/asserv/counter_tcc.avr.c index 834147b9..9b64d916 100644 --- a/digital/asserv/src/asserv/counter_tcc.avr.c +++ b/digital/asserv/src/asserv/counter_tcc.avr.c @@ -22,6 +22,12 @@ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * * }}} */ +#include "common.h" +#include "counter.h" +#include "modules/utils/utils.h" +#include "io.h" + +#include "misc.h" /** * This file add support for an AVR internal counter. This uses one TCC @@ -40,13 +46,13 @@ static uint8_t counter_left_frw, counter_left_rev, /** Last TCNT values. */ static uint8_t counter_left_old, counter_right_old; /** Overall counter values. */ -static uint16_t counter_left, counter_right; +uint16_t counter_left, counter_right; /** Counter differences since last update. * Maximum of 9 significant bits, sign included. */ -static int16_t counter_left_diff, counter_right_diff; +int16_t counter_left_diff, counter_right_diff; /** Initialize the counters. */ -static inline void +void counter_init (void) { /* Left counter. */ @@ -109,7 +115,7 @@ SIGNAL (SIG_INTERRUPT5) } /** Update overall counter values and compute diffs. */ -static inline void +void counter_update (void) { uint8_t c; diff --git a/digital/asserv/src/asserv/main.c b/digital/asserv/src/asserv/main.c index cc016a12..02d98701 100644 --- a/digital/asserv/src/asserv/main.c +++ b/digital/asserv/src/asserv/main.c @@ -32,6 +32,7 @@ #include "misc.h" +#include "counter.h" #include "twi_proto.h" /** Motor command sequence, do not use values above 127, do not use zero. */ @@ -40,11 +41,6 @@ uint8_t main_sequence, main_sequence_ack, main_sequence_finish; /* This is implementation include. */ #ifndef HOST # include "timer.avr.c" -# if AC_ASSERV_COUNTER_EXTERNAL -# include "counter_ext.avr.c" -# else -# include "counter_tcc.avr.c" -# endif # include "pwm.avr.c" #else # include "simu.host.h" -- cgit v1.2.3