JH7UBCブログ

アマチュア無線 電子工作 家庭菜園など趣味のブログです

PIC16F18326 MCC Timer割り込み & オープンドレイン テスト

2024-01-22 21:53:16 | MPLAB X MCC
 PIC16F18326のタイマー割り込みとオープンドレイン出力のテストをします。
 Timer0の割り込みを使ってLED点滅(Lチカ)をやってみます。PIC16F18326では、すべてのGPIOに対してオープンドレイン出力を設定することができます。そこで、RC3をオープンドレイン出力に設定して、LEDに接続します。

 回路図です。ICSPでテストします。


 MPLAB Xでprojectを作成し、MCCを立ち上げ、必要な設定をします。
 まず、systemモジュールの設定です。クロックは、4MHzとしました。


 Timer0もジュールを導入し、Timer0の周期を設定します。
 Clock SourceをFOSC/4、Timer modeを16bitにして、prescalerを1:8しました。Timer Periodを500msとしました。タイマー割り込みを使いますので、Enable Timer interruptにチェックを入れます。



 Interruptモジュールです。TMR0にチェックが入っています。



 LEDを接続するポートをオープンドレインにするため、pinモジュールでODにチェックを入れます。


プログラムです。
-------------------------------------------------------------------
/*
 * PIC16F18326 MCC Timer Interrupt and Open Drain test
 * 2024.01.21
 * JH7UBC Keiji Hata
*/

#include "mcc_generated_files/mcc.h"

#define LED LATC3

void ISR(void){
     LED = !LED;
}

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

     // Enable the Global Interrupts
     INTERRUPT_GlobalInterruptEnable();

     // Enable the Peripheral Interrupts
     INTERRUPT_PeripheralInterruptEnable();
     TMR0_SetInterruptHandler(ISR);
     LED = 0;
     while (1)
    {

    }
}
-------------------------------------------------------------------
 割り込み時に処理する関数は、TMR0_SetInterruptHandler();に記入します。

 ブレッドボードです。LEDが0.5秒ごとに点滅しました。