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

ホーム
12F1822
16F1455
16F1459
18F14K50
18F26J50
dsPIC
その他
    
16F18313
16F18325
16F18346
16F1619
Curiosity
---
---
MCCで割り込み処理

MCCを使って割り込み処理をどの様にプログラムするのかを Timer1を使い LEDを500ms間隔で点灯させる例で示します。

Timer1から500ms間隔で割り込みを発生させ、割り込み処理プログラム(MyTMR1_ISR)で LEDへの出力を反転させるプログラムです。

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

この例では、「New Project...」から、Interrupt という名称のプロジェクトを作成しました。

2 MPLAB X IDE で MCC を起動

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

MCCが起動すると、自動生成するファイル名称を指定しするダイアログが現れます。この例では「MyConfig.mc3」とし保存します・

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

MCCのデフォルト設定のまま500kHz_MF を使用しました。

 

 

4 TMR1 Module のロード

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

 

 

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

 

5 TMR1 の設定

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

Enable Timer Interruptにレ点を入れ,Timer Period を 500ms に変更します。

他の設定はデフォルトでOKでした。

 

 

6 入出力の指定

Pin Manager をクリックします。

 

 

module がロードされ、Pin Manager に、利用できる 入出力pinが表示されます。
まず、Grid View でRA5 をGPIO 出力に指定します。そして。LED が接続されている RA5 の名称を 「LED」 に書き換えます。

 

 

7 Code 生成

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

 

8 処理ルーチンを main.c に記載

自動生成された main.c ファイルを開き、内容を下のリストの様に変更します。

以下の4点が割り込み処理関数を組み込むのに重要です。

この例では、ユーザーの割り込み関数は、「MyTMR1_ISR」 という名前でその動作内容は LEDへの出力を反転するだけの簡単なものです。

 

/*******************************
 * MCC利用して Interrupt を設定
********************************/
#include "mcc_generated_files/mcc.h"

// ユーザーの割り込み関数のプロトタイプ
void MyTMR1_ISR(void);

/*   Main application  */
void main(void)
{
    SYSTEM_Initialize();
    
    // ユーザーの割り込み関数を指定する
    TMR1_SetInterruptHandler(MyTMR1_ISR);

    // インターラプトを有効にする
    INTERRUPT_GlobalInterruptEnable();
    INTERRUPT_PeripheralInterruptEnable();

    while (1)
    {
        // Add your application code
    }
}

// ユーザーの割り込み関数
void MyTMR1_ISR(void){
    LED_Toggle();
}

/** End of File **/

 

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

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

 

 

10 動作の確認

書き込み終了後、LEDは 500ms 間隔で点滅します。