TODOPIC

Microcontroladores PIC => Lenguaje C para microcontroladores PIC => Mensaje iniciado por: jeremylf en 27 de Marzo de 2008, 02:49:46

Título: Const del CCS C
Publicado por: jeremylf en 27 de Marzo de 2008, 02:49:46
Estoy usando el CCS C 4.023 y leyendo su help me econtre con que const puede ir antes o despues algun identificador (int, byte, long...).

Mi duda es que cual es el lugar (antes o despues) en donde debe ir esto? Ya que en el help dicen que cuando va despues se pone en la rom y cuando va antes se toma como identificador, pero despues dicen lo contraria y..   :x No se supone que solo debe de haber una sola forma?

Probando, cuando lo pongo despues el ROM aumento, y aveces, tambien la RAM :?
Cuando lo pongo antes no pasa NADA. Ni en la ROM ni en la RAM. Como deberia tomar esto ultimo? Como un #DEFINE ?

Estoy algo confundido a este const del  CCS  :?

Gracias.
Título: Re: Const del CCS C
Publicado por: Nocturno en 27 de Marzo de 2008, 03:39:16
He mirado la ayuda del CCS respecto del CONST y no veo que explique esas diferencias entre ponerlo delante o detrás. ¿Puedes pegar aquí lo que has leído?
Título: Re: Const del CCS C
Publicado por: jfh900 en 27 de Marzo de 2008, 09:00:21
Esto es lo que pone en la versión 4.032:

The compiler has support for placing any data structure into the device ROM as a constant read-only element.  Since the ROM and RAM data paths are separate in the PIC®, there are restrictions on how the data is accessed.  For example, to place a 10 element BYTE array in ROM use:

BYTE CONST TABLE [10]= {9,8,7,6,5,4,3,2,1,0};

and to access the table use:

x = TABLE ;

OR

x = TABLE [5];

BUT NOT

ptr = &TABLE ;

In this case, a pointer to the table cannot be constructed.

Similar constructs using CONST may be used with any data type including structures, longs and floats.

Note that in the implementation of the above table, a function call is made when a table is accessed with a subscript that cannot be evaluated at compile time.

Un saludo
Título: Re: Const del CCS C
Publicado por: Nocturno en 27 de Marzo de 2008, 09:11:58
Sí, eso es lo que yo he visto en la 4.049, por eso le decía a Jeremy que no veo diferencias entre poner el const antes o después.
Título: Re: Const del CCS C
Publicado por: jfh900 en 27 de Marzo de 2008, 10:27:52
Efectivamente Manolo no hay diferencia. El termino "constante" como todos sabes significa "no variable" y la forma de hacerlo es grabándolo en la ROM por el contrario si no ponemos "constante" se entiende un término variable he irá implementado en la RAM.

Un saludo
Título: Re: Const del CCS C
Publicado por: jeremylf en 27 de Marzo de 2008, 14:04:42
Lo decia por los ejemplos que hay, algunos van adelante y otros detras.

Lo entenderia si no ubiera diferencia. Pero cuando compilo, y estando el const despues del identificador, SI aumenta la ROM (y junto aveces con la RAM :S). Pero cuando esta antes, por mas variables que cree la ROM ni RAM aumenta y lo peor es que no bota ningun error el compilador. Como deberia tomar esto ultimo? Como un #define?

Gracias.