Curiosityの基本動作から応用プログラムまでを学びます。

ホーム
12F1822
16F1455
16F1459
18F14K50
18F26J50
dsPIC
その他
    
16F18313
16F18325
16F18346
16F1619
Curiosity
---
---
PWMでLEDの明るさを変化させる
2017-11-28

MCCの ADS,PWM module を使い、8-bit Curiosityボード上の POTの調整で D7 の明るさを変化させる手順を解説します。

1 MPLAB® X プロジェクトの作成

Curiosity ボードは多くの 8 bit PICをサポートしていますが、ここでは、ボードに付属していた PIC16F1619 を使用します。
この例では、「New Project...」から、ADCPWMという名称のプロジェクトを作成しました。

2 MPLAB X IDE で MCC を起動

もし、上記のような MCC ロゴが表示されていない場合には、MCC プラグインがインストールされていいるか確認してください。MCC のインストールは、ここ に説明があります。

3 システムクロックの設定

MMCの設定から4MHz_HF を選択し、PLL Enabled のレ点を外します。
右上のPackege表示がDIPでない場合、下部のPackege欄(赤丸)でDIPに変更します。

4 Analog-to-Digital Converter (ADC) Module のロード

Device Resources ウインド内の Libraries list にある ADC icon 展開して ADC icon をダブルクリックします。

モジュールがロードされると ADC icon が、Project Resources に現れます。

5 ADC の設定

表示される画面を見ながら、マウスでクリックして設定します。

6 ADC 入力の指定

ADC module がロードされると、Pin Manager に、利用できる ADC入力pinが表示されます。
pin RC0(channel_AN4) を ADC入力に、指定します。
このピンは Curiosity ボードの POT 1 に接続されています。

7 Timer 4 Module のロード

Device Resources ウインド内の Libraries list にある Timer icon 展開して TMR4 icon をダブルクリックします。

モジュールがロードされると TMR4 icon が、Project Resources に現れます。

8 TMR4 の設定

モジュールがロードされると TMR4 設定画面が現れますが、初期設定のまま使用します。

9 PWM 3 Module のロード

Device Resources ウインド内の Libraries list にある PWM icon 展開して PWM3 icon をダブルクリックします。

モジュールがロードされると PWM3 icon が、Project Resources に現れます。

10 PWM3 の設定

モジュールがロードされると PWM3 設定画面が現れます。連携するタイマーを Timer 4 にします。


11 PWM3 出力の指定

PWM3 module がロードされると、Pin Manager に、利用できる PWM3 出力pinが表示されます。
pin RC5 を指定します。
このピンは Curiosity ボードの LED D7 に接続されています。


12 MCC 通知の確認

Notificationsタブをクリックし、通知の内容を確認します。

「Timer 4 の Posrscaler は PWM 動作では無視される。」
「PWM3 は Timer 4 と連携している」という通知でエラーではないため別段修正は必要ありません。

13 Code 生成

Generate ボタンをクリックします。

MCC の自動生成したファイルの名称を指定して保存します。この例では「MyConfig.mc3」
MCCは、プロジェクトに以下の11本のファイルを登録します。

14 ADC-PWM 処理ルーチンを main.c に記載

自動生成された main.c ファイルを開き、

を組み合わせて while ループ内にADC結果をPWMモジュールに引き渡す命令を配置します。
下記リストでは赤でハイライトされている一行。

ヒント
MCCにより組み込まれる関数の名称やや動作の概要は、各モジュールの .h, .c ファイルのコメント欄に説明されています。

void main(void)
{
    // initialize the device
    SYSTEM_Initialize();

    // When using interrupts, you need to set the Global and Peripheral Interrupt Enable bits
    // Use the following macros to:

    // Enable the Global Interrupts
    // INTERRUPT_GlobalInterruptEnable();

    // Enable the Peripheral Interrupts
    // INTERRUPT_PeripheralInterruptEnable();

    // Disable the Global Interrupts
    //INTERRUPT_GlobalInterruptDisable();

    // Disable the Peripheral Interrupts
    //INTERRUPT_PeripheralInterruptDisable();

    while (1)
    {
        // Add your application code
        PWM3_LoadDutyValue(ADC_GetConversion(channel_AN4));
    }
}

15 プロジェクトのコンパイルと書き込み

Program アイコンをクリックし、PICにプログラムを書き込みます。

16 動作の確認

書き込み終了後に、可変抵抗器(POT1)を回すと LED D7 の明るさが変化します。

17 ダウンロード

プロジェクトファイルとコンパイル後のHEXファイルを掲載します。

プロジェクト A03_ADC_PWM.zip

HEXファイル Curiosity_ADC_PWM.zip