PIC18F13K22 OSC1, OSC2 入力
ココナラで依頼を受けてPIC18F13K22(20pin)を使いました。
私の定番18F23K22(28pin)では端子数が多いとおっしゃるので3Vで使える18Fシリーズでは最も端子数が少ない(と思う)ものを選びました。5年以上も前に18F1320 を使ったことがあるのでなんとかなるだろうと引き受けた次第です。
入力の変化に応じて割込みを発生させる必要がありそうで、別途 I2C を使うのでRBを避けて以下の3つを接点入力に割り付けました。
・ RA2 / IOC / INT2
・ RA4 / IOC / OSC2
・ RA5 / IOC / OSC1
RCはビット番号が連続した出力ポートとして使う可能性がありました。
RA2だけを入力に使って動作させていた間は問題ありませんでした。
ポート入力が得られない
RA4, RA5 の入力を読み出す段階になって読み出し値が "0" に固定されていることに気付きました。
OSC1, OSC2 に使う端子なので、クロックの設定(Configuration bits)に間違いがあるのだろうと考えて調べてみましたが問題なさそうです。
Timer1を動かすとNG
手持ちの書籍を読み返したりWeb検索したりしましたが、参考に成りそうな情報を見付けられずデータシートを調べました。
英語は苦手なので OSC1 , OSC2 で検索したところ
10.1 Timer1 Operation に以下の記述を見付けました。
たまたま Timer3 が空いていたので、そちらを使うことにしてTimer1 を使わないことにしたところ問題が解決しました。
困ったらデータシート
特定のデバイスについてググったり書籍を見ても解決しない場合はデータシートを見るのが一番ですね。
ココナラでは少ないピン数のPICを使いたいと言う方が多いようです。
私自身はPIC18Fシリーズばかり使っているので 12F や 16F を使う予定はありません。
もう少し使ってみてからPIC18F13K22 も定番の仲間入りをさせようと思います。
これからも宜しくお願い致します。