From bee3522e23c95021a9637669a8091069af98e0c4 Mon Sep 17 00:00:00 2001 From: Shlomo Hecht Date: Tue, 4 Feb 2020 18:51:57 +0200 Subject: Version 1.4.6.8: remove most of head/whs ifdefs, checked to be working. fix control for missed milliseconds calls and more --- Software/Embedded_SW/Embedded/Modules/Thread/ThreadLoad.c | 10 +++------- Software/Embedded_SW/Embedded/Modules/Thread/Thread_print.c | 11 +++++------ 2 files changed, 8 insertions(+), 13 deletions(-) (limited to 'Software/Embedded_SW/Embedded/Modules/Thread') diff --git a/Software/Embedded_SW/Embedded/Modules/Thread/ThreadLoad.c b/Software/Embedded_SW/Embedded/Modules/Thread/ThreadLoad.c index bac3ba1d0..a629afc50 100644 --- a/Software/Embedded_SW/Embedded/Modules/Thread/ThreadLoad.c +++ b/Software/Embedded_SW/Embedded/Modules/Thread/ThreadLoad.c @@ -401,9 +401,7 @@ CallbackCounter++; //MotorMovetoLimitSwitch (HARDWARE_MOTOR_TYPE__MOTO_DRYER_LID,1-MotorsCfg[HARDWARE_MOTOR_TYPE__MOTO_DRYER_LID].directionthreadwize, 200, Motor_Id_to_LS_IdUp[HARDWARE_MOTOR_TYPE__MOTO_DRYER_LID], Thread_Load_HomingCallback,10000); MotorGotoWithCallback(HARDWARE_MOTOR_TYPE__MOTO_DRYER_LID, 0, Motor_Id_to_LS_IdUp[HARDWARE_MOTOR_TYPE__MOTO_DRYER_LID], Thread_Load_HomingCallback,10000); -#ifdef Use_Head_Card - HeadCard_Actuators_Control(ACTOT, LOW,true); -#endif + Trigger_Head_Actuators_Control(ACTOT, LOW,true); return OK; } uint32_t Thread_Load_Lift_Dancers(void) @@ -511,9 +509,7 @@ CallbackCounter++; // MotorMovetoLimitSwitch (HARDWARE_MOTOR_TYPE__MOTO_DRYER_LID,MotorsCfg[HARDWARE_MOTOR_TYPE__MOTO_DRYER_LID].directionthreadwize, 200, Motor_Id_to_LS_IdDown[HARDWARE_MOTOR_TYPE__MOTO_DRYER_LID], Thread_Load_HomingCallback,10000); MotorGotoWithCallback(HARDWARE_MOTOR_TYPE__MOTO_DRYER_LID, 2, Motor_Id_to_LS_IdDown[HARDWARE_MOTOR_TYPE__MOTO_DRYER_LID], Thread_Load_HomingCallback,10000); -#ifdef Use_Head_Card - HeadCard_Actuators_Control(ACTOT, LOW,false); -#endif + Trigger_Head_Actuators_Control(ACTOT, LOW,false); return OK; } uint32_t Thread_Load_Resume_Heating(void) @@ -538,7 +534,7 @@ { REPORT_MSG(LoadStages, "Thread Load State Machine step"); CallbackCounter++; - MotorMovetoDancerPosition (HARDWARE_MOTOR_TYPE__MOTO_RDRIVING,MotorsCfg[HARDWARE_MOTOR_TYPE__MOTO_RDRIVING].directionthreadwize, 100, FEEDER_DANCER ,true, Thread_Load_Jog_Feeder_To_Middle_Point_Callback,4000); + MotorMovetoDancerPosition (HARDWARE_MOTOR_TYPE__MOTO_RDRIVING,MotorsCfg[HARDWARE_MOTOR_TYPE__MOTO_RDRIVING].directionthreadwize, 400, FEEDER_DANCER ,true, Thread_Load_Jog_Feeder_To_Middle_Point_Callback,4000); return OK; } diff --git a/Software/Embedded_SW/Embedded/Modules/Thread/Thread_print.c b/Software/Embedded_SW/Embedded/Modules/Thread/Thread_print.c index 2484b9444..59b5642fb 100644 --- a/Software/Embedded_SW/Embedded/Modules/Thread/Thread_print.c +++ b/Software/Embedded_SW/Embedded/Modules/Thread/Thread_print.c @@ -300,12 +300,7 @@ uint32_t PoolerThreadLengthCBFunction(uint32_t IfIndex, uint32_t ReadValue) { if (PrepareState == true) { -//#ifdef Use_Head_Card -// strcpy(Lenstr,"Heating up"); -//#else - //later - add temperatures - TemperatureListString(Lenstr); -//#endif + TemperatureListString(Lenstr); SendJobProgress(0.0,0,false, Lenstr); } else @@ -505,6 +500,10 @@ uint32_t ThreadControlCBFunction(uint32_t IfIndex, uint32_t ReadValue) { //pooler dancer is right sided: data is opposite TranslatedReadValue = (-1*TranslatedReadValue); + } + if (index == POOLER_MOTOR) + { + //pooler dancer is right sided: data is opposite JobCounter++; } //TranslatedReadValue = 0;//test -- cgit v1.3.1 From b3589be05166fdd15692a9a835262d6e04e56bd2 Mon Sep 17 00:00:00 2001 From: Shlomo Hecht Date: Wed, 5 Feb 2020 16:00:59 +0200 Subject: fix continuous bug, alarm handling timing, control timing, initialization. --- .../Embedded/Common/SWUpdate/FirmwareUpgrade.c | 4 ++- .../Embedded/Common/report/reportInit.c | 3 ++ .../Embedded/Drivers/I2C_Communication/I2C.h | 1 + .../Embedded/Drivers/I2C_Communication/I2C_Task.c | 8 ++--- Software/Embedded_SW/Embedded/Main.c | 7 +++-- .../Embedded/Modules/AlarmHandling/AlarmHandling.c | 9 ++++-- .../Embedded/Modules/Control/MillisecTask.c | 4 +++ .../Embedded_SW/Embedded/Modules/Control/control.c | 36 ++++++++++++++++++---- .../Embedded/Modules/Diagnostics/Diagnostics.c | 4 ++- .../Modules/Diagnostics/DiagnosticsHoming.c | 6 +++- .../Embedded/Modules/General/GeneralHardware.c | 1 + .../Embedded/Modules/General/MachineStatus.c | 6 ++-- .../Embedded/Modules/Heaters/Heaters_init.c | 2 -- .../Embedded_SW/Embedded/Modules/IDS/IDS_maint.c | 6 ++-- .../Embedded/Modules/Thread/ThreadLoad.c | 1 + .../Initialization/PowerOffSequence.c | 2 ++ .../Embedded/StateMachines/Printing/JobSTM.c | 3 ++ 17 files changed, 78 insertions(+), 25 deletions(-) (limited to 'Software/Embedded_SW/Embedded/Modules/Thread') diff --git a/Software/Embedded_SW/Embedded/Common/SWUpdate/FirmwareUpgrade.c b/Software/Embedded_SW/Embedded/Common/SWUpdate/FirmwareUpgrade.c index c42dc6695..79bbb4df8 100644 --- a/Software/Embedded_SW/Embedded/Common/SWUpdate/FirmwareUpgrade.c +++ b/Software/Embedded_SW/Embedded/Common/SWUpdate/FirmwareUpgrade.c @@ -61,6 +61,7 @@ uint32_t ActivateVersionCallBackFunction(uint32_t IfIndex, uint32_t BusyFlag) if (CurrentRunningFiletoken, false, &response, &activate_version_response__pack, &activate_version_response__get_packed_size); + responseContainer.has_continuous = true; responseContainer.continuous = true; if (Fresult!= OK) { @@ -197,7 +200,6 @@ uint32_t ActivateVersionRequestFunc(MessageContainer* requestContainer) responseContainer.errormessage = "Activate Version Request error"; responseContainer.continuous = false; } - responseContainer.continuous = true; uint8_t* container_buffer = my_malloc(message_container__get_packed_size(&responseContainer)); size_t container_size = message_container__pack(&responseContainer, container_buffer); my_free(responseContainer.data.data); diff --git a/Software/Embedded_SW/Embedded/Common/report/reportInit.c b/Software/Embedded_SW/Embedded/Common/report/reportInit.c index a9e940c8c..c8a11ce10 100644 --- a/Software/Embedded_SW/Embedded/Common/report/reportInit.c +++ b/Software/Embedded_SW/Embedded/Common/report/reportInit.c @@ -158,6 +158,7 @@ int ReportResponseFunc(char *message, /* The formatted message } response.message = message; responseContainer = /*Report*/createContainer(MESSAGE_TYPE__StartDebugLogResponse, protobufToken, false, &response, &start_debug_log_response__pack, &start_debug_log_response__get_packed_size); + responseContainer.has_continuous = true; responseContainer.continuous = true; //if (responseContainer.data.data) { @@ -376,6 +377,7 @@ uint32_t SetDebugLogCategoryFunc(MessageContainer* requestContainer) } responseContainer = createContainer(MESSAGE_TYPE__SetDebugLogCategoryResponse, requestContainer->token, true, &response, &set_debug_log_category_response__pack, &set_debug_log_category_response__get_packed_size); + responseContainer.has_continuous = true; responseContainer.continuous = false; if (status != OK) { @@ -404,6 +406,7 @@ uint32_t StopReportInitMessage(MessageContainer* requestContainer) //TODO Handle the request!!!! ReportStopReporting(); responseContainer = createContainer(MESSAGE_TYPE__StopDebugLogResponse, protobufToken, false, &response, &stop_debug_log_response__pack, &stop_debug_log_response__get_packed_size); + responseContainer.has_continuous = true; responseContainer.continuous = true; uint8_t* container_buffer = my_malloc(message_container__get_packed_size(&responseContainer)); size_t container_size = message_container__pack(&responseContainer, container_buffer); diff --git a/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/I2C.h b/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/I2C.h index a6599cbe8..c04c6de7f 100644 --- a/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/I2C.h +++ b/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/I2C.h @@ -15,6 +15,7 @@ extern uint32_t Arb_Loss_Count; uint32_t I2C_control(uint32_t I2C_ID, uint32_t Slave_Add, bool RW,uint32_t Byte2Write ); void Init_All_I2C(); +void I2C_ReadingTask_Init(void); //------------------------------------------------------------------------------------------------------------- diff --git a/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/I2C_Task.c b/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/I2C_Task.c index a82c04a3a..7bfd8612d 100644 --- a/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/I2C_Task.c +++ b/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/I2C_Task.c @@ -373,16 +373,16 @@ void Trigger_WHS_I2C_EEprom_Read(uint32_t address, uint16_t size, uint8_t *p_dat Mailbox_post(I2C_ReadingMsgQ , &I2C_ReadingMessage, BIOS_NO_WAIT); return; } +void I2C_ReadingTask_Init(void) +{ + I2C_ReadingMsgQ = Mailbox_create(sizeof(I2C_ReadingMessageStruc), 40, NULL,NULL); +} void I2C_ReadingTask(UArg arg0, UArg arg1) { I2C_ReadingMessageStruc I2C_ReadingMessage; - Error_Block eb; - Error_init(&eb); Semaphore_post(I2C_Sem); TEMPERATURE_SENSOR_ID_ENUM Sensor_i; - I2C_ReadingMsgQ = Mailbox_create(sizeof(I2C_ReadingMessageStruc), 40, NULL,&eb); - while(1) { Mailbox_pend(I2C_ReadingMsgQ , &I2C_ReadingMessage, BIOS_WAIT_FOREVER); diff --git a/Software/Embedded_SW/Embedded/Main.c b/Software/Embedded_SW/Embedded/Main.c index 05c3d8c04..04ab6e57d 100644 --- a/Software/Embedded_SW/Embedded/Main.c +++ b/Software/Embedded_SW/Embedded/Main.c @@ -261,6 +261,9 @@ int main(void) SysCtlUSBPLLEnable(); + if (Head_Type > HEAD_TYPE_SYLKO_WITHOUT_CARD) + Head_IO_Init(); + #ifndef EVALUATION_BOARD DeActivateAllSSR(); Control_Dryer_Fan(STOP,0);//Preventing unwanted movement at power up, since the default from FPGA is "0" (= START) @@ -278,7 +281,7 @@ int main(void) ActivateChiller();//WHS Cooler SSR9 //ActivateHeadMagnet(); #endif - + I2C_ReadingTask_Init(); //EMAC_initEMAC(); ControlInit(); @@ -324,8 +327,6 @@ int main(void) //Read_Speed_Sensor_TypeII();//must be delay between Set_Speed_Sensor_TypeII_Registers to Read_Speed_Sensor_TypeII //Test_ADS120_Internal_Temperature_Sensor(0); - if (Head_Type > HEAD_TYPE_SYLKO_WITHOUT_CARD) - Head_IO_Init(); #ifndef EVALUATION_BOARD Main_EEPROM_Read_Main_Card_SN(); diff --git a/Software/Embedded_SW/Embedded/Modules/AlarmHandling/AlarmHandling.c b/Software/Embedded_SW/Embedded/Modules/AlarmHandling/AlarmHandling.c index c2e121348..9fe67d773 100644 --- a/Software/Embedded_SW/Embedded/Modules/AlarmHandling/AlarmHandling.c +++ b/Software/Embedded_SW/Embedded/Modules/AlarmHandling/AlarmHandling.c @@ -924,10 +924,12 @@ uint32_t AlarmHandling_ControlTrigger(uint32_t IfIndex, uint32_t ReadValue) { AlarmHandlingMessageStruc Message; + if (AlarmHandlingActive == false) + return; //send message to the Millisec task Message.messageId = AlarmHandlingTrigger; Message.msglen = sizeof(AlarmHandlingMessageStruc); - AlarmHandlingTick +=10; + AlarmHandlingTick +=100; Message.tick = AlarmHandlingTick; if (AlarmHandlingMsgQ != NULL) Mailbox_post(AlarmHandlingMsgQ , &Message, BIOS_NO_WAIT); @@ -1007,7 +1009,7 @@ uint32_t AlarmHandlingStart(void) if ( AlarmHandlingActive == false) { AlarmHandlingActive = true; - AlarmHandlingControlId = AddControlCallback("Alarm Handling",AlarmHandling_ControlTrigger,eHundredMillisecond,TemplateDataReadCBFunction,0,0,0); + //AlarmHandlingControlId = AddControlCallback("Alarm Handling",AlarmHandling_ControlTrigger,eHundredMillisecond,TemplateDataReadCBFunction,0,0,0); } return OK; } @@ -1466,7 +1468,9 @@ uint32_t AlarmHandlingLoop(uint32_t tick) ReportWithPackageFilter(AlarmFilter,"Error in alarms data!!!!!!!!! ", __FILE__,__LINE__,AlarmItem[Alarm_i].EventType, RpFatalError, 0, Alarm_i); if ((tick%eOneSecond == 0)&&(EventsNotificationRequestAccepted==true)) + { SendEventNotifications(); + } return OK; } /****************************************************************************** @@ -1567,6 +1571,7 @@ void SendEventNotifications(void) } Task_restore(Key); responseContainer = createAllocatedContainer(MESSAGE_TYPE__StartEventsNotificationResponse, AlarmHandlingToken, false, &EventsResponse, &start_events_notification_response__pack, &start_events_notification_response__get_packed_size,&alarm_response_buffer); + responseContainer.has_continuous = true; responseContainer.continuous = true; uint8_t* container_buffer = my_malloc(message_container__get_packed_size(&responseContainer)); diff --git a/Software/Embedded_SW/Embedded/Modules/Control/MillisecTask.c b/Software/Embedded_SW/Embedded/Modules/Control/MillisecTask.c index fdd5feef9..a9b539690 100644 --- a/Software/Embedded_SW/Embedded/Modules/Control/MillisecTask.c +++ b/Software/Embedded_SW/Embedded/Modules/Control/MillisecTask.c @@ -623,6 +623,10 @@ uint32_t MillisecLowLoop(uint32_t tick) Trigger_PT100_Read();//call every 50mSec (minimum delay 30mSec) //Set_HeadCard_PT100();//call every 50mSec (minimum delay 30mSec) } + if(m70msecTick) + { + AlarmHandling_ControlTrigger(0,0); + } if (m90msecTick) { for (Sensor_i = StartPT100;Sensor_i < MAX_HEAD_CARD_TEMP_SENS_ID;Sensor_i++) diff --git a/Software/Embedded_SW/Embedded/Modules/Control/control.c b/Software/Embedded_SW/Embedded/Modules/Control/control.c index e85a36057..02a216ba6 100644 --- a/Software/Embedded_SW/Embedded/Modules/Control/control.c +++ b/Software/Embedded_SW/Embedded/Modules/Control/control.c @@ -65,9 +65,10 @@ #include "MillisecTask.h" - +//#define CONTROL_DEBUG +#define DURATION_LIMIT 5 /******************** Definitions ********************************************/ -#define MAX_TANGO_CONTROL_DEVICES 120 +#define MAX_TANGO_CONTROL_DEVICES 100 /******************** STRUCTURES AND ENUMs ********************************************/ @@ -383,6 +384,7 @@ uint32_t AddControlCallback(char* Name, ControlCBFunction Callback, uint32_t Ct if (deviceId == 0xFF) { LOG_ERROR(deviceId, "Add Callback failed"); + AlarmHandlingSetAlarm(EVENT_TYPE__FPGA_WATCHDOG_ACTIVATED,true); return 0xFF; } key = GateMutex_enter(gateControlDB); @@ -564,12 +566,16 @@ void ResetControlTime(void) } uint32_t ControlLowLoop(uint32_t tick) { - uint32_t tempp,tempq,delta; uint32_t skipped_ticks = 0; +#ifdef CONTROL_DEBUG + uint32_t tempp,tempq,delta; + uint32_t sys_ticks_start = msec_millisecondCounter,sys_ticks_end,max = 0,dev = 0; +#endif if (tick-prevtick>1) { skipped_ticks = tick-prevtick-1; - //Report("ControlLowLoop skipped",__FILE__,tick,(int)prevtick,RpWarning,(int)skipped_ticks,0); + if (tick-prevtick>10) + Report("ControlLowLoop skipped",__FILE__,tick,(int)prevtick,RpWarning,(int)skipped_ticks,0); } prevtick = tick; @@ -586,8 +592,9 @@ uint32_t ControlLowLoop(uint32_t tick) ControlBacklog[backlogindex]=ControlLowDevice_i; if ( ++backlogindex >= MAX_BACKLOG_SIZE) backlogindex = 0; - +#ifdef CONTROL_DEBUG tempp = HibernateRTCSSGet(); +#endif if(ControlArray[ControlLowDevice_i].ControlDataReadPtr) ControlDatalog[ControlLowDevice_i] = ControlArray[ControlLowDevice_i].ControlDataReadPtr( ControlArray[ControlLowDevice_i].Parameter1); else @@ -596,6 +603,7 @@ uint32_t ControlLowLoop(uint32_t tick) ControlArray[ControlLowDevice_i].ControlCallbackPtr(ControlArray[ControlLowDevice_i].IfIndex, ControlDatalog[ControlLowDevice_i]); else LOG_ERROR (ControlLowDevice_i, "Invalid callback ptr"); +#ifdef CONTROL_DEBUG tempq = HibernateRTCSSGet(); if (tempq < tempp) { @@ -603,14 +611,30 @@ uint32_t ControlLowLoop(uint32_t tick) } else delta = tempq - tempp; - if (ControlTime[ControlLowDevice_i] DURATION_LIMIT) + { + Report("ControlLowLoop long",__FILE__,sys_ticks_end-sys_ticks_start,(int)sys_ticks_end,RpWarning,(int)sys_ticks_start,0); + for (ControlLowDevice_i = 0; ControlLowDevice_i < MAX_TANGO_CONTROL_DEVICES;ControlLowDevice_i++) + { + if (ControlTime[ControlLowDevice_i]>max) + { + max = ControlTime[ControlLowDevice_i]; + dev = ControlLowDevice_i; + } + } + Report(ControlArray[dev].Name,__FILE__,__LINE__,dev,RpWarning,max,0); + } +#endif //ROM_IntMasterEnable(); return OK; diff --git a/Software/Embedded_SW/Embedded/Modules/Diagnostics/Diagnostics.c b/Software/Embedded_SW/Embedded/Modules/Diagnostics/Diagnostics.c index e63314bac..5a0432389 100644 --- a/Software/Embedded_SW/Embedded/Modules/Diagnostics/Diagnostics.c +++ b/Software/Embedded_SW/Embedded/Modules/Diagnostics/Diagnostics.c @@ -524,6 +524,8 @@ void DiagnosticOneMinuteCollection(void) void DiagnosticOneSecCollection(void) { int i; + memset(HeaterCounterIndex,0,sizeof(HeaterCounterIndex)); + if (Head_Type == HEAD_TYPE_SYLKO_WITHOUT_CARD) { DiagnosticLoadTemperature(HARDWARE_PID_CONTROL_TYPE__MixerHeater, MillisecGetTemperatures( MIXER_PT100)); @@ -625,7 +627,6 @@ void DiagnosticsReset(void) memset(MotorCounterIndex,0,sizeof(MotorCounterIndex)); memset(DancerErrorCounterIndex,0,sizeof(DancerErrorCounterIndex)); SpeedCounterIndex = 0; - memset(HeaterCounterIndex,0,sizeof(HeaterCounterIndex)); DiagnosticsIndex = 0; DiagnosticsMonitor.n_dancer1angle = 0; DiagnosticsMonitor.n_dancer2angle = 0; @@ -912,6 +913,7 @@ void SendDiagnostics(void) // diagnosticsresponseContainer = createContainer(MESSAGE_TYPE__StartDiagnosticsResponse, DiagnosticsToken, false, &response, &start_diagnostics_response__pack, &start_diagnostics_response__get_packed_size); diagnosticsresponseContainer = createAllocatedContainer(MESSAGE_TYPE__StartDiagnosticsResponse, DiagnosticsToken, false, &response, &start_diagnostics_response__pack, &start_diagnostics_response__get_packed_size,diagnostics_response_ptr); + diagnosticsresponseContainer.has_continuous = true; diagnosticsresponseContainer.continuous = true; if (diagnosticsresponseContainer.data.data) diff --git a/Software/Embedded_SW/Embedded/Modules/Diagnostics/DiagnosticsHoming.c b/Software/Embedded_SW/Embedded/Modules/Diagnostics/DiagnosticsHoming.c index c58d54a8c..674135180 100644 --- a/Software/Embedded_SW/Embedded/Modules/Diagnostics/DiagnosticsHoming.c +++ b/Software/Embedded_SW/Embedded/Modules/Diagnostics/DiagnosticsHoming.c @@ -45,6 +45,7 @@ uint32_t MotorHomingRequestCallback(uint32_t deviceID, uint32_t ReadValue) MotorHomingResponse response = MOTOR_HOMING_RESPONSE__INIT; responseContainer = createContainer(MESSAGE_TYPE__MotorHomingResponse, HomingToken[deviceID], true, &response, &motor_homing_response__pack, &motor_homing_response__get_packed_size); + responseContainer.has_continuous = true; responseContainer.continuous = true; uint8_t* container_buffer = my_malloc(message_container__get_packed_size(&responseContainer)); size_t container_size = message_container__pack(&responseContainer, container_buffer); @@ -141,6 +142,7 @@ uint32_t MotorHomingRequestFunc(MessageContainer* requestContainer) responseContainer.error = ERROR_CODE__INVALID_PROCESS_ID; responseContainer.errormessage = "Job Active or incorrect motor ID"; responseContainer = createContainer(MESSAGE_TYPE__MotorHomingResponse, requestContainer->token, true, &response, &motor_homing_response__pack, &motor_homing_response__get_packed_size); + responseContainer.has_continuous = true; responseContainer.continuous = true; uint8_t* container_buffer = my_malloc(message_container__get_packed_size(&responseContainer)); size_t container_size = message_container__pack(&responseContainer, container_buffer); @@ -186,6 +188,7 @@ uint32_t DispenserHomingRequestCallback(uint32_t deviceID, uint32_t ReadValue) //MotorSetMicroStep(deviceID, MotorsCfg[deviceID].microstep); responseContainer = createContainer(MESSAGE_TYPE__DispenserHomingResponse, HomingToken[MotorId], true, &response, &motor_homing_response__pack, &motor_homing_response__get_packed_size); + responseContainer.has_continuous = true; responseContainer.continuous = true; uint8_t* container_buffer = my_malloc(message_container__get_packed_size(&responseContainer)); size_t container_size = message_container__pack(&responseContainer, container_buffer); @@ -212,7 +215,8 @@ uint32_t DispenserHomingRequestFunc(MessageContainer* requestContainer) if (speed == 0) speed = 150; responseContainer = createContainer(MESSAGE_TYPE__DispenserHomingResponse, requestContainer->token, false, &response, &dispenser_homing_response__pack, &dispenser_homing_response__get_packed_size); - responseContainer.continuous = true; + responseContainer.has_continuous = true; +responseContainer.continuous = true; uint8_t* container_buffer = my_malloc(message_container__get_packed_size(&responseContainer)); size_t container_size = message_container__pack(&responseContainer, container_buffer); my_free(responseContainer.data.data); diff --git a/Software/Embedded_SW/Embedded/Modules/General/GeneralHardware.c b/Software/Embedded_SW/Embedded/Modules/General/GeneralHardware.c index b05cb61e1..828961d17 100644 --- a/Software/Embedded_SW/Embedded/Modules/General/GeneralHardware.c +++ b/Software/Embedded_SW/Embedded/Modules/General/GeneralHardware.c @@ -145,6 +145,7 @@ uint32_t HWConfigurationInit(void) if (buffer) free (buffer); + Trigger_Head_Init_PT100();//OK //EmbeddedParametersInit(); IDS_Dispenser_Content_Init(); //ProcessParamsInit(); diff --git a/Software/Embedded_SW/Embedded/Modules/General/MachineStatus.c b/Software/Embedded_SW/Embedded/Modules/General/MachineStatus.c index 157841365..3f557496c 100644 --- a/Software/Embedded_SW/Embedded/Modules/General/MachineStatus.c +++ b/Software/Embedded_SW/Embedded/Modules/General/MachineStatus.c @@ -48,10 +48,10 @@ int MachineUpdateResponseFunc(void) return OK; StartMachineStatusUpdateResponse response = START_MACHINE_STATUS_UPDATE_RESPONSE__INIT; - MachineStatus MachineStatus; + MachineStatus MachineStatus = MACHINE_STATUS__INIT; response.status = &MachineStatus; - machine_status__init(&MachineStatus); + //machine_status__init(&MachineStatus); MachineStatus.has_state = true; MachineStatus.state = StoredMachineStatus; MachineStatus.n_idspackslevels = 0; @@ -83,6 +83,7 @@ int MachineUpdateResponseFunc(void) responseContainer = /*MachineUpdate*/createContainer(MESSAGE_TYPE__StartMachineStatusUpdateResponse, MachineUpdateToken, false, &response, &start_machine_status_update_response__pack, &start_machine_status_update_response__get_packed_size); + responseContainer.has_continuous = true; responseContainer.continuous = true; //if (responseContainer.data.data) { @@ -138,6 +139,7 @@ uint32_t StopMachineUpdateFunc(MessageContainer* requestContainer) //TODO Handle the request!!!! MachineUpdateStopReporting(); responseContainer = createContainer(MESSAGE_TYPE__StopMachineStatusUpdateResponse, MachineUpdateToken, false, &response, &stop_machine_status_update_response__pack, &stop_machine_status_update_response__get_packed_size); + responseContainer.has_continuous = true; responseContainer.continuous = true; uint8_t* container_buffer = my_malloc(message_container__get_packed_size(&responseContainer)); size_t container_size = message_container__pack(&responseContainer, container_buffer); diff --git a/Software/Embedded_SW/Embedded/Modules/Heaters/Heaters_init.c b/Software/Embedded_SW/Embedded/Modules/Heaters/Heaters_init.c index a91919bc4..237722779 100644 --- a/Software/Embedded_SW/Embedded/Modules/Heaters/Heaters_init.c +++ b/Software/Embedded_SW/Embedded/Modules/Heaters/Heaters_init.c @@ -63,8 +63,6 @@ uint32_t Heaters_Init(void) int i; //ROM_TimerDisable(Heater_timerBase, TIMER_A); - Trigger_Head_Init_PT100();//OK - FPGA_SensorInitConfig(); memset(HeaterControl,0,sizeof(HeaterControl)); diff --git a/Software/Embedded_SW/Embedded/Modules/IDS/IDS_maint.c b/Software/Embedded_SW/Embedded/Modules/IDS/IDS_maint.c index ad0f29392..e1be0358b 100644 --- a/Software/Embedded_SW/Embedded/Modules/IDS/IDS_maint.c +++ b/Software/Embedded_SW/Embedded/Modules/IDS/IDS_maint.c @@ -275,9 +275,9 @@ uint32_t IDS_HomeDispenser (uint32_t DispenserId, uint32_t speed , callback_fptr IDS_Dispenser_RefillStarted(DispenserId,1); if (DispenserId== LUBRICANT_DISPENSER) { - MotorMovetoLimitSwitch (MotorId,1-MotorsCfg[MotorId].directionthreadwize, speed/2, Dispenser_Id_to_LS_Id[DispenserId], IDS_HomeDispenserCallback,0); - CurrentDispenserSpeed[DispenserId] = speed/2; - Report("IDS_HomeDispenser ",__FILE__,__LINE__,(int)DispenserId,RpWarning,speed/2,0); + MotorMovetoLimitSwitch (MotorId,1-MotorsCfg[MotorId].directionthreadwize, speed/4, Dispenser_Id_to_LS_Id[DispenserId], IDS_HomeDispenserCallback,0); + CurrentDispenserSpeed[DispenserId] = speed/4; + Report("IDS_HomeDispenser ",__FILE__,__LINE__,(int)DispenserId,RpWarning,speed/4,0); } else { diff --git a/Software/Embedded_SW/Embedded/Modules/Thread/ThreadLoad.c b/Software/Embedded_SW/Embedded/Modules/Thread/ThreadLoad.c index a629afc50..5dc354785 100644 --- a/Software/Embedded_SW/Embedded/Modules/Thread/ThreadLoad.c +++ b/Software/Embedded_SW/Embedded/Modules/Thread/ThreadLoad.c @@ -1356,6 +1356,7 @@ uint32_t ThreadLoadingReport(void) //------------------------------------------------------------------------------------------- responseContainer = createContainer(MESSAGE_TYPE__StartThreadLoadingResponse, ThreadLoadingToken, last, &response, &start_thread_loading_response__pack, &start_thread_loading_response__get_packed_size); + responseContainer.has_continuous = true; responseContainer.continuous = true; uint8_t* container_buffer = my_malloc(message_container__get_packed_size(&responseContainer)); size_t container_size = message_container__pack(&responseContainer, container_buffer); diff --git a/Software/Embedded_SW/Embedded/StateMachines/Initialization/PowerOffSequence.c b/Software/Embedded_SW/Embedded/StateMachines/Initialization/PowerOffSequence.c index 03909bb56..1e8511fb1 100644 --- a/Software/Embedded_SW/Embedded/StateMachines/Initialization/PowerOffSequence.c +++ b/Software/Embedded_SW/Embedded/StateMachines/Initialization/PowerOffSequence.c @@ -618,6 +618,7 @@ uint32_t PowerDownUpdate(POWER_OFF_STAGES_ENUM stage) } Report("PowerDownUpdate",__FILE__,last,(int)response.progresspercentage,RpWarning,(int)stage,0); responseContainer = createContainer(MESSAGE_TYPE__StartPowerDownResponse, PowerDownToken, last, &response, &start_power_down_response__pack, &start_power_down_response__get_packed_size); + responseContainer.has_continuous = true; responseContainer.continuous = true; uint8_t* container_buffer = my_malloc(message_container__get_packed_size(&responseContainer)); size_t container_size = message_container__pack(&responseContainer, container_buffer); @@ -670,6 +671,7 @@ uint32_t AbortPowerDownFunc(MessageContainer* requestContainer) //TODO Handle the request!!!! //PowerDownStopReporting(); responseContainer = createContainer(MESSAGE_TYPE__AbortPowerDownResponse, requestContainer->token, false, &response, &abort_power_down_response__pack, &abort_power_down_response__get_packed_size); + responseContainer.has_continuous = true; responseContainer.continuous = true; uint8_t* container_buffer = my_malloc(message_container__get_packed_size(&responseContainer)); size_t container_size = message_container__pack(&responseContainer, container_buffer); diff --git a/Software/Embedded_SW/Embedded/StateMachines/Printing/JobSTM.c b/Software/Embedded_SW/Embedded/StateMachines/Printing/JobSTM.c index b1edd61b0..d36de9bd7 100644 --- a/Software/Embedded_SW/Embedded/StateMachines/Printing/JobSTM.c +++ b/Software/Embedded_SW/Embedded/StateMachines/Printing/JobSTM.c @@ -942,6 +942,9 @@ void SendJobProgress(double ProcessedLength, int SegmentId, bool done, char *Mes responseContainer.error = ERROR_CODE__CONTINUOUS_RESPONSE_ABORTED; } } + responseContainer.has_continuous = true; + responseContainer.continuous = true; + if (container_buffer) { size_t container_size = message_container__pack(&responseContainer, container_buffer); -- cgit v1.3.1 From 5bf44be1121abf9dd36c948c19ca0650f5571c3e Mon Sep 17 00:00:00 2001 From: Shlomo Hecht Date: Thu, 6 Feb 2020 13:51:20 +0200 Subject: fix job bug and I2C_Task for LP machines --- .../Embedded/Common/SWUpdate/FirmwareUpgrade.c | 33 ++++++++++------------ .../Embedded/Drivers/I2C_Communication/I2C_Task.c | 2 +- .../Embedded_SW/Embedded/Modules/Control/control.c | 4 +-- .../Modules/Diagnostics/DiagnosticsHoming.c | 2 +- .../Embedded/Modules/Thread/Thread_init.c | 4 +-- .../Embedded/StateMachines/Printing/JobSTM.c | 5 ++-- 6 files changed, 23 insertions(+), 27 deletions(-) (limited to 'Software/Embedded_SW/Embedded/Modules/Thread') diff --git a/Software/Embedded_SW/Embedded/Common/SWUpdate/FirmwareUpgrade.c b/Software/Embedded_SW/Embedded/Common/SWUpdate/FirmwareUpgrade.c index 79bbb4df8..bf1151d6e 100644 --- a/Software/Embedded_SW/Embedded/Common/SWUpdate/FirmwareUpgrade.c +++ b/Software/Embedded_SW/Embedded/Common/SWUpdate/FirmwareUpgrade.c @@ -53,6 +53,7 @@ uint32_t ActivateVersionCallBackFunction(uint32_t IfIndex, uint32_t BusyFlag) { ActivateVersionResponse response = ACTIVATE_VERSION_RESPONSE__INIT; MessageContainer responseContainer; + bool last = true; usnprintf(activateString, 1000, "file %d of %d bytes %d of %d",CurrentRunningFile,NumberOfFiles,vme_index,CurrentFileSize); @@ -60,16 +61,9 @@ uint32_t ActivateVersionCallBackFunction(uint32_t IfIndex, uint32_t BusyFlag) if (CurrentRunningFiletoken, false, &response, &dispenser_homing_response__pack, &dispenser_homing_response__get_packed_size); responseContainer.has_continuous = true; -responseContainer.continuous = true; + responseContainer.continuous = true; uint8_t* container_buffer = my_malloc(message_container__get_packed_size(&responseContainer)); size_t container_size = message_container__pack(&responseContainer, container_buffer); my_free(responseContainer.data.data); diff --git a/Software/Embedded_SW/Embedded/Modules/Thread/Thread_init.c b/Software/Embedded_SW/Embedded/Modules/Thread/Thread_init.c index fb3b78752..e53adabb7 100644 --- a/Software/Embedded_SW/Embedded/Modules/Thread/Thread_init.c +++ b/Software/Embedded_SW/Embedded/Modules/Thread/Thread_init.c @@ -73,14 +73,14 @@ uint32_t MotorsConfigMessage(HardwareConfiguration * HWrequest) MotorsCfg[Motor_i].pulseperround = request->pulseperround; MotorsCfg[Motor_i].pulleyradius = request->pulleyradius; MotorsCfg[Motor_i].configword = request->configword; - if(MotorDriverResponse[Motor_i].DriverType == CombinrdMotDriver) + /*if(MotorDriverResponse[Motor_i].DriverType == CombinrdMotDriver) { MotorsCfg[Motor_i].directionthreadwize = request->directionthreadwize ^ 1;//PowerSTEP01 } else { MotorsCfg[Motor_i].directionthreadwize = request->directionthreadwize;//L6470 + L6472 - } + }*/ MotorsCfg[Motor_i].kvalhold = request->kvalhold; MotorsCfg[Motor_i].kvalrun = request->kvalrun; MotorsCfg[Motor_i].kvalacc = request->kvalacc; diff --git a/Software/Embedded_SW/Embedded/StateMachines/Printing/JobSTM.c b/Software/Embedded_SW/Embedded/StateMachines/Printing/JobSTM.c index d36de9bd7..a62d1b4b7 100644 --- a/Software/Embedded_SW/Embedded/StateMachines/Printing/JobSTM.c +++ b/Software/Embedded_SW/Embedded/StateMachines/Printing/JobSTM.c @@ -926,6 +926,8 @@ void SendJobProgress(double ProcessedLength, int SegmentId, bool done, char *Mes //responseContainer = createContainer(MESSAGE_TYPE__JobResponse, JobToken, done, &JobResponseMsg, &job_response__pack, &job_response__get_packed_size); responseContainer = createAllocatedContainer(MESSAGE_TYPE__JobResponse, JobToken, done, &JobResponseMsg, &job_response__pack, &job_response__get_packed_size,&JobStatusBuffer); } + responseContainer.has_continuous = true; + responseContainer.continuous = true; container_buffer = my_malloc(message_container__get_packed_size(&responseContainer)); if (done == true) @@ -942,9 +944,6 @@ void SendJobProgress(double ProcessedLength, int SegmentId, bool done, char *Mes responseContainer.error = ERROR_CODE__CONTINUOUS_RESPONSE_ABORTED; } } - responseContainer.has_continuous = true; - responseContainer.continuous = true; - if (container_buffer) { size_t container_size = message_container__pack(&responseContainer, container_buffer); -- cgit v1.3.1 From 589bffe306db793987c17cd46f1dcac81f47bdcb Mon Sep 17 00:00:00 2001 From: Shlomo Hecht Date: Fri, 7 Feb 2020 13:03:22 +0200 Subject: remove some warnings --- .../Embedded/Common/SWUpdate/FirmwareUpgrade.c | 1 + .../Embedded/Common/Utilities/idle_task.c | 6 +- .../Embedded_SW/Embedded/Common/report/report.h | 1 + .../Embedded/Common/report/reportInit.c | 13 ++-- .../Head_Card/IO_Ports/Heaters/Head_Heaters.h | 2 +- .../Embedded/Drivers/I2C_Communication/I2C_Task.c | 21 ++---- .../Embedded_SW/Embedded/Drivers/Valves/Valve.c | 4 +- .../Embedded/Drivers/flash_ram/FlashProgram.c | 2 +- Software/Embedded_SW/Embedded/Main.c | 1 + .../Embedded/Modules/AlarmHandling/AlarmHandling.c | 5 +- .../Embedded/Modules/AlarmHandling/AlarmHandling.h | 2 + .../Embedded/Modules/Control/MillisecTask.c | 8 +- .../Embedded_SW/Embedded/Modules/Control/control.c | 2 + .../Modules/Diagnostics/DiagnosticActions.c | 4 +- .../Embedded/Modules/General/GeneralHardware.c | 1 + .../Embedded_SW/Embedded/Modules/Heaters/Heaters.h | 1 + .../Embedded/Modules/Heaters/Heaters_init.c | 1 + .../Embedded/Modules/Heaters/Heaters_print.c | 88 ++++++++++++++++++++-- .../Modules/Stubs_Handler/StubRealTimeUsage.c | 2 +- .../Embedded/Modules/Thread/ThreadLoad.c | 2 +- .../Embedded/Modules/Thread/Thread_print.c | 8 +- 21 files changed, 124 insertions(+), 51 deletions(-) (limited to 'Software/Embedded_SW/Embedded/Modules/Thread') diff --git a/Software/Embedded_SW/Embedded/Common/SWUpdate/FirmwareUpgrade.c b/Software/Embedded_SW/Embedded/Common/SWUpdate/FirmwareUpgrade.c index bf1151d6e..24f02f60c 100644 --- a/Software/Embedded_SW/Embedded/Common/SWUpdate/FirmwareUpgrade.c +++ b/Software/Embedded_SW/Embedded/Common/SWUpdate/FirmwareUpgrade.c @@ -24,6 +24,7 @@ #include "drivers/FPGA/FPGA_GPIO/FPGA_GPIO.h" #include "drivers/FPGA/Full_Vme/FPGA_Programming_Up.h" #include "drivers/FPGA/Full_Vme/ispvme/vmopcode.h" +#include "drivers/Flash_ram/FlashProgram.h" #include "Common/Utilities/Utils.h" #include "Common/SWUpdate/FileSystem.h" diff --git a/Software/Embedded_SW/Embedded/Common/Utilities/idle_task.c b/Software/Embedded_SW/Embedded/Common/Utilities/idle_task.c index 8d1040ea2..9a1de790e 100644 --- a/Software/Embedded_SW/Embedded/Common/Utilities/idle_task.c +++ b/Software/Embedded_SW/Embedded/Common/Utilities/idle_task.c @@ -202,9 +202,9 @@ uint32_t unload_max_count=0; void IdleTaskGetLoadTable (uint32_t *aBuffer) { int i; - for (i=0;i<100;i++) - aBuffer[i] = idle_load_table[i]; - //memcpy (aBuffer,idle_load_table,sizeof(idle_load_table)); + //for (i=0;i<100;i++) + // aBuffer[i] = idle_load_table[i]; + memcpy (aBuffer,idle_load_table,sizeof(idle_load_table)); } uint32_t MillisecCounter = 0; uint32_t ControlCounter = 0; diff --git a/Software/Embedded_SW/Embedded/Common/report/report.h b/Software/Embedded_SW/Embedded/Common/report/report.h index 35253ce80..2d7e93ca5 100644 --- a/Software/Embedded_SW/Embedded/Common/report/report.h +++ b/Software/Embedded_SW/Embedded/Common/report/report.h @@ -130,6 +130,7 @@ void ReportResetReason(void); uint32_t OpenLogFile(void); uint32_t CloseLogFile(void); bool isReportActive(void); +uint32_t LogToFile(char *message, char *FileName, int LineNumber,int errorCode,int Severity,int parameter); /*************************************************************************** diff --git a/Software/Embedded_SW/Embedded/Common/report/reportInit.c b/Software/Embedded_SW/Embedded/Common/report/reportInit.c index c8a11ce10..6ed149039 100644 --- a/Software/Embedded_SW/Embedded/Common/report/reportInit.c +++ b/Software/Embedded_SW/Embedded/Common/report/reportInit.c @@ -79,9 +79,9 @@ bool isReportActive(void) } uint32_t OpenLogFile(void) { - uint32_t Bytes = 0; - int len; - /*LogFresult = f_open(LogFileHandle,LogPath,FA_OPEN_ALWAYS | FA_WRITE | FA_READ); + /*int len; + uint32_t Bytes = 0; + LogFresult = f_open(LogFileHandle,LogPath,FA_OPEN_ALWAYS | FA_WRITE | FA_READ); if (LogFresult == FR_OK) { if (LogFileHandle->fsize < 100000) @@ -105,11 +105,12 @@ uint32_t LogToFile(char *message, /* The formatted message int Severity, /* user parameter no. 1 */ int parameter) { - uint32_t Bytes = 0; - int len; /* print user supplied error code */ - /* len = usnprintf(message, 300, "\r\n %s, file %s line %d code %d sev %d,param %d",message,FileName, LineNumber,errorCode, Severity, parameter); + /* uint32_t Bytes = 0; + int len; + + len = usnprintf(message, 300, "\r\n %s, file %s line %d code %d sev %d,param %d",message,FileName, LineNumber,errorCode, Severity, parameter); LogFresult = f_write(LogFileHandle,message,len,&Bytes );*/ return LogFresult; diff --git a/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/Head_Card/IO_Ports/Heaters/Head_Heaters.h b/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/Head_Card/IO_Ports/Heaters/Head_Heaters.h index fc3f88057..32a0dd8e0 100644 --- a/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/Head_Card/IO_Ports/Heaters/Head_Heaters.h +++ b/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/Head_Card/IO_Ports/Heaters/Head_Heaters.h @@ -8,7 +8,7 @@ #ifndef DRIVERS_I2C_COMMUNICATION_HEAD_CARD_HEATERS_HEAD_HEATERS_H_ #define DRIVERS_I2C_COMMUNICATION_HEAD_CARD_HEATERS_HEAD_HEATERS_H_ -#warning move to heaters enum + typedef enum { HEADCARD_HIT_ZN1, diff --git a/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/I2C_Task.c b/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/I2C_Task.c index 8670a56b4..f659d965a 100644 --- a/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/I2C_Task.c +++ b/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/I2C_Task.c @@ -74,21 +74,12 @@ void Trigger_Heater_Current_Read(void) { I2C_ReadingMessageStruc I2C_ReadingMessage; uint8_t Heater_i=0; - uint8_t Heater_Lim=0; - if(Head_Type == HEAD_TYPE_SYLKO_WITHOUT_CARD) - Heater_Lim = NUM_OF_CURRENT_HEATERS; - if(Head_Type == HEAD_TYPE_SYLKO) - Heater_Lim = HEAD_NUM_OF_ADC; - if(Head_Type == HEAD_TYPE_STAPLE_SPUN) - Heater_Lim = HEAD_NUM_OF_ADC; - - // for (Heater_i = 0;Heater_i < Heater_Lim;Heater_i++)//No need - reads all inputs at the same time - { - I2C_ReadingMessage.messageId = Heater_Current_Reading; - I2C_ReadingMessage.parameter = Heater_i; - if (I2C_ReadingMsgQ != NULL) - Mailbox_post(I2C_ReadingMsgQ , &I2C_ReadingMessage, BIOS_NO_WAIT); - } + + I2C_ReadingMessage.messageId = Heater_Current_Reading; + I2C_ReadingMessage.parameter = Heater_i; + if (I2C_ReadingMsgQ != NULL) + Mailbox_post(I2C_ReadingMsgQ , &I2C_ReadingMessage, BIOS_NO_WAIT); + return; } diff --git a/Software/Embedded_SW/Embedded/Drivers/Valves/Valve.c b/Software/Embedded_SW/Embedded/Drivers/Valves/Valve.c index 59405be76..cf54019c5 100644 --- a/Software/Embedded_SW/Embedded/Drivers/Valves/Valve.c +++ b/Software/Embedded_SW/Embedded/Drivers/Valves/Valve.c @@ -417,7 +417,7 @@ uint32_t Valve3WayCallBackFunction(uint32_t IfIndex, uint32_t BusyFlag) uint32_t Control3WayValvesWithCallback (Valves_t _ValveId, bool direction, callback_fptr callback) //direction: MidTank_Dispenser or Dispenser_Mixer { - uint32_t busy = false; + //uint32_t busy = false; //Report("Control3WayValvesWithCallback ",__FILE__,__LINE__,(int)_ValveId,RpWarning,(int)direction,0); if (Valve3WayControlId[_ValveId] != 0xFF) { @@ -432,7 +432,7 @@ uint32_t Control3WayValvesWithCallback (Valves_t _ValveId, bool direction, callb Report("Add control callback failed",__FILE__,__LINE__,(int)_ValveId,RpWarning,(int)Valve3WayControlId[_ValveId],0); //else // Report("Add control callback",__FILE__,__LINE__,(int)_ValveId,RpWarning,(int)Valve3WayControlId[_ValveId],0); - busy = FPGA_GetDispenserValveBusyOCD(_ValveId,0); + /*busy = */FPGA_GetDispenserValveBusyOCD(_ValveId,0); //Report("Set valve id, dir, busy",__FILE__,_ValveId,(int)direction,RpWarning,(int)busy,0); EnableDisableDispenserValve(_ValveId, ENABLE); diff --git a/Software/Embedded_SW/Embedded/Drivers/flash_ram/FlashProgram.c b/Software/Embedded_SW/Embedded/Drivers/flash_ram/FlashProgram.c index 37c2280c9..bef2b1727 100644 --- a/Software/Embedded_SW/Embedded/Drivers/flash_ram/FlashProgram.c +++ b/Software/Embedded_SW/Embedded/Drivers/flash_ram/FlashProgram.c @@ -132,7 +132,7 @@ uint32_t ReadAppAndProgram(uint32_t ui32FlashStart,uint32_t ui32FileSize,void* b uint32_t EraseFlashSection(uint32_t ui32FlashStart,uint32_t ui32FileSize) { volatile uint32_t ui32Idx; - uint32_t status; + //uint32_t status; #ifdef FLASH_DEBUG Address[RxIndex] = ui32FlashStart; Size[RxIndex] = ui32FileSize; diff --git a/Software/Embedded_SW/Embedded/Main.c b/Software/Embedded_SW/Embedded/Main.c index da92b6fdf..393a366ac 100644 --- a/Software/Embedded_SW/Embedded/Main.c +++ b/Software/Embedded_SW/Embedded/Main.c @@ -53,6 +53,7 @@ #include "Modules/Control/MillisecTask.h" #include "Modules/Heaters/Heaters_ex.h" #include "Modules/Ids/Ids_ex.h" +#include "Modules/AlarmHandling/AlarmHandling.h" #include "StateMachines/Printing/PrintingSTM.h" #include "StateMachines/Initialization/InitSequence.h" diff --git a/Software/Embedded_SW/Embedded/Modules/AlarmHandling/AlarmHandling.c b/Software/Embedded_SW/Embedded/Modules/AlarmHandling/AlarmHandling.c index 9fe67d773..03135c0d5 100644 --- a/Software/Embedded_SW/Embedded/Modules/AlarmHandling/AlarmHandling.c +++ b/Software/Embedded_SW/Embedded/Modules/AlarmHandling/AlarmHandling.c @@ -876,7 +876,6 @@ JobEndReasonEnum AlarmHandlingPrepareJob(void *CurrentJob) { if (HeaterCheckReady()==false) { -#warning fit to new head with new alarms for (Heater_i=HEATER_TYPE__DryerAirHeater;Heater_i - +#include "Drivers/I2C_Communication/I2C_Task.h" +#include "Drivers/I2C_Communication/I2C.h" #include "modules/ids/ids_ex.h" /******************************************************************************** diff --git a/Software/Embedded_SW/Embedded/Modules/General/GeneralHardware.c b/Software/Embedded_SW/Embedded/Modules/General/GeneralHardware.c index 35065cc2a..ec7650f3d 100644 --- a/Software/Embedded_SW/Embedded/Modules/General/GeneralHardware.c +++ b/Software/Embedded_SW/Embedded/Modules/General/GeneralHardware.c @@ -40,6 +40,7 @@ #include "drivers/I2C_Communication/DAC/Blower.h" #include "drivers/Valves/Valve.h" #include "drivers/I2C_Communication/ADC_MUX/ADC_MUX.h" +#include "Drivers/I2C_Communication/I2C.h" #include "drivers/Flash_ram/MCU_E2Prom.h" #include "StateMachines/Printing/PrintingSTM.h" diff --git a/Software/Embedded_SW/Embedded/Modules/Heaters/Heaters.h b/Software/Embedded_SW/Embedded/Modules/Heaters/Heaters.h index 05425cc45..b1d870919 100644 --- a/Software/Embedded_SW/Embedded/Modules/Heaters/Heaters.h +++ b/Software/Embedded_SW/Embedded/Modules/Heaters/Heaters.h @@ -17,6 +17,7 @@ extern int DCTimeSliceAllocation[HEATER_TYPE_MAX_HEATERS]; extern int NumberOFSlicesInUse; extern uint32_t MillisecondsPerChange; +void initializeArrays(void); typedef struct HeaterPIDControlConfigstruc { diff --git a/Software/Embedded_SW/Embedded/Modules/Heaters/Heaters_init.c b/Software/Embedded_SW/Embedded/Modules/Heaters/Heaters_init.c index 237722779..0f6cb5124 100644 --- a/Software/Embedded_SW/Embedded/Modules/Heaters/Heaters_init.c +++ b/Software/Embedded_SW/Embedded/Modules/Heaters/Heaters_init.c @@ -68,6 +68,7 @@ uint32_t Heaters_Init(void) memset(HeaterControl,0,sizeof(HeaterControl)); for (i = 0;i HEAD_TYPE_SYLKO_WITHOUT_CARD) + { + HeaterId2PT100Id[HEATER_TYPE__DryerAirHeater] = DRYER_AIR_PT100; + HeaterId2PT100Id[HEATER_TYPE__DryerMainHeater] = DRYER_MAIN_PT100; + HeaterId2PT100Id[HEATER_TYPE__DryerSecondaryHeater] = DRYER_SECONDARY_PT100; + HeaterId2PT100Id[HEATER_TYPE__HeaterZone1] = HEAD_PT100_ZONE_1_0X80_0; + HeaterId2PT100Id[HEATER_TYPE__HeaterZone2] = HEAD_PT100_ZONE_2_0X80_1; + HeaterId2PT100Id[HEATER_TYPE__HeaterZone3] = HEAD_PT100_ZONE_3_0X82_0; + HeaterId2PT100Id[HEATER_TYPE__HeaterZone4] = HEAD_PT100_ZONE_4_0X82_1; + HeaterId2PT100Id[HEATER_TYPE__HeaterZone5] = HEAD_PT100_ZONE_5_0X84_0; + HeaterId2PT100Id[HEATER_TYPE__HeaterZone6] = HEAD_PT100_ZONE_6_0X84_1; + HeaterId2PT100Id[HEATER_TYPE__MixerHeater] = HEAD_PT100_MIXER_0X8E_0; + HeaterId2PT100Id[HEATER_TYPE__HeaterZone7] = HEAD_PT100_ZONE_7_0X86_0; + HeaterId2PT100Id[HEATER_TYPE__HeaterZone8] = HEAD_PT100_ZONE_8_0X86_1; + HeaterId2PT100Id[HEATER_TYPE__HeaterZone9] = HEAD_PT100_ZONE_9_0X88_0; + HeaterId2PT100Id[HEATER_TYPE__HeaterZone10] = HEAD_PT100_ZONE_10_0X88_1; + HeaterId2PT100Id[HEATER_TYPE__HeaterZone11] = HEAD_PT100_ZONE_11_0X8A_0; + HeaterId2PT100Id[HEATER_TYPE__HeaterZone12] = HEAD_PT100_ZONE_12_0X8A_1; + HeaterId2PT100Id[HEATER_TYPE__HeadCoverHeater1] = HEAD_PT100_AIR_HEATER_2_0X8C_1; + HeaterId2PT100Id[HEATER_TYPE__HeadCoverHeater2] = HEAD_PT100_AIR_HEATER_1_0X8C_0 ; + + HeaterId2CurrentId[HEATER_TYPE__DryerAirHeater] = NUM_OF_CURRENT_HEATERS; + HeaterId2CurrentId[HEATER_TYPE__DryerMainHeater] = HEATER_DRYER_CURRENT_1; + HeaterId2CurrentId[HEATER_TYPE__DryerSecondaryHeater] = HEATER_DRYER_CURRENT_2; + HeaterId2CurrentId[HEATER_TYPE__HeaterZone1] = HEAD_CURRENT_ZONE_1; + HeaterId2CurrentId[HEATER_TYPE__HeaterZone2] = HEAD_CURRENT_ZONE_2; + HeaterId2CurrentId[HEATER_TYPE__HeaterZone3] = HEAD_CURRENT_ZONE_3; + HeaterId2CurrentId[HEATER_TYPE__HeaterZone4] = HEAD_CURRENT_ZONE_4; + HeaterId2CurrentId[HEATER_TYPE__HeaterZone5] = HEAD_CURRENT_ZONE_5; + HeaterId2CurrentId[HEATER_TYPE__HeaterZone6] = HEAD_CURRENT_ZONE_6; + HeaterId2CurrentId[HEATER_TYPE__MixerHeater] = HEAD_CURRENT_MIXER; + HeaterId2CurrentId[HEATER_TYPE__HeaterZone7] = HEAD_CURRENT_ZONE_7; + HeaterId2CurrentId[HEATER_TYPE__HeaterZone8] = HEAD_CURRENT_ZONE_8; + HeaterId2CurrentId[HEATER_TYPE__HeaterZone9] = HEAD_CURRENT_ZONE_9; + HeaterId2CurrentId[HEATER_TYPE__HeaterZone10] = HEAD_CURRENT_ZONE_10; + HeaterId2CurrentId[HEATER_TYPE__HeaterZone11] = HEAD_CURRENT_ZONE_11; + HeaterId2CurrentId[HEATER_TYPE__HeaterZone12] = HEAD_CURRENT_ZONE_12; + HeaterId2CurrentId[HEATER_TYPE__HeadCoverHeater1] = HEAD_CURRENT_HTIN_1; + HeaterId2CurrentId[HEATER_TYPE__HeadCoverHeater2] = HEAD_CURRENT_HTOT_1; + + } + else + { + HeaterId2PT100Id[HEATER_TYPE__DryerAirHeater] = DRYER_AIR_PT100; + HeaterId2PT100Id[HEATER_TYPE__DryerMainHeater] = DRYER_MAIN_PT100; + HeaterId2PT100Id[HEATER_TYPE__DryerSecondaryHeater] = DRYER_SECONDARY_PT100; + HeaterId2PT100Id[HEATER_TYPE__HeaterZone1] = TEMP_SENSE_ANALOG_DYEINGH_TEMP1; + HeaterId2PT100Id[HEATER_TYPE__HeaterZone2] = TEMP_SENSE_ANALOG_DYEINGH_TEMP2; + HeaterId2PT100Id[HEATER_TYPE__HeaterZone3] = TEMP_SENSE_ANALOG_DYEINGH_TEMP3; + HeaterId2PT100Id[HEATER_TYPE__HeaterZone4] = TEMP_SENSE_ANALOG_DYEINGH_TEMP4; + HeaterId2PT100Id[HEATER_TYPE__HeaterZone5] = TEMP_SENSE_ANALOG_DYEINGH_TEMP5; + HeaterId2PT100Id[HEATER_TYPE__HeaterZone6] = HEAD6_PT100; + HeaterId2PT100Id[HEATER_TYPE__MixerHeater] = MIXER_PT100; + HeaterId2PT100Id[HEATER_TYPE__HeaterZone7] = 0xFF; + HeaterId2PT100Id[HEATER_TYPE__HeaterZone8] = 0xFF; + HeaterId2PT100Id[HEATER_TYPE__HeaterZone9] = 0xFF; + HeaterId2PT100Id[HEATER_TYPE__HeaterZone10] = 0xFF; + HeaterId2PT100Id[HEATER_TYPE__HeaterZone11] = 0xFF; + HeaterId2PT100Id[HEATER_TYPE__HeaterZone12] = 0xFF; + HeaterId2PT100Id[HEATER_TYPE__HeadCoverHeater1] = 0xFF; + HeaterId2PT100Id[HEATER_TYPE__HeadCoverHeater2] = 0xFF; + + HeaterId2CurrentId[HEATER_TYPE__DryerAirHeater] = NUM_OF_CURRENT_HEATERS; + HeaterId2CurrentId[HEATER_TYPE__DryerMainHeater] = HEATER_DRYER_CURRENT_1; + HeaterId2CurrentId[HEATER_TYPE__DryerSecondaryHeater] = HEATER_DRYER_CURRENT_2; + HeaterId2CurrentId[HEATER_TYPE__HeaterZone1] = HEATER_HEAD_CURRENT_ZONE_1; + HeaterId2CurrentId[HEATER_TYPE__HeaterZone2] = HEATER_HEAD_CURRENT_ZONE_2; + HeaterId2CurrentId[HEATER_TYPE__HeaterZone3] = HEATER_HEAD_CURRENT_ZONE_3; + HeaterId2CurrentId[HEATER_TYPE__HeaterZone4] = HEATER_HEAD_CURRENT_ZONE_4; + HeaterId2CurrentId[HEATER_TYPE__HeaterZone5] = HEATER_HEAD_CURRENT_ZONE_5_6; + HeaterId2CurrentId[HEATER_TYPE__HeaterZone6] = HEATER_HEAD_CURRENT_ZONE_5_6; + HeaterId2CurrentId[HEATER_TYPE__MixerHeater] = HEATER_MIXCHIP_CURRENT; + + } +} uint32_t DryerInternalPT100Id = DRYER_AIR_PT100; bool HeatersRestart = false; diff --git a/Software/Embedded_SW/Embedded/Modules/Stubs_Handler/StubRealTimeUsage.c b/Software/Embedded_SW/Embedded/Modules/Stubs_Handler/StubRealTimeUsage.c index 2091b3bc5..765e183cb 100644 --- a/Software/Embedded_SW/Embedded/Modules/Stubs_Handler/StubRealTimeUsage.c +++ b/Software/Embedded_SW/Embedded/Modules/Stubs_Handler/StubRealTimeUsage.c @@ -46,7 +46,7 @@ void Stub_RealTimeUsageRequest(MessageContainer* requestContainer) StubRealTimeUsageResponse response = STUB_REAL_TIME_USAGE_RESPONSE__INIT; - response.n_percentile = 100; + response.n_percentile = 101; response.percentile = my_malloc(sizeof(response.percentile)*response.n_percentile); if (response.percentile) IdleTaskGetLoadTable(response.percentile); diff --git a/Software/Embedded_SW/Embedded/Modules/Thread/ThreadLoad.c b/Software/Embedded_SW/Embedded/Modules/Thread/ThreadLoad.c index 5dc354785..2a83f8425 100644 --- a/Software/Embedded_SW/Embedded/Modules/Thread/ThreadLoad.c +++ b/Software/Embedded_SW/Embedded/Modules/Thread/ThreadLoad.c @@ -31,7 +31,7 @@ #include "drivers/SSI_Comm/Dancer/Dancer.h" #include "drivers/motors/motor.h" #include "drivers/Flash_ram/MCU_E2Prom.h" - +#include "Drivers/I2C_Communication/I2C.h" #include "PMR/Stubs/StubHeatingTestRequest.pb-c.h" #include "PMR/Stubs/StubHeatingTestResponse.pb-c.h" #include "PMR/Stubs/StubHeatingTestPollRequest.pb-c.h" diff --git a/Software/Embedded_SW/Embedded/Modules/Thread/Thread_print.c b/Software/Embedded_SW/Embedded/Modules/Thread/Thread_print.c index 59b5642fb..fd53d6da2 100644 --- a/Software/Embedded_SW/Embedded/Modules/Thread/Thread_print.c +++ b/Software/Embedded_SW/Embedded/Modules/Thread/Thread_print.c @@ -910,7 +910,7 @@ uint32_t ThreadInitialTestStub(HardwareMotor * request) void SetOriginMotorSpeed(float process_speed) { - int i,Motor_i, HW_Motor_Id; + int Motor_i, HW_Motor_Id; for (Motor_i = 0; Motor_i <= WINDER_MOTOR; Motor_i++) { HW_Motor_Id = ThreadMotorIdToMotorId[Motor_i]; @@ -1108,7 +1108,7 @@ char Endstr[150]; { int Motor_i; ThreadControlActive = false; - uint32_t status = OK,tempCtl; + uint32_t status = OK; usnprintf(Endstr, 100, "Total _processed length: Feeder: %d Pooler %d",(int)TotalProcessedLength,(int)PoolerTotalProcessedLength); SendJobProgress(0.0,0,false, Endstr); ReportWithPackageFilter(ThreadFilter,Endstr,__FILE__,__LINE__,(int)TotalProcessedLength,RpWarning,(int)PoolerTotalProcessedLength,0); @@ -1122,7 +1122,7 @@ char Endstr[150]; if (SpeedControlId != 0xFF) { if(RemoveControlCallback(SpeedControlId,ThreadLengthCBFunction)!=OK) - ReportWithPackageFilter(ThreadFilter,"Remove Control Failed.",__FILE__,__LINE__,(int)Motor_i,RpError,(int)SpeedControlId,0); + ReportWithPackageFilter(ThreadFilter,"Remove Control Failed.",__FILE__,__LINE__,(int)ThreadLengthCBFunction,RpError,(int)SpeedControlId,0); SpeedControlId = 0xFF; } if (PoolerSpeedControlId != 0xFF) @@ -1134,7 +1134,6 @@ char Endstr[150]; for ( Motor_i = 0;Motor_i <= WINDER_MOTOR;Motor_i++) { - tempCtl = ControlIdtoMotorId[Motor_i]; if (ControlIdtoMotorId[Motor_i] != 0xFF) { status = RemoveControlCallback(ControlIdtoMotorId[Motor_i],ThreadControlCBFunction); @@ -1143,7 +1142,6 @@ char Endstr[150]; else ReportWithPackageFilter(ThreadFilter,"Remove Control Failed.",__FILE__,__LINE__,(int)Motor_i,RpError,(int)ControlIdtoMotorId[Motor_i],0); } - //ReportWithPackageFilter(ThreadFilter,"Remove Control",__FILE__,Motor_i,(int)status,RpError,(int)tempCtl,0); } Task_sleep(100); -- cgit v1.3.1 From 0d1c8e051bcbd1b05646301ffef59b48d9490e23 Mon Sep 17 00:00:00 2001 From: Shlomo Hecht Date: Sun, 9 Feb 2020 18:43:35 +0200 Subject: improve powerstep and reglar, new process params, start of power management --- Software/Embedded_SW/Embedded/DataDef.h | 4 +- .../Embedded/Drivers/FPGA/FPGA_SPI_Comm.c | 80 +++++++++++++++++----- .../I2C_Communication/WHS_Card/EEPROM/WHS_EEPROM.c | 7 ++ .../Embedded/Modules/Diagnostics/Diagnostics.c | 17 +++++ .../Embedded_SW/Embedded/Modules/General/process.c | 49 +++++-------- .../Embedded/Modules/Heaters/Heaters_ex.h | 1 + .../Embedded/Modules/Heaters/Heaters_init.c | 7 +- .../Embedded/Modules/Heaters/Heaters_print.c | 27 ++++++-- .../Embedded/Modules/Stubs_Handler/Progress.c | 28 +++++--- .../Embedded/Modules/Thread/Thread_init.c | 3 +- 10 files changed, 157 insertions(+), 66 deletions(-) (limited to 'Software/Embedded_SW/Embedded/Modules/Thread') diff --git a/Software/Embedded_SW/Embedded/DataDef.h b/Software/Embedded_SW/Embedded/DataDef.h index a1d9fe52d..32e149968 100644 --- a/Software/Embedded_SW/Embedded/DataDef.h +++ b/Software/Embedded_SW/Embedded/DataDef.h @@ -19,11 +19,11 @@ #define NO_INITIAL_HEATING #define MAX_STRING_LEN 255 //Embedded version + filter.c -#define WATCHDOG +//#define WATCHDOG //#define FPGA_WATCHDOG_DISABLE -//#define USE_POWERSTEP01 +#define USE_POWERSTEP01 //#define SPECIAL_DISPENSERS #define Use_Head_Card //for real card only diff --git a/Software/Embedded_SW/Embedded/Drivers/FPGA/FPGA_SPI_Comm.c b/Software/Embedded_SW/Embedded/Drivers/FPGA/FPGA_SPI_Comm.c index 259b0a1fc..01a14825b 100644 --- a/Software/Embedded_SW/Embedded/Drivers/FPGA/FPGA_SPI_Comm.c +++ b/Software/Embedded_SW/Embedded/Drivers/FPGA/FPGA_SPI_Comm.c @@ -146,26 +146,71 @@ uint8_t FPGA_SPI_Receive(TimerMotors_t _motorId) //---------------- GET ------------------------------ -void Read_Motors_Driver_ADC(TimerMotors_t i) +void Read_Motors_Driver_ADC(void) { - SysCtlDelay(12000); - Fpga_Spi[i].TX_MOSI = (x_GET_PARAM | x_ADC_OUT)<<8; - FPGA_SPI_Transnit(i); - SysCtlDelay(12000); - FPGA_Get_Res(i); - MotorDriverResponse[i].ADC = Fpga_Spi[i].RX_MISO; + static bool first_time_flag = true; + + int i; + + if(first_time_flag == true) + { + + for(i=0; i < 25; i++) + { + + Fpga_Spi[i].TX_MOSI = (x_GET_PARAM | x_ADC_OUT)<<8; + FPGA_SPI_Transnit(i); + } + + delayms(45); + + for(i=0; i < 25; i++) + { + FPGA_Get_Res(i); + MotorDriverResponse[i].ADC = Fpga_Spi[i].RX_MISO; + if(MotorDriverResponse[i].ADC == 0) + { + Change_Motor_SPI_Direction(i,Current_Or_Voltage); + } + + } + + delayms(45); + + for(i=0; i < 25; i++) + { + + if(MotorDriverResponse[i].ADC == 0) + { + Fpga_Spi[i].TX_MOSI = (x_GET_PARAM | x_ADC_OUT)<<8; + FPGA_SPI_Transnit(i); + } + } + + delayms(45); + + for(i=0; i < 25; i++) + { + if(MotorDriverResponse[i].ADC == 0) + { + FPGA_Get_Res(i); + MotorDriverResponse[i].ADC = Fpga_Spi[i].RX_MISO; + } + } + + first_time_flag = false; + } } uint32_t Read_Motors_Driver_Type(TimerMotors_t i) { uint32_t status = OK; -#ifdef USE_POWERSTEP01 +//#ifdef USE_POWERSTEP01 //First communicate with powerSTEP01 - Read_Motors_Driver_ADC(i); - //if((MotorDriverResponse[i].ADC >= 22) && (MotorDriverResponse[i].ADC < 26)) // //(powerSTEP01, ADC = 24) + if((MotorDriverResponse[i].ADC >= 22) && (MotorDriverResponse[i].ADC < 26)) // //(powerSTEP01, ADC = 24) { MotorDriverResponse[i].DriverType = CombinrdMotDriver; //default for dispensers, dryer-LID and DH-LID Voltage mode, for other motors Current mode @@ -174,16 +219,16 @@ uint32_t Read_Motors_Driver_Type(TimerMotors_t i) else MotorDriverResponse[i].DriverMode = Current; } - //else -#else + else +//#else { //Change the SPI direction and check if this driver is Current or Voltage - if(MotorDriverResponse[i].DriverType == UnKnownMotDriver) +/* if(MotorDriverResponse[i].DriverType == UnKnownMotDriver) { Change_Motor_SPI_Direction(i,Current_Or_Voltage); } delayms(5); - Read_Motors_Driver_ADC(i); + Read_Motors_Driver_ADC(i);*/ if((MotorDriverResponse[i].ADC >= 9) && (MotorDriverResponse[i].ADC < 13)) { @@ -204,7 +249,7 @@ uint32_t Read_Motors_Driver_Type(TimerMotors_t i) status = ERROR; } } -#endif +//#endif return status; } @@ -426,16 +471,17 @@ void FPGA_SetMotorsInit() { uint8_t i=0; + Read_Motors_Driver_ADC(); for(i=0;i HEAD_TYPE_SYLKO_WITHOUT_CARD) //rapid/pp machines + { + AcVoltage = ReadVAC(); + DiagnosticsMonitor.whsblower2voltage = &AcVoltage; + DiagnosticsMonitor.n_whsblower2voltage = 1; + } +*/ + } @@ -526,6 +536,13 @@ void DiagnosticOneSecCollection(void) int i; memset(HeaterCounterIndex,0,sizeof(HeaterCounterIndex)); + if (Head_Type > HEAD_TYPE_SYLKO_WITHOUT_CARD) //rapid/pp machines + { + AcVoltage = ReadVAC(); + DiagnosticsMonitor.whsblower2voltage = &AcVoltage; + DiagnosticsMonitor.n_whsblower2voltage = 1; + } + if (Head_Type == HEAD_TYPE_SYLKO_WITHOUT_CARD) { DiagnosticLoadTemperature(HARDWARE_PID_CONTROL_TYPE__MixerHeater, MillisecGetTemperatures( MIXER_PT100)); diff --git a/Software/Embedded_SW/Embedded/Modules/General/process.c b/Software/Embedded_SW/Embedded/Modules/General/process.c index 5bfc46559..ad53149f0 100644 --- a/Software/Embedded_SW/Embedded/Modules/General/process.c +++ b/Software/Embedded_SW/Embedded/Modules/General/process.c @@ -63,6 +63,10 @@ void HeatersStopControlOnHeatersOff(ProcessParameters* ProcessParams) HeatersControlStop(); REPORT_MSG(temp_sum,"Heating control off - temperatures off"); } + else + { + HeatersControlStart(); + } } uint32_t HandleProcessParameters(ProcessParameters* ProcessParams,bool saveData) { @@ -107,7 +111,7 @@ uint32_t HandleProcessParameters(ProcessParameters* ProcessParams,bool saveData) if (ProcessParams->headzone1temp>1) { status |= HeaterCommandRequestMessage(HARDWARE_PID_CONTROL_TYPE__HeadHeaterZ1, true,ProcessParams->headzone1temp); -#ifdef Use_Head_Card +#ifdef rUse_Head_Card status |= HeaterCommandRequestMessage(HARDWARE_PID_CONTROL_TYPE__HeadHeaterZ7, true,ProcessParams->headzone1temp); status |= HeaterCommandRequestMessage(HARDWARE_PID_CONTROL_TYPE__HeadCoverHeater1, true,ProcessParams->headzone1temp); #endif @@ -115,7 +119,7 @@ uint32_t HandleProcessParameters(ProcessParameters* ProcessParams,bool saveData) else { status |= HeaterCommandRequestMessage(HARDWARE_PID_CONTROL_TYPE__HeadHeaterZ1, false,ProcessParams->headzone1temp); -#ifdef Use_Head_Card +#ifdef rUse_Head_Card status |= HeaterCommandRequestMessage(HARDWARE_PID_CONTROL_TYPE__HeadHeaterZ7, false,ProcessParams->headzone1temp); status |= HeaterCommandRequestMessage(HARDWARE_PID_CONTROL_TYPE__HeadCoverHeater1, false,ProcessParams->headzone1temp); #endif @@ -123,7 +127,7 @@ uint32_t HandleProcessParameters(ProcessParameters* ProcessParams,bool saveData) if (ProcessParams->headzone2temp>1) { status |= HeaterCommandRequestMessage(HARDWARE_PID_CONTROL_TYPE__HeadHeaterZ2, true,ProcessParams->headzone2temp); -#ifdef Use_Head_Card +#ifdef rUse_Head_Card status |= HeaterCommandRequestMessage(HARDWARE_PID_CONTROL_TYPE__HeadHeaterZ8, true,ProcessParams->headzone2temp); status |= HeaterCommandRequestMessage(HARDWARE_PID_CONTROL_TYPE__HeadCoverHeater2, true,ProcessParams->headzone2temp); #endif @@ -131,7 +135,7 @@ uint32_t HandleProcessParameters(ProcessParameters* ProcessParams,bool saveData) else { status |= HeaterCommandRequestMessage(HARDWARE_PID_CONTROL_TYPE__HeadHeaterZ2, false,ProcessParams->headzone2temp); -#ifdef Use_Head_Card +#ifdef rUse_Head_Card status |= HeaterCommandRequestMessage(HARDWARE_PID_CONTROL_TYPE__HeadHeaterZ8, false,ProcessParams->headzone2temp); status |= HeaterCommandRequestMessage(HARDWARE_PID_CONTROL_TYPE__HeadCoverHeater2, false,ProcessParams->headzone2temp); #endif @@ -139,56 +143,56 @@ uint32_t HandleProcessParameters(ProcessParameters* ProcessParams,bool saveData) if (ProcessParams->headzone3temp>1) { status |= HeaterCommandRequestMessage(HARDWARE_PID_CONTROL_TYPE__HeadHeaterZ3, true,ProcessParams->headzone3temp); -#ifdef Use_Head_Card +#ifdef rUse_Head_Card status |= HeaterCommandRequestMessage(HARDWARE_PID_CONTROL_TYPE__HeadHeaterZ9, true,ProcessParams->headzone3temp); #endif } else { status |= HeaterCommandRequestMessage(HARDWARE_PID_CONTROL_TYPE__HeadHeaterZ3, false,ProcessParams->headzone3temp); -#ifdef Use_Head_Card +#ifdef rUse_Head_Card status |= HeaterCommandRequestMessage(HARDWARE_PID_CONTROL_TYPE__HeadHeaterZ9, false,ProcessParams->headzone3temp); #endif } if (ProcessParams->headzone4temp>1) { status |= HeaterCommandRequestMessage(HARDWARE_PID_CONTROL_TYPE__HeadHeaterZ4, true,ProcessParams->headzone4temp); -#ifdef Use_Head_Card +#ifdef rUse_Head_Card status |= HeaterCommandRequestMessage(HARDWARE_PID_CONTROL_TYPE__HeadHeaterZ10, true,ProcessParams->headzone4temp); #endif } else { status |= HeaterCommandRequestMessage(HARDWARE_PID_CONTROL_TYPE__HeadHeaterZ4, false,ProcessParams->headzone4temp); -#ifdef Use_Head_Card +#ifdef rUse_Head_Card status |= HeaterCommandRequestMessage(HARDWARE_PID_CONTROL_TYPE__HeadHeaterZ10, false,ProcessParams->headzone4temp); #endif } if (ProcessParams->headzone5temp>1) { status |= HeaterCommandRequestMessage(HARDWARE_PID_CONTROL_TYPE__HeadHeaterZ5, true,ProcessParams->headzone5temp); -#ifdef Use_Head_Card +#ifdef rUse_Head_Card status |= HeaterCommandRequestMessage(HARDWARE_PID_CONTROL_TYPE__HeadHeaterZ11, true,ProcessParams->headzone5temp); #endif } else { status |= HeaterCommandRequestMessage(HARDWARE_PID_CONTROL_TYPE__HeadHeaterZ5, false,ProcessParams->headzone5temp); -#ifdef Use_Head_Card +#ifdef rUse_Head_Card status |= HeaterCommandRequestMessage(HARDWARE_PID_CONTROL_TYPE__HeadHeaterZ11, false,ProcessParams->headzone5temp); #endif } if (ProcessParams->headzone6temp>1) { status |= HeaterCommandRequestMessage(HARDWARE_PID_CONTROL_TYPE__HeadHeaterZ6, true,ProcessParams->headzone6temp); -#ifdef Use_Head_Card +#ifdef rUse_Head_Card status |= HeaterCommandRequestMessage(HARDWARE_PID_CONTROL_TYPE__HeadHeaterZ12, true,ProcessParams->headzone6temp); #endif } else { status |= HeaterCommandRequestMessage(HARDWARE_PID_CONTROL_TYPE__HeadHeaterZ6, false,ProcessParams->headzone6temp); -#ifdef Use_Head_Card +#ifdef rUse_Head_Card status |= HeaterCommandRequestMessage(HARDWARE_PID_CONTROL_TYPE__HeadHeaterZ12, false,ProcessParams->headzone6temp); #endif } @@ -196,24 +200,7 @@ uint32_t HandleProcessParameters(ProcessParameters* ProcessParams,bool saveData) status |= HeaterCommandRequestMessage(HARDWARE_PID_CONTROL_TYPE__DryerAirTemperature, true,ProcessParams->dryerzone1temp); else status |= HeaterCommandRequestMessage(HARDWARE_PID_CONTROL_TYPE__DryerAirTemperature, false,ProcessParams->dryerzone1temp); -/* if (ProcessParams->dryerzone2temp) - status |= HeaterCommandRequestMessage( - HARDWARE_PID_CONTROL_TYPE__DryerHeaterMain, true, - ProcessParams->dryerzone2temp); - else - status |= HeaterCommandRequestMessage( - HARDWARE_PID_CONTROL_TYPE__DryerHeaterMain, false, - ProcessParams->dryerzone2temp); - if (ProcessParams->dryerzone3temp) - status |= HeaterCommandRequestMessage( - HARDWARE_PID_CONTROL_TYPE__DryerHeaterSecondary, true, - ProcessParams->dryerzone3temp); - else - status |= HeaterCommandRequestMessage( - HARDWARE_PID_CONTROL_TYPE__DryerHeaterSecondary, false, - ProcessParams->dryerzone3temp); - */ - /* if (ProcessParams->headzone7temp>1) + if (ProcessParams->headzone7temp>1) { status |= HeaterCommandRequestMessage(HARDWARE_PID_CONTROL_TYPE__HeadHeaterZ7, true,ProcessParams->headzone7temp); } @@ -277,7 +264,7 @@ uint32_t HandleProcessParameters(ProcessParameters* ProcessParams,bool saveData) { status |= HeaterCommandRequestMessage(HARDWARE_PID_CONTROL_TYPE__HeadCoverHeater2, false,ProcessParams->stspzone2temp); } -*/ + HeatersStopControlOnHeatersOff(ProcessParams); dyeingspeed = ProcessParams->dyeingspeed; dryerbufferlength = ProcessParams->dryerbufferlength; diff --git a/Software/Embedded_SW/Embedded/Modules/Heaters/Heaters_ex.h b/Software/Embedded_SW/Embedded/Modules/Heaters/Heaters_ex.h index bcc19bd6f..0c6ee94ee 100644 --- a/Software/Embedded_SW/Embedded/Modules/Heaters/Heaters_ex.h +++ b/Software/Embedded_SW/Embedded/Modules/Heaters/Heaters_ex.h @@ -12,6 +12,7 @@ extern EventType HeaterEventType[HEATER_TYPE_MAX_HEATERS]; extern EventType HeaterUnderEventType[HEATER_TYPE_MAX_HEATERS]; extern EventType HeaterUnderEventType_B[HEATER_TYPE_MAX_HEATERS]; +extern uint32_t stub_heating_limit; //uint32_t HeaterCommandRequestMessage(MessageContainer* requestContainer); uint32_t HeaterConfigRequestMessage(HardwarePidControl* request); uint32_t HeaterConfigSetSharedHeatersParams (uint32_t outputproportionalcycletime, uint32_t outputproportionalsinglestep); diff --git a/Software/Embedded_SW/Embedded/Modules/Heaters/Heaters_init.c b/Software/Embedded_SW/Embedded/Modules/Heaters/Heaters_init.c index 0f6cb5124..349d5a5e3 100644 --- a/Software/Embedded_SW/Embedded/Modules/Heaters/Heaters_init.c +++ b/Software/Embedded_SW/Embedded/Modules/Heaters/Heaters_init.c @@ -186,11 +186,12 @@ uint32_t HeaterConfigSetSharedHeatersParams(uint32_t outputproportionalcycletime * * parameters - the cycle time for the coordinated operation, the size (in MCU cycles) of a single step. */ +uint32_t stub_heating_limit = 100; uint32_t HeaterRecalculateSharedHeatersParams(uint32_t deviceId, uint32_t new_outputproportionalpowerlimit) { int Slice_i; int Heater1000Slices,Heater200aSlices /*,Heater200bSlices Currently both 200W heaters will work together*/; - + uint32_t stub_outputproportionalpowerlimit = new_outputproportionalpowerlimit; if (NumberOFSlicesInUse > MAX_TIMESLICES ) { @@ -198,8 +199,10 @@ uint32_t HeaterRecalculateSharedHeatersParams(uint32_t deviceId, uint32_t new_ou return ERROR;//NumberOFSlicesInUse = MAX_TIMESLICES; } + if (stub_outputproportionalpowerlimit > stub_heating_limit) + stub_outputproportionalpowerlimit = stub_heating_limit; // all numbers are rounded down. better to have carefully calculated numbers - HeaterControl[deviceId].outputproportionalpowerlimit = new_outputproportionalpowerlimit;///100; + HeaterControl[deviceId].outputproportionalpowerlimit = stub_outputproportionalpowerlimit;///100; Heater1000Slices = HeaterControl[HEATER_TYPE__DryerMainHeater].outputproportionalpowerlimit * NumberOFSlicesInUse / 100; Heater200aSlices = HeaterControl[HEATER_TYPE__DryerSecondaryHeater].outputproportionalpowerlimit * NumberOFSlicesInUse / 100; diff --git a/Software/Embedded_SW/Embedded/Modules/Heaters/Heaters_print.c b/Software/Embedded_SW/Embedded/Modules/Heaters/Heaters_print.c index 2ee7a3d2a..d84098469 100644 --- a/Software/Embedded_SW/Embedded/Modules/Heaters/Heaters_print.c +++ b/Software/Embedded_SW/Embedded/Modules/Heaters/Heaters_print.c @@ -469,8 +469,8 @@ uint32_t HeatersSingleHeaterEnd(int HeaterId) } DeActivateHeater(HEATER_TYPE__DryerMainHeater); DeActivateHeater(HEATER_TYPE__DryerSecondaryHeater); - Disable_Reading_Heaters_Current(HeaterId2CurrentId[HEATER_TYPE__DryerMainHeater]); - Disable_Reading_Heaters_Current(HeaterId2CurrentId[HEATER_TYPE__DryerSecondaryHeater]); + //Disable_Reading_Heaters_Current(HeaterId2CurrentId[HEATER_TYPE__DryerMainHeater]); + //Disable_Reading_Heaters_Current(HeaterId2CurrentId[HEATER_TYPE__DryerSecondaryHeater]); HeaterPIDConfig[HeaterId].m_SetParam = 0; HeaterCmd[HeaterId].targettemperatue = 0; HeaterReady[HeaterId] = true; @@ -1167,8 +1167,8 @@ uint32_t HeaterControlCBFunction(uint32_t IfIndex, uint32_t readValue) Control_Voltage_To_Blower(BlowerCfg.voltage); } HeaterReady[index] = true; - Disable_Reading_Heaters_Current(HeaterId2CurrentId[HEATER_TYPE__DryerMainHeater]); - Disable_Reading_Heaters_Current(HeaterId2CurrentId[HEATER_TYPE__DryerSecondaryHeater]); + //Disable_Reading_Heaters_Current(HeaterId2CurrentId[HEATER_TYPE__DryerMainHeater]); + //Disable_Reading_Heaters_Current(HeaterId2CurrentId[HEATER_TYPE__DryerSecondaryHeater]); } return OK; @@ -1473,6 +1473,23 @@ uint32_t HeatersDisasterControl(uint32_t x,uint32_t y) } return OK; } +bool UseSecondaryDrierHeater = true; +uint32_t DrierHeaterVlotageSetup(double voltage) +{ + uint32_t status = OK; + double DrierAcVoltage = 0.0; + if (Head_Type > HEAD_TYPE_SYLKO_WITHOUT_CARD) //rapid/pp machines + { + DrierAcVoltage = ReadVAC(); + //if () + + } + else + { + UseSecondaryDrierHeater = true; + } + +} uint32_t HeatersControlLoop(uint32_t tick) { //char str[100]; @@ -1500,7 +1517,7 @@ uint32_t HeatersControlLoop(uint32_t tick) if (AcHeaterDisaster == false) { - if (HeaterReady[HEATER_TYPE__DryerAirHeater] == true) + //if (HeaterReady[HEATER_TYPE__DryerAirHeater] == true) { if (TimeSliceAllocation[SliceCounter] == HEATER_TYPE__DryerMainHeater) { diff --git a/Software/Embedded_SW/Embedded/Modules/Stubs_Handler/Progress.c b/Software/Embedded_SW/Embedded/Modules/Stubs_Handler/Progress.c index dbe46db97..03beac151 100644 --- a/Software/Embedded_SW/Embedded/Modules/Stubs_Handler/Progress.c +++ b/Software/Embedded_SW/Embedded/Modules/Stubs_Handler/Progress.c @@ -27,6 +27,7 @@ #include "Modules/IDS/ids_ex.h" #include "Modules/Control/MillisecTask.h" #include "modules/thread/thread_ex.h" +#include "modules/heaters/heaters_ex.h" #include #include #include @@ -531,21 +532,32 @@ void Stub_ProgressRequest(MessageContainer* requestContainer) if(request->amount == 0xB3) //fast refresh for pressure { LOG_ERROR(request->amount,"keep alive test"); - //keepalivetest = true; response.progress = keepalivetest; response.has_progress = true; } else - if(request->amount == 0xB4) //fast refresh for pressure - { - LOG_ERROR(request->amount,"IDS_Dispenser_Content_Init"); - IDS_Dispenser_Content_Init(); - //keepalivetest = true; - response.progress = keepalivetest; - response.has_progress = true; + if(request->amount == 0xB4) //fast refresh for pressure + { + LOG_ERROR(request->amount,"IDS_Dispenser_Content_Init"); + IDS_Dispenser_Content_Init(); + response.progress = keepalivetest; + response.has_progress = true; + } + else + if(request->amount == 0xB5) //fast refresh for pressure + { + if (request->delay<=100) + { + LOG_ERROR(request->delay,"set stub_heating_limit"); + stub_heating_limit = request->delay; } + response.progress = request->delay; + response.has_progress = true; + + } + else if((request->amount == 0xDF) && (request->delay == 0xDF)) //Power off { diff --git a/Software/Embedded_SW/Embedded/Modules/Thread/Thread_init.c b/Software/Embedded_SW/Embedded/Modules/Thread/Thread_init.c index e53adabb7..ec705c2d2 100644 --- a/Software/Embedded_SW/Embedded/Modules/Thread/Thread_init.c +++ b/Software/Embedded_SW/Embedded/Modules/Thread/Thread_init.c @@ -73,7 +73,8 @@ uint32_t MotorsConfigMessage(HardwareConfiguration * HWrequest) MotorsCfg[Motor_i].pulseperround = request->pulseperround; MotorsCfg[Motor_i].pulleyradius = request->pulleyradius; MotorsCfg[Motor_i].configword = request->configword; - /*if(MotorDriverResponse[Motor_i].DriverType == CombinrdMotDriver) + MotorsCfg[Motor_i].directionthreadwize = request->directionthreadwize;//L6470 + L6472 +/* if(MotorDriverResponse[Motor_i].DriverType != CombinrdMotDriver) { MotorsCfg[Motor_i].directionthreadwize = request->directionthreadwize ^ 1;//PowerSTEP01 } -- cgit v1.3.1 From 88169a21caf5587f3ad57467c8a4a6de9b1f29ef Mon Sep 17 00:00:00 2001 From: Shlomo Hecht Date: Mon, 10 Feb 2020 16:06:50 +0200 Subject: bypass stubs for feature #2203 --- .../Embedded_SW/Embedded/Modules/General/process.c | 6 ++++ Software/Embedded_SW/Embedded/Modules/IDS/IDS_ex.h | 4 +++ .../Embedded_SW/Embedded/Modules/IDS/IDS_maint.c | 11 +++++++ .../Embedded_SW/Embedded/Modules/IDS/IDS_print.c | 6 ++-- .../Embedded/Modules/Stubs_Handler/Progress.c | 28 ++++++++++++++++ .../Embedded/Modules/Thread/Thread_ex.h | 2 ++ .../Embedded/Modules/Thread/Thread_print.c | 33 ++++++++++++------- .../StateMachines/Initialization/PowerIdle.c | 38 +++++++++++++++++++--- .../StateMachines/Initialization/PowerIdle.h | 2 ++ .../Initialization/PowerOffSequence.c | 6 ++++ 10 files changed, 118 insertions(+), 18 deletions(-) (limited to 'Software/Embedded_SW/Embedded/Modules/Thread') diff --git a/Software/Embedded_SW/Embedded/Modules/General/process.c b/Software/Embedded_SW/Embedded/Modules/General/process.c index ad53149f0..74a6cfe90 100644 --- a/Software/Embedded_SW/Embedded/Modules/General/process.c +++ b/Software/Embedded_SW/Embedded/Modules/General/process.c @@ -57,6 +57,12 @@ void HeatersStopControlOnHeatersOff(ProcessParameters* ProcessParams) temp_sum += ProcessParams->headzone4temp; temp_sum += ProcessParams->headzone5temp; temp_sum += ProcessParams->headzone6temp; + temp_sum += ProcessParams->headzone7temp; + temp_sum += ProcessParams->headzone8temp; + temp_sum += ProcessParams->headzone9temp; + temp_sum += ProcessParams->headzone10temp; + temp_sum += ProcessParams->headzone11temp; + temp_sum += ProcessParams->headzone12temp; if (temp_sum == 0)// heating off { diff --git a/Software/Embedded_SW/Embedded/Modules/IDS/IDS_ex.h b/Software/Embedded_SW/Embedded/Modules/IDS/IDS_ex.h index a819448a8..5c01d7563 100644 --- a/Software/Embedded_SW/Embedded/Modules/IDS/IDS_ex.h +++ b/Software/Embedded_SW/Embedded/Modules/IDS/IDS_ex.h @@ -76,6 +76,8 @@ uint32_t IDS_StopHomeDispenser (uint32_t deviceID); uint32_t IDS_HomeDispenserWaitForHomingEnd(uint32_t DispenserId, uint32_t timeout , callback_fptr callback); bool IDS_IsHomingActive(uint32_t DispenserId); + + uint32_t IDS_EmptyDispenser (uint32_t deviceID, uint32_t speed , callback_fptr callback); uint32_t IDS_Dispenser_Alarm_On (uint8_t deviceID); uint32_t IDS_Dispenser_Alarm_Off (uint8_t deviceID); @@ -90,6 +92,8 @@ void IDS_Dispenser_SetPreSegmentWFCFValues(double dispenserpresegmentwfcf, doubl void IDS_Dispenser_SetPreSegmentCleaningValues(double ids_cleaningspeed,double ids_cleaningstartspraypresegmenttime ,double ids_cleaningstopbeforesegmenttime,double ids_leftcleaningmotorspeed,double ids_rightcleaningmotorspeed); void IDS_Dispenser_SetAutoHoming_Config(AutoHoming_Config_enum Config); +bool Set_Check_Pressure_Bypass(int); + uint32_t IDS_Dispenser_Close_Valve_And_Stop_Motor(int DispenserId, callback_fptr callback); uint32_t IDS_Dispenser_Start_Motor_and_Open_Valve(int DispenserId, int MotorSpeed, callback_fptr callback); diff --git a/Software/Embedded_SW/Embedded/Modules/IDS/IDS_maint.c b/Software/Embedded_SW/Embedded/Modules/IDS/IDS_maint.c index e1be0358b..79d169ace 100644 --- a/Software/Embedded_SW/Embedded/Modules/IDS/IDS_maint.c +++ b/Software/Embedded_SW/Embedded/Modules/IDS/IDS_maint.c @@ -496,6 +496,15 @@ uint32_t IDS_ReCheck_Pressure_Callback(uint32_t DispenserId, uint32_t ReadValue) return OK; } +bool Check_Pressure_Bypass = false; +bool Set_Check_Pressure_Bypass (int value) +{ + if (value == 0) + Check_Pressure_Bypass = false; + else + Check_Pressure_Bypass = true; + return Check_Pressure_Bypass; +} uint32_t IDS_Check_Pressure_Callback(uint32_t DispenserId, uint32_t ReadValue) { TimerMotors_t HW_Motor_Id = DispenserIdToMotorId[DispenserId]; @@ -507,6 +516,8 @@ uint32_t IDS_Check_Pressure_Callback(uint32_t DispenserId, uint32_t ReadValue) return ERROR; } } + if (Check_Pressure_Bypass == true) + return OK; if (GetDispenserPressure(DispenserId)>3.0) { diff --git a/Software/Embedded_SW/Embedded/Modules/IDS/IDS_print.c b/Software/Embedded_SW/Embedded/Modules/IDS/IDS_print.c index 708b11342..688ecf7c5 100644 --- a/Software/Embedded_SW/Embedded/Modules/IDS/IDS_print.c +++ b/Software/Embedded_SW/Embedded/Modules/IDS/IDS_print.c @@ -1024,7 +1024,7 @@ uint32_t IDS_Cleaning_Stop_Cleaning_Solution (callback_fptr callback); */ //InterSegmentStepsLimit = lInterSegmentLength*10;//100 millisec steps InterSegmentStepsCount+=100; - if (InterSegmentStepsCount == lInterSegmentLength) + if (InterSegmentStepsCount >= lInterSegmentLength) { //IDS_Valve_PresegmentReady(1,0); Report("End of Pre-segment Handling",__FILE__,__LINE__,InterSegmentStepsCount,RpWarning,(int)lInterSegmentLength,0); @@ -1622,13 +1622,13 @@ uint32_t IDSSegmentState(void *SegmentDetails, int SegmentId) lInterSegmentLength = (dryerbufferCentimeters*1000/dyeingspeed); lInterSegmentLength-=(lInterSegmentLength%100); //round to a 100 multiplication InterSegmentStepsCount = 0; - DispenserPreSegmentControlId = AddControlCallback(NULL, IDSPreSegmentStateCallbackRunner, 100,TemplateDataReadCBFunction ,0, 0, 0 ); + DispenserPreSegmentControlId = AddControlCallback("IDS DTS", IDSPreSegmentStateCallbackRunner, 100,TemplateDataReadCBFunction ,0, 0, 0 ); if (DispenserPreSegmentControlId == 0xFF) { Report("Add control callback failed",__FILE__,__LINE__,(int)100,RpWarning,(int)0,0); return ERROR; } - Report("Add control callback ",__FILE__,__LINE__,(int)100,RpWarning,(int)IntersegmentLength,0); + Report("Add control callback ",__FILE__,__LINE__,(int)100,RpWarning,(int)lInterSegmentLength,0); /*if (EnableCleaning == true) { InterSegmentStartSprayCleaner = 500; diff --git a/Software/Embedded_SW/Embedded/Modules/Stubs_Handler/Progress.c b/Software/Embedded_SW/Embedded/Modules/Stubs_Handler/Progress.c index c22ed4cde..2652c38b9 100644 --- a/Software/Embedded_SW/Embedded/Modules/Stubs_Handler/Progress.c +++ b/Software/Embedded_SW/Embedded/Modules/Stubs_Handler/Progress.c @@ -192,6 +192,34 @@ void Stub_ProgressRequest(MessageContainer* requestContainer) response.has_progress = true; } else + if(request->amount == 0xAD1) //Set_Check_Pressure_Bypass + { + LOG_ERROR((request->delay)?1:0,"Set_Check_Pressure_Bypass"); + response.progress = Set_Check_Pressure_Bypass(request->delay); + response.has_progress = true; + } + else + if(request->amount == 0xAD2) //Set_Thread_Rockers_Bypass + { + LOG_ERROR((request->delay)?1:0,"Set_Thread_Rockers_Bypass"); + response.progress = Set_Thread_Rockers_Bypass(request->delay); + response.has_progress = true; + } + else + if(request->amount == 0xAD3) //Set_Auto_Shutdown_Bypass + { + LOG_ERROR((request->delay)?1:0,"Set_Auto_Shutdown_Bypass"); + response.progress = Set_Auto_Shutdown_Bypass(request->delay); + response.has_progress = true; + } + else + if(request->amount == 0xAD4) //Set_Auto_Idle_Bypass + { + LOG_ERROR((request->delay)?1:0,"Set_Auto_Idle_Bypass"); + response.progress = Set_Auto_Idle_Bypass(request->delay); + response.has_progress = true; + } + else if((request->amount == 0x01) && ((request->delay &0x010000) == 0x010000)) //change mode powerset01 { response.progress = Power_Step_01_Mode(((request->delay &0x00FF00)>>8), request->delay &0x0000FF); diff --git a/Software/Embedded_SW/Embedded/Modules/Thread/Thread_ex.h b/Software/Embedded_SW/Embedded/Modules/Thread/Thread_ex.h index 420b782b5..114edc0cd 100644 --- a/Software/Embedded_SW/Embedded/Modules/Thread/Thread_ex.h +++ b/Software/Embedded_SW/Embedded/Modules/Thread/Thread_ex.h @@ -38,6 +38,8 @@ uint32_t ThreadDistanceToSpoolState(void); uint32_t ThreadEndState(); uint32_t ThreadInitialTestStub(); +bool Set_Thread_Rockers_Bypass (int value); + uint32_t StoreDancerConfigMessage(void); uint32_t LoadDancerConfigMessage(void); diff --git a/Software/Embedded_SW/Embedded/Modules/Thread/Thread_print.c b/Software/Embedded_SW/Embedded/Modules/Thread/Thread_print.c index fd53d6da2..fd48e799a 100644 --- a/Software/Embedded_SW/Embedded/Modules/Thread/Thread_print.c +++ b/Software/Embedded_SW/Embedded/Modules/Thread/Thread_print.c @@ -958,6 +958,15 @@ uint32_t ThreadDryerRampUp(uint32_t IfIndex, uint32_t BusyFlag) return OK; } +bool Thread_Rockers_Bypass = false; +bool Set_Thread_Rockers_Bypass (int value) +{ + if (value == 0) + Thread_Rockers_Bypass = false; + else + Thread_Rockers_Bypass = true; + return Thread_Rockers_Bypass; +} //******************************************************************************************************************** uint32_t ThreadPreSegmentState(void *SegmentDetails, uint32_t SegmentId) @@ -995,17 +1004,19 @@ uint32_t ThreadPreSegmentState(void *SegmentDetails, uint32_t SegmentId) #ifdef HUNDRED_MICROSECONDS_DANCER_READ MillisecLogInit(); #endif - - if (MotorsCfg[HARDWARE_MOTOR_TYPE__MOTO_RLOADING].maxfrequency > 0) - { - MotorSetDirection((TimerMotors_t)HARDWARE_MOTOR_TYPE__MOTO_RLOADING,MotorsCfg[HARDWARE_MOTOR_TYPE__MOTO_RLOADING].directionthreadwize); - MotorSetSpeed(HARDWARE_MOTOR_TYPE__MOTO_RLOADING, 1); - } - if (MotorsCfg[HARDWARE_MOTOR_TYPE__MOTO_LLOADING].maxfrequency > 0) - { - MotorSetDirection((TimerMotors_t)HARDWARE_MOTOR_TYPE__MOTO_LLOADING,MotorsCfg[HARDWARE_MOTOR_TYPE__MOTO_LLOADING].directionthreadwize); - MotorSetSpeed(HARDWARE_MOTOR_TYPE__MOTO_LLOADING, 1); - } + if (Thread_Rockers_Bypass == false) + { + if (MotorsCfg[HARDWARE_MOTOR_TYPE__MOTO_RLOADING].maxfrequency > 0) + { + MotorSetDirection((TimerMotors_t)HARDWARE_MOTOR_TYPE__MOTO_RLOADING,MotorsCfg[HARDWARE_MOTOR_TYPE__MOTO_RLOADING].directionthreadwize); + MotorSetSpeed(HARDWARE_MOTOR_TYPE__MOTO_RLOADING, 1); + } + if (MotorsCfg[HARDWARE_MOTOR_TYPE__MOTO_LLOADING].maxfrequency > 0) + { + MotorSetDirection((TimerMotors_t)HARDWARE_MOTOR_TYPE__MOTO_LLOADING,MotorsCfg[HARDWARE_MOTOR_TYPE__MOTO_LLOADING].directionthreadwize); + MotorSetSpeed(HARDWARE_MOTOR_TYPE__MOTO_LLOADING, 1); + } + } if (EnableLubrication == true) { IDS_StartLubrication(); diff --git a/Software/Embedded_SW/Embedded/StateMachines/Initialization/PowerIdle.c b/Software/Embedded_SW/Embedded/StateMachines/Initialization/PowerIdle.c index cbb2928b4..051d6c9cd 100644 --- a/Software/Embedded_SW/Embedded/StateMachines/Initialization/PowerIdle.c +++ b/Software/Embedded_SW/Embedded/StateMachines/Initialization/PowerIdle.c @@ -41,13 +41,34 @@ uint32_t IdleControlId = 0xFF; uint32_t IdleHeatingControlId = 0xFF; uint32_t IdleToPowerDownControlId = 0xFF; ProcessParameters ActiveProcessParameters,ProcessParametersClear; +bool Auto_Shutdown_Bypass = false; +bool Set_Auto_Shutdown_Bypass (int value) +{ + if (value == 0) + Auto_Shutdown_Bypass = false; + else + Auto_Shutdown_Bypass = true; + return Auto_Shutdown_Bypass; +} +bool Auto_Idle_Bypass = false; +bool Set_Auto_Idle_Bypass (int value) +{ + if (value == 0) + Auto_Idle_Bypass = false; + else + Auto_Idle_Bypass = true; + return Auto_Idle_Bypass; +} uint32_t PowerIdleToPowerDownCallBackFunction(uint32_t IfIndex, uint32_t BusyFlag) { if (SafeRemoveControlCallback(IdleToPowerDownControlId, PowerIdleToPowerDownCallBackFunction )==OK) IdleToPowerDownControlId = 0xFF; - Report("PowerIdle calling power off ",__FILE__,__LINE__,(int)eOneHour*2,RpWarning,(int)0,0); - PowerOffInit(); + if (Auto_Shutdown_Bypass == false) + { + Report("PowerIdle calling power off ",__FILE__,__LINE__,(int)eOneHour*2,RpWarning,(int)0,0); + PowerOffInit(); + } return OK; } void PowerIdleSetIdle(void) @@ -65,6 +86,12 @@ void PowerIdleSetIdle(void) ProcessParametersClear.headzone4temp = (ActiveProcessParameters.headzone4temp <80)? ActiveProcessParameters.headzone4temp :IdleHeadTemperature; ProcessParametersClear.headzone5temp = (ActiveProcessParameters.headzone5temp <80)? ActiveProcessParameters.headzone5temp :IdleHeadTemperature; ProcessParametersClear.headzone6temp = (ActiveProcessParameters.headzone6temp <80)? ActiveProcessParameters.headzone6temp :IdleHeadTemperature; + ProcessParametersClear.headzone7temp = (ActiveProcessParameters.headzone7temp <80)? ActiveProcessParameters.headzone7temp :IdleHeadTemperature; + ProcessParametersClear.headzone8temp = (ActiveProcessParameters.headzone6temp <80)? ActiveProcessParameters.headzone6temp :IdleHeadTemperature; + ProcessParametersClear.headzone9temp = (ActiveProcessParameters.headzone9temp <80)? ActiveProcessParameters.headzone9temp :IdleHeadTemperature; + ProcessParametersClear.headzone10temp = (ActiveProcessParameters.headzone10temp <80)? ActiveProcessParameters.headzone10temp :IdleHeadTemperature; + ProcessParametersClear.headzone11temp = (ActiveProcessParameters.headzone11temp <80)? ActiveProcessParameters.headzone11temp :IdleHeadTemperature; + ProcessParametersClear.headzone12temp = (ActiveProcessParameters.headzone12temp <80)? ActiveProcessParameters.headzone12temp :IdleHeadTemperature; ProcessParametersClear.dyeingspeed = (ActiveProcessParameters.dyeingspeed <40)? ActiveProcessParameters.dyeingspeed :IdleHeadTemperature; if (HandleProcessParameters(&ProcessParametersClear,false)!= OK) { @@ -80,7 +107,10 @@ void PowerIdleSetIdle(void) Control_Voltage_To_Blower(BlowerCfg.voltage-500); } SetMachineStatus(MACHINE_STATE__Sleep); - IdleToPowerDownControlId = AddControlCallback("IdleToPowerDown",PowerIdleToPowerDownCallBackFunction, eOneHour*2, TemplateDataReadCBFunction,0,0, 0 ); + if (Auto_Shutdown_Bypass == false) + { + IdleToPowerDownControlId = AddControlCallback("IdleToPowerDown",PowerIdleToPowerDownCallBackFunction, eOneHour*2, TemplateDataReadCBFunction,0,0, 0 ); + } } uint32_t PowerIdleCallBackFunction(uint32_t IfIndex, uint32_t BusyFlag) @@ -92,7 +122,7 @@ uint32_t PowerIdleCallBackFunction(uint32_t IfIndex, uint32_t BusyFlag) if (++powerIdleSecondsCounter>=powerIdleSecondsLimit) { - if (powerIdleState == false) + if ((powerIdleState == false)&&(Auto_Idle_Bypass == false)) { Report("PowerIdle Idle activated ",__FILE__,__LINE__,(int)powerIdleSecondsLimit,RpWarning,(int)powerIdleSecondsCounter,0); powerIdleState = true; diff --git a/Software/Embedded_SW/Embedded/StateMachines/Initialization/PowerIdle.h b/Software/Embedded_SW/Embedded/StateMachines/Initialization/PowerIdle.h index 71597d026..ccf080266 100644 --- a/Software/Embedded_SW/Embedded/StateMachines/Initialization/PowerIdle.h +++ b/Software/Embedded_SW/Embedded/StateMachines/Initialization/PowerIdle.h @@ -20,6 +20,8 @@ void PowerIdleActivateIdleState(void); void setmachineActive(bool Active); void PowerIdleInit(void); +bool Set_Auto_Shutdown_Bypass (int value); +bool Set_Auto_Idle_Bypass (int value); void PowerIdleSetParameters(uint32_t switchtoidletimeinseconds,uint32_t idledriertemperature,uint32_t idleheadtemperature,uint32_t idlemixertemperature); diff --git a/Software/Embedded_SW/Embedded/StateMachines/Initialization/PowerOffSequence.c b/Software/Embedded_SW/Embedded/StateMachines/Initialization/PowerOffSequence.c index 1e8511fb1..4218c64a1 100644 --- a/Software/Embedded_SW/Embedded/StateMachines/Initialization/PowerOffSequence.c +++ b/Software/Embedded_SW/Embedded/StateMachines/Initialization/PowerOffSequence.c @@ -244,6 +244,12 @@ uint32_t PowerOffHeatersOff(void) ProcessParametersClear.headzone4temp = 0; ProcessParametersClear.headzone5temp = 0; ProcessParametersClear.headzone6temp = 0; + ProcessParametersClear.headzone7temp = 0; + ProcessParametersClear.headzone8temp = 0; + ProcessParametersClear.headzone9temp = 0; + ProcessParametersClear.headzone10temp = 0; + ProcessParametersClear.headzone11temp = 0; + ProcessParametersClear.headzone12temp = 0; ProcessParametersClear.dyeingspeed = 40; if (HandleProcessParameters(&ProcessParametersClear,false)!= OK) { -- cgit v1.3.1 From f00b1c08c2d9a05ada6b9adc9e25906e25ff80d9 Mon Sep 17 00:00:00 2001 From: Shlomo Hecht Date: Tue, 11 Feb 2020 17:40:15 +0200 Subject: bug fixes, init handling --- .../Embedded_SW/Embedded/Common/report/report.h | 2 +- .../Embedded/Common/report/reportInit.c | 4 +- .../Embedded/Drivers/FPGA/FPGA_GPIO/FPGA_GPIO.c | 6 ++- .../Embedded/Drivers/I2C_Communication/I2C_Task.c | 15 ------- .../Embedded/Drivers/I2C_Communication/I2C_Task.h | 2 +- .../Embedded/Modules/AlarmHandling/AlarmHandling.c | 12 ++++-- .../Embedded/Modules/Control/MillisecTask.c | 4 +- .../Embedded/Modules/General/GeneralHardware.c | 19 -------- .../Embedded/Modules/Heaters/Heaters_print.c | 2 + .../Embedded/Modules/Stubs_Handler/Progress.c | 6 +-- .../Embedded/Modules/Thread/ThreadLoad.c | 1 + .../StateMachines/Initialization/InitSequence.c | 50 +++++++++++++++++++--- .../StateMachines/Initialization/PowerIdle.c | 1 + .../Initialization/PowerOffSequence.c | 5 +++ 14 files changed, 77 insertions(+), 52 deletions(-) (limited to 'Software/Embedded_SW/Embedded/Modules/Thread') diff --git a/Software/Embedded_SW/Embedded/Common/report/report.h b/Software/Embedded_SW/Embedded/Common/report/report.h index 2d7e93ca5..a267bfc6b 100644 --- a/Software/Embedded_SW/Embedded/Common/report/report.h +++ b/Software/Embedded_SW/Embedded/Common/report/report.h @@ -126,7 +126,7 @@ extern uint32_t StopReportInitMessage(MessageContainer* requestContainer); uint32_t SetDebugLogCategoryFunc(MessageContainer* requestContainer); void SetupDebugDisributorsRequestFunc(MessageContainer* requestContainer); -void ReportResetReason(void); +uint32_t ReportResetReason(void); uint32_t OpenLogFile(void); uint32_t CloseLogFile(void); bool isReportActive(void); diff --git a/Software/Embedded_SW/Embedded/Common/report/reportInit.c b/Software/Embedded_SW/Embedded/Common/report/reportInit.c index 6ed149039..8f3cde15f 100644 --- a/Software/Embedded_SW/Embedded/Common/report/reportInit.c +++ b/Software/Embedded_SW/Embedded/Common/report/reportInit.c @@ -255,7 +255,7 @@ void SetupDebugDisributorsRequestFunc(MessageContainer* requestContainer) } -void ReportResetReason(void) +uint32_t ReportResetReason(void) { /* #define SYSCTL_CAUSE_HSRVREQ 0x00001000 // Hardware System Service Request @@ -300,6 +300,8 @@ void ReportResetReason(void) if ((RESC & SYSCTL_CAUSE_WDOG1)||(RESC & SYSCTL_CAUSE_WDOG0)||(RESC & SYSCTL_CAUSE_BOR)) AlarmHandlingSetAlarm (EVENT_TYPE__UNINTENDED_RESET,ON); //handle alarm detection and operation + return RESC; + } uint32_t ReportInitMessage(MessageContainer* requestContainer) diff --git a/Software/Embedded_SW/Embedded/Drivers/FPGA/FPGA_GPIO/FPGA_GPIO.c b/Software/Embedded_SW/Embedded/Drivers/FPGA/FPGA_GPIO/FPGA_GPIO.c index c620cebdb..f182ec09c 100644 --- a/Software/Embedded_SW/Embedded/Drivers/FPGA/FPGA_GPIO/FPGA_GPIO.c +++ b/Software/Embedded_SW/Embedded/Drivers/FPGA/FPGA_GPIO/FPGA_GPIO.c @@ -525,10 +525,11 @@ uint32_t MagnetCallBackFunction(uint32_t IfIndex, uint32_t BusyFlag) Report("MagnetCallBackFunction",__FILE__,__LINE__,(int)MagnetControlId,RpWarning,(int)MagnetCallBackFunction,0); return OK; } - +//double BlowerSetPoint; uint32_t ActivateHeadMagnet() { Report("ActivateHeadMagnet - Close the lid magnet",__FILE__,__LINE__,(int)HARDWARE_MOTOR_TYPE__MOTO_RLOADARM,RpWarning,(int)DH_LID_OPEN,0); + //WHS_Start_Blower_Control_Closed_Loop(BlowerSetPoint); //Task_sleep(500); if(Head_Type == HEAD_TYPE_SYLKO) HeadCard_ActivateHeadMagnet(); @@ -551,6 +552,9 @@ uint32_t HeadCard_HeadMagnet_Disable(); */ uint32_t DeActivateHeadMagnet() { + //BlowerSetPoint = WHS_Get_Blower_Control_Closed_Loop_SetPoint(); + + //WHS_Start_Blower_Control_Closed_Loop(0.0); if(Head_Type == HEAD_TYPE_SYLKO) { diff --git a/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/I2C_Task.c b/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/I2C_Task.c index 4308a7913..cc876a45a 100644 --- a/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/I2C_Task.c +++ b/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/I2C_Task.c @@ -41,7 +41,6 @@ typedef enum Actuators_Control, /* enum for WHS :*/ - DetectNewWHS, WHS_start, WHS_init_I2C_IO, WHS_init_fan, @@ -161,16 +160,6 @@ void Trigger_InputsReading(void) } -void Trigger_Check_WHS_Type_Via_EEPROM() -{ - I2C_ReadingMessageStruc I2C_ReadingMessage; - - I2C_ReadingMessage.messageId = DetectNewWHS; - if (I2C_ReadingMsgQ != NULL) - Mailbox_post(I2C_ReadingMsgQ , &I2C_ReadingMessage, BIOS_NO_WAIT); - return; -} - void Trigger_WHS_init_IO(void) { I2C_ReadingMessageStruc I2C_ReadingMessage; @@ -461,10 +450,6 @@ void I2C_ReadingTask(UArg arg0, UArg arg1) } break; - case DetectNewWHS: - Check_WHS_Type_Via_EEPROM(); - break; - case WHS_init_I2C_IO: WHS_IO_Init(); break; diff --git a/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/I2C_Task.h b/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/I2C_Task.h index 4f5712442..bc58e2450 100644 --- a/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/I2C_Task.h +++ b/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/I2C_Task.h @@ -10,7 +10,7 @@ #define DRIVERS_I2C_COMMUNICATION_I2C_TASK_H_ -void Trigger_Check_WHS_Type_Via_EEPROM(void); + void Trigger_WHS_init_IO(void); void Trigger_WHS_init_fan(void); void Trigger_WHS_init_PT100(void); diff --git a/Software/Embedded_SW/Embedded/Modules/AlarmHandling/AlarmHandling.c b/Software/Embedded_SW/Embedded/Modules/AlarmHandling/AlarmHandling.c index 03135c0d5..d1fd48b32 100644 --- a/Software/Embedded_SW/Embedded/Modules/AlarmHandling/AlarmHandling.c +++ b/Software/Embedded_SW/Embedded/Modules/AlarmHandling/AlarmHandling.c @@ -636,7 +636,8 @@ uint32_t AlarmHandlingConsequentActions(uint32_t AlarmId, DebugLogCategory Sever { if (AlarmItem == NULL) return ERROR; - //DebugLogCategory reprocessedSeverity = Severity; + + DebugLogCategory reprocessedSeverity = Severity; //ProcessParameters ProcessParameterZero; switch (AlarmItem[AlarmId].AlarmSource) { @@ -691,14 +692,19 @@ uint32_t AlarmHandlingConsequentActions(uint32_t AlarmId, DebugLogCategory Sever Valve_Set(IDS_Id_to_AirValve[AlarmItem[AlarmId].DeviceId], AlarmItem[AlarmId].DeviceId ); //AlarmItem[AlarmId].DeviceId/ON Valve_Set(IDS_Id_to_CartrideValve[AlarmItem[AlarmId].DeviceId], AlarmItem[AlarmId].DeviceId ); //Atm_MidTank_OFF/ON } + if ((JobIsActive())&&(DispenserUsedInJob[AlarmItem[AlarmId].DeviceId] == false)) + { + reprocessedSeverity = DEBUG_LOG_CATEGORY__Warning; + } + } break; default: break; } - /*switch (reprocessedSeverity)*/ - switch (Severity) + switch (reprocessedSeverity) + /*switch (Severity)*/ { case DEBUG_LOG_CATEGORY__Warning: //raise flag fr next job diff --git a/Software/Embedded_SW/Embedded/Modules/Control/MillisecTask.c b/Software/Embedded_SW/Embedded/Modules/Control/MillisecTask.c index b24970ea0..48c7c3f5e 100644 --- a/Software/Embedded_SW/Embedded/Modules/Control/MillisecTask.c +++ b/Software/Embedded_SW/Embedded/Modules/Control/MillisecTask.c @@ -720,8 +720,8 @@ uint32_t MillisecLowLoop(uint32_t tick) } Trigger_WHS_PT100_Read_All(); Trigger_WHS_MAX11614_Read_allADC(); - WHS_Blower_Avarege_ORF1(); - WHS_Blower_Avarege_ORF3(); +// WHS_Blower_Avarege_ORF1(); //drier + WHS_Blower_Avarege_ORF3(); //head Trigger_WHSReadAllFanTacho (); } if (OneMinute_Tick) diff --git a/Software/Embedded_SW/Embedded/Modules/General/GeneralHardware.c b/Software/Embedded_SW/Embedded/Modules/General/GeneralHardware.c index ec7650f3d..2c6040bab 100644 --- a/Software/Embedded_SW/Embedded/Modules/General/GeneralHardware.c +++ b/Software/Embedded_SW/Embedded/Modules/General/GeneralHardware.c @@ -518,25 +518,6 @@ uint32_t HWConfiguration(UploadHardwareConfigurationRequest* UploadRequest) } } } - //from now on starting blower on INIT, so that the chiller does not freeze - /*if (BlowerCfg.enabled == true) - { - Turn_the_Blower_On();//Turn on with the Default_Voltage - if (BlowerCfg.heatingvoltage) - Control_Voltage_To_Blower(BlowerCfg.heatingvoltage); - else - Control_Voltage_To_Blower(BlowerCfg.voltage-500); - - }*/ - -/* - for (Dispenser_i = 0;Dispenser_i < MAX_SYSTEM_DISPENSERS;Dispenser_i++) - { - Enable_MidTank_Pressure_Reading(Dispenser_i); - Valve_Set(IDS_Id_to_AirValve[Dispenser_i], Atm_MidTank_ON ); //Atm_MidTank_OFF/ON - } - GenHWControlId = AddControlCallback(NULL, GenHWInitCallBackFunction, 2* eOneSecond, TemplateDataReadCBFunction,0,0, 0 ); -*/ ControlStart(); AlarmHandlingStart(); //ThreadInitialTestStub(request); diff --git a/Software/Embedded_SW/Embedded/Modules/Heaters/Heaters_print.c b/Software/Embedded_SW/Embedded/Modules/Heaters/Heaters_print.c index d84098469..079903a1c 100644 --- a/Software/Embedded_SW/Embedded/Modules/Heaters/Heaters_print.c +++ b/Software/Embedded_SW/Embedded/Modules/Heaters/Heaters_print.c @@ -694,6 +694,7 @@ void PrepareACHeater(int HeaterId,uint32_t Frequency, uint32_t SetTemperatue) HeaterAtTemp[HeaterId] = false; if (BlowerCfg.enabled == true) { + //WHS_Start_Blower_Control_Closed_Loop(2.5); Turn_the_Blower_On();//Turn on with the Default_Voltage if (BlowerCfg.heatingvoltage) Control_Voltage_To_Blower(BlowerCfg.heatingvoltage); @@ -1161,6 +1162,7 @@ uint32_t HeaterControlCBFunction(uint32_t IfIndex, uint32_t readValue) AlarmHandlingSetAlarm(HeaterUnderEventType[index], false); if (BlowerCfg.enabled == true) { + //WHS_Start_Blower_Control_Closed_Loop(5.0); Turn_the_Blower_On();//Turn on with the Default_Voltage if (BlowerCfg.voltage) //Gradual_Increase_Blower(BlowerCfg.heatingvoltage,BlowerCfg.voltage); diff --git a/Software/Embedded_SW/Embedded/Modules/Stubs_Handler/Progress.c b/Software/Embedded_SW/Embedded/Modules/Stubs_Handler/Progress.c index 56e314967..f87aa2eda 100644 --- a/Software/Embedded_SW/Embedded/Modules/Stubs_Handler/Progress.c +++ b/Software/Embedded_SW/Embedded/Modules/Stubs_Handler/Progress.c @@ -506,7 +506,7 @@ void Stub_ProgressRequest(MessageContainer* requestContainer) } else - if(request->amount == 0x0CC) //Cùøàøïâò÷ Vùêïâùàïíî ø÷ãôíîã÷ + if(request->amount == 0x0CC) //Cartridge Validation Response Demo { LOG_ERROR(request->delay,"ResponseDemo"); ResponseDemo(request->delay); @@ -550,7 +550,7 @@ void Stub_ProgressRequest(MessageContainer* requestContainer) response.has_progress = true; } else - if(request->amount == 0xB2) //fast refresh for pressure + if(request->amount == 0xB2) //Set loading arm cycles { LOG_ERROR(request->delay,"Set loading arm cycles"); @@ -567,7 +567,7 @@ void Stub_ProgressRequest(MessageContainer* requestContainer) } else - if(request->amount == 0xB4) //fast refresh for pressure + if(request->amount == 0xB4) //IDS_Dispenser_Content_Init { LOG_ERROR(request->amount,"IDS_Dispenser_Content_Init"); IDS_Dispenser_Content_Init(); diff --git a/Software/Embedded_SW/Embedded/Modules/Thread/ThreadLoad.c b/Software/Embedded_SW/Embedded/Modules/Thread/ThreadLoad.c index 2a83f8425..aa090625c 100644 --- a/Software/Embedded_SW/Embedded/Modules/Thread/ThreadLoad.c +++ b/Software/Embedded_SW/Embedded/Modules/Thread/ThreadLoad.c @@ -191,6 +191,7 @@ } else { + //WHS_Start_Blower_Control_Closed_Loop(2.5); Turn_the_Blower_On();//Turn on with the Default_Voltage if (BlowerCfg.heatingvoltage) Control_Voltage_To_Blower(BlowerCfg.heatingvoltage); diff --git a/Software/Embedded_SW/Embedded/StateMachines/Initialization/InitSequence.c b/Software/Embedded_SW/Embedded/StateMachines/Initialization/InitSequence.c index 937e348b0..d1f667405 100644 --- a/Software/Embedded_SW/Embedded/StateMachines/Initialization/InitSequence.c +++ b/Software/Embedded_SW/Embedded/StateMachines/Initialization/InitSequence.c @@ -39,6 +39,7 @@ INIT_SEQUENCE_BUILT_IN_TEST, INIT_SEQUENCE_INITIAL_BLOWER_ACTIVATION, //INIT_SEQUENCE_DISPENSER_PRESSURE_BUILDUP_TEST, + INIT_SEQUENCE_WAIT_FOR_COOLER, INIT_SEQUENCE_THREAD_DETECTION, INIT_SEQUENCE_START_HEATING, INIT_SEQUENCE_MACHINE_READY_TO_DYE, @@ -120,9 +121,10 @@ uint32_t Start_InitSequence(void) InitSchedulerControlId = AddControlCallback("InitScheduler", InitScheduler, eOneSecond, TemplateDataReadCBFunction,0,0, 0 ); return OK; } +uint32_t ResetReason = 0; void InitSequenceResetReason(void) { - ReportResetReason(); + ResetReason = ReportResetReason(); InitStages++; //InitSequenceStateMachine(InitStages); @@ -198,7 +200,7 @@ uint32_t InitSequenceBlowerCallBackFunction(uint32_t IfIndex, uint32_t BusyFlag) Control_Voltage_To_Blower(BlowerCfg.heatingvoltage); else Control_Voltage_To_Blower(3000); - + //WHS_Start_Blower_Control_Closed_Loop(2.5); AlarmHandlingSetAlarm (EVENT_TYPE__MACHINE_STATE_INITIAL_BLOWER_FAILED,OFF); //handle alarm detection and operation Safety_Init(); @@ -209,11 +211,12 @@ uint32_t InitSequenceBlowerCallBackFunction(uint32_t IfIndex, uint32_t BusyFlag) uint32_t InitSequenceInitialBlowerActivation(void) { MachineStateDetail = MACHINE_STATE_INITIAL_BLOWER_ACTIVATION; + //WHS_Start_Blower_Control_Closed_Loop(0.0); Turn_the_Blower_On();//Turn on with the Default_Voltage - if (BlowerCfg.voltage) - Control_Voltage_To_Blower(BlowerCfg.voltage); - else - Control_Voltage_To_Blower(3000); +// if (BlowerCfg.voltage) +// Control_Voltage_To_Blower(BlowerCfg.voltage); +// else + Control_Voltage_To_Blower(4200); HWControlId = AddControlCallback("Init Blower", InitSequenceBlowerCallBackFunction, 10* eOneSecond, TemplateDataReadCBFunction,0,0, 0 ); /*if (RdInkCartridgeSensor()) //if there is a cartridge in the ink slot skip the valves procedure { @@ -255,6 +258,39 @@ uint32_t InitSequenceDispenserPressureBuildUpTest(void) return OK; } +uint32_t InitSequenceWaitForCoolerCallBackFunction(uint32_t IfIndex, uint32_t BusyFlag) +{ + InitStages++; + MachineStateDetail = INIT_SEQUENCE_WAIT_FOR_COOLER; + + if (SafeRemoveControlCallback(HWControlId, InitSequenceWaitForCoolerCallBackFunction )==OK) + HWControlId = 0xFF; + else + Report("Remove control callback failed",__FILE__,__LINE__,(int)HWControlId,RpWarning,(int)InitSequenceWaitForCoolerCallBackFunction,0); + return OK; +} +uint32_t InitSequenceWaitForCooler(void) +{ + if (WHS_Type == WHS_TYPE_UNKNOWN) + { + InitStages++; + MachineStateDetail = INIT_SEQUENCE_WAIT_FOR_COOLER; + return OK; + } + if ((ResetReason & SYSCTL_CAUSE_SW)||(ResetReason & SYSCTL_CAUSE_WDOG1)||(ResetReason & SYSCTL_CAUSE_WDOG0)) + { + //soft-warm reset + InitStages++; + MachineStateDetail = INIT_SEQUENCE_WAIT_FOR_COOLER; + } + else + { + //cold reset, wait 2 minutes for cooler start + HWControlId = AddControlCallback("Init Cooler", InitSequenceWaitForCoolerCallBackFunction, 2*eOneMinute, TemplateDataReadCBFunction,0,0, 0 ); + } + //InitSequenceStateMachine(InitStages); + return OK; +} uint32_t InitSequenceThreadDetection(void) { InitStages++; @@ -352,6 +388,8 @@ uint32_t InitSequenceStateMachine( INIT_SEQUENCE_STAGES_ENUM ReadValue) /*case INIT_SEQUENCE_DISPENSER_PRESSURE_BUILDUP_TEST: InitSequenceDispenserPressureBuildUpTest(); break;*/ + case INIT_SEQUENCE_WAIT_FOR_COOLER: + InitSequenceWaitForCooler(); case INIT_SEQUENCE_THREAD_DETECTION: InitSequenceThreadDetection(); break; diff --git a/Software/Embedded_SW/Embedded/StateMachines/Initialization/PowerIdle.c b/Software/Embedded_SW/Embedded/StateMachines/Initialization/PowerIdle.c index 051d6c9cd..70e713420 100644 --- a/Software/Embedded_SW/Embedded/StateMachines/Initialization/PowerIdle.c +++ b/Software/Embedded_SW/Embedded/StateMachines/Initialization/PowerIdle.c @@ -100,6 +100,7 @@ void PowerIdleSetIdle(void) } if (BlowerCfg.enabled == true) { + //WHS_Start_Blower_Control_Closed_Loop(2.5); Turn_the_Blower_On();//Turn on with the Default_Voltage if (BlowerCfg.heatingvoltage) Control_Voltage_To_Blower(BlowerCfg.heatingvoltage); diff --git a/Software/Embedded_SW/Embedded/StateMachines/Initialization/PowerOffSequence.c b/Software/Embedded_SW/Embedded/StateMachines/Initialization/PowerOffSequence.c index 4218c64a1..0d45b8477 100644 --- a/Software/Embedded_SW/Embedded/StateMachines/Initialization/PowerOffSequence.c +++ b/Software/Embedded_SW/Embedded/StateMachines/Initialization/PowerOffSequence.c @@ -442,6 +442,7 @@ uint32_t PowerOffTurnOffCooler(void) /*******************************************************************************************************/ uint32_t PowerOffTurnOffBlower(void) { + //WHS_Start_Blower_Control_Closed_Loop(0.0); Turn_the_Blower_Off();//Turn off PowerOffMachineState++; return OK; @@ -455,6 +456,10 @@ uint32_t PowerOffPowerOff(void) REPORT_MSG (10-i, "Power off in x seconds"); Task_sleep (1000); } + ControlStop(); + MillisecStop(); + HeatersEnd(); + ROM_IntMasterDisable(); Power_Off(); return OK; } -- cgit v1.3.1 From 3deccf0347b1aaaf9f8d2f25e592b6cefe32451b Mon Sep 17 00:00:00 2001 From: Shlomo Hecht Date: Wed, 12 Feb 2020 15:21:06 +0200 Subject: Veraion 1.4.6.10 improve current reading, fir I2C interface, improve (?) task priorities --- .../Embedded_SW/Embedded/Common/SW_Info/SW_Info.c | 2 +- .../Drivers/I2C_Communication/ADC_MUX/ADC_MUX.c | 10 +-- .../I2C_Communication/Head_Card/IO_Ports/Head_IO.c | 2 +- .../Embedded/Drivers/I2C_Communication/I2C.h | 1 + .../Embedded/Drivers/I2C_Communication/I2C_Comm.c | 73 +++++++++++--------- .../Embedded/Drivers/I2C_Communication/I2C_Task.c | 26 +++----- .../Embedded/Drivers/Motors/MotorActions.c | 5 ++ .../Embedded/Drivers/flash_ram/FlashProgram.c | 2 +- Software/Embedded_SW/Embedded/Embedded.cfg | 78 +++++++++++----------- .../Embedded/Modules/AlarmHandling/AlarmHandling.c | 43 +++++++----- .../Embedded/Modules/Control/MillisecTask.c | 16 ++--- .../Embedded_SW/Embedded/Modules/Control/control.c | 4 +- .../Embedded/Modules/Diagnostics/Diagnostics.c | 13 +++- .../Embedded/Modules/Heaters/Heaters_print.c | 4 +- .../Embedded_SW/Embedded/Modules/IDS/IDS_print.c | 6 +- .../Embedded/Modules/Stubs_Handler/Progress.c | 18 +++++ .../Embedded/Modules/Thread/ThreadLoad.c | 8 +++ .../Initialization/PowerOffSequence.c | 2 + 18 files changed, 183 insertions(+), 130 deletions(-) (limited to 'Software/Embedded_SW/Embedded/Modules/Thread') 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 20dc627e8..e0dc92e1b 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,9}; +TangoVersion_t _gTangoVersion = {1,4,6,10}; #define BUILD_DATE __DATE__ char Dat[50] = BUILD_DATE; char _gTangoName [MAX_STRING_LEN] = "Tango01 ";//d diff --git a/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/ADC_MUX/ADC_MUX.c b/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/ADC_MUX/ADC_MUX.c index 123f3f1e9..e39d690aa 100644 --- a/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/ADC_MUX/ADC_MUX.c +++ b/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/ADC_MUX/ADC_MUX.c @@ -404,7 +404,7 @@ int Get_MidTank_Int1000_Sensor(MidTank_t MidTank_ID) //0-7 ///////////////////////// Head_MixChip_Heaters_Current ////////////////////////////// -bool Heaters_Current_Read_Enable[9] = {false,false,false,false,false,false,false,false,false}; +bool Heaters_Current_Read_Enable[9] = {false,false,false,false,false,false,true,true,false}; double Heaters_Current[9] = {1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0}; @@ -412,21 +412,21 @@ uint32_t Heaters_Current_Bits[9];//just for debug void Enable_Reading_Heaters_Current(HEATERS_CURRENT Heater_ID) //0-8 { - if(Head_Type > HEAD_TYPE_SYLKO_WITHOUT_CARD) + if((Head_Type > HEAD_TYPE_SYLKO_WITHOUT_CARD)&&(Heater_ID>=HEATER_DRYER_CURRENT_3)) return; assert (Heater_ID HEAD_TYPE_SYLKO_WITHOUT_CARD) + if((Head_Type > HEAD_TYPE_SYLKO_WITHOUT_CARD)&&(Heater_ID>=HEATER_DRYER_CURRENT_3)) return; assert (Heater_ID HEAD_TYPE_SYLKO_WITHOUT_CARD) + if((Head_Type > HEAD_TYPE_SYLKO_WITHOUT_CARD)&&(Heater_ID>=HEATER_DRYER_CURRENT_3)) return false; assert (Heater_ID HEAD_TYPE_SYLKO_WITHOUT_CARD) + if((Head_Type > HEAD_TYPE_SYLKO_WITHOUT_CARD)&&(Heater_ID>=HEATER_DRYER_CURRENT_3)) return 0; assert (Heater_ID 10) - { - Arb_Loss_Count= 0; - Init_All_I2C(); - ReportWithPackageFilter(CommFilter,"Reinitializing I2C master", __FILE__,__LINE__,status, RpMessage, Task_self(), 0); - } - } - else - { - if (Arb_Loss_Count) - ReportWithPackageFilter(CommFilter,"Resetting count", __FILE__, Arb_Loss_Count, status, RpMessage, Task_self(), 0); - - // Arb_Loss_Count = 0; - } return status; } @@ -190,23 +174,6 @@ uint32_t I2C_ReadBuff(uint32_t I2C_BASE, unsigned char addr, unsigned char* data //return I2CMasterErr(I2C_BASE) == I2C_MASTER_ERR_NONE; status |= I2CMasterErr(I2C_BASE); } - if (status == I2C_MASTER_ERR_ARB_LOST) - { - if (Arb_Loss_Count++ > 10) - { - Arb_Loss_Count= 0; - Init_All_I2C(); - ReportWithPackageFilter(CommFilter,"Reinitializing I2C master", __FILE__,__LINE__, status, RpMessage, Task_self(), 0); - - } - } - else - { - if (Arb_Loss_Count) - ReportWithPackageFilter(CommFilter,"Resetting count", __FILE__, Arb_Loss_Count, status, RpMessage, Task_self(), 0); - - //Arb_Loss_Count = 0; - } return status; } @@ -228,6 +195,10 @@ uint32_t I2C_Write(uint32_t I2C_ID, uint32_t Slave_Add, uint32_t *I2C_Write_buf, else return ERROR; + /* if (Task_self()!=I2C_Task_Handle) + { + ReportWithPackageFilter(CommFilter,"I2C_Write called from different task", __FILE__,__LINE__, I2C_Task_Handle, RpMessage, Task_self(), 0); + }*/ /* if ( (Slave_Add != 0xE0) && (Slave_Add != 0xE4) && (Slave_Add != 0xE3) & (Slave_Add != 0x40) && (Slave_Add != 0x44) && (Slave_Add != 0x46) & (Slave_Add != 0x98) && (Slave_Add != 0xA0) ) @@ -254,6 +225,22 @@ uint32_t I2C_Write(uint32_t I2C_ID, uint32_t Slave_Add, uint32_t *I2C_Write_buf, // } status = I2C_WriteBuff(I2C_BASE, Slave_Add, I2C_Write_buf, No_BytesToWrite); + if (status) + { + if (Arb_Loss_Count++ > 10) + { + Arb_Loss_Count= 0; + Init_All_I2C(); + ReportWithPackageFilter(CommFilter,"Reinitializing I2C master", __FILE__,__LINE__, status, RpMessage, Task_self(), 0); + + } + } + /*else + { + if (Arb_Loss_Count) + ReportWithPackageFilter(CommFilter,"Resetting count", __FILE__, Arb_Loss_Count, status, RpMessage, Task_self(), 0); + //Arb_Loss_Count = 0; + }*/ return status; } @@ -280,6 +267,10 @@ uint32_t I2C_Read(uint32_t I2C_ID, uint32_t Slave_Add, uint32_t *I2C_Read_buf, u (Slave_Add != 0x40) && (Slave_Add != 0x44) && (Slave_Add != 0x46) & (Slave_Add != 0x98) && (Slave_Add != 0xA0) ) return ERROR;*/ + /*if (Task_self()!=I2C_Task_Handle) + { + ReportWithPackageFilter(CommFilter,"I2C_Write called from different task", __FILE__,__LINE__, I2C_Task_Handle, RpMessage, Task_self(), 0); + }*/ Slave_Add = Slave_Add>>1; @@ -303,6 +294,22 @@ uint32_t I2C_Read(uint32_t I2C_ID, uint32_t Slave_Add, uint32_t *I2C_Read_buf, u //status = I2C_WriteBuff(I2C_BASE, Slave_Add, Bytes2Write, No_BytesTWrite); status = I2C_ReadBuff(I2C_BASE, Slave_Add, I2C_Read_buf, No_BytesToRead); + if (status) + { + if (Arb_Loss_Count++ > 10) + { + Arb_Loss_Count= 0; + Init_All_I2C(); + ReportWithPackageFilter(CommFilter,"Reinitializing I2C master", __FILE__,__LINE__, status, RpMessage, Task_self(), 0); + + } + } + /*else + { + if (Arb_Loss_Count) + ReportWithPackageFilter(CommFilter,"Resetting count", __FILE__, Arb_Loss_Count, status, RpMessage, Task_self(), 0); + //Arb_Loss_Count = 0; + }*/ return status; } diff --git a/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/I2C_Task.c b/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/I2C_Task.c index 4308a7913..c2097dbef 100644 --- a/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/I2C_Task.c +++ b/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/I2C_Task.c @@ -28,6 +28,7 @@ #include "modules/ids/ids_ex.h" extern Semaphore_Handle I2C_Sem; +Task_Handle I2C_Task_Handle; Mailbox_Handle I2C_ReadingMsgQ = NULL; typedef enum { @@ -41,7 +42,6 @@ typedef enum Actuators_Control, /* enum for WHS :*/ - DetectNewWHS, WHS_start, WHS_init_I2C_IO, WHS_init_fan, @@ -78,7 +78,10 @@ void Trigger_Heater_Current_Read(void) uint8_t Heater_i=0; I2C_ReadingMessage.messageId = Heater_Current_Reading; - I2C_ReadingMessage.parameter = Heater_i; + I2C_ReadingMessage.parameter = HEATER_DRYER_CURRENT_1; + if (I2C_ReadingMsgQ != NULL) + Mailbox_post(I2C_ReadingMsgQ , &I2C_ReadingMessage, BIOS_NO_WAIT); + I2C_ReadingMessage.parameter = HEATER_DRYER_CURRENT_2; if (I2C_ReadingMsgQ != NULL) Mailbox_post(I2C_ReadingMsgQ , &I2C_ReadingMessage, BIOS_NO_WAIT); @@ -161,16 +164,6 @@ void Trigger_InputsReading(void) } -void Trigger_Check_WHS_Type_Via_EEPROM() -{ - I2C_ReadingMessageStruc I2C_ReadingMessage; - - I2C_ReadingMessage.messageId = DetectNewWHS; - if (I2C_ReadingMsgQ != NULL) - Mailbox_post(I2C_ReadingMsgQ , &I2C_ReadingMessage, BIOS_NO_WAIT); - return; -} - void Trigger_WHS_init_IO(void) { I2C_ReadingMessageStruc I2C_ReadingMessage; @@ -398,6 +391,7 @@ void I2C_ReadingTask(UArg arg0, UArg arg1) I2C_ReadingMessageStruc I2C_ReadingMessage; Semaphore_post(I2C_Sem); TEMPERATURE_SENSOR_ID_ENUM Sensor_i; + I2C_Task_Handle = Task_self(); while(1) { @@ -425,7 +419,7 @@ void I2C_ReadingTask(UArg arg0, UArg arg1) break; case Heater_Current_Reading: //Report("Read_Heaters_Current",__FILE__,__LINE__,255,RpWarning,0,0); - if(Head_Type > HEAD_TYPE_SYLKO_WITHOUT_CARD) + if((Head_Type > HEAD_TYPE_SYLKO_WITHOUT_CARD)&&(I2C_ReadingMessage.parameter>=HEATER_DRYER_CURRENT_3)) Read_Head_ADC(I2C_ReadingMessage.parameter); else Read_Heaters_Current(I2C_ReadingMessage.parameter); @@ -440,7 +434,7 @@ void I2C_ReadingTask(UArg arg0, UArg arg1) HeadADCPT100_SensorInitConfig(); break; case Actuators_Control: - HeadCard_Actuators_Control(I2C_ReadingMessage.parameter, (bool)I2C_ReadingMessage.parameter2,(bool)I2C_ReadingMessage.parameter2); + HeadCard_Actuators_Control(I2C_ReadingMessage.parameter, (bool)I2C_ReadingMessage.parameter2,(bool)I2C_ReadingMessage.parameter3); break; case Inputs_Reading: Head_Read_IO_Reg(0x46, HIGH);//READ HEAD CARD LS @@ -461,10 +455,6 @@ void I2C_ReadingTask(UArg arg0, UArg arg1) } break; - case DetectNewWHS: - Check_WHS_Type_Via_EEPROM(); - break; - case WHS_init_I2C_IO: WHS_IO_Init(); break; diff --git a/Software/Embedded_SW/Embedded/Drivers/Motors/MotorActions.c b/Software/Embedded_SW/Embedded/Drivers/Motors/MotorActions.c index ddd0d293c..9fe7a67cc 100644 --- a/Software/Embedded_SW/Embedded/Drivers/Motors/MotorActions.c +++ b/Software/Embedded_SW/Embedded/Drivers/Motors/MotorActions.c @@ -839,6 +839,11 @@ void MotorActionsInit(void) MotorDriverResponse[i].Status = 0xFFFFFFFF; StoredMotorPosition[i] = 0; } + if (Head_Type == HEAD_TYPE_SYLKO)//adjust the limit switches + { + Motor_Id_to_LS_IdDown[HARDWARE_MOTOR_TYPE__MOTO_DH_LID] = HEADCARD_COVER_LS_REAR; + Motor_Id_to_LS_IdUp [HARDWARE_MOTOR_TYPE__MOTO_DH_LID] = HEADCARD_COVER_LS_FRONT; + } } diff --git a/Software/Embedded_SW/Embedded/Drivers/flash_ram/FlashProgram.c b/Software/Embedded_SW/Embedded/Drivers/flash_ram/FlashProgram.c index bef2b1727..240585e43 100644 --- a/Software/Embedded_SW/Embedded/Drivers/flash_ram/FlashProgram.c +++ b/Software/Embedded_SW/Embedded/Drivers/flash_ram/FlashProgram.c @@ -106,7 +106,7 @@ uint32_t ReadAppAndProgram(uint32_t ui32FlashStart,uint32_t ui32FileSize,void* b status = FlashProgram((uint32_t *)ui32BufferAddr, ui32ProgAddr,(ui32DataSize + 3) & ~3); if (status) - Report("FlashProgram Error", __FILE__,status,ui32FlashStart , RpMessage, (ui32DataSize + 3) & ~3, 0); + Report("FlashProgram Error", __FILE__,status,ui32ProgAddr , RpMessage, (ui32DataSize + 3) & ~3, 0); // // If there is more image to program, then update the programming diff --git a/Software/Embedded_SW/Embedded/Embedded.cfg b/Software/Embedded_SW/Embedded/Embedded.cfg index 26fd2a980..734902ce7 100644 --- a/Software/Embedded_SW/Embedded/Embedded.cfg +++ b/Software/Embedded_SW/Embedded/Embedded.cfg @@ -99,66 +99,60 @@ Program.global.ReconnectSem = Semaphore.create(null, semaphore7Params); var MillisecTaskParams = new Task.Params(); MillisecTaskParams.instance.name = "MilliSecond"; MillisecTaskParams.stackSize = 4096; -MillisecTaskParams.priority = 12; +MillisecTaskParams.priority = 14; Program.global.millisec = Task.create("&MillisecTask", MillisecTaskParams); -var FPGALoad = new Task.Params(); -FPGALoad.instance.name = "FPGALoad"; -FPGALoad.stackSize = 4096; -FPGALoad.priority = 4; -Program.global.FPGALoad = Task.create("&FPGALoadTask", FPGALoad); - -var I2C_Reading = new Task.Params(); -I2C_Reading.instance.name = "I2C_Reading"; -I2C_Reading.stackSize = 2048; -I2C_Reading.priority = 8; -Program.global.I2C_Reading = Task.create("&I2C_ReadingTask", I2C_Reading); - var ControlTaskParams = new Task.Params(); ControlTaskParams.instance.name = "control"; ControlTaskParams.stackSize = 2048; -ControlTaskParams.priority = 11; +ControlTaskParams.priority = 13; Program.global.control = Task.create("&controlTask", ControlTaskParams); -var AlarmHandlingTaskParams = new Task.Params(); -AlarmHandlingTaskParams.instance.name = "AlarmHandling"; -AlarmHandlingTaskParams.stackSize = 4096; -AlarmHandlingTaskParams.priority = 9; -Program.global.AlarmHandling = Task.create("&AlarmHandlingTask", AlarmHandlingTaskParams); - var CommTxTaskParams = new Task.Params(); CommTxTaskParams.instance.name = "communicationTx"; -CommTxTaskParams.priority = 10; +CommTxTaskParams.priority = 12; CommTxTaskParams.stackSize = 4096; Program.global.communicationTx = Task.create("&communicationTxTask", CommTxTaskParams); +var CommRxTaskParams = new Task.Params(); +CommRxTaskParams.instance.name = "communicationRx"; +CommRxTaskParams.priority = 11; +CommRxTaskParams.stackSize = 8192; +Program.global.communication = Task.create("&communicationTask", CommRxTaskParams); + +var AlarmHandlingTaskParams = new Task.Params(); +AlarmHandlingTaskParams.instance.name = "AlarmHandling"; +AlarmHandlingTaskParams.stackSize = 4096; +AlarmHandlingTaskParams.priority = 10; +Program.global.AlarmHandling = Task.create("&AlarmHandlingTask", AlarmHandlingTaskParams); + var ProcessTaskParams = new Task.Params(); ProcessTaskParams.instance.name = "process"; ProcessTaskParams.stackSize = 4096; -ProcessTaskParams.priority = 8; +ProcessTaskParams.priority = 9; Program.global.process = Task.create("&jobTask", ProcessTaskParams); +var I2C_Reading = new Task.Params(); +I2C_Reading.instance.name = "I2C_Reading"; +I2C_Reading.stackSize = 2048; +I2C_Reading.priority = 8; +Program.global.I2C_Reading = Task.create("&I2C_ReadingTask", I2C_Reading); + var HeaterControlTaskParams = new Task.Params(); HeaterControlTaskParams.instance.name = "HeatersControl"; HeaterControlTaskParams.priority = 7; Program.global.HeatersControl = Task.create("&HeatersControlTask", HeaterControlTaskParams); -var CommRxTaskParams = new Task.Params(); -CommRxTaskParams.instance.name = "communicationRx"; -CommRxTaskParams.priority = 9; -CommRxTaskParams.stackSize = 8192; -Program.global.communication = Task.create("&communicationTask", CommRxTaskParams); - -var MillisecLowTaskParams = new Task.Params(); -MillisecLowTaskParams.instance.name = "MilliSecondLow"; -MillisecLowTaskParams.stackSize = 2048; -MillisecLowTaskParams.priority = 5; -Program.global.millisecLow = Task.create("&MillisecLowTask", MillisecLowTaskParams); +var ReportTaskParams = new Task.Params(); +ReportTaskParams.instance.name = "report"; +ReportTaskParams.stackSize = 4096; +ReportTaskParams.priority = 6; +Program.global.report = Task.create("&reportService", ReportTaskParams); var ControlLowTaskParams = new Task.Params(); ControlLowTaskParams.instance.name = "controlLow"; ControlLowTaskParams.stackSize = 4096; -ControlLowTaskParams.priority = 6; +ControlLowTaskParams.priority = 5; Program.global.controlLow = Task.create("&controlLowTask", ControlLowTaskParams); var DiagnosticsTaskParams = new Task.Params(); @@ -167,17 +161,23 @@ DiagnosticsTaskParams.priority = 4; DiagnosticsTaskParams.stackSize = 8192; Program.global.Diagnostics = Task.create("&DiagnosticsTask", DiagnosticsTaskParams); +var MillisecLowTaskParams = new Task.Params(); +MillisecLowTaskParams.instance.name = "MilliSecondLow"; +MillisecLowTaskParams.stackSize = 2048; +MillisecLowTaskParams.priority = 3; +Program.global.millisecLow = Task.create("&MillisecLowTask", MillisecLowTaskParams); + var ADCProcessTaskParams = new Task.Params(); ADCProcessTaskParams.instance.name = "adcProcess"; ADCProcessTaskParams.stackSize = 512; ADCProcessTaskParams.priority = 2; Program.global.adcProcess = Task.create("&ADCProcessTask", ADCProcessTaskParams); -var ReportTaskParams = new Task.Params(); -ReportTaskParams.instance.name = "report"; -ReportTaskParams.stackSize = 4096; -ReportTaskParams.priority = 7; -Program.global.report = Task.create("&reportService", ReportTaskParams); +var FPGALoad = new Task.Params(); +FPGALoad.instance.name = "FPGALoad"; +FPGALoad.stackSize = 4096; +FPGALoad.priority = 2; +Program.global.FPGALoad = Task.create("&FPGALoadTask", FPGALoad); var updateTaskParams = new Task.Params(); updateTaskParams.instance.name = "update"; diff --git a/Software/Embedded_SW/Embedded/Modules/AlarmHandling/AlarmHandling.c b/Software/Embedded_SW/Embedded/Modules/AlarmHandling/AlarmHandling.c index d1fd48b32..caa3e8df4 100644 --- a/Software/Embedded_SW/Embedded/Modules/AlarmHandling/AlarmHandling.c +++ b/Software/Embedded_SW/Embedded/Modules/AlarmHandling/AlarmHandling.c @@ -66,7 +66,6 @@ uint32_t AlarmHandlingControlId = 0xFF; uint32_t AlarmHandlingTick = 0; double CurrentAlarmHighLimit ,CurrentAlarmLowLimit; - bool CheckHardLimitAlarms = false,CheckCurrentAlarms = false,CheckTamperAlarms = false,CheckMotorAlarms = false; uint8_t alarm_response_buffer[500]; @@ -837,6 +836,13 @@ JobEndReasonEnum AlarmHandlingPrepareJob(void *CurrentJob) } for (Alarm_i = 0;Alarm_i= (float)(AlarmItem[Alarm_i].AlarmValue*CurrentAlarmHighLimit)) || (doubleValue <= (float)(AlarmItem[Alarm_i].AlarmValue*CurrentAlarmLowLimit))) + if (AlarmItem[Alarm_i].AlarmDirection == true) { - Status = true; - if (AlarmState[Alarm_i].Status == false) - ReportWithPackageFilter(AlarmFilter,"OverCurrent Alarm ON ", __FILE__,AlarmItem[Alarm_i].DeviceId,(int)(AlarmItem[Alarm_i].AlarmValue*100), RpMessage, (int)(doubleValue*100), 0); + if ((doubleValue >= (float)(AlarmItem[Alarm_i].AlarmValue*CurrentAlarmHighLimit)) || (doubleValue <= (float)(AlarmItem[Alarm_i].AlarmValue*CurrentAlarmLowLimit))) + { + Status = true; + if (AlarmState[Alarm_i].Status == false) + ReportWithPackageFilter(AlarmFilter,"OverCurrent Alarm ON ", __FILE__,AlarmItem[Alarm_i].DeviceId,(int)(AlarmItem[Alarm_i].AlarmValue*100), RpMessage, (int)(doubleValue*100), 0); + } } - } - else - { - if (doubleValue <= 0.1) + else { - Status = true; - if (AlarmState[Alarm_i].Status == false) - ReportWithPackageFilter(AlarmFilter,"loop break Alarm ON ", __FILE__,AlarmItem[Alarm_i].DeviceId,(int)(AlarmItem[Alarm_i].AlarmValue*100), RpMessage, (int)(doubleValue*100), 0); + if (doubleValue <= 0.1) + { + Status = true; + if (AlarmState[Alarm_i].Status == false) + ReportWithPackageFilter(AlarmFilter,"loop break Alarm ON ", __FILE__,AlarmItem[Alarm_i].DeviceId,(int)(AlarmItem[Alarm_i].AlarmValue*100), RpMessage, (int)(doubleValue*100), 0); + } } } } @@ -1266,7 +1279,7 @@ uint32_t AlarmHandlingLoop(uint32_t tick) case ALARM_SOURCE_TYPE__TachoAlarm: // add by shai Status = false; - if (CheckCurrentAlarms) + if (CheckTamperAlarms) { // ReportWithPackageFilter(AlarmFilter,"------------FANS_RPM[Alarm_i]----------------", __FILE__,__LINE__,Alarm_i, RpMessage, value, 0); diff --git a/Software/Embedded_SW/Embedded/Modules/Control/MillisecTask.c b/Software/Embedded_SW/Embedded/Modules/Control/MillisecTask.c index 48c7c3f5e..e5064ef70 100644 --- a/Software/Embedded_SW/Embedded/Modules/Control/MillisecTask.c +++ b/Software/Embedded_SW/Embedded/Modules/Control/MillisecTask.c @@ -579,7 +579,7 @@ uint32_t MillisecLowLoop(uint32_t tick) //test dancers and speed encoders //check all callback units (state machine waiting for completion of a change) bool Ten_msTick, Fifty_msTick, Hundred_msTick , m20msecTick,m70msecTick,m90msecTick, Onesecond_Tick,OneMinute_Tick,OneHourTick,Gradient_Tick; - bool O100Millisecond_Tick,O200Millisecond_Tick,O400Millisecond_Tick,O500Millisecond_Tick,O600Millisecond_Tick; + bool O700Millisecond_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; Fifty_msTick = (tick%eHundredMillisecond == 40) ?true:false; //eFiftyMillisecond @@ -587,7 +587,7 @@ uint32_t MillisecLowLoop(uint32_t tick) m20msecTick = (tick%eHundredMillisecond == 20) ?true:false; m70msecTick = (tick%eHundredMillisecond == 70) ?true:false; m90msecTick = (tick%eHundredMillisecond == 90) ?true:false; - O100Millisecond_Tick = (tick%eOneSecond == 100) ?true:false; + O700Millisecond_Tick = (tick%eOneSecond == 700) ?true:false; O200Millisecond_Tick = (tick%eOneSecond == 200) ?true:false; O400Millisecond_Tick = (tick%eOneSecond == 400) ?true:false; O500Millisecond_Tick = (tick%eOneSecond == 500) ?true:false; @@ -663,7 +663,7 @@ uint32_t MillisecLowLoop(uint32_t tick) } if (Gradient_Tick) DispensersCollectionCall(); - if (O100Millisecond_Tick) + if (O700Millisecond_Tick) { Trigger_Heater_Current_Read(); } @@ -705,8 +705,8 @@ uint32_t MillisecLowLoop(uint32_t tick) MachineUpdateResponseFunc(); //KeepAliveOneSecondCall(); - TemperatureListString(Lenstr); - ReportWithPackageFilter(ThreadFilter,Lenstr,__FILE__,__LINE__,(int)Counter++,RpWarning,(int) msec_millisecondCounter,0); + //TemperatureListString(Lenstr); + //ReportWithPackageFilter(ThreadFilter,Lenstr,__FILE__,__LINE__,(int)Counter++,RpWarning,(int) msec_millisecondCounter,0); for (Sensor_i = StartPT100;Sensor_i < MAX_HEAD_CARD_TEMP_SENS_ID;Sensor_i++) { TemperatureCalc[Sensor_i] = MillisecCalculateTemperatures ( Sensor_i); @@ -718,10 +718,10 @@ uint32_t MillisecLowLoop(uint32_t tick) PressureCalc[Disp_i] = MillisecCalculatePressures(Disp_i); } } - Trigger_WHS_PT100_Read_All(); - Trigger_WHS_MAX11614_Read_allADC(); + Trigger_WHS_PT100_Read_All(); + Trigger_WHS_MAX11614_Read_allADC(); // WHS_Blower_Avarege_ORF1(); //drier - WHS_Blower_Avarege_ORF3(); //head + WHS_Blower_Avarege_ORF3(); //head Trigger_WHSReadAllFanTacho (); } if (OneMinute_Tick) diff --git a/Software/Embedded_SW/Embedded/Modules/Control/control.c b/Software/Embedded_SW/Embedded/Modules/Control/control.c index 5adf6f83d..a6540bc81 100644 --- a/Software/Embedded_SW/Embedded/Modules/Control/control.c +++ b/Software/Embedded_SW/Embedded/Modules/Control/control.c @@ -576,8 +576,8 @@ uint32_t ControlLowLoop(uint32_t tick) if (tick-prevtick>1) { skipped_ticks = tick-prevtick-1; - if (tick-prevtick>10) - Report("ControlLowLoop skipped",__FILE__,tick,(int)prevtick,RpWarning,(int)skipped_ticks,0); + //if (tick-prevtick>10) + // Report("ControlLowLoop skipped",__FILE__,tick,(int)prevtick,RpWarning,(int)skipped_ticks,0); } prevtick = tick; diff --git a/Software/Embedded_SW/Embedded/Modules/Diagnostics/Diagnostics.c b/Software/Embedded_SW/Embedded/Modules/Diagnostics/Diagnostics.c index bb8f5d994..f1538197b 100644 --- a/Software/Embedded_SW/Embedded/Modules/Diagnostics/Diagnostics.c +++ b/Software/Embedded_SW/Embedded/Modules/Diagnostics/Diagnostics.c @@ -461,7 +461,7 @@ void DiagnosticOneMinuteCollection(void) for (i=0;i DispenserPreparePressure) + if (GetDispenserPressure(i) > DispenserPreparePressure*1.02) { NumofReadyDispensers++; CurrentDispenserSpeed[i] = 0; @@ -528,7 +528,7 @@ uint32_t InactiveDispenserHome(uint32_t DispenserId, uint32_t ReadValue) //Report("IDS stopped ready",__FILE__,i,(int)(DispenserPreparePressure*100),RpWarning,(int)NumofReadyDispensers,0); #else tempSpeed = CurrentDispenserSpeed[i]; - updatedSpeed = (tempSpeed*0.985>100)?tempSpeed*0.985:100; + updatedSpeed = (tempSpeed*0.992>100)?tempSpeed*0.992:100; MotorSetSpeed(HW_Motor_Id, updatedSpeed); CurrentDispenserSpeed[i] = updatedSpeed; //Report("IDS reduce speed",__FILE__,i,(int)tempSpeed,RpWarning,(int)updatedSpeed,0); @@ -543,7 +543,7 @@ uint32_t InactiveDispenserHome(uint32_t DispenserId, uint32_t ReadValue) #else tempSpeed = CurrentDispenserSpeed[i]; #endif - updatedSpeed = (tempSpeed*1.02amount == 0xC3) //suspend I2C task + { + if (request->delay == 0) + { + LOG_ERROR(request->delay,"Suspend I2C"); + PowerOffHeatersOff(); + Task_sleep(1000); + Task_setPri (I2C_Task_Handle,-1); + } + else + { + LOG_ERROR(request->delay,"Resume"); + Task_setPri (I2C_Task_Handle,8); + } + response.progress = request->delay; + response.has_progress = true; + } else if((request->amount == 0xDF) && (request->delay == 0xDF)) //Power off { diff --git a/Software/Embedded_SW/Embedded/Modules/Thread/ThreadLoad.c b/Software/Embedded_SW/Embedded/Modules/Thread/ThreadLoad.c index aa090625c..4ab59ec19 100644 --- a/Software/Embedded_SW/Embedded/Modules/Thread/ThreadLoad.c +++ b/Software/Embedded_SW/Embedded/Modules/Thread/ThreadLoad.c @@ -180,6 +180,14 @@ ProcessParametersClear.headzone4temp = 0; ProcessParametersClear.headzone5temp = 0; ProcessParametersClear.headzone6temp = 0; + ProcessParametersClear.headzone7temp = 0; + ProcessParametersClear.headzone8temp = 0; + ProcessParametersClear.headzone9temp = 0; + ProcessParametersClear.headzone10temp = 0; + ProcessParametersClear.headzone11temp = 0; + ProcessParametersClear.headzone12temp = 0; + ProcessParametersClear.stspzone1temp = 0; + ProcessParametersClear.stspzone2temp = 0; ProcessParametersClear.dyeingspeed = 40; ProcessParametersClear.dryerbufferlength = ProcessParametersKeep.dryerbufferlength; if (HandleProcessParameters(&ProcessParametersClear,false)!= OK) diff --git a/Software/Embedded_SW/Embedded/StateMachines/Initialization/PowerOffSequence.c b/Software/Embedded_SW/Embedded/StateMachines/Initialization/PowerOffSequence.c index 0d45b8477..5cc94a909 100644 --- a/Software/Embedded_SW/Embedded/StateMachines/Initialization/PowerOffSequence.c +++ b/Software/Embedded_SW/Embedded/StateMachines/Initialization/PowerOffSequence.c @@ -250,6 +250,8 @@ uint32_t PowerOffHeatersOff(void) ProcessParametersClear.headzone10temp = 0; ProcessParametersClear.headzone11temp = 0; ProcessParametersClear.headzone12temp = 0; + ProcessParametersClear.stspzone1temp = 0; + ProcessParametersClear.stspzone2temp = 0; ProcessParametersClear.dyeingspeed = 40; if (HandleProcessParameters(&ProcessParametersClear,false)!= OK) { -- cgit v1.3.1 From ef657b4a3ae76e99ab077d6b4fc19691c2a0da4a Mon Sep 17 00:00:00 2001 From: Avi Levkovich Date: Mon, 17 Feb 2020 16:07:38 +0200 Subject: merge --- .../Embedded_SW/Embedded/Common/SW_Info/SW_Info.c | 2 +- .../Embedded/Drivers/I2C_Communication/I2C_Task.c | 22 ++++++++ .../Embedded/Drivers/I2C_Communication/I2C_Task.h | 2 +- .../WHS_Card/D_Max5805_ADC_Blower/WHS_Blower.c | 62 ++++++++++++++++---- .../WHS_Card/D_Max5805_ADC_Blower/WHS_Blower.h | 7 ++- .../Embedded_SW/Embedded/Drivers/Valves/Valve.c | 4 +- Software/Embedded_SW/Embedded/Main.c | 12 ++-- .../Embedded/Modules/General/GeneralHardware.c | 8 +-- .../Embedded_SW/Embedded/Modules/General/buttons.c | 66 ++++++++++++++-------- .../Embedded/Modules/Heaters/Heaters_print.c | 3 +- .../Embedded_SW/Embedded/Modules/IDS/IDS_maint.c | 7 ++- .../Embedded_SW/Embedded/Modules/IDS/IDS_print.c | 29 +++++----- .../Embedded/Modules/Stubs_Handler/Progress.c | 12 +++- .../Embedded/Modules/Thread/ThreadLoad.c | 1 + .../Embedded/Modules/Thread/Thread_init.c | 5 +- 15 files changed, 173 insertions(+), 69 deletions(-) (limited to 'Software/Embedded_SW/Embedded/Modules/Thread') 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 e0dc92e1b..6885ee3d8 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,10}; +TangoVersion_t _gTangoVersion = {1,4,6,11}; #define BUILD_DATE __DATE__ char Dat[50] = BUILD_DATE; char _gTangoName [MAX_STRING_LEN] = "Tango01 ";//d diff --git a/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/I2C_Task.c b/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/I2C_Task.c index ce777f393..27ae72084 100644 --- a/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/I2C_Task.c +++ b/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/I2C_Task.c @@ -55,6 +55,7 @@ typedef enum WHS_READ_FAN_TACHO, WHS_READ_ALL_FAN_TACHO, WHS_SET_VOLT_BLOWER_CONTROL, + WHS_SETPOINT_Q_BLOWER, WHS_SET_VAlVE_CARTRIDGE, WHS_SET_PUMP, WHS_READ_ADC, @@ -301,6 +302,19 @@ void Trigger_SetWHSBlowerVoltage (uint16_t voltage) return; } +void Trigger_WHS_Set_Blower_Control_Closed_Loop (uint32_t setpoint_Q) +{ + I2C_ReadingMessageStruc I2C_ReadingMessage; + + I2C_ReadingMessage.messageId = WHS_SETPOINT_Q_BLOWER; + I2C_ReadingMessage.parameter = setpoint_Q; + + if (I2C_ReadingMsgQ != NULL) + Mailbox_post(I2C_ReadingMsgQ , &I2C_ReadingMessage, BIOS_NO_WAIT); + return; +} + + //void Trigger_WHS_Set_Valve(uint8_t valve_number, bool status) void Trigger_SetWHSValveWatseCartridge(uint8_t Cart_Id) { @@ -389,12 +403,14 @@ void I2C_ReadingTask_Init(void) { I2C_ReadingMsgQ = Mailbox_create(sizeof(I2C_ReadingMessageStruc), 40, NULL,NULL); } + void I2C_ReadingTask(UArg arg0, UArg arg1) { I2C_ReadingMessageStruc I2C_ReadingMessage; Semaphore_post(I2C_Sem); TEMPERATURE_SENSOR_ID_ENUM Sensor_i; I2C_Task_Handle = Task_self(); + double dbl_setpoint_Q = 0.0; while(1) { @@ -498,6 +514,12 @@ void I2C_ReadingTask(UArg arg0, UArg arg1) WHS_Set_Volt_Blower_Control(I2C_ReadingMessage.parameter); //(fan_number, 0x20) break; + case WHS_SETPOINT_Q_BLOWER: + + dbl_setpoint_Q = (double)(I2C_ReadingMessage.parameter / 100) ; + WHS_Set_Blower_Control_Closed_Loop(dbl_setpoint_Q); + break; + case WHS_SET_VAlVE_CARTRIDGE: // Set_WHS_valve(VALVE_0, I2C_ReadingMessage.parameter, 0); Write_WHS_Valve_reg(); diff --git a/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/I2C_Task.h b/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/I2C_Task.h index 03edea5d9..b16e87766 100644 --- a/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/I2C_Task.h +++ b/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/I2C_Task.h @@ -27,7 +27,7 @@ void Trigger_WHS_PT100_Read_All(void); void Trigger_ReadWHSPT100(uint8_t PT100_Id); //void Trigger_WHS_Set_Volt_Blower_Control(uint16_t volt); void Trigger_SetWHSBlowerVoltage (uint16_t voltage); - +void Trigger_WHS_Set_Blower_Control_Closed_Loop (uint32_t setpoint_Q); //void Trigger_WHS_Set_Valve(uint8_t valve_number, bool status); void Trigger_SetWHSValveWatseCartridge(uint8_t Cart_Id); //void Trigger_WHS_Set_Pump(bool status); 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 310ad9163..28b4f8598 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 @@ -109,8 +109,15 @@ int16_t Write_Max5805_LDACn(bool value) bool WHS_Set_Volt_Blower_Control(uint16_t volt) { bool status = OK; - MAX5805_CODE_LOAD( volt); - ReportWithPackageFilter(WasteFilter,"------------ WHS_Set_Volt_Blower_Control (volt)-----------------", __FILE__,__LINE__, volt, RpMessage, 0, 0); + if (volt > 0xFFF ) //the max value is 0xFFF + { + ReportWithPackageFilter(WasteFilter,"------------ WHS_Set_Volt_Blower_Control (volt) high > 0xFFF-----------------", __FILE__,__LINE__, volt, RpMessage, 0, 0); + } + else + { + MAX5805_CODE_LOAD( volt); + ReportWithPackageFilter(WasteFilter,"------------ WHS_Set_Volt_Blower_Control (volt)-----------------", __FILE__,__LINE__, volt, RpMessage, 0, 0); + } return status; } @@ -221,6 +228,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); return OK; } @@ -252,24 +260,26 @@ bool Test_WHS_blower() return status; } -#define SET_DYEING_HEAD_ORRIFFICE_SENSOR 0 //todo +#define SET_DYEING_HEAD_ORRIFFICE_SENSOR headairflow //todo #define LARGE_STEP 10 //todo define the correct number #define SMALL_STEP 1 //todo define the correct number -bool WHS_Set_Blower_Control_Closed_Loop() +bool WHS_Set_Blower_Control_Closed_Loop(double SetPoint_Q) { //double average_ORF1_Q = 0; - double current_dying_head_flow = 0; + double current_dying_head_flow_Q = 0; uint16_t volt; - //average_ORF1_Q = get_Q((int16_t) average_ORF1); - current_dying_head_flow = get_average_ORF1_Q(); - if (abs(current_dying_head_flow - SET_DYEING_HEAD_ORRIFFICE_SENSOR) > 0.2) + + current_dying_head_flow_Q = get_average_ORF3_Q(); + ReportWithPackageFilter(WasteFilter,"------------ current_dying_head_flow_Q =-----------------", __FILE__,__LINE__, current_dying_head_flow_Q, RpMessage, 0, 0); + ReportWithPackageFilter(WasteFilter,"------------ SET_DYEING_HEAD_ORRIFFICE_SENSOR =-----------------", __FILE__,__LINE__, SET_DYEING_HEAD_ORRIFFICE_SENSOR, RpMessage, current_dying_head_flow_Q, 0); + if (abs(current_dying_head_flow_Q - SetPoint_Q) > 0.2) { volt = getBlowerState(); - if (current_dying_head_flow < SET_DYEING_HEAD_ORRIFFICE_SENSOR) + if (current_dying_head_flow_Q < SetPoint_Q) { - if (( SET_DYEING_HEAD_ORRIFFICE_SENSOR - current_dying_head_flow) > 0.5) + if (( SetPoint_Q - current_dying_head_flow_Q) > 0.5) { /* increase blower voltage by large step: */ ReportWithPackageFilter(WasteFilter,"------------ increase blower voltage by large step:-----------------", __FILE__,__LINE__, volt, RpMessage, LARGE_STEP, 0); @@ -284,7 +294,7 @@ bool WHS_Set_Blower_Control_Closed_Loop() } else { - if (( current_dying_head_flow -SET_DYEING_HEAD_ORRIFFICE_SENSOR) > 0.5) + if (( current_dying_head_flow_Q - SetPoint_Q) > 0.5) { /* decrease blower voltage by large step: */ ReportWithPackageFilter(WasteFilter,"------------ decrease blower voltage by large step:-----------------", __FILE__,__LINE__, volt, RpMessage, LARGE_STEP, 0); @@ -301,6 +311,36 @@ bool WHS_Set_Blower_Control_Closed_Loop() return OK; } +void WHS_Start_Blower_Control_Closed_Loop (double SetPoint_Q) +{ + // use 0 to STOP +// uint16_t mVSetpoint = 0; + + if(SetPoint_Q) + { + WHS_Set_Blower_Control_Closed_Loop(SetPoint_Q); + } + else + { + // blower off? + } + + +} +double WHS_Get_Blower_Control_Closed_Loop_SetPoint(void) +{ + double SetPoint = 0; + // to do return the setpoint + return SetPoint; +} + +/* +uint16_t Convert_SetPoint_to_mV(double SetPoint) +{ + uint16_t value = (uint16_t)SetPoint; //todo convert function +return value; +} +*/ diff --git a/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/WHS_Card/D_Max5805_ADC_Blower/WHS_Blower.h b/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/WHS_Card/D_Max5805_ADC_Blower/WHS_Blower.h index 2b776fbc9..9f79034bb 100644 --- a/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/WHS_Card/D_Max5805_ADC_Blower/WHS_Blower.h +++ b/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/WHS_Card/D_Max5805_ADC_Blower/WHS_Blower.h @@ -22,7 +22,12 @@ double WHS_Blower_Avarege_ORF1(void); double WHS_Blower_Avarege_ORF3(void); double get_average_ORF1_Q(void); double get_average_ORF3_Q(void); -bool WHS_Set_Blower_Control_Closed_Loop(); +bool WHS_Set_Blower_Control_Closed_Loop(double SetPoint); +void WHS_Start_Blower_Control_Closed_Loop (double SetPoint); +double WHS_Get_Blower_Control_Closed_Loop_SetPoint(void); + + +extern double headairflow; /* from Blower.h * uint32_t Turn_the_Blower_On(); diff --git a/Software/Embedded_SW/Embedded/Drivers/Valves/Valve.c b/Software/Embedded_SW/Embedded/Drivers/Valves/Valve.c index cf54019c5..dc92b6683 100644 --- a/Software/Embedded_SW/Embedded/Drivers/Valves/Valve.c +++ b/Software/Embedded_SW/Embedded/Drivers/Valves/Valve.c @@ -430,8 +430,8 @@ uint32_t Control3WayValvesWithCallback (Valves_t _ValveId, bool direction, callb Valve3WayControlId[_ValveId] = AddControlCallback("Valve3WayControlId", Valve3WayCallBackFunction, eOneSecond/*eHundredMillisecond*/, FPGA_GetDispenserValveBusyOCD,(IfTypeDisopenser*0x100+_ValveId), _ValveId, 0 ); if (Valve3WayControlId[_ValveId] == 0xFF) Report("Add control callback failed",__FILE__,__LINE__,(int)_ValveId,RpWarning,(int)Valve3WayControlId[_ValveId],0); - //else - // Report("Add control callback",__FILE__,__LINE__,(int)_ValveId,RpWarning,(int)Valve3WayControlId[_ValveId],0); + else + Report("Add control callback",__FILE__,__LINE__,(int)_ValveId,RpWarning,(int)Valve3WayControlId[_ValveId],0); /*busy = */FPGA_GetDispenserValveBusyOCD(_ValveId,0); //Report("Set valve id, dir, busy",__FILE__,_ValveId,(int)direction,RpWarning,(int)busy,0); diff --git a/Software/Embedded_SW/Embedded/Main.c b/Software/Embedded_SW/Embedded/Main.c index 393a366ac..6b5424d74 100644 --- a/Software/Embedded_SW/Embedded/Main.c +++ b/Software/Embedded_SW/Embedded/Main.c @@ -143,7 +143,7 @@ Void errHook(Error_Block *eb) CloseLogFile(); if (UpdateFlag == true) return; - FileHandle = my_malloc(sizeof(FIL)); + /*FileHandle = my_malloc(sizeof(FIL)); if (FileHandle == 0) Fresult = FR_DENIED; else @@ -155,19 +155,19 @@ Void errHook(Error_Block *eb) strncpy(File,site->file,49); len = usnprintf(message, 80, "\r\n%s %s",__DATE__, __TIME__); Fresult = f_write(FileHandle,message,len,&Bytes ); - /* print user supplied error code */ + // print user supplied error code len = usnprintf(message, 300, "\r\nerror %d, eid %d mod %d file %s line %d", eCode, eid,site->mod, site->file,site->line); Fresult = f_write(FileHandle,message,len,&Bytes ); //LOG_ERROR (eCode, "error # "); - /* check originator's mod id against known mods */ + // check originator's mod id against known mods if (site->mod == Main_Module_id()) { Fresult = f_write(FileHandle,"\r\napp error: ",12,&Bytes ); } - /* check error id against known errors */ + // check error id against known errors if (eid == Error_E_generic) { Fresult = f_write(FileHandle,"generic: ",10,&Bytes ); } @@ -176,12 +176,12 @@ Void errHook(Error_Block *eb) Fresult = f_write(FileHandle,"\r\nassertion violation: ",22,&Bytes ); } - /* perform default error output */ + // perform default error output f_close(FileHandle); } Task_sleep (200); my_free(FileHandle); - } + }*/ #ifdef WATCHDOG //Power_Reset(); SysCtlReset(); diff --git a/Software/Embedded_SW/Embedded/Modules/General/GeneralHardware.c b/Software/Embedded_SW/Embedded/Modules/General/GeneralHardware.c index 2c6040bab..4f6a40c90 100644 --- a/Software/Embedded_SW/Embedded/Modules/General/GeneralHardware.c +++ b/Software/Embedded_SW/Embedded/Modules/General/GeneralHardware.c @@ -187,7 +187,7 @@ void LoadConfigurationParameters(ConfigurationParameters *Params) EmbeddedParameters->has_initialdispenserpressure = true; EmbeddedParameters->initialdispenserpressure = 0.25; EmbeddedParameters->has_initialdispensertimeout = true; - EmbeddedParameters->initialdispensertimeout = 60000; + EmbeddedParameters->initialdispensertimeout = 180000; EmbeddedParameters->has_initialdispensertimelag = true; EmbeddedParameters->initialdispensertimelag = 100; EmbeddedParameters->has_dispenserbuildpressurespeed = true; @@ -209,7 +209,7 @@ void LoadConfigurationParameters(ConfigurationParameters *Params) EmbeddedParameters->has_midtankpressurecorrection = true; EmbeddedParameters->midtankpressurecorrection = 0.0; EmbeddedParameters->has_dispenserpresegmentwfcf = true; - EmbeddedParameters->dispenserpresegmentwfcf = 80; + EmbeddedParameters->dispenserpresegmentwfcf = 40; EmbeddedParameters->has_startheatingoninitsequence = true; EmbeddedParameters->startheatingoninitsequence = true; //set to true shlomo 14/5/2019 EmbeddedParameters->n_generalparameters = 8; @@ -252,7 +252,7 @@ void LoadConfigurationParameters(ConfigurationParameters *Params) EmbeddedParameters->has_idlemixertemperature = true; EmbeddedParameters->idlemixertemperature = 0; EmbeddedParameters->has_powerofftemperaturelimit = true; - EmbeddedParameters->powerofftemperaturelimit = 50; + EmbeddedParameters->powerofftemperaturelimit = 90; EmbeddedParameters->has_ids_presegment_wfcf_timebeforesegment = true; EmbeddedParameters->ids_presegment_wfcf_timebeforesegment = 20000; uint8_t* response_buffer = my_malloc(configuration_parameters__get_packed_size(EmbeddedParameters)); @@ -494,7 +494,7 @@ uint32_t HWConfiguration(UploadHardwareConfigurationRequest* UploadRequest) } BlowerCfg.enabled = true; - BlowerCfg.voltage = 3000; + BlowerCfg.voltage = 2650; BlowerCfg.heatingvoltage = 3000; if (WHS_Type == WHS_TYPE_UNKNOWN) blowerType = HARDWARE_BLOWER_TYPE__WHSBlower2; diff --git a/Software/Embedded_SW/Embedded/Modules/General/buttons.c b/Software/Embedded_SW/Embedded/Modules/General/buttons.c index 50fd0ad16..7326dc039 100644 --- a/Software/Embedded_SW/Embedded/Modules/General/buttons.c +++ b/Software/Embedded_SW/Embedded/Modules/General/buttons.c @@ -280,36 +280,57 @@ uint32_t ButtonJogCBFunction(uint32_t IfIndex, uint32_t ReadValue) case sttDISABLE: if (JobIsActive() == false) { + ReportWithPackageFilter(GeneralFilter,"------------ joggingMachine: jog.state=sttDISABLE , JobIsActive() == false-----------------", __FILE__,__LINE__,jog.state, RpMessage, jog.Action, 0); jog.color = colorON; Pannel_Leds(THREAD_JOGGING, MODE_ON); jog.state = sttENABLE; } break; case sttENABLE: - if (jog.Action == COUNTPB) + if (JobIsActive() == true) { - ReportWithPackageFilter(GeneralFilter,"------------ joggingMachine: Jogging is sttENABLE and PRESS-----------------", __FILE__,__LINE__,0, RpMessage, 0, 0); jog.state = sttJOGGING; - jog.color = colorON; - jog.color = BLINK; - ThreadJoggingFunc(40); - jog.state = sttJOGGING; + ReportWithPackageFilter(GeneralFilter,"------------ joggingMachine: Jogging is Disable -----------------", __FILE__,__LINE__,jog.state, RpMessage, jog.Action, 0); + jog.Action = OFFPB; + jog.color = colorOFF; + Pannel_Leds(THREAD_JOGGING,MODE_OFF); + jog.state = sttDISABLE; } else { - if (JobIsActive() == true) + if (jog.Action == COUNTPB) { - ReportWithPackageFilter(GeneralFilter,"------------ joggingMachine: Jogging is Disable -----------------", __FILE__,__LINE__,0, RpMessage, 0, 0); - jog.Action = OFFPB; - jog.color = colorOFF; - Pannel_Leds(THREAD_JOGGING,MODE_OFF); - jog.state = sttDISABLE; + ReportWithPackageFilter(GeneralFilter,"------------ joggingMachine: Jogging is sttENABLE and PRESS-----------------", __FILE__,__LINE__,jog.state, RpMessage, jog.Action, 0); + jog.color = colorON; + jog.color = BLINK; + ThreadJoggingFunc(40); + jog.state = sttJOGGING; } } + +// if (jog.Action == COUNTPB) +// { +// ReportWithPackageFilter(GeneralFilter,"------------ joggingMachine: Jogging is sttENABLE and PRESS-----------------", __FILE__,__LINE__,0, RpMessage, 0, 0); +// jog.color = colorON; +// jog.color = BLINK; +// ThreadJoggingFunc(40); +// jog.state = sttJOGGING; +// } +// else +// { +// if (JobIsActive() == true) +// { +// ReportWithPackageFilter(GeneralFilter,"------------ joggingMachine: Jogging is Disable -----------------", __FILE__,__LINE__,0, RpMessage, 0, 0); +// jog.Action = OFFPB; +// jog.color = colorOFF; +// Pannel_Leds(THREAD_JOGGING,MODE_OFF); +// jog.state = sttDISABLE; +// } +// } break; case sttJOGGING: if (jog.Action == SHORTPB) //PB is OFF { - ReportWithPackageFilter(GeneralFilter,"------------ joggingMachine: sttJOGGING action->SHORTPB-----------------", __FILE__,__LINE__,0, RpMessage, 0, 0); jog.state = sttJOGGING; + ReportWithPackageFilter(GeneralFilter,"------------ joggingMachine: sttJOGGING action SHORTPB, sttJOGGING -> sttENABLE, stop JOGGING----------------", __FILE__,__LINE__,jog.state, RpMessage, jog.Action, 0); ThreadAbortJoggingFunc(); jog.color = colorON; Pannel_Leds(THREAD_JOGGING, MODE_ON); @@ -317,26 +338,25 @@ uint32_t ButtonJogCBFunction(uint32_t IfIndex, uint32_t ReadValue) } else if (jog.Action == LONGPB) { - ReportWithPackageFilter(GeneralFilter,"------------ joggingMachine: sttJOGGING action->LONGPB-----------------", __FILE__,__LINE__,0, RpMessage, 0, 0); jog.state = sttJOGGING; + ReportWithPackageFilter(GeneralFilter,"------------ joggingMachine: sttJOGGING action LONGPB, sttJOGGING -> sttLONG_JOGGING-----------------", __FILE__,__LINE__, jog.state, RpMessage, jog.Action, 0); jog.state = sttLONG_JOGGING; - if (JobIsActive() == false) // added because sometimes the jog stops because of another reason and the button s stucked blinking - { - jog.color = colorON; - Pannel_Leds(THREAD_JOGGING, MODE_ON); - jog.state = sttENABLE; - } - } break; case sttLONG_JOGGING: if (jog.Action == COUNTPB) { - ReportWithPackageFilter(GeneralFilter,"------------ joggingMachine: sttLONG_JOGGING action->COUNTPB-----------------", __FILE__,__LINE__,0, RpMessage, 0, 0); jog.state = sttJOGGING;ThreadAbortJoggingFunc(); // to do!!!! + ReportWithPackageFilter(GeneralFilter,"------------ joggingMachine: sttLONG_JOGGING action COUNTPB, sttLONG_JOGGING -> sttENABLE, stop JOGGING-----------------", __FILE__,__LINE__, jog.state, RpMessage, jog.Action, 0); ThreadAbortJoggingFunc(); jog.color = colorON; Pannel_Leds(THREAD_JOGGING, MODE_ON); jog.state = sttENABLE; } + if (JobIsActive() == false) // added because sometimes the jog stops because of another reason and the button s stucked blinking + { + jog.color = colorON; + Pannel_Leds(THREAD_JOGGING, MODE_ON); + jog.state = sttENABLE; + } break; default: break; @@ -556,7 +576,7 @@ return OK; uint32_t LoadStatMachine( button *pBtn) { - ReportWithPackageFilter(GeneralFilter,"------------ start loading -----------------", __FILE__,__LINE__,pBtn->state, RpMessage, pBtn->color, 0); + ReportWithPackageFilter(GeneralFilter,"------------ (state) (color) -----------------", __FILE__,__LINE__,pBtn->state, RpMessage, pBtn->color, 0); switch (pBtn->state) { case sttRDY : diff --git a/Software/Embedded_SW/Embedded/Modules/Heaters/Heaters_print.c b/Software/Embedded_SW/Embedded/Modules/Heaters/Heaters_print.c index 82f7e300f..290e65fa9 100644 --- a/Software/Embedded_SW/Embedded/Modules/Heaters/Heaters_print.c +++ b/Software/Embedded_SW/Embedded/Modules/Heaters/Heaters_print.c @@ -1492,14 +1492,13 @@ uint32_t DrierHeaterVlotageSetup(double voltage) if (Head_Type > HEAD_TYPE_SYLKO_WITHOUT_CARD) //rapid/pp machines { DrierAcVoltage = ReadVAC(); - //if () } else { UseSecondaryDrierHeater = true; } - +return OK; } uint32_t HeatersControlLoop(uint32_t tick) { diff --git a/Software/Embedded_SW/Embedded/Modules/IDS/IDS_maint.c b/Software/Embedded_SW/Embedded/Modules/IDS/IDS_maint.c index 9ad8d485b..68da1317b 100644 --- a/Software/Embedded_SW/Embedded/Modules/IDS/IDS_maint.c +++ b/Software/Embedded_SW/Embedded/Modules/IDS/IDS_maint.c @@ -90,7 +90,11 @@ AutoHoming_Config_enum AutoHoming_Config = AutoHoming_off; void IDS_Dispenser_SetAutoHoming_Config(AutoHoming_Config_enum Config) { Report("IDS_Dispenser_SetAutoHoming_Config ",__FILE__,__LINE__,Config,RpWarning,AutoHoming_Config,0); +#ifdef SPECIAL_DISPENSERS + AutoHoming_Config = AutoHoming_off; +#else AutoHoming_Config = Config; +#endif } void IDS_Dispenser_SetBackLashValues(double initialdispenserpressure, uint32_t initialdispensertimeout, uint32_t initialdispensertimelag, uint32_t initialdispenserspeed) @@ -544,7 +548,8 @@ void IDS_Dispenser_Init(uint8_t DispenserId) PrimingActive[DispenserId]= false; Valve_Set(IDS_Id_to_AirValve[DispenserId], Atm_MidTank_OFF); Control3WayValvesWithCallback ((Valves_t)DispenserId, MidTank_Dispenser, NULL); //direction: MidTank_Dispenser or Dispenser_Mixer +#ifdef SPECIAL_DISPENSERS if (ControlIdtoInactiveDispenserId[DispenserId] == 0xFF) ControlIdtoInactiveDispenserId[DispenserId] = AddControlCallback("IDS_Check_Pressure", IDS_Check_Pressure_Callback, eOneMinute,TemplateDataReadCBFunction ,DispenserId, 0, 0 ); - +#endif } diff --git a/Software/Embedded_SW/Embedded/Modules/IDS/IDS_print.c b/Software/Embedded_SW/Embedded/Modules/IDS/IDS_print.c index 04abb6870..14718ab0e 100644 --- a/Software/Embedded_SW/Embedded/Modules/IDS/IDS_print.c +++ b/Software/Embedded_SW/Embedded/Modules/IDS/IDS_print.c @@ -1033,6 +1033,8 @@ uint32_t IDS_Cleaning_Stop_Cleaning_Solution (callback_fptr callback); if (CurrentDispenserSpeed[CLEANER_DISPENSER]>0) IDS_Cleaning_Stop_Cleaning_Solution (NULL); setRapidPressureRead(false); + if (JobEndSequence == true) + DistanceToSpoolReady(Module_IDS,ModuleDone); } if (EnableCleaning == true) { @@ -1510,7 +1512,7 @@ uint32_t IDSSegmentState(void *SegmentDetails, int SegmentId) #else Valve_Set(VALVE_MIXCHIP_WASTECH, Mixer_Head); #endif - //IDS_Cleaning_Stop_Cleaning_Solution(NULL); + IDS_Cleaning_Stop_Cleaning_Solution(NULL); SegmentNumOfBrushStops = Segment->n_brushstops; BrushStopTime = Segment->length*1000/(double)SegmentNumOfBrushStops; //brushstop in meters //brushstop in millisecond BrushStopTime = ((BrushStopTime*100)/dyeingspeed);//brushstop in seconds @@ -1537,7 +1539,7 @@ uint32_t IDSSegmentState(void *SegmentDetails, int SegmentId) if (DispenserPreSegmentControlId != 0xFF) { Report("IDS presegment not yet ended!!",__FILE__,__LINE__,(int)InterSegmentStepsCount,RpWarning,(int)lInterSegmentLength,0); - IDS_Cleaning_Stop_Cleaning_Solution (NULL); + //IDS_Cleaning_Stop_Cleaning_Solution (NULL); RemoveControlCallback(DispenserPreSegmentControlId, IDSPreSegmentStateCallbackRunner ); DispenserPreSegmentControlId = 0xFF; } @@ -1601,17 +1603,18 @@ uint32_t IDSSegmentState(void *SegmentDetails, int SegmentId) for (Dispenser_i = 0;Dispenser_i < MAX_DYE_DISPENSERS;Dispenser_i++) { DispenserDistanceToSpoolReady[Dispenser_i] = true; - if (DispenserUsedInJob[Dispenser_i]==false)//unconfigured dispenser - continue; - DispenserDistanceToSpoolReady[Dispenser_i] = false; -#ifdef SPECIAL_DISPENSERS - IDS_Dispenser_Close_Valve_And_Stop_Motor(Dispenser_i,NULL); -#else - MotorStop(DispenserIdToMotorId[Dispenser_i],Hard_Hiz); -#endif - Control3WayValvesWithCallback ((Valves_t)Dispenser_i, MidTank_Dispenser, IDS_Valve_DistanceToSpoolValveReady); //direction: MidTank_Dispenser or Dispenser_Mixer - CurrentDispenserSpeed[Dispenser_i] = 0; - //IDS_Dispenser_Close_Valve_And_Stop_Motor(Dispenser_i,IDS_Valve_DistanceToSpoolValveReady); + if (DispenserUsedInJob[Dispenser_i]==true)//unconfigured dispenser + { + DispenserDistanceToSpoolReady[Dispenser_i] = false; + #ifdef SPECIAL_DISPENSERS + IDS_Dispenser_Close_Valve_And_Stop_Motor(Dispenser_i,NULL); + #else + MotorStop(DispenserIdToMotorId[Dispenser_i],Hard_Hiz); + #endif + Control3WayValvesWithCallback ((Valves_t)Dispenser_i, MidTank_Dispenser, IDS_Valve_DistanceToSpoolValveReady); //direction: MidTank_Dispenser or Dispenser_Mixer + CurrentDispenserSpeed[Dispenser_i] = 0; + //IDS_Dispenser_Close_Valve_And_Stop_Motor(Dispenser_i,IDS_Valve_DistanceToSpoolValveReady); + } } //cleaning diff --git a/Software/Embedded_SW/Embedded/Modules/Stubs_Handler/Progress.c b/Software/Embedded_SW/Embedded/Modules/Stubs_Handler/Progress.c index 76c6579da..677d3fa5f 100644 --- a/Software/Embedded_SW/Embedded/Modules/Stubs_Handler/Progress.c +++ b/Software/Embedded_SW/Embedded/Modules/Stubs_Handler/Progress.c @@ -10,6 +10,7 @@ #include "Drivers/USB_Communication/USBCDCD.h" #include "StateMachines/Initialization/PowerOffSequence.h" +#include "StateMachines/Initialization/PowerIdle.h" #include "drivers/Flash_Memory/FATFS/ff.h" #include "drivers/Flash_Memory/FATFS/Control_File_System.h" @@ -116,7 +117,16 @@ void Stub_ProgressRequest(MessageContainer* requestContainer) } //Trigger_WHS_Set_Volt_Blower_Control(request->delay); } else - if(request->amount == 0x3EA) + if (request->amount == 0x3E7) // set WHS Blower speed by Q value + { + if (WHS_Type == WHS_TYPE_NEW) + { + Trigger_WHS_Set_Blower_Control_Closed_Loop (request->delay); + response.progress = 0; + response.has_progress = true; + } //Trigger_WHS_Set_Volt_Blower_Control(request->delay); + } + else if(request->amount == 0x3EA) { uint16_t tempu16 = 0; if (WHS_Type == WHS_TYPE_NEW) diff --git a/Software/Embedded_SW/Embedded/Modules/Thread/ThreadLoad.c b/Software/Embedded_SW/Embedded/Modules/Thread/ThreadLoad.c index 4ab59ec19..128564586 100644 --- a/Software/Embedded_SW/Embedded/Modules/Thread/ThreadLoad.c +++ b/Software/Embedded_SW/Embedded/Modules/Thread/ThreadLoad.c @@ -1422,6 +1422,7 @@ uint32_t StopThreadLoadingFunc(MessageContainer* requestContainer) MessageContainer responseContainer; MessageState = 2; Thread_Load_End(); + MCU_E2PromProgram(EEPROM_STORAGE_DRYER_CYCLES,numberOfCycles); Report("StopThreadLoadingFunc",__FILE__,__LINE__,0xFF,RpWarning,(int)LoadStages,0); responseContainer = createContainer(MESSAGE_TYPE__StopThreadLoadingResponse, requestContainer->token, true, &Cresponse, &stop_thread_loading_response__pack, &stop_thread_loading_response__get_packed_size); diff --git a/Software/Embedded_SW/Embedded/Modules/Thread/Thread_init.c b/Software/Embedded_SW/Embedded/Modules/Thread/Thread_init.c index ec705c2d2..fb3b78752 100644 --- a/Software/Embedded_SW/Embedded/Modules/Thread/Thread_init.c +++ b/Software/Embedded_SW/Embedded/Modules/Thread/Thread_init.c @@ -73,15 +73,14 @@ uint32_t MotorsConfigMessage(HardwareConfiguration * HWrequest) MotorsCfg[Motor_i].pulseperround = request->pulseperround; MotorsCfg[Motor_i].pulleyradius = request->pulleyradius; MotorsCfg[Motor_i].configword = request->configword; - MotorsCfg[Motor_i].directionthreadwize = request->directionthreadwize;//L6470 + L6472 -/* if(MotorDriverResponse[Motor_i].DriverType != CombinrdMotDriver) + if(MotorDriverResponse[Motor_i].DriverType == CombinrdMotDriver) { MotorsCfg[Motor_i].directionthreadwize = request->directionthreadwize ^ 1;//PowerSTEP01 } else { MotorsCfg[Motor_i].directionthreadwize = request->directionthreadwize;//L6470 + L6472 - }*/ + } MotorsCfg[Motor_i].kvalhold = request->kvalhold; MotorsCfg[Motor_i].kvalrun = request->kvalrun; MotorsCfg[Motor_i].kvalacc = request->kvalacc; -- cgit v1.3.1 From dd5962457761b0a9afe7037b201d0628d726a698 Mon Sep 17 00:00:00 2001 From: Shlomo Hecht Date: Tue, 18 Feb 2020 16:04:26 +0200 Subject: preparations and fixes for 1.4.6.12 --- Software/Embedded_SW/Embedded/DataDef.h | 1 - .../Embedded/Drivers/FPGA/FPGA_GPIO/FPGA_GPIO.c | 10 +- .../Embedded/Drivers/FPGA/FPGA_SPI_Comm.c | 12 +- .../Embedded_SW/Embedded/Drivers/Heater/Heater.c | 5 + .../Head_Card/EEPROM/Head_EEPROM.c | 9 - .../I2C_Communication/Head_Card/Fan/fan_click.c | 12 +- .../I2C_Communication/Head_Card/I2C_Head_Mux.h | 6 +- .../Head_Card/PT100/Head_PT100_ADC.c | 6 +- .../Embedded/Drivers/I2C_Communication/I2C_Task.c | 13 +- .../WHS_Card/D_ADS122_PT100/ADS122X04_Driver.c | 6 +- .../WHS_Card/D_ADS122_PT100/WHS_PT100_ADC.c | 646 --------------------- .../I2C_Communication/WHS_Card/EEPROM/WHS_EEPROM.c | 3 - .../Embedded_SW/Embedded/Drivers/Valves/Valve.c | 4 +- .../Embedded/Modules/Diagnostics/Diagnostics.c | 17 +- .../Embedded_SW/Embedded/Modules/IDS/IDS_print.c | 24 +- .../Embedded/Modules/Stubs_Handler/Progress.c | 2 +- .../Embedded/Modules/Thread/Thread_print.c | 13 +- .../StateMachines/Initialization/InitSequence.c | 27 +- 18 files changed, 85 insertions(+), 731 deletions(-) (limited to 'Software/Embedded_SW/Embedded/Modules/Thread') diff --git a/Software/Embedded_SW/Embedded/DataDef.h b/Software/Embedded_SW/Embedded/DataDef.h index 4f7a5d2dc..716ae7fe4 100644 --- a/Software/Embedded_SW/Embedded/DataDef.h +++ b/Software/Embedded_SW/Embedded/DataDef.h @@ -28,7 +28,6 @@ //#define SPECIAL_DISPENSERS //#define Use_Head_Card //for real card only //#define Use_WHS_Card //for real card only -//#define Test_headCard_With_DispCard_I2C4_Add0xE2_DispID_0 #define I2C_2_Data_Transfer_Rate_400kbps #define I2C_3_Data_Transfer_Rate_400kbps// Head card + WHS card diff --git a/Software/Embedded_SW/Embedded/Drivers/FPGA/FPGA_GPIO/FPGA_GPIO.c b/Software/Embedded_SW/Embedded/Drivers/FPGA/FPGA_GPIO/FPGA_GPIO.c index f182ec09c..1684b1dcc 100644 --- a/Software/Embedded_SW/Embedded/Drivers/FPGA/FPGA_GPIO/FPGA_GPIO.c +++ b/Software/Embedded_SW/Embedded/Drivers/FPGA/FPGA_GPIO/FPGA_GPIO.c @@ -539,7 +539,10 @@ uint32_t ActivateHeadMagnet() F2_CTRL = F2_CTRL_Reg.ushort; if (isMotorConfigured(HARDWARE_MOTOR_TYPE__MOTO_RLOADARM)) { - MotorGoTo(HARDWARE_MOTOR_TYPE__MOTO_RLOADARM,DH_LID_CLOSE ); + if (MotorDriverResponse[HARDWARE_MOTOR_TYPE__MOTO_RLOADARM].DriverType == CombinrdMotDriver) + MotorGoTo(HARDWARE_MOTOR_TYPE__MOTO_RLOADARM,DH_LID_OPEN ); + else + MotorGoTo(HARDWARE_MOTOR_TYPE__MOTO_RLOADARM,DH_LID_CLOSE ); } } MagnetControlId = AddControlCallback(NULL, MagnetCallBackFunction, 2* eOneSecond, TemplateDataReadCBFunction,0,0, 0 ); @@ -566,7 +569,10 @@ uint32_t DeActivateHeadMagnet() Report("DeActivateHeadMagnet - open the lid magnet",__FILE__,__LINE__,(int)HARDWARE_MOTOR_TYPE__MOTO_RLOADARM,RpWarning,(int)DH_LID_CLOSE,0); if (isMotorConfigured(HARDWARE_MOTOR_TYPE__MOTO_RLOADARM)) { - MotorGoTo(HARDWARE_MOTOR_TYPE__MOTO_RLOADARM,DH_LID_OPEN ); + if (MotorDriverResponse[HARDWARE_MOTOR_TYPE__MOTO_RLOADARM].DriverType == CombinrdMotDriver) + MotorGoTo(HARDWARE_MOTOR_TYPE__MOTO_RLOADARM,DH_LID_CLOSE ); + else + MotorGoTo(HARDWARE_MOTOR_TYPE__MOTO_RLOADARM,DH_LID_OPEN ); //MotorGotoWithCallback(HARDWARE_MOTOR_TYPE__MOTO_RLOADARM, DH_LID_OPEN, Motor_Id_to_LS_IdDown[HARDWARE_MOTOR_TYPE__MOTO_RLOADARM], NULL,1000); } F2_CTRL_Reg.ushort |= SPARE_SSR13_CTRL; diff --git a/Software/Embedded_SW/Embedded/Drivers/FPGA/FPGA_SPI_Comm.c b/Software/Embedded_SW/Embedded/Drivers/FPGA/FPGA_SPI_Comm.c index a23e405dc..43dea9e24 100644 --- a/Software/Embedded_SW/Embedded/Drivers/FPGA/FPGA_SPI_Comm.c +++ b/Software/Embedded_SW/Embedded/Drivers/FPGA/FPGA_SPI_Comm.c @@ -480,15 +480,13 @@ void FPGA_SetMotorsInit() { uint8_t i=0; - #ifdef USE_POWERSTEP01 //since powerstep in stby on powerup) - F1_Moto_Driver_NSTBYRST1 = 0xFFFF; - F1_Moto_Driver_NSTBYRST2 = 0xFFFF; - F2_Moto_Driver_NSTBYRST1 = 0xFFFF; - F3_Moto_Driver_NSTBYRST1 = 0xFFFF; + F1_Moto_Driver_NSTBYRST1 = 0xFFFF; + F1_Moto_Driver_NSTBYRST2 = 0xFFFF; + F2_Moto_Driver_NSTBYRST1 = 0xFFFF; + F3_Moto_Driver_NSTBYRST1 = 0xFFFF; - SysCtlDelay(120000);//1mSec - #endif + SysCtlDelay(120000);//1mSec for(i=0;i HEAD_TYPE_SYLKO_WITHOUT_CARD)&&(I2C_ReadingMessage.parameter>=HEATER_DRYER_CURRENT_3)) Read_Head_ADC(I2C_ReadingMessage.parameter); - else - Read_Heaters_Current(I2C_ReadingMessage.parameter); +// else +// Read_Heaters_Current(I2C_ReadingMessage.parameter); break; case PT100_Reading: Set_HeadCard_PT100(); diff --git a/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/WHS_Card/D_ADS122_PT100/ADS122X04_Driver.c b/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/WHS_Card/D_ADS122_PT100/ADS122X04_Driver.c index 2316b3387..97b572697 100644 --- a/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/WHS_Card/D_ADS122_PT100/ADS122X04_Driver.c +++ b/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/WHS_Card/D_ADS122_PT100/ADS122X04_Driver.c @@ -481,11 +481,7 @@ bool D_ADS122_InitConfigReg() // uint32_t Status = OK; // uint8_t i = 0; // -// #ifdef Test_headCard_With_DispCard_I2C4_Add0xE2_DispID_0 -// Select_Main_Head_Mux_Channel_test(); -// #else -// Select_Main_Head_Mux_Channel(); -// #endif +// Select_Main_Head_Mux_Channel(); // // //HeadADCPT100_Reset(); // HeadADCPT100_InitConfigReg(); diff --git a/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/WHS_Card/D_ADS122_PT100/WHS_PT100_ADC.c b/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/WHS_Card/D_ADS122_PT100/WHS_PT100_ADC.c index d34787671..6cfdee163 100644 --- a/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/WHS_Card/D_ADS122_PT100/WHS_PT100_ADC.c +++ b/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/WHS_Card/D_ADS122_PT100/WHS_PT100_ADC.c @@ -293,652 +293,6 @@ bool Test_WHS_PT100_ADC() status |= WHS_PT100_Read(/*TEMPERATURE_SENSOR_ID_ENUM*/ WHS_PT100_2_0X80_1); status |= WHS_PT100_Read(/*TEMPERATURE_SENSOR_ID_ENUM*/ WHS_PT100_4_0X82_1); - - - /* - * WHS_PT100_1_0X80_0, -WHS_PT100_2_0X80_1, -WHS_PT100_3_0X82_0, -WHS_PT100_4_0X82_1, - * */ - - return status; -} - - -//D_ADS122C04_TempSensConfigStruc HeadTempSensConfig[MAX_HEAD_CARD_TEMP_SENS_ID];//using only from HEAD_PT100_ZONE_1_0X80_0 -// -//uint32_t was_I2C_ADC_ADS122C04_SLAVE_ADD = 0x80; //A0-GND A1-GND 4-Bit, 4-Channel, 2-kSPS, ADC ------ PT100 ADC – 0x80 … 0x87. -// -//uint8_t was_Save_Sel_Status = UNKNOWN; - -//uint32_t SensorId_To_SlaveAdd(TEMPERATURE_SENSOR_ID_ENUM SensorId) -//{ -// switch(SensorId) -// { -// case HEAD_PT100_ZONE_1_0X80_0: -// case HEAD_PT100_ZONE_2_0X80_1: -// I2C_ADC_ADS122C04_SLAVE_ADD = 0x80; -// break; -// case HEAD_PT100_ZONE_3_0X82_0: -// case HEAD_PT100_ZONE_4_0X82_1: -// I2C_ADC_ADS122C04_SLAVE_ADD = 0x82; -// break; -// case HEAD_PT100_ZONE_5_0X84_0: -// case HEAD_PT100_ZONE_6_0X84_1: -// I2C_ADC_ADS122C04_SLAVE_ADD = 0x84; -// break; -// case HEAD_PT100_ZONE_7_0X86_0: -// case HEAD_PT100_ZONE_8_0X86_1: -// I2C_ADC_ADS122C04_SLAVE_ADD = 0x86; -// break; -// case HEAD_PT100_ZONE_9_0X88_0: -// case HEAD_PT100_ZONE_10_0X88_1: -// I2C_ADC_ADS122C04_SLAVE_ADD = 0x88; -// break; -// case HEAD_PT100_ZONE_11_0X8A_0: -// case HEAD_PT100_ZONE_12_0X8A_1: -// I2C_ADC_ADS122C04_SLAVE_ADD = 0x8A; -// break; -// case HEAD_PT100_AIR_HEATER_1_0X8C_0: -// case HEAD_PT100_AIR_HEATER_2_0X8C_1: -// I2C_ADC_ADS122C04_SLAVE_ADD = 0x8C; -// break; -// case HEAD_PT100_MIXER_0X8E_0: -// case HEAD_PT100_RESERVE_0X8E_1: -// I2C_ADC_ADS122C04_SLAVE_ADD = 0x8E; -// break; -// default: -// break; -// } -// -// return I2C_ADC_ADS122C04_SLAVE_ADD; -//} - -//uint32_t I2C_Write_SensorId(uint32_t I2C_ID, TEMPERATURE_SENSOR_ID_ENUM SensorId, uint32_t *I2C_Write_buf, uint32_t No_BytesToWrite ) -//{ -// uint32_t status = OK; -// -// I2C_ADC_ADS122C04_SLAVE_ADD = SensorId_To_SlaveAdd(SensorId); -// status |= I2C_Write(I2C_ID, I2C_ADC_ADS122C04_SLAVE_ADD, I2C_Write_buf, No_BytesToWrite); -// -// return status; -//} - -//uint32_t HeadADCPT100_ControlMux_Brfore_Reading(TEMPERATURE_SENSOR_ID_ENUM SensorId) -//{ -// uint32_t Status = OK; -// -// uint8_t Write_Buf[2]; -// -// if(SensorId % 2) -// HeadTempSensConfig[SensorId].Reg0.bits.MUX = 0x03; // TBD -// else -// HeadTempSensConfig[SensorId].Reg0.bits.MUX = 0x04; // TBD -// -// Write_Buf[0] = ADS122X_WREG_CMD | (ADS122X_CONFIG_0_REG<<2); -// Write_Buf[1] = HeadTempSensConfig[SensorId].Reg0.Byte; -// -// Status |= I2C_Write_SensorId(I2C_ID_HEAD_CARD, SensorId, Write_Buf, 1); -// -// return Status; -//} - - -//uint32_t was_I2C_Read_SensorId(uint32_t I2C_ID, TEMPERATURE_SENSOR_ID_ENUM SensorId, uint32_t *I2C_Read_buf, uint32_t No_BytesToRead ) -//{ -// uint32_t status = OK; -// -// //HeadADCPT100_ControlMux_Brfore_Reading(SensorId); -// //TODO Choose TEMP1 sensor by I/O -// was_I2C_ADC_ADS122C04_SLAVE_ADD = SensorId_To_SlaveAdd(SensorId); -// status |= I2C_Read(I2C_ID, was_I2C_ADC_ADS122C04_SLAVE_ADD + 1, I2C_Read_buf, No_BytesToRead); -// -// return status; -//} - -//uint32_t was_HeadADCPT100_Reset(void) -//{ -// uint32_t status = OK; -// #ifndef EVALUATION_BOARD -// uint8_t i; -// uint8_t Write_Buf[1]; -// -// for(i=HEAD_PT100_ZONE_1_0X80_0;i MAX_HEAD_CARD_TEMP_SENS_ID)) -// Status = ERROR; -// -// Write_Buf[0] = ADS122X_START_CMD; -// -// #ifdef Use_Head_Card -// Select_Main_Head_Mux_Channel(); -// #endif -// -//// Status |= I2C_Write_SensorId(I2C_ID_HEAD_CARD, SensorId, Write_Buf, 1); -// //Status |= I2C_Write(I2C_ID_HEAD_CARD, I2C_ADC_ADS122C04_SLAVE_ADD, Write_Buf, 1); -// -// return Status; -//} - -//uint32_t was_HeadADCPT100_PowerDown(TEMPERATURE_SENSOR_ID_ENUM SensorId) -//{ -// uint32_t Status = OK; -// uint8_t Write_Buf[1]; -// -// if((SensorId < HEAD_PT100_ZONE_1_0X80_0) || (SensorId > MAX_HEAD_CARD_TEMP_SENS_ID)) -// Status = ERROR; -// -// Write_Buf[0] = ADS122X_POWERDOWN_CMD; -// -// #ifdef Use_Head_Card -// Select_Main_Head_Mux_Channel(); -// #endif -//// Status |= I2C_Write_SensorId(I2C_ID_HEAD_CARD, SensorId, Write_Buf, 1); -// //Status |= I2C_Write(I2C_ID_HEAD_CARD, I2C_ADC_ADS122C04_SLAVE_ADD, Write_Buf, 1); -// -// return Status; -//} - -//uint32_t was_Data_ADC_Head = 0; -//uint32_t was_HeadADCPT100_SendReadDataCommand(TEMPERATURE_SENSOR_ID_ENUM SensorId) -//{ -// uint32_t Status = OK; -// uint8_t Write_Buf[1]; -// -// uint32_t temp; -// -// if((SensorId < HEAD_PT100_ZONE_1_0X80_0) || (SensorId > MAX_HEAD_CARD_TEMP_SENS_ID)) -// Status = ERROR; -// -// //Write_Buf[0] = ADS122X_RDATA_CMD; -// Write_Buf[0] = ADS122X_RDATA_CMD; -// -// #ifdef Use_Head_Card -// Select_Main_Head_Mux_Channel(); -// #endif -//// Status |= I2C_Write_SensorId(I2C_ID_HEAD_CARD, SensorId, Write_Buf, 1); -// //Status |= I2C_Write(I2C_ID_HEAD_CARD, I2C_ADC_ADS122C04_SLAVE_ADD, Write_Buf, 1); -// -//// Status |= I2C_Read_SensorId(I2C_ID_HEAD_CARD, SensorId, &temp, 3); -// was_Data_ADC_Head = (temp & 0xFF0000) >> 16 | (temp & 0xFF00) | (temp & 0x0000FF) << 16;//First send the MSB so we need to reorder the bytes -// -// CalculateTemperatures(SensorId, was_Data_ADC_Head); -// -// -// return Status; -//} - -//uint32_t was_HeadADCPT100_WriteReg(TEMPERATURE_SENSOR_ID_ENUM SensorId, uint8_t reg, uint8_t writeValue) -//{ -// uint32_t Status = OK; -// uint8_t Write_Buf[2]; -// -// if((SensorId < HEAD_PT100_ZONE_1_0X80_0) || (SensorId > MAX_HEAD_CARD_TEMP_SENS_ID)) -// Status = ERROR; -// -// Write_Buf[0] = ADS122X_WRITE_CMD(reg); -// Write_Buf[1] = writeValue; -// -// #ifdef Use_Head_Card -// Select_Main_Head_Mux_Channel(); -// #endif -//// Status |= I2C_Write_SensorId(I2C_ID_HEAD_CARD, SensorId, Write_Buf, 2); -// //Status |= I2C_Write(I2C_ID_HEAD_CARD, I2C_ADC_ADS122C04_SLAVE_ADD, Write_Buf, 2); -// -// return Status; -//} - - - -//#ifdef Use_Head_Card -// -//uint8_t was_HeadADCPT100_InitConfigReg() -//{ -// uint8_t i; -// -// for(i=HEAD_PT100_ZONE_1_0X80_0;i < MAX_HEAD_CARD_TEMP_SENS_ID;i++) // for now we are using the same configuration to all of them -// { -// // - - - - - - - - - - Reg0 - - - - - - - - - - -// HeadTempSensConfig[i].Reg0.bits.PGA_BYPASS = ADS122X_USE_PGA ;//Bit 0 -// HeadTempSensConfig[i].Reg0.bits.GAIN = ADS122X_GAIN_8 ;//Bits 1-3 -// //HeadTempSensConfig[i].Reg0.bits.MUX = HEAD_CONFIG_ODD_PT100_MUX ;//Bits 4-7 -// -// // - - - - - - - - - - Reg1 - - - - - - - - - - -// -// HeadTempSensConfig[i].Reg1.bits.TS = ADS122X_TEMP_SENSOR_OFF ;//Bit 0 -// HeadTempSensConfig[i].Reg1.bits.VREF = ADS122X_VREF_INTERNAL ;//Bits 1-2 -// HeadTempSensConfig[i].Reg1.bits.CM = ADS122X_CONVERSION_CONTINUOUS ;//Bit 3 -// HeadTempSensConfig[i].Reg1.bits.MODE = ADS122X_OP_MODE_NORMAL ;//Bit 4 -// HeadTempSensConfig[i].Reg1.bits.DR = ADS122X_DATA_RATE_20SPS ;//Bits 5-7 -// -// // - - - - - - - - - - Reg2 - - - - - - - - - - -// -// HeadTempSensConfig[i].Reg2.bits.IDAC = ADS122X_IDAC_CURRENT_1000_UA ;//Bits 0-2 -// HeadTempSensConfig[i].Reg2.bits.BCS = ADS122X_BCS_CURRENT_SOURCES_OFF ;//Bit 3 -// HeadTempSensConfig[i].Reg2.bits.CRC = ADS122X_CRC_DISABLED ;//BitS 4-5 -// HeadTempSensConfig[i].Reg2.bits.DCNT = ADS122X_DCNT_CONVERSION_COUNTER_DISABLED ;//Bit 6 -// HeadTempSensConfig[i].Reg2.bits.DRDY = ADS122X_DRDY_NO_NEW_CONVERSION ;//Bit 7 -// -// // - - - - - - - - - - Reg3 - - - - - - - - - - -// HeadTempSensConfig[i].Reg3.bits.Always_write_0 = ADS122X_RESERVED_WRITE_0 ;//BitS 0-1 Always write 0 -// HeadTempSensConfig[i].Reg3.bits.I2MUX = ADS122X_IDAC2_AIN3 ;//Bits 2-4 -// HeadTempSensConfig[i].Reg3.bits.I1MUX = ADS122X_IDAC1_AIN0 ;//Bits 5-7 -// -// } -// -// for(i=HEAD_PT100_ZONE_1_0X80_0;i < MAX_HEAD_CARD_TEMP_SENS_ID_0;i++) -// { -// HeadTempSensConfig[i].Reg0.bits.MUX = HEAD_CONFIG_ODD_PT100_MUX ;//Bits 4-7 -// HeadTempSensConfig[i].SEL = ODD; -// } -// -// for(i=HEAD_PT100_ZONE_2_0X80_1;i < MAX_HEAD_CARD_TEMP_SENS_ID_1;i++) -// { -// HeadTempSensConfig[i].Reg0.bits.MUX = HEAD_CONFIG_EVEN_PT100_MUX ;//Bits 4-7 -// HeadTempSensConfig[i].SEL = EVEN; -// } -// -// HeadTempSensConfig[i].Config = 0; -// -// HeadTempSensConfig[i].MUX_Status = UNKNOWN; -// -// return OK; -//} -//#else -// uint8_t was_HeadADCPT100_InitConfigReg() -// { -// uint8_t i; -// -// for(i=HEAD_PT100_ZONE_1_0X80_0;i MAX_HEAD_CARD_TEMP_SENS_ID)) -// return ERROR; -// -// if(HeadTempSensConfig[SensorId].Config == DONE) -// return Status; -// -// #ifdef Use_Head_Card -// Select_Main_Head_Mux_Channel(); -// #endif -// -// switch(Stage) -// { -// case SENSOR_CONFIG_REG0: -// Write_Buf[0] = ADS122X_WREG_CMD | (ADS122X_CONFIG_0_REG<<2); -// Write_Buf[1] = HeadTempSensConfig[SensorId].Reg0.Byte; -// break; -// case SENSOR_CONFIG_REG1: -// Write_Buf[0] = ADS122X_WREG_CMD | (ADS122X_CONFIG_1_REG<<2); -// Write_Buf[1] = HeadTempSensConfig[SensorId].Reg1.Byte; -// break; -// case SENSOR_CONFIG_REG2: -// Write_Buf[0] = ADS122X_WREG_CMD | (ADS122X_CONFIG_2_REG<<2); -// Write_Buf[1] = HeadTempSensConfig[SensorId].Reg2.Byte; -// break; -// case SENSOR_CONFIG_REG3: -// Write_Buf[0] = ADS122X_WREG_CMD | (ADS122X_CONFIG_3_REG<<2); -// Write_Buf[1] = HeadTempSensConfig[SensorId].Reg3.Byte; -// break; -// default: -// Status = ERROR; -// } -// -//// Status |= I2C_Write_SensorId(I2C_ID_HEAD_CARD, SensorId, Write_Buf, 2); -// -// switch(SensorId) -// { -// case HEAD_PT100_ZONE_1_0X80_0: -// case HEAD_PT100_ZONE_2_0X80_1: -// HeadTempSensConfig[HEAD_PT100_ZONE_1_0X80_0].Config = DONE; -// HeadTempSensConfig[HEAD_PT100_ZONE_2_0X80_1].Config = DONE; -// break; -// case HEAD_PT100_ZONE_3_0X82_0: -// case HEAD_PT100_ZONE_4_0X82_1: -// HeadTempSensConfig[HEAD_PT100_ZONE_3_0X82_0].Config = DONE; -// HeadTempSensConfig[HEAD_PT100_ZONE_4_0X82_1].Config = DONE; -// break; -// case HEAD_PT100_ZONE_5_0X84_0: -// case HEAD_PT100_ZONE_6_0X84_1: -// HeadTempSensConfig[HEAD_PT100_ZONE_5_0X84_0].Config = DONE; -// HeadTempSensConfig[HEAD_PT100_ZONE_6_0X84_1].Config = DONE; -// break; -// case HEAD_PT100_ZONE_7_0X86_0: -// case HEAD_PT100_ZONE_8_0X86_1: -// HeadTempSensConfig[HEAD_PT100_ZONE_7_0X86_0].Config = DONE; -// HeadTempSensConfig[HEAD_PT100_ZONE_8_0X86_1].Config = DONE; -// break; -// case HEAD_PT100_ZONE_9_0X88_0: -// case HEAD_PT100_ZONE_10_0X88_1: -// HeadTempSensConfig[HEAD_PT100_ZONE_9_0X88_0].Config = DONE; -// HeadTempSensConfig[HEAD_PT100_ZONE_10_0X88_1].Config = DONE; -// break; -// case HEAD_PT100_ZONE_11_0X8A_0: -// case HEAD_PT100_ZONE_12_0X8A_1: -// HeadTempSensConfig[HEAD_PT100_ZONE_11_0X8A_0].Config = DONE; -// HeadTempSensConfig[HEAD_PT100_ZONE_12_0X8A_1].Config = DONE; -// break; -// case HEAD_PT100_AIR_HEATER_1_0X8C_0: -// case HEAD_PT100_AIR_HEATER_2_0X8C_1: -// HeadTempSensConfig[HEAD_PT100_AIR_HEATER_1_0X8C_0].Config = DONE; -// HeadTempSensConfig[HEAD_PT100_AIR_HEATER_2_0X8C_1].Config = DONE; -// break; -// case HEAD_PT100_MIXER_0X8E_0: -// case HEAD_PT100_RESERVE_0X8E_1: -// HeadTempSensConfig[HEAD_PT100_MIXER_0X8E_0].Config = DONE; -// HeadTempSensConfig[HEAD_PT100_RESERVE_0X8E_1].Config = DONE; -// break; -// default: -// break; -// } -// -// #endif -// -// return Status; -//} - -//void was_HeadADCPT100_SensorInitConfig() -//{ -// int Sensor=0,Register = 0; -// -// HeadADCPT100_InitConfigReg(); // Initial the configuration registers -// -// for(Register=0;Register<=SENSOR_CONFIG_REG3;Register++) -// { -// for(Sensor=HEAD_PT100_ZONE_1_0X80_0;Sensor MAX_HEAD_CARD_TEMP_SENS_ID)) -// return ERROR; -// -// #ifdef Use_Head_Card -// Select_Main_Head_Mux_Channel(); -// #endif -// -//// if(was_Save_Sel_Status != HeadTempSensConfig[SensorId].SEL) -//// { -//// was_HeadCard_Toggle_PT100_SEL(HeadTempSensConfig[SensorId].SEL); -//// was_Save_Sel_Status = HeadTempSensConfig[SensorId].SEL; -//// } -// -// if(HeadTempSensConfig[SensorId].MUX_Status != HeadTempSensConfig[SensorId].Reg0.bits.MUX) -// { -// Write_Buf[0] = ADS122X_WREG_CMD | (ADS122X_CONFIG_0_REG<<2); -// Write_Buf[1] = HeadTempSensConfig[SensorId].Reg0.Byte; -// -//// status |= I2C_Write_SensorId(I2C_ID_HEAD_CARD, SensorId, Write_Buf, 2); -// -// switch(SensorId) -// { -// case HEAD_PT100_ZONE_1_0X80_0: -// case HEAD_PT100_ZONE_2_0X80_1: -// HeadTempSensConfig[HEAD_PT100_ZONE_1_0X80_0].MUX_Status = TempSensConfig[SensorId].Reg0.bits.MUX; -// HeadTempSensConfig[HEAD_PT100_ZONE_2_0X80_1].MUX_Status = TempSensConfig[SensorId].Reg0.bits.MUX; -// break; -// case HEAD_PT100_ZONE_3_0X82_0: -// case HEAD_PT100_ZONE_4_0X82_1: -// HeadTempSensConfig[HEAD_PT100_ZONE_3_0X82_0].MUX_Status = TempSensConfig[SensorId].Reg0.bits.MUX; -// HeadTempSensConfig[HEAD_PT100_ZONE_4_0X82_1].MUX_Status = TempSensConfig[SensorId].Reg0.bits.MUX; -// break; -// case HEAD_PT100_ZONE_5_0X84_0: -// case HEAD_PT100_ZONE_6_0X84_1: -// HeadTempSensConfig[HEAD_PT100_ZONE_5_0X84_0].MUX_Status = TempSensConfig[SensorId].Reg0.bits.MUX; -// HeadTempSensConfig[HEAD_PT100_ZONE_6_0X84_1].MUX_Status = TempSensConfig[SensorId].Reg0.bits.MUX; -// break; -// case HEAD_PT100_ZONE_7_0X86_0: -// case HEAD_PT100_ZONE_8_0X86_1: -// HeadTempSensConfig[HEAD_PT100_ZONE_7_0X86_0].MUX_Status = TempSensConfig[SensorId].Reg0.bits.MUX; -// HeadTempSensConfig[HEAD_PT100_ZONE_8_0X86_1].MUX_Status = TempSensConfig[SensorId].Reg0.bits.MUX; -// break; -// case HEAD_PT100_ZONE_9_0X88_0: -// case HEAD_PT100_ZONE_10_0X88_1: -// HeadTempSensConfig[HEAD_PT100_ZONE_9_0X88_0].MUX_Status = TempSensConfig[SensorId].Reg0.bits.MUX; -// HeadTempSensConfig[HEAD_PT100_ZONE_10_0X88_1].MUX_Status = TempSensConfig[SensorId].Reg0.bits.MUX; -// break; -// case HEAD_PT100_ZONE_11_0X8A_0: -// case HEAD_PT100_ZONE_12_0X8A_1: -// HeadTempSensConfig[HEAD_PT100_ZONE_11_0X8A_0].MUX_Status = TempSensConfig[SensorId].Reg0.bits.MUX; -// HeadTempSensConfig[HEAD_PT100_ZONE_12_0X8A_1].MUX_Status = TempSensConfig[SensorId].Reg0.bits.MUX; -// break; -// case HEAD_PT100_AIR_HEATER_1_0X8C_0: -// case HEAD_PT100_AIR_HEATER_2_0X8C_1: -// HeadTempSensConfig[HEAD_PT100_AIR_HEATER_1_0X8C_0].MUX_Status = TempSensConfig[SensorId].Reg0.bits.MUX; -// HeadTempSensConfig[HEAD_PT100_AIR_HEATER_2_0X8C_1].MUX_Status = TempSensConfig[SensorId].Reg0.bits.MUX; -// break; -// case HEAD_PT100_MIXER_0X8E_0: -// case HEAD_PT100_RESERVE_0X8E_1: -// HeadTempSensConfig[HEAD_PT100_MIXER_0X8E_0].MUX_Status = TempSensConfig[SensorId].Reg0.bits.MUX; -// HeadTempSensConfig[HEAD_PT100_RESERVE_0X8E_1].MUX_Status = TempSensConfig[SensorId].Reg0.bits.MUX; -// break; -// default: -// break; -// } -// } -// return status; -//} - - -//uint32_t was_HeadADCPT100_ReadReg(TEMPERATURE_SENSOR_ID_ENUM SensorId, uint8_t reg, uint8_t *readValue) -//{ -// uint32_t Status = OK; -// -// uint8_t Write_Buf[1]; -// -// #ifdef Use_Head_Card -// Select_Main_Head_Mux_Channel(); -// #endif -// -// Write_Buf[0] = ADS122X_READ_CMD(reg); -// -//// Status |= I2C_Write_SensorId(I2C_ID_HEAD_CARD, SensorId, Write_Buf, 1); -// delayUs(1); // delayUs(50); -//// Status |= I2C_Read_SensorId(I2C_ID_HEAD_CARD, SensorId, readValue, 1); -// -// return Status; -//} - -//uint8_t was_Test_Read_Buf[4] = {0,0,0,0}; - -//uint32_t was_Test_HeadCard_PT100(TEMPERATURE_SENSOR_ID_ENUM SensorId) -//{ -// uint32_t Status = OK; -// uint8_t i = 0; -// -// #ifdef Test_headCard_With_DispCard_I2C4_Add0xE2_DispID_0 -// Select_Main_Head_Mux_Channel_test(); -// #else -// Select_Main_Head_Mux_Channel(); -// #endif -// -// //HeadADCPT100_Reset(); -// HeadADCPT100_InitConfigReg(); -// -// -// was_HeadADCPT100_Config_callback(SensorId, SENSOR_CONFIG_REG0); -// was_HeadADCPT100_Config_callback(SensorId, SENSOR_CONFIG_REG1); -// was_HeadADCPT100_Config_callback(SensorId, SENSOR_CONFIG_REG2); -// was_HeadADCPT100_Config_callback(SensorId, SENSOR_CONFIG_REG3); -// -// was_HeadADCPT100_StartSync(SensorId); -// -// -// -// uint8_t Write_Buf[4] = {SENSOR_CONFIG_REG0,SENSOR_CONFIG_REG1,SENSOR_CONFIG_REG2,SENSOR_CONFIG_REG3}; -// -// for(i=0; i<4; i++) -// { -// was_HeadADCPT100_ReadReg(SensorId, Write_Buf[i], &was_Test_Read_Buf[i]); -// -// } -// -// was_HeadADCPT100_SendReadDataCommand(SensorId); -// -// -// return Status; -//} - -//uint32_t was_HeadADCPT100_Calc_Resistance(TEMPERATURE_SENSOR_ID_ENUM SensorId, unsigned int Current_Measurement) -//{ -// -// #define Rref 1650 //ohm -// -// uint32_t HeadADCPT100_Resistance_100; -// -// unsigned int Factor_2Rref_E_H; -// unsigned int Factor_2Rref_E_L; -// -// //Resistance = Measurement / (2^23) *4 * Rref / Gain //---------------------- is it *4 ???? -// -// Factor_2Rref_E_H = 400 * Rref; // 200 to calculate Resistance*100 -// -// Factor_2Rref_E_L = 8388608 * (2<<(TempSensConfig[SensorId].Reg0.bits.GAIN -1));//2^23*Gain -// -// HeadADCPT100_Resistance_100 = (float)Current_Measurement / (float)Factor_2Rref_E_L * (float)Factor_2Rref_E_H; -// -// return HeadADCPT100_Resistance_100; -//} - -//uint32_t was_Test_ADS122X_Internal_Temperature_Sensor(TEMPERATURE_SENSOR_ID_ENUM SensorId) -//{ -// uint32_t Data = 0; -// -// uint8_t Write_Buf[2]; -// -// Select_Main_Head_Mux_Channel(); -// -// SysCtlDelay(5000); -// HeadTempSensConfig[SensorId].Reg1.bits.TS = ADS122X_TEMP_SENSOR_ON;//Bit 1 Enables the Internal temperature sensor -// -// Write_Buf[0] = ADS122X_WREG_CMD | (ADS122X_CONFIG_1_REG<<2); -// Write_Buf[1] = HeadTempSensConfig[SensorId].Reg1.Byte; -//// I2C_Write_SensorId(I2C_ID_HEAD_CARD, SensorId, Write_Buf, 2); -// -// was_HeadCard_Toggle_PT100(SensorId); -// -// SysCtlDelay(5000); -// -// was_HeadADCPT100_StartSync(SensorId); -// SysCtlDelay(3000); -// -// was_HeadADCPT100_SendReadDataCommand(SensorId); -// -// Data = was_Data_ADC_Head; -// -// Data = Data & 0xFFFFFF;//24bit -// -// Data = Data >> 10;//need the 14 left bits // According to ADS1220 data sheet page 31 8.3.13 -// -// Data*=0.03125;// According to ADS1220 data sheet page 31 8.3.13 -// -// return Data;//Temperature_C -// -//} diff --git a/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/WHS_Card/EEPROM/WHS_EEPROM.c b/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/WHS_Card/EEPROM/WHS_EEPROM.c index 117a20913..dfd49a71b 100644 --- a/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/WHS_Card/EEPROM/WHS_EEPROM.c +++ b/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/WHS_Card/EEPROM/WHS_EEPROM.c @@ -101,9 +101,6 @@ uint32_t Check_WHS_Type_Via_EEPROM() WHS_Type = WHS_TYPE_NEW; } - - //TODO to test and replace #ifdef Use_Head_Card with if(Head_Type != HEAD_TYPE_SYLKO_WITHOUT_CARD) - return status; } diff --git a/Software/Embedded_SW/Embedded/Drivers/Valves/Valve.c b/Software/Embedded_SW/Embedded/Drivers/Valves/Valve.c index dc92b6683..3ea703b93 100644 --- a/Software/Embedded_SW/Embedded/Drivers/Valves/Valve.c +++ b/Software/Embedded_SW/Embedded/Drivers/Valves/Valve.c @@ -430,8 +430,8 @@ uint32_t Control3WayValvesWithCallback (Valves_t _ValveId, bool direction, callb Valve3WayControlId[_ValveId] = AddControlCallback("Valve3WayControlId", Valve3WayCallBackFunction, eOneSecond/*eHundredMillisecond*/, FPGA_GetDispenserValveBusyOCD,(IfTypeDisopenser*0x100+_ValveId), _ValveId, 0 ); if (Valve3WayControlId[_ValveId] == 0xFF) Report("Add control callback failed",__FILE__,__LINE__,(int)_ValveId,RpWarning,(int)Valve3WayControlId[_ValveId],0); - else - Report("Add control callback",__FILE__,__LINE__,(int)_ValveId,RpWarning,(int)Valve3WayControlId[_ValveId],0); +// else +// Report("Add control callback",__FILE__,__LINE__,(int)_ValveId,RpWarning,(int)Valve3WayControlId[_ValveId],0); /*busy = */FPGA_GetDispenserValveBusyOCD(_ValveId,0); //Report("Set valve id, dir, busy",__FILE__,_ValveId,(int)direction,RpWarning,(int)busy,0); diff --git a/Software/Embedded_SW/Embedded/Modules/Diagnostics/Diagnostics.c b/Software/Embedded_SW/Embedded/Modules/Diagnostics/Diagnostics.c index 4f5bec4f0..63fe510c4 100644 --- a/Software/Embedded_SW/Embedded/Modules/Diagnostics/Diagnostics.c +++ b/Software/Embedded_SW/Embedded/Modules/Diagnostics/Diagnostics.c @@ -314,11 +314,14 @@ uint32_t DiagnosticsLoadDigitalValues(void) DigitalOutputState[index].interfaceio = INTERFACE_IOS__GPO_SPARE_SSR13_CTRL; DigitalOutputState[index++].value = ReadHeadMagnetBit(); - DigitalOutputState[index].interfaceio = INTERFACE_IOS__GPO_LED3; - DigitalOutputState[index++].value = HeadCard_Actuators_Status(ACTIN); + /*if (Head_Type == HEAD_TYPE_SYLKO) //rapid/pp machines + { + DigitalOutputState[index].interfaceio = INTERFACE_IOS__GPO_LED3; + DigitalOutputState[index++].value = HeadCard_Actuators_Status(ACTIN); - DigitalOutputState[index].interfaceio = INTERFACE_IOS__GPO_LED4; - DigitalOutputState[index++].value = HeadCard_Actuators_Status(ACTOT); + DigitalOutputState[index].interfaceio = INTERFACE_IOS__GPO_LED4; + DigitalOutputState[index++].value = HeadCard_Actuators_Status(ACTOT); + }*/ DigitalOutputState[index].interfaceio = INTERFACE_IOS__GPI_WCONTAINER_FULL; DigitalOutputState[index++].value = WHS_IsContainerFull(); @@ -407,7 +410,7 @@ void DiagnosticTenMsecCollection(void) DiagnosticLoadDancerError(POOLER_DANCER,ThreadGetMotorCalculatedError(POOLER_DANCER)); DiagnosticLoadDancerError(FEEDER_DANCER,ThreadGetMotorCalculatedError(FEEDER_DANCER)); - //DiagnosticLoadSpeedSensor(getSensorSpeedData()); + DiagnosticLoadSpeedSensor(getSensorSpeedData()); } void DiagnosticOneMinuteCollection(void) { @@ -443,7 +446,7 @@ void DiagnosticOneMinuteCollection(void) } DiagnosticsMonitor.n_overalltemperature = 1; OverallTemperature = max(MillisecGetTemperatures(TEMP_SENSE_AN_ENCLOSURETEMP1),MillisecGetTemperatures(TEMP_SENSE_AN_ENCLOSURETEMP2)); - OverallTemperature = ((int)(MillisecGetTemperatures(TEMP_SENSE_AN_ENCLOSURETEMP1))*1000 + (int)(MillisecGetTemperatures(TEMP_SENSE_AN_ENCLOSURETEMP2))); + OverallTemperature = ((int)(MillisecGetTemperatures(TEMP_SENSE_AN_ENCLOSURETEMP1))*10 + (int)(MillisecGetTemperatures(TEMP_SENSE_AN_ENCLOSURETEMP2)/100)); DiagnosticsMonitor.overalltemperature = &OverallTemperature; DiagnosticsMonitor.n_midtank1level = 1; @@ -793,7 +796,9 @@ void Diagnostic100msecCollection(void) } } + DiagnosticsMonitor.n_drierzone1heatercurrent = 1; HeatersCurrent[HEATER_DRYER_CURRENT_1][0] = Get_Heaters_Current(HEATER_DRYER_CURRENT_1); + DiagnosticsMonitor.n_drierzone2heatercurrent = 1; HeatersCurrent[HEATER_DRYER_CURRENT_2][0] = Get_Heaters_Current(HEATER_DRYER_CURRENT_2); /*dispenser1motorfrequency[DiagnosticsIndex] = MotorGetSpeed(HARDWARE_MOTOR_TYPE__MOTO_DISPENSER_1); diff --git a/Software/Embedded_SW/Embedded/Modules/IDS/IDS_print.c b/Software/Embedded_SW/Embedded/Modules/IDS/IDS_print.c index 14718ab0e..0c28ee564 100644 --- a/Software/Embedded_SW/Embedded/Modules/IDS/IDS_print.c +++ b/Software/Embedded_SW/Embedded/Modules/IDS/IDS_print.c @@ -519,12 +519,12 @@ uint32_t InactiveDispenserHome(uint32_t DispenserId, uint32_t ReadValue) if (DispenserUsedInJob[i] == true) //we actually should check for all dispensers { HW_Motor_Id = DispenserIdToMotorId[i]; - if (GetDispenserPressure(i) > DispenserPreparePressure*1.02) + if (GetDispenserPressure(i) > DispenserPreparePressure*1.05) { NumofReadyDispensers++; - CurrentDispenserSpeed[i] = 0; #ifdef SPECIAL_DISPENSERS MotorStop(HW_Motor_Id, Hard_Hiz); + CurrentDispenserSpeed[i] = 0; //Report("IDS stopped ready",__FILE__,i,(int)(DispenserPreparePressure*100),RpWarning,(int)NumofReadyDispensers,0); #else tempSpeed = CurrentDispenserSpeed[i]; @@ -569,7 +569,7 @@ uint32_t InactiveDispenserHome(uint32_t DispenserId, uint32_t ReadValue) Report("pressureReady = true or timeout;",__FILE__,DispenserBuildTimeCounter,NumofReadyDispensers,RpWarning,(int)NumOfActiveDispensers,0); } } -#ifndef SPECIAL_DISPENSERS +//#ifndef SPECIAL_DISPENSERS else if (endOfPrepareWCF == false) { if ((DispenserBuildTimeCounter == PRESSURE_READ_TIME_GAP)&&(FirstBrushStop)) @@ -614,8 +614,11 @@ uint32_t InactiveDispenserHome(uint32_t DispenserId, uint32_t ReadValue) segmentfirst_speed /= 100; DispenserSegmentReady[DispenserId] = false; //Control3WayValvesWithCallback (DispenserId, Dispenser_Mixer, NULL); //direction: MidTank_Dispenser or Dispenser_Mixer - //IDS_Dispenser_Start_Motor_and_Open_Valve(DispenserId,segmentfirst_speed,NULL); +#ifdef SPECIAL_DISPENSERS + IDS_Dispenser_Start_Motor_and_Open_Valve(DispenserId,segmentfirst_speed,NULL); +#else MotorSetSpeed(HW_Motor_Id, segmentfirst_speed); +#endif CurrentDispenserSpeed[Dispenser_i] = segmentfirst_speed; usnprintf(IdMessage, 80, @@ -657,13 +660,13 @@ uint32_t InactiveDispenserHome(uint32_t DispenserId, uint32_t ReadValue) } } -#endif +/*#endif #ifdef SPECIAL_DISPENSERS if (pressureReady == true) -#else +#else*/ //start new stage if (endOfPrepareWCF == true) -#endif +//#endif { SafeRemoveControlCallback(DispenserPrepareControlId, IDS_Prepare_Callback ); DispenserPrepareControlId = 0xFF; @@ -785,6 +788,9 @@ uint32_t InactiveDispenserHome(uint32_t DispenserId, uint32_t ReadValue) for (i = 0; i < MAX_DYE_DISPENSERS; i++) { dispenserspeed = DispenserPrepareSpeed; +#ifdef SPECIAL_DISPENSERS + dispenserspeed = 300; +#endif TimerMotors_t HW_Motor_Id = DispenserIdToMotorId[i]; if (DispenserUsedInJob[i] == true) //we actually should check for all dispensers @@ -1060,7 +1066,7 @@ uint32_t IDS_Cleaning_Stop_Cleaning_Solution (callback_fptr callback); //cleaning return OK; } -#ifndef SPECIAL_DISPENSERS +//#ifndef SPECIAL_DISPENSERS if ((InterSegmentStartWFCFDispensers > 12000)&&(InterSegmentStartWFCFDispensers == (InterSegmentStepsCount+12000))) { //start prepare 4 seconds before wcf @@ -1141,7 +1147,7 @@ uint32_t IDS_Cleaning_Stop_Cleaning_Solution (callback_fptr callback); //close waste valve one second before segment - trial Valve_Set(VALVE_MIXCHIP_WASTECH, Mixer_Head); } -#endif +//#endif return OK; } uint32_t IDSCheckSegmentData(void *SegmentDetails, int SegmentId) diff --git a/Software/Embedded_SW/Embedded/Modules/Stubs_Handler/Progress.c b/Software/Embedded_SW/Embedded/Modules/Stubs_Handler/Progress.c index 677d3fa5f..e0728945d 100644 --- a/Software/Embedded_SW/Embedded/Modules/Stubs_Handler/Progress.c +++ b/Software/Embedded_SW/Embedded/Modules/Stubs_Handler/Progress.c @@ -511,7 +511,7 @@ void Stub_ProgressRequest(MessageContainer* requestContainer) if((request->amount == 0x0CE) && (request->delay == 0x0CE)) //Get Gas Sensor { LOG_ERROR(request->delay,"FlashInitAndLoad"); - FlashInitAndLoad(); + FlashInit(); response.progress = (double)OK; response.has_progress = true; diff --git a/Software/Embedded_SW/Embedded/Modules/Thread/Thread_print.c b/Software/Embedded_SW/Embedded/Modules/Thread/Thread_print.c index fd48e799a..1dd101f82 100644 --- a/Software/Embedded_SW/Embedded/Modules/Thread/Thread_print.c +++ b/Software/Embedded_SW/Embedded/Modules/Thread/Thread_print.c @@ -28,6 +28,7 @@ #include "drivers/Heater/Heater.h" #include "drivers/Motors/Motor.h" #include "drivers/FPGA/FPGA_GPIO/FPGA_GPIO.h" +#include "drivers/FPGA/FPGA_SPI_Comm.h" #include "modules/heaters/heaters.h" #include "modules/General/process.h" #include "modules/ids/ids_ex.h" @@ -117,8 +118,8 @@ uint32_t Control_Delta_Position_Pass(uint32_t Current_Read,uint32_t Previous_Rea if (Current_Read < Previous_Read) { - ReportWithPackageFilter(ThreadFilter,"Length rollover",__FILE__,__LINE__,(int)Current_Read,RpWarning,(int)Previous_Read,0); Time_Pass = (MAX_COUNTER - Previous_Read) + Current_Read + 1; + ReportWithPackageFilter(ThreadFilter,"Length rollover",__FILE__,Time_Pass,(int)Current_Read,RpWarning,(int)Previous_Read,0); } else Time_Pass = Current_Read - Previous_Read; @@ -178,7 +179,10 @@ uint32_t ThreadLengthCBFunction(uint32_t IfIndex, uint32_t ReadValue) initialpos = 0; } prevprev = PreviousPosition; - positionDiff = Control_Delta_Position_Pass(CurrentPosition,PreviousPosition); + if (Extended_Motor_Param[ThreadMotorIdToMotorId[index]] == true) //powerstep driver reverses the direction + positionDiff = Control_Delta_Position_Pass(PoolerPreviousPosition,PoolerCurrentPosition); + else + positionDiff = Control_Delta_Position_Pass(PoolerCurrentPosition,PoolerPreviousPosition); //positionDiff = positionDiff / MotorsCfg[ThreadMotorIdToMotorId[index]].microstep; PreviousPosition = CurrentPosition; @@ -268,7 +272,10 @@ uint32_t PoolerThreadLengthCBFunction(uint32_t IfIndex, uint32_t ReadValue) Poolerinitialpos = 0; } prevprev = PoolerPreviousPosition; - positionDiff = Control_Delta_Position_Pass(PoolerCurrentPosition,PoolerPreviousPosition); + if (Extended_Motor_Param[ThreadMotorIdToMotorId[index]] == true) //powerstep driver reverses the direction + positionDiff = Control_Delta_Position_Pass(PoolerPreviousPosition,PoolerCurrentPosition); + else + positionDiff = Control_Delta_Position_Pass(PoolerCurrentPosition,PoolerPreviousPosition); //positionDiff = positionDiff / MotorsCfg[ThreadMotorIdToMotorId[index]].microstep; PoolerPreviousPosition = PoolerCurrentPosition; diff --git a/Software/Embedded_SW/Embedded/StateMachines/Initialization/InitSequence.c b/Software/Embedded_SW/Embedded/StateMachines/Initialization/InitSequence.c index ba3a3e1a7..92ab2b43c 100644 --- a/Software/Embedded_SW/Embedded/StateMachines/Initialization/InitSequence.c +++ b/Software/Embedded_SW/Embedded/StateMachines/Initialization/InitSequence.c @@ -240,7 +240,7 @@ bool DetectIfCurrentReadingStable(double HeaterCurrent) Maxcount_Heater_Current++; Heater_Current[count_Heater_Current++] = HeaterCurrent; - if ( count_Heater_Current >= 5) + if ( count_Heater_Current >= MAX_CURRENT_READING) { count_Heater_Current = 0; initial_wait = true; @@ -263,16 +263,19 @@ double GetZone2RMSCurrent(double VAC) } 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 ((MainHeaterStable == false)&&(Maxcount_Heater_Current=CURRENT_READING_ERROR_UNSTABLE) { - ReportWithPackageFilter(InitFilter,"drier heaters current not stable", __FILE__,__LINE__,(int)(StableCurrent*100), RpMessage, Maxcount_Heater_Current, 0); + ReportWithPackageFilter(InitFilter,"drier heaters current not stable", __FILE__,GetHeaterState(HEATER_TYPE__DryerSecondaryHeater),(int)(StableCurrent*100), RpMessage, Maxcount_Heater_Current, 0); if (SafeRemoveControlCallback(HWControlId, PowerManagementCallBack )==OK) HWControlId = 0xFF; else @@ -330,10 +333,15 @@ return OK; } uint32_t InitSequencePowerManagementInit(void) { - InitCurrentReadingStable(); - ActivateHeater(HEATER_TYPE__DryerMainHeater); - HWControlId = AddControlCallback("Init Power", PowerManagementCallBack, eHundredMillisecond, TemplateDataReadCBFunction,0,0, 0 ); - ReportWithPackageFilter(InitFilter,"starting main heater ", __FILE__,__LINE__,(int)(StableCurrent*100), RpMessage, Maxcount_Heater_Current, 0); + if ((Head_Type >= HEAD_TYPE_SYLKO)&&(WHS_Type == WHS_TYPE_NEW)) + { + InitCurrentReadingStable(); + ActivateHeater(HEATER_TYPE__DryerMainHeater); + HWControlId = AddControlCallback("Init Power", PowerManagementCallBack, eHundredMillisecond, TemplateDataReadCBFunction,0,0, 0 ); + ReportWithPackageFilter(InitFilter,"starting main heater ", __FILE__,__LINE__,(int)(StableCurrent*100), RpMessage, Maxcount_Heater_Current, 0); + } + else + InitStages++; return OK; } uint32_t InitSequenceInitialBlowerActivation(void) @@ -388,13 +396,13 @@ uint32_t InitSequenceDispenserPressureBuildUpTest(void) } uint32_t InitSequenceWaitForCoolerCallBackFunction(uint32_t IfIndex, uint32_t BusyFlag) { - InitStages++; MachineStateDetail = INIT_SEQUENCE_WAIT_FOR_COOLER; if (SafeRemoveControlCallback(HWControlId, InitSequenceWaitForCoolerCallBackFunction )==OK) HWControlId = 0xFF; else Report("Remove control callback failed",__FILE__,__LINE__,(int)HWControlId,RpWarning,(int)InitSequenceWaitForCoolerCallBackFunction,0); + InitStages++; return OK; } uint32_t InitSequenceWaitForCooler(void) @@ -414,7 +422,8 @@ uint32_t InitSequenceWaitForCooler(void) else { //cold reset, wait 2 minutes for cooler start - HWControlId = AddControlCallback("Init Cooler", InitSequenceWaitForCoolerCallBackFunction, 2*eOneMinute, TemplateDataReadCBFunction,0,0, 0 ); +// HWControlId = AddControlCallback("Init Cooler", InitSequenceWaitForCoolerCallBackFunction, 2*eOneMinute, TemplateDataReadCBFunction,0,0, 0 ); + HWControlId = AddControlCallback("Init Cooler", InitSequenceWaitForCoolerCallBackFunction, 2*eOneSecond, TemplateDataReadCBFunction,0,0, 0 ); } //InitSequenceStateMachine(InitStages); return OK; -- cgit v1.3.1