Hier mal ein paar Zeilen auf die schnelle, die vieleicht als Anregung dienen können:
[/quote]Code:Config Timer2 = Timer , Prescale = 256 'Timer für Motorsteuerung Config Pind.6 = Output 'Schrittmotoren Ein/Aus Config Pinc.5 = Output 'Schrittmotor Links Richtung Config Pinc.3 = Output 'Schrittmotor Links Step Config Pinc.4 = Output 'Schrittmotor Rechts Richtung Config Pinc.2 = Output 'Schrittmotor Rechts Step On Timer2 Interrupthandler 'Alle Interrups werden in dieser Routine behandelt Enable Interrupts 'Interrupts aktivieren Enable Timer2 Start Timer2 'Motortimer starten Timer2 = Geschwindigkeit 'Geschwindigkeit initialisieren Interrupthandler: 'Wenn Timer überlauf wird der Interrupt ausgelöst If Motoraktiv = 1 Then 'Nur wenn die Motoren aktiv sein sollen Toggle Portc.2 'Schrittmotor Rechts Step Toggle Portc.3 'Schrittmotor Links Step If Beschleunigen = 1 Then If Geschwindigkeit < Maxgeschwindigkeit Then Geschwindigkeit = Geschwindigkeit + 1 Else Beschleunigen = 0 End If End If If Bremsen = 1 Then If Geschwindigkeit > Mingeschwindigkeit Then Geschwindigkeit = Geschwindigkeit - 1 Else Bremsen = 0 Motoraktiv = 0 Portd.6 = 0 End If End If End If Timer2 = Geschwindigkeit 'Grundwert für nächsten Interrupt setzen Return Vor: Bremsen = 1 Waitms 500 Beschleunigen = 1 Portd.6 = 1 'Schrittmotoren aktiv Portc.5 = 0 'Schrittmotor Links Richtung vor Portc.4 = 1 'Schrittmotor Rechts Richtung vor Motoraktiv = 1 Return Zurueck: Bremsen = 1 Waitms 500 Beschleunigen = 1 Portd.6 = 1 'Schrittmotoren aktiv Portc.5 = 1 'Schrittmotor Links Richtung zurück Portc.4 = 0 'Schrittmotor Rechts Richtung zurück Motoraktiv = 1 Return Halt: Bremsen = 1 Return Nothalt: Motoraktiv = 0 'Kein weiterer Step Geschwindigkeit = Mingeschwindigkeit Beschleunigen = 0 Bremsen = 0 Waitms 200 'Wartezeit um Schrittmortor auf Punkt zu halten und erst dann Portd.6 = 0 'Schrittmotoren ausschalten Return Rechts: Bremsen = 1 Waitms 500 Beschleunigen = 1 Portd.6 = 1 'Schrittmotoren aktiv Portc.5 = 0 'Schrittmotor Links Richtung vor Portc.4 = 0 'Schrittmotor Rechts Richtung zurück Motoraktiv = 1 Return Links: Bremsen = 1 Waitms 500 Beschleunigen = 1 Portd.6 = 1 'Schrittmotoren aktiv Portc.5 = 1 'Schrittmotor Links Richtung zurück Portc.4 = 1 'Schrittmotor Rechts Richtung vor Motoraktiv = 1 Return Schneller: If Geschwindigkeit < Maxgeschwindigkeit Then 'Maximale Umdrehungszahl Geschwindigkeit = Geschwindigkeit + 5 End If Return Langsamer: Geschwindigkeit = Geschwindigkeit - 5 Return







Zitieren

Lesezeichen