It's possible I'm losing my mind, but why would this code make my motor spin faster than the revised code below? Everything else is the same (code, config, circuit connections).
Sample code 1 (motor spins up to correct RPM, from Test_SN754410_Reverse_0):
Sample code 2 (motor spins up to a lower RPM regardless of initial value of PortEngDir, from Test_SN754410_Reverse_1):Code:HIGH MOTOR_2_DIR ' reverse ' Spin up motors to saved value of _MotorRPM IF MotorRPM > 66 THEN FOR I = (255-65) to (255-MotorRPM) step -1 pause 30 HPWM 2, I, 20000 ' port engine (CCP2) NEXT I EndIf HPWM 2, 255-MotorRPM, 20000' port engine (CCP2)
Is there something about nested IF blocks I don't know about?Code:PortEngDir VAR BYTE PortEngDir = 1 if PortEngDir = 1 then HIGH MOTOR_2_DIR ' reverse IF MotorRPM > 66 THEN FOR I = (255-65) to (255-MotorRPM) step -1 pause 30 HPWM 2, I, 20000 ' port engine (CCP2) NEXT I EndIf HPWM 2, 255-MotorRPM, 20000' port engine (CCP2) else LOW MOTOR_2_DIR ' Forward IF MotorRPM > 66 THEN FOR I = 65 to (MotorRPM - 1) pause 30 HPWM 2, I, 20000 ' port engine (CCP2) NEXT I EndIf HPWM 2, MotorRPM, 20000 ' port engine (CCP2) endif






Bookmarks