I would add onto this. If you’re ONLY using this motor in periodic tasks, don’t do anything with this motor in Begin. Don’t create a reference to it. Open it in periodic tasks, wire the reference into the correct While Loop. Perform your logic to control the loop within that 50ms loop.
By doing this, you’ll ensure nothing else has the ability to use this motor.
In teleop, you’ll want to use the reference because the Teleop VI is called frequently while the robot is running. It doesn’t make sense to open and close the motors lots of times. As the Periodic Tasks VI is only called the once, you can setup the motor here and use encapsulation to ensure it isn’t being used multiple times.
Are you able to share the project you’re working on so we can take a better look at the VIs you have and see if there’s anything obvious? As Mark said, the behavior you’re describing suggests you have multiple writes in your code. If it’s writing 0.5 in one place and 0 in another, we’d expect to see a stutter as the two locations race against each other to set those values. This is another reason I suggest encapsulation here.