docs: Use hash marks for header lines

Consistently use leading hash marks (#) to note section headers.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
This commit is contained in:
Kevin O'Connor 2021-07-27 13:29:36 -04:00
parent afca515e2c
commit 37efd1b8f1
9 changed files with 67 additions and 104 deletions

View File

@ -4,8 +4,7 @@ This document describes Klipper's Application Programmer Interface
(API). This interface enables external applications to query and (API). This interface enables external applications to query and
control the Klipper host software. control the Klipper host software.
Enabling the API socket ## Enabling the API socket
-----------------------
In order to use the API server, the klippy.py host software must be In order to use the API server, the klippy.py host software must be
started with the `-a` parameter. For example: started with the `-a` parameter. For example:
@ -17,8 +16,7 @@ This causes the host software to create a Unix Domain Socket. A client
can then open a connection on that socket and send commands to can then open a connection on that socket and send commands to
Klipper. Klipper.
Request format ## Request format
--------------
Messages sent and received on the socket are JSON encoded strings Messages sent and received on the socket are JSON encoded strings
terminated by an ASCII 0x03 character: terminated by an ASCII 0x03 character:
@ -38,8 +36,7 @@ be on a single line, and it will automatically append the 0x03
terminator when transmitting a request. (The Klipper API server does terminator when transmitting a request. (The Klipper API server does
not have a newline requirement.) not have a newline requirement.)
API Protocol ## API Protocol
------------
The command protocol used on the communication socket is inspired by The command protocol used on the communication socket is inspired by
[json-rpc](https://www.jsonrpc.org/). [json-rpc](https://www.jsonrpc.org/).
@ -92,8 +89,7 @@ which could cause the associated response to be sent out of order with
respect to responses from other requests. A JSON request will never respect to responses from other requests. A JSON request will never
pause the processing of future JSON requests. pause the processing of future JSON requests.
Subscriptions ## Subscriptions
-------------
Some Klipper "endpoint" requests allow one to "subscribe" to future Some Klipper "endpoint" requests allow one to "subscribe" to future
asynchronous update messages. asynchronous update messages.
@ -120,8 +116,7 @@ with "endpoint" specific contents to the response template and then
send that template. If a "response_template" field is not provided send that template. If a "response_template" field is not provided
then it defaults to an empty dictionary (`{}`). then it defaults to an empty dictionary (`{}`).
Available "endpoints" ## Available "endpoints"
---------------------
By convention, Klipper "endpoints" are of the form By convention, Klipper "endpoints" are of the form
`<module_name>/<some_name>`. When making a request to an "endpoint", `<module_name>/<some_name>`. When making a request to an "endpoint",

View File

@ -1,7 +1,6 @@
# BL-Touch # BL-Touch
Connecting BL-Touch ## Connecting BL-Touch
-------------------
A **warning** before you start: Avoid touching the BL-Touch pin with A **warning** before you start: Avoid touching the BL-Touch pin with
your bare fingers, since it is quite sensitive to finger grease. And your bare fingers, since it is quite sensitive to finger grease. And
@ -39,8 +38,7 @@ It's important that the z_hop movement in safe_z_home is high enough
that the probe doesn't hit anything even if the probe pin happens to that the probe doesn't hit anything even if the probe pin happens to
be in its lowest state. be in its lowest state.
Initial tests ## Initial tests
-------------
Before moving on, verify that the BL-Touch is mounted at the correct Before moving on, verify that the BL-Touch is mounted at the correct
height, the pin should be roughly 2 mm above the nozzle when retracted height, the pin should be roughly 2 mm above the nozzle when retracted
@ -83,8 +81,7 @@ doesn't stop when you touch the pin.
If that was successful, do another `G28` (or `PROBE`) but this time If that was successful, do another `G28` (or `PROBE`) but this time
let it touch the bed as it should. let it touch the bed as it should.
BL-Touch gone bad ## BL-Touch gone bad
-----------------
Once the BL-Touch is in inconsistent state, it starts blinking red. Once the BL-Touch is in inconsistent state, it starts blinking red.
You can force it to leave that state by issuing: You can force it to leave that state by issuing:
@ -106,8 +103,7 @@ right position so it is able to lower and raise the pin and the red
light turns on and of. Use the `reset`, `pin_up` and `pin_down` light turns on and of. Use the `reset`, `pin_up` and `pin_down`
commands to achieve this. commands to achieve this.
BL-Touch "clones" ## BL-Touch "clones"
-----------------
Many BL-Touch "clone" devices work correctly with Klipper using the Many BL-Touch "clone" devices work correctly with Klipper using the
default configuration. However, some "clone" devices may require default configuration. However, some "clone" devices may require
@ -144,8 +140,7 @@ the second query reports "probe: TRIGGERED" then it indicates that
`pin_up_reports_not_triggered` should be set to False in the Klipper `pin_up_reports_not_triggered` should be set to False in the Klipper
config file. config file.
BL-Touch v3 ## BL-Touch v3
-----------
Some BL-Touch v3.0 and BL-Touch 3.1 devices may require configuring Some BL-Touch v3.0 and BL-Touch 3.1 devices may require configuring
`probe_with_touch_mode` in the printer config file. `probe_with_touch_mode` in the printer config file.
@ -172,8 +167,7 @@ probe. If configuring this value on a "clone" or older BL-Touch
device, be sure to test the probe accuracy before and after setting device, be sure to test the probe accuracy before and after setting
this value (use the `PROBE_ACCURACY` command to test). this value (use the `PROBE_ACCURACY` command to test).
Multi-probing without stowing ## Multi-probing without stowing
-----------------------------
By default, Klipper will deploy the probe at the start of each probe By default, Klipper will deploy the probe at the start of each probe
attempt and then stow the probe afterwards. This repetitive deploying attempt and then stow the probe afterwards. This repetitive deploying
@ -203,8 +197,7 @@ to True. On these devices it is a good idea to test the probe accuracy
before and after setting `probe_with_touch_mode` (use the before and after setting `probe_with_touch_mode` (use the
`PROBE_ACCURACY` command to test). `PROBE_ACCURACY` command to test).
Calibrating the BL-Touch offsets ## Calibrating the BL-Touch offsets
--------------------------------
Follow the directions in the [Probe Calibrate](Probe_Calibrate.md) Follow the directions in the [Probe Calibrate](Probe_Calibrate.md)
guide to set the x_offset, y_offset, and z_offset config parameters. guide to set the x_offset, y_offset, and z_offset config parameters.
@ -218,8 +211,7 @@ far above the nozzle as possible to avoid it touching printed parts.
If an adjustment is made to the probe position, then rerun the probe If an adjustment is made to the probe position, then rerun the probe
calibration steps. calibration steps.
BL-Touch output mode ## BL-Touch output mode
--------------------
* A BL-Touch V3.0 supports setting a 5V or OPEN-DRAIN output mode, * A BL-Touch V3.0 supports setting a 5V or OPEN-DRAIN output mode,
a BL-Touch V3.1 supports this too, but can also store this in its a BL-Touch V3.1 supports this too, but can also store this in its

View File

@ -2,8 +2,7 @@
This document describes Klipper benchmarks. This document describes Klipper benchmarks.
Micro-controller Benchmarks ## Micro-controller Benchmarks
---------------------------
This section describes the mechanism used to generate the Klipper This section describes the mechanism used to generate the Klipper
micro-controller step rate benchmarks. micro-controller step rate benchmarks.
@ -25,7 +24,7 @@ or other innocuous pins. **Always verify that it is safe to drive the
configured pins prior to running a benchmark.** It is not recommended configured pins prior to running a benchmark.** It is not recommended
to drive an actual stepper during a benchmark. to drive an actual stepper during a benchmark.
### Step rate benchmark test ### ### Step rate benchmark test
The test is performed using the console.py tool (described in The test is performed using the console.py tool (described in
[Debugging.md](Debugging.md)). The micro-controller is configured for [Debugging.md](Debugging.md)). The micro-controller is configured for
@ -88,7 +87,7 @@ delay"). This configuration is believed to be valid in real-world
usage when one is solely using Trinamic stepper drivers. The results usage when one is solely using Trinamic stepper drivers. The results
of these benchmarks are not reported in the Features.md document. of these benchmarks are not reported in the Features.md document.
### AVR step rate benchmark ### ### AVR step rate benchmark
The following configuration sequence is used on AVR chips: The following configuration sequence is used on AVR chips:
``` ```
@ -111,7 +110,7 @@ results match tests on both a 16Mhz at90usb and a 16Mhz atmega2560).
| 2 stepper | 296 | | 2 stepper | 296 |
| 3 stepper | 472 | | 3 stepper | 472 |
### Arduino Due step rate benchmark ### ### Arduino Due step rate benchmark
The following configuration sequence is used on the Due: The following configuration sequence is used on the Due:
``` ```
@ -133,7 +132,7 @@ The test was last run on commit `8d4a5c16` with gcc version
| 1 stepper (no delay) | 77 | | 1 stepper (no delay) | 77 |
| 3 stepper (no delay) | 299 | | 3 stepper (no delay) | 299 |
### Duet Maestro step rate benchmark ### ### Duet Maestro step rate benchmark
The following configuration sequence is used on the Duet Maestro: The following configuration sequence is used on the Duet Maestro:
``` ```
@ -155,7 +154,7 @@ The test was last run on commit `8d4a5c16` with gcc version
| 1 stepper (no delay) | 70 | | 1 stepper (no delay) | 70 |
| 3 stepper (no delay) | 254 | | 3 stepper (no delay) | 254 |
### Duet Wifi step rate benchmark ### ### Duet Wifi step rate benchmark
The following configuration sequence is used on the Duet Wifi: The following configuration sequence is used on the Duet Wifi:
``` ```
@ -179,7 +178,7 @@ The test was last run on commit `59a60d68` with gcc version
| 3 stepper | 525 | | 3 stepper | 525 |
| 4 stepper | 703 | | 4 stepper | 703 |
### Beaglebone PRU step rate benchmark ### ### Beaglebone PRU step rate benchmark
The following configuration sequence is used on the PRU: The following configuration sequence is used on the PRU:
``` ```
@ -200,7 +199,7 @@ The test was last run on commit `b161a69e` with gcc version `pru-gcc
| 2 stepper | 853 | | 2 stepper | 853 |
| 3 stepper | 883 | | 3 stepper | 883 |
### STM32F042 step rate benchmark ### ### STM32F042 step rate benchmark
The following configuration sequence is used on the STM32F042: The following configuration sequence is used on the STM32F042:
``` ```
@ -220,7 +219,7 @@ The test was last run on commit `0b0c47c5` with gcc version
| 2 stepper | 328 | | 2 stepper | 328 |
| 3 stepper | 558 | | 3 stepper | 558 |
### STM32F103 step rate benchmark ### ### STM32F103 step rate benchmark
The following configuration sequence is used on the STM32F103: The following configuration sequence is used on the STM32F103:
``` ```
@ -242,7 +241,7 @@ The test was last run on commit `8d4a5c16` with gcc version
| 1 stepper (no delay) | 71 | | 1 stepper (no delay) | 71 |
| 3 stepper (no delay) | 288 | | 3 stepper (no delay) | 288 |
### STM32F4 step rate benchmark ### ### STM32F4 step rate benchmark
The following configuration sequence is used on the STM32F4: The following configuration sequence is used on the STM32F4:
``` ```
@ -277,7 +276,7 @@ using a 168Mhz clock).
| 1 stepper (no delay) | 52 | | 1 stepper (no delay) | 52 |
| 3 stepper (no delay) | 226 | | 3 stepper (no delay) | 226 |
### LPC176x step rate benchmark ### ### LPC176x step rate benchmark
The following configuration sequence is used on the LPC176x: The following configuration sequence is used on the LPC176x:
``` ```
@ -308,7 +307,7 @@ results were obtained by overclocking an LPC1768 to 120Mhz.
| 1 stepper (no delay) | 56 | | 1 stepper (no delay) | 56 |
| 3 stepper (no delay) | 240 | | 3 stepper (no delay) | 240 |
### SAMD21 step rate benchmark ### ### SAMD21 step rate benchmark
The following configuration sequence is used on the SAMD21: The following configuration sequence is used on the SAMD21:
``` ```
@ -331,7 +330,7 @@ micro-controller.
| 1 stepper (no delay) | 83 | | 1 stepper (no delay) | 83 |
| 3 stepper (no delay) | 321 | | 3 stepper (no delay) | 321 |
### SAMD51 step rate benchmark ### ### SAMD51 step rate benchmark
The following configuration sequence is used on the SAMD51: The following configuration sequence is used on the SAMD51:
``` ```
@ -362,7 +361,7 @@ micro-controller.
| 1 stepper (no delay) | 42 | | 1 stepper (no delay) | 42 |
| 3 stepper (no delay) | 194 | | 3 stepper (no delay) | 194 |
### RP2040 step rate benchmark ### ### RP2040 step rate benchmark
The following configuration sequence is used on the RP2040: The following configuration sequence is used on the RP2040:
@ -388,7 +387,7 @@ Pico board.
| 1 stepper (no delay) | 5 | | 1 stepper (no delay) | 5 |
| 3 stepper (no delay) | 22 | | 3 stepper (no delay) | 22 |
### Linux MCU step rate benchmark ### ### Linux MCU step rate benchmark
The following configuration sequence is used on a Raspberry Pi: The following configuration sequence is used on a Raspberry Pi:
``` ```
@ -409,7 +408,7 @@ The test was last run on commit `db0fb5d5` with gcc version `gcc
| 2 stepper | 350 | | 2 stepper | 350 |
| 3 stepper | 400 | | 3 stepper | 400 |
## Command dispatch benchmark ## ## Command dispatch benchmark
The command dispatch benchmark tests how many "dummy" commands the The command dispatch benchmark tests how many "dummy" commands the
micro-controller can process. It is primarily a test of the hardware micro-controller can process. It is primarily a test of the hardware
@ -450,8 +449,7 @@ hub.
| stm32f446 (USB) | 870K | 01d2183f | arm-none-eabi-gcc (Fedora 7.4.0-1.fc30) 7.4.0 | | stm32f446 (USB) | 870K | 01d2183f | arm-none-eabi-gcc (Fedora 7.4.0-1.fc30) 7.4.0 |
| rp2040 (USB) | 873K | c5667193 | arm-none-eabi-gcc (Fedora 10.2.0-4.fc34) 10.2.0 | | rp2040 (USB) | 873K | c5667193 | arm-none-eabi-gcc (Fedora 10.2.0-4.fc34) 10.2.0 |
Host Benchmarks ## Host Benchmarks
---------------
It is possible to run timing tests on the host software using the It is possible to run timing tests on the host software using the
"batch mode" processing mechanism (described in "batch mode" processing mechanism (described in

View File

@ -25,7 +25,7 @@ application. This document is not an authoritative reference; it is
intended as a collection of useful information that the Klipper intended as a collection of useful information that the Klipper
developers have accumulated. developers have accumulated.
## AVR micro-controllers ## ## AVR micro-controllers
In general, the Arduino project is a good reference for bootloaders In general, the Arduino project is a good reference for bootloaders
@ -46,7 +46,7 @@ use.
The "avrdude" program is the most common tool used to flash atmega The "avrdude" program is the most common tool used to flash atmega
chips (both bootloader flashing and application flashing). chips (both bootloader flashing and application flashing).
### Atmega2560 ### ### Atmega2560
This chip is typically found in the "Arduino Mega" and is very common This chip is typically found in the "Arduino Mega" and is very common
in 3d printer boards. in 3d printer boards.
@ -65,7 +65,7 @@ To flash an application use something like:
avrdude -cwiring -patmega2560 -P/dev/ttyACM0 -b115200 -D -Uflash:w:out/klipper.elf.hex:i avrdude -cwiring -patmega2560 -P/dev/ttyACM0 -b115200 -D -Uflash:w:out/klipper.elf.hex:i
``` ```
### Atmega1280 ### ### Atmega1280
This chip is typically found in earlier versions of the "Arduino This chip is typically found in earlier versions of the "Arduino
Mega". Mega".
@ -84,7 +84,7 @@ To flash an application use something like:
avrdude -carduino -patmega1280 -P/dev/ttyACM0 -b57600 -D -Uflash:w:out/klipper.elf.hex:i avrdude -carduino -patmega1280 -P/dev/ttyACM0 -b57600 -D -Uflash:w:out/klipper.elf.hex:i
``` ```
### Atmega1284p ### ### Atmega1284p
This chip is commonly found in "Melzi" style 3d printer boards. This chip is commonly found in "Melzi" style 3d printer boards.
@ -109,7 +109,7 @@ application use something like this instead:
avrdude -carduino -patmega1284p -P/dev/ttyACM0 -b57600 -D -Uflash:w:out/klipper.elf.hex:i avrdude -carduino -patmega1284p -P/dev/ttyACM0 -b57600 -D -Uflash:w:out/klipper.elf.hex:i
``` ```
### At90usb1286 ### ### At90usb1286
This document does not cover the method to flash a bootloader to the This document does not cover the method to flash a bootloader to the
At90usb1286 nor does it cover general application flashing to this At90usb1286 nor does it cover general application flashing to this
@ -124,7 +124,7 @@ One can flash an application with it using something like:
teensy_loader_cli --mcu=at90usb1286 out/klipper.elf.hex -v teensy_loader_cli --mcu=at90usb1286 out/klipper.elf.hex -v
``` ```
### Atmega168 ### ### Atmega168
The atmega168 has limited flash space. If using a bootloader, it is The atmega168 has limited flash space. If using a bootloader, it is
recommended to use the Optiboot bootloader. To flash that bootloader recommended to use the Optiboot bootloader. To flash that bootloader
@ -143,8 +143,7 @@ like:
avrdude -carduino -patmega168 -P/dev/ttyACM0 -b115200 -D -Uflash:w:out/klipper.elf.hex:i avrdude -carduino -patmega168 -P/dev/ttyACM0 -b115200 -D -Uflash:w:out/klipper.elf.hex:i
``` ```
SAM3 micro-controllers (Arduino Due) ## SAM3 micro-controllers (Arduino Due)
------------------------------------
It is not common to use a bootloader with the SAM3 mcu. The chip It is not common to use a bootloader with the SAM3 mcu. The chip
itself has a ROM that allows the flash to be programmed from 3.3V itself has a ROM that allows the flash to be programmed from 3.3V
@ -167,8 +166,7 @@ bossac -U -p /dev/ttyACM0 -a -e -w out/klipper.bin -v -b
bossac -U -p /dev/ttyACM0 -R bossac -U -p /dev/ttyACM0 -R
``` ```
SAM4 micro-controllers (Duet Wifi) ## SAM4 micro-controllers (Duet Wifi)
----------------------------------
It is not common to use a bootloader with the SAM4 mcu. The chip It is not common to use a bootloader with the SAM4 mcu. The chip
itself has a ROM that allows the flash to be programmed from 3.3V itself has a ROM that allows the flash to be programmed from 3.3V
@ -187,8 +185,7 @@ To flash an application use something like:
bossac --port=/dev/ttyACM0 -b -U -e -w -v -R out/klipper.bin bossac --port=/dev/ttyACM0 -b -U -e -w -v -R out/klipper.bin
``` ```
SAMD21 micro-controllers (Arduino Zero) ## SAMD21 micro-controllers (Arduino Zero)
---------------------------------------
The SAMD21 bootloader is flashed via the ARM Serial Wire Debug (SWD) The SAMD21 bootloader is flashed via the ARM Serial Wire Debug (SWD)
interface. This is commonly done with a dedicated SWD hardware dongle. interface. This is commonly done with a dedicated SWD hardware dongle.
@ -226,8 +223,7 @@ flash command within the first few seconds of boot - something like:
avrdude -c stk500v2 -p atmega2560 -P /dev/ttyACM0 -u -Uflash:w:out/klipper.elf.hex:i avrdude -c stk500v2 -p atmega2560 -P /dev/ttyACM0 -u -Uflash:w:out/klipper.elf.hex:i
``` ```
SAMD51 micro-controllers (Adafruit Metro-M4 and similar) ## SAMD51 micro-controllers (Adafruit Metro-M4 and similar)
--------------------------------------------------------
Like the SAMD21, the SAMD51 bootloader is flashed via the ARM Serial Like the SAMD21, the SAMD51 bootloader is flashed via the ARM Serial
Wire Debug (SWD) interface. To flash a bootloader with Wire Debug (SWD) interface. To flash a bootloader with
@ -255,8 +251,7 @@ like:
bossac -U -p /dev/ttyACM0 --offset=0x4000 -w out/klipper.bin -v -b -R bossac -U -p /dev/ttyACM0 --offset=0x4000 -w out/klipper.bin -v -b -R
``` ```
STM32F103 micro-controllers (Blue Pill devices) ## STM32F103 micro-controllers (Blue Pill devices)
-----------------------------------------------
The STM32F103 devices have a ROM that can flash a bootloader or The STM32F103 devices have a ROM that can flash a bootloader or
application via 3.3V serial. To access this ROM, one should connect application via 3.3V serial. To access this ROM, one should connect
@ -276,7 +271,7 @@ for details on enabling the full uart on the Raspberry Pi GPIO pins.
After flashing, set both "boot 0" and "boot 1" back to low so that After flashing, set both "boot 0" and "boot 1" back to low so that
future resets boot from flash. future resets boot from flash.
### STM32F103 with stm32duino bootloader ### ### STM32F103 with stm32duino bootloader
The "stm32duino" project has a USB capable bootloader - see: The "stm32duino" project has a USB capable bootloader - see:
[https://github.com/rogerclarkmelbourne/STM32duino-bootloader](https://github.com/rogerclarkmelbourne/STM32duino-bootloader) [https://github.com/rogerclarkmelbourne/STM32duino-bootloader](https://github.com/rogerclarkmelbourne/STM32duino-bootloader)
@ -301,7 +296,8 @@ bootloader is still active (the bootloader will flash a board led
while it is running). Alternatively, set the "boot 0" pin to low and while it is running). Alternatively, set the "boot 0" pin to low and
"boot 1" pin to high to stay in the bootloader after a reset. "boot 1" pin to high to stay in the bootloader after a reset.
### STM32F103 with HID bootloader ### ### STM32F103 with HID bootloader
The [HID bootloader](https://github.com/Serasidis/STM32_HID_Bootloader) is a The [HID bootloader](https://github.com/Serasidis/STM32_HID_Bootloader) is a
compact, driverless bootloader capable of flashing over USB. Also available compact, driverless bootloader capable of flashing over USB. Also available
is a [fork with builds specific to the SKR Mini E3 1.2]( is a [fork with builds specific to the SKR Mini E3 1.2](
@ -389,8 +385,8 @@ not available, so it may be done by setting pin PA2 low if you flashed
the SKR Mini E3's "PIN" document. There is a ground pin next to PA2 the SKR Mini E3's "PIN" document. There is a ground pin next to PA2
which you can use to pull PA2 low. which you can use to pull PA2 low.
STM32F4 micro-controllers (SKR Pro 1.1) ## STM32F4 micro-controllers (SKR Pro 1.1)
===============================================
STM32F4 microcontrollers come equipped with a built-in system bootloader STM32F4 microcontrollers come equipped with a built-in system bootloader
capable of flashing over USB (via DFU), 3.3v Serial, and various other capable of flashing over USB (via DFU), 3.3v Serial, and various other
methods (see STM Document AN2606 for more information). Some methods (see STM Document AN2606 for more information). Some
@ -423,8 +419,7 @@ setting "boot 0" low, "boot 1" high and plugging in the device. After
programming is complete unplug the device and set "boot 1" back to low programming is complete unplug the device and set "boot 1" back to low
so the application will be loaded. so the application will be loaded.
LPC176x micro-controllers (Smoothieboards) ## LPC176x micro-controllers (Smoothieboards)
------------------------------------------
This document does not describe the method to flash a bootloader This document does not describe the method to flash a bootloader
itself - see: itself - see:
@ -439,8 +434,7 @@ this bootloader is to copy the application file (eg,
`out/klipper.bin`) to a file named `firmware.bin` on an SD card, and `out/klipper.bin`) to a file named `firmware.bin` on an SD card, and
then to reboot the micro-controller with that SD card. then to reboot the micro-controller with that SD card.
Running OpenOCD on the Raspberry PI ## Running OpenOCD on the Raspberry PI
-----------------------------------
OpenOCD is a software package that can perform low-level chip flashing OpenOCD is a software package that can perform low-level chip flashing
and debugging. It can use the GPIO pins on a Raspberry Pi to and debugging. It can use the GPIO pins on a Raspberry Pi to

View File

@ -3,8 +3,7 @@
This document describes the overall code layout and major code flow of This document describes the overall code layout and major code flow of
Klipper. Klipper.
Directory Layout ## Directory Layout
----------------
The **src/** directory contains the C source for the micro-controller The **src/** directory contains the C source for the micro-controller
code. The **src/atsam/**, **src/atsamd/**, **src/avr/**, code. The **src/atsam/**, **src/atsamd/**, **src/avr/**,
@ -40,8 +39,7 @@ contains temporary build time objects. The final micro-controller
object that is built is **out/klipper.elf.hex** on AVR and object that is built is **out/klipper.elf.hex** on AVR and
**out/klipper.bin** on ARM. **out/klipper.bin** on ARM.
Micro-controller code flow ## Micro-controller code flow
--------------------------
Execution of the micro-controller code starts in architecture specific Execution of the micro-controller code starts in architecture specific
code (eg, **src/avr/main.c**) which ultimately calls sched_main() code (eg, **src/avr/main.c**) which ultimately calls sched_main()
@ -91,8 +89,7 @@ inlining functions across compilation units, so most of these tiny
gpio functions are inlined into their callers, and there is no gpio functions are inlined into their callers, and there is no
run-time cost to using them. run-time cost to using them.
Klippy code overview ## Klippy code overview
--------------------
The host code (Klippy) is intended to run on a low-cost computer (such The host code (Klippy) is intended to run on a low-cost computer (such
as a Raspberry Pi) paired with the micro-controller. The code is as a Raspberry Pi) paired with the micro-controller. The code is
@ -117,8 +114,7 @@ response messages from the micro-controller in the Python code (see
the log (see **klippy/queuelogger.py**) so that the other threads the log (see **klippy/queuelogger.py**) so that the other threads
never block on log writes. never block on log writes.
Code flow of a move command ## Code flow of a move command
---------------------------
A typical printer movement starts when a "G1" command is sent to the A typical printer movement starts when a "G1" command is sent to the
Klippy host and it completes when the corresponding step pulses are Klippy host and it completes when the corresponding step pulses are
@ -229,8 +225,7 @@ kinematic classes. It's this part of the code which specifies the
movements and their timings. The remaining parts of the processing is movements and their timings. The remaining parts of the processing is
mostly just communication and plumbing. mostly just communication and plumbing.
Adding a host module ## Adding a host module
--------------------
The Klippy host code has a dynamic module loading capability. If a The Klippy host code has a dynamic module loading capability. If a
config section named "[my_module]" is found in the printer config file config section named "[my_module]" is found in the printer config file
@ -309,8 +304,7 @@ The following may also be useful:
sure to place a copyright notice at the top of the module. See the sure to place a copyright notice at the top of the module. See the
existing modules for the preferred format. existing modules for the preferred format.
Adding new kinematics ## Adding new kinematics
---------------------
This section provides some tips on adding support to Klipper for This section provides some tips on adding support to Klipper for
additional types of printer kinematics. This type of activity requires additional types of printer kinematics. This type of activity requires
@ -349,8 +343,7 @@ Useful steps:
to micro-controller commands. This is useful to exercise corner to micro-controller commands. This is useful to exercise corner
cases and to check for regressions. cases and to check for regressions.
Porting to a new micro-controller ## Porting to a new micro-controller
---------------------------------
This section provides some tips on porting Klipper's micro-controller This section provides some tips on porting Klipper's micro-controller
code to a new architecture. This type of activity requires good code to a new architecture. This type of activity requires good
@ -402,8 +395,7 @@ Useful steps:
the micro-controller with the main klippy.py program. the micro-controller with the main klippy.py program.
9. Consider adding build test cases in the test/ directory. 9. Consider adding build test cases in the test/ directory.
Coordinate Systems ## Coordinate Systems
------------------
Internally, Klipper primarily tracks the position of the toolhead in Internally, Klipper primarily tracks the position of the toolhead in
cartesian coordinates that are relative to the coordinate system cartesian coordinates that are relative to the coordinate system
@ -488,8 +480,7 @@ cartesian coordinates relative to the coordinate system specified in
the config file) after a `G28` home command. The `SET_GCODE_OFFSET` the config file) after a `G28` home command. The `SET_GCODE_OFFSET`
command can alter this value. command can alter this value.
Time ## Time
----
Fundamental to the operation of Klipper is the handling of clocks, Fundamental to the operation of Klipper is the handling of clocks,
times, and timestamps. Klipper executes actions on the printer by times, and timestamps. Klipper executes actions on the printer by

View File

@ -197,7 +197,7 @@ stepper_position = (sqrt(arm_length^2
+ cartesian_z_position) + cartesian_z_position)
``` ```
### Stepper motor acceleration limits ### ### Stepper motor acceleration limits
With delta kinematics it is possible for a move that is accelerating With delta kinematics it is possible for a move that is accelerating
in cartesian space to require an acceleration on a particular stepper in cartesian space to require an acceleration on a particular stepper
@ -218,7 +218,7 @@ this limit, moves at the extreme edge of the build envelope (where a
stepper arm may be nearly horizontal) will have a lower maximum stepper arm may be nearly horizontal) will have a lower maximum
acceleration and velocity. acceleration and velocity.
### Extruder kinematics ### ### Extruder kinematics
Klipper implements extruder motion in its own kinematic class. Since Klipper implements extruder motion in its own kinematic class. Since
the timing and speed of each print head movement is fully known for the timing and speed of each print head movement is fully known for
@ -232,7 +232,7 @@ generation uses the same formulas that cartesian robots use:
stepper_position = requested_e_position stepper_position = requested_e_position
``` ```
### Pressure advance ### ### Pressure advance
Experimentation has shown that it's possible to improve the modeling Experimentation has shown that it's possible to improve the modeling
of the extruder beyond the basic extruder formula. In the ideal case, of the extruder beyond the basic extruder formula. In the ideal case,

View File

@ -1,5 +1,4 @@
Measuring Resonances # Measuring Resonances
====================
Klipper has built-in support for ADXL345 accelerometer, which can be used to Klipper has built-in support for ADXL345 accelerometer, which can be used to
measure resonance frequencies of the printer for different axes, and auto-tune measure resonance frequencies of the printer for different axes, and auto-tune

View File

@ -1,5 +1,4 @@
Resonance Compensation # Resonance Compensation
====================
Klipper supports Input Shaping - a technique that can be used to reduce ringing Klipper supports Input Shaping - a technique that can be used to reduce ringing
(also known as echoing, ghosting or rippling) in prints. Ringing is a surface (also known as echoing, ghosting or rippling) in prints. Ringing is a surface

View File

@ -3,8 +3,7 @@
This document describes the process of running Klipper on a Beaglebone This document describes the process of running Klipper on a Beaglebone
PRU. PRU.
Building an OS image ## Building an OS image
--------------------
Start by installing the Start by installing the
[Debian 9.9 2019-08-03 4GB SD IoT](https://beagleboard.org/latest-images) [Debian 9.9 2019-08-03 4GB SD IoT](https://beagleboard.org/latest-images)
@ -20,8 +19,7 @@ git clone https://github.com/KevinOConnor/klipper
./klipper/scripts/install-beaglebone.sh ./klipper/scripts/install-beaglebone.sh
``` ```
Install Octoprint ## Install Octoprint
-----------------
One may then install Octoprint: One may then install Octoprint:
``` ```
@ -56,8 +54,7 @@ sudo systemctl start octoprint
Make sure the octoprint web server is accessible - it should be at: Make sure the octoprint web server is accessible - it should be at:
[http://beaglebone:5000/](http://beaglebone:5000/) [http://beaglebone:5000/](http://beaglebone:5000/)
Building the micro-controller code ## Building the micro-controller code
----------------------------------
To compile the Klipper micro-controller code, start by configuring it To compile the Klipper micro-controller code, start by configuring it
for the "Beaglebone PRU": for the "Beaglebone PRU":
@ -87,15 +84,13 @@ make flash
sudo service klipper start sudo service klipper start
``` ```
Remaining configuration ## Remaining configuration
-----------------------
Complete the installation by configuring Klipper and Octoprint Complete the installation by configuring Klipper and Octoprint
following the instructions in following the instructions in
[the main installation document](Installation.md#configuring-klipper). [the main installation document](Installation.md#configuring-klipper).
Printing on the Beaglebone ## Printing on the Beaglebone
--------------------------
Unfortunately, the Beaglebone processor can sometimes struggle to run Unfortunately, the Beaglebone processor can sometimes struggle to run
OctoPrint well. Print stalls have been known to occur on complex OctoPrint well. Print stalls have been known to occur on complex