datatom
22.05.2012, 11:21
Hallo zusammen,
ich habe den Schrittmotortreiber A4983 http://www.shop.robotikhardware.de/s...roducts_id=237 (http://www.shop.robotikhardware.de/shop/catalog/product_info.php?products_id=237) und den Schrittmotor (http://www.rn-wissen.de/index.php/Schrittmotoren) http://www.sparkfun.com/datasheets/R...2BYG011-25.pdf (http://www.sparkfun.com/datasheets/Robotics/SM-42BYG011-25.pdf) .
Den Schrittmotor steuere ich mit einem Bascomprogramm.
Allerdings habe ich zwei Probleme:
1. Sobald ich die ganze angeschlossene Elektronik einschalte dreht der Schrittmotor los, obwohl ich den Timer1 gar nicht eingeschaltet habe.
2. Obwohl ich den Timer1 auf 0 setze dreht der Schrittmotor weiter.
' Stepper Testprogram
$prog , 255 , &B11011001,
$regfile = "m2560def.dat"
$hwstack = 82 '80
$framesize = 68 ' 64
$swstack = 68 '44
$crystal = 16000000 'Quarzfrequenz
$baud = 19200
Config Pind.5 = Output
Led Alias Portd.5
Config Pinc.0 = Output ' Stiftleiste JP 2; Pin 3; PC0
Stepper1_reset Alias Portc.0
Config Pinc.1 = Output ' Stiftleiste JP 2; Pin 4; PC1
Stepper1_direction Alias Portc.1
Config Pinc.2 = Output ' Stiftleiste JP 2, Pin 5; PC2
Stepper1_enable Alias Pinc.2
Config Pinc.3 = Output ' Stiftleiste JP 2, Pin 6; PC3
Stepper1_step Alias Pinc.3
Dim I1 As Integer
Dim Sekunden As Integer
Dim Timer1_wert As Long
Echo Off
Led = 0 ' LED einschalten
Stepper1_enable = 1 ' Stepper1 off
Timer1_wert = 0
I1 = 0
Sekunden = 0
Do
Toggle Led
Waitms 75
I1 = I1 + 1
Loop Until I1 = 20
Wait 5
Stepper1_direction = 1
Stepper1_enable = 0 ' Stepper1 on
'''''''''''''''''''''''''''''''''''''''''''''''''' ''''''''''''''''''''''''''''''
Config Timer1 = Timer , Prescale = 64 ' Stiftleiste JP 1; Pin 26
Enable Timer1
On Timer1 Timer_irq
Enable Interrupts
'''''''''''''''''''''''''''''''''''''''''''''''''' ''''''''''''''''''''''''''''''
Do
Toggle Led
Waitms 200
Sekunden = Sekunden + 200
If Sekunden = 5000 Then
Timer1_wert = 64286
Wait 5
Sekunden = 0
Timer1_wert = 0
End If
Loop
'''''''''''''''''''''''''''''''''''''''''''''''''' ''''''''''''''''''''''''''''''
End
Timer_irq:
Timer1 = Timer1_wert
Stepper1_step = 0 : Waitus 1 : Stepper1_step = 1
Return
Es wäre nett, wenn mir jemand bei meinen beiden Problemen einen Tipp geben könnte.
Vielen Dank im Voraus.
Grüße
datatom
ich habe den Schrittmotortreiber A4983 http://www.shop.robotikhardware.de/s...roducts_id=237 (http://www.shop.robotikhardware.de/shop/catalog/product_info.php?products_id=237) und den Schrittmotor (http://www.rn-wissen.de/index.php/Schrittmotoren) http://www.sparkfun.com/datasheets/R...2BYG011-25.pdf (http://www.sparkfun.com/datasheets/Robotics/SM-42BYG011-25.pdf) .
Den Schrittmotor steuere ich mit einem Bascomprogramm.
Allerdings habe ich zwei Probleme:
1. Sobald ich die ganze angeschlossene Elektronik einschalte dreht der Schrittmotor los, obwohl ich den Timer1 gar nicht eingeschaltet habe.
2. Obwohl ich den Timer1 auf 0 setze dreht der Schrittmotor weiter.
' Stepper Testprogram
$prog , 255 , &B11011001,
$regfile = "m2560def.dat"
$hwstack = 82 '80
$framesize = 68 ' 64
$swstack = 68 '44
$crystal = 16000000 'Quarzfrequenz
$baud = 19200
Config Pind.5 = Output
Led Alias Portd.5
Config Pinc.0 = Output ' Stiftleiste JP 2; Pin 3; PC0
Stepper1_reset Alias Portc.0
Config Pinc.1 = Output ' Stiftleiste JP 2; Pin 4; PC1
Stepper1_direction Alias Portc.1
Config Pinc.2 = Output ' Stiftleiste JP 2, Pin 5; PC2
Stepper1_enable Alias Pinc.2
Config Pinc.3 = Output ' Stiftleiste JP 2, Pin 6; PC3
Stepper1_step Alias Pinc.3
Dim I1 As Integer
Dim Sekunden As Integer
Dim Timer1_wert As Long
Echo Off
Led = 0 ' LED einschalten
Stepper1_enable = 1 ' Stepper1 off
Timer1_wert = 0
I1 = 0
Sekunden = 0
Do
Toggle Led
Waitms 75
I1 = I1 + 1
Loop Until I1 = 20
Wait 5
Stepper1_direction = 1
Stepper1_enable = 0 ' Stepper1 on
'''''''''''''''''''''''''''''''''''''''''''''''''' ''''''''''''''''''''''''''''''
Config Timer1 = Timer , Prescale = 64 ' Stiftleiste JP 1; Pin 26
Enable Timer1
On Timer1 Timer_irq
Enable Interrupts
'''''''''''''''''''''''''''''''''''''''''''''''''' ''''''''''''''''''''''''''''''
Do
Toggle Led
Waitms 200
Sekunden = Sekunden + 200
If Sekunden = 5000 Then
Timer1_wert = 64286
Wait 5
Sekunden = 0
Timer1_wert = 0
End If
Loop
'''''''''''''''''''''''''''''''''''''''''''''''''' ''''''''''''''''''''''''''''''
End
Timer_irq:
Timer1 = Timer1_wert
Stepper1_step = 0 : Waitus 1 : Stepper1_step = 1
Return
Es wäre nett, wenn mir jemand bei meinen beiden Problemen einen Tipp geben könnte.
Vielen Dank im Voraus.
Grüße
datatom