Commit graph

366 commits

Author SHA1 Message Date
domonoky b55995aae8 Introduce a layer of macro indirection to all stepper pins. This allows other stepper drivers to redefine them, so they can use SPI/I2C instead of direct pin manipulation. 2015-02-23 16:12:35 +01:00
Jérémie FRANCOIS 9d75a56b56 Merge remote-tracking branch 'upstream/Development' into Development
Conflicts:
	Marlin/Configuration.h
	Marlin/Marlin_main.cpp
2015-02-11 06:38:36 +01:00
Jérémie FRANCOIS 85e5aa4011 Generalized enqueue_commands_P, and moved them to Marlin_main as they should 2015-02-07 23:24:20 +01:00
Scott Lahteine 9bc9051405 Flag EEPROM write errors on serial output
- Also adds a language string for the error.
- Also adds SERIAL_EOL as an alias for SERIAL_ECHOLN(“”)
2015-01-28 21:19:51 -08:00
Scott Lahteine ae4b348d77 Make sure _Ex_PINS is defined
Also fix analogInputToDigitalPin so it uses proper C hex notation
2015-01-27 15:36:47 -08:00
Jérémie FRANCOIS dd301be52d Added suport for multiline G-code commands in the LCD menus 2015-01-26 18:50:29 +01:00
MagoKimbra 986e723eeb Add 4th extruder 2015-01-24 13:37:58 +01:00
daid 53f971095d Revert "Reduce PROGMEM warnings" 2015-01-16 16:48:22 +01:00
Bo Herrmannsen d4a665694a Merge pull request #1350 from odewdney/Development
Reduce PROGMEM warnings
2015-01-13 11:26:50 +01:00
odewdney cd55a93a13 re-add blank line 2015-01-11 19:22:35 +00:00
odewdney 538859669d Removing compiler warnings for progmem 2015-01-11 18:14:21 +00:00
Alex Borro 422a958a34 Fix CoreXY speed calculation
For cartesian bots, the X_AXIS is the real X movement and same for
Y_AXIS.
But for corexy bots, that is not true. The "X_AXIS" and "Y_AXIS" motors
(that should be named to A_AXIS
and B_AXIS) cannot be used for X and Y length, because A=X+Y and B=X-Y.
So we need to create other 2 "AXIS", named X_HEAD and Y_HEAD, meaning
the real displacement of the Head.
Having the real displacement of the head, we can calculate the total
movement length and apply the desired speed.
2015-01-06 16:39:48 -02:00
odewdney 652895d656 try different proproc for CI failure 2015-01-04 11:15:23 +00:00
odewdney 39fae9e3a3 Fix progmem warning
Borrow code from https://github.com/arduino/Arduino/issues/1793
2015-01-03 21:30:16 +00:00
Alexander Hirzel eed451e034 rework analogInputToDigitalPin definition 2015-01-02 11:14:20 -05:00
wgm4321 edac64e7d2 Add Filament menu and add Filament/Retract settings to config store. 2015-01-02 11:12:15 -05:00
Bo Herrmannsen a18b625534 Merge pull request #1261 from wgm4321/Development
Add Filament menu and add Filament/Retract settings to config store.
2015-01-02 15:35:29 +01:00
Bernhard Kubicek 3d1da45f3e Update Marlin.h 2014-12-30 08:30:37 +01:00
bkubicek d02daec08f fixed compilation 2014-12-30 08:04:06 +01:00
wgm4321 cb12161191 Add Filament menu and add Filament/Retract settings to config store. 2014-12-28 20:43:14 -05:00
Denis Chertykov 050ca9ca13 Move initialization of errormagic[] and echomagic[] to Marlin_main.cpp 2014-12-28 09:09:42 +03:00
Erik van der Zalm 058e446531 Merge pull request #1037 from filipmu/Filament-Sensor
Support for a filament diameter sensor
2014-10-11 22:56:01 +02:00
Scott Lahteine f989bd5435 Simple code cleanup. Rename "homeing" to homing. 2014-10-05 13:20:53 -07:00
Filip Mulier 62db9848d3 Improvements and bug fixes in sensor delay buffer for filament sensor code
Improvement to avoid reinitializing delay buffer with every print. Fixed
issues in buffer indexing and memory out of bounds due to floating point
imprecision.  Simplified the code by avoiding conversion to standard
diameter and 1cu mm extrusion, which caused complications in determining
mm extruded.
2014-08-16 06:50:13 -05:00
Filip Mulier 85649a4549 Real-time filament diameter measurement and control
This feature allows the printer to read the filament diameter
automatically and adjust the printer in real time.  Added code to read
an analog voltage that represents a filament diameter measurement.  This
measurement is delayed in a ring buffer to compensate for sensors that
are a distance away from the extruder.  The measurement is used to
adjust the volumetric_multiplier for the extruder.  Some additional g
codes (M404, M405, M406, M407) are used to set parameters and turn
on/off the control. g code M221 is updated.  Pins for RAMPS1.4, RAMBO,
and Printrboard are identified for analog input.  The configuration file
is updated with relevant user parameters.
2014-08-06 19:30:57 -05:00
cocktailyogi 2f4a20257c imported last Marlin changes 2014-07-20 13:49:26 +02:00
cocktailyogi 512f2a3136 restore Branch from Backup
sorry for that
2014-06-23 17:09:57 +02:00
Dim3nsioneer 3c927901a4 Implementation of FW extruder change retract
FW retraction is extended onto swap retraction invoked by 'G10 S1'.
Bookkeeping of the retract state of all extruders allows for having one
extruder fw standard retracted while another extruder is swap retracted.
An LCD menu item for the swap retract and recover length was added.
2014-06-02 17:02:10 +02:00
Dim3nsioneer 3906f27c46 Individual extruder flow rate
Extension of M221, Tune menu
2014-03-15 18:09:46 +01:00
Jim Morris 8ea5665ee2 Merge remote-tracking branch 'origin/Marlin_v1' into add/M665-set-delta-configuration
Conflicts:
	Marlin/Marlin_main.cpp
2014-02-26 00:19:28 -08:00
Cylindric fdce91192e Various typo fixes - only in comments, no code changes. 2014-02-25 10:01:15 +00:00
Jim Morris af9395ac2e Add M605 to dynamically set delta configuration
Save above configs in eeprom
fix docs in createTemperatureLookupMarlin.py
add missing azteegX3pro digipot settings in delta example config
2014-02-17 20:50:59 -08:00
nothinman d4ba23bc28 Merge pull request #770 from josefpavlik/Marlin_v1
Marlin v1
2014-02-17 11:27:05 +00:00
Josef Pavlik 477b6fa1df move engaged from lcd console refreshes power off timeout 2014-02-14 12:37:21 +01:00
Jim Morris b819fc53ca Add Azteeg X3 Pro as motherboard 68
Add digipot i2c control for MCP4451
Allow M907 to set i2c digipot currents in amps
Fix Makefile to allow Azteeg motherboards
Fix Makefile to allow Wire libraries only
Add beeper pin for Azteeg X3 Pro
2014-02-05 01:47:12 -08:00
whosawhatsis 856edfcc0d Fixed math
This is why I wanted to sleep on the code I wrote while falling asleep
rather than immediately submitting a pull request.
2014-01-31 08:43:11 -08:00
whosawhatsis d24df7af2c M200 implementation 2014-01-31 00:54:19 -08:00
Alex Borro 05932e4458 Add Z Probe Offset to EEPROM and Ultra LCD 2014-01-16 18:13:46 -02:00
Alex Borro b33375d438 Z Axis Safe Homing when using Z Probe
Recommended for those who are using the Z Probe for Z Homing (as
Z-Endstop)

This feature has two changes:

1) Allow user to choose where the Z Probe will touch the bed when homing
all axis together (G28) by setting below defines:

Z_SAFE_HOMING_X_POINT
Z_SAFE_HOMING_Y_POINT

2) Prevents the user to perform Z Axis Homing when the Z Probe is
outsite bed.
2013-11-27 22:37:35 -02:00
Erik van der Zalm 48a185d004 Fixed compile errors from bad commits. 2013-11-10 16:36:37 +01:00
fmalpartida 7b556d2e96 Added BT support on AT90USB devices
Added AT90USB device BT connectivity support using second UART.
2013-11-03 19:57:06 +01:00
fmalpartida b5a964fcc5 Initial SAV MkI (RepRap CloneWars board) integration.
Included support for BT dongle on AT90USB boards.
Added LCD Shift Register LCD control
Included support for RepRap Clone Wars project board (SAV MKI).
2013-10-30 11:45:32 +01:00
Erik van der Zalm 457d8a0acb Fixed merge conflicts 2013-10-20 09:50:27 +02:00
Richard Miles ed1ab42186 Added Y_DUAL_STEPPER_DRIVERS
Enables two stepper drivers to be used for the Y axis (useful for
Shapeoko style machines)
Each Y driver can be stepped in either the same way or in opposite
directions, accounting for different hardware setups (leadscrew vs. belt
driven)
2013-09-17 19:19:20 +01:00
Richard Miles f4a59e4ce5 Revert "Added Y_DUAL_STEPPER_DRIVERS"
This reverts commit 7ee275b620.
2013-09-17 19:05:49 +01:00
Richard Miles 7ee275b620 Added Y_DUAL_STEPPER_DRIVERS
Enables two stepper drivers to be used for the Y axis (useful for
Shapeoko style machines)
Each Y driver can be stepped either the same way or in opposite
directions, accounting for different hardware setups (leadscrew vs. belt
driven)
2013-09-17 19:02:00 +01:00
Peter Hercek 9aa2229077 add command M666 for adjusting delta printer endstop position 2013-08-28 01:15:20 +02:00
hg42@gmx.net 3700f688f5 convert PROTOCOL macros from statements to (multiple, comma separated) expressions 2013-08-01 14:56:39 +02:00
Nicolas Rossi 55c287a69e Fixed move from panel for delta bot #557 2013-07-28 22:54:37 +02:00
Robert F-C d7390e13d9 Support dual x-carriage printers
Dual x-carriage designs offer some substantial improvements for dual
extruder printing.
2013-07-17 22:44:45 +10:00
Erik van der Zalm 6f4a6e531c Merge branch 'deltabot' into Marlin_v1 2013-06-09 13:55:18 +02:00
Erik van der Zalm c8dcc7c208 Allow increasing the software PWM frequency. 2013-06-09 12:52:49 +02:00
Erik van der Zalm 373f3ecab3 Merge branch 'deltabot' of https://github.com/jcrocholl/Marlin into deltabot
Conflicts:
	Marlin/Configuration.h
	Marlin/Marlin_main.cpp
	Marlin/pins.h
2013-06-09 00:51:58 +02:00
Robert F-C 40eb07bad4 Revert and extend previous change pin check change
Reviert previous change of #if BLAH_PIN > 0 to #if defined(BLAH_PIN) &&
BLAH_PIN > -1. Unfortunately some times pin 0 is used. For my sins I've
gone through and replaced all unsafe checks of #if BLAH_PIN > -1 with
the safe version.
2013-05-22 21:33:23 +10:00
Erik van der Zalm bd2cd4903e Added #ifdef BARICUDA around the BariCUDA changes 2013-05-14 23:56:32 +02:00
Jordan Miller fbd899a37d Support for BariCUDA Paste Extruder derived from MakerBot Frostruder. Using Ultimachine RAMBo board. M126/M127 and M128/M129. 2013-05-14 23:34:45 +02:00
Yuri Valentini 7d20ec706e Added libraries from Arduino 1.0.3 for sanguino build 2013-01-07 17:26:50 +01:00
Johann Rocholl 3b2e5027e5 Merged updates from Marlin_v1. 2012-12-16 12:19:24 -08:00
daid303 596a7e1904 Fix compiling for Arduin < 1.0.0 2012-12-13 13:24:55 +01:00
daid303 1a8f54cea1 The big LCD code update. This splits the display and menu implementation. Paving the way for future different displays. It also makes it easier to modify the menu structures while keeping everything consistant. Note that this most likely breaks the translations, which need to be updated. 2012-12-12 11:47:03 +01:00
Johann Rocholl 8e2519e88b Add realtime delta geometry in Marlin_main.cpp. 2012-12-10 01:04:12 -08:00
Johann Rocholl 621c24a10f AT90USB is only defined after pins.h is included. 2012-12-09 01:40:33 -08:00
Johann Rocholl 6cba11f087 Stop redefining MOTHERBOARD and #define AT90USB instead. Also put #ifndef AT90USB around the HardwareSerial_h trick, so now Printrboard / Brainwave support compiles on Arduino 1.0.2 as well. 2012-12-09 01:32:09 -08:00
daid303 6a9bee27cc Changed the naming of some LCD functions, so the names match better what the function does. Also moved around some prototypes for general cleanup. 2012-12-03 12:52:00 +01:00
daid303 94ea26ff46 Some minor changes on code style. And a bugfix where the counters for positioning in the stepper where wrong depending on compiler settings. (Caused strange values to reported back with M114 and endstop triggers). Also fixed compiling with FWRETRACT enabled. 2012-12-03 12:13:20 +01:00
daid303 97fa2a9c30 Few simple fixes that save RAM, as static strings are stored in RAM by default. 2012-11-28 10:30:34 +01:00
daid303 b6ff45254e Better explain the watchdog "problem" and rename the config define so it explains that the feature belongs to the watchdog. 2012-11-06 13:33:00 +01:00
daid303 06b58a9c4f First cleanup. Moved all code to cpp files, so there are no dependencies on pde files. And no more odd requirement to cat files together. (Still need to fix the Makefile). Also cleaned up some defines and made defines upper case as by C coding conventions. 2012-11-06 12:06:41 +01:00
stohn de0448343f added KILL_PIN support / cleaned up manage_inactivity function definition 2012-08-21 14:48:29 +02:00
ErikZalm f062794a0d Merge pull request #208 from Enchiridion/Marlin_v1
Added support for dual Z axis stepper drivers
2012-08-11 01:42:49 -07: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
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