MicroshipのUSB DeviceのHID MouseサンプルをPIC18F2550用にビルドした。
ビルドするのに行った作業も一緒に書いておきます。
回路は前回の「USB動作確認」のままです。
2009/09/25 修正:ファイルのパスの¥が消えていたのを復元しました。
環境
- MicrochipのC18コンパイラー Evaluation-v3.30を
"C:¥MCC18"
(デフォルト)にインストール - MicrochipのApplication Libraries v2009.03.24を
"C:¥Microchip Solutions"
(デフォルト)にインストール
作業
- MPLAB IDEで新規プロジェクト “usbdev” を “PIC18F2550” 用に作成
- ソース用ディレクトリ “src” を “usbdev” ディレクトリ内に作成
"C:¥Microchip Solutions¥USB Device - HID - Mouse¥HID - Mouse - Firmware"
から以下のファイルを “src” にコピーHardwareProfile - PICDEM FSUSB.h
HardwareProfile.h
rm18f4550 - HID Bootload.lkr
mouse.c
usb_config.h
usb_descriptors.c
- 以下のファイルをリネーム
"HardwareProfile - PICDEM FSUSB.h"
を
"HardwareProfile - PIC18F2550.h"
とリネーム"rm18f4550 - HID Bootload.lkr"
を
"rm18f2550.lkr"
とリネーム
- 以下のファイルを編集(編集内容は別記)
"HardwareProfile - PIC18F2550.h"
"HardwareProfile.h"
"rm18f2550.lkr"
"mouse.c"
- 上記6ファイルをプロジェクトに追加
- さらに、以下のファイルをプロジェクトに追加
"C:¥Microchip Solutions¥Microchip¥Usb¥usb_device.c"
"C:¥Microchip Solutions¥Microchip¥Usb¥HID Device Driver¥usb_function_hid.c"
- プロジェクトの各種パスを設定(メニューProject>Build Options…>ProjectのダイアログでDirectoriesタブ)
- Output Directory —
Output
- Include Search Path —
src
,C:¥Microchip Solutions¥Microchip¥Include
- Library Search Path —
C:¥MCC18¥lib
- Output Directory —
- これでビルド可能な状態に
編集内容
▼ HardwareProfile – PIC18F2550.h
#ifndef HARDWARE_PROFILE_PIC18F2550_H #define HARDWARE_PROFILE_PIC18F2550_H ・・・ //Uncomment the following line to make the output HEX of this // project work with the HID Bootloader //#define PROGRAMMABLE_WITH_USB_HID_BOOTLOADER ←Bootloaderを使わないのでコメントアウト ・・・ //#define DEMO_BOARD PICDEM_FS_USB ←コメントアウト //#define PICDEM_FS_USB ←コメントアウト #define PIC18F2550 ←上の行の変わりにPIC18F2550を定義 ・・・ /** LED ************************************************************/ #define mInitAllLEDs() LATC &= 0xF0; TRISC &= 0xF0; ←LEDにポートCを使う #define mLED_1 LATCbits.LATC0 ←以下、ポートCに変更 #define mLED_2 LATCbits.LATC1 #define mLED_3 LATCbits.LATC2 #define mLED_4 LATCbits.LATC3 ・・・ /** SWITCH *********************************************************/ //#define mInitAllSwitches() TRISBbits.TRISB4=1;TRISBbits.TRISB5=1; #define mInitAllSwitches() TRISBbits.TRISB4=1; ←スイッチにはポートBの4ピンしか用意していないので #define mInitSwitch2() TRISBbits.TRISB4=1; #define mInitSwitch3() TRISBbits.TRISB4=1; ←スイッチ2と同じにしてある #define sw2 PORTBbits.RB4 #define sw3 PORTBbits.RB4 ←スイッチ2と同じにしてある ・・・ /** USB external transceiver interface (optional) ******************/ /* ←optionalと書いてあるので、以下コメントアウト #define tris_usb_vpo TRISBbits.TRISB3 // Output #define tris_usb_vmo TRISBbits.TRISB2 // Output #define tris_usb_rcv TRISAbits.TRISA4 // Input #define tris_usb_vp TRISCbits.TRISC5 // Input #define tris_usb_vm TRISCbits.TRISC4 // Input #define tris_usb_oe TRISCbits.TRISC1 // Output #define tris_usb_suspnd TRISAbits.TRISA3 // Output */ ・・・
▼ HardwareProfile.h
#if defined(DEMO_BOARD) #include "HardwareProfile - PIC18F2550.h" #endif
▼ rm18f2550.lkr
・リンクするライブラリをPIC18F4550からPIC18F2550へ
FILES p18f4550.lib ↓ FILES p18f2550.lib
・Bootloaderを使わないから(?)
CODEPAGE NAME=bootloader START=0x0 END=0xFFF PROTECTED CODEPAGE NAME=vectors START=0x1000 END=0x1029 PROTECTED CODEPAGE NAME=page START=0x102A END=0x7FFF ↓ CODEPAGE NAME=page START=0x0 END=0x7FFF
▼ mouse.c
"HardwareProfile - PIC18F2550.h"
で定義した PIC18F2550
でconfig bitsを設定します。
#elif defined(PIC18F2550) // PIC18F2550 #pragma config FOSC = HSPLL_HS #pragma config WDT = OFF #pragma config PLLDIV = 5 #pragma config CPUDIV = OSC1_PLL2 #pragma config USBDIV = 2 #pragma config PWRT = ON #pragma config BOR = ON #pragma config BORV = 3 #pragma config LVP = OFF #pragma config VREGEN = ON #pragma config MCLRE = ON #pragma config PBADEN = OFF #else #error No hardware board defined, see "HardwareProfile.h" and __FILE__ #endif
さらに
"usb_descriptors.c"
で定義されているデバイスの名前や製造者等の文字列を自分の文字列に書き換える。
プロジェクトファイル一式
このプロジェクトファイル一式のZIPファイルです。
usbdev-circlemouse