Go Down

Topic: Problemas ¿Largo de Programa? (Read 479 times) previous topic - next topic

Jota1973

Estimados,

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.

De antemano gracias
Saludos José Miguel


tifilus

Hola Jose Miguel!

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

suerte!!

c-agua

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.

Un saludo

ehrja

Interesante como para no creerlo:

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

Jota1973

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:
- mini SO y COM       OK
- PID                              OK
- Gyro                           en proceso

próximo pasos
- Gyro + PID + Servo
- Prueba de vuelo nivelado sin RC

noter

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.

Go Up