Hätte ich doch fast deinen Edit übersehen!
Ok, ein Paar Infos:
Die Hardware besteht aus einem ATMega168, der drei Schrittmotorplatinen L287/298 ansteuert.
Bisheriger Projektstatus: Elektrische Hardware steht größtenteils, die Fräse befindet sich noch in der Planungsphase. Die Firmware wird gerade entwickelt, das PC-Gegenstück dazu wird langsam mitwachsen.
Ich programmiere das ganze in "C", das ist für AVRs so ziemlich das günstigste und effektivste neben
ASM (*grusel*).
Der µC hat mehrere Fifos für unterschiedliche Zwecke, einer davon speichert die empfangenen G-Codes zwischen. Die Ablage findet komplett im SRAM statt, EEPROM wäre viel zu langsam, außerdem macht der "nur" 100.000 (evtl. noch *10?) Schreibzyklen mit.
Je nach Füllstand fordert der µC dann neues "Futter" an oder bremst die Gegenstelle.
Mein Protokoll sieht momentan so aus: Startbyte-Message_Size-Command_Byte-Payload-Command_Byte-Checksumme-Stopbyte.
Bis auf die Payload (welche Message-Size-6 Bytes groß ist), sind alle anderen Elemente je ein Byte groß.
Die Checksumme ist einfach das Zweierkomplement der Summe aller Bytes.
Das ganze ist im Moment noch in Entwicklung, z.Z. optimiere ich gerade meinen abgewandelten Bresenham-Kreisalgorithmus.
Den Source werde ich vermutlich veröffentlichen, tendenziell aber eher im Roboternetz-Forum, in dem es einige CNC-Relevante-Threads gibt.
Zu gegebener Zeit werde ich dort auch einen neuen Thread zu meiner Firmware eröffnen.
Es spricht aber nichts dagegen, das ganze zusammen mit dem "Server"-Programm auch hier auszubreiten.
mfG
Markus
PS: Zum Thema Code-Posten: Gerade bei µCs ist Sourcecode nur begrenzt portabel. Abhängig davon, wie du die Hardware verdahtet hast, welchen µC du gewählt hast etc. bestehen manche Möglichkeiten, andere nicht.
Da der µC die G-Codes selbst umsetzen muss, verwende ich gezwungenermaßen gewisse Ressourcen wie Timer, um möglichst schnell die notwendigen Berechnungen durchführen zu können.
Wenn du diese Ressourcen andersweilig verwendest, gibt es zwaangsläufig Konflikte.
Mein Source ist zwar modularisiert, die Module werden aber stark miteinander vernetzt sein.