マイクロマウスのソフト設計の話 その4

こんにちは。そらです。

前回と同様にアクティビティ図を用いて、周辺機能の処理の流れと割り込み処理を検討していきます。ジャイロセンサとSPI通信するものと、モーターを用いたTIMと、割り込み処理をやろうかなと思っています。




割り込み処理の流れを検討していく

マイコンのTIMをトリガに、一定時間で処理をするときの流れについて考えていきます。PCでプログラムを書くときは、ハードウェアの制御をOSに任せているためハードウェアを意識することは少ないと思います。ただ、マイコンの場合はハードウェアを統括するOSは乗っていないため自分で考える必要があります。

マイコン内ではメインルーチンと割り込み処理が同時に動きます。マイコンは基本的に1コアのため、どちらか片方の処理が占有されるため並列処理とは言えないかもしれません。今回は、制御等の書いてある割り込み処理にだけ注目してみます。

ここで登場するのは割り込みのレーンと周辺機能のレーンになります。

目標値更新あたりは、想像してもそこまでわからなかったのでこんな感じに書きました。

周辺機能の流れを検討する

全体の処理から細かい処理に移行していきます。大きい方から小さい方にアクティビティ図を描いている理由の一つに大きな処理の流れがわかっていれば、その中で必要な事項がわかり詳細を詰めていきやすくなると考えているからです。上位工程の大切さが身に染みます。これは、周辺機能のパッケージの中のオブジェクトについて考えていくことになります。

ジャイロセンサの流れを検討する

IMUはSPIで接続されているのでSPI通信周りのことも考えていきます。今までで一番実装に近く具体的な内容になるかなと思います。

この処理の流れは過去に書いたSTM32マイコンの周辺記事を使用するを参考にしています。

エンコーダの処理の流れを検討する

ジャイロセンサと同様に考えていきます。今回のハードウェアについているエンコーダは磁気式エンコーダICを使用しています。また、通信はSPI通信を使用していることを念頭に進めていきます。

ジャイロセンサのときのほぼ同じになりました。他の周辺機能については各自で考えて見ていただければと思います。

処理の流れを書いていきましょう。また、処理の中で必要なことを丁寧に取り上げていくといいと思います。

さいごに

アクティビティ図を用いて処理の流れを可視化してみました。この図を作っておくと、何をしなければならないのかが一目瞭然になるので、オブジェクトが持つべき関数等が見えてきますね。

今回の表はあくまで例なので、詳細に知りたい方は技術書等を読んで勉強することを強くお勧めします。

次回予告

クラス図を考えていく予定です。

その他

図形の製作にはPlantUMLを使用しています。