From 7256fe1c07cf5ecbe485c3cdac238b88dfc2cd1d Mon Sep 17 00:00:00 2001 From: Avi Levkovich Date: Thu, 7 Mar 2019 17:08:42 +0200 Subject: Add system fans + read the tacho of the new small drawer fans --- Software/Embedded_SW/Embedded/Modules/Control/MillisecTask.c | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) (limited to 'Software/Embedded_SW/Embedded/Modules/Control/MillisecTask.c') diff --git a/Software/Embedded_SW/Embedded/Modules/Control/MillisecTask.c b/Software/Embedded_SW/Embedded/Modules/Control/MillisecTask.c index db6624fd4..8e4a36e62 100644 --- a/Software/Embedded_SW/Embedded/Modules/Control/MillisecTask.c +++ b/Software/Embedded_SW/Embedded/Modules/Control/MillisecTask.c @@ -84,6 +84,8 @@ typedef struct MillisecMessage{ uint32_t Dancer_Data[NUM_OF_DANCERS] = {0}; float Speed_Data = 0; uint32_t DrawerFansStatus = 0; +uint32_t SystemFansStatus = 0; + bool watchdogCriticalAlarm = false; @@ -445,7 +447,7 @@ uint32_t MillisecLoop(uint32_t tick) } uint32_t MillisecLowLoop(uint32_t tick) { - uint8_t Motor_i,Disp_i,Heater_i; + uint8_t Motor_i,Disp_i,Heater_i,temp; TEMPERATURE_SENSOR_ID_ENUM Sensor_i; //static int temp=0; @@ -497,7 +499,9 @@ uint32_t MillisecLowLoop(uint32_t tick) //Read_MidTank_Pressure_Sensor(Disp_i); } FPGA_GetAllDispensersValveBusyOCD(); - DrawerFansStatus = Read_Fans_Tacho(); + temp = Read_Fans_Tacho(); + DrawerFansStatus = temp & 0x1F; + SystemFansStatus = temp & 0xE0; KeepAliveOneSecondCall(); for (Motor_i = 0;Motor_i < NUM_OF_MOTORS;Motor_i++) { @@ -617,6 +621,10 @@ uint32_t getDrawerFansStatus(void) { return DrawerFansStatus; } +uint32_t getSystemFansStatus(void) +{ + return SystemFansStatus; +} #ifdef HUNDRED_MICROSECONDS_DANCER_READ uint32_t DancerData[NUM_OF_DANCERS]; uint32_t Control_Read_Dancer_Position(HardwareDancerType DancerId, uint32_t Parameter1, uint32_t Parameter2) -- cgit v1.3.1 From db525669f8bcc4e1f911274dc53b6bf646eedff6 Mon Sep 17 00:00:00 2001 From: Shlomo Hecht Date: Sun, 10 Mar 2019 12:13:12 +0200 Subject: suspend FAN checking pending tests. initial fix for dispensers storage --- .../Embedded_SW/Embedded/Modules/Control/MillisecTask.c | 4 ++-- Software/Embedded_SW/Embedded/Modules/IDS/IDS_dispenser.c | 13 ++++++++++++- 2 files changed, 14 insertions(+), 3 deletions(-) (limited to 'Software/Embedded_SW/Embedded/Modules/Control/MillisecTask.c') diff --git a/Software/Embedded_SW/Embedded/Modules/Control/MillisecTask.c b/Software/Embedded_SW/Embedded/Modules/Control/MillisecTask.c index 8e4a36e62..5fe242436 100644 --- a/Software/Embedded_SW/Embedded/Modules/Control/MillisecTask.c +++ b/Software/Embedded_SW/Embedded/Modules/Control/MillisecTask.c @@ -499,9 +499,9 @@ uint32_t MillisecLowLoop(uint32_t tick) //Read_MidTank_Pressure_Sensor(Disp_i); } FPGA_GetAllDispensersValveBusyOCD(); - temp = Read_Fans_Tacho(); + /*temp = Read_Fans_Tacho(); DrawerFansStatus = temp & 0x1F; - SystemFansStatus = temp & 0xE0; + SystemFansStatus = temp & 0xE0;*/ KeepAliveOneSecondCall(); for (Motor_i = 0;Motor_i < NUM_OF_MOTORS;Motor_i++) { diff --git a/Software/Embedded_SW/Embedded/Modules/IDS/IDS_dispenser.c b/Software/Embedded_SW/Embedded/Modules/IDS/IDS_dispenser.c index 1e33b99ca..7978e77bb 100644 --- a/Software/Embedded_SW/Embedded/Modules/IDS/IDS_dispenser.c +++ b/Software/Embedded_SW/Embedded/Modules/IDS/IDS_dispenser.c @@ -223,6 +223,12 @@ void IDS_Dispenser_Content_Init (void) for(i=0;idispenserinfo[i],sizeof(DispenserRunningData)); + IDS_Dispenser_Data[i].has_consumedinnanolitter = true; + IDS_Dispenser_Data[i].has_totalconsumedinnanolitter = true; + IDS_Dispenser_Data[i].has_direction = true; + IDS_Dispenser_Data[i].has_microsteps = true; + IDS_Dispenser_Data[i].has_numberofrefills = true; + IDS_Dispenser_Data[i].has_nanolitterperpulse = true; } free (buffer); dispenser_data__free_unpacked(NULL,StoredDispenserData); @@ -239,12 +245,17 @@ void IDS_Dispenser_Content_Calculation (char DispenserId) TimerMotors_t HW_Motor_Id = DispenserIdToMotorId[DispenserId]; double consumedintimeframe = MotorDriverRequest[HW_Motor_Id].Speed*IDS_Dispenser_Data[DispenserId].microsteps* IDS_Dispenser_Data[DispenserId].nanolitterperpulse * dir; + //consumedintimeframe = 10+DispenserId; IDS_Dispenser_Data[DispenserId].consumedinnanolitter += consumedintimeframe; IDS_Dispenser_Data[DispenserId].totalconsumedinnanolitter += consumedintimeframe; if (DispenserId == 0) { - if (seconds_counter++>=3600) + if (seconds_counter++>=600)//3600) { + if (IDS_Dispenser_Data[DispenserId].consumedinnanolitter) + { + REPORT_MSG(IDS_Dispenser_Data[DispenserId].consumedinnanolitter,"Saving Dispenser Data" ); + } seconds_counter = 0; IDSDispenserData.n_dispenserinfo = MAX_SYSTEM_DISPENSERS; IDSDispenserData.dispenserinfo = dispenserdata; -- cgit v1.3.1