Blame | Last modification | View Log | Download
/** Copyright (C) 2004 Darren Hutchinson (dbh@gbdt.com.au)** This program is free software; you can redistribute it and/or modify* it under the terms of the GNU Library 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 Library General Public* License for more details.** You should have received a copy of the GNU Library General Public License* along with this software; see the file COPYING. If not, write to* the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,* MA 02111-1307, USA.** $Id: stepper.h,v 1.7 2004/04/05 06:42:15 dbh Exp $*/#ifndef _STEPPER_H_#define _STEPPER_H_/* Define the encoding used to hold the exictation values for each* stepper coil.*/#define _EX_ENTRY(c1, c2) (((c1) << 4) | (c2))#define _GET_C1(e) ((e) >> 4)#define _GET_C2(e) ((e) & 0xf)#define EX_0 0x0 // Inactive#define EX_P_0_2 0x1 // +0.2 active#define EX_P_0_4 0x2 // +0.4 active#define EX_P_0_67 0x3 // +0.67 active#define EX_P_1 0x4 // +Active#define EX_M_0_2 0x9 // -0.2 active#define EX_M_0_4 0xa // -0.4 active#define EX_M_0_67 0xb // -0.67 active#define EX_M_1 0xc // -Active/* Define the struture used to pass excitation information from* the stepper module to the excitation module*/struct excitation_s{uint8_t excitation;uint8_t useRelay;};extern struct excitation_s raExcitation;extern struct excitation_s decExcitation;/* Define a structure to hold the current "state" for each axis. This* allows up to use the same code for both axis, so I don't feel* tempted to skimp on the features*/struct stepState_s{// Input (from the combiner)int8_t reqSpeed; // Rate requested// Output (to the driver)struct excitation_s *pExcite;// Configurationuint16_t backlash; // #steps to counteract backlashuint8_t finPos; // Finish movement in positive directionuint8_t finNeg; // Finish movement in negative direction// Machine stateuint8_t stepCtr; // Current step in cycleint8_t curSpeed; // Current rate (when moving after spin)void *pState; // State pointeruint16_t count; // Counter used in statesuint8_t *pTable; // Current step table// Support function stateuint8_t clkDivRatio; // Current clock divuint8_t divCtr; // Clock division counter};/* These are held in stepper.c */extern struct stepState_s raState;extern struct stepState_s decState;extern int8_t trackingRate;extern uint8_t transRatio;/* Prototypes */void stepperInit(void);void setRaSpeed(int8_t speed);void setDecSpeed(int8_t speed);void setupRateTable(uint8_t transRatio);void setTrackRate(int8_t rate);/* DEBUG: Uses half step instread of microstep if true */extern uint8_t doHalfStep;#endif /* _STEPPER_H_ */