teamALI / Mbed 2 deprecated HB2018

Dependencies:   mbed FreeRTOS

Committer:
MasashiNomura
Date:
Wed Jan 16 10:51:07 2019 +0000
Revision:
36:2cc739c7e4cb
Parent:
35:3779201b4c73
Child:
37:d51dacb4c30f
2019/01/16 modify for 45inc Alfa HB / no debug, no checking

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
MasashiNomura 35:3779201b4c73 15 #define MAX_VAL_12BIT 4095
MasashiNomura 36:2cc739c7e4cb 16 #define BRK_RPM 4000
MasashiNomura 35:3779201b4c73 17
takeru0x1103 17:f9610f3cfa1b 18 typedef union{
takeru0x1103 17:f9610f3cfa1b 19 UINT16 flg;
takeru0x1103 17:f9610f3cfa1b 20 struct{
takeru0x1103 17:f9610f3cfa1b 21 bool e1 : 1;//前エンジン回転数
takeru0x1103 17:f9610f3cfa1b 22 bool e2 : 1;//後ろエンジン回転数
takeru0x1103 17:f9610f3cfa1b 23 bool m1 : 1;//サブモーター回転数
takeru0x1103 17:f9610f3cfa1b 24 bool m2 : 1;//サブモーター回転数
takeru0x1103 17:f9610f3cfa1b 25 bool m3 : 1;//サブモーター回転数
takeru0x1103 17:f9610f3cfa1b 26 bool m4 : 1;//サブモーター回転数
takeru0x1103 17:f9610f3cfa1b 27 bool gy : 1;//ジャイロ
takeru0x1103 17:f9610f3cfa1b 28 bool yaw : 1;//ヨー角
takeru0x1103 18:5aa48aec9cae 29 bool fb : 1;//PID制御feedback結果
takeru0x1103 18:5aa48aec9cae 30 bool pp : 1;//P制御ゲイン(アウターループ)
takeru0x1103 18:5aa48aec9cae 31 bool p : 1;//P制御ゲイン
takeru0x1103 18:5aa48aec9cae 32 bool i : 1;//I制御ゲイン
takeru0x1103 18:5aa48aec9cae 33 bool d : 1;//D制御ゲイン
MasashiNomura 32:7f4145cc3551 34 bool v : 1;//PID2(torgue)角速度feedback制御用ゲイン
MasashiNomura 23:79e20be4bc5b 35 bool stat : 1;//ステート表示
takeru0x1103 17:f9610f3cfa1b 36 }bf;
takeru0x1103 17:f9610f3cfa1b 37 }typPrintFlag;
takeru0x1103 17:f9610f3cfa1b 38
takeru0x1103 17:f9610f3cfa1b 39 typedef union{
takeru0x1103 17:f9610f3cfa1b 40 UINT16 flg;
takeru0x1103 17:f9610f3cfa1b 41 struct{
takeru0x1103 17:f9610f3cfa1b 42 bool e1 : 1;//
takeru0x1103 17:f9610f3cfa1b 43 bool e2 : 1;//
takeru0x1103 17:f9610f3cfa1b 44 bool m1 : 1;//
takeru0x1103 17:f9610f3cfa1b 45 bool m2 : 1;//
takeru0x1103 17:f9610f3cfa1b 46 bool m3 : 1;//
takeru0x1103 17:f9610f3cfa1b 47 bool m4 : 1;//
takeru0x1103 17:f9610f3cfa1b 48 bool gy : 1;//
takeru0x1103 17:f9610f3cfa1b 49 bool yaw : 1;//
takeru0x1103 18:5aa48aec9cae 50 bool fb : 1;//PID制御feedback結果
takeru0x1103 18:5aa48aec9cae 51 bool pp : 1;//P制御ゲイン(アウターループ)
takeru0x1103 18:5aa48aec9cae 52 bool p : 1;//P制御ゲイン
takeru0x1103 18:5aa48aec9cae 53 bool i : 1;//I制御ゲイン
takeru0x1103 18:5aa48aec9cae 54 bool d : 1;//D制御ゲイン
takeru0x1103 17:f9610f3cfa1b 55 }bf;
takeru0x1103 17:f9610f3cfa1b 56 }typCalFlag;
takeru0x1103 17:f9610f3cfa1b 57
takeru0x1103 19:4b0fe9a5ec38 58 //
takeru0x1103 17:f9610f3cfa1b 59 typedef union{
takeru0x1103 17:f9610f3cfa1b 60 UINT16 dt;
takeru0x1103 17:f9610f3cfa1b 61 struct{
takeru0x1103 18:5aa48aec9cae 62 UINT16 val : 12;//アクセル設定値
takeru0x1103 17:f9610f3cfa1b 63 bool req : 1;//アクセル更新要求
takeru0x1103 17:f9610f3cfa1b 64 }bf;
takeru0x1103 17:f9610f3cfa1b 65 }typAccel;
takeru0x1103 17:f9610f3cfa1b 66
MasashiNomura 32:7f4145cc3551 67 typedef struct{
MasashiNomura 32:7f4145cc3551 68 INT16 val;//アクセル設定値
MasashiNomura 32:7f4145cc3551 69 bool req;//アクセル更新要求
MasashiNomura 29:eb3d72dd94aa 70 }typAxlRpm;
MasashiNomura 29:eb3d72dd94aa 71
MasashiNomura 32:7f4145cc3551 72
MasashiNomura 29:eb3d72dd94aa 73 typedef union{
MasashiNomura 26:732bc37fbefd 74 UINT16 flg;
MasashiNomura 26:732bc37fbefd 75 struct{
MasashiNomura 26:732bc37fbefd 76 bool mo1 : 1;//Motor1 Offset val
MasashiNomura 26:732bc37fbefd 77 bool mo2 : 1;//Motor2 Offset val
MasashiNomura 26:732bc37fbefd 78 bool mo3 : 1;//Motor3 Offset val
MasashiNomura 26:732bc37fbefd 79 bool mo4 : 1;//Motor4 Offset val
MasashiNomura 33:eb260dbfc22a 80 bool ana1 : 1;//AnalogRead for Motor Accel
MasashiNomura 36:2cc739c7e4cb 81 bool ana2 : 1;
MasashiNomura 26:732bc37fbefd 82 }bf;
MasashiNomura 26:732bc37fbefd 83 }typDbgPrintFlg;
MasashiNomura 25:f3a6e7eec9c3 84
MasashiNomura 29:eb3d72dd94aa 85 typedef union {
MasashiNomura 29:eb3d72dd94aa 86 UINT16 dt;
MasashiNomura 29:eb3d72dd94aa 87 struct{
MasashiNomura 29:eb3d72dd94aa 88 UINT16 num :6;
MasashiNomura 29:eb3d72dd94aa 89 UINT16 counter :6;
MasashiNomura 29:eb3d72dd94aa 90 //UINT16 pos :3;
MasashiNomura 29:eb3d72dd94aa 91 bool add_end :1;
MasashiNomura 29:eb3d72dd94aa 92 bool req :1;
MasashiNomura 29:eb3d72dd94aa 93 }bf;
MasashiNomura 29:eb3d72dd94aa 94 }typOnePushFlg;
MasashiNomura 24:c5945aaae777 95
takeru0x1103 19:4b0fe9a5ec38 96 //ステート定義
takeru0x1103 19:4b0fe9a5ec38 97 enum enmHbState
MasashiNomura 22:24c9c2dedca9 98 {NONE = 0 //何もなし
takeru0x1103 21:78302ecdb661 99 ,SLEEP //スリープモード(最初ここ)
takeru0x1103 20:0394e15412c3 100 ,WAKEUP //起動処理
takeru0x1103 20:0394e15412c3 101 ,STANDBY //スタンバイ(エンジンかかるの待ち)
takeru0x1103 21:78302ecdb661 102 ,IDLE //アイドル(エンジンがかかったけどなにもしない)
MasashiNomura 35:3779201b4c73 103 ,TAKE_OFF //離陸(エンジン回転数上昇 規定値まで)
takeru0x1103 20:0394e15412c3 104 ,HOVER //ホバリング
takeru0x1103 21:78302ecdb661 105 ,DRIVE //運転
takeru0x1103 21:78302ecdb661 106 ,GROUND //着陸(エンジン同時下げ)
takeru0x1103 21:78302ecdb661 107 ,EMGGND //緊急着陸(後ろエンジンを先に下げる)
MasashiNomura 36:2cc739c7e4cb 108 ,CHK_EG_ENT //SLEEPからエンジン調整モードへ(フラグリセット、アナログ入力が下がっていること、ボタンが押されいないことの確認State)
MasashiNomura 36:2cc739c7e4cb 109 ,CHK_EG_F //フロントエンジン調整
MasashiNomura 36:2cc739c7e4cb 110 ,CHK_EG_MID //アナログ入力が下がっていること、ボタンが押されていないことを確認するState
MasashiNomura 36:2cc739c7e4cb 111 ,CHK_EG_R //リアエンジン調整
MasashiNomura 36:2cc739c7e4cb 112 ,CHK_EG_EXIT//アナログ入力が下がっていること、他のボタンが押されていないことを確認してSLEEPへ
takeru0x1103 20:0394e15412c3 113 ,CHK_ENT //チェックエンター
takeru0x1103 20:0394e15412c3 114 ,CHK_MOT //モーターチェック
takeru0x1103 20:0394e15412c3 115 ,CHK_AXL //アクセルサーボチェック
takeru0x1103 20:0394e15412c3 116 ,CHK_ATT //姿勢制御チェック
takeru0x1103 20:0394e15412c3 117 ,CHK_EXIT //チェックステート脱出
MasashiNomura 25:f3a6e7eec9c3 118 ,MOT_STOP //モーター停止用
takeru0x1103 19:4b0fe9a5ec38 119 };
takeru0x1103 19:4b0fe9a5ec38 120
MasashiNomura 28:fdb3b144e342 121 enum eMotPos{
MasashiNomura 28:fdb3b144e342 122 F_L = 0, // 前 左
MasashiNomura 28:fdb3b144e342 123 F_R, // 前 右
MasashiNomura 28:fdb3b144e342 124 R_L, // 後 左
MasashiNomura 28:fdb3b144e342 125 R_R, // 後 右
MasashiNomura 28:fdb3b144e342 126 };
MasashiNomura 28:fdb3b144e342 127 enum eMotType{
MasashiNomura 28:fdb3b144e342 128 IN = 0,
MasashiNomura 28:fdb3b144e342 129 OUT,
MasashiNomura 28:fdb3b144e342 130 };
MasashiNomura 32:7f4145cc3551 131 enum eMotInType{
MasashiNomura 32:7f4145cc3551 132 OFS = 0,
MasashiNomura 32:7f4145cc3551 133 ATT,
MasashiNomura 32:7f4145cc3551 134 USER,
MasashiNomura 32:7f4145cc3551 135 };
MasashiNomura 36:2cc739c7e4cb 136 enum eEgPos{
MasashiNomura 36:2cc739c7e4cb 137 FRONT = 0,
MasashiNomura 36:2cc739c7e4cb 138 REAR,
MasashiNomura 36:2cc739c7e4cb 139 };
takeru0x1103 17:f9610f3cfa1b 140 /////////////////////////////////////////////////
takeru0x1103 21:78302ecdb661 141
MasashiNomura 35:3779201b4c73 142 //void init1PushStruct(typ1Push& item);
MasashiNomura 29:eb3d72dd94aa 143
MasashiNomura 22:24c9c2dedca9 144 void initFlags();
MasashiNomura 22:24c9c2dedca9 145
MasashiNomura 22:24c9c2dedca9 146 void setState(enmHbState stat);
MasashiNomura 23:79e20be4bc5b 147 void setStateF(enmHbState stat);
MasashiNomura 22:24c9c2dedca9 148
MasashiNomura 22:24c9c2dedca9 149
takeru0x1103 21:78302ecdb661 150 /*
takeru0x1103 19:4b0fe9a5ec38 151 class GlobalFlags{
takeru0x1103 19:4b0fe9a5ec38 152 private:
takeru0x1103 19:4b0fe9a5ec38 153 enmHbState stateQueue[STATE_QUE_SIZ];//ステート予約用のキューバッファ
takeru0x1103 19:4b0fe9a5ec38 154 int wp; //ライトポインタ
takeru0x1103 19:4b0fe9a5ec38 155 int rp; //リードポインタ
takeru0x1103 19:4b0fe9a5ec38 156 bool full; //フルフラグ
takeru0x1103 19:4b0fe9a5ec38 157 bool empty; //エンプティフラグ
takeru0x1103 19:4b0fe9a5ec38 158 public:
takeru0x1103 21:78302ecdb661 159 //プロパティ
takeru0x1103 20:0394e15412c3 160 enmHbState state;//現在のステート
takeru0x1103 21:78302ecdb661 161 //メソッド
takeru0x1103 20:0394e15412c3 162 GlobalFlags();//コンストラクタ
takeru0x1103 19:4b0fe9a5ec38 163 bool push(enmHbState iState);
takeru0x1103 19:4b0fe9a5ec38 164 bool pull();
takeru0x1103 19:4b0fe9a5ec38 165 };
takeru0x1103 16:05b9e44889f1 166
takeru0x1103 21:78302ecdb661 167 */
takeru0x1103 21:78302ecdb661 168
takeru0x1103 21:78302ecdb661 169
takeru0x1103 17:f9610f3cfa1b 170 //モニタ用LED
takeru0x1103 16:05b9e44889f1 171 extern DigitalOut led1;
takeru0x1103 16:05b9e44889f1 172 extern DigitalOut led2;
takeru0x1103 16:05b9e44889f1 173 extern DigitalOut led3;
takeru0x1103 16:05b9e44889f1 174 extern DigitalOut led4;
takeru0x1103 8:1ca49cb18290 175
MasashiNomura 33:eb260dbfc22a 176 //モーターアクセル用アナログ入力
MasashiNomura 33:eb260dbfc22a 177 extern AnalogIn AinAxl;
MasashiNomura 33:eb260dbfc22a 178
MasashiNomura 36:2cc739c7e4cb 179 //エンジンスロットル用アナログ入力
MasashiNomura 36:2cc739c7e4cb 180 extern AnalogIn AinThrottle;
MasashiNomura 36:2cc739c7e4cb 181
MasashiNomura 22:24c9c2dedca9 182 //////////////////////////////////////////////////
MasashiNomura 22:24c9c2dedca9 183 // フラグ
takeru0x1103 21:78302ecdb661 184 //extern GlobalFlags gf;
takeru0x1103 19:4b0fe9a5ec38 185
takeru0x1103 19:4b0fe9a5ec38 186 extern char g_CmdBuf[G_CMD_BUF_SIZ] ;// コマンド受け渡しバッファ
MasashiNomura 22:24c9c2dedca9 187 extern bool gf_CmdPrs; //コマンドパーサー実行要求フラグ
takeru0x1103 19:4b0fe9a5ec38 188
takeru0x1103 21:78302ecdb661 189 extern bool gf_Armed; //アーミングフラグ
MasashiNomura 22:24c9c2dedca9 190 extern bool gf_Dbg; //デバッグフラグ
MasashiNomura 25:f3a6e7eec9c3 191 extern bool gf_StopMot; //モーターの強制停止
MasashiNomura 25:f3a6e7eec9c3 192
MasashiNomura 22:24c9c2dedca9 193 extern typPrintFlag gf_Print; //デバッグプリントフラグ(1回表示)
MasashiNomura 22:24c9c2dedca9 194 extern typPrintFlag gf_Mon; //デバッグモニタフラグ(繰り返し表示)
MasashiNomura 22:24c9c2dedca9 195 extern typCalFlag gf_Cal; //キャリブレーションフラグ
MasashiNomura 26:732bc37fbefd 196
MasashiNomura 26:732bc37fbefd 197 extern typDbgPrintFlg gf_DbgPrint ;//デバッグ用
MasashiNomura 26:732bc37fbefd 198
MasashiNomura 22:24c9c2dedca9 199 extern typAccel gf_AxReq[2]; //アクセル更新
MasashiNomura 32:7f4145cc3551 200 extern typAxlRpm gf_MtReq[4]; //モーター姿勢制御更新
MasashiNomura 29:eb3d72dd94aa 201 extern typAxlRpm gf_MtReqOfs[4]; //モーターオフセット更新
MasashiNomura 32:7f4145cc3551 202 extern typAxlRpm gf_MtReqU[4]; //モーターユーザー更新
MasashiNomura 29:eb3d72dd94aa 203 extern typAxlRpm gf_MtReqDct[8] ;//ダイレクト(FPGA関数直接呼び出し)モーター更新フラグ
MasashiNomura 22:24c9c2dedca9 204
MasashiNomura 22:24c9c2dedca9 205 extern enmHbState gf_State; //現在のステート
MasashiNomura 36:2cc739c7e4cb 206 extern bool gf_StateEnt ;//状態遷移後、最初であることを示す
takeru0x1103 19:4b0fe9a5ec38 207
MasashiNomura 24:c5945aaae777 208 extern bool gf_PidParaUpdate ;//PID Pp,P,I,Dの係数アップデートフラグ
MasashiNomura 24:c5945aaae777 209 extern typPidPara g_PidPara; //PID Pp,P,I,Dの係数の外部設定用
takeru0x1103 19:4b0fe9a5ec38 210
MasashiNomura 36:2cc739c7e4cb 211 // extern bool gf_MotParaUpdate[4] ;//モーターのパラメータ値更新フラグ
MasashiNomura 36:2cc739c7e4cb 212 // extern typMotPara g_MotPara[4]; //モーターのパラメータ値
MasashiNomura 25:f3a6e7eec9c3 213
takeru0x1103 18:5aa48aec9cae 214 #endif