Hi,confused again here.I set up code to run a unipolar stepper motor from timer interrupt.It works in the simulator but in pic it runs every 10 seconds.The stepper driver has 4 leds that show the status of the motor inputs and the pin sequence is correct,changing every 10 seconds.
The stepper code works as a subroutine ie motor turns each way. Why is the interrupt not more often? I'm stumped again.Any help welcome.I'm thinking of another hobby.
The stepper code works as a subroutine ie motor turns each way. Why is the interrupt not more often? I'm stumped again.Any help welcome.I'm thinking of another hobby.
Code:
[color=Green];28x2 A.0 to A3 are unipolar motor pins [/color]
[color=Navy]#picaxe [/color][color=Black]28x2[/color]
[color=Blue]setfreq m16
symbol [/color][color=Purple]posrotor[/color][color=DarkCyan]=[/color][color=Purple]b0[/color][color=Black]:[/color][color=Blue]symbol [/color][color=Purple]direc[/color][color=DarkCyan]=[/color][color=Purple]b1[/color][color=Black]:[/color][color=Blue]symbol [/color][color=Purple]outbyte[/color][color=DarkCyan]=[/color][color=Purple]b2[/color][color=Black]:[/color][color=Blue]symbol [/color][color=Purple]motorspeed[/color][color=DarkCyan]=[/color][color=Purple]b3[/color][color=Black]:[/color][color=Blue]symbol [/color][color=Purple]tempmotorspeed[/color][color=DarkCyan]=[/color][color=Purple]b4[/color]
[color=Blue]let [/color][color=Purple]dirsa[/color][color=DarkCyan]=[/color][color=Navy]%11111111[/color][color=Black]:[/color][color=Blue]let [/color][color=Purple]posrotor[/color][color=DarkCyan]=[/color][color=Navy]1[/color][color=Black]:[/color][color=Blue]let [/color][color=Purple]direc[/color][color=DarkCyan]=[/color][color=Navy]1[/color][color=Black]:[/color][color=Blue]let [/color][color=Purple]motorspeed[/color][color=DarkCyan]=[/color][color=Navy]1[/color][color=Black]:[/color][color=Blue]let [/color][color=Purple]tempmotorspeed[/color][color=DarkCyan]=[/color][color=Purple]motorspeed[/color]
[color=Blue]settimer count [/color][color=Navy]65530 [/color][color=Green]; settimer to count mode[/color]
[color=Blue]settimer t1s_16
gosub [/color][color=Black]interrupt_Enable
main:[/color]
[color=Blue]do[/color]
[color=Green];let direc=1
;pause 2000
;let direc=0
;pause 2000[/color]
[color=Blue]loop
interrupt:
if [/color][color=Purple]tempmotorspeed[/color][color=DarkCyan]>[/color][color=Navy]0 [/color][color=Blue]then dec [/color][color=Purple]tempmotorspeed[/color][color=Black]:[/color][color=Blue]goto [/color][color=Black]interrupt_enable:[/color][color=Blue]endif
let [/color][color=Purple]tempmotorspeed[/color][color=DarkCyan]=[/color][color=Purple]motorspeed[/color]
[color=Blue]if [/color][color=Purple]direc[/color][color=DarkCyan]=[/color][color=Navy]0 [/color][color=Blue]then inc [/color][color=Purple]posrotor[/color][color=Black]:[/color][color=Blue]if [/color][color=Purple]posrotor[/color][color=DarkCyan]=[/color][color=Navy]8 [/color][color=Blue]then let [/color][color=Purple]posrotor[/color][color=DarkCyan]=[/color][color=Navy]1[/color][color=Black]:[/color][color=Blue]endif
else[/color][color=Black]:[/color][color=Blue]dec [/color][color=Purple]posrotor[/color][color=Black]:[/color][color=Blue]if [/color][color=Purple]posrotor[/color][color=DarkCyan]=[/color][color=Navy]0 [/color][color=Blue]then let [/color][color=Purple]posrotor[/color][color=DarkCyan]=[/color][color=Navy]8[/color][color=Black]:[/color][color=Blue]endif
endif
lookup [/color][color=Purple]posrotor[/color][color=Black],[/color][color=Blue]([/color][color=Navy]0[/color][color=Black],[/color][color=Navy]%00000011[/color][color=Black],[/color][color=Navy]%00000010[/color][color=Black],[/color][color=Navy]%00000110[/color][color=Black],[/color][color=Navy]%00000100[/color][color=Black],[/color][color=Navy]%00001100[/color][color=Black],[/color][color=Navy]%00001000[/color][color=Black],[/color][color=Navy]%00001001[/color][color=Blue])[/color][color=Black],[/color][color=Purple]outbyte
pinsa[/color][color=DarkCyan]=[/color][color=Purple]outbyte[/color]
[color=Black]interrupt_Enable:[/color]
[color=Blue]setintflags [/color][color=Navy]%10000000[/color][color=Black], [/color][color=Navy]%10000000[/color]
[color=Purple]timer[/color][color=DarkCyan]=[/color][color=Navy]65530[/color]
[color=Purple]toflag [/color][color=DarkCyan]= [/color][color=Navy]0[/color]
[color=Blue]return [/color]
Last edited: