Advertisement
Guest User

Untitled

a guest
Jun 23rd, 2017
111
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.78 KB | None | 0 0
  1. extern void CalWheelSpeed(GearControl_Handle GearControlHandle,HAL_Handle halhandle)
  2. {
  3. GearControl_Obj *gsobj = (GearControl_Obj *)GearControlHandle;
  4. uint32_t Cur_GPIOWheelSpeed;
  5. Cur_GPIOWheelSpeed = HAL_readGpio(halhandle,GPIO_WheelSpeed);
  6. int i;
  7. if(Cur_GPIOWheelSpeed == 1 && gsobj->Pre_GPIO_Switch == 0 && gFlagWheelSwitchFirstTime == true)
  8. {
  9. gFlagWheelSwitchFirstTime = false;
  10. gsobj->WHeelSpeed_Krpm = _IQ(0.0); //gWheelSpd
  11. gsobj->WheelSpeed_CNT = 0; //gWheelTimeCnt
  12. gsobj->WheelAccel =_IQ(0.0);
  13. //gsobj->WHeelAcc_Krpmps=_IQ(0.0);
  14. //gsobj->Pre_WHeelAcc_Krpmps = _IQ(0.0);
  15. //gsobj->WHeelJerk_Krpmpsps=_IQ(0.0);
  16. }
  17. else if(Cur_GPIOWheelSpeed == 1 && gsobj->Pre_GPIO_Switch == 0) //
  18. //if(gWheelSwitch == 1 && gWheelSwitch_L == 0)
  19. {
  20. gsobj->WHeelSpeed_Krpm = _IQ( gsobj->SpeedScaler_krpm_f/(float_t)gsobj->WheelSpeed_CNT); //gWheelSpd
  21. //_iq tmpKrpm = _IQ( gsobj->SpeedScaler_krpm_f/(float_t)gsobj->WheelSpeed_CNT);
  22. //gsobj->WHeelSpeed_Krpm = WindowFilter(tmpKrpm);
  23.  
  24. gsobj->WheelAccel = _IQ(_IQtoF(gsobj->WHeelSpeed_Krpm - gsobj->Pre_WHeelSpeed_Krpm)/(float_t)gsobj->WheelSpeed_CNT);
  25. gsobj->WHeelAcc_Krpmps = _IQdiv((gsobj->WHeelSpeed_Krpm - gsobj->Pre_WHeelSpeed_Krpm),
  26. _IQ((float_t)gsobj->WheelSpeed_CNT/(float_t)(15000)));
  27. gsobj->WHeelJerk_Krpmpsps=_IQdiv((gsobj->Pre_WHeelAcc_Krpmps-gsobj->WHeelAcc_Krpmps),
  28. _IQ((float_t)gsobj->WheelSpeed_CNT/(float_t)(15000)));
  29. //gsobj->WheelSpeed_CNT = 0;
  30. //gWheelSpd = _IQ( gWheelSpeedScaler_krpm_f/(float_t)gWheelTimeCnt);
  31. gsobj->gWheelTimeOut = (uint32_t)(gsobj->SpeedScaler_krpm_f / _IQtoF(gsobj->WHeelSpeed_Krpm + gsobj->WheelAccel))*2;
  32. gsobj->WheelSpeed_CNT = 0;
  33. gsobj->WheelAccels[gAccelsCount++] = gsobj->WheelAccel;
  34.  
  35. for(i=0; i < gAccelsMaxCount; i++)
  36. {
  37. gsobj->SumWheelAccels = gsobj->SumWheelAccels + gsobj->WheelAccels[i];
  38. }
  39. if(gAccelsCount > gAccelsMaxCount)
  40. gAccelsCount = 0;
  41. }
  42. else
  43. {
  44. if (gsobj->WheelSpeed_CNT >= gsobj->gWheelTimeOut)
  45. {
  46. gFlagWheelSwitchFirstTime = true;
  47. gsobj->WHeelSpeed_Krpm = _IQ(0.0);
  48. gsobj->Pre_WHeelSpeed_Krpm = _IQ(0.0);
  49. gsobj->WheelAccel = _IQ(-0.001);
  50. gsobj->WHeelAcc_Krpmps=_IQ(0.0);
  51. gsobj->Pre_WHeelAcc_Krpmps = _IQ(0.0);
  52. gsobj->WHeelJerk_Krpmpsps=_IQ(0.0);
  53. gsobj->gWheelTimeOut = 90000000;
  54. for(gHallSpeedRPMCnt=0; gHallSpeedRPMCnt<10; gHallSpeedRPMCnt++)
  55. { gHallSpeedRPMArray[gHallSpeedRPMCnt] = _IQ(0.0); }
  56. gHallSpeedRPMCnt=0;
  57. //gWheelSpd = _IQ(0.0);
  58. //gsobj->WheelSpeed_CNT = 9000000;
  59. //gFlagWheelSwitchFirstTime = true;
  60. gsobj->SumWheelAccels = _IQ(0.0);
  61. }
  62. else
  63. {
  64. gsobj->WheelSpeed_CNT++;
  65. }
  66. //gsobj->WheelSpeed_CNT++;
  67. }
  68. gsobj->Pre_WHeelSpeed_Krpm = gsobj->WHeelSpeed_Krpm;
  69. gsobj->Pre_GPIO_Switch = Cur_GPIOWheelSpeed;
  70. gsobj->Pre_WHeelAcc_Krpmps=gsobj->WHeelAcc_Krpmps;
  71.  
  72. return;
  73. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement