ADVERTISEMENT

marlin firmware.zip

Jak zaprogramować STM32F103VET6 na płycie MKS Robin Nano 1.2?

I jeszcze wersja: https://github.com/makerbase-mks/MKS-Robin-Nano 1009030


Download file - link to post
  • marlin firmware.zip
    • platformio.ini
    • .vscode
      • extensions.json
      • launch.json
      • c_cpp_properties.json
    • README.md
    • LICENSE
    • mks_bin
      • Robin TFT
        • Robin.bin
      • Robin Lite3 LCD2004
        • mksLite3.bin
      • Robin Pro LCD2004
        • Robin_pro.bin
      • Robin Mini TFT
        • Robin_mini.bin
      • Robin Pro TFT
        • Robin_pro.bin
      • Robin Nano TFT
        • Robin_nano.bin
      • Robin Pro LCD12864
        • Robin_pro.bin
      • Robin Lite3 LCD12864B and MINI12864
        • mksLite3.bin
      • Robin Lite3 LCD12864
        • mksLite3.bin
    • Marlin
      • Configuration_adv.h
      • src
        • feature
          • twibus.cpp
          • babystep.cpp
          • snmm.h
          • joystick.cpp
          • runout.cpp
          • controllerfan.cpp
          • binary_protocol.h
          • baricuda.h
          • touch
            • xpt2046.h
            • xpt2046.cpp
          • emergency_parser.cpp
          • Max7219_Debug_LEDs.cpp
          • babystep.h
          • bltouch.cpp
          • bltouch.h
          • fwretract.h
          • fanmux.h
          • cancel_object.h
          • backlash.h
          • closedloop.h
          • solenoid.cpp
          • I2CPositionEncoder.h
          • bedlevel
            • ubl
              • ubl.h
              • ubl.cpp
              • ubl_G29.cpp
              • ubl_motion.cpp
            • mbl
              • mesh_bed_leveling.cpp
              • mesh_bed_leveling.h
            • abl
              • abl.h
              • abl.cpp
            • bedlevel.h
            • bedlevel.cpp
          • fwretract.cpp
          • mixing.cpp
          • twibus.h
          • caselight.h
          • power_loss_recovery.h
          • pause.cpp
          • power.cpp
          • spindle_laser.cpp
          • prusa_MMU2
            • mmu2.h
            • serial-protocol.md
            • mmu2.cpp
          • host_actions.h
          • I2CPositionEncoder.cpp
          • mixing.h
          • Max7219_Debug_LEDs.h
          • cancel_object.cpp
          • tmc_util.h
          • emergency_parser.h
          • baricuda.cpp
          • joystick.h
          • binary_protocol.cpp
          • snmm.cpp
          • dac
            • stepper_dac.cpp
            • stepper_dac.h
            • dac_dac084s085.h
            • dac_mcp4728.cpp
            • dac_mcp4728.h
            • dac_dac084s085.cpp
          • solenoid.h
          • host_actions.cpp
          • filwidth.h
          • power.h
          • pause.h
          • tmc_util.cpp
          • fanmux.cpp
          • caselight.cpp
          • closedloop.cpp
          • backlash.cpp
          • controllerfan.h
          • power_loss_recovery.cpp
          • digipot
            • digipot.h
            • digipot_mcp4018.cpp
            • digipot_mcp4451.cpp
          • filwidth.cpp
          • runout.h
          • spindle_laser.h
          • leds
            • neopixel.h
            • neopixel.cpp
            • blinkm.cpp
            • printer_event_leds.h
            • pca9632.cpp
            • tempstat.cpp
            • leds.cpp
            • leds.h
            • blinkm.h
            • tempstat.h
            • printer_event_leds.cpp
            • pca9632.h
        • Marlin.h
        • sd
          • cardreader.cpp
          • SdFile.cpp
          • SdInfo.h
          • SdFatUtil.h
          • cardreader.h
          • SdFatUtil.cpp
          • SdFile.h
          • Sd2Card.cpp
          • SdVolume.cpp
          • Sd2Card.h
          • Sd2Card_sdio.h
          • SdBaseFile.cpp
          • usb_flashdrive
            • lib-uhs2
              • Usb.h
              • macros.h
              • max3421e.h
              • parsetools.cpp
              • settings.h
              • confdescparser.h
              • message.h
              • masstorage.h
              • message.cpp
              • printhex.h
              • parsetools.h
              • masstorage.cpp
              • usbhost.h
              • UsbCore.h
              • usbhost.cpp
              • Usb.cpp
              • hexdump.h
              • usb_ch9.h
              • address.h
            • Sd2Card_FlashDrive.cpp
            • Sd2Card_FlashDrive.h
            • lib-uhs3
              • UHS_host
                • UHS_usb_ch9.h
                • UHS_hexdump.h
                • UHS_printhex.h
                • UHS_settings.h
                • UHS_UNOFFICIAL_IDs.h
                • UHS_UsbCore.h
                • UHS_host.h
                • UHS_BULK_STORAGE
                  • UHS_BULK_STORAGE_INLINE.h
                  • UHS_BULK_STORAGE.h
                  • UHS_SCSI.h
                • UHS_message.h
                • UHS_address.h
                • UHS_printf_HELPER.h
                • UHS_usbhost.h
                • UHS_host_INLINE.h
                • UHS_macros.h
                • macro_logic.h
                • USB_HOST_SHIELD
                  • USB_HOST_SHIELD_INLINE.h
                  • UHS_max3421e.h
                  • USB_HOST_SHIELD.h
                • UHS_util_INLINE.h
                • UHS_USB_IDs.h
              • dyn_SWI
                • dyn_SWI.h
                • SWI_INLINE.h
          • SdFatConfig.h
          • SdFatStructs.h
          • SdBaseFile.h
          • SdVolume.h
        • module
          • temperature.cpp
          • configuration_store.cpp
          • planner_bezier.cpp
          • tool_change.cpp
          • scara.h
          • stepper
            • TMC26X.cpp
            • indirection.h
            • L6470.cpp
            • TMC26X.h
            • L6470.h
            • indirection.cpp
            • trinamic.cpp
            • trinamic.h
          • probe.cpp
          • speed_lookuptable.h
          • planner_bezier.h
          • thermistor
            • thermistor_1010.h
            • thermistor_998.h
            • thermistors.h
            • thermistor_147.h
            • thermistor_11.h
            • thermistor_512.h
            • thermistor_51.h
            • thermistor_71.h
            • thermistor_5.h
            • thermistor_1047.h
            • thermistor_55.h
            • thermistor_201.h
            • thermistor_501.h
            • thermistor_52.h
            • thermistor_7.h
            • thermistor_67.h
            • thermistor_13.h
            • thermistor_9.h
            • thermistor_3.h
            • thermistor_18.h
            • thermistor_2.h
            • thermistor_8.h
            • thermistor_10.h
            • thermistor_66.h
            • thermistor_12.h
            • thermistor_20.h
            • thermistor_6.h
            • thermistor_331.h
            • thermistor_1.h
            • thermistor_666.h
            • thermistor_999.h
            • thermistor_15.h
            • thermistor_99.h
            • thermistor_61.h
            • thermistor_110.h
            • thermistor_4.h
            • thermistor_75.h
            • thermistor_60.h
            • thermistor_70.h
          • printcounter.h
          • delta.cpp
          • printcounter.cpp
          • motion.cpp
          • endstops.h
          • servo.h
          • temperature.h
          • probe.h
          • planner.h
          • servo.cpp
          • stepper.h
          • scara.cpp
          • endstops.cpp
          • configuration_store.h
          • motion.h
          • tool_change.h
          • stepper.cpp
          • delta.h
          • planner.cpp
        • HAL
          • HAL_STM32_F4_F7
            • HAL.h
            • STM32F7
              • README.md
              • TMC2660.cpp
              • TMC2660.h
              • timers.cpp
              • timers.h
            • README.md
            • persistent_store_eeprom.cpp
            • fastio.h
            • Servo.cpp
            • eeprom_emul.h
            • eeprom_emul.cpp
            • inc
              • Conditionals_adv.h
              • Conditionals_LCD.h
              • Conditionals_post.h
              • SanityCheck.h
            • STM32F4
              • README.md
              • timers.cpp
              • timers.h
            • watchdog.h
            • pinsDebug.h
            • HAL_SPI.cpp
            • spi_pins.h
            • Servo.h
            • endstop_interrupts.h
            • EmulatedEeprom.cpp
            • watchdog.cpp
            • HAL.cpp
            • timers.h
          • HAL_STM32F1
            • HAL.h
            • msc_sd.cpp
            • sdio.h
            • onboard_sd.cpp
            • sdio.cpp
            • README.md
            • persistent_store_eeprom.cpp
            • fastio.h
            • build_flags.py
            • Servo.cpp
            • SPI.cpp
            • dogm
              • u8g_com_stm32duino_fsmc.cpp
              • u8g_com_stm32duino_swspi.cpp
            • persistent_store_sdcard.cpp
            • persistent_store_flash.cpp
            • onboard_sd.h
            • maple_win_usb_driver
              • maple_serial.inf
            • inc
              • Conditionals_adv.h
              • Conditionals_LCD.h
              • Conditionals_post.h
              • SanityCheck.h
            • timers.cpp
            • watchdog.h
            • pinsDebug.h
            • SoftwareSerial.cpp
            • HAL_SPI.cpp
            • spi_pins.h
            • Servo.h
            • endstop_interrupts.h
            • msc_sd.h
            • watchdog.cpp
            • HAL.cpp
            • SoftwareSerial.h
            • timers.h
            • SPI.h
          • HAL.h
          • HAL_ESP32
            • HAL.h
            • web.h
            • wifi.cpp
            • i2s.h
            • fastio.h
            • wifi.h
            • Servo.cpp
            • ota.h
            • spiffs.cpp
            • WebSocketSerial.h
            • inc
              • Conditionals_adv.h
              • Conditionals_LCD.h
              • Conditionals_post.h
              • SanityCheck.h
            • timers.cpp
            • FlushableHardwareSerial.cpp
            • servotimers.h
            • watchdog.h
            • i2s.cpp
            • HAL_SPI.cpp
            • spi_pins.h
            • WebSocketSerial.cpp
            • Servo.h
            • endstop_interrupts.h
            • persistent_store_spiffs.cpp
            • web.cpp
            • watchdog.cpp
            • HAL.cpp
            • timers.h
            • spiffs.h
            • ota.cpp
            • FlushableHardwareSerial.h
          • HAL_LPC1768
            • HAL.h
            • include
              • digipot_mcp4451_I2C_routines.h
              • digipot_mcp4451_I2C_routines.c
              • SPI.h
            • upload_extra_script.py
            • fastio.h
            • HAL_spi.cpp
            • main.cpp
            • persistent_store_sdcard.cpp
            • persistent_store_flash.cpp
            • inc
              • Conditionals_adv.h
              • Conditionals_LCD.h
              • Conditionals_post.h
              • SanityCheck.h
            • timers.cpp
            • usb_serial.cpp
            • u8g
              • LCD_pin_routines.h
              • LCD_defines.h
              • u8g_com_HAL_LPC1768_hw_spi.cpp
              • u8g_com_HAL_LPC1768_ssd_sw_i2c.cpp under construction
              • u8g_com_HAL_LPC1768_st7920_sw_spi.cpp
              • LCD_I2C_routines.h
              • LCD_pin_routines.c
              • u8g_com_HAL_LPC1768_sw_spi.cpp
              • u8g_com_HAL_LPC1768_st7920_hw_spi.cpp
              • LCD_I2C_routines.cpp
              • u8g_com_HAL_LPC1768_ssd_hw_i2c.cpp
              • LCD_delay.h
            • MarlinSerial.h
            • DebugMonitor.cpp
            • watchdog.h
            • pinsDebug.h
            • spi_pins.h
            • persistent_store_api.h
            • Servo.h
            • endstop_interrupts.h
            • MarlinSerial.cpp
            • watchdog.cpp
            • HAL.cpp
            • timers.h
            • fast_pwm.cpp
            • win_usb_driver
              • lpc176x_usb_driver.inf
          • HAL_STM32
            • HAL.h
            • README.md
            • fastio.h
            • pinsDebug_STM32GENERIC.h
            • Servo.cpp
            • persistent_store_sdcard.cpp
            • pins_Xref.h
            • fastio.cpp
            • inc
              • Conditionals_adv.h
              • Conditionals_LCD.h
              • Conditionals_post.h
              • SanityCheck.h
            • timers.cpp
            • pinsDebug_STM32duino.h
            • watchdog.h
            • pinsDebug.h
            • SoftwareSerial.cpp
            • HAL_SPI.cpp
            • spi_pins.h
            • Servo.h
            • endstop_interrupts.h
            • watchdog.cpp
            • HAL.cpp
            • SoftwareSerial.h
            • persistent_store_impl.cpp
            • timers.h
          • HAL_DUE
            • HAL.h
            • InterruptVectors.cpp
            • MarlinSerialUSB.cpp
            • persistent_store_eeprom.cpp
            • fastio.h
            • Servo.cpp
            • dogm
              • u8g_com_HAL_DUE_sw_spi_shared.cpp
              • u8g_com_HAL_DUE_sw_spi_shared.h
              • u8g_com_HAL_DUE_shared_hw_spi.cpp
              • u8g_com_HAL_DUE_sw_spi.cpp
              • u8g_com_HAL_DUE_st7920_sw_spi.cpp
            • Tone.cpp
            • inc
              • Conditionals_adv.h
              • Conditionals_LCD.h
              • Conditionals_post.h
              • SanityCheck.h
            • timers.cpp
            • InterruptVectors.h
            • fastio
              • G2_pins.h
              • G2_PWM.cpp
              • G2_PWM.h
            • EepromEmulation.cpp
            • usb
              • arduino_due_x.h
              • udi_msc.h
              • udi.h
              • udd.h
              • conf_clock.h
              • udc.h
              • uotghs_otg.h
              • pll.h
              • udi_cdc_conf.h
              • usb_task.c
              • stringz.h
              • usb_task.h
              • udi_cdc.c
              • osc.h
              • sysclk.h
              • preprocessor.h
              • spc_protocol.h
              • ctrl_access.h
              • uotghs_device_due.h
              • sd_mmc_spi_mem.h
              • usb_protocol_msc.h
              • ctrl_access.c
              • udi_cdc.h
              • tpaste.h
              • usb_protocol_cdc.h
              • conf_usb.h
              • udc.c
              • usb_protocol.h
              • udc_desc.h
              • udi_cdc_desc.c
              • compiler.h
              • udi_msc.c
              • uotghs_device_due.c
              • udi_composite_desc.c
              • conf_access.h
              • sbc_protocol.h
              • sd_mmc_spi_mem.cpp
              • sysclk.c
              • genclk.h
              • mrepeat.h
            • MarlinSerial.h
            • DebugMonitor.cpp
            • watchdog.h
            • pinsDebug.h
            • HAL_SPI.cpp
            • spi_pins.h
            • endstop_interrupts.h
            • ServoTimers.h
            • MarlinSerial.cpp
            • MarlinSerialUSB.h
            • watchdog.cpp
            • HAL.cpp
            • timers.h
          • HAL_TEENSY31_32
            • HAL.h
            • fastio.h
            • Servo.cpp
            • inc
              • Conditionals_adv.h
              • Conditionals_LCD.h
              • Conditionals_post.h
              • SanityCheck.h
            • timers.cpp
            • watchdog.h
            • pinsDebug.h
            • HAL_SPI.cpp
            • spi_pins.h
            • Servo.h
            • endstop_interrupts.h
            • watchdog.cpp
            • HAL.cpp
            • persistent_store_impl.cpp
            • timers.h
          • HAL_SAMD51
            • HAL.h
            • persistent_store_eeprom.cpp
            • fastio.h
            • Servo.cpp
            • inc
              • Conditionals_adv.h
              • Conditionals_LCD.h
              • Conditionals_post.h
              • SanityCheck.h
            • SAMD51.h
            • timers.cpp
            • MarlinSerial_AGCM4.h
            • watchdog.h
            • pinsDebug.h
            • HAL_SPI.cpp
            • spi_pins.h
            • endstop_interrupts.h
            • ServoTimers.h
            • watchdog.cpp
            • HAL.cpp
            • timers.h
            • MarlinSerial_AGCM4.cpp
          • HAL_TEENSY35_36
            • HAL.h
            • persistent_store_eeprom.cpp
            • fastio.h
            • Servo.cpp
            • inc
              • Conditionals_adv.h
              • Conditionals_LCD.h
              • Conditionals_post.h
              • SanityCheck.h
            • timers.cpp
            • watchdog.h
            • pinsDebug.h
            • HAL_SPI.cpp
            • spi_pins.h
            • Servo.h
            • endstop_interrupts.h
            • watchdog.cpp
            • HAL.cpp
            • timers.h
          • platforms.h
          • HAL_AVR
            • pinsDebug_plus_70.h
            • HAL.h
            • pinsDebug_Teensyduino.h
            • persistent_store_eeprom.cpp
            • fastio.h
            • Servo.cpp
            • fastio.cpp
            • inc
              • Conditionals_adv.h
              • Conditionals_LCD.h
              • Conditionals_post.h
              • SanityCheck.h
            • fastio
              • fastio_AT90USB.h
              • fastio_1280.h
              • fastio_1281.h
              • fastio_644.h
              • fastio_168.h
            • u8g_com_HAL_AVR_sw_spi.cpp
            • MarlinSerial.h
            • watchdog.h
            • pinsDebug.h
            • HAL_SPI.cpp
            • spi_pins.h
            • math.h
            • endstop_interrupts.h
            • ServoTimers.h
            • MarlinSerial.cpp
            • watchdog.cpp
            • HAL.cpp
            • fast_pwm.cpp
          • HAL_LINUX
            • HAL.h
            • include
              • pinmapping.cpp
              • Arduino.h
              • serial.h
              • pinmapping.h
            • fastio.h
            • main.cpp
            • arduino.cpp
            • inc
              • Conditionals_adv.h
              • Conditionals_LCD.h
              • Conditionals_post.h
              • SanityCheck.h
            • timers.cpp
            • hardware
              • Heater.cpp
              • IOLoggerCSV.cpp
              • IOLoggerCSV.h
              • Timer.h
              • Clock.cpp
              • Clock.h
              • Heater.h
              • Timer.cpp
              • Gpio.h
              • LinearAxis.h
              • LinearAxis.cpp
              • Gpio.cpp
            • watchdog.h
            • pinsDebug.h
            • spi_pins.h
            • servo_private.h
            • watchdog.cpp
            • HAL.cpp
            • persistent_store_impl.cpp
            • timers.h
          • shared
            • eeprom_spi.cpp
            • eeprom_i2c.cpp
            • HAL_ST7920.h
            • servo.h
            • Marduino.h
            • servo.cpp
            • MarlinSerial.h
            • HAL_SPI.h
            • backtrace
              • unwarmmem.cpp
              • unwarm.h
              • unwarm.cpp
              • unwmemaccess.h
              • unwinder.h
              • unwarm_thumb.cpp
              • unwinder.cpp
              • unwarmbytab.h
              • backtrace.h
              • unwarmmem.h
              • unwarm_arm.cpp
              • unwarmbytab.cpp
              • backtrace.cpp
              • unwmemaccess.cpp
            • servo_private.h
            • persistent_store_api.h
            • persistent_store_api.cpp
            • HAL_spi_L6470.cpp
            • math_32bit.h
            • Delay.h
        • Marlin.cpp
        • gcode
          • host
            • M114.cpp
            • M876.cpp
            • M110.cpp
            • M113.cpp
            • M118.cpp
            • M119.cpp
            • M16.cpp
            • M115.cpp
          • feature
            • clean
              • G12.cpp
            • runout
              • M412.cpp
            • macro
              • M810-M819.cpp
            • L6470
              • M906.cpp
              • M916-918.cpp
              • M122.cpp
            • fwretract
              • M207-M209.cpp
              • G10_G11.cpp
            • mixing
              • M163-M165.cpp
              • M166.cpp
            • cancel
              • M486.cpp
            • caselight
              • M355.cpp
            • prusa_MMU2
              • M403.cpp
            • camera
              • M240.cpp
            • baricuda
              • M126-M129.cpp
            • filwidth
              • M404-M407.cpp
            • advance
              • M900.cpp
            • digipot
              • M907-M910.cpp
            • i2c
              • M260_M261.cpp
            • powerloss
              • M1000.cpp
              • M413.cpp
            • trinamic
              • M906.cpp
              • M911-M914.cpp
              • M569.cpp
              • M122.cpp
            • leds
              • M7219.cpp
              • M150.cpp
            • pause
              • G27.cpp
              • M701_M702.cpp
              • M125.cpp
              • M600.cpp
              • M603.cpp
          • calibrate
            • M666.cpp
            • G28.cpp
            • M425.cpp
            • G34_M422.cpp
            • M48.cpp
            • G425.cpp
            • M665.cpp
            • M852.cpp
            • M12.cpp
            • M100.cpp
            • G33.cpp
          • gcode.h
          • control
            • M350_M351.cpp
            • M380_M381.cpp
            • M7-M9.cpp
            • T.cpp
            • M17_M18_M84.cpp
            • M3-M5.cpp
            • M108_M112_M410.cpp
            • M999.cpp
            • M211.cpp
            • M42.cpp
            • M226.cpp
            • M111.cpp
            • M605.cpp
            • M400.cpp
            • M120_M121.cpp
            • M80_M81.cpp
            • M997.cpp
            • M280.cpp
            • M85.cpp
          • scara
            • M360-M364.cpp
          • bedlevel
            • ubl
              • G29.cpp
              • M421.cpp
            • mbl
              • G29.cpp
              • M421.cpp
            • abl
              • G29.cpp
              • M421.cpp
            • M420.cpp
            • G42.cpp
            • G26.cpp
          • queue.h
          • stats
            • M75-M78.cpp
            • M31.cpp
          • lcd
            • M300.cpp
            • M250.cpp
            • M73.cpp
            • M145.cpp
            • M117.cpp
            • M0_M1.cpp
          • parser.cpp
          • motion
            • G2_G3.cpp
            • G0_G1.cpp
            • M290.cpp
            • G4.cpp
            • G5.cpp
            • G80.cpp
          • parser.h
          • units
            • G20_G21.cpp
            • M82_M83.cpp
            • M149.cpp
          • config
            • M220.cpp
            • M304.cpp
            • M217.cpp
            • M200-M205.cpp
            • M575.cpp
            • M302.cpp
            • M43.cpp
            • M221.cpp
            • M218.cpp
            • M281.cpp
            • M540.cpp
            • M92.cpp
            • M305.cpp
            • M301.cpp
          • temperature
            • M155.cpp
            • M105.cpp
            • M141_M191.cpp
            • M106_M107.cpp
            • M140_M190.cpp
            • M303.cpp
            • M104_M109.cpp
          • sdcard
            • M28_M29.cpp
            • M30.cpp
            • M33.cpp
            • M23.cpp
            • M524.cpp
            • M34.cpp
            • M24_M25.cpp
            • M21_M22.cpp
            • M26.cpp
            • M20.cpp
            • M32.cpp
            • M928.cpp
            • M27.cpp
          • probe
            • G31_G32.cpp
            • M851.cpp
            • M401_M402.cpp
            • M951.cpp
            • G30.cpp
            • G38.cpp
          • queue.cpp
          • geometry
            • M206_M428.cpp
            • G53-G59.cpp
            • G17-G19.cpp
            • G92.cpp
          • gcode.cpp
          • eeprom
            • M500-M504.cpp
        • lcd
          • HD44780
            • lcdprint_hd44780.cpp
            • ultralcd_HD44780.h
            • ultralcd_HD44780.cpp
          • extui_dgus_lcd.cpp
          • extensible_ui
            • ui_api.cpp
            • lib
              • dgus
                • DGUSDisplay.cpp
                • DGUSVPVariable.h
                • DGUSDisplay.h
                • DGUSDisplayDefinition.cpp
                • DGUSDisplayDefinition.h
              • lulzbot
                • archim2-flash
                  • media_file_reader.cpp
                  • flash_storage.cpp
                  • flash_storage.h
                  • media_file_reader.h
                • language
                  • language_en.h
                  • language.h
                  • language.cpp
                • marlin_events.cpp
                • pin_mappings.h
                • config.h
                • compat.h
                • ftdi_eve_lib
                  • extended
                    • sound_list.h
                    • tiny_timer.cpp
                    • command_processor.h
                    • rgb_t.h
                    • text_box.h
                    • sound_player.h
                    • event_loop.cpp
                    • polygon.h
                    • dl_cache.h
                    • sound_player.cpp
                    • ftdi_extended.h
                    • grid_layout.h
                    • bitmap_info.h
                    • event_loop.h
                    • screen_types.cpp
                    • dl_cache.cpp
                    • screen_types.h
                    • tiny_timer.h
                    • text_box.cpp
                    • unicode
                      • western_char_set.h
                      • unicode.h
                      • standard_char_set.cpp
                      • README.txt
                      • font_bitmaps.cpp
                      • western_char_set.cpp
                      • font_bitmaps.h
                      • font_size_t.cpp
                      • unicode.cpp
                      • standard_char_set.h
                      • western_char_set_bitmap_31.h
                      • font_size_t.h
                      • font_bitmaps
                        • western_char_set_bitmap_31.png
                        • western_char_set_bitmap_31.svg
                        • romfont_31.pbm
                    • command_processor.cpp
                  • README.md
                  • LICENSE.txt
                  • compat.h
                  • ftdi_eve_lib.h
                  • basic
                    • registers_ft800.h
                    • ftdi_basic.h
                    • constants.h
                    • spi.cpp
                    • registers_ft810.h
                    • boards.h
                    • commands.cpp
                    • resolutions.h
                    • spi.h
                    • commands.h
                    • display_list.h
                  • extras
                    • circular_progress.h
                    • bitmap2cpp.py
                    • poly_ui.h
                    • svg2cpp.py
                • screens
                  • endstop_state_screen.cpp
                  • confirm_user_request_alert_box.cpp
                  • alert_dialog_box.cpp
                  • display_tuning_screen.cpp
                  • temperature_screen.cpp
                  • save_settings_dialog_box.cpp
                  • confirm_auto_calibration_dialog_box.cpp
                  • move_axis_screen.cpp
                  • touch_registers_screen.cpp
                  • main_menu.cpp
                  • filament_menu.cpp
                  • developer_menu.cpp
                  • kill_screen.cpp
                  • bio_confirm_home_xyz.cpp
                  • confirm_start_print_dialog_box.cpp
                  • change_filament_screen.cpp
                  • default_acceleration_screen.cpp
                  • advanced_settings_menu.cpp
                  • files_screen.cpp
                  • feedrate_percent_screen.cpp
                  • interface_settings_screen.cpp
                  • base_screen.cpp
                  • media_player_screen.cpp
                  • dialog_box_base_class.cpp
                  • interface_sounds_screen.cpp
                  • bio_main_menu.cpp
                  • bio_printing_dialog_box.cpp
                  • junction_deviation_screen.cpp
                  • linear_advance_screen.cpp
                  • bio_confirm_home_e.cpp
                  • status_screen.cpp
                  • stress_test_screen.cpp
                  • nozzle_offsets_screen.cpp
                  • bio_printer_ui_landscape.h
                  • stepper_current_screen.cpp
                  • max_velocity_screen.cpp
                  • widget_demo_screen.cpp
                  • bio_tune_menu.cpp
                  • tune_menu.cpp
                  • statistics_screen.cpp
                  • max_acceleration_screen.cpp
                  • boot_screen.cpp
                  • bio_advanced_settings.cpp
                  • z_offset_screen.cpp
                  • confirm_abort_print_dialog_box.cpp
                  • restore_failsafe_dialog_box.cpp
                  • language_menu.cpp
                  • screens.h
                  • confirm_erase_flash_dialog_box.cpp
                  • string_format.cpp
                  • jerk_screen.cpp
                  • steps_screen.cpp
                  • base_numeric_adjustment_screen.cpp
                  • touch_calibration_screen.cpp
                  • screen_data.h
                  • about_screen.cpp
                  • screens.cpp
                  • bio_status_screen.cpp
                  • lock_screen.cpp
                  • filament_runout_screen.cpp
                  • nudge_nozzle_screen.cpp
                  • string_format.h
                  • stepper_bump_sensitivity_screen.cpp
                  • spinner_dialog_box.cpp
                  • backlash_compensation_screen.cpp
                  • bio_printer_ui_portrait.h
                • theme
                  • fonts.h
                  • colors.h
                  • bitmaps.h
                  • sounds.h
                  • sounds.cpp
                  • theme.h
                  • marlin_bootscreen_portrait.h
                  • marlin_bootscreen_landscape.h
            • ui_api.h
          • lcdprint.h
          • extui_example.cpp
          • fontutils.h
          • fontutils.cpp
          • thermistornames.h
          • ultralcd.cpp
          • extui_malyan_lcd.cpp
          • dogm
            • u8g_dev_ssd1306_sh1106_128x64_I2C.cpp
            • status_screen_DOGM.cpp
            • dogm_Statusscreen.h
            • u8g_dev_uc1701_mini12864_HAL.cpp
            • ultralcd_st7920_u8glib_rrd_AVR.cpp
            • ultralcd_DOGM.h
            • dogm_Bootscreen.h
            • fontdata
              • langdata_hr.h
              • langdata_ru.h
              • langdata_tr.h
              • langdata_en.h
              • langdata_cz.h
              • fontdata_ISO10646_1.h
              • langdata_jp_kana.h
              • langdata_pt_br.h
              • langdata_ca.h
              • langdata_pt.h
              • langdata_el_gr.h
              • langdata_zh_CN.h
              • langdata_nl.h
              • langdata_pl.h
              • langdata_el.h
              • langdata_fr.h
              • langdata_uk.h
              • langdata_an.h
              • langdata_sk.h
              • langdata_ko_KR.h
              • langdata_it.h
              • langdata_test.h
              • langdata_fi.h
              • langdata_de.h
              • langdata_vi.h
              • langdata_gl.h
              • fontdata_6x9_marlin.h
              • langdata_bg.h
              • langdata_zh_TW.h
              • langdata_da.h
              • langdata_es.h
              • langdata_eu.h
            • u8g_fontutf8.cpp
            • HAL_LCD_class_defines.h
            • status_screen_lite_ST7920.h
            • ultralcd_DOGM.cpp
            • HAL_LCD_com_defines.h
            • ultralcd_st7920_u8glib_rrd_AVR.h
            • u8g_fontutf8.h
            • lcdprint_u8g.cpp
            • u8g_dev_st7920_128x64_HAL.cpp
            • u8g_dev_st7565_64128n_HAL.cpp
            • status_screen_lite_ST7920.cpp
            • u8g_dev_tft_320x240_upscale_from_128x64.cpp
          • language
            • language_zh_CN.h
            • language_ko_KR.h
            • language_hr.h
            • language_tr.h
            • language_es.h
            • language_it.h
            • language_de.h
            • language_eu.h
            • language_bg.h
            • language_ca.h
            • language_an.h
            • language_uk.h
            • language_zh_TW.h
            • language_pt.h
            • language_en.h
            • language_gl.h
            • language_pl.h
            • language_pt_br.h
            • language_el_gr.h
            • language_el.h
            • language_nl.h
            • language_fr.h
            • language_cz.h
            • language_test.h
            • language_da.h
            • language_vi.h
            • language_fi.h
            • language_sk.h
            • language_jp_kana.h
            • language_ru.h
          • lcdprint.cpp
          • menu
            • menu.h
            • menu_configuration.cpp
            • menu_filament.cpp
            • menu_tmc.cpp
            • menu_info.cpp
            • menu_led.cpp
            • menu_bed_leveling.cpp
            • menu_motion.cpp
            • menu_mmu2.h
            • menu_bed_corners.cpp
            • menu_advanced.cpp
            • menu_backlash.cpp
            • menu.cpp
            • game
              • game.cpp
              • invaders.cpp
              • brickout.h
              • types.h
              • snake.h
              • invaders.h
              • maze.h
              • snake.cpp
              • maze.cpp
              • brickout.cpp
              • game.h
            • menu_game.cpp
            • menu_media.cpp
            • menu_job_recovery.cpp
            • menu_addon.h
            • menu_ubl.cpp
            • menu_mmu2.cpp
            • menu_delta_calibrate.cpp
            • menu_temperature.cpp
            • menu_cancelobject.cpp
            • menu_mixer.cpp
            • menu_main.cpp
            • menu_custom.cpp
            • menu_spindle_laser.cpp
            • menu_tune.cpp
          • ultralcd.h
        • inc
          • Conditionals_adv.h
          • Conditionals_LCD.h
          • MarlinConfigPre.h
          • Conditionals_post.h
          • SanityCheck.h
          • MarlinConfig.h
          • Version.h
        • core
          • utility.h
          • types.h
          • macros.h
          • multi_language.h
          • drivers.h
          • utility.cpp
          • millis_t.h
          • serial.cpp
          • boards.h
          • multi_language.cpp
          • language.h
          • serial.h
          • debug_out.h
        • libs
          • numtostr.h
          • buzzer.cpp
          • least_squares_fit.cpp
          • softspi.h
          • circularqueue.h
          • nozzle.cpp
          • hex_print_routines.h
          • crc16.cpp
          • vector_3.cpp
          • L6470
            • 000_l6470_read_me.md
            • L6470_Marlin.h
            • L6470_Marlin.cpp
          • crc16.h
          • hex_print_routines.cpp
          • nozzle.h
          • duration_t.h
          • bresenham.h
          • buzzer.h
          • private_spi.h
          • stopwatch.cpp
          • heatshrink
            • heatshrink_common.h
            • LICENSE
            • heatshrink_decoder.h
            • heatshrink_config.h
            • heatshrink_decoder.cpp
          • vector_3.h
          • stopwatch.h
          • numtostr.cpp
          • least_squares_fit.h
        • pins
          • sam
            • pins_ADSK.h
            • pins_ARCHIM2.h
            • pins_RURAMPS4D_13.h
            • pins_RURAMPS4D_11.h
            • pins_PRINTRBOARD_G2.h
            • pins_RAMPS_DUO.h
            • pins_DUE3DOM.h
            • pins_ULTRATRONICS_PRO.h
            • pins_RAMPS_FD_V1.h
            • pins_ARCHIM1.h
            • pins_ALLIGATOR_R2.h
            • pins_RAMPS4DUE.h
            • pins_RADDS.h
            • pins_RAMPS_SMART.h
            • pins_RAMPS_FD_V2.h
            • pins_DUE3DOM_MINI.h
          • pins.h
          • teensy3
            • pins_TEENSY35_36.h
            • pins_TEENSY31_32.h
          • pinsDebug_list.h
          • stm32
            • pins_MKS_RUMBA32.h
            • pins_BTT_BTT002_V1_0.h
            • pins_JGAURORA_A5S_A1.h
            • pins_MKS_ROBIN_MINI.h
            • pins_FYSETC_CHEETAH_V12.h
            • pins_LERDGE_X.h
            • pins_THE_BORG.h
            • pins_LONGER3D_LK.h
            • pins_MALYAN_M200.h
            • pins_BTT_SKR_E3_DIP.h
            • pins_MKS_ROBIN.h
            • pins_BTT_SKR_MINI_E3_V1_2.h
            • pins_GTM32_PRO_VB.h
            • pins_BTT_SKR_MINI_V1_1.h
            • pins_MKS_ROBIN_LITE.h
            • pins_MKS_ROBIN_PRO.h
            • pins_STM32F1R.h
            • pins_GENERIC_STM32F4.h
            • pins_BLACK_STM32F407VE.h
            • pins_RUMBA32.h
            • pins_MKS_ROBIN_LITE3.h
            • pins_MORPHEUS.h
            • pins_FYSETC_CHEETAH.h
            • pins_BTT_SKR_MINI_E3_V1_0.h
            • pins_BTT_SKR_PRO_V1_1.h
            • pins_STEVAL.h
            • pins_BEAST.h
            • pins_LERDGE_K.h
            • pins_ARMED.h
            • pins_FYSETC_AIO_II.h
            • pins_REMRAM_V1.h
            • pins_BTT_SKR_MINI_E3.h
            • pins_STM3R_MINI.h
            • pins_CHITU3D.h
            • pins_MKS_ROBIN_NANO.h
          • lpc1768
            • pins_BIQU_B300_V1.0.h
            • pins_BIQU_BQ111_A4.h
            • pins_MKS_SBASE.h
            • pins_AZSMZ_MINI.h
            • pins_SELENA_COMPACT.h
            • pins_RAMPS_RE_ARM.h
            • pins_BTT_SKR.h
            • pins_BTT_SKR_V1_3.h
            • pins_MKS_SGEN_L.h
            • pins_GMARSH_X6_REV1.h
            • pins_BTT_SKR_V1_1.h
          • esp32
            • pins_ESP32.h
          • sensitive_pins.h
          • ramps
            • pins_RUMBA.h
            • pins_RIGIDBOARD.h
            • pins_AZTEEG_X3.h
            • pins_FORMBOT_TREX3.h
            • pins_RAMPS_OLD.h
            • pins_RAMPS.h
            • pins_SAINSMART_2IN1.h
            • pins_TRIGORILLA_13.h
            • pins_MKS_BASE_15.h
            • pins_ULTIMAKER.h
            • pins_AZTEEG_X3_PRO.h
            • pins_3DRAG.h
            • pins_FORMBOT_TREX2PLUS.h
            • pins_BAM_DICE_DUE.h
            • pins_MKS_BASE_14.h
            • pins_MKS_BASE_HEROIC.h
            • pins_VORON.h
            • pins_RAMPS_DAGOMA.h
            • pins_FORMBOT_RAPTOR.h
            • pins_RIGIDBOARD_V2.h
            • pins_BQ_ZUM_MEGA_3D.h
            • pins_TT_OSCAR.h
            • pins_ULTIMAKER_OLD.h
            • pins_TRONXY_V3_1_0.h
            • pins_K8400.h
            • pins_DUPLICATOR_I3_PLUS.h
            • pins_BIQU_KFB_2.h
            • pins_FELIX2.h
            • pins_FORMBOT_RAPTOR2.h
            • pins_K8200.h
            • pins_RAMPS_CREALITY.h
            • pins_FYSETC_F6_13.h
            • pins_MKS_GEN_L.h
            • pins_K8800.h
            • pins_MKS_GEN_13.h
            • pins_RAMPS_13.h
            • pins_MKS_GEN_L_V2.h
            • pins_Z_BOLT_X_SERIES.h
            • pins_MAKEBOARD_MINI.h
            • pins_TRIGORILLA_14.h
            • pins_ZRIB_V20.h
            • pins_RAMPS_ENDER_4.h
            • pins_ULTIMAIN_2.h
            • pins_MKS_BASE.h
            • pins_RUMBA_RAISE3D.h
            • pins_RL200.h
            • pins_RAMPS_PLUS.h
            • pins_TANGO.h
          • rambo
            • pins_SCOOVO_X9H.h
            • pins_EINSY_RETRO.h
            • pins_EINSY_RAMBO.h
            • pins_RAMBO.h
            • pins_MINIRAMBO.h
          • linux
            • pins_RAMPS_LINUX.h
          • pinsDebug.h
          • lpc1769
            • pins_COHESION3D_REMIX.h
            • pins_AZTEEG_X5_MINI_WIFI.h
            • pins_COHESION3D_MINI.h
            • pins_TH3D_EZBOARD.h
            • pins_AZTEEG_X5_MINI.h
            • pins_AZTEEG_X5_GT.h
            • pins_SMOOTHIEBOARD.h
            • pins_MKS_SGEN.h
          • sanguino
            • pins_MELZI_TRONXY.h
            • pins_SANGUINOLOLU_11.h
            • pins_AZTEEG_X1.h
            • pins_SANGUINOLOLU_12.h
            • pins_MELZI_MAKR3D.h
            • pins_GEN7_14.h
            • pins_GEN6_DELUXE.h
            • pins_GEN7_13.h
            • pins_GEN7_CUSTOM.h
            • pins_GEN7_12.h
            • pins_ANET_10.h
            • pins_OMCA.h
            • pins_MELZI_MALYAN.h
            • pins_OMCA_A.h
            • pins_GEN6.h
            • pins_GEN3_PLUS.h
            • pins_SETHI.h
            • pins_MELZI.h
            • pins_MELZI_CREALITY.h
            • pins_STB_11.h
            • pins_GEN3_MONOLITHIC.h
          • mega
            • pins_EINSTART-S.h
            • pins_MINITRONICS.h
            • pins_GT2560_V3_A20.h
            • pins_MEGACONTROLLER.h
            • pins_HJC2560C_REV2.h
            • pins_OVERLORD.h
            • pins_MEGATRONICS_2.h
            • pins_GT2560_REV_A.h
            • pins_CHEAPTRONIC.h
            • pins_MEGATRONICS.h
            • pins_WANHAO_ONEPLUS.h
            • pins_LEAPFROG.h
            • pins_GT2560_REV_A_PLUS.h
            • pins_CNCONTROLS_12.h
            • pins_CNCONTROLS_15.h
            • pins_ELEFU_3.h
            • pins_CHEAPTRONICv2.h
            • pins_SILVER_GATE.h
            • pins_MIGHTYBOARD_REVE.h
            • pins_GT2560_V3.h
            • pins_CNCONTROLS_11.h
            • pins_GT2560_V3_MC2.h
            • pins_MEGATRONICS_3.h
          • teensy2
            • pins_PRINTRBOARD.h
            • pins_SAV_MKI.h
            • pins_5DPRINT.h
            • pins_BRAINWAVE.h
            • pins_BRAINWAVE_PRO.h
            • pins_PRINTRBOARD_REVF.h
            • pins_TEENSY2.h
            • pins_TEENSYLU.h
      • Makefile
      • Configuration.h
      • Marlin.ino
      • Version.h
    • Array
    • .gitattributes
    • process-palette.json
    • docs
      • Bresenham.md
    • .circleci
      • config.yml
    • config
      • default
        • Configuration_adv.h
        • Configuration.h
      • examples
        • Infitary
          • i3-M508
            • Configuration_adv.h
            • Configuration.h
        • Dagoma
          • Disco Ultimate
            • Configuration_adv.h
            • Configuration.h
        • Malyan
          • M200
            • Configuration_adv.h
            • README.md
            • Configuration.h
          • M150
            • Configuration_adv.h
            • README.md
            • _Bootscreen.h
            • Configuration.h
        • Formbot
          • T_Rex_3
            • Configuration_adv.h
            • _Statusscreen.h
            • _Bootscreen.h
            • Configuration.h
          • Raptor
            • Configuration_adv.h
            • _Statusscreen.h
            • _Bootscreen.h
            • Configuration.h
          • T_Rex_2+
            • Configuration_adv.h
            • _Statusscreen.h
            • _Bootscreen.h
            • Configuration.h
        • Felix
          • DUAL
            • Configuration_adv.h
            • README.md
            • Configuration.h
          • Single
            • Configuration_adv.h
            • README.md
            • Configuration.h
        • Tronxy
          • X5S
            • Configuration.h
          • X1
            • Configuration.h
          • X3A
            • Configuration_adv.h
            • Configuration.h
          • XY100
            • Configuration.h
          • X5S-2E
            • Configuration_adv.h
            • Configuration.h
        • 3DFabXYZ
          • Migbot
            • Configuration_adv.h
            • Readme.md
            • Configuration.h
        • RepRapWorld
          • Megatronics
            • Configuration.h
        • FlashForge
          • CreatorPro
            • Configuration_adv.h
            • Configuration.h
            • CuraSettings.txt
        • BQ
          • Hephestos
            • Configuration_adv.h
            • Configuration.h
          • WITBOX
            • Configuration_adv.h
            • Configuration.h
          • Hephestos_2
            • Configuration_adv.h
            • README.md
            • _Bootscreen.h
            • Configuration.h
        • HMS434
          • Configuration_adv.h
          • Configuration.h
        • FYSETC
          • Cheetah 1.2
            • BLTouch
              • Configuration_adv.h
              • Configuration.h
            • base
              • Configuration_adv.h
              • Configuration.h
          • Cheetah
            • BLTouch
              • Configuration_adv.h
              • Configuration.h
            • base
              • Configuration_adv.h
              • Configuration.h
          • AIO_II
            • Configuration_adv.h
            • Configuration.h
          • F6_13
            • Configuration_adv.h
            • Configuration.h
        • MakerParts
          • Configuration_adv.h
          • _Bootscreen.h
          • Configuration.h
        • TinyBoy2
          • Configuration_adv.h
          • Configuration.h
        • EVNOVO (Artillery)
          • Sidewinder X1
            • Configuration_adv.h
            • _Bootscreen.h
            • Configuration.h
        • WASP
          • PowerWASP
            • Configuration_adv.h
            • README.md
            • Configuration.h
        • makibox
          • Configuration_adv.h
          • Configuration.h
        • UltiMachine
          • Archim2
            • Configuration_adv.h
            • Configuration.h
          • Archim1
            • Configuration_adv.h
            • Configuration.h
        • RapideLite
          • RL200
            • Configuration_adv.h
            • Configuration.h
        • wt150
          • Configuration_adv.h
          • Configuration.h
        • Wanhao
          • Duplicator i3 Mini
            • Configuration_adv.h
            • _Bootscreen.h
            • Configuration.h
          • Duplicator 6
            • Configuration_adv.h
            • Configuration.h
          • Duplicator i3 2.1
            • Configuration_adv.h
            • README.md
            • _Bootscreen.h
            • Configuration.h
            • Chippy_Bootscreen.h
        • Cartesio
          • Configuration_adv.h
          • _Bootscreen.h
          • Configuration.h
        • gCreate
          • gMax1.5+
            • Configuration_adv.h
            • _Bootscreen.h
            • Configuration.h
        • ADIMLab
          • Gantry v2
            • Configuration_adv.h
            • _Bootscreen.h
            • Configuration.h
          • Gantry v1
            • Configuration_adv.h
            • _Bootscreen.h
            • Configuration.h
        • Tevo
          • Michelangelo
            • Configuration_adv.h
            • _Bootscreen.h
            • Configuration.h
          • Tornado
            • _Bootscreen.h
            • V1 (MKS Base)
              • Configuration_adv.h
              • Configuration.h
            • V2 (MKS GEN-L)
              • Configuration_adv.h
              • Configuration.h
          • Tarantula Pro
            • Configuration_adv.h
            • _Bootscreen.h
            • Configuration.h
        • STM32
          • stm32f103ret6
            • Configuration.h
          • Black_STM32F407VET6
            • Configuration_adv.h
            • Configuration.h
          • STM32F4
            • Configuration.h
          • STM32F103RE
            • Configuration.h
        • RigidBot
          • Configuration_adv.h
          • Configuration.h
        • delta
          • kossel_pro
            • README.md
            • Configuration.h
          • generic
            • Configuration_adv.h
            • Configuration.h
          • kossel_xl
            • Configuration_adv.h
            • README.md
            • Configuration.h
          • Tevo Little Monster
            • Configuration_adv.h
            • Configuration.h
          • FLSUN
            • kossel
              • Configuration_adv.h
              • Configuration.h
            • auto_calibrate
              • Configuration_adv.h
              • Configuration.h
            • kossel_mini
              • Configuration_adv.h
              • Configuration.h
          • Anycubic
            • Kossel
              • Configuration_adv.h
              • README.md
              • Configuration.h
              • images
                • Version1Probe.jpg
                • Version2Probe.jpg
          • Hatchbox_Alpha
            • Configuration.h
          • Geeetech
            • Rostock 301
              • Configuration_adv.h
              • Configuration.h
          • MKS
            • SBASE
              • Configuration_adv.h
              • Configuration.h
              • RRD Full Graphic Smart Controller.md
          • Dreammaker
            • Overlord_Pro
              • Configuration_adv.h
              • _Bootscreen.h
              • Configuration.h
            • Overlord
              • Configuration_adv.h
              • _Bootscreen.h
              • Configuration.h
          • kossel_mini
            • Configuration_adv.h
            • Configuration.h
        • RepRapPro
          • Huxley
            • Configuration.h
        • tvrrug
          • Round2
            • Configuration_adv.h
            • Configuration.h
        • Azteeg
          • X5GT
            • Configuration.h
        • Creality
          • CR-10S
            • Configuration_adv.h
            • _Statusscreen.h
            • _Bootscreen.h
            • Configuration.h
          • CR-8
            • Configuration_adv.h
            • Configuration.h
          • CR-10mini
            • Configuration_adv.h
            • _Statusscreen.h
            • _Bootscreen.h
            • Configuration.h
          • CR-10_5S
            • Configuration_adv.h
            • _Bootscreen.h
            • Configuration.h
          • Ender-2
            • Configuration_adv.h
            • _Statusscreen.h
            • README.md
            • _Bootscreen.h
            • Configuration.h
          • CR-10
            • Configuration_adv.h
            • _Statusscreen.h
            • _Bootscreen.h
            • Configuration.h
          • Ender-5
            • Configuration_adv.h
            • _Statusscreen.h
            • _Bootscreen.h
            • Configuration.h
          • Ender-3
            • Configuration_adv.h
            • _Statusscreen.h
            • _Bootscreen.h
            • Configuration.h
          • CR-20 Pro
            • Configuration_adv.h
            • _Statusscreen.h
            • Configuration.h
          • CR-20
            • Configuration_adv.h
            • Configuration.h
          • Ender-4
            • Configuration_adv.h
            • Configuration.h
        • ArmEd
          • Configuration_adv.h
          • Configuration.h
        • Mks
          • Sbase
            • Configuration_adv.h
            • README.txt
            • Configuration.h
          • Robin
            • Configuration_adv.h
            • Configuration.h
        • Micromake
          • C1
            • enhanced
              • Configuration_adv.h
              • README.md
              • Configuration.h
            • basic
              • README.md
              • Configuration.h
        • JGAurora
          • A1
            • Configuration_adv.h
            • Configuration.h
          • A5
            • Configuration_adv.h
            • README.md
            • Configuration.h
          • A5S
            • Configuration_adv.h
            • Configuration.h
        • AliExpress
          • CL-260
            • README.txt
            • Configuration.h
          • UM2pExt
            • Configuration_adv.h
            • Configuration.h
        • AnimationExample
          • _Bootscreen.h
        • Sanguinololu
          • Configuration_adv.h
          • Configuration.h
        • Velleman
          • K8400
            • Single-head
              • Configuration_adv.h
              • README.md
              • Configuration.h
            • Dual-head
              • Configuration_adv.h
              • README.md
              • Configuration.h
          • K8200
            • Configuration_adv.h
            • README.md
            • Configuration.h
        • AnyCubic
          • i3
            • Configuration_adv.h
            • Configuration.h
        • TheBorg
          • Configuration_adv.h
          • Configuration.h
        • BigTreeTech
          • SKR Mini E3 1.0
            • Configuration_adv.h
            • Configuration.h
          • SKR Mini E3 1.2
            • Configuration_adv.h
            • Configuration.h
        • SCARA
          • Configuration_adv.h
          • Configuration.h
        • FolgerTech
          • i3-2020
            • Configuration_adv.h
            • Configuration.h
        • Geeetech
          • MeCreator2
            • Configuration_adv.h
            • Configuration.h
          • Prusa i3 Pro C
            • Configuration_adv.h
            • Configuration.h
          • A10
            • Configuration_adv.h
            • Configuration.h
          • Prusa i3 Pro W
            • Configuration_adv.h
            • Configuration.h
          • A20M
            • Configuration_adv.h
            • Configuration.h
          • Prusa i3 Pro B
            • noprobe
              • README.md
              • Configuration.h
            • bltouch
              • README.md
              • Configuration.h
          • I3_Pro_X-GT2560
            • Configuration.h
          • A10M
            • Configuration_adv.h
            • Configuration.h
          • GT2560
            • Configuration.h
        • Einstart-S
          • Configuration_adv.h
          • readme.md
          • Configuration.h
        • Alfawise
          • U20-bltouch
            • Configuration_adv.h
            • _Statusscreen.h
            • Configuration.h
          • U20
            • Configuration_adv.h
            • _Statusscreen.h
            • Configuration.h
        • Printrbot
          • PrintrboardG2
            • Configuration.h
        • adafruit
          • ST7565
            • Configuration.h
        • VORONDesign
          • Configuration_adv.h
          • _Bootscreen.h
          • Configuration.h
        • AlephObjects
          • TAZ4
            • Configuration_adv.h
            • Configuration.h
        • Anet
          • E16
            • Configuration_adv.h
            • _Statusscreen.h
            • _Bootscreen.h
            • Configuration.h
          • A6
            • Configuration_adv.h
            • _Statusscreen.h
            • Configuration.h
          • A2plus
            • Configuration_adv.h
            • Configuration.h
          • A8plus
            • Configuration_adv.h
            • _Statusscreen.h
            • Configuration.h
          • A8
            • Configuration_adv.h
            • _Statusscreen.h
            • Configuration.h
          • A2
            • Configuration_adv.h
            • Configuration.h
        • BIBO
          • TouchX
            • default
              • Configuration_adv.h
              • Configuration.h
            • cyclops
              • Configuration_adv.h
              • Configuration.h
    • buildroot
      • bin
        • opt_set
        • build_marlin
        • build_marlin_teensy35
        • backup_ramps
        • use_example_configs
        • pins_set
        • build_marlin_fail
        • env_restore
        • opt_add
        • generate_version
        • env_backup
        • env_clean
        • restore_configs
        • opt_enable
        • build_marlin_pio
        • update_defaults
        • opt_disable
      • share
        • fonts
          • NanumGothic.bdf
          • marlin-6x12-2.bdf
          • README.md
          • get-bdf2u8g.sh
          • genallfont.sh
          • uxggenpages.sh
          • uxggenpages.md
          • getline.c
          • genpages.c
          • marlin-6x12-1.bdf
          • getline.h
          • u8glib-bdf2u8g.patch
          • marlin-6x12-3.bdf
        • scripts
          • g29_auto.py
          • MarlinMesh.scad
          • createSpeedLookupTable.py
          • createTemperatureLookupMarlin.py
          • findMissingTranslations.sh
        • git
          • mfpub
          • mfrb
          • mfclean
          • README.md
          • firstpush
          • ghtp
          • mfqp
          • mfpr
          • mfhelp
          • mfnew
          • mfinfo
          • ghpc
          • mftest
          • mfup
          • mffp
          • mfdoc
          • mfinit
          • mfadd
        • sublime
          • auto_build_sublime_menu
            • 000_read_me.txt
            • Main.sublime-menu
          • RepRapTools
            • syntax_test_G-code.gcode
            • G-Code.sublime-syntax
          • MarlinFirmware.sublime-project
        • pixmaps
          • MarlinIcons.psd
          • logo
            • marlin-old.svg
            • marlin-old-250.png
            • marlin-old-627.png
            • marlin-1080.png
            • marlin.svg
            • marlin-250.png
        • tests
          • STM32F407VE_black-tests
          • sanguino_atmega644p-tests
          • STM32F103RC_bigtree-tests
          • teensy35-tests
          • at90usb1286_dfu-tests
          • rambo-tests
          • mks_robin_mini-tests
          • ARMED-tests
          • mks_robin-tests
          • linux_native-tests
          • fysetc_f6_13-tests
          • mks_robin_nano-tests
          • jgaurora_a5s_a1-tests
          • STM32F103VE_longer-tests
          • STM32F4-tests
          • sanguino_atmega1284p-tests
          • DUE-tests
          • STM32F103CB_malyan-tests
          • BIGTREE_SKR_PRO-tests
          • teensy31-tests
          • mks_robin_lite-tests
          • LPC1768-tests
          • at90usb1286_cdc-tests
          • STM32F7-tests
          • megaatmega2560-tests
          • LPC1769-tests
          • esp32-tests
          • STM32F103RC_fysetc-tests
          • STM32F103RE-tests
          • SAMD51_grandcentral_m4-tests
          • run_tests
          • STM32F103RC_bigtree_NOUSB-tests
          • megaatmega1280-tests
          • BIGTREE_BTT002-tests
        • atom
          • avrdude.conf
          • create_custom_upload_command_CDC.py
          • avrdude_macOS.conf
          • avrdude_linux.conf
          • auto_build.py
          • create_custom_upload_command_DFU.py
          • avrdude_5.10_linux
          • avrdude_5.10_macOS
        • pin_interrupt_test
          • pin_interrupt_test.ino
        • PlatformIO
          • scripts
            • common-cxxflags.py
            • mks_robin_lite.py
            • mks_robin_lite3.py
            • STM32F103RE_SKR_E3_DIP.py
            • STM32F103VE_longer.py
            • jgaurora_bootloader.bin
            • mks_robin_mini.py
            • mks_robin_nano.py
            • jgaurora_a5s_a1_with_bootloader.py
            • chitu_crypt.py
            • mks_robin_pro.py
            • STM32F103RC_SKR_MINI.py
            • STM32F103RC_fysetc.py
            • mks_robin.py
            • generic_create_variant.py
          • boards
            • malyanM200.json
            • malyanM200v2.json
            • at90usb1286.json
            • BigTree_SKR_Pro.json
            • blackSTM32F407VET6.json
            • BigTree_Btt002.json
          • ldscripts
            • mks_robin_pro.ld
            • mks_robin_lite3.ld
            • STM32F103RC_SKR_MINI_256K.ld
            • STM32F103VE_longer.ld
            • STM32F103RE_SKR_E3_DIP.ld
            • mks_robin_lite.ld
            • chitu_f103.ld
            • jgaurora_a5s_a1.ld
            • mks_robin.ld
            • mks_robin_mini.ld
            • STM32F103RC_SKR_MINI_512K.ld
            • fysetc_aio_ii.ld
            • mks_robin_nano.ld
          • variants
            • BIGTREE_SKR_PRO_1v1
              • variant.h
              • PinNamesVar.h
              • variant.cpp
              • hal_conf_extra.h
              • ldscript.ld
              • PeripheralPins.c
            • MARLIN_F407VE
              • hal_conf_custom.h
              • variant.h
              • PinNamesVar.h
              • variant.cpp
              • ldscript.ld
              • PeripheralPins.c
        • vscode
          • AutoBuildMarlin
            • extension.js
            • logo.svg
            • README.md
            • package.json
            • resources
              • T48x48_light.svg
              • C48x48_dark.svg
              • B48x48_light.svg
              • C48x48_light.svg
              • U48x48_light.svg
              • B48x48_dark.svg
              • AB.svg
              • U48x48_dark.svg
              • T48x48_dark.svg
            • package-lock.json
            • img
              • T_small.png
              • B_small.png
              • U_small.png
              • AB_icon.png
              • AB_menu.png
              • C_small.png
              • Activity_bar.png
            • tsconfig.json
            • .gitignore
            • .vscodeignore
      • etc
        • udev
          • rules.d
            • 99-platformio-udev.rules
        • .astylerc
    • .github
      • issue_template.md
      • pull_request_template.md
      • FUNDING.yml
      • contributing.md
      • code_of_conduct.md
    • .gitignore
    • .travis.yml
    • .pio
      • libdeps
        • mks_robin_nano
          • SailfishLCD
            • SailfishLCD.h
            • SailfishLCD.cpp
            • examples
              • FlashForgeInterfaceBoardLCD
                • FlashForgeInterfaceBoardLCD.ino
            • .gitattributes
            • .pio
              • .piopkgmanager.json
          • U8glib-HAL_ID1932
            • library.json
            • README.md
            • LICENSE
            • src
              • U8glib.cpp
              • U8glib.h
              • U8glibPrint.h
              • U8glibPrintable.h
              • clib
                • u8g_cursor.c
                • u8g_com_esp32_ssd_i2c_fn.cpp
                • u8g_dev_ssd1322_nhd31oled_bw.c
                • u8g_ellipse.c
                • u8g_dev_ssd1309_128x64.c
                • u8g_dev_ili9325d_320x240.c
                • u8g_dev_uc1701_dogs102.c
                • u8g_dev_uc1608_240x64.c
                • u8g_rect.c
                • u8g_pb16h1.c
                • u8g_dev_st7565_lm6063.c
                • u8g_clip.c
                • u8g_com_atxmega_st7920_hw_spi.c
                • u8g_dev_t6963_240x64.c
                • u8g_pb8v1.c
                • u8g_dev_flipdisc_2x7.c
                • u8g_dev_st7565_lm6059.c
                • u8g_pb8h8.c
                • u8g_com_arduino_uc_i2c.c
                • u8g_com_msp430_hw_spi.c
                • u8g_com_linux_ssd_i2c.c
                • u8g_font.c
                • u8g_pb8h1f.c
                • u8g_rot.c
                • u8g_com_psoc5_ssd_hw_parallel.c
                • u8g_u8toa.c
                • u8g_dev_null.c
                • u8g_com_arduino_ssd_i2c.c
                • u8g_com_atmega_parallel.c
                • u8g_com_api_16gr.c
                • u8g_com_samd51_st7920_hw_spi.cpp
                • u8g_dev_ssd1322_nhd31oled_gr.c
                • u8g_dev_tls8204_84x48.c
                • u8g_com_arduino_no_en_parallel.c
                • u8g_com_null.c
                • u8g_pb14v1.c
                • u8g_pbxh16.c
                • u8g_dev_a2_micro_printer.c
                • u8g_com_arduino_sw_spi.c
                • u8g_dev_st7565_64128n.c
                • u8g_bitmap.c
                • u8g_pb16v2.c
                • u8g_dev_gprof.c
                • u8g_com_arduino_port_d_wr.c
                • u8g_dev_st7920_202x32.c
                • u8g_dev_uc1601_c128032.c
                • u8g_com_arduino_common.c
                • u8g_com_atmega_st7920_hw_spi.c
                • u8g_com_atxmega_hw_spi.c
                • u8g_com_arduino_st7920_hw_spi.c
                • u8g.h
                • u8g_dev_ssd1325_nhd27oled_gr.c
                • u8g_com_arduino_attiny85_hw_spi.c
                • u8g_dev_uc1611_dogxl240.c
                • u8g_com_raspberrypi_hw_spi.c
                • u8g_dev_sbn1661_122x32.c
                • u8g_com_atmega_sw_spi.c
                • u8g_dev_st7920_128x64.c
                • u8g_delay.cpp
                • u8g_dev_ht1632.c
                • u8g_state.c
                • u8g_com_arduino_parallel.c
                • u8g_com_atmega_st7920_spi.c
                • u8g_pb16v1.c
                • u8g_dev_lc7981_320x64.c
                • u8g_dev_st7565_nhd_c12864.c
                • u8g_dev_lc7981_160x80.c
                • HAL_example_files
                  • LCD_pin_routines.h
                  • LCD_I2C_routines.c.example
                  • LCD_I2C_routines.h
                  • LPC1768_LCD_defines.h
                  • LCD_pin_routines.c.example
                  • HAL_LCD_defines.h
                  • LCD_delay.h
                • u8g_dev_uc1610_dogxl160.c
                • u8g_com_arduino_std_sw_spi.c
                • u8g_dev_pcd8544_84x48.c
                • chessengine.c
                • u8g_pbxh24.c
                • u8g_pb8h1.c
                • u8g_virtual_screen.c
                • u8g_com_i2c.c
                • u8g_dev_uc1611_dogm240.c
                • u8g_dev_st7920_192x32.c
                • u8g_pb8h2.c
                • u8g_dev_t6963_128x128.c
                • u8g_dev_ssd1325_nhd27oled_gr_new.c
                • u8g_polygon.c
                • u8g_com_io.cpp
                • u8g_com_stm32duino_ssd_i2c.cpp
                • u8g_com_std_sw_spi.c
                • u8g_dev_ssd1325_nhd27oled_bw.c
                • u8g_dev_t6963_128x64.c
                • u8g_dev_st7565_dogm132.c
                • u8g_dev_ld7032_60x32.c
                • u8g_pb8v2.c
                • u8g_pb32h1.c
                • u8g_scale.c
                • u8g_pb16h2.c
                • u8g_com_atmega_hw_spi.c
                • u8g_dev_ssd1327_96x96_gr.c
                • u8g_ll_api.c
                • u8g_com_stm32duino_hw_spi.cpp
                • u8g_u16toa.c
                • u8g_com_arduino_t6963.c
                • u8g_dev_lc7981_240x64.c
                • u8g_dev_st7565_nhd_c12832.c
                • u8g_dev_ssd1351_128x128.c
                • u8g_dev_t6963_240x128.c
                • u8g_page.c
                • u8g_com_arduino_hw_spi.c
                • u8g_dev_ssd1306_64x48.c
                • u8g_com_api.c
                • u8g_dev_uc1608_240x128.c
                • u8g_dev_pcf8812_96x65.c
                • u8g_com_arduino_fast_parallel.c
                • u8g_dev_ks0108_128x64.c
                • u8g_font_data.c
                • u8g_dev_st7565_dogm128.c
                • u8g_circle.c
                • u8g_com_arduino_hw_usart_spi.c
                • u8g_dev_st7687_c144mvgd.c
                • u8g_dev_ssd1325_nhd27oled_bw_new.c
                • u8g_dev_ssd1306_128x64.c
                • u8g_com_arduino_st7920_spi.c
                • u8g_dev_ssd1353_160x128.c
                • u8g_com_arduino_st7920_custom.c
                • u8g_dev_lc7981_240x128.c
                • u8g_com_raspberrypi_ssd_i2c.c
                • u8g_dev_ssd1306_128x32.c
                • u8g_line.c
                • u8g_pb.c
                • u8g_dev_uc1701_mini12864.c
                • u8g_com_samd51_hw_spi.cpp
              • U8glibPrint.cpp
            • .pio
              • .piopkgmanager.json
          • LiquidTWI2
            • keywords.txt
            • examples
              • HelloWorld_i2c
                • HelloWorld_i2c.ino
              • i2c_perftest
                • i2c_perftest.ino
            • README
            • LiquidTWI2.h
            • LiquidTWI2.cpp
            • .gitignore
            • .pio
              • .piopkgmanager.json
          • Arduino-L6470
            • library.json
            • keywords.txt
            • examples
              • two_motors
                • two_motors.ino
              • single_motor
                • single_motor.ino
              • two_motors_synchronized
                • two_motors_synchronized.ino
            • README.md
            • src
              • L6470.cpp
              • L6470.h
            • library.properties
            • l6470 Manual.pdf
            • .gitignore
            • .pio
              • .piopkgmanager.json
          • Adafruit NeoPixel_ID28
            • Adafruit_NeoPixel.h
            • keywords.txt
            • examples
              • simple_new_operator
                • .esp8266.test.skip
                • simple_new_operator.ino
              • StrandtestBLE
                • .test.skip
                • BLESerial.cpp
                • StrandtestBLE.ino
                • BLESerial.h
              • RGBWstrandtest
                • .esp8266.test.skip
                • RGBWstrandtest.ino
                • .trinket.test.skip
              • buttoncycler
                • .esp8266.test.skip
                • buttoncycler.ino
              • simple
                • .esp8266.test.skip
                • simple.ino
              • strandtest
                • .esp8266.test.skip
                • strandtest.ino
            • README.md
            • esp8266.c
            • COPYING
            • library.properties
            • .library.json
            • .github
              • PULL_REQUEST_TEMPLATE.md
              • ISSUE_TEMPLATE.md
            • .gitignore
            • .travis.yml
            • Adafruit_NeoPixel.cpp
          • LiquidCrystal_ID136
            • FastIO.cpp
            • LiquidCrystal_SI2C.cpp
            • LiquidCrystal_SR1W.h
            • library.json
            • keywords.txt
            • LiquidCrystal_SR2W.cpp
            • examples
              • SerialDisplay
                • SerialDisplay.pde
              • HelloWorld_i2c
                • HelloWorld_i2c.pde
              • HelloWorld_SR
                • HelloWorld_SR.pde
              • i2cLCDextraIO_tempLeonardo
                • i2cLCDextraIO_tempLeonardo.ino
              • LCDiSpeed
                • LCDiSpeed.pde
                • LCDiSpeed.txt
              • performanceLCD
                • performanceLCD.pde
              • HelloWorld_si2c
                • HelloWorld_si2c.ino
              • HelloWorld_byVac
                • HelloWorld_byVac.ino
              • i2cLCDextraIO
                • i2cLCDextraIO.pde
              • HelloWorld_4bit
                • HelloWorld_4bit.pde
            • LiquidCrystal_SI2C.h
            • LiquidCrystal_SR3W.cpp
            • Array
            • README.md
            • LiquidCrystal_SR.cpp
            • I2CIO.h
            • .hgsub_
            • SoftI2CMaster.h
            • LiquidCrystal_SR2W.h
            • LiquidCrystal.h
            • .hg_archival.txt
            • .hgtags
            • LCD.h
            • LiquidCrystal_I2C.h
            • LiquidCrystal_SR.h
            • LiquidCrystal_SR1W.cpp
            • LiquidCrystal_I2C.cpp
            • I2CIO.cpp
            • SI2CIO.h
            • .library.json
            • .hgignore
            • .hgsubstate
            • LiquidCrystal_SR3W.h
            • LCD.cpp
            • LiquidCrystal_I2C_ByVac.cpp
            • SI2CIO.cpp
            • LiquidCrystal_I2C_ByVac.h
            • bitbucket-pipelines.yml
            • LiquidCrystal.cpp
            • FastIO.h
          • SailfishRGB_LED
            • SailfishRBG_LED.cpp
            • examples
              • RBGLED_test
                • RBGLED_test.ino
            • .gitattributes
            • SailfishRGB_LED.h
            • .pio
              • .piopkgmanager.json
          • TMCStepper_ID5513
            • library.json
            • keywords.txt
            • examples
              • Simple
                • Simple.ino
              • StallGuard
                • StallGuard.ino
              • TMC_AccelStepper
                • TMC_AccelStepper.ino
              • Calibrate_spreadCycle
                • Calibrate_spreadCycle.ino
              • Software_SPI
                • Software_SPI.ino
              • StallGuard_TMC2660
                • StallGuard_TMC2660.ino
              • StallGuard_TMC2209
                • StallGuard_TMC2209.ino
              • Live_tune
                • Live_tune.ino
            • README.md
            • LICENSE
            • src
              • source
                • DRV_CONF.cpp
                • SW_SPI.cpp
                • TMC5130Stepper.cpp
                • ENCMODE.cpp
                • GCONF.cpp
                • TMC2160Stepper.cpp
                • IHOLD_IRUN.cpp
                • RAMP_STAT.cpp
                • SMARTEN.cpp
                • PWMCONF.cpp
                • CHOPCONF.cpp
                • SHORT_CONF.cpp
                • TMC2130Stepper.cpp
                • TMC2660Stepper.cpp
                • TMC5160_bitfields.h
                • SGCSCONF.cpp
                • TMC5160Stepper.cpp
                • DRVCONF.cpp
                • TMC_platforms.h
                • SW_MODE.cpp
                • TMC_MACROS.h
                • SERIAL_SWITCH.h
                • TMC2208_bitfields.h
                • TMC2209_bitfields.h
                • TMC5130_bitfields.h
                • TMC2160_bitfields.h
                • DRVCTRL.cpp
                • TMCStepper.cpp
                • DRVSTATUS.cpp
                • TMC2130_bitfields.h
                • TMC2208Stepper.cpp
                • SW_SPI.h
                • COOLCONF.cpp
                • DRV_STATUS.cpp
                • TMC2660_bitfields.h
                • TMC2209Stepper.cpp
                • SERIAL_SWITCH.cpp
              • TMCStepper.h
              • TMCStepper_UTILITY.h
            • library.properties
            • .library.json
            • extras
              • TMC5130_TMC2130_TMC2100_Calculations.xlsx
              • Register_summary.xlsx
          • SlowSoftI2CMaster
            • examples
              • I2CScanSlow
                • I2CScanSlow.ino
              • BMA020Slow
                • BMA020Slow.ino
            • SlowSoftI2CMaster.h
            • README.md
            • SlowSoftI2CMaster.cpp
            • .gitattributes
            • .pio
              • .piopkgmanager.json
      • build
        • project.checksum
    • data
      • www
        • marlin.js
        • marlin.css
        • marlin-logo.png
        • index.html


marlin firmware.zip > FlushableHardwareSerial.cpp

/**
* Marlin 3D Printer Firmware
* Copyright (c) 2019 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
*
* Based on Sprinter and grbl.
* Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see & lt; http://www.gnu.org/licenses/ & gt; .
*
*/

#include " FlushableHardwareSerial.h "

#ifdef ARDUINO_ARCH_ESP32

FlushableHardwareSerial::FlushableHardwareSerial(int uart_nr)
: HardwareSerial(uart_nr)
{}

FlushableHardwareSerial flushableSerial(0);

#endif // ARDUINO_ARCH_ESP32


marlin firmware.zip > watchdog.h

/**
* Marlin 3D Printer Firmware
* Copyright (c) 2019 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
*
* Based on Sprinter and grbl.
* Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see & lt; http://www.gnu.org/licenses/ & gt; .
*
*/
#pragma once

// Initialize watchdog with a 4 second interrupt time
void watchdog_init();

// Reset watchdog.
inline void HAL_watchdog_refresh() {}


marlin firmware.zip > SPI.h

/**
* Marlin 3D Printer Firmware
* Copyright (c) 2019 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
*
* Based on Sprinter and grbl.
* Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see & lt; http://www.gnu.org/licenses/ & gt; .
*
*/
#pragma once

#include " ../../shared/HAL_SPI.h "

#include & lt; stdint.h & gt;

#define MSBFIRST 1
#define SPI_MODE3 0

class SPISettings {
public:
SPISettings(uint32_t speed, int, int) : spi_speed(speed) {};
uint32_t spiRate() { return spi_speed; }
private:
uint32_t spi_speed;
};

class SPIClass {
public:
void begin();
void beginTransaction(SPISettings);
void endTransaction() {};
uint8_t transfer(uint8_t data);
uint16_t transfer16(uint16_t data);
};

extern SPIClass SPI;


marlin firmware.zip > HAL_spi.cpp

/**
* Marlin 3D Printer Firmware
* Copyright (c) 2019 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
*
* Based on Sprinter and grbl.
* Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see & lt; http://www.gnu.org/licenses/ & gt; .
*
*/

/**
* Software SPI functions originally from Arduino Sd2Card Library
* Copyright (c) 2009 by William Greiman
*/

/**
* For TARGET_LPC1768
*/

/**
* Hardware SPI and a software SPI implementations are included in this file.
* The hardware SPI runs faster and has higher throughput but is not compatible
* with some LCD interfaces/adapters.
*
* Control of the slave select pin(s) is handled by the calling routines.
*
* Some of the LCD interfaces/adapters result in the LCD SPI and the SD card
* SPI sharing pins. The SCK, MOSI & MISO pins can NOT be set/cleared with
* WRITE nor digitalWrite when the hardware SPI module within the LPC17xx is
* active. If any of these pins are shared then the software SPI must be used.
*
* A more sophisticated hardware SPI can be found at the following link. This
* implementation has not been fully debugged.
* https://github.com/MarlinFirmware/Marlin/tree/071c7a78f27078fd4aee9a3ef365fcf5e143531e
*/

#ifdef TARGET_LPC1768

#include " ../../inc/MarlinConfig.h "
#include & lt; SPI.h & gt;

// ------------------------
// Public functions
// ------------------------
#if ENABLED(LPC_SOFTWARE_SPI)

#include & lt; SoftwareSPI.h & gt;

// Software SPI

static uint8_t SPI_speed = 0;

static uint8_t spiTransfer(uint8_t b) {
return swSpiTransfer(b, SPI_speed, SCK_PIN, MISO_PIN, MOSI_PIN);
}

void spiBegin() {
swSpiBegin(SCK_PIN, MISO_PIN, MOSI_PIN);
}

void spiInit(uint8_t spiRate) {
SPI_speed = swSpiInit(spiRate, SCK_PIN, MOSI_PIN);
}

uint8_t spiRec() { return spiTransfer(0xFF); }

void spiRead(uint8_t*buf, uint16_t nbyte) {
for (int i = 0; i & lt; nbyte; i++)
buf[i] = spiTransfer(0xFF);
}

void spiSend(uint8_t b) { (void)spiTransfer(b); }

void spiSend(const uint8_t* buf, size_t nbyte) {
for (uint16_t i = 0; i & lt; nbyte; i++)
(void)spiTransfer(buf[i]);
}

void spiSendBlock(uint8_t token, const uint8_t* buf) {
(void)spiTransfer(token);
for (uint16_t i = 0; i & lt; 512; i++)
(void)spiTransfer(buf[i]);
}

#else

// Hardware SPI

#include & lt; lpc17xx_pinsel.h & gt;
#include & lt; lpc17xx_ssp.h & gt;
#include & lt; lpc17xx_clkpwr.h & gt;

// decide which HW SPI device to use
#ifndef LPC_HW_SPI_DEV
#if (SCK_PIN == P0_07 & & MISO_PIN == P0_08 & & MOSI_PIN == P0_09)
#define LPC_HW_SPI_DEV 1
#else
#if (SCK_PIN == P0_15 & & MISO_PIN == P0_17 & & MOSI_PIN == P0_18)
#define LPC_HW_SPI_DEV 0
#else
#error " Invalid pins selected for hardware SPI "
#endif
#endif
#endif
#if (LPC_HW_SPI_DEV == 0)
#define LPC_SSPn LPC_SSP0
#else
#define LPC_SSPn LPC_SSP1
#endif

void spiBegin() { // setup SCK, MOSI & MISO pins for SSP0
PINSEL_CFG_Type PinCfg; // data structure to hold init values
PinCfg.Funcnum = 2;
PinCfg.OpenDrain = 0;
PinCfg.Pinmode = 0;
PinCfg.Pinnum = LPC176x::pin_bit(SCK_PIN);
PinCfg.Portnum = LPC176x::pin_port(SCK_PIN);
PINSEL_ConfigPin( & PinCfg);
SET_OUTPUT(SCK_PIN);

PinCfg.Pinnum = LPC176x::pin_bit(MISO_PIN);
PinCfg.Portnum = LPC176x::pin_port(MISO_PIN);
PINSEL_ConfigPin( & PinCfg);
SET_INPUT(MISO_PIN);

PinCfg.Pinnum = LPC176x::pin_bit(MOSI_PIN);
PinCfg.Portnum = LPC176x::pin_port(MOSI_PIN);
PINSEL_ConfigPin( & PinCfg);
SET_OUTPUT(MOSI_PIN);
// divide PCLK by 2 for SSP0
CLKPWR_SetPCLKDiv(LPC_HW_SPI_DEV == 0 ? CLKPWR_PCLKSEL_SSP0 : CLKPWR_PCLKSEL_SSP1, CLKPWR_PCLKSEL_CCLK_DIV_2);
spiInit(0);
SSP_Cmd(LPC_SSPn, ENABLE); // start SSP running
}

void spiInit(uint8_t spiRate) {
// table to convert Marlin spiRates (0-5 plus default) into bit rates
uint32_t Marlin_speed[7]; // CPSR is always 2
Marlin_speed[0] = 8333333; //(SCR: 2) desired: 8,000,000 actual: 8,333,333 +4.2% SPI_FULL_SPEED
Marlin_speed[1] = 4166667; //(SCR: 5) desired: 4,000,000 actual: 4,166,667 +4.2% SPI_HALF_SPEED
Marlin_speed[2] = 2083333; //(SCR: 11) desired: 2,000,000 actual: 2,083,333 +4.2% SPI_QUARTER_SPEED
Marlin_speed[3] = 1000000; //(SCR: 24) desired: 1,000,000 actual: 1,000,000 SPI_EIGHTH_SPEED
Marlin_speed[4] = 500000; //(SCR: 49) desired: 500,000 actual: 500,000 SPI_SPEED_5
Marlin_speed[5] = 250000; //(SCR: 99) desired: 250,000 actual: 250,000 SPI_SPEED_6
Marlin_speed[6] = 125000; //(SCR:199) desired: 125,000 actual: 125,000 Default from HAL.h
// setup for SPI mode
SSP_CFG_Type HW_SPI_init; // data structure to hold init values
SSP_ConfigStructInit( & HW_SPI_init); // set values for SPI mode
HW_SPI_init.ClockRate = Marlin_speed[_MIN(spiRate, 6)]; // put in the specified bit rate
HW_SPI_init.Mode |= SSP_CR1_SSP_EN;
SSP_Init(LPC_SSPn, & HW_SPI_init); // puts the values into the proper bits in the SSP0 registers
}

static uint8_t doio(uint8_t b) {
/* send and receive a single byte */
SSP_SendData(LPC_SSPn, b & 0x00FF);
while (SSP_GetStatus(LPC_SSPn, SSP_STAT_BUSY)); // wait for it to finish
return SSP_ReceiveData(LPC_SSPn) & 0x00FF;
}

void spiSend(uint8_t b) { doio(b); }

void spiSend(const uint8_t* buf, size_t nbyte) {
for (uint16_t i = 0; i & lt; nbyte; i++) doio(buf[i]);
}

void spiSend(uint32_t chan, byte b) {
}

void spiSend(uint32_t chan, const uint8_t* buf, size_t nbyte) {
}

// Read single byte from SPI
uint8_t spiRec() { return doio(0xFF); }

uint8_t spiRec(uint32_t chan) { return 0; }

// Read from SPI into buffer
void spiRead(uint8_t *buf, uint16_t nbyte) {
for (uint16_t i = 0; i & lt; nbyte; i++) buf[i] = doio(0xFF);
}

static uint8_t spiTransfer(uint8_t b) {
return doio(b);
}

// Write from buffer to SPI
void spiSendBlock(uint8_t token, const uint8_t* buf) {
(void)spiTransfer(token);
for (uint16_t i = 0; i & lt; 512; i++)
(void)spiTransfer(buf[i]);
}

/** Begin SPI transaction, set clock, bit order, data mode */
void spiBeginTransaction(uint32_t spiClock, uint8_t bitOrder, uint8_t dataMode) {
// TODO: to be implemented

}

#endif // ENABLED(LPC_SOFTWARE_SPI)

void SPIClass::begin() { spiBegin(); }

void SPIClass::beginTransaction(SPISettings cfg) {
uint8_t spiRate;
switch (cfg.spiRate()) {
case 8000000: spiRate = 0; break;
case 4000000: spiRate = 1; break;
case 2000000: spiRate = 2; break;
case 1000000: spiRate = 3; break;
case 500000: spiRate = 4; break;
case 250000: spiRate = 5; break;
case 125000: spiRate = 6; break;
default: spiRate = 2; break;
}
spiInit(spiRate);
}

uint8_t SPIClass::transfer(const uint8_t B) { return spiTransfer(B); }

uint16_t SPIClass::transfer16(const uint16_t data) {
return (transfer((data & gt; & gt; 8) & 0xFF) & lt; & lt; 8)
| (transfer(data & 0xFF) & 0xFF);
}

SPIClass SPI;

#endif // TARGET_LPC1768


marlin firmware.zip > Conditionals_post.h

/**
* Marlin 3D Printer Firmware
* Copyright (c) 2019 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
*
* Based on Sprinter and grbl.
* Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see & lt; http://www.gnu.org/licenses/ & gt; .
*
*/
#pragma once


marlin firmware.zip > cancel_object.h

/**
* Marlin 3D Printer Firmware
* Copyright (c) 2019 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
*
* Based on Sprinter and grbl.
* Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see & lt; http://www.gnu.org/licenses/ & gt; .
*
*/
#pragma once

#include & lt; stdint.h & gt;

class CancelObject {
public:
static bool skipping;
static int8_t object_count, active_object;
static uint32_t canceled;
static void set_active_object(const int8_t obj);
static void cancel_object(const int8_t obj);
static void uncancel_object(const int8_t obj);
static void report();
static inline bool is_canceled(const int8_t obj) { return TEST(canceled, obj); }
static inline void clear_active_object() { set_active_object(-1); }
static inline void cancel_active_object() { cancel_object(active_object); }
static inline void reset() { canceled = 0x0000; object_count = 0; clear_active_object(); }
};

extern CancelObject cancelable;


marlin firmware.zip > twibus.cpp

/**
* Marlin 3D Printer Firmware
* Copyright (c) 2019 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
*
* Based on Sprinter and grbl.
* Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see & lt; http://www.gnu.org/licenses/ & gt; .
*
*/

#include " ../inc/MarlinConfig.h "

#if ENABLED(EXPERIMENTAL_I2CBUS)

#include " twibus.h "

#include & lt; Wire.h & gt;

TWIBus::TWIBus() {
#if I2C_SLAVE_ADDRESS == 0
Wire.begin(); // No address joins the BUS as the master
#else
Wire.begin(I2C_SLAVE_ADDRESS); // Join the bus as a slave
#endif
reset();
}

void TWIBus::reset() {
buffer_s = 0;
buffer[0] = 0x00;
}

void TWIBus::address(const uint8_t adr) {
if (!WITHIN(adr, 8, 127)) {
SERIAL_ECHO_MSG( " Bad I2C address (8-127) " );
}

addr = adr;

#if ENABLED(DEBUG_TWIBUS)
debug(PSTR( " address " ), adr);
#endif
}

void TWIBus::addbyte(const char c) {
if (buffer_s & gt; = COUNT(buffer)) return;
buffer[buffer_s++] = c;
#if ENABLED(DEBUG_TWIBUS)
debug(PSTR( " addbyte " ), c);
#endif
}

void TWIBus::addbytes(char src[], uint8_t bytes) {
#if ENABLED(DEBUG_TWIBUS)
debug(PSTR( " addbytes " ), bytes);
#endif
while (bytes--) addbyte(*src++);
}

void TWIBus::addstring(char str[]) {
#if ENABLED(DEBUG_TWIBUS)
debug(PSTR( " addstring " ), str);
#endif
while (char c = *str++) addbyte(c);
}

void TWIBus::send() {
#if ENABLED(DEBUG_TWIBUS)
debug(PSTR( " send " ), addr);
#endif

Wire.beginTransmission(I2C_ADDRESS(addr));
Wire.write(buffer, buffer_s);
Wire.endTransmission();

reset();
}

// static
void TWIBus::echoprefix(uint8_t bytes, const char prefix[], uint8_t adr) {
SERIAL_ECHO_START();
serialprintPGM(prefix);
SERIAL_ECHOPAIR( " : from: " , adr, " bytes: " , bytes, " data: " );
}

// static
void TWIBus::echodata(uint8_t bytes, const char prefix[], uint8_t adr) {
echoprefix(bytes, prefix, adr);
while (bytes-- & & Wire.available()) SERIAL_CHAR(Wire.read());
SERIAL_EOL();
}

void TWIBus::echobuffer(const char prefix[], uint8_t adr) {
echoprefix(buffer_s, prefix, adr);
for (uint8_t i = 0; i & lt; buffer_s; i++) SERIAL_CHAR(buffer[i]);
SERIAL_EOL();
}

bool TWIBus::request(const uint8_t bytes) {
if (!addr) return false;

#if ENABLED(DEBUG_TWIBUS)
debug(PSTR( " request " ), bytes);
#endif

// requestFrom() is a blocking function
if (Wire.requestFrom(addr, bytes) == 0) {
#if ENABLED(DEBUG_TWIBUS)
debug( " request fail " , addr);
#endif
return false;
}

return true;
}

void TWIBus::relay(const uint8_t bytes) {
#if ENABLED(DEBUG_TWIBUS)
debug(PSTR( " relay " ), bytes);
#endif

if (request(bytes))
echodata(bytes, PSTR( " i2c-reply " ), addr);
}

uint8_t TWIBus::capture(char *dst, const uint8_t bytes) {
reset();
uint8_t count = 0;
while (count & lt; bytes & & Wire.available())
dst[count++] = Wire.read();

#if ENABLED(DEBUG_TWIBUS)
debug(PSTR( " capture " ), count);
#endif

return count;
}

// static
void TWIBus::flush() {
while (Wire.available()) Wire.read();
}

#if I2C_SLAVE_ADDRESS & gt; 0

void TWIBus::receive(uint8_t bytes) {
#if ENABLED(DEBUG_TWIBUS)
debug(PSTR( " receive " ), bytes);
#endif
echodata(bytes, PSTR( " i2c-receive " ), 0);
}

void TWIBus::reply(char str[]/*=nullptr*/) {
#if ENABLED(DEBUG_TWIBUS)
debug(PSTR( " reply " ), str);
#endif

if (str) {
reset();
addstring(str);
}

Wire.write(buffer, buffer_s);

reset();
}

#endif

#if ENABLED(DEBUG_TWIBUS)

// static
void TWIBus::prefix(const char func[]) {
SERIAL_ECHOPGM( " TWIBus:: " );
serialprintPGM(func);
SERIAL_ECHOPGM( " : " );
}
void TWIBus::debug(const char func[], uint32_t adr) {
if (DEBUGGING(INFO)) { prefix(func); SERIAL_ECHOLN(adr); }
}
void TWIBus::debug(const char func[], char c) {
if (DEBUGGING(INFO)) { prefix(func); SERIAL_ECHOLN(c); }
}
void TWIBus::debug(const char func[], char str[]) {
if (DEBUGGING(INFO)) { prefix(func); SERIAL_ECHOLN(str); }
}

#endif

#endif // EXPERIMENTAL_I2CBUS


marlin firmware.zip > snmm.h

/**
* Marlin 3D Printer Firmware
* Copyright (c) 2019 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
*
* Based on Sprinter and grbl.
* Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see & lt; http://www.gnu.org/licenses/ & gt; .
*
*/
#pragma once

void select_multiplexed_stepper(const uint8_t e);


marlin firmware.zip > closedloop.h

/**
* Marlin 3D Printer Firmware
* Copyright (c) 2019 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
*
* Based on Sprinter and grbl.
* Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see & lt; http://www.gnu.org/licenses/ & gt; .
*
*/
#pragma once

void init_closedloop();
void set_closedloop(const byte val);


marlin firmware.zip > I2CPositionEncoder.h

/**
* Marlin 3D Printer Firmware
* Copyright (c) 2019 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
*
* Based on Sprinter and grbl.
* Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see & lt; http://www.gnu.org/licenses/ & gt; .
*
*/
#pragma once

#include " ../inc/MarlinConfig.h "

#include " ../module/planner.h "

#include & lt; Wire.h & gt;

//=========== Advanced / Less-Common Encoder Configuration Settings ==========

#define I2CPE_EC_THRESH_PROPORTIONAL // if enabled adjusts the error correction threshold
// proportional to the current speed of the axis allows
// for very small error margin at low speeds without
// stuttering due to reading latency at high speeds

#define I2CPE_DEBUG // enable encoder-related debug serial echos

#define I2CPE_REBOOT_TIME 5000 // time we wait for an encoder module to reboot
// after changing address.

#define I2CPE_MAG_SIG_GOOD 0
#define I2CPE_MAG_SIG_MID 1
#define I2CPE_MAG_SIG_BAD 2
#define I2CPE_MAG_SIG_NF 255

#define I2CPE_REQ_REPORT 0
#define I2CPE_RESET_COUNT 1
#define I2CPE_SET_ADDR 2
#define I2CPE_SET_REPORT_MODE 3
#define I2CPE_CLEAR_EEPROM 4

#define I2CPE_LED_PAR_MODE 10
#define I2CPE_LED_PAR_BRT 11
#define I2CPE_LED_PAR_RATE 14

#define I2CPE_REPORT_DISTANCE 0
#define I2CPE_REPORT_STRENGTH 1
#define I2CPE_REPORT_VERSION 2

// Default I2C addresses
#define I2CPE_PRESET_ADDR_X 30
#define I2CPE_PRESET_ADDR_Y 31
#define I2CPE_PRESET_ADDR_Z 32
#define I2CPE_PRESET_ADDR_E 33

#define I2CPE_DEF_AXIS X_AXIS
#define I2CPE_DEF_ADDR I2CPE_PRESET_ADDR_X

// Error event counter; tracks how many times there is an error exceeding a certain threshold
#define I2CPE_ERR_CNT_THRESH 3.00
#define I2CPE_ERR_CNT_DEBOUNCE_MS 2000

#if ENABLED(I2CPE_ERR_ROLLING_AVERAGE)
#define I2CPE_ERR_ARRAY_SIZE 32
#define I2CPE_ERR_PRST_ARRAY_SIZE 10
#endif

// Error Correction Methods
#define I2CPE_ECM_NONE 0
#define I2CPE_ECM_MICROSTEP 1
#define I2CPE_ECM_PLANNER 2
#define I2CPE_ECM_STALLDETECT 3

// Encoder types
#define I2CPE_ENC_TYPE_ROTARY 0
#define I2CPE_ENC_TYPE_LINEAR 1

// Parser
#define I2CPE_PARSE_ERR 1
#define I2CPE_PARSE_OK 0

#define LOOP_PE(VAR) LOOP_L_N(VAR, I2CPE_ENCODER_CNT)
#define CHECK_IDX() do{ if (!WITHIN(idx, 0, I2CPE_ENCODER_CNT - 1)) return; }while(0)

typedef union {
volatile int32_t val = 0;
uint8_t bval[4];
} i2cLong;

class I2CPositionEncoder {
private:
AxisEnum encoderAxis = I2CPE_DEF_AXIS;

uint8_t i2cAddress = I2CPE_DEF_ADDR,
ecMethod = I2CPE_DEF_EC_METHOD,
type = I2CPE_DEF_TYPE,
H = I2CPE_MAG_SIG_NF; // Magnetic field strength

int encoderTicksPerUnit = I2CPE_DEF_ENC_TICKS_UNIT,
stepperTicks = I2CPE_DEF_TICKS_REV,
errorCount = 0,
errorPrev = 0;

float ecThreshold = I2CPE_DEF_EC_THRESH;

bool homed = false,
trusted = false,
initialized = false,
active = false,
invert = false,
ec = true;

int32_t zeroOffset = 0,
lastPosition = 0,
position;

millis_t lastPositionTime = 0,
nextErrorCountTime = 0,
lastErrorTime;

#if ENABLED(I2CPE_ERR_ROLLING_AVERAGE)
uint8_t errIdx = 0, errPrstIdx = 0;
int err[I2CPE_ERR_ARRAY_SIZE] = { 0 },
errPrst[I2CPE_ERR_PRST_ARRAY_SIZE] = { 0 };
#endif

public:
void init(const uint8_t address, const AxisEnum axis);
void reset();

void update();

void set_homed();
void set_unhomed();

int32_t get_raw_count();

FORCE_INLINE float mm_from_count(const int32_t count) {
switch (type) {
default: return -1;
case I2CPE_ENC_TYPE_LINEAR:
return count / encoderTicksPerUnit;
case I2CPE_ENC_TYPE_ROTARY:
return (count * stepperTicks) / (encoderTicksPerUnit * planner.settings.axis_steps_per_mm[encoderAxis]);
}
}

FORCE_INLINE float get_position_mm() { return mm_from_count(get_position()); }
FORCE_INLINE int32_t get_position() { return get_raw_count() - zeroOffset; }

int32_t get_axis_error_steps(const bool report);
float get_axis_error_mm(const bool report);

void calibrate_steps_mm(const uint8_t iter);

bool passes_test(const bool report);

bool test_axis();

FORCE_INLINE int get_error_count() { return errorCount; }
FORCE_INLINE void set_error_count(const int newCount) { errorCount = newCount; }

FORCE_INLINE uint8_t get_address() { return i2cAddress; }
FORCE_INLINE void set_address(const uint8_t addr) { i2cAddress = addr; }

FORCE_INLINE bool get_active() { return active; }
FORCE_INLINE void set_active(const bool a) { active = a; }

FORCE_INLINE void set_inverted(const bool i) { invert = i; }

FORCE_INLINE AxisEnum get_axis() { return encoderAxis; }

FORCE_INLINE bool get_ec_enabled() { return ec; }
FORCE_INLINE void set_ec_enabled(const bool enabled) { ec = enabled; }

FORCE_INLINE uint8_t get_ec_method() { return ecMethod; }
FORCE_INLINE void set_ec_method(const byte method) { ecMethod = method; }

FORCE_INLINE float get_ec_threshold() { return ecThreshold; }
FORCE_INLINE void set_ec_threshold(const float newThreshold) { ecThreshold = newThreshold; }

FORCE_INLINE int get_encoder_ticks_mm() {
switch (type) {
default: return 0;
case I2CPE_ENC_TYPE_LINEAR:
return encoderTicksPerUnit;
case I2CPE_ENC_TYPE_ROTARY:
return (int)((encoderTicksPerUnit / stepperTicks) * planner.settings.axis_steps_per_mm[encoderAxis]);
}
}

FORCE_INLINE int get_ticks_unit() { return encoderTicksPerUnit; }
FORCE_INLINE void set_ticks_unit(const int ticks) { encoderTicksPerUnit = ticks; }

FORCE_INLINE uint8_t get_type() { return type; }
FORCE_INLINE void set_type(const byte newType) { type = newType; }

FORCE_INLINE int get_stepper_ticks() { return stepperTicks; }
FORCE_INLINE void set_stepper_ticks(const int ticks) { stepperTicks = ticks; }
};

class I2CPositionEncodersMgr {
private:
static bool I2CPE_anyaxis;
static uint8_t I2CPE_addr, I2CPE_idx;

public:

static void init();

// consider only updating one endoder per call / tick if encoders become too time intensive
static void update() { LOOP_PE(i) encoders[i].update(); }

static void homed(const AxisEnum axis) {
LOOP_PE(i)
if (encoders[i].get_axis() == axis) encoders[i].set_homed();
}

static void unhomed(const AxisEnum axis) {
LOOP_PE(i)
if (encoders[i].get_axis() == axis) encoders[i].set_unhomed();
}

static void report_position(const int8_t idx, const bool units, const bool noOffset);

static void report_status(const int8_t idx) {
CHECK_IDX();
SERIAL_ECHOLNPAIR( " Encoder " , idx, " : " );
encoders[idx].get_raw_count();
encoders[idx].passes_test(true);
}

static void report_error(const int8_t idx) {
CHECK_IDX();
encoders[idx].get_axis_error_steps(true);
}

static void test_axis(const int8_t idx) {
CHECK_IDX();
encoders[idx].test_axis();
}

static void calibrate_steps_mm(const int8_t idx, const int iterations) {
CHECK_IDX();
encoders[idx].calibrate_steps_mm(iterations);
}

static void change_module_address(const uint8_t oldaddr, const uint8_t newaddr);
static void report_module_firmware(const uint8_t address);

static void report_error_count(const int8_t idx, const AxisEnum axis) {
CHECK_IDX();
SERIAL_ECHOLNPAIR( " Error count on " , axis_codes[axis], " axis is " , encoders[idx].get_error_count());
}

static void reset_error_count(const int8_t idx, const AxisEnum axis) {
CHECK_IDX();
encoders[idx].set_error_count(0);
SERIAL_ECHOLNPAIR( " Error count on " , axis_codes[axis], " axis has been reset. " );
}

static void enable_ec(const int8_t idx, const bool enabled, const AxisEnum axis) {
CHECK_IDX();
encoders[idx].set_ec_enabled(enabled);
SERIAL_ECHOPAIR( " Error correction on " , axis_codes[axis]);
SERIAL_ECHO_TERNARY(encoders[idx].get_ec_enabled(), " axis is " , " en " , " dis " , " abled.\n " );
}

static void set_ec_threshold(const int8_t idx, const float newThreshold, const AxisEnum axis) {
CHECK_IDX();
encoders[idx].set_ec_threshold(newThreshold);
SERIAL_ECHOLNPAIR( " Error correct threshold for " , axis_codes[axis], " axis set to " , FIXFLOAT(newThreshold), " mm. " );
}

static void get_ec_threshold(const int8_t idx, const AxisEnum axis) {
CHECK_IDX();
const float threshold = encoders[idx].get_ec_threshold();
SERIAL_ECHOLNPAIR( " Error correct threshold for " , axis_codes[axis], " axis is " , FIXFLOAT(threshold), " mm. " );
}

static int8_t idx_from_axis(const AxisEnum axis) {
LOOP_PE(i)
if (encoders[i].get_axis() == axis) return i;
return -1;
}

static int8_t idx_from_addr(const uint8_t addr) {
LOOP_PE(i)
if (encoders[i].get_address() == addr) return i;
return -1;
}

static int8_t parse();

static void M860();
static void M861();
static void M862();
static void M863();
static void M864();
static void M865();
static void M866();
static void M867();
static void M868();
static void M869();

static I2CPositionEncoder encoders[I2CPE_ENCODER_CNT];
};

extern I2CPositionEncodersMgr I2CPEM;


marlin firmware.zip > ubl.cpp

/**
* Marlin 3D Printer Firmware
* Copyright (c) 2019 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
*
* Based on Sprinter and grbl.
* Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see & lt; http://www.gnu.org/licenses/ & gt; .
*
*/

#include " ../../../inc/MarlinConfig.h "

#if ENABLED(AUTO_BED_LEVELING_UBL)

#include " ../bedlevel.h "

unified_bed_leveling ubl;

#include " ../../../module/configuration_store.h "
#include " ../../../module/planner.h "
#include " ../../../module/motion.h "
#include " ../../../module/probe.h "

#if ENABLED(EXTENSIBLE_UI)
#include " ../../../lcd/extensible_ui/ui_api.h "
#endif

#include " math.h "

void unified_bed_leveling::echo_name() {
SERIAL_ECHOPGM( " Unified Bed Leveling " );
}

void unified_bed_leveling::report_current_mesh() {
if (!leveling_is_valid()) return;
SERIAL_ECHO_MSG( " G29 I99 " );
for (uint8_t x = 0; x & lt; GRID_MAX_POINTS_X; x++)
for (uint8_t y = 0; y & lt; GRID_MAX_POINTS_Y; y++)
if (!isnan(z_values[x][y])) {
SERIAL_ECHO_START();
SERIAL_ECHOPAIR( " M421 I " , int(x), " J " , int(y));
SERIAL_ECHOLNPAIR_F( " Z " , z_values[x][y], 4);
serial_delay(75); // Prevent Printrun from exploding
}
}

void unified_bed_leveling::report_state() {
echo_name();
SERIAL_ECHO_TERNARY(planner.leveling_active, " System v " UBL_VERSION " " , " " , " in " , " active\n " );
serial_delay(50);
}

int8_t unified_bed_leveling::storage_slot;

float unified_bed_leveling::z_values[GRID_MAX_POINTS_X][GRID_MAX_POINTS_Y];

#define _GRIDPOS(A,N) (MESH_MIN_##A + N * (MESH_##A##_DIST))

const float
unified_bed_leveling::_mesh_index_to_xpos[GRID_MAX_POINTS_X] PROGMEM = ARRAY_N(GRID_MAX_POINTS_X,
_GRIDPOS(X, 0), _GRIDPOS(X, 1), _GRIDPOS(X, 2), _GRIDPOS(X, 3),
_GRIDPOS(X, 4), _GRIDPOS(X, 5), _GRIDPOS(X, 6), _GRIDPOS(X, 7),
_GRIDPOS(X, 8), _GRIDPOS(X, 9), _GRIDPOS(X, 10), _GRIDPOS(X, 11),
_GRIDPOS(X, 12), _GRIDPOS(X, 13), _GRIDPOS(X, 14), _GRIDPOS(X, 15)
),
unified_bed_leveling::_mesh_index_to_ypos[GRID_MAX_POINTS_Y] PROGMEM = ARRAY_N(GRID_MAX_POINTS_Y,
_GRIDPOS(Y, 0), _GRIDPOS(Y, 1), _GRIDPOS(Y, 2), _GRIDPOS(Y, 3),
_GRIDPOS(Y, 4), _GRIDPOS(Y, 5), _GRIDPOS(Y, 6), _GRIDPOS(Y, 7),
_GRIDPOS(Y, 8), _GRIDPOS(Y, 9), _GRIDPOS(Y, 10), _GRIDPOS(Y, 11),
_GRIDPOS(Y, 12), _GRIDPOS(Y, 13), _GRIDPOS(Y, 14), _GRIDPOS(Y, 15)
);

#if HAS_LCD_MENU
bool unified_bed_leveling::lcd_map_control = false;
#endif

volatile int unified_bed_leveling::encoder_diff;

unified_bed_leveling::unified_bed_leveling() {
reset();
}

void unified_bed_leveling::reset() {
const bool was_enabled = planner.leveling_active;
set_bed_leveling_enabled(false);
storage_slot = -1;
ZERO(z_values);
#if ENABLED(EXTENSIBLE_UI)
for (uint8_t x = 0; x & lt; GRID_MAX_POINTS_X; x++)
for (uint8_t y = 0; y & lt; GRID_MAX_POINTS_Y; y++)
ExtUI::onMeshUpdate(x, y, 0);
#endif
if (was_enabled) report_current_position();
}

void unified_bed_leveling::invalidate() {
set_bed_leveling_enabled(false);
set_all_mesh_points_to_value(NAN);
}

void unified_bed_leveling::set_all_mesh_points_to_value(const float value) {
for (uint8_t x = 0; x & lt; GRID_MAX_POINTS_X; x++) {
for (uint8_t y = 0; y & lt; GRID_MAX_POINTS_Y; y++) {
z_values[x][y] = value;
#if ENABLED(EXTENSIBLE_UI)
ExtUI::onMeshUpdate(x, y, value);
#endif
}
}
}

static void serial_echo_xy(const uint8_t sp, const int16_t x, const int16_t y) {
SERIAL_ECHO_SP(sp);
SERIAL_CHAR('(');
if (x & lt; 100) { SERIAL_CHAR(' '); if (x & lt; 10) SERIAL_CHAR(' '); }
SERIAL_ECHO(x);
SERIAL_CHAR(',');
if (y & lt; 100) { SERIAL_CHAR(' '); if (y & lt; 10) SERIAL_CHAR(' '); }
SERIAL_ECHO(y);
SERIAL_CHAR(')');
serial_delay(5);
}

static void serial_echo_column_labels(const uint8_t sp) {
SERIAL_ECHO_SP(7);
for (int8_t i = 0; i & lt; GRID_MAX_POINTS_X; i++) {
if (i & lt; 10) SERIAL_CHAR(' ');
SERIAL_ECHO(i);
SERIAL_ECHO_SP(sp);
}
serial_delay(10);
}

/**
* Produce one of these mesh maps:
* 0: Human-readable
* 1: CSV format for spreadsheet import
* 2: TODO: Display on Graphical LCD
* 4: Compact Human-Readable
*/
void unified_bed_leveling::display_map(const int map_type) {
#if HAS_AUTO_REPORTING || ENABLED(HOST_KEEPALIVE_FEATURE)
suspend_auto_report = true;
#endif

constexpr uint8_t eachsp = 1 + 6 + 1, // [-3.567]
twixt = eachsp * (GRID_MAX_POINTS_X) - 9 * 2; // Leading 4sp, Coordinates 9sp each

const bool human = !(map_type & 0x3), csv = map_type == 1, lcd = map_type == 2, comp = map_type & 0x4;

SERIAL_ECHOPGM( " \nBed Topography Report " );
if (human) {
SERIAL_ECHOLNPGM( " :\n " );
serial_echo_xy(4, MESH_MIN_X, MESH_MAX_Y);
serial_echo_xy(twixt, MESH_MAX_X, MESH_MAX_Y);
SERIAL_EOL();
serial_echo_column_labels(eachsp - 2);
}
else {
SERIAL_ECHOPGM( " for " );
serialprintPGM(csv ? PSTR( " CSV:\n " ) : PSTR( " LCD:\n " ));
}

// Add XY probe offset from extruder because probe_at_point() subtracts them when
// moving to the XY position to be measured. This ensures better agreement between
// the current Z position after G28 and the mesh values.
const xy_int8_t curr = closest_indexes(xy_pos_t(current_position) + xy_pos_t(probe_offset));

if (!lcd) SERIAL_EOL();
for (int8_t j = GRID_MAX_POINTS_Y - 1; j & gt; = 0; j--) {

// Row Label (J index)
if (human) {
if (j & lt; 10) SERIAL_CHAR(' ');
SERIAL_ECHO(j);
SERIAL_ECHOPGM( " | " );
}

// Row Values (I indexes)
for (uint8_t i = 0; i & lt; GRID_MAX_POINTS_X; i++) {

// Opening Brace or Space
const bool is_current = i == curr.x & & j == curr.y;
if (human) SERIAL_CHAR(is_current ? '[' : ' ');

// Z Value at current I, J
const float f = z_values[i][j];
if (lcd) {
// TODO: Display on Graphical LCD
}
else if (isnan(f))
serialprintPGM(human ? PSTR( " . " ) : PSTR( " NAN " ));
else if (human || csv) {
if (human & & f & gt; = 0.0) SERIAL_CHAR(f & gt; 0 ? '+' : ' '); // Space for positive ('-' for negative)
SERIAL_ECHO_F(f, 3); // Positive: 5 digits, Negative: 6 digits
}
if (csv & & i & lt; GRID_MAX_POINTS_X - 1) SERIAL_CHAR('\t');

// Closing Brace or Space
if (human) SERIAL_CHAR(is_current ? ']' : ' ');

SERIAL_FLUSHTX();
idle();
}
if (!lcd) SERIAL_EOL();

// A blank line between rows (unless compact)
if (j & & human & & !comp) SERIAL_ECHOLNPGM( " | " );
}

if (human) {
serial_echo_column_labels(eachsp - 2);
SERIAL_EOL();
serial_echo_xy(4, MESH_MIN_X, MESH_MIN_Y);
serial_echo_xy(twixt, MESH_MAX_X, MESH_MIN_Y);
SERIAL_EOL();
SERIAL_EOL();
}

#if HAS_AUTO_REPORTING || ENABLED(HOST_KEEPALIVE_FEATURE)
suspend_auto_report = false;
#endif
}

bool unified_bed_leveling::sanity_check() {
uint8_t error_flag = 0;

if (settings.calc_num_meshes() & lt; 1) {
SERIAL_ECHOLNPGM( " ?Mesh too big for EEPROM. " );
error_flag++;
}

return !!error_flag;
}

#endif // AUTO_BED_LEVELING_UBL