aboutsummaryrefslogtreecommitdiffstats
path: root/Software/Embedded_SW
diff options
context:
space:
mode:
authorShlomo Hecht <shlomo@twine-s.com>2020-02-25 11:35:18 +0200
committerShlomo Hecht <shlomo@twine-s.com>2020-02-25 11:35:18 +0200
commit5c8596be64deacfbe282c03ba21cec66ed4e2494 (patch)
treea8d3632748b8a56859936810e170883f92e4fbc0 /Software/Embedded_SW
parentc3b9b401883c2ef45accfa2d26c7ff6276691c34 (diff)
parentfdb539e472eaaaff74a05aa661e471543ae07313 (diff)
downloadTango-5c8596be64deacfbe282c03ba21cec66ed4e2494.tar.gz
Tango-5c8596be64deacfbe282c03ba21cec66ed4e2494.zip
Merge branch 'master' of https://twinetfs.visualstudio.com/Tango/_git/Tango
Diffstat (limited to 'Software/Embedded_SW')
-rw-r--r--Software/Embedded_SW/Embedded/Common/SW_Info/SW_Info.c2
-rw-r--r--Software/Embedded_SW/Embedded/Drivers/ADC_Sampling/ADC.h4
-rw-r--r--Software/Embedded_SW/Embedded/Drivers/I2C_Communication/WHS_Card/D_EMC2302_Fan/WHS_Fan.c8
-rw-r--r--Software/Embedded_SW/Embedded/Drivers/I2C_Communication/WHS_Card/D_MAX11614_ADC/WHS_MAX11614_A2D.c35
-rw-r--r--Software/Embedded_SW/Embedded/Drivers/I2C_Communication/WHS_Card/D_MAX11614_ADC/WHS_MAX11614_A2D.h13
-rw-r--r--Software/Embedded_SW/Embedded/Drivers/I2C_Communication/WHS_Card/D_Max5805_ADC_Blower/WHS_Blower.c12
-rw-r--r--Software/Embedded_SW/Embedded/Drivers/SSI_Comm/Dancer/Dancer.c4
-rw-r--r--Software/Embedded_SW/Embedded/Drivers/SSI_Comm/Dancer/Dancer.h1
-rw-r--r--Software/Embedded_SW/Embedded/Main.c4
-rw-r--r--Software/Embedded_SW/Embedded/Modules/General/GeneralHardware.c4
-rw-r--r--Software/Embedded_SW/Embedded/Modules/Heaters/Heaters_print.c6
-rw-r--r--Software/Embedded_SW/Embedded/Modules/Stubs_Handler/Progress.c14
-rw-r--r--Software/Embedded_SW/Embedded/Modules/Thread/Thread_Winder.c13
-rw-r--r--Software/Embedded_SW/Embedded/Modules/Thread/Thread_print.c14
-rw-r--r--Software/Embedded_SW/Embedded/StateMachines/Initialization/InitSequence.c18
-rw-r--r--Software/Embedded_SW/Embedded/StateMachines/Initialization/PowerOffSequence.c6
16 files changed, 103 insertions, 55 deletions
diff --git a/Software/Embedded_SW/Embedded/Common/SW_Info/SW_Info.c b/Software/Embedded_SW/Embedded/Common/SW_Info/SW_Info.c
index 201b896ff..3cf96dd03 100644
--- a/Software/Embedded_SW/Embedded/Common/SW_Info/SW_Info.c
+++ b/Software/Embedded_SW/Embedded/Common/SW_Info/SW_Info.c
@@ -20,7 +20,7 @@ typedef struct
} TangoVersion_t;
-TangoVersion_t _gTangoVersion = {1,4,6,12};
+TangoVersion_t _gTangoVersion = {1,4,6,13};
#define BUILD_DATE __DATE__
char Dat[50] = BUILD_DATE;
char _gTangoName [MAX_STRING_LEN] = "Tango01 ";//d
diff --git a/Software/Embedded_SW/Embedded/Drivers/ADC_Sampling/ADC.h b/Software/Embedded_SW/Embedded/Drivers/ADC_Sampling/ADC.h
index 65064c837..2d5a95c2a 100644
--- a/Software/Embedded_SW/Embedded/Drivers/ADC_Sampling/ADC.h
+++ b/Software/Embedded_SW/Embedded/Drivers/ADC_Sampling/ADC.h
@@ -30,8 +30,8 @@ typedef enum
ADC_LEFT_DANCER_1 ,//13
ADC_LEFT_DANCER_2 ,//14
ADC_RIGHT_DANCER ,//15
- ADC_DRYER_CURRENT_2 ,//16
- ADC_DRYER_CURRENT_1 ,//17
+ ADC_DRYER_CURRENT_1 ,//16
+ ADC_DRYER_CURRENT_2 ,//17
ADC_DRYER_CURRENT_3 ,//18
ADC_FPGA_3V3 ,//19
ADC_MAX_ADC_DEVICES ,//20
diff --git a/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/WHS_Card/D_EMC2302_Fan/WHS_Fan.c b/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/WHS_Card/D_EMC2302_Fan/WHS_Fan.c
index 2debef0d6..a2fffd7f8 100644
--- a/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/WHS_Card/D_EMC2302_Fan/WHS_Fan.c
+++ b/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/WHS_Card/D_EMC2302_Fan/WHS_Fan.c
@@ -16,7 +16,7 @@ FAN_DRIVER_INFO Fan_Driver_Info[maxFAN-1];
#define NUM_OF_FAN_DRIVER 3
-
+#define DEFAULT_FAN_SPEED 0xFF
#define FAN_SPEED_OFF 0x00
#define PUSH_PULL 1
uint8_t Fan_Mux_Channel = UNKNOWN;
@@ -147,9 +147,9 @@ uint16_t WHS_Get_fan_tach(WHS_fan_num fan_number)
void Read_All_WHS_Fans_Tach()
{
- WHS_fan_num fan_number=0;
+ WHS_fan_num fan_number = FAN1;
- for (fan_number = FAN1 ; fan_number < FAN5/*maxFAN*/; fan_number++)
+ for (fan_number = FAN1 ; fan_number < maxFAN; fan_number++)
{
WHS_Read_fan_tach(fan_number);
}
@@ -248,7 +248,7 @@ bool init_WHS_fan()
{
Select_WHS_Fan_Mux_Channel(fan_number);
status |= D_Fan_PWM_Output_Config(I2C_ID_WHS_CARD ,I2CFanViaSwitch_ADDRESS, !(fan_number & 0x01), PUSH_PULL );
- status |= D_Fan_Setting(I2C_ID_WHS_CARD ,I2CFanViaSwitch_ADDRESS, !(fan_number & 0x01), FAN_SPEED_OFF);
+ status |= D_Fan_Setting(I2C_ID_WHS_CARD ,I2CFanViaSwitch_ADDRESS, !(fan_number & 0x01), DEFAULT_FAN_SPEED);//FAN_SPEED_OFF
}
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 aa2be496e..20b2cc25e 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
@@ -20,10 +20,11 @@
#include <Drivers/I2C_Communication/WHS_Card/D_Max5805_ADC_Blower/WHS_Blower.h>
-MAX11614 U20_MAX11614 ;
-
-
+MAX11614 U20_MAX11614 ;
+static WHS_Display_View display_view = AVARAGE;
+//static uint16_t orf1V0Value = 0;
+//static uint16_t orf3V0Value = 0;
uint32_t WHS_MAX11614_Init ()
{
@@ -267,6 +268,12 @@ bool get_orf_1(uint16_t *value) // U34 connected to AIN2
return status;
}
+bool SetDisplayView(WHS_Display_View view )
+{
+ display_view = view;
+ return display_view;
+}
+
uint16_t Orf_zero_value[HEAD_FLOW_METER+1] = {1112,0,1040};
@@ -279,15 +286,29 @@ double GetWHSAirFlow(uint8_t OR_Id)
switch (OR_Id)
{
case DRIER_FLOW_METER:
- //get_orf_1(&value);
- Q_value = get_average_ORF1_Q();
+ if (display_view == AVARAGE)
+ {
+ Q_value = get_average_ORF3_Q();
+ }
+ else // CURRENT
+ {
+ get_orf_3(&value);
+ Q_value = get_Q(value-orf3V0Value);
+ }
break;
case NU_FLOW_METER:
get_orf_2(&value);
break;
case HEAD_FLOW_METER:
- //get_orf_3(&value);
- Q_value = get_average_ORF3_Q();
+ if (display_view == AVARAGE)
+ {
+ Q_value = get_average_ORF1_Q();
+ }
+ else //CURRENT
+ {
+ get_orf_1(&value);
+ Q_value = get_Q(value-orf1V0Value);
+ }
break;
default:
break;
diff --git a/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/WHS_Card/D_MAX11614_ADC/WHS_MAX11614_A2D.h b/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/WHS_Card/D_MAX11614_ADC/WHS_MAX11614_A2D.h
index 8e3502f0a..ba12b0e6f 100644
--- a/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/WHS_Card/D_MAX11614_ADC/WHS_MAX11614_A2D.h
+++ b/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/WHS_Card/D_MAX11614_ADC/WHS_MAX11614_A2D.h
@@ -31,8 +31,17 @@ typedef enum
}WHS_Flow_Meter;
+typedef enum
+{
+ CURRENT = 0,
+ AVARAGE
+}WHS_Display_View;
+
double GetWHSAirFlow(uint8_t OR_Id);
-uint16_t GetWHSGasSensor();
-uint16_t GetWHSWasteTankLevel();
+uint16_t GetWHSGasSensor(void);
+uint16_t GetWHSWasteTankLevel(void);
+bool SetDisplayView(WHS_Display_View view );
+//uint16_t Get_orf1_V0(void);
+//uint16_t Get_orf3_V0(void);
#endif /* WHS_MAX11614_H_ */
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 22c409a05..ddf2ca9ea 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
@@ -224,11 +224,10 @@ double WHS_Blower_Avarege_ORF1()
i += 1;
}
sum_orifice_Q -= average_orf1_Q_buff[i];
- //get_orf_1(&orifice_hex_value );
average_orf1_Q_buff[i] = get_Q(orifice_hex_value);
sum_orifice_Q += average_orf1_Q_buff[i];
average_Q_orifice1 = sum_orifice_Q / ORF_BUFF_SIZE;
- ReportWithPackageFilter(WasteFilter,"------------ average_Q_orifice3 hex head -----------------", __FILE__,__LINE__,(int)orifice_hex_value, RpMessage, (average_Q_orifice3*1000), 0);
+ ReportWithPackageFilter(WasteFilter,"------------ average_Q_orifice1 hex head -----------------", __FILE__,__LINE__,(int)orifice_hex_value, RpMessage, (average_Q_orifice1*1000), 0);
}
return average_Q_orifice1;
}
@@ -251,8 +250,7 @@ double WHS_Blower_Avarege_ORF3()
{
average_orf3_Q_buff[i] = Q_temp;
}
- ReportWithPackageFilter(WasteFilter,"------------ average_Q_orifice3 hex head new value-----------------", __FILE__,__LINE__,(int)orifice_hex_value, RpMessage, (average_Q_orifice3*1000), 0);
-
+ ReportWithPackageFilter(WasteFilter,"------------ average_Q_orifice3 hex head new value-----------------", __FILE__,__LINE__,(int)orifice_hex_value, RpMessage, (average_Q_orifice3 * 1000), 0);
}
else
{
@@ -269,7 +267,7 @@ double WHS_Blower_Avarege_ORF3()
sum_orifice_Q += average_orf3_Q_buff[i];
average_Q_orifice3 = sum_orifice_Q /ORF_BUFF_SIZE;
}
- ReportWithPackageFilter(WasteFilter,"------------ average_Q_orifice3 hex head -----------------", __FILE__,__LINE__,(int)orifice_hex_value, RpMessage, (average_Q_orifice3*1000), 0);
+ ReportWithPackageFilter(WasteFilter,"------------ average_Q_orifice3 hex head -----------------", __FILE__,__LINE__,(int)orifice_hex_value, RpMessage, (average_Q_orifice3 * 1000), 0);
return average_Q_orifice3;
}
@@ -322,7 +320,7 @@ bool Test_WHS_blower()
bool WHS_Set_Blower_Control_Closed_Loop(double SetPoint_Q)
{
//double average_ORF1_Q = 0;
- double current_dying_head_flow_Q = 0;
+ double current_dying_head_flow_Q = 0.0;
uint16_t volt;
double tmp = 0.0;
@@ -395,7 +393,7 @@ void WHS_Start_Blower_Control_Closed_Loop ()
}
double WHS_Get_Blower_Control_Closed_Loop_SetPoint(void)
{
- double SetPoint = 0;
+ double SetPoint = 0.0;
// to do return the setpoint
return SetPoint;
}
diff --git a/Software/Embedded_SW/Embedded/Drivers/SSI_Comm/Dancer/Dancer.c b/Software/Embedded_SW/Embedded/Drivers/SSI_Comm/Dancer/Dancer.c
index b2be0d407..749fad6b0 100644
--- a/Software/Embedded_SW/Embedded/Drivers/SSI_Comm/Dancer/Dancer.c
+++ b/Software/Embedded_SW/Embedded/Drivers/SSI_Comm/Dancer/Dancer.c
@@ -85,6 +85,10 @@ uint32_t Read_Dryer_ENC_Position ()
//REPORT_MSG(Dryer_ENC.Position,"Read_Dryer_ENC_Position");
return Dryer_ENC.Position;
}
+uint32_t Read_Dryer_Status(HardwareDancerType DancerId)
+{
+ return Dryer_ENC.Gen_status;
+}
uint32_t Control_Read_Dryer_Position(HardwareDancerType DancerId, uint32_t Parameter1)
{
return Dryer_ENC.Position;
diff --git a/Software/Embedded_SW/Embedded/Drivers/SSI_Comm/Dancer/Dancer.h b/Software/Embedded_SW/Embedded/Drivers/SSI_Comm/Dancer/Dancer.h
index 33a961c58..8c9d8cfd7 100644
--- a/Software/Embedded_SW/Embedded/Drivers/SSI_Comm/Dancer/Dancer.h
+++ b/Software/Embedded_SW/Embedded/Drivers/SSI_Comm/Dancer/Dancer.h
@@ -13,6 +13,7 @@ uint32_t Read_Dancer_Position (HardwareDancerType DancerId);
uint32_t Control_Read_Dancer_Position(HardwareDancerType DancerId, uint32_t Parameter1);
uint32_t Read_Dryer_ENC_Position ();
uint32_t Control_Read_Dryer_Position(uint32_t DryerID, uint32_t Parameter1);
+uint32_t Read_Dryer_Status(HardwareDancerType DancerId);
void Loop_SSI();
diff --git a/Software/Embedded_SW/Embedded/Main.c b/Software/Embedded_SW/Embedded/Main.c
index 604fc73fb..845cd2ba8 100644
--- a/Software/Embedded_SW/Embedded/Main.c
+++ b/Software/Embedded_SW/Embedded/Main.c
@@ -122,12 +122,12 @@ bool UpdateFlag = false;
/* ======== errHook ======== */
Void errHook(Error_Block *eb)
{
- FRESULT Fresult = FR_OK;
+ /*FRESULT Fresult = FR_OK;
FIL *FileHandle = 0; //the system supports a single active file
uint32_t Bytes = 0;
char File[50] = "";
char message[300];
- int len;
+ int len;*/
STATUS_GREEN_LED_OFF;
ACTIVITY_GREEN_LED_OFF;
diff --git a/Software/Embedded_SW/Embedded/Modules/General/GeneralHardware.c b/Software/Embedded_SW/Embedded/Modules/General/GeneralHardware.c
index ec59385ab..8e360cf6e 100644
--- a/Software/Embedded_SW/Embedded/Modules/General/GeneralHardware.c
+++ b/Software/Embedded_SW/Embedded/Modules/General/GeneralHardware.c
@@ -367,7 +367,7 @@ uint32_t EmbeddedParametersInit(void)
return Fresult;
}
-uint32_t GenHWControlId;
+/*uint32_t GenHWControlId;
uint32_t GenHWInitCallBackFunction(uint32_t IfIndex, uint32_t BusyFlag)
{
@@ -380,7 +380,7 @@ uint32_t GenHWInitCallBackFunction(uint32_t IfIndex, uint32_t BusyFlag)
Disable_MidTank_Pressure_Reading(Dispenser_i);
}
return OK;
-}
+}*/
uint32_t HWConfiguration(UploadHardwareConfigurationRequest* UploadRequest)
{
diff --git a/Software/Embedded_SW/Embedded/Modules/Heaters/Heaters_print.c b/Software/Embedded_SW/Embedded/Modules/Heaters/Heaters_print.c
index 06da53823..bc0d1002b 100644
--- a/Software/Embedded_SW/Embedded/Modules/Heaters/Heaters_print.c
+++ b/Software/Embedded_SW/Embedded/Modules/Heaters/Heaters_print.c
@@ -320,7 +320,7 @@ uint32_t HeatersTestInternalAlarmsCBFunction(uint32_t IfIndex, uint32_t readValu
}
readValue = MillisecGetTemperatures(InternalId2PT100Id[index]);
- if((MINIMUM_HEATER_READ*100>=readValue)||(270.00*100 < readValue))
+ if((MINIMUM_HEATER_READ*100>=readValue)||(200.00*100 < readValue))
{
//ReportWithPackageFilter(HeatersFilter,"PT100 not working properly",__FILE__,__LINE__,HeaterId,RpError, 0,0);
return ERROR;
@@ -662,7 +662,7 @@ void PrepareACHeater(int HeaterId,uint32_t Frequency, uint32_t SetTemperatue)
DeActivateHeater(HeaterId);
HeaterCmd[HeaterId].targettemperatue = 0;
#warning PT100 error is misidentified as overheat in alarms
- AlarmHandlingSetAlarm(HeaterEventType[HeaterId], true);
+ AlarmHandlingSetAlarm(EVENT_TYPE__POWER_UP_BIT_FAILURE, true);
return;
}
@@ -738,7 +738,7 @@ int PrepareDCHeater(int HeaterId, uint32_t Frequency, uint32_t SetTemperatue)
ControlIdtoHeaterId [HeaterId] = 0xFF;
}
DeActivateHeater(HeaterId);
- AlarmHandlingSetAlarm(HeaterEventType[HeaterId], true);
+ AlarmHandlingSetAlarm(EVENT_TYPE__POWER_UP_BIT_FAILURE, true);
HeaterCmd[HeaterId].targettemperatue = 0;
return ERROR;
diff --git a/Software/Embedded_SW/Embedded/Modules/Stubs_Handler/Progress.c b/Software/Embedded_SW/Embedded/Modules/Stubs_Handler/Progress.c
index ccd051c71..c907f7cb8 100644
--- a/Software/Embedded_SW/Embedded/Modules/Stubs_Handler/Progress.c
+++ b/Software/Embedded_SW/Embedded/Modules/Stubs_Handler/Progress.c
@@ -146,6 +146,16 @@ void Stub_ProgressRequest(MessageContainer* requestContainer)
double temp_double = 0.0;
if (WHS_Type == WHS_TYPE_NEW)
{
+
+ if (request->delay & 0x8000) // bit15 select the chip address
+ {
+ SetDisplayView( CURRENT );
+ }
+ else
+ {
+ SetDisplayView( AVARAGE );
+ }
+
switch(request->delay )// get A2D
{
case 0:
@@ -182,10 +192,10 @@ void Stub_ProgressRequest(MessageContainer* requestContainer)
temp_double = get_ORF3_Q();
break;
case 20:
- temp_double = get_average_ORF1_Q();
+ temp_double = get_average_ORF1_Q(); //HEAD
break;
case 22:
- temp_double = get_average_ORF3_Q();
+ temp_double = get_average_ORF3_Q(); //Drier
break;
case 11:
diff --git a/Software/Embedded_SW/Embedded/Modules/Thread/Thread_Winder.c b/Software/Embedded_SW/Embedded/Modules/Thread/Thread_Winder.c
index 78092ae2b..78150e9f9 100644
--- a/Software/Embedded_SW/Embedded/Modules/Thread/Thread_Winder.c
+++ b/Software/Embedded_SW/Embedded/Modules/Thread/Thread_Winder.c
@@ -213,9 +213,16 @@ uint32_t Winder_PrepareStage2(uint32_t deviceID, uint32_t ReadValue)
REPORT_MSG(millisecondCounter/*MotorsCfg[HARDWARE_MOTOR_TYPE__MOTO_SCREW].maxfrequency*/, "Winder_PrepareStage2");
if (ReadValue != LIMIT)
{
- LOG_ERROR(ReadValue,"Screw failed to reach the limit switch!!");
- //returned with a timeout
- Winder_ScrewAtOffsetCallback(0,0);
+ if (JobIsActive()==true)
+ {
+ LOG_ERROR(ReadValue,"Screw failed to reach the limit switch!!");
+ //returned with a timeout
+ Winder_ScrewAtOffsetCallback(0,0);
+ }
+ else //short jog, etc
+ {
+ AlarmHandlingSetAlarm (EVENT_TYPE__SCREW_MOTOR_LIMIT_TIMEOUT,OFF); //on a short jog, this callback will be called without need
+ }
}
else
{
diff --git a/Software/Embedded_SW/Embedded/Modules/Thread/Thread_print.c b/Software/Embedded_SW/Embedded/Modules/Thread/Thread_print.c
index 1dd101f82..9e0a2ac7f 100644
--- a/Software/Embedded_SW/Embedded/Modules/Thread/Thread_print.c
+++ b/Software/Embedded_SW/Embedded/Modules/Thread/Thread_print.c
@@ -442,7 +442,6 @@ void testDancersControl()
ThreadControlActive = false;
}
#endif
-bool dancerinvalid = false;
int MotorFailedSample[MAX_THREAD_MOTORS_NUM] = {0,0,0,0,0};
char TMessage[150];
//char time[150];
@@ -481,21 +480,20 @@ uint32_t ThreadControlCBFunction(uint32_t IfIndex, uint32_t ReadValue)
//if (MotorDriverResponse[ThreadMotorIdToMotorId[index]].Busy == true)
// return OK;
DancerId = ThreadMotorIdToDancerId[index];
- if (ReadValue < 10)
+/* if (ReadValue < 10)
{
MotorFailedSample[index]++;
ReportWithPackageFilter(ThreadFilter,"Dancer value read too small.",__FILE__,__LINE__,DancerId,RpError,ReadValue,0);
return OK;
- }
+ }*/
if (ReadValue == 0x3FFF)
{
- MotorFailedSample[index]++;
- if (dancerinvalid == false)
+ if (Read_Dryer_Status(DancerId) != OK)
{
- dancerinvalid = true;
- ReportWithPackageFilter(ThreadFilter,"Dancer value invalid.",__FILE__,__LINE__,(int)IfIndex,RpError,(int)ReadValue,0);
+ ReportWithPackageFilter(ThreadFilter,"Dancer value invalid.",__FILE__,ReadValue,(int)DancerId,RpError,(int)Read_Dryer_Status(DancerId),0);
+ MotorFailedSample[index]++;
+ return OK;
}
- return OK;
}
KeepReadValue = ReadValue;
TranslatedReadValue = ReadValue - DancersCfg[DancerId].zeropoint;
diff --git a/Software/Embedded_SW/Embedded/StateMachines/Initialization/InitSequence.c b/Software/Embedded_SW/Embedded/StateMachines/Initialization/InitSequence.c
index 20780b8c1..af2178348 100644
--- a/Software/Embedded_SW/Embedded/StateMachines/Initialization/InitSequence.c
+++ b/Software/Embedded_SW/Embedded/StateMachines/Initialization/InitSequence.c
@@ -213,7 +213,7 @@ uint32_t InitSequenceBlowerCallBackFunction(uint32_t IfIndex, uint32_t BusyFlag)
///////////////////////////////////////////////////////////////////////////////////////////////////////
#define MAX_CURRENT_READING 5
#define CURRENT_READING_ERROR_UNSTABLE 100
-int Heater_Current[MAX_CURRENT_READING] ;
+double Heater_Current[MAX_CURRENT_READING] ;
bool initial_wait = false;
int count_Heater_Current = 0;
int Maxcount_Heater_Current = 0;
@@ -222,6 +222,7 @@ double MainCurrent,SecondaryCurrent,StableCurrent;
double InitDrierAcVoltage = 0.0;
int InitDrierAcVoltageCount = 0;
double Zone2Resistance = 0.0;
+int WaitForCurrentRaise = 0;//let the heater current raise
void InitCurrentReadingStable(void)
{
memset(Heater_Current,0,sizeof(Heater_Current));
@@ -229,14 +230,15 @@ void InitCurrentReadingStable(void)
count_Heater_Current = 0;
Maxcount_Heater_Current = 0;
StableCurrent = 0.0;
+ WaitForCurrentRaise = 0;
}
-
+#define MaxStabilization 10
bool DetectIfCurrentReadingStable(double HeaterCurrent)
{
bool ret = false;
int i=0;
- int sum = 0;
- int average = 0;
+ double sum = 0;
+ double average = 0;
Maxcount_Heater_Current++;
//ReportWithPackageFilter(InitFilter,"DetectIfCurrentReadingStable", __FILE__,GetHeaterState(HEATER_TYPE__DryerMainHeater),(int)(HeaterCurrent*100), RpMessage, Maxcount_Heater_Current, 0);
@@ -268,12 +270,14 @@ uint32_t PowerManagementCallBack(uint32_t IfIndex, uint32_t BusyFlag)
{
ReportWithPackageFilter(InitFilter,"PowerManagementCallBack", __FILE__,MainHeaterStable,(int)(SecondaryHeaterStable), RpMessage, Maxcount_Heater_Current, 0);
ReportWithPackageFilter(InitFilter,"PowerManagementCallBack", __FILE__,GetHeaterState(HEATER_TYPE__DryerMainHeater),(int)(GetHeaterState(HEATER_TYPE__DryerSecondaryHeater)), RpMessage, Maxcount_Heater_Current, 0);
+ if (WaitForCurrentRaise++ < MaxStabilization)
+ return OK;
if ((MainHeaterStable == false)&&(Maxcount_Heater_Current<CURRENT_READING_ERROR_UNSTABLE))
{
InitDrierAcVoltage += ReadVAC();
InitDrierAcVoltageCount++;
- ReportWithPackageFilter(InitFilter,"main heater current not stable", __FILE__,GetHeaterState(HEATER_TYPE__DryerMainHeater),(int)(StableCurrent*100), RpMessage, Maxcount_Heater_Current, 0);
+ ReportWithPackageFilter(InitFilter,"main heater current not stable", __FILE__,GetHeaterState(HEATER_TYPE__DryerMainHeater),(int)(Get_Heaters_Current(HEATER_DRYER_CURRENT_1)*100), RpMessage, Maxcount_Heater_Current, 0);
MainHeaterStable = DetectIfCurrentReadingStable(Get_Heaters_Current(HEATER_DRYER_CURRENT_1));
Read_Heaters_Current(HEATER_DRYER_CURRENT_1);
if (MainHeaterStable == true)
@@ -292,7 +296,7 @@ uint32_t PowerManagementCallBack(uint32_t IfIndex, uint32_t BusyFlag)
DeActivateHeater(HEATER_TYPE__DryerMainHeater);
if (Maxcount_Heater_Current>=CURRENT_READING_ERROR_UNSTABLE)
{
- ReportWithPackageFilter(InitFilter,"drier heaters current not stable", __FILE__,GetHeaterState(HEATER_TYPE__DryerSecondaryHeater),(int)(StableCurrent*100), RpMessage, Maxcount_Heater_Current, 0);
+ ReportWithPackageFilter(InitFilter,"drier heaters current not stable", __FILE__,GetHeaterState(HEATER_TYPE__DryerSecondaryHeater),(int)(Get_Heaters_Current(HEATER_DRYER_CURRENT_2)*100), RpMessage, Maxcount_Heater_Current, 0);
if (SafeRemoveControlCallback(HWControlId, PowerManagementCallBack )==OK)
HWControlId = 0xFF;
else
@@ -310,7 +314,7 @@ uint32_t PowerManagementCallBack(uint32_t IfIndex, uint32_t BusyFlag)
Read_Heaters_Current(HEATER_DRYER_CURRENT_2);
if (SecondaryHeaterStable == true)
{
- ReportWithPackageFilter(InitFilter,"main heater current stable", __FILE__,__LINE__,(int)(StableCurrent*100), RpMessage, Maxcount_Heater_Current, 0);
+ ReportWithPackageFilter(InitFilter,"secondary heater current stable", __FILE__,__LINE__,(int)(StableCurrent*100), RpMessage, Maxcount_Heater_Current, 0);
SecondaryCurrent = StableCurrent;
InitCurrentReadingStable();
DeActivateHeater(HEATER_TYPE__DryerSecondaryHeater);
diff --git a/Software/Embedded_SW/Embedded/StateMachines/Initialization/PowerOffSequence.c b/Software/Embedded_SW/Embedded/StateMachines/Initialization/PowerOffSequence.c
index 5cc94a909..d737b3172 100644
--- a/Software/Embedded_SW/Embedded/StateMachines/Initialization/PowerOffSequence.c
+++ b/Software/Embedded_SW/Embedded/StateMachines/Initialization/PowerOffSequence.c
@@ -91,11 +91,7 @@ uint32_t PowerOffScheduler(uint32_t IfIndex, uint32_t BusyFlag)
StoredMachineState = PowerOffMachineState;
PowerOffSequenceStateMachine (PowerOffMachineState);
}
- if (UpdateCounter++ >= UPDATE_TIMEOUT)
- {
- UpdateCounter = 0;
- PowerDownUpdate(PowerOffMachineState);
- }
+ PowerDownUpdate(PowerOffMachineState);
return OK;
}
/*******************************************************************************************************/