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秒ごとに点滅しました。