aboutsummaryrefslogtreecommitdiffstats
path: root/Software/Embedded_SW/Embedded/Modules/Control
diff options
context:
space:
mode:
authorMirta <mirta@twine-s.com>2018-05-27 14:29:20 +0300
committerMirta <mirta@twine-s.com>2018-05-27 14:29:20 +0300
commit2b35d18dc0631da5613073923a7a078cb2da5534 (patch)
tree3d80a7113cc7f45ecccea7a7228c26d0a2d098db /Software/Embedded_SW/Embedded/Modules/Control
parentaae61aa72d939bee03ea6fd8896bef71e9c09b61 (diff)
parent2a3653d4eb3dce191dff82689cbd89aa27e10234 (diff)
downloadTango-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.c81
-rw-r--r--Software/Embedded_SW/Embedded/Modules/Control/MillisecTask.h3
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);