//  Copyright (C) 2016, mituhiromatuura all right reserved.

#include <kernel.h>
#include "kernel_cfg.h"
#include "iodefine.h"

#include "exti.h"
#include "gpio.h"

void exint_camvs_init(void)
{
	exti_init(EXINT_CAMVS_CH, EXINT_CAMVS_PORT, EXTI_ELVR_BIT_DNEDGE);
	return;
}

void exint_camvs_start(void)
{
	//外部割込み要因クリア
	*BITBAND(EXTI_EICL, EXINT_CAMVS_CH) = 0;

	//外部割込み許可
	*BITBAND(EXTI_ENIR, EXINT_CAMVS_CH) = 1;

	return;
}

void exint_camvs_stop(void)
{
	//外部割込み禁止
	*BITBAND(EXTI_ENIR, EXINT_CAMVS_CH) = 0;

	return;
}

void isr_exint_camvs(intptr_t exinf)
{
	if(*(v32_t *)(INTREQ_IRQ_MON(15)))	//外部端子割込みch15の割込み要求？
	{
		exint_camvs_stop();

		if(*BITBAND(EXTI_EIRR, EXINT_CAMVS_CH))
		{
			/* アンダーフロー割込み要求ビットをクリア */
			*BITBAND(EXTI_EICL, EXINT_CAMVS_CH) = 0;
			iwup_tsk(TASK_MAIN);
		}
	}
	return;
}
