diff options
| author | Mirta <mirta@twine-s.com> | 2018-05-27 14:29:20 +0300 |
|---|---|---|
| committer | Mirta <mirta@twine-s.com> | 2018-05-27 14:29:20 +0300 |
| commit | 2b35d18dc0631da5613073923a7a078cb2da5534 (patch) | |
| tree | 3d80a7113cc7f45ecccea7a7228c26d0a2d098db /Software/Embedded_SW/Embedded/Modules/Control | |
| parent | aae61aa72d939bee03ea6fd8896bef71e9c09b61 (diff) | |
| parent | 2a3653d4eb3dce191dff82689cbd89aa27e10234 (diff) | |
| download | Tango-2b35d18dc0631da5613073923a7a078cb2da5534.tar.gz Tango-2b35d18dc0631da5613073923a7a078cb2da5534.zip | |
Merge branch 'master' of https://twinetfs.visualstudio.com/Tango/_git/Tango
Diffstat (limited to 'Software/Embedded_SW/Embedded/Modules/Control')
| -rw-r--r-- | Software/Embedded_SW/Embedded/Modules/Control/MillisecTask.c | 81 | ||||
| -rw-r--r-- | Software/Embedded_SW/Embedded/Modules/Control/MillisecTask.h | 3 |
2 files changed, 40 insertions, 44 deletions
diff --git a/Software/Embedded_SW/Embedded/Modules/Control/MillisecTask.c b/Software/Embedded_SW/Embedded/Modules/Control/MillisecTask.c index cae09cfd8..ec909136a 100644 --- a/Software/Embedded_SW/Embedded/Modules/Control/MillisecTask.c +++ b/Software/Embedded_SW/Embedded/Modules/Control/MillisecTask.c @@ -159,23 +159,13 @@ void OneMilliSecondMillisecInterrupt(UArg arg0) ROM_IntMasterEnable(); return ; } -int32_t MillisecWriteToTempSensor(uint32_t TempSensorId, unsigned long Data, int Length, MSecFptr Callback) +uint32_t PT100Activity = 0; +int32_t MillisecReadFromTempSensor(uint32_t TempSensorId, MSecFptr Callback) { if (TempSensorId >= MAX_TEMPERATURE_SENSOR_ID) return -1; + PT100Activity++; //read request + PT100Activity++; //get response PT100Data[TempSensorId].Callback = Callback; - PT100Data[TempSensorId].Data = Data; - PT100Data[TempSensorId].Length = Length; - PT100Data[TempSensorId].DataRequired = false; - PT100Data[TempSensorId].Active = true; - - return OK; -} -int32_t MillisecReadFromTempSensor(uint32_t TempSensorId, unsigned long Data, int Length, MSecFptr Callback) -{ - if (TempSensorId >= MAX_TEMPERATURE_SENSOR_ID) return -1; - PT100Data[TempSensorId].Callback = Callback; - PT100Data[TempSensorId].Data = Data; - PT100Data[TempSensorId].Length = Length; PT100Data[TempSensorId].DataRequired = true; PT100Data[TempSensorId].Active = true; @@ -291,39 +281,46 @@ uint32_t MillisecLoop(uint32_t tick) } } //FPGA_GetTempSensorBusy(); - for (Sensor_i = TEMP_SENSE_ANALOG_MIXCHIP_TEMP;Sensor_i < MAX_TEMPERATURE_SENSOR_ID;Sensor_i++) - { - //if (TempDriverDriverResponse[Sensor_i].Busy == true) - // continue; - if (PT100Data[Sensor_i].WaitForData == true) //Read request sent, data is waiting - { - if (SPIGetFPGAResponse(Sensor_i,&MotorInfo) == OK) //got the data from the FPGA - { - PT100Data[Sensor_i].WaitForData = false; - if (PT100Data[Sensor_i].Callback) - PT100Data[Sensor_i].Callback(Sensor_i,MotorInfo); - } - } - if (PT100Data[Sensor_i].Active == true) - { - SPISendFPGARequest(Sensor_i,PT100Data[Sensor_i].Data,PT100Data[Sensor_i].Length); - PT100Data[Sensor_i].Active = false; - if (PT100Data[Sensor_i].DataRequired == true) - { - PT100Data[Sensor_i].WaitForData = true; // mark the motor for data request next round - } - else - { - if (PT100Data[Sensor_i].Callback) - PT100Data[Sensor_i].Callback(Sensor_i,0); // call the callback to report execution - } - } - } + if (PT100Activity) + { + for (Sensor_i = 0;Sensor_i < MAX_TEMPERATURE_SENSOR_ID;Sensor_i++) + { + //if (TempDriverDriverResponse[Sensor_i].Busy == true) + // continue; + if (PT100Data[Sensor_i].WaitForData == true) //Read request sent, data is waiting + { + if (TemperatureSensorReadFromFPGA_Res(Sensor_i) == OK) //got the data from the FPGA + { + PT100Data[Sensor_i].WaitForData = false; + if (PT100Data[Sensor_i].Callback) + PT100Data[Sensor_i].Callback(Sensor_i,MotorInfo); + } + PT100Activity--; + } + if (PT100Data[Sensor_i].Active == true) + { + TemperatureSensorReadFromFPGA(Sensor_i); + PT100Data[Sensor_i].Active = false; + if (PT100Data[Sensor_i].DataRequired == true) + { + PT100Data[Sensor_i].WaitForData = true; // mark the motor for data request next round + } + else + { + if (PT100Data[Sensor_i].Callback) + PT100Data[Sensor_i].Callback(Sensor_i,0); // call the callback to report execution + } + PT100Activity--; + } + } + } Dancer_Data[FEEDER_DANCER] = Read_Dancer_Position(FEEDER_DANCER); Dancer_Data[POOLER_DANCER] = Read_Dancer_Position(POOLER_DANCER); Dancer_Data[WINDER_DANCER] = Read_Dancer_Position(WINDER_DANCER); if (Hundred_msTick) { + for (Sensor_i = 0;Sensor_i < MAX_TEMPERATURE_SENSOR_ID;Sensor_i++) + MillisecReadFromTempSensor(Sensor_i, NULL); } if (Onesecond_Tick) diff --git a/Software/Embedded_SW/Embedded/Modules/Control/MillisecTask.h b/Software/Embedded_SW/Embedded/Modules/Control/MillisecTask.h index 6949a4abe..cf49e697a 100644 --- a/Software/Embedded_SW/Embedded/Modules/Control/MillisecTask.h +++ b/Software/Embedded_SW/Embedded/Modules/Control/MillisecTask.h @@ -18,8 +18,7 @@ int32_t MillisecWriteToMotor(TimerMotors_t MotorId, unsigned long Data, int Leng int32_t MillisecSetMotorSpeed(TimerMotors_t MotorId, unsigned long Data, int Length, MSecFptr Callback); int32_t MillisecReadFromMotor(TimerMotors_t MotorId, unsigned long Data, int Length, MSecFptr Callback); -int32_t MillisecWriteToTempSensor(uint32_t TempSensorId, unsigned long Data, int Length, MSecFptr Callback); -int32_t MillisecReadFromTempSensor(uint32_t TempSensorId, unsigned long Data, int Length, MSecFptr Callback); +int32_t MillisecReadFromTempSensor(uint32_t TempSensorId, MSecFptr Callback); uint32_t getMotorStatusData(int MotorId); uint32_t getMotorSpeedData(int MotorId); |
