summaryrefslogtreecommitdiffhomepage
path: root/digital
diff options
context:
space:
mode:
authorNicolas Schodet2008-03-09 17:39:55 +0100
committerNicolas Schodet2008-03-09 17:39:55 +0100
commit9943963706b24fec06d09999e706cca975039e92 (patch)
treef1a60d4f68b2baba904dc5c53ad76234753c6e56 /digital
parent32145dcc59429876cc16fc0740537d789c5090f9 (diff)
* digital/asserv/src/asserv:
- cleaned up counter.
Diffstat (limited to 'digital')
-rw-r--r--digital/asserv/src/asserv/Makefile3
-rw-r--r--digital/asserv/src/asserv/counter.h37
-rw-r--r--digital/asserv/src/asserv/counter_ext.avr.c11
-rw-r--r--digital/asserv/src/asserv/counter_tcc.avr.c14
-rw-r--r--digital/asserv/src/asserv/main.c6
5 files changed, 57 insertions, 14 deletions
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"