Du generierst die Steuerpulse für die Schrittmotoren mit wait-Anweisungen? Zum Testen mag das noch gehen, aber zum anständigen Betrieb würde ich da eher mit Timern arbeiten, dann sind die Schrittzeiten komplett unabhängig vom Hauptprogramm und daher recht stabil. So, wie du es hast, wird zwischen den Schritten die wait-Anweisung ausgeführt, wodurch keine anderen Berechnungen in dieser Zeit möglich sind.
Wegen dem nicht Reagieren auf die Endschalter: schon mal probiert, ob die auch wirklich richtig schalten? Also mal etwas Hardwaredebugging machen: 1-2 LEDs mit Widerstand an einen Ausgang stöpseln und den Zustand der Schaltereingänge dort nochmal ausgeben lassen. Ganz davon ab würde ich die Schleife eher so abbrechen:
Code:
Do 'Endschalterposition anfahren
Portc.4 = 0 : Waitus 1 : Portc.4 = 1
Waitms 10
Loop Until Sw2 = 1
Ansonsten müsste der Code aber eigentlich funktionieren, daher tippe ich mal auf einen Verdrahtungsfehler.
Lesezeichen