From 951715815b1bd6a8ebb415fc1ce85a97843351f4 Mon Sep 17 00:00:00 2001 From: Avi Levkovich Date: Wed, 18 Nov 2020 10:08:14 +0200 Subject: Add support for head fan cntroller with slave address 0x5E --- Software/Embedded_SW/Embedded/Modules/Stubs_Handler/Progress.c | 8 ++++++++ 1 file changed, 8 insertions(+) (limited to 'Software/Embedded_SW/Embedded/Modules') diff --git a/Software/Embedded_SW/Embedded/Modules/Stubs_Handler/Progress.c b/Software/Embedded_SW/Embedded/Modules/Stubs_Handler/Progress.c index a7b3c5d26..284a43e41 100644 --- a/Software/Embedded_SW/Embedded/Modules/Stubs_Handler/Progress.c +++ b/Software/Embedded_SW/Embedded/Modules/Stubs_Handler/Progress.c @@ -1263,6 +1263,14 @@ void Stub_ProgressRequest(MessageContainer* requestContainer) response.has_progress = true; } else + if(request->amount == 0xB26) //Change sublimation time + { + REPORT_MSG(request->delay,"Change sublimation time"); + setSublimationBlowTime(request->delay); + response.progress = JogSpeed; + response.has_progress = true; + } + else if(request->amount == 0xC3) //suspend I2C task { if (request->delay == 0) -- cgit v1.3.1 From 2d453e76dbc75ed10c7e953f735d9aedcbfd3529 Mon Sep 17 00:00:00 2001 From: Shlomo Hecht Date: Wed, 18 Nov 2020 16:24:06 +0200 Subject: fixes --- Software/Embedded_SW/Embedded/Drivers/Motors/MotorActions.c | 12 ++++++------ .../Embedded/Modules/Diagnostics/DiagnosticsHoming.c | 4 ++-- Software/Embedded_SW/Embedded/Modules/IDS/IDS_print.c | 6 ++++-- Software/Embedded_SW/Embedded/Modules/Thread/ThreadLoad.c | 2 +- Software/Embedded_SW/Embedded/Modules/Thread/Thread_init.c | 7 +------ 5 files changed, 14 insertions(+), 17 deletions(-) (limited to 'Software/Embedded_SW/Embedded/Modules') diff --git a/Software/Embedded_SW/Embedded/Drivers/Motors/MotorActions.c b/Software/Embedded_SW/Embedded/Drivers/Motors/MotorActions.c index 779d7e82f..ae862505a 100644 --- a/Software/Embedded_SW/Embedded/Drivers/Motors/MotorActions.c +++ b/Software/Embedded_SW/Embedded/Drivers/Motors/MotorActions.c @@ -354,7 +354,7 @@ uint32_t MotorRunCallBackFunction(uint32_t IfIndex, uint32_t BusyFlag) //TODO { angle = Calculate_Arm_Distance(Arm_Drier_Center,temp); - if ((angle<400)||(angle>16000)) + if (abs(angle)<400) { BusyFlag = NOTBUSY; } @@ -376,7 +376,7 @@ uint32_t MotorRunCallBackFunction(uint32_t IfIndex, uint32_t BusyFlag) //TODO Report("motor timeout",__FILE__,__LINE__,MotorId,RpMessage,MotorTimeout[MotorId],0); Busy = BUSY; } - Report("MotorRunCallBackFunctionMotorRunCallBackFunction curr prev return",__FILE__,encoder,temp,RpWarning,AccumulatedArmMovement,0); + Report("MotorRunCallBackFunction curr prev return",__FILE__,encoder,temp,RpWarning,AccumulatedArmMovement,0); //call the module callback if (MotorCallback[MotorId]) { @@ -1128,10 +1128,10 @@ float Calculate_Arm_Angle(uint32_t Drier_Center,uint32_t Current_Angle) int Calculate_Arm_Distance(uint32_t Drier_Center,uint32_t Current_Angle) { int angle; - if (Current_Angle >= Drier_Center) + //if (Current_Angle >= Drier_Center) angle = Current_Angle - Drier_Center; - else - angle = Current_Angle + 0x3FFF - Drier_Center; + //else + // angle = Current_Angle + 0x3FFF - Drier_Center; ReportWithPackageFilter(DiagnosticsFilter,"Calculate_Arm_Distance",__FILE__,angle,Current_Angle,RpMessage,Drier_Center,0); return angle; } @@ -1163,7 +1163,7 @@ uint32_t LoadingArmReset_Callback(uint32_t MotorId, uint32_t ReadValue) { ReportWithPackageFilter(DiagnosticsFilter,"LoadingArmReset_Callback OK",__FILE__,__LINE__,Arm_Drier_Center,RpMessage,ReadValue,0); MCU_E2PromProgram(EEPROM_STORAGE_DRYER_CYCLES,0); - if ((angle<400)||(angle>16000)) + if (abs(angle)<400) //if (fabs(angle)<0.2) { ReportWithPackageFilter(DiagnosticsFilter,"drier center proximity",__FILE__,temp,Arm_Drier_Center,RpMessage,angle,0); diff --git a/Software/Embedded_SW/Embedded/Modules/Diagnostics/DiagnosticsHoming.c b/Software/Embedded_SW/Embedded/Modules/Diagnostics/DiagnosticsHoming.c index c7f8740d1..9a14cd1b8 100644 --- a/Software/Embedded_SW/Embedded/Modules/Diagnostics/DiagnosticsHoming.c +++ b/Software/Embedded_SW/Embedded/Modules/Diagnostics/DiagnosticsHoming.c @@ -475,7 +475,7 @@ uint32_t Diagnostics_Set_Load_Arm_To_Stopper_Callback(uint32_t deviceID, uint32_ angle = Calculate_Arm_Distance(D_DrierPrevLocation,temp); - if ((angle<14000 )||(BusyFlag == BUSY)) // OK - take another round + if ((abs (angle)<14000 )||(BusyFlag == BUSY)) // OK - take another round { responseContainer.has_error = true; responseContainer.error = ERROR_CODE__GENERAL_ERROR; @@ -611,7 +611,7 @@ uint32_t Diagnostics_Dryer_Loading_Callback(uint32_t MotorId, uint32_t ReadValue ReportWithPackageFilter(DiagnosticsFilter,"Diagnostics_Dryer_Loading_Callback",__FILE__,(int)angle,(int)ReadValue,RpMessage,temp,0); MCU_E2PromProgram(EEPROM_STORAGE_DRYER_CYCLES,D_numberOfCycles); - if ((angle>14000 )&&(ReadValue == NOTBUSY)) // OK - take another round + if ((abs(angle)>14000 )&&(ReadValue == NOTBUSY)) // OK - take another round { D_DrierPrevLocation = temp; //ReportWithPackageFilter(DiagnosticsFilter,"Diagnostics_Dryer_Loading_Callback",__FILE__,__LINE__,LoadStages,RpMessage,NumberOfDrierLoaderCycles,0); diff --git a/Software/Embedded_SW/Embedded/Modules/IDS/IDS_print.c b/Software/Embedded_SW/Embedded/Modules/IDS/IDS_print.c index fcd1c05a2..3a2bbc347 100644 --- a/Software/Embedded_SW/Embedded/Modules/IDS/IDS_print.c +++ b/Software/Embedded_SW/Embedded/Modules/IDS/IDS_print.c @@ -591,10 +591,10 @@ bool AdjustDispenserSpeedToPressure(int DispenserId, double RefMaxPressure,doubl { DispenserTotalPrepareSteps[i]+=(CurrentDispenserSpeed[i]*PRESSURE_READ_TIME_GAP/eOneSecond); HW_Motor_Id = DispenserIdToMotorId[i]; - if ((DispenserTotalPrepareSteps[i]>TargetNumberOfStepsPreRun)&&(DispenserTotalPrepareSteps[i]<(TargetNumberOfStepsPreRun+InitialDispenserSpeed))) + /*if ((DispenserTotalPrepareSteps[i]>TargetNumberOfStepsPreRun)&&(DispenserTotalPrepareSteps[i]<(TargetNumberOfStepsPreRun+InitialDispenserSpeed))) { ReportWithPackageFilter(IDSFilter,"IDS dispenser pre-run ended",__FILE__,i,(int)DispenserTotalPrepareSteps[i],RpWarning,(int)(pressure*100),0); - } + }*/ if (DispenserTotalPrepareSteps[i]0) + IDS_Cleaning_Stop_Cleaning_Solution(NULL); IDS_StopLubrication(); Init_CleaningStageCounter();//set the counter before relocating HeadCard_Actuators_Relocate(); diff --git a/Software/Embedded_SW/Embedded/Modules/Thread/ThreadLoad.c b/Software/Embedded_SW/Embedded/Modules/Thread/ThreadLoad.c index cdb726b5e..c3f15aff8 100644 --- a/Software/Embedded_SW/Embedded/Modules/Thread/ThreadLoad.c +++ b/Software/Embedded_SW/Embedded/Modules/Thread/ThreadLoad.c @@ -258,7 +258,7 @@ { CallbackCounter--; } - if ((angle>14000 )&&(BusyFlag == NOTBUSY)) // OK - take another round + if ((abs(angle)>14000 )&&(BusyFlag == NOTBUSY)) // OK - take another round { Report("Thread_Load_Set_Load_Arm_To_Stopper time",__FILE__,msec_millisecondCounter - UnloadingStart,msec_millisecondCounter,RpMessage,UnloadingStart,0); diff --git a/Software/Embedded_SW/Embedded/Modules/Thread/Thread_init.c b/Software/Embedded_SW/Embedded/Modules/Thread/Thread_init.c index 626bcde7c..869485b71 100644 --- a/Software/Embedded_SW/Embedded/Modules/Thread/Thread_init.c +++ b/Software/Embedded_SW/Embedded/Modules/Thread/Thread_init.c @@ -217,12 +217,7 @@ uint32_t StoreDancerConfigMessage(int DancerId) status |= MCU_E2PromProgram(DancerAddress[Dancer_i],DancersCfg[Dancer_i].zeropoint); - Report("~~~~~~Store eeprom 0",__FILE__,DancersCfg[0].zeropoint,(int)DancersCfg[1].zeropoint,RpWarning,(int)DancersCfg[2].zeropoint,0); -#ifdef FOUR_WINDERS - status |= MCU_E2PromProgram(EEPROM_STORAGE_DANCER_3,DancersCfg[HARDWARE_DANCER_3].zeropoint); - status |= MCU_E2PromProgram(EEPROM_STORAGE_DANCER_4,DancersCfg[HARDWARE_DANCER_4].zeropoint); - Report("~~~~~~Store eeprom 1",__FILE__,__LINE__,(int)DancersCfg[HARDWARE_DANCER_3].zeropoint,RpWarning,(int)DancersCfg[HARDWARE_DANCER_4].zeropoint,0); -#endif + Report("~~~~~~Store eeprom dancer",__FILE__,__LINE__,Dancer_i,RpWarning,(int)DancersCfg[Dancer_i].zeropoint,0); /* response_buffer = my_malloc(hardware_configuration__get_packed_size(&DancerConfig)); if (response_buffer) -- cgit v1.3.1 From 8906274180ae356fcf08893b313f852546181514 Mon Sep 17 00:00:00 2001 From: Shlomo Hecht Date: Wed, 18 Nov 2020 16:43:49 +0200 Subject: preparation for light colors --- Software/Embedded_SW/Embedded/DataDef.h | 11 +++++- .../Embedded/Drivers/flash_ram/MCU_E2Prom.c | 2 + .../Embedded/Modules/General/GeneralHardware.c | 5 ++- Software/Embedded_SW/Embedded/Modules/IDS/IDS.h | 3 -- .../Embedded_SW/Embedded/Modules/IDS/IDS_print.c | 11 ++++-- .../Embedded/Modules/Stubs_Handler/Calculate.c | 44 +++++++++++++++++----- 6 files changed, 57 insertions(+), 19 deletions(-) (limited to 'Software/Embedded_SW/Embedded/Modules') diff --git a/Software/Embedded_SW/Embedded/DataDef.h b/Software/Embedded_SW/Embedded/DataDef.h index 755e5a962..0d93b3dbe 100644 --- a/Software/Embedded_SW/Embedded/DataDef.h +++ b/Software/Embedded_SW/Embedded/DataDef.h @@ -30,7 +30,7 @@ #define BTSR_NO_PULLER_TFU #endif //#define USE_POWERSTEP01 -NA - +//#define LIGHT_COLORS //#define EMC_FORCE_MOT_CLOCK_INTERNAL //#define VAC_TEST @@ -635,9 +635,16 @@ Supports diagnostic (--diag_suppress, - pds) #define HEAD6_PT100 TEMP_SENSE_AN_ENCLOSURETEMP3 #define MIXER_PT100 TEMP_SENSE_ANALOG_MIXCHIP_TEMP +//#define LUBRICANT_DISPENSER 7 +#ifdef LIGHT_COLORS +#define LUBRICANT_DISPENSER 9 +#define CLEANER_DISPENSER 9 +#define MAX_DYE_DISPENSERS MAX_SYSTEM_DISPENSERS +#else #define LUBRICANT_DISPENSER 7 #define CLEANER_DISPENSER 6 -//#define AUTO_HOME_DISPENSERS +#define MAX_DYE_DISPENSERS 6 +#endif #define MAX_CARTRIDGES 3 typedef enum diff --git a/Software/Embedded_SW/Embedded/Drivers/flash_ram/MCU_E2Prom.c b/Software/Embedded_SW/Embedded/Drivers/flash_ram/MCU_E2Prom.c index f4b72bb0f..750d02f6b 100644 --- a/Software/Embedded_SW/Embedded/Drivers/flash_ram/MCU_E2Prom.c +++ b/Software/Embedded_SW/Embedded/Drivers/flash_ram/MCU_E2Prom.c @@ -212,8 +212,10 @@ void MainCardStoredItemRequestFunc(MessageContainer* requestContainer) response.maincardstoreddata = &MainCardStoredDataInstance; MainCardStoredDataInstance.maincards_n = &Serial[0]; MainCardStoredDataInstance.n_storeditem = MAX_EEPROM_STORAGE; + MainCardStoredDataInstance.storeditem = my_malloc(MAX_EEPROM_STORAGE*sizeof(MainCardStoredItem *)); for (i = 0;idata.len, requestContainer->data.data); uint32_t *DancersData = my_malloc(MAX_SYSTEM_DANCERS*sizeof(uint32_t)); MidTankData ** MidTankDataCollect = my_malloc(sizeof(MidTankData *)*MAX_SYSTEM_DISPENSERS); + MidTankData MidTankInfo[MAX_SYSTEM_DISPENSERS]; int i; for (i = 0;in_dancermiddlepoint = MAX_SYSTEM_DANCERS; response.machinecalibrationdata->dancermiddlepoint = DancersData; response.machinecalibrationdata->machineserialnumber = Serial; diff --git a/Software/Embedded_SW/Embedded/Modules/IDS/IDS.h b/Software/Embedded_SW/Embedded/Modules/IDS/IDS.h index d86d7ab2d..0f8108dad 100644 --- a/Software/Embedded_SW/Embedded/Modules/IDS/IDS.h +++ b/Software/Embedded_SW/Embedded/Modules/IDS/IDS.h @@ -5,9 +5,6 @@ #include "drivers/motors/motor.h" #include "ids_ex.h" -#define LUBRICANT_DISPENSER 7 -#define CLEANER_DISPENSER 6 - extern uint32_t DispenserPrepareSpeed ; extern double DispenserPreparePressure ; extern uint32_t DispenserPrepareTimeout ; diff --git a/Software/Embedded_SW/Embedded/Modules/IDS/IDS_print.c b/Software/Embedded_SW/Embedded/Modules/IDS/IDS_print.c index b1b81b3f1..367b36e38 100644 --- a/Software/Embedded_SW/Embedded/Modules/IDS/IDS_print.c +++ b/Software/Embedded_SW/Embedded/Modules/IDS/IDS_print.c @@ -43,7 +43,6 @@ typedef struct }DispenserControlConfig_t; HardwarePidControl *DispensersControl; HardwarePidControl DispensersCtrl[MAX_SYSTEM_DISPENSERS]; -#define MAX_DYE_DISPENSERS 6 #define IDS_PRESEGMENT_TIME_STEP 50 #define INITIAL_CLEANER_SPEED 300 @@ -565,7 +564,7 @@ bool AdjustDispenserSpeedToPressure(int DispenserId, double RefMaxPressure,doubl double segmentfirst_speed; double pressure; ModuleStateEnum result = ModuleDone; - bool DispenserReady[MAX_DYE_DISPENSERS] = {false,false,false,false,false,false}; + bool DispenserReady[MAX_SYSTEM_DISPENSERS] = {false,false,false,false,false,false,false,false}; //REPORT_MSG((int)DispenserPrepareControlId, "Prepare Callback"); @@ -1946,20 +1945,26 @@ uint32_t IDSSegmentState(void *SegmentDetails, int SegmentId) } uint32_t IDS_StartLubrication(void) { +#ifdef LIGHT_COLORS +#else IDS_Dispenser_Start_Motor_and_Open_Valve(LUBRICANT_DISPENSER,lubricant_speed,NULL); CurrentDispenserSpeed[LUBRICANT_DISPENSER] = lubricant_speed; - REPORT_MSG (lubricant_speed, "IDS_StartLubrication"); Lubricant_2Way_Valve (START); +#endif + REPORT_MSG (lubricant_speed, "IDS_StartLubrication"); return OK; } uint32_t IDS_StopLubrication(void) { REPORT_MSG (lubricant_speed, "IDS_StopLubrication and home dispenser"); +#ifdef LIGHT_COLORS +#else Lubricant_2Way_Valve (STOP); //IDS_Dispenser_Close_Valve_And_Stop_Motor(LUBRICANT_DISPENSER,IDS_Valve_EndValveReady); TimerMotors_t HW_Motor_Id = DispenserIdToMotorId[LUBRICANT_DISPENSER]; MotorStop(HW_Motor_Id,Hard_Hiz); CurrentDispenserSpeed[LUBRICANT_DISPENSER] = 0; //IDS_HomeDispenser (LUBRICANT_DISPENSER, 1000 , NULL); do not fill lubricant between jobs +#endif return OK; } diff --git a/Software/Embedded_SW/Embedded/Modules/Stubs_Handler/Calculate.c b/Software/Embedded_SW/Embedded/Modules/Stubs_Handler/Calculate.c index e386df88c..d26b3d814 100644 --- a/Software/Embedded_SW/Embedded/Modules/Stubs_Handler/Calculate.c +++ b/Software/Embedded_SW/Embedded/Modules/Stubs_Handler/Calculate.c @@ -5,22 +5,32 @@ #include #include "include.h" #include "driverlib/gpio.h" +#include "modules/control/control.h" #include "Drivers/USB_Communication/USBCDCD.h" - -void Stub_CalculateRequest(MessageContainer* requestContainer) +char CalculateToken[36+1] = {0}; +//char init_string[100]; +int aaa = 0; +uint32_t CalculateControlId = 0xFF; +uint32_t CalculateRpeat(uint32_t IfIndex, uint32_t BusyFlag) { MessageContainer responseContainer; - - CalculateRequest* request = calculate_request__unpack(NULL, requestContainer->data.len, requestContainer->data.data); - - CalculateResponse response = CALCULATE_RESPONSE__INIT; - response.sum = request->a + request->b; + bool last = false; + response.sum = aaa++; response.has_sum = true; - - responseContainer = createContainer(MESSAGE_TYPE__CalculateResponse, requestContainer->token, true, &response, &calculate_response__pack, &calculate_response__get_packed_size); + if (aaa >=20) + { + RemoveControlCallback(CalculateControlId, CalculateRpeat); + last = true; + aaa=0; + } + Report("CalculateRpeat",__FILE__,__LINE__,(int)aaa,RpWarning,(int)0,0); + + responseContainer = createContainer(MESSAGE_TYPE__CalculateResponse, CalculateToken, last, &response, &calculate_response__pack, &calculate_response__get_packed_size); + responseContainer.has_continuous = true; + responseContainer.continuous = true; // free(request); @@ -30,5 +40,21 @@ void Stub_CalculateRequest(MessageContainer* requestContainer) SendChars((char*)container_buffer, container_size); //free(container_buffer); //free(requestContainer); + + return OK; +} + + +void Stub_CalculateRequest(MessageContainer* requestContainer) +{ + MessageContainer responseContainer; + + CalculateRequest* request = calculate_request__unpack(NULL, requestContainer->data.len, requestContainer->data.data); + ustrncpy (CalculateToken, requestContainer->token,36); + + + Report("Stub_CalculateRequest",__FILE__,__LINE__,(int)aaa,RpWarning,(int)0,0); + CalculateControlId = AddControlCallback("PowerUpLoad", CalculateRpeat, eOneSecond, TemplateDataReadCBFunction,0,0, 0 ); + calculate_request__free_unpacked(request,NULL); } -- cgit v1.3.1 From 412f4e542d5c66399e958e7233d04574011af4b4 Mon Sep 17 00:00:00 2001 From: Ronen Sberlo Date: Thu, 19 Nov 2020 12:56:44 +0200 Subject: stop cleaner motor if job aborted --- Software/Embedded_SW/Embedded/Modules/IDS/IDS_Cleaning.c | 10 ++++++++++ Software/Embedded_SW/Embedded/Modules/IDS/IDS_ex.h | 1 + Software/Embedded_SW/Embedded/Modules/IDS/IDS_print.c | 1 + 3 files changed, 12 insertions(+) (limited to 'Software/Embedded_SW/Embedded/Modules') diff --git a/Software/Embedded_SW/Embedded/Modules/IDS/IDS_Cleaning.c b/Software/Embedded_SW/Embedded/Modules/IDS/IDS_Cleaning.c index 0ae017c13..59b9a56be 100644 --- a/Software/Embedded_SW/Embedded/Modules/IDS/IDS_Cleaning.c +++ b/Software/Embedded_SW/Embedded/Modules/IDS/IDS_Cleaning.c @@ -107,6 +107,16 @@ uint32_t IDS_Cleaning_Move_Actuators() CleaningStageCounter++; return OK; } + +uint32_t IDS_Cleaning_stop_cleaner_motor() +{ + TimerMotors_t MotorId = HARDWARE_MOTOR_TYPE__MOTO_DH_LID; + if (Head_Type != HEAD_TYPE_ARC) + return OK; + + MotorStop(MotorId,Soft_Stop); + return OK; +} /*uint32_t IDS_Cleaning_Move_Rockers (int LeftRockerSpeed,int RightRockerSpeed) { uint32_t status = OK; diff --git a/Software/Embedded_SW/Embedded/Modules/IDS/IDS_ex.h b/Software/Embedded_SW/Embedded/Modules/IDS/IDS_ex.h index 57d3ff5e2..0a8060496 100644 --- a/Software/Embedded_SW/Embedded/Modules/IDS/IDS_ex.h +++ b/Software/Embedded_SW/Embedded/Modules/IDS/IDS_ex.h @@ -118,5 +118,6 @@ void DispenserDataRequestFunc(MessageContainer* requestContainer); void IDS_Start_Pid_Testing(int DispenserId); void IDS_Stop_Pid_Testing(int DispenserId); uint32_t cleaningMotorCBFunction (uint32_t deviceID, uint32_t Parameter1); +uint32_t IDS_Cleaning_stop_cleaner_motor(); #endif /* MODULES_IDS_IDS_EX_H_ */ diff --git a/Software/Embedded_SW/Embedded/Modules/IDS/IDS_print.c b/Software/Embedded_SW/Embedded/Modules/IDS/IDS_print.c index 367b36e38..4fd273977 100644 --- a/Software/Embedded_SW/Embedded/Modules/IDS/IDS_print.c +++ b/Software/Embedded_SW/Embedded/Modules/IDS/IDS_print.c @@ -1940,6 +1940,7 @@ uint32_t IDSSegmentState(void *SegmentDetails, int SegmentId) IDS_Cleaning_Stop_Cleaning_Solution(NULL); IDS_StopLubrication(); Init_CleaningStageCounter();//set the counter before relocating + IDS_Cleaning_stop_cleaner_motor(); HeadCard_Actuators_Relocate(); return OK; } -- cgit v1.3.1