void makeTimer(uint32_t period, SYSTM001_TimerType TimerType, SYSTM001_TimerCallBackPtr TimerCallBack, void *pCallBackArgPtr, uint32_t *status, handle_t *timerID) { *timerID = SYSTM001_CreateTimer(period,TimerType,TimerCallBack,NULL); if(*timerID != 0) { *status = SYSTM001_StartTimer(*timerID); } }
void wait(unsigned int ms) { handle_t handle; handle = SYSTM001_CreateTimer(ms, SYSTM001_ONE_SHOT, DelayHandler, NULL); delayExpired = FALSE; if(handle) (void) SYSTM001_StartTimer(handle); while(!delayExpired); (void) SYSTM001_DeleteTimer(handle); }
void manageConnection(void) { if(getStatusMainTimer()) { removeMainTimer(); setStatusMainTimer(FALSE); stageOfConnection = 1; } if(1 == stageOfConnection) { TimerIdRxMessage = SYSTM001_CreateTimer(200,SYSTM001_PERIODIC,RxTimerHandler,NULL); SYSTM001_StartTimer(TimerIdRxMessage); stageOfConnection = 0; } }
void timerHandler(void *T) { char *command1 = commandsInitBt[stageOfInitializationBt]; volatile int length = strlen(command1); send(command1, length); while((UART001_GetFlagStatus(&UART001_Handle0,UART001_TRANSFER_STATUS_BUSY_FLAG )==UART001_SET)) { int h = 0; } l++; //potem trzeba poprosic od przes³anie odpowiedzi przez RTS askAboutSending(); TimerIdReceive = SYSTM001_CreateTimer(200,SYSTM001_ONE_SHOT,timerReceiveHandler,NULL); if(TimerIdReceive != 0) { StatusReceive = SYSTM001_StartTimer(TimerIdReceive); } }
void timerHandlerInitBluetooth(void *T) { static uint8_t whichCommand = 0; commandsAndAnswers *temp = (commandsAndAnswers*)T; if(removeInitTimerRx == TRUE) { SYSTM001_DeleteTimer(HandlTimerReceiveAnsID); HandlTimerReceiveAnsID = 0; removeInitTimerRx = FALSE; whichCommand = stageOfInit; } if(TRUE == initStatus) { removeMainTimerStatus = TRUE; } if(FALSE == initStatus && canSend == TRUE) { //whichCommand = stageOfInit; volatile int length = strlen(temp->commandsBluetooth[whichCommand]); send(temp->commandsBluetooth[whichCommand], length); while((UART001_GetFlagStatus(&UART001_Handle0,UART001_TRANSFER_STATUS_BUSY_FLAG )==UART001_SET)) { int h = 0; } canSend = FALSE; askAboutSending(); HandlTimerReceiveAnsID = SYSTM001_CreateTimer(300,SYSTM001_ONE_SHOT,timerHandlerInitBluetoothReceive,NULL); SYSTM001_StartTimer(HandlTimerReceiveAnsID); } }
void startMeasurements1(void) { TimerIdReadMeasurements=SYSTM001_CreateTimer(READING_DELAY,SYSTM001_PERIODIC,timerHandlerReceiveOneMeasurementEachSensor1,&adrAndData); SYSTM001_StartTimer(TimerIdReadMeasurements); }
float readHumidity(void) { if(canH) { canH = 0; I2C001_DataType data1; data1.Data1.TDF_Type = I2C_TDF_MStart; data1.Data1.Data = ((HTDU21D_ADDRESS << 1) | I2C_WRITE); I2C001_WriteData(&I2C001_Handle1,&data1); delay11(DELAY); I2C001_DataType data2; data2.Data1.TDF_Type = I2C_TDF_MTxData; data2.Data1.Data = TRIGGER_HUMD_MEASURE_NOHOLD; I2C001_WriteData(&I2C001_Handle1,&data2); delay11(DELAY); if(timerHumidOn == 0) { TimerRdHumid = SYSTM001_CreateTimer(55, SYSTM001_PERIODIC, readHumidTimerHandler, NULL); SYSTM001_StartTimer(TimerRdHumid); timerHumidOn = 1; } while(TRUE) { if(errorCounter > 3) { errorCounter = 0; SYSTM001_StopTimer(TimerRdHumid); SYSTM001_DeleteTimer(TimerRdHumid); TimerRdHumid = 0; timerHumidOn = 0; canH = 1; return 998; } else if(1 == wrong_checksum) { wrong_checksum = 0; SYSTM001_StopTimer(TimerRdHumid); SYSTM001_DeleteTimer(TimerRdHumid); TimerRdHumid = 0; timerHumidOn = 0; canH = 1; return 999; } else if(1 == readHumid) { readHumid = 0; SYSTM001_StopTimer(TimerRdHumid); SYSTM001_DeleteTimer(TimerRdHumid); TimerRdHumid = 0; timerHumidOn = 0; canH = 1; break; } } } return rh; }
int main(void) { // status_t status; // Declaration of return variable for DAVE3 APIs (toggle comment if required) DAVE_Init(); // Initialization of DAVE Apps int counter = 0; handle_t TimerId; uint32_t Status = SYSTM001_ERROR; addressAndData adrAndData; adrAndData.adr.addressDevice[0] = 0x6B; adrAndData.adr.addressDevice[1] = 0x1E; adrAndData.adr.subAddress[0] = OUT_X_L_XL; //subaddres for accel adrAndData.adr.subAddress[1] = OUT_X_L_G; //sub address for gyroscope adrAndData.adr.subAddress[2] = OUT_X_L_M; initLSM9DS1(); calibrate(TRUE); //readAccel1(); //makeTimer(100, SYSTM001_PERIODIC, timerHandlerReadByte1, &a, &Status, &TimerId); TimerId=SYSTM001_CreateTimer(2,SYSTM001_PERIODIC,timerHandlerReadByte1,&adrAndData); SYSTM001_StartTimer(TimerId); while(1) { if(!readingAllowed) { int16_t accelX = (adrAndData.dane[1] << 8) | adrAndData.dane[0]; // Store x-axis values into gx int16_t accelY = (adrAndData.dane[3] << 8) | adrAndData.dane[2]; // Store y-axis values into gy int16_t accelZ = (adrAndData.dane[5] << 8) | adrAndData.dane[4]; // Store z-axis values into gz if (_autoCalc) //kalibracja { accelX -= aBiasRaw[X_AXIS]; accelX -= aBiasRaw[Y_AXIS]; accelX -= aBiasRaw[Z_AXIS]; } accelX = calcAccel(accelX); accelY = calcAccel(accelY); accelZ = calcAccel(accelZ); pomiary[counter].ax = accelX; pomiary[counter].ay = accelY; pomiary[counter].az = accelZ; int16_t gyroX = (adrAndData.dane[7] << 1) | adrAndData.dane[6]; int16_t gyroY = (adrAndData.dane[9] << 1) | adrAndData.dane[8]; int16_t gyroZ = (adrAndData.dane[11] << 1) | adrAndData.dane[10]; if (_autoCalc) //kalibracja { gyroX -= gBiasRaw[X_AXIS]; gyroY -= gBiasRaw[Y_AXIS]; gyroZ -= gBiasRaw[Z_AXIS]; } gyroX = calcGyro(gyroX); gyroY = calcGyro(gyroY); gyroZ = calcGyro(gyroZ); pomiary1[counter].ax = gyroX; pomiary1[counter].ay = gyroY; pomiary1[counter].az = gyroZ; counter++; readingAllowed = TRUE; } if(counter >= 100) { counter = 0; } } return 0; }
void createReceiveTimer(void) { TimerIdRxMessage = SYSTM001_CreateTimer(200,SYSTM001_PERIODIC,RxTimerHandler,NULL); SYSTM001_StartTimer(TimerIdRxMessage); }
void createMainTimer(void) { mainInitTimerID = SYSTM001_CreateTimer(1000,SYSTM001_PERIODIC,timerHandlerInitBluetooth,&initCommandsAnswer); mainInitTimerStatus = SYSTM001_StartTimer(mainInitTimerID); }