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.
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.