Unable to write tmc spi 'extruder' register DRV_CONF

Basic Information:

Printer Model: Voron 2.4
MCU / Printerboard:Octopus v1.1
Host / SBC Mainsail
klippy (10).log (7.0 MB)

HI,
Can’t seam to get anybody to help me? 13 days and no reply? Am i doing something wrong. Don’t understand, Used to get help from this website all the time!
…just installed a Sb2240, everything works until i go to purge the extruder. Then a i get this Error: Unable to write tmc spi ‘extruder’ register DRV_CONF

I feel like its a .cfg problem but can’t figure it out. Any help would be greatly Appreciated.

Thanks in advance.

I don’t know which help you are expecting.
I can look at BTT Data:

I can look at your config:

[tmc2240 extruder]
cs_pin = EBBCan: PA15
spi_software_sclk_pin = EBBCan: PB10
spi_software_mosi_pin = EBBCan: PB11
spi_software_miso_pin = EBBCan: PB2
driver_tpfd = 0
run_current = 0.650

And at the reference one:

[tmc2209 extruder]
uart_pin: EBBCan: PA15
run_current: 0.650
stealthchop_threshold: 999999

# [tmc2240 extruder]
# cs_pin: EBBCan: PA15
# spi_software_sclk_pin: EBBCan: PB10
# spi_software_mosi_pin: EBBCan: PB11
# spi_software_miso_pin: EBBCan: PB2

To check SPI, you can query ADXL.
If ADXL is working, then it is the correct configuration and then probably, maybe you have a TMC2209, not the TMC2240 on your toolboard.
If ADXL is not working, something is really wrong.

You can physically look at chips on the board to check that.

Hope it helps.

# This file contains common pin mappings for the BIGTREETECH EBBCan
# Canbus board. To use this config, the firmware should be compiled for the
# STM32G0B1 with "8 MHz crystal" and "USB (on PA11/PA12)" or "CAN bus (on PB0/PB1)".
# The "EBB Can" micro-controller will be used to control the components on the nozzle.

# See docs/Config_Reference.md for a description of parameters.

[mcu EBBCan]
#serial: /dev/serial/by-id/usb-Klipper_Klipper_firmware_12345-if00
canbus_uuid: cbbb028b3409

[temperature_sensor EBB_NTC]
sensor_type: Generic 3950
sensor_pin: EBBCan: PA2

[adxl345]
cs_pin: EBBCan: PB12
spi_software_sclk_pin: EBBCan: PB10
spi_software_mosi_pin: EBBCan: PB11
spi_software_miso_pin: EBBCan: PB2
axes_map: x,y,z

[resonance_tester]
probe_points: 150, 150, 20
accel_chip: adxl345


[extruder]
step_pin: EBBCan: PD0
dir_pin: !EBBCan: PD1
enable_pin: !EBBCan: PD2
rotation_distance: 21.7941955921176 #Bondtech 5mm Drive Gears
gear_ratio: 50:10               #BMG Gear Ratio
microsteps: 16
full_steps_per_rotation: 400    #200 for 1.8 degree, 400 for 0.9 degree
nozzle_diameter: 0.400
filament_diameter: 1.75
heater_pin: EBBCan:PB13
sensor_type: MAX31865
sensor_pin: EBBCan:PA4
spi_software_sclk_pin: EBBCan:PA5
spi_software_mosi_pin: EBBCan:PA7
spi_software_miso_pin: EBBCan:PA6 
rtd_nominal_r: 100
rtd_reference_r: 430
rtd_num_of_wires: 2
control: pid
pid_Kp: 24.144
pid_Ki: 8.048
pid_Kd: 18.108
# p=24.144 pid_Ki=8.048 pid_Kd=18.108
min_temp: 0
max_temp: 300
max_extrude_only_distance: 100
max_extrude_cross_section: 2.5
# pressure_advance: 
[tmc2240 extruder]
cs_pin: EBBCan: PA15
spi_software_sclk_pin: EBBCan: PB10
spi_software_mosi_pin: EBBCan: PB11
spi_software_miso_pin: EBBCan: PB2
driver_TPFD: 0
run_current: 0.650
stealthchop_threshold: 999999


[fan]
##	Print Cooling Fan - FAN1 Connector
## pin: PB1  ##Spider pin
pin: EBBCan: PA1
max_power: 1.0
kick_start_time: 1.0
##	Depending on your fan, you may need to increase this value
##	if your fan will not start. Can change cycle_time (increase)
##	if your fan is not able to slow down effectively
off_below: 0.101

[heater_fan hotend_fan]
pin: EBBCan: PA0
heater: extruder
heater_temp: 50.0

[heater_fan 1_Toolhead_Fan]
pin: EBBCan: PB14
# max_power: 1.0
tachometer_pin: EBBCan: PB15
tachometer_ppr: 1

#####################################################################
#   LED Control
#####################################################################


## Chamber Lighting - HE2 Connector (Optional)
#[output_pin caselight]
#pin: PB10
#pwm:true
#shutdown_value: 0
#value:1
#cycle_time: 0.01

#[bltouch]
#sensor_pin: ~EBBCan: PB9
#control_pin: EBBCan: PB8
#z_offset: 0

[probe]
pin: ~!EBBCan:PB9
x_offset: 0
y_offset: 0
# z_offset: 0
speed: 45.0
samples: 2
samples_result: median
sample_retract_dist: 3.0
samples_tolerance: 0.05
samples_tolerance_retries: 3


#[output_pin]
# pin: ~EBBCan:PB9

#[output_pin PB7]
#pin: EBBCan: PB7

#[output_pin PB6]
#pin: EBBCan: PB6

# This file contains common pin mappings for the BigTreeTech Octopus V1.
# To use this config, the firmware should be compiled for the STM32F446 with a "32KiB bootloader"
# Enable "extra low-level configuration options" and select the "12MHz crystal" as clock reference
# after running "make", copy the generated "klipper/out/klipper.bin" file to a
# file named "firmware.bin" on an SD card and then restart the OctoPus with that SD card.
# See docs/Config_Reference.md for a description of parameters.
## Voron Design VORON2 250/300/350mm BigTreeTech OctoPus V1 TMC2209 UART config

## *** THINGS TO CHANGE/CHECK: ***
## MCU paths                            [mcu] section
## Thermistor types                     [extruder] and [heater_bed] sections - See https://www.klipper3d.org/Config_Reference.html#common-thermistors for common thermistor types
## Z Endstop Switch location            [safe_z_home] section
## Homing end position                  [gcode_macro G32] section
## Z Endstop Switch  offset for Z0      [stepper_z] section
## Probe points                         [quad_gantry_level] section
## Min & Max gantry corner postions     [quad_gantry_level] section
## PID tune                             [extruder] and [heater_bed] sections
## Probe pin                            [probe] section
## Fine tune E steps                    [extruder] section

## Mainsail settings
[include mainsail.cfg]
[include btt_ebb-sb2240.cfg]
[include stealthburner_leds.cfg]
[include KAMP_Settings.cfg]
[include macros.cfg]
[exclude_object]
#[mcu rpi]
#serial: /tmp/klipper_host_mcu


[mcu]
##  Obtain definition by "ls -l /dev/serial/by-id/" then unplug to verify
##--------------------------------------------------------------------
serial: /dev/serial/by-id/usb-Klipper_stm32f446xx_2B0040001750344D30353320-if00
restart_method: command
##--------------------------------------------------------------------

[input_shaper]
shaper_freq_x: 56.4
shaper_type_x: mzv
shaper_freq_y: 41.4
shaper_type_y: mzv

[shaketune]
result_folder: ~/printer_data/config/ShakeTune_results
#    The folder where the results will be stored. It will be created if it doesn't exist.
number_of_results_to_keep: 3
#    The number of results to keep in the result_folder. The oldest results will
#    be automatically deleted after each runs.
keep_raw_data: False
#    If True, the raw CSV files will be kept in the result_folder alongside the
#    PNG graphs. If False, they will be deleted and only the graphs will be kept.
show_macros_in_webui: True
#    Mainsail and Fluidd doesn't create buttons for "system" macros that are not in the
#    printer.cfg file. If you want to see the macros in the webui, set this to True.
timeout: 300
#    The maximum time in seconds to let Shake&Tune process the CSV files and generate the graphs.


[printer]
kinematics: corexy
max_velocity: 300  
max_accel: 10000             #Max 4000
max_accel_to_decel: 10000
max_z_velocity: 15          #Max 15 for 12V TMC Drivers, can increase for 24V
max_z_accel: 350
square_corner_velocity: 5.0

#####################################################################
#   X/Y Stepper Settings
#####################################################################

##  B Stepper - Left
##  Connected to MOTOR_0
##  Endstop connected to DIAG_0
[stepper_x]
step_pin: PF13
dir_pin: PF12
enable_pin: !PF14
rotation_distance: 40
microsteps: 32
full_steps_per_rotation:200  #set to 400 for 0.9 degree stepper
endstop_pin: PG6
position_min: 0
##--------------------------------------------------------------------

##  Uncomment below for 250mm build
#position_endstop: 250
#position_max: 250

##  Uncomment for 300mm build
position_endstop: 300
position_max: 300

##  Uncomment for 350mm build
#position_endstop: 350
#position_max: 350

##--------------------------------------------------------------------
homing_speed: 100   #Max 100
homing_retract_dist: 3
homing_positive_dir: true

##  Make sure to update below for your relevant driver (2208 or 2209)
[tmc2209 stepper_x]
uart_pin: PC4
interpolate: false
run_current: 0.8
sense_resistor: 0.110
stealthchop_threshold: 0

##  A Stepper - Right
##  Connected to MOTOR_1
##  Endstop connected to DIAG_1
[stepper_y]
step_pin: PG0
dir_pin: PG1
enable_pin: !PF15
rotation_distance: 40
microsteps: 32
full_steps_per_rotation:200  #set to 400 for 0.9 degree stepper
endstop_pin: !PG9
position_min: 0
##-------------------------------------------------------------------------------------

##  Uncomment for 250mm build
#position_endstop: 250
#position_max: 250

##  Uncomment for 300mm build
position_endstop: 300
position_max: 300

##  Uncomment for 350mm build
#position_endstop: 350
#position_max: 350

##--------------------------------------------------------------------
homing_speed: 100  #Max 100
homing_retract_dist: 3
homing_positive_dir: true

##  Make sure to update below for your relevant driver (2208 or 2209)
[tmc2209 stepper_y]
uart_pin: PD11
interpolate: false
run_current: 0.8
sense_resistor: 0.110
stealthchop_threshold: 0
 
 
#####################################################################
#   Z Stepper Settings
#####################################################################

## Z0 Stepper - Front Left
##  Connected to MOTOR_2
##  Endstop connected to DIAG_2
[stepper_z]
step_pin: PF11
dir_pin: PG3
enable_pin: !PG5
rotation_distance: 40
gear_ratio: 80:16
microsteps: 32
endstop_pin: probe:z_virtual_endstop
##  Z-position of nozzle (in mm) to z-endstop trigger point relative to print surface (Z0)
##  (+) value = endstop above Z0, (-) value = endstop below
##  Increasing position_endstop brings nozzle closer to the bed
##  After you run Z_ENDSTOP_CALIBRATE, position_endstop will be stored at the very end of your config
#position_endstop: -0.5
##--------------------------------------------------------------------

##  Uncomment below for 250mm build
#position_max: 210

##  Uncomment below for 300mm build
position_max: 260

##  Uncomment below for 350mm build
#position_max: 310

##--------------------------------------------------------------------
position_min: -5
homing_speed: 75
second_homing_speed: 20
homing_retract_dist: 3


##  Make sure to update below for your relevant driver (2208 or 2209)
[tmc2209 stepper_z]
uart_pin: PC6
interpolate: false
run_current: 0.8
sense_resistor: 0.110
stealthchop_threshold: 0

##  Z1 Stepper - Rear Left
##  Connected to MOTOR_3
[stepper_z1]
step_pin: PG4
dir_pin: !PC1
enable_pin: !PA0
rotation_distance: 40
gear_ratio: 80:16
microsteps: 32

##  Make sure to update below for your relevant driver (2208 or 2209)
[tmc2209 stepper_z1]
uart_pin: PC7
interpolate: false
run_current: 0.8
sense_resistor: 0.110
stealthchop_threshold: 0

##  Z2 Stepper - Rear Right
##  Connected to MOTOR_4
[stepper_z2]
step_pin: PF9
dir_pin: PF10
enable_pin: !PG2
rotation_distance: 40
gear_ratio: 80:16
microsteps: 32

##  Make sure to update below for your relevant driver (2208 or 2209)
[tmc2209 stepper_z2]
uart_pin: PF2
interpolate: false
run_current: 0.8
sense_resistor: 0.110
stealthchop_threshold: 0

##  Z3 Stepper - Front Right
##  Connected to MOTOR_5
[stepper_z3]
step_pin: PC13
dir_pin: !PF0
enable_pin: !PF1
rotation_distance: 40
gear_ratio: 80:16
microsteps: 32


##  Make sure to update below for your relevant driver (2208 or 2209)
[tmc2209 stepper_z3]
uart_pin: PE4
interpolate: false
run_current: 0.8
sense_resistor: 0.110
stealthchop_threshold: 0


#####################################################################
#   Bed Heater
#####################################################################

##  SSR Pin - HE1
##  Thermistor - TB
[heater_bed]
##  Uncomment the following line if using the default SSR wiring from the docs site
heater_pin: PA3
##  Other wiring guides may use BED_OUT to control the SSR. Uncomment the following line for those cases
#heater_pin: PA1
## Check what thermistor type you have. See https://www.klipper3d.org/Config_Reference.html#common-thermistors for common thermistor types.
## Use "Generic 3950" for Keenovo heaters
sensor_type:Generic 3950
sensor_pin: PF3
##  Adjust Max Power so your heater doesn't warp your bed. Rule of thumb is 0.4 watts / cm^2 .
max_power: 0.6
min_temp: 0
max_temp: 120
control: pid
pid_kp: 39.972
pid_ki: 1.625
pid_kd: 245.827
# pid_Kp=39.972 pid_Ki=1.625 pid_Kd=245.827
#####################################################################
#   Probe
#####################################################################

##  Inductive Probe
##  This probe is not used for Z height, only Quad Gantry Leveling
[probe]

#--------------------------------------------------------------------

## Select the probe port by type:
## For the PROBE port. Will not work with Diode. May need pull-up resistor from signal to 24V.
#pin: ~!PB7
## For the DIAG_7 port. NEEDS BAT85 DIODE! Change to !PG15 if probe is NO.
#pin: ~PG15
## For Octopus Pro PROBE port; NPN and PNP proximity switch types can be set by jumper
#pin: ~!PC5

#--------------------------------------------------------------------

x_offset: 0
y_offset: 0
#z_offset: 0
speed: 100.0
samples: 3
samples_result: median
sample_retract_dist: 3.0
samples_tolerance: 0.006
samples_tolerance_retries: 3


activate_gcode:
    {% set PROBE_TEMP = 150 %}
    {% set MAX_TEMP = PROBE_TEMP + 5 %}
    {% set ACTUAL_TEMP = printer.extruder.temperature %}
    {% set TARGET_TEMP = printer.extruder.target %}

    {% if TARGET_TEMP > PROBE_TEMP %}
        { action_respond_info('Extruder temperature target of %.1fC is too high, lowering to %.1fC' % (TARGET_TEMP, PROBE_TEMP)) }
        M109 S{ PROBE_TEMP }
    {% else %}
        # Temperature target is already low enough, but nozzle may still be too hot.
        {% if ACTUAL_TEMP > MAX_TEMP %}
            { action_respond_info('Extruder temperature %.1fC is still too high, waiting until below %.1fC' % (ACTUAL_TEMP, MAX_TEMP)) }
            TEMPERATURE_WAIT SENSOR=extruder MAXIMUM={ MAX_TEMP }
        {% endif %}
    {% endif %}
    

#####################################################################
#   Fan Control
#####################################################################

##  Controller fan - FAN0 octopus
# [output_pin Your_Fan_Name]
[controller_fan controller_fan]
pin: PA8
tachometer_pin: ^PG13
tachometer_ppr: 2
max_power: 1.0
shutdown_speed: 0.0

# RPM monitoring:
# tachometer_pin: ^PG13
# tachometer_ppr: 2

# # controller fan 1 not used
# [controller_fan controller_fan]
# pin: PA8
# # RPM monitoring:
# tachometer_pin: ^PG13
# tachometer_ppr: 2
# kick_start_time: 0.5
# heater: heater_bed

#  Exhaust fan - FAN2 2 case fans
[heater_fan exhaust_fan]
pin: PD12
max_power: 1.0
shutdown_speed: 0.0
kick_start_time: 5.0
heater: heater_bed
heater_temp: 60
fan_speed: 1.0

##  Controller fan - FAN3 actually its the exhaust fan to outside
[controller_fan SSR_fan]
pin: PD13
kick_start_time: 0.5
heater: heater_bed



## This is a simple include for the Nevermore. To use it with your printer, edit
## the pin definition in line 16 so it matches your printer.
## What you get:
## - a generic fan "Nevermore" which is adjustable in GCODE and in Mainsail/Fluidd
## - Commands in your 12864-controller to turn the fan on/off or adjust in 10%-steps
## - a Macro to turn the fan off some time after the print.
##
## Slicer integration: Add "SET_FAN_SPEED FAN=Nevermore SPEED=1" in your start-macro
## (or less fan depending on your needs, like SPEED=0.8)
## in your end print code, add "UPDATE_DELAYED_GCODE ID=filter_off DURATION=180"
## this keeps your Nevermore running for 180s after the print finishes to clean the chamber a bit more.

[fan_generic Nevermore]
## Nevermore - FAN5 on Octopus
## Adjust if you use a different board or a different terminal.
pin: PD15
# RPM monitoring:
tachometer_pin: ^PG14
tachometer_ppr: 2

# [menu __main __control __nevermoreonoff]
# type: command
# name: Nevermore {'ON' if printer['fan_generic Nevermore'].speed > 0 else 'OFF'}
# enable: {'fan_generic Nevermore' in printer}
# gcode:
#     TOGGLE_NEVERMORE

# [menu __main __control __filterspeed]
# type: input
# enable: {'fan_generic Nevermore' in printer}
# name: Filter %: {'%3d' % (menu.input*100)}%
# input: {printer["fan_generic Nevermore"].speed}
# input_min: 0
# input_max: 1
# input_step: 0.1
# gcode:
#     SET_FAN_SPEED FAN=Nevermore SPEED={menu.input}

# [delayed_gcode filter_off]
# gcode:
#     SET_FAN_SPEED FAN=Nevermore SPEED=0

# [gcode_macro TOGGLE_NEVERMORE]
# gcode:
#     {% if printer['fan_generic Nevermore'].speed > 0 %}
#       SET_FAN_SPEED FAN=Nevermore SPEED=0
#     {% else %}
#       SET_FAN_SPEED FAN=Nevermore SPEED=1
#     {% endif %}

# RPM monitoring:
tachometer_pin: ^PG13
tachometer_ppr: 2

# RPM monitoring:
tachometer_pin: ^PG14
tachometer_ppr: 2



#####################################################################
#   Thermals
#####################################################################

[temperature_sensor raspberry_pi]
## Pi Temps
sensor_type: temperature_host
max_temp: 100

##[temperature_sensor mcu_temp]
[temperature_sensor Octopus]
## Spider Temps
sensor_type: temperature_mcu
max_temp: 90

[temperature_sensor EBB2240]
sensor_type: temperature_mcu
sensor_mcu: EBBCan
min_temp: 0
max_temp: 90



# [temperature_sensor bed_top]
# ## Top of Bed Temps
# sensor_type: Generic 3950
# sensor_pin: PF3

######################
### Chamber Heater ###
######################

[heater_generic chamber_heater]
heater_pin: PB10
sensor_type: PT1000
sensor_pin: PF5
control: watermark
control: pid
pid_Kp=15.461 
pid_Ki=0.644 
pid_Kd=92.764
max_power: .75
min_temp: 0
max_temp: 110
max_power: .5
min_temp: 0
max_temp: 240

[verify_heater chamber_heater]
max_error: 120
check_gain_time: 120
hysteresis: 5
heating_gain: 2

# ##########################
# ### Chamber Heater Fan ###
# ##########################

#  heater - FAN4
[heater_fan chamber_heater_fan]
pin: PD14
max_power: 1.0
heater: chamber_heater
heater_temp: 40.0 # fan will turn off below this level

#############################
### Enclosure Temperature ###
#############################

[thermistor chamber_thermistor]
beta: 3950
temperature1: 25.0
resistance1: 103180.0



[temperature_sensor enclosure_temp]
sensor_type: chamber_thermistor
sensor_pin: PF6
min_temp: 0
max_temp: 80

#####################################################################
#   Homing and Gantry Adjustment Routines
#####################################################################

[idle_timeout]
timeout: 1800

[safe_z_home]
##  XY Location of the Z Endstop Switch
##  Update -10,-10 to the XY coordinates of your endstop pin 
##  (such as 157,305) after going through Z Endstop Pin
##  Location Definition step.
home_xy_position: 150, 150
speed:125
z_hop:3

##  Use QUAD_GANTRY_LEVEL to level a gantry.
##  Min & Max gantry corners - measure from nozzle at MIN (0,0) and 
##  MAX (250, 250), (300,300), or (350,350) depending on your printer size
##  to respective belt positions
[quad_gantry_level]

#--------------------------------------------------------------------
    
##  Gantry Corners for 300mm Build
##  Uncomment for 300mm build
gantry_corners:
   -60,-10
   360,370
##  Probe points
points:
   50,25
   50,225
   250,225
   250,25

#--------------------------------------------------------------------
speed: 400
horizontal_move_z: 5
retries: 5
retry_tolerance: 0.005
max_adjust: 10

[bed_mesh]
speed: 500
horizontal_move_z: 5.51 #  5.51
##--------------------------------------------------------------------
##	Uncomment below for 250mm build
#mesh_min: 40, 40
#mesh_max: 210,210

##	Uncomment for 300mm build
mesh_min: 10,10 # 25, 25
mesh_max: 290,290 # 275,275
##--------------------------------------------------------------------
fade_start: 0.6
fade_end: 5.0
adaptive_margin: 10

# probe_count: 9,9
#relative_reference_index: 24 # 9 + 9 + 9 + 9 + 5

#probe_count: 7,7
#relative_reference_index: 24 # 7 + 7 + 7 + 3

#probe_count: 7,5
#relative_reference_index: 17 # 7 + 7 + 3

probe_count: 5,5
zero_reference_position: 150, 150

algorithm: bicubic

########################################
# EXP1 / EXP2 (display) pins
########################################

[board_pins]
aliases:
    # EXP1 header
    EXP1_1=PE8, EXP1_2=PE7,
    EXP1_3=PE9, EXP1_4=PE10,
    EXP1_5=PE12, EXP1_6=PE13,    # Slot in the socket on this side
    EXP1_7=PE14, EXP1_8=PE15,
    EXP1_9=<GND>, EXP1_10=<5V>,

    # EXP2 header
    EXP2_1=PA6, EXP2_2=PA5,
    EXP2_3=PB1, EXP2_4=PA4,
    EXP2_5=PB2, EXP2_6=PA7,      # Slot in the socket on this side
    EXP2_7=PC15, EXP2_8=<RST>,
    EXP2_9=<GND>, EXP2_10=<5V>

#####################################################################
#   Displays
#####################################################################

##  Uncomment the display that you have
#--------------------------------------------------------------------
#[neopixel panel_ring]
#pin:                     J37
#chain_count:             3
#initial_RED:             1.0
#initial_GREEN:           1.0
#initial_BLUE:            1.0
#initial_WHITE:           1.0
#color_order:             GRBW

##  RepRapDiscount 128x64 Full Graphic Smart Controller
#[display]
#lcd_type: st7920
#cs_pin: EXP1_4
#sclk_pin: EXP1_5
#sid_pin: EXP1_3
#menu_timeout: 40
#encoder_pins: ^EXP2_5, ^EXP2_3
#click_pin: ^!EXP1_2

#[output_pin beeper]
#pin: EXP1_1

#--------------------------------------------------------------------


##  mini12864 LCD Display
#[display]
#lcd_type: uc1701
#cs_pin: EXP1_3
#a0_pin: EXP1_4
#rst_pin: EXP1_5
#encoder_pins: ^EXP2_5, ^EXP2_3
#click_pin: ^!EXP1_2
#contrast: 63
#spi_software_miso_pin: EXP2_1
#spi_software_mosi_pin: EXP2_6
#spi_software_sclk_pin: EXP2_2

##  To control Neopixel RGB in mini12864 display
#[neopixel btt_mini12864]
#pin: EXP1_6
#chain_count: 3
#initial_RED: 0.1
#initial_GREEN: 0.5
#initial_BLUE: 0.0
#color_order: RGB

##  Set RGB values on boot up for each Neopixel. 
##  Index 1 = display, Index 2 and 3 = Knob
#[delayed_gcode setdisplayneopixel]
#initial_duration: 1
#gcode:
#        SET_LED LED=btt_mini12864 RED=1 GREEN=1 BLUE=1 INDEX=1 TRANSMIT=0
#        SET_LED LED=btt_mini12864 RED=1 GREEN=0 BLUE=0 INDEX=2 TRANSMIT=0
#        SET_LED LED=btt_mini12864 RED=1 GREEN=0 BLUE=0 INDEX=3 

#--------------------------------------------------------------------

#####################################################################
#   Macros
#####################################################################


[gcode_macro CHAMBER_TEMP_WAIT]
gcode:
  {% if params.MIN_TEMPERATURE and params.MAX_TEMPERATURE and params.MIN_TEMPERATURE|float > params.MAX_TEMPERATURE|float %}
    {action_raise_error("Chamber Temp Wait: MIN_TEMPERATURE must be less than or equal to MAX_TEMPERATURE
                         Use: 
                         - CHAMBER_TEMP_WAIT MIN_TEMPERATURE=[0..90]
                         - CHAMBER_TEMP_WAIT MAX_TEMPERATURE=[0..90]
                         - CHAMBER_TEMP_WAIT MIN_TEMPERATURE=[0..90] MAX_TEMPERATURE=[0..80]")}
  {% elif params.MIN_TEMPERATURE and params.MIN_TEMPERATURE|float > -1 and params.MIN_TEMPERATURE|float < 91 %}
    {% if params.MAX_TEMPERATURE and params.MAX_TEMPERATURE|float > -1 and params.MAX_TEMPERATURE|float < 91 %}
      TEMPERATURE_WAIT SENSOR="temperature_sensor enclosure_temp" MINIMUM={params.MIN_TEMPERATURE|float} MAXIMUM={params.MAX_TEMPERATURE|float}
    {% else %}
      TEMPERATURE_WAIT SENSOR="temperature_sensor enclosure_temp" MINIMUM={params.MIN_TEMPERATURE|float}
    {% endif %}
  {% elif params.MAX_TEMPERATURE and params.MAX_TEMPERATURE|float > -1 and params.MAX_TEMPERATURE|float < 91 %}
      TEMPERATURE_WAIT SENSOR="temperature_sensor enclosure_temp" MAXIMUM={params.MAX_TEMPERATURE|float}
  {% else %}
    {action_raise_error("Chamber Temp Wait: invalid usage
                         Use: 
                         - CHAMBER_TEMP_WAIT MIN_TEMPERATURE=[0..90]
                         - CHAMBER_TEMP_WAIT MAX_TEMPERATURE=[0..90]
                         - CHAMBER_TEMP_WAIT MIN_TEMPERATURE=[0..90] MAX_TEMPERATURE=[0..90]")}
  {% endif %}




[gcode_macro T0]
gcode:

[gcode_macro START_PRINT]

gcode:

# #    START_PRINT BED_TEMP=[first_layer_bed_temperature] EXTRUDER_TEMP=[first_layer_temperature]
#     {% set BED_TEMP = params.BED_TEMP|default(110)|float %}
#     {% set EXTRUDER_TEMP = params.EXTRUDER_TEMP|default(260)|float %}
#     # Start bed heating
#     M140 S{BED_TEMP}
#     # Use absolute coordinates
#     G90
#     # Reset the G-Code Z offset (adjust Z offset if needed)
#     SET_GCODE_OFFSET Z=0.0
#     # Home the printer
#     G28
#     # Move the nozzle near the bed
#     G1 Z5 F3000
#     # Move the nozzle very close to the bed
#     G1 Z0.15 F300
#     # Wait for bed to reach temperature
#     M190 S{BED_TEMP}
#     # Set and wait for nozzle to reach temperature
#     M109 S{EXTRUDER_TEMP}

[gcode_macro END_PRINT]
gcode:
    # Turn off bed, extruder, and fan
    M140 S0
    M104 S0
    M106 S0
    # Move nozzle away from print while retracting
    G91
    G1 X-2 Y-2 E-3 F300
    # Raise nozzle by 10mm
    G1 Z10 F3000
    G90
    # Disable steppers
    M84

#*# <---------------------- SAVE_CONFIG ---------------------->
#*# DO NOT EDIT THIS BLOCK OR BELOW. The contents are auto-generated.
#*#
#*# [heater_bed]
#*#
#*# [extruder]
#*#
#*# [probe]
#*# z_offset = -0.210
#*#
#*# [stepper_z]
#*#
#*# [input_shaper]
#*#
#*# [bed_mesh default]
#*# version = 1
#*# points =
#*# 	  0.035720, 0.010720, 0.006970
#*# 	  0.019470, 0.001970, -0.011780
#*# 	  0.066970, 0.026970, 0.034470
#*# x_count = 3
#*# y_count = 3
#*# mesh_x_pps = 2
#*# mesh_y_pps = 2
#*# algo = lagrange
#*# tension = 0.2
#*# min_x = 100.755
#*# max_x = 190.935
#*# min_y = 119.333
#*# max_y = 200.033


I do have the SB2240, it was previously working. I started to have issues with my thermistor, and the thermocouple on my Ace rapido hot end. I replaced the ceramic heater and the thermocouple. eventually was able to complete a one PID_CALIBRATE HEATER=extruder TARGET=260, after that the thermocouple again gave me issues, so i replaced the SB2240 board thinking maybe that’s the problem .I completed the canbus setup with klipper. Same problem again. I then changed out the thermocouple a second time and now it works only until i try to use the extruder motor. I have tested the motor and it works as it should. I have switched drivers on my octopus with a gantry driver that i know works. Still no luck. I want to add that i did upgrade to a Meanwell LRS-350-24 power supply. Not sure that has any effect on my current problem. I will try the AXL query.

My Query: accelerometer values (x, y, z): 1998.556043, -370.102971, -9652.803275

i just realized that i’m not using the octopus drivers for my extruder.

Well, this is a nice history, but it does not relate to each other and does not relate to the ability to read/write info from TMC.

Then, the only thing that I can come up with, you are not connected to DC input from your power supply, and your board is powered from USB.

In that specific case, everything, except the driver, the heater and fans >=12v would work.

Heater extruder not heating at expected rate
Transition to shutdown state: Heater extruder not heating at expected rate
See the 'verify_heater' section in docs/Config_Reference.md
for the parameters that control this check.

Well, looks like it.


In the last log lines, I see that your heater is working and connected to ebb

[extruder]
step_pin = EBBCan: PD0
dir_pin = !EBBCan: PD1
enable_pin = !EBBCan: PD2
rotation_distance = 21.7941955921176
gear_ratio = 50:10
microsteps = 16
full_steps_per_rotation = 400
nozzle_diameter = 0.400
filament_diameter = 1.75
heater_pin = EBBCan:PB13
sensor_type = MAX31865
sensor_pin = EBBCan:PA4
spi_software_sclk_pin = EBBCan:PA5
spi_software_mosi_pin = EBBCan:PA7
spi_software_miso_pin = EBBCan:PA6
rtd_nominal_r = 100
rtd_reference_r = 430
rtd_num_of_wires = 2
control = pid
pid_kp = 24.144
pid_ki = 8.048
pid_kd = 18.108
min_temp = 0
max_temp = 300
max_extrude_only_distance = 100
max_extrude_cross_section = 2.5

[tmc2240 extruder]
cs_pin = EBBCan: PA15
spi_software_sclk_pin = EBBCan: PB10
spi_software_mosi_pin = EBBCan: PB11
spi_software_miso_pin = EBBCan: PB2
driver_tpfd = 0
run_current = 0.650
stealthchop_threshold = 999999
Stats 121.3: gcodein=0  mcu: mcu_awake=0.001 mcu_task_avg=0.000006 mcu_task_stddev=0.000004 bytes_write=4293 bytes_read=29436 bytes_retransmit=9 bytes_invalid=0 send_seq=399 receive_seq=399 retransmit_seq=2 srtt=0.000 rttvar=0.000 rto=0.025 ready_bytes=0 upcoming_bytes=0 freq=180000653 canstat_EBBCan: bus_state=active rx_error=0 tx_error=0 tx_retries=0 EBBCan: mcu_awake=0.005 mcu_task_avg=0.000021 mcu_task_stddev=0.000026 bytes_write=2539 bytes_read=23517 bytes_retransmit=0 bytes_invalid=0 send_seq=332 receive_seq=332 retransmit_seq=0 srtt=0.001 rttvar=0.000 rto=0.025 ready_bytes=0 upcoming_bytes=0 freq=63999356 adj=63999056  EBB_NTC: temp=28.7 heater_bed: target=0 temp=22.7 pwm=0.000 raspberry_pi: temp=28.2 Octopus: temp=26.3 EBB2240: temp=27.8 chamber_heater: target=0 temp=21.4 pwm=0.000 enclosure_temp: temp=22.0 sysload=0.31 cputime=7.310 memavail=3411512 print_time=125.087 buffer_time=0.000 print_stall=0 extruder: target=170 temp=120.6 pwm=1.000

Then I honestly don’t know.

I have the jumper removed from the SB2240 and the Can cable is connected to the UtC. If I’m getting the picture here, The Sb2240 is not reading the TMC, which the TMC is connected to the SB2240. But all other pins that are being used are working. Hmm. I guess i can try going back to my previous SB2240 and see if i have this same problem. I changed out because i felt that the thermocouple pin out had quit working. Do you think its a firmware issue, being worst case scenario i could bite the bullet and just start from scratch and re-flash everything? This things been down for almost 5 weeks. Ready to burn it!

Thanks for your help. My apologies for my comments.

Definitely, TMC on EBB is connected to EBB, you can simply get that by the pins in the config. You always define pins from either the main MCU (without prefix) or with the prefix - secondary MCU.

In your case, the TMC Driver of the extruder is physically on the EBB board, so there is not so much freedom to do things wrong.
There are just pins, same pins are used for ADXL, so SPI is working.
CS pin looks fine, according to the scheme from BTT, it should be PA15.
TMC2240 has a switch between UART/SPI modes, but according to the scheme, it is disconnected - default to SPI.

So, the only reason when this chip will not respond is if it has no power, but your board receiving it because without power, the heater will not work.

Firmware has no clue, what are we talking about.
From a firmware perspective, there is no difference between all those pins, the same applies if ADXL works → spi pins work, so the TMC Driver connected to those pins should also be able to answer requests.

Firmware has no state, so there is no magical reason to reflash, like people like to reinstall systems or reset smartphones. It boots up, receives config from the Klipper instance, and just services the commands.

So, generally, there is no reason to reflash it to the same firmware/version/config, like “never”.

So, I think you got the idea of how it is supposed to work.

If ADXL is not part of the board, try to disconnect it, it can mess up with SPI.
Looks like it is not.


Like no jokes.

The ADXL is built in to the SB240. I guess i could comment it out.

So I reinstalled my other SB2240 (the one that had thermistor / thermocouple issues, the issue i was having with this board was that when heating it up it would take for ever to go from 180 to 200, and at 200 it would start to smoke and burn the filament. Like it thought it was at 300 instead of 200. I am using a RTD PT 1000 2 wire.) I didn’t want to wait for the system to shut down for the klippy log.

With my old sb2240 The error no longer appears, however i have the same issue with the thermistor/thermocouple.
So is it that the new SB2240 is no good? Weird that each board has it’s own issue!

klippy (14).log (1.2 MB)
I commented out the adxl, same issue.

The ADXL is built in to the SB240. I guess i could comment it out.

I can’t find him on the schematic.

I commented out the adxl, same issue.

Well, the whole point was if ADXL is implemented in a way to be the only device on the bus, which can be true if it is external.
If you did read the ADXL documentation above, you can notice, that it will behave in not compatible way if it is connected, not if you are using it.

So, commenting it out changes nothing.

With my old sb2240 The error no longer appears, however i have the same issue with the thermistor/thermocouple.

Unfortunately, Then I think, I can’t provide additional help here.
As you noticed, if the same config with the same firmware, works on the different board, then it means something is probably wrong with the board.

??? It’s on the first page of the schematic in the bottom right hand corner:

@Trev could you share how you’ve wired your SB2240? Please explain both CAN and Power along with all the jumpers you’ve installed.

Are you sure that you’ve configured your new board exactly the same way as your old board?

In my experience, when you have a TMC communications error with a TMC Chip built into the board and everything else working normally, it’s due to a power issue.

1 Like

??? It’s on the first page of the schematic in the bottom right hand corner:

“Woe is me”, I literally overlooked it :smiley:
My bad.

1 Like






I have the SB2240 powered from the U2C through the Can hi and Can low, and the positive & ground running to my LSR 350-24. ( Black & White wire. White is live)

Which i have just installed almost as these issues began to happen. I did not check the output the new UPS, i recently did check it, it was less then 24 volts. might i have wrecked something? I have it at 24 volts now, i tried heating up and extruding, but same result.

Jumpers on the SB2240
I have a small fan in V_4W 5 VoltFan to cool the SB2240
i have the tool head fan V_FAN1 24 volt
and the part cooling fan V_FAN2 24 volt
The config is the same as i had posted earlier.

Thank you for the help.

I can see the U2C connections in image _184815 but I can’t make out the CAN connections on the SB2240.

From what you’re writing, you are running four wires from the U2C (24V/GND and CANH/CANL) to the SB2240?

Can you show the cable and the connections at the SB2240?

Can I ask why are you using a U2C adapter when there is a CAN bridge on the Octopus?

You are right. All the SB 2240 wiring is connected to the U2C Via can cable. The U2C is then ran by type c usb to the raspberry pi.
When I first bought the printer un assembled, I found a youtube channel called Old Guy Melts Plastic, From the bench series. He mentionedthat was better to have the octopus control the motors and the U2C control the can adapters. I had no clue what I was doing so I just followed what he did in order to upgrade to the sb2240.

(attachments)



Your CAN wiring into the SB2240 looks good.

I have no idea why the “Old Guy” says that a separate U2C should be used rather than the USB-CAN bridge on the Octopus.

Anyway, the particulars of the CAN connection really aren’t that relevant to this discussion - what I was looking for if you have a USB AND a CAN interface in place which could result in some power problems that could mean the TMC2240 on the SB2240 was not getting appropriate power.

Since it looks like you are powering through the just the Microfit connector then I think you’ve got a bum SB2240 board - sorry, that’s really annoying as you are replacing another defective one.

I’d suggest that you contact BTT and tell them your tale of woe (including how long you’ve been down) and see what they will do for you. While you’re waiting, I think you’re going to have to order another replacement board.

Sorry.

No need to apologize. If all I have to do is throw more money at it I’m a happy camper, i have more money then i have experience with this printer. Chuckles. Thanks so much for your help. I will get another replacement and post my findings.

1 Like

This topic was automatically closed 60 days after the last reply. New replies are no longer allowed.