Hier mal ein paar Zeilen auf die schnelle, die vieleicht als Anregung dienen können:
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
[/quote]
Lesezeichen