Member Since: January 16, 2008

Country: United States

  • Yep, In AutoDriver.cpp,, change the following function to read to something similar to this:

    void AutoDriver::SPIConfig(){
        pinMode(51, OUTPUT); //Adjusted for Mega. MOSI used to be 11 on Uno
        pinMode(50, INPUT);  //Adjusted for Mega. MISO used to be 12 on Uno
        pinMode(52, OUTPUT); //Adjusted to Mega. SCK used to be 13 on Uno 
        pinMode(53, OUTPUT);  //new line added for SS for mega on pin 53, it's 10 on Uno. 

    The last line is especially important, as if you don’t set pin 53 to output, the mega will be randomly put into slave mode, and nothing will work.

  • List of Quirks I’ve found so far, after working with this for a year:…

    1) While motor is running, you cannot: change acceleration, or use setPos()… If I recall, you also cannot call another goTo().

    2) If you call a run direction command before the existing one has finished, It will run crazy.

    3) number of steps the chip keeps track of overflows at plus and minus 221 (~2 mil).

    4) You cannot setPos() to a negative number directly… You’ll have to set it to a number that overflows its 21 bit register to switch that 22nd bit to make it a negative number.

    Will add more as I run into these…

  • The library is has a little bug in in it. AutoDriverConfig.cpp, line 34 reads

    stepModeConfig |= (stepModeConfig&0x07);

    This should instead be

    stepModeConfig |= (stepMode&0x07);

    See the simple typo? So far it has given me microstepping. Have not yet tried to see if the automatic transition from micro to full steps works. I will report back if I find evidence of any unsolved problems.

    Edit 1: Keep in mind that now, when you call goTo(steps), it uses microsteps, not full steps. (eg, 1 rev on a 200-step motor at 128 microsteps is goTo(25600);… other things, though, like maxSpeed() or run() use full steps.

No public wish lists :(