複数同時にできない処理が重ならないように実行中の処理が終わるのを待ってから実行する制御を排他制御といいます
たとえば、メモリカードのファイルに書き込みする[処理A]と[処理B]があるとして、[処理A]を実行しているときに[処理B]を実行することになったときは[処理A]の処理が終わるのを待ってから[処理B]を実行する制御方法です
共用体はプログラム内で使用するので必ず作成してください
64個の処理を排他制御するように64個の要求フラグ、実行フラグ、完了フラグを作成します
Trigger : 要求フラグ = 実行したいときにONにしてください(立上りで要求を認識)
Run : 実行フラグ = 排他制御後に実行できるタイミングでONになります(このフラグを使って処理を開始してください)
Fin : 完了フラグ = 処理が完了したらONにしてください (ONするまで他のRunフラグはONになりません)
サンプルのプログラムSampleExlusiveControlをプログラムごとコピーして使いたいプロジェクトに貼り付けます
そのまま使えるので特に変更するところはありません
排他制御したい複数の処理をそれぞれ0~63番の処理番号に被らないように割り振ります
優先順位が高い処理は大きい処理番号へ割り振るようにします
RunがONで処理を実行するようにします
FinをONにするとRunはOFFになります
TriggerをONしてから処理を完了する前に(RunがONでもOFFでも)FinをONにするとキャンセルされて次に待っているRunがONになります
このようにRunフラグは順番にひとつだけがONするように排他制御が行われます
ダウンロードされたときは利用規約に同意したものとみなします