Chyba při kompilaci firmware pro 3D tiskárnu (Prusa MINI)

...

Moderátor: Mods_senior

Odpovědět
Uživatelský avatar
ddann
Level 1.5
Level 1.5
Příspěvky: 141
Registrován: 14 úno 2011 14:25

Chyba při kompilaci firmware pro 3D tiskárnu (Prusa MINI)

Příspěvek od ddann »

Dobrý večer, vím že to není úplně zdejší téma, ale myslím, že by tu mohl někdo vědět.

Moje tiskárna Prusa MINI má hnuté osy a fyzicky jsem se to pokusil opravit už několikrát, nakonec jsem problém vyřešil alternativním fw, který umožňuje zadat tzv skew correction. Tiskárna funguje, jenže nyní je k dispozici nová verze fw od Průši, která tiskárnu velmi zrychlí (input shaping) a v této verzi žádný alternativní fw neexistuje.
Stáhl jsem si tedy soubori pro vlastní build fw a upravil konfiguraci v souboru, který už má tuto finkci zakomentovanou (teoreticky má stačit pouze odkomentovat a zadat hodnoty jak moc jsou osy hnuté). Dostávám ale tuto chybu:

Kód: Vybrat vše

[62/65] Building CXX object lib/CMakeFiles/Marlin.dir/Marlin/Marlin/src/module/prusa/homing_utils.cpp.obj
FAILED: lib/CMakeFiles/Marlin.dir/Marlin/Marlin/src/module/prusa/homing_utils.cpp.obj
C:\firmvare_mini\Prusa-Firmware-Buddy\.dependencies\gcc-arm-none-eabi-10.3.1\bin\arm-none-eabi-g++.exe -DARDUINO=187 -DBOARD=BOARD_BUDDY -DBOARD_VERSION_MAJOR=1 -DBOARD_VERSION_MINOR=0 -DBOARD_VERSION_PATCH=0 -DCFG_TUSB_MCU=OPT_MCU_STM32F4 -DHAS_MARLIN=1 -DHAVE_HWSERIAL2 -DMARLIN_DISABLE_INFINITE_LOOP -DMOTHERBOARD=1823 -DPRINTER_CODE=12 -DPRINTER_MODEL=\"MINI\" -DPRINTER_SUBVERSION=0 -DPRINTER_TYPE=2 -DPRINTER_VERSION=1 -DPROCESS_CUSTOM_GCODE -DSTM32F4 -DSTM32F407xx -DSTM32F4xx -DSTM32GENERIC -DUSBCON -DUSBD_USE_CDC -DUSE_HAL_DRIVER -D_EXTUI -IC:/firmvare_mini/Prusa-Firmware-Buddy/lib/Marlin/Marlin/src -IC:/firmvare_mini/Prusa-Firmware-Buddy/lib/Marlin/Marlin/src/gcode/lcd -IC:/firmvare_mini/Prusa-Firmware-Buddy/lib/Marlin/Marlin -IC:/firmvare_mini/Prusa-Firmware-Buddy/lib/Marlin -IC:/firmvare_mini/Prusa-Firmware-Buddy/lib/Arduino_Core_Buddy/variants/BUDDY_F407VET6_2209 -IC:/firmvare_mini/Prusa-Firmware-Buddy/lib/Arduino_Core_Buddy/cores/arduino/stm32 -IC:/firmvare_mini/Prusa-Firmware-Buddy/lib/Arduino_Core_Buddy/cores/arduino -IC:/firmvare_mini/Prusa-Firmware-Buddy/lib/Middlewares/Third_Party/FreeRTOS/Source/include -IC:/firmvare_mini/Prusa-Firmware-Buddy/lib/Middlewares/Third_Party/FreeRTOS/Source/CMSIS_RTOS -IC:/firmvare_mini/Prusa-Firmware-Buddy/lib/Middlewares/Third_Party/FreeRTOS/Source/portable/GCC/ARM_CM4F -IC:/firmvare_mini/Prusa-Firmware-Buddy/lib/Drivers/CMSIS/Include -IC:/firmvare_mini/Prusa-Firmware-Buddy/lib/Drivers/CMSIS/Device/ST/STM32F4xx/Include -IC:/firmvare_mini/Prusa-Firmware-Buddy/include/freertos -IC:/firmvare_mini/Prusa-Firmware-Buddy/lib/Segger -IC:/firmvare_mini/Prusa-Firmware-Buddy/include/segger -IC:/firmvare_mini/Prusa-Firmware-Buddy/src/segger -IC:/firmvare_mini/Prusa-Firmware-Buddy/include/stm32f4_hal -IC:/firmvare_mini/Prusa-Firmware-Buddy/include/device/stm32f4 -IC:/firmvare_mini/Prusa-Firmware-Buddy/include -IC:/firmvare_mini/Prusa-Firmware-Buddy/include/usb_host -IC:/firmvare_mini/Prusa-Firmware-Buddy/include/usb_device -IC:/firmvare_mini/Prusa-Firmware-Buddy/include/marlin -IC:/firmvare_mini/Prusa-Firmware-Buddy/src/hw -IC:/firmvare_mini/Prusa-Firmware-Buddy/src/common -IC:/firmvare_mini/Prusa-Firmware-Buddy/src/persistent_stores -IC:/firmvare_mini/Prusa-Firmware-Buddy/src/persistent_stores/store_instances -IC:/firmvare_mini/Prusa-Firmware-Buddy/src/guiconfig -IC:/firmvare_mini/Prusa-Firmware-Buddy/src/lang -IC:/firmvare_mini/Prusa-Firmware-Buddy/src/common/utils -IC:/firmvare_mini/Prusa-Firmware-Buddy/build/mini_release_noboot/include -IC:/firmvare_mini/Prusa-Firmware-Buddy/include/buddy -IC:/firmvare_mini/Prusa-Firmware-Buddy/src/common/fanctl/local/. -IC:/firmvare_mini/Prusa-Firmware-Buddy/src/common/fanctl/. -IC:/firmvare_mini/Prusa-Firmware-Buddy/src/marlin_stubs/MINI/. -IC:/firmvare_mini/Prusa-Firmware-Buddy/lib/Drivers/STM32F4xx_HAL_Driver/Inc -IC:/firmvare_mini/Prusa-Firmware-Buddy/lib/Drivers/STM32F4xx_HAL_Driver/Inc/Legacy -IC:/firmvare_mini/Prusa-Firmware-Buddy/src/logging -IC:/firmvare_mini/Prusa-Firmware-Buddy/lib/Middlewares/ST/STM32_USB_Host_Library/Core/Inc -IC:/firmvare_mini/Prusa-Firmware-Buddy/lib/Middlewares/ST/STM32_USB_Host_Library/Class/MSC/Inc -IC:/firmvare_mini/Prusa-Firmware-Buddy/lib/tinyusb/src -IC:/firmvare_mini/Prusa-Firmware-Buddy/include/tinyusb -IC:/firmvare_mini/Prusa-Firmware-Buddy/lib/TMCStepper/src -IC:/firmvare_mini/Prusa-Firmware-Buddy/src/gui -IC:/firmvare_mini/Prusa-Firmware-Buddy/src/marlin_stubs/include -IC:/firmvare_mini/Prusa-Firmware-Buddy/src/common/selftest -IC:/firmvare_mini/Prusa-Firmware-Buddy/build/mini_release_noboot/lib/error_codes -IC:/firmvare_mini/Prusa-Firmware-Buddy/lib/Prusa-Error-Codes/12_MINI -IC:/firmvare_mini/Prusa-Firmware-Buddy/lib/cpp-std-extensions/include -IC:/firmvare_mini/Prusa-Firmware-Buddy/lib/cpp-std-extensions/include/stdx --specs=nosys.specs --specs=nano.specs -O3 -DNDEBUG -Wall -Wsign-compare -ffile-prefix-map=C:/firmvare_mini/Prusa-Firmware-Buddy=. -Wno-register -Wno-volatile -fno-rtti -DconfigUSE_NEWLIB_REENTRANT=1 -g -Os -mthumb -mcpu=cortex-m4 -mfloat-abi=hard -mfpu=fpv4-sp-d16 -ffunction-sections -fdata-sections -fno-exceptions -fno-unwind-tables -std=gnu++2a -MD -MT lib/CMakeFiles/Marlin.dir/Marlin/Marlin/src/module/prusa/homing_utils.cpp.obj -MF lib\CMakeFiles\Marlin.dir\Marlin\Marlin\src\module\prusa\homing_utils.cpp.obj.d -o lib/CMakeFiles/Marlin.dir/Marlin/Marlin/src/module/prusa/homing_utils.cpp.obj -c C:/firmvare_mini/Prusa-Firmware-Buddy/lib/Marlin/Marlin/src/module/prusa/homing_utils.cpp
C:/firmvare_mini/Prusa-Firmware-Buddy/lib/Marlin/Marlin/src/module/prusa/homing_utils.cpp: In function 'bool disable_modifiers_if(bool, bool)':
C:/firmvare_mini/Prusa-Firmware-Buddy/lib/Marlin/Marlin/src/module/prusa/homing_utils.cpp:59:8: error: 'unskew' was not declared in this scope
   59 |        unskew(current_position);
      |        ^~~~~~
C:/firmvare_mini/Prusa-Firmware-Buddy/lib/Marlin/Marlin/src/module/prusa/homing_utils.cpp: In function 'void enable_modifiers_if(bool, bool)':
C:/firmvare_mini/Prusa-Firmware-Buddy/lib/Marlin/Marlin/src/module/prusa/homing_utils.cpp:72:5: error: 'skew' was not declared in this scope
   72 |     skew(current_position);
      |     ^~~~
ninja: build stopped: subcommand failed.
Můj soubor s konfigurací vypadá takto:

Kód: Vybrat vše

#if ENABLED(SKEW_CORRECTION)
    // Input all length measurements here:
    #define XY_DIAG_AC 282.8427124746
    #define XY_DIAG_BD 282.8427124746
    #define XY_SIDE_AD 200

    // Or, set the default skew factors directly here
    // to override the above measurements:
    #define XY_SKEW_FACTOR 0.0

    #define SKEW_CORRECTION_FOR_Z
    #if ENABLED(SKEW_CORRECTION_FOR_Z)
        #define XZ_DIAG_AC 282.8427124746
        #define XZ_DIAG_BD 282.8427124746
        #define YZ_DIAG_AC 282.8427124746
        #define YZ_DIAG_BD 282.8427124746
        #define YZ_SIDE_AD 200
        #define XZ_SKEW_FACTOR 0.0
        #define YZ_SKEW_FACTOR 0.0
    #endif

// Enable this option for M852 to set skew at runtime
#define SKEW_CORRECTION_GCODE
#endif
a soubor home_utils.cpp, na který je v chybě odkazováno takto:

Kód: Vybrat vše

#include "homing_utils.hpp"
#include "../../feature/bedlevel/bedlevel.h"
#include "../../feature/prusa/crash_recovery.hpp"
#include "../../module/endstops.h"
#include "../stepper.h"
#include <config_store/store_instance.hpp>

#if HAS_WORKSPACE_OFFSET
static workspace_xyz_t disable_workspace(bool do_x, bool do_y, bool do_z) {
    bool changed = false;
    workspace_xyz_t res;

    LOOP_XYZ(axis) {
        if (!((do_x && axis == X_AXIS) || (do_y && axis == Y_AXIS) || (do_z && axis == Z_AXIS))) {
            res.position_shift.pos[axis] = NAN;
            res.home_offset.pos[axis] = NAN;
            continue;
        }

        current_position.pos[axis] = LOGICAL_TO_NATIVE(current_position.pos[axis], axis);
        res.position_shift.pos[axis] = position_shift.pos[axis];
        position_shift.pos[axis] = 0;
        res.home_offset.pos[axis] = home_offset.pos[axis];
        set_home_offset(AxisEnum(axis), 0); //< updates workspace
        changed = true;
    }

    if (changed) {
        sync_plan_position();
    }

    return res;
}
#endif // HAS_WORKSPACE_OFFSET

bool disable_modifiers_if(bool condition, bool do_z) {
    if (!condition) {
        return false;
    }

    bool leveling_was_active = false;
#if HAS_LEVELING
    #if ENABLED(RESTORE_LEVELING_AFTER_G28)
    leveling_was_active = planner.leveling_active;
    #else
    if (!do_z) {
        leveling_was_active = planner.leveling_active;
    }
    #endif
    set_bed_leveling_enabled(false);
#endif

    // Already done by set_bed_leveling_enabled(false)
    #if ENABLED(SKEW_CORRECTION)
       unskew(current_position);
     #endif

    sync_plan_position();
    return leveling_was_active;
}

void enable_modifiers_if(bool condition, bool restore_leveling) {
    if (!condition) {
        return;
    }

#if ENABLED(SKEW_CORRECTION)
    skew(current_position);
#endif

#if HAS_LEVELING
    if (restore_leveling) {
        set_bed_leveling_enabled(true);
    }
#endif
    sync_plan_position();
}

Motion_Parameters reset_acceleration_if(bool condition) {
    Motion_Parameters mp;
    mp.save();
    if (!condition) {
        return mp;
    }

    mp.reset();

#if ENABLED(IMPROVE_HOMING_RELIABILITY)
    planner.settings.max_acceleration_mm_per_s2[X_AXIS] = XY_HOMING_ACCELERATION;
    planner.settings.max_acceleration_mm_per_s2[Y_AXIS] = XY_HOMING_ACCELERATION;
    #if HAS_CLASSIC_JERK
    planner.max_jerk.set(XY_HOMING_JERK, XY_HOMING_JERK);
    #endif
#endif
    planner.refresh_acceleration_rates();
    remember_feedrate_scaling_off();
    return mp;
}

void restore_acceleration_if(bool condition, Motion_Parameters &mp) {
    if (!condition) {
        return;
    }

    restore_feedrate_and_scaling();
    mp.load();
    planner.refresh_acceleration_rates();
}

el_current_xyz_t reset_current_if(bool condition) {
    el_current_xyz_t curr = { stepperX.rms_current(), stepperY.rms_current(), stepperZ.rms_current() };
    if (!condition) {
        return curr;
    }

    stepperX.rms_current(get_default_rms_current_ma_x());
    stepperY.rms_current(get_default_rms_current_ma_y());
    stepperZ.rms_current(get_default_rms_current_ma_z());
    return curr;
}

void restore_current_if(bool condition, el_current_xyz_t current) {
    if (!condition) {
        return;
    }

    stepperX.rms_current(current.x);
    stepperY.rms_current(current.y);
    stepperZ.rms_current(current.z);
}

void homing_reset(bool no_modifiers, bool default_acceleration, bool default_current) {
#if HAS_WORKSPACE_OFFSET
    disable_workspace(true, true, true);
#endif
    disable_modifiers_if(no_modifiers, false);
    reset_acceleration_if(default_acceleration);
    endstops.enable(true); //< Enable endstops for homing moves
    reset_current_if(default_current);
}
Nevěděl by někdo náhodou v čem může být chyba? Omlouvám se, jestli je to něco jasného, dělám to poprvé.

Předem děkuji.
Základní deska:GIGABYTE PA65-UD3-B3
Procesor: Intel Core i7 2600k
RAM: 8GB
Grafická karta: ASUS GTX970-DCMOC-4GD5
OS: Windows 10 Home 64-bit
HDD: 1TB+2TB
SSD: 480GB
petr22
Guru Level 15
Guru Level 15
Příspěvky: 55062
Registrován: 06 úno 2012 10:27

Re: Chyba při kompilaci firmware pro 3D tiskárnu (Prusa MINI)

Příspěvek od petr22 »

Proc mas tedy vsechnyy korekce v konfiguracnim souboru zakomentovane ?

C:/firmvare_mini/Prusa-Firmware-Buddy/lib/Marlin/Marlin/src/module/prusa/homing_utils.cpp:59:8: error: 'unskew' was not declared in this scope
C:/firmvare_mini/Prusa-Firmware-Buddy/lib/Marlin/Marlin/src/module/prusa/homing_utils.cpp:72:5: error: 'skew' was not declared in this scope

Ja bych ale jako prvni opravil geometrii tiskarny nez rucne nastavoval aby tiskla krive.
Jestli Cinani neumi vyrobit ram tak aby nebyl krivy, bude ho treba nejspis vymenit.

Ciste muj nazor - takto hloupe udelana konstrukce nebude nikdy rovna, jsou potreba symetricky dve osy Z
- s jednou osou Z je to prakticky nemozne sestavit s potrebnou presnosti pro 3D tisk. Tzn chce to ram jako
ma standardni Prusa. A vsechny tistene soucastky vymenit za kovove od Cinanu, mohlo by to pomoci i u Mini.
Uživatelský avatar
ddann
Level 1.5
Level 1.5
Příspěvky: 141
Registrován: 14 úno 2011 14:25

Re: Chyba při kompilaci firmware pro 3D tiskárnu (Prusa MINI)

Příspěvek od ddann »

No právě - tahle koupě mě zklamala. Za nějakou dobu chci koupit Bambulab, ale teď potřebuju používat tuhle. Opravit fyzycky jsem se to snažil asi měsíc a opravdu nezbylo nic jiného než sw korekce... :-D

Jinak jak myslíte zakomentovány?

Kód: Vybrat vše

#define SKEW_CORRECTION

#if ENABLED(SKEW_CORRECTION)
    // Input all length measurements here:
    #define XY_DIAG_AC 282.8427124746
    #define XY_DIAG_BD 282.8427124746
    #define XY_SIDE_AD 200

    // Or, set the default skew factors directly here
    // to override the above measurements:
    #define XY_SKEW_FACTOR -0.003

    #define SKEW_CORRECTION_FOR_Z
    #if ENABLED(SKEW_CORRECTION_FOR_Z)
        #define XZ_DIAG_AC 282.8427124746
        #define XZ_DIAG_BD 282.8427124746
        #define YZ_DIAG_AC 282.8427124746
        #define YZ_DIAG_BD 282.8427124746
        #define YZ_SIDE_AD 200
        #define XZ_SKEW_FACTOR 0.001
        #define YZ_SKEW_FACTOR -0.006
    #endif

// Enable this option for M852 to set skew at runtime
#define SKEW_CORRECTION_GCODE
#endif
Co jsem alespoň googlil tak # v c neznamená zakomentované, nebo ano? Jak bych to měl případně upravit?
Základní deska:GIGABYTE PA65-UD3-B3
Procesor: Intel Core i7 2600k
RAM: 8GB
Grafická karta: ASUS GTX970-DCMOC-4GD5
OS: Windows 10 Home 64-bit
HDD: 1TB+2TB
SSD: 480GB
petr22
Guru Level 15
Guru Level 15
Příspěvky: 55062
Registrován: 06 úno 2012 10:27

Re: Chyba při kompilaci firmware pro 3D tiskárnu (Prusa MINI)

Příspěvek od petr22 »

Zakomentovana je kazda radka. Coz znamena, ze se nepouzije.

Je potreba dat pryc # u vsech radek, aby se ty parametry pouzily.

Takhle je to jen soubor naprosto k nicemu, protoze nic co je v nem se neaplikuje.

Pri kompilaci si to stezuje ze jsou pouzity funkce SKEW a UNSKEW ani by byl nejak definovane.

To vypada celkem schopne:
https://www.majkl3d.cz/p/bambulab-p1p

Me se ale nejvic osvedcila konstrukce delta - tiskne to hodne rychle a hlavne zcela potichu.

Kombinace Anycubic Predator (na velke veci, je to velke jak krava), Kossel Plus na bezny tisk a Photon
na male veci kde je pozadavek na kvalitu - tisk z pryskyrice bude vzdy kvalitnejsi, nejsou videt ani vrstvy.
Uživatelský avatar
ddann
Level 1.5
Level 1.5
Příspěvky: 141
Registrován: 14 úno 2011 14:25

Re: Chyba při kompilaci firmware pro 3D tiskárnu (Prusa MINI)

Příspěvek od ddann »

Právě - na ty peníze to tiskne neskutečně rychle a s dobrými detaily. Ještě na to kouknu, ale zamlouvá se mi ta P1S, má uzavřenou komoru, takže ideální na ASA a ABS.

Jo taaak, no tak to už je pak jasné :lol:

To mě konečně někam posunulo, teď zase dostávám mnohem delší chybu ve které se opakuje toto:

Kód: Vybrat vše

C:/firmvare_mini/Prusa-Firmware-Buddy/include/marlin/Configuration_MINI.h:1376:1: error: 'define' does not name a type
 1376 | define SKEW_CORRECTION
      | ^~~~~~
ninja: build stopped: subcommand failed.
Základní deska:GIGABYTE PA65-UD3-B3
Procesor: Intel Core i7 2600k
RAM: 8GB
Grafická karta: ASUS GTX970-DCMOC-4GD5
OS: Windows 10 Home 64-bit
HDD: 1TB+2TB
SSD: 480GB
Uživatelský avatar
Martab
Moderátor / člen HW týmu
Příspěvky: 28663
Registrován: 02 bře 2011 06:49

Re: Chyba při kompilaci firmware pro 3D tiskárnu (Prusa MINI)

Příspěvek od Martab »

Trochu OT, pořídili jsme teď Bambu Lab X1C a proti Prusam MK3 a MK3s co máme je to docela jiná liga, rychlost tisku neporovnatelná, kvalita OK, ale hlavně je to v komoře, takže se dá tisknout i s méně příjemných materiálů pro okolí :-) . Jen je při tisku dost odpadu a je třeba před tiskem aplikovat na podložku lepidlo. Další drobná nevýhoda je SW, kde je sice přístup přes web, ale neumí nic jako uživatelské účty, nebo cokoli :( Ale máme ji teprve asi týden, tak zatím zas tolik zkušeností není :-)
i5-3350P/P8B75-M LX/Kingston DDR3 8GB/GV-N960IXOC/SS-500ET/Seagate VS35.6/Transcend SSD370-128GB/Samsung BX2250 + Dell 1909W
ThinkPad X230 - i7-3520M + Kingston Savage SSD

„Neexistuje důvod, proč by kdokoli chtěl mít doma něco jako počítač"(Ken Olsen)

Neboj se použít SZ a upozornit na své téma ;)

Přehled desktopových socketů a CPU
Uživatelský avatar
ddann
Level 1.5
Level 1.5
Příspěvky: 141
Registrován: 14 úno 2011 14:25

Re: Chyba při kompilaci firmware pro 3D tiskárnu (Prusa MINI)

Příspěvek od ddann »

petr22 píše: Kombinace Anycubic Predator (na velke veci, je to velke jak krava), Kossel Plus na bezny tisk a Photon
na male veci kde je pozadavek na kvalitu - tisk z pryskyrice bude vzdy kvalitnejsi, nejsou videt ani vrstvy.
To vypadá i za celkem slušné peníze, ještě nad tím zapřemýšlím...
Základní deska:GIGABYTE PA65-UD3-B3
Procesor: Intel Core i7 2600k
RAM: 8GB
Grafická karta: ASUS GTX970-DCMOC-4GD5
OS: Windows 10 Home 64-bit
HDD: 1TB+2TB
SSD: 480GB
petr22
Guru Level 15
Guru Level 15
Příspěvky: 55062
Registrován: 06 úno 2012 10:27

Re: Chyba při kompilaci firmware pro 3D tiskárnu (Prusa MINI)

Příspěvek od petr22 »

Ukaz stavajici config.
Uživatelský avatar
ddann
Level 1.5
Level 1.5
Příspěvky: 141
Registrován: 14 úno 2011 14:25

Re: Chyba při kompilaci firmware pro 3D tiskárnu (Prusa MINI)

Příspěvek od ddann »

Kód: Vybrat vše

define SKEW_CORRECTION

if ENABLED(SKEW_CORRECTION)
    // Input all length measurements here:
    #define XY_DIAG_AC 282.8427124746
    #define XY_DIAG_BD 282.8427124746
    #define XY_SIDE_AD 200

    // Or, set the default skew factors directly here
    // to override the above measurements:
    define XY_SKEW_FACTOR -0.003

    define SKEW_CORRECTION_FOR_Z
    if ENABLED(SKEW_CORRECTION_FOR_Z)
        #define XZ_DIAG_AC 282.8427124746
        #define XZ_DIAG_BD 282.8427124746
        #define YZ_DIAG_AC 282.8427124746
        #define YZ_DIAG_BD 282.8427124746
        #define YZ_SIDE_AD 200
        define XZ_SKEW_FACTOR 0.001
        define YZ_SKEW_FACTOR -0.006
    endif

// Enable this option for M852 to set skew at runtime
define SKEW_CORRECTION_GCODE
endif
úplně celý má asi 2,2k řádek a vše ostatní je tedy zakomentováno

home_utils nyní takto:

Kód: Vybrat vše

/**
 * Group of functions to make homing more easier, reliable and flexible.
 */

include "homing_utils.hpp"
include "../../feature/bedlevel/bedlevel.h"
include "../../feature/prusa/crash_recovery.hpp"
include "../../module/endstops.h"
include "../stepper.h"
include <config_store/store_instance.hpp>

#if HAS_WORKSPACE_OFFSET
static workspace_xyz_t disable_workspace(bool do_x, bool do_y, bool do_z) {
    bool changed = false;
    workspace_xyz_t res;

    LOOP_XYZ(axis) {
        if (!((do_x && axis == X_AXIS) || (do_y && axis == Y_AXIS) || (do_z && axis == Z_AXIS))) {
            res.position_shift.pos[axis] = NAN;
            res.home_offset.pos[axis] = NAN;
            continue;
        }

        current_position.pos[axis] = LOGICAL_TO_NATIVE(current_position.pos[axis], axis);
        res.position_shift.pos[axis] = position_shift.pos[axis];
        position_shift.pos[axis] = 0;
        res.home_offset.pos[axis] = home_offset.pos[axis];
        set_home_offset(AxisEnum(axis), 0); //< updates workspace
        changed = true;
    }

    if (changed) {
        sync_plan_position();
    }

    return res;
}
#endif // HAS_WORKSPACE_OFFSET

bool disable_modifiers_if(bool condition, bool do_z) {
    if (!condition) {
        return false;
    }

    bool leveling_was_active = false;
#if HAS_LEVELING
    #if ENABLED(RESTORE_LEVELING_AFTER_G28)
    leveling_was_active = planner.leveling_active;
    #else
    if (!do_z) {
        leveling_was_active = planner.leveling_active;
    }
    #endif
    set_bed_leveling_enabled(false);
#endif

    // Already done by set_bed_leveling_enabled(false)
    if ENABLED(SKEW_CORRECTION)
       unskew(current_position);
    endif

    sync_plan_position();
    return leveling_was_active;
}

void enable_modifiers_if(bool condition, bool restore_leveling) {
    if (!condition) {
        return;
    }

if ENABLED(SKEW_CORRECTION)
    skew(current_position);
endif

#if HAS_LEVELING
    if (restore_leveling) {
        set_bed_leveling_enabled(true);
    }
#endif
    sync_plan_position();
}

Motion_Parameters reset_acceleration_if(bool condition) {
    Motion_Parameters mp;
    mp.save();
    if (!condition) {
        return mp;
    }

    mp.reset();

#if ENABLED(IMPROVE_HOMING_RELIABILITY)
    planner.settings.max_acceleration_mm_per_s2[X_AXIS] = XY_HOMING_ACCELERATION;
    planner.settings.max_acceleration_mm_per_s2[Y_AXIS] = XY_HOMING_ACCELERATION;
    #if HAS_CLASSIC_JERK
    planner.max_jerk.set(XY_HOMING_JERK, XY_HOMING_JERK);
    #endif
#endif
    planner.refresh_acceleration_rates();
    remember_feedrate_scaling_off();
    return mp;
}

void restore_acceleration_if(bool condition, Motion_Parameters &mp) {
    if (!condition) {
        return;
    }

    restore_feedrate_and_scaling();
    mp.load();
    planner.refresh_acceleration_rates();
}

el_current_xyz_t reset_current_if(bool condition) {
    el_current_xyz_t curr = { stepperX.rms_current(), stepperY.rms_current(), stepperZ.rms_current() };
    if (!condition) {
        return curr;
    }

    stepperX.rms_current(get_default_rms_current_ma_x());
    stepperY.rms_current(get_default_rms_current_ma_y());
    stepperZ.rms_current(get_default_rms_current_ma_z());
    return curr;
}

void restore_current_if(bool condition, el_current_xyz_t current) {
    if (!condition) {
        return;
    }

    stepperX.rms_current(current.x);
    stepperY.rms_current(current.y);
    stepperZ.rms_current(current.z);
}

void homing_reset(bool no_modifiers, bool default_acceleration, bool default_current) {
#if HAS_WORKSPACE_OFFSET
    disable_workspace(true, true, true);
#endif
    disable_modifiers_if(no_modifiers, false);
    reset_acceleration_if(default_acceleration);
    endstops.enable(true); //< Enable endstops for homing moves
    reset_current_if(default_current);
}
Dodatečně přidáno po 1 minutě 32 vteřinách:
Martab píše:Trochu OT, pořídili jsme teď Bambu Lab X1C a proti Prusam MK3 a MK3s co máme je to docela jiná liga, rychlost tisku neporovnatelná, kvalita OK, ale hlavně je to v komoře, takže se dá tisknout i s méně příjemných materiálů pro okolí :-) . Jen je při tisku dost odpadu a je třeba před tiskem aplikovat na podložku lepidlo. Další drobná nevýhoda je SW, kde je sice přístup přes web, ale neumí nic jako uživatelské účty, nebo cokoli :( Ale máme ji teprve asi týden, tak zatím zas tolik zkušeností není :-)
Jsem na to zvědavý, ale z různých zdrojů slyším celkem chválu. X1C je na mě trošku "přestřel", ale ta P1S je teď nová a měla by být celkem obstojná právě i pro ABS/ASA :-)

Dodatečně přidáno po 2 minutách 59 vteřinách:
ddann píše:

Kód: Vybrat vše

define SKEW_CORRECTION

if ENABLED(SKEW_CORRECTION)
    // Input all length measurements here:
    #define XY_DIAG_AC 282.8427124746
    #define XY_DIAG_BD 282.8427124746
    #define XY_SIDE_AD 200

    // Or, set the default skew factors directly here
    // to override the above measurements:
    define XY_SKEW_FACTOR -0.003

    define SKEW_CORRECTION_FOR_Z
    if ENABLED(SKEW_CORRECTION_FOR_Z)
        #define XZ_DIAG_AC 282.8427124746
        #define XZ_DIAG_BD 282.8427124746
        #define YZ_DIAG_AC 282.8427124746
        #define YZ_DIAG_BD 282.8427124746
        #define YZ_SIDE_AD 200
        define XZ_SKEW_FACTOR 0.001
        define YZ_SKEW_FACTOR -0.006
    endif

// Enable this option for M852 to set skew at runtime
define SKEW_CORRECTION_GCODE
endif
úplně celý má asi 2,2k řádek a vše ostatní je tedy zakomentováno

home_utils nyní takto:

Kód: Vybrat vše

/**
 * Group of functions to make homing more easier, reliable and flexible.
 */

include "homing_utils.hpp"
include "../../feature/bedlevel/bedlevel.h"
include "../../feature/prusa/crash_recovery.hpp"
include "../../module/endstops.h"
include "../stepper.h"
include <config_store/store_instance.hpp>

#if HAS_WORKSPACE_OFFSET
static workspace_xyz_t disable_workspace(bool do_x, bool do_y, bool do_z) {
    bool changed = false;
    workspace_xyz_t res;

    LOOP_XYZ(axis) {
        if (!((do_x && axis == X_AXIS) || (do_y && axis == Y_AXIS) || (do_z && axis == Z_AXIS))) {
            res.position_shift.pos[axis] = NAN;
            res.home_offset.pos[axis] = NAN;
            continue;
        }

        current_position.pos[axis] = LOGICAL_TO_NATIVE(current_position.pos[axis], axis);
        res.position_shift.pos[axis] = position_shift.pos[axis];
        position_shift.pos[axis] = 0;
        res.home_offset.pos[axis] = home_offset.pos[axis];
        set_home_offset(AxisEnum(axis), 0); //< updates workspace
        changed = true;
    }

    if (changed) {
        sync_plan_position();
    }

    return res;
}
#endif // HAS_WORKSPACE_OFFSET

bool disable_modifiers_if(bool condition, bool do_z) {
    if (!condition) {
        return false;
    }

    bool leveling_was_active = false;
#if HAS_LEVELING
    #if ENABLED(RESTORE_LEVELING_AFTER_G28)
    leveling_was_active = planner.leveling_active;
    #else
    if (!do_z) {
        leveling_was_active = planner.leveling_active;
    }
    #endif
    set_bed_leveling_enabled(false);
#endif

    // Already done by set_bed_leveling_enabled(false)
    if ENABLED(SKEW_CORRECTION)
       unskew(current_position);
    endif

    sync_plan_position();
    return leveling_was_active;
}

void enable_modifiers_if(bool condition, bool restore_leveling) {
    if (!condition) {
        return;
    }

if ENABLED(SKEW_CORRECTION)
    skew(current_position);
endif

#if HAS_LEVELING
    if (restore_leveling) {
        set_bed_leveling_enabled(true);
    }
#endif
    sync_plan_position();
}

Motion_Parameters reset_acceleration_if(bool condition) {
    Motion_Parameters mp;
    mp.save();
    if (!condition) {
        return mp;
    }

    mp.reset();

#if ENABLED(IMPROVE_HOMING_RELIABILITY)
    planner.settings.max_acceleration_mm_per_s2[X_AXIS] = XY_HOMING_ACCELERATION;
    planner.settings.max_acceleration_mm_per_s2[Y_AXIS] = XY_HOMING_ACCELERATION;
    #if HAS_CLASSIC_JERK
    planner.max_jerk.set(XY_HOMING_JERK, XY_HOMING_JERK);
    #endif
#endif
    planner.refresh_acceleration_rates();
    remember_feedrate_scaling_off();
    return mp;
}

void restore_acceleration_if(bool condition, Motion_Parameters &mp) {
    if (!condition) {
        return;
    }

    restore_feedrate_and_scaling();
    mp.load();
    planner.refresh_acceleration_rates();
}

el_current_xyz_t reset_current_if(bool condition) {
    el_current_xyz_t curr = { stepperX.rms_current(), stepperY.rms_current(), stepperZ.rms_current() };
    if (!condition) {
        return curr;
    }

    stepperX.rms_current(get_default_rms_current_ma_x());
    stepperY.rms_current(get_default_rms_current_ma_y());
    stepperZ.rms_current(get_default_rms_current_ma_z());
    return curr;
}

void restore_current_if(bool condition, el_current_xyz_t current) {
    if (!condition) {
        return;
    }

    stepperX.rms_current(current.x);
    stepperY.rms_current(current.y);
    stepperZ.rms_current(current.z);
}

void homing_reset(bool no_modifiers, bool default_acceleration, bool default_current) {
#if HAS_WORKSPACE_OFFSET
    disable_workspace(true, true, true);
#endif
    disable_modifiers_if(no_modifiers, false);
    reset_acceleration_if(default_acceleration);
    endstops.enable(true); //< Enable endstops for homing moves
    reset_current_if(default_current);
}
Dodatečně přidáno po 1 minutě 32 vteřinách:
Martab píše:Trochu OT, pořídili jsme teď Bambu Lab X1C a proti Prusam MK3 a MK3s co máme je to docela jiná liga, rychlost tisku neporovnatelná, kvalita OK, ale hlavně je to v komoře, takže se dá tisknout i s méně příjemných materiálů pro okolí :-) . Jen je při tisku dost odpadu a je třeba před tiskem aplikovat na podložku lepidlo. Další drobná nevýhoda je SW, kde je sice přístup přes web, ale neumí nic jako uživatelské účty, nebo cokoli :( Ale máme ji teprve asi týden, tak zatím zas tolik zkušeností není :-)
Jsem na to zvědavý, ale z různých zdrojů slyším celkem chválu. X1C je na mě trošku "přestřel", ale ta P1S je teď nová a měla by být celkem obstojná právě i pro ABS/ASA :-)
Možná ještě doplním celou tu chybu, odkomentoval jsem i ty "include" na začátku souboru:

Kód: Vybrat vše

In file included from C:/firmvare_mini/Prusa-Firmware-Buddy/include/marlin/Configuration.h:7,
                 from C:/firmvare_mini/Prusa-Firmware-Buddy/lib/Marlin/Marlin/src/inc/MarlinConfigPre.h:37,
                 from c:\firmvare_mini\prusa-firmware-buddy\src\persistent_stores\store_instances\config_store\store_definition.hpp:2,
                 from c:\firmvare_mini\prusa-firmware-buddy\src\persistent_stores\store_instances\config_store\store_instance.hpp:4,
                 from C:/firmvare_mini/Prusa-Firmware-Buddy/build/mini_release_noboot/CMakeFiles/firmware.dir/cmake_pch.hxx:5,
                 from <command-line>:
C:/firmvare_mini/Prusa-Firmware-Buddy/include/marlin/Configuration_MINI.h:1376:1: error: 'define' does not name a type
 1376 | define SKEW_CORRECTION
      | ^~~~~~
ninja: build stopped: subcommand failed.
Základní deska:GIGABYTE PA65-UD3-B3
Procesor: Intel Core i7 2600k
RAM: 8GB
Grafická karta: ASUS GTX970-DCMOC-4GD5
OS: Windows 10 Home 64-bit
HDD: 1TB+2TB
SSD: 480GB
petr22
Guru Level 15
Guru Level 15
Příspěvky: 55062
Registrován: 06 úno 2012 10:27

Re: Chyba při kompilaci firmware pro 3D tiskárnu (Prusa MINI)

Příspěvek od petr22 »

Vzdyt to mas stale zakomentovane.

Tys sice povolil pouziti korekce, ale nemas definovane zadneho hodnoty.

Pro ty osy bez korekce dej 0.
Uživatelský avatar
ddann
Level 1.5
Level 1.5
Příspěvky: 141
Registrován: 14 úno 2011 14:25

Re: Chyba při kompilaci firmware pro 3D tiskárnu (Prusa MINI)

Příspěvek od ddann »

Teď takto a stejná chyba:

Kód: Vybrat vše

define SKEW_CORRECTION

if ENABLED(SKEW_CORRECTION)
    // Input all length measurements here:
    define XY_DIAG_AC 0
    define XY_DIAG_BD 0
    define XY_SIDE_AD 0

    // Or, set the default skew factors directly here
    // to override the above measurements:
    define XY_SKEW_FACTOR -0.003

    define SKEW_CORRECTION_FOR_Z
    if ENABLED(SKEW_CORRECTION_FOR_Z)
        define XZ_DIAG_AC 0
        define XZ_DIAG_BD 0
        define YZ_DIAG_AC 0
        define YZ_DIAG_BD 0
        define YZ_SIDE_AD 0
        define XZ_SKEW_FACTOR 0.001
        define YZ_SKEW_FACTOR -0.006
    endif

// Enable this option for M852 to set skew at runtime
define SKEW_CORRECTION_GCODE
endif
jde mi ale hlavně o tyto tři:

Kód: Vybrat vše

define XY_SKEW_FACTOR -0.003
define XZ_SKEW_FACTOR 0.001
define YZ_SKEW_FACTOR -0.006
ty už mám spočítané z toho předešlého fw.

Dodatečně přidáno po 1 minutě 34 vteřinách:
ddann píše:Teď takto a stejná chyba:

Kód: Vybrat vše

define SKEW_CORRECTION

if ENABLED(SKEW_CORRECTION)
    // Input all length measurements here:
    define XY_DIAG_AC 0
    define XY_DIAG_BD 0
    define XY_SIDE_AD 0

    // Or, set the default skew factors directly here
    // to override the above measurements:
    define XY_SKEW_FACTOR -0.003

    define SKEW_CORRECTION_FOR_Z
    if ENABLED(SKEW_CORRECTION_FOR_Z)
        define XZ_DIAG_AC 0
        define XZ_DIAG_BD 0
        define YZ_DIAG_AC 0
        define YZ_DIAG_BD 0
        define YZ_SIDE_AD 0
        define XZ_SKEW_FACTOR 0.001
        define YZ_SKEW_FACTOR -0.006
    endif

// Enable this option for M852 to set skew at runtime
define SKEW_CORRECTION_GCODE
endif
Mají nad tím takovýto popis:

Kód: Vybrat vše

/**
 * Bed Skew Compensation
 *
 * This feature corrects for misalignment in the XYZ axes.
 *
 * Take the following steps to get the bed skew in the XY plane:
 *  1. Print a test square (e.g., https://www.thingiverse.com/thing:2563185)
 *  2. For XY_DIAG_AC measure the diagonal A to C
 *  3. For XY_DIAG_BD measure the diagonal B to D
 *  4. For XY_SIDE_AD measure the edge A to D
 *
 * Marlin automatically computes skew factors from these measurements.
 * Skew factors may also be computed and set manually:
 *
 *  - Compute AB     : SQRT(2*AC*AC+2*BD*BD-4*AD*AD)/2
 *  - XY_SKEW_FACTOR : TAN(PI/2-ACOS((AC*AC-AB*AB-AD*AD)/(2*AB*AD)))
 *
 * If desired, follow the same procedure for XZ and YZ.
 * Use these diagrams for reference:
 *
 *    Y                     Z                     Z
 *    ^     B-------C       ^     B-------C       ^     B-------C
 *    |    /       /        |    /       /        |    /       /
 *    |   /       /         |   /       /         |   /       /
 *    |  A-------D          |  A-------D          |  A-------D
 *    +-------------->X     +-------------->X     +-------------->Y
 *     XY_SKEW_FACTOR        XZ_SKEW_FACTOR        YZ_SKEW_FACTOR
 */
jde mi ale hlavně o tyto tři:

Kód: Vybrat vše

define XY_SKEW_FACTOR -0.003
define XZ_SKEW_FACTOR 0.001
define YZ_SKEW_FACTOR -0.006
ty už mám spočítané z toho předešlého fw.
Základní deska:GIGABYTE PA65-UD3-B3
Procesor: Intel Core i7 2600k
RAM: 8GB
Grafická karta: ASUS GTX970-DCMOC-4GD5
OS: Windows 10 Home 64-bit
HDD: 1TB+2TB
SSD: 480GB
Uživatelský avatar
faraon
Master Level 8.5
Master Level 8.5
Příspěvky: 7404
Registrován: 23 pro 2010 09:23

Re: Chyba při kompilaci firmware pro 3D tiskárnu (Prusa MINI)

Příspěvek od faraon »

První lekce C++:

Kód: Vybrat vše

/*
 * víceřádkový komentář
 * při překladu zmizí
 */

// jednořádkový komentář při překladu zmizí

#direktiva preprocesoru řídí činnost překladače
Preprocesor modifikuje zdrojový kód před jeho překladem:

#include vloži do tohoto místa obsah jiného souboru.
#define vytvoří konstantu používanou ve výrazech, zatímco samotné define je název proměnné, která tam samozřejmě neexistuje, tudíž error.
#if a #endif nejsou příkazy programu, ale direktivy podmíněného překladu, podle kterých preprocesor použije nebo nepoužije určitou část kódu.

Takže ty zdrojáky rozbal znovu načisto a začni ještě jednou.
Z prvního výpisu vyplývá že v daném prostoru překladač nevidí funkce skew() a unskew(), prostě je tam nemá k dispozici.
Možná budou někde v tom podmíněném překladu a bude potřeba nastavit nějakou konstantu která povoluje jejich vložení do kódu.

Pokud možno použij editor s barevným zvýrazněním syntaxe který takové struktury zviditelňuje.
"Král Lávra má dlouhé oslí uši, král je ušatec!

(pravil K. H. Borovský o cenzuře internetu)
Odpovědět
  • Podobná témata
    Odpovědi
    Zobrazení
    Poslední příspěvek
  • Jakou laserovou tiskárnu pro domácí tisk
    od Miranda6 » » v Vše ostatní (hw)
    9 Odpovědi
    6142 Zobrazení
    Poslední příspěvek od zeus
  • mini PC ano či ne?
    od vlazy » » v Vše ostatní (hw)
    24 Odpovědi
    9375 Zobrazení
    Poslední příspěvek od vlazy
  • Mac Mini M4
    od nakatomi » » v Problémy s hardwarem
    3 Odpovědi
    2353 Zobrazení
    Poslední příspěvek od petr22
  • Mini PC do 25 000,-
    od salex36980 » » v Rady s výběrem hw a sestavením PC
    12 Odpovědi
    3934 Zobrazení
    Poslední příspěvek od salex36980
  • Mac Mini M4 dva monitory
    od nakatomi » » v Vše ostatní (hw)
    1 Odpovědi
    3917 Zobrazení
    Poslední příspěvek od pcmaker

Zpět na „Vše ostatní (sw)“