見出し画像

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 に以下の記述を見付けました。

When the Timer1 oscillator is enabled, the digital circuitry associated with the OSC1 and OSC2 pins is disabled. This means the values of TRISA<5:4> are ignored and the pins are read as ‘0’.

PIC18(L)F1XK22  Data Sheet

たまたま Timer3 が空いていたので、そちらを使うことにしてTimer1 を使わないことにしたところ問題が解決しました。

困ったらデータシート

特定のデバイスについてググったり書籍を見ても解決しない場合はデータシートを見るのが一番ですね。



ココナラでは少ないピン数のPICを使いたいと言う方が多いようです。
私自身はPIC18Fシリーズばかり使っているので 12F や 16F を使う予定はありません。

もう少し使ってみてからPIC18F13K22 も定番の仲間入りをさせようと思います。


これからも宜しくお願い致します。


出来ればサポート頂けると、嬉しいです。 新しい基板や造形品を作る資金等に使いたいと思います。