SVX日記
2005-07-06(Wed) GO/DONEがズレとったドーン
ここ二日間、仕事から帰るとメシ食って、PCの電源入れてグダグダして寝ていた。よって「イエローちゃん」がぜんぜん進捗しない。例のA/D変換が終了せず、結果的に無限ループに落ちいる現象は未だ解決されていないのだ。むきー。こんなつまらんコトで、なんでブロッキングなんじゃー。わしゃ、PIC16F648Aでなら、一度はA/D変換プログラムを動かしたことがあるんじゃぞー。
PICでは、A/D変換制御を行うレジスタのGO/DONEビットをセットするコトでA/D変換が開始される。終わりは、割り込みで通知してもらうこともできるし、ループでGO/DONEビットがリセットされるのを検出してもいい。今はとりあえず後者の方法を試している。メインループでPWM制御をしている都合上、A/D変換には若干の時間が必要ということもあり、PWMの流れを乱さないためには、割り込みを用いたほうがモアベターであるが、それでもとりあえず一度は後者の方法で動かさないコトには割り込みどころではないだろう。しかし、どうしてもGO/DONEがリセットされんのじゃ。A/D変換器の初期設定になんか問題でもあるのか?
ちゅーか、PIC16F648Aで動いて、PIC12F675で動かんつーことは、A/D変換制御を行うレジスタの構成でも変わっとるんちゃうか? 実際、ポートのアナログ/デジタルモードの選択方法は結構違う。GO/DONEビットの位置も違うとか? ヘッダファイルだ。自作のヘッダファイルを確認してみよう……。
……動いたよ。ちゃんと電源パルスが出るようになったよ。あれ? でも、今度はA/D変換に使用するピンの電圧が常にゼロだ。一応、センサの代替りに10kΩをつけているから、1.5Vが出ないとイケないんだけどな。コレはアレか、ソレだ。ドレだ? そうそう、入出力設定のTRISIOがマズいに違いない。