From 91893fc2febc531820aed5e7cfee370437b226a2 Mon Sep 17 00:00:00 2001 From: Shlomo Hecht Date: Mon, 19 Aug 2019 08:28:00 +0300 Subject: Version 1.4.4.0 base line --- Software/Embedded_SW/Embedded/Common/SW_Info/SW_Info.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'Software/Embedded_SW') 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 5193ac1c5..399131a93 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,3,85}; +TangoVersion_t _gTangoVersion = {1,4,4,0}; #define BUILD_DATE __DATE__ char Dat[50] = BUILD_DATE; char _gTangoName [MAX_STRING_LEN] = "Tango01 ";//d -- cgit v1.3.1 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/Drivers/FPGA/FPGA_SPI_Comm.h | 1 + .../Embedded_SW/Embedded/Drivers/Motors/Motor.c | 2 +- .../Embedded_SW/Embedded/Modules/General/process.c | 22 +++++++++----- .../Embedded/Modules/IDS/IDS_dispenser.c | 20 +------------ .../Embedded_SW/Embedded/Modules/IDS/IDS_maint.c | 34 ++++++++++++++++------ .../stubs/file read from machine.cs | 7 +++-- 6 files changed, 47 insertions(+), 39 deletions(-) (limited to 'Software/Embedded_SW') diff --git a/Software/Embedded_SW/Embedded/Drivers/FPGA/FPGA_SPI_Comm.h b/Software/Embedded_SW/Embedded/Drivers/FPGA/FPGA_SPI_Comm.h index b84a94b07..0f6e60796 100644 --- a/Software/Embedded_SW/Embedded/Drivers/FPGA/FPGA_SPI_Comm.h +++ b/Software/Embedded_SW/Embedded/Drivers/FPGA/FPGA_SPI_Comm.h @@ -48,4 +48,5 @@ uint32_t Power_Step_01_Mode(TimerMotors_t _motorId, MOTDRIVER_MODE New_Mode); void FPGA_SetMotPowerStwp01GateCfg(TimerMotors_t _motorId); void FPGA_SetGoToDirPosition(TimerMotors_t _motorId);//GoTo_DIR command +extern bool Extended_Motor_Param; diff --git a/Software/Embedded_SW/Embedded/Drivers/Motors/Motor.c b/Software/Embedded_SW/Embedded/Drivers/Motors/Motor.c index d8ba1f045..5e972dec6 100644 --- a/Software/Embedded_SW/Embedded/Drivers/Motors/Motor.c +++ b/Software/Embedded_SW/Embedded/Drivers/Motors/Motor.c @@ -529,7 +529,7 @@ void Combined_dispenser_Driver_Mode(uint8_t Dispenser_ID, MOTDRIVER_MODE New_Mod { assert(Dispenser_ID < MAX_DISPENSER_NUM); - Combined_Motor_Driver_Mode(Dispenser_ID + 5, New_Mode);//dispenser ID -> motor id + Combined_Motor_Driver_Mode(Dispenser_ID + HARDWARE_MOTOR_TYPE__MOTO_DISPENSER_1, New_Mode);//dispenser ID -> motor id } void test_Home_Pos() 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) diff --git a/Software/Stubs Collection/stubs/file read from machine.cs b/Software/Stubs Collection/stubs/file read from machine.cs index e4c43b905..7298c3c98 100644 --- a/Software/Stubs Collection/stubs/file read from machine.cs +++ b/Software/Stubs Collection/stubs/file read from machine.cs @@ -38,6 +38,8 @@ fileChunkDownloadResponse.IsCanceled = false; long chunk_size = response2.MaxChunkLength; stubManager.Write( chunk_size+" \r\n"); + + byte[] chunk = new byte[chunk_size]; FileStream fs = new FileStream("C:\\Temp\\GenHwCfg.cfg",FileMode.Create); bool done = false; @@ -48,14 +50,13 @@ fileChunkDownloadResponse.IsCanceled = false; FileChunkDownloadRequest fileChunkDownloadRequest = new FileChunkDownloadRequest(); fileChunkDownloadRequest.DownloadID = response2.DownloadID; var response3 = stubManager.Run(fileChunkDownloadRequest); - byte[] chunk = new byte[response3.Buffer.Length]; - response3.Buffer.CopyTo(chunk,0); + response3.Buffer.CopyTo(chunk,location); stubManager.Write("Length "+ response3.Buffer.Length + "\n\n"); fs.Write(chunk,location,response3.Buffer.Length); if (response3.Buffer.Length