スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

トランジスタ技術 増刊号 ARM Cortex-M0 基板で遊ぶ(その1)

以前 PIC 18F14K50 へ移植した neko をMARYシステムへ移植してみました。ディスプレイへ描画するルーチンを除いてほぼ同じプログラムです。

MARYシステムのOB基板(OLEDディスプレイ)には3軸加速度センサーも付いているのでマウスカーソル(わかりづらいですが動画中の黒っぽいネズミ)も表示させて、基板を傾けるとマウスが動くように作ってみました。

画面中の移動するネズミを追って neko が動くようになっています。

プログラムのバイナリコードサイズは約30Kバイト程度です。ほとんど同じプログラムなのに少々コードサイズが大きくなってしまっているようです。開発環境にはLPCXpressoを使用し、コンパイル時のオプティマイズは -O1 でやっています。


トランジスタ技術 増刊号 ARM Cortex-M0 基板で遊ぶ(その0)

遅まきながら、件の増刊号を入手しました。

MARY-MB(ARM Cortex-M0)

増刊号に詳しく丁寧な解説があるので、解説的なものは省略します。

気になっていたのは、開発環境が Windows7(64bit) なのでドライバ関係がうまく動くか心配でしたが、
すんなり動いてくれたようです。

CP2104 Device Driver

USB接続した MARY-MB が COM3 として認識されてるのがわかると思います。

マルツにOLEDボードを注文しました。
なにか面白いものが作れるといいのですが、、、

FT2232DとXILINX Spartan-3E

メインマシンのCPU変更に伴って、今までLPT経由でXILINXのプログラミングを行っていた環境を変更しました。
秋月電子のFT2232Dと、こちらのサイトの方が作られたツール(cblsrv.exe)を使用させて頂いてUSB経由でプログラミングできるようになりました。

cblsrv.exeを起動したところ:
cblsrv

cblsrvとFT2232D経由でiMPACTを動作させたところ:
iMPACT 11.1

以前に作った"Hello World"のコードをダウンロードしたところ:
FT2232D & SPARTAN-3E
左端のブレッドボード上の細長い基板がFT2232D、中央の基板は5v<->2.5vのレベル変換回路です。左上の赤い基板は今回は関係ありません。

neko on PIC 18F14K50

 xneko,oneko などで1990年代にワークステーションのデスクトップ上で一世を風靡したnekoシリーズの oneko 1.2 をPIC 18F14K50(他のチップでもよかったんですが)に移植してみました。ソースプログラムは、unix,X11 を前提に作られているので、移植にあたっては主にX11のXLib関連の関数、その他をYHY024006A用に新たに作りました(といっても5~6関数)。
 一番の難所はoneko 1.2+YHY024006A用XLibラッパーの容量でした。18F14K50は内蔵プログラムメモリが16KBytesなのでそのままC18でコンパイルしてもメモリに収まりません(確かフル機能で30数KBytes)。最小限の動作が見れればいいだろうと、dog,toraなどのビットマップデータ(xbm)はインクルードしないようにして、さらに、neko の動作を決めるアルゴリズムの部分で使われているsin(),sqrt()などの関数は使わないようにしました。sin()関数については起動したときの最初の一回目で定数を決めているようなので、関数電卓を使って三角関数の定数をベタ打ちにしてプログラム内部ではsin()関数は使わないようにしました。sqrt()も問題なのですが、ソースを良く読むとsqrt(x^2+y^2)のように距離を計算していることがわかりましたので、ちょっとインチキっぽいですが,距離関数L=fabs(x)+fabs(y)と定義して誤魔化しました。数学的には異なった距離関数ですがなんとなくうまく動いてるようなのでこれをそのままつかいました。
 PIC 18F14K50は 48MHz で動かしています。nekoの動作速度を決定する?pause()関数はループプログラムで作った100ms を使っています。ここのパラメータを小さくする事で neko はキビキビ走りまわると思いますが、昔Sparc Station 1で見た neko はこのくらいの速度だったよな?昔を思い出しながらパラメータを決定しました。





最後に、oneko, xneko 作者の方に敬意と感謝の言葉を送りたいと思います。

PS. YHY024006Aはタッチスクリーン付きのLCDモジュールなので、別のもっと足が多いPICに移植して、タッチスクリーンのインターフェースを作成して、画面上の好きな所へ行けるようなものを作るかもしれません。

PIC18F14K50と2.4インチカラーLCD(その3)

Microchip の USBフレームワーク v2.7 CDCクラスを使って、PC上の画像ファイルを転送してLCD上に表示させるプログラムを作ってみました。

PC側のプログラムは、1から作るのは大変なので、付属の USB Device - CDC - Basic Demo を改造して使いました。
画像の転送は次のような手順で行います。
 1. エミュレーションされているCOMポート(COM3)を選択して Connect.
 2. Send Dataボタンを押すと画像ファイルを選択するダイアログが表示されるので、画像を選択。
 3. フォームウインドウ上にプレビュー画像が表示されるとともにUSB経由でPIC側に画像データが送信される。

VC2010 CDC-RS232C
VC++ 2010 Express Edition でコンパイルしています。(Windows 7 64bit)


18F14K50 with YHY024006

転送にかかる時間は約1.5秒ほどでした。240x320x2バイトの画像なので転送速度は約100KB/s程度になると思います。


上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。