J L / Mbed 2 deprecated ringBuffer26a

Dependencies:   mbed

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers MotorControl.h Source File

MotorControl.h

00001 #ifndef MOTORCONTROL_H
00002 #define MOTORCONTROL_H
00003 
00004 #include "mbed.h"
00005 #include <string> 
00006 
00007 #define DEBUG
00008 
00009 
00010 #define ED_MIN_SPEED            1000
00011 #define ED_MAX_SPEED            3000000
00012 #define N_MIN_SPEED             0.001
00013 #define N_MAX_SPEED             125.000//125.0RPM
00014 
00015 #define REV_MAX_STEPS           -2147483648
00016 #define FWD_MAX_STEPS           2147483648
00017 
00018 #define MIN_CURRENT             0
00019 #define MAX_CURRENT             6000//6000mA
00020 
00021 #define MIN_TORQUE              0
00022 #define MAX_TORQUE              8500//N.m
00023 
00024 
00025 #define SPACE                   0x20 
00026 #define ACK                     0x06
00027 #define NAK                     0x15
00028 
00029 #define VALID_MSG_LEN           0x03
00030 
00031 #define ML_ROTATION             5.6
00032 #define STEPS_PER_ROTATION      1024
00033 
00034 #define CW                      1
00035 #define CCW                     0
00036 
00037 #define RX_ECHO_VALID           0 
00038 #define RX_ECHO_FAIL            1
00039 #define RX_REGITSER_FAIL        2
00040 #define RX_REGITSER_VALID       3
00041 #define MSG_RESEND              4
00042 
00043 #define REBOOT                  5
00044 
00045 #define MSG_RETRY_COUNT         3
00046  
00047 #define NOT_USED                0 
00048 #define STOP_NO_RAMP            0
00049 #define STOP_WITH_RAMP          1 
00050 #define STOP_WITH_STEPS         2
00051 
00052 #define BUFFER_SIZE             50//command message + data
00053 #define DATA_BUFFER_SIZE        20//characters
00054 #define DATA_ITEMS              19
00055 
00056 ////////////////////////////////////////////
00057 // MOTOR COMMAND RESPONSE DATA STORAGE 
00058 /////////////////////////////////////////// 
00059 #define READ_DIG_IN                 0
00060 #define READ_DIG_OUT                1
00061 #define READ_CURRENT                2
00062 #define READ_DRV_REG                3
00063 #define READ_DRV_REG_EXT            4
00064 #define READ_DRV_TEMP               5
00065 #define READ_DRV_VOLTAGE            6
00066 #define READ_DRV_WORKING_SET        7
00067 #define READ_DRV_WORKING_SET_EXT    8
00068 #define READ_ERROR_REG              9 
00069 #define READ_FB_BOOST_CUR           10
00070 #define READ_FB_STATUS              11
00071 #define READ_FW_VERSION             12
00072 #define READ_FW_CHECKSUM            13
00073 #define READ_MASTER_REG             14
00074 #define READ_MIN_CURRENT            15
00075 #define READ_MAX_CURRENT            16
00076 #define READ_BOOST_CURRENT          17
00077 #define READ_NOM_CURRENT            18
00078 
00079 #define COMMANDS_TO_TEST            10
00080 
00081 
00082 ////////////////////////////////////////////
00083 // BAUD RATES
00084 ///////////////////////////////////////////
00085 #define SLOW_BAUD               9600
00086 #define MED_BAUD                115200
00087 #define FAST_BAUD               921600
00088  
00089 #define MOT_AL_PDT              0x0001//Protection Drive Thermal
00090 #define MOT_AL_PDV              0x0002//Protection Drive Voltage
00091 #define MOT_AL_PDC              0x0004//Protection Drive Current
00092 #define MOT_AL_POP              0x0008//Protection Open Phase
00093 #define MOT_AL_UNUSED1          0x0010//NOT USED
00094 #define MOT_AL_FE               0x0020//Feedback Error    
00095 #define MOT_AL_PCR              0x0040//Protection Current Regulation
00096 #define MOT_AL_POT              0x0080//Protection Open Transistor
00097 #define MOT_AL_UNUSED2          0x0100//NOT USED
00098 #define MOT_AL_SWER             0x0200//Protection Software Error
00099 #define MOT_AL_UNUSED3          0x0400//NOT USED
00100 #define MOT_AL_MC               0x0800//Missing Calibration
00101 #define MOT_AL_WDG              0x1000//Watchdog
00102 #define MOT_AL_EEF              0x2000//EEPROM Fail
00103 #define MOT_AL_I2T              0x4000//I2T Potection
00104 #define MOT_AL_UNUSED4          0x8000//NOT USED
00105 
00106  
00107 #define D3_BUTTON               D3
00108 #define D4_BUTTON               D4
00109 #define D5_BUTTON               D5
00110 #define D6_BUTTON               D6
00111 #define D7_BUTTON               D7
00112 #define D8_BUTTON               D8
00113 #define D9_BUTTON               D9
00114 #define D10_BUTTON              D10
00115 #define D11_BUTTON              D11
00116 #define D12_BUTTON              D12
00117 
00118 #define A7_OUT1                 A7
00119 #define A6_OUT2                 A6
00120 #define A5_OUT3                 A5
00121 
00122 #define A4_IN1                  A4
00123 #define A3_IN2                  A3
00124 #define A2_IN3                  A2
00125 
00126 #define A1_OUT                  A1
00127 #define A0_OUT                  A0
00128 
00129 extern DigitalIn d3_button;
00130 extern DigitalIn d4_button;
00131 extern DigitalIn d5_button;
00132 extern DigitalIn d6_button;
00133 extern DigitalIn d7_button;
00134 extern DigitalIn d8_button;
00135 extern DigitalIn d9_button;
00136 extern DigitalIn d10_button;
00137 extern DigitalIn d11_button;
00138 extern DigitalIn d12_button;
00139 
00140 extern DigitalOut a7_out1;
00141 extern DigitalOut a6_out2;
00142 extern DigitalOut a5_out3;
00143 extern DigitalIn a4_in1;
00144 extern DigitalIn a3_in2;
00145 extern DigitalIn a2_in3;
00146 
00147 extern DigitalOut a1_out;
00148 extern DigitalOut a0_out;
00149 
00150 extern char motData[][DATA_BUFFER_SIZE];//data only
00151 
00152 extern char binBuffer[];
00153 extern uint8_t cnt;
00154 extern const string rxMsgTable[];
00155 extern char rxMsgStore[];//received local message store
00156 extern char mc_Tx_Buffer[];//transmitted message buffer 
00157 extern char mc_Rx_Buffer[];//received message buffer
00158 extern volatile unsigned char mc_Rx_Rd_Ptr;//circulare buffer read pointer
00159 extern volatile unsigned char mc_Rx_Wr_Ptr;//circulare buffer write pointer
00160 extern unsigned int rx_int;//received integer / character
00161 extern volatile bool rxMsgValid;//message received flag
00162 extern bool msgRdy;
00163 
00164 void motEncoderISR(void);
00165 
00166 void int2bin(int value, char* buffer, int bufferSize);
00167 
00168 void rstPointers(void);
00169 
00170 void readCurrent(char *array);
00171 bool setDigOutput(uint8_t par1, char *array);
00172 void readDigInput(char *array);
00173 void clrRxMsg(char *array);
00174 void motMsg_RX_ISR(void);
00175 uint8_t getMotMsg(char *txReadCmd, char *rxRegArray);
00176 
00177 
00178 
00179 
00180 bool set_mL(bool direction, uint32_t mL, char *array);
00181 bool setRotMotor(bool direction, char *array);
00182 
00183 void initBuffer(string s, char *array, char character, uint8_t size);
00184 
00185 void dispBuffer(string s, uint8_t size, char array[]);
00186 void dispMotReg(string s, uint8_t regSel, char regArray[9][BUFFER_SIZE]);
00187 
00188 
00189 uint8_t procMotMsg(char *txMsg, char *rxMsg, char motReg[9][BUFFER_SIZE]);
00190 void dispRegDec(string s, uint8_t regSel, char regArray[9][BUFFER_SIZE]);
00191 void dispRegHex(string s, uint8_t regSel, char regArray[9][BUFFER_SIZE]);
00192 
00193 
00194 void data2mem(uint8_t dataLoc, char destMemArray[][DATA_BUFFER_SIZE], char sourceMemArray[BUFFER_SIZE]);//for command with <CR><VALUE>  
00195 void Init(void);
00196 
00197 long mapI(long x, long in_min, long in_max, long out_min, long out_max);
00198 float mapF(float in, float inMin, float inMax, float outMin, float outMax);
00199 
00200 #endif