' Maf_rev3_beta4.BS2 ' {$STAMP BS2} ' {$PBASIC 2.5} ' Input Pin7 - PWMPAL motor 1 output PIN 12 ' -----[ Variables ]------------------------------------------------------- time VAR Word mfactor VAR Word 'Maximum Output factor 0-100 OnTime VAR Word 'On/Off time 25us units prevTime VAR Word 'compare with current on time Clk12 PIN 12 ' -----[ Initialization ]-------------------------------------------------- mFactor = 90 '50 to 100 % OnTime = 556 prevTime = 555 Setup: SEROUT 0, 6, ["!PWMM0"] ' reset all pwm pins SEROUT 0, 6, ["!PWMX0"] ' clear all counters PAUSE 10 SEROUT 0, 6, ["!PWMSP", %00010001] ' set phase lo counter OFF SEROUT 0, 6, ["!PWMSS", %00010000] ' enable PWM1 software control PAUSE 10 SEROUT 0, 6, ["!PWMM1", OnTime.BYTE0, OnTime.BYTE1, OnTime.BYTE0, OnTime.BYTE1] Main: PULSIN 7, 1, time IF time = 0 THEN PAUSE 2 : GOTO Main time = time MIN 700 MAX 14100 OnTime = 2 * time / 25 OnTime = OnTime * 100 / mFactor IF Ontime <> prevTime THEN DO : LOOP WHILE (Clk12 = 0) DO : LOOP WHILE (Clk12 = 1) SEROUT 0, 6, ["!PWMM1", OnTime.BYTE0, OnTime.BYTE1, OnTime.BYTE0, OnTime.BYTE1] prevTime = Ontime ENDIF GOTO Main END