Qumcum Lab. が起動後に実行する処理です。Arduino の setup()です。
◀ この記事の前に: 省電力制御
▶ この記事の次に: メインループ / loop()
注意事項
周辺回路や他の MCUを起動時に設定する必要があります。そのための注意事項です。
Peripheral MCUの起動に関係すること
- 対 象: Peripheral MCU( ESP32 )IO2 と、Body MCU( STM32 )F20
- 必要な設定: 起動時に Body MCU( STM32 ) F20( PA2 )を HIGH にする。
- 詳細な内容: Peripheral MCU( ESP32 )IO2 は、省電力制御のひとつとして Peripheral MCU のスリープ時に Body MCU からウエイクアップをするための信号線として使用しています。ESP32の IO2は起動時の動作モードの設定に関係しています。
Peripheral MCU( ESP32 )の IO2 は
処 理
初期化の処理は以下のとおりです。
- シリアルモニタの初期化: ループが回るごとに実行
・モニタとの送受信: Arduino IDE のモニタと通信、デバッグ用です。
・BLEの受信: スマートフォンからの受信を確認してリモコン制御します。 - M-Llinkの初期化: setupML();
- ポートの初期化: setupPort();
- 汎用タイマの初期化: setupTCInt();
- BLE の初期化: setupBLE();
- サーボモータの初期化: setupSV();
- Motion interpreter の初期化 InitMS();
- サーボモータ用タイマの初期化 setupSVtimerInt();
- サーボモータ位置の初期化
コード
コードは以下のとおりです。
setup()
Qumcum Lab. がリセットスタート時に実行される処理です
//=====================================================================
// setup
//=====================================================================
void setup() {
//.... debug write ....
Wire.begin(); // I2C 100kHz
Serial.begin(115200); // UART 115200bps
delay(1000);
//.... Port ....
setupPort();
delay(10);
//.... Interval timer interrupt ....
noInterrupts();
setupTCInt();
interrupts();
//.... BLE ....
setupBLE();
ble112.ble_cmd_system_get_bt_address();
while (ble112.checkActivity(1000));
delay(1000);
//.... Servomotor ....
setupSV();
//.... Motion interpreter ....
InitMS();
//.... Servomoter interrupt ....
noInterrupts();
setupSVtimerInt();
interrupts();
startSqForcedMS( SV_SQ_STOP );
}
setupPort()
各定時制御用のフラグ処理です。
//---------------------------------------------------------------------
// Counter
//---------------------------------------------------------------------
void loopCounter(){
iLoop1s += 1;
//--------------------
// 1s period
//--------------------
if (iLoop1s >= 8){ // 125ms x 8 = 1s
iLoop1s = 0;
iSendCounter += 1;
if (iSendCounter >= SEND_INTERVAL){
iSendCounter = 0;
event1s = true;
}
}
gLoopMS += 1;
//--------------------
// SV period
//--------------------
if ( gLoopMS >= 4 ){ // 125ms x 8 = 1s
gLoopMS = 0;
gEventMS = true;
}
}
参考情報
参考になる情報は以下のとおりです。
このホームページ内
- 複数のMCUをつなぐ: このロボットには複数の MCUが搭載されています。その MCU間の接続の概要です。
他のWebサイト
- SN74LVC1G3157 SPDT アナログスイッチ Datasheet