[2.0] Fix up G33, LPC1768 + SDCARD_SORT_ALPHA (#8250)

* Update Conditionals_post.h

* Add a cast to round() to convert to a unsigned int

Add's a cast to round() so that it will compile properly. round() returns a float which must be cast to a integer for the following % operation. Use a unsigned int as a negative index to an array is wrong. Should never be more than 255 points allowing us to use a 8 bit cast.

* Update G33.cpp
This commit is contained in:
Colten Edwards 2017-11-04 17:04:18 -06:00 committed by Scott Lahteine
parent 46c0b73578
commit e0a6ee8da5
2 changed files with 24 additions and 30 deletions

View File

@ -199,31 +199,24 @@ static float probe_G33_points(float z_at_pt[NPP + 1], const int8_t probe_points,
for (int8_t circle = -offset; circle <= offset; circle++) { for (int8_t circle = -offset; circle <= offset; circle++) {
const float a = RADIANS(210 + (360 / NPP) * (axis - 1)), const float a = RADIANS(210 + (360 / NPP) * (axis - 1)),
r = delta_calibration_radius * (1 + 0.1 * (zig_zag ? circle : - circle)), r = delta_calibration_radius * (1 + 0.1 * (zig_zag ? circle : - circle)),
interpol = fmod(axis, 1); interpol = FMOD(axis, 1);
const float z_temp =
#if ENABLED(PROBE_MANUALLY) #if ENABLED(PROBE_MANUALLY)
float z_temp = lcd_probe_pt(cos(a) * r, sin(a) * r); lcd_probe_pt(cos(a) * r, sin(a) * r)
#else #else
float z_temp = probe_pt(cos(a) * r + dx, sin(a) * r + dy, stow_after_each, 1); probe_pt(cos(a) * r + dx, sin(a) * r + dy, stow_after_each, 1)
#endif #endif
;
// split probe point to neighbouring calibration points // split probe point to neighbouring calibration points
z_at_pt[round(axis - interpol + NPP - 1) % NPP + 1] += z_temp * sq(cos(RADIANS(interpol * 90))); z_at_pt[uint8_t(round(axis - interpol + NPP - 1)) % NPP + 1] += z_temp * sq(cos(RADIANS(interpol * 90)));
z_at_pt[round(axis - interpol) % NPP + 1] += z_temp * sq(sin(RADIANS(interpol * 90))); z_at_pt[uint8_t(round(axis - interpol)) % NPP + 1] += z_temp * sq(sin(RADIANS(interpol * 90)));
} }
zig_zag = !zig_zag; zig_zag = !zig_zag;
} }
if (_7p_intermed_points) if (_7p_intermed_points)
LOOP_CAL_RAD(axis) { LOOP_CAL_RAD(axis)
/*
// average intermediate points to towers and opposites - only required with _7P_STEP >= 2
for (int8_t i = 1; i < _7P_STEP; i++) {
const float interpol = i * (1.0 / _7P_STEP);
z_at_pt[axis] += (z_at_pt[(axis + NPP - i - 1) % NPP + 1]
+ z_at_pt[axis + i]) * sq(cos(RADIANS(interpol * 90)));
}
*/
z_at_pt[axis] /= _7P_STEP / steps; z_at_pt[axis] /= _7P_STEP / steps;
} }
}
float S1 = z_at_pt[CEN], float S1 = z_at_pt[CEN],

View File

@ -1079,10 +1079,6 @@
#undef MOTOR_CURRENT #undef MOTOR_CURRENT
#endif #endif
#if ENABLED(SDCARD_SORT_ALPHA)
#define HAS_FOLDER_SORTING (FOLDER_SORTING || ENABLED(SDSORT_GCODE))
#endif
// Updated G92 behavior shifts the workspace // Updated G92 behavior shifts the workspace
#define HAS_POSITION_SHIFT DISABLED(NO_WORKSPACE_OFFSETS) #define HAS_POSITION_SHIFT DISABLED(NO_WORKSPACE_OFFSETS)
// The home offset also shifts the coordinate space // The home offset also shifts the coordinate space
@ -1197,4 +1193,9 @@
#endif #endif
#endif #endif
// needs to be here so that we catch the above changes to our defines
#if ENABLED(SDCARD_SORT_ALPHA)
#define HAS_FOLDER_SORTING (FOLDER_SORTING || ENABLED(SDSORT_GCODE))
#endif
#endif // CONDITIONALS_POST_H #endif // CONDITIONALS_POST_H