aboutsummaryrefslogtreecommitdiffstats
path: root/Software/Embedded_SW/Embedded/Modules/Control/MillisecTask.c
diff options
context:
space:
mode:
Diffstat (limited to 'Software/Embedded_SW/Embedded/Modules/Control/MillisecTask.c')
-rw-r--r--Software/Embedded_SW/Embedded/Modules/Control/MillisecTask.c112
1 files changed, 89 insertions, 23 deletions
diff --git a/Software/Embedded_SW/Embedded/Modules/Control/MillisecTask.c b/Software/Embedded_SW/Embedded/Modules/Control/MillisecTask.c
index 2f4a1e2d2..48a28ffe4 100644
--- a/Software/Embedded_SW/Embedded/Modules/Control/MillisecTask.c
+++ b/Software/Embedded_SW/Embedded/Modules/Control/MillisecTask.c
@@ -50,7 +50,6 @@
#include "drivers/Flash_Memory/fatfs/ff.h"
#include "drivers/Flash_ram/FlashProgram.h"
-#include "third_party/fatfs/src/ffconf.h"
#include "Common/SWUpdate/FileSystem.h"
#include "Communication/Connection.h"
@@ -521,9 +520,45 @@ int MillisecCalculateTemperatures (TEMPERATURE_SENSOR_ID_ENUM SensorId)
}
int MillisecGetTemperatures (TEMPERATURE_SENSOR_ID_ENUM SensorId)
{
+ if (SensorId > WHS_PT100_4_0X82_1)
+ return 0;
return TemperatureCalc[SensorId];
}
bool RapidPressureRead = false;
+float PressureSum[MAX_SYSTEM_DISPENSERS];
+float PressureMin[MAX_SYSTEM_DISPENSERS];
+float PressureMax[MAX_SYSTEM_DISPENSERS];
+float PressureCount[MAX_SYSTEM_DISPENSERS];
+float PressureCalc[MAX_SYSTEM_DISPENSERS];
+void MillisecUpdatePressures (int SensorId,float Pressure)
+{
+ //if(PressureCount[SensorId]++>=10)
+ // PressureCount[SensorId] = 0;
+ PressureCount[SensorId]++;
+ if (PressureMax[SensorId]<Pressure) PressureMax[SensorId]=Pressure;
+ if (PressureMin[SensorId]>Pressure) PressureMin[SensorId]=Pressure;
+ PressureSum[SensorId]+=Pressure;
+}
+float MillisecCalculatePressures (int SensorId)
+{
+ float calc = 0;
+ PressureSum[SensorId]-=PressureMax[SensorId];
+ PressureSum[SensorId]-=PressureMin[SensorId];
+ calc = PressureSum[SensorId] / (PressureCount[SensorId]-2);
+
+ PressureSum[SensorId] = 0;
+ PressureCount[SensorId] = 0;
+ PressureMin[SensorId] = 30000;
+ PressureMax[SensorId] = -30000;
+ return calc;
+}
+float MillisecGetPressures (int SensorId)
+{
+ if (SensorId > MAX_SYSTEM_DISPENSERS)
+ return 0;
+ return PressureCalc[SensorId];
+}
+
void setRapidPressureRead(bool value)
{
RapidPressureRead = value;
@@ -532,18 +567,26 @@ void setRapidPressureRead(bool value)
uint16_t PumpCounter = 0;
uint32_t MillisecLowLoop(uint32_t tick)
{
- uint8_t Motor_i,Disp_i,Heater_i,temp;
+ uint8_t Motor_i,Disp_i,temp;
TEMPERATURE_SENSOR_ID_ENUM Sensor_i;
//static int temp=0;
//call all modules Millisec functions
//test dancers and speed encoders
//check all callback units (state machine waiting for completion of a change)
- bool Ten_msTick, Hundred_msTick , m90msecTick, Onesecond_Tick,O900Millisecond_Tick,OneMinute_Tick,OneHourTick;
+ bool Ten_msTick, Hundred_msTick , m90msecTick, Onesecond_Tick,OneMinute_Tick,OneHourTick;
+ bool O100Millisecond_Tick,O200Millisecond_Tick,O400Millisecond_Tick,O500Millisecond_Tick,O600Millisecond_Tick;
+ //bool O100Millisecond_Tick,O200Millisecond_Tick,O400Millisecond_Tick,O500Millisecond_Tick,O600Millisecond_Tick,O800Millisecond_Tick,O900Millisecond_Tick;
Ten_msTick = (tick%eTenMillisecond == 0) ?true:false;
Hundred_msTick = (tick%eHundredMillisecond == 0) ?true:false;
m90msecTick = (tick%eHundredMillisecond == 90) ?true:false;
- O900Millisecond_Tick = (tick%eOneSecond == 900) ?true:false;
+ O100Millisecond_Tick = (tick%eOneSecond == 100) ?true:false;
+ O200Millisecond_Tick = (tick%eOneSecond == 200) ?true:false;
+ O400Millisecond_Tick = (tick%eOneSecond == 400) ?true:false;
+ O500Millisecond_Tick = (tick%eOneSecond == 500) ?true:false;
+ O600Millisecond_Tick = (tick%eOneSecond == 600) ?true:false;
+ //O800Millisecond_Tick = (tick%eOneSecond == 800) ?true:false;
+ //O900Millisecond_Tick = (tick%eOneSecond == 900) ?true:false;
Onesecond_Tick = (tick%eOneSecond == 0) ?true:false;
OneMinute_Tick = (tick%eOneMinute == 0) ?true:false;
OneHourTick = (tick%eOneHour == 0) ?true:false;
@@ -562,7 +605,11 @@ uint32_t MillisecLowLoop(uint32_t tick)
}
if (m90msecTick)
{
+#ifdef Use_Head_Card
+ for (Sensor_i = TEMP_SENSE_ANALOG_DRYER_TEMP1;Sensor_i < MAX_MAIN_CARD_TEMP_SENS_ID;Sensor_i++)
+#else
for (Sensor_i = 0;Sensor_i < MAX_MAIN_CARD_TEMP_SENS_ID;Sensor_i++)
+#endif
{
MillisecReadFromTempSensor(Sensor_i, NULL);
}
@@ -572,7 +619,11 @@ uint32_t MillisecLowLoop(uint32_t tick)
Speed_Data = Calculate_Speed_Sensor_Velocity();
Read_Buttons_Reg();
//Ink_Cart_Led();
+#ifdef Use_Head_Card
+ for (Sensor_i = TEMP_SENSE_ANALOG_DRYER_TEMP1;Sensor_i < MAX_MAIN_CARD_TEMP_SENS_ID;Sensor_i++)
+#else
for (Sensor_i = 0;Sensor_i < MAX_MAIN_CARD_TEMP_SENS_ID;Sensor_i++)
+#endif
{
MillisecUpdateTemperatures (Sensor_i,TemperatureSensorRead(Sensor_i));
}
@@ -588,33 +639,26 @@ uint32_t MillisecLowLoop(uint32_t tick)
{
for (Disp_i = 0;Disp_i < MAX_SYSTEM_DISPENSERS;Disp_i++)
{
- CalculateDispenserPressure(Disp_i);
+ MillisecUpdatePressures(Disp_i, CalculateDispenserPressure(Disp_i));
}
ADC_TriggerCollection();
}
DispensersCollectionCall();
}
-
- if ((O900Millisecond_Tick)&&(RapidPressureRead == false))
+ if (O100Millisecond_Tick)
{
- ADC_TriggerCollection();
+ Trigger_Heater_Current_Read();
}
- if (Onesecond_Tick)
+ if (O200Millisecond_Tick)
{
- if (RapidPressureRead == false)
- {
- for (Disp_i = 0;Disp_i < MAX_SYSTEM_DISPENSERS;Disp_i++)
- {
- CalculateDispenserPressure(Disp_i);
- }
- }
FPGA_GetAllDispensersValveBusyOCD();
temp = Read_Fans_Tacho();
DrawerFansStatus = temp & 0x1F;
SystemFansStatus = temp & 0xE0;
- MachineUpdateResponseFunc();
- //KeepAliveOneSecondCall();
+ }
+ if (O400Millisecond_Tick)
+ {
for (Motor_i = 0;Motor_i < NUM_OF_MOTORS;Motor_i++)
{
if (Motor_i == HARDWARE_MOTOR_TYPE__MOTO_SCREW)
@@ -622,18 +666,40 @@ uint32_t MillisecLowLoop(uint32_t tick)
if (isMotorConfigured(Motor_i))
MotorGetStatusFromFPGA(Motor_i);
}
- if (!(OneMinute_Tick))
+ }
+ if ((O500Millisecond_Tick)&&(RapidPressureRead == false))
+ {
+ ADC_TriggerCollection();
+ }
+ if (O600Millisecond_Tick)
+ {
+ if (RapidPressureRead == false)
{
- Trigger_Heater_Current_Read();
- /*for (Heater_i = 0;Heater_i < NUM_OF_CURRENT_HEATERS;Heater_i++)
+ for (Disp_i = 0;Disp_i < MAX_SYSTEM_DISPENSERS;Disp_i++)
{
- Read_Heaters_Current(Heater_i);
- }*/
+ CalculateDispenserPressure(Disp_i);
+ }
}
+ }
+ if (Onesecond_Tick)
+ {
+ MachineUpdateResponseFunc();
+ //KeepAliveOneSecondCall();
+#ifdef Use_Head_Card
+ for (Sensor_i = TEMP_SENSE_ANALOG_DRYER_TEMP1;Sensor_i < MAX_MAIN_CARD_TEMP_SENS_ID;Sensor_i++)
+#else
for (Sensor_i = 0;Sensor_i < MAX_MAIN_CARD_TEMP_SENS_ID;Sensor_i++)
+#endif
{
TemperatureCalc[Sensor_i] = MillisecCalculateTemperatures ( Sensor_i);
}
+ if (RapidPressureRead == true)
+ {
+ for (Disp_i = 0;Disp_i < MAX_SYSTEM_DISPENSERS;Disp_i++)
+ {
+ PressureCalc[Disp_i] = MillisecCalculatePressures(Disp_i);
+ }
+ }
}
if (OneMinute_Tick)
{