-
Notifications
You must be signed in to change notification settings - Fork 65
AVR: Compiling
µCNC for AVR can be built in a several ways
- Get Visual Studio Code and install it.
- Install the PlatformIO extension.
- Open uCNC folder in VSCode.
- Edit
cnc_config.h file
andcnc_hal_config.h file
to fit your needs and board. - f needed edit the platformio.ini file environment for your board. Compile the sketch and upload it to your board.
WARNING: Arduino IDE will produce a larger output file. The makefile method has better compilation optimizations that produce a smaller binary file. With that in mind remember that some options can be activated using the makefile and others won't fit the device flash in Arduino IDE (UNO is already near max capabilities).
- Get Arduino IDE and install it.
- Go to uCNC folder and open uCNC.ino sketch.
- Edit
cnc_config.h file
andcnc_hal_config.h file
to fit your needs and board. - Compile the sketch and upload it to your board.
- Download and install GCC tools for AVR inside your PC. You can download the latest version of GCC tool for AVR from Microchip from here.
- Go to the
uCNC folder
and edit the boardcnc_config.h file
andcnc_hal_config.h file
to fit your needs and board. µCNC is configured by default to mimicGrbl
pin configuration in the Arduino UNO board. - Go to the
makefiles/avr folder
.- The makefile is configured by default to compile the code for the MCU (atmega328p) and working frequency (16Mhz) in Arduino UNO board. If the chosen board has a different MCU/working frequency the makefile must be adjusted by modifying
CPU = atmega328p
andFREQ = 16000000UL
- The makefile is configured by default to compile the code for the MCU (atmega328p) and working frequency (16Mhz) in Arduino UNO board. If the chosen board has a different MCU/working frequency the makefile must be adjusted by modifying
- Open a command console inside
makefiles/avr
folder and runmake clean all
- If everything went well you should have a hex file inside
makefiles/avr/build
folder - Now just upload µCNC to your board using an appropriate tool. xLoader for AVR is an easy tool to use.
Several UNO boards (including Mini and Nano variants) have been seen with some variants of the Atmega328P chip. Some boards come with Atmega328P others with Atmega328P(U/A/B) variants. Also some these chips have been fitted with the Urboot bootloader (instead of the original Arduino bootloader). They are not interchangeable as frequently you will get signature errors and byte mismatching errors during verification and programming You may need to adjust the board base config (extends = ) to match the flavor of your board.
By default the UNO board configs (UNO, Shield V3, etc..) are configured to use Arduino bootloader. For example:
[env:AVR-UNO]
extends = avr_arduino
build_flags = ${common_avr.build_flags} -D BOARD=\"src/hal/boards/avr/boardmap_uno.h\"
If your board has a MCU not supported by Arduino IDE you need to use the MiniCore version (for example the Atmega328PU). For this example this can be done like this.
[env:AVR-UNO]
extends = avr_minicore
board = Atmega328PB
build_flags = ${common_avr.build_flags} -D BOARD=\"src/hal/boards/avr/boardmap_uno.h\"
µCNC 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. µCNC is distributed WITHOUT ANY WARRANTY.
Also without the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
µCNC Wiki
- Home
- Basic user guide
- Porting µCNC and adding custom HAL
- Customizing the HAL file
- Adding custom Tools and Modules to µCNC
- FAQ
µCNC for ALL MCU
µCNC for AVR
µCNC for STM32F1 and STM32F4
µCNC for SAMD21
µCNC for ESP8266
µCNC for ESP32
µCNC for NXP LPC176x
µCNC for NXP RP2040