Skip to content

[BUG] movement too slow with G2/G3 #72

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
1 task done
DerAndere1 opened this issue Apr 21, 2024 · 147 comments
Open
1 task done

[BUG] movement too slow with G2/G3 #72

DerAndere1 opened this issue Apr 21, 2024 · 147 comments

Comments

@DerAndere1
Copy link
Owner

Did you test the latest bugfix-2.1.x code?

No, but I will test it now!

Bug Description

WITH SYNTAX G2/G3 X Y Z I J F THE AXIS DO MOVE BUT VERY SLOWLY

This potential bug was first reported by @printercnc here: #55 (comment)

Bug Timeline

unknown

Expected behavior

Feedrate should be accoring to parameter F

Actual behavior

Feedrate too slow

Steps to Reproduce

TODO

Version of Marlin Firmware

unknown

Printer model

custom

Electronics

unknown

Add-ons

unknown

Bed Leveling

None

Your Slicer

None

Host Software

None

Don't forget to include

  • A ZIP file containing your Configuration.h and Configuration_adv.h.

Additional information & file uploads

TODO

@printercnc
Copy link

i tried with latest marlin bugfix 2.1.x, it works great. Your tcpc branch has many errors, in addition to the g2/g3 migration error, there is also the problem of declaring spindle in the adv.h file. I have downloaded the latest version on your tcpc branch, reconfigured it, I will test it in the next few days to give you feedback. i use chip mega 2560 board ramps 1.4 for 5 axis machine, has limit switches for all 5 axis.

@DerAndere1
Copy link
Owner Author

What do you mean with tcpc branch? Do you use my Marlin2ForPipetBot branch ? With that branch I can enable SPINDLE_FEATURE without problems. Please provide your configs (Configuration.h, Configuration.adv) and the exact error message. You can attach files by putting them in a .zip archive. Then add a new comment below. While editing the comment, click on the button "Paste, drop or click to add file" below the comment.

@printercnc
Copy link

yes, I use the Marlin2ForPipetBot branch, which is the branch with tcpc kinematics
Screenshot 2024-04-23 113629

@printercnc
Copy link

These are the 3 files I have edited in there, In the pin ramps file, I edited the endstop part to add home points for axis a and c
FILE_CONFIG.zip

@printercnc
Copy link

printercnc commented Apr 23, 2024

two weeks ago, did you edit this issue, I don't know if it has anything to do with this g2/g3 x y z i j f move syntax (eg G3 F1800. I-54.51 J212.302 X93.326 Y-198.328) . I downloaded and reconfigured but haven't had time to test the motion on my cnc router.
Screenshot 2024-04-23 120221

@DerAndere1
Copy link
Owner Author

The change in commit d632ff3 was an attemt to fix an issue with erratic, fast moves when a G1 command involving only linear axes was followed by a G1 command without F parameter that involved rotational axes.

The compiltion error when SPINDLE_FEATURE and ABORT_ON_SOFTWARE_ENDSTOP were enabled is now fixed in branch Marlin2ForPipetBot with commit 00e49de.

@printercnc
Copy link

I downloaded your latest fix, compiled it, no more errors appear at the moment. I will test it on my cnc router.
I plan to make a handle through the Joystick port
on board ramps. Do you think it is necessary to add a separate handle to the firmware?

@printercnc
Copy link

PI3_chess-king.zip
This is the gcode sample I used to test the g2/g3 command. on the marlin_bgfix2.1.x branch works perfectly fine. On the Marlin2ForPipetBot tcpc branch they move but very slowly. I will send you the video as soon as possible.

@printercnc
Copy link

video.zip
When the axes move, the g0/g1 commands move very smoothly. When the g3 command comes to interpolate the arc, the two x y axes move slowly. I like your firmware because the axis movements are very smooth compared to the marlin_bugfix firmware.

@printercnc
Copy link

Am I annoying you by asking too many questions? I discovered an error that I cannot use g38 in the adv.h file if I use tcpc kinematics. I love your firmware, so I want to apply it to multi-axis CNC machines, or robotic arms. i know the marlin platform doesn't prioritize cnc work. If I bother you, then please try to fix the g2/g3 error.

@DerAndere1
Copy link
Owner Author

I appreciate any feedback. Please report as much issues as you can. I have a lack of time and I am not a "hardware guy", so I depend on testers and discussions like this to improve support for mills in Marlin. I will look into these bugs one at a time, whenever I have time to spare.

@DerAndere1
Copy link
Owner Author

DerAndere1 commented Apr 24, 2024

I cherry-picked the two most recent change-sets affecting G2/G3 from MarlinFirmware/Marlin. One of the commits was called "Fix G2/G3 error in limit speed", so that might already fix the issue with G2/G3.

Please test the latest Marlin2ForPipetBot branch from today

Enble G38 with a non-cartesian machine at your own risk. It was never tested. Make sure that the rotational axes are in neutral (zero) position before you send G38: Probing currently can only work if your tool and probe is oriented in Z direction and when the table / printbed is oriented in the XY plane. Switch to tool 0 for probing. HOTEND_OFFSET for tool 0 must be 0.

To compile with G38_PROBE_TARGET, remove the following 2 lines from file Marlin/src/inc/SanityCheck.h before compilation:

https://github.com/MarlinFirmware/Marlin/blob/bugfix-2.1.x/Marlin/src/inc/SanityCheck.h#L2518-L2519

  #elif !IS_CARTESIAN
    #error "G38_PROBE_TARGET requires a Cartesian machine."

@printercnc
Copy link

I just recompiled, and am excited to test this g2/g3 fix. We'll come back to this g38 topic once we're done with the g2/g3 fix. I will need some time to rebuild my multi-axis cnc router, with tests using high precision measuring tools. will then respond to you.

@printercnc
Copy link

1
2
The error is still not fixed, I took two pictures
Web comparisons and latest downloads. I'm confused and not sure if the download has to be updated.

@printercnc
Copy link

Previously discussed topic, I don't know if it can help?
MarlinFirmware#17348

@printercnc
Copy link

what a mess, marlin bugfix 2.1.x branch cannot connect to cura software like your branch.
g2/g3 motion video of marlin_bugfix2.1 branch
Uploading 1.zip…

@printercnc
Copy link

video when testing code with Marlin-Marlin2ForPipetBot branch, the response from the software is too strange
Uploading 2.zip…

@DerAndere1
Copy link
Owner Author

I can confirm that G2 is totaly broken in Marlin2ForPipetBot. On my machine, trajectories and feedrate are wrong, even when compiling for a cartesian machine (no special kinematics defined). It was working at some point,. Looks like some wrongly zero-initilized variable, but I cannot find it. The fr_mm_s varibale in the body of the function Planner::_populate_block shows correct values when executing G2 commands, so that is not the issue. I think the easiest and best way for me to fix this is to rebase onto current bugfix-2.1.x. Initially the new branch I plan to create will not support G49 or G43, it will allways be in TCPC mode. I have already rebased kinematics, quick_home and tool change. TOOLS and G10 is missing. It will take some weeks to have something ready for testing. Sorry for the inconvenience

@printercnc
Copy link

I feel a bit regretful if I have to go back to the beginning, the official branch on the marlin homepage, or the bugfix branch makes me not very confident about the part that creates pulses to make the axes move, the sound of the moving motors is not as smooth as the Marlin2ForPipetBot branch. your.
I'm not sure what effect tcpc or rtcp kinematics have, although on the 5-axis cnc machines I use they all have rtcp. The cam software I use all has the perfect gcode export feature. If we talk about compensation for misalignment on the spindle joints, adjusting the mechanical mechanism for accuracy will be much easier and better. With a controler for amateurs, I think what is needed on a device is the probe to find the xyz zero coordinate point. We don't always have to process with 5 axes, most of the time it will be 3 axes. Through that, as I mentioned the g38 issue in the adv.h file the other day, it is a perfect conversion feature for CNC 3D printing or CNC milling jobs. I'm on holiday, I brought a small test kit, eagerly waiting for you to fix the error to test, it's a pity to have to wait so long, haha

@HendrikJan-5D
Copy link

HendrikJan-5D commented May 4, 2024

DerAndere1.
Did you see my message last week on GitLab ?

@printercnc
Copy link

I am building an additional handle for a cnc machine by using an Arduino nano to generate rotation pulses for the x y z axes. communicates with the motherboard via the RX TX interface. Everything on the handle is fine, but connecting to the motherboard is not possible. I don't know if the mega 2560 chip allows multiple PORT RX TX ports.
handle_video.zip

@printercnc
Copy link

printercnc commented May 7, 2024

I have completed the handle job version from a free source code, the problem is that I am testing the rx tx communication with the MKS GEN L board, the firmware allows using additional port 2. However, the central controller My heart is building on a multi axis cnc router which is a mega 2560 kit and ramps. I haven't figured out how to solve this problem yet. haha
test.zip

@printercnc
Copy link

printercnc commented May 7, 2024

I am trying to declare additional port 2 for board ramps, leaving two pins 16 17 for rx tx communication blank. Committing from marlin 2.x will allow the use of two ports, which I think is still not perfect.

Screenshot 2024-05-07 185953

@HendrikJan-5D
Copy link

a 2560 motherboard is an 8 bit version
i think you need to go to a 32 bit version for 2 usb connections.
See https://bigtree-tech.com/

@printercnc
Copy link

I have an MKS GEN L board using a 32 bit mega2560au chip, maybe I will test it, that is a temporary solution. with a mega 2560 8bit development kit that also has 3 ports for rx tx communication. pin 16 pin 17 is used for LCD control. Pin 18 pin 19 is used for z axis endstop. In addition, there are empty pins for i2c and spi communication. When I use the i2c pins to connect to the lcd screen, there will be free port rx tx pin 16 pin 17. Therefore, it will have to be used for two SERIAL_PORT, here it is probably an error in the compiler functions.
106ef736-5390-11e6-865d-573262168e94

@HendrikJan-5D
Copy link

Looking at your compiler error list;
((#error “serial port 2 pin D16 and/or D17 conflicts with another pin on the board ))
Seems you have a problem in the pins file of your board.
D16 and D17 are in use there for another function
You have to clear and modify those first to use them as serial ports.

@printercnc
Copy link

That's right, however I can't figure out which lines are talking about the current function of those pins. 8bit chips cannot expand SERIAL_PORT without extensive firmware intervention. After carefully comparing ramps and MKS GEN L, I realized that my handle jod does not need the SERIAL_PORT extension. The above two types are the same, MKS GEN L is just RAMPS expanded with IO. I just need to check where the rx tx pin on the AUX1 of the MKS GEN L is connected to the MEGA 2560 chip. After that, just connect to RAMPS and you will be able to use it.
tải xuống

@printercnc
Copy link

I have connected handle job to board meg2560 + ramps via rx tx port. firmware marlin bugfix 2.1.x
I will use this to test DerAndere1's tcpc branch debugging
.zip

@printercnc
Copy link

DerAndere1
I discovered another error on your tcpc branch, the bugfix branch allows step to run at G0 max speed of 4500 mm/min, your branch is only 1000mm/min.
Board MKS GEN L 1.0
AXIS_STEPS_PER_UNIT 160
DRIVE A4988

@printercnc
Copy link

DerAndere1
Have you updated the fix yet?

@printercnc
Copy link

GRBLGRU SOFTWARE DOWNLOAD LINK

@printercnc
Copy link

I am testing a cyclo gearbox I designed, I plan to share the drawings with you if the testing is successful. Please give me some information so I know it is you via my email. [email protected]

@hobiseven
Copy link

@DerAndere1 It's been a long time I did not look into the 4 axis foam cutter, and I post this question here as I see people are trying to compile on STM32 platforms.
Question is : Did you made a PR into Marlin recently, and what is the latest tag I can download from the Marlin website to try and compile a foam cutter XYUV please?

@hobiseven
Copy link

I actually see you rebased your branch on 11/10.... so I might actually give a try and use your branch right?

@DerAndere1
Copy link
Owner Author

Hi @hobiseven, happy to hear from you. All foamcutter code was merged into MarlinFirmware/Marlin a long time ago, can't remember when.
last PR to configs was
MarlinFirmware/Configurations#1024

I have not heard of any bugs, so I guess it works fine on all relevant branches / tags. I use Marlin on STM32 boards myself, albeit no foamcutters. Choose any of the recent versions:

from marlinfw.org:
MarlinFirmware/Marlin 2.1.2.5
MarlinFirmware/Marlin bugfix-2.1.x

example configs for foamcutters that should work with bugfix-2.1.x can can be found at
https://github.com/MarlinFirmware/Configurations/tree/bugfix-2.1.x/config/examples/FoamCutter

example configs for foamcutters that should work with tagged release 2.1.2.5 can can be found at
https://github.com/MarlinFirmware/Configurations/tree/release-2.1.2.5/config/examples/FoamCutter

or use my fork (for foamcutters there are no benefits compared to official Marlin):
https://github.com/DerAndere1/Marlin/tree/Marlin2ForPipetBot

@DerAndere1
Copy link
Owner Author

@printercnc if your gearbox model is below 25 MiB, you can upload the model by compressing it as a .zip file and dragging the .zip file into a new comment here.

by the way, I contacted the author of Grblgru. He might send me the source code for Grblgru when he feels ready to do so. Please be patient and let him decide.

@hobiseven
Copy link

@DerAndere1 Thank you for this very valuable information. I have 2.1.2.4 version running with in the 3d printer configuration. I never saw there was configuration files for the foamcutter !!! Great news . Thanks a lot for all your efforts.

@printercnc
Copy link

Is to save point coordinates other than machine coordinates x0 y0 z0 is the syntax G10 L20 P 1 X0 Y0. meaning the coordinates x0 y0 will now be saved to g54, instead of me calling the syntax

Custom Menu: Main Menu
//#define CUSTOM_MENU_MAIN
#if ENABLED(CUSTOM_MENU_MAIN)
//#define CUSTOM_MENU_MAIN_TITLE "Custom Commands"
#define CUSTOM_MENU_MAIN_SCRIPT_DONE "M117 User Script Done"
#define CUSTOM_MENU_MAIN_SCRIPT_AUDIBLE_FEEDBACK
//#define CUSTOM_MENU_MAIN_SCRIPT_RETURN // Return to status screen after a script
#define CUSTOM_MENU_MAIN_ONLY_IDLE // Only show custom menu when the machine is idle

#define MAIN_MENU_ITEM_1_DESC "g54-x yzero"
#define MAIN_MENU_ITEM_1_GCODE "g92-x0 y0"
//#define MAIN_MENU_ITEM_1_CONFIRM // Show a confirmation dialog before this action

@printercnc
Copy link

@DerAndere1Cảm ơn bạn vì thông tin này rất có giá trị. Tôi hiện có phiên bản 2.1.2.4 đang chạy cấu hình máy chủ trong 3D. Tôi chưa bao giờ tìm thấy cấu hình tệp nào cho foamcutter!!! Thực sự tuyệt vời. Cảm ơn rất nhiều vì tất cả những nỗ lực của các bạn.

Did you find it? it's here, you download the example configuration to overwrite the original configuration then recompile on the board you need, there will be errors you need to understand about compilation to fix these small errors.
https://github.com/MarlinFirmware/Configurations/tree/release-2.1.3-b1/config/examples/FoamCutter

@DerAndere1
Copy link
Owner Author

Is to save point coordinates other than machine coordinates x0 y0 z0 is the syntax G10 L20 P 1 X0 Y0. meaning the coordinates x0 y0 will now be saved to g54, instead of me calling the syntax

Custom Menu: Main Menu
//#define CUSTOM_MENU_MAIN
#if ENABLED(CUSTOM_MENU_MAIN)
//#define CUSTOM_MENU_MAIN_TITLE "Custom Commands"
#define CUSTOM_MENU_MAIN_SCRIPT_DONE "M117 User Script Done"
#define CUSTOM_MENU_MAIN_SCRIPT_AUDIBLE_FEEDBACK
//#define CUSTOM_MENU_MAIN_SCRIPT_RETURN // Return to status screen after a script
#define CUSTOM_MENU_MAIN_ONLY_IDLE // Only show custom menu when the machine is idle
#define MAIN_MENU_ITEM_1_DESC "g54-x yzero"
#define MAIN_MENU_ITEM_1_GCODE "g92-x0 y0"
//#define MAIN_MENU_ITEM_1_CONFIRM // Show a confirmation dialog before this action

yes,

G10 L20 P1 X0 Y0
G54

should be equivalent to

G54
G92 X0 Y0

@printercnc
Copy link

Is there any way to edit the display to add two coordinates of axis A and C?

@printercnc
Copy link

I see you have two new modifications related to laser-spindle and tool. do you have any instructions on modifying to display multiple coordinate axes on the screen? for example add two axes A and C instead of X Y Z as it is now.

@printercnc
Copy link

are you still active i checked and got this error

Image

@DerAndere1
Copy link
Owner Author

do you have any instructions on modifying to display multiple coordinate axes on the screen

LCD_SHOW_SECONDARY_AXES is documented with all other additional features in the README at https://github.com/DerAndere1/Marlin/blob/Marlin2ForPipetBot/README.md

if you need it for other screens than currently supported, you need to implement it yourself. I can do only basic changes to DOGM-based displays with MarlinUI and cannot help with code for other displays.

are you still active i checked and got this error

should be fixed now. Let me know if you find other mistakes. Thanks!

@DerAndere1
Copy link
Owner Author

oh, I forgot to add the implementation of LCD_SHOW_SECONDARY_AXES to the recent version. That should also be fixed now, at least for DOGM displays

@printercnc
Copy link

I have enabled LCD_SHOW_SECONDARY_AXES
but the screen does not show any other axes, what did I do wrong?

Image

@printercnc
Copy link

I recompile with this screen and get this error

Image

@DerAndere1
Copy link
Owner Author

DerAndere1 commented Feb 21, 2025

  1. I do not support the Arduino IDE. Use PlatformIO, preferrably "Visual Studio code" with the PlatformioIDE.
  2. Copy and paste error messages in plain text instead of sending pictures. If your IDE does not allow you to copy the error message as plain text, use Visual Studio code instead.
  3. I think the screen shown in your picture is a 20x4 character LCD with rotary encoder. It is probably not compatible with the setting REPRAP_FULL_GRAPHIC_SMART_CONTROLLER. Find out which display setting is compatible with your display.
  4. If your IDE cannot install the u8glib-HAL library for Marlin automatically, you can find it here: https://github.com/MarlinFirmware/U8glib-HAL. VS code + platformio should install it automatically, though.

@printercnc
Copy link

initially i was missing the library and installed it but still got error. i tried on vscode, and got this error.

In file included from Marlin\src\gcode\control\../../inc/MarlinConfigPre.h:33:0,
                 from Marlin\src\gcode\control\../../inc/MarlinConfigPre-5-post.h:24,
                 from Marlin\src\gcode\control\../../inc/MarlinConfigPre-6-type.h:24,
                 from Marlin\src\gcode\control\../../inc/MarlinConfig.h:32,
                 from Marlin\src\gcode\control\../gcode.h:344,
                 from Marlin\src\gcode\control\M17_M18_M84.cpp:23:
Marlin\src\gcode\control\../../inc/Conditionals-3-etc.h:647:0: warning: "HAS_TOOL_CENTERPOINT_CONTROL" redefined
   #define HAS_TOOL_CENTERPOINT_CONTROL 1

In file included from Marlin\src\gcode\control\../../inc/MarlinConfigPre.h:31:0,
                 from Marlin\src\gcode\control\../../inc/MarlinConfigPre-5-post.h:24,
                 from Marlin\src\gcode\control\../../inc/MarlinConfigPre-6-type.h:24,
                 from Marlin\src\gcode\control\../../inc/MarlinConfig.h:32,
                 from Marlin\src\gcode\control\../gcode.h:344,
                 from Marlin\src\gcode\control\M17_M18_M84.cpp:23:
Marlin\src\gcode\control\../../inc/Conditionals-1-axes.h:247:0: note: this is the location of the previous definition
   #define HAS_TOOL_CENTERPOINT_CONTROL

In file included from Marlin\src\gcode\control\../../inc/MarlinConfigPre.h:33:0,
                 from Marlin\src\gcode\control\../../inc/MarlinConfigPre-5-post.h:24,
                 from Marlin\src\gcode\control\../../inc/MarlinConfigPre-6-type.h:24,
                 from Marlin\src\gcode\control\../../inc/MarlinConfig.h:32,
                 from Marlin\src\gcode\control\../gcode.h:344,
                 from Marlin\src\gcode\control\M120_M121.cpp:23:
Marlin\src\gcode\control\../../inc/Conditionals-3-etc.h:647:0: warning: "HAS_TOOL_CENTERPOINT_CONTROL" redefined
   #define HAS_TOOL_CENTERPOINT_CONTROL 1

In file included from Marlin\src\gcode\control\../../inc/MarlinConfigPre.h:33:0,
                 from Marlin\src\gcode\control\../../inc/MarlinConfigPre-5-post.h:24,
                 from Marlin\src\gcode\control\../../inc/MarlinConfigPre-6-type.h:24,
                 from Marlin\src\gcode\control\../../inc/MarlinConfig.h:32,
                 from Marlin\src\gcode\control\M3-M5.cpp:23:
Marlin\src\gcode\control\../../inc/Conditionals-3-etc.h:647:0: warning: "HAS_TOOL_CENTERPOINT_CONTROL" redefined
   #define HAS_TOOL_CENTERPOINT_CONTROL 1
 
In file included from Marlin\src\gcode\control\../../inc/MarlinConfigPre.h:31:0,
                 from Marlin\src\gcode\control\../../inc/MarlinConfigPre-5-post.h:24,
                 from Marlin\src\gcode\control\../../inc/MarlinConfigPre-6-type.h:24,
                 from Marlin\src\gcode\control\../../inc/MarlinConfig.h:32,
                 from Marlin\src\gcode\control\M3-M5.cpp:23:
Marlin\src\gcode\control\../../inc/Conditionals-1-axes.h:247:0: note: this is the location of the previous definition
   #define HAS_TOOL_CENTERPOINT_CONTROL
 
In file included from Marlin\src\gcode\control\../../inc/MarlinConfigPre.h:31:0,
                 from Marlin\src\gcode\control\../../inc/MarlinConfigPre-5-post.h:24,
                 from Marlin\src\gcode\control\../../inc/MarlinConfigPre-6-type.h:24,
                 from Marlin\src\gcode\control\../../inc/MarlinConfig.h:32,
                 from Marlin\src\gcode\control\../gcode.h:344,
                 from Marlin\src\gcode\control\M120_M121.cpp:23:
Marlin\src\gcode\control\../../inc/Conditionals-1-axes.h:247:0: note: this is the location of the previous definition
   #define HAS_TOOL_CENTERPOINT_CONTROL
 
In file included from Marlin\src\gcode\control\../../inc/MarlinConfigPre.h:33:0,
                 from Marlin\src\gcode\control\M211.cpp:23:
Marlin\src\gcode\control\../../inc/Conditionals-3-etc.h:647:0: warning: "HAS_TOOL_CENTERPOINT_CONTROL" redefined
   #define HAS_TOOL_CENTERPOINT_CONTROL 1
 
In file included from Marlin\src\gcode\control\../../inc/MarlinConfigPre.h:31:0,
                 from Marlin\src\gcode\control\M211.cpp:23:
Marlin\src\gcode\control\../../inc/Conditionals-1-axes.h:247:0: note: this is the location of the previous definition
   #define HAS_TOOL_CENTERPOINT_CONTROL

In file included from Marlin\src\gcode\control\../../inc/MarlinConfigPre.h:33:0,
                 from Marlin\src\gcode\control\../../inc/MarlinConfigPre-5-post.h:24,
                 from Marlin\src\gcode\control\../../inc/MarlinConfigPre-6-type.h:24,
                 from Marlin\src\gcode\control\../../inc/MarlinConfig.h:32,
                 from Marlin\src\gcode\control\../gcode.h:344,
                 from Marlin\src\gcode\control\M80_M81.cpp:23:
Marlin\src\gcode\control\../../inc/Conditionals-3-etc.h:647:0: warning: "HAS_TOOL_CENTERPOINT_CONTROL" redefined
   #define HAS_TOOL_CENTERPOINT_CONTROL 1

In file included from Marlin\src\gcode\control\../../inc/MarlinConfigPre.h:31:0,
                 from Marlin\src\gcode\control\../../inc/MarlinConfigPre-5-post.h:24,
                 from Marlin\src\gcode\control\../../inc/MarlinConfigPre-6-type.h:24,
                 from Marlin\src\gcode\control\../../inc/MarlinConfig.h:32,
                 from Marlin\src\gcode\control\../gcode.h:344,
                 from Marlin\src\gcode\control\M80_M81.cpp:23:
Marlin\src\gcode\control\../../inc/Conditionals-1-axes.h:247:0: note: this is the location of the previous definition
   #define HAS_TOOL_CENTERPOINT_CONTROL
 
In file included from Marlin\src\gcode\control\../../inc/MarlinConfigPre.h:33:0,
                 from Marlin\src\gcode\control\../../inc/MarlinConfigPre-5-post.h:24,
                 from Marlin\src\gcode\control\../../inc/MarlinConfigPre-6-type.h:24,
                 from Marlin\src\gcode\control\../../inc/MarlinConfig.h:32,
                 from Marlin\src\gcode\control\../gcode.h:344,
                 from Marlin\src\gcode\control\M85.cpp:23:
Marlin\src\gcode\control\../../inc/Conditionals-3-etc.h:647:0: warning: "HAS_TOOL_CENTERPOINT_CONTROL" redefined
   #define HAS_TOOL_CENTERPOINT_CONTROL 1
 
In file included from Marlin\src\gcode\control\../../inc/MarlinConfigPre.h:33:0,
                 from Marlin\src\gcode\control\../../inc/MarlinConfigPre-5-post.h:24,
                 from Marlin\src\gcode\control\../../inc/MarlinConfigPre-6-type.h:24,
                 from Marlin\src\gcode\control\../../inc/MarlinConfig.h:32,
                 from Marlin\src\gcode\control\../gcode.h:344,
                 from Marlin\src\gcode\control\M999.cpp:23:
Marlin\src\gcode\control\../../inc/Conditionals-3-etc.h:647:0: warning: "HAS_TOOL_CENTERPOINT_CONTROL" redefined
   #define HAS_TOOL_CENTERPOINT_CONTROL 1
 
In file included from Marlin\src\gcode\control\../../inc/MarlinConfigPre.h:31:0,
                 from Marlin\src\gcode\control\../../inc/MarlinConfigPre-5-post.h:24,
                 from Marlin\src\gcode\control\../../inc/MarlinConfigPre-6-type.h:24,
                 from Marlin\src\gcode\control\../../inc/MarlinConfig.h:32,
                 from Marlin\src\gcode\control\../gcode.h:344,
                 from Marlin\src\gcode\control\M999.cpp:23:
Marlin\src\gcode\control\../../inc/Conditionals-1-axes.h:247:0: note: this is the location of the previous definition
   #define HAS_TOOL_CENTERPOINT_CONTROL
 
In file included from Marlin\src\gcode\control\../../inc/MarlinConfigPre.h:31:0,
                 from Marlin\src\gcode\control\../../inc/MarlinConfigPre-5-post.h:24,
                 from Marlin\src\gcode\control\../../inc/MarlinConfigPre-6-type.h:24,
                 from Marlin\src\gcode\control\../../inc/MarlinConfig.h:32,
                 from Marlin\src\gcode\control\../gcode.h:344,
                 from Marlin\src\gcode\control\M85.cpp:23:
Marlin\src\gcode\control\../../inc/Conditionals-1-axes.h:247:0: note: this is the location of the previous definition
   #define HAS_TOOL_CENTERPOINT_CONTROL
 
In file included from Marlin\src\gcode\eeprom\../../inc/MarlinConfigPre.h:33:0,
                 from Marlin\src\gcode\eeprom\../../inc/MarlinConfigPre-5-post.h:24,
                 from Marlin\src\gcode\eeprom\../../inc/MarlinConfigPre-6-type.h:24,
                 from Marlin\src\gcode\eeprom\../../inc/MarlinConfig.h:32,
                 from Marlin\src\gcode\eeprom\../gcode.h:344,
                 from Marlin\src\gcode\eeprom\M500-M504.cpp:23:
Marlin\src\gcode\eeprom\../../inc/Conditionals-3-etc.h:647:0: warning: "HAS_TOOL_CENTERPOINT_CONTROL" redefined
   #define HAS_TOOL_CENTERPOINT_CONTROL 1
 
In file included from Marlin\src\gcode\eeprom\../../inc/MarlinConfigPre.h:31:0,
                 from Marlin\src\gcode\eeprom\../../inc/MarlinConfigPre-5-post.h:24,
                 from Marlin\src\gcode\eeprom\../../inc/MarlinConfigPre-6-type.h:24,
                 from Marlin\src\gcode\eeprom\../../inc/MarlinConfig.h:32,
                 from Marlin\src\gcode\eeprom\../gcode.h:344,
                 from Marlin\src\gcode\eeprom\M500-M504.cpp:23:
Marlin\src\gcode\eeprom\../../inc/Conditionals-1-axes.h:247:0: note: this is the location of the previous definition
   #define HAS_TOOL_CENTERPOINT_CONTROL
 
In file included from Marlin\src\gcode\../inc/MarlinConfigPre.h:33:0,
                 from Marlin\src\gcode\../inc/MarlinConfigPre-5-post.h:24,
                 from Marlin\src\gcode\../inc/MarlinConfigPre-6-type.h:24,
                 from Marlin\src\gcode\../inc/MarlinConfig.h:32,
                 from Marlin\src\gcode\gcode.h:344,
                 from Marlin\src\gcode\gcode.cpp:28:
Marlin\src\gcode\../inc/Conditionals-3-etc.h:647:0: warning: "HAS_TOOL_CENTERPOINT_CONTROL" redefined
   #define HAS_TOOL_CENTERPOINT_CONTROL 1

In file included from Marlin\src\gcode\../inc/MarlinConfigPre.h:31:0,
                 from Marlin\src\gcode\../inc/MarlinConfigPre-5-post.h:24,
                 from Marlin\src\gcode\../inc/MarlinConfigPre-6-type.h:24,
                 from Marlin\src\gcode\../inc/MarlinConfig.h:32,
                 from Marlin\src\gcode\gcode.h:344,
                 from Marlin\src\gcode\gcode.cpp:28:
Marlin\src\gcode\../inc/Conditionals-1-axes.h:247:0: note: this is the location of the previous definition
   #define HAS_TOOL_CENTERPOINT_CONTROL
 
In file included from Marlin\src\gcode\../inc/MarlinConfigPre.h:33:0,
                 from Marlin\src\gcode\gcode_d.cpp:23:
Marlin\src\gcode\../inc/Conditionals-3-etc.h:647:0: warning: "HAS_TOOL_CENTERPOINT_CONTROL" redefined
   #define HAS_TOOL_CENTERPOINT_CONTROL 1
 
In file included from Marlin\src\gcode\../inc/MarlinConfigPre.h:31:0,
                 from Marlin\src\gcode\gcode_d.cpp:23:
Marlin\src\gcode\../inc/Conditionals-1-axes.h:247:0: note: this is the location of the previous definition
   #define HAS_TOOL_CENTERPOINT_CONTROL
 
In file included from Marlin\src\gcode\geometry\../../inc/MarlinConfigPre.h:33:0,
                 from Marlin\src\gcode\geometry\../../inc/MarlinConfigPre-5-post.h:24,
                 from Marlin\src\gcode\geometry\../../inc/MarlinConfigPre-6-type.h:24,
                 from Marlin\src\gcode\geometry\../../inc/MarlinConfig.h:32,
                 from Marlin\src\gcode\geometry\../gcode.h:344,
                 from Marlin\src\gcode\geometry\G92.cpp:23:
Marlin\src\gcode\geometry\../../inc/Conditionals-3-etc.h:647:0: warning: "HAS_TOOL_CENTERPOINT_CONTROL" redefined
   #define HAS_TOOL_CENTERPOINT_CONTROL 1
 
In file included from Marlin\src\gcode\geometry\../../inc/MarlinConfigPre.h:31:0,
                 from Marlin\src\gcode\geometry\../../inc/MarlinConfigPre-5-post.h:24,
                 from Marlin\src\gcode\geometry\../../inc/MarlinConfigPre-6-type.h:24,
                 from Marlin\src\gcode\geometry\../../inc/MarlinConfig.h:32,
                 from Marlin\src\gcode\geometry\../gcode.h:344,
                 from Marlin\src\gcode\geometry\G92.cpp:23:
Marlin\src\gcode\geometry\../../inc/Conditionals-1-axes.h:247:0: note: this is the location of the previous definition
   #define HAS_TOOL_CENTERPOINT_CONTROL
 
In file included from Marlin\src\gcode\host\../../inc/MarlinConfigPre.h:33:0,
                 from Marlin\src\gcode\host\../../inc/MarlinConfigPre-5-post.h:24,
                 from Marlin\src\gcode\host\../../inc/MarlinConfigPre-6-type.h:24,
                 from Marlin\src\gcode\host\../../inc/MarlinConfig.h:32,
                 from Marlin\src\gcode\host\../gcode.h:344,
                 from Marlin\src\gcode\host\M110.cpp:23:
Marlin\src\gcode\host\../../inc/Conditionals-3-etc.h:647:0: warning: "HAS_TOOL_CENTERPOINT_CONTROL" redefined
   #define HAS_TOOL_CENTERPOINT_CONTROL 1
 
In file included from Marlin\src\gcode\host\../../inc/MarlinConfigPre.h:31:0,
                 from Marlin\src\gcode\host\../../inc/MarlinConfigPre-5-post.h:24,
                 from Marlin\src\gcode\host\../../inc/MarlinConfigPre-6-type.h:24,
                 from Marlin\src\gcode\host\../../inc/MarlinConfig.h:32,
                 from Marlin\src\gcode\host\../gcode.h:344,
                 from Marlin\src\gcode\host\M110.cpp:23:
Marlin\src\gcode\host\../../inc/Conditionals-1-axes.h:247:0: note: this is the location of the previous definition
   #define HAS_TOOL_CENTERPOINT_CONTROL
 
In file included from Marlin\src\gcode\host\../../inc/MarlinConfigPre.h:33:0,
                 from Marlin\src\gcode\host\../../inc/MarlinConfigPre-5-post.h:24,
                 from Marlin\src\gcode\host\../../inc/MarlinConfigPre-6-type.h:24,
                 from Marlin\src\gcode\host\../../inc/MarlinConfig.h:32,
                 from Marlin\src\gcode\host\M113.cpp:23:
Marlin\src\gcode\host\../../inc/Conditionals-3-etc.h:647:0: warning: "HAS_TOOL_CENTERPOINT_CONTROL" redefined
   #define HAS_TOOL_CENTERPOINT_CONTROL 1

In file included from Marlin\src\gcode\host\../../inc/MarlinConfigPre.h:31:0,
                 from Marlin\src\gcode\host\../../inc/MarlinConfigPre-5-post.h:24,
                 from Marlin\src\gcode\host\../../inc/MarlinConfigPre-6-type.h:24,
                 from Marlin\src\gcode\host\../../inc/MarlinConfig.h:32,
                 from Marlin\src\gcode\host\M113.cpp:23:
Marlin\src\gcode\host\../../inc/Conditionals-1-axes.h:247:0: note: this is the location of the previous definition
   #define HAS_TOOL_CENTERPOINT_CONTROL
 
In file included from Marlin\src\gcode\host\../../inc/MarlinConfigPre.h:33:0,
                 from Marlin\src\gcode\host\../../inc/MarlinConfigPre-5-post.h:24,
                 from Marlin\src\gcode\host\../../inc/MarlinConfigPre-6-type.h:24,
                 from Marlin\src\gcode\host\../../inc/MarlinConfig.h:32,
                 from Marlin\src\gcode\host\M114.cpp:23:
Marlin\src\gcode\host\../../inc/Conditionals-3-etc.h:647:0: warning: "HAS_TOOL_CENTERPOINT_CONTROL" redefined
   #define HAS_TOOL_CENTERPOINT_CONTROL 1

In file included from Marlin\src\gcode\host\../../inc/MarlinConfigPre.h:33:0,
                 from Marlin\src\gcode\host\../../inc/MarlinConfigPre-5-post.h:24,
                 from Marlin\src\gcode\host\../../inc/MarlinConfigPre-6-type.h:24,
                 from Marlin\src\gcode\host\../../inc/MarlinConfig.h:32,
                 from Marlin\src\gcode\host\M115.cpp:23:
Marlin\src\gcode\host\../../inc/Conditionals-3-etc.h:647:0: warning: "HAS_TOOL_CENTERPOINT_CONTROL" redefined
   #define HAS_TOOL_CENTERPOINT_CONTROL 1
 
In file included from Marlin\src\gcode\host\../../inc/MarlinConfigPre.h:31:0,
                 from Marlin\src\gcode\host\../../inc/MarlinConfigPre-5-post.h:24,
                 from Marlin\src\gcode\host\../../inc/MarlinConfigPre-6-type.h:24,
                 from Marlin\src\gcode\host\../../inc/MarlinConfig.h:32,
                 from Marlin\src\gcode\host\M114.cpp:23:
Marlin\src\gcode\host\../../inc/Conditionals-1-axes.h:247:0: note: this is the location of the previous definition
   #define HAS_TOOL_CENTERPOINT_CONTROL
 
In file included from Marlin\src\gcode\host\../../inc/MarlinConfigPre.h:31:0,
                 from Marlin\src\gcode\host\../../inc/MarlinConfigPre-5-post.h:24,
                 from Marlin\src\gcode\host\../../inc/MarlinConfigPre-6-type.h:24,
                 from Marlin\src\gcode\host\../../inc/MarlinConfig.h:32,
                 from Marlin\src\gcode\host\M115.cpp:23:
Marlin\src\gcode\host\../../inc/Conditionals-1-axes.h:247:0: note: this is the location of the previous definition
   #define HAS_TOOL_CENTERPOINT_CONTROL
 
In file included from Marlin\src\gcode\host\../../inc/MarlinConfigPre.h:33:0,
                 from Marlin\src\gcode\host\../../inc/MarlinConfigPre-5-post.h:24,
                 from Marlin\src\gcode\host\../../inc/MarlinConfigPre-6-type.h:24,
                 from Marlin\src\gcode\host\../../inc/MarlinConfig.h:32,
                 from Marlin\src\gcode\host\../gcode.h:344,
                 from Marlin\src\gcode\host\M118.cpp:23:
Marlin\src\gcode\host\../../inc/Conditionals-3-etc.h:647:0: warning: "HAS_TOOL_CENTERPOINT_CONTROL" redefined
   #define HAS_TOOL_CENTERPOINT_CONTROL 1
 
In file included from Marlin\src\gcode\host\../../inc/MarlinConfigPre.h:31:0,
                 from Marlin\src\gcode\host\../../inc/MarlinConfigPre-5-post.h:24,
                 from Marlin\src\gcode\host\../../inc/MarlinConfigPre-6-type.h:24,
                 from Marlin\src\gcode\host\../../inc/MarlinConfig.h:32,
                 from Marlin\src\gcode\host\../gcode.h:344,
                 from Marlin\src\gcode\host\M118.cpp:23:
Marlin\src\gcode\host\../../inc/Conditionals-1-axes.h:247:0: note: this is the location of the previous definition
   #define HAS_TOOL_CENTERPOINT_CONTROL
 
In file included from Marlin\src\gcode\host\../../inc/MarlinConfigPre.h:33:0,
                 from Marlin\src\gcode\host\../../inc/MarlinConfigPre-5-post.h:24,
                 from Marlin\src\gcode\host\../../inc/MarlinConfigPre-6-type.h:24,
                 from Marlin\src\gcode\host\../../inc/MarlinConfig.h:32,
                 from Marlin\src\gcode\host\../gcode.h:344,
                 from Marlin\src\gcode\host\M119.cpp:23:
Marlin\src\gcode\host\../../inc/Conditionals-3-etc.h:647:0: warning: "HAS_TOOL_CENTERPOINT_CONTROL" redefined
   #define HAS_TOOL_CENTERPOINT_CONTROL 1

In file included from Marlin\src\gcode\host\../../inc/MarlinConfigPre.h:31:0,
                 from Marlin\src\gcode\host\../../inc/MarlinConfigPre-5-post.h:24,
                 from Marlin\src\gcode\host\../../inc/MarlinConfigPre-6-type.h:24,
                 from Marlin\src\gcode\host\../../inc/MarlinConfig.h:32,
                 from Marlin\src\gcode\host\../gcode.h:344,
                 from Marlin\src\gcode\host\M119.cpp:23:
Marlin\src\gcode\host\../../inc/Conditionals-1-axes.h:247:0: note: this is the location of the previous definition
   #define HAS_TOOL_CENTERPOINT_CONTROL

In file included from Marlin\src\gcode\lcd\../../inc/MarlinConfigPre.h:33:0,
                 from Marlin\src\gcode\lcd\M0_M1.cpp:23:
Marlin\src\gcode\lcd\../../inc/Conditionals-3-etc.h:647:0: warning: "HAS_TOOL_CENTERPOINT_CONTROL" redefined
   #define HAS_TOOL_CENTERPOINT_CONTROL 1

In file included from Marlin\src\gcode\motion\../../inc/MarlinConfigPre.h:33:0,
                 from Marlin\src\gcode\motion\../../inc/MarlinConfigPre-5-post.h:24,
                 from Marlin\src\gcode\motion\../../inc/MarlinConfigPre-6-type.h:24,
                 from Marlin\src\gcode\motion\../../inc/MarlinConfig.h:32,
                 from Marlin\src\gcode\motion\../gcode.h:344,
                 from Marlin\src\gcode\motion\G0_G1.cpp:23:
Marlin\src\gcode\motion\../../inc/Conditionals-3-etc.h:647:0: warning: "HAS_TOOL_CENTERPOINT_CONTROL" redefined
   #define HAS_TOOL_CENTERPOINT_CONTROL 1
 
In file included from Marlin\src\gcode\motion\../../inc/MarlinConfigPre.h:31:0,
                 from Marlin\src\gcode\motion\../../inc/MarlinConfigPre-5-post.h:24,
                 from Marlin\src\gcode\motion\../../inc/MarlinConfigPre-6-type.h:24,
                 from Marlin\src\gcode\motion\../../inc/MarlinConfig.h:32,
                 from Marlin\src\gcode\motion\../gcode.h:344,
                 from Marlin\src\gcode\motion\G0_G1.cpp:23:
Marlin\src\gcode\motion\../../inc/Conditionals-1-axes.h:247:0: note: this is the location of the previous definition
   #define HAS_TOOL_CENTERPOINT_CONTROL
 
In file included from Marlin\src\gcode\lcd\../../inc/MarlinConfigPre.h:31:0,
                 from Marlin\src\gcode\lcd\M0_M1.cpp:23:
Marlin\src\gcode\lcd\../../inc/Conditionals-1-axes.h:247:0: note: this is the location of the previous definition
   #define HAS_TOOL_CENTERPOINT_CONTROL
 
In file included from Marlin\src\gcode\lcd\../../inc/MarlinConfigPre.h:33:0,
                 from Marlin\src\gcode\lcd\../../inc/MarlinConfigPre-5-post.h:24,
                 from Marlin\src\gcode\lcd\../../inc/MarlinConfigPre-6-type.h:24,
                 from Marlin\src\gcode\lcd\../../inc/MarlinConfig.h:32,
                 from Marlin\src\gcode\lcd\M300.cpp:23:
Marlin\src\gcode\lcd\../../inc/Conditionals-3-etc.h:647:0: warning: "HAS_TOOL_CENTERPOINT_CONTROL" redefined
   #define HAS_TOOL_CENTERPOINT_CONTROL 1
 
In file included from Marlin\src\gcode\lcd\../../inc/MarlinConfigPre.h:31:0,
                 from Marlin\src\gcode\lcd\../../inc/MarlinConfigPre-5-post.h:24,
                 from Marlin\src\gcode\lcd\../../inc/MarlinConfigPre-6-type.h:24,
                 from Marlin\src\gcode\lcd\../../inc/MarlinConfig.h:32,
                 from Marlin\src\gcode\lcd\M300.cpp:23:
Marlin\src\gcode\lcd\../../inc/Conditionals-1-axes.h:247:0: note: this is the location of the previous definition
   #define HAS_TOOL_CENTERPOINT_CONTROL
 
In file included from Marlin\src\gcode\lcd\../../inc/MarlinConfigPre.h:33:0,
                 from Marlin\src\gcode\lcd\../../inc/MarlinConfigPre-5-post.h:24,
                 from Marlin\src\gcode\lcd\../../inc/MarlinConfigPre-6-type.h:24,
                 from Marlin\src\gcode\lcd\../../inc/MarlinConfig.h:32,
                 from Marlin\src\gcode\lcd\M117.cpp:23:
Marlin\src\gcode\lcd\../../inc/Conditionals-3-etc.h:647:0: warning: "HAS_TOOL_CENTERPOINT_CONTROL" redefined
   #define HAS_TOOL_CENTERPOINT_CONTROL 1
 
In file included from Marlin\src\gcode\lcd\../../inc/MarlinConfigPre.h:31:0,
                 from Marlin\src\gcode\lcd\../../inc/MarlinConfigPre-5-post.h:24,
                 from Marlin\src\gcode\lcd\../../inc/MarlinConfigPre-6-type.h:24,
                 from Marlin\src\gcode\lcd\../../inc/MarlinConfig.h:32,
                 from Marlin\src\gcode\lcd\M117.cpp:23:
Marlin\src\gcode\lcd\../../inc/Conditionals-1-axes.h:247:0: note: this is the location of the previous definition
   #define HAS_TOOL_CENTERPOINT_CONTROL
 
In file included from Marlin\src\gcode\motion\../../inc/MarlinConfigPre.h:33:0,
                 from Marlin\src\gcode\motion\../../inc/MarlinConfigPre-5-post.h:24,
                 from Marlin\src\gcode\motion\../../inc/MarlinConfigPre-6-type.h:24,
                 from Marlin\src\gcode\motion\../../inc/MarlinConfig.h:32,
                 from Marlin\src\gcode\motion\G2_G3.cpp:23:
Marlin\src\gcode\motion\../../inc/Conditionals-3-etc.h:647:0: warning: "HAS_TOOL_CENTERPOINT_CONTROL" redefined
   #define HAS_TOOL_CENTERPOINT_CONTROL 1

In file included from Marlin\src\gcode\motion\../../inc/MarlinConfigPre.h:33:0,
                 from Marlin\src\gcode\motion\../../inc/MarlinConfigPre-5-post.h:24,
                 from Marlin\src\gcode\motion\../../inc/MarlinConfigPre-6-type.h:24,
                 from Marlin\src\gcode\motion\../../inc/MarlinConfig.h:32,
                 from Marlin\src\gcode\motion\../gcode.h:344,
                 from Marlin\src\gcode\motion\G4.cpp:23:
Marlin\src\gcode\motion\../../inc/Conditionals-3-etc.h:647:0: warning: "HAS_TOOL_CENTERPOINT_CONTROL" redefined
   #define HAS_TOOL_CENTERPOINT_CONTROL 1
 
In file included from Marlin\src\gcode\motion\../../inc/MarlinConfigPre.h:31:0,
                 from Marlin\src\gcode\motion\../../inc/MarlinConfigPre-5-post.h:24,
                 from Marlin\src\gcode\motion\../../inc/MarlinConfigPre-6-type.h:24,
                 from Marlin\src\gcode\motion\../../inc/MarlinConfig.h:32,
                 from Marlin\src\gcode\motion\../gcode.h:344,
                 from Marlin\src\gcode\motion\G4.cpp:23:
Marlin\src\gcode\motion\../../inc/Conditionals-1-axes.h:247:0: note: this is the location of the previous definition
   #define HAS_TOOL_CENTERPOINT_CONTROL
 
In file included from Marlin\src\gcode\motion\../../inc/MarlinConfigPre.h:31:0,
                 from Marlin\src\gcode\motion\../../inc/MarlinConfigPre-5-post.h:24,
                 from Marlin\src\gcode\motion\../../inc/MarlinConfigPre-6-type.h:24,
                 from Marlin\src\gcode\motion\../../inc/MarlinConfig.h:32,
                 from Marlin\src\gcode\motion\G2_G3.cpp:23:
Marlin\src\gcode\motion\../../inc/Conditionals-1-axes.h:247:0: note: this is the location of the previous definition
   #define HAS_TOOL_CENTERPOINT_CONTROL
 
In file included from Marlin\src\gcode\motion\../../inc/MarlinConfigPre.h:33:0,
                 from Marlin\src\gcode\motion\../../inc/MarlinConfigPre-5-post.h:24,
                 from Marlin\src\gcode\motion\../../inc/MarlinConfigPre-6-type.h:24,
                 from Marlin\src\gcode\motion\../../inc/MarlinConfig.h:32,
                 from Marlin\src\gcode\motion\../gcode.h:344,
                 from Marlin\src\gcode\motion\M400.cpp:23:
Marlin\src\gcode\motion\../../inc/Conditionals-3-etc.h:647:0: warning: "HAS_TOOL_CENTERPOINT_CONTROL" redefined
   #define HAS_TOOL_CENTERPOINT_CONTROL 1
 
In file included from Marlin\src\gcode\motion\../../inc/MarlinConfigPre.h:31:0,
                 from Marlin\src\gcode\motion\../../inc/MarlinConfigPre-5-post.h:24,
                 from Marlin\src\gcode\motion\../../inc/MarlinConfigPre-6-type.h:24,
                 from Marlin\src\gcode\motion\../../inc/MarlinConfig.h:32,
                 from Marlin\src\gcode\motion\../gcode.h:344,
                 from Marlin\src\gcode\motion\M400.cpp:23:
Marlin\src\gcode\motion\../../inc/Conditionals-1-axes.h:247:0: note: this is the location of the previous definition
   #define HAS_TOOL_CENTERPOINT_CONTROL
 
In file included from Marlin\src\gcode\ota\../../inc/MarlinConfigPre.h:33:0,
                 from Marlin\src\gcode\ota\../../inc/MarlinConfigPre-5-post.h:24,
                 from Marlin\src\gcode\ota\../../inc/MarlinConfigPre-6-type.h:24,
                 from Marlin\src\gcode\ota\../../inc/MarlinConfig.h:32,
                 from Marlin\src\gcode\ota\M936.cpp:22:
Marlin\src\gcode\ota\../../inc/Conditionals-3-etc.h:647:0: warning: "HAS_TOOL_CENTERPOINT_CONTROL" redefined
   #define HAS_TOOL_CENTERPOINT_CONTROL 1

In file included from Marlin\src\gcode\ota\../../inc/MarlinConfigPre.h:31:0,
                 from Marlin\src\gcode\ota\../../inc/MarlinConfigPre-5-post.h:24,
                 from Marlin\src\gcode\ota\../../inc/MarlinConfigPre-6-type.h:24,
                 from Marlin\src\gcode\ota\../../inc/MarlinConfig.h:32,
                 from Marlin\src\gcode\ota\M936.cpp:22:
Marlin\src\gcode\ota\../../inc/Conditionals-1-axes.h:247:0: note: this is the location of the previous definition
   #define HAS_TOOL_CENTERPOINT_CONTROL

In file included from Marlin\src\gcode\probe\../../inc/MarlinConfigPre.h:33:0,
                 from Marlin\src\gcode\probe\../../inc/MarlinConfigPre-5-post.h:24,
                 from Marlin\src\gcode\probe\../../inc/MarlinConfigPre-6-type.h:24,
                 from Marlin\src\gcode\probe\../../inc/MarlinConfig.h:32,
                 from Marlin\src\gcode\probe\G30.cpp:23:
Marlin\src\gcode\probe\../../inc/Conditionals-3-etc.h:647:0: warning: "HAS_TOOL_CENTERPOINT_CONTROL" redefined
   #define HAS_TOOL_CENTERPOINT_CONTROL 1
 
In file included from Marlin\src\gcode\probe\../../inc/MarlinConfigPre.h:33:0,
                 from Marlin\src\gcode\probe\../../inc/MarlinConfigPre-5-post.h:24,
                 from Marlin\src\gcode\probe\../../inc/MarlinConfigPre-6-type.h:24,
                 from Marlin\src\gcode\probe\../../inc/MarlinConfig.h:32,
                 from Marlin\src\gcode\probe\M401_M402.cpp:23:
Marlin\src\gcode\probe\../../inc/Conditionals-3-etc.h:647:0: warning: "HAS_TOOL_CENTERPOINT_CONTROL" redefined
   #define HAS_TOOL_CENTERPOINT_CONTROL 1
 
In file included from Marlin\src\gcode\probe\../../inc/MarlinConfigPre.h:31:0,
                 from Marlin\src\gcode\probe\../../inc/MarlinConfigPre-5-post.h:24,
                 from Marlin\src\gcode\probe\../../inc/MarlinConfigPre-6-type.h:24,
                 from Marlin\src\gcode\probe\../../inc/MarlinConfig.h:32,
                 from Marlin\src\gcode\probe\M401_M402.cpp:23:
Marlin\src\gcode\probe\../../inc/Conditionals-1-axes.h:247:0: note: this is the location of the previous definition
   #define HAS_TOOL_CENTERPOINT_CONTROL
 
In file included from Marlin\src\gcode\probe\../../inc/MarlinConfigPre.h:31:0,
                 from Marlin\src\gcode\probe\../../inc/MarlinConfigPre-5-post.h:24,
                 from Marlin\src\gcode\probe\../../inc/MarlinConfigPre-6-type.h:24,
                 from Marlin\src\gcode\probe\../../inc/MarlinConfig.h:32,
                 from Marlin\src\gcode\probe\G30.cpp:23:
Marlin\src\gcode\probe\../../inc/Conditionals-1-axes.h:247:0: note: this is the location of the previous definition
   #define HAS_TOOL_CENTERPOINT_CONTROL
 
In file included from Marlin\src\gcode\../inc/MarlinConfigPre.h:33:0,
                 from Marlin\src\gcode\../inc/MarlinConfigPre-5-post.h:24,
                 from Marlin\src\gcode\../inc/MarlinConfigPre-6-type.h:24,
                 from Marlin\src\gcode\../inc/MarlinConfig.h:32,
                 from Marlin\src\gcode\parser.h:34,
                 from Marlin\src\gcode\parser.cpp:31:
Marlin\src\gcode\../inc/Conditionals-3-etc.h:647:0: warning: "HAS_TOOL_CENTERPOINT_CONTROL" redefined
   #define HAS_TOOL_CENTERPOINT_CONTROL 1
 
In file included from Marlin\src\gcode\../inc/MarlinConfigPre.h:31:0,
                 from Marlin\src\gcode\../inc/MarlinConfigPre-5-post.h:24,
                 from Marlin\src\gcode\../inc/MarlinConfigPre-6-type.h:24,
                 from Marlin\src\gcode\../inc/MarlinConfig.h:32,
                 from Marlin\src\gcode\parser.h:34,
                 from Marlin\src\gcode\parser.cpp:31:
Marlin\src\gcode\../inc/Conditionals-1-axes.h:247:0: note: this is the location of the previous definition
   #define HAS_TOOL_CENTERPOINT_CONTROL

In file included from Marlin\src\gcode\probe\../../inc/MarlinConfigPre.h:33:0,
                 from Marlin\src\gcode\probe\../../inc/MarlinConfigPre-5-post.h:24,
                 from Marlin\src\gcode\probe\../../inc/MarlinConfigPre-6-type.h:24,
                 from Marlin\src\gcode\probe\../../inc/MarlinConfig.h:32,
                 from Marlin\src\gcode\probe\M851.cpp:23:
Marlin\src\gcode\probe\../../inc/Conditionals-3-etc.h:647:0: warning: "HAS_TOOL_CENTERPOINT_CONTROL" redefined
   #define HAS_TOOL_CENTERPOINT_CONTROL 1
 
In file included from Marlin\src\gcode\probe\../../inc/MarlinConfigPre.h:31:0,
                 from Marlin\src\gcode\probe\../../inc/MarlinConfigPre-5-post.h:24,
                 from Marlin\src\gcode\probe\../../inc/MarlinConfigPre-6-type.h:24,
                 from Marlin\src\gcode\probe\../../inc/MarlinConfig.h:32,
                 from Marlin\src\gcode\probe\M851.cpp:23:
Marlin\src\gcode\probe\../../inc/Conditionals-1-axes.h:247:0: note: this is the location of the previous definition
   #define HAS_TOOL_CENTERPOINT_CONTROL

In file included from Marlin\src\gcode\../inc/MarlinConfigPre.h:33:0,
                 from Marlin\src\gcode\../inc/MarlinConfigPre-5-post.h:24,
                 from Marlin\src\gcode\../inc/MarlinConfigPre-6-type.h:24,
                 from Marlin\src\gcode\../inc/MarlinConfig.h:32,
                 from Marlin\src\gcode\queue.h:29,
                 from Marlin\src\gcode\queue.cpp:27:
Marlin\src\gcode\../inc/Conditionals-3-etc.h:647:0: warning: "HAS_TOOL_CENTERPOINT_CONTROL" redefined
   #define HAS_TOOL_CENTERPOINT_CONTROL 1

In file included from Marlin\src\gcode\sd\../../inc/MarlinConfigPre.h:33:0,
                 from Marlin\src\gcode\sd\../../inc/MarlinConfigPre-5-post.h:24,
                 from Marlin\src\gcode\sd\../../inc/MarlinConfigPre-6-type.h:24,
                 from Marlin\src\gcode\sd\../../inc/MarlinConfig.h:32,
                 from Marlin\src\gcode\sd\M1003.cpp:23:
Marlin\src\gcode\sd\../../inc/Conditionals-3-etc.h:647:0: warning: "HAS_TOOL_CENTERPOINT_CONTROL" redefined
   #define HAS_TOOL_CENTERPOINT_CONTROL 1
 
In file included from Marlin\src\gcode\../inc/MarlinConfigPre.h:31:0,
                 from Marlin\src\gcode\../inc/MarlinConfigPre-5-post.h:24,
                 from Marlin\src\gcode\../inc/MarlinConfigPre-6-type.h:24,
                 from Marlin\src\gcode\../inc/MarlinConfig.h:32,
                 from Marlin\src\gcode\queue.h:29,
                 from Marlin\src\gcode\queue.cpp:27:
Marlin\src\gcode\../inc/Conditionals-1-axes.h:247:0: note: this is the location of the previous definition
   #define HAS_TOOL_CENTERPOINT_CONTROL
 
In file included from Marlin\src\gcode\sd\../../inc/MarlinConfigPre.h:31:0,
                 from Marlin\src\gcode\sd\../../inc/MarlinConfigPre-5-post.h:24,
                 from Marlin\src\gcode\sd\../../inc/MarlinConfigPre-6-type.h:24,
                 from Marlin\src\gcode\sd\../../inc/MarlinConfig.h:32,
                 from Marlin\src\gcode\sd\M1003.cpp:23:
Marlin\src\gcode\sd\../../inc/Conditionals-1-axes.h:247:0: note: this is the location of the previous definition
   #define HAS_TOOL_CENTERPOINT_CONTROL
 
In file included from Marlin\src\gcode\sd\../../inc/MarlinConfigPre.h:33:0,
                 from Marlin\src\gcode\sd\../../inc/MarlinConfigPre-5-post.h:24,
                 from Marlin\src\gcode\sd\../../inc/MarlinConfigPre-6-type.h:24,
                 from Marlin\src\gcode\sd\../../inc/MarlinConfig.h:32,
                 from Marlin\src\gcode\sd\M1001.cpp:23:
Marlin\src\gcode\sd\../../inc/Conditionals-3-etc.h:647:0: warning: "HAS_TOOL_CENTERPOINT_CONTROL" redefined
   #define HAS_TOOL_CENTERPOINT_CONTROL 1
 
In file included from Marlin\src\gcode\sd\../../inc/MarlinConfigPre.h:31:0,
                 from Marlin\src\gcode\sd\../../inc/MarlinConfigPre-5-post.h:24,
                 from Marlin\src\gcode\sd\../../inc/MarlinConfigPre-6-type.h:24,
                 from Marlin\src\gcode\sd\../../inc/MarlinConfig.h:32,
                 from Marlin\src\gcode\sd\M1001.cpp:23:
Marlin\src\gcode\sd\../../inc/Conditionals-1-axes.h:247:0: note: this is the location of the previous definition
   #define HAS_TOOL_CENTERPOINT_CONTROL

In file included from Marlin\src\gcode\sd\../../inc/MarlinConfigPre.h:33:0,
                 from Marlin\src\gcode\sd\../../inc/MarlinConfigPre-5-post.h:24,
                 from Marlin\src\gcode\sd\../../inc/MarlinConfigPre-6-type.h:24,
                 from Marlin\src\gcode\sd\../../inc/MarlinConfig.h:32,
                 from Marlin\src\gcode\sd\M20.cpp:23:
Marlin\src\gcode\sd\../../inc/Conditionals-3-etc.h:647:0: warning: "HAS_TOOL_CENTERPOINT_CONTROL" redefined
   #define HAS_TOOL_CENTERPOINT_CONTROL 1
 
In file included from Marlin\src\gcode\sd\../../inc/MarlinConfigPre.h:31:0,
                 from Marlin\src\gcode\sd\../../inc/MarlinConfigPre-5-post.h:24,
                 from Marlin\src\gcode\sd\../../inc/MarlinConfigPre-6-type.h:24,
                 from Marlin\src\gcode\sd\../../inc/MarlinConfig.h:32,
                 from Marlin\src\gcode\sd\M20.cpp:23:
Marlin\src\gcode\sd\../../inc/Conditionals-1-axes.h:247:0: note: this is the location of the previous definition
   #define HAS_TOOL_CENTERPOINT_CONTROL

In file included from Marlin\src\gcode\sd\../../inc/MarlinConfigPre.h:33:0,
                 from Marlin\src\gcode\sd\../../inc/MarlinConfigPre-5-post.h:24,
                 from Marlin\src\gcode\sd\../../inc/MarlinConfigPre-6-type.h:24,
                 from Marlin\src\gcode\sd\../../inc/MarlinConfig.h:32,
                 from Marlin\src\gcode\sd\M21_M22.cpp:23:
Marlin\src\gcode\sd\../../inc/Conditionals-3-etc.h:647:0: warning: "HAS_TOOL_CENTERPOINT_CONTROL" redefined
   #define HAS_TOOL_CENTERPOINT_CONTROL 1

In file included from Marlin\src\gcode\sd\../../inc/MarlinConfigPre.h:33:0,
                 from Marlin\src\gcode\sd\../../inc/MarlinConfigPre-5-post.h:24,
                 from Marlin\src\gcode\sd\../../inc/MarlinConfigPre-6-type.h:24,
                 from Marlin\src\gcode\sd\../../inc/MarlinConfig.h:32,
                 from Marlin\src\gcode\sd\M23.cpp:23:
Marlin\src\gcode\sd\../../inc/Conditionals-3-etc.h:647:0: warning: "HAS_TOOL_CENTERPOINT_CONTROL" redefined
   #define HAS_TOOL_CENTERPOINT_CONTROL 1
 
In file included from Marlin\src\gcode\sd\../../inc/MarlinConfigPre.h:31:0,
                 from Marlin\src\gcode\sd\../../inc/MarlinConfigPre-5-post.h:24,
                 from Marlin\src\gcode\sd\../../inc/MarlinConfigPre-6-type.h:24,
                 from Marlin\src\gcode\sd\../../inc/MarlinConfig.h:32,
                 from Marlin\src\gcode\sd\M23.cpp:23:
Marlin\src\gcode\sd\../../inc/Conditionals-1-axes.h:247:0: note: this is the location of the previous definition
   #define HAS_TOOL_CENTERPOINT_CONTROL
 
In file included from Marlin\src\gcode\sd\../../inc/MarlinConfigPre.h:31:0,
                 from Marlin\src\gcode\sd\../../inc/MarlinConfigPre-5-post.h:24,
                 from Marlin\src\gcode\sd\../../inc/MarlinConfigPre-6-type.h:24,
                 from Marlin\src\gcode\sd\../../inc/MarlinConfig.h:32,
                 from Marlin\src\gcode\sd\M21_M22.cpp:23:
Marlin\src\gcode\sd\../../inc/Conditionals-1-axes.h:247:0: note: this is the location of the previous definition
   #define HAS_TOOL_CENTERPOINT_CONTROL
 
In file included from Marlin\src\gcode\sd\../../inc/MarlinConfigPre.h:33:0,
                 from Marlin\src\gcode\sd\../../inc/MarlinConfigPre-5-post.h:24,
                 from Marlin\src\gcode\sd\../../inc/MarlinConfigPre-6-type.h:24,
                 from Marlin\src\gcode\sd\../../inc/MarlinConfig.h:32,
                 from Marlin\src\gcode\sd\M24_M25.cpp:23:
Marlin\src\gcode\sd\../../inc/Conditionals-3-etc.h:647:0: warning: "HAS_TOOL_CENTERPOINT_CONTROL" redefined
   #define HAS_TOOL_CENTERPOINT_CONTROL 1
 
In file included from Marlin\src\gcode\sd\../../inc/MarlinConfigPre.h:31:0,
                 from Marlin\src\gcode\sd\../../inc/MarlinConfigPre-5-post.h:24,
                 from Marlin\src\gcode\sd\../../inc/MarlinConfigPre-6-type.h:24,
                 from Marlin\src\gcode\sd\../../inc/MarlinConfig.h:32,
                 from Marlin\src\gcode\sd\M24_M25.cpp:23:
Marlin\src\gcode\sd\../../inc/Conditionals-1-axes.h:247:0: note: this is the location of the previous definition
   #define HAS_TOOL_CENTERPOINT_CONTROL

In file included from Marlin\src\gcode\sd\../../inc/MarlinConfigPre.h:33:0,
                 from Marlin\src\gcode\sd\../../inc/MarlinConfigPre-5-post.h:24,
                 from Marlin\src\gcode\sd\../../inc/MarlinConfigPre-6-type.h:24,
                 from Marlin\src\gcode\sd\../../inc/MarlinConfig.h:32,
                 from Marlin\src\gcode\sd\M26.cpp:23:
Marlin\src\gcode\sd\../../inc/Conditionals-3-etc.h:647:0: warning: "HAS_TOOL_CENTERPOINT_CONTROL" redefined
   #define HAS_TOOL_CENTERPOINT_CONTROL 1

In file included from Marlin\src\gcode\sd\../../inc/MarlinConfigPre.h:31:0,
                 from Marlin\src\gcode\sd\../../inc/MarlinConfigPre-5-post.h:24,
                 from Marlin\src\gcode\sd\../../inc/MarlinConfigPre-6-type.h:24,
                 from Marlin\src\gcode\sd\../../inc/MarlinConfig.h:32,
                 from Marlin\src\gcode\sd\M26.cpp:23:
Marlin\src\gcode\sd\../../inc/Conditionals-1-axes.h:247:0: note: this is the location of the previous definition
   #define HAS_TOOL_CENTERPOINT_CONTROL
 
In file included from Marlin\src\gcode\sd\../../inc/MarlinConfigPre.h:33:0,
                 from Marlin\src\gcode\sd\../../inc/MarlinConfigPre-5-post.h:24,
                 from Marlin\src\gcode\sd\../../inc/MarlinConfigPre-6-type.h:24,
                 from Marlin\src\gcode\sd\../../inc/MarlinConfig.h:32,
                 from Marlin\src\gcode\sd\M28_M29.cpp:23:
Marlin\src\gcode\sd\../../inc/Conditionals-3-etc.h:647:0: warning: "HAS_TOOL_CENTERPOINT_CONTROL" redefined
   #define HAS_TOOL_CENTERPOINT_CONTROL 1

In file included from Marlin\src\gcode\sd\../../inc/MarlinConfigPre.h:33:0,
                 from Marlin\src\gcode\sd\../../inc/MarlinConfigPre-5-post.h:24,
                 from Marlin\src\gcode\sd\../../inc/MarlinConfigPre-6-type.h:24,
                 from Marlin\src\gcode\sd\../../inc/MarlinConfig.h:32,
                 from Marlin\src\gcode\sd\M27.cpp:23:
Marlin\src\gcode\sd\../../inc/Conditionals-3-etc.h:647:0: warning: "HAS_TOOL_CENTERPOINT_CONTROL" redefined
   #define HAS_TOOL_CENTERPOINT_CONTROL 1
 
In file included from Marlin\src\gcode\sd\../../inc/MarlinConfigPre.h:31:0,
                 from Marlin\src\gcode\sd\../../inc/MarlinConfigPre-5-post.h:24,
                 from Marlin\src\gcode\sd\../../inc/MarlinConfigPre-6-type.h:24,
                 from Marlin\src\gcode\sd\../../inc/MarlinConfig.h:32,
                 from Marlin\src\gcode\sd\M28_M29.cpp:23:
Marlin\src\gcode\sd\../../inc/Conditionals-1-axes.h:247:0: note: this is the location of the previous definition
   #define HAS_TOOL_CENTERPOINT_CONTROL
 
In file included from Marlin\src\gcode\sd\../../inc/MarlinConfigPre.h:33:0,
                 from Marlin\src\gcode\sd\../../inc/MarlinConfigPre-5-post.h:24,
                 from Marlin\src\gcode\sd\../../inc/MarlinConfigPre-6-type.h:24,
                 from Marlin\src\gcode\sd\../../inc/MarlinConfig.h:32,
                 from Marlin\src\gcode\sd\M32.cpp:23:
Marlin\src\gcode\sd\../../inc/Conditionals-3-etc.h:647:0: warning: "HAS_TOOL_CENTERPOINT_CONTROL" redefined
   #define HAS_TOOL_CENTERPOINT_CONTROL 1
 
In file included from Marlin\src\gcode\sd\../../inc/MarlinConfigPre.h:31:0,
                 from Marlin\src\gcode\sd\../../inc/MarlinConfigPre-5-post.h:24,
                 from Marlin\src\gcode\sd\../../inc/MarlinConfigPre-6-type.h:24,
                 from Marlin\src\gcode\sd\../../inc/MarlinConfig.h:32,
                 from Marlin\src\gcode\sd\M27.cpp:23:
Marlin\src\gcode\sd\../../inc/Conditionals-1-axes.h:247:0: note: this is the location of the previous definition
   #define HAS_TOOL_CENTERPOINT_CONTROL

In file included from Marlin\src\gcode\sd\../../inc/MarlinConfigPre.h:31:0,
                 from Marlin\src\gcode\sd\../../inc/MarlinConfigPre-5-post.h:24,
                 from Marlin\src\gcode\sd\../../inc/MarlinConfigPre-6-type.h:24,
                 from Marlin\src\gcode\sd\../../inc/MarlinConfig.h:32,
                 from Marlin\src\gcode\sd\M32.cpp:23:
Marlin\src\gcode\sd\../../inc/Conditionals-1-axes.h:247:0: note: this is the location of the previous definition
   #define HAS_TOOL_CENTERPOINT_CONTROL

In file included from Marlin\src\gcode\sd\../../inc/MarlinConfigPre.h:33:0,
                 from Marlin\src\gcode\sd\../../inc/MarlinConfigPre-5-post.h:24,
                 from Marlin\src\gcode\sd\../../inc/MarlinConfigPre-6-type.h:24,
                 from Marlin\src\gcode\sd\../../inc/MarlinConfig.h:32,
                 from Marlin\src\gcode\sd\M30.cpp:23:
Marlin\src\gcode\sd\../../inc/Conditionals-3-etc.h:647:0: warning: "HAS_TOOL_CENTERPOINT_CONTROL" redefined
   #define HAS_TOOL_CENTERPOINT_CONTROL 1

In file included from Marlin\src\gcode\sd\../../inc/MarlinConfigPre.h:31:0,
                 from Marlin\src\gcode\sd\../../inc/MarlinConfigPre-5-post.h:24,
                 from Marlin\src\gcode\sd\../../inc/MarlinConfigPre-6-type.h:24,
                 from Marlin\src\gcode\sd\../../inc/MarlinConfig.h:32,
                 from Marlin\src\gcode\sd\M30.cpp:23:
Marlin\src\gcode\sd\../../inc/Conditionals-1-axes.h:247:0: note: this is the location of the previous definition
   #define HAS_TOOL_CENTERPOINT_CONTROL

In file included from Marlin\src\gcode\sd\../../inc/MarlinConfigPre.h:33:0,
                 from Marlin\src\gcode\sd\../../inc/MarlinConfigPre-5-post.h:24,
                 from Marlin\src\gcode\sd\../../inc/MarlinConfigPre-6-type.h:24,
                 from Marlin\src\gcode\sd\../../inc/MarlinConfig.h:32,
                 from Marlin\src\gcode\sd\M34.cpp:23:
Marlin\src\gcode\sd\../../inc/Conditionals-3-etc.h:647:0: warning: "HAS_TOOL_CENTERPOINT_CONTROL" redefined
   #define HAS_TOOL_CENTERPOINT_CONTROL 1

In file included from Marlin\src\gcode\sd\../../inc/MarlinConfigPre.h:33:0,
                 from Marlin\src\gcode\sd\../../inc/MarlinConfigPre-5-post.h:24,
                 from Marlin\src\gcode\sd\../../inc/MarlinConfigPre-6-type.h:24,
                 from Marlin\src\gcode\sd\../../inc/MarlinConfig.h:32,
                 from Marlin\src\gcode\sd\M33.cpp:23:
Marlin\src\gcode\sd\../../inc/Conditionals-3-etc.h:647:0: warning: "HAS_TOOL_CENTERPOINT_CONTROL" redefined
   #define HAS_TOOL_CENTERPOINT_CONTROL 1
 
In file included from Marlin\src\gcode\sd\../../inc/MarlinConfigPre.h:31:0,
                 from Marlin\src\gcode\sd\../../inc/MarlinConfigPre-5-post.h:24,
                 from Marlin\src\gcode\sd\../../inc/MarlinConfigPre-6-type.h:24,
                 from Marlin\src\gcode\sd\../../inc/MarlinConfig.h:32,
                 from Marlin\src\gcode\sd\M33.cpp:23:
Marlin\src\gcode\sd\../../inc/Conditionals-1-axes.h:247:0: note: this is the location of the previous definition
   #define HAS_TOOL_CENTERPOINT_CONTROL
 
In file included from Marlin\src\gcode\sd\../../inc/MarlinConfigPre.h:31:0,
                 from Marlin\src\gcode\sd\../../inc/MarlinConfigPre-5-post.h:24,
                 from Marlin\src\gcode\sd\../../inc/MarlinConfigPre-6-type.h:24,
                 from Marlin\src\gcode\sd\../../inc/MarlinConfig.h:32,
                 from Marlin\src\gcode\sd\M34.cpp:23:
Marlin\src\gcode\sd\../../inc/Conditionals-1-axes.h:247:0: note: this is the location of the previous definition
   #define HAS_TOOL_CENTERPOINT_CONTROL
 
In file included from Marlin\src\gcode\sd\../../inc/MarlinConfigPre.h:33:0,
                 from Marlin\src\gcode\sd\../../inc/MarlinConfigPre-5-post.h:24,
                 from Marlin\src\gcode\sd\../../inc/MarlinConfigPre-6-type.h:24,
                 from Marlin\src\gcode\sd\../../inc/MarlinConfig.h:32,
                 from Marlin\src\gcode\sd\M524.cpp:23:
Marlin\src\gcode\sd\../../inc/Conditionals-3-etc.h:647:0: warning: "HAS_TOOL_CENTERPOINT_CONTROL" redefined
   #define HAS_TOOL_CENTERPOINT_CONTROL 1
 
In file included from Marlin\src\gcode\sd\../../inc/MarlinConfigPre.h:31:0,
                 from Marlin\src\gcode\sd\../../inc/MarlinConfigPre-5-post.h:24,
                 from Marlin\src\gcode\sd\../../inc/MarlinConfigPre-6-type.h:24,
                 from Marlin\src\gcode\sd\../../inc/MarlinConfig.h:32,
                 from Marlin\src\gcode\sd\M524.cpp:23:
Marlin\src\gcode\sd\../../inc/Conditionals-1-axes.h:247:0: note: this is the location of the previous definition
   #define HAS_TOOL_CENTERPOINT_CONTROL
 
In file included from Marlin\src\gcode\sd\../../inc/MarlinConfigPre.h:33:0,
                 from Marlin\src\gcode\sd\../../inc/MarlinConfigPre-5-post.h:24,
                 from Marlin\src\gcode\sd\../../inc/MarlinConfigPre-6-type.h:24,
                 from Marlin\src\gcode\sd\../../inc/MarlinConfig.h:32,
                 from Marlin\src\gcode\sd\M808.cpp:23:
Marlin\src\gcode\sd\../../inc/Conditionals-3-etc.h:647:0: warning: "HAS_TOOL_CENTERPOINT_CONTROL" redefined
   #define HAS_TOOL_CENTERPOINT_CONTROL 1
 
In file included from Marlin\src\gcode\sd\../../inc/MarlinConfigPre.h:31:0,
                 from Marlin\src\gcode\sd\../../inc/MarlinConfigPre-5-post.h:24,
                 from Marlin\src\gcode\sd\../../inc/MarlinConfigPre-6-type.h:24,
                 from Marlin\src\gcode\sd\../../inc/MarlinConfig.h:32,
                 from Marlin\src\gcode\sd\M808.cpp:23:
Marlin\src\gcode\sd\../../inc/Conditionals-1-axes.h:247:0: note: this is the location of the previous definition
   #define HAS_TOOL_CENTERPOINT_CONTROL

In file included from Marlin\src\gcode\sd\../../inc/MarlinConfigPre.h:33:0,
                 from Marlin\src\gcode\sd\../../inc/MarlinConfigPre-5-post.h:24,
                 from Marlin\src\gcode\sd\../../inc/MarlinConfigPre-6-type.h:24,
                 from Marlin\src\gcode\sd\../../inc/MarlinConfig.h:32,
                 from Marlin\src\gcode\sd\M928.cpp:23:
Marlin\src\gcode\sd\../../inc/Conditionals-3-etc.h:647:0: warning: "HAS_TOOL_CENTERPOINT_CONTROL" redefined
   #define HAS_TOOL_CENTERPOINT_CONTROL 1

In file included from Marlin\src\gcode\stats\../../inc/MarlinConfigPre.h:33:0,
                 from Marlin\src\gcode\stats\../../inc/MarlinConfigPre-5-post.h:24,
                 from Marlin\src\gcode\stats\../../inc/MarlinConfigPre-6-type.h:24,
                 from Marlin\src\gcode\stats\../../inc/MarlinConfig.h:32,
                 from Marlin\src\gcode\stats\../gcode.h:344,
                 from Marlin\src\gcode\stats\M31.cpp:23:
Marlin\src\gcode\stats\../../inc/Conditionals-3-etc.h:647:0: warning: "HAS_TOOL_CENTERPOINT_CONTROL" redefined
   #define HAS_TOOL_CENTERPOINT_CONTROL 1
 
In file included from Marlin\src\gcode\stats\../../inc/MarlinConfigPre.h:31:0,
                 from Marlin\src\gcode\stats\../../inc/MarlinConfigPre-5-post.h:24,
                 from Marlin\src\gcode\stats\../../inc/MarlinConfigPre-6-type.h:24,
                 from Marlin\src\gcode\stats\../../inc/MarlinConfig.h:32,
                 from Marlin\src\gcode\stats\../gcode.h:344,
                 from Marlin\src\gcode\stats\M31.cpp:23:
Marlin\src\gcode\stats\../../inc/Conditionals-1-axes.h:247:0: note: this is the location of the previous definition
   #define HAS_TOOL_CENTERPOINT_CONTROL
 
In file included from Marlin\src\gcode\sd\../../inc/MarlinConfigPre.h:31:0,
                 from Marlin\src\gcode\sd\../../inc/MarlinConfigPre-5-post.h:24,
                 from Marlin\src\gcode\sd\../../inc/MarlinConfigPre-6-type.h:24,
                 from Marlin\src\gcode\sd\../../inc/MarlinConfig.h:32,
                 from Marlin\src\gcode\sd\M928.cpp:23:
Marlin\src\gcode\sd\../../inc/Conditionals-1-axes.h:247:0: note: this is the location of the previous definition
   #define HAS_TOOL_CENTERPOINT_CONTROL
 
In file included from Marlin\src\gcode\temp\../../inc/MarlinConfigPre.h:33:0,
                 from Marlin\src\gcode\temp\../../inc/MarlinConfigPre-5-post.h:24,
                 from Marlin\src\gcode\temp\../../inc/MarlinConfigPre-6-type.h:24,
                 from Marlin\src\gcode\temp\../../inc/MarlinConfig.h:32,
                 from Marlin\src\gcode\temp\../gcode.h:344,
                 from Marlin\src\gcode\temp\M105.cpp:23:
Marlin\src\gcode\temp\../../inc/Conditionals-3-etc.h:647:0: warning: "HAS_TOOL_CENTERPOINT_CONTROL" redefined
   #define HAS_TOOL_CENTERPOINT_CONTROL 1
 
In file included from Marlin\src\gcode\temp\../../inc/MarlinConfigPre.h:31:0,
                 from Marlin\src\gcode\temp\../../inc/MarlinConfigPre-5-post.h:24,
                 from Marlin\src\gcode\temp\../../inc/MarlinConfigPre-6-type.h:24,
                 from Marlin\src\gcode\temp\../../inc/MarlinConfig.h:32,
                 from Marlin\src\gcode\temp\../gcode.h:344,
                 from Marlin\src\gcode\temp\M105.cpp:23:
Marlin\src\gcode\temp\../../inc/Conditionals-1-axes.h:247:0: note: this is the location of the previous definition
   #define HAS_TOOL_CENTERPOINT_CONTROL
 
In file included from Marlin\src\gcode\stats\../../inc/MarlinConfigPre.h:33:0,
                 from Marlin\src\gcode\stats\../../inc/MarlinConfigPre-5-post.h:24,
                 from Marlin\src\gcode\stats\../../inc/MarlinConfigPre-6-type.h:24,
                 from Marlin\src\gcode\stats\../../inc/MarlinConfig.h:32,
                 from Marlin\src\gcode\stats\../gcode.h:344,
                 from Marlin\src\gcode\stats\M75-M78.cpp:23:
Marlin\src\gcode\stats\../../inc/Conditionals-3-etc.h:647:0: warning: "HAS_TOOL_CENTERPOINT_CONTROL" redefined
   #define HAS_TOOL_CENTERPOINT_CONTROL 1
 
In file included from Marlin\src\gcode\stats\../../inc/MarlinConfigPre.h:31:0,
                 from Marlin\src\gcode\stats\../../inc/MarlinConfigPre-5-post.h:24,
                 from Marlin\src\gcode\stats\../../inc/MarlinConfigPre-6-type.h:24,
                 from Marlin\src\gcode\stats\../../inc/MarlinConfig.h:32,
                 from Marlin\src\gcode\stats\../gcode.h:344,
                 from Marlin\src\gcode\stats\M75-M78.cpp:23:
Marlin\src\gcode\stats\../../inc/Conditionals-1-axes.h:247:0: note: this is the location of the previous definition
   #define HAS_TOOL_CENTERPOINT_CONTROL
 
In file included from Marlin\src\gcode\temp\../../inc/MarlinConfigPre.h:33:0,
                 from Marlin\src\gcode\temp\../../inc/MarlinConfigPre-5-post.h:24,
                 from Marlin\src\gcode\temp\../../inc/MarlinConfigPre-6-type.h:24,
                 from Marlin\src\gcode\temp\../../inc/MarlinConfig.h:32,
                 from Marlin\src\gcode\temp\M106_M107.cpp:23:
Marlin\src\gcode\temp\../../inc/Conditionals-3-etc.h:647:0: warning: "HAS_TOOL_CENTERPOINT_CONTROL" redefined
   #define HAS_TOOL_CENTERPOINT_CONTROL 1
 
In file included from Marlin\src\gcode\temp\../../inc/MarlinConfigPre.h:31:0,
                 from Marlin\src\gcode\temp\../../inc/MarlinConfigPre-5-post.h:24,
                 from Marlin\src\gcode\temp\../../inc/MarlinConfigPre-6-type.h:24,
                 from Marlin\src\gcode\temp\../../inc/MarlinConfig.h:32,
                 from Marlin\src\gcode\temp\M106_M107.cpp:23:
Marlin\src\gcode\temp\../../inc/Conditionals-1-axes.h:247:0: note: this is the location of the previous definition
   #define HAS_TOOL_CENTERPOINT_CONTROL
 
In file included from Marlin\src\inc\MarlinConfigPre.h:33:0,
                 from Marlin\src\inc\MarlinConfigPre-5-post.h:24,
                 from Marlin\src\inc\MarlinConfigPre-6-type.h:24,
                 from Marlin\src\inc\MarlinConfig.h:32,
                 from Marlin\src\inc\Warnings.cpp:32:
Marlin\src\inc\Conditionals-3-etc.h:647:0: warning: "HAS_TOOL_CENTERPOINT_CONTROL" redefined
   #define HAS_TOOL_CENTERPOINT_CONTROL 1
 
In file included from Marlin\src\inc\MarlinConfigPre.h:31:0,
                 from Marlin\src\inc\MarlinConfigPre-5-post.h:24,
                 from Marlin\src\inc\MarlinConfigPre-6-type.h:24,
                 from Marlin\src\inc\MarlinConfig.h:32,
                 from Marlin\src\inc\Warnings.cpp:32:
Marlin\src\inc\Conditionals-1-axes.h:247:0: note: this is the location of the previous definition
   #define HAS_TOOL_CENTERPOINT_CONTROL
 
In file included from Marlin\src\lcd\dogm\../../inc/MarlinConfigPre.h:33:0,
                 from Marlin\src\lcd\dogm\lcdprint_u8g.cpp:10:
Marlin\src\lcd\dogm\../../inc/Conditionals-3-etc.h:647:0: warning: "HAS_TOOL_CENTERPOINT_CONTROL" redefined
   #define HAS_TOOL_CENTERPOINT_CONTROL 1
 
In file included from Marlin\src\lcd\dogm\../../inc/MarlinConfigPre.h:31:0,
                 from Marlin\src\lcd\dogm\lcdprint_u8g.cpp:10:
Marlin\src\lcd\dogm\../../inc/Conditionals-1-axes.h:247:0: note: this is the location of the previous definition
   #define HAS_TOOL_CENTERPOINT_CONTROL
 
Marlin\src\inc\Warnings.cpp:398:6: warning: #warning "Note: Auto-assigned I STEP/DIR/ENABLE_PINs to unused En_STEP/DIR/ENABLE_PINs. (Define NO_AUTO_ASSIGN_WARNING to suppress this warning.)" [-Wcpp]
     #warning "Note: Auto-assigned I STEP/DIR/ENABLE_PINs to unused En_STEP/DIR/ENABLE_PINs. (Define NO_AUTO_ASSIGN_WARNING to suppress this warning.)"
      ^~~~~~~
Marlin\src\inc\Warnings.cpp:450:6: warning: #warning "Note: Auto-assigned J STEP/DIR/ENABLE_PINs to unused En_STEP/DIR/ENABLE_PINs. (Define NO_AUTO_ASSIGN_WARNING to suppress this warning.)" [-Wcpp]
     #warning "Note: Auto-assigned J STEP/DIR/ENABLE_PINs to unused En_STEP/DIR/ENABLE_PINs. (Define NO_AUTO_ASSIGN_WARNING to suppress this warning.)"
      ^~~~~~~
In file included from Marlin\src\lcd\dogm\../../inc/MarlinConfigPre.h:33:0,
                 from Marlin\src\lcd\dogm\marlinui_DOGM.cpp:38:
Marlin\src\lcd\dogm\../../inc/Conditionals-3-etc.h:647:0: warning: "HAS_TOOL_CENTERPOINT_CONTROL" redefined
   #define HAS_TOOL_CENTERPOINT_CONTROL 1
 
In file included from Marlin\src\lcd\dogm\../../inc/MarlinConfigPre.h:31:0,
                 from Marlin\src\lcd\dogm\marlinui_DOGM.cpp:38:
Marlin\src\lcd\dogm\../../inc/Conditionals-1-axes.h:247:0: note: this is the location of the previous definition
   #define HAS_TOOL_CENTERPOINT_CONTROL
 
In file included from Marlin\src\lcd\dogm\../../inc/MarlinConfigPre.h:33:0,
                 from Marlin\src\lcd\dogm\status_screen_DOGM.cpp:28:
Marlin\src\lcd\dogm\../../inc/Conditionals-3-etc.h:647:0: warning: "HAS_TOOL_CENTERPOINT_CONTROL" redefined
   #define HAS_TOOL_CENTERPOINT_CONTROL 1

In file included from Marlin\src\lcd\dogm\u8g\../../../inc/MarlinConfigPre.h:33:0,
                 from Marlin\src\lcd\dogm\u8g\u8g_dev_ssd1306_sh1106_128x64_I2C.cpp:68:
Marlin\src\lcd\dogm\u8g\../../../inc/Conditionals-3-etc.h:647:0: warning: "HAS_TOOL_CENTERPOINT_CONTROL" redefined
   #define HAS_TOOL_CENTERPOINT_CONTROL 1
 
In file included from Marlin\src\lcd\dogm\../../inc/MarlinConfigPre.h:31:0,
                 from Marlin\src\lcd\dogm\status_screen_DOGM.cpp:28:
Marlin\src\lcd\dogm\../../inc/Conditionals-1-axes.h:247:0: note: this is the location of the previous definition
   #define HAS_TOOL_CENTERPOINT_CONTROL
 
In file included from Marlin\src\lcd\dogm\u8g\../../../inc/MarlinConfigPre.h:31:0,
                 from Marlin\src\lcd\dogm\u8g\u8g_dev_ssd1306_sh1106_128x64_I2C.cpp:68:
Marlin\src\lcd\dogm\u8g\../../../inc/Conditionals-1-axes.h:247:0: note: this is the location of the previous definition
   #define HAS_TOOL_CENTERPOINT_CONTROL

In file included from Marlin\src\lcd\dogm\../../inc/MarlinConfigPre.h:33:0,
                 from Marlin\src\lcd\dogm\status_screen_lite_ST7920.cpp:71:
Marlin\src\lcd\dogm\../../inc/Conditionals-3-etc.h:647:0: warning: "HAS_TOOL_CENTERPOINT_CONTROL" redefined
   #define HAS_TOOL_CENTERPOINT_CONTROL 1
 
In file included from Marlin\src\lcd\dogm\../../inc/MarlinConfigPre.h:31:0,
                 from Marlin\src\lcd\dogm\status_screen_lite_ST7920.cpp:71:
Marlin\src\lcd\dogm\../../inc/Conditionals-1-axes.h:247:0: note: this is the location of the previous definition
   #define HAS_TOOL_CENTERPOINT_CONTROL

In file included from Marlin\src\lcd\dogm\status_screen_DOGM.cpp:32:0:
Marlin\src\lcd\dogm\dogm_Statusscreen.h:724:25: error: missing binary operator before token "("
 #if HOTENDS > 0 && !BOTH(LCD_SHOW_SECONDARY_AXES, HAS_K_AXIS)
                         ^
Marlin\src\lcd\dogm\status_screen_DOGM.cpp:694:15: error: missing binary operator before token "("
     #if EITHER(XYZ_NO_FRAME, XYZ_HOLLOW_FRAME)
               ^
In file included from Marlin\src\lcd\dogm\u8g\../../../inc/MarlinConfigPre.h:33:0,
                 from Marlin\src\lcd\dogm\u8g\../../../inc/MarlinConfigPre-5-post.h:24,
                 from Marlin\src\lcd\dogm\u8g\../../../inc/MarlinConfigPre-6-type.h:24,
                 from Marlin\src\lcd\dogm\u8g\../../../inc/MarlinConfig.h:32,
                 from Marlin\src\lcd\dogm\u8g\u8g_dev_ssd1306_sh1106_128x64_SWSPI.cpp:56:
Marlin\src\lcd\dogm\u8g\../../../inc/Conditionals-3-etc.h:647:0: warning: "HAS_TOOL_CENTERPOINT_CONTROL" redefined
   #define HAS_TOOL_CENTERPOINT_CONTROL 1

In file included from Marlin\src\lcd\dogm\u8g\../../../inc/MarlinConfigPre.h:31:0,
                 from Marlin\src\lcd\dogm\u8g\../../../inc/MarlinConfigPre-5-post.h:24,
                 from Marlin\src\lcd\dogm\u8g\../../../inc/MarlinConfigPre-6-type.h:24,
                 from Marlin\src\lcd\dogm\u8g\../../../inc/MarlinConfig.h:32,
                 from Marlin\src\lcd\dogm\u8g\u8g_dev_ssd1306_sh1106_128x64_SWSPI.cpp:56:
Marlin\src\lcd\dogm\u8g\../../../inc/Conditionals-1-axes.h:247:0: note: this is the location of the previous definition
   #define HAS_TOOL_CENTERPOINT_CONTROL
 
In file included from Marlin\src\lcd\dogm\u8g\../../../inc/MarlinConfigPre.h:33:0,
                 from Marlin\src\lcd\dogm\u8g\u8g_dev_ssd1309_12864.cpp:23:
Marlin\src\lcd\dogm\u8g\../../../inc/Conditionals-3-etc.h:647:0: warning: "HAS_TOOL_CENTERPOINT_CONTROL" redefined
   #define HAS_TOOL_CENTERPOINT_CONTROL 1

In file included from Marlin\src\lcd\dogm\u8g\../../../inc/MarlinConfigPre.h:31:0,
                 from Marlin\src\lcd\dogm\u8g\u8g_dev_ssd1309_12864.cpp:23:
Marlin\src\lcd\dogm\u8g\../../../inc/Conditionals-1-axes.h:247:0: note: this is the location of the previous definition
   #define HAS_TOOL_CENTERPOINT_CONTROL

Marlin\src\lcd\dogm\status_screen_DOGM.cpp: In function 'void _draw_secondary_axis_value(AxisEnum, const char*, bool)':
Marlin\src\lcd\dogm\status_screen_DOGM.cpp:531:26: error: 'axis_is_rotational' was not declared in this scope
     const bool is_inch = axis_is_rotational(axis) ? false : parser.using_inch_units();
                          ^~~~~~~~~~~~~~~~~~
In file included from Marlin\src\lcd\dogm\u8g\../../../inc/MarlinConfigPre.h:33:0,
                 from Marlin\src\lcd\dogm\u8g\../../../inc/MarlinConfigPre-5-post.h:24,
                 from Marlin\src\lcd\dogm\u8g\../../../inc/MarlinConfigPre-6-type.h:24,
                 from Marlin\src\lcd\dogm\u8g\../../../inc/MarlinConfig.h:32,
                 from Marlin\src\lcd\dogm\u8g\u8g_dev_st7565_64128n_HAL.cpp:56:
Marlin\src\lcd\dogm\u8g\../../../inc/Conditionals-3-etc.h:647:0: warning: "HAS_TOOL_CENTERPOINT_CONTROL" redefined
   #define HAS_TOOL_CENTERPOINT_CONTROL 1

In file included from Marlin\src\lcd\dogm\u8g\../../../inc/MarlinConfigPre.h:31:0,
                 from Marlin\src\lcd\dogm\u8g\../../../inc/MarlinConfigPre-5-post.h:24,
                 from Marlin\src\lcd\dogm\u8g\../../../inc/MarlinConfigPre-6-type.h:24,
                 from Marlin\src\lcd\dogm\u8g\../../../inc/MarlinConfig.h:32,
                 from Marlin\src\lcd\dogm\u8g\u8g_dev_st7565_64128n_HAL.cpp:56:
Marlin\src\lcd\dogm\u8g\../../../inc/Conditionals-1-axes.h:247:0: note: this is the location of the previous definition
   #define HAS_TOOL_CENTERPOINT_CONTROL
 
Marlin\src\lcd\dogm\status_screen_DOGM.cpp:531:26: note: suggested alternative: 'rotational'
     const bool is_inch = axis_is_rotational(axis) ? false : parser.using_inch_units();
                          ^~~~~~~~~~~~~~~~~~
                          rotational
In file included from Marlin\src\lcd\dogm\../../inc/MarlinConfigPre-1-axes.h:40:0,
                 from Marlin\src\lcd\dogm\../../inc/Conditionals-1-axes.h:32,
                 from Marlin\src\lcd\dogm\../../inc/MarlinConfigPre.h:31,
                 from Marlin\src\lcd\dogm\status_screen_DOGM.cpp:28:
Marlin\src\lcd\dogm\status_screen_DOGM.cpp: In static member function 'static void MarlinUI::draw_status_screen()':
Marlin\src\lcd\dogm\status_screen_DOGM.cpp:718:71: error: 'blink' was not declared in this scope
         TERN_(HAS_I_AXIS, _draw_secondary_axis_value(I_AXIS, istring, blink));
                                                                       ^
Marlin\src\lcd\dogm\../../inc/../core/macros.h:624:26: note: in definition of macro 'THIRD'
 #define THIRD(a,b,c,...) c
                          ^
Marlin\src\lcd\dogm\../../inc/../core/macros.h:212:29: note: in expansion of macro '___TERN'
 #define __TERN(T,V...)      ___TERN(_CAT(_NO,T),V)  // Prepend '_NO' to get '_NOT_0' or '_NOT_1'
                             ^~~~~~~
Marlin\src\lcd\dogm\../../inc/../core/macros.h:211:29: note: in expansion of macro '__TERN'
 #define _TERN(E,V...)       __TERN(_CAT(T_,E),V)    // Prepend 'T_' to get 'T_0' or 'T_1'
                             ^~~~~~
Marlin\src\lcd\dogm\../../inc/../core/macros.h:210:29: note: in expansion of macro '_TERN'
 #define TERN_(O,A)          _TERN(_ENA_1(O),,A)     // OPTION ? 'A' : '<nul>'
                             ^~~~~
Marlin\src\lcd\dogm\status_screen_DOGM.cpp:718:9: note: in expansion of macro 'TERN_'
         TERN_(HAS_I_AXIS, _draw_secondary_axis_value(I_AXIS, istring, blink));
         ^~~~~
In file included from Marlin\src\lcd\dogm\u8g\../../../inc/MarlinConfigPre.h:33:0,
                 from Marlin\src\lcd\dogm\u8g\u8g_dev_st7920_128x64_HAL.cpp:56:
Marlin\src\lcd\dogm\u8g\../../../inc/Conditionals-3-etc.h:647:0: warning: "HAS_TOOL_CENTERPOINT_CONTROL" redefined
   #define HAS_TOOL_CENTERPOINT_CONTROL 1
 
In file included from Marlin\src\lcd\dogm\u8g\../../../inc/MarlinConfigPre.h:31:0,
                 from Marlin\src\lcd\dogm\u8g\u8g_dev_st7920_128x64_HAL.cpp:56:
Marlin\src\lcd\dogm\u8g\../../../inc/Conditionals-1-axes.h:247:0: note: this is the location of the previous definition
   #define HAS_TOOL_CENTERPOINT_CONTROL
 
In file included from Marlin\src\lcd\dogm\u8g\../../../inc/MarlinConfigPre.h:33:0,
                 from Marlin\src\lcd\dogm\u8g\../../../inc/MarlinConfigPre-5-post.h:24,
                 from Marlin\src\lcd\dogm\u8g\../../../inc/MarlinConfigPre-6-type.h:24,
                 from Marlin\src\lcd\dogm\u8g\../../../inc/MarlinConfig.h:32,
                 from Marlin\src\lcd\dogm\u8g\u8g_dev_tft_upscale_from_128x64.cpp:56:
Marlin\src\lcd\dogm\u8g\../../../inc/Conditionals-3-etc.h:647:0: warning: "HAS_TOOL_CENTERPOINT_CONTROL" redefined
   #define HAS_TOOL_CENTERPOINT_CONTROL 1

*** [.pio\build\mega2560\src\src\lcd\dogm\status_screen_DOGM.cpp.o] Error 1
In file included from Marlin\src\lcd\dogm\u8g\../../../inc/MarlinConfigPre.h:31:0,
                 from Marlin\src\lcd\dogm\u8g\../../../inc/MarlinConfigPre-5-post.h:24,
                 from Marlin\src\lcd\dogm\u8g\../../../inc/MarlinConfigPre-6-type.h:24,
                 from Marlin\src\lcd\dogm\u8g\../../../inc/MarlinConfig.h:32,
                 from Marlin\src\lcd\dogm\u8g\u8g_dev_tft_upscale_from_128x64.cpp:56:

which screen are you using can you recommend me.

@printercnc
Copy link

hi, are you still working?
i have a problem with my HT cnc machine

// Machine rotary zero point offset is the distance from the gauge line at the tool head to the horizontal
// centerline of the joint that tilts the tool head.
#define DEFAULT_MRZP_OFFSET_Z 100.0 // (mm)

assuming the MRZP offset for the first tool is 100 mm, how will the offset be automatically updated when i replace the second tool.

@DerAndere1
Copy link
Owner Author

DerAndere1 commented May 25, 2025

Last time i tested this, it worked as documented in the README: The DEFAULT_MRZP_OFFSET_Z is independent of any tools. IFor 5 axis CNC machines in head-table configuration (PENTA_AXIS_HT) this is the distance from the gauge line at the tool head to the horizontal centerline of the joint that tilts the tool head. when all axes are in zero position.

The gauge line is a tool-independent reference point at the toolhead, usually at- or close to the bottom surface of the spindle, or at the bottom of the toolhead when all tools/hotends are removed. On the other hand, tool length offsets (HOTEND_OFFSET_Z) are the distances between gage line and the tip of each tool.

In G43.4 tool center point control mode. the firmware uses inverse kinematics calculations to account for all offsets, i.e. the active workspace offset (set by G10 and G54....), MRZP offset (DEFAULT_MRZP_OFFSET_Z) and the tool length offset (HOTEND_OFFSET_Z, set by G10) of the current tool (set by the tool change command T...).

@printercnc
Copy link

Image

Suppose we have an HT machine configuration
We have CNC milling tools

Image

With the first milling cutter as reference, we can choose DEFAULT_MRZP_OFFSET_Z 100.0 // (mm) is the distance from the center line of the rotating shaft A to the horizontal plane of the cutter head. When we change the milling cutter for machining, this distance will change, and manual measurement will no longer be accurate. We use the g425 command to automatically compensate for the HOTEND_OFFSET_Z distance deviation.

/**
 * Automatic backlash, position, and hotend offset calibration
 *
 * Enable G425 to run automatic calibration using an electrically-
 * conductive cube, bolt, or washer mounted on the bed.
 *
 * G425 uses the probe to touch the top and sides of the calibration object
 * on the bed and measures and/or correct positional offsets, axis backlash
 * and hotend offsets.
 *
 * Note: HOTEND_OFFSET and CALIBRATION_OBJECT_CENTER must be set to within
 *       ±5mm of true values for G425 to succeed.

so the distance to make the initial reference HOTEND_OFFSET_Z would probably be like this, and I would have to turn those lines on

// For the other hotends it is their distance from the extruder 0 hotend
#define HOTEND_OFFSET_X { 0.0, 00.00, 00.00 } // (mm) relative X-offset for each nozzle
#define HOTEND_OFFSET_Y { 0.0, 0.00, 00.00 } // (mm) relative Y-offset for each nozzle
#define HOTEND_OFFSET_Z { 0.0, 0.00, 0.00 } // (mm) relative Z-offset for each nozzle

set all to 0 since I selected the cnc tool head without the milling cutter installed as the initial reference.
and this line #define NOZZLE_TO_PROBE_OFFSET { 0, 0, 0, 0, 0 } is also enabled to serve as an offset reference when the g425 command is executed
I see on your main configuration page there is a different instruction to declare DEFAULT_MRZP_OFFSET_Z than in the configuration.h file instruction
https://github.com/DerAndere1/Marlin

For 5 axis CNC machines in head-table configuration (PENTA_AXIS_HT) this is the distance along the Z axis from the machine zero point to the horizontal centerline of the joint that tilts the tool head when all axes are in zero position.
See DEFAULT_MRZP_OFFSET_Z and see the definition of the pivot point (Pz) in reference https://linuxcnc.org/docs/html/motion/5-axis-kinematics.html

@printercnc
Copy link

tôi gặp thêm lỗi này

 from Marlin\src\gcode\calibrate\../../MarlinCore.h:28,
from Marlin\src\gcode\calibrate\G425.cpp:23:
Marlin\src\gcode\calibrate\G425.cpp: In function 'void calibrate_toolhead(measurements_t&, float, uint8_t)':
Marlin\src\gcode\calibrate\G425.cpp:753:24: error: 'set_nozzle' was not declared in this scope
TERN(HAS_TOOLCHANGE, set_nozzle(m, extruder), UNUSED(extruder));
^
Marlin\src\gcode\calibrate\../../inc/../core/macros.h:624:26: note: in definition of macro 'THIRD'
#define THIRD(a,b,c,...) c

khi bật #define CALIBRATION_GCODE
đây là hai file tôi đã chỉnh sửa để biên dịch

Marlin.zip

@DerAndere1
Copy link
Owner Author

DerAndere1 commented May 28, 2025

With the first milling cutter as reference, we can choose DEFAULT_MRZP_OFFSET_Z 100.0 // (mm) is the distance from the center line of the rotating shaft A to the horizontal plane of the cutter head. When we change the milling cutter for machining, this distance will change, and manual measurement will no longer be accurate.

so the distance to make the initial reference HOTEND_OFFSET_Z would probably be like this, and I would have to turn those lines on

// For the other hotends it is their distance from the extruder 0 hotend
#define HOTEND_OFFSET_X { 0.0, 00.00, 00.00 } // (mm) relative X-offset for each nozzle
#define HOTEND_OFFSET_Y { 0.0, 0.00, 00.00 } // (mm) relative Y-offset for each nozzle
#define HOTEND_OFFSET_Z { 0.0, 0.00, 0.00 } // (mm) relative Z-offset for each nozzle

You definitively need to enable those lines as I explained in the past.

set all to 0 since I selected the cnc tool head without the milling cutter installed as the initial reference.

No. You need to set the values of HOTEND_OFFSET_Z to match the distance from the gauge line (bottom of reference tool T0 in your case) to the tip of each tool with a tolerance of +/- 5mm. More negative values mean longer tools. e.g. Hotend offset of tool 0 must stay 0.0. If you have your reference tool T0 and two other tools that are 10 mm longer and 20 mm longer than the reference tool, you would set

#define TOOLS 3
#define HOTEND_OFFSET_X { 0.0, 00.00, 00.00 } // (mm) relative X-offset for each nozzle
#define HOTEND_OFFSET_Y { 0.0, 0.00, 00.00 } // (mm) relative Y-offset for each nozzle
#define HOTEND_OFFSET_Z { 0.0, -10.0, -20.00 } // (mm) relative Z-offset for each nozzle

or set those offsets at runtime to the proper values using M218 ( (more negative values mean longer tools) or G10 (with this command, more positive values mean longer tools) before using G425.

#define NOZZLE_TO_PROBE_OFFSET { 0, 0, 0, 0, 0 }

you have to test this on your machine. I think in your setup, the nozzle-to-probe offset is the distance between the tip of tool 0 and the [tip of the bed probe that is used for G29 and G38]. If you have a dedicated CALIBRATION_PIN defined, NOZZLE_TO_PROBE_OFFSET has not much to do with G425 calibration. Note that it cannot be changed at runtime and it cannot be calibrated. It has to be measured precisely and set accordingly in your config file.

I see on your main configuration page there is a different instruction to declare DEFAULT_MRZP_OFFSET_Z than in the configuration.h file instruction

both definitions have the same meaning, just using different wording. use whatever definition is easier to understand for you.

@DerAndere1
Copy link
Owner Author

tôi gặp thêm lỗi này

 from Marlin\src\gcode\calibrate\../../MarlinCore.h:28,
from Marlin\src\gcode\calibrate\G425.cpp:23:
Marlin\src\gcode\calibrate\G425.cpp: In function 'void calibrate_toolhead(measurements_t&, float, uint8_t)':
Marlin\src\gcode\calibrate\G425.cpp:753:24: error: 'set_nozzle' was not declared in this scope
TERN(HAS_TOOLCHANGE, set_nozzle(m, extruder), UNUSED(extruder));
^
Marlin\src\gcode\calibrate\../../inc/../core/macros.h:624:26: note: in definition of macro 'THIRD'
#define THIRD(a,b,c,...) c

khi bật #define CALIBRATION_GCODE đây là hai file tôi đã chỉnh sửa để biên dịch

Marlin.zip

I just commited a change that should fix the error that occured when enabling CALIBRATION_GCODE in configs with less than 2 hotends.

@DerAndere1
Copy link
Owner Author

I also commited a change to the Marlin2ForPipetBot branch that makes the definitions of MRZP offsets more specific. I added the info that tool 0 has to be selected when determining the MRZP offset. Thanks for your feedback!

@printercnc
Copy link

i get this error

C:\Users\ZALO09~1\AppData\Local\Temp\ccegpPZT.ltrans0.ltrans.o: In function `GcodeSuite::process_parsed_command(bool)':
<artificial>:(.text+0x6fb4): undefined reference to `TemporaryBedLevelingState::TemporaryBedLevelingState(bool)'
======================================

Environment Status Duration ======================================
------------- -------- ------------
mega2560 FAILED 00:00:18.228 

when

 #define CALIBRATION_GCODE is enabled
#if ENABLED(CALIBRATION_GCODE)
// :[0, 1, 2, ..., 127]
#define TOOLS 0

value 0 1 2 3 is the same quantity 3d printer extruder, or 0 is the option for 3d printing. 1 is for laser. 3 is cnc center machine. when i change the numbers 0 1 2 3 it all shows the same error.

@DerAndere1
Copy link
Owner Author

you hit a bug that is also present in upstream MarlinFirmware/Marlin. G425 calibration gave that error when no bed leveling options were enabled, Should be fixed now in the Marlin2ForPipetBot branch.

@printercnc
Copy link

i also tried to enable some bed leveling options but the error still exists. now you have solved it.
i am reviewing the G425 part that you described before MarlinFirmware#26887
you introduced the G38.2 code in the tool length compensation adjustment commands. however the current firmware gives an error if we open

#define G38_PROBE_TARGET
#if ENABLED(G38_PROBE_TARGET)

or the current G425 has been improved to not need the G38.2 command anymore.

@DerAndere1
Copy link
Owner Author

DerAndere1 commented Jun 7, 2025

I answered this questtion already above. Here is the proof: #72 (comment)

Note that G425 and G38 do different things as described in the documentation for Marlin. G425 uses a tool setter connected to a dedicated CALIBRATION_PIN for calibration of Backlash and tool offsets while G38 uses a Z probe that is attached to the tool head to measure the position when the probe triggers (requires the correct option for the probe type to be enabled and either Z_MIN_PROBE_USES_Z_MIN_ENDSTOP_PIN or Z_MIN_PROBE_PIN).

Loosing track of the discussion like this happens easily when you discuss several problems in one issue. That is why it is important that you close github issues when the original problem was resolved and open a new github issue for each new problem you encounter. To open a new issue, go to the "Issues" tab at the top of this repository, then select "new issue" (green button at the top right) and there, provide a description of your problem.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

4 participants