Hi,
@Omeg@: Wäre schön wenn es klappen würde, nur glaube ich aus bereits genannten Gründen nicht daran.

@Ruppi: Der Controller ist (natürlich ) mit WinAVR programmiert.
Weil die Datenmenge möglichst klein gehalten werden muss (um den RS232 nicht zu überlasten) benutze ich natürlich keine Strings um ihm zu sagen was er tuen soll, sondern möglichst kleine und einfache Befehle die der µC direkt verarbeiten kann ohne erst die nötigen Informationen aus einem String herausziehen zu müssen.
Deshalb werden die Daten als Bits'n Bytes übertragen.
Ich übertrage immer erst ein Byte, welches den Befehlstyp angibt.
z.B.:
0x01 für "Wie viel Speicher ist frei?"
0x02 für "Es Folgen x Bytes die in den Speicher sollen"
bei 0x02 merkt der µC sich, dass eine bestimmte Menge an Bytes kommen muss, die er gleich in den Speicher schreibt.

Auf Anfragen antwortet der AVR direkt mit den Daten, also wenn ich ihn frage wie viel speicher frei ist schickt er mit z.B.: 0x0400 für 1024 bytes.
Wenn er mit zwischendurch etwas mitteilen will, schickt er auch zuerst ein Befehls-Byte (habe ich bisher noch nicht benötigt... Später werde ich es für Temperaturkontrolle und Endschalter benutzen).

Die Befehle im Speicher sind auch Simpel gehalten.
Da ist auch erst ein Byte, das den Befehl festlegt. Davon werden aber nur 4Bit verwendet. Die anderen 4 Bit sind schon Daten...

Um einen Schritt zu machen sind 2 Bytes erforderlich.
Das erste Byte enthält 4Bits für den Befehl und 4Bits, die angeben Welche Achse einen Schritt machen soll.
Das Zweite Bit enthält mit 4Bits die Richtung und mit den übrigen 4Bits werden die Endstufen ein/aus geschaltet.

Der zweite Befehl ist der "Pause" Befehl. Er besteht ebenfalls aus 2 Bytes.
Die 12 nutzbaren Daten-Bits legen fest wie viele Timer-Aufrufe der µC bis zum nächsten Befehl warten soll.

Ich werde den Pause-Befehl vielleicht noch ändern/erweitern, da bisher nur relativ lange Pausen gemacht werden können, die immer ein Vielfaches der Timer-Frequenz sein müssen.

....Wie man sieht vollbringt mein PC die Hauptarbeit. Ich gebe eine G-Befehlsfolge ein, drücke auf einen Knopf und der G-Code wird umgewandelt in das Interne Speicher-Format für den µC.
Wenn ich dann auf Start drücke wird dieser Speicher häppchenweise in den µC übertragen und von ihm ausgeführt.

Bei meinen Relativ geringen Step-Geschwindigkeiten ist das eine gute Lösung, die ohne Treiber und Interrupt Programmierung unter Win auskommt. Natürlich kann man sie nicht mit Drucker-Port Varianten vergleichen (Mach2/3 mit x * 1000 Steps/Sek) - aber es ist billig und erfüllt seinen Zweck.



Die PC Software habe ich noch etwas weiter Programmiert, und jetzt klappt die Kreisinterpolation G02 und G03 ... Allerdings ist das Ergebnis nicht schön genug um es hier zu Posten. Das Umkehrspiel (welches noch wegprogrammiert wird) und die Schlechten Kupplungen wirken sich einfach extrem schlecht auf das Ergebnis aus.
Ich schreie immer mehr nach einer Massiveren Stahl-Konstruktion die sich nicht durchbiegt.
Das wird wohl auf eine Dicke Stahl-Grundplatte und ein Dickes und Breites 4-Kant Profil (also kein Vollmaterial) hinauslaufen.

(Im Suff bin ich schon darauf gekommen, die Dinger einfach an Wand und Boden mit ner Hundertschaft Dübeln zu befestigen - das hat ordentlich Masse . Die Nachbarn würden sich freuen ... aber irgendwie wäre ich dann doch für die Stahl Sache )

MfG Alex