hacer reset desde el programa

Hola,
Necesito hacer reset de la placa cada cierto tiempo.
He encontrado la función

void(* resetFunc) (void) = 0; //declare reset function @ address 0

Lamándole cada x tiempo

  resetFunc();

reinicia al Arduino, pero no produce los mismos efectos que el botón. Debe ser un como un reinicio en caliente, no entiendo muy bien.

Para hacer desde el programa un reset que produzca los mismos efectos que el botón, existe algún modo? ¿O tendría que usar un relé?

Eso hace que el código vaya al inicio del código, pero no se reinicia el micro.
Reiniciar el micro a si mismo es un poco complicado ya que no se cumplen los tiempos requeridos. Si pones un pin conectado a reset y le pones nivel bajo, iniciará la fase de reinicio, pero el pin debe estar a nivel bajo más tiempo, pero al reiniciarse eso ya no ocurre, por lo que puede que se quede bloqueado en la fase de reinicio.
Necesitarías algo de hardware externo u otro micro para hacerlo bien.

+1 con chiva tienes que usar un watchdog de larga duracion( externo)
puede ser otro micro o tambien con un 555.

En este hilo plantee lo mismo.

Una de las pruebas que hice era usando un integrado de maxim. Una salida de arduino la llevaba a un pin del integrado y este hacia un reset en el pin 1 del Atmega328. Por lo que probé funcionaba muy bien.

Gracias a todos.
Probaré el 555, con el esquema del link que propone yOPERO