コメを噛め

コメを噛め

rerofumi の電子工作メモ

hatena bookmark



ソフトウェアもハードウェアもある程度の規模になると、ちゃんと動作しているか、動作していなかったらどこがおかしいのかを調べることになる。いわゆるデバッグ。
PICデバイス工作は半分がソフトウェアによるものなので、ソフトウェアのデバッグも重要な要素になってくる。とはいえ、ICE はお高いし、廉価なデバッグ環境の MPLAB ICD2 は在庫無しの 1ヶ月待ちだったり。
てなわけで当面はライターで焼いてはチェックの繰り返しになる模様。

そんな状態でどうやってデバッグをしていくのかというと、そこは基本の「printfデバッグ」である。
ポートの 1つを使ってそこに LED を繋ぐ。これだけでもよい。適当なところでポートを ON にするコードを埋め込んでおき実行、LED が点けば少なくともそこは通っていることになるわけだ。

しかし、それだけではこの先心許ないのでマイコン工作では超メジャーな「LCD表示ユニット」を接続し、そのドライバを書くことにする。
少なくともこれが稼働していれば、様々な情報を表示し確認することができる様になるのです。

LCD表示ユニットは秋月で 700円。デファクトスタンダードアーキテクチャになっているので、ピンや駆動手順は M1632 互換。つまり、みんなが使っているのと同じということやね。
回路やソースコードは「PIC LCD」で検索かますと山ほどヒットするので特に説明も無し。ソースコードも他の見よう見まねに近くなっているし。

lcdmain.asm

各種解説記事をみていると必ずタイミングチャートが載っていて一見小面倒くさそうだけれども、肝心なのは ‘E’ のトリガーだけだったり。
E 以外全部のデータポートを設定して「設定完了、オラ読み込め」という指示のために E を上げ下げする。
read の際は「オラデータをよこせ」と E を立ち上げてからポート読み込み、読み込み終わったら E を下げるといった風情。

駆動するには 8bit モードと 4bit モードがあってそれぞれ 11本/7本の I/O を必要とする。今回は 4bit を選択することにする。
デバイスは 14ピンの PIC16F684 を選択。I/Oポートは 12本(PORTA 6bit、PORTC 6bit)なのでできるでしょ。(このへんで無駄に苦労を背負い込んでいる気がする)

後はデータシートと首っ引きでプログラム作成。
ここでドはまりしたのが I/O ポートの設定。PIC16F684 は起動時初期値で A/D コンバーターを持つ 8ポートが「全てアナログ」に設定されている。なので起動時にそれを無効に設定してやらないとならない。
んが、もう一つあって、2ch のアナログコンパレーターもあるのだが、こいつも「標準でON」になっている。このコンパレーターの方を見落としていて、ずーっとうんうんうなっていた次第。どうりで、ポートを設定してもすぐに立ち下がると思ったよ。
ちなみに上位のデバイスだと起動時にコンパレーターは OFF になっている模様。

苦労はしたけれども、無事表示が出来るようになってめでたしめでたし。
—–

Leave a Reply