/* it.c　定周期生成モジュール */

/* 特殊機能レジスタ（SFR）へのアクセス記述を使用する */
#include "iodefine.h"

/* 定周期生成タイマ割込み処理割付け */
#pragma interrupt it_interrupt(vect = INTIT)

#include "it.h"						/* 定周期生成モジュール */

unsigned char flag_5ms = 0U;				/* 定周期到達情報（5ms）の実体定義・初期化 */

/* 定周期生成タイマの初期化処理 */
void interval_timer_initialize(void){
	TMKAEN = 1U;					/* クロック供給 */
	OSMC = 0x10U;					/* 低速オンチップ・オシレータ・クロック（fIL）供給 */
	ITMC = 0x004AU;					/* 割込み周期 5ms = [1/15kHz]×(74 + 1) */
	TMKAMK = 1U;					/* INTIT 割込みの禁止 */
	TMKAIF = 0U;					/* INTIT 割込み要求フラグのクリア */
	TMKAPR0 = 1U;					/* INTIT の割込み優先順位をレベル3（最低優先順位）に設定 */
	TMKAPR1 = 1U;
}

/* 定周期生成タイマ開始処理 */
void intervaltimer_start(void){
	TMKAIF = 0U;					/* INTIT 割込み要求フラグのクリア */
	TMKAMK = 0U;					/* INTIT 割込みの許可 */
	ITMC |= 0x8000U;				/* カウンタ動作開始 */
}

/* 定周期生成タイマ割込み処理（5ms周期） */
/* 出力　flag_5ms:定周期到達情報（5ms） */
static void it_interrupt(void){
	flag_5ms = 1U;					/* 定周期到達情報（5ms）を設定する */
}
