コメを噛め

コメを噛め

rerofumi の電子工作メモ

Archive for 3月, 2006


hatena bookmark



ちと PIC アーキテクチャのコーディングに慣れるため LED を光らせるプログラムを書いてみる。

ただ点滅させるだけだとつまらないので、フェードイン/フェードアウトでぼやーと明るくなったり暗くなったりする LED 点灯プログラムを作成。
明度を付けるには PWM 方式の時間分割スイッチングを行う。
よするに高速で LED を ON/OFF するのだけれども ON の時間が長いと明るく、OFF の時間が長いと暗くみえるってわけ。


これで明るめ。


これで暗め。


その中間。

256分割を 1周期として、明るさ n を 0〜255 で指定。n の時間だけ LED を ON にし、時間がきたら (255-n) の時間を OFF にするといった感じでコーディング。

ソースコードは PICkit1 と PIC12F509 による物。
softled_2.zip

509 なんて機能ミニマムなチップを使っているからソフト制御だけれども、ミドルレンジ以上の PIC デバイスだと PWM 機能を最初から持ってて、こういったことが容易にできるようになっている。
—–


hatena bookmark

結局 PCI カード型の RS-232C 拡張ボードを買ってきてマシンに刺す事にした。
そして、シリアルライターを起動。どきどき。
!!!
早い、早いよ!
これまで10分以上かかっていたものが 10秒で終わるよ(っておい
これが普通の速度だったんですね……。
PICkit1 の USB が特別早いわけでないこともわかった。

しかし RS-232C ポートなんて、いらない子だと思っていたけれども、いざ必要な場面になってみるといろいろ面倒なものだねえ。
色々と投資してきた額を考えると、Microchip社のダイレクト通販から ICD2 を買った方が安かった。送料関税で $16 くらいかかるけれども。
といっても、これまでの経験をしたからそう考えられるようになったわけだし、PICプログラマー(ライター)も確かに自作できるほど簡単な仕組みなのだなと理解できるようになってきたとゆーことなのだが。

うーん、いまからでも ICD2 を発注するか?いやいや、そこまでは……。
—–


hatena bookmark

SPWriter によるシリアル経由のプログラミングが異様に遅いので、シリアル経由プログラマについてちょいと調べてみる。

そうか、USB シリアル変換ケーブル経由だとチップの仕様から異様に遅くなるのか orz
家のメインマシンに RS-232C ポート付いていないんですけど……、いやまじで。それ故に USB アダプタでやっていたのに。

んー解決法としては、PCI に RS-232C 拡張カードを刺すしかないかなー。調べてみるとその手のカードは 10000円前後だったり。
ははは、かえって高い買い物になっている気がする orz
—–


hatena bookmark

多少順番が前後してしまったけれども PICkit1 を入手。
最初は PICkit1 を入手して、手習いしてから本格的な開発に移ろうとか考えていたのだけれども、発注してから届くまでに我慢できなくてライターを買ってしまったというわけ。
ちなみに、7770円で共立エレショップ通販から購入。元は $36 なんだけれどもね。

セット内容は、USBプログラマ兼実験ボードが 1枚と開発環境やチュートリアルコードやサンプルライブラリコードが詰まった CD が 1枚。PIC開発ノウハウハンドブックも付いてくる。
まあ、もちろん全部英語ですが。
おまけで付いてくるデバイスは 8ピンの PIC12F675 と 14ピンの PIC16F684。どっちも A/D コンバータを持っていてそれなりに使える構成。

USB 経由の書き込みってどんなもんだろと思ったら、めちゃくちゃ早くて快適。ファイルコピーくらいの感覚で終わってしまう。シリアル経由だと 10分近くかかっていたんだけども、なんか設定間違えているのかしらん。
PICkit1 を繋ぐと MPLAB の IDE 上から直接書き込み出来るようになる。これがまた快適でね。
ピン数の少ないフラッシュデバイスに限られるけれども、それ向けの開発環境としてかなり良い感じだね。

ボード上の実験環境は 4ポートの I/O を駆使した LED 8個と SW が 1つ。VR は A/D コンバータに繋がっているかと思ったらそうではなく、CR発振の R になっていてこれを変化させると I/O に入るパルス間隔が変化する仕組み。
まあ、ボタン 1つとそれに対する反応を LED 点灯で示すあたりの学習ですかねん。
このボードの USBデバイスとライター部分が PIC16C745 1本で作成されており、CD の中には回路図とソースコードが入っている。
このへんも PIC デバイスらしい世界だね。
—–


hatena bookmark

なんか、提示するのもばからしいような回路図とソースだけれども、一応。

firststep_01.zip

—–


hatena bookmark

手始めに LED を灯してみようと思う。
プログラムの初歩は “Hello World!” だが、電子工作の初歩は LED の点灯なのだ(もっともらしいウソ)。

手習い様にちっこいチップが良いかねえと思って買ってきてあった 8ピンの PIC12F509 を使用。
ちょうど 12F509 を使って LED を光らせているページがあったのでそこを参照に、というかほとんど手写しでコーディング。
ビルドの仕方、書き込みの仕方、チップの消去、と色々な経験を経て PIC チップが焼き上がる。
ブレッドボードにぷすっとさして電源投入。
……
点いた点いたよ!!クララが立った!!
単に LED が光ったり 2つが交互に点滅しているだけなのだが、なんとも言えない喜びに包まれる。
作った本人だけが喜んでいる一瞬、これがやめられないんですわ。

ブレッドボードって、部品をぷすぷす刺していく様が食パンに刺さっていくみたいだから、とかずーっと思っていた。なのに試作基板もブレッドボードというので「?」といった感じだったのだが、パンの生地をこねる手打ち板の事だということが先日わかった。うむ。

—–


hatena bookmark


PICにプログラムを書き込むのには専用のライターが必要である。

ちなみにプログラム開発環境は MPLAB といって、アセンブラとリンカが使える IDE が Microchip社のサイトから無料で入手できる。
なのでライターさえあれば PIC 開発が行えるのである。

ライターも Microchip社の物を使わないといけないかというとそんなことはない。色んな物が出ている。
特に JDMプログラマー はシリアルポート経由の非常に単純な構成で、ソフトウェアは IC-PROG を筆頭に無料のものを使うことができる。
なんでもかんでも自分の力でやってやるぜ的な方はどうぞ。

取り敢えずのスターティングなので既製品を用意することにする。
一番最初に目を付けたのは Microchip社のPICkit 1。これは PIC 開発とマイコン制御の学習用キットなのだが、USB接続の PIC ライターとしても使える。ただし、書き込めるのが 8ピンと 14ピンの一部のデバイスだけ。基本の学習にはちょうど良いところだけれども。
次いで日本の誇る秋葉原の名店、秋月電子のAKI−PICプログラマー Ver3.5 キット。JDM ほどではないにせよ安価なので人気。
で、AKI-PIC を買いに秋葉原へと赴いたけれども、他の部材を買うために寄った千石でソリトンウェーブのSPW-10 PRO なるライターを発見。結局これを買ってくる。
お値段は 10290円と当初の予定よりちょいと高くついたけれども、対応デバイスが豊富なので結果としては満足。

ソリトンウェーブは C/C++/Pascal での PIC 開発環境「ピカント」を販売していて、そこから書き込み呼び出しができるようになるというのもポイント。ピカントは前調査済みでそのうち使うだろうと目をつけていたのです。

8ピンから40ピンまで一通り書き込める様になったのですよ。
—–


hatena bookmark

PICというマイコンデバイスがある。
マイコンと言ってもマイクロコンピューターではなく、マイクロコントローラーの方。
PIC は数百円のチップの中に CPU と I/O それに書き込み機構などが詰まっておりそれ単体で大体まかなえる。PICチップの他は本当に少量の回路を付加するだけで動作するし、本当にマイクロなアーキテクチャなのでプログラムも沢山書けない。
そんなこんなで日曜工作にはうってつけなのですな。

長年 PIC の工作(ハード&ソフト)をやりたいなあと思っていたけれども、ハード系は本職でないのとライターの入手に躊躇していたので今まで手を出していなかった次第。

PIC 工作は回路とソースの両方が組み合わさって生きてくる物。それをメモしておく形として新しい Blog を開始してみるのです。
はてさて、いつまで続くやら。
—–