aboutsummaryrefslogtreecommitdiffstats
path: root/Software
diff options
context:
space:
mode:
authorAvi Levkovich <avi@twine-s.com>2020-08-12 13:52:06 +0300
committerAvi Levkovich <avi@twine-s.com>2020-08-12 13:52:06 +0300
commite2c527adfc31e1a0f0b9585178a9535159a45593 (patch)
treef7473dd8a7dc25756208790abe9ea8030dd8dab3 /Software
parentd3405028df939167e3e39d926c8c12b09837394b (diff)
downloadTango-e2c527adfc31e1a0f0b9585178a9535159a45593.tar.gz
Tango-e2c527adfc31e1a0f0b9585178a9535159a45593.zip
New Head fans I2C triggers
Diffstat (limited to 'Software')
-rw-r--r--Software/Embedded_SW/Embedded/DataDef.h2
-rw-r--r--Software/Embedded_SW/Embedded/Drivers/I2C_Communication/Head_Card/Fan/Head_Fan.h4
-rw-r--r--Software/Embedded_SW/Embedded/Drivers/I2C_Communication/Head_Card/Fan/fan_click.c27
-rw-r--r--Software/Embedded_SW/Embedded/Drivers/I2C_Communication/I2C_Task.c34
-rw-r--r--Software/Embedded_SW/Embedded/Drivers/I2C_Communication/I2C_Task.h2
-rw-r--r--Software/Embedded_SW/Embedded/Modules/General/GeneralHardware.c8
6 files changed, 69 insertions, 8 deletions
diff --git a/Software/Embedded_SW/Embedded/DataDef.h b/Software/Embedded_SW/Embedded/DataDef.h
index 7ae727e09..310af654e 100644
--- a/Software/Embedded_SW/Embedded/DataDef.h
+++ b/Software/Embedded_SW/Embedded/DataDef.h
@@ -28,7 +28,7 @@
//#define EMC_FORCE_MOT_CLOCK_INTERNAL
-//#define VAC_TESTHeadCard_Actuators_Stub
+//#define VAC_TEST
//#define SPECIAL_DISPENSERS
extern bool Special_Dispensers;
diff --git a/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/Head_Card/Fan/Head_Fan.h b/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/Head_Card/Fan/Head_Fan.h
index 5956e3d08..394a69e1d 100644
--- a/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/Head_Card/Fan/Head_Fan.h
+++ b/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/Head_Card/Fan/Head_Fan.h
@@ -71,5 +71,9 @@ extern FAN_CLICK_INFO Fan_Click_Info;
extern EMC2302_READ EMC2302_Read;
uint8_t Head_Fan_PWM_Control(uint8_t Fan_ID, uint8_t PWM);
+uint8_t Head_Fan_Read_Tacho(bool Fan);
+uint8_t Head_Read_Config_Reg();
+uint8_t Head_Fan_config();
+uint8_t Head_Fans_Init();
#endif /* DRIVERS_I2C_COMMUNICATION_HEAD_CARD_FAN_HEAD_FAN_H_ */
diff --git a/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/Head_Card/Fan/fan_click.c b/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/Head_Card/Fan/fan_click.c
index 6a37a2003..728531488 100644
--- a/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/Head_Card/Fan/fan_click.c
+++ b/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/Head_Card/Fan/fan_click.c
@@ -133,7 +133,8 @@ uint8_t Head_Fan_Read_Tacho(bool Fan)
status |= I2C_Read(I2C_ID_HEAD_CARD, I2C_HEAD_FAN_SLAVE_ADD + 1, readbuffer, 1);
EMC2302_Read.Reg.TACHReading_Low[0] = readbuffer[0];
- Head_Fan_Tach[0] = (EMC2302_Read.Reg.TACHReading_High[0] << 8) | EMC2302_Read.Reg.TACHReading_Low[0];
+ Head_Fan_Tach[0] = ((EMC2302_Read.Reg.TACHReading_High[0] << 8) | EMC2302_Read.Reg.TACHReading_Low[0]) >> 3;
+
}
else
{
@@ -149,7 +150,7 @@ uint8_t Head_Fan_Read_Tacho(bool Fan)
status |= I2C_Read(I2C_ID_HEAD_CARD, I2C_HEAD_FAN_SLAVE_ADD + 1, readbuffer, 1);
EMC2302_Read.Reg.TACHReading_Low[1] = readbuffer[0];
- Head_Fan_Tach[1] = (EMC2302_Read.Reg.TACHReading_High[1] << 8) | EMC2302_Read.Reg.TACHReading_Low[1];
+ Head_Fan_Tach[1] = ((EMC2302_Read.Reg.TACHReading_High[1] << 8) | EMC2302_Read.Reg.TACHReading_Low[1]) >> 3;
}
return status;
@@ -291,6 +292,18 @@ void Test_Head_fan_Click()
Head_Fan_config();
}
+uint8_t Head_Fans_Init()
+{
+ uint8_t status = OK;
+
+ Head_Read_Config_Reg();
+ //Output is configured as a push-pull output
+ EMC2302_Write.Reg.PWM_Output_Config |= 0x3;//Bit0 Output PWM1, Bit2 Output PWM2, 0 open drain, 1 push-pull
+ Head_Fan_PWM_Output_Config();
+
+ return status;
+}
+
uint8_t Head_Fan_PWM_Control(uint8_t Fan_ID, uint8_t PWM)
{
uint8_t status = OK;
@@ -304,14 +317,14 @@ uint8_t Head_Fan_PWM_Control(uint8_t Fan_ID, uint8_t PWM)
else
status |= ERROR;
-
- EMC2302_Write.Reg.PWM_Output_Config |= (0x1 << Fan_ID);//Bit0 Output PWM1, Bit2 Output PWM2, 0 open drain, 1 push-pull
- status |= Head_Fan_PWM_Output_Config();
+ // config by Trigger_Head_Config_Fans
+ //EMC2302_Write.Reg.PWM_Output_Config |= (0x1 << Fan_ID);//Bit0 Output PWM1, Bit2 Output PWM2, 0 open drain, 1 push-pull
+ //status |= Head_Fan_PWM_Output_Config();
EMC2302_Write.Reg.Fan_Setting[Fan_ID] = Head_Fan_PWM_Command[Fan_ID]; //Fan 1 Setting - 0xFF Full PWM 0x80 = 50% FF = 100% 0 - STOP
status |= Head_Fan_Setting(Fan_ID);
- delayms(5);//TODO - check the delay
- status |= Head_Fan_Read_Tacho(Fan_ID);
+ //delayms(5);//TODO - check the delay
+ //status |= Head_Fan_Read_Tacho(Fan_ID); - use Trigger_Head_Read_Tacho to read the Tacho feedback
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 a1cf57591..29c44eac1 100644
--- a/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/I2C_Task.c
+++ b/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/I2C_Task.c
@@ -30,6 +30,8 @@
#include "modules/ids/ids_ex.h"
#include <Drivers/I2C_Communication/Dispenser_Card/EEPROM/Dispenser_EEPROM.h>
+#include <Drivers/I2C_Communication/Head_Card/Fan/fan_click.h>
+
extern Semaphore_Handle I2C_Sem;
Task_Handle I2C_Task_Handle;
Mailbox_Handle I2C_ReadingMsgQ = NULL;
@@ -47,7 +49,9 @@ typedef enum
Actuators_Control,
Actuators_Control_Stub,
Actuators_Disable,
+ HeadFanInit,//Initialization
HeadFanControl,
+ HeadFanReadTacho,
HeadMagnetAction,
HeadArcPressureAction,
HeadValveAction,
@@ -191,6 +195,18 @@ void Trigger_Head_Actuators_Disable(void)
Mailbox_post(I2C_ReadingMsgQ , &I2C_ReadingMessage, BIOS_NO_WAIT);
return;
}
+
+void Trigger_Head_Config_Fans(void)//Initialization
+{
+ I2C_ReadingMessageStruc I2C_ReadingMessage;
+
+ I2C_ReadingMessage.messageId = HeadFanInit;
+
+ if (I2C_ReadingMsgQ != NULL)
+ Mailbox_post(I2C_ReadingMsgQ , &I2C_ReadingMessage, BIOS_NO_WAIT);
+ return;
+}
+
void Trigger_Head_Fan_Control(uint32_t Fan_ID, uint16_t PWM)
{
I2C_ReadingMessageStruc I2C_ReadingMessage;
@@ -206,6 +222,18 @@ void Trigger_Head_Fan_Control(uint32_t Fan_ID, uint16_t PWM)
Mailbox_post(I2C_ReadingMsgQ , &I2C_ReadingMessage, BIOS_NO_WAIT);
return;
}
+
+void Trigger_Head_Read_Tacho(uint32_t Fan_ID)
+{
+ I2C_ReadingMessageStruc I2C_ReadingMessage;
+
+ I2C_ReadingMessage.messageId = HeadFanReadTacho;
+ I2C_ReadingMessage.parameter = Fan_ID;
+ if (I2C_ReadingMsgQ != NULL)
+ Mailbox_post(I2C_ReadingMsgQ , &I2C_ReadingMessage, BIOS_NO_WAIT);
+ return;
+}
+
void Trigger_Head_Magnet(int direction)
{
I2C_ReadingMessageStruc I2C_ReadingMessage;
@@ -654,9 +682,15 @@ void I2C_ReadingTask(UArg arg0, UArg arg1)
case Actuators_Disable:
HeadCard_Actuators_Disable();
break;
+ case HeadFanInit:
+ Head_Fans_Init();
+ break;
case HeadFanControl:
Head_Fan_PWM_Control(I2C_ReadingMessage.parameter, I2C_ReadingMessage.parameter2);
break;
+ case HeadFanReadTacho:
+ Head_Fan_Read_Tacho(I2C_ReadingMessage.parameter);
+ break;
case HeadMagnetAction:
if (I2C_ReadingMessage.parameter == OPEN_MAGNET)
HeadCard_ActivateHeadMagnet();
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 3b0409481..7aab3b448 100644
--- a/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/I2C_Task.h
+++ b/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/I2C_Task.h
@@ -49,7 +49,9 @@ void Trigger_Head_Init_PT100(void);
void Trigger_Head_Actuators_Control(uint32_t Act_ID, bool Active_Low_Pwr, bool Direction);
void Trigger_Head_Actuators_Stub(uint32_t Act_ID, bool Active_Low_Pwr, bool Direction);
void Trigger_Head_Actuators_Disable(void);
+void Trigger_Head_Config_Fans(void);
void Trigger_Head_Fan_Control(uint32_t Fan_ID, uint16_t PWM);
+void Trigger_Head_Read_Tacho(uint32_t Fan_ID);
void Trigger_InputsReading(void);
void Trigger_OutputsLatchWriting(void);
void Trigger_ActOnWriting(void);
diff --git a/Software/Embedded_SW/Embedded/Modules/General/GeneralHardware.c b/Software/Embedded_SW/Embedded/Modules/General/GeneralHardware.c
index aa941da93..ac2009bcd 100644
--- a/Software/Embedded_SW/Embedded/Modules/General/GeneralHardware.c
+++ b/Software/Embedded_SW/Embedded/Modules/General/GeneralHardware.c
@@ -163,8 +163,16 @@ uint32_t HWConfigurationInit(void)
{
//Activation the heaters latch + sensors card
Trigger_OutputsLatchWriting();//need to be done ~ at least 100uSec after Trigger_Head_io_Init
+
+ if (Head_Type == HEAD_TYPE_ARC)
+ {
+ Trigger_Head_Config_Fans();//Initialization
+ }
+
}
+
+
//EmbeddedParametersInit();
IDS_Dispenser_Content_Init();
//ProcessParamsInit();