Estaba desarrollando un controlador para mantener vuelo estable de aero-modelos.
Tengo problemas con el largo del programa (al parecer), escribo una linea más y el procesador deja de trabajar correctamente y eso llevo recién 12Kbytes de mi arduino-uno.
La verdad que es como darse con la cabeza contra la pared, no lo puedo resolver.
Lo comparto para que lo puedan revisar, creo que es interesante y también les puede servir de algo, tiene:
un mini sistema operativo
Manejo de String
Temporizador (interrupción)
EEPROM
Float2String y al reves.
Es programa de 3 sketch el problema lo deje en el ultimo:
Test_PI_Funciones_02.ino
Las ultimas dos lineas
Lo ejecuto sin problemas, pero le pongo las ultimas 2 linea y al ejecutar la instrucción PIstart (a través del monitor serial) el Arduino Colapsa o entra en un loop en alguna parte.
Si ejecutas PIhelp salen todas las instrucciones disponibles.
No puedo abrir el archivo en este ordenador (cosa del ordenador, no del archivo)..
No quiero comentarte algo al tun-tún (que lo voy a hacer, pero bueno... ), pero por experiencias personales, a mi me ha pasado algo parecido y creia que era el largo del programa, pero finalmente resultaba ser que me pasaba con los arrays que utilizaba.. me pasaba de largo con éstos, se saturaban los arrays y saturaban mi Arduino Mega (para aquel proyecto utilicé el Mega)
lo arreglé volviendo a poner la posicion 0 para el array cada vez que se ejecutaba el loop.
No se si a lo mejor te ocurre lo mismo con el String o si tienes algun array...
como no puedo ver el archivo ahora es posible que esto que te cuento no te sirva de nada, pero por si acaso y para que puedas ir probando algo...
Buenas tardes:
Creo que el problema es que te comes la RAM. Prueba a utilizar PROGMEM para liberar RAM.
El fichero Test_PI_Aux_02.ino no me deja abrirlo.
solo dos llamadas a Serial.print() hacen el problema, WTF!?
también iba a sugerir un problema de desbordamiento de RAM pero ahora no lo creo, ya lo mirare mejor mas tarde.
/* --- Por cierto muy bien ordenado el código, pero le faltan comentarios. --*/
para los que no puedan abrir bien el sketch el archivo principal es "Test_PI_Com_02.ino"
Jota1973 ojala lo puedas subir en .zip
Muchas Gracias,
Voy a subir el Zip y tomaré el concejo de los comentarios.
Auque logre seguir adelante, cambiándome a otra función
quedé intrigado porqué con dos Serial.Print se muere el programa. Inicialmente me había pasado algo similar, pero pensé que era mi inexperiencia y que en alguna parte había quedado en un loop infinito. Luego de eso me puse más serio y lo hice bien ordenadito: un skecth para el mini SO, un Skecth para la funciones auxiliares y asi...
... Y bueno apareció el problema: No me es razonable que por repetir la función muchas veces se cuelgue, llegue a pensar que se "atora" el puerto con la avalancha de caracteres... pero tampoco me convenzo.
Nota: efectivamante Test_PI_Com_02.ino es el principal
Igual les dejo la inquietud, por si alguien descubre el misterio
Saludos José Miguel.
Nota: Ahora voy por el giroscopio (como varios por aqui) con el fin de hacer un navegador para un avión RC.
voy pasito a pasito:
Veo que esa función es llamada mediante un temporizador. ¿No será que no le da tiempo a ejecutarse por completo y vuelve a ser rellamada por el temporizador? Prueba a ver utilizando en el monitor serial y el setup una velocidad más alta para que los serial.print de esa función se ejecuten más rápido.
Saludos.