float start_time;
float seconds_elapsed;
float seconds_elapsed_total;
Times should really be unsigned long.
timeCurrent=millis();
if(timeCurrent<*timeMark) { //Rollover detected
timeElapsed=(TIMECTL_MAXTICKS-*timeMark)+timeCurrent; //elapsed=all the ticks to overflow + all the ticks since overflow
...
if(timeElapsed>=timeInterval) {
You don't need to worry about overflow if you subtract. eg,
if(millis () - timeMark > timeInterval) {
You can save quite a bit of RAM by using the "F" macro for your string literals.
eg.
Instead of:
Serial.println("Diag Mode is Running ");
Use:
Serial.println(F("Diag Mode is Running "));
Using too much RAM might cause it to crash.