LoginSignup
2
1

More than 5 years have passed since last update.

PICでAndroid Open Accessoryをつくる:04-1

Posted at

ファームウェア作成

Android Open Accessoryとして動作させるためのファームウェアを準備し、作成した回路の動作確認を行います。

ダウンロードファイル

インストール

Microchipアプリケーション用ライブラリをインストールします。
インストール中にコンポーネントを選択する画面が表示されますが、「Smartphone Demo Projects」が必須となります。(その他は任意です)
04_01.png

プロジェクトの設定

  • PICKit3をPCと接続します
  • MPLAB X IDEを起動します
  • メニューバーの「File」-「Open Project」を実行します
  • Microchipアプリケーション用ライブラリインストールフォルダ内の「mla\v2016_11_07\apps\smartphone\android\aoa_basic_io\firmware\MPLAB.X」を開きます。
    (デフォルトでは「c:\microchip\mla\v2016_11_07\apps\smartphone\android\aoa_basic_io\firmware\MPLAB.X」となります)
  • プロジェクト「Basic Android Accessory Demo」がデフォルトプロジェクトになっていない場合(プロジェクト名がボールドになっていない)、プロジェクト「Basic Android Accessory Demo」を右クリックしてコンテキストメニューを開き、Set as Main Projectを実行します
  • プロジェクト「Basic Android Accessory Demo」を右クリックしてコンテキストメニューを開き、Propertiesを実行します
  • Project Propertiesダイアログが開かれますので、以下の作業を順に行います
    • Categoriesから「Conf:PIC24FJ64GB004」を選択
    • Deviceから「PIC24FJ64GB002」を選択(デフォルトで表示されているPIC24FJ64GB004のひとつ上です)
    • Hardware ToolからPICKit3のシリアルを選択
    • 「Apply」をクリック
      04_02.png
    • Categoriesの「Conf:PIC24FJ64GB004」の下層の「ICD 3」が「PICkit 3」に変わるので選択します04_03.png
    • Option categoriesから「Power」を選択し、「Power target circuit from PICkit3」にチェックをつけ、「OK」をクリックします04_04.png
  • リボンバーにあるドロップダウンリストから「PIC24FJ64GB004_PIM」を選択します
    04_05.png

ファームウェアの構築

現状ではPIC24FJ64GB004用のソースとなっているため、今回使用する環境に合わせてソースを修正していきます。
本来は各ボタン、各LEDをそれぞれのピンに割り当てますが、今回はボタン(IR入力)、LEDともに1つずつしか使用しないため、ボタン、LEDをそれぞれ1つのピンにまとめて割り当てています。

  • Source Files - app - main.c 抜粋
main.c
int main(void)
{
    // 追記
    CLKDIV = 0x0000;     // System Clock Freq. = 32MHz

    SYSTEM_Initialize(SYSTEM_STATE_DEFAULT);

    APP_AndroidBasicIOInitialize();

    USBHostInit(0);

    while(1)
    {
        //Keep the USB stack running
        USBHostTasks();
        AndroidTasks();

        APP_AndroidBasicIOTasks();
    }
}
  • Source Files - app - system_config - exp16 - pic24fj64gb004_pim - system.c 抜粋
system.c
/** CONFIGURATION Bits **********************************************/
#pragma config WDTPS = PS1
#pragma config FWPSA = PR32
#pragma config WINDIS = OFF
#pragma config FWDTEN = OFF
#pragma config ICS = PGx1
#pragma config GWRP = OFF
#pragma config GCP = OFF
#pragma config JTAGEN = OFF

//#pragma config POSCMOD = HS //下記に修正
#pragma config POSCMOD = NONE
#pragma config I2C1SEL = PRI
#pragma config IOL1WAY = OFF
#pragma config OSCIOFNC = ON
//#pragma config FCKSM = CSDCMD //下記に修正
#pragma config FCKSM = CSECME
//#pragma config FNOSC = PRIPLL //下記に修正
#pragma config FNOSC = FRCPLL
#pragma config PLL96MHZ = ON
#pragma config PLLDIV = DIV2
#pragma config IESO = OFF

#pragma config WPFP = WPFP0
//#pragma config SOSCSEL = SOSC //下記に修正
#pragma config SOSCSEL = IO
#pragma config WUTSEL = LEG
#pragma config WPDIS = WPDIS
#pragma config WPCFG = WPCFGDIS
#pragma config WPEND = WPENDMEM

#pragma config DSWDTPS = DSWDTPS3
#pragma config DSWDTOSC = LPRC
//#pragma config RTCOSC = SOSC //下記に修正
#pragma config RTCOSC = LPRC
#pragma config DSBOREN = OFF
#pragma config DSWDTEN = OFF
  • Source Files - bsp - exp16 - pic24fj64gb004_pim - buttons.c 抜粋
buttons.c
/*** Button Definitions *********************************************/
//      S1  is MCLR button
//#define S3_PORT  PORTAbits.RA10       //下記に修正
#define S3_PORT  PORTBbits.RB5      //Overlaps with D3
//#define S6_PORT  PORTAbits.RA9        //下記に修正
#define S6_PORT  PORTBbits.RB5       //Overlaps with D7
//#define S5_PORT  PORTCbits.RC6        //下記に修正
#define S5_PORT  PORTBbits.RB5       //Overlaps with D10
//#define S4_PORT  PORTAbits.RA7        //下記に修正
#define S4_PORT  PORTBbits.RB5       //Overlaps with D4

//#define S3_TRIS  TRISAbits.TRISA10    //下記に修正
#define S3_TRIS  TRISBbits.TRISB5
//#define S6_TRIS  TRISAbits.TRISA9     //下記に修正
#define S6_TRIS  TRISBbits.TRISB5
//#define S5_TRIS  TRISCbits.TRISC6     //下記に修正
#define S5_TRIS  TRISBbits.TRISB5
//#define S4_TRIS  TRISAbits.TRISA7     //下記に修正
#define S4_TRIS  TRISBbits.TRISB5
  • Source Files - bsp - exp16 - pic24fj64gb004_pim - leds.c 抜粋
leds.c
//#define LED_D3_LAT      LATAbits.LATA10   //下記に修正
#define LED_D3_LAT      LATBbits.LATB15     //Overlaps with S3
//#define LED_D4_LAT      LATAbits.LATA7    //下記に修正
#define LED_D4_LAT      LATBbits.LATB15      //Overlaps with S4
//#define LED_D5_LAT      LATBbits.LATB3    //下記に修正
#define LED_D5_LAT      LATBbits.LATB15
//#define LED_D6_LAT      LATBbits.LATB2    //下記に修正
#define LED_D6_LAT      LATBbits.LATB15
//#define LED_D7_LAT      LATAbits.LATA9    //下記に修正
#define LED_D7_LAT      LATBbits.LATB15      //Overlaps with S6
//#define LED_D8_LAT      LATAbits.LATA8    //下記に修正
#define LED_D8_LAT      LATBbits.LATB15
//#define LED_D9_LAT      LATCbits.LATC5    //下記に修正
#define LED_D9_LAT      LATBbits.LATB15
//#define LED_D10_LAT     LATCbits.LATC6    //下記に修正
#define LED_D10_LAT     LATBbits.LATB15      //Overlaps with S5

//#define LED_D3_TRIS     TRISAbits.TRISA10 //下記に修正
#define LED_D3_TRIS     TRISBbits.TRISB15
//#define LED_D4_TRIS     TRISAbits.TRISA7  //下記に修正
#define LED_D4_TRIS     TRISBbits.TRISB15
//#define LED_D5_TRIS     TRISBbits.TRISB3  //下記に修正
#define LED_D5_TRIS     TRISBbits.TRISB15
//#define LED_D6_TRIS     TRISBbits.TRISB2  //下記に修正
#define LED_D6_TRIS     TRISBbits.TRISB15
//#define LED_D7_TRIS     TRISAbits.TRISA9  //下記に修正
#define LED_D7_TRIS     TRISBbits.TRISB15
//#define LED_D8_TRIS     TRISAbits.TRISA8  //下記に修正
#define LED_D8_TRIS     TRISBbits.TRISB15
//#define LED_D9_TRIS     TRISCbits.TRISC5  //下記に修正
#define LED_D9_TRIS     TRISBbits.TRISB15
//#define LED_D10_TRIS    TRISCbits.TRISC6  //下記に修正
#define LED_D10_TRIS    TRISBbits.TRISB15
  • リボンバーから「Clean and Build Main Project」を実行し、プロジェクトをビルドします
    04_06.png

  • 「BUILD SUCCESSFUL」が出力されビルドが成功したことを確認します
    04_07.png

  • PICでAndroid Open Accessoryをつくる:02で作成したブレッドボードにPICKit3を接続します

  • リボンバーから「Make and Program Device Main Project」を実行し、PICにプログラムを書き込みます
    04_08.png

  • 「Programming/Verify complete」が出力され書込みが成功したことを確認します
    04_09.png

動作確認

  • 上記の作業で準備した、ファームウェアの書き込まれたPICをPICでAndroid Open Accessoryをつくる:03で作成したブレッドボードに設置します
  • 電源用マイクロUSBコネクタにACアダプタを接続したうえで、USBコネクタをAndroidに接続します
  • Anrdoid上に下記のようなメッセージが表示されますので、Android Playを開きます
    04_10.png
  • Microchip社の「基本的なアクセサリデモ(Basic Accessory Demo」が開くので、インストールします
    04_11.png
  • インストール後、アプリケーションを開くと下記のようなメッセージが表示されるので、OKとします(チェックボックスはチェックしません)
    04_12.png
  • LED制御の左端をクリックし、下記のような状態にすると、LEDが点灯します
    04_13.png
  • IR受信機に向け赤外線リモコンを操作すると、操作している間プッシュボタン状態が「Not pressed」と「Pressed」が点滅します
    04_14.png

今後

これで作成した回路の検証は終了です。
次回は、赤外線リモコン受信アプリケーション用にファームウェアの微調整を行います。

参考にさせていただいたサイトについて

2
1
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1