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; }
//- 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(); }
//- 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(); }
//- 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; }
//- 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; }