Coder Social home page Coder Social logo

paciente8159 / ucnc Goto Github PK

View Code? Open in Web Editor NEW
254.0 20.0 58.0 34.3 MB

µCNC - Universal CNC firmware for microcontrollers

Home Page: https://github.com/Paciente8159/uCNC/wiki

License: GNU General Public License v3.0

C 99.56% C++ 0.15% Makefile 0.03% Batchfile 0.01% Python 0.01% nesC 0.26%
cnc grbl linuxcnc hal arduino avr esp32 esp8266 firmware lpc1768 lpc1769 microcontroller samd21 stm32 raspberry-pi-pico rp2040 rp2040w

ucnc's Introduction

µCNC

µCNC - Universal CNC firmware for microcontrollers

Building µCNC

To configure µCNC to fit your hardware you can use µCNC config builder web tool to generate the config override files. Although most of the options are configurable via the web tool, some options might be missing and you might need to add them manually (regarding tools or addon modules mostly).

VERSION 1.9+ NOTES

Version 1.9 introduced several breaking changes from the previous version. These are:

  • new File System C wrapper module with System Menu and Enpoint integration.
  • new generic and customizable ring buffer used in communications
    • new RP2040 multicore mode (still experimental)
    • new NGC expressions evaluation and parsing

As with version 1.8 µCNC is becomming too large for Atmega328P (still supports it, but barelly fits). For that reason and to keep giving support for this MCU a branch of version 1.7 will be maintained with all the latest bugfixes and patches.

IMPORTANT NOTE

By default and as a safety measure µCNC control inputs (Emergency stop, Safety door, Hold, Cycle start-resume), as well as limit switches and probe, are held high by the microcontroller input weak-pull up resistors. If left unconnected or connected to normally opened switches these inputs will be in an active/triggered state and the controller may lock all motions. There are a few ways you can reconfigure µCNC to enable normal operation here.

Also beware that the main branch contain the latest changes, including bug fixes and some intermediate changes. Some of theses changes are very extent and can come with issues and although new PR are tested, they might have unexpected errors or behavior. If you find and issue please report. Also prefer the latest release version over the master branch.

About µCNC

Heavily inspired by Grbl and LinuxCNC, µCNC started to take shape in the second half of 2019, in an attempt to come out with a G-Code interpreter/controller software/firmware that is both compact and powerful as Grbl and flexible and modular as LinuxCNC, with the following goals in mind:

  1. µCNC is written in C (GNU99 compliant). This gives the advantage of being supported for a large number of CPU/MCU and compilers available.
  2. Modular library based:
    • Independent hardware. All MCU/hardware operations are written in a single translation unit that acts like a standardized HAL interface, leaving the CNC controlling code independent of the MCU architecture has long has it has the necessary abilities to execute code and respond to interrupts in a predictable away. Porting µCNC for a different MCU should be fairly straight forward.
    • Independent kinematics. Another dimension of the HAL is the possibility of defining how the translation between machine coordinates and the motions is translated back and forth. This should theoretically allow µCNC to be easily adaptable to several types of machines like cartesian, coreXY, deltas and others. µCNC supports up to 6 axis.
    • As of version 1.2.0 the addition of a HAL config that allow the user to build link inputs and outputs of the controller to specific functions or modules (like using a generic input has an encoder input or a PWM output has a servo controller with a PID module)
    • As of version 1.3.0 a new dimension to the HAL was added. The tool HAL. This allow to add multiple tools that can perform different task with µCNC.
    • As of version 1.4.0 a special kind of PIN type dedicated to servo motors control was added µCNC.
    • As of version 1.4.0 a new module extension system was introduced. It's now possible to add hooks in the core code and attach multiple listeners to execute additional code further expanding µCNC original capabilities. Modules can be enabled and disabled in the config file to enable feature on per need basis.
  3. Compatible with already existing tools and software for Grbl. There is no point in trying to reinvent the wheel (the whole wheel at least :-P). For that reason µCNC uses protocol compatible with Grbl. This allows it to easily integrate with Grbl ecosystem.

You can navigate the project wiki to find out more on how to use it.

You can expand µCNC using via modules. The available modules are at the µCNC-modules repository.

You can now also use µCNC config builder web tool to generate the files needed to adapt µCNC to your board.

You can also reach me at µCNC discord channel

µCNC discord channel

Supporting the project

µCNC is a completely free software. It took me a considerable amount of hours and effort to develop and debug so any help is appreciated. Building docs, testing and debugging, whatever. Also if you really like it and want help me keep the project running, you can help me to buy more equipment. Recently I have saved some extra money and bought a laser engraver. This hardware was fundamental to develop and testing version 1.2.0 and beyond. Currently this machine is being used to work on other projects and is running µCNC smoothly. Or you may just want to simply buy me a coffee or two for those extra long nights putting out code ;-)

paypal

Current µCNC status

µCNC current major version is v1.9. You can check all the new features, changes and bug fixes in the CHANGELOG.

Version 1.9 added the following new major features.

  • added support for STM32F0 MCU and an initial Bluepill example board.
  • new File System module. This new file system module acts like a C wrapper for accessing both Flash memory files and external memories (like SD cards), and abstracts the underlaying file systems used (LittleFS, SPIFFS, FatFs, etc...). It also integrates the File System with other modules such as System Menu and Endpoints to allow quicker and transversal development of features accross different MCU
  • new generic ring buffer in utils.h. This adds flexibility to make use of generic ring buffer implementations (via macros or pure C implementation with functions, or using custom SDK implementations for a particular architecture/use case). One example is to adapt generic ring buffer access to a multicore MCU.
  • new multicore mode for RP2040, using generic ring buffer implementation supported no multicore queue. This allows running all µCNC communications tasks (USB, UART, WIFI, etc...) in one core, while the other core is dedicated to parsing and executing GCode commands.
  • Suport for RS274NGC expressions and numbered parameters.

Version 1.8 added the following new major features.

  • new IO HAL that simplifies io control and calls.
  • added support for motion control/planner hijack. This allows to stash and restore all current buffered motions to allow execution of a completly new set of intermediate motions.
  • added realtime modification of step and dir bits to be executed in the fly.
  • added new tool for plasma THC.
  • all analog inputs were modified from 8bit resolution to 10bit.
  • complete redesign of PID module and modified tools functions to make use of PID update loop.
  • complete redesign of serial communications to support and deal with multi-stream/origins.
  • complete redesign of multi-stepper axis and self-squaring axis.
  • initial support for Scara kinematics
  • endpoint interface module to allow development of web services and REST modules for WiFi (available on v1.8.1)
  • websocket interface module to allow development of web sockets modules for WiFi (available on v1.8.7)

Version 1.7 added a new major feature.

  • added system menus module that allows to manage and render user menus in any type of display.

Version 1.6 added a couple of new features.

  • added support for RP2040 MCU.
  • moved tinyUSB to an external project allowing easier update and integration with both PIO and Arduino IDE.

Version 1.5 added a couple of new features.

  • added support for ESP8266 MCU and the WeMos D1 boards.
  • added support for ESP32 MCU's and the WeMos D1 R32 boards.
  • added support for LPC176x MCU and the Re-Arm boards.
  • full revision of the modular extension system based on events, delegates and listeners. All events share the same function declaration format. It's now easier to create add new events and handlers to the core code.

Version 1.4 added the following new features.

  • added support for STM32F4 MCU and the Blackpill boards.
  • new servo PIN type that generates a 50Hz with TOn - 1~2ms needed to control servo type motors.
  • support for delta kinematics.
  • new modular extension system based on events, delegates and listeners. It's now possible to inject code anywhere inside the core code by creating and adding code hooks that can then call and execute multiple listeners
  • added optional variable acceleration step generation (S-Curve speed profile)
  • added Trinamic drivers basic support. For now only TMC drivers with UART are available. TMC2208 as been tested with success.
  • added support for a subset of canned cycles (G8x), enabled via config file
  • added module for BLtouch probe

Version 1.3 added the following new features.

  • added support for SAMD21 MCU and the Arduino Zero/M0 boards.
  • new HAL for tool change and management.
  • modified file structure and modified tinyUSB source code files to allow compiling and loading the firmware with Arduino IDE.
  • gcode parser is extendable via modules
  • PID module initial implementation
  • encoder/counter module implemented

Version 1.2 added lot of new features needed for the future hardware/features support and some important bug fixes. These include:

  • the new HAL configuration file that introduces a more flexible way to modify the HAL and give customization power of LinuxCNC.
  • the addition off new PID and encoder modules to be used by the new HAL config, powered by an internal RTC clock.
  • integration tinyUSB, a complete USB stack frame that simplifies the creation of HAL code for new MCU.
  • the addition of an option for a 16bit version of the bresenham line algorithm that can improve step rate for weak 8bit processors or for specific applications like laser engraving.

G-Codes support

µCNC for now supports most of the RS274NGC v3:

List of Supported G-Codes since µCNC 1.9.2:
  - Non-Modal Commands: G4, G10*, G28, G30, G53, G92, G92.1, G92.2, G92.3
  - Motion Modes: G0, G1, G2, G3, G38.2, G38.3, G38.4, G38.5, G80, G81*, G82*, G83*, G85*, G86*, G89*
  - Feed Rate Modes: G93, G94
  - Unit Modes: G20, G21
  - Distance Modes: G90, G91
  - Plane Select Modes: G17, G18, G19
  - Tool Length Offset Modes: G43, G43.1*, G49
  - Cutter Compensation Modes: G40
  - Coordinate System Modes: G54, G55, G56, G57, G58, G59, G59.1, G59.2, G59.3
  - Control Modes: G61, G61.1, G64
  - Program Flow: M0, M1, M2, M30(same has M2), M60(same has M0)
  - Coolant Control: M7, M8, M9
  - Spindle Control: M3, M4, M5
  - Tool Change: M6
  - Valid Non-Command Words: A, B, C, F, H, I, J, K, L, N, P, Q, R, S, T, X, Y, Z
	- User(read/write) and parser(read only) parameters like #5221 (#5221 returns the G38 result for X axis)
	- Expressions like [1 + acos[0] - [#3 ** [4.0/2]]]

  - Outside the RS274NGC scope
    - Bilinear surface mapping: G39,G39.1,G39.2*
    - Servo Control: M10*
    - Digital pins/trimpot settings: M351* (set/get microsteps), M907* (set/get current via digipot)
    - Laser PPI M126*(mode) M127*(PPI) and M128*(Pulse width)
    - Valid Non-Command Words: E (used by 3D printing firmware like [Marlin](https://github.com/MarlinFirmware/Marlin)) (currently not used)

* see notes

NOTES:

  • also G10 L2 P28 and P30 to set homing coordinates
  • also G10 L2 P0 to set the current coordinates system offset
  • G59.1, G59.2 and G59.3 can be enabled in config
  • G43.1 was kept to be back compatible with Grbl using Z word to set the offset
  • M1 stop condition can be set in HAL file
  • M6 additional tools can be defined in HAL file
  • M10 only active if servo motors are configured
  • G39,G39.1,G39.2 only active if Height Map enabled

Other G/M codes available via external modules

  • Cubic and quadratic splines: G5/G5.1
  • Lathe radius mode: G7/G8
  • Spindle synchronized motion: G33
  • Stepper enable/disable: M17/M18
  • General Pin Control: M42
  • Enable/disable digital output pin synched/immediately: M62/M63/M64/M65
  • Enable/disable analog output pin synched/immediately: M67/M68
  • Enable/disable a digital output that controls the PSU: M80/M81
  • Smoothieware laser clustering mode modified gcode
  • Support for small LCD crystal displays with I2C interface
  • Support for monochromatic 128x64 displays (like Reprap fullgraphic discount)
  • Mobile web pendant via Wifi
  • BL touch module
  • SD card support using SPI
  • Wait for digital/analog input: M66
  • Set home position from current position: G28.1/G30.1
  • Play tone via PWM pin: M300
  • Trinamic driver support and config commands: M350* (set/get microsteps), M906* (set/get current), 913* (stealthchop threshold), 914* (stall sensitivity-stallGuard capable chips only), 920* (set/get register)

ALL custom G/M codes require at least ENABLE_PARSER_MODULES option enabled

TODO List of G-Codes in µCNC future releases:

µCNC capabilities

µCNC currently supports up to (depending on the MCU/board capabilities):

  - 6 independent axis
  - 8* stepper step/dir drivers
  - 9* limit switches (interrupt driven)
  - 1 probe switch (interrupt driven)
  - 1 feed hold input (interrupt driven)
  - 1 cycle start/resume input (interrupt driven)
  - 1 emergency stop (interrupt driven)
  - 1 door open switch (interrupt driven)
  - 16 pwm outputs
  - 16 analog inputs
  - 32* generic digital inputs
  - 32* generic digital outputs
  - 6 servo control outputs (50Hz-PPM)

* see notes

NOTES:

  • 6 steppers + 2 extra that can be configured to mirror 2 of the other 6 for dual drive axis
  • 6 limit switch (one per axis) plus 3 optional second axis X, Y or Z support dual endstops
  • Generic inputs support interrupts on the first 8 pins. Prior to version 1.4 the number of generic inputs was limited to 16.
  • Prior to version 1.4 the number of generic outputs was limited to 16.

µCNC with a configuration similar to Grbl is be able to keep up to 30KHz step rate for a 3 axis machine on an Arduino Uno at 16Mhz. (the stated rate depends on the length of the segments too, since many short length segments don't allow full speed to be achieved). For this specific type of use (like in laser engraving) a 16-bit version of stepping algorithm is possible pushing the theoretical step rate limit to 40KHz on a single UNO board.

µCNC current supported hardware

µCNC initial development was done both around Arduino UNO board just like GRBL. But µCNC can also be installed in other AVR boards like Arduino Mega (for Ramps), or similar boards (like Rambo). Other MCU's have and will be integrated in µCNC:

I used several UNO emulators but debugging was not easy. So a kind of virtual board (Windows PC) was created to test µCNC core code independently. It can run on:

  • AVR (Arduino UNO/MEGA)
  • STM32F1 (like the Bluepill) - v1.1.x
  • SAMD21 (Arduino Zero/M0) - v1.3.x
  • STM32F4 (like the Blackpill) - v1.4.x (Does not emulate EEPROM)
  • ESP8266 - v1.5.x (supports wifi connection via telnet, lacks analog and input isr)
  • ESP32 - v1.5.x (supports wifi connection via telnet and bluetooth)
  • NXP LPC1768/9 - v1.5.x (eeprom emulation and analog still being developed)
  • RP2040 - v1.6.x (supports wifi connection via telnet and bluetooth)
  • RP2040 - v1.9.x (added multicore mode)
  • STM32F0 (like the Bluepill) - v1.9.x
  • Windows PC (used for simulation/debugging only - ISR on Windows doesn't allow to use it as a real alternative)

µCNC current supported kinematics

µCNC is designed to be support both linear and non-linear kinematics and can be extended to support other types of kinematics. Currently µCNC supports the following kinematics:

  • Cartesian
  • CoreXY
  • Linear delta robot
  • Rotary delta robot
  • Scara

µCNC roadmap

A couple of changes were introduced with version 1.2.0 of µCNC to prepare for future and easier expansions. These changes are:

  • Add some extra functionalities like tool speed encoding, positional encoders, etc...
  • Change the files path structure to be more organic and well organized
  • Move all USB stack related functionalities to a third-party library called tinyUSB, opening the possibilities and speed development for new MCU's

Future versions are in plan for:

  • Add support for Web interface
  • Add more GCode features and hardware modules
  • Add additional kinematics
  • Add HAL for new MCU

Building µCNC

For building µCNC go ahead to the makefiles folder of the target MCU and follow the instructions specific to your device. Version 1.3.0 restructured the project so that it can easily be opened, configured, compiled and loaded via Arduino IDE environment. Just go to the uCNC folder and open uCNC.ino. See how to build the project for your board in the wiki.

ucnc's People

Contributors

ademenev avatar jarney avatar jimsynz avatar lonelycorn avatar paciente8159 avatar patryk3211 avatar v1engineeringinc avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

ucnc's Issues

[FR] Add wiring/alarm debugging option

Is your feature request related to a problem? Please describe.
Add conditional to enable some sort to wiring and alarm triggering debugging.
This would help determine the source of unexpected alarm conditions.

STEP6 and STEP7 enable pins are missing from the HAL

Describe the bug
STEP6 and STEP7 enable pins are missing from the HAL

What is your hardware
This is transverse to all architectures

What was the GCode running
N/A

Screenshots
N/A

Additional context
STEP6 and STEP7 enable pins are missing. This stepper drivers configured as shadow dual axis register to switch the enable pin.

Post Processor for uCNC

Hi,

I just reached this marvelous software. I am bit new in this field. Can you please guide about the post-processor of uCNC. I am using freecad.

Best regards,

[BUG] Software SPI and I2C need improvements

Describe the bug
Software SPI and I2C need better way to configure speed.
SPI library also as a bug in the delay calc.

Additional context
AVR us delay needs refactoring.
Aditional 100ns delay must be added for better precision.

Support for VFD RS485 communication

A clear and concise description of what the feature is:
Extension module (GCode, custom harware/functionality, etc)

  • Request to add support for popular chines VFD's that has RS485 communication protocol

Describe the solution you'd like
A clear and concise description of you would like to achieve and who it should work.

  • Ability to drive spindle using RS485 protocol

Describe your target machine hardware
A clear and concise description of your target machine hardware (mechanics, electronics, etc..).

Dual Y Axis (One motor is working where other is not)

Hi,

I am new in this field and I think reached to my last question. I have connected two motors on my Y-axis. In marlin firmware (on MKS Gen L V 2.1 Board = Ramps Board in pinouts (may be)), when updated for dual axis on Y axis, the machine run smoothly. However, I could not get the Y-Axis running with both the motors (though one is running and one is not) on GRBL or uCNC. Can you please guide me in this aspect.

(Edit) My second Y motor is attached to E1.

Best regards,

[BUG] Random acceleration issues

Describe the bug
Random ultra low homing motions or incorrect arc/splines acceleration calculations.
On multiple chained line motions the maximum acceleration would start to drop due to minimum limiting causing random ultra low motions or motions with acceleration bellow expected.

Also on motion control homing the motion control data block is not initialized properly leading to unexpected behavior.

What is your hardware
Describe your hardware:
All

Additional context
motion data max acceleration needs reset after each motion control line call.

[EN] LPC176x migration to bare-metal

Is your feature request related to a problem? Please describe.
Migrate LPC176x code to bare-metal
Use SSP instead of SPI to gain one SPI port option

[FR] Support external memory settings saving

Is your feature request related to a problem? Please describe.

  • Enable settings saving to external memory module

Describe the solution you'd like
Add module events to enable storing settings in external memories (for example via SD card module)

Describe your target machine hardware
All HAL

Additional context
N/A

[FR] Support for external module GRBL settings

Is your feature request related to a problem? Please describe.

  • Add custom Grbl type settings to external modules

Describe the solution you'd like
Implement custom Grbl type settings to be used by external modules

Describe your target machine hardware
All HAL

Additional context
N/A

[BUG] Abrupt deacceleration at high speeds and short segments

Describe the bug
Abrupt deacceleration at high speeds and short segments. This is particularly noticeable at laser rastering.

What is your hardware
N/A

What was the GCode running
Raster test image at 100mm/s

Screenshots
N/A

Additional context
Problem seems to be located in the planner

[BUG] $P report for AVR reports incorrect values for servo pins

Describe the bug
$P report for AVR reports incorrect values for servo pins

What is your hardware
Describe your hardware:

  1. AVR based board
  2. Independent
  3. Nothing

What was the GCode running
$P report for AVR reports incorrect values for servo pins. The internal mcu_get_servo function is not recalculating the servo pin correct value (in 0 to 255 range)

Screenshots
N/A

Additional context
N/A

mechanical error compensation

Hi.
I build my own CNC from polymer concrete
Photo
and I have some mechanical error , search CNC control
system for software compensation.
Is possible do it with uCNC ?
3D printer marlin have Skew compensation .. Any idea?

[FR] Support for laser PPI

Is your feature request related to a problem? Please describe.
A clear and concise description of what the feature is:

  • Add core support for laser PPI

Describe the solution you'd like
Implement core support for laser PPI with tight coupling with stepping pulses.

Describe your target machine hardware
All HAL

Additional context
N/A

[FR] Support RP2040 MCU

Is your feature request related to a problem? Please describe.

  • Add support for RP2040

Describe the solution you'd like
Add support for RP2040 like RPi Pico W

Describe your target machine hardware
RP2040 MCU

Additional context
N/A

[FR] Allow more dual axis drivers

Is your feature request related to a problem? Please describe.
Allow additional dual drive axis. If there is vacant stepper drivers allow those to be used as dual drive axis.

[EN] Move TinyUSB to external dep

Is your feature request related to a problem? Please describe.
Move TinyUSB to external dep library. Cleaner code and easier to update.

Describe the solution you'd like
Add TinyUSB as an external ArduinoIDE/PlatformIO library.

[FR] Add additional support for CNC lathes

Is your feature request related to a problem? Please describe.
Add additional lathe support besides the existing G33 module.

Describe the solution you'd like
Add additional support in for G7/G8 (lathe mode), G76 and G10 L1 L10 and L11.

Describe your target machine hardware
Any CNC lathe and any board

Additional context

  • option 1: integrate in the core
  • option 2: integrate via module(s)

[BUG] M351 read output pins states in RAMBO

Describe the bug
M351 output read command reads pins as inputs and not as outputs

What is your hardware
AVR RAMBO

What was the GCode running
N/A

Screenshots
N/A

Additional context
N/A

Paid development of Rotary Delta kinematics for esp32[FR]

Is your feature request related to a problem? Please describe.
A clear and concise description of what the feature is:

  • HAL kinematics

Describe the solution you'd like
A clear and concise description of you would like to achieve and who it should work.

Describe your target machine hardware
A clear and concise description of your target machine hardware (mechanics, electronics, etc..).
Delta robot
Additional context
Add any other context or screenshots about the feature request here.

[BUG] Homing issue

Describe the bug

I have noticed this issues during homing procedure:

Expected behaviour:

image

Current behaviour:

image

I does not happen every time. It's random.

What is your hardware

Arduino Uno + CNC Shield v3
uCNC 1.5.6

Settings:

$0=33.333
$3=2
$4=0
$10=1
$11=0.200
$13=0
$20=1
$23=0
$26=250
$27=4.000
$32=0
$80=1
$100=80.000
$101=144.000
$110=6000.000
$111=6000.000
$120=1000.000
$121=1000.000

What was the GCode running

$H

Additional context

My uCNC is slightly modified. I have to add a couple of lines of code. However, i don't think my changes could be related to this issues. I will try to add some datails if necessary.

[BUG] No command response after M3/M4

Describe the bug
If a M3 or M4 (with laser mode disabled) is sent without any gcode running the board stops accepting gcode commands.

All hardware

What was the GCode running
None. A single M3 S10 for example locks

Screenshots

Additional context
The problem is the interpolator sync function that has condition that causes the deadlock. Needs fixing.

Can I send a compiled F103C8T6 HEX file? Email [email protected]

Hello, I am from China, I am a cnc enthusiast, my job is a machining center master, cnc is a hobby, I used this firmware from https://github.com/robomechs/6-AXIS-USBCNC- GRBL, I saw your source code today. I downloaded the source code to the linux system, installed arm-none gcc, and used the make command to compile, but after downloading, I connected the computer through the ch340g serial port module and sent $$ without any response, and then I tried to uncomment them separately in the boardmap_bluepill.h file//Setup COM pins (must match selected COM port)
//#define RX_BIT 10
//#define TX_BIT 9
//#define RX_PORT A
//#define TX_PORT A

And //#define COM_PORT 1
//#define TX_BIT 9
//#define TX_PORT A
//#define RX_BIT 10
//#define RX_PORT A
There is no response after compiling and downloading. I don’t know much about C++ and microcontrollers. Can you send me a HEX file of F103C8T6 to [email protected], and tell me whether the communication method is serial or USB virtual serial

[FR] Add support for comments started with ';'

Is your feature request related to a problem? Please describe.
Add support for comments started with ';'. Currently only supports RS274NGC commands that are delimited by '(' and ')'

[EN] Move TMC drivers to external module

Is your feature request related to a problem? Please describe.

  • Move TMC drivers to external module (out of the core scope)

Describe the solution you'd like
Move TMC drivers to external module (out of the core scope)

Describe your target machine hardware
All HAL

Additional context
N/A

[FR] Implement Smoothieware S cluster

Is your feature request related to a problem? Please describe.
Implement Smoothieware S cluster to compress S commands for laser rastering.

Describe the solution you'd like
Example:
S values for each dot colon delimited up to 8 values per line.
In this case a S_value_ is given for every dot at 0.1mm spacing.

G1 Y-0.8S0.875:0:0:0:0.875:0:0:0.875
G1 Y-0.3S0:0:0.875
G1 Y-0.4S0:0:0:0.875

Describe your target machine hardware
N/A

Additional context
Laserburn Smoothie Cluster

[BUG] Dwell is being executed out of time

Describe the bug
G4 (dwell) is being executed immediately and not on where it should in the code.

What is your hardware
All

What was the GCode running
This code will execute dwell before first motion

G90 G17 G40 G21 G54
G0 X0 Y0 F1000
G91
G1 X100
G4P5
G0 X-100
M2

[FR] Add extra UART ports

Is your feature request related to a problem? Please describe.
Add extra UART ports to be used by the softuart lib or with Grbl TFT's

[BUG] Incorrect dynamic laser mode (M4) power factoring

Describe the bug
Dynamic laser power mode M4 accel/deaccel range is being calculated over the segment junction speed and not the programmed speed. This changes laser power density applied. Also causes some noticeable overburn on the extremities.

What is your hardware
N/A

Issue with zeroing out work position.

Describe the bug
So as you know my machine has end-stops on X & Y and I have a probe which I sometimes use on Z, but most of the time I just jog the Z axis into position at hit the "Zero out work offsets" for the Z axis in CNC.js. This sends G10 L20 P1 Z0 to which µCNC returns "Unsupported command".

What is your hardware
Describe your hardware:
https://github.com/jimsynz/uCNC/tree/master/

What was the GCode running
G10 L20 P1 Z0

Additional context
So I had a look at the parser source and I see that L20 is not supported and only L2 is supported. A quick google says that they're synonyms and should both have the same behaviour. I was about to open a PR to add it when I thought I'd better test it and sent G10 L2 P1 Z0 and got back an ok however the WPos for the Z axis is still a non-zero value.

$10=0
ok
> ?
<Idle|WPos:0.000,0.000,50.000|FS:0.000,0>
ok
> $10=1
ok
> ?
<Idle|MPos:0.000,0.000,50.000|FS:0.000,0>
ok
> $10=0
ok
> ?
<Idle|WPos:0.000,0.000,50.000|FS:0.000,0>
ok
> G10 L20 P1 Z0
error:20 (Unsupported command)
> G10 L2 P1 Z0
ok
> ?
<Idle|WPos:0.000,0.000,50.000|FS:0.000,0|WCO:0.000,0.000,0.000>
ok
>

I noticed the addition of WCO:0,0,0 in the status, however if I'm understanding the G10 command it should be setting the work position, not the offset? Is that not right?

Thanks!

Compilation error

Hello,
Tried to compile for Bluepill custom configuration, get an error when I disable //#define PROBE_BIT 9 in boardmap_bluepill.h.
It says "c:/users/dst/.platformio/packages/toolchain-gccarmnoneeabi/bin/../lib/gcc/arm-none-eabi/9.2.1/../../../../arm-none-eabi/bin/ld.exe: .pio/build/bluepill_f103c8/src/src/hal/mcus/stm32f1x/mcu_stm32f1x.c.o: in function mcu_init': mcu_stm32f1x.c:(.text.mcu_init+0x41e): undefined reference to mcu_disable_probe_isr'".
Actually I am ok with not disable it, just reporting, Thanks for great project. Have not enough knowledge to fix it.

It is win10, vscode 1.69.0-insider, pio latest

[BUG] Typo! procotol_send_newline

Describe the bug
The function name has an ugly typo. procotol_send_newline in protocol.c

Additional context
No additional context. Just a typo.

[BUG] Protocol message contamination with TX Sync

Describe the bug
In sync tx mode, protocol messages get contaminated with status reports.

What is your hardware
Describe your hardware:

  1. All boards

What was the GCode running
Auto report status enabled

[BUG] STM32 UART incorrect baudrate

Describe the bug
STM32 UART is set with incorrect baudrate (no USB) with option FRAMEWORK_CLOCKS_INIT enabled

What is your hardware
Describe your hardware:

  1. STM32 F1 and F4

Additional context
With FRAMEWORK_CLOCKS_INIT APB2 will run at 2x the expected speed making the UART incorrectly configured.

[FR] Support for Graphical displays

Is your feature request related to a problem? Please describe.

  • Add new module for Graphical displays

Describe the solution you'd like
Add new module for Graphical displays. u8g2 or other middleware library might be needed.

Describe your target machine hardware
All HAL

Additional context
N/A

[BUG] Probe fails using ISR on STM32

Describe the bug
Probing fails to stop on detection via ISR. Works ok with FORCE_SOFT_POLLING enabled

What is your hardware
Describe your hardware:
STM32 chips

[BUG] LPC176x USB crash at high rate GCode sending

Describe the bug
LPC176x USB crash when sending GCode at a very high rate (for example laser rastering). On UART this problem does not happen.
There may be an issue with TinyUSB.

What is your hardware
Describe your hardware:

  1. Re-ARM boards with version 1.5.1

What was the GCode running
Image laser rastering.

[EN] Add I2C speed configuration function

Is your feature request related to a problem? Please describe.
Add speed configuration function to I2C. This might be required by some libraries.

Describe the solution you'd like
Add speed configuration function to I2C like in SPI.

[FR] Bed Mesh autoleveling support for pcb engraving

Is your feature request related to a problem? Please describe.
A clear and concise description of what the feature is:

  • Extension module - GCode and transformation

Describe the solution you'd like
If you want to engrave PCBs properly, you need to have a bed mesh as copper layer is super thin, cannot do that without having "bed mesh" and transformation it applies to gcode

Describe your target machine hardware
Every machine as it can be done with clamps to pcb + engraving tool

Additional context
Klipper, Marlin, Reprap firmwares all have this implemented

[BUG] mcu_delay_us might lead to deadlock on ARM

Describe the bug
mcu_delay_us might lead to deadlock on ARM on an atomic operation due to the millis counter dependency that works based on Systick ISR. Need to revert to Debug counter.

What is your hardware
Describe your hardware:

  1. All ARM chips

What was the GCode running
Using mcu_delay_us in atomic operations like softuart.

Additional context
N/A

[BUG] Some $ settings issue an error

Describe the bug
Some $ settings issue an error and are not correctly stored in EEPROM.

What is your hardware
All

What was the GCode running
For example $100 setting.

[FR] Add option to set PWM ports frequency

Is your feature request related to a problem? Please describe.
Add option to set PWM ports frequency. This might improve laser control response. Currently fixed at 1KHz for all hardware.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.