Sooo, langsam wird es was. Ich habe mir noch einmal das Buch zur Hand genommen und augehend von einem dort beschriebenen Programm das Ganze angepasst.
Wie gesagt nur für X (Yun Z folgen ggf noch am WE
Hier der Code:
Code:
'CNC Stepper.bas
'Stepperdriver
'____________________________________________
'Der Atmega wird zwischen Centronics und L 297 geschaltet, um je Richtung
' Enable (H aktiv) aus dem Takt zu generieren.
'Taklt wird bei Ansteigender Flanke aktiv
$regfile = "m8def.dat"
$crystal = 10000000 'Quarz 10 MHz
'
Dim Signalbit As Bit
Dim Zeitx As Word
On Timer0 Ontimer0 'Interrupt-Routine für Timer0-Overflow
Config Timer0 = Timer , Prescale = 1024 'Timer-Takt ist Quarz/1024
Enable Timer0 'Timer0-Overflow-Interrupt ein
Enable Interrupts 'Interrupts global zulassen
Ddrd = &B11000000 'Port D-Pins 0-5 Eingang
Ddrb = &B11111111 'Port B Ausgang
Ddrc = &B11111111 'Port C Ausgang
Portd.7 = Pind.1 'Takt X
Portc.1 = Pind.3 'Takt Y
Portc.4 = Pind.5 'Takt Z
Do
If Pind.1 = 1 And Portd.7 = 0 Then Zeitx = 0
If Pind.1 = 0 And Portd.7 = 1 Then Zeitx = 0
If Zeitx < 10 Then Portb.0 = 1 Else Portb.0 = 0
If Zeitx > 1000 Then Zeitx = 100
Portc.3 = Pind.0 'Richtung X
Portc.0 = Pind.2 'Richtung Y
Portd.6 = Pind.4 'Richtung Z
Portd.7 = Pind.1
Loop
Ontimer0:
Zeitx = Zeitx + 1 'Timer0-Overflow-Interrupt-Routine
Return
Ich setzte einfach bei unterschiedlichem Ein und Ausgang die Zeit auf Null.
Bei Zeit kleiner n (im moment 10) ist Enable auf H.
Damit nicht beim Überlauf Enable auf H geht setze ich einfach bei Zeitx größer 1000 die Zeit wieder auf 100.
Es geht bestimmt auch schöner, aber es klappt.
Nur die Richtugsänderung wird noch nicht durchgereicht. Der Stepper läuft immer in die selbe Richtung. Den Fehler werde ich aber noch finden.
Erst einmal Schluss für Heute
Gruß
Kalle
Lesezeichen