g2core - The Next Generation
g2core is a 9 axes (XYZABC+UVW) motion control system designed for high-performance on small to mid-sized machines.
Our default target is the Arduino Due, though it can also be used with other boards.
Some features:
edge
branch for now.For both user and developer discussions of g2core, we recently created a mailing list:
Please feel welcome to join in. :smile:
G2 Edge is the branch for beta testing new features under development. New features are developed in feature branches and merged into the edge branch. Periodically edge is promoted to (stable) master.
Edge is for the adventurous. It is not guaranteed to be stable, but we do our best to achieve this. For production uses we recommend using the Master branch.
{fb:101.xx}
New features added. See linked issues and pull requests for details
Many things have changed in the internals for this very large pull request. The following list highlights some of these changes but is not meant to be comprehensive.
{fb:101.xx}
The fb:101 release is a mostly internal change from the fb:100 branches. Here are the highlights, more detailed on each item are further below:
{fb:100.xx}
The fb:100 release is a major change from the fb:089 and earlier branches. It represents about a year of development and has many major feature enhancements summarized below. These are described in more detail in the rest of this readme and the linked wiki pages.
The project is now called g2core (even if the repo remains g2). As of this release the g2core code base is split from the TinyG code base. TinyG will continue to be supported for the Xmega 8-bit platform, and new features will be added, specifically as related to continued support for CNC milling applications. The g2core project will focus on various ARM platforms, as it currently does, and add functions that are not possible in the 8-bit platform.
In this release the Motate hardware abstraction layer has been split into a separate project and is included in g2core as a git submodule. This release also provides better support for cross platform / cross target compilation. A summary of project changes is provided below, with details in this readme and linked wiki pages.
The fb:100 release is the base for number of other enhancements in the works and planned, including:
This build is primarily focused on support for the new boards based on the Atmel SamS70 family, as well as refining the motion control and long awaited feature enhancements. This list will be added to as development proceed.s
Build 100.xx has a number of changes, mostly related to extending Gcode support and supporting 3D printing using g2core. These include temperature controls, auto-bed leveling, planner performance improvements and active JSON comments in Gcode.
Communications has advanced to support a linemode protocol to greatly simplify host communications and flow control for very rapid Gcode streams. Please read the Communications pages for details. Also see the NodeJS communications module docs if you are building a UI or host controller.
Build 100.xx also significantly advances the project structure to support multiple processor architectures, hardware configurations and machine configurations in the same code base. Motate has been cleaved off into its own subproject. We recommend carefully reading the Dev pages if you are coding or compiling.
Note: Click the header next to the arrow to expand and display the details.
{"prbs":true}
to store the current position as if it were to position of a succesful probe.{"prbr":true}
to enable and {"prbr":false}
to enable and disable (respectively) the JSON {prb:{...}}
report after a probe.HAS_TEMPERATURE_SENSOR_1
, HAS_TEMPERATURE_SENSOR_2
, and HAS_TEMPERATURE_SENSOR_3
EXTRUDER_1_OUTPUT_PIN
, EXTRUDER_2_OUTPUT_PIN
, and BED_OUTPUT_PIN
BED_OUTPUT_INIT
in order to control configuration of the Bed output pin settings.{kNormal, fet_pin3_freq}
.EXTRUDER_1_FAN_PIN
for control of the temperature-enabled fan on extruder 1. (Only available on extruder 1 at the moment.)ADCCircuit
objects.
ADCCircuitSimplePullup
, ADCCircuitDifferentialPullup
, ADCCircuitRawResistance
Thermistor
and PT100
objects no longer take the pullup value in their constructor, but instead take a pointer to an ADCCircuit
object.Thermistor
and PT100
objects no longer assume an ADCPin
is used, but now take the type that conforms to the ADCPin
interface as a template argument.0.0
.1
- 6
):
ts
- (R) get the value of the TSTEP
registerpth
- (R/W) get/set the value of the TPWMTHRS
registercth
- (R/W) get/set the value of the TCOOLTHRS
registerhth
- (R/W) get/set the value of the THIGH
registersgt
- (R/W) get/set the value of the sgt
value of the COOLCONF
registersgr
- (R) get the SG_RESULT
value of the DRV_STATUS
registercsa
- (R) get the CS_ACTUAL
value of the DRV_STATUS
registersgs
- (R) get the stallGuard
value of the DRV_STATUS
registertbl
- (R/W) get/set the TBL
value of the CHOPCONF
registerpgrd
- (R/W) get/set the PWM_GRAD
value of the PWMCONF
registerpamp
- (R/W) get/set the PWM_AMPL
value of the PWMCONF
registerhend
- (R/W) get/set the HEND_OFFSET
value of the CHOPCONF
registerhsrt
- (R/W) get/set the HSTRT/TFD012
value of the CHOPCONF
registersmin
- (R/W) get/set the semin
value of the COOLCONF
registersmax
- (R/W) get/set the semax
value of the COOLCONF
registersup
- (R/W) get/set the seup
value of the COOLCONF
registersdn
- (R/W) get/set the sedn
value of the COOLCONF
registerKINEMATICS
define to KINE_CORE_XY
KINEMATICS
is KINE_CARTESIAN
AXIS_COREXY_A
and AXIS_COREXY_B
have been created.#define M1_MOTOR_MAP AXIS_COREXY_A // 1ma
#define M2_MOTOR_MAP AXIS_COREXY_B // 2ma
PLANNER_QUEUE_SIZE
and MIN_SEGMENT_MS
are now set in the board/*/hardware.h
files.PLANNER_QUEUE_SIZE
sets the size of the planner buffer array.
48
MIN_SEGMENT_MS
sets the minimum segment time (in milliseconds) and several other settings that are comuted based on it.
0.75
#define NOM_SEGMENT_MS ((float)MIN_SEGMENT_MS*2.0) // nominal segment ms (at LEAST MIN_SEGMENT_MS * 2)
#define MIN_BLOCK_MS ((float)MIN_SEGMENT_MS*2.0) // minimum block (whole move) milliseconds
TRAVERSE_AT_HIGH_JERK
can be set to true
, making traverse (G0
) moves (including E
-only moves in Marlin-flavored gcode mode) will use the jerk-high (jh
) settings.
false
or undefined G0
moves will continue to use the jerk-max (jm
) settings that feed (G1
) moves use.f
in each pid
n
object (read-only, for reporting) as well as an f
setting in the he
n
objects (for control).
H
n
_DEFAULT_F
, such as H1_DEFAULT_F
. Default value is 0.0
.he
n
f
value to 0.0
to effectively disable feed-forward.out
objects is set to whatever the pin is configured to be "inactive." This is based on the settings file DO
n_MODE
setting.DO10_MODE == IO_ACTIVE_LOW
then the pin at DO10
is initialized as HIGH
at board setup. This happen even before the main()
function starts, shortly after the GPIO clocks are enabled for each port.