Merge pull request #32 from jv4779/master

minor grbl code issues
This commit is contained in:
Simen Svale Skogsrud 2011-07-10 12:47:59 -07:00
commit 74576a8a0c
3 changed files with 20 additions and 12 deletions

View File

@ -232,6 +232,7 @@ void planner_reverse_pass() {
// The kernel called by planner_recalculate() when scanning the plan from first to last entry. // The kernel called by planner_recalculate() when scanning the plan from first to last entry.
void planner_forward_pass_kernel(block_t *previous, block_t *current, block_t *next) { void planner_forward_pass_kernel(block_t *previous, block_t *current, block_t *next) {
if(!current) { return; } if(!current) { return; }
if(previous) {
// If the previous block is an acceleration block, but it is not long enough to // If the previous block is an acceleration block, but it is not long enough to
// complete the full speed change within the block, we need to adjust out entry // complete the full speed change within the block, we need to adjust out entry
// speed accordingly. Remember current->entry_factor equals the exit factor of // speed accordingly. Remember current->entry_factor equals the exit factor of
@ -245,6 +246,7 @@ void planner_forward_pass_kernel(block_t *previous, block_t *current, block_t *n
} }
} }
} }
}
// planner_recalculate() needs to go over the current plan twice. Once in reverse and once forward. This // planner_recalculate() needs to go over the current plan twice. Once in reverse and once forward. This
// implements the forward pass. // implements the forward pass.

View File

@ -101,6 +101,9 @@ inline void trapezoid_generator_tick() {
if (current_block) { if (current_block) {
if (step_events_completed < current_block->accelerate_until) { if (step_events_completed < current_block->accelerate_until) {
trapezoid_adjusted_rate += current_block->rate_delta; trapezoid_adjusted_rate += current_block->rate_delta;
if (trapezoid_adjusted_rate > current_block->nominal_rate ) {
trapezoid_adjusted_rate = current_block->nominal_rate;
}
set_step_events_per_minute(trapezoid_adjusted_rate); set_step_events_per_minute(trapezoid_adjusted_rate);
} else if (step_events_completed > current_block->decelerate_after) { } else if (step_events_completed > current_block->decelerate_after) {
// NOTE: We will only reduce speed if the result will be > 0. This catches small // NOTE: We will only reduce speed if the result will be > 0. This catches small
@ -135,8 +138,10 @@ SIGNAL(TIMER1_COMPA_vect)
// Then pulse the stepping pins // Then pulse the stepping pins
STEPPING_PORT = (STEPPING_PORT & ~STEP_MASK) | out_bits; STEPPING_PORT = (STEPPING_PORT & ~STEP_MASK) | out_bits;
// Reset step pulse reset timer so that The Stepper Port Reset Interrupt can reset the signal after // Reset step pulse reset timer so that The Stepper Port Reset Interrupt can reset the signal after
// exactly settings.pulse_microseconds microseconds. // exactly settings.pulse_microseconds microseconds. Clear the overflow flag to stop a queued
// interrupt from resetting the step pulse too soon.
TCNT2 = -(((settings.pulse_microseconds-2)*TICKS_PER_MICROSECOND)/8); TCNT2 = -(((settings.pulse_microseconds-2)*TICKS_PER_MICROSECOND)/8);
TIFR2 |= (1<<TOV2);
busy = TRUE; busy = TRUE;
sei(); // Re enable interrupts (normally disabled while inside an interrupt handler) sei(); // Re enable interrupts (normally disabled while inside an interrupt handler)

View File

@ -24,6 +24,7 @@
//#include "wiring_private.h" //#include "wiring_private.h"
#include <math.h> #include <math.h>
#include <stdlib.h>
#include <avr/pgmspace.h> #include <avr/pgmspace.h>
#include <avr/interrupt.h> #include <avr/interrupt.h>
@ -176,7 +177,7 @@ void printFloat(double n)
fractional_part = modf(n, &integer_part); fractional_part = modf(n, &integer_part);
printInteger(integer_part); printInteger(integer_part);
printByte('.'); printByte('.');
printInteger(round(fractional_part*1000)); printInteger(labs(round(fractional_part*1000)));
} }
// void printHex(unsigned long n) // void printHex(unsigned long n)