ringBuffer26

Dependencies:   mbed

Revision:
1:0cb065f9d55a
Parent:
0:333434a8611b
--- a/MotorControl.h	Fri Mar 20 10:54:58 2020 +0000
+++ b/MotorControl.h	Mon May 18 19:04:41 2020 +0000
@@ -4,33 +4,197 @@
 #include "mbed.h"
 #include <string> 
 
-#define DEBUG_MOTOR
+#define DEBUG
+
+
+#define ED_MIN_SPEED            1000
+#define ED_MAX_SPEED            3000000
+#define N_MIN_SPEED             0.001
+#define N_MAX_SPEED             125.000//125.0RPM
+
+#define REV_MAX_STEPS           -2147483648
+#define FWD_MAX_STEPS           2147483648
+
+#define MIN_CURRENT             0
+#define MAX_CURRENT             6000//6000mA
+
+#define MIN_TORQUE              0
+#define MAX_TORQUE              8500//N.m
+
+
+#define SPACE                   0x20 
+#define ACK                     0x06
+#define NAK                     0x15
+
+#define VALID_MSG_LEN           0x03
+
+#define ML_ROTATION             5.6
+#define STEPS_PER_ROTATION      1024
+
+#define CW                      1
+#define CCW                     0
+
+#define RX_ECHO_VALID           0 
+#define RX_ECHO_FAIL            1
+#define RX_REGITSER_FAIL        2
+#define RX_REGITSER_VALID       3
+#define MSG_RESEND              4
 
-#define BUFFER_SIZE  32
-#define MESSAGE 20
+#define REBOOT                  5
+
+#define MSG_RETRY_COUNT         3
+ 
+#define NOT_USED                0 
+#define STOP_NO_RAMP            0
+#define STOP_WITH_RAMP          1 
+#define STOP_WITH_STEPS         2
+
+#define BUFFER_SIZE             50//command message + data
+#define DATA_BUFFER_SIZE        20//characters
+#define DATA_ITEMS              19
+
+////////////////////////////////////////////
+// MOTOR COMMAND RESPONSE DATA STORAGE 
+/////////////////////////////////////////// 
+#define READ_DIG_IN                 0
+#define READ_DIG_OUT                1
+#define READ_CURRENT                2
+#define READ_DRV_REG                3
+#define READ_DRV_REG_EXT            4
+#define READ_DRV_TEMP               5
+#define READ_DRV_VOLTAGE            6
+#define READ_DRV_WORKING_SET        7
+#define READ_DRV_WORKING_SET_EXT    8
+#define READ_ERROR_REG              9 
+#define READ_FB_BOOST_CUR           10
+#define READ_FB_STATUS              11
+#define READ_FW_VERSION             12
+#define READ_FW_CHECKSUM            13
+#define READ_MASTER_REG             14
+#define READ_MIN_CURRENT            15
+#define READ_MAX_CURRENT            16
+#define READ_BOOST_CURRENT          17
+#define READ_NOM_CURRENT            18
+
+#define COMMANDS_TO_TEST            10
 
-#define REV_MAX_STEPS -2147483648
-#define FWD_MAX_STEPS 2147483648
-#define DEBUG
+
+////////////////////////////////////////////
+// BAUD RATES
+///////////////////////////////////////////
+#define SLOW_BAUD               9600
+#define MED_BAUD                115200
+#define FAST_BAUD               921600
+ 
+#define MOT_AL_PDT              0x0001//Protection Drive Thermal
+#define MOT_AL_PDV              0x0002//Protection Drive Voltage
+#define MOT_AL_PDC              0x0004//Protection Drive Current
+#define MOT_AL_POP              0x0008//Protection Open Phase
+#define MOT_AL_UNUSED1          0x0010//NOT USED
+#define MOT_AL_FE               0x0020//Feedback Error    
+#define MOT_AL_PCR              0x0040//Protection Current Regulation
+#define MOT_AL_POT              0x0080//Protection Open Transistor
+#define MOT_AL_UNUSED2          0x0100//NOT USED
+#define MOT_AL_SWER             0x0200//Protection Software Error
+#define MOT_AL_UNUSED3          0x0400//NOT USED
+#define MOT_AL_MC               0x0800//Missing Calibration
+#define MOT_AL_WDG              0x1000//Watchdog
+#define MOT_AL_EEF              0x2000//EEPROM Fail
+#define MOT_AL_I2T              0x4000//I2T Potection
+#define MOT_AL_UNUSED4          0x8000//NOT USED
+
  
+#define D3_BUTTON               D3
+#define D4_BUTTON               D4
+#define D5_BUTTON               D5
+#define D6_BUTTON               D6
+#define D7_BUTTON               D7
+#define D8_BUTTON               D8
+#define D9_BUTTON               D9
+#define D10_BUTTON              D10
+#define D11_BUTTON              D11
+#define D12_BUTTON              D12
 
-extern RawSerial mc_usart;// this will be USART6 for motor control 
+#define A7_OUT1                 A7
+#define A6_OUT2                 A6
+#define A5_OUT3                 A5
+
+#define A4_IN1                  A4
+#define A3_IN2                  A3
+#define A2_IN3                  A2
+
+#define A1_OUT                  A1
+#define A0_OUT                  A0
+
+extern DigitalIn d3_button;
+extern DigitalIn d4_button;
+extern DigitalIn d5_button;
+extern DigitalIn d6_button;
+extern DigitalIn d7_button;
+extern DigitalIn d8_button;
+extern DigitalIn d9_button;
+extern DigitalIn d10_button;
+extern DigitalIn d11_button;
+extern DigitalIn d12_button;
+
+extern DigitalOut a7_out1;
+extern DigitalOut a6_out2;
+extern DigitalOut a5_out3;
+extern DigitalIn a4_in1;
+extern DigitalIn a3_in2;
+extern DigitalIn a2_in3;
+
+extern DigitalOut a1_out;
+extern DigitalOut a0_out;
+
+extern char motData[][DATA_BUFFER_SIZE];//data only
+
+extern char binBuffer[];
+extern uint8_t cnt;
 extern const string rxMsgTable[];
 extern char rxMsgStore[];//received local message store
 extern char mc_Tx_Buffer[];//transmitted message buffer 
-extern volatile char mc_Rx_Buffer[];//received message buffer
+extern char mc_Rx_Buffer[];//received message buffer
 extern volatile unsigned char mc_Rx_Rd_Ptr;//circulare buffer read pointer
 extern volatile unsigned char mc_Rx_Wr_Ptr;//circulare buffer write pointer
 extern unsigned int rx_int;//received integer / character
+extern volatile bool rxMsgValid;//message received flag
+extern bool msgRdy;
 
-//unsigned char i; 
-extern bool msgRecFlag;//message received flag 
+void motEncoderISR(void);
+
+void int2bin(int value, char* buffer, int bufferSize);
 
+void rstPointers(void);
+
+void readCurrent(char *array);
+bool setDigOutput(uint8_t par1, char *array);
+void readDigInput(char *array);
+void clrRxMsg(char *array);
 void motMsg_RX_ISR(void);
-bool getMotMsg(char * msgArray);
-void motMsgDecode(unsigned int rxMsgTable[], unsigned int rxMsg[]);void clrRxMsg(char array[]);
-bool moveMot(uint8_t par1, int32_t par2);
+uint8_t getMotMsg(char *txReadCmd, char *rxRegArray);
+
 
 
 
+bool set_mL(bool direction, uint32_t mL, char *array);
+bool setRotMotor(bool direction, char *array);
+
+void initBuffer(string s, char *array, char character, uint8_t size);
+
+void dispBuffer(string s, uint8_t size, char array[]);
+void dispMotReg(string s, uint8_t regSel, char regArray[9][BUFFER_SIZE]);
+
+
+uint8_t procMotMsg(char *txMsg, char *rxMsg, char motReg[9][BUFFER_SIZE]);
+void dispRegDec(string s, uint8_t regSel, char regArray[9][BUFFER_SIZE]);
+void dispRegHex(string s, uint8_t regSel, char regArray[9][BUFFER_SIZE]);
+
+
+void data2mem(uint8_t dataLoc, char destMemArray[][DATA_BUFFER_SIZE], char sourceMemArray[BUFFER_SIZE]);//for command with <CR><VALUE>  
+void Init(void);
+
+long mapI(long x, long in_min, long in_max, long out_min, long out_max);
+float mapF(float in, float inMin, float inMax, float outMin, float outMax);
+
 #endif
\ No newline at end of file