Jean Mercier
/
jmStepper
Control up to 4 steppers from serial port
jmStepper.h@0:0785901b085e, 2011-02-12 (annotated)
- Committer:
- jm
- Date:
- Sat Feb 12 16:42:08 2011 +0000
- Revision:
- 0:0785901b085e
jmStepper Command Line Interface Module
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
jm | 0:0785901b085e | 1 | /************************************************************************* |
jm | 0:0785901b085e | 2 | * @file jmStepper.h |
jm | 0:0785901b085e | 3 | * @brief Stepper Control Interface |
jm | 0:0785901b085e | 4 | * You can use 4,5,6 and 8 wire steppers. |
jm | 0:0785901b085e | 5 | * Each output pin must have two drivers. |
jm | 0:0785901b085e | 6 | * One driver must be the inverted output pin. |
jm | 0:0785901b085e | 7 | * The other driver is the non inverted output pin. |
jm | 0:0785901b085e | 8 | * This way the steppers operate in full step, full torque mode. |
jm | 0:0785901b085e | 9 | * . |
jm | 0:0785901b085e | 10 | * @version 1.0 |
jm | 0:0785901b085e | 11 | * @date Feb 12, 2010 |
jm | 0:0785901b085e | 12 | */ |
jm | 0:0785901b085e | 13 | |
jm | 0:0785901b085e | 14 | /* |
jm | 0:0785901b085e | 15 | * Module Command Line Interface |
jm | 0:0785901b085e | 16 | Format: command name (arg info)min..max values [optional argument] |
jm | 0:0785901b085e | 17 | stepper (Stepper number)0..3 (Pin CoilA)0..432 (Pin CoilB)0..432 (Direction)0..1 (Delay)1..255 [(Steps)1..65535] |
jm | 0:0785901b085e | 18 | stepperStop (steppers value)1..15 |
jm | 0:0785901b085e | 19 | |
jm | 0:0785901b085e | 20 | Example for stepper on pins Port1.31 Port1.30 DIP20 DIP19 |
jm | 0:0785901b085e | 21 | stepper 0 131 130 1 1 shortest delays between steps (fastest speed) continuous mode |
jm | 0:0785901b085e | 22 | stepper 0 131 130 0 1 1 one step in reverse direction |
jm | 0:0785901b085e | 23 | stepper 0 131 130 1 10 5 5 steps in foward direction with 10 unit ticks between steps |
jm | 0:0785901b085e | 24 | |
jm | 0:0785901b085e | 25 | * Module Events |
jm | 0:0785901b085e | 26 | GPPST (stepper id)0..3 |
jm | 0:0785901b085e | 27 | On Ending steps, Send Message: GPPST id pinA pinB delay status |
jm | 0:0785901b085e | 28 | |
jm | 0:0785901b085e | 29 | * Module Feedback and Help messages may be enabled/disabled by Command Lines. |
jm | 0:0785901b085e | 30 | feedback (enable/disable)0..1 |
jm | 0:0785901b085e | 31 | help (enable/disable)0..1 |
jm | 0:0785901b085e | 32 | |
jm | 0:0785901b085e | 33 | */ |
jm | 0:0785901b085e | 34 | |
jm | 0:0785901b085e | 35 | #ifndef jmStepperdef |
jm | 0:0785901b085e | 36 | #define jmStepperdef 1 |
jm | 0:0785901b085e | 37 | |
jm | 0:0785901b085e | 38 | #define stepperQty 4 // 4 steppers max |
jm | 0:0785901b085e | 39 | |
jm | 0:0785901b085e | 40 | #include "LPC17xx.h" |
jm | 0:0785901b085e | 41 | |
jm | 0:0785901b085e | 42 | // Module Data Structure |
jm | 0:0785901b085e | 43 | extern struct StructStepper{ |
jm | 0:0785901b085e | 44 | uint8_t cw; |
jm | 0:0785901b085e | 45 | uint8_t active; |
jm | 0:0785901b085e | 46 | uint8_t seq; |
jm | 0:0785901b085e | 47 | uint8_t delay; |
jm | 0:0785901b085e | 48 | uint8_t eggTimer; |
jm | 0:0785901b085e | 49 | uint16_t nSteps; |
jm | 0:0785901b085e | 50 | uint16_t pinA; |
jm | 0:0785901b085e | 51 | uint16_t pinB; |
jm | 0:0785901b085e | 52 | uint32_t CoilA_bitValue; |
jm | 0:0785901b085e | 53 | uint32_t CoilB_bitValue; |
jm | 0:0785901b085e | 54 | LPC_GPIO_TypeDef *portCoilA; |
jm | 0:0785901b085e | 55 | LPC_GPIO_TypeDef *portCoilB; |
jm | 0:0785901b085e | 56 | }sStepper[stepperQty]; |
jm | 0:0785901b085e | 57 | |
jm | 0:0785901b085e | 58 | #endif |
jm | 0:0785901b085e | 59 | |
jm | 0:0785901b085e | 60 | // Module Prototypes |
jm | 0:0785901b085e | 61 | void StepperInit(void); |
jm | 0:0785901b085e | 62 | void StepperSM(void); |
jm | 0:0785901b085e | 63 | void cli_Stepper(void); |
jm | 0:0785901b085e | 64 | void Step(int number, bool CW); |
jm | 0:0785901b085e | 65 | void cli_StepperStop(void); |
jm | 0:0785901b085e | 66 | void cli_GPPST(void); |
jm | 0:0785901b085e | 67 | void rGPPST(unsigned int id); |
jm | 0:0785901b085e | 68 | void cli_StepSpeed(void); |
jm | 0:0785901b085e | 69 | |
jm | 0:0785901b085e | 70 | //-------------------------- CLIG PLUGS -------------------- |
jm | 0:0785901b085e | 71 | // CLIG-INCLUDE |
jm | 0:0785901b085e | 72 | /* |
jm | 0:0785901b085e | 73 | #include "jmStepper.h" |
jm | 0:0785901b085e | 74 | */ |
jm | 0:0785901b085e | 75 | |
jm | 0:0785901b085e | 76 | // CLIG-INIT |
jm | 0:0785901b085e | 77 | /* |
jm | 0:0785901b085e | 78 | StepperInit(); |
jm | 0:0785901b085e | 79 | */ |
jm | 0:0785901b085e | 80 | |
jm | 0:0785901b085e | 81 | // CLIG-TIMER |
jm | 0:0785901b085e | 82 | /* |
jm | 0:0785901b085e | 83 | // Module jmStepper |
jm | 0:0785901b085e | 84 | for(i=0;i<stepperQty;i++)if(sStepper[i].eggTimer>0)sStepper[i].eggTimer--; |
jm | 0:0785901b085e | 85 | */ |
jm | 0:0785901b085e | 86 | |
jm | 0:0785901b085e | 87 | // CLIG-CMD |
jm | 0:0785901b085e | 88 | /* |
jm | 0:0785901b085e | 89 | stepper cli_Stepper(); |
jm | 0:0785901b085e | 90 | stepperStop cli_StepperStop(); |
jm | 0:0785901b085e | 91 | GPPST cli_GPPST(); |
jm | 0:0785901b085e | 92 | stepSpeed cli_StepSpeed(); |
jm | 0:0785901b085e | 93 | */ |
jm | 0:0785901b085e | 94 | |
jm | 0:0785901b085e | 95 | // CLIG-SM |
jm | 0:0785901b085e | 96 | /* |
jm | 0:0785901b085e | 97 | StepperSM(); |
jm | 0:0785901b085e | 98 | */ |
jm | 0:0785901b085e | 99 | //-------------------------- END CLIG PLUGS -------------------- |