Zwei Fehler gefunden. Der eine war das ich zwei max_speed Variablen hatte aber drei Werte
a) aktueller max_speed
b) max_speed bevor eine Endposition festgelegt wurde
c) max_speed nachdem eine Endposition definiert wurde
Deswegen wurde nach dem End-Position festlegen der Wert c) in die aktuelle max_speed (a) übernommen, aber wenn im GUI später die max_speed variable erhöht wurde, wurde die aktuelle max_speed nicht geändert.
Was mir noch sorgen bereitet ist die Genauigkeit des Hallsensors, ich glaube der Interrupt verzählt sich hin und wieder. Meine aktuelle Logik ist aber extrem primitiv, ich werte nur zwei von drei Hallsensoren aus und wenn der Sensor A von 0 auf 1 oder umgekehrt umschaltet, dann schaue ich nach wie Hallsensor B gerade steht. Wechselt A von 0 auf 1 und B ist 1 muss es eine Drehung in die eine Richtung sein, ist B aber aktuell 0 dann muss es die andere Drehrichtung sein. Wenn der Motor aber genau dazwischen steht oder ..... mal sehen ob ich da was besser hinbekommen.