Thanks for making your library available. Last night I replaced calls to the Arduino Stepper library to yours for the extra control, but I have a few comments, the first related to your reply above.
1. My stepper is moving a slider, and while I want modest acceleration (best torque at low speed), I want rapid deceleration if I hit the limit switches as I have just 1.4 turns of travel from the limit switch to the end of the slider. In that case, I do change acceleration at run time.
2. I like to use LEDs as visual indicators of logic - moving up, moving down, flashing at the limits - but these involve blocking delays for flashing (I may try another timer library for that). And the delays interfere will calling your run() function to service the stepper motor. As an alternative, I put in code to call run() from an interrupt service routine (ISR) that is called every 0.1ms when timer 3 overflows, and it seems to work but I wondered about any consequences. Global variables modified in the ISR should be declared as volatile but I don't see how to do that with the stepper object, and perhaps its not even necessary. I would be interested in your comments, or from anyone else.
3. Acceleration is not particularly smooth until I set the interrupts to 0.1 ms intervals. Even at 1ms acceleration is in big steps.
4. I have 2 speeds - normal for regular but infrequent position changes (usually a turn or 2, up or down), and fast for returning (up) to the end of the slide travel. A switch is read by the Arduino to go from one speed to the other. Going from slow to fast engages the acceleration, but going back is immediate with no deceleration. I think this is because the speed is changes with setMaxSpeed() and the library doesn't decelerate to a lower max speed value - is that correct?
Again, thanks.