aboutsummaryrefslogtreecommitdiffstats
path: root/Software/Embedded_SW/Embedded
diff options
context:
space:
mode:
Diffstat (limited to 'Software/Embedded_SW/Embedded')
-rw-r--r--Software/Embedded_SW/Embedded/Drivers/I2C_Communication/Head_Card/IO_Ports/Head_IO.c85
-rw-r--r--Software/Embedded_SW/Embedded/Drivers/I2C_Communication/Head_Card/IO_Ports/Head_IO.h2
-rw-r--r--Software/Embedded_SW/Embedded/Drivers/I2C_Communication/I2C_Task.c4
-rw-r--r--Software/Embedded_SW/Embedded/Modules/Stubs_Handler/Progress.c5
4 files changed, 81 insertions, 15 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 64f9d6412..1fab5ff83 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
@@ -10,6 +10,7 @@
#include <Drivers/I2C_Communication/I2C.h>
#include "drivers/Heater/TemperatureSensor.h"
#include <Drivers/I2C_Communication/Head_Card/PT100/Head_PT100_ADC.h>
+#include "modules/control/control.h"
/*
GPIO TCA9555RTWR
@@ -322,28 +323,92 @@ uint32_t HeadCard_Valve_Control(bool Direction)
return status;
}
*/
+uint32_t ActControlId = 0xFF;
+ACTUATORS Global_Act_ID;
+uint32_t HeadCard_ActuatorsCallBackFunction(uint32_t IfIndex, uint32_t BusyFlag)
+{
+ uint32_t status = OK;
+
+ static uint8_t Counter = 0;
+
+ uint32_t Motion_Status = STOPPED;
+
+ ACTUATORS Act_ID = Global_Act_ID;
-uint32_t HeadCard_Actuators_Control(ACTUATORS Act_ID, bool Active_Low_Pwr, bool Direction)//Turn on by Short Active Low! (LOW)
+ if (SafeRemoveControlCallback(ActControlId, HeadCard_ActuatorsCallBackFunction )==OK)
+ ActControlId = 0xFF;
+ else
+ Report("Remove control callback failed",__FILE__,__LINE__,(int)ActControlId,RpWarning,(int)HeadCard_ActuatorsCallBackFunction,0);
+ ///************** do your stuff
+
+ //Read movement status
+ Motion_Status = HeadCard_Actuators_Status(Act_ID);
+
+ if(Motion_Status == MOVING)
+ {
+ //RST
+ Head_I2C_EXP2_0x42.bits.OUTPUT_ACTLOW_ACT_RST = 0x00;//Disable movement
+ status |= Head_Write_IO_Reg(0x42,HIGH);
+
+ Task_sleep(5);
+
+ Head_I2C_EXP2_0x42.bits.OUTPUT_ACTLOW_ACT_RST = 0x01;//Enable movement
+ status |= Head_Write_IO_Reg(0x42,HIGH);
+
+ Counter = Counter++;
+ }
+
+ if(Counter > 2)
+ {
+ //ERROR
+ ReportWithPackageFilter(ThreadFilter,"Error in actuator LS",__FILE__,__LINE__,Act_ID,RpMessage,Counter,0);
+
+ status = ERROR;
+ }
+
+ return status;
+}
+
+uint32_t HeadCard_Actuators_Control(ACTUATORS Act_ID, bool Direction)
{
uint32_t status = OK;
+ Global_Act_ID = Act_ID;
+
if(Act_ID == ACTIN)//0
{
- Head_I2C_EXP4_0x46.bits.OUTPUT_ACTLOW_ACTIN_ON = Active_Low_Pwr;
+ Head_I2C_EXP4_0x46.bits.OUTPUT_ACTLOW_ACTIN_ON = LOW;
}
- else//1
+ else//if(Act_ID == ACTOUT) 1
{
- Head_I2C_EXP4_0x46.bits.OUTPUT_ACTLOW_ACTOT_ON = Active_Low_Pwr;
+ Head_I2C_EXP4_0x46.bits.OUTPUT_ACTLOW_ACTOT_ON = LOW;
}
Head_I2C_EXP4_0x46.bits.OUTPUT_ACT_DIR = Direction;
status |= Head_Write_IO_Reg(0x46,LOW_AND_HIGH);
+ //Task_sleep(500);
+ delayms(800);
+
+ 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);
+
+ //5sec delay - Timeout
+ ActControlId = AddControlCallback("ActuatorControl", HeadCard_ActuatorsCallBackFunction, (4* eOneSecond), TemplateDataReadCBFunction,0,0, 0 );
+
return status;
}
+
bool HeadCard_Activate_Cover_LS = false;
typedef enum
@@ -380,20 +445,20 @@ bool Get_HeadCard_LS(HEADCARD_COVER_LS HEADCARD_LS_ID)
uint32_t HeadCard_Actuators_Status(ACTUATORS Act_ID)//
{
- uint32_t Motioin_Status = STOPPED;
+ uint32_t Motion_Status = STOPPED;
- //Head_Read_IO_Reg(0x46,HIGH);
+ Head_Read_IO_Reg(0x46,HIGH); //I2C task - Actuators_Control
if(Act_ID == ACTIN)
{
- Motioin_Status = Head_I2C_EXP4_0x46.bits.INPUT_ACTIN_EN;
+ Motion_Status = Head_I2C_EXP4_0x46.bits.INPUT_ACTIN_EN;
}
- else
+ else//if(Act_ID == ACTOUT) 1
{
- Motioin_Status = Head_I2C_EXP4_0x46.bits.INPUT_ACTOT_EN;
+ Motion_Status = Head_I2C_EXP4_0x46.bits.INPUT_ACTOT_EN;
}
- return Motioin_Status;//Active High STOPPED/MOVING
+ return Motion_Status;//Active High STOPPED/MOVING
}
diff --git a/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/Head_Card/IO_Ports/Head_IO.h b/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/Head_Card/IO_Ports/Head_IO.h
index bb5c647b4..c431ae0df 100644
--- a/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/Head_Card/IO_Ports/Head_IO.h
+++ b/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/Head_Card/IO_Ports/Head_IO.h
@@ -181,7 +181,7 @@ uint32_t Head_Read_IO_Reg(uint8_t TCA9555_ADDRESS, uint8_t Byte); //LOW/HIGH/LOW
uint32_t HeadCard_Toggle_PT100_SEL(uint8_t HEAD_CONFIG_PT100_PT_SEL);
;
-uint32_t HeadCard_Actuators_Control(ACTUATORS Act_ID, bool Active_Low_Pwr, bool Direction);
+uint32_t HeadCard_Actuators_Control(ACTUATORS Act_ID, bool Direction);
uint32_t HeadCard_Actuators_Status(ACTUATORS Act_ID);
uint32_t HeadCard_Valve_Control(bool Direction);
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 52c31bec5..ce777f393 100644
--- a/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/I2C_Task.c
+++ b/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/I2C_Task.c
@@ -437,10 +437,10 @@ void I2C_ReadingTask(UArg arg0, UArg arg1)
HeadADCPT100_SensorInitConfig();
break;
case Actuators_Control:
- HeadCard_Actuators_Control(I2C_ReadingMessage.parameter, (bool)I2C_ReadingMessage.parameter2,(bool)I2C_ReadingMessage.parameter3);
+ HeadCard_Actuators_Control(I2C_ReadingMessage.parameter, /*(bool)I2C_ReadingMessage.parameter2,*/(bool)I2C_ReadingMessage.parameter3);
break;
case Inputs_Reading:
- Head_Read_IO_Reg(0x46, HIGH);//READ HEAD CARD LS
+ Head_Read_IO_Reg(0x46, HIGH);//READ HEAD CARD LS + ACT status
break;
case Outputs_Writing:
break;
diff --git a/Software/Embedded_SW/Embedded/Modules/Stubs_Handler/Progress.c b/Software/Embedded_SW/Embedded/Modules/Stubs_Handler/Progress.c
index e968717e3..76c6579da 100644
--- a/Software/Embedded_SW/Embedded/Modules/Stubs_Handler/Progress.c
+++ b/Software/Embedded_SW/Embedded/Modules/Stubs_Handler/Progress.c
@@ -381,8 +381,9 @@ void Stub_ProgressRequest(MessageContainer* requestContainer)
if((request -> delay & 0xFFF000) == 0xCAF000)//Actuator
{
- HeadCard_Actuators_Control((ACTUATORS)((request -> delay & 0x100)>>8), (bool)((request -> delay & 0x10)>>4), (bool)((request -> delay & 0x01)));//Actuators: ID, power, Direction
- response.progress = HeadCard_Actuators_Status((ACTUATORS)(request -> delay & 0x100)>>8);
+ //HeadCard_Actuators_Control((ACTUATORS)(((request -> delay) & 0x100)>>8), /*(bool)((request -> delay & 0x10)>>4), */(bool)((request -> delay & 0x01)));//Actuators: ID, power, Direction
+ Trigger_Head_Actuators_Control((ACTUATORS)(((request -> delay) & 0x100)>>8), (bool)((request -> delay & 0x10)>>4), (bool)((request -> delay & 0x01)));//Actuators: ID, power, Direction
+ //response.progress = HeadCard_Actuators_Status((ACTUATORS)((request -> delay) & 0x100)>>8);
response.has_progress = true;
}
else