posted by
rerofumi
2006/4/19 水曜日 3:38:01

一通り配線完了。ボードは完成。
テストコードを動かして I/O 周りの配線や動作に問題がないことを確認する。LED の点灯、LCD ユニットへの文字表示、キーマトリクスの読み込み、といった所を動作させる。
EEPROM は後回しなので配線だけで未確認。

キーマトリクス読み込み部分が書き起こしなんでちょっと手間がかかったあたり。しかも、うまく動作しなかったのでプルアップ抵抗を追加してロジックを変更。

回路図はこのように変更。
bfpc_test.zip
一応テストコードも置いておく。
—–
posted by
rerofumi
2006/4/15 土曜日 17:13:39
ハードウェアの回路図を書いた。

モノはどってことないんだけれども、配線か結構多いので面倒。
まあ、配線が多いから 40ピン の 877 を使うことになったんだけれども。
この図をながめながら、半田付けをしていく。
—–
posted by
rerofumi
2006/4/13 木曜日 2:42:08
ソフトウエアの構想。

モードは
・プログラムエディット
・プログラム実行
・プログラム保存(予定)
実行は RUN でワークを初期化してから実行、CONT でワークを初期化せずに実行。
部品配置のデザイン。

部品の位置をまず決定。8ピンソケットは EEPROM 。
裏のリードは全然繋いでいない。

LCD表示ユニットが載るとこんな感じになる。
ハードはそんなに複雑にはならないはず。
逆にソフトが大変なのでのんびり進行させよう。
—–
posted by
rerofumi
2:34:55
今時のマイコンは数百円から数千円で買えて、単体でもそれなりに動作するくらいの周辺デバイスがくっついている。動作周波数も 20MHz とかで、Z80 全盛期のパソコンに比べて早かったりもする。まあ、マイクロコントローラはアーキテクチャがシンプルなのでパソコンと比べられないけれども。
これをコンピューターとしてなんか遊んでみたくなる。
でも、そういった用途で遊ぼうとすると RAM が少なくて難しいんだよな。
しかしま、ファミリーベーシックは RAM 2KB だったし、シンクレア ZX81 は 1KB だし、MAXマシーンの Level1 BASIC は 512Byte だったから実用性を忘れれば何かができそうな気はする。実用性なんか最初から考えていないけれども。
そいや CASIO 最初のポケコン PB-100 は 544step だったし、SHARP の PC-1210 に至っては 400 step で遊んでいたんだよなあ。
む、ポケコン?そうだポケコンのようなものを自分で作れはしまいか?
どうせ実用性が無いんなら徹底的に無くしてしまえ。言語は、そうだ、Brainfuck なんかが良いのではないだろうか。色々な意味で実にプリミティブなプログラミングができるアイテムになるに違いあるまいて。
てなわけで設計開始。
・使用マイコンは PIC16F877A
RAM が 368Byte しかないのが辛いけど人気マイコンなので入手しやすく安い。(秋月で400円)
・Brainfuck インタプリタ内蔵(w
・プログラムエリアは 512Step
256Byte を 4bit ずつ使用、Brainfuck は 8命令しかないのでこれでも 1bit 余るくらい。
・ワークエリアは 32Byte
Brainfuck のポインタが示す範囲
・ワーク 00h はポート出力で LED 駆動
アドレス 00h を特別 I/O として LED を繋いでおく、通常の Hello,world だと動作しながら LED がちかちかするに違いない。
・ワーク 01h はカウントダウンレジスタ
ワーク 01h はタイマーで値が減っていき 0 で停止する特殊レジスタ。Brainfuck では難しいタイムウェイトを実現するための仕組み。
・16文字×2行の LCD 表示ユニット
こいつのおかげで動作電圧が 5V になってしまうがいたしがたあるまい。
・キーは16個
ロウ 4本、カラム 4本のキーマトリクスでタイムスライス読み取り。
・ストレージとして I2C EEPROM を用意
これは予定事項として、後々実装。
取り敢えずこんなところかな。
こういった用途には H8 あたりを使うのが本筋なんだけれども、あえて PIC でこじんまりと作ってみるのが今回の楽しみということで。
—–
posted by
rerofumi
2006/4/9 日曜日 23:42:40
CPLD/FPGA がうまいこといって上機嫌なのでついでに R8C/Tiny の付録基板も開発できるように持っていこうと書き込み&簡易実験基板をちょちょちょいっと作成。

こんな風に。
ストロベリー・リナックスの USBシリアル変換基板をシリアルポートとして、電源もそこからとろうという作戦。

配線もこんな。割と余裕がある感じに。
んが、上手いことライターが動かなくて苦労する。
んーこうなると何が悪いのか今ひとつわからないなあ。
調べてみるとライターやチップのシリアルコントロール部分が弱そうな噂がある。USBシリアル変換だと上手く動きにくいかもとかいうのはビンゴかも。
それよりも他のシリアルポートを指定しても「ボーレート変更ができません」とか抜かすので、やっぱりライターソフトの方を疑ってしまう次第。
なんか上手くいかないから放り投げる。
ま、そのうちまた気が向いたら調べるということで。
—–
posted by
rerofumi
3:53:59
トラ技 2006/04 の CPLD、DWM 2003/10 の FPGA と付録だけでロジック工作の学習ができる様になっているわけだが。実際にこれらのデバイスを使おうとすると JTAG ダウンロードケーブルが必要となる。幸い両方とも ALTERA なので 1種類のダウンロードケーブルがあれば両方で使えるわけなのだが、でもそれをどうしようかなーと考える。
パラレル接続のダウンロードケーブルは回路が単純な上に回路図が公開されいるので自作も容易である。うーん、どうしたものか。
トラ技 2006/04 の CPLD 付録基板は基板上に ByteBlaster WV 互換回路が載っているので 25Pin コネクタを付けるだけでコンフィギュレーションができるんだけれども、FPGA はどうしようかな。FPGA の方を考えるとダウンロードケーブルが手元にあった方がよいのだよな……。
……ん?互換回路が載っているって?
ということは CPLD 付録基板を ByteBlaster WV 互換ダウンロードケーブルとして使えば良いんじゃないか?
そう考えるとトラ技 2006/04 にはダウンロードケーブルが付いてくるというのと等価ということで、もの凄くお得に見えてくる。

CPLD 付録基板に必要なパーツをくっつけて組み立て。LED がくっついているのはトラ技でのチュートリアルにそった動作確認をするため。
動作確認と Quartus II のさわりを体験。
次は FPGA 付録基板をコンフィギュレーションするために CPLD 付録基板をダウンロードケーブルと見なす。

こんな感じ。
コンフィギュレーション時はデバイスIDを見て行われるので、ALTERA の異なったデバイスがパラでぶら下がっていてもちゃんと指定してコンフィギュレーションできる。
というわけで、事もなく成功。LED を付けるサンプルも動作。
これで FPGA と CPLD 両方が学習できる様になった。めでたしめでたし。
—–
posted by
rerofumi
2006/4/6 木曜日 2:44:20
会社で自分の荷物をほじっていたら “Design Wave Magazine” の 2003/10 号が出てきた。Cyclone FPGA ボードと各種開発ツールが付録として付いてくる号である。
もちろん自費で買った私の所有物。いつかはやりたい、ということで押さえておいた物だと思う。ハードやりたい熱がこのあたりからじわじわ上がってきてたという事か。
これのちょっとまえに CPLD 基板が Design Wave のおまけで付くという大暴挙があり、この FPGA は大体 2回目くらい。以後、トラ技の R8H 等々チップと基板と開発環境がセットになったお勉強特集が頻繁に組まれることとなる。
こないだの ARM マイコンボードは設計ミスがあるらしく揉めていたけれども。

ふと気が付くとそんな付録チップがいくつか手元にあるのだわさ。
左が DW 2003/10 の Cyclone FPGA、右がトラ技 2006/04 の MAXII CPLD、真ん中が「電子工作のためのR8C/Tinyスタートアップ」の R8C/1B。
R8C/Tiny は基板付きなんで手習いがてらに狙って買ったものだけど。
昔は基板が付録に付いてきても、その周辺(電源とか)を用意することができなかったので指をくわえているだけだったが、今は違う。
しかも先人がこれら付録基板を使って楽しそうなことをしている記事が WEB 上にいっぱいである。
これなら PLD にも手が出せそうであることよ。
まあ、細々と追加しないとならないのはあるけれども。ひとまず、ダウンロードケーブルどうしよ。
次は今月下旬に発売される Design Wave Magazine に “SH-2” マイコン基板が付いてくるのですよ。コレも買わなきゃですわ。
[訂正]
SH-2 ボードが付いてくるのは Design Wave でなくて Interface でした。
—–
posted by
rerofumi
2006/4/2 日曜日 21:31:28
ジャイロセンサーが、まあ使えなくもないということで加速度センサーと組み合わせて纏める事にする。
PIC12F683 が丁度 A/D 4ch なので、加速度センサー三軸にジャイロ一軸で収まるのだ。

きちんと仕上げるにはぶっつけではなく、前準備をしっかり押さえるのが重要。ということで規模はともかく回路図を書いておくところから始める。

その甲斐あってかそこそこのまとまり感。

全モジュール結合で測定時の状態はこんな。なんとなく合体ロボットを彷彿とさせる。
pose_sensor.asm
PIC のソースコード。
A/D 読み取りとデータを追加しただけで、基本的に以前の加速度センサーファームの時と同じ。
—–
posted by
rerofumi
0:09:36
久しぶりに超ミニマムな環境でのアセンブラプログラミングを堪能したいという事で始めた PIC マイコン工作。マイコンのプログラミングも楽しんでいるので、ここまでずっとアセンブラで通してきてしまった。
それなりにこなれてきて色々出来るようになったけれども、さらに何かできるかと考えると PIC では限界があるのが見えてくる。例えば、メモリが足りないので外部に SRAM を繋ごうとすると I/O の足りなさが気になってくる。かといって本体だけで済ますとメモリが少なすぎるのでデータを記録するような分野では使いづらい。
当然な事ではあるけれども、その限界の手前が PIC が得意な分野であろうと言うことがわかってきた。
ほんじゃ、PIC の次のステップというか「より楽しそうな事」を行うには何が適しているのかねえということを考えてみる。
メモリ量とI/O量、そしてプロセッサパワーが必要であれば素直に H8/R8 マイコンへシフトしたほうが良さそう。コンパイラに GCC 使えるし。
プロセッサパワーだけなら SH2、PPC、ARM といった一般的な組み込みプロセッサボードかねえ。
スピードといってもロジック側でいったら CPLD が必要になってくるかなあ。カウンタとかタイミングクリティカルな用途はマイコンだけではきつい。具体的には CRTC とか LCD コントロールとか。ビデオ出力なんかは PIC じゃ力不足だし。
CPLD/FPGA も視野にいれてはいきたいものだ。
そんな感じで調べていたら PSoC というマイコンデバイスの存在を知る。
通常 PIC とかはチップ内にデバイスがいくつか入っていて、どのチップに何が入っているかといった性能の違いで PIC デバイスを選んでいく。
だが PSoC は周辺デバイスをプログラマブルかつダイナミックに切り替え選択していくことで割り振る事ができるのだという。
面白そうじゃないか。

てなわけで Mini programing kit を Cypress のサイトから直接購入。$35 なり。(送料その他で合計 $60 だけど)
プラスチックの奴が USBプログラマで PIC と同じように 5本の信号を ISSP でボード上のチップに書き込む。ボードはチップにプログラミングする用でもあるけど、LED×4、スイッチ×1、VR×1、I/O引き出し端子付きのテスト用評価基板となる。PICKIT1 の PCoS 版といったところだね。
おまけで付いてくるデバイスは、CY8C27443 と CY8C29466。取り敢えずこの二本があれば十分遊べそうだ。
PSoC が NANO 以降の iPod (の静電パッドコントロール)に採用されているというのは有名な話だけれども、ゲームボーイアドバンスミクロにも採用されているとは知らなかった。
ああ、そうか、START/SELECT の LED コントロールやボリューム&輝度コントロールのあたりか。へたすりゃ音声アンプとしても使われているかもしれないな。
なるほど、低コストでサービスを提供できるチップかもしれん。
PIC でやりたいことがまだあるのでしばらくはそっちだけれども、PSoC も少しずついじっていきたいと思う次第。
—–
posted by
rerofumi
2006/4/1 土曜日 3:10:37
会社で古いトラ技をぼけーっと眺めていたら、各種センサ取り扱いの記事があった。
その記事によるとジャイロセンサを扱うには、CRのハイパスフィルタとローパスフィルタを接続すると良いとある。ああそうか。
言われてみると至極当たり前のことなんだけれども、アナログ回路が苦手なのでそういった頭がすぽんと抜けていたのである。ノイズや基準値ドリフト(温度等によって静止時の値がずれる事)もソフトウェアでなんとかしようとしてしまっていた。
まあ、ソフトウェアをやっているとハードウェアの不具合をソフトで何とか回避してくれとか良く言われるものだし。実際そうしてきたもんだから、ついつい。
マイコン工作、特に PIC ではソフトウェアでカバーすることで回路構成を劇的にシンプルにさせる事ができるというの特徴なのでなおさら。
しかし、センサーのノイズはアナログフィルタで押さえておく方が正解だよね。
確か記事にあったのは、ハイパスフィルタが 0.3Hz でローパスフィルタが 1kHz ほどだった。ハイパスフィルタは直流成分を切り落とすためで、ローパスフィルタはぶるぶるノイズを削るため。
さらにソフトでも上手いことやるとより精度があがりそうだ。
余談だけれども、勤務先はソフトウェア会社なのだがなぜかトランジスタ技術は購読誌なんだよね。私以外の誰が読んでいるんだろ?
—–