ブログ - 最新エントリー

at91sam7s/xの起動処理

カテゴリ : 
雑記
2009-12-3 0:35
ずーっと使いながら時々気になっていたことって良くあるものです。別のせいにしてお茶を濁してることもしばしば。at91sam7s/xでも似たようなことがって、あまり手を入れていなかった所に地雷が仕掛けられていました。それがPLLの初期化。
とりあえず現状でも動くのですが、起動させる条件(たとえばデバッガを使っていたりRAMでブートさせるといったと時)によって時折動かない事が起こり得えます。これはCPUの動作クロックを設定する部分に起因していて、フラグが意図通り変化しない場合に陥ります。openocdがガンガンバージョンアップしていく過程で明らかになった部分で、アセンブラであったこともあり気付くのに時間を要してしまいました。
GCC Developer Lite本体のWindows Vista/7対応レベルの向上、sam7s/xのx64環境でのUSBシリアルエミュレーションドライバ対応、sam7s/xのRAMデバッグ環境の見直し、FDIIIライブラリのバグフィクスと合わせて近々更新する予定です。

at91sam7s/xのボーレート

カテゴリ : 
雑記
2009-10-29 5:42
現在AT91SAM7S/Xシリーズ向けのシリアル通信ライブラリにおいて、USARTのボーレートは粗めの分解能でしか設定出来ません。特段理屈は無かったのですが、確かに高いボーレートになると合わせにくい所でもあります。
次のGCC Developer Liteのアップデート時にUSARTのSampling Divider関連は全て16から8に変更されますので、従来よりも倍の精度でボーレートが設定できるようになります。
なお、FDIII-HCにおいてもボーレートが全域においてDynamixelと一致しますので、666k,500kbpsといった最大速度に対して若干遅めのボーレートにも対応できるようになります。

それと、ボーレートついでに。
しばしば問い合わせのあるPCとDynamixel間の無線化は、特に特殊な事をせずともFDIII-HCを使用する事で実現できます。USB接続のみのDnamixelコンフィギュレータをFDIII-HCに置き換えるだけで、Bluetoothによる無線化が簡単に行えます。その場合FDIII-HC用に専用のプログラムを作る必要はありませんし、USBケーブルで有線、Bluetoothで無線といった具合に必要に応じて自由に使い分ける事もできます。もちろんPC上のソフトウェアの資産はそのままで、接続先に応じたCOMポート番号を変えれば良いだけ。
ちなみに、FDIII-HCではBluetoothのDTE速度を460.8kbpsとしていますので、無線化したとしてもリアルタイム性は別としてそこそこのスループットは得られるかと思います。

回路の準備ができたので、いよいよプログラム。まずはGCC Developer Liteをインストール。コンパイルオプションは「DYNAMIXEL Library for ATmega128 USB I/O」を選択(このGDLのバージョンは2.2.0.44)。GDLのバージョンによっては違う名前のこともあるが、「DYNAMIXEL」と「ATmega128」の2つの単語が入っている設定を使えばOK。
 

この設定にすることで、予め用意されているAX/DX(RXも)ライブラリをそのまま利用することができる。0から自分で用意する選択肢もあるが、今回は面倒なのでパス。また、別マイコンでAX/DXモータを使う場合も、ライブラリの中身を参考にするのが楽かも。

 


基本になるプログラムはこんな感じ。ただし、これだけだと何もしないので焦って「動かない!」と思わないよ~に。
 


トルクイネーブルまでを加えたのがこのプログラム。正しく動作すれば、AX-12+モータが現在位置で保持されるのでわかるはず。ここまでできれば、後は位置制御やら無限回転やら思いのままだ!

ということで今回はここまで。

74HC241を使えば、1つのICでAX-12+用の回路を作れる、というのが前回までのあらすじ。ちなみにDIPパッケージだと約110円。占有スペースが減るのもメリット多し。ただ、パッケージの半分以下しか使っていないのがもったいないといえばもったいない(貧乏性?)。

DIPパッケージでの接続は赤線の通り。


これだと中身がわからないので、内部ロジックから見た図がこれ

 
もちろん、元の回路にあったプルアップと直列抵抗も忘れずに。


 


モータの電源は7~12Vなので、マイコン電源と共通にしないように注意。次はいよいよライブラリを使って動かそうかな。

AX-12+は(AX-S1も)電源を含めた3本の線で動作させる・・・、というのはコネクタを見ればわかることですが、問題はマイコンとの接続ですね。

この図はAX-12+のマニュアルに載っている回路に追記したものです。2つのICを使って、マイコンの送信、受信端子を切り替えています。ちなみに、74HC125,126どちらもDIPパッケージなら100円しない位の価格らしいです。

切り替えに使うI/Oはどこでも良いといえばいいのですが、上の例ではPD5に接続しています。理由はベステクのATmega128用AXライブラリの接続がこの端子だったから。つまりこの接続なら用意されているAXライブラリ(実際にはDX/RXも共通)がそのまま使えるというわけです。楽チン楽チン。

前述の回路はこれで問題なく動作するのですが、ICを2種類使うのが玉にキズ。というわけで、1つのICで何とかならないかなと探したところ74HC241を使えば良さそうだ、というところで今回はここまで。

ホームページが変わってから情報が無くなってしまったので、ここら辺で少し追加します。

ATmega32及びATmega128マイコンボードに搭載されるマイコンには、出荷時に予めブートローダというプログラムが書き込まれています。現在ブートローダには複数の種類が存在しており、stk500(Atmel社のevb)で採用されている通信プロトコルと互換性のある特殊なバージョン(旧ブートローダ)と、一般的なダウンロードプロトコルであるXMODEM搭載版(新ブートローダ)が存在します。

マイコンボードに黄色ないしV1.2といったラベルが添付されていれば後者のブートローダが搭載され、最新のGCC Developer Liteでも標準でサポートします。
ですが、前者のサポートは標準ではなされていないため、コンパイル時に手動でHEXファイルを吐く様に設定するといった作業を強いられます。

場合によっては新旧のブートローダを搭載したマイコンボードを混在して使用するといったケースも見受けられるようになってきましたので、再度GCC Developer Liteで旧バージョンのブートローダを搭載したマイコンボードをサポートするファイルを公開します。

ATmega32からATmega32Aに

カテゴリ : 
新商品
2009-8-6 21:32
そろそろ次のロットからATmega32Aに切り替え始める予定です。
Aが付いて特に大きく何かが変わる訳ではありませんのでご安心を。

android

カテゴリ : 
雑記
2009-7-25 2:40
とは言っても人造人間の方じゃありません。Googleの携帯向けOSです。
Linuxじゃんといえばそれまでですが、カーネル以外はどこがLinuxかワカラン程度で別個のプラットホームと考えた方が良い感じです。

なぜに今になってそんなネタを?
何となく黎明期のPocketPCの様に無い機能は自分で作る以外に無いといった雰囲気がおもしろいなぁと思いまして。コーディングするという点においてはiPhoneと違って縛りも無いし。
beagleboardやPC、その他のARMが載ったボードでも実際に動いていますし、もちろん携帯電話としてもdocomoからも端末が出てきた事もあり、そこら辺の環境を利用しつつ何かに応用出来ないかなと画策中。

UAC

カテゴリ : 
雑記
2009-7-6 23:30
最近Windows Vistaを使っている方が増えているためか、GCC Developer Liteのメッセージダイアログボックスに何にも表示されないという問い合わせがちらほらと。
ネタはGCC Developer Liteの従来からの互換性の都合から、Vistaでは標準でONになっているUAC(ユーザーアカウント制御)による制限を受ける事に起因し、とりあえず何か文句を言われたら「キャンセル」ではなく「許可」をクリックしましょう。「キャンセル」を押した後で難なく動く理屈は全くありませんので。
メッセージがあまりにもウザい時はここここの情報を参考に設定を変える以外に、今のところは手はありません

USS3アナログ測定

カテゴリ : 
雑記
2009-7-1 12:13


USS3のアナログ信号をATmega32 EVBに取り込んでみました。
壁との距離がある値を下回るとブザーがなり始め、距離によってブザーの音が変わるようなプログラムにしました。
詳しくはチュートリアルをご覧下さい。