From cfd5d9ffa46286f27d8523d7fd4cc524d267da8a Mon Sep 17 00:00:00 2001 From: Shlomo Hecht Date: Thu, 22 Nov 2018 14:34:02 +0200 Subject: Version 1.1.4.4: waste valve handling, L6470 errate fix, and other bugs --- Software/Embedded_SW/Embedded/Common/SW_Info/SW_Info.c | 2 +- Software/Embedded_SW/Embedded/DataDef.h | 2 ++ Software/Embedded_SW/Embedded/Drivers/FPGA/FPGA.c | 6 ++++-- Software/Embedded_SW/Embedded/Drivers/FPGA/FPGA_SSI_Comm.c | 5 ++++- Software/Embedded_SW/Embedded/Embedded.cfg | 12 ++++++++++++ Software/Embedded_SW/Embedded/Main.c | 9 +++++---- Software/Embedded_SW/Embedded/Modules/IDS/IDS_ex.h | 2 +- Software/Embedded_SW/Embedded/Modules/IDS/IDS_init.c | 6 ++++++ Software/Embedded_SW/Embedded/Modules/IDS/IDS_print.c | 9 ++++++++- .../Embedded_SW/Embedded/Modules/Stubs_Handler/Stub_Valve.c | 3 ++- Software/Embedded_SW/Embedded/Modules/Thread/Thread_Winder.c | 1 + .../Embedded_SW/Embedded/StateMachines/Printing/JobSTM.c | 2 +- .../Embedded/StateMachines/Printing/PrintingSTM.h | 1 + 13 files changed, 48 insertions(+), 12 deletions(-) (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 5faf7fbe4..3a7d2b109 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 = {001,001,004,003}; +TangoVersion_t _gTangoVersion = {001,001,004,004}; #define BUILD_DATE __DATE__ char Dat[50] = BUILD_DATE; char _gTangoName [MAX_STRING_LEN] = "Tango01 ";//d diff --git a/Software/Embedded_SW/Embedded/DataDef.h b/Software/Embedded_SW/Embedded/DataDef.h index 7ace87e27..da6a95cd8 100644 --- a/Software/Embedded_SW/Embedded/DataDef.h +++ b/Software/Embedded_SW/Embedded/DataDef.h @@ -46,6 +46,8 @@ enum #define Cartridge_MidTank_OFF 0 #define Atm_MidTank_ON 1 #define Atm_MidTank_OFF 0 +#define Mixer_Head 0 +#define Mixer_Waste 1 #define NEW 0 diff --git a/Software/Embedded_SW/Embedded/Drivers/FPGA/FPGA.c b/Software/Embedded_SW/Embedded/Drivers/FPGA/FPGA.c index f661afb2f..649de045e 100644 --- a/Software/Embedded_SW/Embedded/Drivers/FPGA/FPGA.c +++ b/Software/Embedded_SW/Embedded/Drivers/FPGA/FPGA.c @@ -83,6 +83,7 @@ int FPGA_ReadVersion(unsigned char FPGA_NUM, unsigned char *Version, unsigned c { VER1 Ver1; VER2 Ver2; +#ifndef EVALUATION_BOARD switch(FPGA_NUM) { @@ -112,7 +113,7 @@ int FPGA_ReadVersion(unsigned char FPGA_NUM, unsigned char *Version, unsigned c *Day = Ver1.bytes.Day; *Year = Ver2.bytes.Year; // to check how many digits is needed *Version = Ver2.bytes.Ver_num; - +#endif return PASSED; } @@ -193,6 +194,7 @@ uint32_t Read_Fans_Tacho() { uint32_t Status = 0; uint32_t Drawer_Fan_Speed_RPM = 0; +#ifndef EVALUATION_BOARD // The big Fan in the drawer Drawer_Fan_Speed_RPM = Calculate_Tacho_Fan_Speed(25000000, 0X02, F1_Prescaler1_reg5, F1_Tacho_reg0); @@ -237,7 +239,7 @@ uint32_t Read_Fans_Tacho() else Status&= ~(0x01<<4);//working } - +#endif return Status; } diff --git a/Software/Embedded_SW/Embedded/Drivers/FPGA/FPGA_SSI_Comm.c b/Software/Embedded_SW/Embedded/Drivers/FPGA/FPGA_SSI_Comm.c index 25b18e48a..9bc8f3db6 100644 --- a/Software/Embedded_SW/Embedded/Drivers/FPGA/FPGA_SSI_Comm.c +++ b/Software/Embedded_SW/Embedded/Drivers/FPGA/FPGA_SSI_Comm.c @@ -70,16 +70,19 @@ static FpgaDancerMap_t FpgaSpeedSensorMap = uint8_t FPGA_SSI_Speed_Sensor_Transnit() { +#ifndef EVALUATION_BOARD //if(*FpgaSpeedSensorMap.SSI_Busy == NOTBUSY) { uint32_t SSI_Dummy_TX= 0x123456; // Dummy *FpgaSpeedSensorMap.TX_Reg = SSI_Dummy_TX ; } +#endif return OK; } uint32_t FPGA_SSI_Speed_Sensor_Receive() { +#ifndef EVALUATION_BOARD INT2SHORT Int2Short; //unsigned int temp; @@ -88,7 +91,7 @@ uint32_t FPGA_SSI_Speed_Sensor_Receive() Int2Short.ushort.MSB = *FpgaSpeedSensorMap.RX_M; //temp = Int2Short.uint; SpeedSensorResponseS.Speed = Int2Short.uint; - +#endif //return OK; return SpeedSensorResponseS.Speed; } diff --git a/Software/Embedded_SW/Embedded/Embedded.cfg b/Software/Embedded_SW/Embedded/Embedded.cfg index 0017003a9..a49f86836 100644 --- a/Software/Embedded_SW/Embedded/Embedded.cfg +++ b/Software/Embedded_SW/Embedded/Embedded.cfg @@ -137,7 +137,19 @@ task5Params.instance.name = "process"; task5Params.stackSize = 2048; task5Params.priority = 8; Program.global.process = Task.create("&jobTask", task5Params); +/* +var task8Params = new Task.Params(); +task8Params.instance.name = "MilliSecondLow"; +task8Params.stackSize = 2048; +task8Params.priority = 7; +Program.global.millisec = Task.create("&MillisecTask", task8Params); +var task7Params = new Task.Params(); +task7Params.instance.name = "controlLow"; +task7Params.stackSize = 2048; +task7Params.priority = 7; +Program.global.control = Task.create("&controlTask", task7Params); +*/ var task10Params = new Task.Params(); task10Params.instance.name = "communicationTx"; task10Params.priority = 7; diff --git a/Software/Embedded_SW/Embedded/Main.c b/Software/Embedded_SW/Embedded/Main.c index c82a2f9e1..14b43b8bd 100644 --- a/Software/Embedded_SW/Embedded/Main.c +++ b/Software/Embedded_SW/Embedded/Main.c @@ -129,7 +129,7 @@ int main(void) ROM_SysTickIntEnable(); ROM_SysTickEnable(); - Calculateinit(); + //Calculateinit(); PortFunctionInit(); @@ -218,17 +218,18 @@ int main(void) Heaters_Init(); ControlStart(); MotorsInit(); + IDS_ModuleInit(); //////////////////////////// -/* - FRESULT iFResult = Init_Flash_File_System(true); + + FRESULT iFResult = Init_Flash_File_System(false); if(iFResult != FR_OK) { LOG_ERROR (iFResult, "Error during init Flash File System"); assert(iFResult); } //Control_File_System();// test file system -*/ + //////////////////////////// // Enable interrupts to the processor. diff --git a/Software/Embedded_SW/Embedded/Modules/IDS/IDS_ex.h b/Software/Embedded_SW/Embedded/Modules/IDS/IDS_ex.h index 2b8779207..db2277659 100644 --- a/Software/Embedded_SW/Embedded/Modules/IDS/IDS_ex.h +++ b/Software/Embedded_SW/Embedded/Modules/IDS/IDS_ex.h @@ -29,7 +29,7 @@ typedef enum { LimitSwitchAlarmLow_8, //MOTO_DISPENSER_8 = 13, }LimitSwitchAlarms; -void Calculateinit (void); +void IDS_ModuleInit (void); uint32_t IDSPrepareState(void *JobDetails); uint32_t IDSPreSegmentState(void *JobDetails, int SegmentId); diff --git a/Software/Embedded_SW/Embedded/Modules/IDS/IDS_init.c b/Software/Embedded_SW/Embedded/Modules/IDS/IDS_init.c index b035ff97b..43984f8d1 100644 --- a/Software/Embedded_SW/Embedded/Modules/IDS/IDS_init.c +++ b/Software/Embedded_SW/Embedded/Modules/IDS/IDS_init.c @@ -13,6 +13,7 @@ #include "drivers/Motors/Motor.h" #include "drivers/ADC_Sampling/adc.h" +#include "drivers/valves/valve.h" #define MAX_CONTROL_SAMPLES 10 @@ -89,4 +90,9 @@ uint32_t DispenserConfigMessage(HardwareDispenser * request) else return Dispenser_i; } +void IDS_ModuleInit(void) +{ + Valve_Set(VALVE_MIXCHIP_WASTECH, Mixer_Waste); + Calculateinit(); +} diff --git a/Software/Embedded_SW/Embedded/Modules/IDS/IDS_print.c b/Software/Embedded_SW/Embedded/Modules/IDS/IDS_print.c index 57b346513..f9c4c1bc3 100644 --- a/Software/Embedded_SW/Embedded/Modules/IDS/IDS_print.c +++ b/Software/Embedded_SW/Embedded/Modules/IDS/IDS_print.c @@ -116,6 +116,7 @@ void DispenserPrepareReady(void) int Motor_i, HW_Motor_Id, Pid_Id,i; //start IDS control for all motors IDS_Active = true; + Valve_Set(VALVE_MIXCHIP_WASTECH, Mixer_Waste); for (Motor_i = 0;Motor_i < MAX_SYSTEM_DISPENSERS;Motor_i++) { HW_Motor_Id = DispenserIdToMotorId[Motor_i]; @@ -229,6 +230,11 @@ uint32_t IDSPreSegmentState(void *JobDetails, int SegmentId) LOG_ERROR(JobBrushStopId,"Error JobBrushStopId"); return ERROR; } + if (( JobTicket->enableintersegment == true)&&(JobTicket->intersegmentlength>0)) + { + Valve_Set(VALVE_MIXCHIP_WASTECH, Mixer_Waste); //if intersegment is defined throw the ink away + } + if (JobTicket->segments[SegmentId]->brushstops[JobBrushStopId]->n_dispensers) { n_dispensers = JobTicket->segments[SegmentId]->brushstops[JobBrushStopId]->n_dispensers; @@ -299,7 +305,6 @@ uint32_t IDSPreSegmentState(void *JobDetails, int SegmentId) double segmentfirst_speed; int CurrentSegment = SegmentId; - if (CurrentSegment>=JobTicket->n_segments) { LOG_ERROR(CurrentSegment,"Error Segment"); @@ -310,6 +315,7 @@ uint32_t IDSPreSegmentState(void *JobDetails, int SegmentId) LOG_ERROR(JobBrushStopId,"Error JobBrushStopId"); return ERROR; } + Valve_Set(VALVE_MIXCHIP_WASTECH, Mixer_Head); if (JobTicket->segments[CurrentSegment]->brushstops[JobBrushStopId]->n_dispensers) { n_dispensers = JobTicket->segments[CurrentSegment]->brushstops[JobBrushStopId]->n_dispensers; @@ -393,6 +399,7 @@ uint32_t IDSPreSegmentState(void *JobDetails, int SegmentId) { int Dispenser_i; IDS_Active = false; + Valve_Set(VALVE_MIXCHIP_WASTECH, Mixer_Waste); for ( Dispenser_i = 0;Dispenser_i < MAX_SYSTEM_DISPENSERS;Dispenser_i++) { MotorStop(DispenserIdToMotorId[Dispenser_i],Hard_Hiz); diff --git a/Software/Embedded_SW/Embedded/Modules/Stubs_Handler/Stub_Valve.c b/Software/Embedded_SW/Embedded/Modules/Stubs_Handler/Stub_Valve.c index 759d76a43..5f087c50a 100644 --- a/Software/Embedded_SW/Embedded/Modules/Stubs_Handler/Stub_Valve.c +++ b/Software/Embedded_SW/Embedded/Modules/Stubs_Handler/Stub_Valve.c @@ -32,8 +32,9 @@ void Stub_ValveRequest(MessageContainer* requestContainer) request->inkflow request->valveon */ - Control3WayValvesWithCallback (request->valveid, request->valveon, NULL); + //Control3WayValvesWithCallback (request->valveid, request->valveon, NULL); //test_valve_3_way(request->valveid, request->valveon); + Valve_Set(request->valveid, request->valveon); StubValveResponse response = STUB_VALVE_RESPONSE__INIT; diff --git a/Software/Embedded_SW/Embedded/Modules/Thread/Thread_Winder.c b/Software/Embedded_SW/Embedded/Modules/Thread/Thread_Winder.c index fd577311e..b6392249a 100644 --- a/Software/Embedded_SW/Embedded/Modules/Thread/Thread_Winder.c +++ b/Software/Embedded_SW/Embedded/Modules/Thread/Thread_Winder.c @@ -142,6 +142,7 @@ uint32_t Winder_ScrewAtOffsetCallback(uint32_t deviceID, uint32_t BusyFlag) ScrewControlId = 0xFF; ScrewNumberOfSteps = 0; REPORT_MSG(BusyFlag, "Winder_ScrewAtOffsetCallback"); + MotorStop (HARDWARE_MOTOR_TYPE__MOTO_SCREW,Soft_Hiz); //per L6470 errata between mov and run commands PrepareReady(Module_Winder, ModuleDone); return OK; } diff --git a/Software/Embedded_SW/Embedded/StateMachines/Printing/JobSTM.c b/Software/Embedded_SW/Embedded/StateMachines/Printing/JobSTM.c index e3cd3ca64..2eed69f24 100644 --- a/Software/Embedded_SW/Embedded/StateMachines/Printing/JobSTM.c +++ b/Software/Embedded_SW/Embedded/StateMachines/Printing/JobSTM.c @@ -66,7 +66,7 @@ Mailbox_Handle JobmsgQ = NULL; //static Clock_Params jobclkParams; JobEndReasonEnum JobEndReason = JOB_OK; -ErrorCode JobError_to_ErrorCode[JOB_OTHER_ALARM+1] = {ERROR_CODE__NONE,ERROR_CODE__JOB_UNSPECIFIED_ERROR,ERROR_CODE__JOB_THREAD_BREAK,ERROR_CODE__JOB_WINDER_DANCER_FAIL, +ErrorCode JobError_to_ErrorCode[JOB_ERRORS_MAX+1] = {ERROR_CODE__NONE,ERROR_CODE__JOB_UNSPECIFIED_ERROR,ERROR_CODE__JOB_THREAD_BREAK,ERROR_CODE__JOB_WINDER_DANCER_FAIL, ERROR_CODE__JOB_POOLER_DANCER_FAIL,ERROR_CODE__JOB_FEEDER_DANCER_FAIL,ERROR_CODE__JOB_OUT_OF_DYE,ERROR_CODE__JOB_OTHER_ALARM, ERROR_CODE__JOB_TEMPERATURE_ALARM,ERROR_CODE__JOB_LS_ALARM,ERROR_CODE__JOB_PRESSURE_ALARM,ERROR_CODE__JOB_CURRENT_ALARM,ERROR_CODE__JOB_MOTOR_ALARM}; diff --git a/Software/Embedded_SW/Embedded/StateMachines/Printing/PrintingSTM.h b/Software/Embedded_SW/Embedded/StateMachines/Printing/PrintingSTM.h index 795daa836..0b9c68394 100644 --- a/Software/Embedded_SW/Embedded/StateMachines/Printing/PrintingSTM.h +++ b/Software/Embedded_SW/Embedded/StateMachines/Printing/PrintingSTM.h @@ -94,6 +94,7 @@ typedef enum JOB_CURRENT_ALARM, JOB_MOTOR_ALARM, + JOB_ERRORS_MAX }JobEndReasonEnum; extern JobEndReasonEnum JobEndReason; -- cgit v1.3.1