예제 #1
0
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) {
		};

	}
}
예제 #2
0
  void US_EventEchoCapture(LDD_TUserData *UserDataPtr){
    US_DeviceType *ptr = (US_DeviceType*)UserDataPtr;
    if (ptr->state==ECHO_TRIGGERED) { /* 1st edge, this is the raising edge, start measurement */
    	//LED_SetVal();
    	TU1_ResetCounter(ptr->echoDevice);
      ptr->state = ECHO_MEASURE;
    } else if (ptr->state==ECHO_MEASURE) { /* 2nd edge, this is the falling edge: use measurement */
      (void)TU1_GetCaptureValue(ptr->echoDevice, 0, &ptr->capture);
      ptr->state = ECHO_FINISHED;
    }

  }
예제 #3
0
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);
}
예제 #4
0
/* ===================================================================*/
LDD_TError FC1_ResetCounter(LDD_TUserData *DeviceDataPtr)
{
  FC1_TDeviceData *DeviceDataPrv = (FC1_TDeviceData *)DeviceDataPtr;

  return TU1_ResetCounter(DeviceDataPrv->LinkedDeviceDataPtr); /* Reset counter register */
}