void APP_Run(void) { Init(); SendString((unsigned char*) "Hello World\r\n", &uartData); DataFrameRxFlg = FALSE; DataFrameTxFlg = FALSE; for (;;) { while (CAN_RxBuff_NofElements()) { unsigned char ch; //receive frame (buffer 0) CAN_RxBuff_Get(&ch); SendString((unsigned char*) "echo: ", &uartData); SendChar(ch, &uartData); SendString((unsigned char*) "\r\n", &uartData); } GREENLED_NegVal(GREENLED_DeviceData); // Wait counter reset TU1_ResetCounter(TU1_DeviceData); // wait 500 ticks (aaprox 0.5s) while (TU1_GetCounterValue(TU1_DeviceData) < 500) { }; } }
static void REF_MeasureRaw(SensorTimeType raw[NOF_SENSORS]) { uint8_t cnt; /* number of sensor */ uint8_t i; TMOUT1_CounterHandle timeout; FRTOS1_xSemaphoreTake(mutexHandle, portMAX_DELAY); if (ledON) { LED_IR_On(); /* IR LED's on */ WAIT1_Waitus(200); } for(i=0;i<NOF_SENSORS;i++) { SensorFctArray[i].SetOutput(); /* turn I/O line as output */ SensorFctArray[i].SetVal(); /* put high */ raw[i] = MAX_SENSOR_VALUE; } WAIT1_Waitus(20); /* give at least 10 us to charge the capacitor */ timeout = TMOUT1_GetCounter(20/TMOUT1_TICK_PERIOD_MS); /* set up timeout counter */ FRTOS1_vTaskSuspendAll(); (void)TU1_ResetCounter(timerHandle); /* reset timer counter */ for(i=0;i<NOF_SENSORS;i++) { SensorFctArray[i].SetInput(); /* turn I/O line as input */ } do { cnt = 0; if (TMOUT1_CounterExpired(timeout)) { break; /* get out of wile loop */ } for(i=0;i<NOF_SENSORS;i++) { if (raw[i]==MAX_SENSOR_VALUE) { /* not measured yet? */ if (SensorFctArray[i].GetVal()==0) { raw[i] = TU1_GetCounterValue(timerHandle); } } else { /* have value */ cnt++; } } } while(cnt!=NOF_SENSORS); TMOUT1_LeaveCounter(timeout); FRTOS1_xTaskResumeAll(); if (ledON) { LED_IR_Off(); /* IR LED's off */ WAIT1_Waitus(200); } FRTOS1_xSemaphoreGive(mutexHandle); }
/* ===================================================================*/ FC1_TValueType FC1_GetCounterValue(LDD_TDeviceData *DeviceDataPtr) { FC1_TDeviceData *DeviceDataPrv = (FC1_TDeviceData *)DeviceDataPtr; return TU1_GetCounterValue(DeviceDataPrv->LinkedDeviceDataPtr); }