Pages: [1]   Go Down
Author Topic: fallo a los 22KB  (Read 1154 times)
0 Members and 1 Guest are viewing this topic.
0
Offline Offline
Newbie
*
Karma: 0
Posts: 29
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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!
Logged

0
Offline Offline
Newbie
*
Karma: 0
Posts: 29
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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

0
Offline Offline
Full Member
***
Karma: 2
Posts: 112
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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

0
Offline Offline
Newbie
*
Karma: 0
Posts: 29
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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.

Logged

0
Offline Offline
Jr. Member
**
Karma: 0
Posts: 52
Enginyeria Geek
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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.

Logged

0
Offline Offline
Newbie
*
Karma: 0
Posts: 29
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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.

Logged

Orduña- Bizkaia
Offline Offline
Sr. Member
****
Karma: 0
Posts: 317
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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
Logged

0
Offline Offline
Newbie
*
Karma: 0
Posts: 29
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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

ALCALA DE HENARES
Offline Offline
Sr. Member
****
Karma: 13
Posts: 279
Centro de Robótica Educativa
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

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

Centro de Robótica Educativa
www.complubot.com

Orduña- Bizkaia
Offline Offline
Sr. Member
****
Karma: 0
Posts: 317
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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!!!
Logged

Pages: [1]   Go Up
Jump to: