
L6470を使用した秋月のステッピングモータードライバをうごかすライブラリとプログラム,なおもともとあるやつをぱくった上で機能を追加している
Dependencies: mbed
L6470_lib/L6470.h
- Committer:
- ryuna
- Date:
- 2014-11-11
- Revision:
- 0:298e718ad4cb
File content as of revision 0:298e718ad4cb:
#ifndef L6470_STEP_H #define L6470_STEP_H //Brid. respected #include "mbed.h" //config name.reset data; //first init config data. #define INI_ABS_POS 0 #define INI_EL_POS 0 #define INI_MARK 180 #define INI_SPEED 0 #define INI_ACC 0x8A//8A//0010 #define INI_DEC 0x8A #define INI_MAX_SPEED 0x20 #define INI_MIN_SPEED 0 #define INI_FS_SPD 0x27 #define INI_KVAL_HOLD 0x3F #define INI_KVAL_RUN 0xFF #define INI_KVAL_ACC 0x70 #define INI_KVAL_DEC 0x70 #define INI_INT_SPD 0x408 #define INI_ST_SLP 0x19 #define INI_FN_SLP_ACC 0x29 #define INI_FN_SLP_DEC 0x29 #define INI_K_THERM 0 // INI_ADC_OUT read only desu. #define INI_OCD_TH 0xF0 #define INI_STALL_TH 0x7F #define INI_STEP_MODE 0x70 #define INI_ALARM_EN 0xFF #define INI_CONFIG 0x2E88 // INI_STATUS read only desu. //レジスタのアドレス // name length<<8 + address #define ABS_POS ((22<<8)+0x01) #define EL_POS ((9<<8)+0x02) #define MARK ((22<<8)+0x03) #define SPEED ((20<<8)+0x04) #define ACC ((12<<8)+0x05) #define DEC ((12<<8)+0x06) #define MAX_SPEED ((10<<8)+0x07) #define MIN_SPEED ((13<<8)+0x08) #define FS_SPD ((10<<8)+0x15) #define KVAL_HOLD ((8<<8)+0x09) #define KVAL_RUN ((8<<8)+0x0A) #define KVAL_ACC ((8<<8)+0x0B) #define KVAL_DEC ((8<<8)+0x0C) #define INT_SPD ((14<<8)+0x0D) #define ST_SLP ((8<<8)+0x0E) #define FN_SLP_ACC ((8<<8)+0x0F) #define FN_SLP_DEC ((8<<8)+0x10) #define K_THERM ((4<<8)+0x11) #define ADC_OUT ((5<<8)+0x12) #define OCD_TH ((4<<8)+0x13) #define STALL_TH ((7<<8)+0x14) #define STEP_MODE ((8<<8)+0x16) #define ALARM_EN ((8<<8)+0x17) #define CONFIG ((16<<8)+0x18) #define STATUS ((16<<8)+0x19) class L6470{ public: /** * * @param mosi SPI mosi pin * @param miso SPI miso pin * @param sck SPI sck pin * @param _cs #cs pin * */ L6470(PinName mosi, PinName miso, PinName sck, PinName cs, PinName busy); void send(uint8_t temp); uint8_t send_r(uint8_t temp); void send_bytes(uint8_t temp[], int i); void send_bytes_r(uint8_t temp[], int i); void NOP(); void SetParam(int param, int value); int GetParam(int param); void Run(bool dir, int speed); void StepClock(bool dir); void Move(bool dir,int n_step );//n_step--22bit void GoTo(int abs_pos); void GoTo_dir(bool dir, int abs_pos); void GoUntill(bool act, bool dir, int speed); void ReleseSW(bool act,bool dir); void GoHome(); void GoMark(); void ResetPos(); void ResetDevice(); void SoftStop(); void HardStop(); void SoftHiz(); void HardHiz(); void Resets(); void BusyWait(unsigned int time); void Step(int dosu); protected: SPI m_spi; DigitalOut m_cs; DigitalIn m_busy; }; #endif