teamALI / Mbed 2 deprecated HB2018

Dependencies:   mbed FreeRTOS

Committer:
MasashiNomura
Date:
Wed Dec 12 23:52:22 2018 +0000
Revision:
25:f3a6e7eec9c3
Parent:
24:c5945aaae777
Child:
26:732bc37fbefd
2018/12/11

Who changed what in which revision?

UserRevisionLine numberNew contents of line
takeru0x1103 8:1ca49cb18290 1 #ifndef __GLOBALFLAGS_H__
takeru0x1103 8:1ca49cb18290 2 #define __GLOBALFLAGS_H__
takeru0x1103 8:1ca49cb18290 3
takeru0x1103 16:05b9e44889f1 4 #include "mbed.h"
takeru0x1103 17:f9610f3cfa1b 5 #include "typedef.h"
takeru0x1103 17:f9610f3cfa1b 6
takeru0x1103 19:4b0fe9a5ec38 7 #define G_CMD_BUF_SIZ 32
takeru0x1103 19:4b0fe9a5ec38 8 #define STATE_QUE_SIZ 8
takeru0x1103 19:4b0fe9a5ec38 9
MasashiNomura 22:24c9c2dedca9 10 #define STATE_BUF_SIZ 8
MasashiNomura 22:24c9c2dedca9 11
MasashiNomura 25:f3a6e7eec9c3 12 #define LIM_MOT_INP_MIN -2000
MasashiNomura 25:f3a6e7eec9c3 13 #define LIM_MOT_INP_MAX 2000
MasashiNomura 25:f3a6e7eec9c3 14
takeru0x1103 17:f9610f3cfa1b 15 typedef union{
takeru0x1103 17:f9610f3cfa1b 16 UINT16 flg;
takeru0x1103 17:f9610f3cfa1b 17 struct{
takeru0x1103 17:f9610f3cfa1b 18 bool e1 : 1;//前エンジン回転数
takeru0x1103 17:f9610f3cfa1b 19 bool e2 : 1;//後ろエンジン回転数
takeru0x1103 17:f9610f3cfa1b 20 bool m1 : 1;//サブモーター回転数
takeru0x1103 17:f9610f3cfa1b 21 bool m2 : 1;//サブモーター回転数
takeru0x1103 17:f9610f3cfa1b 22 bool m3 : 1;//サブモーター回転数
takeru0x1103 17:f9610f3cfa1b 23 bool m4 : 1;//サブモーター回転数
takeru0x1103 17:f9610f3cfa1b 24 bool gy : 1;//ジャイロ
takeru0x1103 17:f9610f3cfa1b 25 bool yaw : 1;//ヨー角
takeru0x1103 18:5aa48aec9cae 26 bool fb : 1;//PID制御feedback結果
takeru0x1103 18:5aa48aec9cae 27 bool pp : 1;//P制御ゲイン(アウターループ)
takeru0x1103 18:5aa48aec9cae 28 bool p : 1;//P制御ゲイン
takeru0x1103 18:5aa48aec9cae 29 bool i : 1;//I制御ゲイン
takeru0x1103 18:5aa48aec9cae 30 bool d : 1;//D制御ゲイン
MasashiNomura 23:79e20be4bc5b 31 bool stat : 1;//ステート表示
takeru0x1103 17:f9610f3cfa1b 32 }bf;
takeru0x1103 17:f9610f3cfa1b 33 }typPrintFlag;
takeru0x1103 17:f9610f3cfa1b 34
takeru0x1103 17:f9610f3cfa1b 35 typedef union{
takeru0x1103 17:f9610f3cfa1b 36 UINT16 flg;
takeru0x1103 17:f9610f3cfa1b 37 struct{
takeru0x1103 17:f9610f3cfa1b 38 bool e1 : 1;//
takeru0x1103 17:f9610f3cfa1b 39 bool e2 : 1;//
takeru0x1103 17:f9610f3cfa1b 40 bool m1 : 1;//
takeru0x1103 17:f9610f3cfa1b 41 bool m2 : 1;//
takeru0x1103 17:f9610f3cfa1b 42 bool m3 : 1;//
takeru0x1103 17:f9610f3cfa1b 43 bool m4 : 1;//
takeru0x1103 17:f9610f3cfa1b 44 bool gy : 1;//
takeru0x1103 17:f9610f3cfa1b 45 bool yaw : 1;//
takeru0x1103 18:5aa48aec9cae 46 bool fb : 1;//PID制御feedback結果
takeru0x1103 18:5aa48aec9cae 47 bool pp : 1;//P制御ゲイン(アウターループ)
takeru0x1103 18:5aa48aec9cae 48 bool p : 1;//P制御ゲイン
takeru0x1103 18:5aa48aec9cae 49 bool i : 1;//I制御ゲイン
takeru0x1103 18:5aa48aec9cae 50 bool d : 1;//D制御ゲイン
takeru0x1103 17:f9610f3cfa1b 51 }bf;
takeru0x1103 17:f9610f3cfa1b 52 }typCalFlag;
takeru0x1103 17:f9610f3cfa1b 53
takeru0x1103 19:4b0fe9a5ec38 54 //
takeru0x1103 17:f9610f3cfa1b 55 typedef union{
takeru0x1103 17:f9610f3cfa1b 56 UINT16 dt;
takeru0x1103 17:f9610f3cfa1b 57 struct{
takeru0x1103 18:5aa48aec9cae 58 UINT16 val : 12;//アクセル設定値
takeru0x1103 17:f9610f3cfa1b 59 bool req : 1;//アクセル更新要求
takeru0x1103 17:f9610f3cfa1b 60 }bf;
takeru0x1103 17:f9610f3cfa1b 61 }typAccel;
takeru0x1103 17:f9610f3cfa1b 62
MasashiNomura 25:f3a6e7eec9c3 63 // typedef union{
MasashiNomura 25:f3a6e7eec9c3 64 // UINT16 flg;
MasashiNomura 25:f3a6e7eec9c3 65 // struct{
MasashiNomura 25:f3a6e7eec9c3 66 // bool mot1 : 1;//Motor1(1,2)
MasashiNomura 25:f3a6e7eec9c3 67 // }bf;
MasashiNomura 25:f3a6e7eec9c3 68 // }typMotFlag;
MasashiNomura 25:f3a6e7eec9c3 69
MasashiNomura 24:c5945aaae777 70
takeru0x1103 19:4b0fe9a5ec38 71 //ステート定義
takeru0x1103 19:4b0fe9a5ec38 72 enum enmHbState
MasashiNomura 22:24c9c2dedca9 73 {NONE = 0 //何もなし
takeru0x1103 21:78302ecdb661 74 ,SLEEP //スリープモード(最初ここ)
takeru0x1103 20:0394e15412c3 75 ,WAKEUP //起動処理
takeru0x1103 20:0394e15412c3 76 ,STANDBY //スタンバイ(エンジンかかるの待ち)
takeru0x1103 21:78302ecdb661 77 ,IDLE //アイドル(エンジンがかかったけどなにもしない)
takeru0x1103 20:0394e15412c3 78 ,TAKE_OFF //離陸
takeru0x1103 20:0394e15412c3 79 ,HOVER //ホバリング
takeru0x1103 21:78302ecdb661 80 ,DRIVE //運転
takeru0x1103 21:78302ecdb661 81 ,GROUND //着陸(エンジン同時下げ)
takeru0x1103 21:78302ecdb661 82 ,EMGGND //緊急着陸(後ろエンジンを先に下げる)
takeru0x1103 20:0394e15412c3 83 ,CHK_ENT //チェックエンター
takeru0x1103 20:0394e15412c3 84 ,CHK_MOT //モーターチェック
takeru0x1103 20:0394e15412c3 85 ,CHK_AXL //アクセルサーボチェック
takeru0x1103 20:0394e15412c3 86 ,CHK_ATT //姿勢制御チェック
takeru0x1103 20:0394e15412c3 87 ,CHK_EXIT //チェックステート脱出
MasashiNomura 25:f3a6e7eec9c3 88 ,MOT_STOP //モーター停止用
takeru0x1103 19:4b0fe9a5ec38 89 };
takeru0x1103 19:4b0fe9a5ec38 90
takeru0x1103 17:f9610f3cfa1b 91 /////////////////////////////////////////////////
takeru0x1103 21:78302ecdb661 92
MasashiNomura 22:24c9c2dedca9 93 void initFlags();
MasashiNomura 22:24c9c2dedca9 94
MasashiNomura 22:24c9c2dedca9 95 void setState(enmHbState stat);
MasashiNomura 23:79e20be4bc5b 96 void setStateF(enmHbState stat);
MasashiNomura 22:24c9c2dedca9 97
MasashiNomura 22:24c9c2dedca9 98
takeru0x1103 21:78302ecdb661 99 /*
takeru0x1103 19:4b0fe9a5ec38 100 class GlobalFlags{
takeru0x1103 19:4b0fe9a5ec38 101 private:
takeru0x1103 19:4b0fe9a5ec38 102 enmHbState stateQueue[STATE_QUE_SIZ];//ステート予約用のキューバッファ
takeru0x1103 19:4b0fe9a5ec38 103 int wp; //ライトポインタ
takeru0x1103 19:4b0fe9a5ec38 104 int rp; //リードポインタ
takeru0x1103 19:4b0fe9a5ec38 105 bool full; //フルフラグ
takeru0x1103 19:4b0fe9a5ec38 106 bool empty; //エンプティフラグ
takeru0x1103 19:4b0fe9a5ec38 107 public:
takeru0x1103 21:78302ecdb661 108 //プロパティ
takeru0x1103 20:0394e15412c3 109 enmHbState state;//現在のステート
takeru0x1103 21:78302ecdb661 110 //メソッド
takeru0x1103 20:0394e15412c3 111 GlobalFlags();//コンストラクタ
takeru0x1103 19:4b0fe9a5ec38 112 bool push(enmHbState iState);
takeru0x1103 19:4b0fe9a5ec38 113 bool pull();
takeru0x1103 19:4b0fe9a5ec38 114 };
takeru0x1103 16:05b9e44889f1 115
takeru0x1103 21:78302ecdb661 116 */
takeru0x1103 21:78302ecdb661 117
takeru0x1103 21:78302ecdb661 118
takeru0x1103 17:f9610f3cfa1b 119 //モニタ用LED
takeru0x1103 16:05b9e44889f1 120 extern DigitalOut led1;
takeru0x1103 16:05b9e44889f1 121 extern DigitalOut led2;
takeru0x1103 16:05b9e44889f1 122 extern DigitalOut led3;
takeru0x1103 16:05b9e44889f1 123 extern DigitalOut led4;
takeru0x1103 8:1ca49cb18290 124
MasashiNomura 22:24c9c2dedca9 125 //////////////////////////////////////////////////
MasashiNomura 22:24c9c2dedca9 126 // フラグ
takeru0x1103 21:78302ecdb661 127 //extern GlobalFlags gf;
takeru0x1103 19:4b0fe9a5ec38 128
takeru0x1103 19:4b0fe9a5ec38 129 extern char g_CmdBuf[G_CMD_BUF_SIZ] ;// コマンド受け渡しバッファ
MasashiNomura 22:24c9c2dedca9 130 extern bool gf_CmdPrs; //コマンドパーサー実行要求フラグ
takeru0x1103 19:4b0fe9a5ec38 131
takeru0x1103 21:78302ecdb661 132 extern bool gf_Armed; //アーミングフラグ
MasashiNomura 22:24c9c2dedca9 133 extern bool gf_Dbg; //デバッグフラグ
MasashiNomura 25:f3a6e7eec9c3 134 extern bool gf_StopMot; //モーターの強制停止
MasashiNomura 25:f3a6e7eec9c3 135
MasashiNomura 22:24c9c2dedca9 136 extern typPrintFlag gf_Print; //デバッグプリントフラグ(1回表示)
MasashiNomura 22:24c9c2dedca9 137 extern typPrintFlag gf_Mon; //デバッグモニタフラグ(繰り返し表示)
MasashiNomura 22:24c9c2dedca9 138 extern typCalFlag gf_Cal; //キャリブレーションフラグ
MasashiNomura 22:24c9c2dedca9 139 extern typAccel gf_AxReq[2]; //アクセル更新
MasashiNomura 22:24c9c2dedca9 140 extern typAccel gf_MtReq[4]; //モーター更新
MasashiNomura 22:24c9c2dedca9 141
MasashiNomura 22:24c9c2dedca9 142 extern enmHbState gf_State; //現在のステート
takeru0x1103 19:4b0fe9a5ec38 143
MasashiNomura 24:c5945aaae777 144 extern bool gf_PidParaUpdate ;//PID Pp,P,I,Dの係数アップデートフラグ
MasashiNomura 24:c5945aaae777 145 extern typPidPara g_PidPara; //PID Pp,P,I,Dの係数の外部設定用
takeru0x1103 19:4b0fe9a5ec38 146
MasashiNomura 25:f3a6e7eec9c3 147 extern bool gf_MotParaUpdate[4] ;//モーターのパラメータ値更新フラグ
MasashiNomura 25:f3a6e7eec9c3 148 extern typMotPara g_MotPara[4]; //モーターのパラメータ値
MasashiNomura 25:f3a6e7eec9c3 149
takeru0x1103 18:5aa48aec9cae 150 #endif