Programa en Arduino vuelve al setup inicial

Tengo un programa en Arduino bastante largo (2000 y pico lineas) (uso el Mega2560 - 8KB de SRAM). Aún así, de momento solo uso el 50 % de la SRAM en variables globales (tengo controladas las variables locales, las cuales consumen muy poca memoria, por tanto, no tengo problemas de memoria). El problema es que, de repente y siempre al llegar a la misma línea, el programa vuelve al 'setup' inicial y empieza de nuevo. Creo que el problema está relacionado con el uso de la función F(), con la cual guardo muchísimos strings que muestro por el puerto serie en la memoria flash (memoria de programa). ¿A alguien se le ocurre que podría ser?

Un pequeño esbozo de mi problema seria el siguiente:

...
void setup(){
Serial.begin(9600);
Serial.println(F("Punto 1"));
hacerAlgo1();
...
}

void loop(){
...
...
...
}

void hacerAlgo1(){
...
Serial.println(F("Punto 2"));
hacerAlgo2();
...
}

void hacerAlgo2(){
...
Serial.println(F("Punto 3"));
...
}

Explicación: el programa empieza mostrando el "Punto 1" por el puerto serie, hace lo que tiene que hacer en el setup y, finalmente, se mete en el hacerAlgo1(). En este, sigue haciendo cosas hasta que llega al "hacerAlgo2()". Se llama a esta función, se empieza a ejecutar y, al escribir por el puerto serie "Punto 3", en vez de hacerlo lo que pasa es que lo escribe a medias y vuelve al principio del setup. Por el puerto serie se vería algo como esto:

Punto 1
Punto 2
Pun?Punto 1
Punto 2
Pun?Punto 1
...

PD1: recordad que es un esbozo!!! Lo acabo de editar para ser más preciso!

PS2: ¡acabo de subir el código! (los comentarios y el log del puerto serie están escritos en catalán) Si observáis el puerto serie, veréis el log (aunque puede variar un poco al principio, ya que no se encontrarán el RTC ni el módulo de Ethernet):

CONFIGURANT TOT EL SISTEMA...


Configurant el servidor web...
La IP local del servidor és: 192.168.2.170
El port pel qual es comunica és: 5400


Cercant el RTC...
S'ha trobat el RTC. Es podrà guardar la data i l'hora de mostreig de les sondes.


Inicialitzant la targeta micro SD...
ERROR - La inicialització de la targeta micro SD ha fallat! Tornant a provar d'inicialitzar-la...
ERROR - La inicialització de la targeta micro SD ha fallat! Tornant a provar d'inicialitzar-la...
ERROR - La inicialització de la targeta micro SD ha fallat! Tornant a provar d'inicialitzar-la...
ERROR - La inicialització de la targeta micro SD ha fallat! Tornant a provar d'inicialitzar-la...
No s'ha pogut inicialitzar la targeta micro SD, per tant, no es podrà fer servir aquesta per a guardar dades i servir arxius als clients.


L'Arduino es quedarà esperant que l'usuari el reiniciï manualment per tal de tornar a provar d'inicialitzar la targeta micro SD.


Cercant dispositius...
S'han trobat 2 dispositius.


El mode paràsit està OFF.


Dispositiu trobat número 0 amb adreça: 28FF8843B3170151
La resolució configurada per aquesta sonda és de 9 bits.


Dispositiu trobat número 1 amb adreça: 28FFD243B3170179
La resolució configurada per aquesta sonda és de 9 bits.


S'està procedint a l'emmagatzemament a nivell local dels 'alias' de cada sonda configurats al registre de temperatura...


No s'ha pogut obrir l'arxiu alias.txt en mode lectura.


S'està procedint a l'emmagatzemament a nivell local dels temps de mostreig de cada sonda configurats al registre de temperatura...


No s'ha pogut obrir l'arxiu sampling.txt en mode lectura.


S'està procedint a l'emmagatzemament a nivell local del nom del fitxer més recent on es guarden les temperatures de cada sonda inclosa al registre de temperatura...


No s'ha pogut obrir l'arxiu files.txt en mode lectura.


Procedint a l'assignament d'alias i de temps de mostreig a les sondes connectades a l'Arduino, així com la creació dels directoris i arxius necessaris per a l'emmagatzemament de temperatures...


Identificador de sonda: 28FF8843B3170151

Aquesta sonda no està inclosa al registre de temperatura.

Configurant un nou 'alias'...

El seu 'alias' serà sondaA.

No s'ha pogut obrir l'arxiu 'alias.txt' en mode escriptura.

Configurant un temps de mostreig de 20 segons.
No s'ha p⸮CONFIGURANT TOT EL SISTEMA... ->>>> Aquí está el problema!!!


Configurant el servidor web...
La IP local del servidor és: 192.168.2.170
El port pel qual es comunica és: 5400
...(y continúa así en bucle)

Muchas gracias!

He encontrado el problema! Me explico:

Estaba haciendo pruebas a ver que pasaba si el programa intentaba funcionar sin una tarjeta SD. Como no puede inicializarla ya que esta no está, el intentar crear un directorio con ‘mkdir’ provoca un error grave (no se cual es exactamente) que crashea el programa y hace que vuelva a correr de nuevo desde el principio!

Saludos!

PD: me estaba volviendo loco!xD

Algo que no comentaste en tu post inicial

surbyte:
Algo que no comentaste en tu post inicial

Tienes razón! La próxima vez intentaré ser más explícito!

Saludos!