From ea20c05260569bdfc0520fd88d368b779011e0d0 Mon Sep 17 00:00:00 2001 From: Rob Giseburt Date: Tue, 27 Sep 2016 16:46:54 -0500 Subject: [PATCH] Initial pass of changes to work on the gQuadratic (includes Motate update) --- Motate | 2 +- Resources/debug/mb_analyze.py | 11 +- g2core.atsln | 4 + g2core/board/gquadratic.mk | 6 +- ...ratic-a-pinout.h => gquadratic-b-pinout.h} | 156 +++++++++--------- g2core/board/gquadratic/hardware.h | 4 +- .../board/gquadratic/motate_pin_assignments.h | 16 +- g2core/board/printrboardg2/board_xio.cpp | 4 +- g2core/boards.mk | 2 +- g2core/canonical_machine.h | 25 +++ g2core/g2core.cppproj | 78 ++++++++- g2core/g2core.xcodeproj/project.pbxproj | 40 +++++ g2core/planner.cpp | 19 ++- g2core/planner.h | 47 +++++- 14 files changed, 303 insertions(+), 111 deletions(-) rename g2core/board/gquadratic/{gquadratic-a-pinout.h => gquadratic-b-pinout.h} (50%) diff --git a/Motate b/Motate index 73dbb3ce..84f1a21c 160000 --- a/Motate +++ b/Motate @@ -1 +1 @@ -Subproject commit 73dbb3ce43f28cb3ac3c9175b3569dd3d6c93d5b +Subproject commit 84f1a21c14a0e1d1b780c746afc6d19a850f867f diff --git a/Resources/debug/mb_analyze.py b/Resources/debug/mb_analyze.py index 13ab4deb..3e3368cb 100644 --- a/Resources/debug/mb_analyze.py +++ b/Resources/debug/mb_analyze.py @@ -25,13 +25,13 @@ def load_pool(filename): if buf: current_buffer = int(buf.groups()[0], 16) pool[TUMBLER[tumbler_pos]] = current_buffer - # print "TUMBLER[tumbler_pos]: %s=%i" % (TUMBLER[tumbler_pos], current_buffer) + print "TUMBLER[tumbler_pos]: %s=%i" % (TUMBLER[tumbler_pos], current_buffer) tumbler_pos += 1 else: buf = re.search('\(mpBuf_t\s\*\)\s(0x[0-9a-fA-F]+)', line) if buf: current_buffer = int(buf.groups()[0], 16) - # print "setup current_buffer: %s" % current_buffer + print "setup current_buffer: %s" % current_buffer pool[current_buffer] = {'move_time': 0} if current_buffer == pool['r']: pool[current_buffer]['is_r'] = True @@ -49,9 +49,11 @@ def load_pool(filename): if key == 'pv': pv = int(val, 16) pool[current_buffer]['pv'] = pv + print "pv: %s" % pv elif key == 'nx': - nv = int(val, 16) - pool[current_buffer]['nx'] = nv + nx = int(val, 16) + pool[current_buffer]['nx'] = nx + print "nx: %s" % nx elif key == 'buffer_state': pool[current_buffer]['buffer_state'] = val elif key == 'jerk': @@ -60,6 +62,7 @@ def load_pool(filename): pool[current_buffer]['linenum'] = val elif key == 'buffer_number': pool[current_buffer]['buffer_number'] = val + print "#: %s" % val elif key == 'junction_vmax': pool[current_buffer]['junction_vmax'] = float(val) elif key == 'cruise_velocity': diff --git a/g2core.atsln b/g2core.atsln index ca5ee57b..73d8f923 100755 --- a/g2core.atsln +++ b/g2core.atsln @@ -22,6 +22,7 @@ Global Shapeoko2|ARM = Shapeoko2|ARM shopbotShield|ARM = shopbotShield|ARM Stub|ARM = Stub|ARM + TestQuadratic|ARM = TestQuadratic|ARM TestQuintic|ARM = TestQuintic|ARM TestV9|ARM = TestV9|ARM Ultimakerv9k|ARM = Ultimakerv9k|ARM @@ -49,6 +50,8 @@ Global {44EA8FEC-55D7-4149-8A78-A574FC26BF51}.shopbotShield|ARM.ActiveCfg = shopbotShield|ARM {44EA8FEC-55D7-4149-8A78-A574FC26BF51}.shopbotShield|ARM.Build.0 = shopbotShield|ARM {44EA8FEC-55D7-4149-8A78-A574FC26BF51}.Stub|ARM.ActiveCfg = Shapeoko2|ARM + {44EA8FEC-55D7-4149-8A78-A574FC26BF51}.TestQuadratic|ARM.ActiveCfg = TestQuadratic|ARM + {44EA8FEC-55D7-4149-8A78-A574FC26BF51}.TestQuadratic|ARM.Build.0 = TestQuadratic|ARM {44EA8FEC-55D7-4149-8A78-A574FC26BF51}.TestQuintic|ARM.ActiveCfg = TestQuintic|ARM {44EA8FEC-55D7-4149-8A78-A574FC26BF51}.TestQuintic|ARM.Build.0 = TestQuintic|ARM {44EA8FEC-55D7-4149-8A78-A574FC26BF51}.TestV9|ARM.ActiveCfg = TestV9|ARM @@ -68,6 +71,7 @@ Global {D7779B24-5CD6-4A1B-893C-2CAE8CF7A3A0}.Shapeoko2|ARM.ActiveCfg = Stub|ARM {D7779B24-5CD6-4A1B-893C-2CAE8CF7A3A0}.shopbotShield|ARM.ActiveCfg = Stub|ARM {D7779B24-5CD6-4A1B-893C-2CAE8CF7A3A0}.Stub|ARM.ActiveCfg = Stub|ARM + {D7779B24-5CD6-4A1B-893C-2CAE8CF7A3A0}.TestQuadratic|ARM.ActiveCfg = Stub|ARM {D7779B24-5CD6-4A1B-893C-2CAE8CF7A3A0}.TestQuintic|ARM.ActiveCfg = Stub|ARM {D7779B24-5CD6-4A1B-893C-2CAE8CF7A3A0}.TestV9|ARM.ActiveCfg = Stub|ARM {D7779B24-5CD6-4A1B-893C-2CAE8CF7A3A0}.Ultimakerv9k|ARM.ActiveCfg = Stub|ARM diff --git a/g2core/board/gquadratic.mk b/g2core/board/gquadratic.mk index 14bae333..91010b7c 100755 --- a/g2core/board/gquadratic.mk +++ b/g2core/board/gquadratic.mk @@ -12,15 +12,15 @@ ########## # BOARDs for use directly from the make command line (with default settings) or by CONFIGs. -ifeq ("$(BOARD)","gquadratic-a") +ifeq ("$(BOARD)","gquadratic-b") BASE_BOARD=gquadratic - DEVICE_DEFINES += MOTATE_BOARD="gquadratic-a" + DEVICE_DEFINES += MOTATE_BOARD="gquadratic-b" DEVICE_DEFINES += SETTINGS_FILE=${SETTINGS_FILE} endif ########## -# The general pboard-a BASE_BOARD. +# The general gquadratic BASE_BOARD. ifeq ("$(BASE_BOARD)","gquadratic") _BOARD_FOUND = 1 diff --git a/g2core/board/gquadratic/gquadratic-a-pinout.h b/g2core/board/gquadratic/gquadratic-b-pinout.h similarity index 50% rename from g2core/board/gquadratic/gquadratic-a-pinout.h rename to g2core/board/gquadratic/gquadratic-b-pinout.h index 600accfe..c4650921 100755 --- a/g2core/board/gquadratic/gquadratic-a-pinout.h +++ b/g2core/board/gquadratic/gquadratic-b-pinout.h @@ -1,5 +1,5 @@ /* - * gquadratic-a-pinout.h - board pinout specification + * gquadratic-b-pinout.h - board pinout specification * This file is part of the g2core project * * Copyright (c) 2016 Robert Giseburt @@ -29,8 +29,8 @@ * */ -#ifndef GQUADRATIC_A_PINOUT_H -#define GQUADRATIC_A_PINOUT_H +#ifndef GQUADRATIC_B_PINOUT_H +#define GQUADRATIC_B_PINOUT_H /* * USAGE NOTES @@ -100,9 +100,9 @@ // So we have to explicitly enable them as PWM pins. // Generated with: // perl -e 'for($i=1;$i<14;$i++) { print "#define OUTPUT${i}_PWM 0\n";}' -#define OUTPUT1_PWM 1 // Timer0ch0 +#define OUTPUT1_PWM 1 // TC0.0 #define OUTPUT2_PWM 1 // PWM0.0 -#define OUTPUT3_PWM 1 // Timer0ch1 +#define OUTPUT3_PWM 1 // TC0.1 #define OUTPUT4_PWM 1 // PWM1.3 #define OUTPUT5_PWM 0 // unused #define OUTPUT6_PWM 0 // unused @@ -117,86 +117,86 @@ namespace Motate { // Arduino pin name & function -_MAKE_MOTATE_PIN(kOutput1_PinNumber, 'A', 0); // -_MAKE_MOTATE_PIN(kOutput3_PinNumber, 'A', 1); // -_MAKE_MOTATE_PIN(kSocket2_VrefPinNumber, 'A', 2); // -_MAKE_MOTATE_PIN(kI2C1_SDAPinNumber, 'A', 3); // -_MAKE_MOTATE_PIN(kI2C1_SCLPinNumber, 'A', 4); // -_MAKE_MOTATE_PIN(kOutput4_PinNumber, 'A', 5); // -_MAKE_MOTATE_PIN(kUnassigned1, 'A', 6); // Missing in 100-pin package -_MAKE_MOTATE_PIN(kUnassigned2, 'A', 7); // -_MAKE_MOTATE_PIN(kUnassigned3, 'A', 8); // -_MAKE_MOTATE_PIN(kSerial_RX, 'A', 9); // -_MAKE_MOTATE_PIN(kSerial_TX, 'A', 10); // +_MAKE_MOTATE_PIN(kOutput2_PinNumber, 'A', 0); // TC0.0 or PWM0 +_MAKE_MOTATE_PIN(kOutput3_PinNumber, 'A', 1); // TC0.1 or PWM1 +_MAKE_MOTATE_PIN(kSocket2_VrefPinNumber, 'A', 2); // PWM1 +_MAKE_MOTATE_PIN(kI2C1_SDAPinNumber, 'A', 3); // +_MAKE_MOTATE_PIN(kI2C1_SCLPinNumber, 'A', 4); // +_MAKE_MOTATE_PIN(kUnassigned1, 'A', 5); // +_MAKE_MOTATE_PIN(kUnassigned2, 'A', 6); // Missing in 100-pin package +_MAKE_MOTATE_PIN(kUnassigned3, 'A', 7); // +_MAKE_MOTATE_PIN(kUnassigned4, 'A', 8); // +_MAKE_MOTATE_PIN(kSerial_RX, 'A', 9); // +_MAKE_MOTATE_PIN(kSerial_TX, 'A', 10); // _MAKE_MOTATE_PIN(kSocket1_Microstep_1PinNumber, 'A', 11); // -_MAKE_MOTATE_PIN(kSocket1_EnablePinNumber, 'A', 12); // -_MAKE_MOTATE_PIN(kUnassigned4, 'A', 13); // -_MAKE_MOTATE_PIN(kUnassigned6, 'A', 14); // -_MAKE_MOTATE_PIN(kUnassigned5, 'A', 15); // -_MAKE_MOTATE_PIN(kUnassigned7, 'A', 16); // -_MAKE_MOTATE_PIN(kUnassigned8, 'A', 17); // -_MAKE_MOTATE_PIN(kUnassigned9, 'A', 18); // -_MAKE_MOTATE_PIN(kUnassigned10, 'A', 19); // -_MAKE_MOTATE_PIN(kUnassigned11, 'A', 20); // -_MAKE_MOTATE_PIN(kUnassigned13, 'A', 21); // -_MAKE_MOTATE_PIN(kUnassigned12, 'A', 22); // -_MAKE_MOTATE_PIN(kUnassigned14, 'A', 23); // -_MAKE_MOTATE_PIN(kUnassigned15, 'A', 24); // -_MAKE_MOTATE_PIN(kUnassigned16, 'A', 25); // -_MAKE_MOTATE_PIN(kUnassigned17, 'A', 26); // -_MAKE_MOTATE_PIN(kSocket1_VrefPinNumber, 'A', 27); // -_MAKE_MOTATE_PIN(kSerial_CTS, 'A', 28); // -_MAKE_MOTATE_PIN(kUnassigned18, 'A', 29); // Missing in 100-pin package -_MAKE_MOTATE_PIN(kSerial_RTS, 'A', 30); // -_MAKE_MOTATE_PIN(kOutputSAFE_PinNumber, 'A', 31); // +_MAKE_MOTATE_PIN(kSocket1_EnablePinNumber, 'A', 12); // +_MAKE_MOTATE_PIN(kUnassigned5, 'A', 13); // +_MAKE_MOTATE_PIN(kUnassigned6, 'A', 14); // +_MAKE_MOTATE_PIN(kUnassigned7, 'A', 15); // +_MAKE_MOTATE_PIN(kUnassigned8, 'A', 16); // +_MAKE_MOTATE_PIN(kUnassigned9, 'A', 17); // +_MAKE_MOTATE_PIN(kUnassigned10, 'A', 18); // +_MAKE_MOTATE_PIN(kUnassigned11, 'A', 19); // +_MAKE_MOTATE_PIN(kUnassigned12, 'A', 20); // +_MAKE_MOTATE_PIN(kUnassigned13, 'A', 21); // +_MAKE_MOTATE_PIN(kUnassigned14, 'A', 22); // +_MAKE_MOTATE_PIN(kUnassigned15, 'A', 23); // +_MAKE_MOTATE_PIN(kUnassigned16, 'A', 24); // +_MAKE_MOTATE_PIN(kUnassigned17, 'A', 25); // +_MAKE_MOTATE_PIN(kUnassigned18, 'A', 26); // +_MAKE_MOTATE_PIN(kSocket1_VrefPinNumber, 'A', 27); // TC2.1 +_MAKE_MOTATE_PIN(kSerial_CTS, 'A', 28); // +_MAKE_MOTATE_PIN(kUnassigned19, 'A', 29); // Missing in 100-pin package +_MAKE_MOTATE_PIN(kOutput1_PinNumber, 'A', 30); // PWM2 +_MAKE_MOTATE_PIN(kInput4_PinNumber, 'A', 31); // -_MAKE_MOTATE_PIN(kUnassigned20, 'B', 0); // -_MAKE_MOTATE_PIN(kUnassigned22, 'B', 1); // -_MAKE_MOTATE_PIN(kUnassigned21, 'B', 2); // -_MAKE_MOTATE_PIN(kUnassigned23, 'B', 3); // -//_MAKE_MOTATE_PIN( , 'B', 4); // TDI -//_MAKE_MOTATE_PIN( , 'B', 5); // TRACESDO -//_MAKE_MOTATE_PIN( , 'B', 6); // SWDIO -//_MAKE_MOTATE_PIN( , 'B', 7); // SWDCLK -//_MAKE_MOTATE_PIN( , 'B', 8); // XOUT -//_MAKE_MOTATE_PIN( , 'B', 9); // XIN -//_MAKE_MOTATE_PIN( , 'B', 10); // USB_D- -//_MAKE_MOTATE_PIN( , 'B', 11); // USB_D+ -//_MAKE_MOTATE_PIN( , 'B', 12); // ERASE -_MAKE_MOTATE_PIN(kUnassigned38, 'B', 13); // LED_1 (Heartbeat) - PWM2 +_MAKE_MOTATE_PIN(kUnassigned20, 'B', 0); // +_MAKE_MOTATE_PIN(kUnassigned21, 'B', 1); // +_MAKE_MOTATE_PIN(kUnassigned22, 'B', 2); // +_MAKE_MOTATE_PIN(kUnassigned23, 'B', 3); // +//_MAKE_MOTATE_PIN( , 'B', 4); // TDI +//_MAKE_MOTATE_PIN( , 'B', 5); // TRACESDO +//_MAKE_MOTATE_PIN( , 'B', 6); // SWDIO +//_MAKE_MOTATE_PIN( , 'B', 7); // SWDCLK +//_MAKE_MOTATE_PIN( , 'B', 8); // XOUT +//_MAKE_MOTATE_PIN( , 'B', 9); // XIN +//_MAKE_MOTATE_PIN( , 'B', 10); // USB_D- +//_MAKE_MOTATE_PIN( , 'B', 11); // USB_D+ +//_MAKE_MOTATE_PIN( , 'B', 12); // ERASE +_MAKE_MOTATE_PIN(kUnassigned24, 'B', 13); // LED_1 (Heartbeat) - PWM2 -//_MAKE_MOTATE_PIN( , 'D', 0); // USB_VBUS -_MAKE_MOTATE_PIN(kInput1_PinNumber, 'D', 1); // -_MAKE_MOTATE_PIN(kInput2_PinNumber, 'D', 2); // -_MAKE_MOTATE_PIN(kUnassigned24, 'D', 3); // -_MAKE_MOTATE_PIN(kUnassigned25, 'D', 4); // -_MAKE_MOTATE_PIN(kUnassigned26, 'D', 5); // -_MAKE_MOTATE_PIN(kInput3_PinNumber, 'D', 6); // -_MAKE_MOTATE_PIN(kInput4_PinNumber, 'D', 7); // -_MAKE_MOTATE_PIN(kUnassigned19, 'D', 8); // INTERRUPT_OUT -_MAKE_MOTATE_PIN(kUnassigned27, 'D', 9); // -_MAKE_MOTATE_PIN(kOutput2_PinNumber, 'D', 10); // -_MAKE_MOTATE_PIN(kUnassigned28, 'D', 11); // -_MAKE_MOTATE_PIN(kSocket2_DirPinNumber, 'D', 12); // -_MAKE_MOTATE_PIN(kSocket2_EnablePinNumber, 'D', 13); // -_MAKE_MOTATE_PIN(kSocket2_StepPinNumber, 'D', 14); // -_MAKE_MOTATE_PIN(kUnassigned29, 'D', 15); // +//_MAKE_MOTATE_PIN( , 'D', 0); // USB_VBUS +_MAKE_MOTATE_PIN(kInput1_PinNumber, 'D', 1); // +_MAKE_MOTATE_PIN(kInput2_PinNumber, 'D', 2); // +_MAKE_MOTATE_PIN(kUnassigned25, 'D', 3); // +_MAKE_MOTATE_PIN(kUnassigned26, 'D', 4); // +_MAKE_MOTATE_PIN(kUnassigned27, 'D', 5); // +_MAKE_MOTATE_PIN(kInput3_PinNumber, 'D', 6); // +_MAKE_MOTATE_PIN(kSerial_RTS, 'D', 7); // +_MAKE_MOTATE_PIN(kUnassigned28, 'D', 8); // INTERRUPT_OUT +_MAKE_MOTATE_PIN(kUnassigned29, 'D', 9); // +_MAKE_MOTATE_PIN(kUnassigned30, 'D', 10); // +_MAKE_MOTATE_PIN(kLED_RGBWPixelPinNumber, 'D', 11); // PWM0 +_MAKE_MOTATE_PIN(kSocket2_DirPinNumber, 'D', 12); // +_MAKE_MOTATE_PIN(kSocket2_EnablePinNumber, 'D', 13); // +_MAKE_MOTATE_PIN(kSocket2_StepPinNumber, 'D', 14); // +_MAKE_MOTATE_PIN(kOutputSAFE_PinNumber, 'D', 15); // _MAKE_MOTATE_PIN(kSocket2_Microstep_0PinNumber, 'D', 16); // _MAKE_MOTATE_PIN(kSocket2_Microstep_1PinNumber, 'D', 17); // -_MAKE_MOTATE_PIN(kSocket1_DirPinNumber, 'D', 18); // -_MAKE_MOTATE_PIN(kSocket1_StepPinNumber, 'D', 19); // +_MAKE_MOTATE_PIN(kSocket1_DirPinNumber, 'D', 18); // +_MAKE_MOTATE_PIN(kSocket1_StepPinNumber, 'D', 19); // _MAKE_MOTATE_PIN(kSocket1_Microstep_0PinNumber, 'D', 20); // _MAKE_MOTATE_PIN(kSocket1_Microstep_2PinNumber, 'D', 21); // -_MAKE_MOTATE_PIN(kUnassigned30, 'D', 22); // -_MAKE_MOTATE_PIN(kUnassigned31, 'D', 23); // Missing in 100-pin package -_MAKE_MOTATE_PIN(kUnassigned32, 'D', 24); // -_MAKE_MOTATE_PIN(kUnassigned33, 'D', 25); // -_MAKE_MOTATE_PIN(kUnassigned34, 'D', 26); // -_MAKE_MOTATE_PIN(kUnassigned35, 'D', 27); // +_MAKE_MOTATE_PIN(kUnassigned31, 'D', 22); // +_MAKE_MOTATE_PIN(kUnassigned32, 'D', 23); // Missing in 100-pin package +_MAKE_MOTATE_PIN(kUnassigned33, 'D', 24); // +_MAKE_MOTATE_PIN(kUnassigned34, 'D', 25); // +_MAKE_MOTATE_PIN(kUnassigned35, 'D', 26); // +_MAKE_MOTATE_PIN(kUnassigned36, 'D', 27); // _MAKE_MOTATE_PIN(kSocket2_Microstep_2PinNumber, 'D', 28); // -_MAKE_MOTATE_PIN(kUnassigned36, 'D', 29); // Missing in 100-pin package -_MAKE_MOTATE_PIN(kLEDPWM_PinNumber, 'D', 30); // -_MAKE_MOTATE_PIN(kUnassigned37, 'D', 31); // +_MAKE_MOTATE_PIN(kUnassigned37, 'D', 29); // Missing in 100-pin package +_MAKE_MOTATE_PIN(kLEDPWM_PinNumber, 'D', 30); // +_MAKE_MOTATE_PIN(kUnassigned38, 'D', 31); // } // namespace Motate @@ -206,4 +206,4 @@ _MAKE_MOTATE_PIN(kUnassigned37, 'D', 31); // #endif -// GQUADRATIC_A_PINOUT_H +// GQUADRATIC_B_PINOUT_H diff --git a/g2core/board/gquadratic/hardware.h b/g2core/board/gquadratic/hardware.h index fa05771c..1c467915 100755 --- a/g2core/board/gquadratic/hardware.h +++ b/g2core/board/gquadratic/hardware.h @@ -130,8 +130,8 @@ using Motate::OutputPin; /**** Motate Definitions ****/ // Timer definitions. See stepper.h and other headers for setup -typedef TimerChannel<0, 0> dda_timer_type; // stepper pulse generation in stepper.cpp -typedef TimerChannel<1, 0> dwell_timer_type; // dwell timing in stepper.cpp +typedef TimerChannel<9, 0> dda_timer_type; // stepper pulse generation in stepper.cpp +typedef TimerChannel<10, 0> dwell_timer_type; // dwell timing in stepper.cpp typedef ServiceCall<0> load_timer_type; // request load timer in stepper.cpp typedef ServiceCall<1> exec_timer_type; // request exec timer in stepper.cpp typedef ServiceCall<2> fwd_plan_timer_type; // request exec timer in stepper.cpp diff --git a/g2core/board/gquadratic/motate_pin_assignments.h b/g2core/board/gquadratic/motate_pin_assignments.h index 77609574..78050357 100755 --- a/g2core/board/gquadratic/motate_pin_assignments.h +++ b/g2core/board/gquadratic/motate_pin_assignments.h @@ -159,13 +159,15 @@ pin_number kDebug3_PinNumber = -1; // 116; //e Not the out-of-order numbering & pin_number kDebug4_PinNumber = -1; // 114; // END DEBUG PINS -pin_number kLED_USBRXPinNumber = 117; -pin_number kLED_USBTXPinNumber = 118; -pin_number kSD_CardDetectPinNumber = 119; -pin_number kSD_ChipSelectPinNumber = 120; -pin_number kInterlock_InPinNumber = 121; -pin_number kOutputSAFE_PinNumber = 122; // SAFE signal -pin_number kLEDPWM_PinNumber = 123; +pin_number kLED_USBRXPinNumber = 117; +pin_number kLED_USBTXPinNumber = 118; +pin_number kSD_CardDetectPinNumber = 119; +pin_number kSD_ChipSelectPinNumber = 120; +pin_number kInterlock_InPinNumber = 121; +pin_number kOutputSAFE_PinNumber = 122; // SAFE signal +pin_number kLEDPWM_PinNumber = 123; +pin_number kOutputInterrupt_PinNumber = 124; // to-host interrupt signal +pin_number kLED_RGBWPixelPinNumber = 125; // 117; // GRBL / gShield compatibility pins -- Due board ONLY diff --git a/g2core/board/printrboardg2/board_xio.cpp b/g2core/board/printrboardg2/board_xio.cpp index 8122e268..f46df5e9 100755 --- a/g2core/board/printrboardg2/board_xio.cpp +++ b/g2core/board/printrboardg2/board_xio.cpp @@ -50,8 +50,8 @@ decltype(usb.mixin<1>::Serial) &SerialUSB1 = usb.mixin<1>::Serial; // 115200 is the default, as well. //UART Serial {115200, UARTMode::RTSCTSFlowControl}; -MOTATE_SET_USB_VENDOR_STRING( {'S' ,'y', 'n', 't', 'h', 'e', 't', 'o', 's'} ) -MOTATE_SET_USB_PRODUCT_STRING( {'T', 'i', 'n', 'y', 'G', ' ', 'v', '2'} ) +MOTATE_SET_USB_VENDOR_STRING( u"Synthetos" ) +MOTATE_SET_USB_PRODUCT_STRING( u"TinyG v2" ) MOTATE_SET_USB_SERIAL_NUMBER_STRING_FROM_CHIPID() diff --git a/g2core/boards.mk b/g2core/boards.mk index 81443f81..f906dc06 100644 --- a/g2core/boards.mk +++ b/g2core/boards.mk @@ -80,7 +80,7 @@ endif ifeq ("$(CONFIG)","TestQuadratic") ifeq ("$(BOARD)","NONE") - BOARD=gquadratic-a + BOARD=gquadratic-b endif SETTINGS_FILE="settings_test.h" endif diff --git a/g2core/canonical_machine.h b/g2core/canonical_machine.h index 7804d79d..1a7c1991 100755 --- a/g2core/canonical_machine.h +++ b/g2core/canonical_machine.h @@ -339,6 +339,31 @@ typedef struct GCodeState { // Gcode model state - used by model, pl cmCoordSystem coord_system; // G54-G59 - select coordinate system 1-9 uint8_t tool; // G // M6 tool change - moves "tool_select" to "tool" uint8_t tool_select; // G // T value - T sets this value + + void reset() { + linenum = 0; + motion_mode = 0; + + for (uint8_t i = 0; i< AXES; i++) { + target[i] = 0.0; + work_offset[i] = 0.0; + } + + feed_rate = 0.0; + parameter = 0.0; + + feed_rate_mode = INVERSE_TIME_MODE; + select_plane = CANON_PLANE_XY; + units_mode = INCHES; + path_control = PATH_EXACT_PATH; + distance_mode = ABSOLUTE_MODE; + arc_distance_mode = ABSOLUTE_MODE; + absolute_override = ABSOLUTE_OVERRIDE_OFF; + coord_system = ABSOLUTE_COORDS; + tool = 0; + tool_select = 0; + + }; } GCodeState_t; typedef struct GCodeStateExtended { // Gcode dynamic state extensions - used by model and arcs diff --git a/g2core/g2core.cppproj b/g2core/g2core.cppproj index e25a188c..e6d6348a 100644 --- a/g2core/g2core.cppproj +++ b/g2core/g2core.cppproj @@ -5,7 +5,7 @@ 7.0 com.Atmel.ARMGCC.CPP {44ea8fec-55d7-4149-8a78-a574fc26bf51} - ATSAM3X8C + ATSAMS70N19 none Executable CPP @@ -68,12 +68,12 @@ - 2000000 + 10000000 SWD com.atmel.avrdbg.tool.atmelice - J41800004259 + J41800006366 Atmel-ICE True @@ -100,9 +100,9 @@ True true - J41800004259 - 0x284E0A60 - 2000000 + J41800006366 + 0xA11D0A00 + 10000000 @@ -1454,6 +1454,72 @@ Makefile bin\PrintrbotSimple1608-printrboardG2v3\ + + + + True + True + True + True + True + + + C:\Program Files\Atmel\Atmel Studio 6.0\extensions\Atmel\ARMGCC\3.3.1.128\ARMSupportFiles + C:\Program Files\Atmel\Atmel Studio 6.0\extensions\Atmel\ARMGCC\3.3.1.128\ARMSupportFiles\CMSIS\Include + C:\Program Files\Atmel\Atmel Studio 6.0\extensions\Atmel\ARMGCC\3.3.1.128\ARMSupportFiles\Device\ATMEL + C:\Program Files\Atmel\Atmel Studio 6.0\extensions\Atmel\ARMGCC\3.3.1.128\ARMSupportFiles\Device\ATMEL\sam3xa\include + C:\Program Files\Atmel\Atmel Toolchain\ARM GCC\Native\4.7.2.87\arm-gnu-toolchain\bin\..\..\CMSIS_Atmel + C:\Program Files\Atmel\Atmel Toolchain\ARM GCC\Native\4.7.2.87\arm-gnu-toolchain\bin\..\..\CMSIS_Atmel\CMSIS\Include + C:\Program Files\Atmel\Atmel Toolchain\ARM GCC\Native\4.7.2.87\arm-gnu-toolchain\bin\..\..\CMSIS_Atmel\Device\ATMEL + C:\Program Files\Atmel\Atmel Toolchain\ARM GCC\Native\4.7.2.87\arm-gnu-toolchain\bin\..\..\CMSIS_Atmel\Device\ATMEL\sam3xa\include + + + Optimize (-O1) + True + Maximum (-g3) + True + + + C:\Program Files\Atmel\Atmel Studio 6.0\extensions\Atmel\ARMGCC\3.3.1.128\ARMSupportFiles + C:\Program Files\Atmel\Atmel Studio 6.0\extensions\Atmel\ARMGCC\3.3.1.128\ARMSupportFiles\CMSIS\Include + C:\Program Files\Atmel\Atmel Studio 6.0\extensions\Atmel\ARMGCC\3.3.1.128\ARMSupportFiles\Device\ATMEL + C:\Program Files\Atmel\Atmel Studio 6.0\extensions\Atmel\ARMGCC\3.3.1.128\ARMSupportFiles\Device\ATMEL\sam3xa\include + C:\Program Files\Atmel\Atmel Toolchain\ARM GCC\Native\4.7.2.87\arm-gnu-toolchain\bin\..\..\CMSIS_Atmel + C:\Program Files\Atmel\Atmel Toolchain\ARM GCC\Native\4.7.2.87\arm-gnu-toolchain\bin\..\..\CMSIS_Atmel\CMSIS\Include + C:\Program Files\Atmel\Atmel Toolchain\ARM GCC\Native\4.7.2.87\arm-gnu-toolchain\bin\..\..\CMSIS_Atmel\Device\ATMEL + C:\Program Files\Atmel\Atmel Toolchain\ARM GCC\Native\4.7.2.87\arm-gnu-toolchain\bin\..\..\CMSIS_Atmel\Device\ATMEL\sam3xa\include + + + Optimize (-O1) + True + Maximum (-g3) + True + + + libm + + + True + -Tsam3x8c_flash.ld + Default (-g) + + + C:\Program Files\Atmel\Atmel Toolchain\ARM GCC\Native\4.7.2.87\arm-gnu-toolchain\bin\..\..\CMSIS_Atmel + C:\Program Files\Atmel\Atmel Toolchain\ARM GCC\Native\4.7.2.87\arm-gnu-toolchain\bin\..\..\CMSIS_Atmel\CMSIS\Include + C:\Program Files\Atmel\Atmel Toolchain\ARM GCC\Native\4.7.2.87\arm-gnu-toolchain\bin\..\..\CMSIS_Atmel\Device\ATMEL + C:\Program Files\Atmel\Atmel Toolchain\ARM GCC\Native\4.7.2.87\arm-gnu-toolchain\bin\..\..\CMSIS_Atmel\Device\ATMEL\sam3xa\include + + + Default (-Wa,-g) + + + True + + CONFIG=TestQuadratic COLOR=0 VERBOSE=1 DEBUG=1 + clean CONFIG=TestQuintic + Makefile + bin\TestQuadratic\ + compile diff --git a/g2core/g2core.xcodeproj/project.pbxproj b/g2core/g2core.xcodeproj/project.pbxproj index d6ac4fe3..7751ec2a 100644 --- a/g2core/g2core.xcodeproj/project.pbxproj +++ b/g2core/g2core.xcodeproj/project.pbxproj @@ -291,6 +291,20 @@ passBuildSettingsInEnvironment = 1; productName = g3_due; }; + D4782AAE1D9B16BE00B32136 /* G2 Probotix */ = { + isa = PBXLegacyTarget; + buildArgumentsString = "$(ACTION) VERBOSE=1 COLOR=0 CONFIG=ProbotixV90 DEBUG=1"; + buildConfigurationList = D4782AAF1D9B16BE00B32136 /* Build configuration list for PBXLegacyTarget "G2 Probotix" */; + buildPhases = ( + ); + buildToolPath = /usr/bin/make; + buildWorkingDirectory = .; + dependencies = ( + ); + name = "G2 Probotix"; + passBuildSettingsInEnvironment = 1; + productName = g3_due; + }; D4AC391A1C7BAB8E0098D685 /* G2 sbv300 */ = { isa = PBXLegacyTarget; buildArgumentsString = "$(ACTION) VERBOSE=1 COLOR=0 CONFIG=sbv300 DEBUG=2"; @@ -411,6 +425,7 @@ D4AC391A1C7BAB8E0098D685 /* G2 sbv300 */, D4F226F31D088A48008ED57C /* G2 gQuintic PrintrbotPlus */, D43FF7141D537A5C00FB5B53 /* G2 gQuadratic Test */, + D4782AAE1D9B16BE00B32136 /* G2 Probotix */, D457112317053BFB00EA19A8 /* index */, ); }; @@ -653,6 +668,22 @@ }; name = Release; }; + D4782AB01D9B16BE00B32136 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + PATH = "$PATH:/usr/local/gcc-arm-none-eabi/bin"; + PRODUCT_NAME = "$(TARGET_NAME)"; + }; + name = Debug; + }; + D4782AB11D9B16BE00B32136 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + PATH = "$PATH:/usr/local/gcc-arm-none-eabi/bin"; + PRODUCT_NAME = "$(TARGET_NAME)"; + }; + name = Release; + }; D4AC391C1C7BAB8E0098D685 /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { @@ -790,6 +821,15 @@ defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; + D4782AAF1D9B16BE00B32136 /* Build configuration list for PBXLegacyTarget "G2 Probotix" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + D4782AB01D9B16BE00B32136 /* Debug */, + D4782AB11D9B16BE00B32136 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; D4AC391B1C7BAB8E0098D685 /* Build configuration list for PBXLegacyTarget "G2 sbv300" */ = { isa = XCConfigurationList; buildConfigurations = ( diff --git a/g2core/planner.cpp b/g2core/planner.cpp index eb94beb7..a6e35701 100755 --- a/g2core/planner.cpp +++ b/g2core/planner.cpp @@ -172,6 +172,14 @@ stat_t planner_test_assertions() (BAD_MAGIC(mr.magic_start)) || (BAD_MAGIC(mr.magic_end))) { return(cm_panic(STAT_PLANNER_ASSERTION_FAILURE, "planner_test_assertions()")); } + for (uint8_t i=0; i < PLANNER_BUFFER_POOL_SIZE; i++) { + if (mb.bf[i].nx == nullptr) { + _debug_trap("buffer has nullptr for nx"); + } + if (mb.bf[i].pv == nullptr) { + _debug_trap("buffer has nullptr for pv"); + } + } return (STAT_OK); } @@ -697,25 +705,26 @@ static inline void _clear_buffer(mpBuf_t *bf) // the pointers and buffer number during interrupts // We'll have to figure something else out for C, sorry. - bf->clear(); + bf->reset(); } void mp_init_buffers(void) { mpBuf_t *pv, *nx; - uint8_t i, nx_i; - memset(&mb, 0, sizeof(mb)); // clear all values, pointers and status + //memset(&mb, 0, sizeof(mb)); // clear all values, pointers and status mb.magic_start = MAGICNUM; mb.magic_end = MAGICNUM; mb.w = &mb.bf[0]; // init all buffer pointers mb.r = &mb.bf[0]; pv = &mb.bf[PLANNER_BUFFER_POOL_SIZE-1]; - for (i=0; i < PLANNER_BUFFER_POOL_SIZE; i++) { + for (uint8_t i=0; i < PLANNER_BUFFER_POOL_SIZE; i++) { + _clear_buffer(&mb.bf[i]); + uint8_t nx_i = ((i<(PLANNER_BUFFER_POOL_SIZE-1))?(i+1):0); // buffer incr & wrap + mb.bf[i].buffer_number = i; //+++++ number it for diagnostics only (otherwise not used) - nx_i = ((i