TODOPIC

Microcontroladores PIC => Lenguaje C para microcontroladores PIC => Mensaje iniciado por: migsantiago en 23 de Junio de 2013, 18:00:17

Título: MPLAB X - Unable to resolve identifier
Publicado por: migsantiago en 23 de Junio de 2013, 18:00:17
Hola

Estoy usando MPLAB X por primera vez para compilar un ejemplo USB para el PIC18F2550. Después de batallar por horas con XC8, mejor instalé C18 y sólo así pude compilarlo.

El único problema que no he podido resolver son los "Unable to resolve identifier" que salen en todo el código.

http://s9.postimg.org/53uui8ej3/mplabx.png
(http://s9.postimg.org/53uui8ej3/mplabx.png)

Intenté lo que sugieren acá...
http://www.microchip.com/forums/m666549-print.aspx

Pero no me funcionó. ¿Alguien sabe cómo resolverlo? No quisiera deshabilitarlo por default ya que son prácticos esos errores mientras sean ciertos.

Gracias.
Título: Re: MPLAB X - Unable to resolve identifier
Publicado por: MerLiNz en 23 de Junio de 2013, 18:24:01
tendrias que poner el codigo completo, tiene pinta de ser que le falta algun #include
Título: Re: MPLAB X - Unable to resolve identifier
Publicado por: migsantiago en 23 de Junio de 2013, 18:43:36
tendrias que poner el codigo completo, tiene pinta de ser que le falta algun #include

Hola, no creo porque el código compila correctamente. Es problema de visibilidad de NetBeans.  :?

Olvidé mencionar que el Control + Click tampoco funciona, no me lleva a la declaración o la definición del elemento... :(
Título: Re: MPLAB X - Unable to resolve identifier
Publicado por: Rseliman en 23 de Junio de 2013, 19:42:51
tendrias que poner el codigo completo, tiene pinta de ser que le falta algun #include

Hola, no creo porque el código compila correctamente. Es problema de visibilidad de NetBeans.  :?

Olvidé mencionar que el Control + Click tampoco funciona, no me lleva a la declaración o la definición del elemento... :(


Podrias postear el  printScreen completo del IDE ...con el arbol abierto del project ??

Gracias
Título: Re: MPLAB X - Unable to resolve identifier
Publicado por: gab163 en 23 de Junio de 2013, 19:49:25
Intenta esto te vas al menú Tools después das clic en Options y te aparecera la siguiente pantalla te metes en C/C++ como se ve en la imagen y desmarcas la casilla que esta igual desmarcada. espero que te sirva  :-/
Título: Re: MPLAB X - Unable to resolve identifier
Publicado por: migsantiago en 23 de Junio de 2013, 20:34:54
Podrias postear el  printScreen completo del IDE ...con el arbol abierto del project ??

Gracias

Claro, aquí está...

http://s22.postimg.org/hfa8gsmep/mplab_x_unresolved_identifiers.png

Estas son las rutas que tengo en el include de C18...

http://s2.postimg.org/mq24ha7s9/includes.png
(http://s2.postimg.org/mq24ha7s9/includes.png)

Intenta esto te vas al menú Tools después das clic en Options y te aparecera la siguiente pantalla te metes en C/C++ como se ve en la imagen y desmarcas la casilla que esta igual desmarcada. espero que te sirva  :-/

Hola, gracias, pero como comentaba arriba, quiero que los resuelva porque me interesan. No quiero deshabilitarlos, quiero que se corrijan.
Título: Re: MPLAB X - Unable to resolve identifier
Publicado por: Rseliman en 23 de Junio de 2013, 20:58:50
Podrias postear el  printScreen completo del IDE ...con el arbol abierto del project ??

Gracias

Claro, aquí está...

http://s22.postimg.org/hfa8gsmep/mplab_x_unresolved_identifiers.png

Estas son las rutas que tengo en el include de C18...

http://s2.postimg.org/mq24ha7s9/includes.png
(http://s2.postimg.org/mq24ha7s9/includes.png)

/quote]

Mira soy muy nuevo en Mplabx Y xc8 que es lo que estoy usando ahora , pero lo que genera muchos problemas es tener las subrutinas en el project ...no se si me explico ...por ejemplo si vas a usar una subrutina o libreria que se llama subru.c ....yo no la agrego en el project simplemente la uso con #include subru.c porsupuesto esta esta en la carpeta del proyecto ...y de esa forma he solucionado muchos problemas ...la verdas es que todavia no entiendo bien como el MPLABX se maneja incluyendo en el arbol de la izquierda pero he intentado con cosas sencillas y genera problemas yo solamente pongo en el source del arbol , el main.c y el configurations_bits .c que se refiere a los prgama que definen los fuses ..

Espero poder ayudarte ...esto lo digo con mi poca experiencia ...

Saludos
Título: Re: MPLAB X - Unable to resolve identifier
Publicado por: migsantiago en 23 de Junio de 2013, 22:32:50
Mira soy muy nuevo en Mplabx Y xc8 que es lo que estoy usando ahora , pero lo que genera muchos problemas es tener las subrutinas en el project ...no se si me explico ...por ejemplo si vas a usar una subrutina o libreria que se llama subru.c ....yo no la agrego en el project simplemente la uso con #include subru.c porsupuesto esta esta en la carpeta del proyecto ...y de esa forma he solucionado muchos problemas ...la verdas es que todavia no entiendo bien como el MPLABX se maneja incluyendo en el arbol de la izquierda pero he intentado con cosas sencillas y genera problemas yo solamente pongo en el source del arbol , el main.c y el configurations_bits .c que se refiere a los prgama que definen los fuses ..

Espero poder ayudarte ...esto lo digo con mi poca experiencia ...

Saludos

Sí, yo también hacía eso hace tiempo... agregaba los C como includes. Pero por arquitectura y limpieza, sólo deben incluirse los H.

Es otra cosa... y pues como es el primer día que lo uso pues aún no le hallo jeje
Título: Re: MPLAB X - Unable to resolve identifier
Publicado por: migsantiago en 23 de Junio de 2013, 23:31:00
Bueno, pues parece que agregando un main.h nuevo a los headers se solucionó el glitch. De repente estaba haciendo el nuevo H y vi que el main.c ya no tenía los errores.

Ah qué cosas  :D
Título: Re: MPLAB X - Unable to resolve identifier
Publicado por: jukinch en 24 de Junio de 2013, 00:39:27
Hola Migsantiago. No entiendo bien como lo has solucionado. Podrías explicarlo con más detalle.?
    Podrías subir el archivo main.h que incluiste en los headers. O es sólo un archivo vacio lo que incluyes.?

Título: Re: MPLAB X - Unable to resolve identifier
Publicado por: jukinch en 25 de Junio de 2013, 01:18:57
Con estas dos directivas se me fueron todos los unable to resolve identifiers :-/

#define __18CXX // con esta solucioné los de la libreria de los delays
#define __18F4550 // y con esta los de las funciones de la usart y de los adc

Pareciera que el IDE no define correctamente el pic seleccionado en el proyecto.  :5]
agregúe al principio de mi archivo  main.c estos dos defines



Creo que el problema está en que si no se los define a mano el preprocesador no expande el código correspondiente a nuestro pic dentro del archivo pconfig.h:

Código: [Seleccionar]
#ifdef   __18F4550
/*############################################################*/
/*          Configuration for device =  'PIC18F4550'          */
/*############################################################*/

/* ADC */
#define ADC_V5

/* ECC */
/*No configuration chosen for this peripheral*/

/* CC */
#define CC_V2

/* EPWM */
#define PWM_V5

/* PWM */
#define PWM_V5

/* PCPWM */
/*No configuration chosen for this peripheral*/

/* USART */
#define EAUSART_V5

/* SPI */
#define SPI_V1

/* I2C */
#define I2C_V1

/* TIMERS */
#define TMR_V2

/* EEPROM */
#define EEP_V2

/* PORT_B */
#define PTB_V1

/* ANCOMP */
#define ANCOM_V3

/* MWIRE */
#define MWIRE_V1

/* CTMU */
/*No configuration chosen for this peripheral*/

/* PPS */
/*No configuration chosen for this peripheral*/

/* RTCC */
/*No configuration chosen for this peripheral*/

/* DPSLP */
/*No configuration chosen for this peripheral*/

/* PMP */
/*No configuration chosen for this peripheral*/

/* FLASH */
#define FLASH_V1_2

#endif

Y por ello dentro de los headers de los periféricos se saltean los prototipos de las funciones.

Es necesario que estén definidas las versiones de cada uno de ellos por ejemplo en mi 4550 #define ADC_V5 . De lo contrario se saltean los prototipos de las funciones.

Como por ejemplo la de OpenADC en el header adc.h

Código: [Seleccionar]
#elif defined (ADC_V3) || defined (ADC_V4) || defined (ADC_V5) || defined (ADC_V6) ||\
      defined (ADC_V7) || defined (ADC_V7_1)|| defined (ADC_V12) || defined (ADC_V13)\
 || defined (ADC_V13_1) || defined (ADC_V13_2) || defined (ADC_V13_3) || \
 defined (ADC_V14) || defined (ADC_V14_1) || defined (ADC_V14_2) || defined (ADC_V14_3)

void OpenADC ( unsigned char ,
               unsigned char ,
               unsigned char );
Título: Re: MPLAB X - Unable to resolve identifier
Publicado por: AKENAFAB en 25 de Junio de 2013, 12:59:18
Bueno, pues parece que agregando un main.h nuevo a los headers se solucionó el glitch. De repente estaba haciendo el nuevo H y vi que el main.c ya no tenía los errores.

Ah qué cosas  :D

Que bueno que lo solucionaste Mig.

Como dices no es problema del compilador , sino de la interface que no reconoce algunas cosillas,a veces me marca lo mismo y despues de un tiempo se van  :shock: .
Uso XC8 con los pic18F

Saludos!
Título: Re: MPLAB X - Unable to resolve identifier
Publicado por: hector915 en 25 de Junio de 2013, 14:28:25
Generalmente ese error siempre sale cuando no puede encontrar y resolver las librerias que estan en el proyecto, la libreria que has incluido no la reconoce(el path) , la forma como lo solucionaste es raro, aunque sigo preguntando por que,en fin.
Título: Re: MPLAB X - Unable to resolve identifier
Publicado por: Rseliman en 26 de Junio de 2013, 14:05:11
Generalmente ese error siempre sale cuando no puede encontrar y resolver las librerias que estan en el proyecto, la libreria que has incluido no la reconoce(el path) , la forma como lo solucionaste es raro, aunque sigo preguntando por que,en fin.

Yo creo que una forma de solucionarlo es poner los .h en la carpeta del proyecto , y fijarse que no son los mismos .h los de xc18 que los de xc8 ...a mi me ha pasado que cuando los incluyo con < > se refiere a los de xc8 y no funciona , entonces le pongo en la carpeta del proyecto la lib.h de xc18 o visceversa

Saludos
Título: Re: MPLAB X - Unable to resolve identifier
Publicado por: migsantiago en 29 de Junio de 2013, 18:01:27
Hola  :mrgreen:

Jukinch, sí, se soluciona de esa forma, pero el ambiente debería intuir que el compilador es C18 y no tendríamos nosotros que definirlo a mano.

Akenafab, un gusto leerte :P Sí, ahorita tuve que usar C18 porque XC8 se puso rudo y no me dejó trabajar  :?

Hector915, sí, para cuando volteé y vi el main.c después de haber agregado el main.h, todo se había resuelto. No sé qué haya pasado jeje
Título: Re:MPLAB X - Unable to resolve identifier
Publicado por: Marttyn en 20 de Noviembre de 2015, 13:31:28
Que ganas de matarlo!
Acabo de empezar con MPLAB X por decima vez. Cada vez que intento ponerme al dia hay algo que me desalienta.
Tengo todo el codigo salpicado de errores y advertencias, y aun asi, compila sin problema.
(http://i299.photobucket.com/albums/mm317/Marttyn/Electronica/th_MPLABX.png) (http://s299.photobucket.com/user/Marttyn/media/Electronica/MPLABX.png.html)

Hay algunos errores tan "tontos" como avisarme que no encuentra la declaracion de una variable, en la misma linea donde estoy declarando la variable:
short EnergySave = TRUE;   //en la declaracion de una variable me advierte que esa variable que no encuentra ese indentificador declarado ¿?!!!
Alguna sugerencia?
Título: Re:MPLAB X - Unable to resolve identifier
Publicado por: KILLERJC en 20 de Noviembre de 2015, 13:36:28
Imposible de saberlo con el screenshot. Podrias dar un ejemplo simple que tenga el problema en cuestion (asi no pasas el programa tuyo por cualquier motivo ) ?

Estuve buscando la directiva #rom y getenv para XC8 y no encontre nada en el manual. Es CCS ?

Imagino que si. Podrias tratar de dehabilitar esos "warnings".
En una de las propiedades, Highlighting  y desabilitar el "Highlight Unresolved Identifiers"

(http://www.microchip.com/forums/download.axd?file=0;775549&where=&f=XWavyLines.JPG)

Ademas el MPLAB X es una IDE por como lo estas usando asi que es valido cualquier IDE que te guste. Y como te decia antes, si tenes un ejemplo simple para ver que eso ocurre se puede ver cual es el problema del warning
Título: Re:MPLAB X - Unable to resolve identifier
Publicado por: Marttyn en 10 de Noviembre de 2016, 09:52:36
Ya llevo algunos meses que me pase completamente al MPLAB X, y estoy acostumbrandome a su uso.
Pero hay una advertencia que no consigo librarme de ella:
Cuando declaro un #bit en CCS, el IDE no lo reconoce como declarado. Por lo que me muestra una advertencia cuando uso esa declaracion.
 - Tienes que ingresar para ver archivos adjuntos -
No quiero quitar la opcion de advertencia, ya que es util para otros casos, pero para este en concreto no va bien.
Supongo que es por que no entiende que #bit es similar a #byte o #define.
No habra alguna forma de hacerselo entender? Creo que arduino por ejemplo permite decirle cuales son palabras clave, y asi te las marca diferente.
Título: Re:MPLAB X - Unable to resolve identifier
Publicado por: KILLERJC en 10 de Noviembre de 2016, 10:35:20
Imagino que debe ser por que el MPLAB X esta realizado para XC8 que tiene en su mayoria compatibilidad con cualquier C (define, pragma, entre otros).

CCS tiene directivas de prepocesamiento propias del compilador ( como bit, byte, USE, etc). Es decir es el compilador quien va a decir si esta bien escrito o no y si va a funcionar (al momento de compilar). Pero el MPLAB X es un IDE y es el que te acusa en ese momento que vas escribiendo. Incluso pienso que si lo haces en cualquier IDE que maneje C tendrias el mismo error, por que son directivas unicas de CCS.

Lo que no tengo en cuenta es si existe una forma de agregar directivas al IDE, para que no te las marque, pero no creo que sea posible. Con lo cual lo unico que dbe quedar es desactivarlas.
Título: Re:MPLAB X - Unable to resolve identifier
Publicado por: Marttyn en 10 de Noviembre de 2016, 13:02:22
Gracias Killer, me imaginaba que el funcionamiento del IDE esta hecho para entender y marcar C estandar. Pero el mismo IDE puede tambien marcar Java, HTML, etc... por lo que en algun lugar tiene que estar escrito cuales son las palabras a tener en cuenta, asi como las funciones que desempeñan. Asi poder marcar de acuerdo a ellas.
A decir verdad ya me acostumbre a que me marque advertencias por todo el codigo, ya que compila y funciona igualmente. Pero seria bonito poder ver el codigo "limpio y perfecto" :)