|
@@ -13,19 +13,23 @@
|
|
|
Beginning of File, do not put anything above here except notes
|
|
|
Compiler Directives:
|
|
|
*************************************************************************/
|
|
|
+#include "torquesensor.h"
|
|
|
#include "syspar.h"
|
|
|
-#include "typedefine.h"
|
|
|
#include "mathtool.h"
|
|
|
#include "torquesensor.h"
|
|
|
#include "CodePara.h"
|
|
|
#include "canAppl.h"
|
|
|
#include "api_rt.h"
|
|
|
+
|
|
|
+#ifdef RUN_ARCH_SIM
|
|
|
+#include "test_user.h"
|
|
|
+#endif
|
|
|
/******************************
|
|
|
*
|
|
|
* static Parameter
|
|
|
*
|
|
|
******************************/
|
|
|
-static LPF_OUT scm_stTorSensorLpf;
|
|
|
+static LPF_OUT torq_pvt_stTorSensorLpf;
|
|
|
static volatile SWORD TorqOffsetReg[TORQ_OFFSET_NUM]= {
|
|
|
640, //-11 C
|
|
|
718, //8 C
|
|
@@ -91,8 +95,8 @@ TORQUESENSOR_OUT torsensor_stTorSensorOut = TORQUESENSOR_OUT_DEFAULT;
|
|
|
void torsensor_voTorSensorCof(void)
|
|
|
{
|
|
|
ULONG ulLpfTm = 0;
|
|
|
- UWORD i = 0;
|
|
|
-
|
|
|
+ UWORD i = 0, uwAverageOffset = 0;
|
|
|
+
|
|
|
// torsensor_stTorSensorCof.uwMaxSensorTorquePu = ((ULONG)TORQUE_MAX_RANGE << 14) / TORQUEBASE; // Q14
|
|
|
torsensor_stTorSensorCof.uwMinSensorTorquePu = ((ULONG)TORQUE_MIN_RANGE << 14) / TORQUEBASE; // Q14
|
|
|
torsensor_stTorSensorCof.uwMaxSensorVolOutputPu = (ULONG)TORQUE_VOLTAGE_MAX_RANGE << 14 / VBASE;
|
|
@@ -102,7 +106,7 @@ void torsensor_voTorSensorCof(void)
|
|
|
|
|
|
if(torsensor_stTorSensorCof.uwTorqueOffsetConfirmFlg == FALSE)
|
|
|
{
|
|
|
- #if (TORSENSOR_USEMOL == TORSENSOR_USEDEFAULT)
|
|
|
+#if (TORSENSOR_USEMOL == TORSENSOR_USEDEFAULT)
|
|
|
torsensor_stTorSensorCof.uwTorqueOffset = TORQUE_VOLTAGE_MIN_RANGE * 4096 / 3300;
|
|
|
#elif (TORSENSOR_USEMOL == TORSENSOR_USEEE)
|
|
|
torsensor_stTorSensorCof.uwTorqueOffsetPowerUp = iAdc_GetResultPointer(0)[HW_ADC_TORQ_CH];
|
|
@@ -125,57 +129,21 @@ void torsensor_voTorSensorCof(void)
|
|
|
MC_UpcInfo.stSensorInfo.uwSaveFlg = 1;
|
|
|
}
|
|
|
else
|
|
|
- {
|
|
|
- UWORD AverageOffset = 0;
|
|
|
-// AverageOffset = ((SLONG)torsensor_stTorSensorCof.uwTorqueOffsetNow1 + torsensor_stTorSensorCof.uwTorqueOffsetNow2 +
|
|
|
-// torsensor_stTorSensorCof.uwTorqueOffsetNow3 + torsensor_stTorSensorCof.uwTorqueOffsetNow4)>>2;
|
|
|
-// if( ((SWORD)torsensor_stTorSensorCof.uwTorqueOffsetPowerUp - torsensor_stTorSensorCof.uwTorqueOffsetOrign) > 200 )
|
|
|
-// {
|
|
|
-// }
|
|
|
-// else
|
|
|
-// {
|
|
|
-// torsensor_stTorSensorCof.uwTorqueOffsetNow1 = torsensor_stTorSensorCof.uwTorqueOffsetNow2;
|
|
|
-// torsensor_stTorSensorCof.uwTorqueOffsetNow2 = torsensor_stTorSensorCof.uwTorqueOffsetNow3;
|
|
|
-// torsensor_stTorSensorCof.uwTorqueOffsetNow3 = torsensor_stTorSensorCof.uwTorqueOffsetNow4;
|
|
|
-// torsensor_stTorSensorCof.uwTorqueOffsetNow4 = torsensor_stTorSensorCof.uwTorqueOffsetPowerUp;
|
|
|
-//
|
|
|
-// cp_stFlg.ParaSaveEEFlg = TRUE;
|
|
|
-// cp_stFlg.ParaUpdateFlg = TRUE;
|
|
|
-// //cp_stFlg.ParaSensorInfoUpdateFlg = TRUE;
|
|
|
-// //cp_stFlg.ParaAssistUpdateFinishFlg = TRUE;
|
|
|
-// MC_UpcInfo.stSensorInfo.uwSaveFlg = TRUE;
|
|
|
-// }
|
|
|
-//
|
|
|
-// if( torsensor_stTorSensorCof.uwTorqueNowAllHasValueFlg == TRUE )
|
|
|
-// {
|
|
|
-// if((AverageOffset - torsensor_stTorSensorCof.uwTorqueOffsetOrign)>400 || (AverageOffset - torsensor_stTorSensorCof.uwTorqueOffsetOrign)<-400)
|
|
|
-// {
|
|
|
-// torsensor_stTorSensorCof.uwTorqueOffset = torsensor_stTorSensorCof.uwTorqueOffsetOrign;
|
|
|
-// }
|
|
|
-// else
|
|
|
-// {
|
|
|
-// torsensor_stTorSensorCof.uwTorqueOffset = AverageOffset;
|
|
|
-// }
|
|
|
-// }
|
|
|
-// else
|
|
|
-// {
|
|
|
-// torsensor_stTorSensorCof.uwTorqueOffset = torsensor_stTorSensorCof.uwTorqueOffsetOrign;
|
|
|
-// }
|
|
|
-
|
|
|
-
|
|
|
+ {
|
|
|
/* Compare with AvgOffset */
|
|
|
if(torsensor_stTorSensorCof.uwTorqueNowAllHasValueFlg == TRUE)
|
|
|
{
|
|
|
- AverageOffset = (UWORD)(((ULONG)torsensor_stTorSensorCof.uwTorqueOffsetNow1 + torsensor_stTorSensorCof.uwTorqueOffsetNow2 +
|
|
|
+ uwAverageOffset = (UWORD)(((ULONG)torsensor_stTorSensorCof.uwTorqueOffsetNow1 + torsensor_stTorSensorCof.uwTorqueOffsetNow2 +
|
|
|
torsensor_stTorSensorCof.uwTorqueOffsetNow3 + torsensor_stTorSensorCof.uwTorqueOffsetNow4)>>2);
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
- AverageOffset = torsensor_stTorSensorCof.uwTorqueOffsetOrign;
|
|
|
+ uwAverageOffset = torsensor_stTorSensorCof.uwTorqueOffsetOrign;
|
|
|
}
|
|
|
- if(abs((SWORD)torsensor_stTorSensorCof.uwTorqueOffsetPowerUp - AverageOffset) > 200)
|
|
|
+
|
|
|
+ if(abs((SWORD)torsensor_stTorSensorCof.uwTorqueOffsetPowerUp - (SWORD)uwAverageOffset) > 200)
|
|
|
{
|
|
|
- torsensor_stTorSensorCof.uwTorqueOffset = AverageOffset;
|
|
|
+ torsensor_stTorSensorCof.uwTorqueOffset = uwAverageOffset;
|
|
|
}
|
|
|
else
|
|
|
{
|
|
@@ -192,44 +160,25 @@ void torsensor_voTorSensorCof(void)
|
|
|
|
|
|
torsensor_stTorSensorCof.uwTorqueOffset = torsensor_stTorSensorCof.uwTorqueOffsetPowerUp;
|
|
|
}
|
|
|
-
|
|
|
}
|
|
|
- #endif
|
|
|
+#endif
|
|
|
torsensor_stTorSensorCof.uwTorqueOffsetConfirmFlg = TRUE;
|
|
|
}
|
|
|
- torsensor_stTorSensorCof.uwSensorVolPerTorqDefault = TORQUE_VOLTAGE_PER_NM;
|
|
|
-
|
|
|
- torsensor_stTorSensorCof.uwSensorVolPerTorq1 =
|
|
|
- (UWORD)((((ULONG)3300 * (torsensor_stTorSensorCof.uwBikeTorStep1ADC - torsensor_stTorSensorCof.uwTorqueOffset)) >> 12) *10 *10/
|
|
|
- (torsensor_stTorSensorCof.uwBikeTorStep1RealNm - 0));
|
|
|
|
|
|
- torsensor_stTorSensorCof.uwSensorVolPerTorq2 =
|
|
|
- (UWORD)((((ULONG)3300 * (torsensor_stTorSensorCof.uwBikeTorStep2ADC - torsensor_stTorSensorCof.uwBikeTorStep1ADC)) >> 12) *10 *10/
|
|
|
- (torsensor_stTorSensorCof.uwBikeTorStep2RealNm - torsensor_stTorSensorCof.uwBikeTorStep1RealNm));
|
|
|
-
|
|
|
- torsensor_stTorSensorCof.uwSensorVolPerTorq3 =
|
|
|
- (UWORD)((((ULONG)3300 * (torsensor_stTorSensorCof.uwBikeTorStep3ADC - torsensor_stTorSensorCof.uwBikeTorStep2ADC)) >> 12) *10 *10/
|
|
|
- (torsensor_stTorSensorCof.uwBikeTorStep3RealNm - torsensor_stTorSensorCof.uwBikeTorStep2RealNm));
|
|
|
-
|
|
|
- torsensor_stTorSensorCof.uwSensorVolPerTorq4 =
|
|
|
- (UWORD)((((ULONG)3300 * (torsensor_stTorSensorCof.uwBikeTorStep4ADC - torsensor_stTorSensorCof.uwBikeTorStep3ADC)) >> 12) *10*10 /
|
|
|
- (torsensor_stTorSensorCof.uwBikeTorStep4RealNm - torsensor_stTorSensorCof.uwBikeTorStep3RealNm));
|
|
|
+ torsensor_stTorSensorCof.uwSensorVolPerTorqDefault = TORQUE_VOLTAGE_PER_NM;
|
|
|
|
|
|
torsensor_stTorSensorCof.ulTorqueReg2PuDefault = (ULONG)((((UQWORD)33 << 24) / 10) / (1 << ADC_RESOLUTION_BIT) / TORQUE_VOLTAGE_SEN2MCUGAIN * 100 * 1000 /
|
|
|
torsensor_stTorSensorCof.uwSensorVolPerTorqDefault / TORQUEBASE *
|
|
|
10); // 3.3/4096/harwaregain/VolPerNm/TorqueBase;
|
|
|
- torsensor_stTorSensorCof.ulTorqueReg2Pu1 = (ULONG)((((UQWORD)33 << 24) / 10) / (1 << ADC_RESOLUTION_BIT) / TORQUE_VOLTAGE_SEN2MCUGAIN * 100 * 1000 /
|
|
|
- torsensor_stTorSensorCof.uwSensorVolPerTorq1 / TORQUEBASE *
|
|
|
- 10*10); // 3.3/4096/harwaregain/VolPerNm/TorqueBase;
|
|
|
- torsensor_stTorSensorCof.ulTorqueReg2Pu2 = (ULONG)((((UQWORD)33 << 24) / 10) / (1 << ADC_RESOLUTION_BIT) / TORQUE_VOLTAGE_SEN2MCUGAIN * 100 * 1000 /
|
|
|
- torsensor_stTorSensorCof.uwSensorVolPerTorq2 / TORQUEBASE *
|
|
|
- 10*10); // 3.3/4096/harwaregain/VolPerNm/TorqueBase;
|
|
|
- torsensor_stTorSensorCof.ulTorqueReg2Pu3 = (ULONG)((((UQWORD)33 << 24) / 10) / (1 << ADC_RESOLUTION_BIT) / TORQUE_VOLTAGE_SEN2MCUGAIN * 100 * 1000 /
|
|
|
- torsensor_stTorSensorCof.uwSensorVolPerTorq3 / TORQUEBASE *
|
|
|
- 10*10); // 3.3/4096/harwaregain/VolPerNm/TorqueBase;
|
|
|
- torsensor_stTorSensorCof.ulTorqueReg2Pu4 = (ULONG)((((UQWORD)33 << 24) / 10) / (1 << ADC_RESOLUTION_BIT) / TORQUE_VOLTAGE_SEN2MCUGAIN * 100 * 1000 /
|
|
|
- torsensor_stTorSensorCof.uwSensorVolPerTorq4 / TORQUEBASE *
|
|
|
- 10*10); // 3.3/4096/harwaregain/VolPerNm/TorqueBase;
|
|
|
+
|
|
|
+ torsensor_stTorSensorCof.ulTorqueReg2Pu1 = (ULONG)(((UQWORD)(torsensor_stTorSensorCof.uwBikeTorStep1RealNm - 0) << 24) /
|
|
|
+ (torsensor_stTorSensorCof.uwBikeTorStep1ADC - torsensor_stTorSensorCof.uwTorqueOffset) /TORQUEBASE);
|
|
|
+ torsensor_stTorSensorCof.ulTorqueReg2Pu2 = (ULONG)(((UQWORD)(torsensor_stTorSensorCof.uwBikeTorStep2RealNm - torsensor_stTorSensorCof.uwBikeTorStep1RealNm) << 24) /
|
|
|
+ (torsensor_stTorSensorCof.uwBikeTorStep2ADC - torsensor_stTorSensorCof.uwBikeTorStep1ADC) /TORQUEBASE);
|
|
|
+ torsensor_stTorSensorCof.ulTorqueReg2Pu3 = (ULONG)(((UQWORD)(torsensor_stTorSensorCof.uwBikeTorStep3RealNm - torsensor_stTorSensorCof.uwBikeTorStep2RealNm) << 24) /
|
|
|
+ (torsensor_stTorSensorCof.uwBikeTorStep3ADC - torsensor_stTorSensorCof.uwBikeTorStep2ADC) /TORQUEBASE);
|
|
|
+ torsensor_stTorSensorCof.ulTorqueReg2Pu4 = (ULONG)(((UQWORD)(torsensor_stTorSensorCof.uwBikeTorStep4RealNm - torsensor_stTorSensorCof.uwBikeTorStep3RealNm) << 24) /
|
|
|
+ (torsensor_stTorSensorCof.uwBikeTorStep4ADC - torsensor_stTorSensorCof.uwBikeTorStep3ADC) /TORQUEBASE);
|
|
|
|
|
|
torsensor_stTorSensorCof.uwBikeTorStep1NmPu = (UWORD)(((ULONG)torsensor_stTorSensorCof.uwBikeTorStep1RealNm << 14)/TORQUEBASE);
|
|
|
torsensor_stTorSensorCof.uwBikeTorStep2NmPu = (UWORD)(((ULONG)torsensor_stTorSensorCof.uwBikeTorStep2RealNm << 14)/TORQUEBASE);
|
|
@@ -238,8 +187,9 @@ void torsensor_voTorSensorCof(void)
|
|
|
|
|
|
/* Torque Sensor limit coef */
|
|
|
ulLpfTm = 1000000 / torsensor_stTorSensorCof.uwTorSensorLPFFrq;
|
|
|
- mth_voLPFilterCoef(ulLpfTm, torsensor_stTorSensorCof.uwTorVolLPFDisFrq, &scm_stTorSensorLpf.uwKx);
|
|
|
+ mth_voLPFilterCoef(ulLpfTm, torsensor_stTorSensorCof.uwTorVolLPFDisFrq, &torq_pvt_stTorSensorLpf.uwKx);
|
|
|
|
|
|
+ /* Torque Offset Correction Coef */
|
|
|
// for (i = 0; i < (TORQ_OFFSET_NUM - 1); i++)
|
|
|
// {
|
|
|
// TorqOffsetCof[i] = (((SLONG)TorqOffsetReg[i+1] - (SLONG)TorqOffsetReg[i]) << 12) /(TorqOffsetTemp[i+1] - TorqOffsetTemp[i]); //Q12
|
|
@@ -272,9 +222,7 @@ void torsensor_voTorSensorInit(void)
|
|
|
torsensor_stTorSensorOut.blTorqueErrorFlg = FALSE;
|
|
|
mth_voLPFilterCoef(1000000 / 1, EVENT_1MS_HZ, &tst_dynOffsetLpf.uwKx); //25Hz
|
|
|
tstdynOffset= iAdc_GetResultPointer(0)[HW_ADC_TORQ_CH];
|
|
|
- tst_dynOffsetLpf.slY.sw.hi = (SWORD)iAdc_GetResultPointer(0)[HW_ADC_TORQ_CH];
|
|
|
- /* Torque Sensor limit coef */
|
|
|
-
|
|
|
+ tst_dynOffsetLpf.slY.sw.hi = (SWORD)iAdc_GetResultPointer(0)[HW_ADC_TORQ_CH];
|
|
|
}
|
|
|
|
|
|
/*************************************************************************
|
|
@@ -378,8 +326,8 @@ void torsensor_voTorSensorInit(void)
|
|
|
// TorqValuePu = torsensor_stTorSensorCof.uwBikeTorStep4NmPu;
|
|
|
// }
|
|
|
// torsensor_stTorSensorOut.uwTorquePu=TorqValuePu;
|
|
|
-// mth_voLPFilter(torsensor_stTorSensorOut.uwTorquePu, &scm_stTorSensorLpf);
|
|
|
-// torsensor_stTorSensorOut.uwTorqueLPFPu = scm_stTorSensorLpf.slY.sw.hi;
|
|
|
+// mth_voLPFilter(torsensor_stTorSensorOut.uwTorquePu, &torq_pvt_stTorSensorLpf);
|
|
|
+// torsensor_stTorSensorOut.uwTorqueLPFPu = torq_pvt_stTorSensorLpf.slY.sw.hi;
|
|
|
// TorqValue = (ULONG)TorqValuePu * TORQUEBASE >> 14;
|
|
|
//
|
|
|
// //TorqValue = ((torsensor_stTorSensorOut.uwTorqueReg - tstTorqOffset) << 12 )/tstSencitiveset;
|
|
@@ -395,7 +343,7 @@ void torsensor_voTorSensorInit(void)
|
|
|
****************************************************************/
|
|
|
static UWORD tor_pvt_uwOffsetTarget = 0;
|
|
|
static UWORD tor_pvt_uwOffsetMax = 0,tor_pvt_uwOffsetMin = 4096;
|
|
|
-static ULONG tor_pvt_ulCnt = 0;
|
|
|
+static ULONG tor_pvt_ulCnt = 0, tor_pvt_ulCnt2 = 0;
|
|
|
void torsensor_voOffsetUpdate(void)
|
|
|
{
|
|
|
SWORD swTorDelta;
|
|
@@ -405,7 +353,12 @@ void torsensor_voOffsetUpdate(void)
|
|
|
swTorDelta = (SWORD)tor_pvt_uwOffsetMax - (SWORD)tor_pvt_uwOffsetMin;
|
|
|
if(swTorDelta > 40)
|
|
|
{
|
|
|
- tor_pvt_ulCnt = 0;
|
|
|
+ tor_pvt_ulCnt = 0;
|
|
|
+ tor_pvt_uwOffsetTarget = torsensor_stTorSensorCof.uwTorqueOffset;
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ tor_pvt_uwOffsetTarget = (tor_pvt_uwOffsetMax + tor_pvt_uwOffsetMin) >> 1;
|
|
|
}
|
|
|
tor_pvt_uwOffsetMax = 0;
|
|
|
tor_pvt_uwOffsetMin = 4096;
|
|
@@ -422,13 +375,11 @@ void torsensor_voOffsetUpdate(void)
|
|
|
tor_pvt_uwOffsetMax = torsensor_stTorSensorOut.uwTorqueReg;
|
|
|
}
|
|
|
}
|
|
|
-
|
|
|
+
|
|
|
if(tor_pvt_ulCnt > TORQUE_90S_1MSCNT)
|
|
|
{
|
|
|
- swTorDelta = (SWORD)tor_pvt_uwOffsetMax - (SWORD)tor_pvt_uwOffsetMin;
|
|
|
- if(swTorDelta < 40)
|
|
|
+ if(tor_pvt_uwOffsetTarget != torsensor_stTorSensorCof.uwTorqueOffset)
|
|
|
{
|
|
|
- tor_pvt_uwOffsetTarget = (tor_pvt_uwOffsetMax + tor_pvt_uwOffsetMin) >> 1;
|
|
|
if(torsensor_stTorSensorCof.uwTorqueOffset < tor_pvt_uwOffsetTarget - 20)
|
|
|
{
|
|
|
torsensor_stTorSensorCof.uwTorqueOffset += 20;
|
|
@@ -439,17 +390,13 @@ void torsensor_voOffsetUpdate(void)
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
- torsensor_stTorSensorCof.uwTorqueOffset = tor_pvt_uwOffsetTarget;
|
|
|
+ torsensor_stTorSensorCof.uwTorqueOffset = tor_pvt_uwOffsetTarget;
|
|
|
}
|
|
|
|
|
|
- torsensor_stTorSensorCof.uwSensorVolPerTorq1 =
|
|
|
- (UWORD)((((ULONG)3300 * (torsensor_stTorSensorCof.uwBikeTorStep1ADC - torsensor_stTorSensorCof.uwTorqueOffset)) >> 12) *10 *10/
|
|
|
- (torsensor_stTorSensorCof.uwBikeTorStep1RealNm - 0));
|
|
|
-
|
|
|
- torsensor_stTorSensorCof.ulTorqueReg2Pu1 = (ULONG)((((SQWORD)33 << 24) / 10) / (1 << ADC_RESOLUTION_BIT) / TORQUE_VOLTAGE_SEN2MCUGAIN * 100 * 1000 /
|
|
|
- torsensor_stTorSensorCof.uwSensorVolPerTorq1 / TORQUEBASE *
|
|
|
- 10*10); // 3.3/4096/harwaregain/VolPerNm/TorqueBase;
|
|
|
+ torsensor_stTorSensorCof.ulTorqueReg2Pu1 = (ULONG)(((UQWORD)(torsensor_stTorSensorCof.uwBikeTorStep1RealNm - 0) << 24) /
|
|
|
+ (torsensor_stTorSensorCof.uwBikeTorStep1ADC - torsensor_stTorSensorCof.uwTorqueOffset) /TORQUEBASE);
|
|
|
}
|
|
|
+
|
|
|
tor_pvt_ulCnt = 0;
|
|
|
}
|
|
|
}
|
|
@@ -464,95 +411,56 @@ void torsensor_voOffsetUpdate(void)
|
|
|
****************************************************************/
|
|
|
void torsensor_voTorADC(void) // need to match ADC_StartConversion(ADC1);
|
|
|
{
|
|
|
+ torsensor_stTorSensorOut.uwTorqueReg = iAdc_GetResultPointer(0)[HW_ADC_TORQ_CH];
|
|
|
+#if (TORSENSOR_USEMOL == TORSENSOR_USEDEFAULT)
|
|
|
+ torsensor_stTorSensorOut.uwTorquePu =
|
|
|
+ (((SQWORD)abs((SWORD)(torsensor_stTorSensorOut.uwTorqueReg) - torsensor_stTorSensorCof.uwTorqueOffset)) *
|
|
|
+ torsensor_stTorSensorCof.ulTorqueReg2PuDefault) >>
|
|
|
+ 10; // Q14
|
|
|
|
|
|
-
|
|
|
- if (torsensor_stTorSensorOut.blTorqueErrorFlg == TRUE)
|
|
|
+#elif (TORSENSOR_USEMOL == TORSENSOR_USEEE)
|
|
|
+ if (torsensor_stTorSensorOut.uwTorqueReg <= torsensor_stTorSensorCof.uwTorqueOffset)
|
|
|
{
|
|
|
torsensor_stTorSensorOut.uwTorquePu = 0;
|
|
|
- torsensor_stTorSensorOut.uwTorqueReg = iAdc_GetResultPointer(0)[HW_ADC_TORQ_CH];
|
|
|
- if (torsensor_stTorSensorOut.uwTorqueReg < 4000 && torsensor_stTorSensorOut.uwTorqueReg > 10) // output 0mv - 3000mv
|
|
|
- {
|
|
|
- torsensor_stTorSensorOut.uwTorqueErrorCnt++;
|
|
|
- if (torsensor_stTorSensorOut.uwTorqueErrorCnt > 1000)
|
|
|
- {
|
|
|
- torsensor_stTorSensorOut.blTorqueErrorFlg = FALSE;
|
|
|
- torsensor_voTorSensorInit();
|
|
|
- }
|
|
|
- }
|
|
|
- else
|
|
|
- {
|
|
|
- torsensor_stTorSensorOut.uwTorqueErrorCnt = 0;
|
|
|
- }
|
|
|
}
|
|
|
- else
|
|
|
+ else if (torsensor_stTorSensorOut.uwTorqueReg <= torsensor_stTorSensorCof.uwBikeTorStep1ADC)
|
|
|
{
|
|
|
- torsensor_stTorSensorOut.uwTorqueReg = iAdc_GetResultPointer(0)[HW_ADC_TORQ_CH]; // TorSensor_uwDMAReg;
|
|
|
-#if (TORSENSOR_USEMOL == TORSENSOR_USEDEFAULT)
|
|
|
- torsensor_stTorSensorOut.uwTorquePu =
|
|
|
- (((SQWORD)abs((SWORD)(torsensor_stTorSensorOut.uwTorqueReg) - torsensor_stTorSensorCof.uwTorqueOffset)) *
|
|
|
- torsensor_stTorSensorCof.ulTorqueReg2PuDefault) >>
|
|
|
- 10; // Q14
|
|
|
-#elif (TORSENSOR_USEMOL == TORSENSOR_USEEE)
|
|
|
-
|
|
|
- if (torsensor_stTorSensorOut.uwTorqueReg <= torsensor_stTorSensorCof.uwTorqueOffset)
|
|
|
- {
|
|
|
- torsensor_stTorSensorOut.uwTorquePu = 0;
|
|
|
- }
|
|
|
- else if (torsensor_stTorSensorOut.uwTorqueReg <= torsensor_stTorSensorCof.uwBikeTorStep1ADC)
|
|
|
- {
|
|
|
- torsensor_stTorSensorOut.uwTorquePu = (UWORD)(0 +
|
|
|
- ((((UQWORD)abs((SWORD)torsensor_stTorSensorOut.uwTorqueReg - torsensor_stTorSensorCof.uwTorqueOffset)) *
|
|
|
- torsensor_stTorSensorCof.ulTorqueReg2Pu1) >> 10)); // Q14
|
|
|
- }
|
|
|
- else if (torsensor_stTorSensorOut.uwTorqueReg <= torsensor_stTorSensorCof.uwBikeTorStep2ADC)
|
|
|
- {
|
|
|
- torsensor_stTorSensorOut.uwTorquePu = (UWORD)(torsensor_stTorSensorCof.uwBikeTorStep1NmPu +
|
|
|
- ((((UQWORD)abs((SWORD)torsensor_stTorSensorOut.uwTorqueReg - torsensor_stTorSensorCof.uwBikeTorStep1ADC)) *
|
|
|
- torsensor_stTorSensorCof.ulTorqueReg2Pu2) >> 10)); // Q14
|
|
|
+ torsensor_stTorSensorOut.uwTorquePu = (UWORD)(0 +
|
|
|
+ ((((UQWORD)abs((SWORD)torsensor_stTorSensorOut.uwTorqueReg - torsensor_stTorSensorCof.uwTorqueOffset)) *
|
|
|
+ torsensor_stTorSensorCof.ulTorqueReg2Pu1) >> 10)); // Q14
|
|
|
+ }
|
|
|
+ else if (torsensor_stTorSensorOut.uwTorqueReg <= torsensor_stTorSensorCof.uwBikeTorStep2ADC)
|
|
|
+ {
|
|
|
+ torsensor_stTorSensorOut.uwTorquePu = (UWORD)(torsensor_stTorSensorCof.uwBikeTorStep1NmPu +
|
|
|
+ ((((UQWORD)abs((SWORD)torsensor_stTorSensorOut.uwTorqueReg - torsensor_stTorSensorCof.uwBikeTorStep1ADC)) *
|
|
|
+ torsensor_stTorSensorCof.ulTorqueReg2Pu2) >> 10)); // Q14
|
|
|
|
|
|
- }
|
|
|
- else if (torsensor_stTorSensorOut.uwTorqueReg <= torsensor_stTorSensorCof.uwBikeTorStep3ADC)
|
|
|
- {
|
|
|
- torsensor_stTorSensorOut.uwTorquePu = (UWORD)(torsensor_stTorSensorCof.uwBikeTorStep2NmPu +
|
|
|
- ((((UQWORD)abs((SWORD)torsensor_stTorSensorOut.uwTorqueReg - torsensor_stTorSensorCof.uwBikeTorStep2ADC)) *
|
|
|
- torsensor_stTorSensorCof.ulTorqueReg2Pu3) >> 10)); // Q14
|
|
|
+ }
|
|
|
+ else if (torsensor_stTorSensorOut.uwTorqueReg <= torsensor_stTorSensorCof.uwBikeTorStep3ADC)
|
|
|
+ {
|
|
|
+ torsensor_stTorSensorOut.uwTorquePu = (UWORD)(torsensor_stTorSensorCof.uwBikeTorStep2NmPu +
|
|
|
+ ((((UQWORD)abs((SWORD)torsensor_stTorSensorOut.uwTorqueReg - torsensor_stTorSensorCof.uwBikeTorStep2ADC)) *
|
|
|
+ torsensor_stTorSensorCof.ulTorqueReg2Pu3) >> 10)); // Q14
|
|
|
|
|
|
- }
|
|
|
- else if (torsensor_stTorSensorOut.uwTorqueReg <= torsensor_stTorSensorCof.uwBikeTorStep4ADC)
|
|
|
- {
|
|
|
- torsensor_stTorSensorOut.uwTorquePu = (UWORD)(torsensor_stTorSensorCof.uwBikeTorStep3NmPu +
|
|
|
- ((((UQWORD)abs((SWORD)torsensor_stTorSensorOut.uwTorqueReg - torsensor_stTorSensorCof.uwBikeTorStep3ADC)) *
|
|
|
- torsensor_stTorSensorCof.ulTorqueReg2Pu4) >> 10)); // Q14
|
|
|
+ }
|
|
|
+ else if (torsensor_stTorSensorOut.uwTorqueReg <= torsensor_stTorSensorCof.uwBikeTorStep4ADC)
|
|
|
+ {
|
|
|
+ torsensor_stTorSensorOut.uwTorquePu = (UWORD)(torsensor_stTorSensorCof.uwBikeTorStep3NmPu +
|
|
|
+ ((((UQWORD)abs((SWORD)torsensor_stTorSensorOut.uwTorqueReg - torsensor_stTorSensorCof.uwBikeTorStep3ADC)) *
|
|
|
+ torsensor_stTorSensorCof.ulTorqueReg2Pu4) >> 10)); // Q14
|
|
|
|
|
|
- }
|
|
|
- else
|
|
|
- {
|
|
|
- torsensor_stTorSensorOut.uwTorquePu = torsensor_stTorSensorCof.uwBikeTorStep4NmPu;
|
|
|
- }
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ torsensor_stTorSensorOut.uwTorquePu = torsensor_stTorSensorCof.uwBikeTorStep4NmPu;
|
|
|
+ }
|
|
|
|
|
|
#endif
|
|
|
- mth_voLPFilter((SWORD)torsensor_stTorSensorOut.uwTorquePu, &scm_stTorSensorLpf);
|
|
|
- torsensor_stTorSensorOut.uwTorqueLPFPu = (UWORD)scm_stTorSensorLpf.slY.sw.hi;
|
|
|
- torsensor_stTorSensorOut.uwTorquePercent = (UWORD)(((ULONG)torsensor_stTorSensorOut.uwTorqueLPFPu << 14) /
|
|
|
- (torsensor_stTorSensorCof.uwMaxSensorTorquePu - torsensor_stTorSensorCof.uwMinSensorTorquePu)); // Q15
|
|
|
+ mth_voLPFilter((SWORD)torsensor_stTorSensorOut.uwTorquePu, &torq_pvt_stTorSensorLpf);
|
|
|
+ torsensor_stTorSensorOut.uwTorqueLPFPu = (UWORD)torq_pvt_stTorSensorLpf.slY.sw.hi;
|
|
|
+ torsensor_stTorSensorOut.uwTorquePercent = (UWORD)(((ULONG)torsensor_stTorSensorOut.uwTorqueLPFPu << 14) /
|
|
|
+ (torsensor_stTorSensorCof.uwMaxSensorTorquePu - torsensor_stTorSensorCof.uwMinSensorTorquePu)); // Q15
|
|
|
|
|
|
- if (torsensor_stTorSensorOut.uwTorqueReg > 4000 || torsensor_stTorSensorOut.uwTorqueReg < 10) // output 0mv - 3000mv
|
|
|
- {
|
|
|
- torsensor_stTorSensorOut.uwTorqueErrorCnt++;
|
|
|
- if (torsensor_stTorSensorOut.uwTorqueErrorCnt > 5000)
|
|
|
- {
|
|
|
- torsensor_stTorSensorOut.blTorqueErrorFlg = TRUE;
|
|
|
- torsensor_stTorSensorOut.uwTorquePu = 0;
|
|
|
- torsensor_stTorSensorOut.uwTorqueErrorCnt = 0;
|
|
|
- torsensor_stTorSensorOut.uwTorqueLPFPu = 0;
|
|
|
- cp_stHistoryPara.uwTorSensorAlamTimes++;
|
|
|
- }
|
|
|
- }
|
|
|
- else
|
|
|
- {
|
|
|
- torsensor_stTorSensorOut.uwTorqueErrorCnt = 0;
|
|
|
- }
|
|
|
- }
|
|
|
}
|
|
|
|
|
|
/***************************************************************
|