aboutsummaryrefslogtreecommitdiffstats
path: root/Software
diff options
context:
space:
mode:
authorShlomo Hecht <shlomo@twine-s.com>2018-11-22 14:34:02 +0200
committerShlomo Hecht <shlomo@twine-s.com>2018-11-22 14:34:02 +0200
commitcfd5d9ffa46286f27d8523d7fd4cc524d267da8a (patch)
treef8066dc8089a1fb0eb61f5ea3b0cc600df646d51 /Software
parent9a4948a47198e6b965892a5d865ab7f973d22d55 (diff)
downloadTango-cfd5d9ffa46286f27d8523d7fd4cc524d267da8a.tar.gz
Tango-cfd5d9ffa46286f27d8523d7fd4cc524d267da8a.zip
Version 1.1.4.4: waste valve handling, L6470 errate fix, and other bugs
Diffstat (limited to 'Software')
-rw-r--r--Software/Embedded_SW/Embedded/Common/SW_Info/SW_Info.c2
-rw-r--r--Software/Embedded_SW/Embedded/DataDef.h2
-rw-r--r--Software/Embedded_SW/Embedded/Drivers/FPGA/FPGA.c6
-rw-r--r--Software/Embedded_SW/Embedded/Drivers/FPGA/FPGA_SSI_Comm.c5
-rw-r--r--Software/Embedded_SW/Embedded/Embedded.cfg12
-rw-r--r--Software/Embedded_SW/Embedded/Main.c9
-rw-r--r--Software/Embedded_SW/Embedded/Modules/IDS/IDS_ex.h2
-rw-r--r--Software/Embedded_SW/Embedded/Modules/IDS/IDS_init.c6
-rw-r--r--Software/Embedded_SW/Embedded/Modules/IDS/IDS_print.c9
-rw-r--r--Software/Embedded_SW/Embedded/Modules/Stubs_Handler/Stub_Valve.c3
-rw-r--r--Software/Embedded_SW/Embedded/Modules/Thread/Thread_Winder.c1
-rw-r--r--Software/Embedded_SW/Embedded/StateMachines/Printing/JobSTM.c2
-rw-r--r--Software/Embedded_SW/Embedded/StateMachines/Printing/PrintingSTM.h1
-rw-r--r--Software/PMR/Messages/Common/ErrorCode.proto21
14 files changed, 68 insertions, 13 deletions
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;
diff --git a/Software/PMR/Messages/Common/ErrorCode.proto b/Software/PMR/Messages/Common/ErrorCode.proto
index 563edfaf1..97f5a65a4 100644
--- a/Software/PMR/Messages/Common/ErrorCode.proto
+++ b/Software/PMR/Messages/Common/ErrorCode.proto
@@ -20,8 +20,27 @@ enum ErrorCode
FILE_NOT_FOUND = 1001; //Returned by ExecuteProcessResponse when the FileName was not found.
INVALID_PROCESS_ID = 1002; //Returned by KillProcessResponse when the process id was not found.
FILE_LENGTH_OUT_OF_RANGE = 1003; //Returned by FileChunkUploadResponse when the uploaded file size exceeds the expected Length from FileUploadRequest.
+ FILE_REQUEST_DISK_ERR = 1004;
+ FILE_REQUEST_INT_ERR = 1005;
+ FILE_REQUEST_NOT_READY = 1006;
+ FILE_REQUEST_NO_FILE = 1007;
+ FILE_REQUEST_NO_PATH = 1008;
+ FILE_REQUEST_INVALID_NAME = 1009;
+ FILE_REQUEST_DENIED = 1010;
+ FILE_REQUEST_EXIST = 1011;
+ FILE_REQUEST_INVALID_OBJECT = 1012;
+ FILE_REQUEST_WRITE_PROTECTED = 1013;
+ FILE_REQUEST_INVALID_DRIVE = 1014;
+ FILE_REQUEST_NOT_ENABLED = 1015;
+ FILE_REQUEST_NO_FILESYSTEM = 1016;
+ FILE_REQUEST_MKFS_ABORTED = 1017;
+ FILE_REQUEST_TIMEOUT = 1018;
+ FILE_REQUEST_LOCKED = 1019;
+ FILE_REQUEST_NOT_ENOUGH_CORE = 1020;
+ FILE_REQUEST_TOO_MANY_OPEN_FILES = 1021;
+ FILE_REQUEST_INVALID_PARAMETER = 1022;
- //Job Failure
+ //Job Failure
JOB_UNSPECIFIED_ERROR = 2000;
JOB_THREAD_BREAK = 2001;
JOB_WINDER_DANCER_FAIL = 2002;