aboutsummaryrefslogtreecommitdiffstats
path: root/Software/Embedded_SW
diff options
context:
space:
mode:
authorShai Frieder <Shai.Frieder@twine-s.com>2019-03-25 12:29:09 +0200
committerShai Frieder <Shai.Frieder@twine-s.com>2019-03-25 12:29:09 +0200
commitdf1a05d5586fbce72e9aa2cb05cd64f74d1b98e9 (patch)
tree3846d340ae049835f08f3549dd9c6876aab0d226 /Software/Embedded_SW
parent89f03f5c7882720b60f3223f14639abc3cb70232 (diff)
parent43e2630744b4ae038d956229723b2bd5ccc6d3f7 (diff)
downloadTango-df1a05d5586fbce72e9aa2cb05cd64f74d1b98e9.tar.gz
Tango-df1a05d5586fbce72e9aa2cb05cd64f74d1b98e9.zip
Merge branch 'master' of https://twinetfs.visualstudio.com/_git/Tango
Diffstat (limited to 'Software/Embedded_SW')
-rw-r--r--Software/Embedded_SW/Embedded/Drivers/FPGA/FPGA_GPIO/FPGA_GPIO.c73
-rw-r--r--Software/Embedded_SW/Embedded/Drivers/Heater/Heater.c30
-rw-r--r--Software/Embedded_SW/Embedded/Drivers/Valves/Valve.c11
3 files changed, 94 insertions, 20 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 bd716eea8..de196fdc2 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
@@ -18,10 +18,14 @@
FPGA_GPI FPGA_Gpi;
+extern F2_CTRL_REG F2_CTRL_Reg;
+
bool FPGA_Gpi_Buf[MAX_GPI] = {0};
extern bool Machine_Idle_Mode;
+extern F3_GPO_01_REG F3_GPO_01_Reg;
+
void Read_FPGA_GPI_Rgisters()
{
uint32_t i;
@@ -427,21 +431,24 @@ bool FPGA_Read_limit_Switches(FPGA_GPI_ENUM Limit_Switch)
uint32_t ActivateDilutorPump()
{
- F2_CTRL |= CHILLER_SSR9_CTRL;
+ F2_CTRL_Reg.ushort |= CHILLER_SSR9_CTRL;
+ F2_CTRL = F2_CTRL_Reg.ushort;
return OK;
}
uint32_t DeActivateDilutorPump()
{
- F2_CTRL &= ~CHILLER_SSR9_CTRL;
+ F2_CTRL_Reg.ushort &= ~CHILLER_SSR9_CTRL;
+ F2_CTRL = F2_CTRL_Reg.ushort;
return OK;
}
//----------------------------------
void Power_Off()//Power Down
{
- F2_CTRL |= PDOWN_RL1_CTRL;
+ F2_CTRL_Reg.ushort |= PDOWN_RL1_CTRL;
+ F2_CTRL = F2_CTRL_Reg.ushort;
}
void Power_Reset()// Resets the MCU
@@ -455,41 +462,75 @@ void Power_Reset()// Resets the MCU
uint32_t ActivateChiller()
{
- F2_CTRL |= SPARE_SSR12_CTRL;
+ F2_CTRL_Reg.ushort |= SPARE_SSR12_CTRL;
+ F2_CTRL = F2_CTRL_Reg.ushort;
return OK;
}
uint32_t DeActivateChiller()
{
- F2_CTRL &= ~SPARE_SSR12_CTRL;
+ F2_CTRL_Reg.ushort &= ~SPARE_SSR12_CTRL;
+ F2_CTRL = F2_CTRL_Reg.ushort;
return OK;
}
uint32_t ActivateHeadMagnet()
{
Task_sleep(500);
- F2_CTRL &= ~SPARE_SSR13_CTRL;
+ F2_CTRL_Reg.ushort &= ~SPARE_SSR13_CTRL;
+ F2_CTRL = F2_CTRL_Reg.ushort;
+
return OK;
}
uint32_t DeActivateHeadMagnet()
{
- F2_CTRL |= SPARE_SSR13_CTRL;
+ F2_CTRL_Reg.ushort |= SPARE_SSR13_CTRL;
+ F2_CTRL = F2_CTRL_Reg.ushort;
Task_sleep(500);
return OK;
}
uint32_t ReadHeadMagnetBit()
{
- return (F2_CTRL & BIT0);
+ return (F2_CTRL & BIT0);//SSR13 is not in the WD therefore it it possible to read the bit
}
uint32_t DeActivateAllSSR()
{
- F2_CTRL = 0;
+ F2_CTRL_Reg.ushort = 0;
+ F2_CTRL = F2_CTRL_Reg.ushort;
return OK;
}
+bool Is_FPGA_WD_Occurred()
+{
+ if( (F1_Moto_Driver_NSTBYRST1 != 0xFFFF) ||
+ (F1_Moto_Driver_NSTBYRST2 != 0xFFFF) ||
+ (F2_Moto_Driver_NSTBYRST1 != 0xFFFF) ||
+ (F3_Moto_Driver_NSTBYRST1 != 0xFFFF) )
+ {
+ /*
+ To recover:
+ //1. Disable all FPGA's WD:
+ Control_WD(DISABLE,0);
+ //2. Enqable all FPGA's WD:
+ Control_WD(ENABLE,250);
+ //3. Call FPGA_SetMotorsInit:
+ FPGA_SetMotorsInit();
+ //4. Init Motor's Drivers:
+
+ //OR
+
+ //Reset MCU (will reset also the FPGA):
+ Power_Reset();
+ */
+ return true;
+ }
+ else
+ return false;
+
+}
uint32_t Control_WD(bool IsEnable, unsigned char SetTimer_Steps100mSec) // Control_WD(ENABLE, 30);//Enable the watchdog for 3 seconds
/*
@@ -501,6 +542,8 @@ uint32_t Control_WD(bool IsEnable, unsigned char SetTimer_Steps100mSec) // Contr
* the control register will take the value it had before to be resetted.
*/
{
+ uint32_t status = OK;
+
#ifndef EVALUATION_BOARD
short WD_Enable = 0x4000 | SetTimer_Steps100mSec;
@@ -513,12 +556,14 @@ uint32_t Control_WD(bool IsEnable, unsigned char SetTimer_Steps100mSec) // Contr
}
else
{
+ status |= Is_FPGA_WD_Occurred();
+
F1_Watchdog_reg = WD_Enable; // Enable the watchdog F3_GPO_01_bus BIT4 DYEINGH_SSR11_CTRL HeadHeaterZ6
F2_Watchdog_reg = WD_Enable; // Enable the watchdog F2_CTRL + reset dispensers motor drivers
F3_Watchdog_reg = WD_Enable; // Enable the watchdog F1_gpo_01 BIT2 DYEINGH_SSR10_CTRL HeadHeaterZ5
}
#endif
- return OK;
+ return status;
}
uint32_t ReadBreakSensor()
@@ -689,16 +734,20 @@ uint8_t Buzzer(OPERATION_MODE Buzzer_Mode)
switch(Buzzer_Mode)
{
case MODE_ON:
- F3_GPO_01_bus |= BIT5;
+ //F3_GPO_01_bus |= BIT5;
+ F3_GPO_01_Reg.bits.F3_GPO_BUZZER = ON;
break;
case MODE_OFF:
- F3_GPO_01_bus &= ~BIT5;
+ //F3_GPO_01_bus &= ~BIT5;
+ F3_GPO_01_Reg.bits.F3_GPO_BUZZER = OFF;
break;
default:
Status = ERROR;
break;
}
+ F3_GPO_01_bus = F3_GPO_01_Reg.ushort;
+
return Status;
}
diff --git a/Software/Embedded_SW/Embedded/Drivers/Heater/Heater.c b/Software/Embedded_SW/Embedded/Drivers/Heater/Heater.c
index 0c44ef71e..14c548f2a 100644
--- a/Software/Embedded_SW/Embedded/Drivers/Heater/Heater.c
+++ b/Software/Embedded_SW/Embedded/Drivers/Heater/Heater.c
@@ -38,6 +38,10 @@ typedef struct
uint32_t HeaterActive = 0;
+extern F2_CTRL_REG F2_CTRL_Reg;
+extern F1_GPO_REG F1_GPO_Reg;
+extern F3_GPO_01_REG F3_GPO_01_Reg;
+
static GPIOIntPortMap portMap[MAX_HEATERS_NUM] =
{
{DRYER_SSR3_CTRL, false}, // HARDWARE_PID_CONTROL_TYPE__DryerAirTemperature **** Not connected ****
@@ -67,15 +71,23 @@ uint32_t ActivateHeater (int HeaterId)
#ifndef EVALUATION_BOARD
if(HeaterId == HARDWARE_PID_CONTROL_TYPE__HeadHeaterZ5)
{
- F1_gpo_01 |= portMap[HeaterId].m_pin;
+ //F1_gpo_01 |= portMap[HeaterId].m_pin;
+ F1_GPO_Reg.ushort |= portMap[HeaterId].m_pin;
+ F1_gpo_01 = F1_GPO_Reg.ushort;
+
}
else if(HeaterId == HARDWARE_PID_CONTROL_TYPE__HeadHeaterZ6)
{
- F3_GPO_01_bus |= portMap[HeaterId].m_pin;
+ //F3_GPO_01_bus |= portMap[HeaterId].m_pin;
+ F3_GPO_01_Reg.ushort |= portMap[HeaterId].m_pin;
+ F3_GPO_01_bus = F3_GPO_01_Reg.ushort;
+
}
else
{
- F2_CTRL |= portMap[HeaterId].m_pin;
+ //F2_CTRL |= portMap[HeaterId].m_pin;
+ F2_CTRL_Reg.ushort |= portMap[HeaterId].m_pin;
+ F2_CTRL = F2_CTRL_Reg.ushort;
}
#endif
//---------------------------------------------------------------------------------------
@@ -114,15 +126,21 @@ uint32_t DeActivateHeater (int HeaterId)
#ifndef EVALUATION_BOARD
if(HeaterId == HARDWARE_PID_CONTROL_TYPE__HeadHeaterZ5)
{
- F1_gpo_01 &= ~portMap[HeaterId].m_pin;
+ //F1_gpo_01 &= ~portMap[HeaterId].m_pin;
+ F1_GPO_Reg.ushort&= ~portMap[HeaterId].m_pin;
+ F1_gpo_01 = F1_GPO_Reg.ushort;
}
else if(HeaterId == HARDWARE_PID_CONTROL_TYPE__HeadHeaterZ6)
{
- F3_GPO_01_bus &= ~portMap[HeaterId].m_pin;
+ //F3_GPO_01_bus &= ~portMap[HeaterId].m_pin;
+ F3_GPO_01_Reg.ushort &= ~portMap[HeaterId].m_pin;
+ F3_GPO_01_bus = F3_GPO_01_Reg.ushort;
}
else
{
- F2_CTRL &= ~portMap[HeaterId].m_pin;
+ //F2_CTRL &= ~portMap[HeaterId].m_pin;
+ F2_CTRL_Reg.ushort &= ~portMap[HeaterId].m_pin;
+ F2_CTRL = F2_CTRL_Reg.ushort;
}
#endif
//---------------------------------------------------------------------------------------
diff --git a/Software/Embedded_SW/Embedded/Drivers/Valves/Valve.c b/Software/Embedded_SW/Embedded/Drivers/Valves/Valve.c
index 4e653f98e..c546dc30a 100644
--- a/Software/Embedded_SW/Embedded/Drivers/Valves/Valve.c
+++ b/Software/Embedded_SW/Embedded/Drivers/Valves/Valve.c
@@ -24,6 +24,8 @@ VALVE_GPO_REG Valve_GPO_Reg;
extern F1_GPO_REG F1_GPO_Reg;
DISPENSER_VALVE_GPO_REG Dispenser_Valve_GPO_Reg;
+extern F3_GPO_01_REG F3_GPO_01_Reg;
+
Valves_t IDS_Id_to_AirValve[MAX_IDS_UNITS] = {VALVE_2W_MID_AIR_1,VALVE_2W_MID_AIR_2,VALVE_2W_MID_AIR_3,VALVE_2W_MID_AIR_4,VALVE_2W_MID_AIR_5,VALVE_2W_MID_AIR_6,VALVE_2W_MID_AIR_7,VALVE_2W_MID_AIR_8};
Valves_t IDS_Id_to_CartrideValve[MAX_IDS_UNITS] = {VALVE_2W_CART_MID_1,VALVE_2W_CART_MID_2,VALVE_2W_CART_MID_3,VALVE_2W_CART_MID_4,VALVE_2W_CART_MID_5,VALVE_2W_CART_MID_6,VALVE_2W_CART_MID_7,VALVE_2W_CART_MID_8};
@@ -385,13 +387,18 @@ uint8_t Lubricant_2Way_Valve(bool Direction)
if(Direction == OPEN)
{
- F3_GPO_01_bus |= BIT0;
+ //F3_GPO_01_bus |= BIT0;
+ F3_GPO_01_Reg.bits.F3_LUBRICANT_VALVE = OPEN;
}
else //Direction = CLOSE
{
- F3_GPO_01_bus &= ~(BIT0);
+ //F3_GPO_01_bus &= ~(BIT0);
+ F3_GPO_01_Reg.bits.F3_LUBRICANT_VALVE = CLOSE;
}
+
+ F3_GPO_01_bus = F3_GPO_01_Reg.ushort;
+
return Status;
}