I checked a latest beta software because it support TMC2100.
But I cannot check it because I have EEPROM issue.
So I back ported the function of TMC2100 to previous version of software.
It works fine for TMC2100 but it is so noisy sound at my environment.
My environment is as following.
--
Vixen GP2 mount
Skywatcher EQ5 Upgrade kit motor (200step)
Arduino MEGA 2560 Rev.3
TMC2100-BOB board
Motor voltage is 12V
I downloaded AstroEQ software on 14th Oct.
--
I checked AstroEQ.c and I found that it use 16x spreadCycle and 2x spreadCycle combination.
The both mode(sidereal/goto rate) make very high unstable frequency big noise.
So I changed it to 16x stealthChop and 4x stealthChop combination because TMC2100 does not have 2x stealthChop.
I have no issue about a motor noise when I use stealthChop mode.
I cannot say stealthChop is better than spreadCycle because it has torque and sound noise tradeoff issue exits.
But my higher priority is sound noise, so I choose stealthChop.
I had a issue about gear change function.
A microstep ratio between normal speed and high speed should be 8:1(32:4 / 16:2 etc...)
So 16x stealthChop and 4x stealthChop is not match above requirement.
I fixed the issue.
But it is not general purpose modification for every driver chip.
A better modification method is that you need to change ConfiguUtility, EEPROM format and AstroEQ Firmware I think.
I have several question about my 4x high speed support modification .
--------------------------------------------------------------
Q1: Should I modify generateAccelerationTable funcion of AstroEQUploader.pde of ConfigUtility?
I cannot understand "while (stopIVal <= 8) {".
Q2: Should I change "decelerationLength = decelerationLength * 3" in gotoMode function of AstroEQ.c?
I do not know where "8" of sqr(8) come from.
Q3: Is the following my modification in gotoMode function of AstroEQ.c correct for 4x high speed?
--
if(dirMagnitude == 4){
HVal &= 0xFFFFFFFC; //clear the lower bits to avoid overshoot.
}
if(dirMagnitude == 4){
halfHVal &= 0xFFFFFFFC; //clear the lower bits to avoid overshoot.
}
--
A remainder of HVal divided by dirMagnitude should be 0.
Q4: Should I change the following line in ISR(TIMER1_CAPT_vect), ISR(TIMER3_CAPT_vect) function in AstroEQ.c?
--
accelTableRepeatsLeft[DC] = cmd.accelTable[DC][accelIndex].repeats * 3 + 2;
accelTableRepeatsLeft[RA] = cmd.accelTable[RA][accelIndex].repeats * 3 + 2;
--
I cannot understand "+2+.
Q5: Please check attached AstroEQ.c
You can find the modification point from TMC2100_SPREAD_CYCLE and TMC2100_STEALTH_CHOP.
In particular, I hope to get a comment of a part of "// I am not sure if this is correct." .
Q6: Do you know why MS1-0 and MS1-1 cannot to be FLOAT state at Arduino Mega2560?
I tried to make a FLOAT state to MS1-0 and MS1-1 port. But I could not it. And I found it from your code.
And then, I connect between MS3-0(1) and M0. and it works fine.
--------------------------------------------------------------