aboutsummaryrefslogtreecommitdiffstats
path: root/Software/Embedded_SW/Embedded/Modules/Control/MillisecTask.c
diff options
context:
space:
mode:
authorShlomo Hecht <shlomo@twine-s.com>2019-05-05 10:31:06 +0300
committerShlomo Hecht <shlomo@twine-s.com>2019-05-05 10:31:06 +0300
commit79bd7bb6a22f1da1a77fcc3f527a0955028f2447 (patch)
tree3e1c30dbbf7b6ccf70aa5631ad2f42ee356b4e25 /Software/Embedded_SW/Embedded/Modules/Control/MillisecTask.c
parent4129b6caa72f8bafeeefe1a4a88a0d5e1568e245 (diff)
parent661c55343a468a9c150e8d163711567f89a02889 (diff)
downloadTango-79bd7bb6a22f1da1a77fcc3f527a0955028f2447.tar.gz
Tango-79bd7bb6a22f1da1a77fcc3f527a0955028f2447.zip
merge tpf
Diffstat (limited to 'Software/Embedded_SW/Embedded/Modules/Control/MillisecTask.c')
-rw-r--r--Software/Embedded_SW/Embedded/Modules/Control/MillisecTask.c61
1 files changed, 57 insertions, 4 deletions
diff --git a/Software/Embedded_SW/Embedded/Modules/Control/MillisecTask.c b/Software/Embedded_SW/Embedded/Modules/Control/MillisecTask.c
index 8e4a36e62..916d33772 100644
--- a/Software/Embedded_SW/Embedded/Modules/Control/MillisecTask.c
+++ b/Software/Embedded_SW/Embedded/Modules/Control/MillisecTask.c
@@ -48,6 +48,7 @@
#include "Common/SWUpdate/FileSystem.h"
#include "Communication/Connection.h"
+#include "Modules/General/buttons.h"
Task_Handle Millisecond_Task_Handle;
/******************** Definitions ********************************************/
@@ -85,7 +86,7 @@ uint32_t Dancer_Data[NUM_OF_DANCERS] = {0};
float Speed_Data = 0;
uint32_t DrawerFansStatus = 0;
uint32_t SystemFansStatus = 0;
-
+uint8_t Gas_PPM = 0;
bool watchdogCriticalAlarm = false;
@@ -445,6 +446,37 @@ uint32_t MillisecLoop(uint32_t tick)
#endif
return OK;
}
+int TemperatureSum[MAX_TEMPERATURE_SENSOR_ID];
+int TemperatureMin[MAX_TEMPERATURE_SENSOR_ID];
+int TemperatureMax[MAX_TEMPERATURE_SENSOR_ID];
+int TemperatureCount[MAX_TEMPERATURE_SENSOR_ID];
+int TemperatureCalc[MAX_TEMPERATURE_SENSOR_ID];
+void MillisecUpdateTemperatures (TEMPERATURE_SENSOR_ID_ENUM SensorId,int temperature)
+{
+ //if(TemperatureCount[SensorId]++>=10)
+ // TemperatureCount[SensorId] = 0;
+ TemperatureCount[SensorId]++;
+ if (TemperatureMax[SensorId]<temperature) TemperatureMax[SensorId]=temperature;
+ if (TemperatureMin[SensorId]>temperature) TemperatureMin[SensorId]=temperature;
+ TemperatureSum[SensorId]+=temperature;
+}
+int MillisecCalculateTemperatures (TEMPERATURE_SENSOR_ID_ENUM SensorId)
+{
+ int calc = 0;
+ TemperatureSum[SensorId]-=TemperatureMax[SensorId];
+ TemperatureSum[SensorId]-=TemperatureMin[SensorId];
+ calc = TemperatureSum[SensorId] / (TemperatureCount[SensorId]-2);
+
+ TemperatureSum[SensorId] = 0;
+ TemperatureCount[SensorId] = 0;
+ TemperatureMin[SensorId] = 30000;
+ TemperatureMax[SensorId] = -30000;
+ return calc;
+}
+int MillisecGetTemperatures (TEMPERATURE_SENSOR_ID_ENUM SensorId)
+{
+ return TemperatureCalc[SensorId];
+}
uint32_t MillisecLowLoop(uint32_t tick)
{
uint8_t Motor_i,Disp_i,Heater_i,temp;
@@ -454,9 +486,10 @@ uint32_t MillisecLowLoop(uint32_t tick)
//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, Onesecond_Tick,O900Millisecond_Tick,OneMinute_Tick;
+ bool Ten_msTick, Hundred_msTick , m90msecTick, Onesecond_Tick,O900Millisecond_Tick,OneMinute_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;
Onesecond_Tick = (tick%eOneSecond == 0) ?true:false;
OneMinute_Tick = (tick%eOneMinute == 0) ?true:false;
@@ -471,18 +504,28 @@ uint32_t MillisecLowLoop(uint32_t tick)
if(Machine_Idle_Mode == true)
Machine_Idle_Breathing_Led();
}
+ if (m90msecTick)
+ {
+ for (Sensor_i = 0;Sensor_i < MAX_TEMPERATURE_SENSOR_ID;Sensor_i++)
+ {
+ MillisecReadFromTempSensor(Sensor_i, NULL);
+ }
+ }
if (Hundred_msTick)
{
Speed_Data = Calculate_Speed_Sensor_Velocity();
+ Read_Buttons_Reg();
+ Ink_Cart_Led();
for (Sensor_i = 0;Sensor_i < MAX_TEMPERATURE_SENSOR_ID;Sensor_i++)
{
- MillisecReadFromTempSensor(Sensor_i, NULL);
+ MillisecUpdateTemperatures (Sensor_i,TemperatureSensorRead(Sensor_i));
}
if (GeneralHwReady == true)
{
if (watchdogCriticalAlarm == false)
{
Control_WD(ENABLE,5); //activate heaters/dispenser watchdog, 0.5 seconds
+ //LOG_ERROR (1111, "Control_WD");
}
}
}
@@ -510,10 +553,15 @@ uint32_t MillisecLowLoop(uint32_t tick)
if (isMotorConfigured(Motor_i))
MotorGetStatusFromFPGA(Motor_i);
}
- for (Heater_i = 0;Heater_i < NUM_OF_HEATERS;Heater_i++)
+ for (Heater_i = 0;Heater_i < NUM_OF_CURRENT_HEATERS;Heater_i++)
{
Read_Heaters_Current(Heater_i);
}
+ Gas_PPM = Calculate_Gas_Power_Consumption();
+ for (Sensor_i = 0;Sensor_i < MAX_TEMPERATURE_SENSOR_ID;Sensor_i++)
+ {
+ TemperatureCalc[Sensor_i] = MillisecCalculateTemperatures ( Sensor_i);
+ }
}
if (OneMinute_Tick)
{
@@ -621,6 +669,11 @@ uint32_t getDrawerFansStatus(void)
{
return DrawerFansStatus;
}
+uint8_t getGasReading(void)
+{
+ return Gas_PPM;
+}
+
uint32_t getSystemFansStatus(void)
{
return SystemFansStatus;