Go Down

Topic: No me deja subir el programar Arduino nano co el programador Atmega328. (Read 574 times) previous topic - next topic

Ismael_muriedas

Muy buenas, tengo un Arduino nano que no es original y no sé si van por ahí los tiros de que no me funcione.. espero que podáis resolverme la duda.
Me deja programarlo con el programador Atmega168 pero cuando quiero programarlo con el Atmega328 me da error.
Al estar haciendo un programa bastante grande..se me queda justo al programarlo con el Atmega168 y necesito hacerlo con el Atmega328.
Adjunto foto de la placa.



Gracias de antemano.

Moderador: Editado el post para visualizar la imagen

Lagger18

Si tienes un micro ATmega168, solo puedes compilar con ese chip. Aunque cambies la compilación, el micro sigue siendo el mismo físicamente. Si no te entra el programa te va a tocar comprarte otro nano pero que lleve un ATmega328.

Un saludo.

Ismael_muriedas

En la placa viene impreso ATmega328 y ATmega168..por eso pense que se podria programar con ambas congiguraciones. Ya veo que no..muchas gracias.
Una pregunta, ¿se podría crear una libreria donde desarrollar todas las funciones del programa y llamarlas directamente para ahorrar espacio en el programa?
Un saludo!

surbyte

Lo que diga la placa es un tema.
Que dice el chip de tu placa? Dice ATMEGA128 o 328? Obviamente dirá 128 y por eso es lo que te deja programar.

Quote
¿se podría crear una libreria donde desarrollar todas las funciones del programa y llamarlas directamente para ahorrar espacio en el programa?
Detalla mejor la idea o la consulta.
Qué funciones?

Ismael_muriedas

Pues el programa en si es una especie de reloj tarifario con el que cuantifico el precio hora de 3 mesas.
1-muestra mesas activas.

2-si se pulsa una de las mesas, se activa, y luego volviendo a pulsar en ellas te dice el tiempo y el dinero que lleva en tiempo real.

3-si das a stop  y luego a la mesa que quieres parar te para el contador de la mesa selecionada y te muestra lo que llevaba.

4-un menu secreto si pulsas 3 segundos el stop con las mesas paradas para cambiar el precio de las mesas.

5-otro menu secreto con un contador que suma lo acumulado por la mesas con la capacidad de reiniciarlo cuando se quiera.
 

Asi que claro..es bastante largo, los 4 primeros puntos lo hace sin problemas... usando 93% del espacio disponible. Pero cuando he intentado incorporar el quinto punto..sube hasta un 98% y el programa sufre reinicios.

Mi idea (que no se si se puede) seria hacer las funciones y guardarlas en una libreria..y luego en el programa llamar a dichas funciones.


surbyte

Evidentemente no has leido las normas del foro.

Tienes un problema, hablas de que tu programa ocupa semejante cantidad de espacio pero no los subes!!

Asi que adjúntalo para que veamos de que se trata.

Ismael_muriedas

La verdad es que me es bastante lioso en si todo esto..es muy poco intuitiva la web. Asi que siento de ante mano si no posteo como te gusta pero es sin mala intencion. Dicho esto..no hay problema ahora pongo mi programa. LLevo poco en esto asi que supongo que mi programacion es de todo menos clara y eficiente. fuera aparte el punto 5 esta a medio hacer..xq no podía comprobarlo.

subo el archivo directamente xq mi programa pasa de los 9000 caracteres.

surbyte

No es una cuestión de como me gusta o no me gusta.
Ante todo las normas te piden que presentes toda la información y yo intento señalarlo cuando detecto que no se hace debidamente.

Puede que mi tono no sea todo lo cordial que debería serlo, aún intento mejorar ese aspecto.

El tema es que la gente habla de un problema que no puede resolver, pero no lo expone correctamente.

Si tu programa tiene problemas de espacio, es que esta mal programado o que debes pasar a un arduino con mayor capacidad de almacenamiento de código.

Entonces si tu no lo pudiste resolver, que mejor que aportar TODA la información posible y no suponer que es esto o lo otro. Esta claro que como parte de tu comentario lo hagas para guiarnos pero luego uno mirando lo que tu presenta analiza y saca sus conclusiones basados en su experiencia.

Tu código arroja estos resultados

Quote
Program:   14160 bytes (43.2% Full)
(.text + .data + .bootloader)

Data:        970 bytes (47.4% Full)
(.data + .bss + .noinit)


 [SUCCESS] Took 15.50 seconds
No esta al 98% ni en datos ni en alamacenamiento de código y si hay mucho para mejorar.

Quote
si que claro..es bastante largo, los 4 primeros puntos lo hace sin problemas... usando 93% del espacio disponible. Pero cuando he intentado incorporar el quinto punto..sube hasta un 98% y el programa sufre reinicios.
Ahora qué haces para llegar a las situaciones que describes, porque a mi me dice que estas por debajo del 50% y a ti que estas sin espacio?

Lagger18

No esta al 98% ni en datos ni en alamacenamiento de código y si hay mucho para mejorar.
Ahora qué haces para llegar a las situaciones que describes, porque a mi me dice que estas por debajo del 50% y a ti que estas sin espacio?
Yo apostaría por esos micros q son como los pendriver de los chinos, q te dicen q son de 8gb pero luego cuando metes una peli de 5gb te dice q sobrepasas la capacidad. Es decir, seguramente tenga menos memoria q un mega168 normal.

Por la foto desde luego no parece una buena imitación.  :smiley-confuse:

Ismael_muriedas

Buenas, os dejo escrito lo que me pone a la hora de compilar con ATmega168

Archiving built core (caching) in: C:\Users\isma_\AppData\Local\Temp\arduino_cache_264944\core\core_arduino_avr_nano_cpu_atmega168_0c812875ac70eb4a9b385d8fb077f54c.a
El Sketch usa 14150 bytes (98%) del espacio de almacenamiento de programa. El máximo es 14336 bytes.
Las variables Globales usan 938 bytes (91%) de la memoria dinámica, dejando 86 bytes para las variables locales. El máximo es 1024 bytes.
Poca memoria disponible, se pueden producir problemas de estabilidad.


Esto es lo que me sale en la compilación cuando uso el programador ATmega328

Opciones de compilación cambiadas, reconstruyendo todo
Archiving built core (caching) in: C:\Users\isma_\AppData\Local\Temp\arduino_cache_264944\core\core_arduino_avr_nano_cpu_atmega328_0c812875ac70eb4a9b385d8fb077f54c.a
El Sketch usa 14150 bytes (46%) del espacio de almacenamiento de programa. El máximo es 30720 bytes.
Las variables Globales usan 938 bytes (45%) de la memoria dinámica, dejando 1110 bytes para las variables locales. El máximo es 2048 bytes.


Cuando has hecho la compilación..con que lo hiciste? con el ATmega168 o el 328? a mi estos datos me los da con el 168..si uso el 328 se acerca mas a los valores que te salieron a ti...
A la pregunta que hice sobre crear una libreria donde llamar a todas las funciones en el programa principal..no me lo has contestado xq es una estupidez y se cae por su propio peso? Solo buscaba una solución que no significara cambiar de placa. Mi programación esta limitada x mi conocimiento. Asi que seguramente no está todo lo bien programado pero es lo que me da con lo que se de momento.

No tengo ni idea..de ahí que este preguntando.

He pedido a Elegoo unas nano que parecen copias de mejor calidad y que tienen el micro 328 para hacerlo a una mala con ellas.

mariobac

Hola
Viendo la foto, yo diría que tu placa tiene un ATmega168, porque eso es lo que está marcado.
Los microcontroladores tienen un código para identificar cada modelo. El siguiente enlace te explica mejor cómo se lee ese código:

Identifying the Arduino microcontroller type

Te adjunto una modificación del programa que aparece en esa página. Mi programa te imprime en el terminal serie los tres valores que definen el código de identificación del chip.

Espero te sirva

Go Up