yuya horie / Mbed 2 deprecated Roots

Dependencies:   mbed

Files at this revision

API Documentation at this revision

Comitter:
alt0710
Date:
Wed May 02 02:47:35 2018 +0000
Parent:
29:4607c59702a1
Child:
31:7b003082f31d
Commit message:
ifdef???ver????????????LCD?BoardNo.???????????; ;

Changed in this revision

actuator/dribbler.cpp Show annotated file Show diff for this revision Revisions of this file
comm/status/status_manager.cpp Show annotated file Show diff for this revision Revisions of this file
comm/status/status_manager.h Show annotated file Show diff for this revision Revisions of this file
interface/button/button_roots.cpp Show annotated file Show diff for this revision Revisions of this file
interface/i2c/i2c_roots.cpp Show annotated file Show diff for this revision Revisions of this file
interface/i2c/i2c_roots.h Show annotated file Show diff for this revision Revisions of this file
interface/interface_manager.cpp Show annotated file Show diff for this revision Revisions of this file
interface/interface_manager.h Show annotated file Show diff for this revision Revisions of this file
main.cpp Show annotated file Show diff for this revision Revisions of this file
mode/normal_routine/normal_routine.cpp Show annotated file Show diff for this revision Revisions of this file
--- a/actuator/dribbler.cpp	Tue May 01 06:38:42 2018 +0000
+++ b/actuator/dribbler.cpp	Wed May 02 02:47:35 2018 +0000
@@ -69,6 +69,10 @@
 {
 
     #if defined(MAIN_BORD_Ver_4) || defined(MAIN_BORD_Ver_5)
+        if(t_power != 0)
+        {
+            t_power = 4;    
+        }
         StatusManager::req_dribbleMotor_current = t_power/(float)15.0 * (float)2.0;
         //InterfaceManager::dribbleMotor.write((float)(1.0 - t_power/15.0 * 0.50 ));
     #else
--- a/comm/status/status_manager.cpp	Tue May 01 06:38:42 2018 +0000
+++ b/comm/status/status_manager.cpp	Wed May 02 02:47:35 2018 +0000
@@ -1,5 +1,6 @@
 #include "mbed.h"
 #include "status_manager.h"
+#include "interface_manager.h"
 
 char StatusManager::is_kicking;
 char StatusManager::mode;
@@ -16,7 +17,9 @@
 float StatusManager::req_dribbleMotor_current;
 float StatusManager::req_dribbleMotor_PID;
 char  StatusManager::alive_count;
+char  StatusManager::indicate_i2c_enable;
 unsigned short StatusManager::DriveTime;
+unsigned char  StatusManager::MainBoard;
 
 
 extern void init_status(void)
@@ -28,4 +31,14 @@
     StatusManager::alive_count = 0;
     StatusManager::DriveTime = 0;
     StatusManager::req_dribbleMotor_PID = 0;
+    StatusManager::indicate_i2c_enable = 0;
+    
+#if defined(MAIN_BORD_Ver_3)
+    StatusManager::MainBoard = 3;
+#elif defined(MAIN_BORD_Ver_4)
+    StatusManager::MainBoard = 4;
+#elif defined(MAIN_BORD_Ver_5)
+    StatusManager::MainBoard = 5;
+#endif
+    
 }
\ No newline at end of file
--- a/comm/status/status_manager.h	Tue May 01 06:38:42 2018 +0000
+++ b/comm/status/status_manager.h	Wed May 02 02:47:35 2018 +0000
@@ -35,6 +35,8 @@
     //その他
     static char alive_count;
     static unsigned short DriveTime;
+    static char indicate_i2c_enable;
+    static unsigned char MainBoard;
     
     private:
     StatusManager();
--- a/interface/button/button_roots.cpp	Tue May 01 06:38:42 2018 +0000
+++ b/interface/button/button_roots.cpp	Wed May 02 02:47:35 2018 +0000
@@ -9,41 +9,36 @@
 #ifdef LPC4088
 
 #elif  STM32
-//    #if defined(MAIN_BORD_Ver_4)
-//    //CrossSelectSW
-//    DigitalIn Mode_SW1(A2);
-//    DigitalIn Mode_SW2(A3);   
-//    InterruptIn CrossSW_UP(D9);   //EXT2
-//    InterruptIn CrossSW_LEFT(D7);  //PUSH D7
-//    //InterruptIn CrossSW_DOWN(D9);  //KICK
-//    DigitalIn   DUMY(D8);  //KICK
-//    InterruptIn CrossSW_RIGHT(A1); //EXT   
-//    #elif defined(MAIN_BORD_Ver_5)
-    //SWの配置が変わったので使いやすい構成にかえる
-    //CrossSelectSW
-    DigitalIn Mode_SW1(A2);
-    DigitalIn Mode_SW2(A3);   
-    #ifndef MAIN_BORD_Ver_5
-    InterruptIn CrossSW_UP(D9);   //EXT2
-    #else
-    DigitalIn UP(D9);
+    #if defined(MAIN_BORD_Ver_4)
+        //CrossSelectSW
+        DigitalIn Mode_SW1(A2);
+        DigitalIn Mode_SW2(A3);   
+        InterruptIn CrossSW_UP(D9);   //EXT2
+        InterruptIn CrossSW_LEFT(D7);  //PUSH D7
+        //InterruptIn CrossSW_DOWN(D9);  //KICK
+        DigitalIn   DUMY(D8);  //KICK
+        InterruptIn CrossSW_RIGHT(A1); //EXT   
+    #elif defined(MAIN_BORD_Ver_5)
+        //SWの配置が変わったので使いやすい構成にかえる
+        //CrossSelectSW
+        DigitalIn Mode_SW1(A2);
+        DigitalIn Mode_SW2(A3);   
+        InterruptIn CrossSW_UP(D9);   //EXT2
+        InterruptIn CrossSW_LEFT(D7);  //PUSH D7
+        //InterruptIn CrossSW_DOWN(D9);  //KICK
+        DigitalIn   DUMY(A1);  //KICK
+        InterruptIn CrossSW_RIGHT(D8); //EXT   
+    #elif defined(MAIN_BORD_Ver_3) 
+        //ModeSelectSW
+        DigitalIn Mode_SW1(A3);
+        DigitalIn Mode_SW2(A2);
+        //CrossSelectSW
+        InterruptIn CrossSW_UP(D11);   //EXT2
+        InterruptIn CrossSW_LEFT(D7);  //PUSH D7
+        //InterruptIn CrossSW_DOWN(D9);  //KICK
+        DigitalIn   DUMY(D8);  //KICK
+        InterruptIn CrossSW_RIGHT(A1); //EXT
     #endif
-    InterruptIn CrossSW_LEFT(D7);  //PUSH D7
-    //InterruptIn CrossSW_DOWN(D9);  //KICK
-    DigitalIn   DUMY(A1);  //KICK
-    
-    InterruptIn CrossSW_RIGHT(D8); //EXT   
-//    #else 
-//    //ModeSelectSW
-//    DigitalIn Mode_SW1(A3);
-//    DigitalIn Mode_SW2(A2);
-//    //CrossSelectSW
-//    InterruptIn CrossSW_UP(D11);   //EXT2
-//    InterruptIn CrossSW_LEFT(D7);  //PUSH D7
-//    //InterruptIn CrossSW_DOWN(D9);  //KICK
-//    DigitalIn   DUMY(D8);  //KICK
-//    InterruptIn CrossSW_RIGHT(A1); //EXT
-//    #endif
 #endif
 
 DigitalOut myled(LED1);
@@ -54,7 +49,7 @@
 Ticker t_right;
 
 /* **ローカル割り込み関数** */
-#ifndef MAIN_BORD_Ver_5
+//#ifndef MAIN_BORD_Ver_5
 void check_click_up(void)
 {
     if(InterfaceManager::button.count_click[0]  ==  1)
@@ -69,7 +64,7 @@
     t_up.detach();
     
 }
-#endif
+//#endif
 //void check_click_down(void)
 //{
 //    if(InterfaceManager::button.count_click[1]  ==  1)
@@ -111,7 +106,7 @@
     
 }
 
-#ifndef MAIN_BORD_Ver_5
+//#ifndef MAIN_BORD_Ver_5
 void click_up(void)
 {
     myled = !myled;
@@ -131,7 +126,7 @@
     }  
     
 }
-#endif
+//#endif
 //void click_down(void)
 //{
 //    myled = !myled;
@@ -197,22 +192,22 @@
     Mode_SW1.mode(PullDown);
     Mode_SW2.mode(PullDown);
     
-    #ifndef MAIN_BORD_Ver_5
+    //#ifndef MAIN_BORD_Ver_5
     CrossSW_UP.mode(PullNone);
-    #else
-    UP.mode(PullNone);
-    #endif
+    //#else
+    //UP.mode(PullNone);
+    //#endif
     //CrossSW_DOWN.mode(PullNone);
     DUMY.mode(PullNone);
     CrossSW_LEFT.mode(PullNone);
     CrossSW_RIGHT.mode(PullNone);   
     
     //入力割り込み設定
-    #ifndef MAIN_BORD_Ver_5
+    //#ifndef MAIN_BORD_Ver_5
     CrossSW_UP.fall(&click_up);
-    #else
+    //#else
     
-    #endif   
+    //#endif   
     CrossSW_LEFT.fall(&click_left);
 
     //CrossSW_DOWN.rise(&click_down);
@@ -246,18 +241,18 @@
         return modeSW;
         
         case CROSS_UP:
-        #ifndef MAIN_BORD_Ver_5
+//        #ifndef MAIN_BORD_Ver_5
         button_status   = crossUp;
         crossUp         = 0;
-        #else
-        if( (!UP) && (cross_up_old == 1) ){
-            is_button_pushed_up    = 1;
-        }else{
-            is_button_pushed_up    = 0;
-        }
-        cross_up_old   = !UP;
-        button_status   = is_button_pushed_up;
-        #endif
+//        #else
+//        if( (!UP) && (cross_up_old == 1) ){
+//            is_button_pushed_up    = 1;
+//        }else{
+//            is_button_pushed_up    = 0;
+//        }
+//        cross_up_old   = !UP;
+//        button_status   = is_button_pushed_up;
+//        #endif
         return button_status;      
 
         case CROSS_DOWN:
--- a/interface/i2c/i2c_roots.cpp	Tue May 01 06:38:42 2018 +0000
+++ b/interface/i2c/i2c_roots.cpp	Wed May 02 02:47:35 2018 +0000
@@ -118,7 +118,8 @@
 /* **グルーバル関数** */
 extern void initI2C(void)
 {
-    i2cMBED.frequency(400000);   
+    i2cMBED.frequency(400000); 
+    //i2cMBED.frequency(100000);   
     initLCD();
     i2c_Timer.attach(i2c_send, I2C_SEND_CYCLE_TIME);    
 }
@@ -147,7 +148,7 @@
         IndicateMsg[i] = *(msg + i);   
     }
  
-    i2cMBED.write(ADDRESS_INDICATE, IndicateMsg, msg_num);
+    StatusManager::indicate_i2c_enable = i2cMBED.write(ADDRESS_INDICATE, IndicateMsg, msg_num);
 }
 
 void I2C_Roots::setIDMsg(char* msg,char msg_num)
--- a/interface/i2c/i2c_roots.h	Tue May 01 06:38:42 2018 +0000
+++ b/interface/i2c/i2c_roots.h	Wed May 02 02:47:35 2018 +0000
@@ -11,7 +11,7 @@
 
 /* **Define** */
 #define ADDRESS_LCD 0x7C
-#define ADDRESS_INDICATE 0x10
+#define ADDRESS_INDICATE 0x60
 #define ADDRESS_EEPROM   0xA0
 #define I2C_SEND_CYCLE_TIME 0.5
 
--- a/interface/interface_manager.cpp	Tue May 01 06:38:42 2018 +0000
+++ b/interface/interface_manager.cpp	Wed May 02 02:47:35 2018 +0000
@@ -6,20 +6,22 @@
 CAN_Roots InterfaceManager::can;
 Xbee_Roots InterfaceManager::xbee;
 
-//#if defined(MAIN_BORD_Ver_4)
-//DigitalOut InterfaceManager::straight_kick(D3);
-//DigitalOut InterfaceManager::chip_kick(D6);
-//DigitalOut InterfaceManager::charge_request(D1);
-//DigitalOut InterfaceManager::LED(D11);
-////DigitalOut InterfaceManager::dribbleStandBy(A5);
-//    
-//DigitalIn InterfaceManager::ball_sensor(A4);
-//DigitalIn InterfaceManager::charge_completed(D0);//D0
-//DigitalIn InterfaceManager::dribbleIC_fault(A6);
-//    
-//PwmOut InterfaceManager::dribbleMotor(A5);
-//AnalogIn InterfaceManager::dribbleMotor_current(A7);
-//#elif defined(MAIN_BORD_Ver_5)
+#if defined(MAIN_BORD_Ver_4)
+
+DigitalOut InterfaceManager::straight_kick(D3);
+DigitalOut InterfaceManager::chip_kick(D6);
+DigitalOut InterfaceManager::charge_request(D1);
+DigitalOut InterfaceManager::LED(D11);
+//DigitalOut InterfaceManager::dribbleStandBy(A5);
+    
+DigitalIn InterfaceManager::ball_sensor(A4);
+DigitalIn InterfaceManager::charge_completed(D0);//D0
+DigitalIn InterfaceManager::dribbleIC_fault(A6);
+    
+PwmOut InterfaceManager::dribbleMotor(A5);
+AnalogIn InterfaceManager::dribbleMotor_current(A7);
+
+#elif defined(MAIN_BORD_Ver_5)
 DigitalOut InterfaceManager::straight_kick(D3);
 DigitalOut InterfaceManager::chip_kick(D6);
 DigitalOut InterfaceManager::charge_request(D0);
@@ -33,21 +35,21 @@
 PwmOut InterfaceManager::dribbleMotor(A5);
 AnalogIn InterfaceManager::dribbleMotor_current(A6);
 
-//#else
-//DigitalOut InterfaceManager::straight_kick(D3);
-//DigitalOut InterfaceManager::chip_kick(D6);
-//DigitalOut InterfaceManager::charge_request(D1);
-//DigitalOut InterfaceManager::LED(D9);
-//DigitalOut InterfaceManager::dribbleStandBy(A5);
-//
-//DigitalIn InterfaceManager::ball_sensor(A7);
-//DigitalIn InterfaceManager::charge_completed(D0);//D0
-//DigitalIn InterfaceManager::dribbleIC_fault(A4);
-//
-//PwmOut InterfaceManager::dribbleMotor(A6);
-////DigitalIn InterfaceManager::modeSW_1(A3);
-////DigitalIn InterfaceManager::modeSW_2(A2);
-//#endif
+#elif defined(MAIN_BORD_Ver_3)
+DigitalOut InterfaceManager::straight_kick(D3);
+DigitalOut InterfaceManager::chip_kick(D6);
+DigitalOut InterfaceManager::charge_request(D1);
+DigitalOut InterfaceManager::LED(D9);
+DigitalOut InterfaceManager::dribbleStandBy(A5);
+
+DigitalIn InterfaceManager::ball_sensor(A7);
+DigitalIn InterfaceManager::charge_completed(D0);//D0
+DigitalIn InterfaceManager::dribbleIC_fault(A4);
+
+PwmOut InterfaceManager::dribbleMotor(A6);
+//DigitalIn InterfaceManager::modeSW_1(A3);
+//DigitalIn InterfaceManager::modeSW_2(A2);
+#endif
 
 AnalogIn InterfaceManager::batVoltage(A0);
 
--- a/interface/interface_manager.h	Tue May 01 06:38:42 2018 +0000
+++ b/interface/interface_manager.h	Wed May 02 02:47:35 2018 +0000
@@ -11,8 +11,13 @@
 #include "string.h"
 #include "stdio.h"
 
-//#define MAIN_BORD_Ver_4
-#define MAIN_BORD_Ver_5
+//Main基板ver管理
+//#define MAIN_BORD_Ver_3  //赤
+#define MAIN_BORD_Ver_4    //青
+//#define MAIN_BORD_Ver_5  //白
+
+//Option
+//#define ON_INDICATER
 
 class InterfaceManager{
     public:
--- a/main.cpp	Tue May 01 06:38:42 2018 +0000
+++ b/main.cpp	Wed May 02 02:47:35 2018 +0000
@@ -32,7 +32,7 @@
     InterfaceManager::i2c.readIDMsg();
     
     while(1) {
-        if(StatusManager::dribbleIC_fault == 1)
+        if(StatusManager::ball == 1)
         {
             InterfaceManager::LED  =  1;
         }
@@ -47,6 +47,12 @@
         //StatusManager::dribbleMotor_current = DribMot_Current.getLPF_Out( InterfaceManager::dribbleMotor_current.read());
         
         StatusManager::req_dribbleMotor_PID = DribMot_PID.getPID_Out( StatusManager::req_dribbleMotor_current , StatusManager::dribbleMotor_current);
+        // 指示0の時Duty出力を0にする 0.1Aは最低指示0.133以下であれば良い
+        if(StatusManager::req_dribbleMotor_current < (float)0.1)
+        {
+            StatusManager::req_dribbleMotor_PID = 0.0;
+        }
+        
         if( StatusManager::dribbleMotor_current > (float)JDG_TH_OVERCUR_DIRBMOT )
         {
             StatusManager::dribbleMot_OvrCur = 1;
--- a/mode/normal_routine/normal_routine.cpp	Tue May 01 06:38:42 2018 +0000
+++ b/mode/normal_routine/normal_routine.cpp	Wed May 02 02:47:35 2018 +0000
@@ -14,7 +14,9 @@
 
 #endif
 
-//static char batVoltage[1];
+#ifdef ON_INDICATER
+static char batVoltage[1];
+#endif
 
 /* **ローカル関数定義** */
 
@@ -60,11 +62,12 @@
     //sprintf(str,"T%dOv:%d\nC:%3.2f",StatusManager::DriveTime,StatusManager::dribbleMot_OvrCur,StatusManager::dribbleMotor_current);
     createLcdData();
     InterfaceManager::i2c.setLCDMsg(str,sizeof(str)); 
-    
-    //batVoltage[0] = (char)(StatusManager::supply_voltage * 10);
-    
-    //InterfaceManager::i2c.setIndicateMsg( batVoltage , sizeof(batVoltage));
-    
+
+#ifdef ON_INDICATER    
+    batVoltage[0] = (char)(StatusManager::supply_voltage * 10);
+    InterfaceManager::i2c.setIndicateMsg( batVoltage , sizeof(batVoltage));
+#endif    
+
 }
 
 void NormalRoutine::createLcdData(void)
@@ -119,8 +122,9 @@
         break;
 
     case -1:
-        sprintf(str,"ID%dB%3.1f\nTimeOut",ParameterManager::machine_id,StatusManager::supply_voltage);
-        //sprintf(str,"ID%dB%d\nTimeOut",ParameterManager::machine_id,StatusManager::DriveTime);
+        //sprintf(str,"ID%dB%3.1f\nTimeOut",ParameterManager::machine_id,StatusManager::supply_voltage);
+        //sprintf(str,"ID%dB%d\nTimeOut",ParameterManager::machine_id,StatusManager::indicate_i2c_enable);
+        sprintf(str,"ID%d:TO\nB%3.1fBN%d",ParameterManager::machine_id,StatusManager::supply_voltage,StatusManager::MainBoard);
         sprintf(str_uart,"TimeOut");
         break;