Das Protokoll vom µC zum PC ist das selbe wie vom PC zum µC, ein Byte TX-Fifo (würde ich eher Puffer nennen
) reicht also definitiv nicht, die kleinste Nachricht besteht ja aus sechs Bytes.
Zur Kreisberechnung: Der Bresenham-Algorithmus rechnet immer einen Schritt aus. Wenn der G-Code Präprozessor in seinen Statusvariablen stehen hat, dass er noch Punkte in einem Kreis berechnen muss, wird dieser nachsehen ob der FiFo noch voll ist und bei Bedarf einige Punkte berechnen und in den Fifo füllen.
Wenn er dann mit dem Kreis durch ist, nimmt er sich den nächsten G-Code vor.
Ansonsten tut der Präprozessor einfach nichts und command_decode wird wieder von "main" aufgerufen.
Ich werde vermutlich bei Kreisen den Fifo auch umformatieren, damit ich mehr als sieben Schritte puffern kann. (Mein Fifo kann mit max. 255 Bytes umgehen, drei int32_t für drei Achsen macht 36 Byte für einen Punkt).
mfG
Markus
PS: Mein Scanner ist im Moment leider ... demontiert, daher kann ich dir meine Platinenplanung im Moment nicht hochladen.
PPS: Sorry für die Quali, ist halt nur von meiner Notebook-Knipse