Going by your code it seems that you have a unipolar motor (6 wires) and 4 switches (transistors or whatever). If so, using pulsout is not the best way since there will be a short delay between each pulsout statement where no current is flowing in any of the coils. When no current is flowing the torque drops and the rotor can "jump" to the closest natural step (magnetic pole).
Code:
Delay VAR BYTE
i VAR WORD
TRISB = 0 ' All outputs.
Delay = 10 ' ~100steps / second
For i = 1 to 1000 '1000 steps forward.
PORTB = %00000001
Pause Delay
PORTB = %00000010
Pause Delay
PORTB = %00000100
Pause Delay
PORTB = %00001000
Pause Delay
NEXT
Pause 2500
For i = 1 to 1000 '1000 steps reverse.
PORTB = %00001000
Pause Delay
PORTB = %00000100
Pause Delay
PORTB = %00000010
Pause Delay
PORTB = %00000001
Pause Delay
NEXT
Now, there are other ways to "produce" the step sequence than this rather crude one but try this and see if it helps.
Bookmarks