Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
globalFlags.h
- Committer:
- MasashiNomura
- Date:
- 2019-01-16
- Revision:
- 36:2cc739c7e4cb
- Parent:
- 35:3779201b4c73
- Child:
- 37:d51dacb4c30f
File content as of revision 36:2cc739c7e4cb:
#ifndef __GLOBALFLAGS_H__
#define __GLOBALFLAGS_H__
#include "mbed.h"
#include "typedef.h"
#define G_CMD_BUF_SIZ 32
#define STATE_QUE_SIZ 8
#define STATE_BUF_SIZ 8
#define LIM_MOT_INP_MIN -2000
#define LIM_MOT_INP_MAX 2000
#define MAX_VAL_12BIT 4095
#define BRK_RPM 4000
typedef union{
UINT16 flg;
struct{
bool e1 : 1;//前エンジン回転数
bool e2 : 1;//後ろエンジン回転数
bool m1 : 1;//サブモーター回転数
bool m2 : 1;//サブモーター回転数
bool m3 : 1;//サブモーター回転数
bool m4 : 1;//サブモーター回転数
bool gy : 1;//ジャイロ
bool yaw : 1;//ヨー角
bool fb : 1;//PID制御feedback結果
bool pp : 1;//P制御ゲイン(アウターループ)
bool p : 1;//P制御ゲイン
bool i : 1;//I制御ゲイン
bool d : 1;//D制御ゲイン
bool v : 1;//PID2(torgue)角速度feedback制御用ゲイン
bool stat : 1;//ステート表示
}bf;
}typPrintFlag;
typedef union{
UINT16 flg;
struct{
bool e1 : 1;//
bool e2 : 1;//
bool m1 : 1;//
bool m2 : 1;//
bool m3 : 1;//
bool m4 : 1;//
bool gy : 1;//
bool yaw : 1;//
bool fb : 1;//PID制御feedback結果
bool pp : 1;//P制御ゲイン(アウターループ)
bool p : 1;//P制御ゲイン
bool i : 1;//I制御ゲイン
bool d : 1;//D制御ゲイン
}bf;
}typCalFlag;
//
typedef union{
UINT16 dt;
struct{
UINT16 val : 12;//アクセル設定値
bool req : 1;//アクセル更新要求
}bf;
}typAccel;
typedef struct{
INT16 val;//アクセル設定値
bool req;//アクセル更新要求
}typAxlRpm;
typedef union{
UINT16 flg;
struct{
bool mo1 : 1;//Motor1 Offset val
bool mo2 : 1;//Motor2 Offset val
bool mo3 : 1;//Motor3 Offset val
bool mo4 : 1;//Motor4 Offset val
bool ana1 : 1;//AnalogRead for Motor Accel
bool ana2 : 1;
}bf;
}typDbgPrintFlg;
typedef union {
UINT16 dt;
struct{
UINT16 num :6;
UINT16 counter :6;
//UINT16 pos :3;
bool add_end :1;
bool req :1;
}bf;
}typOnePushFlg;
//ステート定義
enum enmHbState
{NONE = 0 //何もなし
,SLEEP //スリープモード(最初ここ)
,WAKEUP //起動処理
,STANDBY //スタンバイ(エンジンかかるの待ち)
,IDLE //アイドル(エンジンがかかったけどなにもしない)
,TAKE_OFF //離陸(エンジン回転数上昇 規定値まで)
,HOVER //ホバリング
,DRIVE //運転
,GROUND //着陸(エンジン同時下げ)
,EMGGND //緊急着陸(後ろエンジンを先に下げる)
,CHK_EG_ENT //SLEEPからエンジン調整モードへ(フラグリセット、アナログ入力が下がっていること、ボタンが押されいないことの確認State)
,CHK_EG_F //フロントエンジン調整
,CHK_EG_MID //アナログ入力が下がっていること、ボタンが押されていないことを確認するState
,CHK_EG_R //リアエンジン調整
,CHK_EG_EXIT//アナログ入力が下がっていること、他のボタンが押されていないことを確認してSLEEPへ
,CHK_ENT //チェックエンター
,CHK_MOT //モーターチェック
,CHK_AXL //アクセルサーボチェック
,CHK_ATT //姿勢制御チェック
,CHK_EXIT //チェックステート脱出
,MOT_STOP //モーター停止用
};
enum eMotPos{
F_L = 0, // 前 左
F_R, // 前 右
R_L, // 後 左
R_R, // 後 右
};
enum eMotType{
IN = 0,
OUT,
};
enum eMotInType{
OFS = 0,
ATT,
USER,
};
enum eEgPos{
FRONT = 0,
REAR,
};
/////////////////////////////////////////////////
//void init1PushStruct(typ1Push& item);
void initFlags();
void setState(enmHbState stat);
void setStateF(enmHbState stat);
/*
class GlobalFlags{
private:
enmHbState stateQueue[STATE_QUE_SIZ];//ステート予約用のキューバッファ
int wp; //ライトポインタ
int rp; //リードポインタ
bool full; //フルフラグ
bool empty; //エンプティフラグ
public:
//プロパティ
enmHbState state;//現在のステート
//メソッド
GlobalFlags();//コンストラクタ
bool push(enmHbState iState);
bool pull();
};
*/
//モニタ用LED
extern DigitalOut led1;
extern DigitalOut led2;
extern DigitalOut led3;
extern DigitalOut led4;
//モーターアクセル用アナログ入力
extern AnalogIn AinAxl;
//エンジンスロットル用アナログ入力
extern AnalogIn AinThrottle;
//////////////////////////////////////////////////
// フラグ
//extern GlobalFlags gf;
extern char g_CmdBuf[G_CMD_BUF_SIZ] ;// コマンド受け渡しバッファ
extern bool gf_CmdPrs; //コマンドパーサー実行要求フラグ
extern bool gf_Armed; //アーミングフラグ
extern bool gf_Dbg; //デバッグフラグ
extern bool gf_StopMot; //モーターの強制停止
extern typPrintFlag gf_Print; //デバッグプリントフラグ(1回表示)
extern typPrintFlag gf_Mon; //デバッグモニタフラグ(繰り返し表示)
extern typCalFlag gf_Cal; //キャリブレーションフラグ
extern typDbgPrintFlg gf_DbgPrint ;//デバッグ用
extern typAccel gf_AxReq[2]; //アクセル更新
extern typAxlRpm gf_MtReq[4]; //モーター姿勢制御更新
extern typAxlRpm gf_MtReqOfs[4]; //モーターオフセット更新
extern typAxlRpm gf_MtReqU[4]; //モーターユーザー更新
extern typAxlRpm gf_MtReqDct[8] ;//ダイレクト(FPGA関数直接呼び出し)モーター更新フラグ
extern enmHbState gf_State; //現在のステート
extern bool gf_StateEnt ;//状態遷移後、最初であることを示す
extern bool gf_PidParaUpdate ;//PID Pp,P,I,Dの係数アップデートフラグ
extern typPidPara g_PidPara; //PID Pp,P,I,Dの係数の外部設定用
// extern bool gf_MotParaUpdate[4] ;//モーターのパラメータ値更新フラグ
// extern typMotPara g_MotPara[4]; //モーターのパラメータ値
#endif