PV用DCDCコンバータ開発(56) ブレッドボードに逆戻り

本番機向けに、太陽光パネルのMPPT制御のみにロジックをスリム化するようプログラムを大幅に変更したが、甘かった。。。。本番機用のボードのLED点滅パタンで状態を表示するだけだと、電圧測定値がおかしいところまでは突きとめられるのだが、何がどうおかしいのか詳細な症状が把握できず。

結局、ブレッドボードでソフトのデバッグをすることに相成りました。ブレッドボードでは、液晶ディスプレイ(LCD)表示で詳細な数値情報がリアルタイムで把握できるので、デバッグには強力な味方となる。

s-20130925ブレッドボード001

ちょいちょいとブレッドボードに回路を組み上げて試そうと思ったら、そうは問屋が卸さなかった。ここでまた、非常に不可解な状況に遭遇。

LCDディスプレイに表示されない。今回のプログラムでは、ディスプレイの初期化も行われていない模様。回路を確認するために、LCD表示だけを行うテストプログラムを走らせると正常に表示する。

次に、今回のプログラムに変更すると、今度は、表示する。ただ、表示が変。きちんとカラムを合わせて表示しているつもりなのに、ランダムに位置がずれる症状が発生。そもそも、最初は初期化も行われず、何も表示しなかった同じプログラムが、テストプログラムを走らせると、何となく表示されるようになるという症状。

状況解析。

つまりは、今回のプログラムでは、LCDの初期化が行われず、そのため表示できないが、テストプログラムで初期化が行われた後は、初期化状態は維持されているため、表示は何となく行える。しかし、きちんと初期化状態が維持できていないため、おかしな表示となってしまう、、、と理解。

なら、初期化が行われるところまでにプログラムを簡略化してそこまでの設定を一つずつ検証すれば、表示の不具合は見つけられるはず。

そこで、LCD初期化までのPIC初期設定のラインを一つずつ検証すると、以下の行が犯人であることが突きとめられた。

T1CON = 0b00111000;

これは、表示を1/4秒単位で更新するための割込みタイマ1の設定の一つ。そこで、データシートを熟読すると、ビット3(右から4つめ)は、タイマ1を有効にすると理解していたのだが、それが誤りであることが判明。このビットは、T1OCSENと言って、TMR1のクロックに32.768kHzの内部オシレータを供給することを設定するビットだった。

20130925ブレッドボード002

しかし、データシートの別の場所にはこのような表が示してある。今回は、命令クロックFosc/4を利用しているので、設定表を見ると、T1OSCENは「x」となっており、「0」でも「1」でも良いと読める。ところが、実際には、LCDモジュールを制御するのに利用しているポートのどこかにおかしな影響が出てしまうと想定される。

おかしな状況が出る原因までは、追い切れなかったが、とりあえず、以下のように修正することで、LCDモジュールの初期化が正常に行われるようになった。

T1CON = 0b00110000;

この例のように、PICは、少しでもおかしな設定があると、うまく動かない。それが、不評を買う原因とも思われる。が、開発環境の安さ、チップの安さから、私は、苦労しつつもお金をかけずに取組めるPICを愛し続けることとする。

これで、ようやくバグ解析のスタートラインに立てたと言うことで、これから、数値と動作を確認しながら、バグ取りをすることになる。今日の作業はここまで。

前回へ  次回へ

(Visited 273 times, 1 visits today)
スポンサーリンク

シェアする

フォローする