aboutsummaryrefslogtreecommitdiffstats
path: root/Software/Embedded_SW/Embedded
diff options
context:
space:
mode:
authorShlomo Hecht <shlomo@twine-s.com>2019-04-30 14:24:06 +0300
committerShlomo Hecht <shlomo@twine-s.com>2019-04-30 14:24:06 +0300
commitac8e5600d3ad7a8ff9f76fc35dcaf4d155ebce66 (patch)
treeb13c904ef13453eef76278dd48d4f5b80f6e4c59 /Software/Embedded_SW/Embedded
parent594aa33b9a0689a8b75e5b0ea87a4b6fc01a3deb (diff)
parent2308c8ba08fc31bb0451ff60341fd951b2b84b06 (diff)
downloadTango-ac8e5600d3ad7a8ff9f76fc35dcaf4d155ebce66.tar.gz
Tango-ac8e5600d3ad7a8ff9f76fc35dcaf4d155ebce66.zip
Merge branch 'master' of https://twinetfs.visualstudio.com/Tango/_git/Tango
Diffstat (limited to 'Software/Embedded_SW/Embedded')
-rw-r--r--Software/Embedded_SW/Embedded/Drivers/FPGA/FPGA_GPIO/FPGA_GPIO.c10
-rw-r--r--Software/Embedded_SW/Embedded/Drivers/I2C_Communication/ADC_MUX/ADC_MUX.c48
-rw-r--r--Software/Embedded_SW/Embedded/Drivers/Motors/Motor.h2
-rw-r--r--Software/Embedded_SW/Embedded/Drivers/SSI_Comm/SSI_Comm.h2
-rw-r--r--Software/Embedded_SW/Embedded/Modules/AlarmHandling/AlarmHandling.c4
-rw-r--r--Software/Embedded_SW/Embedded/Modules/Diagnostics/DiagnosticActions.c6
-rw-r--r--Software/Embedded_SW/Embedded/Modules/Heaters/Heaters.h2
-rw-r--r--Software/Embedded_SW/Embedded/Modules/Thread/Thread.h4
-rw-r--r--Software/Embedded_SW/Embedded/Modules/Thread/Thread_ex.h2
9 files changed, 59 insertions, 21 deletions
diff --git a/Software/Embedded_SW/Embedded/Drivers/FPGA/FPGA_GPIO/FPGA_GPIO.c b/Software/Embedded_SW/Embedded/Drivers/FPGA/FPGA_GPIO/FPGA_GPIO.c
index 2ecf83560..111db2ac7 100644
--- a/Software/Embedded_SW/Embedded/Drivers/FPGA/FPGA_GPIO/FPGA_GPIO.c
+++ b/Software/Embedded_SW/Embedded/Drivers/FPGA/FPGA_GPIO/FPGA_GPIO.c
@@ -893,18 +893,18 @@ uint8_t Init_Machine_Leds()
}
-bool Is_Cartridge_Present(PANEL_BUTTON_OR_CRAT_ID Cartridge)//TODO Update the polarity!!!
+bool Is_Cartridge_Present(PANEL_BUTTON_OR_CRAT_ID Cartridge)
{
- bool IsCartPresent = false;
+ bool IsCartPresent = true;
if((Cartridge == CART_1) && (F3_CARTx_PRES_02_Direct & BIT7))
- IsCartPresent = true;
+ IsCartPresent = false;
else
if((Cartridge == CART_2) && (F3_CARTx_PRES_02_Direct & BIT6))
- IsCartPresent = true;
+ IsCartPresent = false;
else
if((Cartridge == CART_3) && (F3_CARTx_PRES_02_Direct & BIT5))
- IsCartPresent = true;
+ IsCartPresent = false;
return IsCartPresent;
}
diff --git a/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/ADC_MUX/ADC_MUX.c b/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/ADC_MUX/ADC_MUX.c
index 0f37af1b5..7422a797b 100644
--- a/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/ADC_MUX/ADC_MUX.c
+++ b/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/ADC_MUX/ADC_MUX.c
@@ -128,7 +128,7 @@ void MidTankPressureCorrection(double Offset)
MidThankReadingOffset = Offset;
}
-double Calculate_Pressure(uint32_t VsampleInBits )
+double Calculate_Pressure(uint32_t VsampleInBits )//MidTank
{
double temp, VADC = 0.0 ,PKpa,VSensor,HighMeter,LiquidLitter;
@@ -162,6 +162,48 @@ double Calculate_Pressure(uint32_t VsampleInBits )
return LiquidLitter;
}
+double Calculate_correction_MidTank_Pressure(uint32_t VsampleInBits )
+{
+/*
+ Assumptions:
+ B=(8.2±0.2)mV/mm for all sensors.
+ A is changed within ±50mV during full life cycle.
+ Aair - should be measured (@ Vpow=5V) and stored as calibrated value
+ Azero – estimated VOUT when level cartridge is equal to bottom surface of the midtank.
+ Azero= Aair + B*(10+20)=Aair+246
+ VOLUME=Stank*(VOUT-Azero)/B= 0.1*73.9*( VOUT - Aair-246)/8.2 (mL) {VOUT – mV}
+ For not calibrated sensors (assembled at machines) Aair:=2554mV, so
+ VOLUME= 0.1*73.9*( VOUT - 2800)/8.2 (mL)
+
+ */
+ double temp, VADC = 0.0 ,VSensor,LiquidLitter;
+
+ //---- VBits -> VADC ----
+
+ //ADC 12 bit -> 4096 -> 2.5V
+
+ temp = VsampleInBits*2.5;
+ VADC = temp / 4096;
+
+ //---- VADC -> VSensor ---
+
+ //VADC = 1.96 - 10k( VSensor - 1.96) / 46.4k (from the electrical scheme)
+ // VSensor = 0 V -> VADC = 2.3824 V
+ // VSensor = 10 V -> VADC = 0.2272 V
+
+ VSensor = (1.96- VADC) * 4.64 + 1.96;
+
+
+ VSensor*=1000; // mV
+
+ temp= 0.1*73.9*( VSensor - 2800)/8.075;// (mL) // according to MidTank_Level4.pptx
+
+ LiquidLitter = temp/1000;//Litter
+
+ return LiquidLitter;
+}
+
+
void Enable_MidTank_Pressure_Reading(MidTank_t MidTank_ID) //0-7
{
assert (MidTank_ID<NUM_OF_MIDTANKS);
@@ -231,7 +273,9 @@ uint32_t Read_MidTank_Pressure_Sensor(MidTank_t MidTank_ID) //0-7
MidTank_Pressure_Bits[MidTank_ID] = VsampleInBits;//just for debug
- MidTank_Pressure[MidTank_ID] = Calculate_Pressure(VsampleInBits) - MidThankReadingOffset;
+ //MidTank_Pressure[MidTank_ID] = Calculate_Pressure(VsampleInBits) - MidThankReadingOffset;
+
+ MidTank_Pressure[MidTank_ID] = Calculate_correction_MidTank_Pressure(VsampleInBits);//use the Calibration correction equation
return Status;
}
diff --git a/Software/Embedded_SW/Embedded/Drivers/Motors/Motor.h b/Software/Embedded_SW/Embedded/Drivers/Motors/Motor.h
index 3b9eba3d8..894f60c09 100644
--- a/Software/Embedded_SW/Embedded/Drivers/Motors/Motor.h
+++ b/Software/Embedded_SW/Embedded/Drivers/Motors/Motor.h
@@ -20,7 +20,7 @@
#define TimerMotors_t HardwareMotorType
-#define NUM_OF_MOTORS HARDWARE_MOTOR_TYPE__MOTO_RLOADING + 1 // TODO After the integration with mulbery change to:
+#define NUM_OF_MOTORS (HARDWARE_MOTOR_TYPE__MOTO_RLOADING + 1) // TODO After the integration with mulbery change to:
//#define NUM_OF_MOTORS HARDWARE_MOTOR_TYPE__MOTO_SPARE1_1
diff --git a/Software/Embedded_SW/Embedded/Drivers/SSI_Comm/SSI_Comm.h b/Software/Embedded_SW/Embedded/Drivers/SSI_Comm/SSI_Comm.h
index 9028de45b..3a1c3ad5b 100644
--- a/Software/Embedded_SW/Embedded/Drivers/SSI_Comm/SSI_Comm.h
+++ b/Software/Embedded_SW/Embedded/Drivers/SSI_Comm/SSI_Comm.h
@@ -23,7 +23,7 @@
NUM_OF_ROTENC
}RotEnc_t;*/
-#define NUM_OF_ROTENC HARDWARE_DANCER_TYPE__RightDancer+1
+#define NUM_OF_ROTENC (HARDWARE_DANCER_TYPE__RightDancer+1)
void SSI1_Init();
diff --git a/Software/Embedded_SW/Embedded/Modules/AlarmHandling/AlarmHandling.c b/Software/Embedded_SW/Embedded/Modules/AlarmHandling/AlarmHandling.c
index 2256ebd34..2a7aef30a 100644
--- a/Software/Embedded_SW/Embedded/Modules/AlarmHandling/AlarmHandling.c
+++ b/Software/Embedded_SW/Embedded/Modules/AlarmHandling/AlarmHandling.c
@@ -865,14 +865,14 @@ uint32_t AlarmHandlingLoop(uint32_t tick)
value = Get_MidTank_Int100_Sensor(AlarmItem[Alarm_i].DeviceId);
if (AlarmItem[Alarm_i].AlarmDirection == OVER_VALUE)
{
- if (value*100 > AlarmItem[Alarm_i].AlarmValue)
+ if (value > AlarmItem[Alarm_i].AlarmValue)
{
Status = true;
}
}
else
{
- if (value*100 < AlarmItem[Alarm_i].AlarmValue)
+ if (value < AlarmItem[Alarm_i].AlarmValue)
{
Status = true;
}
diff --git a/Software/Embedded_SW/Embedded/Modules/Diagnostics/DiagnosticActions.c b/Software/Embedded_SW/Embedded/Modules/Diagnostics/DiagnosticActions.c
index 6a1821f4b..2b24f9832 100644
--- a/Software/Embedded_SW/Embedded/Modules/Diagnostics/DiagnosticActions.c
+++ b/Software/Embedded_SW/Embedded/Modules/Diagnostics/DiagnosticActions.c
@@ -244,12 +244,6 @@ uint32_t SetDigitalOutRequestRequestFunc(MessageContainer* requestContainer)
/* case INTERFACE_IOS__GPO_LED4:
DataUpdated = request->value;
break;*/
-/* case INTERFACE_IOS__GPO_BLOWER_PWM:
- if (request->value == true)
- Control_Dryer_Fan(START,75);
- else
- Control_Dryer_Fan(STOP, 0);
- break;*/
case INTERFACE_IOS__VALVE_WASTE_TANK:
if (request->value == true)
Valve_Set(VALVE_MIXCHIP_WASTECH,1);
diff --git a/Software/Embedded_SW/Embedded/Modules/Heaters/Heaters.h b/Software/Embedded_SW/Embedded/Modules/Heaters/Heaters.h
index 3c9c59f3e..b25c3e5c7 100644
--- a/Software/Embedded_SW/Embedded/Modules/Heaters/Heaters.h
+++ b/Software/Embedded_SW/Embedded/Modules/Heaters/Heaters.h
@@ -5,7 +5,7 @@
#include "PMR/Hardware/HardwarePidControlType.pb-c.h"
#include "heaters_ex.h"
/******************** DEFINITIONS ********************************************/
-#define MAX_AC_HEATERS HARDWARE_PID_CONTROL_TYPE__DryerHeaterSecondary+1
+#define MAX_AC_HEATERS (HARDWARE_PID_CONTROL_TYPE__DryerHeaterSecondary+1)
#define MAX_TIMESLICES 200
extern uint32_t OutputProportionalSingleStep; //A/C Heaters step size from one decision point to another - in cpu clocks. 120000 = 1 millisecod
diff --git a/Software/Embedded_SW/Embedded/Modules/Thread/Thread.h b/Software/Embedded_SW/Embedded/Modules/Thread/Thread.h
index 3e2a6aa40..97f3811c7 100644
--- a/Software/Embedded_SW/Embedded/Modules/Thread/Thread.h
+++ b/Software/Embedded_SW/Embedded/Modules/Thread/Thread.h
@@ -41,8 +41,8 @@ typedef struct
}MotorControlConfig_t;
-#define MAX_THREAD_FEED_MOTORS WINDER_MOTOR+1
-#define MAX_SYSTEM_DANCERS HARDWARE_DANCER_TYPE__RightDancer+1
+#define MAX_THREAD_FEED_MOTORS (WINDER_MOTOR+1)
+#define MAX_SYSTEM_DANCERS (HARDWARE_DANCER_TYPE__RightDancer+1)
extern TimerMotors_t ThreadMotorIdToMotorId[MAX_THREAD_MOTORS_NUM];
extern HardwareDancerType ThreadMotorIdToDancerId[MAX_THREAD_MOTORS_NUM];
diff --git a/Software/Embedded_SW/Embedded/Modules/Thread/Thread_ex.h b/Software/Embedded_SW/Embedded/Modules/Thread/Thread_ex.h
index d7ce917c0..91eedeb6b 100644
--- a/Software/Embedded_SW/Embedded/Modules/Thread/Thread_ex.h
+++ b/Software/Embedded_SW/Embedded/Modules/Thread/Thread_ex.h
@@ -9,7 +9,7 @@
#define WINDER_DANCER HARDWARE_DANCER_TYPE__LeftDancer
#define POOLER_DANCER HARDWARE_DANCER_TYPE__MiddleDancer
#define FEEDER_DANCER HARDWARE_DANCER_TYPE__RightDancer
-#define NUM_OF_DANCERS HARDWARE_DANCER_TYPE__RightDancer+1
+#define NUM_OF_DANCERS (HARDWARE_DANCER_TYPE__RightDancer+1)
//} DANCER_ENUM;
typedef enum threadMotorsEnum
{