aboutsummaryrefslogtreecommitdiffstats
path: root/Software/Embedded_SW/Embedded/Modules
diff options
context:
space:
mode:
authorShlomo Hecht <shlomo@twine-s.com>2019-12-10 18:13:09 +0200
committerShlomo Hecht <shlomo@twine-s.com>2019-12-10 18:13:09 +0200
commit9b712a41f08f8a0c13366db730fba6ec927a97d3 (patch)
tree2de6a43c8da15c6bd0fad3455d0a1c7ff1e3cd64 /Software/Embedded_SW/Embedded/Modules
parent2b5ce14903e4878f4dccefe9d67509f4a0216ff9 (diff)
downloadTango-9b712a41f08f8a0c13366db730fba6ec927a97d3.tar.gz
Tango-9b712a41f08f8a0c13366db730fba6ec927a97d3.zip
improved vesrion after initial testing without head card
Diffstat (limited to 'Software/Embedded_SW/Embedded/Modules')
-rw-r--r--Software/Embedded_SW/Embedded/Modules/Control/MillisecTask.c28
-rw-r--r--Software/Embedded_SW/Embedded/Modules/Control/control.c12
-rw-r--r--Software/Embedded_SW/Embedded/Modules/Diagnostics/Diagnostics.c8
-rw-r--r--Software/Embedded_SW/Embedded/Modules/IDS/IDS_print.c29
-rw-r--r--Software/Embedded_SW/Embedded/Modules/Thread/Thread_init.c10
-rw-r--r--Software/Embedded_SW/Embedded/Modules/Thread/Thread_print.c5
6 files changed, 74 insertions, 18 deletions
diff --git a/Software/Embedded_SW/Embedded/Modules/Control/MillisecTask.c b/Software/Embedded_SW/Embedded/Modules/Control/MillisecTask.c
index 48a28ffe4..8897dfdbb 100644
--- a/Software/Embedded_SW/Embedded/Modules/Control/MillisecTask.c
+++ b/Software/Embedded_SW/Embedded/Modules/Control/MillisecTask.c
@@ -226,13 +226,18 @@ void OneMilliSecondMillisecInterrupt(UArg arg0)
return ;
}
uint32_t PT100Activity = 0;
+int32_t MillisecReadFromI2CTempSensor(uint32_t TempSensorId, MSecFptr Callback)
+{
+#warning call I2C temeratures
+ return OK;
+}
+
int32_t MillisecReadFromTempSensor(uint32_t TempSensorId, MSecFptr Callback)
{
if (TempSensorId >= MAX_MAIN_CARD_TEMP_SENS_ID) return -1;
PT100Activity++; //read request
PT100Data[TempSensorId].Callback = Callback;
PT100Data[TempSensorId].Active = true;
-
return OK;
}
//typedef uint32_t (* MSecFptr)(uint32_t deviceID, uint32_t ReadValue);
@@ -574,11 +579,13 @@ 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, Hundred_msTick , m90msecTick, Onesecond_Tick,OneMinute_Tick,OneHourTick;
+ bool Ten_msTick, Hundred_msTick , m20msecTick,m70msecTick,m90msecTick, Onesecond_Tick,OneMinute_Tick,OneHourTick;
bool O100Millisecond_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;
Hundred_msTick = (tick%eHundredMillisecond == 0) ?true:false;
+ m20msecTick = (tick%eHundredMillisecond == 20) ?true:false;
+ m70msecTick = (tick%eHundredMillisecond == 70) ?true:false;
m90msecTick = (tick%eHundredMillisecond == 90) ?true:false;
O100Millisecond_Tick = (tick%eOneSecond == 100) ?true:false;
O200Millisecond_Tick = (tick%eOneSecond == 200) ?true:false;
@@ -603,6 +610,23 @@ uint32_t MillisecLowLoop(uint32_t tick)
if(Machine_Idle_Mode == true)
Machine_Idle_Breathing_Led();
}
+#ifdef Use_Head_Card
+ if (m20msecTick) //read odd PT1000
+ {
+ for (Sensor_i = HEAD_PT100_ZONE_1_0X80_0;Sensor_i < HEAD_PT100_ZONE_2_0X80_1;Sensor_i++)
+ {
+ MillisecReadFromI2CTempSensor(Sensor_i, NULL);
+ }
+#warning call chip select replace in I2C
+ }
+ if (m70msecTick) //read odd PT1000
+ {
+ for (Sensor_i = HEAD_PT100_ZONE_2_0X80_1;Sensor_i < HEAD_PT100_RESERVE_0X8E_1;Sensor_i++)
+ {
+ MillisecReadFromI2CTempSensor(Sensor_i, NULL);
+ }
+ }
+#endif
if (m90msecTick)
{
#ifdef Use_Head_Card
diff --git a/Software/Embedded_SW/Embedded/Modules/Control/control.c b/Software/Embedded_SW/Embedded/Modules/Control/control.c
index f9e6e7009..b60fb3aa4 100644
--- a/Software/Embedded_SW/Embedded/Modules/Control/control.c
+++ b/Software/Embedded_SW/Embedded/Modules/Control/control.c
@@ -45,17 +45,25 @@
//by recieved esign flow of the user from the UI
///////////////////////////////////////////////////////////////////////////////////////////
#include "include.h"
-#include "Modules/General/GeneralHardware.h"
#include <driverlib/timer.h>
#include <inc/hw_ints.h>
+#include <PMR/Diagnostics/EventType.pb-c.h>
+
#include "drivers/adc_sampling/adc.h"
+#include "drivers/FPGA/FPGA_GPIO/FPGA_GPIO.h"
+
#include "Modules/General/buttons.h"
+#include "Modules/General/GeneralHardware.h"
+
+#include "StateMachines/Printing/PrintingSTM.h"
#include "control.h"
#include "MillisecTask.h"
-#include "drivers/FPGA/FPGA_GPIO/FPGA_GPIO.h"
+
+
+
/******************** Definitions ********************************************/
#define MAX_TANGO_CONTROL_DEVICES 120
/******************** STRUCTURES AND ENUMs ********************************************/
diff --git a/Software/Embedded_SW/Embedded/Modules/Diagnostics/Diagnostics.c b/Software/Embedded_SW/Embedded/Modules/Diagnostics/Diagnostics.c
index fff75fd54..6e8b50c02 100644
--- a/Software/Embedded_SW/Embedded/Modules/Diagnostics/Diagnostics.c
+++ b/Software/Embedded_SW/Embedded/Modules/Diagnostics/Diagnostics.c
@@ -514,6 +514,7 @@ void DiagnosticOneSecCollection(void)
dispenserspressure[i][DiagnosticsIndex] = GetDispenserPressure(i); //Read_MidTank_Pressure_Sensor
+ MidTankpressure[i][0] = Get_MidTank_Pressure_Sensor(i);
}
}
void Diagnostic100msecCollection(void)
@@ -523,7 +524,7 @@ void Diagnostic100msecCollection(void)
return;
//DiagnosticLoadSpeedSensor(getSensorSpeedData());
- if (DiagnosticMode == Diagnostic_Extreme_Mode)
+ if (DiagnosticMode != Diagnostic_Extreme_Mode)
DiagnosticTenMsecCollection(); //call the 10msec function every 100 msec to reduce transport
if (DiagnosticMode >= Diagnostic_Extended_Mode)
@@ -681,13 +682,14 @@ void SendDiagnostics(void)
DiagnosticsMonitor.headzone4temperature = HeaterTemperature[HARDWARE_PID_CONTROL_TYPE__HeadHeaterZ4];
DiagnosticsMonitor.headzone5temperature = HeaterTemperature[HARDWARE_PID_CONTROL_TYPE__HeadHeaterZ5];
DiagnosticsMonitor.headzone6temperature = HeaterTemperature[HARDWARE_PID_CONTROL_TYPE__HeadHeaterZ6];
+#ifdef Use_Head_Card
DiagnosticsMonitor.headzone7temperature = HeaterTemperature[HARDWARE_PID_CONTROL_TYPE__HeadHeaterZ7];
DiagnosticsMonitor.headzone8temperature = HeaterTemperature[HARDWARE_PID_CONTROL_TYPE__HeadHeaterZ8];
DiagnosticsMonitor.headzone9temperature = HeaterTemperature[HARDWARE_PID_CONTROL_TYPE__HeadHeaterZ9];
DiagnosticsMonitor.headzone10temperature = HeaterTemperature[HARDWARE_PID_CONTROL_TYPE__HeadHeaterZ10];
DiagnosticsMonitor.headzone11temperature = HeaterTemperature[HARDWARE_PID_CONTROL_TYPE__HeadHeaterZ11];
DiagnosticsMonitor.headzone12temperature = HeaterTemperature[HARDWARE_PID_CONTROL_TYPE__HeadHeaterZ12];
-
+#endif
DiagnosticsMonitor.dryerzone1temperature = HeaterTemperature[HARDWARE_PID_CONTROL_TYPE__DryerAirTemperature];
DiagnosticsMonitor.dryerzone2temperature = HeaterTemperature[HARDWARE_PID_CONTROL_TYPE__DryerHeaterMain];
DiagnosticsMonitor.dryerzone3temperature = HeaterTemperature[HARDWARE_PID_CONTROL_TYPE__DryerHeaterSecondary];
@@ -699,12 +701,14 @@ void SendDiagnostics(void)
DiagnosticsMonitor.n_headzone4temperature = HeaterCounterIndex[HARDWARE_PID_CONTROL_TYPE__HeadHeaterZ4];
DiagnosticsMonitor.n_headzone5temperature = HeaterCounterIndex[HARDWARE_PID_CONTROL_TYPE__HeadHeaterZ5];
DiagnosticsMonitor.n_headzone6temperature = HeaterCounterIndex[HARDWARE_PID_CONTROL_TYPE__HeadHeaterZ6];
+#ifdef Use_Head_Card
DiagnosticsMonitor.n_headzone7temperature = HeaterCounterIndex[HARDWARE_PID_CONTROL_TYPE__HeadHeaterZ7];
DiagnosticsMonitor.n_headzone8temperature = HeaterCounterIndex[HARDWARE_PID_CONTROL_TYPE__HeadHeaterZ8];
DiagnosticsMonitor.n_headzone9temperature = HeaterCounterIndex[HARDWARE_PID_CONTROL_TYPE__HeadHeaterZ9];
DiagnosticsMonitor.n_headzone10temperature = HeaterCounterIndex[HARDWARE_PID_CONTROL_TYPE__HeadHeaterZ10];
DiagnosticsMonitor.n_headzone11temperature = HeaterCounterIndex[HARDWARE_PID_CONTROL_TYPE__HeadHeaterZ11];
DiagnosticsMonitor.n_headzone12temperature = HeaterCounterIndex[HARDWARE_PID_CONTROL_TYPE__HeadHeaterZ12];
+#endif
DiagnosticsMonitor.n_dryerzone1temperature = HeaterCounterIndex[HARDWARE_PID_CONTROL_TYPE__DryerAirTemperature];
DiagnosticsMonitor.n_dryerzone2temperature = HeaterCounterIndex[HARDWARE_PID_CONTROL_TYPE__DryerHeaterMain];
DiagnosticsMonitor.n_dryerzone3temperature = HeaterCounterIndex[HARDWARE_PID_CONTROL_TYPE__DryerHeaterSecondary];
diff --git a/Software/Embedded_SW/Embedded/Modules/IDS/IDS_print.c b/Software/Embedded_SW/Embedded/Modules/IDS/IDS_print.c
index 3b55758e4..3af6416cb 100644
--- a/Software/Embedded_SW/Embedded/Modules/IDS/IDS_print.c
+++ b/Software/Embedded_SW/Embedded/Modules/IDS/IDS_print.c
@@ -48,7 +48,7 @@ int DispenserSamplePointer[MAX_SYSTEM_DISPENSERS] = {0};
double DispenserNormalizedErrorCoEfficient[MAX_SYSTEM_DISPENSERS] = {0};
double lubricant_speed = 0.0;
HardwarePidControlType ThreadDispenserIdToControlId[MAX_SYSTEM_DISPENSERS] = { HARDWARE_PID_CONTROL_TYPE__Dispenser1,HARDWARE_PID_CONTROL_TYPE__Dispenser2,HARDWARE_PID_CONTROL_TYPE__Dispenser3,HARDWARE_PID_CONTROL_TYPE__Dispenser4,HARDWARE_PID_CONTROL_TYPE__Dispenser5,HARDWARE_PID_CONTROL_TYPE__Dispenser6,HARDWARE_PID_CONTROL_TYPE__Dispenser7,HARDWARE_PID_CONTROL_TYPE__Dispenser8};
-
+JobUploadStrategy uploadstrategy = JOB_UPLOAD_STRATEGY__Default;
bool DispenserReady[MAX_SYSTEM_DISPENSERS] = {true};
bool IDS_Active = false;
/******************** STRUCTURES AND ENUMs ********************************************/
@@ -300,7 +300,8 @@ JobDescriptionFileBrushStop *FirstBrushStop = NULL;
{
LOG_ERROR (BrushStop->index, "no dispensers in brushstop");
}
- FreeBrushStopFileData(BrushStop);
+ if (FirstBrushStop!= BrushStop)
+ FreeBrushStopFileData(BrushStop);
BrushStop = NULL;
}
else
@@ -356,6 +357,7 @@ c. Go to step 2.a x Segment.BrushStopsCount.
JobTicket* JobTicket = JobDetails;
int Dispenser_i, Segment_i,Brush_i,DispenserId;
+ uploadstrategy = JobTicket->uploadstrategy;
if (JobTicket->uploadstrategy == JOB_UPLOAD_STRATEGY__JobDescriptionFile)
{
return (IDS_MapDispenserUsedinFileJob(JobDetails));
@@ -480,7 +482,6 @@ uint32_t InactiveDispenserHome(uint32_t DispenserId, uint32_t ReadValue)
//********************************************************************************************************************
uint32_t IDS_Prepare_Callback(uint32_t DispenserId, uint32_t ReadValue)
{
- bool pressureReady = false;
int i;
int NumofReadyDispensers = 0;
TimerMotors_t HW_Motor_Id;
@@ -534,16 +535,18 @@ uint32_t InactiveDispenserHome(uint32_t DispenserId, uint32_t ReadValue)
if (NumofReadyDispensers>=NumOfActiveDispensers)
{
pressureReady = true;
+ Report("pressureReady = true;",__FILE__,DispenserBuildTimeCounter,NumofReadyDispensers,RpWarning,(int)NumOfActiveDispensers,0);
}
if ((DispenserBuildTimeCounter >= DispenserPrepareTimeout)||(pressureReady == true))
{
DispenserBuildTimeCounter = 0;
pressureReady = true;
+ Report("pressureReady = true or timeout;",__FILE__,DispenserBuildTimeCounter,NumofReadyDispensers,RpWarning,(int)NumOfActiveDispensers,0);
}
}
else if (endOfPrepareWCF == false)
{
- if ((0 == DispenserBuildTimeCounter)&&(FirstBrushStop))
+ if ((DispenserBuildTimeCounter == PRESSURE_READ_TIME_GAP)&&(FirstBrushStop))
{
Report("start prepare dispensers at rate * WFCF",__FILE__,__LINE__,InterSegmentStepsCount,RpWarning,(int)lInterSegmentLength,0);
if (FirstBrushStop)
@@ -600,6 +603,16 @@ uint32_t InactiveDispenserHome(uint32_t DispenserId, uint32_t ReadValue)
Report(IdsMessage, __FILE__, __LINE__, Dispenser_i, RpWarning, segmentfirst_speed, 0);
//SendJobProgress(0.0, 0, false, IdsMessage);
}
+ else
+ {
+ if (DispenserUsedInJob[DispenserId] == true)
+ {
+ MotorStop(HW_Motor_Id, Hard_Hiz);
+ CurrentDispenserSpeed[Dispenser_i] = 0;
+ usnprintf(IdsMessage, 80,"Presegment Prepare Dispenser %d stopped",DispenserId,(int) segmentfirst_speed);
+ Report(IdsMessage, __FILE__, __LINE__, Dispenser_i, RpWarning, segmentfirst_speed, 0);
+ }
+ }
}//for
}//if n_dis
}
@@ -609,9 +622,13 @@ uint32_t InactiveDispenserHome(uint32_t DispenserId, uint32_t ReadValue)
//close waste valve one second before segment - trial
Valve_Set(VALVE_MIXCHIP_WASTECH, Mixer_Head);
}
- if (InterSegmentStartWFCFDispensers >= DispenserBuildTimeCounter)
+ if (DispenserBuildTimeCounter >= InterSegmentStartWFCFDispensers)
{
endOfPrepareWCF = true;
+ FreeBrushStopFileData(FirstBrushStop);
+ FirstBrushStop =NULL;
+ Report("endOfPrepareWCF = true;",__FILE__,DispenserBuildTimeCounter,NumofReadyDispensers,RpWarning,(int)NumOfActiveDispensers,0);
+
}
}
//start new stage
@@ -1242,7 +1259,7 @@ uint32_t IDSPreSegmentState(void *SegmentDetails, int SegmentId)
}
else
{
- LOG_ERROR(FileBrushStop,"BrushStopReadError");
+ LOG_ERROR(FileBrushStop,"End run - BrushStopReadError");
JobEndReason = JOB_OUT_OF_DYE;
PreSegmentReady(Module_IDS,ModuleFail);
}
diff --git a/Software/Embedded_SW/Embedded/Modules/Thread/Thread_init.c b/Software/Embedded_SW/Embedded/Modules/Thread/Thread_init.c
index 226bb2559..0df950f34 100644
--- a/Software/Embedded_SW/Embedded/Modules/Thread/Thread_init.c
+++ b/Software/Embedded_SW/Embedded/Modules/Thread/Thread_init.c
@@ -154,12 +154,12 @@ char DancerConfigPath[50] = "0://SysInfo//DancCfg.cfg";
uint32_t StoreDancerConfigMessage()
{
uint32_t status = OK;
- /* FRESULT Fresult = FR_OK;
- // HardwareConfiguration DancerConfig;
- // HardwareDancer Dancers[MAX_SYSTEM_DANCERS];
+ // FRESULT Fresult = FR_OK;
+ HardwareConfiguration DancerConfig;
+ HardwareDancer Dancers[MAX_SYSTEM_DANCERS];
// uint8_t* response_buffer;
// size_t response_size = 0;
- // int Dancer_i;
+ int Dancer_i;
hardware_configuration__init(&DancerConfig);
DancerConfig.dancers = (HardwareDancer**)my_malloc(sizeof(HardwareDancer*)*MAX_SYSTEM_DANCERS);
@@ -174,7 +174,7 @@ uint32_t StoreDancerConfigMessage()
DancerConfig.n_dancers++;
DancersCfg[Dancer_i].zeropoint = DancerConfig.dancers[Dancer_i]->zeropoint;
}
- */
+
status |= MCU_E2PromProgram(EEPROM_STORAGE_DANCER_0,DancersCfg[0].zeropoint);
status |= MCU_E2PromProgram(EEPROM_STORAGE_DANCER_1,DancersCfg[1].zeropoint);
status |= MCU_E2PromProgram(EEPROM_STORAGE_DANCER_2,DancersCfg[2].zeropoint);
diff --git a/Software/Embedded_SW/Embedded/Modules/Thread/Thread_print.c b/Software/Embedded_SW/Embedded/Modules/Thread/Thread_print.c
index 8ccde6feb..34934af0c 100644
--- a/Software/Embedded_SW/Embedded/Modules/Thread/Thread_print.c
+++ b/Software/Embedded_SW/Embedded/Modules/Thread/Thread_print.c
@@ -300,9 +300,12 @@ uint32_t PoolerThreadLengthCBFunction(uint32_t IfIndex, uint32_t ReadValue)
{
if (PrepareState == true)
{
+#ifdef Use_Head_Card
+ strcpy(Lenstr,"Heating up");
+#else
//later - add temperatures
TemperatureListString(Lenstr);
-
+#endif
SendJobProgress(0.0,0,false, Lenstr);
}
else