aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorShlomo Hecht <shlomo@twine-s.com>2020-08-30 19:27:52 +0300
committerShlomo Hecht <shlomo@twine-s.com>2020-08-30 19:27:52 +0300
commitb76f8564a5fc2904c8de299e1650b41af40a49ae (patch)
treeb862102d1f94e2640d5f2e7d25c1e6ffd054e097
parent25da934cba7a950fcc585fe0518521cbd157999e (diff)
parentf35997d7f19ffbc4f4f99dbe32ca83207e570e9c (diff)
downloadTango-b76f8564a5fc2904c8de299e1650b41af40a49ae.tar.gz
Tango-b76f8564a5fc2904c8de299e1650b41af40a49ae.zip
Merge branch 'master' of https://twinetfs.visualstudio.com/Tango/_git/Tango
-rw-r--r--Software/Embedded_SW/Embedded/Drivers/I2C_Communication/WHS_Card/D_EMC2302_Fan/WHS_Fan.c17
-rw-r--r--Software/Embedded_SW/Embedded/Drivers/I2C_Communication/WHS_Card/D_EMC2302_Fan/WHS_Fan.h3
-rw-r--r--Software/Embedded_SW/Embedded/Modules/Stubs_Handler/Progress.c17
3 files changed, 32 insertions, 5 deletions
diff --git a/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/WHS_Card/D_EMC2302_Fan/WHS_Fan.c b/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/WHS_Card/D_EMC2302_Fan/WHS_Fan.c
index 6cb64262c..895c8f73e 100644
--- a/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/WHS_Card/D_EMC2302_Fan/WHS_Fan.c
+++ b/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/WHS_Card/D_EMC2302_Fan/WHS_Fan.c
@@ -144,18 +144,33 @@ uint16_t WHS_Get_fan_tach(WHS_fan_num fan_number)
fan_driver = Select_Fan_Driver(fan_number);
tach = D_EMC2302_Read[fan_driver].Reg.TACHReading_High[(fan_number & 0x01)];
tach = ((tach << 8) | D_EMC2302_Read[fan_driver].Reg.TACHReading_Low[(fan_number & 0x01)]);
+ tach = (tach >> 3);//see data-sheet
return tach;
}
+uint16_t WHS_Fan_Tach[maxFAN] = {0,0,0,0,0,0};
+uint16_t WHS_Fan_Tach_RPM[maxFAN] = {0,0,0,0,0,0};
void Read_All_WHS_Fans_Tach()
{
WHS_fan_num fan_number = FAN1;
+ uint16_t tach = 0;
+ uint16_t m = 2; //Range bit. See data-sheet, table range decode: since the deafualt range is 01 (reported minimum RPM = 1000) the tach count multiplier is 2
for (fan_number = FAN1 ; fan_number < maxFAN; fan_number++)
{
- WHS_Read_fan_tach(fan_number);
+ tach = WHS_Read_fan_tach(fan_number);
+ if (tach < 0x1FFE)
+ {
+ WHS_Fan_Tach[fan_number] = tach;
+ WHS_Fan_Tach_RPM[fan_number] = (3932160 * m) / tach;//see data-sheet
+ }
+ else
+ {
+ WHS_Fan_Tach[fan_number] = 0;
+ WHS_Fan_Tach_RPM[fan_number] = 0;
+ }
}
}
diff --git a/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/WHS_Card/D_EMC2302_Fan/WHS_Fan.h b/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/WHS_Card/D_EMC2302_Fan/WHS_Fan.h
index a15248866..d88cdd1f8 100644
--- a/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/WHS_Card/D_EMC2302_Fan/WHS_Fan.h
+++ b/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/WHS_Card/D_EMC2302_Fan/WHS_Fan.h
@@ -101,6 +101,9 @@ typedef union
uint8_t Buf[D_EMC2302_Size];
}D_EMC2302_WRITE;
+extern uint16_t WHS_Fan_Tach[maxFAN];
+extern uint16_t WHS_Fan_Tach_RPM[maxFAN];
+
bool Read_WHS_fan_info(WHS_fan_num fan_number);
bool Test_WHS_Fan(void);
bool init_WHS_fan(void);
diff --git a/Software/Embedded_SW/Embedded/Modules/Stubs_Handler/Progress.c b/Software/Embedded_SW/Embedded/Modules/Stubs_Handler/Progress.c
index 853f6913a..d983144f3 100644
--- a/Software/Embedded_SW/Embedded/Modules/Stubs_Handler/Progress.c
+++ b/Software/Embedded_SW/Embedded/Modules/Stubs_Handler/Progress.c
@@ -814,7 +814,8 @@ void Stub_ProgressRequest(MessageContainer* requestContainer)
Task_sleep(2000);
//response.progress = Fan_Click_Info.Product_ID;
- response.progress = Head_Fan_Tach[0];
+ //response.progress = Head_Fan_Tach[0];
+ response.progress = HeadBlowersGetRPM(HEAD_FAN_RIGHT);
response.has_progress = true;
}
@@ -823,19 +824,27 @@ void Stub_ProgressRequest(MessageContainer* requestContainer)
{
Trigger_Head_Fan_Control(HEAD_FAN_LEFT, request->delay & 0xFF);
Task_sleep(2000);
- response.progress = Head_Fan_Tach[1];
+ //response.progress = Head_Fan_Tach[1];
+ response.progress = HeadBlowersGetRPM(HEAD_FAN_LEFT);
response.has_progress = true;
}
else
if ((request->amount & 0x0000FFF0) == 0xFAC0) //WHS Fan control
{
uint16_t fan_tacho = 0;
+ WHS_fan_num Fan_Id;
+ uint8_t Fan_Speed;
if (WHS_Type == WHS_TYPE_NEW)
{
- Trigger_SetWHSFanSpeed(((request->amount & 0x0000000F)-2) , request->delay & 0x000000FF);
+ Fan_Id = (request->amount & 0x0000000F)-2;//0-5
+ Fan_Speed = request->delay & 0x000000FF;
+ Trigger_SetWHSFanSpeed(Fan_Id, Fan_Speed);
Task_sleep(2000);
- fan_tacho = WHS_Get_fan_tach( (request->amount & 0x0000000F)-2);
+ Trigger_WHSReadAllFanTacho();
+ Task_sleep(1000);
+ //fan_tacho = WHS_Get_fan_tach( (request->amount & 0x0000000F)-2);
+ fan_tacho = WHS_Fan_Tach_RPM[Fan_Id];
}
response.progress = fan_tacho;
response.has_progress = true;