hallo,

danke für die antworten!
habe das Problem jetzt gelöst. allerdigs nur für Sinus kurven und andere mathematische funktionen.
Der tip kam vom MaWin aus dem Mikrocontroller.net

hier das Programm:

Code:
int stepperXPin =  13;   
int stepperXDirPin =  4;   

float pi = 3.14159265;

float i = 0.0000001; 
int amplitude = 2000;
float frequenz = 3.97;

int motor_statusX = 0;   // motor pin HIGH oder LOW
 int positionOldX = 0; 
int positionX = 0;
long t = 0;   // Timer fuer Interval
long zeitaltX = 0;         // Timer fuer Motor-Takt


void setup()   {       
Serial.begin(115200);
  pinMode(stepperXPin, OUTPUT); 
  pinMode(stepperXDirPin, OUTPUT);     
}



void loop()


{
  

  
  t=micros(); // immer nur 1 Aufruf des Zeitgebers in der Schleife!
  positionX=sin(t/(100000.0*pi*(frequenz/2)))*amplitude; // sonst unterschiedliche
   
    
    
  if(positionX>positionOldX)              // Zeiten möglich
    digitalWrite(stepperXDirPin, HIGH);    // (ich verwende sie eh nur 1x)
  else
    digitalWrite(stepperXDirPin, LOW);
 
 
  if(positionX!=positionOldX)
  {
   if(abs(positionX-positionOldX)>1)
  {
    Serial.println("cpu zu langsam");
  }
  
   
   
    digitalWrite(stepperXPin, motor_statusX=!motor_statusX); // Zuweisung!
    positionOldX=positionX;
  }
}
es läuft die ganze zeit so schnell es geht, und sobald die zu fahrende funktion einen weiteren vollen schritt ergibt wird Dieser sofort ausgeführt.
Leider funktioniert das nur bei mathematischen Funktionen in Abhängigkeit der zeit.
bei x y Koordinaten, die z.b. Wegpunkte sind auf denen zwischendurch interpoliert werden muss geht das nicht.

auch die Berechnungen die man in dem Programm machen kann sind sehr begrenzt, da sonst das zeitlich nicht mehr hin haut. (mehr als ein schritt pro Programm Durchlauf).