TUTORIAL: ¿Por qué mi programa en Arduino se reinicia, falla, se bloquea, ... ?

Wow! Estupendástica recopilación de trucos! Clap, clap, clap
Seguro que nos salva de una cuantas horas de tirarnos de los pelos a muchos de nosotros :smiley:

Lo meto en mi cuaderno de arduino. Gracias Sergegsx

1 Like

muy bueno!

Gracias

al Playground? => Arduino Playground - FAQ

Gracias!

:wink:

NO ME FUNCIONA.LO COMPILE ARDUINO 0022, ME TIRA ESTE ERROR

"In file included from sketch_nov18c.cpp:7:
sketch_nov18c:-1: error: previous declaration of 'int freeMemory()' with 'C++' linkage
MemoryFree.h:7: error: conflicts with new declaration with 'C' linkage
"

=( =( =( =( =( =( =(

Sergegsx:
Punto 2: Flash Memory.
En el caso de sobrepasar la memoria flash para almacenar el programa nos sera imposible subirlo a la placa, al intentarlo obtendremos un error: Binary sketch size: 27242 bytes (of a 32256 byte maximum)
El problema es que en el compilador nos indica que tenemos kB totales para nuestro programa. No obstante hay un fallo en el IDE por el cual obtendremos un error que nos impedirá subir nuestro programa al Arduino con programas de tamaño ligeramente menor a ese valor, lo cual puede confundirnos respecto al origen del problema.
El tamaño total que puede tener nuestro programa es de: 28672 bytes
sobrepasado este valor, no podremos subir el programa y el error que nos aparece no da mucha idea del motivo por el cual esta fallando. Así que recordarlo !

Creo que eso lo soluciona el nuevo Bootloader de WestfW (Optiboot 4.4), que ya viene incluido en el IDE 0023.

Razorblade:

Sergegsx:
Punto 2: Flash Memory.
En el caso de sobrepasar la memoria flash para almacenar el programa nos sera imposible subirlo a la placa, al intentarlo obtendremos un error: Binary sketch size: 27242 bytes (of a 32256 byte maximum)
El problema es que en el compilador nos indica que tenemos kB totales para nuestro programa. No obstante hay un fallo en el IDE por el cual obtendremos un error que nos impedirá subir nuestro programa al Arduino con programas de tamaño ligeramente menor a ese valor, lo cual puede confundirnos respecto al origen del problema.
El tamaño total que puede tener nuestro programa es de: 28672 bytes
sobrepasado este valor, no podremos subir el programa y el error que nos aparece no da mucha idea del motivo por el cual esta fallando. Así que recordarlo !

Creo que eso lo soluciona el nuevo Bootloader de WestfW (Optiboot 4.4), que ya viene incluido en el IDE 0023.

estupendo porque a mi me hizo perder 2 o 3 horas hasta que encontre porque no subian los sketch.
no sabia que existe la versión 23, descargandola....
a ver si encuentro que cambios tiene el Optiboot 4.4.
gracias por el aviso.

También viene incluido en la versión del IDE 1.0-rc2.
Lo que soluciona el bootloader de westfw (ahora el oficial) está escrito en el tema del foro al respecto.
En concreto sería el problema de "optiboot has problems uploading sketches bigger than about 30 KB". También es interesante que con su bootloader ya se puede usar el Uno como programador ISP, solucionando el problema "Optiboot does not support ArduinoasISP programmer".

Por cierto, ya se ha publicado el esquema y fotos de la nueva placa Uno R3, aunque de momento ni en la propia tienda oficial Arduino la venden, sólo en las tiendas americanas RadioShack.
El tema es que quitando las tonterías sacaperras (cambiar el color de la placa, cambiar la posición del pulsador reset, duplicar los pines TWI, añadir un pin sorpresa y un pin para compatibilidad con el Due), la modificación que han hecho al final para solucionar el problema del Reset de las Uno R2 (pico de tensión), es colocar un diodo entre Reset y +5V.
La modificación casera sería (supongo que con un 1N4148):

me baje el 0023, pero me sigue tirando el mismo error, no estoy poniendo p agregando codigo al codigo original.

AlexRodriguez, a ver si contesta Sergegsx, que yo nunca he usado esa librería.
El problema viene de mezclar C con C++.

Cual es ese pin sorpresa que lleva la R3?

Intenta averiguarlo xD
http://www.flickr.com/photos/jeremyblum/6162915410/

Aunque esa versión parece distinta de la R3, que parece que sigue siendo similar a la R2
http://www.flickr.com/photos/jeremyblum/6162915410/

segun lo q puede leer dice IDREF, Q signifiaca, ni idea.

=( =( =( =(

Puede ser un selector automático de tensión para los shields. Es decir detectar si se alimentan a 3.3V o 5V y alimentarlos adecuadamente o seleccionar el regulador para alimentar a todo. Viendo el cirio que han montado con los operacionales para seleccionar la fuente de alimentación.

El pin sorpresa será sorpresa hasta que le den una utilidad. De momento creo que es que no está ni conectado a nada. Pero vamos, igual pasado mañana sacan la R4 que ya no lo lleve.
El otro pin que decís es efectivamente para determinar la tensión, por compatibilidad con el Arduino Due. Vamos, para que las futuras Shield sepan si tienen que funcionar a 5 o a 3.3 V.

OLLE Razorblade, POR LO VISTO SABES MAS Q YO, POR LO MENOS NO ENTIENDO,JA.
PODRIAS PASARTE POR ESTE LINK, NO PUEDO ENCONTRAR UNA SOLUCION,GRACIAS!!

http://arduino.cc/forum/index.php/topic,78927.0.html

Eres un crack y me acabas de evitar horas de búsqueda. Sabía que mi problema era la memoria, pero no que las cadenas estáticas utilizaban SRAM.
Muchas gracias.

El problema que nos queda, es que arduino no tiene depuración paso a paso ni puntos de inspección, con lo que tenemos que seguir utilizando los Serial.print si queremos enterarnos de lo que pasa, para evitar que consuman memoria podeis utilizar directivas de preprocesador

#define DEBUG

#ifdef DEBUG

#endif

El solo se compila si existe #define DEBUG antes, si no no se compila
Para aplicarlo a funciones podeis eliminar la definicón con #undef DEBUG

Si no hacemos un pequeño esfuerzo por comentar la solución de nuestros problemas en los foros no aportaremos nada.

Gracias

Hola a todos, si lucho con la Ram de Arduino, pero me di cuenta de algo, que nadie ha mencionado, solo carguen la libreria SD.h, y veran que la RAM sube mas del 30% es una locura. Estaba haciendo un proyecto algo grande en un 328, Bluetooth, SD, Display, y mucho pero no demaciado codigo, me decia poca memoria, me canse de borrar y resumir codigo, pero no entendia, cuando elimine la libreria SD.h, increiblemente bajo de 80% a 20%, me parece una locura pensar que logicamente un modulo SD te ayuda con la memoria, te quite tanta en ram, hasta ahora no encontre ninguna libreria alternativa, tambien probe en bajar la version a 1.0 y muy extrañamente sigue ocupando lo mismo

Hermano me salvaste el día!. Comento por si a alguien le sirve: necesitaba crear archivos con nombre en una SD y a veces los creaba y a veces no, un error muy aleatorio, había visto el cartel de "poca memoria disponible se pueden producir problemas de estabilidad arduino" pero no pensé que fuera TAN crítico; ni bien borre un cartel que imprimía por el puertos serial y liberé bastante memoria... se solucionó el problema :slight_smile: :slight_smile: :).