Telescope Control Library

Dependents:   PushToGo-F429

Committer:
caoyu@caoyuan9642-desktop.MIT.EDU
Date:
Mon Sep 24 19:36:48 2018 -0400
Revision:
19:fd854309cb4c
Parent:
0:6cb2eaf8b133
Fix bug in nudging with small speeds mentioned in the last commit

Who changed what in which revision?

UserRevisionLine numberNew 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