bool is_school_zone_detected() {
	
	char buf[10];
	bool ret_val = false;
	
	DisableExternalInterrupts();
	
	int a1 = A2D_GetSingleCh_10bit(PIN_IR_SENSOR_1_ADC);
	
	int a3 = A2D_GetSingleCh_10bit(PIN_IR_SENSOR_3_ADC);
	
	int a5 = A2D_GetSingleCh_10bit(PIN_IR_SENSOR_5_ADC);
	
	if(a1 < ADC_BLACK_REFERENCE) {
		
		if(a5 < ADC_BLACK_REFERENCE) {
			
			if(a3 < ADC_BLACK_REFERENCE) {
				ret_val = true;
			}
		}
	}
	
	EnableExternalInterrupts();
	
	return ret_val;
}
Ejemplo n.º 2
0
//- Tx Queue에 Ch 넣음. 단, Tx Queue가 차 있으면 빌 때까지 기다림
void SDBG_PutCh(char ch)
{
	vint32_t cnt=0;
	
	while (SDBG_IsTxQueFull()) {
		if (++cnt>30000)
			break;
	}
	if (ch == SDBG_ASCII_LF)
		SDBG_PutCh(SDBG_ASCII_CR);

	DisableExternalInterrupts();

	if (LINFLEX_0.LINIER.B.DTIE == 0) {
	    LINFLEX_0.UARTSR.R = 0x2;	// DTF
		LINFLEX_0.LINIER.B.DTIE = 1;
		LINFLEX_0.BDRL.R = ch;
		LINFLEX_0.LINSR.R = 0xF23F;
	}
	else {
		sdbg_TxQue[sdbg_TxQueHeadPtr] = ch;
		sdbg_TxQueHeadPtr = (sdbg_TxQueHeadPtr+1)%SDBG_TX_QUE_SIZE;
	}
	EnableExternalInterrupts();
}
Ejemplo n.º 3
0
//- Tx Queue에 Ch 넣음. 단, Tx Queue가 차 있으면 빌 때까지 기다림
void YUART_PutCh(char ch)
{
	vint32_t cnt=0;
	
	while (YUART_IsTxQueFull()) {
		if (++cnt>30000)
			break;
	}
	if (ch == YUART_ASCII_LF)
		YUART_PutCh(YUART_ASCII_CR);

	DisableExternalInterrupts();

	if (LINFLEX_2.LINIER.B.DTIE == 0) {
	    LINFLEX_2.UARTSR.R = 0x2;	// DTF
		LINFLEX_2.LINIER.B.DTIE = 1;
		LINFLEX_2.BDRL.R = ch;
		LINFLEX_2.LINSR.R = 0xF23F;
	}
	else {
		yuart_TxQue[yuart_TxQueHeadPtr] = ch;
		yuart_TxQueHeadPtr = (yuart_TxQueHeadPtr+1)%YUART_TX_QUE_SIZE;
	}
	EnableExternalInterrupts();
}
Ejemplo n.º 4
0
//- Tx Queue가 다 차면 NGV_DMU_TRUE 리턴, 그렇지 않으면 NGV_DMU_FALSE 리턴
int16_t SDBG_IsTxQueFull(void)
{
	int16_t size;
	
	DisableExternalInterrupts();
	size = (sdbg_TxQueHeadPtr-sdbg_TxQueTailPtr+SDBG_TX_QUE_SIZE)%SDBG_TX_QUE_SIZE;
	EnableExternalInterrupts();
	
	if (size>=(SDBG_TX_QUE_SIZE-2)) {
		return NGV_DMU_TRUE;
	}
	return NGV_DMU_FALSE;
}
Ejemplo n.º 5
0
//- Tx Queue가 다 차면 NGV_DMU_TRUE 리턴, 그렇지 않으면 NGV_DMU_FALSE 리턴
int16_t YUART_IsTxQueFull(void)
{
	int16_t size;
	
	DisableExternalInterrupts();
	size = (yuart_TxQueHeadPtr-yuart_TxQueTailPtr+YUART_TX_QUE_SIZE)%YUART_TX_QUE_SIZE;
	EnableExternalInterrupts();
	
	if (size>=(YUART_TX_QUE_SIZE-2)) {
		return NGV_DMU_TRUE;
	}
	return NGV_DMU_FALSE;
}
Ejemplo n.º 6
0
void InitPeripherals(void)
{
	sys_init_fnc();
	DLED_Init();
	DSW_Init();
	BTMR_Init();
	SDBG_Init();
	MUART_Init();
	YUART_Init();
	CLCD_Init();
	FADC_Init(0xfff3);
	
	EnableExternalInterrupts();
}
Ejemplo n.º 7
0
int main(void) {
	volatile int i = 0;
	sys_init_fnc();
	INIT_33905();
	EnableExternalInterrupts();
	AFS_Set_LIN_Interface(LIN_TX, LIN_RX);
	/* Loop forever */
	for (;;) {
		i++;
		Delay_ms(500);
		LED1 = ~LED1;
		AFS_AFL_Init_Test();
	}
}
Ejemplo n.º 8
0
void main(void)
{
	uint32_t i, j;
	
	//- sys_init_fnc() 함수에서 시스템을(레지스터를) 초기화함
	sys_init_fnc();
	EnableExternalInterrupts();
   
	//- 회로도를 보면, 
	//   LED1: PE4(68번), LED2: PE5(69번), LED3: PE6(70번), LED4: PE7(71번)
	//   LED가 모두 High 출력일 때, OFF, Low 출력일 때, ON임
	//

	//- PE4, PE5, PE6, PE7을 GPIO의 출력으로 초기 설정하는 것은
	//   siu_init.c의 siu_init_fnc() 함수가 담당
	//   siu_portE_init_fnc()에 보면, SIU.PCR[68].R = 0x0201; 

	//- 일단, LED 모두 OFF
	//   참고: 레지스터에 액세스에 대한 Macro 상수 선언은 jdp.h에 있음
	SIU.GPDO[68].B.PDO = 1; // 1이면 High 출력, 0이면 Low 출력
	SIU.GPDO[69].B.PDO = 1;
	SIU.GPDO[70].B.PDO = 1;
	SIU.GPDO[71].B.PDO = 1;
   
	//- LED1부터 0.5초 ON, 0.5초 OFF를 10회 반복
	while(1) {
		for (i=68; i<=71; i++) {
			for (j=0; j<10; j++) {
				SIU.GPDO[i].B.PDO = 0;
				delay_ms(500);
				SIU.GPDO[i].B.PDO = 1;
				delay_ms(500);
			}
		}
	}
}