From 6ef1da888e2fee2c1c6373c894bfb6861cc3d526 Mon Sep 17 00:00:00 2001 From: Shlomo Hecht Date: Mon, 19 Aug 2019 16:16:24 +0300 Subject: fix microstep and prepare for motor type change --- .../Embedded_SW/Embedded/Modules/General/process.c | 22 +++++++++----- .../Embedded/Modules/IDS/IDS_dispenser.c | 20 +------------ .../Embedded_SW/Embedded/Modules/IDS/IDS_maint.c | 34 ++++++++++++++++------ 3 files changed, 41 insertions(+), 35 deletions(-) (limited to 'Software/Embedded_SW/Embedded/Modules') diff --git a/Software/Embedded_SW/Embedded/Modules/General/process.c b/Software/Embedded_SW/Embedded/Modules/General/process.c index 39e87ed6a..d62d117a0 100644 --- a/Software/Embedded_SW/Embedded/Modules/General/process.c +++ b/Software/Embedded_SW/Embedded/Modules/General/process.c @@ -258,14 +258,22 @@ uint32_t LoadProcessParamsFromFile(void) UploadProcessParametersRequest* request = upload_process_parameters_request__unpack(NULL, Bytes, buffer); ProcessParameters* ProcessParams = request->processparameters; - if ((ProcessParams->dryerzone1temp > 0.1)&&(ProcessParams->headzone2temp > 0.1)&&(ProcessParams->headzone3temp > 0.1)&&(ProcessParams->headzone4temp > 0.1))//NOT turning off heaters + if ((request!= NULL)&&(ProcessParams!=NULL)) { - Bytes = sizeof(ProcessParameters); - EraseFlashSection(PROCESS_PARAMETERS_MAP_IN_FLASH,Bytes+4); - ReadAppAndProgram(PROCESS_PARAMETERS_MAP_IN_FLASH, 4,&Bytes); - ReadAppAndProgram(PROCESS_PARAMETERS_MAP_IN_FLASH+4, Bytes, ProcessParams); - REPORT_MSG(Bytes,"ProcessParameters Bytes write to flash"); - free (buffer); + if ((ProcessParams->dryerzone1temp > 0.1)&&(ProcessParams->headzone2temp > 0.1)&&(ProcessParams->headzone3temp > 0.1)&&(ProcessParams->headzone4temp > 0.1))//NOT turning off heaters + { + Bytes = sizeof(ProcessParameters); + EraseFlashSection(PROCESS_PARAMETERS_MAP_IN_FLASH,Bytes+4); + ReadAppAndProgram(PROCESS_PARAMETERS_MAP_IN_FLASH, 4,&Bytes); + ReadAppAndProgram(PROCESS_PARAMETERS_MAP_IN_FLASH+4, Bytes, ProcessParams); + REPORT_MSG(Bytes,"ProcessParameters Bytes write to flash"); + free (buffer); + } + } + else + { + Report("process parameters not loaded",__FILE__,__LINE__,(int)request,RpWarning,(int)request,0); + return ERROR; } } diff --git a/Software/Embedded_SW/Embedded/Modules/IDS/IDS_dispenser.c b/Software/Embedded_SW/Embedded/Modules/IDS/IDS_dispenser.c index 2f563d7d1..6c055c1a6 100644 --- a/Software/Embedded_SW/Embedded/Modules/IDS/IDS_dispenser.c +++ b/Software/Embedded_SW/Embedded/Modules/IDS/IDS_dispenser.c @@ -235,7 +235,7 @@ void IDS_Dispenser_Content_Init (void) dispenser_running_data__init(&IDS_Dispenser_Data[i]); dispenserdata[i] = &IDS_Dispenser_Data[i]; IDS_Dispenser_Data[i].nanolitterperpulse = DEFAULT_NANOLITER_PER_PULSE; - IDS_Dispenser_Data[i].microsteps = MotorsCfg[HW_Motor_Id].microstep;; + IDS_Dispenser_Data[i].microsteps = MotorsCfg[HW_Motor_Id].microstep; } //================================== @@ -375,24 +375,6 @@ void IDS_Dispenser_RefillEnded (char DispenserId,char MicroSteps) IDS_Dispenser_Data[DispenserId].consumedinnanolitter = 0; Report("IDS_Dispenser_RefillEnded",__FILE__,__LINE__,(int)DispenserId,RpWarning,(int)IDS_Dispenser_Data[DispenserId].numberofrefills,0); } -void IDS_Dispenser_PrimingEnded (char DispenserId,char MicroSteps) -{ - assert (DispenserIdindex, MidTank_Dispenser); + KeepMicrostep[DispenserId] = MotorsCfg[MotorId].microstep; + if (Extended_Motor_Param == true) + Combined_dispenser_Driver_Mode(DispenserId,Current); MotorSetMicroStep(MotorId, 1); SysCtlDelay(180000); //open dry air valve in the dispenser @@ -227,7 +234,9 @@ uint32_t IDS_Dispenser_Alarm_On (uint8_t DispenserId) status |= MotorAbortMovetoLimitSwitch(MotorId); Valve_Set(IDS_Id_to_AirValve[DispenserId], Atm_MidTank_OFF); Enable_MidTank_Pressure_Reading(DispenserId); - status |= MotorSetMicroStep(DispenserId, MotorsCfg[DispenserId].microstep); + if (Extended_Motor_Param == true) + Combined_dispenser_Driver_Mode(DispenserId,Voltage); + status |= MotorSetMicroStep(MotorId, KeepMicrostep[DispenserId]); status |= MotorStop(DispenserId, Hard_Hiz); CurrentDispenserSpeed[DispenserId] = 0; JobEndReason = JOB_OUT_OF_DYE; @@ -270,7 +279,9 @@ uint32_t IDS_StopHomeDispenser (uint32_t DispenserId) Lubricant_2Way_Valve (STOP); } PrimingActive[DispenserId] = false; - MotorSetMicroStep(MotorId, MotorsCfg[MotorId].microstep); + if (Extended_Motor_Param == true) + Combined_dispenser_Driver_Mode(DispenserId,Voltage); + MotorSetMicroStep(MotorId, KeepMicrostep[DispenserId]); CurrentDispenserSpeed[DispenserId] = 0; CurrentDispenserSpeed[DispenserId] = 0; } @@ -297,7 +308,7 @@ uint32_t IDS_StopHomeDispenserBuildPressure (uint32_t DispenserId) //close dry air valve in the dispenser Valve_Set(IDS_Id_to_AirValve[DispenserId], Atm_MidTank_OFF); Disable_MidTank_Pressure_Reading(DispenserId); - //MotorSetMicroStep(motorId, MotorsCfg[motorId].microstep); + // MotorSetMicroStep(motorId, KeepMicrostep[DispenserId]); if (HomingRequestCallback[DispenserId]) { HomingRequestCallback[DispenserId](DispenserId,0); @@ -343,14 +354,16 @@ uint32_t IDS_EmptyDispenserCallback(uint32_t motorId, uint32_t ReadValue) MotorStop(motorId,Hard_Hiz); CurrentDispenserSpeed[DispenserId] = 0; - MotorSetMicroStep(motorId, MotorsCfg[motorId].microstep); + if (Extended_Motor_Param == true) + Combined_dispenser_Driver_Mode(DispenserId,Voltage); + MotorSetMicroStep(motorId, KeepMicrostep[DispenserId]); PrimingActive[DispenserId]= false; if (DispenserId == LUBRICANT_DISPENSER) { Lubricant_2Way_Valve (STOP); } Report("End Priming",__FILE__,millisecondCounter,(int)DispenserId,RpWarning,(int)DispenserHomingTime[DispenserId],0); - //MotorSetMicroStep(motorId, MotorsCfg[motorId].microstep); + // MotorSetMicroStep(motorId, KeepMicrostep[DispenserId]); if (HomingRequestCallback[DispenserId]) { HomingRequestCallback[DispenserId](DispenserId,0); @@ -376,9 +389,12 @@ uint32_t IDS_EmptyDispenser (uint32_t DispenserId, uint32_t speed , callback_fpt { //open dispenser valve dispenser to midtank direction Control3WayValvesWithCallback ((Valves_t)DispenserId, Dispenser_Mixer, NULL); //direction: MidTank_Dispenser or Dispenser_Mixer + if (Extended_Motor_Param == true) + Combined_dispenser_Driver_Mode(DispenserId,Current); //Valve_Set((Valves_t) request->index, Dispenser_Mixer); + KeepMicrostep[DispenserId] = MotorsCfg[MotorId].microstep; MotorSetMicroStep(MotorId, 1); - SysCtlDelay(180000); + Task_sleep(100); //open dry air valve in the dispenser //Valve_Set(IDS_Id_to_AirValve[DispenserId], Atm_MidTank_ON); if (DispenserId == LUBRICANT_DISPENSER) -- cgit v1.3.1