Library for STMicroelectronics dSPIN L6470 stepper driver. "daisy-chain" supported.
Dependents: L6470_daisy_chain l6470
L6470SDC.h@1:db64ad30b4b3, 2015-06-05 (annotated)
- 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?
User | Revision | Line number | New 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 |