const unsigned int interval = 1500;

void setup() {
  Serial.begin(115200);

}

unsigned long fastMillis ()
{
  unsigned long  k  = micros();
  return k >> 6;
}
unsigned long now;

void loop() {
  now = fastMillis();
  setToMillis();
  addToMillis();
  theBlocker();

}

void setToMillis(){
  static unsigned long previousMillis = now;
  unsigned long currentMillis = now;
  static unsigned int count = 0;
  if (currentMillis - previousMillis >= interval){
    count++;
    Serial.print("setToMillis : ");
    Serial.print(currentMillis);
    Serial.print("  count : ");
    Serial.print(count);
    Serial.print(" Elapsed : ");
    Serial.print(currentMillis - previousMillis);
    Serial.println();
    previousMillis = currentMillis;
  }
}

void addToMillis(){
  static unsigned long previousMillis = now;
  static unsigned long actualPreviousMillis;
  unsigned long currentMillis = now;
  static unsigned int count = 0;
  if (currentMillis - previousMillis >= interval){
    count++;
    Serial.print("addToMillis : ");
    Serial.print(currentMillis);
    Serial.print("  count : ");
    Serial.print(count);
    Serial.print(" Elapsed : ");
    Serial.print(currentMillis - actualPreviousMillis);
    if(currentMillis - actualPreviousMillis < interval){
      Serial.print(" <-- Short Inverval!");
    }
    Serial.println();
    previousMillis += interval;
    actualPreviousMillis = currentMillis;
  }
}

void theBlocker(){
  unsigned long start = fastMillis();
  while (fastMillis() - start < 600);
}