aboutsummaryrefslogtreecommitdiffstats
path: root/Software/Embedded_SW/Embedded
diff options
context:
space:
mode:
authorShlomo Hecht <shlomo@twine-s.com>2020-07-22 12:30:23 +0300
committerShlomo Hecht <shlomo@twine-s.com>2020-07-22 12:30:23 +0300
commit93bf6344f8cc37a662c19db81c4f341e5b9ed0f0 (patch)
tree97bdd9c49faa069110ccb1cd32635fcaabd29725 /Software/Embedded_SW/Embedded
parent66f8cf884fbd7f85976e96028c8047c0985a9d8f (diff)
parent9aa38289b089d2518c5b0ef68e78f262fe4a31ee (diff)
downloadTango-93bf6344f8cc37a662c19db81c4f341e5b9ed0f0.tar.gz
Tango-93bf6344f8cc37a662c19db81c4f341e5b9ed0f0.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/I2C_Communication/Head_Card/IO_Ports/Head_IO.c55
-rw-r--r--Software/Embedded_SW/Embedded/Drivers/I2C_Communication/I2C_Task.c21
-rw-r--r--Software/Embedded_SW/Embedded/Drivers/I2C_Communication/I2C_Task.h1
-rw-r--r--Software/Embedded_SW/Embedded/Drivers/I2C_Communication/RFID_NFC/I2C_IFS_Mux.c28
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;
}