ああ

Dependencies:   F7_Ethernet mbed mbed-rtos

Revision:
9:a4cc7dc2d92f
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/common.h	Mon Sep 14 06:38:16 2020 +0000
@@ -0,0 +1,338 @@
+/* 
+   DEBUG PRINT MACRO
+   http://qiita.com/saltheads/items/e1b0ab54d3d6029c9593
+   http://tricky-code.net/nicecode/code10.php
+*/
+/* Information */
+#define LatestUpDate    "2020.07.02"
+#define ProgramRevision "Rev 0.01" 
+#define Author          "y.saito"
+#define Company         "Sanei Co.,Ltd."
+
+//#define __CREATE_SETTING_FILE__
+//#define __TARGET_BOARD_CHECK__
+
+
+//#define __WInchDebug__  // For debugging 
+
+
+// Comment out if net setting is FIX.
+// #define __NET_SETTING_FROM_LFS__
+
+
+// Read motor current 
+#define __READ_TFM_MOTOR_CURRENT__
+
+#define __IIC_COMAMND_SEND__
+
+#define __SET_WINCH_MOTOR_SPEED_BY_VOLUME__
+
+/********************************************** 
+ For Debugging
+***********************************************/ 
+#define __DEBUG_L0__
+#define __DEBUG_L1__
+#define __DEBUG_L2__
+#define __DEBUG_L3__
+#define __DEBUG_L4__
+#define __DEBUG_L5__
+
+#ifdef __DEBUG_L0__
+    #define DEBUG_PRINT_L0(...)  pc.printf(__VA_ARGS__)
+#else
+    #define DEBUG_PRINT_L0(...) 
+#endif
+#ifdef __DEBUG_L1__
+    #define DEBUG_PRINT_L1(...)  pc.printf(__VA_ARGS__)
+#else
+    #define DEBUG_PRINT_L1(...) 
+#endif
+#ifdef __DEBUG_L2__
+    #define DEBUG_PRINT_L2(...)  pc.printf(__VA_ARGS__)
+#else
+    #define DEBUG_PRINT_L2(...) 
+#endif
+#ifdef __DEBUG_L3__
+    #define DEBUG_PRINT_L3(...)  pc.printf(__VA_ARGS__)
+#else
+    #define DEBUG_PRINT_L3(...) 
+#endif
+#ifdef __DEBUG_L4__
+    #define DEBUG_PRINT_L4(...)  pc.printf(__VA_ARGS__)
+#else
+    #define DEBUG_PRINT_L4(...) 
+#endif
+#ifdef __DEBUG_L5__
+    #define DEBUG_PRINT_L5(...)  pc.printf(__VA_ARGS__)
+#else
+    #define DEBUG_PRINT_L5(...) 
+#endif
+
+
+
+/* *****
+ Constant definition
+***** */
+#define BLINKING_RATE_MS  100 /* Blinking rate */
+
+
+#define DIR_CCW 1
+#define DIR_CW 0
+#define MOTOR_ON 1
+#define MOTOR_OFF 0
+
+#define L_001mm 1000 * 2
+#define L_002mm 2000 * 2
+#define L_003mm 3000 * 2
+#define L_004mm 4000 * 2
+#define L_005mm 5000 * 2
+#define L_006mm 6000 * 2
+#define L_007mm 7000 * 2
+#define L_008mm 8000 * 2
+#define L_009mm 9000 * 2
+#define L_010mm 10000 * 2
+#define L_050mm 50000 * 2
+#define L_100mm 100000 * 2
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+/* Above is still under construction ..... */
+
+#define __DISP_GAMAPAD_STATUS_ALL__
+#define __DISP_WRITE_VALUE__
+
+#define I2C_ADDRESS_HANDY       0x20
+#define I2C_ADDRESS_WINCH       0x10
+#define I2C_ADDRESS_TRANSFORM   0x08
+#define I2C_ADDRESS_CRAWLER     0x04
+#define I2C_ADDRESS_RESOLVER    0x02
+
+
+#define _OK_ 1
+#define _NG_ 0
+#define _FAIL_ 0
+
+#define ON 1
+#define OFF 0
+
+#define LFS_READ_COUNT 3
+#define TARGET_CHECK_COUNT 10
+
+//#define __DSP_MOTOR_CURRENT_
+
+/* Usually this should be comment out */
+//#define _COMMUNCATE_PC_BY_SERIAL_
+
+// Should validate this definition when you use DHCP.
+//#define __ETERNET_DHCP__
+
+#define NumberOfPcCommand 11
+#define NumberOfI2CCommand 14
+
+/* I2C Command packet to motor controller */
+/* For motor controller */
+enum{
+    I2C_CP_PREAMBLE,        // Preamble of command packet
+    I2C_CP_COMMAND,         // instruction command
+    I2C_CP_M1_DIR,          // motor1 rotation direction   
+    I2C_CP_M1_SPEED,        // motor1 rotation speed    
+    I2C_CP_M1_FWD_CNTTH_U,  // motor1 current limit detection threshold upper byte 
+    I2C_CP_M1_FWD_CNTTH_L,  // motor1 current limit detection threshold lower byte 
+    I2C_CP_M1_RVS_CNTTH_U,  // motor1 current limit detection threshold upper byte
+    I2C_CP_M1_RVS_CNTTH_L,  // motor1 current limit detection threshold lower byte   
+    I2C_CP_M2_DIR,          // motor2 rotation direction   
+    I2C_CP_M2_SPEED,        // motor2 rotation speed   
+    I2C_CP_M2_FWD_CNTTH_U,  // motor2 current limit detection threshold upper byte   
+    I2C_CP_M2_FWD_CNTTH_L,  // motor2 current limit detection threshold lower byte  
+    I2C_CP_M2_RVS_CNTTH_U,  // motor2 current limit detection threshold upper byte
+    I2C_CP_M2_RVS_CNTTH_L,  // motor2 current limit detection threshold lower byte    
+};
+/* For resolver reader controller */
+enum{
+    I2C_CP_PREAMBLE_R,        // Sub command
+    I2C_CP_COMMAND_R,           // instruction command
+    I2C_CP_WDRAM_DIA_UPPER,     // motor1 rotation direction   
+    I2C_CP_WDRAM_DIA_LOWER,     // motor1 rotation speed    
+    I2C_CP_CCABLE_DIA_UPPER,    // motor1 current limit detection threshold upper byte 
+    I2C_CP_CCABLE_DIA_LOWER,    // motor1 current limit detection threshold lower byte 
+    I2C_CP_RESOLVER_RESO,       // motor1 current limit detection threshold upper byte
+    I2C_CP_PRESET_CPOS_UPPER,   // reserved   
+    I2C_CP_PRESET_CPOS_LOWER,   // reserved    
+    I2C_CP_RES3,                // reserved   
+    I2C_CP_RES4,                // reserved   
+    I2C_CP_RES5,                // reserved  
+    I2C_CP_RES6,                // reserved
+    I2C_CP_RES7,                // reserved    
+};
+
+
+
+/* Winch Operating mode */
+enum{
+    WINCH_POSITION_CLEAR,
+    WINCH_PRESET_BASEDATA,
+    WINCH_MMODE_RELATIVE,
+    WINCH_MMODE_ABSOLUTE,
+    WINCH_STEPDOWN_BTN_ON,
+    WINCH_STEPDOWN_BTN_OFF,
+    WINCH_STEPUP_BTN_ON,
+    WINCH_STEPUP_BTN_OFF,
+    WINCH_U_STEPDOWN_BTN_ON,
+    WINCH_U_STEPDOWN_BTN_OFF,
+    WINCH_U_STEPUP_BTN_ON,
+    WINCH_U_STEPUP_BTN_OFF,
+    WINCH_PRESET_POSITION,
+};
+
+/* Game Pad defnition */
+#define GAMEPAD_VID_LOGICOOL        0x046d
+#define GAMEPAD_PID_LOGICOOL_F710   0xc219
+#define GAMEPAD_PID_LOGICOOL_F310   0xc216
+
+#define GAMEPAD_VID_SANWA           0x12bd
+#define GAMEPAD_PID_SANWA_JYP70US   0xc003
+
+#define GAMEPAD_VID_ELECOM          0x056e
+#define GAMEPAD_PID_ELECOM_JCU3613M 0x2003
+
+#define GAMEPAD_VID_RSTHANDY        0x1234
+#define GAMEPAD_PID_RSTHANDY        0x0006
+
+
+/* Ether net */
+#define TCP_SERVER_PORT   10002
+#define UDP_SERVER_PORT   10000
+//#define ECHO_SERVER_PORT   7
+
+#define MOTOR_FWD   'F'     /* Forward Rotation */
+#define MOTOR_RVS   'R'     /* Reverse Rotation */
+#define MOTOR_STP   'S'     /* Stop */
+
+// =========================================================
+// Setting Values
+// =========================================================
+typedef struct {
+    int8_t  sv_JS_ShapeMode;    // JS Shape: 0=I, 1=KO
+    int8_t  sv_JS_OpeMode;      // JS Operation: 0=single, 1=dual
+    int8_t  sv_WinchValid;      // Winch function valid or not: 0=Tfm, Crawler valid, 1=Winch valid
+    int8_t  res;
+} basic_operation_t;
+
+typedef struct {
+    uint16_t    sv_WDM_ith_F;           // 2 Current Threshold Winch Dram Motor Fwd rotation.
+    uint16_t    sv_WDM_ith_R;           // 2 Current Threshold Winch Dram Motor Rvs rotation.
+    uint16_t    sv_WRM_ith_F;           // 2 Current Threshold Winch .... Motor Fwd rotation.
+    uint16_t    sv_WRM_ith_R;           // 2 Current Threshold Winch .... Motor Rvs rotation.
+    uint8_t     sv_WDM_hsrto_F;         // 1 Winch Dram Motor high speed ratio Fwd
+    uint8_t     sv_WDM_hsrto_R;         // 1 Winch Dram Motor high speed ratio Rvs
+    uint8_t     sv_WDM_lsrto_F;         // 1 Winch Dram Motor low speed ratio Fwd 
+    uint8_t     sv_WDM_lsrto_R;         // 1 Winch Dram Motor low speed ratio Rvs 
+    uint8_t     sv_WRM_hsrto_F;         // 1 Winch .... Motor high speed limit Fwd
+    uint8_t     sv_WRM_hsrto_R;         // 1 Winch .... Motor high speed limit Rvs
+    uint8_t     sv_WRM_lsrto_F;         // 1 Winch .... Motor low speed ratio Fwd 
+    uint8_t     sv_WRM_lsrto_R;         // 1 Winch .... Motor low speed ratio Rvs   
+    uint16_t    sv_WRS_DramDmrx100;     // 2 Winch Dram diameter x 100;
+    uint16_t    sv_WRS_CCableDmrx100;   // 2 Winch CCable diameter x 100
+    uint8_t     sv_WRS_RResolution;     // 1 Winch Resolver resolution (bit)
+    uint8_t     reserved;               // 1 reserved for future use
+} winch_SetValue_t;                     // 22 byte
+
+typedef struct {
+    uint16_t    sv_RFTM_ith_F;          // 2 RF transform motor Fwd roration current threshold 
+    uint16_t    sv_RFTM_ith_R;          // 2 RF transform motor Rvs roration current threshold
+    uint16_t    sv_LBTM_ith_F;          // 2 LB transform motor Fwd roration current threshold
+    uint16_t    sv_LBTM_ith_R;          // 2 LB transform motor Rvs roration current threshold
+    uint8_t     sv_RFTM_srto_F;         // 1 RF transform motor Fwd rotation speed ratio
+    uint8_t     sv_RFTM_srto_R;         // 1 RF transform motor Rvs rotation speed ratio
+    uint8_t     sv_LBTM_srto_F;         // 1 LB transform motor Fwd rotation speed ratio
+    uint8_t     sv_LBTM_srto_R;         // 1 LB transform motor Rvs rotation speed ratio
+} tfm_SetValue_t;                       // 12 byte 
+
+typedef struct {
+    uint16_t    sv_RFCM_ith_F;      // 2 RF Crawler motor Fwd rotation current threshold
+    uint16_t    sv_RFCM_ith_R;      // 2 RF Crawler motor Rvs rotation current threshold
+    uint16_t    sv_LBCM_ith_F;      // 2 LB Crawler motor Fwd rotation current threshold
+    uint16_t    sv_LBCM_ith_R;      // 2 LB Crawler motor Rvs rotation current threshold
+    uint8_t     sv_RFCM_srto_F;     // 1 RF Crawler motor Fwd rotation speed limnit
+    uint8_t     sv_RFCM_srto_R;     // 1 RF Crawler motor Rvs rotation speed limnit
+    uint8_t     sv_LBCM_srto_F;     // 1 LB Crawler motor Fwd rotation speed limnit     
+    uint8_t     sv_LBCM_srto_R;     // 1 LB Crawler motor Rvs rotation speed limnit
+    uint8_t     sv_RFCM_dzu;        // 1 R-Joystick upper dead zone width
+    uint8_t     sv_RFCM_dzc;        // 1 R-Joystick center value
+    uint8_t     sv_RFCM_dzl;        // 1 R-Joystick lower dead zone width
+    uint8_t     sv_LBCM_dzu;        // 1 L-Joystick upper dead zone width
+    uint8_t     sv_LBCM_dzc;        // 1 L-Joystick center value
+    uint8_t     sv_LBCM_dzl;        // 1 L-Joystick lower dead zone width
+    uint8_t     reserved1;          // 1
+    uint8_t     reserved2;          // 1
+} crawler_SetValue_t;               // 20 byte
+
+typedef struct {
+    uint8_t sv_centerValue;
+    uint8_t sv_nsenseBand_s;
+    uint8_t sv_nsenseBand_w;
+} js_SetValue_t;
+
+typedef struct SetValue {
+//    operation_t             operation;
+    winch_SetValue_t        winchCtrl;
+    tfm_SetValue_t          tfmCtrl;
+    crawler_SetValue_t      crawlerCtrl;
+//    js_SetValue_t           jsCtrl; 
+} setValue_t;
+
+
+
+
+#define SLOWDOWN_DISTANCE 23    // <--10 2016.06.01
+#define SLOWDOWN_NEAR_DISTANCE 3
+/*
+typedef struct {
+    int16_t dt_WinchCntPosition;    // Current winch posittion
+    int16_t dt_WinchRtvValue;       // Winch Moving distance
+    int16_t dt_WinchDstPosition;    // Destination Position
+    char operation;
+    int8_t  dt_WinchMotorCurrent;        // Winch motor current
+} winchData_t;
+*/
+
+typedef struct {
+    int16_t dt_WinchCntPosition;    // Current winch posittion
+    int16_t dt_WinchRtvValue;       // Winch Moving distance
+    int16_t dt_WinchDstPosition;    // Destination Position
+    uint8_t operation;
+    uint8_t dt_WinchMotor1Current;        // Winch motor 1 current
+    uint8_t dt_WinchMotor2Current;        // Winch motor 2 current
+    uint8_t res;
+} winchData_t;
+
+
+#define ROTATE_PER_RESOLUTION 24
+  
+#define __READ_CURRENT_AT_CIF_TASK__    
+
+//mv_WinchMvData