PIC 18F4553 マイコンボード

投稿日 2013/09/25

PICの18Fシリーズで手軽に実験をするために秋月電子のPIC18F4553使用 USBマイコンボードキットを購入しました。

 

キットと言ってもほとんど完成品で、ピンヘッダを半田付けするだけです。

 

このボードは名前の通りPIC 18F4553が搭載されており、

 

20MHz XTAL
3.3Vのレギュレーション回路
USBコネクタ
ISCPコネクタ
プッシュスイッチ2個
RESETスイッチ
青色LED 1個

 

を備えています。

PIC18F4553_1.jpg

またI/Oポートも、PORTA,B,C,Dがきれいに並んだ形でピンヘッダから取り出せるようになっています。

 

UARTも信号線そのまま(TTLレベル)ですが、ピンヘッダから取り出せるようになっています。

 

小型ながらブレッドボード等に差して便利に使えそうです。(細ピンヘッダもキットに付属しています)

 

電源は、

 

USBのバスパワー
外部電源 3.3Vを直接
外部電源 5V直接
外部電源 4から12V直接

 

のいずれかをジャンパーで選べるようになっているので便利です。
PICの電源は5Vか3.3Vを選べるようになっています。

 

なお、常に3.3Vのレギュレーション出力が取り出せるピンが用意されています。
3.3VのLCDをつなぐときなどに便利です。

 

USBのコネクタはマイクロB型(A型ではない)なので注意が必要です。

 

PIC 18F4553は、18F4550のADコンバータを10ビットから12ビットに変更したもので、ベースは4550です。したがって、データシートはほとんどの機能を18F4550のデータシートを参照することになります。12bit ADコンバータなど、変更点は18F4553のデータシートを参照します。残念ながらいずれも英文です。

 

PIC 18F4553の概要
 電源電圧 2 - 5.5V
 外部OSC Max 48MHz PLL, 32KHz
 内部OSC 8MHz 分周可能
 フラッシュメモリ:32KB
 SRAM:2KB
 EEPROM:256B
 USB 2.0
 I/O Port 35
 ADコンバータ:12bit 13ch
 MMSP(SPI/I2C) x1
 CCP x1
 ECCP x1
 UART x1
 Timer 0(8bit) Timer1(16bit) Timer2(16bit) Timer3(16bit)
 Comparator x2

 

このボードにおけるI/Oポートは、

 

PORTA PA0 - PA4 いずれもADコンバータAN0 - AN4と共通
PORTB PB0 - PB7
PORTC PC0 - PC2, PC6, PC7 (PC6はTX, PC7はRXに出ています)
PORTD PD0 - PD7

 

なお、PORTE PE0, PE1はプッシュスイッチで、PE2はLED、PE3はリセットスイッチ(MCLR)で使われているためピンヘッダには出ていません。

 

電源の選択方法
JP1とJP2で行います。
JP1はUSBから電源を供給するか、外部電源から供給するかを選びます。
 USB USBバスパワーから供給
 EXT 外部電源から供給

 

JP2はマイコンに供給する電圧を選びます。
 3.3 3.3Vを供給します。

5  5Vを供給します。(ただし外部電源から3.3Vを供給すると3.3V)
 

5VBPOUTピンにはUSBバスパワーの5Vが出ています。(フューズ付き)
VINピン 外部電源をつなぎます。
3.3V OUT 3.3Vが出ています。(LCDなどの電源に便利です)

 

接続は以下のようにないます。
USBから5Vを供給する場合 JP1->USB JP2->3.3Vまたは5V
外部電源から5Vを供給する場合 JP1->EXT JP2->3.3Vまたは5V
外部電源から4Vから12Vを供給する場合 JP1->EXT JP2->3.3V (5V側は禁止)
外部電源から3.3Vを供給する場合 JP1->EXT JP2->5V (3.3V側はNG)

 

プログラムのダウンロードはICSPピンヘッダからPickit2やPickit3などで簡単に行えます。

 

プログラムの開発はMicrochip社の旧MPLAB IDEや、新しいMPLAB X IDEで行えます。

 

簡単なサンプルプログラムとUSBを使用する場合の例が秋月電子のページに載っています。

 

LEDチカチカの例

 

MPLAB X IDEのXC8コンパイラでコンパイルしました。
FoscはUSBを使用しないのでPLLは使いません。
HS 20MHz OSCをCPUDIVで1/2して10MHzにしています。
1秒間隔でLEDを点滅させます。

 

#include <xc.h>
#include <p18f4553.h>

 

#pragma config FOSC = HS //20MHz Xtal(No PLL)
#pragma config CPUDIV = 1 //20MHz / 2 = 10MHz
#pragma config MCLRE = ON

 

#define _XTAL_FREQ 10000000

 

#define LED PORTEbits.RE2

 

void Delay_ms(int cnt){

int i;
for(i = 0; i < cnt ; i++) __delay_ms(1);

}

 

void init(void){

ADCON1 = 0b00001111; //All Digital
CMCON = 0b00000111; //No Comparator
TRISA = 0b00000000;
TRISB = 0b00000000;
TRISC = 0b00000000;
TRISD = 0b00000000;
TRISE = 0b00000000;
LATA = 0b00000000;
LATB = 0b00000000;
LATC = 0b00000000;
LATD = 0b00000000;
LATE = 0b00000000;

 

}

 

void main(void) {
init();
while(1){

LED = 1;
Delay_ms(500);
LED = 0;
Delay_ms(500);

}
}



 

(JF1VRR)