2009年11月16日月曜日

PIC24Fのコンフィギュレーションが間違っていた

三相信号発生器がうまく動作しないので、その原因を追跡した。

今日はひとつ問題が見つかった。それは、PIC24Fのコンフィギュレーションが間違っていた点。

最初、スパルタンボードへ送る線にノイズが多いせいだろうかとか、信号のレベルがおかしいのだろうかと考えて、ケーブル周りを作りなおしたり、FPGAにパワーオンリセットがかかるように回路を追加してみたり、あるいはラインにプルアップ抵抗をつけてみたりしたが、変化なし。

信号を出しているPIC側に問題があるかもしれないと思って、ロジアナをPICの出力につないでみた。3線で信号を与えるのだが、2線の信号が出力されていないように見えた。MPLAB IDEのデバッグモードで確かめるとファイルレジスタの値はちゃんと変化している。たまたま、ケーブルを作りなおしたときに、出力ピンの担当を入れ替えてみた。すると、RA2とRA3からまったく信号が出ていないことが分かってきた。

このRA2とRA3の2つは外部オシレーター用のピンだった。何か設定忘れがあるかもしれないと思って、マニュアルをチェックした。すると、コンフィギュレーションのところで発信器の設定によってこれらのピンがデジタルI/Oにならなくなることが分かった。

以下のサイトに詳しく書いてあった。
C30コンパイラ(= PIC24 MCUs コンパイラ )でのコンフィギュレーションの設定

やはり、設定が間違っていた。具体的には、発信器関係の設定で、間違って、OSCIOFNC_OFFとPOSCMOD_HSを指定してしまっていた。
これらをOSCIOFNC_ONとPOSCMOD_NONEを指定するとRA2とRA3がI/Oになるのだ。

ついでに、8MHzの内臓オシレーターをx4-PLLを指定して32MHzで動作するように変更する。あわせてRTOSのTICタイムやdelayルーチンの設定なども変更。

リビルドしてPickit2で修正プログラムを書き込んでみた。すると、信号がちゃんと出力されるようになった。それに速度も速くなっている。

コンフィギュレーションは、PICを使い始めた頃によくわからなくて、誰かが書いたソースについていた設定をみようみまねで書いていた。それでも一応動いていたからそれで放置していた訳だが、ここにきて問題が発覚したということだった。当時は分からなかったとはいえ無智だった。

さて、ひとつ問題が解決した訳だが、まだ発信器からの出力が確認できない。PIC側の問題が解決したので次はFPGA側のデバッグや問題発見に集中だ。

0 件のコメント:

コメントを投稿