Commit Graph

675 Commits

Author SHA1 Message Date
Markus Hitter e0959f7ce2 Make muldiv() inline instead of a #define, too. 2012-08-04 22:07:15 +02:00
Markus Hitter d49c0745d5 dda_maths.h: make um_to_steps_{xyze}() inline functions.
Size and speed is the same as with #defines, but now there is
type checking.
2012-08-04 22:06:59 +02:00
Markus Hitter 44be918d2a Introduce muldivQR().
This is a version of muldiv() with qn and rn precalculated,
so it can be avoided to re-calclulate it on every instance.

Yet another 116 bytes, unfortunately.
2012-08-04 22:01:30 +02:00
Markus Hitter 0068ed1e26 Use the new muldiv() to replace um_to_steps..().
This gets rid of overflows at micrometer to step conversion as
much as possible within 31 bits. It also opens the door to get
STEPS_PER_M configurable at runtime.

This also costs 290 bytes, unfortunately.
2012-08-04 22:01:16 +02:00
Markus Hitter 9359350fcc config.h templates: Sanguinololu 1.2 requires inverted enable pins.
Found by nickoe on IRC, thanks.
2012-07-17 16:04:27 +02:00
Markus Hitter 55132c0458 Makefile: don't provide means for programming fuses.
Programming fuses doesn't belong to the firmware or to firmware
uploading. Fuses have to match the hardware and the bootloader,
so they should be set when setting up these.
2012-07-16 20:15:18 +02:00
Markus Hitter 7f3c1e61ba Makefile: clarify definition of the firmware upload device in use.
Programmers typically don't do baud rate, so setting the avrdude -b
flag has to be avoided in this case.
2012-07-16 20:15:03 +02:00
Markus Hitter a2f1412aec Make muldiv() multiplicand signed.
As Andrey correctly pointed out, we need this signed. See:
http://forums.reprap.org/read.php?147,89710,130225#msg-130225
and following posts.
2012-07-16 20:13:43 +02:00
Markus Hitter 7efb895ee3 Introduce an integer multiply-divide algorithm.
We have multiplies followed by divides all over the place and
most of them are difficult to handle regarding overflows. This
new algorithm handles this fine in all cases, as long as all
three operators and the overall result fits into 32 bits.
2012-07-16 20:13:29 +02:00
Markus Hitter 3d1ebf1186 Review power supply timeout.
- Move the variable from dda.c to pinio.c.

- Reset the timeout on each power on, to guarantee a minimum PSU on time.
2012-07-16 20:13:12 +02:00
Markus Hitter 1cb40082e4 gcode_process.c: remove more redundant code.
Saves yet another 122 bytes.
2012-07-16 20:13:01 +02:00
Markus Hitter 1c998067bd Makefile: add instruction on how to get rid of an error message. 2012-07-13 15:01:27 +02:00
Markus Hitter f6d3ebf2ed sersendf.c: simplify code and save 4 bytes of RAM.
The previous code was actually misbehaving and sent this string:

  TYPE:Mendel EXTRUDER_COUNT:%d TEMP_SENSOR_COUNT:%d HEATER_COUNT:%d

(part of a string in gcode_process.c) instead of "0x". Ouch! Memory
landscape messed up?
2012-07-02 17:53:36 +02:00
Markus Hitter 305ef7a347 Fix compilation with HEATER_SANITY_CHECK defined.
The issue was introduced together with temperature sensor type
TT_NONE, in commit f9a4495aa1.
2012-07-02 12:33:44 +02:00
Markus Hitter 25e2872ecd Invert enable pins in the Gen6 config template.
It's a bit a guess, see http://forums.reprap.org/read.php?147,139138
2012-06-22 09:27:15 +02:00
Markus Hitter 886bacdbe4 temp.c: remove the delay for the MAX6675.
Suggestion by JTrantow, see also
https://github.com/triffid/Teacup_Firmware/issues/22
2012-05-21 21:00:17 +02:00
Markus Hitter 1657fb2731 Align heater definitions in config.h templates.
Purely cosmetical, no functional change.
2012-05-13 20:44:09 +02:00
Markus Hitter 9c126e3387 Adjust config.gen7-v1.4.h for Gen7 v1.4.
This means:

- Max endstops are gone.

- Min endstops are now PB0 / PB1 / PB2.

- Order of the steppers is inverted (X Y Z E instead of E Z Y X).

- All pins on port A one to the left (pin number - 1).
2012-05-13 20:40:22 +02:00
Markus Hitter fb5a32d344 Turn the PSU on before asking the endstops. 2012-05-13 20:18:33 +02:00
Markus Hitter e8518f9e34 Allow the ATmega1284P on Gen7's. 2012-05-13 20:15:55 +02:00
Markus Hitter 99dec3189a Split up config.h templates for the new Gen7 v1.4. 2012-05-13 20:14:58 +02:00
Markus Hitter 18f63ccf8e Add support for the ATmega1284/1284P.
As we don't need exclusive features of these chips, simply re-use
the definitions for the ATmega644.
2012-05-13 20:14:12 +02:00
Markus Hitter 15476fa655 Fix "E ghost moves". 2012-05-11 13:51:11 +02:00
Markus Hitter 50adc11392 gcode_parse.c: drop an obsolete comment. 2012-05-11 13:51:06 +02:00
Markus Hitter b8ab255b6b Sort DEBUG_ECHO properly.
Saves 200 bytes.
2012-05-11 13:51:03 +02:00
Markus Hitter 4c84b31536 gcode_parse.c, decfloat_to_int(): use a smaller variable.
This saves 78 bytes and likely some processing time.
2012-05-11 13:51:01 +02:00
Markus Hitter 5a9a134ae4 gcode_parse.c: review decfloat_to_int() yet again.
This time, raise range at the cost of some precision for the
newly explored areas.
2012-05-11 13:50:57 +02:00
Markus Hitter 88236ba698 gcode_process.c: also reset E on G92 without arguments. 2012-05-11 13:50:55 +02:00
Markus Hitter 4087357a70 clock.c: better debug display of positions. 2012-05-11 13:50:53 +02:00
Markus Hitter eaf6c453be Introduce gcode_init() and honor E_ABSOLUTE as the default. 2012-05-11 13:50:51 +02:00
Markus Hitter ac22a57329 dda.c: enable update_current_position() for the new E relative handling. 2012-05-11 13:50:49 +02:00
Markus Hitter 9dda3349be Revert the new relative handling for X, Y and Z.
These were commits 9dbfa7217e0de8b140846ab480d6b4a7fc9b6791 and
2b596cb05e621ed822071486f812eb334328267a.

There are several reasons why this new approach didn't work out well:

- The machine coordinate system is lost on relative movements.
  OK, we could keep tracking it, but this would mean even more
  code, so even more chances for bugs.

- With the lost coordinate system, no software endstops are possible.

- Neither of X, Y, Z will ever overflow.

- If a movement planner would appear one day, he'd have to handle
  relative movements as well. Even more code duplication.
2012-05-11 13:50:47 +02:00
Markus Hitter e5cc5ab066 dda.c: Fix a number of minor things, detected by Phord.
These were mistakes introduced with the last commit.
Thanks, Phord!
2012-05-11 13:50:35 +02:00
Markus Hitter 5f9ae5b087 Implement M82/M83 and handle relative movements entirely different.
Instead of converting them to absolute first, then back to
relative and having all the fuzz with working on the queue's
start vs. working at the queue's end, mark a movement as relative
and use this directly.
2012-05-11 13:50:33 +02:00
Markus Hitter 34ab76fe6e gcode_parse.c: review decfloat_to_int() again.
Finally, significant simplifications worked out while
keeping micrometer accuracy for up to 4290 mm.
2012-05-11 13:50:26 +02:00
Markus Hitter a6e2a10f10 Update Gen3 config template according to Mendelfanatic.
Thanks a lot for the help, Mendelfanatics. See
http://forums.reprap.org/read.php?147,33082,126135#msg-126135
2012-03-28 12:52:04 +02:00
Markus Hitter b1fa6a1eee Make intercom recognize memory barriers. 2012-03-28 12:39:10 +02:00
Markus Hitter 221b4587c9 README: hint to Pronterface. 2012-03-26 17:49:50 +02:00
Markus Hitter 53140cf87c ThermistorTables.h: add a const to temptable.
This is apparently required by Arch Linux' avr-gcc.
2012-03-26 17:43:40 +02:00
Markus Hitter 7b909fcf82 Fix thermistor tables, which also fixes a build failure.
Now we don't have tables for default or gen7 electronics, but
two default tables for a single vs. two different thermistors.
This seems to be more logical.
2012-03-25 16:16:48 +02:00
Markus Hitter 0d607fd620 sersendf.c: update comment. 2012-03-04 19:06:15 +01:00
Markus Hitter 25b72b4ea3 dda.c: remove the hack to set a minimum delay.
This in no longer needed, as the timer handles very short delays
now properly.
2012-03-04 19:03:31 +01:00
Markus Hitter 07fcff1661 dda.c: initialize dda.c properly. 2012-03-04 19:03:20 +01:00
Markus Hitter 1996cb4167 dda.c: axis_to_step = ' ' is no longer needed.
The need for this was a result of failing code in timer.c, which
was fixed in recent commits.
2012-03-04 19:03:07 +01:00
Markus Hitter 962209dceb Teach ACCELERATION_TEMPORAL to respect maximum feedrates. 2012-03-04 19:02:57 +01:00
Markus Hitter e8db35ec76 dda.c: get rid of a unused variable warning. 2012-03-04 19:02:48 +01:00
Markus Hitter 7528037d4e Save status register on each interrupt.
Costs 28 bytes binary size and two CPU cycles per interrupt,
at the advantage of getting rid of possible well hidden bugs.
2012-03-04 19:02:38 +01:00
Markus Hitter c126629ec8 Make the step timer fit for very short delays.
This isn't the magic patch which suddenly allows us to run at
arbitrary high step rates, but can deal with short bursts of
very short delays only. Typical for a 45 deg move when using
ACCELERATION_TEMPORAL.

The implementation simply extends the impossible small delay.
To keep overall timing promises regardless, the extra is stored
and compensated for when a longer delay request comes in.

Wrapped all this in #ifdef ACCELERATION_TEMPORAL, as this adds
about 300 bytes of binary size, so it likely slows down the
setTimer() code a bit and non-temporal algorithms are expected to
never request an unreasonable short delay.
2012-03-04 19:02:28 +01:00
Markus Hitter fd91ee7e8b dda.c: re-introduce ACCELERATION_TEMPORAL.
The implementation is slightly different this time, as it's not
using these famous bresenham algorithms. The intention is to
allow axis-independent movements, as it's required for
EMC-quality look-ahead.
2012-03-04 19:02:17 +01:00
Markus Hitter 6864268df8 gcode_process.c: add notes about M82 and M83. 2012-03-03 16:58:41 +01:00