Skip to content
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

Problem: Low memory error while running G-code #1291

Open
zizheng1 opened this issue Aug 8, 2024 · 3 comments
Open

Problem: Low memory error while running G-code #1291

zizheng1 opened this issue Aug 8, 2024 · 3 comments

Comments

@zizheng1
Copy link

zizheng1 commented Aug 8, 2024

Wiki Search Terms

"Low Memory"
"SD Card"
"LocalFS"

Controller Board

MSK TinyBee

Machine Description

Using MSK TinyBee to control four motors. UART is used to connect with an external serial display. I created a serial monitor software for that external display and I can type commands to control the board.
Skype_Picture_2024_08_08T14_06_01_607Z

Input Circuits

No response

Configuration file

board: MKS TinyBee V1.0_001
name: K40 Laser
meta: (01.02.2022) by Skorpi

kinematics:
  Cartesian:

stepping:
  engine: I2S_STATIC
  idle_ms: 0
  pulse_us: 4
  dir_delay_us: 1
  disable_delay_us: 0


uart1:
  txd_pin: gpio.17
  rxd_pin: gpio.16
  rts_pin: NO_PIN
  baud: 115200
  mode: 8N1

uart_channel1:
  uart_num: 1
  report_interval_ms: 400

  
axes:
  x:
    # X
    steps_per_mm: 640
    max_rate_mm_per_min: 4000.000
    acceleration_mm_per_sec2: 50
    max_travel_mm: 411.000
    soft_limits: false
    homing:
      cycle: 2
      positive_direction: true
      mpos_mm: 0.000
      feed_mm_per_min: 300.000
      seek_mm_per_min: 5000.000
      settle_ms: 500
      seek_scaler: 1.100
      feed_scaler: 1.100

    motor0:
      limit_neg_pin: gpio.33:low
      hard_limits: false
      pulloff_mm: 2.000
      stepstick:
        step_pin: I2SO.1
        direction_pin: I2SO.2
        disable_pin: I2SO.0

  y:
    # Y
    steps_per_mm: 135.85
    max_rate_mm_per_min: 4000.000
    acceleration_mm_per_sec2: 50
    max_travel_mm: 182.000
    soft_limits: false
    homing:
      cycle: 1
      positive_direction: true
      mpos_mm: 0.000
      feed_mm_per_min: 300.000
      seek_mm_per_min: 5000.000
      settle_ms: 500
      seek_scaler: 1.100
      feed_scaler: 1.100

    motor0:
      limit_neg_pin: gpio.32:low
      hard_limits: false
      pulloff_mm: 2.000
      stepstick:
        step_pin: I2SO.4
        direction_pin: I2SO.5
        disable_pin: I2SO.3

  z:
    # Z
    steps_per_mm: 640
    max_rate_mm_per_min: 4000.000
    acceleration_mm_per_sec2: 50
    max_travel_mm: 80
    soft_limits: false
    homing:
      cycle: 3
      positive_direction: true
      mpos_mm: 0.000
      feed_mm_per_min: 300.000
      seek_mm_per_min: 1000.000
      settle_ms: 500
      seek_scaler: 1.100
      feed_scaler: 1.100

    motor0:
      limit_neg_pin: gpio.22:low
      # limit_neg_pin: gpio.22:high
      hard_limits: false
      pulloff_mm: 1.000
      stepstick:
        step_pin: I2SO.7
        direction_pin: I2SO.8
        disable_pin: I2SO.6

  a:
# E0
    steps_per_mm: 85.3
    max_rate_mm_per_min: 4000.000
    acceleration_mm_per_sec2: 50
    max_travel_mm: 3300.000
    soft_limits: false
    homing:
      cycle: 4
      positive_direction: true
      mpos_mm: 0.000
      feed_mm_per_min: 300.000
      seek_mm_per_min: 1000.000
      settle_ms: 500
      seek_scaler: 1.100
      feed_scaler: 1.100

    motor0:
      limit_neg_pin: gpio.35:low
      # limits_neg_pin: gpio.35:high
      hard_limits: false
      pulloff_mm: 1.000
      stepstick:
        step_pin: I2SO.10
        direction_pin: I2SO.11
        disable_pin: I2SO.9

  b:
# E1
    steps_per_mm: 1600
    max_rate_mm_per_min: 1500.000
    acceleration_mm_per_sec2: 100
    max_travel_mm: 15.000
    soft_limits: false
    homing:
      cycle: 0
      positive_direction: true
      mpos_mm: 0.000
      feed_mm_per_min: 300.000
      seek_mm_per_min: 1000.000
      settle_ms: 500
      seek_scaler: 1.100
      feed_scaler: 1.100

    motor0:
      limit_neg_pin: gpio.2:high
      # limit_neg_pin: gpio.2:high
      hard_limits: false
      pulloff_mm: 1.000
      stepstick:
        step_pin: I2SO.13
        direction_pin: I2SO.14
        disable_pin: I2SO.12

i2so:
  bck_pin: gpio.25
  data_pin: gpio.27
  ws_pin: gpio.26



control:
  safety_door_pin: NO_PIN
  reset_pin: NO_PIN
  # Original: gpio.35:high
  feed_hold_pin: NO_PIN
  # feed_hold_pin: gpio.36:low
  cycle_start_pin: gpio.39:low
  # EXP1 BTN_ENC
  macro0_pin: NO_PIN
  macro1_pin: NO_PIN
  macro2_pin: NO_PIN
  macro3_pin: NO_PIN


macros:
  startup_line0: 
  startup_line1:
  macro0: G1F1000X0Y0Z0A0B0
  # macro0: G1F1000X0Y0Z0A0B0
  macro1: 
  macro2: 
  macro3:

coolant:
  flood_pin: NO_PIN
  # gpio.12:high
  mist_pin: NO_PIN
  delay_ms: 0

#probe:
#  pin: gpio.2
#  check_mode_start: true

PWM:
  pwm_hz: 5000
  # on EXP1 IO15 connector.
  # note IO15 will give some short pulses on boot, which may activate spindle
  # use IO17 on EXP1 to avoid
  output_pin: gpio.15
  s0_with_disable: true
  tool_num: 0
  spinup_ms: 0
  spindown_ms: 0
  speed_map: 0=0.000% 10000=100.000%

# PWM Duty Cycle M67 E0 Q50


user_outputs:
  analog0_pin: NO_PIN
  analog1_pin: NO_PIN
  analog2_pin: NO_PIN
  analog3_pin: NO_PIN
  analog0_hz: 5000
  analog1_hz: 5000
  analog2_hz: 5000
  analog3_hz: 5000
  digital0_pin: gpio.14:low
  digital1_pin: gpio.13:low
  digital2_pin: gpio.12:low
  digital3_pin: gpio.21:low
  digital4_pin: gpio.4:low
  digital5_pin: gpio.0:low




start:
  must_home: false

 # USB  TX0(1)  RX0(3)
 # J3-> TX2(17) RX2(16)
 # J1-> I2SO.23 I2SO.22
 # TH1(36)        TH2(34)        THB(39)
 # HE0(I2SO.17)   HE1(I2SO.18)   HBED(I2SO.16)
 # FAN1(I2SO.19)  FAN2(I2SO.20)
 #                   EXP1                                   EXP2
 #(BEEPER) I2SO.21 | 1  2 | 13 (BTN_ENC)    (SPI MISO) 19 | 1  2 | 18 (SPI SCK)
 #    (LCD_EN)  21 | 3  4 |  4 (LCD_RS)      (BTN_EN1) 14 | 3  4 |  5 (SPI CS)
 #    (LCD_D4)   0 | 5  6   16 (LCD_D5)      (BTN_EN2) 12 | 5  6   23 (SPI MOSI)
 #    (LCD_D6)  15 | 7  8 | 17 (LCD_D7)      (SPI_DET) 34 | 7  8 | RESET
 #             GND | 9 10 | 5V                        GND | 9 10 | 3.3V

Startup Messages

[MSG:INFO: FluidNC v3.7.12 https://github.com/bdring/FluidNC]
[MSG:INFO: Compiled with ESP32 SDK:v4.4.4]
[MSG:INFO: Local filesystem type is spiffs]
[MSG:INFO: Configuration file:1.yaml]
[MSG:DBG: Running after-parse tasks]
[MSG:DBG: Checking configuration]
[MSG:INFO: Machine K40 Laser]
[MSG:INFO: Board MKS TinyBee V1.0_001]
[MSG:INFO: UART1 Tx:gpio.17 Rx:gpio.16 RTS:NO_PIN Baud:115200]
[MSG:INFO: I2SO BCK:gpio.25 WS:gpio.26 DATA:gpio.27]
[MSG:DBG: SPI not defined]
[MSG:DBG: See http://wiki.fluidnc.com/en/config/sd_card#sdfallbackcs-access-sd-without-a-config-file]
[MSG:INFO: Stepping:I2S_static Pulse:4us Dsbl Delay:0us Dir Delay:1us Idle Delay:0ms]
[MSG:INFO: User Digital Output:0 on Pin:gpio.14:low]
[MSG:INFO: User Digital Output:1 on Pin:gpio.13:low]
[MSG:INFO: User Digital Output:2 on Pin:gpio.12:low]
[MSG:INFO: User Digital Output:3 on Pin:gpio.21:low]
[MSG:INFO: User Digital Output:4 on Pin:gpio.4:low]
[MSG:INFO: User Digital Output:5 on Pin:gpio.0:low]
[MSG:INFO: Axis count 5]
[MSG:INFO: Axis X (-411.000,0.000)]
[MSG:INFO:   Motor0]
[MSG:INFO:     stepstick Step:I2SO.1 Dir:I2SO.2 Disable:I2SO.0]
[MSG:INFO:  X Neg Limit gpio.33:low]
[MSG:DBG:  X Neg Limit 0]
[MSG:INFO: Axis Y (-182.000,0.000)]
[MSG:INFO:   Motor0]
[MSG:INFO:     stepstick Step:I2SO.4 Dir:I2SO.5 Disable:I2SO.3]
[MSG:INFO:  Y Neg Limit gpio.32:low]
[MSG:DBG:  Y Neg Limit 0]
[MSG:INFO: Axis Z (-80.000,0.000)]
[MSG:INFO:   Motor0]
[MSG:INFO:     stepstick Step:I2SO.7 Dir:I2SO.8 Disable:I2SO.6]
[MSG:INFO:  Z Neg Limit gpio.22:low]
[MSG:DBG:  Z Neg Limit 0]
[MSG:INFO: Axis A (-3300.000,0.000)]
[MSG:INFO:   Motor0]
[MSG:INFO:     stepstick Step:I2SO.10 Dir:I2SO.11 Disable:I2SO.9]
[MSG:INFO:  A Neg Limit gpio.35:low]
[MSG:DBG:  A Neg Limit 0]
[MSG:INFO: Axis B (-15.000,0.000)]
[MSG:INFO:   Motor0]
[MSG:INFO:     stepstick Step:I2SO.13 Dir:I2SO.14 Disable:I2SO.12]
[MSG:INFO:  B Neg Limit gpio.2]
[MSG:DBG:  B Neg Limit 1]
[MSG:INFO: cycle_start_pin gpio.39:low]
[MSG:INFO: Kinematic system: Cartesian]
[MSG:INFO: PWM Spindle Ena:NO_PIN Out:gpio.15 Dir:NO_PIN Freq:5000Hz Period:8191]
[MSG:INFO: Using spindle PWM]
[MSG:INFO: WiFi is disabled]

User Interface Software

FluidTerm

What happened?

I have a short G-code file stored in spiffs and execute the code by "LocalFS/Run=/2.nc". However, while running, messages like "Low memory: 13242 bytes" showed up randomly and the size was descending. After reaching 0, the board restarted and the original task was somehow aborted.

GCode File

%
G21
G17 G21 G94
G90 G54 G92 x0Y0 Z0 A0 G0
G00 a-90
m62 p0
G04 p1
m63 p0
m0
G00 a0
G00 z-31
G00 y-198
m62 p4
g04 p1
G01 z0 f1000
G0 y -107
x-96
g1 z-53
m63 p4
g04 p1
G0 y0
x0
A-150
m62 p1
G04 p1
m63 p1
m0
G00 A0
z -60
y-171.85
m62 p4
g04 p1
z 0
y -218.85
z -15
m63 p4
g04 p1
y-198
z-60
m62 p4
g04 p1
z-50
y0
x-280
y-28
z-60
m63 p4
g04 p1
y0
x0
m62 p2
g04 p1
m63 p2
m0
z-60
x-280
y-28
m62 p4
g04 p1
z-50
y0
x-150
z-36
y-108
z-46
m63 p4
g04 p1
y0
x0
a-120
m62 p3
g04 p1
m63 p3
m0
a-150
m62 p3
g04 p1
m63 p3
m0
a0
x-150
y-108
m62 p4
g04 p1
z-36
y0
x0
y-198
z-60
m63 p4
g04 p1
z-53
y0
x-96
y-107
m62 p4
z0
x0
y-151
z-70
m63 p4
y0
G00 a-150
m62 p0
G04 p1
m63 p0
m0
G00 a-60
G00 z-31
G00 y-198
m62 p4
g04 p1
G01 z0 f1000
G0 y -107
x-96
g1 z-53
m63 p4
g04 p1
G0 y0
x0
A-210
m62 p1
G04 p1
m63 p1
m0
G00 A-60
z -60
y-171.85
m62 p4
g04 p1
z 0
y -218.85
z -15
m63 p4
g04 p1
y-198
z-60
m62 p4
g04 p1
z-50
y0
x-280
y-28
z-60
m63 p4
g04 p1
y0
x0
m62 p2
g04 p1
m63 p2
m0
z-60
x-280
y-28
m62 p4
g04 p1
z-50
y0
x-150
z-36
y-108
z-46
m63 p4
g04 p1
y0
x0
a-180
m62 p3
g04 p1
m63 p3
m0
a-210
m62 p3
g04 p1
m63 p3
m0
a-60
x-150
y-108
m62 p4
g04 p1
z-36
y0
x0
y-198
z-60
m63 p4
g04 p1
z-53
y0
x-96
y-107
m62 p4
z0
x0
y-151
z-70
m63 p4
y0
G28
M30
%

Other Information

If I use a shorter G-code, I do not have such issue.

@bdring
Copy link
Owner

bdring commented Aug 8, 2024

Update the firmware. v3.7.17 addressed a memory issue.

@zizheng1
Copy link
Author

zizheng1 commented Aug 8, 2024

Thank you! I will update the firmware.

@MitchBradley
Copy link
Collaborator

In addition to the version problem, there are other problems that can happen when running long gcode files from localfs. Accessing FLASH as data can interfere with interrupts, which can cause problems with realtime step generation. We recommend using SD cards for gcode files.

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

3 participants