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):
Is there something about nested IF blocks I don't know about?
Sample code 1 (motor spins up to correct RPM, from Test_SN754410_Reverse_0):
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)
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