diff options
| author | Avi Levkovich <avi@twine-s.com> | 2020-08-12 13:52:06 +0300 |
|---|---|---|
| committer | Avi Levkovich <avi@twine-s.com> | 2020-08-12 13:52:06 +0300 |
| commit | e2c527adfc31e1a0f0b9585178a9535159a45593 (patch) | |
| tree | f7473dd8a7dc25756208790abe9ea8030dd8dab3 /Software | |
| parent | d3405028df939167e3e39d926c8c12b09837394b (diff) | |
| download | Tango-e2c527adfc31e1a0f0b9585178a9535159a45593.tar.gz Tango-e2c527adfc31e1a0f0b9585178a9535159a45593.zip | |
New Head fans I2C triggers
Diffstat (limited to 'Software')
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(); |
