ロボット工作研究室

[Robot Work Laboratory] ロボット工作のページです。今は主にマイクロマウス製作中。

2009年04月

STM32開発中(5)

 EEPROMを使わなくても、マイコンの内臓フラッシュが使えたらパラメータや迷路の保存ができるんじゃないかと考えまして、フラッシュへのアクセスを試みました。
 安全のためか、フラッシュ書き込みの関数はデフォルトでは使えないようになっていて、ライブラリを再ビルドする必要がありました。といっても1行書き換えてバッチファイル動かしただけですけど。
 そんなこんなで、内臓フラッシュへの書き込みも成功。意外と簡単で、ロックを解除して、書き込みたい領域を消去して、2バイトずつ書き込むだけ。関数3つしか使いませんでした。
 面白いと思ったのは、読み込みのための関数が存在しないこと。アドレスをポインタに入れてやればそのまま変数として読み込めるわけですね。内臓フラッシュなので当たり前といえば当たり前なんですが、なんとなく面白いです。
 書き換えサイクルは1万回保障となっているので、フラッシュメモリの劣化も気にする必要はなさそうです。ただ、書き込み中でも読み込みが行えるのかどうかよくわかりません。プログラム実行と衝突を起こすとすると、割り込み処理を停止させねばならず、ログ保存には使えないことになります。いっそログはRAM上に置いてもいいですが・・・

STM32開発中(4)

 そういえばEEPROMのテストを忘れていました。I2Cのサンプルに、EEPROMの読み書きというそのまんまなヤツがあったので、ちょっといじってあっさり成功。

 片面感光基板でなんとかSTM32を使ったマウスの基板を作れないかと設計しはじめてみました。・・・が、これはなかなか難しいですね。両面基板に慣れてしまったのもあるでしょうが・・・うむむ。

STM32開発中(3)

 それなりにトラブルはありましたが、何とかエンコーダ入力とタイマ同期AD変換も成功。
 必要そうな機能が大体使えることが分かったので、48ピンのチップのピン割り当てをマウス用に妄想。ギリギリいけそう・・・かなあ。

 明日の月例会は出られません。しばらくマウスを走らせてませんね・・・。

STM32開発中(2)

 開発環境としてEclipsを導入してみました。
 エディタはかなり使いやすい感じですが、コンパイラの導入がどうにもチンプンカンプンで、自分の知識のなさが露呈した結果となりました。仕方がないので、GCC Developer Lite付属のGCCにソース全部をぶち込むツールを作って、外部ツール呼び出しで一括ビルドするような形になりました。めちゃくちゃですが・・・一応1クリックでhexファイルまで作れるので、もうこれでいいや・・・。

 話は変わって、1つのタイマでPWMが4本出せるのはいいですね。SHだとコンペアレジスタが一個カウンタクリア用に使われてしまうので3本までしかPWMが出せませんが、STM32だとカウンタクリア用には専用のレジスタがあるのですべてのコンペアマッチでPWMを出力できます。
 何が助かるかというと、モーター制御信号をPWM+方向ビットという形でなくて、PWM2本の形で使えること。これがあると、使えるモータードライバの幅がかなり広がります。ハーフブリッジを4つ並べるだけで2モータの制御も可能ですね。一度やってみようかなあ。

STM32開発中



 STのサンプルがほとんどそのまま動いたので、それなりに開発は進みました。とりあえずLEDチカチカとシリアル送受信、タイマ割り込みとPWM出力、加速度センサの読み取りまで成功。
 レジスタ操作はほとんどライブラリ化されていて、SHなどと比べてかなりプログラミングの勝手が違う感じです。しかしライブラリの日本語資料はないので、ハードウェアマニュアルとライブラリのソースを照らし合わせての開発となっています。なんだか本末転倒のような・・・?
 他はそれほどでもなかったのですが、AD変換には手こずりました。AD変換の結果を格納するレジスタが1つしかなく、複数チャンネルのスキャンをするにはDMAで転送しないといけないため、これまでDMAを使ったことのない自分には難易度が高かったです。2つのAD変換器で同時にスキャンするのもややこしく、同期させるモードに設定しないといけなかったり・・・。
 複雑な分、自由度は高そうですけど、ロボットに必要になる機能も限られますからね。

STM32(いまさら)

 USBドライバが未対応と判明して以来絶賛放置中だった、去年のデザインウェーブマガジンの付録基板を今更ながらいじり始めました。H8時代に使っていたGCC Developer LiteがSTM32に対応していることに気付いたため、いっちょやってみるかという気になったのです。
 いろいろ資料やツールを収集していますが、やはり言語の壁が厚いです・・・。日本語資料とメーカー純正開発環境の揃っているSHのなんと(アマチュア的に)恵まれていることか・・・。ただやはり、SHより小型、高速、低消費電力が揃っているのは魅力的なんですよね。
 マウスに最低限必要なのはIO操作、AD変換、タイマ割り込み、シリアル通信、PWM出力、エンコーダ入力ってところでしょうか。この辺が動かせたら、ARMマウスも考えてみようかと思います。

追記:
 DWMの付録CDに日本語版ハードウェアマニュアル入ってた!
 見落としてました、なんてこったい。でもこれでかなり楽になりそうです。

フルサイズ基板設計



 フルサイズの方の基板も設計し始めました。
 なんというか、面積がありすぎて張り合いがないです。昔はあんなに苦労してたのに・・・
 基板はどこに発注しましょうかねえ。

ハーフ迷路完成



 ハーフの迷路が完成しました。といっても壁と柱は既製品。
 壁はまだ何とかなるのですが、この柱を自作とか考えただけで頭が痛くなるので、買ったほうが早いと判断しました。あと、条件を本番のものに近づけたいというのもあります。

 実物をあらためて見るとすごく小さいですね・・・

3万ヒット&EX-FC100購入&某動画テスト



 いつのまにやら30000ヒット。ありがとうございます。
 記念というわけではないのですが、ついにEX-FC100購入しました。肉眼では捉えられない高速域のマウスの動きがよく見えて面白いです。ただ、光源がかなり強くないとまともに写らないようです。室内照明だけではノイズがひどすぎて、500Wの投光器を持ち出してやっとまともになりました。昼間ならもっとましになるでしょうか?

 これまで動画をアップしていたサービスが終了してしまったので、某動画にアップして貼り付けてみましたがどうでしょうか? これまでの動画はもうじき再生もできなくなるらしいのでご注意ください。何らかの形でバックアップをしたいとは思っていますが。
プロフィール

kato

他コンテンツ
■Wiki
 マシンデータ、公開資料など
 Machine data, etc...

■分室
 ツールなど
 tools, etc...

■その他
サイト内検索
Powerd by Google
 





このページはリンクフリーです

このページの内容は良識の範囲内で自由に利用・転載してかまいません



  • ライブドアブログ