Advertisement
Guest User

Untitled

a guest
Jun 28th, 2017
57
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.33 KB | None | 0 0
  1. void SetThrust(void);
  2. unsigned int GetMotorPW(char thrust_pgain, char thrust_dgain, int error, int prevError);
  3.  
  4. int prevThrustError = 0;
  5.  
  6. //-----------------------------------------------------------------------------------------
  7. // Set Motor Thrust
  8. //-----------------------------------------------------------------------------------------
  9.  
  10. void SetThrust(void) {
  11. int range, thrustError, rangerPulsewidth;
  12.  
  13. range = readRanger();
  14. thrustError = 150 - range;
  15. rangerPulsewidth = GetMotorPW(Cpn, Cdn, thrustError, prevThrustError);
  16. prevThrustError = thrustError;
  17.  
  18. PCA0CPL2 = 0xFFFF - rangerPulsewidth;
  19. PCA0CPH2 = (0xFFFF - rangerPulsewidth) >> 8;
  20. PCA0CPL3 = 0xFFFF - rangerPulsewidth;
  21. PCA0CPH3 = (0xFFFF - rangerPulsewidth) >> 8;
  22. }
  23.  
  24. //-----------------------------------------------------------------------------------------
  25. // Find Motor Pulsewidth
  26. //-----------------------------------------------------------------------------------------
  27.  
  28. unsigned int GetMotorPW(char thrust_pgain, char thrust_dgain, int error, int prevThrustError)
  29. {
  30. int pulsewidth;
  31.  
  32. pulsewidth = THRUST_NEUT + thrust_pgain * error + thrust_dgain * (error - prevThrustError);
  33.  
  34. if(pulsewidth > THRUST_MAX)
  35. pulsewidth = THRUST_MAX;
  36. else if(pulsewidth < THRUST_MIN)
  37. pulsewidth = THRUST_MIN;
  38.  
  39.  
  40. return (unsigned int)pulsewidth;
  41. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement