No compromises for the manage_heater()

No compromises for the manage_heater(). manage_heater() will return immediately when there is nothing to do, but needs a constant detaT to work proper.
Calling idle() only every 200ms results in a display update every ~2 seconds - that should be enough.
For the other functionalities in idle() and manage_inactivity() 200ms is a lot but hopefully works.
This commit is contained in:
AnHardt 2016-05-19 20:52:11 +02:00
parent 0c4d885d5b
commit 2207001333
3 changed files with 8 additions and 7 deletions

View file

@ -448,11 +448,11 @@
// @section extras // @section extras
// Arc interpretation settings: // Arc interpretation settings:
#define ARC_SUPPORT // Disabling this saves ~2660bytes #define ARC_SUPPORT // Disabling this saves ~2738 bytes
#define MM_PER_ARC_SEGMENT 1 #define MM_PER_ARC_SEGMENT 1
#define N_ARC_CORRECTION 25 #define N_ARC_CORRECTION 25
// Support for G5 with XYZE destination and IJPQ offsets // Support for G5 with XYZE destination and IJPQ offsets. Needs ~2666 bytes
//#define BEZIER_CURVE_SUPPORT //#define BEZIER_CURVE_SUPPORT
const unsigned int dropsegments = 5; //everything with less than this number of steps will be ignored as move and joined with the next movement const unsigned int dropsegments = 5; //everything with less than this number of steps will be ignored as move and joined with the next movement

View file

@ -7604,13 +7604,14 @@ void prepare_move() {
float feed_rate = feedrate * feedrate_multiplier / 60 / 100.0; float feed_rate = feedrate * feedrate_multiplier / 60 / 100.0;
millis_t previous_ms = millis(); millis_t next_ping_ms = millis() + 200UL;
for (i = 1; i < segments; i++) { // Iterate (segments-1) times for (i = 1; i < segments; i++) { // Iterate (segments-1) times
thermalManager.manage_heater();
millis_t now = millis(); millis_t now = millis();
if (now - previous_ms > 200UL) { if (ELAPSED(now, next_ping_ms)) {
previous_ms = now; next_ping_ms = now + 200UL;
idle(); idle();
} }

View file

@ -118,15 +118,15 @@ void cubic_b_spline(const float position[NUM_AXIS], const float target[NUM_AXIS]
bez_target[Y_AXIS] = position[Y_AXIS]; bez_target[Y_AXIS] = position[Y_AXIS];
float step = MAX_STEP; float step = MAX_STEP;
uint8_t idle_counter = 0;
millis_t next_ping_ms = millis() + 200UL; millis_t next_ping_ms = millis() + 200UL;
while (t < 1.0) { while (t < 1.0) {
thermalManager.manage_heater();
millis_t now = millis(); millis_t now = millis();
if (ELAPSED(now, next_ping_ms)) { if (ELAPSED(now, next_ping_ms)) {
next_ping_ms = now + 200UL; next_ping_ms = now + 200UL;
(idle_counter++ & 0x03) ? thermalManager.manage_heater() : idle(); idle();
} }
// First try to reduce the step in order to make it sufficiently // First try to reduce the step in order to make it sufficiently