Commit graph

183 commits

Author SHA1 Message Date
Erik vd Zalm
f92dc91c3d Enable M503 also when eeprom is disabled 2012-08-11 15:49:40 +02:00
Ian Jackson
1dba212e18 HOMEAXIS: make into a function
Replace the large macro HOMEAXIS with a function.  This avoids the
compiler generating three copies of largely identical code.  The
saving is 724 bytes of program memory.

We make use of XYZ_CONSTS_FROM_CONFIG to provide convenient
array-shaped access to MAX_LENGTH, HOME_RETRACT_MM and HOME_DIR.

Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
2012-08-11 01:43:00 +01:00
Ian Jackson
7bb326d389 eeprom: provide smaller code for SERIAL_ECHOPAIR
SERIAL_ECHOPAIR implies, eventually, two calls to MYSERIAL.print.  One
of these has FORCE_INLINE for a per-character loop, and both involve
constructing a method call rather than a simple function call.

Produce better and smaller code by providing three specialised
functions serial_echopair.  This saves 672 bytes of program memory
(with EEPROM_SETTINGS and SDSUPPORT enabled).

Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
2012-08-11 01:42:59 +01:00
Ian Jackson
957e966d2d M206: always use homing ("homeing") offsets
Previously the parameters set in M206 would only be used if a G82
command was sent with specific axis home values.  This limits its
usefulness.

Really, we should have a way to adjust the XYZ homing of a machine in
the eeprom.  So as the first stage of this, make M206 affect every
home command.  The values set using M206 are now added to the
configuration variables [XYZ]_HOME_POS.

This is achieved by replacing all uses of [XYZ]_HOME_POS in the code
by a new home_pos[] which includes the adjustment.  We also have to
adjust the uses of [XYZ]_{MIN,MAX}_POS similarly - see below.


To allow axis_is_at_home to be written as a function taking an axis
index rather than a macro taking an axis letter, we provide
constant arrays in program memory containing the values of
[XYZ]_{MIN,MAX,HOME}_POS from the compiled-in configuration.

This is done with some helper macros to deal with the declaration
(XYZ_CONSTS_FROM_CONFIG) and definition of the inline function which
does the program memory access.

We also introduce the overloaded function read_pgm_any, whose
instances are produced with DEFINE_PGM_READ_ANY, which allows the
access functions to automatically produce the correct type.

The type- and pointer-massaging code in the access function boils
down, when compiled, to a simple program memory access.


A question arises: if the M206 offset is set, should this adjustment
to the home position shift or change the possible range of movement
permitted by the software endstops ?

The documentation in Configuration.h describes these limits as:
    // Travel limits after homing
Since this is a file containing physical limits, and actual suggested
values for these configuration parameters appear to include a certain
amount of slop, I've taken the view that these should be regarded as
nominal physical distances from the limit switches, and that the
permissible travel should be unaffected by M206.

So for example with the (rather unrealistic)
  #define X_HOME_DIR -1
  #define X_MIN_POS -20
  #define X_HOME_POS 0
  #define X_MAX_POS 100
no matter the setting of M206 X, the machine would be permitted
to move from 20mm "beyond" the limit switch trigger point in
the negative X direction and 100mm away from the limit switch in
the positive X direction, for a total travel of 120mm.

With M206 X-10 that would be considered to correspond to X coordinates
-30 to +90.  With M206 X+10 that would be considered to correspond to
X coordinates -10 to +110.


fixes #200 (in ErikZalm/Marlin).

Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
2012-08-11 01:35:03 +01:00
Ian Jackson
faccb35850 software_endstops: use *_MIN_POS and *_MAX_POS for arcs
If [XYZ]_HOME_POS and [XYZ]_MIN_POS aren't 0, these corrections are
wrong.  Use the same logic as in Marlin.pde:prepare_move: ie, clamp to
[XYZ]_{MIN,MAX}_POS.

While we're here, put this cut-and-paste code in a function
clamp_to_software_endstops.

Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
2012-08-10 19:36:30 +01:00
Ian Jackson
a873541ef6 Marlin.pde: include comment for emacs mode
Emacs by default doesn't recognise a ".pde" file as C++ source code.
Add the annotation to the top of the file to make it work.

Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
2012-08-10 19:36:29 +01:00
Chris Palmer
538189cc19 Fixed soft limits when the origin is in the middle.
HOME_POS is now always where the endstop is and can be outside the limits.
The limits are now defined by MIN_POS and MAX_POS rather than HOME_POS and MAX_LENGTH.
The Z is axis now homed first if direction is away from the bed.

Saguinololu limit pins change from MIN to MAX according to the homing direction.
2012-07-14 22:24:26 +02:00
Bernhard
d3002ef741 corrected retract 2012-06-03 16:56:40 +02:00
Bernhard
bf077125b9 added firmware retract. disabled by default 2012-06-02 20:32:28 +02:00
Bernhard Kubicek
c7ce99d495 Merge pull request #172 from daid/Marlin_v1
Add M401 - Wait for user to press button on LCD (with optional timeout) minor fix in M115.
2012-06-02 03:44:03 -07:00
ErikZalm
9e1021efbe Fixed SL bug. 2012-05-28 22:32:53 +03:00
Daid
4d7fe7115f Changed M401 to M0/M1 as suggested, so they match normal CNC stop commands. 2012-05-20 14:37:30 +02:00
Daid
16413bb8f2 Last M401 update, refresh the LCD during an M401 wait. 2012-05-19 18:53:56 +02:00
Daid
b3941fce5c Update after testing 2012-05-19 18:48:43 +02:00
Daid
516ec90242 Add M401 - Wait for user on LCD button press 2012-05-19 17:54:07 +02:00
MaikStohn
032df0b2c6 Moved LCD initialization out of constructor
Since the class "MainMenu" was used within a static variable the
initialization of the object (constructor call) was done before Arduino
library startup. It always caused a crash when using AVRStudio with
JTAG debugger (caused from calling the LCD initialization / the lot of
I/O work / the stack used during this calls). By moving the LCD_INIT
out of the constructor and using an explicit call inside of Arduino
setup() implementation immediately fixed all problems and the JTAG
debugger runs fine.
2012-05-03 14:28:17 +02:00
MaikStohn
060b38de5c delete obsolete and wrong code
"i" runs from 0 to 4 but "add_homeing" array size is 3 only. On the
other hand the calculated value gets overwritten by either one of the
if choice.
2012-05-03 14:15:46 +02:00
MaikStohn
789ba02d43 fixed typo in comment 2012-05-03 14:13:53 +02:00
Erik van der Zalm
1874cb71a6 Added option to increase the FAN PWM frequency. 2012-05-02 19:26:14 +02:00
Erik van der Zalm
e3821bd86f Merge branch 'Marlin_v1' of github.com:ErikZalm/Marlin into Marlin_v1 2012-04-30 13:36:27 +02:00
Erik van der Zalm
02af69911e Added temperature window to M109. This is needed for systems with no overshoot PID. 2012-04-30 13:36:19 +02:00
sefi
e11e072eca adding M120 and 121 for turning on and off the endstops only for homing function 2012-04-28 17:31:22 +03:00
Bernhard
44fd8d46d2 fixed quickhome 2012-04-22 20:44:27 +02:00
Erik van der Zalm
67cf105bc6 Fixed AUTOTEMP (M109 S215 B260 F1 starts autotemp)
Changed SLOWDOWN. IF this does not work ok OLD_SLOWDOWN is the old algo.
2012-04-15 19:17:33 +02:00
grrf
03b0850e63 This breaks temperature readout for pronterface! 2012-04-09 23:37:34 +03:00
Erik van der Zalm
4ca2f336f0 Changed default MINIMUM_PLANNER_SPEED -> 0.05
Fixed small bug in arcs
M105 prints now actual_temp/target_temp
2012-04-01 16:23:40 +02:00
Erik van der Zalm
ae0bf8068b Fixed arc offset. 2012-03-27 19:03:33 +02:00
Erik van der Zalm
0c1b863755 Ignore ":" in comments. 2012-03-25 14:41:26 +02:00
Erik van der Zalm
63aec3c56e Replaced Kill by Stop. If the printer is stopped. Fix the error and use M999 to restart.
Moved the PID_dT in the Ki and Kd calculation from the configuration.h to temperature.cpp
2012-03-25 14:36:51 +02:00
Erik van der Zalm
f5eae52098 Added more manage_inactivity checks 2012-03-11 17:59:44 +01:00
Erik van der Zalm
87ff2f8867 Added CONTROLLERFAN. (Controlling a fan to cool down the steppper drivers) 2012-03-11 10:44:10 +01:00
Erik van der Zalm
387fe51a56 Do not disable steppers when there are moves in the queue. 2012-03-09 20:20:01 +01:00
Erik van der Zalm
7b1e295f34 Merge branch 'Marlin_v1' of github.com:ErikZalm/Marlin into Marlin_v1 2012-03-08 21:48:06 +01:00
Erik van der Zalm
c077316b2b Added PID autotune. (experimental)
M303 Starts autotune. Wait till the Kp Ki and Kd constants are printed.
Put these values in Configuration.h
2012-03-08 21:43:21 +01:00
Tommy Cheng
ce07c9186d While Waiting for hotbed to warm up via M190, LCD Display and Click Encoder input freeze until target temperature is reached. 2012-03-05 23:12:26 +08:00
Erik van der Zalm
e056bf8081 Added E-Jerk 2012-03-04 16:34:58 +01:00
Erik van der Zalm
632528aa95 merging with SCUBA82 2012-03-04 13:41:47 +01:00
Erik van der Zalm
aac7aa3bf0 Queued fan control. Issue #90 2012-03-04 13:05:26 +01:00
Christian Thalhammer
fde51084f3 set SD file delete to M30; switch printime output to M31 2012-03-03 21:58:12 +01:00
Erik van der Zalm
21e2bae063 Changed (corrected?) SD_card comment handling. 2012-03-03 21:28:33 +01:00
Erik van der Zalm
cb0c84e075 Merge remote-tracking branch 'justblair/master' into Marlin_v1 2012-03-03 20:20:55 +01:00
Erik van der Zalm
ed951b1977 Fixed RAMPS 1.2 support (Found and fixed by rrhb) 2012-03-03 20:15:41 +01:00
Blair Thompson
046a8e0039 Added more defines to the language.h file so that nowe most of the text strings are now configured via this file. Still got some hunting down to do to complete this task. 2012-03-03 15:51:47 +00:00
Christian Thalhammer
5f3a422e68 added M31 - delete file from sd card 2012-03-02 21:49:05 +01:00
Christian Thalhammer
cb02914687 Merge remote-tracking branch 'upstream/Marlin_v1' into Marlin_v1 2012-02-29 14:51:35 +01:00
Christian Thalhammer
10bf2bb8e1 - 2012-02-29 14:51:15 +01:00
Erik van der Zalm
b4833d55c2 Fixed HOME_POS in combination with G28 X0 or G28 Y0 2012-02-28 18:20:03 +01:00
Erik van der Zalm
c6f2ec3c82 remove stop_heating_wait 2012-02-27 18:45:45 +01:00
Erik van der Zalm
b48d67ce10 Fixed homing 2012-02-27 18:31:40 +01:00
Phil Hord
09469add55 Add board reset reporting (from Repetier-Firmware) 2012-02-26 18:26:56 -05:00