Funciones con Arduino

Saludos a la comunidad, estoy tratando de hacer una función de tiempo con la instrucción millis(), pero cuando cuando esta la pongo en ejecución no hace lo mismo que cuando coloco la instrucción completa en el void loop, de verdad tengo dias buscando que es lo que pasa internamente, pero no existe un depurador para este micro que no dependa de un JTAG, es decir no he podido emular el arduino y hacer una depuración simple,

anexo parte del codigo que me esta generando problemas

int temporizador(unsigned long tiempo_ante, int tiempo_aux, int toff, int ton, int pinsalida);

void loop()
{
  /*inicio de temporizadores*/
  temporizador(tempo_ant_1, tiempoaux_1, Toff_1, Ton_1, salida_1);
}

/*configuracion de temporizador */
int temporizador(unsigned long tiempo_ante, int tiempo_aux, int toff, int ton, int pinsalida)
{
  if ((millis() - tiempo_ante) >= tiempo_aux)
  {
    if (digitalRead(pinsalida) == HIGH)
    {
      tiempo_aux = toff;
      Serial.println(tiempo_aux);
      Serial.println(tiempo_ante);
      Serial.println(millis());
    }
    else
    {
      tiempo_aux = ton;
    }
    digitalWrite(pinsalida, !digitalRead(pinsalida));
    tiempo_ante = millis();
  }
  return  pinsalida;

Llevas dias buscando y has ido a la sección Documentación => Indice de temas tutoriales => millis() ? Ahi esta bien explicado.

Asi como has planteado no se puede responder.
Primero no esta el código completo y si tu no pudiste resolverlo nosotros con solo lo que tu crees que falla tampoco.
Tenemos que ver todo, correrlo y ver que ocurre.

Y de paso explica que pretendes porque solo dices como funciona, solo dices esto

estoy tratando de hacer una función de tiempo con la instrucción millis(), pero cuando cuando esta la pongo en ejecución no hace lo mismo que cuando coloco la instrucción completa en el void loop,

nosotros debemos adivinar?

Usar millis() no es tan simple en un código que esta armado con delay() hay que hacer un cambio de forma de programar en tu cabeza primero. Por eso en lo personal y como dice @ArduMyth creo que delay() hace mas daño que otra cosa.
Se debería desterrar su uso porque solo sirve para Blink.ino.

Ahora fuera de bromas.. implementar millis() en tu funcion no es tan simple. Porque hay que ver todo tu código.
Tu código antes hacía cosas y luego llamaba a esta rutina y claro, se detenía con delay() y luego seguia.

Ahora cuando llames a algo con millis() el código seguirá y hasta no cumplir el período de tiempo no hará lo que esperas.
Asi que puede que funcione como no, por eso hay que ver todo el código.