akira.kei が 2025年01月19日22時02分12秒 に編集
コメント無し
本文の変更
## 8pin PICと言えば これまで8pin PICといえばずっと[PIC12F1822](https://akizukidenshi.com/catalog/g/g104557/)を使ってきた。 
今のお値段は二百円だ。高くなってきたが[Raspberry Pi PICO](https://akizukidenshi.com/catalog/g/g116132/)に比べたらまだまだ安い。でもPickit4が買えなくなって[Pickit5](https://akizukidenshi.com/catalog/g/g118150/)が1万8千円近くすることを考えると、ずいぶんハードルが高くなった印象だ。
今のお値段は二百円だ。高くなってきたが[Raspberry Pi PICO](https://akizukidenshi.com/catalog/g/g116132/)に比べたらまだまだ安い。でもPickit4が買えなくなって[Pickit5](https://akizukidenshi.com/catalog/g/g118150/)が1万8千円近くすることを考えると、PICを使い始めるハードルがずいぶん高くなった印象だ。
ただ何かの中に組み込んだりするには千円弱のPICOやXIAOはちょっと使いにくいので、まだまだPICの出番は多いはず。まぁ今は[40円のRISC-V](https://akizukidenshi.com/catalog/g/g118062/) に駆逐されそうなんだけど。。。 ## 8pinのPIC16F 8pinのPIC16Fシリーズでは、150円の[PIC16F15313](https://akizukidenshi.com/catalog/g/g130016/)と160円の[PIC16F18313](https://akizukidenshi.com/catalog/g/g110889/)が秋月電子で買える。機能の差異はほとんどないので、今回は数字が大きい(15<18)し、これまで使ってたPIC12F1822と名前が近いPIC16F18313を選んでみた。   ## 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の内部オシレータを使う場合、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  ## まとめ - 8pin PICはPIC12F1822(200円)より新しいPIC16F15313(150円)やPIC16F18313 (160円)の方が安いが機能面ではそれほど大きな差がない。 - よく使ってたPIC12F1822と新しいPIC16F18313はオシレータブロックの設計がまるで違うので、内部オシレータの指定方法を再確認した。 - PIC16F18313のオシレータ設定は多彩だが、ほとんど使わないのではないかという印象。32MHzと1MHzの2択で十分か。