写真は関係無いんですが、PIC16F887で低周波数の振動子を使う時の話です。
時計向けにと購入した32.768kHz水晶振動子ですが、どう接続してもこの周波数を得る事ができませんでした。回路的にはOSC1&2に振動子、その後ろに33pFのセラミックコンデンサという形です。
色々原因を考えましたが、最終的には__CONFIGの内容が問題だったようです。PICの情報サイトは様々ですが、各所で低周波数の振動子を使う際には「_LP_OSC」とするような事を書いています。詳しくは解りませんが、コレを_XT_OSCとする事で接続された振動子の発振を想定していた32.768kHzで得る事ができました。(測定は1000円のテスターですがね。)
設定次第で動作に影響を与えるものは、出力ポートの入出力切り替えやプルアップの有効無効があります。これらと同様にPICに接続された振動子に相応しい設定をする必要があるようです。まぁ、当たり前なのですが、振動子に関しては電気的にどういった物かを理解するのは抵抗やコンデンサよりかなり難しいモノですので、仕組み的にどうしてそういった設定が必要なのかはいまいちピンとこないモノですね。LPで動かないのは省電力モードというのが存在してその設定を別途する必要があるのかもと思ってます。
私が調べた限りですと、OSC1&2の奥にはOSC1&2を繋ぐ抵抗があり、この抵抗の値が発振周波数で違うらしいです。__CONFIGの振動子設定はおそらくこのあたりの内部切り替えを行うモノなんだと思います。
参考
www.kds.info/html/products/technical_guide/circuit_investigation/index.htm
別件になるんですが、私は開発環境にMPLABを使っています。定数定義(PORTAやPORTBなど)に一体どういったモノがあるかは検索すれば各PICシリーズで共通してよく使うものに関して情報を得ることはできますが、目の前にあるPICには一体何があるのか?というのはなかなかピンポイントには得られないものです。(88xシリーズは比較的こういった情報がまだ少ないです。)
そこで、インクルードしてるファイルを直接見て確認するのがベストです。インクルードファイルはMPLABがインストールされてるMicrochipディレクトリの下にあるMPASM Suiteディレクトリ以下に全て入っています。拡張子がINCになっていますが、メモ帳で開くことができ、全ての定数定義を確認する事ができます。