Close



Results 1 to 10 of 89

Hybrid View

  1. #1
    Super Moderator Roxy's Avatar
    Join Date
    Apr 2014
    Location
    Lone Star State
    Posts
    2,182
    Quote Originally Posted by regpye View Post
    I have an error on compiling.



    Marlin_main.cpp: In function 'void run_z_probe()':
    Marlin_main.cpp:921: error: 'do_blocking_move_relative' was not declared in this scope
    ...
    }
    My bad...

    But it isn't my fault. This is one of those times life isn't fair. Scroll down 5 or 6 lines... That is where the definition for do_blocking_move_relative() is. A simple quick fix would be to cut and past the do_blocking_move_relative() function up above run_z_probe(). Then it will be declared when run_z_probe() needs to reference it. Its a shame to mess up the order of things, but if you want to keep making forward progress... That will do it. (But I have to get some sleep!!!! I'll check back in the morning.)
    Last edited by Roxy; 04-28-2014 at 10:19 PM.

  2. #2
    Technician
    Join Date
    Oct 2013
    Location
    South Australia
    Posts
    50
    Quote Originally Posted by Roxy View Post
    My bad...

    But it isn't my fault. This is one of those times life isn't fair. Scroll down 5 or 6 lines... That is where the definition for do_blocking_move_relative() is. A simple quick fix would be to cut and past the do_blocking_move_relative() function up above run_z_probe(). Then it will be declared when run_z_probe() needs to reference it. Its a shame to mess up the order of things, but if you want to keep making forward progress... That will do it. (But I have to get some sleep!!!! I'll check back in the morning.)
    Not sure what to do about this, so I will leave it until I get further instructions.
    I will work on another machine build ready to test this out on. I want to keep a machine for each version so I can compare the differences between them.

  3. #3
    Super Moderator Roxy's Avatar
    Join Date
    Apr 2014
    Location
    Lone Star State
    Posts
    2,182
    Here is the 'right' way to fix that forward reference issue that is keeping it from compiling. It is literally a one line fix.
    Make the declaration for run_z_probe() have the forward declaration for do_blocking_move_relative() just in front of it.
    Usually there is a header file where this would go, but the best place to put this is just in front of the run_z_probe() function so it stays close to where it is needed. That way all the changes are together if you need to move your changes to a more current code base in the future. This time I actually changed my code to verify it would compile! (and then changed it back)

    With these changes the run_z_probe() function knows everything about do_blocking_move() that it needs to know. It knows what type (and how many) parameters it takes and it knows what type (none) of value it returns. The compiler can generate a 'call' to the function even though it doesn't know what the function looks like yet.


    #endif // AUTO_BED_LEVELING_GRID

    static void do_blocking_move_relative(float , float , float ) ; // New line to fix forward reference issue

    static void run_z_probe() {
    plan_bed_level_matrix.set_to_identity();
    feedrate = homing_feedrate[Z_AXIS];

    Last edited by Roxy; 04-29-2014 at 08:32 AM.

  4. #4
    Technician
    Join Date
    Oct 2013
    Location
    South Australia
    Posts
    50
    Quote Originally Posted by Roxy View Post
    Here is the 'right' way to fix that forward reference issue that is keeping it from compiling. It is literally a one line fix.
    Make the declaration for run_z_probe() have the forward declaration for do_blocking_move_relative() just in front of it.
    Usually there is a header file where this would go, but the best place to put this is just in front of the run_z_probe() function so it stays close to where it is needed. That way all the changes are together if you need to move your changes to a more current code base in the future. This time I actually changed my code to verify it would compile! (and then changed it back)

    With these changes the run_z_probe() function knows everything about do_blocking_move() that it needs to know. It knows what type (and how many) parameters it takes and it knows what type (none) of value it returns. The compiler can generate a 'call' to the function even though it doesn't know what the function looks like yet.


    #endif // AUTO_BED_LEVELING_GRID

    static void do_blocking_move_relative(float , float , float ) ; // New line to fix forward reference issue

    static void run_z_probe() {
    plan_bed_level_matrix.set_to_identity();
    feedrate = homing_feedrate[Z_AXIS];

    OK, done that and tried it oiut.
    Nozzle really lifts high now ha..ha..

    Here is a printout of what appeared on the screen as it was working.

    Printer is now online.
    echo:Home X/Y before Z
    At end of homeaxis(Z) raising nozzle.
    At end of homeaxis(Z) done raising nozzle.
    SENDING:G29
    At end of run_z_probe() raising nozzle.
    At end of run_z_probe() done raising nozzle.
    Bed x: 1.00 y: 1.00 z: 6.92
    At end of run_z_probe() raising nozzle.
    At end of run_z_probe() done raising nozzle.
    Bed x: 158.00 y: 1.00 z: 4.12
    At end of run_z_probe() raising nozzle.
    At end of run_z_probe() done raising nozzle.
    Bed x: 158.00 y: 160.00 z: 4.15
    At end of run_z_probe() raising nozzle.
    At end of run_z_probe() done raising nozzle.
    Bed x: 1.00 y: 160.00 z: 6.53
    Eqn coefficients: a: -0.02 b: -0.00 d: 6.84
    planeNormal x: 0.02 y: 0.00 z: 1.00
    echo:endstops hit: Z:-3.47

    I haven't tried a print yet, it is nearly 1.00 am here in Australia, so I am off to the shower and then to bed. Will have another look at it ion the morning (later in the morning)
    Thanks for all your effort, much appreciated.

  5. #5
    Super Moderator Roxy's Avatar
    Join Date
    Apr 2014
    Location
    Lone Star State
    Posts
    2,182
    Quote Originally Posted by regpye View Post
    OK, done that and tried it oiut.
    Nozzle really lifts high now ha..ha..

    OK... Well, that was intentional... I would wait until everything else checks out, but you can change that equate from 10mm to 1mm or 2mm when you are ready.

    And I would leave them in for now, but eventually you will want to delete that extra chit-chat about where the code is executing and what it is doing. That just clutters up the display. That was in there just to help with debugging if the firmware went crazy.

    Quote Originally Posted by regpye View Post
    Here is a printout of what appeared on the screen as it was working.

    Printer is now online.
    echo:Home X/Y before Z
    At end of homeaxis(Z) raising nozzle.
    At end of homeaxis(Z) done raising nozzle.
    SENDING:G29
    At end of run_z_probe() raising nozzle.
    At end of run_z_probe() done raising nozzle.
    Bed x: 1.00 y: 1.00 z: 6.92
    At end of run_z_probe() raising nozzle.
    At end of run_z_probe() done raising nozzle.
    Bed x: 158.00 y: 1.00 z: 4.12
    At end of run_z_probe() raising nozzle.
    At end of run_z_probe() done raising nozzle.
    Bed x: 158.00 y: 160.00 z: 4.15
    At end of run_z_probe() raising nozzle.
    At end of run_z_probe() done raising nozzle.
    Bed x: 1.00 y: 160.00 z: 6.53
    Eqn coefficients: a: -0.02 b: -0.00 d: 6.84
    planeNormal x: 0.02 y: 0.00 z: 1.00
    echo:endstops hit: Z:-3.47
    If you got all the way through the G29 probes without an issue, we might be close. I just noticed, you have a 2.5 mm slope to your bed???? I'm guessing that is on purpose?

    Quote Originally Posted by regpye View Post
    I haven't tried a print yet, it is nearly 1.00 am here in Australia, so I am off to the shower and then to bed. Will have another look at it ion the morning (later in the morning)
    Thanks for all your effort, much appreciated.
    I'm sorry I was so tired last night. I couldn't stand to sit at my computer and try to get everything accurately typed in. This working back and forth across the globe really slows things down!

    It may be we can handle the Z-Probe triggering during a print with just a few changes to the configuration.h file. I don't know about that yet. I guess the right thing to do is just wait until you print a part and see what happens ????

    And once all that is taken care of... It would be good for you to visit this thread:

    http://3dprintboard.com/showthread.p...2518#post12518

    And add the M48 command to your Marlin_Main.CPP file. With that you will be able to measure the repeatability of your Z-Probe to know if the mechanics are working well. Probably you are going to get the best numbers we have seen so far.
    Last edited by Roxy; 04-29-2014 at 10:37 AM.

  6. #6
    Technician
    Join Date
    Oct 2013
    Location
    South Australia
    Posts
    50
    Quote Originally Posted by Roxy View Post
    And add the M48 command to your Marlin_Main.CPP file. With that you will be able to measure the repeatability of your Z-Probe to know if the mechanics are working well. Probably you are going to get the best numbers we have seen so far.
    Tried it out and left all the messages in so could see what is happening.

    SENDING:G1 Y0 F4000 X0 F4000
    At end of homeaxis(Z) raising nozzle.
    At end of homeaxis(Z) done raising nozzle.
    SENDING:G1 Y0 F4000 X0 F4000
    SENDING:M48
    M48 Z-Probe Repeatability test. Version 1.85
    At end of run_z_probe() raising nozzle.
    At end of run_z_probe() done raising nozzle.
    At end of run_z_probe() raising nozzle.
    At end of run_z_probe() done raising nozzle.
    At end of run_z_probe() raising nozzle.
    At end of run_z_probe() done raising nozzle.
    At end of run_z_probe() raising nozzle.
    At end of run_z_probe() done raising nozzle.
    At end of run_z_probe() raising nozzle.
    At end of run_z_probe() done raising nozzle.
    At end of run_z_probe() raising nozzle.
    At end of run_z_probe() done raising nozzle.
    At end of run_z_probe() raising nozzle.
    At end of run_z_probe() done raising nozzle.
    At end of run_z_probe() raising nozzle.
    At end of run_z_probe() done raising nozzle.
    At end of run_z_probe() raising nozzle.
    At end of run_z_probe() done raising nozzle.
    At end of run_z_probe() raising nozzle.
    At end of run_z_probe() done raising nozzle.
    At end of run_z_probe() raising nozzle.
    At end of run_z_probe() done raising nozzle.
    Mean: 11.120100
    Standard Deviation: 0.005024
    echo:endstops hit: Z:6.12


    Should be better with the new setup that I haven't fitted yet. I thought of some other hardware design changes, so I am printing those while re-building.
    Should have the new hardware all setup within a few days.

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •