Library for STMicroelectronics dSPIN L6470 stepper driver. "daisy-chain" supported.

Dependents:   L6470_daisy_chain l6470

Committer:
Yajirushi
Date:
Fri Jun 05 08:48:29 2015 +0000
Revision:
1:db64ad30b4b3
Parent:
0:e1964b6e160c
Child:
2:2af83d3ccd97
add comments.

Who changed what in which revision?

UserRevisionLine numberNew contents of line
Yajirushi 0:e1964b6e160c 1 #include "mbed.h"
Yajirushi 0:e1964b6e160c 2
Yajirushi 0:e1964b6e160c 3 #ifndef L6470SDC_H
Yajirushi 0:e1964b6e160c 4 #define L6470SDC_H
Yajirushi 0:e1964b6e160c 5
Yajirushi 0:e1964b6e160c 6 //デバッグモード(GetParamやSetParamの値をシリアル出力する)
Yajirushi 0:e1964b6e160c 7 //ONにするとそれなりに動作が遅くなる
Yajirushi 0:e1964b6e160c 8 //デバッグモードOFF:コメントアウトする
Yajirushi 0:e1964b6e160c 9 //#define DEBUG_L6470SDC
Yajirushi 0:e1964b6e160c 10
Yajirushi 0:e1964b6e160c 11 //L6470のSPI通信のクロック周波数(1MHz以上、5MHz未満であること)
Yajirushi 0:e1964b6e160c 12 #define L6470_SPI_FREQ 4960000
Yajirushi 0:e1964b6e160c 13
Yajirushi 0:e1964b6e160c 14 #define CMD_NOP 0x0
Yajirushi 0:e1964b6e160c 15 #define CMD_SETPARAM 0x00
Yajirushi 0:e1964b6e160c 16 #define CMD_GETPARAM 0x20
Yajirushi 0:e1964b6e160c 17 #define CMD_RUN_PLUS 0x51
Yajirushi 0:e1964b6e160c 18 #define CMD_RUN_MINUS 0x50
Yajirushi 0:e1964b6e160c 19 #define CMD_STEP_PLUS 0x59
Yajirushi 0:e1964b6e160c 20 #define CMD_STEP_MINUS 0x58
Yajirushi 0:e1964b6e160c 21 #define CMD_ADDSTEP_PLUS 0x41
Yajirushi 0:e1964b6e160c 22 #define CMD_ADDSTEP_MINUS 0x40
Yajirushi 0:e1964b6e160c 23 #define CMD_GOTO 0x60
Yajirushi 0:e1964b6e160c 24 #define CMD_GOTO_DIR_PLUS 0x69
Yajirushi 0:e1964b6e160c 25 #define CMD_GOTO_DIR_MINUS 0x68
Yajirushi 0:e1964b6e160c 26 #define CMD_GO_UNTIL_PLUS 0x83
Yajirushi 0:e1964b6e160c 27 #define CMD_GO_UNTIL_MINUS 0x82
Yajirushi 0:e1964b6e160c 28 #define CMD_RELEASE_SW_PLUS 0x93
Yajirushi 0:e1964b6e160c 29 #define CMD_RELEASE_SW_MINUS 0x92
Yajirushi 0:e1964b6e160c 30 #define CMD_GO_HOME 0x70
Yajirushi 0:e1964b6e160c 31 #define CMD_GO_MARK 0x78
Yajirushi 0:e1964b6e160c 32 #define CMD_RESET_POS 0xD8
Yajirushi 0:e1964b6e160c 33 #define CMD_RESET_DEVICE 0xC0
Yajirushi 0:e1964b6e160c 34 #define CMD_SOFT_STOP 0xB0
Yajirushi 0:e1964b6e160c 35 #define CMD_HARD_STOP 0xB8
Yajirushi 0:e1964b6e160c 36 #define CMD_SOFT_HIZ 0xA0
Yajirushi 0:e1964b6e160c 37 #define CMD_HARD_HIZ 0xA8
Yajirushi 0:e1964b6e160c 38 #define CMD_GET_STATUS 0xD0
Yajirushi 0:e1964b6e160c 39
Yajirushi 0:e1964b6e160c 40 #define REG_NOTHING 0x0
Yajirushi 0:e1964b6e160c 41 #define REG_ABS_POS 0x01
Yajirushi 0:e1964b6e160c 42 #define REG_EL_POS 0x02
Yajirushi 0:e1964b6e160c 43 #define REG_MARK 0x03
Yajirushi 0:e1964b6e160c 44 #define REG_SPEED 0x04
Yajirushi 0:e1964b6e160c 45 #define REG_ACC 0x05
Yajirushi 0:e1964b6e160c 46 #define REG_DEC 0x06
Yajirushi 0:e1964b6e160c 47 #define REG_MAX_SPEED 0x07
Yajirushi 0:e1964b6e160c 48 #define REG_MIN_SPEED 0x08
Yajirushi 0:e1964b6e160c 49 #define REG_KVAL_HOLD 0x09
Yajirushi 0:e1964b6e160c 50 #define REG_KVAL_RUN 0x0A
Yajirushi 0:e1964b6e160c 51 #define REG_KVAL_ACC 0x0B
Yajirushi 0:e1964b6e160c 52 #define REG_KVAL_DEC 0x0C
Yajirushi 0:e1964b6e160c 53 #define REG_INT_SPD 0x0D
Yajirushi 0:e1964b6e160c 54 #define REG_ST_SLP 0x0E
Yajirushi 0:e1964b6e160c 55 #define REG_FN_SLP_ACC 0x0F
Yajirushi 0:e1964b6e160c 56 #define REG_FN_SLP_DEC 0x10
Yajirushi 0:e1964b6e160c 57 #define REG_K_THERM 0x11
Yajirushi 0:e1964b6e160c 58 #define REG_ADC_OUT 0x12
Yajirushi 0:e1964b6e160c 59 #define REG_OCD_TH 0x13
Yajirushi 0:e1964b6e160c 60 #define REG_STALL_TH 0x14
Yajirushi 0:e1964b6e160c 61 #define REG_FS_SPD 0x15
Yajirushi 0:e1964b6e160c 62 #define REG_STEP_MODE 0x16
Yajirushi 0:e1964b6e160c 63 #define REG_ALARM_EN 0x17
Yajirushi 0:e1964b6e160c 64 #define REG_CONFIG 0x18
Yajirushi 0:e1964b6e160c 65 #define REG_STATUS 0x19
Yajirushi 0:e1964b6e160c 66
Yajirushi 1:db64ad30b4b3 67 /** Library for STMicroelectronics dSPIN L6470 stepper driver. "daisy-chain" supported.
Yajirushi 1:db64ad30b4b3 68 *
Yajirushi 1:db64ad30b4b3 69 * Example:
Yajirushi 1:db64ad30b4b3 70 * @code
Yajirushi 1:db64ad30b4b3 71 * #include "mbed.h"
Yajirushi 1:db64ad30b4b3 72 * #include "L6470SDC.h"
Yajirushi 1:db64ad30b4b3 73 *
Yajirushi 1:db64ad30b4b3 74 * L6470SDC l6470(USBTX, USBRX, SPI_MOSI, SPI_MISO, SPI_SCK, D10);
Yajirushi 1:db64ad30b4b3 75 *
Yajirushi 1:db64ad30b4b3 76 * int main() {
Yajirushi 1:db64ad30b4b3 77 * //initialize
Yajirushi 1:db64ad30b4b3 78 * l6470.init();
Yajirushi 1:db64ad30b4b3 79 *
Yajirushi 1:db64ad30b4b3 80 * //set maximum speed
Yajirushi 1:db64ad30b4b3 81 * l6470.setMaximumSpeed(1, l6470.calcMaxSpd(100));
Yajirushi 1:db64ad30b4b3 82 *
Yajirushi 1:db64ad30b4b3 83 * //run 300step/s,clockwise
Yajirushi 1:db64ad30b4b3 84 * l6470.run(1, l6470.calcSpd(300), true);
Yajirushi 1:db64ad30b4b3 85 * wait(5.0);
Yajirushi 1:db64ad30b4b3 86 *
Yajirushi 1:db64ad30b4b3 87 * //motor stop
Yajirushi 1:db64ad30b4b3 88 * l6470.stop(1);
Yajirushi 1:db64ad30b4b3 89 *
Yajirushi 1:db64ad30b4b3 90 * //motor return home position.
Yajirushi 1:db64ad30b4b3 91 * l6470.home(1);
Yajirushi 1:db64ad30b4b3 92 * }
Yajirushi 1:db64ad30b4b3 93 * @endcode
Yajirushi 1:db64ad30b4b3 94 */
Yajirushi 0:e1964b6e160c 95 class L6470SDC{
Yajirushi 0:e1964b6e160c 96 public:
Yajirushi 1:db64ad30b4b3 97 /** Constructor:(Serial, SPI, CS) PinName
Yajirushi 1:db64ad30b4b3 98 *
Yajirushi 1:db64ad30b4b3 99 * @param tx Serial USB_TX PinName
Yajirushi 1:db64ad30b4b3 100 * @param rx Serial USB_RX PinName
Yajirushi 1:db64ad30b4b3 101 * @param mosi SPI Master-out PinName
Yajirushi 1:db64ad30b4b3 102 * @param miso SPI Slave-out PinName
Yajirushi 1:db64ad30b4b3 103 * @param sclk SPI Clock PinName
Yajirushi 1:db64ad30b4b3 104 * @param csel SPI ChipSelect PinName
Yajirushi 1:db64ad30b4b3 105 */
Yajirushi 0:e1964b6e160c 106 L6470SDC(PinName tx, PinName rx, PinName mosi, PinName miso, PinName sclk, PinName csel);
Yajirushi 1:db64ad30b4b3 107
Yajirushi 1:db64ad30b4b3 108 /** Constructor:(Serial, SPI, CS) PinName & DigitalOut*
Yajirushi 1:db64ad30b4b3 109 *
Yajirushi 1:db64ad30b4b3 110 * @param tx Serial USB_TX PinName
Yajirushi 1:db64ad30b4b3 111 * @param rx Serial USB_RX PinName
Yajirushi 1:db64ad30b4b3 112 * @param mosi SPI Master-out PinName
Yajirushi 1:db64ad30b4b3 113 * @param miso SPI Slave-out PinName
Yajirushi 1:db64ad30b4b3 114 * @param sclk SPI Clock PinName
Yajirushi 1:db64ad30b4b3 115 * @param *csel SPI ChipSelect
Yajirushi 1:db64ad30b4b3 116 * Example:
Yajirushi 1:db64ad30b4b3 117 * DigitalOut my_cs(D10);
Yajirushi 1:db64ad30b4b3 118 * L6470SDC stepper(USBTX, USBRX, SPI_MOSI, SPI_MISO, SPI_SCLK, &my_cs);
Yajirushi 1:db64ad30b4b3 119 * ~~~~~~
Yajirushi 1:db64ad30b4b3 120 */
Yajirushi 0:e1964b6e160c 121 L6470SDC(PinName tx, PinName rx, PinName mosi, PinName miso, PinName sclk, DigitalOut *csel);
Yajirushi 1:db64ad30b4b3 122
Yajirushi 1:db64ad30b4b3 123 /** Constructor:(Serial, SPI, CS) Serial* & PinName
Yajirushi 1:db64ad30b4b3 124 *
Yajirushi 1:db64ad30b4b3 125 * @param *serial Serial
Yajirushi 1:db64ad30b4b3 126 * @param mosi SPI Master-out PinName
Yajirushi 1:db64ad30b4b3 127 * @param miso SPI Slave-out PinName
Yajirushi 1:db64ad30b4b3 128 * @param sclk SPI Clock PinName
Yajirushi 1:db64ad30b4b3 129 * @param csel SPI ChipSelect PinName
Yajirushi 1:db64ad30b4b3 130 * Example:
Yajirushi 1:db64ad30b4b3 131 * Serial usb_serial(USBTX, USBRX);
Yajirushi 1:db64ad30b4b3 132 * L6470SDC stepper(&usb_serial, SPI_MOSI, SPI_MISO, SPI_SCLK, D10);
Yajirushi 1:db64ad30b4b3 133 * ~~~~~~~~~~~
Yajirushi 1:db64ad30b4b3 134 */
Yajirushi 0:e1964b6e160c 135 L6470SDC(Serial *serial, PinName mosi, PinName miso, PinName sclk, PinName csel);
Yajirushi 1:db64ad30b4b3 136
Yajirushi 1:db64ad30b4b3 137 /** Constructor:(Serial, SPI, CS) Serial* & PinName & DigitalOut*
Yajirushi 1:db64ad30b4b3 138 *
Yajirushi 1:db64ad30b4b3 139 * @param *serial Serial
Yajirushi 1:db64ad30b4b3 140 * @param mosi SPI Master-out PinName
Yajirushi 1:db64ad30b4b3 141 * @param miso SPI Slave-out PinName
Yajirushi 1:db64ad30b4b3 142 * @param sclk SPI Clock PinName
Yajirushi 1:db64ad30b4b3 143 * @param *csel SPI ChipSelect
Yajirushi 1:db64ad30b4b3 144 * Example:
Yajirushi 1:db64ad30b4b3 145 * Serial usb_serial(USBTX, USBRX);
Yajirushi 1:db64ad30b4b3 146 * DigitalOut my_cs(D10);
Yajirushi 1:db64ad30b4b3 147 * L6470SDC stepper(&usb_serial, SPI_MOSI, SPI_MISO, SPI_SCLK, &my_cs);
Yajirushi 1:db64ad30b4b3 148 * ~~~~~~~~~~~ ~~~~~~
Yajirushi 1:db64ad30b4b3 149 */
Yajirushi 0:e1964b6e160c 150 L6470SDC(Serial *serial, PinName mosi, PinName miso, PinName sclk, DigitalOut *csel);
Yajirushi 1:db64ad30b4b3 151
Yajirushi 1:db64ad30b4b3 152 /** Constructor:(Serial, SPI, CS) Serial* & SPI* & PinName
Yajirushi 1:db64ad30b4b3 153 *
Yajirushi 1:db64ad30b4b3 154 * @param *serial Serial
Yajirushi 1:db64ad30b4b3 155 * @param *spi SPI
Yajirushi 1:db64ad30b4b3 156 * @param csel SPI ChipSelect PinName
Yajirushi 1:db64ad30b4b3 157 * Example:
Yajirushi 1:db64ad30b4b3 158 * Serial usb_serial(USBTX, USBRX);
Yajirushi 1:db64ad30b4b3 159 * SPI my_spi(SPI_MOSI, SPI_MISO, SPI_SCLK);
Yajirushi 1:db64ad30b4b3 160 * L6470SDC stepper(&usb_serial, &my_spi, D10);
Yajirushi 1:db64ad30b4b3 161 * ~~~~~~~~~~~ ~~~~~~~
Yajirushi 1:db64ad30b4b3 162 */
Yajirushi 0:e1964b6e160c 163 L6470SDC(Serial *serial, SPI *spi, PinName csel);
Yajirushi 1:db64ad30b4b3 164
Yajirushi 1:db64ad30b4b3 165 /** Constructor:(Serial, SPI, CS) Serial* & SPI* & DigitalOut*
Yajirushi 1:db64ad30b4b3 166 *
Yajirushi 1:db64ad30b4b3 167 * @param *serial Serial
Yajirushi 1:db64ad30b4b3 168 * @param *spi SPI
Yajirushi 1:db64ad30b4b3 169 * @param *csel SPI ChipSelect
Yajirushi 1:db64ad30b4b3 170 * Example:
Yajirushi 1:db64ad30b4b3 171 * Serial usb_serial(USBTX, USBRX);
Yajirushi 1:db64ad30b4b3 172 * SPI my_spi(SPI_MOSI, SPI_MISO, SPI_SCLK);
Yajirushi 1:db64ad30b4b3 173 * DigitalOut my_cs(D10);
Yajirushi 1:db64ad30b4b3 174 * L6470SDC stepper(&usb_serial, &my_spi, &my_cs);
Yajirushi 1:db64ad30b4b3 175 * ~~~~~~~~~~~ ~~~~~~~ ~~~~~~
Yajirushi 1:db64ad30b4b3 176 */
Yajirushi 0:e1964b6e160c 177 L6470SDC(Serial *serial, SPI *spi, DigitalOut *csel);
Yajirushi 1:db64ad30b4b3 178
Yajirushi 1:db64ad30b4b3 179 /** Constructor: without Debug Serial (SPI, CS) PinName
Yajirushi 1:db64ad30b4b3 180 *
Yajirushi 1:db64ad30b4b3 181 * @param mosi SPI Master-out PinName
Yajirushi 1:db64ad30b4b3 182 * @param miso SPI Slave-out PinName
Yajirushi 1:db64ad30b4b3 183 * @param sclk SPI Clock PinName
Yajirushi 1:db64ad30b4b3 184 * @param csel SPI ChipSelect PinName
Yajirushi 1:db64ad30b4b3 185 */
Yajirushi 0:e1964b6e160c 186 L6470SDC(PinName mosi, PinName miso, PinName sclk, PinName csel);
Yajirushi 1:db64ad30b4b3 187
Yajirushi 1:db64ad30b4b3 188 /** Constructor: without Debug Serial (SPI, CS) PinName & DigitalOut*
Yajirushi 1:db64ad30b4b3 189 *
Yajirushi 1:db64ad30b4b3 190 * @param mosi SPI Master-out PinName
Yajirushi 1:db64ad30b4b3 191 * @param miso SPI Slave-out PinName
Yajirushi 1:db64ad30b4b3 192 * @param sclk SPI Clock PinName
Yajirushi 1:db64ad30b4b3 193 * @param *csel SPI ChipSelect
Yajirushi 1:db64ad30b4b3 194 * Example:
Yajirushi 1:db64ad30b4b3 195 * DigitalOut cs1(D10);
Yajirushi 1:db64ad30b4b3 196 * L6470SDC stepper(SPI_MOSI, SPI_MISO, SPI_SCLK, &cs1);
Yajirushi 1:db64ad30b4b3 197 * ~~~~
Yajirushi 1:db64ad30b4b3 198 */
Yajirushi 0:e1964b6e160c 199 L6470SDC(PinName mosi, PinName miso, PinName sclk, DigitalOut *csel);
Yajirushi 1:db64ad30b4b3 200
Yajirushi 1:db64ad30b4b3 201 /** Constructor: without Debug Serial (SPI, CS) SPI* & PinName
Yajirushi 1:db64ad30b4b3 202 *
Yajirushi 1:db64ad30b4b3 203 * @param *spi SPI
Yajirushi 1:db64ad30b4b3 204 * @param csel SPI ChipSelect PinName
Yajirushi 1:db64ad30b4b3 205 * Example:
Yajirushi 1:db64ad30b4b3 206 * SPI spi1(SPI_MOSI, SPI_MISO, SPI_SCLK);
Yajirushi 1:db64ad30b4b3 207 * L6470SDC stepper(&spi1, D10);
Yajirushi 1:db64ad30b4b3 208 * ~~~~~
Yajirushi 1:db64ad30b4b3 209 */
Yajirushi 0:e1964b6e160c 210 L6470SDC(SPI *spi, PinName csel);
Yajirushi 1:db64ad30b4b3 211
Yajirushi 1:db64ad30b4b3 212 /** Constructor: without Debug Serial (SPI, CS) SPI* & DigitalOut*
Yajirushi 1:db64ad30b4b3 213 *
Yajirushi 1:db64ad30b4b3 214 * @param *spi SPI
Yajirushi 1:db64ad30b4b3 215 * @param *csel SPI ChipSelect
Yajirushi 1:db64ad30b4b3 216 * Example:
Yajirushi 1:db64ad30b4b3 217 * SPI spi1(SPI_MOSI, SPI_MISO, SPI_SCLK);
Yajirushi 1:db64ad30b4b3 218 * DigitalOut cs1(D10);
Yajirushi 1:db64ad30b4b3 219 * L6470SDC stepper(&spi1, &cs1);
Yajirushi 1:db64ad30b4b3 220 * ~~~~~ ~~~~
Yajirushi 1:db64ad30b4b3 221 */
Yajirushi 0:e1964b6e160c 222 L6470SDC(SPI *spi, DigitalOut *csel);
Yajirushi 0:e1964b6e160c 223
Yajirushi 0:e1964b6e160c 224 private:
Yajirushi 0:e1964b6e160c 225 Serial *pc;
Yajirushi 0:e1964b6e160c 226 SPI *spi;
Yajirushi 0:e1964b6e160c 227 DigitalOut *cs;
Yajirushi 0:e1964b6e160c 228
Yajirushi 0:e1964b6e160c 229 bool hasSerial;
Yajirushi 1:db64ad30b4b3 230 int motor_count;
Yajirushi 0:e1964b6e160c 231
Yajirushi 1:db64ad30b4b3 232 void setCmd(int motorNumber, unsigned char cmdAddress, unsigned long value, int bitLen);
Yajirushi 1:db64ad30b4b3 233 void setParam(int motorNumber, unsigned char regAddress, unsigned long value, int bitLen);
Yajirushi 1:db64ad30b4b3 234 unsigned long getParam(int motorNumber, unsigned char regAddress, int bitLen);
Yajirushi 1:db64ad30b4b3 235 void sendCMD(unsigned char cmd);
Yajirushi 0:e1964b6e160c 236
Yajirushi 0:e1964b6e160c 237 public:
Yajirushi 1:db64ad30b4b3 238 /** Initialize L6470
Yajirushi 1:db64ad30b4b3 239 *
Yajirushi 1:db64ad30b4b3 240 * @param initSPI If initialize SPI parameters.(e.g. clockspeed and mode) = true(default)
Yajirushi 1:db64ad30b4b3 241 */
Yajirushi 1:db64ad30b4b3 242 void init(bool initSPI = true);
Yajirushi 1:db64ad30b4b3 243
Yajirushi 1:db64ad30b4b3 244 /** Get connected(daisy-chained) motor count.
Yajirushi 1:db64ad30b4b3 245 *
Yajirushi 1:db64ad30b4b3 246 * @returns Connected(daisy-chained) motor count. If not using daisy-chain, return always 1. maybe...
Yajirushi 1:db64ad30b4b3 247 */
Yajirushi 1:db64ad30b4b3 248 int getMotorCount();
Yajirushi 0:e1964b6e160c 249
Yajirushi 1:db64ad30b4b3 250 /** Get motor Busy-flag status.
Yajirushi 1:db64ad30b4b3 251 *
Yajirushi 1:db64ad30b4b3 252 * @param motorNumber Chained motor-number. If not using daisy-chain, you must be motorNumber = 1.
Yajirushi 1:db64ad30b4b3 253 * @returns Busy status.(false = Busy-flag 0, true = Busy-flag 1)
Yajirushi 1:db64ad30b4b3 254 */
Yajirushi 0:e1964b6e160c 255 bool isBusy(int motorNumber);
Yajirushi 1:db64ad30b4b3 256
Yajirushi 1:db64ad30b4b3 257 /** Get motor Busy-flag status.
Yajirushi 1:db64ad30b4b3 258 *
Yajirushi 1:db64ad30b4b3 259 * @param motorNumber Chained motor-number. If not using daisy-chain, you must be motorNumber = 1.
Yajirushi 1:db64ad30b4b3 260 * @param hex_speed Motor rotate speed(hex_value Step/s). -> please use "calcSpd(stepPerSecond)" method.
Yajirushi 1:db64ad30b4b3 261 * @param isClockwise clockwise = true. counter clockwise = false.
Yajirushi 1:db64ad30b4b3 262 */
Yajirushi 0:e1964b6e160c 263 void run(int motorNumber, unsigned long hex_speed, bool isClockwise);
Yajirushi 1:db64ad30b4b3 264
Yajirushi 0:e1964b6e160c 265 void step(int motorNumber, unsigned int count, bool isClockwise);
Yajirushi 0:e1964b6e160c 266 void move(int motorNumber, unsigned long stepsCount, bool isClockwise);
Yajirushi 0:e1964b6e160c 267 void goto1(int motorNumber, unsigned long ABSPos);
Yajirushi 0:e1964b6e160c 268 void goto2(int motorNumber, unsigned long ABSPos, bool isClockwise);
Yajirushi 0:e1964b6e160c 269 void goUntil(int motorNumber, unsigned long hex_speed, bool isClockwise, bool setMark);
Yajirushi 0:e1964b6e160c 270 void releaseSwitch(int motorNumber, bool isClockwise, bool setMark);
Yajirushi 0:e1964b6e160c 271 void home(int motorNumber);
Yajirushi 0:e1964b6e160c 272 void zero(int motorNumber);
Yajirushi 0:e1964b6e160c 273 void gotoMark(int motorNumber);
Yajirushi 0:e1964b6e160c 274 void resetHome(int motorNumber);
Yajirushi 0:e1964b6e160c 275 void resetZero(int motorNumber);
Yajirushi 0:e1964b6e160c 276 void motorReset(int motorNumber);
Yajirushi 0:e1964b6e160c 277 void stop(int motorNumber);
Yajirushi 0:e1964b6e160c 278 void stopImmidiate(int motorNumber);
Yajirushi 0:e1964b6e160c 279 void stop_HighImpedance(int motorNumber);
Yajirushi 0:e1964b6e160c 280 void stopImmidiate_HighImpedance(int motorNumber);
Yajirushi 0:e1964b6e160c 281
Yajirushi 0:e1964b6e160c 282 // calc method -----------------------------------------------------------------------------
Yajirushi 0:e1964b6e160c 283 unsigned long calcSpd(float stepPerSecond); //回転速度(step/s)をParam形式に変換
Yajirushi 0:e1964b6e160c 284 unsigned short calcAcc(float stepPerSecond_2); //加速(step/s^2)をParam形式に変換
Yajirushi 0:e1964b6e160c 285 unsigned short calcDec(float stepPerSecond_2); //減速(step/s^2)をParam形式に変換
Yajirushi 0:e1964b6e160c 286 unsigned short calcMaxSpd(float stepPerSecond); //最大回転速度(step/s)をParam形式に変換
Yajirushi 0:e1964b6e160c 287 unsigned short calcMinSpd(float stepPerSecond); //最低回転速度(step/s)をParam形式に変換
Yajirushi 0:e1964b6e160c 288 unsigned short calcIntSpd(float stepPerSecond); //加減速曲線の切り替わる速度(step/s)をParam形式に変換
Yajirushi 0:e1964b6e160c 289 unsigned short calcFullStepSpd(float stepPerSecond); //フルステップに切り替わる速度(step/s)をParam形式に変換
Yajirushi 0:e1964b6e160c 290
Yajirushi 0:e1964b6e160c 291 // set method ------------------------------------------------------------------------------
Yajirushi 0:e1964b6e160c 292 void setAbsPosition(int motorNumber, unsigned long value); //絶対座標設定
Yajirushi 0:e1964b6e160c 293 void setElecPosition(int motorNumber, unsigned short value); //マイクロステップ位置設定
Yajirushi 0:e1964b6e160c 294 void setMarkPosition(int motorNumber, unsigned long value); //ホームポジション設定
Yajirushi 0:e1964b6e160c 295 void setAcceleration(int motorNumber, unsigned short value); //加速設定
Yajirushi 0:e1964b6e160c 296 void setDeceleration(int motorNumber, unsigned short value); //減速設定
Yajirushi 0:e1964b6e160c 297 void setMaximumSpeed(int motorNumber, unsigned short value); //最大回転速度設定
Yajirushi 0:e1964b6e160c 298 void setMinimumSpeed(int motorNumber, unsigned short value); //最低回転速度設定(普通はゼロ)
Yajirushi 0:e1964b6e160c 299 void setHoldingKVAL(int motorNumber, unsigned char value); //モーター停止中の電圧
Yajirushi 0:e1964b6e160c 300 void setRunningKVAL(int motorNumber, unsigned char value); //モーター駆動中の電圧
Yajirushi 0:e1964b6e160c 301 void setAccelerationKVAL(int motorNumber, unsigned char value); //モーター加速中の電圧
Yajirushi 0:e1964b6e160c 302 void setDecelerationKVAL(int motorNumber, unsigned char value); //モーター減速中の電圧
Yajirushi 0:e1964b6e160c 303 void setKVAL( //モーターの電圧(一度に設定)
Yajirushi 0:e1964b6e160c 304 int motorNumber,
Yajirushi 0:e1964b6e160c 305 unsigned char holdVal, unsigned char runVal,
Yajirushi 0:e1964b6e160c 306 unsigned char accVal, unsigned char decVal
Yajirushi 0:e1964b6e160c 307 );
Yajirushi 0:e1964b6e160c 308 void setInterpolateSpeed(int motorNumber, unsigned short value); //加減速補間を開始するスピード
Yajirushi 0:e1964b6e160c 309 void setInterpolateSlope(int motorNumber, unsigned char value); //加減速補間の傾き
Yajirushi 0:e1964b6e160c 310 void setAccSlopeFinal(int motorNumber, unsigned char value); //加速最終時の補間の傾き
Yajirushi 0:e1964b6e160c 311 void setDecSlopeFinal(int motorNumber, unsigned char value); //減速最終時の補間の傾き
Yajirushi 0:e1964b6e160c 312 void setThermoCorrect(int motorNumber, unsigned char value); //高温時の補正
Yajirushi 0:e1964b6e160c 313 void setOCThreshold(int motorNumber, unsigned char value); //オーバーカレントの電流閾値
Yajirushi 0:e1964b6e160c 314 void setStallThreshold(int motorNumber, unsigned char value); //ストールの電流閾値
Yajirushi 0:e1964b6e160c 315 void setFSSpeed(int motorNumber, unsigned short value); //フルステップ駆動に切り替えるスピード
Yajirushi 0:e1964b6e160c 316 void setStepMode(int motorNumber, unsigned char value); //マイクロステッピングモード指定
Yajirushi 0:e1964b6e160c 317 void setAlermEnable(int motorNumber, unsigned char value); //アラームの有効無効
Yajirushi 0:e1964b6e160c 318 void setSystemConfig(int motorNumber, unsigned short value); //ドライバシステム設定
Yajirushi 0:e1964b6e160c 319
Yajirushi 0:e1964b6e160c 320 // get method ------------------------------------------------------------------------------
Yajirushi 0:e1964b6e160c 321 unsigned long getSpeed(int motorNumber); //現在の回転スピード
Yajirushi 0:e1964b6e160c 322 unsigned short getADC(int motorNumber); //ADCの取得
Yajirushi 0:e1964b6e160c 323 unsigned short getStatus(int motorNumber); //ステータス読み取り
Yajirushi 0:e1964b6e160c 324 unsigned long getAbsPosition(int motorNumber); //絶対座標
Yajirushi 0:e1964b6e160c 325 unsigned short getElecPosition(int motorNumber); //マイクロステップ位置
Yajirushi 0:e1964b6e160c 326 unsigned long getMarkPosition(int motorNumber); //ホームポジション
Yajirushi 0:e1964b6e160c 327 unsigned short getAcceleration(int motorNumber); //加速
Yajirushi 0:e1964b6e160c 328 unsigned short getDeceleration(int motorNumber); //減速
Yajirushi 0:e1964b6e160c 329 unsigned short getMaximumSpeed(int motorNumber); //最大回転速度
Yajirushi 0:e1964b6e160c 330 unsigned short getMinimumSpeed(int motorNumber); //最低回転速度(普通はゼロ)
Yajirushi 0:e1964b6e160c 331 unsigned char getHoldingKVAL(int motorNumber); //モーター停止中の電圧
Yajirushi 0:e1964b6e160c 332 unsigned char getRunningKVAL(int motorNumber); //モーター駆動中の電圧
Yajirushi 0:e1964b6e160c 333 unsigned char getAccelerationKVAL(int motorNumber); //モーター加速中の電圧
Yajirushi 0:e1964b6e160c 334 unsigned char getDecelerationKVAL(int motorNumber); //モーター減速中の電圧
Yajirushi 0:e1964b6e160c 335 unsigned short getInterpolateSpeed(int motorNumber); //加減速補間を開始するスピード
Yajirushi 0:e1964b6e160c 336 unsigned char getInterpolateSlope(int motorNumber); //加減速補間の傾き
Yajirushi 0:e1964b6e160c 337 unsigned char getAccSlopeFinal(int motorNumber); //加速最終時の補間の傾き
Yajirushi 0:e1964b6e160c 338 unsigned char getDecSlopeFinal(int motorNumber); //減速最終時の補間の傾き
Yajirushi 0:e1964b6e160c 339 unsigned char getThermoCorrect(int motorNumber); //高温時の補正
Yajirushi 0:e1964b6e160c 340 unsigned char getOCThreshold(int motorNumber); //オーバーカレントの電流閾値
Yajirushi 0:e1964b6e160c 341 unsigned char getStallThreshold(int motorNumber); //ストールの電流閾値
Yajirushi 0:e1964b6e160c 342 unsigned short getFSSpeed(int motorNumber); //フルステップ駆動に切り替えるスピード
Yajirushi 0:e1964b6e160c 343 unsigned char getStepMode(int motorNumber); //マイクロステッピングモード
Yajirushi 0:e1964b6e160c 344 unsigned char getAlermEnable(int motorNumber); //アラームの有効無効
Yajirushi 0:e1964b6e160c 345 unsigned short getSystemConfig(int motorNumber); //ドライバシステム設定
Yajirushi 0:e1964b6e160c 346 };
Yajirushi 0:e1964b6e160c 347
Yajirushi 0:e1964b6e160c 348 #endif