akira.keiのアイコン画像
akira.kei 2025年01月19日作成 (2025年01月26日更新) © GPL-3.0+
セットアップや使用方法 セットアップや使用方法 閲覧数 175
akira.kei 2025年01月19日作成 (2025年01月26日更新) © GPL-3.0+ セットアップや使用方法 セットアップや使用方法 閲覧数 175

8ピンPICのPIC16F18313を使う(その1)まずはオシレータ

次の記事 >

8pin PICと言えば

これまで8pin PICといえばずっとPIC12F1822を使ってきた。
PIC12F1822
今のお値段は二百円だ。高くなってきたがRaspberry Pi PICOに比べたらまだまだ安い。でもPickit4が買えなくなってPickit5が1万8千円近くすることを考えると、PICを使い始めるハードルがずいぶん高くなった印象だ。

ただ何かの中に組み込んだりするには千円弱のPICOやXIAOはちょっと使いにくいので、まだまだPICの出番は多いはず。まぁ今は40円のRISC-V に駆逐されそうなんだけど。。。

8pinのPIC16F

8pinのPIC16Fシリーズでは、150円のPIC16F15313と160円のPIC16F18313が秋月電子で買える。機能の差異はほとんどないので、今回は数字が大きい(15<18)し、これまで使ってたPIC12F1822と名前が近いPIC16F18313を選んでみた。

キャプションを入力できます
キャプションを入力できます

PIC12F1822のオシレータブロック

これまでのPIC12F1822 のオシレータブロックはこんな感じだ。
PIC12F1822

内部オシレータを使う場合、CONFIGレジスタ「#pragma config」で内部オシレータ(INTOSC)とPLLの有無(PLLEN)を選び、OSCCONレジスタでMUXを指定すると32M/16M/8M/4M/2M/1M/500k/250k/125k/62.5k/31.25kの11種類のシステムクロックが選べる(動作はこの1/4)。

ブロック図を見ると速い方の内部オシレータは500kでこれをPLLで32倍の16Mにしてさらに半分の8Mに落としてから4倍PLLに入れて32Mを得ている。複雑すぎ〜w

PIC16F18313のオシレータブロック

一方のPIC16F18313の方は、やはり桁が増えた(1822→18313)おかげで中身がだいぶ変わっている。
PIC16F18313

PIC16F18313の内部オシレータを使う場合、Config Word(#pragma config)で32M(HFINT32)、1M(HFINT1)または31k(LFINT)を選ぶ。OSCCONレジスタを設定したい場合はConfig Word中のCSWENをONにしないといけないので、基本的にOSCCONレジスタは設定しないようになってるようだ。
32MHz駆動の場合はCONFIG1を以下のようにすれば、mainに来た時にはもう32MHzになっている。

// CONFIG1 #pragma config FEXTOSC = OFF #pragma config RSTOSC = HFINT32 #pragma config CLKOUTEN = ON #pragma config CSWEN = OFF #pragma config FCMEN = OFF

1MHz駆動ならHFINT32ではなくHFINT1、31kHz駆動ならLFINTにすればいい。OSCCONで再設定したければCSWENをONにしてPostscalerをOSCCON1bits.NDIVで切り替える。入力が3種、分周設定が10種あるので、多彩な動作クロックが得られるがここまで必要なのか。。。31k入力512分周でCLKOUT端子から15Hzが出る。おっそw
LFINT31k/512/4=15Hz

まとめ

  • 8pin PICはPIC12F1822(200円)より新しいPIC16F15313(150円)やPIC16F18313 (160円)の方が安いが機能面ではそれほど大きな差がない。
  • よく使ってたPIC12F1822と新しいPIC16F18313はオシレータブロックの設計がまるで違うので、内部オシレータの指定方法を再確認した。
  • PIC16F18313のオシレータ設定は多彩だが、ほとんど使わないのではないかという印象。32MHzと1MHzの2択で十分か。
akira.keiのアイコン画像
機械系エンジニアだが電子工作を趣味としている。週末はひとりバーベキュー。
ログインしてコメントを投稿する