Haz una pregunta
  Foros de Electrónica » Diseño digital » Microcontroladores y sistemas embebidos
Foros Registrarse ¿Olvidaste tu contraseña?

Temas similares

29/06/2010 #1


Variables Const se guardan en RAM o en ROM?
Estimadísimos!

Una pregunta corta:

Trabajando en programación C de CCS para Pic, me gustaría saber lo siguiente:

Dónde se guardan las variables tipo CONST? Se guardan en la ROM o en la RAM?

Concretamente, es un 18F2550, y necesito guardar en el unas gigantescas tablas de datos (al rededor de 8 KB). Estas tablas en el programa están declaradas como CONST.
Como sabemos, el 18F2550 tiene 32KB de rom, lo cual es suficiente.

Quisiera poder evitar meter estas tablas en una eeprom externa, ya que si encuentro la forma de meter estas tablas en la ROM, estóy listo.

Al CCS se le puede configurar, para que lo haga así?

Muchas gracias!
Saludos!
30/06/2010 #2


Respuesta: Variables Const se guardan en RAM o en ROM?
No estoy seguro del todo, pero pienso que las tablas de constantes las guarda en la rom. Prueba a compilar el programa sin tablas y mira el uso de la memoria, y luego compila con tablas y mira que memoria es la que ha ocupado.
30/06/2010 #3

Avatar de Meta

Respuesta: Variables Const se guardan en RAM o en ROM?
Las tablas se guardar en ROM, en ensamblador aguanta hasta 256, si te pasa no funcionará bien. En C no tengo idea. Se que en asm se puede hacer más largo según indica aquí como hacerlo.

http://www.pic16f84a.org/index.php?o...6f84&Itemid=60

Puedes guardar constante en la RAM también a una variable que no cambia, pero las tablas son en ROM.

Que yo sepa, los 18Fx550 son de 16K, no 32k.
30/06/2010 #4


Respuesta: Variables Const se guardan en RAM o en ROM?
Eliusum

Cuando declaras una tabla como esta en el CCS:

const char tabla[]={1,2,3,4};

Se guarda en la memoria flash del PIC.

Tené mucho cuidado con el CCS, tiene importantes bugs que te van a hacer doler la cabeza, especialmente cuando declarás tablas. Mi experiencia con éste compilador, es que funciona bien si las tablas son tablas de char, declaradas como te mostré arriba. Si declaras estructuras const, o tablas de otro tipo de datos, te vas a pelear con los bugs del compilador. Para evitar los bugs, te conviene "espiar" el assembler que genera, y por consejo, no hagas tablas mayores que 2k.
30/06/2010 #5

Avatar de Meta

Respuesta: Variables Const se guardan en RAM o en ROM?
Tiene la posibilidad de usar el compilador de microchip llamado C18 que tiene menos bugs.
30/06/2010 #6


Respuesta: Variables Const se guardan en RAM o en ROM?
Yap! Volví después de hacer algunas pruebas.

Tal como uds. me decían, otro amigo también me dio la buena idea de revisar el assembler.
Pero esto resultó a medias, ya que cuando por ejemplo dice "void main", lo deja tal cual en el assembler. Lo de la declaración de variables también... asique no me sirve para ver.

Ok, hice entonces una tremenda tabla de declaraciones CONST (una que ya debería pesar varios KB). Además reduje la optimización del compilador al mínimo para que no obvíe cosas. Y nada, la memoria no sube y no sube ... CCS me dice 0% of ROM a cada rato...

El pic 18f2550 si tiene 32KB. Otros de la misma familia tienen mínimo 24KB.

En el manual del CCS al igual que nuestro amigo más arriba dice también que las tablas las guarda en la ROM. Eso ya me deja más tranquilo.

La importancia de este Post queda en la inquietud de saber, con evidencia física, dónde se guardan las variables const y las tablas.

Muchas gracias por su ayuda. Si hay más ideas.. ...
Saludos!
30/06/2010 #7

Avatar de Meta

Respuesta: Variables Const se guardan en RAM o en ROM?
32K de Flash en Byte, me refería por instrucciones que son 16K Single-Word
Instructions
.
30/06/2010 #8


Respuesta: Variables Const se guardan en RAM o en ROM?
Especifique. jajajaja.

La tabla que necesito guardar pesa como 8 KB si la guardo en block de notas de windows. Eso si, habría que descontar las comas y los {}.

Saludos!
Respuesta
¿Tienes una mejor respuesta a este tema? ¿Quieres hacerle una pregunta a nuestra comunidad y sus expertos? Registrate

Foros de Electrónica » Diseño digital » Microcontroladores y sistemas embebidos

Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2017, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO ©2011, Crawlability, Inc.