前回、PICkit2書き込み用アダプタを作成したdsPICトレーニングボード。

割り込みLCD表示のサンプルプログラムとして CLOCK.hex というのがあったので早速PICkit2を使って書き込んでみます。

だが、しかし
・・・・10秒ぐらいおきに6桁目と14桁目にブロックカーソル(■)が点滅するだけ・・・^^;
時計にも何にもなってません。

書き込むときに、Configuration bit のワーニングが出てたので、さては IDE から Export で Hex を書き出すタイプか、ということで新規プロジェクトを作成してソースコードをすべて揃えてコンパイルしました。CDに入っていたものなので当然一発で Build SUCCESS です。


File->Export で hex ファイルを作って書き込みます。
今度はコンフィグでのワーニングはありません。


電源を入れて実行してみるとまたもや
・・・・10秒ぐらいおきに6桁目と14桁目にブロックカーソル(■)が点滅するだけ・・・^^;;;


LCDはいつもすんなり行かない・・・
ネットを検索して、
PICkit2のバージョンアップが必要か確認して、
dsPICとLCDのマニュアル読んで、
HW上の結線を確認して(古いので半田付けなど断線してないか)、
デバッガでLCD初期化シーケンス確認して、
Enableピンのストロボ時間をデバッガのストップウォッチで測ったりして、
5日ほど行き詰ったまま放置;;

諦めかけたところで、ネットの検索方法を変えてみたところ
ここに答えそのものがありました^^;
LCD周りの設定やタイミングばかり追及していて足元をすくわれるパターンです;;

ADPCFG = 0x3FFF;
の一行をmain()関数に追加したら動きました^^。



ステートレジスタ(TRISB)やラッチ(LATB)など設定してもADコンバータのコンフィグを変えないとだめだったとは・・・

ブートローダがADPCFGを設定していたので、サンプルCDのCLOCK.hexは何もしてなかったということでした。

今回はブートローダなしのPICkit2で直書きだったので、ADPCFGの各ビットのデフォルトは0でADコンバータ動作、1にしないとデジタルIOとして使えないのでした。

PIC10とかのコンパレータオフに大昔ハマッたことを思い出しました。

注意書きが「周辺装置マルチプレクサ」に書いてあるのもなんだかなぁ。発見が遅れました。