2018年8月16日木曜日

Flash MSC


 祝・FlashをMSCに使えたぞ、の図。
 プログラムだけで動くやつだと写真写り悪いねぇ。

 いろいろトラブルも有りましたが、無事にMSCとして動くようになりました。バンク間の移動もちゃんと動くようになりました。
 今の所100KiB程度の容量ですが。

 一番長くかかったトラブルは、0オリジンと1オリジンの混同でした。これに気がつくのにほぼ丸一日使ってしまった。
 128KiBのバンクは512バイト毎の256セクタに分割され、最初(0番目)のセクタを管理領域として使用しています。そのため、使用可能なセクタを探すコマンドの戻り値は1から255の範囲をとります。一方、管理構造体は最初に16bit x 256の配列があり、その後で8bit x 512 x 255の配列を持ちます。この構造体ではセクタは0から254の範囲を取るわけですが、1-255の値をそのまま使っていたために不思議な挙動になってしまいました。
 結局、16x256と8x512x256をunionで同じ領域に配置することにしました。


 FatFsの低レベルreadにFlashから読み込む機能を追加したので、PCから自由にファイルを読み書きしつつ、マイコンからもファイルを読み出せるようになりました。
 あとはLuaインタプリタを追加すれば、PCから投げたスクリプトを実行できるようになります。もっとも、実用的に使うのであれば、C++でLua向けのHALラッパーを作る必要がありますが。ここが一番面倒ですね。

 とりあえず、最低限プラモデルの電飾に使えるくらいの機能は実装したいなぁ。
 とはいえ、小さなプラモデルに組み込むにはSTBee F4miniはデカいし、大きなプラモデルに組み込もうとすると、そもそもプラモデルを作るのが大変という問題が。
 高層ビルのプラモデルで窓文字とか? いったいどれだけのLEDが必要なんだろうか。。。もちろん、プログラム次第でサーボモータと電飾を一括して制御とかもできるので、軍艦の砲塔を動かしながら砲塔を光らせるとか、戦車の砲塔を動かしながらLEDでマズルフラッシュを光らせて、同時にリコイル動作を再現する、とかも可能なはずですが。

0 件のコメント:

コメントを投稿