Commit Graph

246 Commits

Author SHA1 Message Date
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
Enchiridion
50cde90324 Added support for dual Z axis stepper drivers 2012-08-04 00:32:26 -06:00
Bernhard
0c123950e9 __ header file replace 2012-06-02 20:44:17 +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
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
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
aac7aa3bf0 Queued fan control. Issue #90 2012-03-04 13:05:26 +01:00
Erik van der Zalm
c6f2ec3c82 remove stop_heating_wait 2012-02-27 18:45:45 +01:00
daid
2a77c84c8f Updated SERIAL define to MYSERIAL, because Arduino 1.0 defines SERIAL as 0. 2012-02-11 16:02:47 +01:00
Erik van der Zalm
598eb1d4f1 Fixed compilation for gcc-4.6.2 with avr-lib-1.8.0 (thanks daid) 2012-02-09 19:38:53 +01:00
Erik van der Zalm
9173a5713b Teensylu support. 2012-02-09 19:27:45 +01:00
Bernhard
8463e39a4a starting with sanguino arduino 1.0 compatibility 2011-12-22 16:11:15 +01:00
Bernhard
57f9359a41 simplified the includes, makefile now works with arduino23 2011-12-22 14:55:45 +01:00
Bernhard
3c1a4aac2b header file simplification 2011-12-22 12:38:50 +01:00
Erik van der Zalm
84d9cf7339 merging 2011-12-12 20:35:46 +01:00
Erik van der Zalm
e017228569 Merged multiple extruder support.
Soft PWM. (Sanguinololu can also have PID temperature control)
Interrupt save WRITE for addresses > 0x0FF
2011-12-12 19:34:37 +01:00
Bernhard
06411d5c9e ultralcd can now also stop the wait loop for the hot-end m109 heating when stopping sd prints. 2011-12-11 22:18:50 +01:00
Bernhard
986f0ba76c moved <stdio.h> to more dominant location. 2011-12-07 20:56:47 +01:00
Denis B
4fd75dc813 Working version of multiple extruders (up to 3)
- The temperature control is pretty much complete
  (not sure what to do w/ autotemp though)
  Changed the pins assignment to clearly separate bed and extruder heaters
  and temp sensors, changed a bit how termistor tables are handled.
- The steppers control is rudimentary
  (only chanages what pins it uses depending on the active_extruder var,
   but that's enough for switching extruder in the start.gcode in the
   the profiles)
- Tested only w/ RAMPS 1.4
2011-12-06 00:09:16 -05:00
Bernhard
7714b98da7 solved some compiler warnings that are now visible in arduino 1.0.
Found a couple of unused variables, that I commented.
Tried to solve the program memory warning message, and failed.
2011-12-04 12:40:18 +01:00
Bernhard
0bc9daa4f7 make it compile with arduino 1.0 ; function is still untested. 2011-12-01 16:38:01 +01:00
Bernhard
b0c3871750 more fixing of the sanguino math round problem 2011-11-30 09:07:56 +01:00
Bernhard
311627141b Merge branch 'smallopt' into Marlin_v1
Conflicts:
	Marlin/temperature.h
2011-11-28 21:36:01 +01:00
Erik van der Zalm
f75f426dfa Removed interrupt nesting in the stepper ISR.
Add serial checkRx in stepper ISR.
Copied HardwareSerial to MarlinSerial (Needed for checkRx).
2011-11-27 21:12:55 +01:00
Bernhard
2d9a715655 first naive attempt to have a offset in the homeing procedure. Does not enable to move into regions not allowed by endstops. 2011-11-27 17:27:17 +01:00
Bernhard
26a1de1e44 force inline 2011-11-27 16:04:58 +01:00
Bernhard Kubicek
7919a40d06 watchdog,percent done, 2011-11-15 20:54:40 +01:00
Bernhard Kubicek
9980ceb4a3 added a m400, that finished all moves,
and the mechanism so that if an endstop is hit it the ISR, the steps_to_be_taken are stored, and some current_block data that will be deleted in the next move
If the normal loop() then finds such an event, the position is calculated (floats would have taken too long in the ISR) A serial message is generated.
2011-11-13 19:58:09 +01:00
Bernhard Kubicek
36958ee305 minor changes and first not-well working version of autotemp 2011-11-09 22:09:16 +01:00
Bernhard Kubicek
ba8a53a40f Streaming.h is gone. It conflicted with PROGMEM. And saving memory is more important than nicer code, imho 2011-11-09 20:30:41 +01:00
Bernhard Kubicek
ab154d5592 project progmem finished: total change with ultipanel: 2456 byte free ram initial. now: 4374 ram. 2011-11-09 20:27:44 +01:00
Bernhard Kubicek
7b70caab7c made progmem mainly, found one bug in cardreader, added a empty class for cardreader in case no sd support. 2011-11-07 22:33:13 +01:00
Bernhard Kubicek
1d171e9e52 reformating and some minor bugs/things found on the way. 2011-11-06 19:23:08 +01:00
Bernhard Kubicek
900e0c9bf2 overworked the serial responses. Quite difficult, since many texts are Pronterface protocol. 2011-11-06 17:33:09 +01:00
Bernhard Kubicek
1740a83e11 correcting commit errors. 2011-11-06 15:10:29 +01:00
Bernhard Kubicek
e8092898b1 watchdog into dedicated file 2011-11-06 14:22:15 +01:00
Erik van der Zalm
04d3b5537f Merge remote-tracking branch 'origin/Marlin_v1' into Marlin_v1
Conflicts:
	Marlin/Configuration.h
	Marlin/EEPROMwrite.h
	Marlin/Marlin.h
	Marlin/Marlin.pde
	Marlin/temperature.cpp
	Marlin/temperature.h
	Marlin/thermistortables.h
2011-11-05 20:03:38 +01:00
Erik van der Zalm
d15f01e1b4 Temperature changes 2011-11-05 19:21:36 +01:00
Bernhard Kubicek
b9ea0651ec Revert "this is not working. Do you maybe know why?"
This reverts commit 8bcdb9f5f0.
2011-11-05 16:49:29 +01:00
Bernhard Kubicek
8bcdb9f5f0 this is not working. Do you maybe know why? 2011-11-05 16:43:44 +01:00
Bernhard Kubicek
00674af3a8 merge from the branch bkubicek/Marlin/zalmmerge 2011-11-05 14:13:20 +01:00
Erik van der Zalm
094afe7c10 Merged Marlin, Marlin non gen6 and Ultimaker changes 2011-11-04 18:02:56 +01:00
Erik van der Zalm
8e017b81ab Sync with non-gen6 version 2011-09-14 18:56:45 +02:00
Erik van der Zalm
750f6c33e3 first commit 2011-08-12 22:28:35 +02:00