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:
Ich setzte einfach bei unterschiedlichem Ein und Ausgang die Zeit auf Null.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
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







Zitieren

Lesezeichen