diff options
| author | Avi Levkovich <avi@twine-s.com> | 2020-08-09 17:12:30 +0300 |
|---|---|---|
| committer | Avi Levkovich <avi@twine-s.com> | 2020-08-09 17:12:30 +0300 |
| commit | 809b93d08808647fc7b75552cc576877d382f7e8 (patch) | |
| tree | e54deb9e92f48d6b25bb5d372050eb19d5c7caf3 /Software/Embedded_SW | |
| parent | f0f40f3e5614dc23b5463d9b2ce1581ab90f267f (diff) | |
| download | Tango-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')
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(); |
