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

...

Moderátor: Mods_senior

Uživatelský avatar
ddann
Level 1.5
Level 1.5
Příspěvky: 141
Registrován: únor 11
Pohlaví: Muž
Stav:
Offline

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

Příspěvekod ddann » 26 lis 2023 20:58

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

Reklama
petr22
Guru Level 15
Guru Level 15
Příspěvky: 53627
Registrován: únor 12
Pohlaví: Muž
Stav:
Online

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

Příspěvekod petr22 » 26 lis 2023 21:14

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: únor 11
Pohlaví: Muž
Stav:
Offline

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

Příspěvekod ddann » 26 lis 2023 21:24

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: 53627
Registrován: únor 12
Pohlaví: Muž
Stav:
Online

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

Příspěvekod petr22 » 26 lis 2023 21:32

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: únor 11
Pohlaví: Muž
Stav:
Offline

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

Příspěvekod ddann » 26 lis 2023 21:43

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
Guru Level 14
Guru Level 14
Příspěvky: 28586
Registrován: březen 11
Pohlaví: Muž
Stav:
Offline

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

Příspěvekod Martab » 26 lis 2023 21:45

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: únor 11
Pohlaví: Muž
Stav:
Offline

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

Příspěvekod ddann » 26 lis 2023 21:45

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: 53627
Registrován: únor 12
Pohlaví: Muž
Stav:
Online

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

Příspěvekod petr22 » 26 lis 2023 21:50

Ukaz stavajici config.

Uživatelský avatar
ddann
Level 1.5
Level 1.5
Příspěvky: 141
Registrován: únor 11
Pohlaví: Muž
Stav:
Offline

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

Příspěvekod ddann » 26 lis 2023 21:55

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: 53627
Registrován: únor 12
Pohlaví: Muž
Stav:
Online

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

Příspěvekod petr22 » 26 lis 2023 22:00

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: únor 11
Pohlaví: Muž
Stav:
Offline

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

Příspěvekod ddann » 26 lis 2023 22:06

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: 7359
Registrován: prosinec 10
Pohlaví: Muž
Stav:
Offline

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

Příspěvekod faraon » 27 lis 2023 07:27

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)


  • Mohlo by vás zajímat
    Odpovědi
    Zobrazení
    Poslední příspěvek
  • Potrebujem pomôcť s ME firmware UpdateTool Příloha(y)
    od michal35542 » 24 kvě 2023 10:29 » v Vše ostatní (sw)
    2
    1350
    od michal35542 Zobrazit poslední příspěvek
    24 kvě 2023 11:04
  • Jak nastavit tiskárnu?
    od doremi » 27 pro 2023 09:26 » v Vše ostatní (hw)
    4
    997
    od petr22 Zobrazit poslední příspěvek
    27 pro 2023 11:56
  • info Asus - 18.5.2023 výpadek serveru při aktualizaci firmware
    od FlanK3r » 19 kvě 2023 09:56 » v Sítě - hardware
    0
    1808
    od FlanK3r Zobrazit poslední příspěvek
    19 kvě 2023 09:56
  • Jakou tiskárnu pro domácí občasný tisk
    od Miranda6 » 23 úno 2024 12:43 » v Problémy s hardwarem
    15
    1366
    od richchie Zobrazit poslední příspěvek
    25 úno 2024 15:26
  • Mini pc geekom atd
    od michalnet » 02 úno 2024 07:24 » v Rady s výběrem hw a sestavením PC
    0
    368
    od michalnet Zobrazit poslední příspěvek
    02 úno 2024 07:24

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

Kdo je online

Uživatelé prohlížející si toto fórum: Žádní registrovaní uživatelé a 45 hostů