motest.c Source File






Misc >
Help >
FAQ >


Links >



motest.c

00001 /* 
00002 Copyright (C) 2001 Free Software Foundation, Inc.
00003 Written by Duane Gustavus (duane@denton.com)
00004 
00005 This file is free software; you can redistribute it and/or modify it
00006 under the terms of the GNU General Public License as published by the
00007 Free Software Foundation; either version 2, or (at your option) any
00008 later version.
00009 
00010 In addition to the permissions in the GNU General Public License, the
00011 Free Software Foundation gives you unlimited permission to link the
00012 compiled version of this file with other programs, and to distribute
00013 those programs without any restriction coming from the use of this
00014 file. (The General Public License restrictions do apply in other
00015 respects; for example, they cover modification of the file, and
00016 distribution when not linked into another program.)
00017 
00018 This file is distributed in the hope that it will be useful, but
00019 WITHOUT ANY WARRANTY; without even the implied warranty of
00020 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
00021 General Public License for more details.
00022 
00023 You should have received a copy of the GNU General Public License
00024 along with this program; see the file COPYING. If not, write to
00025 the Free Software Foundation, 59 Temple Place - Suite 330,
00026 Boston, MA 02111-1307, USA. */
00027 
00028 /*
00029 * motest.c assists the construction of a mtr_tab file. When run
00030 * it should first turn on both motors (without pwm control) which
00031 * will cause them to run at top speed. The output will show the
00032 * number of encoder ticks which represents top speed. When you 
00033 * press a key, the pwm control comes on at a very low setting. The
00034 * display now shows both the current pwm setting and the resulting
00035 * encoder count. Continue to press keys to cause the pwm period to
00036 * increase. Note values that seem to result in stable encoder counts
00037 * and use them to build a new mtr_tab.h file. 
00038 */
00039 
00040 #include <sys/locks.h>
00041 #include <sys/ports.h>
00042 #include <bot/bot.h>
00043 
00044 #define INCR 1
00045 
00046 char signon[] = "\nspace key to resample; any other to continue\n";
00047 char buf[80];
00048 char token;
00049 
00050 int
00051 main()
00052 {
00053 static int avg;
00054 
00055 /* disable interrupts to initialize system */
00056 lock();
00057 /* run 68hc11 in expanded bus mode */
00058 set_bus_expanded();
00059 /* initialize buffered serial I/O */
00060 init_buffered_io();
00061 /* initialize system clock */
00062 init_sysclock();
00063 /* initialize encoder services */
00064 init_encoders();
00065 /* initialize pwm service */
00066 init_pwm();
00067 /* initialize sensor sampling */
00068 init_poll_sensors();
00069 /* enable interrupts */
00070 unlock();
00071 
00072 /* print signon message to serial port */
00073 serial_print(signon);
00074 /* turn on motors to get top speed in encoder ticks */
00075 pwm_off();
00076 digital_shadowbits |= LEFT_MTR | RIGHT_MTR;
00077 DIGITAL_PORT = digital_shadowbits;
00078 while ((token = sci_getc()) == ' ') {
00079 /* print data for top possible speed */
00080 sprintf(buf,"Top speed: %d -- %d\n", le_sample, re_sample);
00081 serial_print(buf);
00082 }
00083 /* now step pwm period up to top speed showing encoder counts */
00084 Lmtr = Rmtr = 1000; pwm_on();
00085 sprintf(buf,"\n+ to incr; - to decr; other to resample\n");
00086 serial_print(buf);
00087 while (1) { /* no exit */
00088 /* block waiting for serial input */
00089 token = sci_getc();
00090 /* possibly in/decrement duty cycle values */
00091 if (token == '-') { Lmtr -= INCR; Rmtr = Lmtr; }
00092 if (token == '+') { Lmtr += INCR; Rmtr = Lmtr; }
00093 /* print current duty cycle and left/right speed */
00094 avg = (le_sample + re_sample) /2;
00095 sprintf(buf,"%d %d:%d %d\n", Lmtr, le_sample, re_sample, avg);
00096 serial_print(buf);
00097 }
00098 }

Copyright (C) 1999, 2000, 2001, 2002, 2003 Stéphane Carrez, France
Copyright (C) 2000, 2001, 2002 Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111, USA Verbatim copying and distribution of this entire article is permitted in any medium, provided this notice is preserved.


AltStyle によって変換されたページ (->オリジナル) /