aboutsummaryrefslogtreecommitdiffstats
path: root/Software/Embedded_SW
diff options
context:
space:
mode:
authorShlomo Hecht <shlomo@twine-s.com>2020-07-13 19:00:14 +0300
committerShlomo Hecht <shlomo@twine-s.com>2020-07-13 19:00:14 +0300
commite7e69b517ded1f9be03fc5de8d78e40e5701cb4c (patch)
tree759ec347b8e56c4ea3f58b0212fbe58fac7ee9b0 /Software/Embedded_SW
parent5124122a798c4a922e0c563201cde9a0dca08fb5 (diff)
downloadTango-e7e69b517ded1f9be03fc5de8d78e40e5701cb4c.tar.gz
Tango-e7e69b517ded1f9be03fc5de8d78e40e5701cb4c.zip
merge
Diffstat (limited to 'Software/Embedded_SW')
-rw-r--r--Software/Embedded_SW/Embedded/Drivers/I2C_Communication/DAC/Blower.c2
-rw-r--r--Software/Embedded_SW/Embedded/Drivers/I2C_Communication/WHS_Card/D_MAX11614_ADC/WHS_MAX11614_A2D.c40
-rw-r--r--Software/Embedded_SW/Embedded/Drivers/I2C_Communication/WHS_Card/D_Max5805_ADC_Blower/WHS_Blower.c2
-rw-r--r--Software/Embedded_SW/Embedded/Modules/IDS/IDS_print.c19
4 files changed, 48 insertions, 15 deletions
diff --git a/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/DAC/Blower.c b/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/DAC/Blower.c
index 16641d1de..31cf5d0da 100644
--- a/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/DAC/Blower.c
+++ b/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/DAC/Blower.c
@@ -182,7 +182,7 @@ uint32_t Control_Voltage_To_Blower(uint32_t mV)
else //new WHS
{
Trigger_SetWHSBlowerVoltage(mV);
- Report("------------ Set Blower Voltage:-----------------", __FILE__,__LINE__, mV, RpMessage, (int)headairflow, 0);
+ //Report("------------ Set Blower Voltage:-----------------", __FILE__,__LINE__, mV, RpMessage, (int)headairflow, 0);
}
voltage = mV;
DiaglosticChangeBlowerData();
diff --git a/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/WHS_Card/D_MAX11614_ADC/WHS_MAX11614_A2D.c b/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/WHS_Card/D_MAX11614_ADC/WHS_MAX11614_A2D.c
index f7d734536..bb41e1af3 100644
--- a/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/WHS_Card/D_MAX11614_ADC/WHS_MAX11614_A2D.c
+++ b/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/WHS_Card/D_MAX11614_ADC/WHS_MAX11614_A2D.c
@@ -22,6 +22,7 @@
#include "drivers/Flash_ram/MCU_E2Prom.h"
#include <Drivers/I2C_Communication/WHS_Card/EEPROM/WHS_EEPROM.h>
#include "modules/control/control.h"
+#include "modules/General/process.h"
uint16_t Orf_zero_value[DRIER_FLOW_METER+1] = {1112,0,1040};
@@ -540,7 +541,7 @@ double CalculateWHSWasteTankLevelMiliLiter()
get_vlev1(&Vm_mv);//mV (VREF = 4.096V 12bit so 1bit is 1mV)
- Report("***** get waste level in mV ********", __FILE__, __LINE__, 0, RpMessage, (int)(Vm_mv), 0);
+ //Report("***** get waste level in mV ********", __FILE__, __LINE__, 0, RpMessage, (int)(Vm_mv), 0);
Vm_ml = Vm_mv * 1500/mvfor1500mL;
@@ -554,11 +555,12 @@ double CalculateWHSWasteTankLevelMiliLiter()
waste_volume_milliliter = Vm_ml -LocalV0_ml;
}
//ReportWithPackageFilter(WasteFilter,"------------ waste_volume_ml -----------------", __FILE__, __LINE__, 0, RpMessage, (int)(waste_volume_milliliter), 0);
- Report("------------ get waste level in ml -----------------", __FILE__, LocalV0_ml, Vm_ml, RpMessage, (int)(waste_volume_milliliter), 0);
+ //Report("------------ get waste level in ml -----------------", __FILE__, LocalV0_ml, Vm_ml, RpMessage, (int)(waste_volume_milliliter), 0);
return waste_volume_milliliter;
}
uint32_t WasteControlId = 0xFF;
+bool ContinouosWaste = false, regularWaste = false;
typedef enum
{
Open_Valve,
@@ -566,6 +568,7 @@ typedef enum
Read_Waste
}Waste_Tank_Procedure_Enum;
int nop = 0;
+int FirstInSequence = true;
Waste_Tank_Procedure_Enum OpenClose = Open_Valve;
bool waste_seq_cont()
{
@@ -592,7 +595,7 @@ bool waste_seq_cont()
if (WasteAverageIndex >= 8)
WasteAverageIndex = 0;
WasteCounter++;
- Report("------------ waste level procedure read -----------------", __FILE__, WasteAverageIndex, OpenClose, RpMessage, (int)(WasteAverageContent[WasteAverageIndex-1]), 0);
+ //Report("------------ waste level procedure read -----------------", __FILE__, WasteAverageIndex, OpenClose, RpMessage, (int)(WasteAverageContent[WasteAverageIndex-1]), 0);
OpenClose = Open_Valve;
break;
}
@@ -609,6 +612,17 @@ bool waste_seq_cont()
Report("------------ Avg waste level in ml -----------------", __FILE__, WasteAverageIndex, avg, RpMessage, (int)(waste_level_ml), 0);
}
+ if (FirstInSequence == false)
+ {
+ if (WasteCounter == 4)
+ {
+ for (i = 0; i<8;i++)
+ {
+ avg+=WasteAverageContent[i];
+ }
+ waste_level_ml = avg/8;
+ }
+ }
return status;
}
@@ -624,19 +638,19 @@ bool waste_seq_step2()
case Open_Valve:
Set_WHS_valve(VOC_VALVE, OPEN, 0);
Write_WHS_Valve_reg();
- Report("------------ waste level procedure open -----------------", __FILE__, WasteAverageIndex, OpenClose, RpMessage, (int)(waste_level_ml), 0);
+ //Report("------------ waste level procedure open -----------------", __FILE__, WasteAverageIndex, OpenClose, RpMessage, (int)(waste_level_ml), 0);
OpenClose = Close_Valve;
break;
case Close_Valve:
Set_WHS_valve(VOC_VALVE, CLOSE, 0);
Write_WHS_Valve_reg();
- Report("------------ waste level procedure close ----------------", __FILE__, WasteAverageIndex, OpenClose, RpMessage, (int)(waste_level_ml), 0);
+ //Report("------------ waste level procedure close ----------------", __FILE__, WasteAverageIndex, OpenClose, RpMessage, (int)(waste_level_ml), 0);
OpenClose = Read_Waste;
break;
case Read_Waste:
WasteAverageContent[WasteAverageIndex++] = CalculateWHSWasteTankLevelMiliLiter();
WasteCounter++;
- Report("------------ waste level procedure read -----------------", __FILE__, WasteAverageIndex, OpenClose, RpMessage, (int)(WasteAverageContent[WasteAverageIndex-1]), 0);
+ //Report("------------ waste level procedure read -----------------", __FILE__, WasteAverageIndex, OpenClose, RpMessage, (int)(WasteAverageContent[WasteAverageIndex-1]), 0);
OpenClose = Open_Valve;
break;
}
@@ -656,11 +670,14 @@ bool waste_seq_step2()
WasteCounter = 0;
waste_level_ml = avg/8;
+ regularWaste = false;
+ if (ContinouosWaste == true)
+ waste_seq_step1_cont();
+
Report("------------ Avg waste level in ml -----------------", __FILE__, WasteCounter, OpenClose, RpMessage, (int)(waste_level_ml), 0);
}
return status;
}
-bool ContinouosWaste = false;
#define WASTE_PROCESS_TIME 1000
bool waste_seq_step1_cont()
{
@@ -671,6 +688,9 @@ bool waste_seq_step1_cont()
ContinouosWaste = true;
+ if (regularWaste == true)
+ return status;
+
Trigger_SetWHS_VOC_Valve(OPEN);
WasteControlId = AddControlCallback(NULL, Trigger_ReadWHS_WasteContinouos, WASTE_PROCESS_TIME, TemplateDataReadCBFunction,0,0, 0 );
@@ -690,11 +710,16 @@ bool waste_seq_cont_stop(void)
//else
// Report("Remove control callback failed",__FILE__,__LINE__,(int)WasteControlId,RpWarning,(int)waste_seq_step2,0);
+
return OK;
}
bool waste_seq_step1()
{
bool status = OK;
+ if (MachineReadyForHeating == false)
+ {
+ return OK;
+ }
if (ContinouosWaste == true)
{
Report("------- periodic waste called while emptying ------------", __FILE__, __LINE__, 0, RpMessage, 0, 0);
@@ -703,6 +728,7 @@ bool waste_seq_step1()
WasteAverageIndex = 0;
WasteCounter = 0;
OpenClose = CLOSE;
+ regularWaste = true;
Report("------------ open waste level Air valve -----------------", __FILE__, __LINE__, WHS_Eeprom.bytes.Orifice_Waste_Level_V0_ml, RpMessage, 0, 0);
Trigger_SetWHS_VOC_Valve(OPEN);
diff --git a/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/WHS_Card/D_Max5805_ADC_Blower/WHS_Blower.c b/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/WHS_Card/D_Max5805_ADC_Blower/WHS_Blower.c
index 92f24e083..c51ff6d96 100644
--- a/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/WHS_Card/D_Max5805_ADC_Blower/WHS_Blower.c
+++ b/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/WHS_Card/D_Max5805_ADC_Blower/WHS_Blower.c
@@ -543,7 +543,7 @@ bool WHS_Set_Blower_Control_Closed_Loop(double Q_value)
}
}
}
- Report("------------ Blower Control :-----------------", __FILE__,Orf_zero_value[HEAD_FLOW_METER], (int)(current_dying_head_flow_Q*100), RpMessage, (int)(Q_value*100), 0);
+ //Report("------------ Blower Control :-----------------", __FILE__,Orf_zero_value[HEAD_FLOW_METER], (int)(current_dying_head_flow_Q*100), RpMessage, (int)(Q_value*100), 0);
return OK;
}
diff --git a/Software/Embedded_SW/Embedded/Modules/IDS/IDS_print.c b/Software/Embedded_SW/Embedded/Modules/IDS/IDS_print.c
index b4442c996..c444c7017 100644
--- a/Software/Embedded_SW/Embedded/Modules/IDS/IDS_print.c
+++ b/Software/Embedded_SW/Embedded/Modules/IDS/IDS_print.c
@@ -590,7 +590,7 @@ uint32_t InactiveDispenserHome(uint32_t DispenserId, uint32_t ReadValue)
Report("pressureReady = true or timeout;",__FILE__,DispenserBuildTimeCounter,NumofReadyDispensers,RpWarning,(int)NumOfActiveDispensers,0);
}
}
- else if (endOfPrepareWCF == false)
+ else if ((endOfPrepareWCF == false)&&(NumOfActiveDispensers))
{
if ((DispenserBuildTimeCounter == PRESSURE_READ_TIME_GAP)&&(FirstBrushStop))
{
@@ -683,6 +683,13 @@ uint32_t InactiveDispenserHome(uint32_t DispenserId, uint32_t ReadValue)
}
}
+ else if (NumOfActiveDispensers == 0)
+ {
+ endOfPrepareWCF = true;
+ FreeBrushStopFileData(FirstBrushStop);
+ FirstBrushStop =NULL;
+ Report("endOfPrepareWCF = true;",__FILE__,DispenserBuildTimeCounter,NumofReadyDispensers,RpWarning,(int)NumOfActiveDispensers,0);
+ }
//start new stage
if (endOfPrepareWCF == true)
{
@@ -1027,7 +1034,7 @@ uint32_t InactiveDispenserHome(uint32_t DispenserId, uint32_t ReadValue)
//********************************************************************************************************************
-
+#define IDS_PRESEGMENT_TIME_STEP 50
uint32_t IDSPreSegmentStateCallbackRunner(uint32_t IfIndex, uint32_t ReadValue)
{
JobDispenser **Dispensers;
@@ -1065,7 +1072,7 @@ uint32_t IDS_Cleaning_Spray_Cleaning_Solution (int dispenserSpeed,callback_fptr
uint32_t IDS_Cleaning_Stop_Cleaning_Solution (callback_fptr callback);
*/
//InterSegmentStepsLimit = lInterSegmentLength*10;//100 millisec steps
- InterSegmentStepsCount+=100;
+ InterSegmentStepsCount+=IDS_PRESEGMENT_TIME_STEP;
if (InterSegmentStepsCount >= lInterSegmentLength)
{
//IDS_Valve_PresegmentReady(1,0);
@@ -1259,7 +1266,7 @@ uint32_t IDSPreSegmentState(void *SegmentDetails, int SegmentId)
lInterSegmentLength = ((IntersegmentLength*100)*1000/dyeingspeed);
lInterSegmentLength-=(lInterSegmentLength%100); //round to a 100 multiplication
InterSegmentStepsCount = 0;
- DispenserPreSegmentControlId = AddControlCallback(NULL,IDSPreSegmentStateCallbackRunner, 100,TemplateDataReadCBFunction ,0, 0, 0 );
+ DispenserPreSegmentControlId = AddControlCallback(NULL,IDSPreSegmentStateCallbackRunner, IDS_PRESEGMENT_TIME_STEP,TemplateDataReadCBFunction ,0, 0, 0 );
if (DispenserPreSegmentControlId == 0xFF)
{
Report("Add control callback failed",__FILE__,__LINE__,(int)100,RpWarning,(int)0,0);
@@ -1292,7 +1299,7 @@ uint32_t IDSPreSegmentState(void *SegmentDetails, int SegmentId)
lInterSegmentLength = (dryerbufferCentimeters*1000/dyeingspeed);
lInterSegmentLength-=(lInterSegmentLength%100); //round to a 100 multiplication
InterSegmentStepsCount = 0;
- DispenserPreSegmentControlId = AddControlCallback( IDSPreSegmentStateCallbackRunner, 100,TemplateDataReadCBFunction ,0, 0, 0 );
+ DispenserPreSegmentControlId = AddControlCallback( IDSPreSegmentStateCallbackRunner, IDS_PRESEGMENT_TIME_STEP,TemplateDataReadCBFunction ,0, 0, 0 );
if (DispenserPreSegmentControlId == 0xFF)
{
Report("Add control callback failed",__FILE__,__LINE__,(int)100,RpWarning,(int)0,0);
@@ -1695,7 +1702,7 @@ uint32_t IDSSegmentState(void *SegmentDetails, int SegmentId)
lInterSegmentLength = (dryerbufferCentimeters*1000/dyeingspeed);
lInterSegmentLength-=(lInterSegmentLength%100); //round to a 100 multiplication
InterSegmentStepsCount = 0;
- DispenserPreSegmentControlId = AddControlCallback("IDS DTS", IDSPreSegmentStateCallbackRunner, 100,TemplateDataReadCBFunction ,0, 0, 0 );
+ DispenserPreSegmentControlId = AddControlCallback("IDS DTS", IDSPreSegmentStateCallbackRunner, IDS_PRESEGMENT_TIME_STEP,TemplateDataReadCBFunction ,0, 0, 0 );
if (DispenserPreSegmentControlId == 0xFF)
{
Report("Add control callback failed",__FILE__,__LINE__,(int)100,RpWarning,(int)0,0);