標準TTLだけ(!)でCPUをつくろう!(組立てキットです!)
(ホントは74HC、CMOSなんだけど…)
[第640回]
●PIC18F14K50のHIDプログラム(その初期設定部分)
前回までのところで、PIC18F14K50でUSB通信プログラムを書くために必要なことがらの概略についてはおおよそ説明出来たと思います。
え?
よくわかりませんか?
うーん。
なかなかに説明するのも難しいのです。
実際のプログラムリストをお見せするなどして、補足していきたいと思います。
●USBプログラムのCONFIG設定
プログラムでは設定できないハードウェアのベーシックな部分については、プログラムの先頭で、CONFIGの設定をします。
PIC18FのCONFIGの書き方は、PIC16Fのときの書き方とかなり異なっています。
これが今回作成するPIC18F14K50のUSB(HID)サンプルプログラムの先頭の部分です。
#include<p18f14k50.inc> ;cpuclock=48MHz 12MHz crystal ; CONFIG FOSC = HS,CPUDIV = NOCLKDIV,USBDIV = OFF,PCLKEN = ON,PLLEN = ON,WDTEN=OFF,LVP=OFF ;
[第502回]で説明しましたように、CONFIGの記載の仕方については、インクルードファイルを覗いてみるとわかります。
PICのインクルードファイルは、MPLABをダウンロードしたときにデフォルトではProgram Filesに作成されるMicrochipフォルダの中のMPASM Suitesフォルダにあります。
p18f14k50.incを読んでみます。中身はテキストですからメモ帳などでも開けます。
実はシステムクロック、USBクロックの設定については、[第505回]で説明をしています。
ただそこではPIC18F14K50.incの中身はオシレータの選択のところだけで、USBクロックの指定などについては示していませんでした。
今回はそのあたりも含めて見ていくことにいたします。
下はPIC18F14K50.incの一部です。
[第505回]での説明をあわせて読んでいただくと理解し易いと思います。
;========================================================================== ; ; IMPORTANT: For the PIC18 devices, the __CONFIG directive has been ; superseded by the CONFIG directive. The following settings ; are available for this device. ; ; CPU System Clock Selection bit: ; CPUDIV = NOCLKDIV No CPU System Clock divide ; CPUDIV = CLKDIV2 CPU System Clock divided by 2 ; CPUDIV = CLKDIV3 CPU System Clock divided by 3 ; CPUDIV = CLKDIV4 CPU System Clock divided by 4 ; ; USB Clock Selection bit: ; USBDIV = OFF USB Clock comes directly from the OSC1/OSC2 oscillator block; no divide ; USBDIV = ON USB clock comes from the OSC1/OSC2 divided by 2 ; ; Oscillator Selection bits: ; FOSC = LP LP oscillator ; FOSC = XT XT oscillator ; FOSC = HS HS oscillator ; FOSC = ERCCLKOUT External RC oscillator, CLKOUT function on OSC2 ; FOSC = ECCLKOUTH EC, CLKOUT function on OSC2 (high) ; FOSC = ECH EC (high) ; FOSC = ERC External RC oscillator ; FOSC = IRC Internal RC oscillator ; FOSC = IRCCLKOUT Internal RC oscillator, CLKOUT function on OSC2 ; FOSC = ECCLKOUTM EC, CLKOUT function on OSC2 (medium) ; FOSC = ECM EC (medium) ; FOSC = ECCLKOUTL EC, CLKOUT function on OSC2 (low) ; FOSC = ECL EC (low) ; ; 4 X PLL Enable bit: ; PLLEN = OFF PLL is under software control ; PLLEN = ON Oscillator multiplied by 4 ; ; Primary Clock Enable Bit: ; PCLKEN = OFF Primary clock is under software control ; PCLKEN = ON Primary clock enabled
USBクロックとして48MHzが必要で、それは外付けの12MHzクリスタルから供給します。
Oscllatorの項はFOSC=HSになります。
12MHzからPLLによって48MHzを得ますから、
PLLEN=ONになります。
今回はCPUクロックも48MHzクロックをそのまま使いますから、
CPUDIV=NOCLKDIVになります。
USBクロックも48MHzをそのまま使いますから、
USBDIV=OFFです。
OSC1、OSC2に外付けした12MHzクリスタルの発振によって得られるクロックがPrimary Clockで、もちろんそれを使いますから、
PCLKEN=ONです。
やっとひとつ大きな山(ND80ZVの製作)を超えたところで、ほっと一息ついています。
しばらくは少しペースをスローダウンして、少しずつ、ぼちぼち書いていくことにいたします。
2010.10.17upload
前へ
次へ
ホームページトップへ戻る