MCCを使ってサクッと開発・・・出来なかった
(2015.12.02)
X-TALオシレータの発振周波数がどうもおかしいので、手元にあった
PIC16F1705で簡単なタイマー回路を組んで調べてみることにしました。
ブレッドボード上に回路を組み、MCC(MPLAB Code Configurator)でタイマーetc.を定義したプログラムでX-TALオシレータの動作をサクッと確認する筈だったのですが、LEDチカが動きません。orz
実は、プログラムを書き始めてから回路を組み立てるまで二か月近く経って(オシロジ開発に専念していた)います。プログラムの骨格は書き上げた筈なのですが、定かではありません。
デバッガでブレーク・ポイントを設定して調べてみると、TIMER1割り込みハンドラが呼び出されていません。WATCHウィンドウでレジスタの状態を調べると、PIR1.T1IEが1でPIE1.T1IFも1になっていて、MCCが行ったタイマー設定も、割り込み設定も良さそうです。
で、INTCONを調べるとGIEもPIEも0(<==ディスエーブル)のままです。
あれ?
なんでこれが0のままなんだろう?
早速MCCのInterrupt Managerウィンドウを開いてみると・・・
はっきり書かれていました。
割り込みはユーザの責任でイネーブルにしなければならないのです。
とは言っても、そのための準備はちゃんと整っています。
二か所のコメントを外し、無事LEDがチカチカし始めました。
ちょっと躓きましたが確認プログラムが動き始めました、X-TALオシレータをとっかえひっかえして動作を確認してみると、やっぱり発振周波数が変(高かったり低かったり)です。
デバイスを購入した秋月電子に電話しました。
『X-TALオシレータの発振周波数が変なんですが・・・』
「1番ピンはどうされました?」
『えっ、NCじゃないんですか?』
あわててPDFマニュアルを開く
『ご、ごめんなさい。』
チン
10kΩでプルアップしたら、X-TALは12MHzで安定して動作するようになりました。
どうやら別のマニュアルを見ていたようです。:-p