One of my NXT servos is exhibiting some odd behavior. I had to replace a servo for a different reason and this might be the replacement, but I'm not entirely sure as I didn't mark it as such. In any case, I'm curious if anyone else has seen this and knows the cause.
With two servos that act as expected, I can place a single Move block in the program and use any of the duration settings and both servos will run and stop when programmed or run continuously if "Unlimited" is selected. However, when one servo is replaced with the misbehaving one, regardless of the duration setting, the latter servo will run continuously and the good servo will twitch as if it's about to run, but stops immediately. I have to end the program to get the "bad" servo to stop. If I place the Move block inside a Loop set to "Forever," the above behavior will be identical except for one scenario. If I set the Move block duration to "Unlimited," both servos will run and can be controlled by the Loop's "Control" setting, i.e. they will either run continuously or run and stop as set by the loop control setting.
Simply using individual "Motor" blocks to control the servos does not solve the problem. There are good and bad programming scenarios with those as well with regard to the bad servo.
The best guess I can come up with is that the bad servo is either not sending or not receiving a feedback signal, maybe both. I did wonder, though, if these servos have any firmware in them that might behave differently depending on when they were made.
This isn't a fatal flaw as I can use the servo, but I am curious what might be going on.