aboutsummaryrefslogtreecommitdiffstats
path: root/Software/Embedded_SW/Embedded/Modules
diff options
context:
space:
mode:
authorAvi Levkovich <avi@twine-s.com>2019-08-29 16:32:02 +0300
committerAvi Levkovich <avi@twine-s.com>2019-08-29 16:32:02 +0300
commitb3107df005ae6d2bf7ca108494cab77d0c093399 (patch)
treefc7a66cb1801e458b5e7719dbe22f309ec931be3 /Software/Embedded_SW/Embedded/Modules
parent8dd7b8d63adf21c2f872074f140d9908c0925fc4 (diff)
parente3d237fb089078315149ab02fa8450522d9cc6d1 (diff)
downloadTango-b3107df005ae6d2bf7ca108494cab77d0c093399.tar.gz
Tango-b3107df005ae6d2bf7ca108494cab77d0c093399.zip
Merge branch 'master' of https://twinetfs.visualstudio.com/_git/Tango
Diffstat (limited to 'Software/Embedded_SW/Embedded/Modules')
-rw-r--r--Software/Embedded_SW/Embedded/Modules/General/process.c22
-rw-r--r--Software/Embedded_SW/Embedded/Modules/IDS/IDS_dispenser.c20
-rw-r--r--Software/Embedded_SW/Embedded/Modules/IDS/IDS_maint.c34
3 files changed, 41 insertions, 35 deletions
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 (DispenserId<MAX_SYSTEM_DISPENSERS);
- /*IDS_Dispenser_Data[DispenserId].microsteps = MicroSteps;
- IDS_Dispenser_Data[DispenserId].direction = 1;
- IDS_Dispenser_Data[DispenserId].consumedinnanolitter = 0;*/
- Report("IDS_Dispenser_PrimingEnded",__FILE__,__LINE__,(int)DispenserId,RpWarning,(int)IDS_Dispenser_Data[DispenserId].numberofrefills,0);
-}
-void IDS_Dispenser_PrimingStarted (char DispenserId,char MicroSteps)
-{
- assert (DispenserId<MAX_SYSTEM_DISPENSERS);
- /*IDS_Dispenser_Data[DispenserId].microsteps = MicroSteps;
- double assumedFlow = IDS_Dispenser_Data[DispenserId].microsteps*IDS_Dispenser_Data[DispenserId].nanolitterperpulse;
- IDS_Dispenser_Data[DispenserId].nanolitterperpulse = assumedFlow;
- IDS_Dispenser_Data[DispenserId].microsteps = 1;
- IDS_Dispenser_Data[DispenserId].direction = 1;*/
- Report("IDS_Dispenser_PrimingStarted",__FILE__,__LINE__,(int)DispenserId,RpWarning,(int)(CurrentDispenserSpeed[DispenserId]),0);
-}
void DispenserDataRequestFunc(MessageContainer* requestContainer)
{
MessageContainer responseContainer;
diff --git a/Software/Embedded_SW/Embedded/Modules/IDS/IDS_maint.c b/Software/Embedded_SW/Embedded/Modules/IDS/IDS_maint.c
index 603c4ac66..0a2dff245 100644
--- a/Software/Embedded_SW/Embedded/Modules/IDS/IDS_maint.c
+++ b/Software/Embedded_SW/Embedded/Modules/IDS/IDS_maint.c
@@ -16,6 +16,7 @@
#include "drivers/I2C_Communication/ADC_MUX/ADC_MUX.h"
#include "drivers/FPGA/FPGA_GPIO/FPGA_GPIO.h"
+#include "drivers/FPGA/FPGA_SPI_Comm.h"
#include "drivers/Motors/Motor.h"
#include "drivers/Valves/Valve.h"
@@ -63,6 +64,8 @@ callback_fptr HomingBacklashCallback[MAX_SYSTEM_DISPENSERS]={0,0,0,0,0,0,0,0};
uint32_t HomingBacklashTimeout[MAX_SYSTEM_DISPENSERS];
uint32_t HomingBacklashTime[MAX_SYSTEM_DISPENSERS];
+int32_t KeepMicrostep[MAX_SYSTEM_DISPENSERS];
+
bool HomingActive[MAX_SYSTEM_DISPENSERS] = {false,false,false,false,false,false,false,false};
bool PrimingActive[MAX_SYSTEM_DISPENSERS] = {false,false,false,false,false,false,false,false};
uint32_t DispenserHomingControlId[MAX_SYSTEM_DISPENSERS] = {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF};
@@ -140,7 +143,9 @@ uint32_t IDS_HomeDispenserBackMoveCallback(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]);
HomingActive[DispenserId]= false;
PrimingActive[DispenserId]= false;
Report("End backlash",__FILE__,millisecondCounter,(int)DispenserId,RpWarning,(int)DispenserHomingTime[DispenserId],0);
@@ -164,7 +169,7 @@ uint32_t IDS_HomeDispenserCallback(uint32_t motorId, uint32_t ReadValue)
//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);
@@ -204,7 +209,9 @@ uint32_t IDS_HomeDispenser (uint32_t DispenserId, uint32_t speed , callback_fptr
{
//open dispenser valve dispenser to midtank direction
Control3WayValvesWithCallback ((Valves_t)DispenserId, MidTank_Dispenser, NULL); //direction: MidTank_Dispenser or Dispenser_Mixer
- //Valve_Set((Valves_t) request->index, 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)