目次 > 9章 PIC18F2550編 > 48MHzで動作させる
48MHzで動作させる
更新日2009.5.24
USB機能を搭載したPIC18は、最大48MHzで動作できます。
ここでは、PIC18F2550を48MHzで動作させる実験を行います。
実験回路
|
・ |
今回の実験回路です。2つのLEDをRA0/RA1に接続します。
レゾネータは12MHzを使います。
-
| |
680Ωの抵抗2本は、300Ω〜1KΩ程度の範囲であれば何でもOKです。
|
- ブレッドボードに組んだ状態。
-
| |
回路図に無いもの(右下の6ピンヘッダ周り)が有りますが、これはICSP(In-Circuit Serial Programming)用の回路です。
秋月のPICライタを使うのであれば不要です。
|
|
プログラムの仕様
|
|
まずクロックは、PIC18の最高スピードである48MHzで動作させます。
そしてRA0/RA1のLEDを1秒間隔で交互に点滅させます。
1秒の時間はプログラムループより作成します。
|
48MHzでの動作方法
|
|
PIC18F2550のクロックは以下のようになっています。(データシートより)
少し複雑ですが、今回使う部分は丸付き数字のルートです。
-
図の丸付き数字に沿って動きを説明します。番号は丸付き数字に対応しています。
- OSC1/OSC2は、9ピン/10ピンに対応し、今回は12MHzのレゾネータ(セラロック)を接続します。
これで、Primary Oscillatorの出力は12MHzになります。
- この12MHzをPLL Prescalerで
- 1/3の4MHzに分周します。
分周は、1,2,3,4,5,6,10,12から選択でき、CONFIG1LのPLLDIVで設定します。
出力が4MHzになるように、レゾネータとPLLDIVの組み合わせを決めます。
- 96MHz PLLは、4MHzを入力として24倍の96MHzを出力します。
- この96MHzを、PLL Postscalerにより1/2して48MHzを出力します。
分周は、2,3,4,6から選択でき、CONFIG1LのCPUDIVで設定します。
- 最終的に、48MHzをCPUのクロックとして提供します。
これらの設定は、CONFIGレジスタで行います。
今回のプログラムでの設定は以下のようになっています。
-
CONFIG | PLLDIV = 3 | ; 上の説明の2,3(1/3に分周)
| CONFIG | CPUDIV = OSC1_PLL2 | ; 上の説明の5(96MHzを1/2に分周)
| CONFIG | FOSC = HSPLL_HS | ; 図の丸付き数字のルートを使う指定
|
|
プログラム
|
|
1秒の時間はプログラムループによるウェイトルーチンで作っています。
クロックが48MHzですので、1命令実行時間は83.33nSです。この時間を元にループ回数を決めました。
ですのでLEDが1秒間隔で点滅すれば、48MHzで動作している証明になります。
|
補足
|
|
USB機能を内蔵したPIC18は、PORTCのRC3に相当するピンがUSB電圧用のピンになっておりRC3がありません。
また、RC4/5はデジタル出力として使えません。
従って、以下の理由が無ければUSB機能が無い機種を選択する方が良いと思います。
- USB機能を使う
- 48MHzで動作させる(40MHzではスピード不足の場合)
- プログラムメモリが足りない
28ピンタイプであればPIC18F2320、40ピンタイプであればPIC18F4520など。
|