Hi Leute hatte leider paar Tage keine Zeit das Thema weiter zu bearbeiten.
@michael_x mit dem zu schnell war quatsch habe ich festgestellt, es passiert immer.
@combie was dein Problem ist versteh ich ne aber ok ist deine Ding 
Hier mal das Sketch was soweit funktioniert, ich nutze seit heute das TOS-100 Motortreiber Board:
#include <SPI.h>
#include <TMC26XStepper.h>
#include <SSI.h>
SSI RM08(3, 4, 12); //Pins für den Drehgeber und die Genauigkeit (12 Bit)
SSI RM08_m(6, 7, 12); //Pins für den Drehgeber und die Genauigkeit (12 Bit)
//we have a stepper motor with 200 steps per rotation, CS pin 2, dir pin 6, step pin 7 and a current of 300mA
TMC26XStepper tmc26XStepper = TMC26XStepper(200,2,6,7,1000);
float Angle1 = 0;
float Angle2 = 0;
int schritte = 0;
int motorschritte = 0;
int encoderWert = 0;
int pause = 300;
void setup()
{
Serial.begin(9600);
Serial.println("==============================");
Serial.println("TMC26X Stepper Driver Demo App");
Serial.println("==============================");
//set this according to you stepper
Serial.println("Configuring stepper driver");
//char constant_off_time, char blank_time, char hysteresis_start, char hysteresis_end, char hysteresis_decrement
//tmc26XStepper.setSpreadCycleChopper(2,24,8,6,0);
tmc26XStepper.setSpreadCycleChopper(1,1,1,3,0);
tmc26XStepper.setRandomOffTime(0);
tmc26XStepper.setMicrosteps(4);
tmc26XStepper.setStallGuardThreshold(10,0);
Serial.println("config finished, starting");
tmc26XStepper.start();
Serial.println("started");
encoderWert = ((RM08.SSIread() - Angle1)*800/4096); //den Wert einlesen
}
void loop()
{
schritte = (((RM08.SSIread()) - Angle1)*800/4096); //den Wert einlesen
motorschritte = ((RM08_m.SSIread() - Angle2)*800/4096); //den Wert einlesen
if(schritte - encoderWert > 1) //grösser 0
{
digitalWrite(6,HIGH);
}
if(schritte - encoderWert < 1) //kleiner 0
{
digitalWrite(6,LOW);
}
if(abs(schritte - encoderWert) > 1)
{
for(int i=0; i <= abs(schritte - encoderWert); i=i+1)
{
Step();
}
motorschritte = ((RM08_m.SSIread() - Angle2)*800/4096) * -1; //den Wert einlesen
while(abs(schritte - motorschritte) > 5)
{
Step();
motorschritte = ((RM08_m.SSIread() - Angle2)*800/4096); //den Wert einlesen
}
encoderWert = schritte; //Wert des Encoders wieder auf 0 stellen
}
Serial.print(schritte);
Serial.print(", ");
Serial.println(motorschritte);
}
void Step() {
digitalWrite(7, HIGH);
delayMicroseconds(pause);
digitalWrite(7, LOW);
delayMicroseconds(pause);
}