編集履歴一覧に戻る
akira.keiのアイコン画像

akira.kei が 2025年02月02日01時09分22秒 に編集

コメント無し

本文の変更

-

[<前の記事](https://elchika.com/article/2079a735-fc59-42b8-b200-e9dcb07e9018/)

+

[<前の記事](https://elchika.com/article/2079a735-fc59-42b8-b200-e9dcb07e9018/) : [次の記事>](https://elchika.com/article/5f29309a-52ce-480b-875c-7c912a011d50/)

## Raspberry Pi Pico(750円)で4.096MHz 先日、[Raspberry Pi Pico](https://akizukidenshi.com/catalog/g/g116132/)を使って4.096MHzを発振する、という[記事](https://jhalfmoon.com/dbc/2022/03/01/pico%E4%B8%89%E6%98%A712-pico-c-csdk%E3%81%A74-096mhz%E3%82%AF%E3%83%AD%E3%83%83%E3%82%AF%E7%94%9F%E6%88%90%E3%81%9D%E3%81%AE%EF%BC%91pwm/)を読んだ。「700円以上の40pinマイコンでクロックジェネレータだけとかもったいなくね?(そういうことではない)」という印象だったので、8pinで[160円(時価)のPIC](https://akizukidenshi.com/catalog/g/g110889/)でやってみた。 ![4.0953MHz](https://camo.elchika.com/c01a822dba2a9c2c417a9e377df0ca409d7cce2a/687474703a2f2f73746f726167652e676f6f676c65617069732e636f6d2f656c6368696b612f76312f757365722f33363031626666382d633530632d343762382d613765362d3531663731393163323336642f33613961386565352d393639662d346333392d393030642d373766306463356366326535/) ## pragma_config.h コンフィグレーションワード1はこれ。 ``` // CONFIG1 #pragma config FEXTOSC = OFF #pragma config RSTOSC = HFINT1 #pragma config CLKOUTEN = ON #pragma config CSWEN = ON #pragma config FCMEN = OFF ``` 外部クロック(FEXTOSC)無効、内部クロック有効、クロック出力有効、CSWENをONにする。これだけだと1MHz駆動だが、mainルーチンで調整する。 ## main.c OSCFRQに「0110」を設定すると16MHz駆動にできる。CLKOUTから約4MHzが出るので、これをOSCTUNEで調整した。高精度で測定できる計測器が無いので冒頭のオシロ画面でしか確認できないが、良いとこまで行っているのではないか。 ``` #include <xc.h> #include "pragma_config.h" void main(void) { OSCFRQbits.HFFRQ=0b0110; // 16MHz from 1MHz OSCCON1bits.NOSC=0b110; // HFINT1 1MHz OSCCON1bits.NDIV=0b000; // No Prescaler OSCTUNEbits.HFTUN=0b010100; // Tune to 4.096 MHz while(1) {__nop();} } ``` 実際は普通に4.096MHz発振器を買えばいいとかごもっともなんだけど、実用ではなく「今は手元にないけど暫定的に他で代用しようかな」という時には役にたつ。少なくとも555で苦労するより、さっくりPICだけで出来上がる。すごい(自画自賛)。