fallo a los 22KB

pues el problema que tengo ahora con el arduino esque tengo un programa que tengo que limitar a 22KB, si me paso de esa cantidad de memoria el microcontrolador no responde ( le añada el codigo que le añada), antes tenia el 328 con el bootloader de duemilanove y ahora tengo otro 328 pero con bootloader UNO.

Es rarisimo ¿no? se supone que tengo 30KB para programa,,,

el programa funciona perfectamente hasta los 21900Bytes , (por cierto el proyecto usa una ethernet shield, aunque no creo que tenga nada que ver). Y si le añado cualquier linea de código más por ejemplo un par de if o unos simples client.print(), deja de responder...

¿? gracias!

he probado en el MEGA y funciona perfectamente aunque me pase de sobra de los 22KB ¿puede ser un fallo del bootloader, el porgrama o similar?

¿alguine ha exprimido tanto un Atmega 328 ?,,, porque hasta ahora no habia tenido problemas de este tipo. peor ahora me "falta memoria" ,,pero se supone que esta se puede utilizar,,,

Darme vuestras opiniones , ya que por ahora el problema lo "tengo resuleto" con el arduino MEGA.

el problema puede estar más bien en la RAM que usas para variables. si trabajas con matrices se come muy rápido

nada nada el problema no es la RAM, he usado una función que me dice la RAM libre y apenas uso 300 bytes. la mayoria de variables que son enteros y solo unas pocas cadenas de texto cortas.

Hola,

Tengo un Diecimila con un problema parecido.
En cuanto te pasa un poco por encima de una determinada longitud de programa No puedo asegurar ahora que en mi casos sean los 22K), este se ejecuta erroneamente.

entonces,,,¿puede que exista algun tipo de fallo en al bootloader de Arduino, que no deje usar al 100% la memoria de programa?.

Ya que con el Atmega186 es comprensible que no puedas usar programas grandes (aunque este si he conseguido hacerlo funcionar hasta el limite de su capacidad).

tanto con el bootloader de duemilanove como con UNO , ocurre exactamente lo mismo y como digo, no es problema del programa ya que esta funcionando (y con muchas mas funciones) en un arduino MEGA 2560, con un tamaño de 25KB.

Yo ahora ando en los 21000 y subiendo asique si en unos días tengo problemas ya sabre que no soy el único. Estare al loro de este hilo por si sale o se da con la solución.
Un saludo

Ok, por probar simplemente,,,metele codigo hasta llegar a los 22..23KB a ver si te da fallos.

Pues a mi que me da que puede ser un problema de RAM...

He preguntado a mis alumnos y me han dicho que corren programas de más de 27KB en el ATMEGA328.

El que uno tenga definidas una serie de variables no quiere decir que esa sea toda la RAM que usa el procesador. Cada vez que se llama a una función hay una serie de registros que se guardan en RAM (STACK), si llamamos a funciones desde otras funciones y así sucesivamente podemos tener un consumo de memoria que haga que el STACK "pise" nuestra zona de variables (STACK OVERFLOW) y el programa deje de funcionar. Esto esplicaria la razón de que no funcione en un ATMEGA328 (2K de RAM) y si lo haga en una ATMEGA1280 (4K de RAM).

Si la aplicacion no requiere mucha comunicación serie puedes reducir el tamaño del buffer del puerto serie para ganar un poco de RAM en el 328.

Aupi, llevo 22234 y la cosa va bien, tube un susto pero era porque tenia un char [30] y estaba metiendo mas de 30 y se me desbordaba pero aumente la cantidad y se soluciono.
Suerte!!!