Nate, I would make the serial communications interrupt driven, that way you can spend the other bulk of the time doing the speed control loop.

Dave Purola,
N8NTA