aboutsummaryrefslogtreecommitdiffstats
path: root/Software/Embedded_SW/Embedded
diff options
context:
space:
mode:
authorAvi Levkovich <avi@twine-s.com>2020-08-09 17:12:30 +0300
committerAvi Levkovich <avi@twine-s.com>2020-08-09 17:12:30 +0300
commit809b93d08808647fc7b75552cc576877d382f7e8 (patch)
treee54deb9e92f48d6b25bb5d372050eb19d5c7caf3 /Software/Embedded_SW/Embedded
parentf0f40f3e5614dc23b5463d9b2ce1581ab90f267f (diff)
downloadTango-809b93d08808647fc7b75552cc576877d382f7e8.tar.gz
Tango-809b93d08808647fc7b75552cc576877d382f7e8.zip
Add delay between initialization of the head I/O and activation the latch of the heaters
Diffstat (limited to 'Software/Embedded_SW/Embedded')
-rw-r--r--Software/Embedded_SW/Embedded/Drivers/I2C_Communication/Head_Card/IO_Ports/Head_IO.c13
-rw-r--r--Software/Embedded_SW/Embedded/Drivers/I2C_Communication/Head_Card/IO_Ports/Heaters/Head_Heaters.c13
-rw-r--r--Software/Embedded_SW/Embedded/Drivers/I2C_Communication/I2C_Task.c8
-rw-r--r--Software/Embedded_SW/Embedded/Drivers/I2C_Communication/I2C_Task.h2
-rw-r--r--Software/Embedded_SW/Embedded/Main.c6
5 files changed, 26 insertions, 16 deletions
diff --git a/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/Head_Card/IO_Ports/Head_IO.c b/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/Head_Card/IO_Ports/Head_IO.c
index 43db04339..d7f2b092c 100644
--- a/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/Head_Card/IO_Ports/Head_IO.c
+++ b/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/Head_Card/IO_Ports/Head_IO.c
@@ -110,9 +110,9 @@ uint32_t Head_IO_Init()
Head_I2C_EXP2_0x42.bits.OUTPUT_ACTLOW_PT_RSTn = 0x01;//0 - will Reset All the PT100 A/D
Head_I2C_EXP2_0x42.bits.OUTPUT_ACTLOW_ACT_RST = 0x01;//OUTPUT_ACTLOW_ADC_RSTn
- Head_I2C_EXP2_0x42.bits.OUTPUT_ACTLOW_ZN_LATCH_RST = 0x01;
- Head_I2C_EXP2_0x42.bits.OUTPUT_ACTLOW_HTIN_LATCH_RST = 0x01;
- Head_I2C_EXP2_0x42.bits.OUTPUT_ACTLOW_HTOT_LATCH_RST = 0x01;
+ Head_I2C_EXP2_0x42.bits.OUTPUT_ACTLOW_ZN_LATCH_RST = DISABLE;
+ Head_I2C_EXP2_0x42.bits.OUTPUT_ACTLOW_HTIN_LATCH_RST = DISABLE;
+ Head_I2C_EXP2_0x42.bits.OUTPUT_ACTLOW_HTOT_LATCH_RST = DISABLE;
if(Head_Type == HEAD_TYPE_ARC)// Set 24 to pressure sensor in arc head
{
@@ -137,6 +137,11 @@ uint32_t Head_IO_Init()
TCA9555Config(0x42);
TCA9555Config(0x46);
+ //Setup for the next Trigger_OutputsLatchWriting - done in main, need to be done at least ~100uSec after setup
+ //Enables the latch for heater's over current
+ Head_I2C_EXP2_0x42.bits.OUTPUT_ACTLOW_ZN_LATCH_RST = ENABLE;
+ Head_I2C_EXP2_0x42.bits.OUTPUT_ACTLOW_HTIN_LATCH_RST = ENABLE;
+ Head_I2C_EXP2_0x42.bits.OUTPUT_ACTLOW_HTOT_LATCH_RST = ENABLE;
return status;
}
@@ -468,13 +473,11 @@ uint32_t HeadCard_Actuators_Disable(void)
//RST
Head_I2C_EXP2_0x42.bits.OUTPUT_ACTLOW_ACT_RST = 0x00;//Disable movement
status |= Head_Write_IO_Reg(0x42,HIGH);
- //Trigger_OutputsWriting();
//Task_sleep(5);
//Head_I2C_EXP2_0x42.bits.OUTPUT_ACTLOW_ACT_RST = 0x01;//Enable movement
//status |= Head_Write_IO_Reg(0x42,HIGH);
- //Trigger_OutputsWriting();
return status;
}
diff --git a/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/Head_Card/IO_Ports/Heaters/Head_Heaters.c b/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/Head_Card/IO_Ports/Heaters/Head_Heaters.c
index 8b2d9247f..db954be06 100644
--- a/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/Head_Card/IO_Ports/Heaters/Head_Heaters.c
+++ b/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/Head_Card/IO_Ports/Heaters/Head_Heaters.c
@@ -10,6 +10,7 @@
#include <Drivers/I2C_Communication/Head_Card/I2C_Head_Mux.h>
#include <Drivers/I2C_Communication/I2C.h>
#include "Head_Heaters.h"
+#include <Drivers/I2C_Communication/I2C_Task.h>
bool HeaterMap[HEADCARD_HIT_MIXER+1] = {0};
@@ -273,7 +274,7 @@ uint8_t Disconnect_Mixer_and_12_Heaters_Latch()//Disable the over-current latch
uint8_t status = PASSED;
Head_I2C_EXP2_0x42.bits.OUTPUT_ACTLOW_ZN_LATCH_RST = LOW;
//status = Head_Write_IO_Reg(0x42,HIGH);
- Trigger_OutputsWriting();
+ Trigger_OutputsLatchWriting();
return status;
}
@@ -282,7 +283,7 @@ uint8_t Connect_Mixer_and_12_Heaters_Latch()//enable the over-current latch
uint8_t status = PASSED;
Head_I2C_EXP2_0x42.bits.OUTPUT_ACTLOW_ZN_LATCH_RST = HIGH;
//status = Head_Write_IO_Reg(0x42,HIGH);
- Trigger_OutputsWriting();
+ Trigger_OutputsLatchWriting();
return status;
}
@@ -291,7 +292,7 @@ uint8_t Disconnect_Upper_In_Heaters_Latch()//Disable the over-current latch
uint8_t status = PASSED;
Head_I2C_EXP2_0x42.bits.OUTPUT_ACTLOW_HTIN_LATCH_RST = LOW;
//status = Head_Write_IO_Reg(0x42,HIGH);
- Trigger_OutputsWriting();
+ Trigger_OutputsLatchWriting();
return status;
}
@@ -300,7 +301,7 @@ uint8_t Disconnect_Upper_Out_Heaters_Latch()//Disable the over-current latch
uint8_t status = PASSED;
Head_I2C_EXP2_0x42.bits.OUTPUT_ACTLOW_HTOT_LATCH_RST = LOW;
//status = Head_Write_IO_Reg(0x42,HIGH);
- Trigger_OutputsWriting();
+ Trigger_OutputsLatchWriting();
return status;
}
@@ -309,7 +310,7 @@ uint8_t Connect_Upper_In_Heaters_Latch()//enable the over-current latch
uint8_t status = PASSED;
Head_I2C_EXP2_0x42.bits.OUTPUT_ACTLOW_HTIN_LATCH_RST = HIGH;
//status = Head_Write_IO_Reg(0x42,HIGH);
- Trigger_OutputsWriting();
+ Trigger_OutputsLatchWriting();
return status;
}
@@ -318,7 +319,7 @@ uint8_t Connect_Upper_Out_Heaters_Latch()//enable the over-current latch
uint8_t status = PASSED;
Head_I2C_EXP2_0x42.bits.OUTPUT_ACTLOW_HTOT_LATCH_RST = HIGH;
//status = Head_Write_IO_Reg(0x42,HIGH);
- Trigger_OutputsWriting();
+ Trigger_OutputsLatchWriting();
return status;
}
diff --git a/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/I2C_Task.c b/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/I2C_Task.c
index 3451e39d9..b01654da3 100644
--- a/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/I2C_Task.c
+++ b/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/I2C_Task.c
@@ -41,7 +41,7 @@ typedef enum
PT100_Reading,
HeaterWriting,
Head_Inputs_Reading,// I/O
- Head_Outputs_Writing,
+ Head_Outputs_Latch_Writing,
Head_ACT_ON_Writing,
Head_Init_PT100,
Actuators_Control,
@@ -276,12 +276,12 @@ void Trigger_InputsReading(void)
}
-void Trigger_OutputsWriting(void)
+void Trigger_OutputsLatchWriting(void)
{
I2C_ReadingMessageStruc I2C_ReadingMessage;
//uint8_t Midtank_i;
- I2C_ReadingMessage.messageId = Head_Outputs_Writing;
+ I2C_ReadingMessage.messageId = Head_Outputs_Latch_Writing;
if (I2C_ReadingMsgQ != NULL)
Mailbox_post(I2C_ReadingMsgQ , &I2C_ReadingMessage, BIOS_NO_WAIT);
return;
@@ -678,7 +678,7 @@ void I2C_ReadingTask(UArg arg0, UArg arg1)
Head_Read_IO_Reg(0x44, LOW_AND_HIGH);//BREAK__ZN1-12 + BREAK_HTIN
Head_Read_IO_Reg(0x46, LOW_AND_HIGH);//READ HEAD CARD LS + ACT status + BREAK_HTOT
break;
- case Head_Outputs_Writing:
+ case Head_Outputs_Latch_Writing:
Head_Write_IO_Reg(0x42, HIGH);//LATCH_RST - in over current
break;
case Head_ACT_ON_Writing:
diff --git a/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/I2C_Task.h b/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/I2C_Task.h
index 4b12a7151..3b0409481 100644
--- a/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/I2C_Task.h
+++ b/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/I2C_Task.h
@@ -51,7 +51,7 @@ void Trigger_Head_Actuators_Stub(uint32_t Act_ID, bool Active_Low_Pwr, bool Dire
void Trigger_Head_Actuators_Disable(void);
void Trigger_Head_Fan_Control(uint32_t Fan_ID, uint16_t PWM);
void Trigger_InputsReading(void);
-void Trigger_OutputsWriting(void);
+void Trigger_OutputsLatchWriting(void);
void Trigger_ActOnWriting(void);
void Trigger_Head_Magnet(int direction);
void Trigger_Head_MixerValve(int direction);
diff --git a/Software/Embedded_SW/Embedded/Main.c b/Software/Embedded_SW/Embedded/Main.c
index 66db76348..4a5a13351 100644
--- a/Software/Embedded_SW/Embedded/Main.c
+++ b/Software/Embedded_SW/Embedded/Main.c
@@ -295,6 +295,12 @@ int main(void)
FPGA_Init();
Check_IFS_Availability();//Init_IFS();//must be done after FPGA_Init
+
+ if (Head_Type > HEAD_TYPE_FLAT_WITHOUT_CARD)
+ {
+ //Activasation the heaters latch
+ Trigger_OutputsLatchWriting();//need to be done ~ at least 100uSec after Trigger_Head_io_Init
+ }
#endif
MAP_FPULazyStackingEnable();