Specifically, there are a few null-pointer dereferences during static initialization. First, FiveD_GCode_Interpreter declares the global extruder array:
extruder* ex[EXTRUDER_COUNT];
byte extruder_in_use = 0;
That's followed shortly thereafter by the cartesian_dda static instance declarations, before setup() has had a chance to initialize the array:
static cartesian_dda cdda0;
static cartesian_dda cdda1;
static cartesian_dda cdda2;
static cartesian_dda cdda3;
But the cartesian_dda ctor calls set_units, which in turn initializes the e member like so:
units.e = ex[extruder_in_use]->stepsPerMM();
Boom!
Edited 1 time(s). Last edit at 10/14/2010 04:40AM by Myndale.