diff options
| author | Shlomo Hecht <shlomo@twine-s.com> | 2020-07-22 12:30:23 +0300 |
|---|---|---|
| committer | Shlomo Hecht <shlomo@twine-s.com> | 2020-07-22 12:30:23 +0300 |
| commit | 93bf6344f8cc37a662c19db81c4f341e5b9ed0f0 (patch) | |
| tree | 97bdd9c49faa069110ccb1cd32635fcaabd29725 /Software/Embedded_SW/Embedded | |
| parent | 66f8cf884fbd7f85976e96028c8047c0985a9d8f (diff) | |
| parent | 9aa38289b089d2518c5b0ef68e78f262fe4a31ee (diff) | |
| download | Tango-93bf6344f8cc37a662c19db81c4f341e5b9ed0f0.tar.gz Tango-93bf6344f8cc37a662c19db81c4f341e5b9ed0f0.zip | |
Merge branch 'master' of https://twinetfs.visualstudio.com/Tango/_git/Tango
Diffstat (limited to 'Software/Embedded_SW/Embedded')
4 files changed, 77 insertions, 28 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 05423b8d8..691f1c455 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 @@ -414,7 +414,7 @@ uint32_t HeadCard_Valve_Control(bool Direction) return status; } */ -uint32_t ActControlId = 0xFF; +uint32_t ActControlId = 0xFF, ActControlId1 = 0xFF; char Global_Act_Cmd_flag = 0; //Sync - prevent reset from previous command @@ -468,14 +468,47 @@ 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; } + +uint32_t HeadCard_ActControlCallBackFunction(uint32_t IfIndex, uint32_t BusyFlag) // use IfIndex for Act_ID +{ + uint32_t status = OK; + + ACTUATORS Act_ID = (ACTUATORS)(IfIndex); + + if (SafeRemoveControlCallback(ActControlId1, HeadCard_ActControlCallBackFunction )==OK) + ActControlId1 = 0xFF; + else + Report("Remove control callback failed",__FILE__,__LINE__,(int)ActControlId1,RpWarning,(int)HeadCard_ActControlCallBackFunction,0); + + if(Act_ID == ACTIN)//0 + { + Head_I2C_EXP4_0x46.bits.OUTPUT_ACTLOW_ACTIN_ON = HIGH; + } + else//if(Act_ID == ACTOUT) 1 + { + Head_I2C_EXP4_0x46.bits.OUTPUT_ACTLOW_ACTOT_ON = HIGH; + } + + Trigger_ActOnWriting();//status |= Head_Write_IO_Reg(0x46,HIGH); + + Global_Act_Cmd_flag++;//Sync the callback to the command + + //3sec delay - Timeout + ActControlId = AddControlCallback("ActuatorControl", HeadCard_ActuatorsCallBackFunction, (3* eOneSecond), TemplateDataReadCBFunction,Act_ID,0, 0 ); + + return status; +} + uint32_t HeadCard_Actuators_Control(ACTUATORS Act_ID, bool Direction) { uint32_t status = OK; @@ -499,22 +532,10 @@ uint32_t HeadCard_Actuators_Control(ACTUATORS Act_ID, bool Direction) status |= Head_Write_IO_Reg(0x46,LOW_AND_HIGH); - Task_sleep(500); + //Task_sleep(500); - if(Act_ID == ACTIN)//0 - { - Head_I2C_EXP4_0x46.bits.OUTPUT_ACTLOW_ACTIN_ON = HIGH; - } - else//if(Act_ID == ACTOUT) 1 - { - Head_I2C_EXP4_0x46.bits.OUTPUT_ACTLOW_ACTOT_ON = HIGH; - } - status |= Head_Write_IO_Reg(0x46,HIGH); - - Global_Act_Cmd_flag++;//Sync the callback to the command - - //3sec delay - Timeout - ActControlId = AddControlCallback("ActuatorControl", HeadCard_ActuatorsCallBackFunction, (3* eOneSecond), TemplateDataReadCBFunction,Act_ID,0, 0 ); + //100msec delay - (need short command - Active LOW ) + ActControlId1 = AddControlCallback("ctuatorControl", HeadCard_ActControlCallBackFunction, (/* 5 * */ eHundredMillisecond), TemplateDataReadCBFunction,Act_ID,0, 0 ); return status; } @@ -534,7 +555,7 @@ uint32_t HeadCard_ActStubCallBackFunction(uint32_t IfIndex, uint32_t BusyFlag) / { Head_I2C_EXP4_0x46.bits.OUTPUT_ACTLOW_ACTOT_ON = HIGH; } - Trigger_OutputsWriting();//status |= Head_Write_IO_Reg(0x46,HIGH); + Trigger_ActOnWriting();//status |= Head_Write_IO_Reg(0x46,HIGH); 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 f126c254b..90f197587 100644 --- a/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/I2C_Task.c +++ b/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/I2C_Task.c @@ -42,6 +42,7 @@ typedef enum HeaterWriting, Head_Inputs_Reading,// I/O Head_Outputs_Writing, + Head_ACT_ON_Writing, Head_Init_PT100, Actuators_Control, Actuators_Control_Stub, @@ -287,6 +288,18 @@ void Trigger_OutputsWriting(void) } +void Trigger_ActOnWriting(void) +{ + I2C_ReadingMessageStruc I2C_ReadingMessage; + //uint8_t Midtank_i; + + I2C_ReadingMessage.messageId = Head_ACT_ON_Writing; + if (I2C_ReadingMsgQ != NULL) + Mailbox_post(I2C_ReadingMsgQ , &I2C_ReadingMessage, BIOS_NO_WAIT); + return; + +} + void Trigger_WHS_init_IO(void) { @@ -665,8 +678,12 @@ 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: - Head_Write_IO_Reg(0x46,HIGH);//ACT + case Head_Outputs_Writing: //Currently not in use + Head_Read_IO_Reg(0x42, LOW_AND_HIGH);// + Head_Read_IO_Reg(0x46, LOW_AND_HIGH);// + break; + case Head_ACT_ON_Writing: + Head_Write_IO_Reg(0x46,HIGH);//ACT ON break; case DispenserReadData: Dispenser_EEPROM_Read_Data(I2C_ReadingMessage.parameter); 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 16f86f9ed..4b12a7151 100644 --- a/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/I2C_Task.h +++ b/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/I2C_Task.h @@ -52,6 +52,7 @@ 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_ActOnWriting(void); void Trigger_Head_Magnet(int direction); void Trigger_Head_MixerValve(int direction); void Trigger_Head_PressureArc(bool Enable_Disable); diff --git a/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/RFID_NFC/I2C_IFS_Mux.c b/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/RFID_NFC/I2C_IFS_Mux.c index 1e23508ef..601e2e18a 100644 --- a/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/RFID_NFC/I2C_IFS_Mux.c +++ b/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/RFID_NFC/I2C_IFS_Mux.c @@ -94,21 +94,30 @@ uint32_t Reset_and_Check_IFS_Availability(PANEL_BUTTON_OR_CRAT_ID Cart_ID) delayUs(5); IFS_i2c_status = I2C_Write(I2C_ID_IFS_MUX, I2C_NFC_Slave_Add, CORE_RESET_CMD, sizeof(CORE_RESET_CMD)); status |= IFS_i2c_status; - delayms(2); + delayms(3); } status |= I2C_Read(I2C_ID_IFS_MUX, I2C_NFC_Slave_Add + 1, Read_Buf, sizeof(Read_Buf)); #ifndef EVALUATION_BOARD - if((IFS_i2c_status == I2C_MASTER_ERR_ADDR_ACK)||(status == 0xFF)) - { - IFS_Availability[Cart_ID-1] = IFS_NOT_RECOGNIZED; - } - else - { - IFS_Availability[Cart_ID-1] = IFS_RECOGNIZED; - } + if((Read_Buf[0] == 0x40) && (Read_Buf[1] == 0x00) && (Read_Buf[2] == 0x03) && (Read_Buf[3] == 0x00) && (Read_Buf[4] == 0x11) && (Read_Buf[5] == 0x01))//PN7150 RESET RESPONSE + { + IFS_Availability[Cart_ID-1] = IFS_RECOGNIZED; + } + else + { + IFS_Availability[Cart_ID-1] = IFS_NOT_RECOGNIZED; + } + +// if((IFS_i2c_status == I2C_MASTER_ERR_ADDR_ACK)||(status == 0xFF)) +// { +// IFS_Availability[Cart_ID-1] = IFS_NOT_RECOGNIZED; +// } +// else +// { +// IFS_Availability[Cart_ID-1] = IFS_RECOGNIZED; +// } #else IFS_Availability[Cart_ID-1] = WITHOUT_IFS; #endif @@ -125,6 +134,7 @@ uint32_t Check_IFS_Availability() for(Cart_i = CART_1; Cart_i <= CART_3; Cart_i++) { status |= Reset_and_Check_IFS_Availability(Cart_i); + delayms(1); } return status; } |
