From 8bd342431df217349074a2c43f1dd150807ab0a1 Mon Sep 17 00:00:00 2001 From: Victoria Plitt Date: Sun, 12 Jul 2020 12:43:15 +0300 Subject: MS Popup of Combobox. Selected part of Combobox was showed wrong. item 3099 --- .../Views/JobView.xaml | 3 +- .../Resources/MaterialDesign.xaml | 41 +++++++--------------- 2 files changed, 15 insertions(+), 29 deletions(-) diff --git a/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Developer/Views/JobView.xaml b/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Developer/Views/JobView.xaml index ed832f468..35c621822 100644 --- a/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Developer/Views/JobView.xaml +++ b/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Developer/Views/JobView.xaml @@ -976,7 +976,8 @@ Color Space - + -- cgit v1.3.1 From d86a63d6ec2c74b5e0edd49e22a5acd04c6b6f9c Mon Sep 17 00:00:00 2001 From: Shlomo Hecht Date: Wed, 15 Jul 2020 13:34:46 +0300 Subject: fix thread PID handling on job start. cleaning improved. stub for watchdog added --- Software/Embedded_SW/Embedded/.cproject | 4 +- .../I2C_Communication/Head_Card/IO_Ports/Head_IO.c | 71 +++++++++ .../I2C_Communication/Head_Card/IO_Ports/Head_IO.h | 1 + .../WHS_Card/D_Max5805_ADC_Blower/WHS_Blower.c | 2 +- .../Embedded/Modules/AlarmHandling/AlarmHandling.c | 2 +- .../Embedded/Modules/Diagnostics/Diagnostics.c | 9 +- .../Embedded/Modules/General/GeneralHardware.c | 6 +- .../Embedded_SW/Embedded/Modules/General/Safety.c | 18 ++- .../Embedded_SW/Embedded/Modules/General/buttons.h | 1 - .../Embedded_SW/Embedded/Modules/IDS/IDS_print.c | 6 +- .../Embedded/Modules/Stubs_Handler/Progress.c | 8 + .../Embedded/Modules/Thread/Thread_print.c | 169 ++++++++++++--------- .../Initialization/PowerOffSequence.c | 3 + 13 files changed, 211 insertions(+), 89 deletions(-) diff --git a/Software/Embedded_SW/Embedded/.cproject b/Software/Embedded_SW/Embedded/.cproject index 0bc7dc368..fc105d8b9 100644 --- a/Software/Embedded_SW/Embedded/.cproject +++ b/Software/Embedded_SW/Embedded/.cproject @@ -170,7 +170,7 @@ - + @@ -441,7 +441,7 @@ - + diff --git a/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/Head_Card/IO_Ports/Head_IO.c b/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/Head_Card/IO_Ports/Head_IO.c index e8f41eaac..8f03fe66a 100644 --- a/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/Head_Card/IO_Ports/Head_IO.c +++ b/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/Head_Card/IO_Ports/Head_IO.c @@ -650,6 +650,77 @@ uint8_t Head_Test_IO() return status; } +typedef enum { + ActuatorIdle, + ActuatorMoveDown, + ActuatorWait, //wait for the actuator to get to the lower position + ActuatorMoveUp, + ActuatorLocated +}ActuatorLocatingEnum; +ActuatorLocatingEnum ActuatorLocating = ActuatorIdle; +uint32_t ActuatorLocatingControl = 0xFF; +uint32_t count_time = 0, moveuptime = 0; +#define ACTUATOR_RELOCATING_MOVEUP_TIME 160 +uint32_t MovingUpTime = ACTUATOR_RELOCATING_MOVEUP_TIME; +bool isActuatorOnLowestLocation(void) +{ +#warning give here indication if the actuator reached the lowest point + return true; +} +uint32_t HeadCard_Actuators_Relocate_callback(uint32_t IfIndex, uint32_t BusyFlag) // use IfIndex for Act_ID +{ + count_time++; + switch (ActuatorLocating) + { + case ActuatorIdle: + break; + case ActuatorMoveDown: + Trigger_Head_Actuators_Stub(ACTIN, true, false); + ActuatorLocating = ActuatorWait; + ReportWithPackageFilter(ThreadFilter,"actuators relocation",__FILE__,msec_millisecondCounter,ActuatorLocating,RpMessage,count_time,0); + break; + case ActuatorWait: + if (isActuatorOnLowestLocation()) + { + ActuatorLocating = ActuatorMoveUp; + Trigger_Head_Actuators_Stub(ACTIN, true, true); + moveuptime = count_time; + ReportWithPackageFilter(ThreadFilter,"actuators relocation",__FILE__,msec_millisecondCounter,ActuatorLocating,RpMessage,count_time,0); + } + break; + case ActuatorMoveUp: + if (count_time>=(moveuptime+MovingUpTime)) + { + Trigger_Head_Actuators_Stub(ACTIN, false, false); + ActuatorLocating = ActuatorLocated; + ReportWithPackageFilter(ThreadFilter,"actuators relocation",__FILE__,msec_millisecondCounter,ActuatorLocating,RpMessage,count_time,0); + } + break; + case ActuatorLocated: + if (SafeRemoveControlCallback(ActuatorLocatingControl, HeadCard_Actuators_Relocate_callback )==OK) + ActuatorLocatingControl = 0xFF; + else + Report("Remove control callback failed",__FILE__,__LINE__,(int)ActuatorLocatingControl,RpWarning,(int)HeadCard_Actuators_Relocate_callback,0); + ReportWithPackageFilter(ThreadFilter,"actuators relocation",__FILE__,msec_millisecondCounter,ActuatorLocating,RpMessage,count_time,0); + break; + default: + break; + } + return ActuatorLocatingControl; +} +uint32_t HeadCard_Actuators_Relocate(void) +{ + if ((ActuatorLocating == ActuatorIdle)||(ActuatorLocating == ActuatorLocated)) + { + ActuatorLocating = ActuatorMoveDown; + count_time = 0; + ReportWithPackageFilter(ThreadFilter,"actuators relocation",__FILE__,msec_millisecondCounter,ActuatorLocating,RpMessage,count_time,0); + ActuatorLocatingControl = AddControlCallback("Actuator Location", HeadCard_Actuators_Relocate_callback, eOneMillisecond, TemplateDataReadCBFunction,0,0, 0 ); + } + return ActuatorLocatingControl; +} + + diff --git a/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/Head_Card/IO_Ports/Head_IO.h b/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/Head_Card/IO_Ports/Head_IO.h index d927fdaa0..33187d1f6 100644 --- a/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/Head_Card/IO_Ports/Head_IO.h +++ b/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/Head_Card/IO_Ports/Head_IO.h @@ -198,6 +198,7 @@ uint32_t HeadCard_Valve_Control(bool Direction); uint32_t HeadCard_Actuators_Stub(ACTUATORS Act_ID, bool Enable, bool Direction); +uint32_t HeadCard_Actuators_Relocate(void); //------------------------------ uint8_t Head_Test_IO(); 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 c51ff6d96..32d82f8af 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 @@ -407,7 +407,7 @@ void WHS_Set_IFS_Clearing_Suction (int midtank) } #define MAX_ALLOWED_BLOWER_VOLTAGE 4300 -#define MIN_ALLOWED_BLOWER_VOLTAGE 2000 +#define MIN_ALLOWED_BLOWER_VOLTAGE 2400 bool BlowerAlarmActive = false; void SendLimitedBlowerControl(int mV) { diff --git a/Software/Embedded_SW/Embedded/Modules/AlarmHandling/AlarmHandling.c b/Software/Embedded_SW/Embedded/Modules/AlarmHandling/AlarmHandling.c index 1c2b6662d..fa835ee2e 100644 --- a/Software/Embedded_SW/Embedded/Modules/AlarmHandling/AlarmHandling.c +++ b/Software/Embedded_SW/Embedded/Modules/AlarmHandling/AlarmHandling.c @@ -893,7 +893,7 @@ JobEndReasonEnum AlarmHandlingPrepareJob(void *CurrentJob) if (AlarmItem[Alarm_i].AlarmSource == ALARM_SOURCE_TYPE__CoversAlarm) { - if (AlarmState[Alarm_i].Status == true) + if ((AlarmState[Alarm_i].Status == true)&&(AlarmItem[Alarm_i].Severity == DEBUG_LOG_CATEGORY__Error)) { FoundReason = JOB_TAMPER_ALARM; ReportWithPackageFilter(AlarmFilter,"tamper alarm preventing job", __FILE__,__LINE__,AlarmItem[Alarm_i].EventType, AlarmItem[Alarm_i].Severity, AlarmItem[Alarm_i].DeviceId, 0); diff --git a/Software/Embedded_SW/Embedded/Modules/Diagnostics/Diagnostics.c b/Software/Embedded_SW/Embedded/Modules/Diagnostics/Diagnostics.c index 8e01fe18e..421206b45 100644 --- a/Software/Embedded_SW/Embedded/Modules/Diagnostics/Diagnostics.c +++ b/Software/Embedded_SW/Embedded/Modules/Diagnostics/Diagnostics.c @@ -864,10 +864,10 @@ void DiagnosticOneSecCollection(void) tempFlow = HeadFlowMeter; }*/ WasteLevel = GetWHSWasteTankLevelMiliLiter()/1000;//change from ml to litter - static double InitCounter = 0; - if (GetMachineState()=MACHINE_STATE_WAIT_FOR_COOLER)) { - InitCounter+=1.0; + InitCounter-=1.0; DiagnosticsMonitor.chillertemperature = &InitCounter; } @@ -1058,7 +1058,8 @@ void SendDiagnostics(void) DiagnosticsMonitor.dancer2angle = dancer2angle; DiagnosticsMonitor.dancer3angle = dancer3angle; */ - if ((JobIsActive())&&(DiagnosticMode >= Diagnostic_Extended_Mode)) +// if ((JobIsActive())&&(DiagnosticMode >= Diagnostic_Extended_Mode)) + if (DiagnosticMode >= Diagnostic_Extended_Mode) { DiagnosticsMonitor.n_dancer1angle = DancerCounterIndex[0]; DiagnosticsMonitor.n_dancer2angle = DancerCounterIndex[1]; diff --git a/Software/Embedded_SW/Embedded/Modules/General/GeneralHardware.c b/Software/Embedded_SW/Embedded/Modules/General/GeneralHardware.c index bec8fc53f..27ed8d0e9 100644 --- a/Software/Embedded_SW/Embedded/Modules/General/GeneralHardware.c +++ b/Software/Embedded_SW/Embedded/Modules/General/GeneralHardware.c @@ -51,7 +51,7 @@ #include "Drivers/I2C_Communication/Dispenser_Card/EEPROM/Dispenser_EEPROM.h" #include #include "Modules/General/buttons.h" -#include "Modules/Waste/Waste_ex.h" +#include "Modules/Waste/Waste.h" #include "Drivers/I2C_Communication/Main_Board_EEPROM/Main_EEPROM.h" #include #include @@ -165,8 +165,12 @@ uint32_t HWConfigurationInit(void) #ifndef DISPESER_TEST if (WHS_Type == WHS_TYPE_NEW) newWHS_init(); + //WHS_init(); // remove call to old WHS #endif + + // Waste Init (WHS) Waste_Init(); + ADC_MUX_Init(); GeneralHwReady = true; diff --git a/Software/Embedded_SW/Embedded/Modules/General/Safety.c b/Software/Embedded_SW/Embedded/Modules/General/Safety.c index 89ac8d020..099ac1769 100644 --- a/Software/Embedded_SW/Embedded/Modules/General/Safety.c +++ b/Software/Embedded_SW/Embedded/Modules/General/Safety.c @@ -46,7 +46,7 @@ uint32_t Safety_Main_State(uint32_t IfIndex, uint32_t BusyFlag) bool mDrierDoorAlarmState = false; bool mAirFlowAlarmState = false; bool mAirFilterAlarmState = false; - //bool mWasteOverflowAlarmState = false; + bool mWasteOverflowAlarmState = false; #ifdef CONTROL_DEBUG uint32_t tempp,tempq,delta; uint32_t sys_ticks_start = msec_millisecondCounter,sys_ticks_end,max = 0,dev = 0; @@ -91,6 +91,16 @@ uint32_t Safety_Main_State(uint32_t IfIndex, uint32_t BusyFlag) mDrierDoorAlarmState = true; DrierDoorAlarmState = true; } + else + { + //if (WHS_GPI_WASTE_OVERFULL()) - cannot read this switch + { + //report and handle waste overflow + AlarmHandlingSetAlarm(EVENT_TYPE__CHILLER_DRY_CONTACT, true); + mWasteOverflowAlarmState = true; + WasteOverflowAlarmState = true; + } + } } } @@ -224,6 +234,12 @@ uint32_t Safety_Main_State(uint32_t IfIndex, uint32_t BusyFlag) AlarmHandlingSetAlarm(EVENT_TYPE__AIR_FILTER_NOT_INSTALLED, false); AirFilterAlarmState = mAirFilterAlarmState; } + if ((mWasteOverflowAlarmState != WasteOverflowAlarmState)|| (mWasteOverflowAlarmState == false)) + { + //alarm went off + AlarmHandlingSetAlarm(EVENT_TYPE__WASTE_CONTAINER_OVERFLOW, false); + WasteOverflowAlarmState = mWasteOverflowAlarmState; + } #ifdef CONTROL_DEBUG tempq = HibernateRTCSSGet(); if (tempq < tempp) diff --git a/Software/Embedded_SW/Embedded/Modules/General/buttons.h b/Software/Embedded_SW/Embedded/Modules/General/buttons.h index 646861bc7..6a15d3765 100644 --- a/Software/Embedded_SW/Embedded/Modules/General/buttons.h +++ b/Software/Embedded_SW/Embedded/Modules/General/buttons.h @@ -59,7 +59,6 @@ uint32_t Buttons_Init(void); uint32_t Button_load_Init(void); uint32_t Button_JOG_Init(void); bool SetPowerMachineState(PBmachineState state); -void Ink_Cart_Led(); diff --git a/Software/Embedded_SW/Embedded/Modules/IDS/IDS_print.c b/Software/Embedded_SW/Embedded/Modules/IDS/IDS_print.c index c444c7017..ac9bd0deb 100644 --- a/Software/Embedded_SW/Embedded/Modules/IDS/IDS_print.c +++ b/Software/Embedded_SW/Embedded/Modules/IDS/IDS_print.c @@ -43,6 +43,8 @@ typedef struct HardwarePidControl *DispensersControl; HardwarePidControl DispensersCtrl[MAX_SYSTEM_DISPENSERS]; #define MAX_DYE_DISPENSERS 6 +#define IDS_PRESEGMENT_TIME_STEP 50 + int32_t DispenserSamples[MAX_SYSTEM_DISPENSERS][MAX_CONTROL_SAMPLES] = {0}; int DispenserSamplePointer[MAX_SYSTEM_DISPENSERS] = {0}; double DispenserNormalizedErrorCoEfficient[MAX_SYSTEM_DISPENSERS] = {0}; @@ -117,8 +119,9 @@ void IDS_Dispenser_SetPreSegmentWFCFValues(double dispenserpresegmentwfcf, doubl LeftRockerSpeed = ids_leftcleaningmotorspeed; if ( ids_rightcleaningmotorspeed) RightRockerSpeed = ids_rightcleaningmotorspeed; - Report("IDS_Dispenser_SetPreSegmentCleaningValues ",__FILE__,__LINE__,CleaningDispenserSpeed,RpWarning,(int)LeftRockerSpeed,0); + Report("IDS_Dispenser_SetPreSegmentCleaningValues ",__FILE__,__LINE__,RightRockerSpeed,RpWarning,(int)LeftRockerSpeed,0); Report("IDS_Dispenser_SetPreSegmentCleaningValues ",__FILE__,__LINE__,InterSegmentStartSprayCleaner,RpWarning,(int)InterSegmentCenterRockers,0); + Report("IDS_Dispenser actuator times ",__FILE__,(int)LeftRockerSpeed/100*IDS_PRESEGMENT_TIME_STEP,(int)LeftRockerSpeed%100*IDS_PRESEGMENT_TIME_STEP,RpWarning,(int)RightRockerSpeed*IDS_PRESEGMENT_TIME_STEP,0); } @@ -1034,7 +1037,6 @@ uint32_t InactiveDispenserHome(uint32_t DispenserId, uint32_t ReadValue) //******************************************************************************************************************** -#define IDS_PRESEGMENT_TIME_STEP 50 uint32_t IDSPreSegmentStateCallbackRunner(uint32_t IfIndex, uint32_t ReadValue) { JobDispenser **Dispensers; diff --git a/Software/Embedded_SW/Embedded/Modules/Stubs_Handler/Progress.c b/Software/Embedded_SW/Embedded/Modules/Stubs_Handler/Progress.c index e5afba3b9..bfea7b13b 100644 --- a/Software/Embedded_SW/Embedded/Modules/Stubs_Handler/Progress.c +++ b/Software/Embedded_SW/Embedded/Modules/Stubs_Handler/Progress.c @@ -526,6 +526,14 @@ void Stub_ProgressRequest(MessageContainer* requestContainer) response.has_progress = true; } else + if(request->amount == 0xAD9) //halt + { + LOG_ERROR(request->delay,"halt"); + memset (0,0,100000); + response.progress = IgnoreConeMissing; + 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_print.c b/Software/Embedded_SW/Embedded/Modules/Thread/Thread_print.c index 42a56ae8a..1c52a9b68 100644 --- a/Software/Embedded_SW/Embedded/Modules/Thread/Thread_print.c +++ b/Software/Embedded_SW/Embedded/Modules/Thread/Thread_print.c @@ -352,9 +352,9 @@ uint32_t PoolerThreadLengthCBFunction(uint32_t IfIndex, uint32_t ReadValue) } if ((CurrentProcessedLength>=CurrentRequestedLength )&&(CurrentRequestedLength > 0.0)) { - usnprintf(Lenstr, 100, "Total processed length: Feeder: %d Pooler %d",(int)TotalProcessedLength,(int)PoolerTotalProcessedLength); + usnprintf(Lenstr, 100, "Total processed length: Feeder: %d Puller %d",(int)TotalProcessedLength,(int)PoolerTotalProcessedLength); SendJobProgress(0.0,0,false, Lenstr); - ReportWithPackageFilter(ThreadFilter,Lenstr,__FILE__,__LINE__,(int)TotalProcessedLength,RpWarning,(int)PoolerTotalProcessedLength,0); + ReportWithPackageFilter(ThreadFilter,Lenstr,__FILE__,__LINE__,(int)(TotalProcessedLength*100),RpWarning,(int)(PoolerTotalProcessedLength*100),0); // segment/intersegment/distance to spool finished if (ProcessedLengthFuncPtr) ProcessedLengthFuncPtr(); @@ -696,18 +696,19 @@ uint32_t ThreadControlCBFunction(uint32_t IfIndex, uint32_t ReadValue) }*`/ }*/ calculated_speed = (1-MotorControlConfig[index].m_calculatedError)*OriginalMotorSpd_2PPS[index]; + calculated_speed = calculated_speed*InitialDryerSpeed/OriginalMotorSpd_2PPS[DRYER_MOTOR]; //calculated_speed = (1-MotorControlConfig[index].m_calculatedError)*CurrentControlledSpeed[index]; - //if (JobCounter % eHundredMillisecond == 50) - if (FirstCalcInJob == true) + if (0)//(JobCounter % 1000 == 0) + //if (JobCounter < 100)//(FirstCalcInJob == true) { - if (index == POOLER_MOTOR) + if (index == FEEDER_MOTOR) { - FirstCalcInJob = false; - len = usnprintf(TMessage, 150, "read %d avg %d error(6) %d integral(9) %d,delta(9) %d, calc(3) %d speed %d", - ReadValue,avreageSampleValue,(int)(MotorControlConfig[index].m_mesuredParam*1000000), + // FirstCalcInJob = false; + len = usnprintf(TMessage, 150, "read %d avg %d error(6) %d integral(9) %d,delta(9) %d, calc(3) %d speed %d %d", + TranslatedReadValue,avreageSampleValue,(int)(MotorControlConfig[index].m_mesuredParam*1000000), (int)(MotorControlConfig[index].m_integral*1000000000),(int)((MotorControlConfig[index].m_mesuredParam*MotorControlConfig[index].m_params.dt)*1000000000), - (int)(MotorControlConfig[index].m_calculatedError*1000),(int)calculated_speed); - ReportWithPackageFilter(ThreadFilter,TMessage,__FILE__,__LINE__,DancerId,RpError,ReadValue,0); + (int)(MotorControlConfig[index].m_calculatedError*1000),(int)calculated_speed, (int)(InitialDryerSpeed*100/OriginalMotorSpd_2PPS[DRYER_MOTOR])); + ReportWithPackageFilter(ThreadFilter,TMessage,__FILE__,MotorSamplePointer[index],JobCounter,RpError,ReadValue,0); } } @@ -720,6 +721,11 @@ uint32_t ThreadControlCBFunction(uint32_t IfIndex, uint32_t ReadValue) { if (calculated_speed>5.0) { + if (calculated_speed>(CurrentControlledSpeed[index]+100)) + { + ReportWithPackageFilter(ThreadFilter,"limit acceleration",__FILE__,calculated_speed,CurrentControlledSpeed[index],RpError,CurrentControlledSpeed[index]+100,0); + calculated_speed=CurrentControlledSpeed[index]+100; + } CurrentControlledSpeed[index] = calculated_speed; MotorSetSpeed(ThreadMotorIdToMotorId[index], calculated_speed); } @@ -845,6 +851,7 @@ uint32_t Release_Right_TFU_Tension() return status; } int SecondFeederCorrection = 4; +int PrepareWaitCount = 0; uint32_t Adjust_Right_TFU_Tension_2nd_Callback(uint32_t MotorId, uint32_t ReadValue) { MotorStop (HARDWARE_MOTOR_TYPE__MOTO_RDANCER,Soft_Stop); //per L6470 errata between mov and run commands @@ -854,6 +861,18 @@ uint32_t Adjust_Right_TFU_Tension_2nd_Callback(uint32_t MotorId, uint32_t ReadVa Report("release tension - job aborted",__FILE__,__LINE__,MotorId,RpMessage,0,0); Release_Right_TFU_Tension(); } + if (PrepareWaitCount) + { + ReportWithPackageFilter(ThreadFilter,"ThreadPrepare_TensionCallback",__FILE__,__LINE__,2,RpWarning,PrepareWaitCount,0); + PrepareWaitCount--; + } + if ((PrepareWaitCount == 0)&&(PrepareState == true)) + { + PrepareState = false; + ReportWithPackageFilter(ThreadFilter,"ThreadPrepare_TensionCallback Prepare Ready",__FILE__,__LINE__,2,RpWarning,PrepareWaitCount,0); + PrepareReady(Module_Thread,ModuleDone); + } + return OK; } uint32_t Adjust_Right_TFU_Tension_Callback(uint32_t MotorId, uint32_t ReadValue) @@ -869,16 +888,16 @@ uint32_t Adjust_Right_TFU_Tension(double tension) uint32_t status = OK; if (tension > 0.5) //0 = lower position, 1 = high position { + //PrepareWaitCount++; if (FPGA_Read_limit_Switches(GPI_LS_RDANCER_UP) == NO_LIMIT) { - MotorMovetoLimitSwitch (HARDWARE_MOTOR_TYPE__MOTO_RDANCER,1-MotorsCfg[HARDWARE_MOTOR_TYPE__MOTO_RDANCER].directionthreadwize, 40, GPI_LS_RDANCER_UP, Adjust_Right_TFU_Tension_Callback,15000); + MotorMovetoLimitSwitch (HARDWARE_MOTOR_TYPE__MOTO_RDANCER,1-MotorsCfg[HARDWARE_MOTOR_TYPE__MOTO_RDANCER].directionthreadwize, 15, GPI_LS_RDANCER_UP, Adjust_Right_TFU_Tension_Callback,15000); Report("Adjust_Right_TFU_Tension",__FILE__,1-MotorsCfg[HARDWARE_MOTOR_TYPE__MOTO_RDANCER].directionthreadwize,HARDWARE_MOTOR_TYPE__MOTO_RDANCER,RpMessage,GPI_LS_RDANCER_UP,0); } } return status; } -int PrepareWaitCount = 0; uint32_t ThreadPrepare_TensionCallback (int DancerId, double tension) { if (PrepareWaitCount) @@ -886,7 +905,7 @@ uint32_t ThreadPrepare_TensionCallback (int DancerId, double tension) ReportWithPackageFilter(ThreadFilter,"ThreadPrepare_TensionCallback",__FILE__,__LINE__,DancerId,RpWarning,PrepareWaitCount,0); PrepareWaitCount--; } - if (PrepareWaitCount == 0) + if ((PrepareWaitCount == 0)&&(PrepareState == true)) { PrepareState = false; ReportWithPackageFilter(ThreadFilter,"ThreadPrepare_TensionCallback Prepare Ready",__FILE__,__LINE__,DancerId,RpWarning,PrepareWaitCount,0); @@ -1046,71 +1065,73 @@ uint32_t ThreadPrepareState(void *JobDetails) { HW_Motor_Id = ThreadMotorIdToMotorId[Motor_i]; Pid_Id = Motor_i;/*ThreadMotorIdToControlId[Motor_i];*/ - MotorControlConfig[Motor_i].m_params.MAX = 1; - MotorControlConfig[Motor_i].m_params.MIN = MotorsControl[Pid_Id].outputproportionalpowerlimit*-1; - MotorControlConfig[Motor_i].m_params.Kd = MotorsControl[Pid_Id].derivativetime; - MotorControlConfig[Motor_i].m_params.Kp = MotorsControl[Pid_Id].proportionalgain; - MotorControlConfig[Motor_i].m_params.Ki = MotorsControl[Pid_Id].integraltime; - MotorControlConfig[Motor_i].m_params.IntegralErrorMultiplier = MotorsControl[Pid_Id].setpointramprateorsoftstartramp; - MotorControlConfig[Motor_i].m_params.ProportionalErrorMultiplier = MotorsControl[Pid_Id].outputonoffhysteresisvalue; - MotorControlConfig[Motor_i].m_params.epsilon = MotorsControl[Pid_Id].epsilon; - MotorControlConfig[Motor_i].m_params.dt = MotorsControl[Pid_Id].controloutputtype; - MotorControlConfig[Motor_i].m_ingnoreValue = MotorsControl[Pid_Id].sensorcorrectionadjustment; // the minimal change required to change the motor speed in pulses - MotorControlConfig[Motor_i].m_calculatedError = 0; - MotorControlConfig[Motor_i].m_integral = 0; - MotorControlConfig[Motor_i].m_isEnabled = true; - MotorControlConfig[Motor_i].m_isReady = true; - MotorControlConfig[Motor_i].m_mesuredParam = 0; - MotorControlConfig[Motor_i].m_preError = 0; - MotorControlConfig[Motor_i].m_SetParam = 0;//need to update SetParams on presegment stage - - HandleJobThreadControlParameters(JobTicket->threadparameters); //OVERRIDES CONFIGURATION PARAMETERS!!! - - temp_dt = MotorControlConfig[Motor_i].m_params.dt/0.001; - MotorTiming[Motor_i] = (int)temp_dt; - if (MotorTiming[Motor_i]) - { - MotorTimer[Motor_i] = MotorTiming[Motor_i]-1; - ReportWithPackageFilter(ThreadFilter,"MotorTiming",__FILE__,Motor_i,MotorTiming[Motor_i],RpWarning,MotorTimer[Motor_i],0); - } + MotorControlConfig[Motor_i].m_params.MAX = 1; + MotorControlConfig[Motor_i].m_params.MIN = MotorsControl[Pid_Id].outputproportionalpowerlimit*-1; + MotorControlConfig[Motor_i].m_params.Kd = MotorsControl[Pid_Id].derivativetime; + MotorControlConfig[Motor_i].m_params.Kp = MotorsControl[Pid_Id].proportionalgain; + MotorControlConfig[Motor_i].m_params.Ki = MotorsControl[Pid_Id].integraltime; + MotorControlConfig[Motor_i].m_params.IntegralErrorMultiplier = MotorsControl[Pid_Id].setpointramprateorsoftstartramp; + MotorControlConfig[Motor_i].m_params.ProportionalErrorMultiplier = MotorsControl[Pid_Id].outputonoffhysteresisvalue; + MotorControlConfig[Motor_i].m_params.epsilon = MotorsControl[Pid_Id].epsilon; + MotorControlConfig[Motor_i].m_params.dt = MotorsControl[Pid_Id].controloutputtype; + MotorControlConfig[Motor_i].m_ingnoreValue = MotorsControl[Pid_Id].sensorcorrectionadjustment; // the minimal change required to change the motor speed in pulses + MotorControlConfig[Motor_i].m_calculatedError = 0; + MotorControlConfig[Motor_i].m_integral = 0; + MotorControlConfig[Motor_i].m_isEnabled = true; + MotorControlConfig[Motor_i].m_isReady = true; + MotorControlConfig[Motor_i].m_mesuredParam = 0; + MotorControlConfig[Motor_i].m_preError = 0; + MotorControlConfig[Motor_i].m_SetParam = 0;//need to update SetParams on presegment stage + + HandleJobThreadControlParameters(JobTicket->threadparameters); //OVERRIDES CONFIGURATION PARAMETERS!!! + + temp_dt = MotorControlConfig[Motor_i].m_params.dt/0.001; + MotorTiming[Motor_i] = (int)temp_dt; + if (MotorTiming[Motor_i]) + { + MotorTimer[Motor_i] = MotorTiming[Motor_i]-1; + ReportWithPackageFilter(ThreadFilter,"MotorTiming",__FILE__,Motor_i,MotorTiming[Motor_i],RpWarning,MotorTimer[Motor_i],0); + } ////////////////////////////////////////////////// - for (i = 0;i < (int)MotorsControl[Motor_i].pvinputfilterfactormode; i++) - { - //if (Motor_i == DRYER_MOTOR) // dryer motor is speed controlled. later a speed sensor will be utilized, but for now it will not be controlled - MotorSamples[Motor_i][i] = 0; - // else if ((Motor_i == POOLER_MOTOR)||(Motor_i == FEEDER_MOTOR)) - // MotorSamples[Motor_i][i] = DancersCfg[ThreadMotorIdToDancerId[Motor_i]].zeropoint; - //MotorSpeedSamples[Motor_i][i] = 0; - } - MotorSamplePointer[Motor_i] = 0; + for (i = 0;i < (int)MotorsControl[Motor_i].pvinputfilterfactormode; i++) + { + //if (Motor_i == DRYER_MOTOR) // dryer motor is speed controlled. later a speed sensor will be utilized, but for now it will not be controlled + MotorSamples[Motor_i][i] = 0; + if (Motor_i == FEEDER_MOTOR) + MotorSamples[Motor_i][i] = -500; + // else if ((Motor_i == POOLER_MOTOR)||(Motor_i == FEEDER_MOTOR)) + // MotorSamples[Motor_i][i] = DancersCfg[ThreadMotorIdToDancerId[Motor_i]].zeropoint; + //MotorSpeedSamples[Motor_i][i] = 0; + } + MotorSamplePointer[Motor_i] = 0; ///////////////////////////////////////////////////// - MotorSetDirection((TimerMotors_t)HW_Motor_Id,MotorsCfg[HW_Motor_Id].directionthreadwize); + MotorSetDirection((TimerMotors_t)HW_Motor_Id,MotorsCfg[HW_Motor_Id].directionthreadwize); - if (Motor_i == FEEDER_MOTOR) // dryer motor is speed controlled. later a speed sensor will be utilized, but for now it will not be controlled + if (Motor_i == FEEDER_MOTOR) // dryer motor is speed controlled. later a speed sensor will be utilized, but for now it will not be controlled + { + ReportWithPackageFilter(ThreadFilter,"Feeder Control",__FILE__,Motor_i,MotorControlConfig[Motor_i].m_params.Kp,RpWarning,MotorControlConfig[Motor_i].m_params.Ki,0); + if (SpeedControlId != 0xFF) { - ReportWithPackageFilter(ThreadFilter,"Feeder Control",__FILE__,Motor_i,MotorControlConfig[Motor_i].m_params.Kp,RpWarning,MotorControlConfig[Motor_i].m_params.Ki,0); - if (SpeedControlId != 0xFF) - { - RemoveControlCallback(SpeedControlId,ThreadLengthCBFunction); - SpeedControlId = 0xFF; - } - //SetMotHome(ThreadMotorIdToMotorId[Motor_i]); - LengthCalculationMultiplier = (MotorsCfg[ThreadMotorIdToMotorId[Motor_i]].pulleyradius*2*PI)/(MotorsCfg[ThreadMotorIdToMotorId[Motor_i]].pulseperround*MotorsCfg[ThreadMotorIdToMotorId[Motor_i]].microstep); - SpeedControlId = AddControlCallback(NULL,ThreadLengthCBFunction, eHundredMillisecond,MotorGetPositionFromFPGA,(IfTypeThread*0x100+Motor_i),ThreadMotorIdToMotorId[Motor_i],Motor_i); + RemoveControlCallback(SpeedControlId,ThreadLengthCBFunction); + SpeedControlId = 0xFF; } - if (Motor_i == POOLER_MOTOR) // dryer motor is speed controlled. later a speed sensor will be utilized, but for now it will not be controlled + //SetMotHome(ThreadMotorIdToMotorId[Motor_i]); + LengthCalculationMultiplier = (MotorsCfg[ThreadMotorIdToMotorId[Motor_i]].pulleyradius*2*PI)/(MotorsCfg[ThreadMotorIdToMotorId[Motor_i]].pulseperround*MotorsCfg[ThreadMotorIdToMotorId[Motor_i]].microstep); + SpeedControlId = AddControlCallback(NULL,ThreadLengthCBFunction, eHundredMillisecond,MotorGetPositionFromFPGA,(IfTypeThread*0x100+Motor_i),ThreadMotorIdToMotorId[Motor_i],Motor_i); + } + if (Motor_i == POOLER_MOTOR) // dryer motor is speed controlled. later a speed sensor will be utilized, but for now it will not be controlled + { + ReportWithPackageFilter(ThreadFilter,"Puller Control",__FILE__,Motor_i,MotorControlConfig[Motor_i].m_params.Kp,RpWarning,MotorControlConfig[Motor_i].m_params.Ki,0); + if (PoolerSpeedControlId != 0xFF) { - ReportWithPackageFilter(ThreadFilter,"Puller Control",__FILE__,Motor_i,MotorControlConfig[Motor_i].m_params.Kp,RpWarning,MotorControlConfig[Motor_i].m_params.Ki,0); - if (PoolerSpeedControlId != 0xFF) - { - if (RemoveControlCallback(PoolerSpeedControlId,PoolerThreadLengthCBFunction)!=OK) - ReportWithPackageFilter(ThreadFilter,"Remove Control Failed.",__FILE__,__LINE__,(int)Motor_i,RpError,(int)PoolerSpeedControlId,0); - PoolerSpeedControlId = 0xFF; - } - //SetMotHome(ThreadMotorIdToMotorId[Motor_i]); - PoolerLengthCalculationMultiplier = (MotorsCfg[ThreadMotorIdToMotorId[Motor_i]].pulleyradius*2*PI)/(MotorsCfg[ThreadMotorIdToMotorId[Motor_i]].pulseperround*MotorsCfg[ThreadMotorIdToMotorId[Motor_i]].microstep); - PoolerSpeedControlId = AddControlCallback(NULL,PoolerThreadLengthCBFunction, eHundredMillisecond,MotorGetPositionFromFPGA,(IfTypeThread*0x100+Motor_i),ThreadMotorIdToMotorId[Motor_i],Motor_i); + if (RemoveControlCallback(PoolerSpeedControlId,PoolerThreadLengthCBFunction)!=OK) + ReportWithPackageFilter(ThreadFilter,"Remove Control Failed.",__FILE__,__LINE__,(int)Motor_i,RpError,(int)PoolerSpeedControlId,0); + PoolerSpeedControlId = 0xFF; } + //SetMotHome(ThreadMotorIdToMotorId[Motor_i]); + PoolerLengthCalculationMultiplier = (MotorsCfg[ThreadMotorIdToMotorId[Motor_i]].pulleyradius*2*PI)/(MotorsCfg[ThreadMotorIdToMotorId[Motor_i]].pulseperround*MotorsCfg[ThreadMotorIdToMotorId[Motor_i]].microstep); + PoolerSpeedControlId = AddControlCallback(NULL,PoolerThreadLengthCBFunction, eHundredMillisecond,MotorGetPositionFromFPGA,(IfTypeThread*0x100+Motor_i),ThreadMotorIdToMotorId[Motor_i],Motor_i); + } if (Motor_i == FEEDER_MOTOR) // dryer motor is speed controlled. later a speed sensor will be utilized, but for now it will not be controlled { if (ControlIdtoMotorId[Motor_i] != 0xFF) @@ -1152,10 +1173,6 @@ uint32_t ThreadPrepareState(void *JobDetails) ControlIdtoMotorId[Motor_i] = AddControlCallback(NULL,ThreadControlCBFunction, eOneMillisecond,Control_Read_Dancer_Position,(IfTypeThread*0x100+Motor_i),ThreadMotorIdToDancerId[Motor_i],Motor_i); #endif } -// if (HW_Motor_Id == HARDWARE_MOTOR_TYPE__MOTO_DRYER_DRIVING) // dryer motor is speed controlled. later a speed sensor will be utilized, but for now it will not be controlled -// AddControlCallback(ThreadSpeedControlCBFunction, eOneMillisecond,TemplateDataReadCBFunction,(IfTypeThread*0x100+Motor_i),ThreadMotorIdToMotorId[Motor_i],0); - if (Motor_i == ThreadMotorIdToMotorId[DRYER_MOTOR]) // dryer motor is speed controlled. later a speed sensor will be utilized, but for now it will not be controlled - continue; } #ifdef TEST_PID_THREAD @@ -1382,7 +1399,7 @@ char Endstr[150]; int Motor_i; ThreadControlActive = false; uint32_t status = OK; - usnprintf(Endstr, 100, "Total _processed length: Feeder: %d Pooler %d",(int)TotalProcessedLength,(int)PoolerTotalProcessedLength); + usnprintf(Endstr, 100, "Total _processed length: Feeder: %d Puller %d",(int)TotalProcessedLength,(int)PoolerTotalProcessedLength); SendJobProgress(0.0,0,false, Endstr); ReportWithPackageFilter(ThreadFilter,Endstr,__FILE__,__LINE__,(int)TotalProcessedLength,RpWarning,(int)PoolerTotalProcessedLength,0); diff --git a/Software/Embedded_SW/Embedded/StateMachines/Initialization/PowerOffSequence.c b/Software/Embedded_SW/Embedded/StateMachines/Initialization/PowerOffSequence.c index 169772480..7cec83bd8 100644 --- a/Software/Embedded_SW/Embedded/StateMachines/Initialization/PowerOffSequence.c +++ b/Software/Embedded_SW/Embedded/StateMachines/Initialization/PowerOffSequence.c @@ -34,6 +34,7 @@ #include "drivers/I2C_Communication/ADC_MUX/ADC_MUX.h" #include "drivers/Heater/TemperatureSensor.h" #include "drivers/Valves/Valve.h" +#include #include #include "StateMachines/Printing/PrintingSTM.h" @@ -492,6 +493,8 @@ uint32_t PowerOffTurnOffBlower(void) uint32_t PowerOffPowerOff(void) { int i; + Task_setPri (I2C_Task_Handle,-1); + for (i = 0;i<10;i++) { REPORT_MSG (10-i, "Power off in x seconds"); -- cgit v1.3.1 From 0a14332aba78d4895f60af38fbf8187503149e7e Mon Sep 17 00:00:00 2001 From: Avi Levkovich Date: Wed, 15 Jul 2020 16:31:46 +0300 Subject: fix bug - reading the head covers LS via i2c i/o --- Software/Embedded_SW/Embedded/DataDef.h | 2 ++ .../Embedded/Drivers/I2C_Communication/Head_Card/IO_Ports/Head_IO.c | 4 ++-- Software/Embedded_SW/Embedded/Drivers/I2C_Communication/I2C_Task.c | 1 + .../Embedded/Drivers/I2C_Communication/WHS_Card/EEPROM/WHS_EEPROM.c | 2 +- 4 files changed, 6 insertions(+), 3 deletions(-) diff --git a/Software/Embedded_SW/Embedded/DataDef.h b/Software/Embedded_SW/Embedded/DataDef.h index 4b6bdc129..0e38c6e2e 100644 --- a/Software/Embedded_SW/Embedded/DataDef.h +++ b/Software/Embedded_SW/Embedded/DataDef.h @@ -68,6 +68,8 @@ enum #define ENABLE 1 #define DISABLE 0 +#define DONTCARE 0 + //Valves Directions: #define MidTank_Dispenser 0 #define Dispenser_Mixer 1 diff --git a/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/Head_Card/IO_Ports/Head_IO.c b/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/Head_Card/IO_Ports/Head_IO.c index e8f41eaac..d5f049128 100644 --- a/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/Head_Card/IO_Ports/Head_IO.c +++ b/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/Head_Card/IO_Ports/Head_IO.c @@ -288,7 +288,7 @@ uint32_t Head_Read_IO_Reg(uint8_t TCA9555_ADDRESS, uint8_t Byte) //LOW/HIGH/LOW_ Head_I2C_EXP4_0x46.uchar[0] &= BIT7;//ACT_DIR Head_I2C_EXP4_0x46.uchar[0] |= Read_Buf[0]; Head_I2C_EXP4_0x46.uchar[1] &= (BIT2 | BIT3);//ACTIN_ON ACTOT_ON - Head_I2C_EXP4_0x46.uchar[1] |= Read_Buf[0]; + Head_I2C_EXP4_0x46.uchar[1] |= Read_Buf[1]; } else if(Byte == LOW) @@ -520,7 +520,7 @@ uint32_t HeadCard_Actuators_Control(ACTUATORS Act_ID, bool Direction) } -uint32_t HeadCard_Actuators_Stub(ACTUATORS Act_ID, bool Enable, bool Direction) +uint32_t HeadCard_Actuators_Stub(ACTUATORS Act_ID, bool Enable, bool Direction)//ENABLE/DISABLE, DOWN/UP/DONTCARE { uint32_t status = OK; 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 708c4dde5..c06e8f4df 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 #include "ADC_MUX/ADC_MUX.h" #include "modules/ids/ids_ex.h" +#include extern Semaphore_Handle I2C_Sem; Task_Handle I2C_Task_Handle; 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 74083e67a..0b859cc79 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 @@ -24,7 +24,7 @@ //uint32_t I2C_WHS_EEPROM_SLAVE_ADD = 0xA0; WHS_EEPROM WHS_Eeprom; -uint8_t WHS_Type = WHS_TYPE_UNKNOWN; +WHS_TYPE WHS_Type = WHS_TYPE_UNKNOWN; #define MAX_ALLOWS_PAGE_WRITE 256 #define MIN_READ_BYTE 1 -- cgit v1.3.1 From 8a8b3ecce59cad952966d5f79347c5b1a3ce361c Mon Sep 17 00:00:00 2001 From: Shlomo Hecht Date: Wed, 15 Jul 2020 17:02:44 +0300 Subject: prevent turning off the blower (#3166). fix ink calculation (resolves #3174, #2956, #3140, #2375) feeder start jumps (resolves #3163, #3104) --- .../Drivers/I2C_Communication/DAC/Blower.c | 2 +- .../Embedded_SW/Embedded/Modules/General/process.c | 2 +- .../Embedded/Modules/IDS/IDS_dispenser.c | 5 +++-- .../Initialization/PowerOffSequence.c | 1 + .../stubs/cleaning sequence disable.cs | 24 ++++++++++++++++++++++ 5 files changed, 30 insertions(+), 4 deletions(-) create mode 100644 Software/Stubs Collection/stubs/cleaning sequence disable.cs diff --git a/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/DAC/Blower.c b/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/DAC/Blower.c index 31cf5d0da..57b57a41d 100644 --- a/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/DAC/Blower.c +++ b/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/DAC/Blower.c @@ -200,7 +200,7 @@ uint32_t Turn_the_Blower_Off() } else //new WHS { - Trigger_SetWHSBlowerVoltage(0); + //Trigger_SetWHSBlowerVoltage(0); } blowerStatus = false; diff --git a/Software/Embedded_SW/Embedded/Modules/General/process.c b/Software/Embedded_SW/Embedded/Modules/General/process.c index bf7d761dd..30a99ac86 100644 --- a/Software/Embedded_SW/Embedded/Modules/General/process.c +++ b/Software/Embedded_SW/Embedded/Modules/General/process.c @@ -119,7 +119,7 @@ uint32_t HandleProcessParameters(ProcessParameters* ProcessParams,bool saveData) } if (saveData == true) { - if ((ProcessParams->dryerzone1temp > 0.1)&&(ProcessParams->headzone2temp > 0.1)&&(ProcessParams->headzone3temp > 0.1)&&(ProcessParams->headzone4temp > 0.1))//NOT turning off heaters + if ((ProcessParams->dryerzone1temp > 0.1)&&(ProcessParams->headzone2temp > 0.1)&&(ProcessParams->headzone3temp > 0.1)&&(ProcessParams->headzone1temp > 0.1))//NOT turning off heaters { Bytes = sizeof(ProcessParameters); FileWrite(ProcessParams,Bytes,ProcessParamsConfigPath,BIOS_WAIT_FOREVER); diff --git a/Software/Embedded_SW/Embedded/Modules/IDS/IDS_dispenser.c b/Software/Embedded_SW/Embedded/Modules/IDS/IDS_dispenser.c index 3798e9aee..7693d1520 100644 --- a/Software/Embedded_SW/Embedded/Modules/IDS/IDS_dispenser.c +++ b/Software/Embedded_SW/Embedded/Modules/IDS/IDS_dispenser.c @@ -347,19 +347,20 @@ void IDS_Dispenser_Content_Calculation (char DispenserId) != DispenserIdToMotorId[DispenserId]) return; + /********* THIS FUNCTION IS NOW CALLED EVERY 400 MILISECONDS!!!!!!!!!! ***************************/ //int dir = (IDS_Dispenser_Data[DispenserId].direction==1)?1:-1; //double consumedintimeframe = (double)(CurrentDispenserSpeed[DispenserId])*(double)(IDS_Dispenser_Data[DispenserId].microsteps)* // IDS_Dispenser_Data[DispenserId].nanolitterperpulse ;//* dir; //double consumedintimeframe = (double)(CurrentDispenserSpeed[DispenserId]); //pulses only //consumedintimeframe = 10+DispenserId; - IDS_Dispenser_Data[DispenserId].consumedinnanolitter += (CurrentDispenserSpeed[DispenserId]/10);//100 milliseconds ==> speed/10 + IDS_Dispenser_Data[DispenserId].consumedinnanolitter += (CurrentDispenserSpeed[DispenserId]*4/10);//100 milliseconds ==> speed/10 if (IDS_Dispenser_Data[DispenserId].consumedinnanolitter<0) IDS_Dispenser_Data[DispenserId].consumedinnanolitter = 0; if (CurrentDispenserSpeed[DispenserId]>0.1) { DispenserDataUpdated = true; IDS_Dispenser_Data[DispenserId].totalconsumedinnanolitter += (CurrentDispenserSpeed[DispenserId]/10); - if (seconds_counter%6000 == 0) + if (seconds_counter%1500 == 0) //1500*400MILI = 600000 { Report("IDS_Dispenser_Data ",__FILE__,DispenserId,(int)IDS_Dispenser_Data[DispenserId].consumedinnanolitter,RpWarning,(int)CurrentDispenserSpeed[DispenserId],0); } diff --git a/Software/Embedded_SW/Embedded/StateMachines/Initialization/PowerOffSequence.c b/Software/Embedded_SW/Embedded/StateMachines/Initialization/PowerOffSequence.c index 7cec83bd8..dfd9ffaa5 100644 --- a/Software/Embedded_SW/Embedded/StateMachines/Initialization/PowerOffSequence.c +++ b/Software/Embedded_SW/Embedded/StateMachines/Initialization/PowerOffSequence.c @@ -485,6 +485,7 @@ uint32_t PowerOffTurnOffCooler(void) uint32_t PowerOffTurnOffBlower(void) { WHS_Set_SetPoint_Q_value(0); + Control_Voltage_To_Blower(500); Turn_the_Blower_Off();//Turn off PowerOffMachineState++; return OK; diff --git a/Software/Stubs Collection/stubs/cleaning sequence disable.cs b/Software/Stubs Collection/stubs/cleaning sequence disable.cs new file mode 100644 index 000000000..49bf4d968 --- /dev/null +++ b/Software/Stubs Collection/stubs/cleaning sequence disable.cs @@ -0,0 +1,24 @@ +using System; +using System.Text; +using System.Linq; +using System.Drawing; +using System.Diagnostics; +using System.Windows.Forms; +using System.Threading; +using System.Threading.Tasks; +using System.Collections.Generic; +using Tango.PMR.Stubs; +using Tango.Stubs; + +public void OnExecute(StubManager stubManager) +{ + +//"Set WFCF Value +ProgressRequest progressRequest = new ProgressRequest(); +progressRequest.Amount = 0xAD7; +progressRequest.Delay = 0; + +var response = stubManager.Run(progressRequest); + + +} \ No newline at end of file -- cgit v1.3.1 From a5db8b9e482d1ecfb15389270da4fa7f8bd64b94 Mon Sep 17 00:00:00 2001 From: Avi Levkovich Date: Wed, 15 Jul 2020 18:43:04 +0300 Subject: Temporary workaround to check if head card and whs card are availabe --- Software/Embedded_SW/Embedded/.cproject | 2 +- .../Embedded_SW/Embedded/Drivers/I2C_Communication/I2C.c | 2 ++ .../Embedded_SW/Embedded/Drivers/I2C_Communication/I2C.h | 4 ++-- .../Embedded/Drivers/I2C_Communication/I2C_Comm.c | 16 ++++++++-------- Software/Embedded_SW/Embedded/Main.c | 3 +++ 5 files changed, 16 insertions(+), 11 deletions(-) diff --git a/Software/Embedded_SW/Embedded/.cproject b/Software/Embedded_SW/Embedded/.cproject index fc105d8b9..4bebf3c83 100644 --- a/Software/Embedded_SW/Embedded/.cproject +++ b/Software/Embedded_SW/Embedded/.cproject @@ -170,7 +170,7 @@ - + diff --git a/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/I2C.c b/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/I2C.c index 04388865b..c83fe6e50 100644 --- a/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/I2C.c +++ b/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/I2C.c @@ -23,6 +23,8 @@ #define I2C_DELAY 3000 uint8_t Main_Mux_Flag = UNKNOWN; +uint32_t I2C_BUSY_DELAY = 100; + void InitI2C2() { // diff --git a/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/I2C.h b/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/I2C.h index e8fa3efc3..56c386aa8 100644 --- a/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/I2C.h +++ b/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/I2C.h @@ -10,8 +10,8 @@ extern uint32_t Arb_Loss_Count; - -#define I2C_BUSY_DELAY 100//15000 +extern uint32_t I2C_BUSY_DELAY; +//#define I2C_BUSY_DELAY 100//15000 uint32_t I2C_control(uint32_t I2C_ID, uint32_t Slave_Add, bool RW,uint32_t Byte2Write ); void Init_All_I2C(); diff --git a/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/I2C_Comm.c b/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/I2C_Comm.c index 9bcdec476..182e5ccf7 100644 --- a/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/I2C_Comm.c +++ b/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/I2C_Comm.c @@ -55,16 +55,16 @@ uint32_t I2C_WriteBuff(uint32_t I2C_BASE, unsigned char addr, unsigned char* dat { I2CMasterControl(I2C_BASE, I2C_MASTER_CMD_SINGLE_SEND); SysCtlDelay(I2C_BUSY_DELAY);//The CPU waits for the Command processing to begin before it goes to check if the command is processed - while(I2CMasterBusy(I2C_BASE)); status |= I2CMasterErr(I2C_BASE); + while(I2CMasterBusy(I2C_BASE)); } else { // Start sending consecutive data I2CMasterControl(I2C_BASE, I2C_MASTER_CMD_BURST_SEND_START); SysCtlDelay(I2C_BUSY_DELAY);//The CPU waits for the Command processing to begin before it goes to check if the command is processed - while(I2CMasterBusy(I2C_BASE)); status |= I2CMasterErr(I2C_BASE); + while(I2CMasterBusy(I2C_BASE)); len--; data++; @@ -74,8 +74,8 @@ uint32_t I2C_WriteBuff(uint32_t I2C_BASE, unsigned char addr, unsigned char* dat I2CMasterDataPut(I2C_BASE, *data); I2CMasterControl(I2C_BASE, I2C_MASTER_CMD_BURST_SEND_CONT); SysCtlDelay(I2C_BUSY_DELAY);//The CPU waits for the Command processing to begin before it goes to check if the command is processed - while(I2CMasterBusy(I2C_BASE)); status |= I2CMasterErr(I2C_BASE); + while(I2CMasterBusy(I2C_BASE)); len--; data++; @@ -85,8 +85,8 @@ uint32_t I2C_WriteBuff(uint32_t I2C_BASE, unsigned char addr, unsigned char* dat I2CMasterDataPut(I2C_BASE, *data); I2CMasterControl(I2C_BASE, I2C_MASTER_CMD_BURST_SEND_FINISH); SysCtlDelay(I2C_BUSY_DELAY);//The CPU waits for the Command processing to begin before it goes to check if the command is processed - while(I2CMasterBusy(I2C_BASE)); status |= I2CMasterErr(I2C_BASE); + while(I2CMasterBusy(I2C_BASE)); } return status; @@ -119,9 +119,9 @@ uint32_t I2C_ReadBuff(uint32_t I2C_BASE, unsigned char addr, unsigned char* data //see: https://e2e.ti.com/support/microcontrollers/other/f/908/t/368493?Why-is-a-delay-needed-before-writing-the-first-byte-from-I2C-Master- //therefore we need delay before waiting until bus is not busy - it doesn't work as expected without it or with while(!(I2CMasterBusy(I2C0_BASE) SysCtlDelay(I2C_BUSY_DELAY);//The CPU waits for the Command processing to begin before it goes to check if the command is processed + status |= I2CMasterErr(I2C_BASE); while(I2CMasterBusy(I2C_BASE)); *data = I2CMasterDataGet(I2C_BASE); - status |= I2CMasterErr(I2C_BASE); } else { @@ -129,9 +129,9 @@ uint32_t I2C_ReadBuff(uint32_t I2C_BASE, unsigned char addr, unsigned char* data // Start receiving consecutive data I2CMasterControl(I2C_BASE, I2C_MASTER_CMD_BURST_RECEIVE_START); SysCtlDelay(I2C_BUSY_DELAY);//The CPU waits for the Command processing to begin before it goes to check if the command is processed + status |= I2CMasterErr(I2C_BASE); while(I2CMasterBusy(I2C_BASE)); *data = I2CMasterDataGet(I2C_BASE); - status |= I2CMasterErr(I2C_BASE); len--; data++; @@ -141,9 +141,9 @@ uint32_t I2C_ReadBuff(uint32_t I2C_BASE, unsigned char addr, unsigned char* data while(len > 1){ I2CMasterControl(I2C_BASE, I2C_MASTER_CMD_BURST_RECEIVE_CONT); SysCtlDelay(I2C_BUSY_DELAY);//The CPU waits for the Command processing to begin before it goes to check if the command is processed + status |= I2CMasterErr(I2C_BASE); while(I2CMasterBusy(I2C_BASE)); *data = I2CMasterDataGet(I2C_BASE); - status |= I2CMasterErr(I2C_BASE); len--; data++; @@ -152,9 +152,9 @@ uint32_t I2C_ReadBuff(uint32_t I2C_BASE, unsigned char addr, unsigned char* data // Receive last piece of data I2CMasterControl(I2C_BASE, I2C_MASTER_CMD_BURST_RECEIVE_FINISH); SysCtlDelay(I2C_BUSY_DELAY);//The CPU waits for the Command processing to begin before it goes to check if the command is processed + status |= I2CMasterErr(I2C_BASE); while(I2CMasterBusy(I2C_BASE)); *data = I2CMasterDataGet(I2C_BASE); - status |= I2CMasterErr(I2C_BASE); } return status; } diff --git a/Software/Embedded_SW/Embedded/Main.c b/Software/Embedded_SW/Embedded/Main.c index 5c6c13686..88ba521a4 100644 --- a/Software/Embedded_SW/Embedded/Main.c +++ b/Software/Embedded_SW/Embedded/Main.c @@ -39,6 +39,7 @@ #include #include "Sys_PinOut_Config/MCU_MAIN_pinout.h" +#include /* #include "Drivers/SPI_SDCARD/SDSPI.h" @@ -265,8 +266,10 @@ int main(void) Init_All_I2C(); Block_Main_MUX_TCA9548A_0xE4();//unused, same i2c as head and whs cards + I2C_BUSY_DELAY = 3000; //temporary workaround!!! Check_Head_Type_Via_EEPROM();//without trigger Check_WHS_Type_Via_EEPROM();//without trigger + I2C_BUSY_DELAY = 100; //temporary workaround!!! if ((Head_Type >= HEAD_TYPE_UNKNOWN_WITH_CARD)&&(WHS_Type == WHS_TYPE_NEW)) { PP_Machine = true; -- cgit v1.3.1 From 13e70d92919810dc3ed94e161d270fb41ee39ebb Mon Sep 17 00:00:00 2001 From: Shlomo Hecht Date: Thu, 16 Jul 2020 12:13:09 +0300 Subject: Version 1.4.6.35 --- .../Embedded/Modules/AlarmHandling/AlarmHandling.c | 5 +++-- .../Embedded/Modules/Control/MillisecTask.c | 7 ++++-- .../Embedded_SW/Embedded/Modules/Control/control.h | 1 + .../Embedded/Modules/Waste/Waste_maint.h | 0 .../Embedded/Modules/Waste/Waste_print.c | 0 .../Embedded/Software Release Notes.txt | 24 ++++++++++++++++++--- Software/Embedded_SW/Embedded/src/makefile.libs | 4 ++-- Software/Embedded_SW/Embedded/src/sysbios/makefile | 24 ++++++++++----------- .../Embedded_SW/Embedded/src/sysbios/sysbios.aem4f | Bin 1998810 -> 1998354 bytes 9 files changed, 44 insertions(+), 21 deletions(-) delete mode 100644 Software/Embedded_SW/Embedded/Modules/Waste/Waste_maint.h delete mode 100644 Software/Embedded_SW/Embedded/Modules/Waste/Waste_print.c diff --git a/Software/Embedded_SW/Embedded/Modules/AlarmHandling/AlarmHandling.c b/Software/Embedded_SW/Embedded/Modules/AlarmHandling/AlarmHandling.c index fa835ee2e..650d9be24 100644 --- a/Software/Embedded_SW/Embedded/Modules/AlarmHandling/AlarmHandling.c +++ b/Software/Embedded_SW/Embedded/Modules/AlarmHandling/AlarmHandling.c @@ -977,6 +977,7 @@ JobEndReasonEnum AlarmHandlingPrepareJob(void *CurrentJob) case EVENT_TYPE__INSUFFICIENT_AIR_FLOW: case EVENT_TYPE__VOC_SENSOR_ALARM_TIME: case EVENT_TYPE__VOC_SENSOR_ALARM_SLOPE: + //case EVENT_TYPE__POWER_UP_BIT_FAILURE: FoundReason = JOB_UNSPECIFIED_ERROR; AlarmId = Alarm_i; ReportWithPackageFilter(AlarmFilter,"an alarm preventing job", __FILE__,__LINE__,AlarmItem[Alarm_i].EventType, AlarmItem[Alarm_i].Severity, AlarmItem[Alarm_i].DeviceId, 0); @@ -1001,7 +1002,7 @@ JobEndReasonEnum AlarmHandlingPrepareJob(void *CurrentJob) //AbortJob(AlarmReasonStr); //PrepareReady(Module_Alarms,ModuleFail); ReportWithPackageFilter(AlarmFilter,AlarmReasonStr, __FILE__,__LINE__,AlarmId, RpMessage, DEBUG_LOG_CATEGORY__Error, 0); - return (JobEndReason); + return (FoundReason); } return JOB_OK; } @@ -1314,7 +1315,7 @@ uint32_t AlarmHandlingLoop(uint32_t tick) } break; case ALARM_SOURCE_TYPE__MotorAlarm: - if (0)//(CheckMotorAlarms) + if (CheckMotorAlarms) { if (FPGA_WD_Occurred == true) { diff --git a/Software/Embedded_SW/Embedded/Modules/Control/MillisecTask.c b/Software/Embedded_SW/Embedded/Modules/Control/MillisecTask.c index a56c3dae1..27fc8a707 100644 --- a/Software/Embedded_SW/Embedded/Modules/Control/MillisecTask.c +++ b/Software/Embedded_SW/Embedded/Modules/Control/MillisecTask.c @@ -594,7 +594,7 @@ uint32_t MillisecLowLoop(uint32_t tick) //call all modules Millisec functions //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,Tensecond_Tick,OneMinute_Tick,OneHourTick,Gradient_Tick; + bool Ten_msTick, Fifty_msTick, Hundred_msTick , m20msecTick,m70msecTick,m90msecTick, Onesecond_Tick,Tensecond_Tick,OneMinute_Tick,TenMinutes_Tick,OneHourTick,Gradient_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; @@ -614,6 +614,7 @@ uint32_t MillisecLowLoop(uint32_t tick) Onesecond_Tick = (tick%eOneSecond == 0) ?true:false; Tensecond_Tick = (tick%10000 == 0) ?true:false; OneMinute_Tick = (tick%eOneMinute == 0) ?true:false; + TenMinutes_Tick = (tick%eTenMinutes == 0) ?true:false; OneHourTick = (tick%eOneHour == 0) ?true:false; realtimetest[(tick%1000)/10]++; //gather Motor data from FPGA @@ -800,11 +801,13 @@ uint32_t MillisecLowLoop(uint32_t tick) #ifdef CONTROL_DEBUG ResetControlTime(); #endif + } + if (TenMinutes_Tick) + { if (WHS_Type == WHS_TYPE_NEW) { waste_seq_step1();// include 1Sec delay <- to open !!!! } - } if (OneHourTick) { diff --git a/Software/Embedded_SW/Embedded/Modules/Control/control.h b/Software/Embedded_SW/Embedded/Modules/Control/control.h index 78e24f495..4b6a80967 100644 --- a/Software/Embedded_SW/Embedded/Modules/Control/control.h +++ b/Software/Embedded_SW/Embedded/Modules/Control/control.h @@ -21,6 +21,7 @@ typedef enum { eHundredMillisecond = 100, eOneSecond = 1000, eOneMinute = 60000, + eTenMinutes = 600000, eOneHour = 3600000 }CTRL_TIMING_ENUM; typedef enum diff --git a/Software/Embedded_SW/Embedded/Modules/Waste/Waste_maint.h b/Software/Embedded_SW/Embedded/Modules/Waste/Waste_maint.h deleted file mode 100644 index e69de29bb..000000000 diff --git a/Software/Embedded_SW/Embedded/Modules/Waste/Waste_print.c b/Software/Embedded_SW/Embedded/Modules/Waste/Waste_print.c deleted file mode 100644 index e69de29bb..000000000 diff --git a/Software/Embedded_SW/Embedded/Software Release Notes.txt b/Software/Embedded_SW/Embedded/Software Release Notes.txt index 8857b69eb..66a039a7d 100644 --- a/Software/Embedded_SW/Embedded/Software Release Notes.txt +++ b/Software/Embedded_SW/Embedded/Software Release Notes.txt @@ -2,10 +2,28 @@ Embedded SW Release note - Version 1.4.6.35 - Pack Mid alpha ============================================================= Arc head - activate arc heaters gradually stop FPGA Reinit after 20 trials -Head cleaning - move actuators (with stub - 0xAD7) +Head cleaning - move actuators fix RML PID support -head open prevent job - (with stub - 0xAD6) -add stub to overrule cone missing - 0xAD8 +head open prevent job +add stub to overrule cone missing + +fixed I2C delays - will help in real time and disconnection +new blower bug - prevent turning blower off +new blower- minimal voltage 2400 (moti) + +motor alarms - new approach (warning, rises immediately). +new WASTE handling +new IFS handling +IDS - cleaning. FIXED ink calculation info +thread - fix initial feeder dancer drop on job start + +stubs: +skip open lids test (amount = 0xAD6) +skip actuators cleaning sequence (amount = 0xAD7) +skip spool presence check (amount = 0xAD8) +watchdog activity check (amount = 0xAD9) + + Embedded SW Release note - Version 1.4.6.34 - Pack 2+ ============================================================= diff --git a/Software/Embedded_SW/Embedded/src/makefile.libs b/Software/Embedded_SW/Embedded/src/makefile.libs index f262762ef..ae6999352 100644 --- a/Software/Embedded_SW/Embedded/src/makefile.libs +++ b/Software/Embedded_SW/Embedded/src/makefile.libs @@ -1,6 +1,6 @@ # # This file was generated based on the configuration script: -# C:\Tango\Software\Embedded_SW\Embedded\Embedded.cfg +# C:\tango\Software\Embedded_SW\Embedded\Embedded.cfg # # This makefile may be included in other makefiles that need to build # the libraries containing the compiled source files generated as @@ -14,7 +14,7 @@ # # The absolute path to the generated source directory (at the time the # sources were generated) is: -# C:\Tango\Software\Embedded_SW\Embedded\src +# C:\tango\Software\Embedded_SW\Embedded\src # GEN_SRC_DIR ?= ../src diff --git a/Software/Embedded_SW/Embedded/src/sysbios/makefile b/Software/Embedded_SW/Embedded/src/sysbios/makefile index 0f63ec463..a8280a913 100644 --- a/Software/Embedded_SW/Embedded/src/sysbios/makefile +++ b/Software/Embedded_SW/Embedded/src/sysbios/makefile @@ -1,29 +1,29 @@ -XOPTS = -I"C:/TI/xdctools_3_32_00_06_core/packages/" -Dxdc_target_types__=C:/TI/tirtos_tivac_2_16_00_08/products/bios_6_45_01_29/packages/ti/targets/arm/elf/std.h -Dxdc_target_name__=M4F +XOPTS = -I"C:/ti/xdctools_3_32_00_06_core/packages/" -Dxdc_target_types__=C:/ti/tirtos_tivac_2_16_00_08/products/bios_6_45_01_29/packages/ti/targets/arm/elf/std.h -Dxdc_target_name__=M4F -vpath % C:/TI/tirtos_tivac_2_16_00_08/products/bios_6_45_01_29/packages/ti/sysbios/ -vpath %.c C:/TI/xdctools_3_32_00_06_core/packages/ +vpath % C:/ti/tirtos_tivac_2_16_00_08/products/bios_6_45_01_29/packages/ti/sysbios/ +vpath %.c C:/ti/xdctools_3_32_00_06_core/packages/ CCOPTS = --endian=little -mv7M4 --abi=eabi --float_support=fpv4spd16 -q -ms --program_level_compile -g -Dxdc_FILE=__FILE__ -Dti_sysbios_knl_Task_minimizeLatency__D=FALSE -Dti_sysbios_knl_Clock_stopCheckNext__D=FALSE -Dti_sysbios_family_arm_m3_Hwi_enableException__D=TRUE -Dti_sysbios_family_arm_m3_Hwi_disablePriority__D=32U -Dti_sysbios_family_arm_m3_Hwi_numSparseInterrupts__D=0U -Dti_sysbios_hal_Core_numCores__D=1 -XDC_ROOT = C:/TI/xdctools_3_32_00_06_core/packages/ +XDC_ROOT = C:/ti/xdctools_3_32_00_06_core/packages/ -BIOS_ROOT = C:/TI/tirtos_tivac_2_16_00_08/products/bios_6_45_01_29/packages/ti/sysbios/ +BIOS_ROOT = C:/ti/tirtos_tivac_2_16_00_08/products/bios_6_45_01_29/packages/ti/sysbios/ BIOS_DEFS = -Dti_sysbios_BIOS_swiEnabled__D=TRUE -Dti_sysbios_BIOS_taskEnabled__D=TRUE -Dti_sysbios_BIOS_clockEnabled__D=TRUE -Dti_sysbios_BIOS_runtimeCreatesEnabled__D=TRUE -Dti_sysbios_hal_Hwi_DISABLE_ALL_HOOKS -Dti_sysbios_knl_Swi_DISABLE_ALL_HOOKS -Dti_sysbios_BIOS_smpEnabled__D=FALSE -Dti_sysbios_Build_useHwiMacros -Dti_sysbios_knl_Swi_numPriorities__D=16 -Dti_sysbios_knl_Task_deleteTerminatedTasks__D=FALSE -Dti_sysbios_knl_Task_numPriorities__D=16 -Dti_sysbios_knl_Task_checkStackFlag__D=TRUE -Dti_sysbios_knl_Task_initStackFlag__D=TRUE -Dti_sysbios_knl_Task_DISABLE_ALL_HOOKS -Dti_sysbios_knl_Clock_TICK_SOURCE=ti_sysbios_knl_Clock_TickSource_TIMER -Dti_sysbios_knl_Clock_TICK_MODE=ti_sysbios_knl_Clock_TickMode_PERIODIC -Dti_sysbios_hal_Core_delegate_getId=ti_sysbios_hal_CoreNull_getId__E -Dti_sysbios_hal_Core_delegate_interruptCore=ti_sysbios_hal_CoreNull_interruptCore__E -Dti_sysbios_hal_Core_delegate_lock=ti_sysbios_hal_CoreNull_lock__E -Dti_sysbios_hal_Core_delegate_unlock=ti_sysbios_hal_CoreNull_unlock__E -Dti_sysbios_hal_Core_numCores__D=1 -Dti_sysbios_hal_CoreNull_numCores__D=1 -Dti_sysbios_utils_Load_taskEnabled__D=TRUE -Dti_sysbios_utils_Load_swiEnabled__D=FALSE -Dti_sysbios_utils_Load_hwiEnabled__D=FALSE -Dti_sysbios_family_arm_m3_Hwi_dispatcherSwiSupport__D=TRUE -Dti_sysbios_family_arm_m3_Hwi_dispatcherTaskSupport__D=TRUE -Dti_sysbios_family_arm_m3_Hwi_dispatcherAutoNestingSupport__D=TRUE -Dti_sysbios_family_arm_m3_Hwi_dispatcherIrpTrackingSupport__D=TRUE -Dti_sysbios_knl_Semaphore_supportsEvents__D=FALSE -Dti_sysbios_knl_Semaphore_supportsPriority__D=TRUE -BIOS_INC = -I"C:/TI/tirtos_tivac_2_16_00_08/products/bios_6_45_01_29/packages/" +BIOS_INC = -I"C:/ti/tirtos_tivac_2_16_00_08/products/bios_6_45_01_29/packages/" -TARGET_INC = -I"C:/TI/tirtos_tivac_2_16_00_08/products/bios_6_45_01_29/packages/" +TARGET_INC = -I"C:/ti/tirtos_tivac_2_16_00_08/products/bios_6_45_01_29/packages/" INCS = $(BIOS_INC) $(TARGET_INC) -CC = C:/TI/ccsv7/tools/compiler/ti-cgt-arm_16.9.4.LTS/bin/armcl -c $(CCOPTS) -I C:/TI/ccsv7/tools/compiler/ti-cgt-arm_16.9.4.LTS/include -ASM = C:/TI/ccsv7/tools/compiler/ti-cgt-arm_16.9.4.LTS/bin/armcl -c $(CCOPTS) -I C:/TI/ccsv7/tools/compiler/ti-cgt-arm_16.9.4.LTS/include -AR = C:/TI/ccsv7/tools/compiler/ti-cgt-arm_16.9.4.LTS/bin/armar rq +CC = C:/ti/ccsv7/tools/compiler/ti-cgt-arm_16.9.2.LTS/bin/armcl -c $(CCOPTS) -I C:/ti/ccsv7/tools/compiler/ti-cgt-arm_16.9.2.LTS/include +ASM = C:/ti/ccsv7/tools/compiler/ti-cgt-arm_16.9.2.LTS/bin/armcl -c $(CCOPTS) -I C:/ti/ccsv7/tools/compiler/ti-cgt-arm_16.9.2.LTS/include +AR = C:/ti/ccsv7/tools/compiler/ti-cgt-arm_16.9.2.LTS/bin/armar rq -DEL = C:/TI/xdctools_3_32_00_06_core/packages/../bin/rm -f -CP = C:/TI/xdctools_3_32_00_06_core/packages/../bin/cp -f +DEL = C:/ti/xdctools_3_32_00_06_core/packages/../bin/rm -f +CP = C:/ti/xdctools_3_32_00_06_core/packages/../bin/cp -f define RM $(if $(wildcard $1),$(DEL) $1,:) diff --git a/Software/Embedded_SW/Embedded/src/sysbios/sysbios.aem4f b/Software/Embedded_SW/Embedded/src/sysbios/sysbios.aem4f index 93c4f5655..50096cc7a 100644 Binary files a/Software/Embedded_SW/Embedded/src/sysbios/sysbios.aem4f and b/Software/Embedded_SW/Embedded/src/sysbios/sysbios.aem4f differ -- cgit v1.3.1