d27dd13a54
- Fixed a premature step end bug dating back to Simen's 0.7b edge version is fixed, from which this code is forked from. Caused by Timer2 constantly overflowing calling the Step Reset Interrupt every 128usec. Now Timer2 is always disabled after a step end and should free up some cycles for the main program. Could be more than one way to fix this problem. I'm open to suggestions. - _delay_ms() refactored to accept only constants to comply with current compilers. square() removed since not available with some compilers.
46 lines
1.3 KiB
C
46 lines
1.3 KiB
C
/*
|
|
nuts_bolts.c - Shared functions
|
|
Part of Grbl
|
|
|
|
Copyright (c) 2009-2011 Simen Svale Skogsrud
|
|
|
|
Grbl is free software: you can redistribute it and/or modify
|
|
it under the terms of the GNU General Public License as published by
|
|
the Free Software Foundation, either version 3 of the License, or
|
|
(at your option) any later version.
|
|
|
|
Grbl is distributed in the hope that it will be useful,
|
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
GNU General Public License for more details.
|
|
|
|
You should have received a copy of the GNU General Public License
|
|
along with Grbl. If not, see <http://www.gnu.org/licenses/>.
|
|
*/
|
|
|
|
#include "nuts_bolts.h"
|
|
#include <stdint.h>
|
|
#include <stdlib.h>
|
|
#include <util/delay.h>
|
|
|
|
int read_double(char *line, uint8_t *char_counter, double *double_ptr)
|
|
{
|
|
char *start = line + *char_counter;
|
|
char *end;
|
|
|
|
*double_ptr = strtod(start, &end);
|
|
if(end == start) {
|
|
return(false);
|
|
};
|
|
|
|
*char_counter = end - line;
|
|
return(true);
|
|
}
|
|
|
|
|
|
// Delays variable defined milliseconds. Compiler compatibility fix for _delay_ms(),
|
|
// which only accepts constants in future compiler releases.
|
|
void delay_ms(uint16_t ms)
|
|
{
|
|
while ( ms-- ) { _delay_ms(1); }
|
|
} |