I have a 6-channel micro maestro that I’m using to drive 5 servos. I want to make fairly rapid changes to the servos, but I seem to be hitting a problem with the processing rate of commands. I’m using a microcontroller to drive the maestro, and connect via TTL serial at 19.2k baud. I use the compact protocol set target command (0x84) to set the position of servos - one command (4 bytes) for each servo. If I try to send the maestro more than about 12 commands per second, the red error light comes on and it stops driving the servos. I believe I’m getting a serial overrun error (error bit 1). If I lower the rate at which I send commands to 10 per second I can run like that for hours. 12 per second and above gets me the red error light after a number of seconds.
Is there an internal buffer I’m overflowing, and if so is the buffer bigger in the bigger controllers (mini 12, 18, 24 etc)?
I haven’t thought about it hard enough yet to work out whether I can get around the problem by setting multiple targets in a single command - that’s not available on the micro anyway, and has some restrictions (e.g. contiguous block of channels). Maybe I just have to ditch the maestro and control the servos directly from the microcontroller - costs me more cpu and IO pins but it might be my only choice.
Any ideas?