Hallo,
Ich bräuchte zwecks Rechnungen am Kreis einen Datentyp der größer als 32Bit ist, unsigned long reicht in bestimmen Fällen nicht aus.
Der Compiler akzeptiert long long zwar, habe aber den Eindruck das es nur ein long ist.
Konkret habe ich dieses Problem:
Mein Code vearbeitet G-Code, mein "Maschinchen" macht meist alles richtig.
Kommt jedoch sowas, kommt es zum Problem.
z.b.
G03 X25.8901 Y23.9794 I-159.6892 J4.3159
Dies soll einen Kreisbogen gegen den Uhrzeigensinn fahren.
Von der aktuellen Position liegt der X Mittelpunkt -159.6..mm links davon und +4.31..mm in Y Richtung.
Der Parameter von Millimeter auf die Steps der Motoren beträgt 512.
Dadurch entstehen recht große Zahlenwerte, zum Berechnen des Radius beträgt das Quadrat der X Richtung in diesem Beispiel 6627262464 !
Denke ich brauche einen anderen Ansatz des Problems, Bresenham braucht aber erst mal den Radius um zu arbeiten wenn ich richtig liege.
Wie schon gesagt mein Programm läuft im Prinzip gut, nur wenn bei solchen Zeilen die Variaben überlaufen kommt es zum Gau.
Der G-Code kommt von dem Inkscape G-Code Plugin und der G-Simulator zeigt das der Code schon richtig ist.