Quantcast
Channel: MEL PICBASIC Forum
Viewing all articles
Browse latest Browse all 4746

Weird PWM Behaviour on 16F1825

$
0
0
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):
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)

Sample code 2 (motor spins up to a lower RPM regardless of initial value of PortEngDir, from Test_SN754410_Reverse_1):
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

Is there something about nested IF blocks I don't know about?

Viewing all articles
Browse latest Browse all 4746

Trending Articles