Telescope Control Library
AMIS30543StepperDriver.h@0:6cb2eaf8b133, 2018-08-19 (annotated)
- Committer:
- caoyuan9642
- Date:
- Sun Aug 19 05:21:20 2018 +0000
- Revision:
- 0:6cb2eaf8b133
v0.1
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
caoyuan9642 | 0:6cb2eaf8b133 | 1 | /* |
caoyuan9642 | 0:6cb2eaf8b133 | 2 | * AMIS30543StepperDriver.h |
caoyuan9642 | 0:6cb2eaf8b133 | 3 | * |
caoyuan9642 | 0:6cb2eaf8b133 | 4 | * Created on: 2018Äê2ÔÂ8ÈÕ |
caoyuan9642 | 0:6cb2eaf8b133 | 5 | * Author: caoyuan9642 |
caoyuan9642 | 0:6cb2eaf8b133 | 6 | */ |
caoyuan9642 | 0:6cb2eaf8b133 | 7 | |
caoyuan9642 | 0:6cb2eaf8b133 | 8 | #ifndef TELESCOPE_DRIVER_AMIS30543STEPPERDRIVER_H_ |
caoyuan9642 | 0:6cb2eaf8b133 | 9 | |
caoyuan9642 | 0:6cb2eaf8b133 | 10 | #define TELESCOPE_DRIVER_AMIS30543STEPPERDRIVER_H_ |
caoyuan9642 | 0:6cb2eaf8b133 | 11 | |
caoyuan9642 | 0:6cb2eaf8b133 | 12 | #include <StepperMotor.h> |
caoyuan9642 | 0:6cb2eaf8b133 | 13 | #include <StepOut.h> |
caoyuan9642 | 0:6cb2eaf8b133 | 14 | #include "mbed.h" |
caoyuan9642 | 0:6cb2eaf8b133 | 15 | |
caoyuan9642 | 0:6cb2eaf8b133 | 16 | class AMIS30543StepperDriver: public StepperMotor |
caoyuan9642 | 0:6cb2eaf8b133 | 17 | { |
caoyuan9642 | 0:6cb2eaf8b133 | 18 | |
caoyuan9642 | 0:6cb2eaf8b133 | 19 | public: |
caoyuan9642 | 0:6cb2eaf8b133 | 20 | AMIS30543StepperDriver(SPI *spi, PinName cs, PinName step, PinName dir = NC, |
caoyuan9642 | 0:6cb2eaf8b133 | 21 | PinName err = NC, bool invert = false); |
caoyuan9642 | 0:6cb2eaf8b133 | 22 | virtual ~AMIS30543StepperDriver(); |
caoyuan9642 | 0:6cb2eaf8b133 | 23 | |
caoyuan9642 | 0:6cb2eaf8b133 | 24 | void start(stepdir_t dir); |
caoyuan9642 | 0:6cb2eaf8b133 | 25 | |
caoyuan9642 | 0:6cb2eaf8b133 | 26 | void stop(); |
caoyuan9642 | 0:6cb2eaf8b133 | 27 | |
caoyuan9642 | 0:6cb2eaf8b133 | 28 | double setFrequency(double freq); |
caoyuan9642 | 0:6cb2eaf8b133 | 29 | |
caoyuan9642 | 0:6cb2eaf8b133 | 30 | double getStepCount(); |
caoyuan9642 | 0:6cb2eaf8b133 | 31 | |
caoyuan9642 | 0:6cb2eaf8b133 | 32 | void setStepCount(double set) |
caoyuan9642 | 0:6cb2eaf8b133 | 33 | { |
caoyuan9642 | 0:6cb2eaf8b133 | 34 | stepCount = set; |
caoyuan9642 | 0:6cb2eaf8b133 | 35 | } |
caoyuan9642 | 0:6cb2eaf8b133 | 36 | |
caoyuan9642 | 0:6cb2eaf8b133 | 37 | void setMicroStep(int microstep); |
caoyuan9642 | 0:6cb2eaf8b133 | 38 | |
caoyuan9642 | 0:6cb2eaf8b133 | 39 | void setCurrent(double current); |
caoyuan9642 | 0:6cb2eaf8b133 | 40 | |
caoyuan9642 | 0:6cb2eaf8b133 | 41 | void poweron(); |
caoyuan9642 | 0:6cb2eaf8b133 | 42 | void poweroff(); |
caoyuan9642 | 0:6cb2eaf8b133 | 43 | |
caoyuan9642 | 0:6cb2eaf8b133 | 44 | |
caoyuan9642 | 0:6cb2eaf8b133 | 45 | protected: |
caoyuan9642 | 0:6cb2eaf8b133 | 46 | typedef enum |
caoyuan9642 | 0:6cb2eaf8b133 | 47 | { |
caoyuan9642 | 0:6cb2eaf8b133 | 48 | WR = 0, |
caoyuan9642 | 0:6cb2eaf8b133 | 49 | CR0 = 1, |
caoyuan9642 | 0:6cb2eaf8b133 | 50 | CR1 = 2, |
caoyuan9642 | 0:6cb2eaf8b133 | 51 | CR2 = 3, |
caoyuan9642 | 0:6cb2eaf8b133 | 52 | SR0 = 4, |
caoyuan9642 | 0:6cb2eaf8b133 | 53 | SR1 = 5, |
caoyuan9642 | 0:6cb2eaf8b133 | 54 | SR2 = 6, |
caoyuan9642 | 0:6cb2eaf8b133 | 55 | SR3 = 7, |
caoyuan9642 | 0:6cb2eaf8b133 | 56 | SR4 = 8, |
caoyuan9642 | 0:6cb2eaf8b133 | 57 | CR3 = 9 |
caoyuan9642 | 0:6cb2eaf8b133 | 58 | } regaddr_t; |
caoyuan9642 | 0:6cb2eaf8b133 | 59 | |
caoyuan9642 | 0:6cb2eaf8b133 | 60 | typedef enum |
caoyuan9642 | 0:6cb2eaf8b133 | 61 | { |
caoyuan9642 | 0:6cb2eaf8b133 | 62 | IDLE = 0, STEPPING |
caoyuan9642 | 0:6cb2eaf8b133 | 63 | } stepstatus_t; |
caoyuan9642 | 0:6cb2eaf8b133 | 64 | |
caoyuan9642 | 0:6cb2eaf8b133 | 65 | SPI *spi; |
caoyuan9642 | 0:6cb2eaf8b133 | 66 | DigitalOut cs; |
caoyuan9642 | 0:6cb2eaf8b133 | 67 | StepOut step; |
caoyuan9642 | 0:6cb2eaf8b133 | 68 | DigitalOut dir; |
caoyuan9642 | 0:6cb2eaf8b133 | 69 | DigitalIn err; |
caoyuan9642 | 0:6cb2eaf8b133 | 70 | stepstatus_t status; |
caoyuan9642 | 0:6cb2eaf8b133 | 71 | int inc; |
caoyuan9642 | 0:6cb2eaf8b133 | 72 | double stepCount; |
caoyuan9642 | 0:6cb2eaf8b133 | 73 | int microstep; |
caoyuan9642 | 0:6cb2eaf8b133 | 74 | |
caoyuan9642 | 0:6cb2eaf8b133 | 75 | bool useDIR, useERR; |
caoyuan9642 | 0:6cb2eaf8b133 | 76 | |
caoyuan9642 | 0:6cb2eaf8b133 | 77 | char txbuf[2], rxbuf[2]; |
caoyuan9642 | 0:6cb2eaf8b133 | 78 | |
caoyuan9642 | 0:6cb2eaf8b133 | 79 | void assertCS(); |
caoyuan9642 | 0:6cb2eaf8b133 | 80 | void deassertCS(); |
caoyuan9642 | 0:6cb2eaf8b133 | 81 | void writeReg(regaddr_t addr, uint8_t data); |
caoyuan9642 | 0:6cb2eaf8b133 | 82 | uint8_t readReg(regaddr_t addr); |
caoyuan9642 | 0:6cb2eaf8b133 | 83 | }; |
caoyuan9642 | 0:6cb2eaf8b133 | 84 | |
caoyuan9642 | 0:6cb2eaf8b133 | 85 | #endif /* TELESCOPE_DRIVER_AMIS30543STEPPERDRIVER_H_ */ |
caoyuan9642 | 0:6cb2eaf8b133 | 86 | |
caoyuan9642 | 0:6cb2eaf8b133 | 87 |