« 2011年6月 | トップページ | 2011年8月 »

2011年7月

2011年7月30日 (土)

外仕事(事故)

ルーターとして動かしているノートPC。
外だけれど一応テントの中で使っていたのだが。

ふと気づくと、作業しているノートPCが、netにつながらなくなっている。
壁面に垂直に固定しているルーターPCの様子を見に行ってみると、幕の一部に隙間が開いて、なんと水が滴っているではないか。

とりあえず電源スイッチを押して起動すると、変なビープ音と共に画面は砂の嵐(LCDなのに)。

HDDを引っこ抜き、ドライヤーで乾かし、同一ハードの別のPCに差し込んでシステムを復旧。
事なきを得たが...
水が滴っている本体は、さらにバラバラにして床に並べ、ヒートガンで乾燥。
数時間後に再度くみ上げてみるとなんとか復旧。

一応被害は無かったことになったけど、2台のPCの体と人格が入れ替わってしまった。
まあいいか?

| | コメント (0) | トラックバック (0)

2011年7月29日 (金)

外仕事

週末は仙台。

晩飯は宿に近い利久にて。
うーん...まあタンは、おいしいんだけど、付け合せの浅漬けがイマイチ。

牛タンは付け合せの浅漬けとのコンビネーションが肝(断言)。
浅漬けがイマイチだとタンも進まない、というか一人前食べると飽きてきて、食後の印象があまりよくない。
改善を望むところだ。

| | コメント (0) | トラックバック (0)

2011年7月28日 (木)

基板発注

データを出した後に間違いを見つけた。
しまった....

と気づいた矢先に、デザインルールに違反していて作れない、との連絡が。
ちょうど良いので、言われた部分以外でも修正したデータを送りなおす。
8/4着予定。

| | コメント (0) | トラックバック (0)

2011年7月25日 (月)

進捗

アートワーク進捗 95%

110726

あと少し。

先週、今週は色々と外仕事など。
マウス活動ペースダウン中。

基板は、一時期から考えるとスカスカに仕上がりそう。
面積的にはもっと小さくしたいけど、QFP64Pが居座っている以上、ちょっと難しい。

------

とはいえ、なんとなく理想とするレイアウトには入ってきている。
理想的には左右方向は迷路の幅依存だけれど、前後方向は、ホイールベース内に収めたい。
センサがはみ出す分は仕方ないけれど。

それ以外のものは、できれば前後の車軸間、無理でもタイヤの端の間には入れたい。
ここから目指すは、超低イナーシャマウス。

モーターの選定(1717)と予想重量から、これはこれで、仕込みが不発に終わったとしても、普通に走行性能の高いマウスになるような気がしてきている。

| | コメント (0) | トラックバック (0)

2011年7月20日 (水)

大会迷路

そういえば、マウスからデータを引っ張り出すのを忘れていた。

コンソールから、壁情報のデータ出力。

110720

ちゃんと、全面探査終了している。
いや、ゴール区画の中に壁が出来ている?

たしか最初は、探査が終わる前にスタックして、2走目もこけたのだけれど。
こけた弾みに、そのままゴール区画に飛び込んでしまった。
このの影響かな。

| | コメント (0) | トラックバック (0)

2011年7月19日 (火)

作業中

ぼちぼちと作業。

110719

関西支部大会に限らないけれど、大会参加することで、毎回なにがしかの刺激を受ける。
もうマウスを作り始めて10年経つけれど、いまだ理想のマウスは見えない。

もうずっと、マウスは行き着いているとか、マンネリとかの意見も絶えないような気もするけれど、実際のマウスはきっちり進歩している。
マンネリになっているとすれば、マウスではなくやってる人間のほうだ。よくある話。

------

迷路探査ひとつとっても、いわゆる足立法がベスト、で結論が出ている。と言われてはいる。

しかし実際の大会迷路では、難易度を上げる目的で、ほぼ間違いなく、足立法など既知の探査方法の効率が悪くなるように設定されている。

例えば、そもそも30歩以下でゴールに到達する可能性は0%なので、この歩数あたりで直近のゴールを目指すほうが、遠回りになるのは自明だ。
この事ひとつとっても、直接足立法などが示すルートを選択しないほうが(結果的に)効率の良い探査ができることを示している。

迷路出題者は、迷路の難易度を極端に設定できないため、できあがる迷路には一定の傾向、特性ができる。
ここを定量的、あるいは定性的に評価し、探査方法を編み出したりすることで、さらに効率の良い探査が可能になる。

このあたりを、ちゃんと実装しているマウスは少ないと思うのだけれど。

------

自分の今のマウスは、左手法も求心法も、足立法も使っていない。
直近の未探査区域を探しまわるだけだ。
その影響で、ゴール区画は既知のエリアなので、ゴールの入り口が1箇所だけの普通の迷路だと、ほぼ間違いなく探査ではゴールに入ってくれない。
決してこだわって、ゴールを避けているわけではないのだけれど、マウスにとってはただの既知の袋小路なので、優先順位が低いらしい。

このやり方を色々評価してみても、他の方法での全面探査に比べ、そう歩数が多くなるわけではないようだ。
スラローム探査をするにあたって、探査ミスをしやすいルート(動き)を避け、多少遠回りでも安全なルート取りをすることを優先するようにしている。

例を挙げると、ターンはなるべく右左を交互に配置する、とか、4つ角で停止しないなど。

危険な動きを控えることで、探査の平均速度をあげ、遠回りの分の収支を合わせているつもり。

------

色々考えると、まだまだマウスはやるべきことが多いと思うのだが。

どうでしょうか。

| | コメント (2) | トラックバック (0)

2011年7月17日 (日)

関西地区大会参加

朝から電車にて移動し、大会に参加してきた。

110717

地区大会や、予選レベルではあまり見ない、16区画直進とか長い斜めとか、けっこう高い要求の迷路だった。

結果はクラシック、大差で3位。
まあ、整備されて無いロートルマウスとしては、それなりに走ったかな。
色々副賞も頂く。
ありがとうございます。

------

各人の新作もちらほらと。ふーむ、なるほど...
自分の新作とかぶっているようなマウスは、今のところ無いようだ。

粛々と進めるか。

| | コメント (0) | トラックバック (0)

2011年7月16日 (土)

調整中

どうも調子が出ない。
最低ラインのパラメータでもおぼつかない?
スラローム半径が小さすぎる。

------

タイヤの直径のパラメーターを調整すると、調子が戻った。
しかし、タイヤ径の設定を1mmも大きくしないといけなかった。

いままで一度もタイヤを交換したことは無いのだけれど、いままでタイヤ径の調整はだんだん減らしていく方向で合っていたので、てっきり磨り減って小さくなっていたのかと思っていたのだが。

思えば、前回走らせたのは真冬だったような。
磨り減っていたのではなくて、季節の問題だったか?

バッテリは、思っているほどは消耗していない感じ。
昔のNiMHは、1年もたつとどれもこれもヘロヘロになったものだが。

| | コメント (0) | トラックバック (0)

2011年7月14日 (木)

モーターマウント

試してみる。

110714

かみ合わせは、ちょっといまいち。
まあ、クリアランスが広い方向で安定しているので、とりあえずこれで進めるかな。
行けそうと分かったら、もうちょっと詰めたのをつくればいいや。

------

基板を含む回路や、プログラムとかならともかく、こういった機構部品は、なかなか思うようにならない。
自分の守備範囲の問題なので、いたしかたないところ。

だからといって、自分でフライス回せるように訓練したら、すぐに6輪マウスのようなレベルのものが作れるわけでもなし。

先行者に対して、相手と同じベクトルで追いつこうとするのは、たいへんだ。
相手の得意な分野、アウエーで勝負するのは、いかにも勝機が薄い。

マウス全体のトレンドを自分の得意分野に引き込み、そこで勝負を挑むのが良かろうと思い、色々妄想するのだが....

------

関西地区大会は参加登録済み。
新作は、いまだこんな状況なので、現行モデルにて。

しかも土曜日は、別の予定により参加できず。
日曜日のみ参加予定。

| | コメント (0) | トラックバック (0)

2011年7月12日 (火)

F2続き

PWMとADCの動作も確認。
これで大体出揃ったかな。
そろそろ基板設計にもどるか。

しかし、ADCは3系統か....
チャンネルごとに、サンプリングタイムが設定できるようだ。
これは新しい。今まで使ってきたものは、すべてクロック依存の固定値だったが。
うまく使えば便利かも。

あたらしいチップには、あれこれと新機構がついてくる。
よくもまあ尽きないものだ。

| | コメント (0) | トラックバック (0)

2011年7月11日 (月)

エンコーダー入力

TIM5の位相カウントモードを試してみる。

110711

手回しのエンコーダーを付けてテスト。
まあ、動いているようだ。

タイマーの構造は、F100から比べても、さらに複雑さを増していて、全体像を理解するにはまだ時間がかかりそう。
そもそもマウスでは使いそうも無い機能までは、把握しておくことも無いが。

ちょっと迷ったところ。
カウンタCNTは、0とARRとの間でカウントするので、16ビットならば0xffff、32ビットでカウントするならば0xffffffffをARRに設定しておかないと思ったように動かない。

あと、入力のフィルタリングをONにしておかないと、途中でフリーズすることがあったり。
ハード的なフィルタは付けてなかったけれど、せっかく多彩なデジタルフィルタの設定が用意されているので、これを使えということなのだろう。

これで、ハードウエア任せで、32ビット長のエンコーダカウントが出来る。

同じピンでTM2のテストも出来るが、確認するほどのこともないか。

| | コメント (0) | トラックバック (0)

2011年7月10日 (日)

進行中

休みの日は、それはそれで用事も色々。
すきま時間に、ちょっとづつ進める。

systickインターバル割り込みは動作ok。
割り込みベクタコントローラを意識しないので簡単。
以前のARM7TDMIと違って、コア側でコントローラーを持ってくれているので、チップごとの違いを考えたりしなくて良い。

書き込みツールは、460kbpsで動かすと、やっぱり多少不安定。
230kbpsに変更。

| | コメント (0) | トラックバック (0)

新ネタ部品

秋月の在庫が僅少となっていて、買いおいておこうか迷っていたのだけれど、digikeyにも同じものがあるのを見つけて安心。
こっちは数百個単位で在庫しているようだ。
値段は倍以上違うが、まあそもそも、たいした値段ではないので問題なし。

しかし、データを見る限り、同じものに見えるのだが、どっちかがどっちかのOEMなのかな...

| | コメント (0) | トラックバック (0)

2011年7月 9日 (土)

シリアルモニタ起動

ちゃっちゃと、いつものシリアルモニタを移植。
stm32独特のボーレート計算も問題なし。

110709

とりあえず割り込みを使わないで、ポーリングで動作させる。
ここまでくれば、もう電気周りは、できたも同然?

------

F100に比べて、色々変わっている。
32ビットタイマーが使えるようになった。(TIM2,TIM5)
ここで、エンコーダーを受ければ、さらに楽になるはず。

モーター駆動用のPWMは16ビットもあれば十分だったが、エンコーダー入力は16→32ビットの変更が必要だった。
これもいらなくなりそう。
エンコーダー入力は、TIM1~5、TIM8の6ch分使える。

そもそもタイマーだけで14個もある上に、cortex-M3のsystickもあるので、もはや足りなくなることはなさそうだ。

| | コメント (0) | トラックバック (0)

2011年7月 8日 (金)

F200 一応の決着

STM32F2、LEDちかちかに到達。

110708

結局、原因はソフトウエアだった。
レジスタ名のタイプミス、というか読み違い。

×RCC->APB1ENR
○RCC->AHB1ENR

×RCC->PLLCFGR
○RCC->CFGR

------

ポートぱたぱたが出来れば、そこを足がかりに色々進められるのだけれど。
そこにも到達しないことには、足りていないものを見つけ出す作業は困難なものだ。

今回は、ソフトウエア開発環境こそ、F100のを使っているので、その点の問題はなかったのだけれど。

今回作った、怪しいシリアル書き込みツールは、まあ動いているとは思うのだけれど、保証されているものではないので、常に怪しむべき項目ではあった。

110708a

Bootloaderは起動するのに、自前のオブジェクトはまったく起動する気配が無い。
こういうときだけは、デバッガーが使えるといいなあ....と思うのだけれど。

------

F207ボードでも同じ症状だったので、おそらくソフトウエア周辺だなあ、と当たりは付いた。

IOポートに出力を出すには最低でも、GPIOブロックにクロックを供給するためのレジスタと、ピンをGPIOの出力に設定するためのレジスタ4個、さらに出力レジスタに値を書き込む必要がある。
これのどこかでつまづくと、どこが悪いのやら...

なんとか1個レジスタを設定するだけで外に出力できるものは、なにかないかな....

あった。HSE、これだ。

外付けに25MHzのクリスタルをつけ、ソフトの先頭でHSEを許可してみる。
むう、25MHzで発振しているようだ。
これで確信が持てたので、安心して?じっくりソースコードとリファレンスマニュアルを見比べる。
あとは、HSEを許可するコードの位置を色々変えてみて、動作を探る。
ここまで行けば、冒頭の状態まではすぐだった。

難航したような気もするが、実際にはたいした時間はかかってないような気もする。
怪しい書き込みツールも作った分も込みだし。
苦戦の印象が強いのは、途中、手詰まりを感じたからだろうか。

------

本当にスペック上限の120MHzで動作しているか検証する意味も含め、PLLの設定をいじり、オーバークロック耐性を試してみる。
スペック上限で動かしていると信じていても、クロックを倍や3倍にしても平然と動くとしたら、設定を外していて、実際にはゆっくり動いているかもしれない。

クロックをいじるときは、消費電流も見ておく。
クロックを上げると消費電流も増えるので、変えたつもりが変わってなかったのでは?というのを回避しやすくなる。

ふーむ、160MHzでは、F205、F207とも問題なく動くようだ。
180MHzでは動かない。(消費電流も低い)
まあ、いいところかな。
PLLの設定も外してはいないようだ。

書き込みツールの怪しいところを直したり、スタートアップのベクタテーブルの定義がF103用のままなのを直したりとか、まあ、細かい作業はまだ色々あるが。

なんだかんだと動くようになってしまったので、新作マウスはF2で行くかなあ...

| | コメント (0) | トラックバック (0)

2011年7月 7日 (木)

F207

どうにも進まないので、休憩中...だったのだが。

ここ最近のハズレネタのように、見通しが立った上で保留にするならともかく。
こういう形で挫折するとモチベーションが下がってしまうので、最後にもうひと踏ん張り。

すぐに使う予定は無かったSTM32F207を出してくる。
100ピンパッケージのやつ。
同じように、バラックに組んで試してみる。

110707

こいつの挙動をみて、問題の切り分けの手がかりにしてみる。

------

やはり同じだ。
書き込みは出来ているようだけれど、flashでの起動が出来ていない。
ハードウエアの問題ではなくで、書き込んでいるバイナリになにか問題があるのか。

この際、ST-LINKでも試してみるべきか...

いや、STM32F103で、さっさとやっつけてしまうのが正解か。

| | コメント (0) | トラックバック (0)

2011年7月 6日 (水)

書き込みツール

ちょっと思い立って、書き込み用のダイアログアプリを書いてみた。
とりあえず、消去と書き込みはうまくいっているようなのだけれど、モードを切り替えてflashで起動しても、うんともすんとも...

読み込んでみても、ちゃんと書けているようなのだけれど。

そもそも、オブジェクトの生成で失敗しているのかもしれない。
ちょっと策が尽きた感じ。ちょっと休憩。

| | コメント (0) | トラックバック (0)

2011年7月 5日 (火)

F205 続き

今日一日で、自走で730km移動。
自走距離の新記録かな。
さすがにちょっと疲れた。

------

昨日の基板を、続けてつついてみる。
ターミナルソフトで、手動コマンドを送りつけて色々試す。

Bootloaderのコマンドは、1バイトコマンド+コマンドのビット反転 の形で、テレビのリモコンのプロトコルのようだ。
その後に続くパラメーターは、複数バイトデータ+1バイトチェックサムとなっているのだけれど、チェックサムは、チェックサムも含むすべてのバイトのXORを取ると、00Hになるように設定するようだ。ちょっとあまり見ない形かも。

Flashの全面消去にちょっと時間が掛かる(5秒くらい?)けれど、それ以外では特に問題はなさそう。
書き込みコマンドは、1回のコマンドで256バイトまでは転送できるようだ。
書き込みは32ビット単位だけれど、まあこれも当然。

手打ちで試したかぎりでは、うまくflashに書き込まれているようだ。

目処が立ったので、ダイアログベースの、簡単なアプリでも書いてみようか。
それでうまく実行ファイルが書き込めるようなら、新作もF-2でもいけるかも。

| | コメント (0) | トラックバック (0)

2011年7月 4日 (月)

F205

ピッチ変換基板で、ちょっと組み立ててみる。

110704

純正の書き込みツールには、なんとなく反応するが、IDは正しく取れていないようだ。
当たり前だけれど、書き込みは出来ない。
サードパーティのツールも、IDを認識してF20xとは返してくるけれど、先には進まない。

------

AN3155あたりのドキュメントを見てると、bootloaderのコマンド体系は、F100系とほぼ同じなのだけれど。
全体消去のコマンドが違っていそうだな...

コマンド全体としては、ホストから数バイトのコマンドを送信。ack/nackが返るのををみて次の処理に進む、シンプルな構造をしている。

ためしにターミナルソフトを起動して、手打ちしてみると、それなりに進むようだ。
全体消去のコマンドとかも、正しく動く。

------

このくらいなら、コマンドラインアプリで、ポートやボーレートを決め打ちにすれば、割とすぐに作れそうだ。
まあ、待ってればすぐに純正アプリが対応するとは思うけど、作ってしまったほうが早いかもなあ。

大昔にH8-300Hのflash書き込みツールを作ったときは、シーケンス途中でボーレートを変換したりとか、HEXファイルを受信してアドレスを解析したり、バイナリにしてからflashメモリセルのコントロールをやったりとか....まあ、かなり大変だった。

何しろ、チップには本当にブートコードしか入ってなくて、通信や書き込み用のプログラムを外部に用意しておくようになっていたし。

それでも、書き込み時間が純正ツールの2/3くらいになって、まあやった甲斐はあったような。

それを思えば、遥かにゴールまでは近そうなのだが...

| | コメント (0) | トラックバック (0)

2011年7月 1日 (金)

stm32 F2 flash書き込み

STM32F2のflash書き込みについて。

BOOTピンを使ってシステムメモリで起動するところは、いつもと同じ。
Bootloaderは2つバージョンがあるみたいだ。
USART経由だけでなく、CANやUSB、Ethernet経由でもいけるようだ。

USARTも、USART1とUSART3、どっちでもいける。
USART3は2系統(PB/PC)どっちでもいいみたい。
これは便利かも。
3つのRxの内、使わないピンはレベルを固定しておけ、となっている。当然といえば当然だな。

------

ただし世間の趨勢では、JTAG/SWDで書き込むのが一般的になってるようだ。
デバッガとかの都合を考えると、まあそうなるのだろうな。

マウスの場合は、なるべく部品点数を減らしたい。
flash書き込みもシリアル接続でいけるなら、なるべくそれを使いたいと思っている。

そもそもマイクロマウスの運用上、ログデータの取り込みとか、パラメータセッティング、センサの調整、その他諸々、PCから接続できるモニターに類するものが必要になる。

しかし書き込みと、モニタ接続が別コネクタとかになると、ちょっと鬱陶しく感じてしまう。

STM32のUSB接続のDfuSeは、一時はなかなか良いかも、と思ったのだけれど。

USBデバイスなら、ワイヤは少なくても複数のデバイスをサポートできるので、ログのデータはマスストレージクラスで、とか...

しかしBOOTモードに入るたびに、USBデバイスが切断/再接続を繰り返し、コネクタがつながったままでも、手動でシリアルポートの再接続をしなければならないとか、結局良いところは見出せなかった...
頻繁にUSBデバイスの接続/切断をやると、Windowsが落ちるのも鬱陶しかったし。

JTAG接続では書き込みはともかく、実行中のプログラムとの通信が面倒そう、と感じてしまっていて、先に進めていない。
いまどき、何らかの方法があるとは思うのだけれど。
しかし、たしかSHでは、機能は在っても非公開で、自社の開発ツールで独占使用してたような記憶がある。

なんだかんだ、結局今に至るまで、マウスではシリアル接続の環境から離れられないでいるのだけれど。
最新のチップでも、その機能が捨てられて無いところを見ると、そういった需要は少なからずあるのではないか、と思っている。

------

話はもどって、stm32f2。

書き込み用のFlashLoaderDemonstratorだけれど、Bootloaderのコマンドも変わりが無いみたいだし、F2用のmapファイルが、stmからリリースされるか、メモリマップにあわせて自分で編集すればいける、と軽く考えていたのだけれど。

よくよくドキュメントを読んでみると、なにやら内蔵flashの記述が微妙。

STM32F100とかでは、1page、1kbyteで128pageとかの単位で管理されているが、F2ではsectorで管理されることになっているようだ。
1sectorの容量はバラバラだ。
page = sectorとして、無理やり記述すれば、うまくやってくれるのか?

正式toolのリリースか、なんらかの書き込み用のツールの情報を待ったほうがよさそうな気がする....
とりあえず、検証用にF2はバラ基板で組んでみて試したほうがよさそうだ。

今やってるマウスの実証試験機は、時間的に余裕はなさそうだし、使い慣れたF103かなあ。とりあえず...

| | コメント (0) | トラックバック (0)

« 2011年6月 | トップページ | 2011年8月 »