TODOPIC
Microcontroladores PIC => Lenguaje C para microcontroladores PIC => Mensaje iniciado 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.
-
tendrias que poner el codigo completo, tiene pinta de ser que le falta algun #include
-
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... :(
-
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
-
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 :-/
-
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.
-
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
-
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
-
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
-
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.?
-
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:
#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
#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 );
-
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!
-
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.
-
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
-
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
-
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?
-
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
-
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.
-
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.
-
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" :)