#include "iodefine.h"
#include "cmt_ctrl.h"
#include "TouchPanel.h"
extern void disk_timerproc (void);

void init_cmt1(void)
{
	/* スタンバイコントロールレジスタ7 */
	CPG.STBCR7.BIT.MSTP72 = 0;			/* コンペアマッチタイマへクロックを供給 */

	/* コンペアマッチタイマスタートレジスタ */
	CMT.CMSTR.BIT.STR1 = 0;				/* CMCNT_1はカウントを停止 */

	/* コンペアマッチタイマコントロール/ステータスレジスタ */
	if(1 == CMT.CMCSR1.BIT.CMF)
	{
		CMT.CMCSR1.BIT.CMF = 0;			/* コンペアマッチフラグをクリア */
	}
	CMT.CMCSR1.BIT.CMIE = 1;			/* コンペアマッチ割込みを許可 */
	CMT.CMCSR1.BIT.CKS = 0;				/* クロックセレクト Pφ/8 */

	/* コンペアマッチコンスタントレジスタ */
	CMT.CMCOR1.WORD = 24000000/8/1000 - 1;		/* 1KHz */

	/* コンペアマッチタイマスタートレジスタ */
	CMT.CMSTR.BIT.STR1 = 1;				/* CMCNT_1はカウントを開始 */

	/* 割り込み優先レベル設定レジスタ10 */
	INTC.IPR10.BIT._CMT1 = 1;			/* コンペアマッチタイマ チャネル1 */

	return;
}

/* 以下はFatFsのmain.cから移動 */

volatile UINT Timer;		/* パフォーマンスタイマ (1kHz加算) */

/*---------------------------------------------------------*/
/* 1000Hzインターバルタイマ (CMT1)                         */
/*---------------------------------------------------------*/

void int_cmt_cmi1(void)
{
	static int div10;

	if(1 == CMT.CMCSR1.BIT.CMF)
	{
		CMT.CMCSR1.BIT.CMF = 0;			/* コンペアマッチフラグをクリア */
	}

	TOUCH_Interrupt();

	Timer++;

	if (++div10 >= 10) {
		div10 = 0;
		disk_timerproc();		/* ディスク制御タイマ (100Hz) */
		key_event();
	}
}


void delay_ms (					/* ms単位のディレイ */
	UINT ms
)
{
	for (Timer = 0; Timer < ms; )
	{
		key_cmd_chk();
	}
}
