MicrochipのHID MouseサンプルをPIC18F2550用にビルドする

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" (デフォルト)にインストール

作業

  1. MPLAB IDEで新規プロジェクト “usbdev” を “PIC18F2550” 用に作成
  2. ソース用ディレクトリ “src” を “usbdev” ディレクトリ内に作成
  3. "C:¥Microchip Solutions¥USB Device - HID - Mouse¥HID - Mouse - Firmware" から以下のファイルを “src” にコピー
    1. HardwareProfile - PICDEM FSUSB.h
    2. HardwareProfile.h
    3. rm18f4550 - HID Bootload.lkr
    4. mouse.c
    5. usb_config.h
    6. usb_descriptors.c
  4. 以下のファイルをリネーム
    1. "HardwareProfile - PICDEM FSUSB.h"
      "HardwareProfile - PIC18F2550.h" とリネーム
    2. "rm18f4550 - HID Bootload.lkr"
      "rm18f2550.lkr" とリネーム
  5. 以下のファイルを編集(編集内容は別記)
    1. "HardwareProfile - PIC18F2550.h"
    2. "HardwareProfile.h"
    3. "rm18f2550.lkr"
    4. "mouse.c"
  6. 上記6ファイルをプロジェクトに追加
  7. さらに、以下のファイルをプロジェクトに追加
    1. "C:¥Microchip Solutions¥Microchip¥Usb¥usb_device.c"
    2. "C:¥Microchip Solutions¥Microchip¥Usb¥HID Device Driver¥usb_function_hid.c"
  8. プロジェクトの各種パスを設定(メニューProject>Build Options…>ProjectのダイアログでDirectoriesタブ)
    1. Output Directory — Output
    2. Include Search Path — src, C:¥Microchip Solutions¥Microchip¥Include
    3. Library Search Path — C:¥MCC18¥lib
  9. これでビルド可能な状態に

編集内容

▼ 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

カテゴリー: PIC, ソフトウェア, 作業 タグ: , , , , パーマリンク

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

CAPTCHA


このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください