/grbl-xcp

Grbl fork for the X-Carve Pro based on ATmega2560

Primary LanguageCOtherNOASSERTION

grbl-xcp

Grbl 1.1h fork for the X-Carve Pro machine.

Prerequisites

macOS

  • Install the Arduino IDE.
    • Can also be installed via brew cask install arduino
  • Install the srecord tools (srec_cat in particular)
    • brew install srecord
  • Add the embedded AVR toolchain to your path
    • export PATH=$PATH:/Applications/Arduino.app/Contents/Java/hardware/tools/avr/bin

TODO Investigate arduino-cli as simpler alternative

Linux (Debian)

  • Install the AVR toolchain packages and srecord tools
    • apt install -y gcc-avr binutils-avr avr-libc srecord

Compiling

Run make from the root of the repo. This produces a grbl.hex firmware file that can be flashed. See the original wiki for more notes on building from source.

There's an additional XCPgrblUpload.ino.with_bootloader.mega.hex target which combines grbl.hex with a bootloader hex file for the ATmega2560. The bootloader is the one embedded in the Arduino IDE. This combined hex file is what's flashed at the factory.

Flashing

See the same doc as above on the Grbl wiki for both flashing (grbl.hex) and compiling instructions.

Flashing the XCPgrblUpload.ino.with_bootloader.mega.hex is more invovled as you need to setup an ISP to erase and write the full program memory. One relatively easy approach is to use another Arduino as an ISP but this does require a small bit of wiring and uploading an custom ISP program to said Arduino.

There's also flash-grbl.sh and flash-combined.sh that wrap the appropriate avrdude command for the respective hex file.

Releases

There are automated builds setup on CircleCI for this repo. Currently they are run on PR requests and when changes are merged to master. Upon success, the firmware binaries (grbl.hex and XCPgrblUpload.ino.with_bootloader.mega.hex) are uploaded as a CircleCI artifact. Here's an example of the artifacts tab from a master branch build

When preparing a release, we want to use the Grbl+bootloader firmware (from the master branch build) for handing off to manufacturing. That means properly updating the build strings and then creating a git tag of the same name. That tag should be the basis for a GitHub release which includes the aforementioned hex file. See the initial release for an example.

Differences

Differences from the stock version of Grbl

  • Self-squaring
  • Custom motor drivers