Autor Tema: Problema compilación  (Leído 2952 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado Ramon90

  • PIC10
  • *
  • Mensajes: 29
Problema compilación
« en: 06 de Octubre de 2017, 08:27:19 »
Buenas. Estoy intentando compilar un ejemplo que viene en el documento MPLAB_XC8_Peripheral_Libraries (pagina 1278) y me da fallo.  A ver si alguien sabe que está pasando.

Código: [Seleccionar]
#define USE_OR_MASKS
#include <p18cxxx.h>
#include "usart.h"
unsigned char Rxdata[25];
unsigned char Txdata[] = "MICROCHIP_USART";
void main(void)
{
unsigned char config=0,spbrg=0,baudconfig=0,i=0;
CloseUSART(); //turn off usart if was previously on
//-----configure USART -----
config = USART_TX_INT_OFF | USART_RX_INT_OFF | USART_ASYNCH_MODE | USART_EIGHT_BIT |
USART_CONT_RX | USART_BRGH_LOW;
//-----SPBRG needs to be changed depending upon oscillator frequency-------
spbrg = 51; //At 8Mhz of oscillator frequency & baud rate of 2400.
OpenUSART(config, spbrg); //API configures USART for desired parameters
baudconfig = BAUD_8_BIT_RATE | BAUD_AUTO_OFF;
baudUSART (baudconfig);
//------USART Transmission ----
while(BusyUSART()); //Check if Usart is busy or not
putsUSART((char *)Txdata); //transmit the string
//---USART Reception ---
getsUSART((char *)Rxdata,24); //Recieve data upto 24 bytes
while(BusyUSART()); //Check if Usart is busy or not
putsUSART((char *)Rxdata); //echo back the data recieved back to host
CloseUSART();
while(1); //end of program
}

El output dice :
C:\Program Files (x86)\Microchip\xc8\v1.44\include\pic18f2480.h:30971: error: (1098) conflicting declarations for variable "_TXSTAbits" (C:\Program Files (x86)\Microchip\xc8\v1.44\include\pic18f2480.h:28197)

Tengo selecionada la librería de periféricos. Rebuscando, solo he visto que se declare TXSTAbits una vez, en el archivo PIC18F2480.h, que es el que uso.

Ni siquiera está incluida la librería xc.h, aunque si la añado, me sigue dando el mismo fallo logicamente. Ya he tenido este fallo por tener "reincluida" la librería del PIC al poner:

#include <xc.h>
#include <pic18f2480.h>

Pero este no es el caso. ¿Qué hago?

Desconectado juaperser1

  • Colaborador
  • DsPIC30
  • *****
  • Mensajes: 2979
Re:Problema compilación
« Respuesta #1 en: 06 de Octubre de 2017, 08:35:08 »
Prueba con la herramienta "buscar" del propio IDE por si se te puede estar pasando de algún sitio.

un saludo
Visita mi canal para aprender sobre electrónica y programación:

https://www.youtube.com/channel/UCxOYHcAMLCVEtZEvGgPQ6Vw

Desconectado KILLERJC

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8242
Re:Problema compilación
« Respuesta #2 en: 06 de Octubre de 2017, 08:40:54 »
Primero que nada usa simpre solo el xc.h , ese ya hace el include al PIC que esta definido en el proyecto.

Por otra parte, fijate si esta habilitada la pheriperal library, click derecho en propiedades , creo que era XC8 linker y ahi tenes un casillero que dice de pheriperal .... no recuerdo demasiado xD. Debe estar tildado.

Si aun asi no funciona pone todo el resultado de la compilacion.
Tambien lei que puede ser por algun cambio en las versiones de la plib, que en su momento funcionaban pero con las actualizaciones dejaron de funcionar. E imagino que esos ejemplos son de algun legacy de Microchip

Desconectado Ramon90

  • PIC10
  • *
  • Mensajes: 29
Re:Problema compilación
« Respuesta #3 en: 06 de Octubre de 2017, 09:02:47 »
Si, si. Ya hice todo lo que indicáis. De hecho, estoy con otro proyecto y tambien me falla en lo mismo. Paso el output completo a ver si se os ocurre algo:

Código: [Seleccionar]
make -f nbproject/Makefile-default.mk SUBPROJECTS= .build-conf
make[1]: Entering directory 'C:/Users/Multilifts/MPLABXProjects/Prueba_UART.X'
make  -f nbproject/Makefile-default.mk dist/default/production/Prueba_UART.X.production.hex
make[2]: Entering directory 'C:/Users/Multilifts/MPLABXProjects/Prueba_UART.X'
"C:\Program Files (x86)\Microchip\xc8\v1.44\bin\xc8.exe" --pass1  --chip=18F2480 -Q -G  --double=24 --float=24 --emi=wordwrite --opt=+asm,+asmfile,-speed,+space,-debug,-local --addrqual=ignore --mode=free -P -N255 --warn=-3 --asmlist -DXPRJ_default=default  --summary=default,-psect,-class,+mem,-hex,-file --output=default,-inhx032 --runtime=default,+clear,+init,-keep,-no_startup,-download,+config,+clib,+plib   --output=-mcof,+elf:multilocs --stack=compiled:auto:auto:auto "--errformat=%f:%l: error: (%n) %s" "--warnformat=%f:%l: warning: (%n) %s" "--msgformat=%f:%l: advisory: (%n) %s"    -obuild/default/production/PruebaSerie.p1  PruebaSerie.c
"C:\Program Files (x86)\Microchip\xc8\v1.44\bin\xc8.exe"  --chip=18F2480 -G -mdist/default/production/Prueba_UART.X.production.map  --double=24 --float=24 --emi=wordwrite --opt=+asm,+asmfile,-speed,+space,-debug,-local --addrqual=ignore --mode=free -P -N255 --warn=-3 --asmlist -DXPRJ_default=default  --summary=default,-psect,-class,+mem,-hex,-file --output=default,-inhx032 --runtime=default,+clear,+init,-keep,-no_startup,-download,+config,+clib,+plib --output=-mcof,+elf:multilocs --stack=compiled:auto:auto:auto "--errformat=%f:%l: error: (%n) %s" "--warnformat=%f:%l: warning: (%n) %s" "--msgformat=%f:%l: advisory: (%n) %s"      --memorysummary dist/default/production/memoryfile.xml -odist/default/production/Prueba_UART.X.production.elf  build/default/production/PruebaSerie.p1     
Microchip MPLAB XC8 C Compiler (Free Mode) V1.44
Build date: Sep 13 2017
Part Support Version: 1.44
Copyright (C) 2017 Microchip Technology Inc.
License type: Node Configuration

:: advisory: (1233) Employing 18F2480 errata work-arounds:
:: advisory: (1234)  * Corrupted fast interrupt shadow registers
:: warning: (1273) Omniscient Code Generation not available in Free mode
C:\Program Files (x86)\Microchip\xc8\v1.44\include\pic18f2480.h:30971: error: (1098) conflicting declarations for variable "_TXSTAbits" (C:\Program Files (x86)\Microchip\xc8\v1.44\include\pic18f2480.h:28197)
(908) exit status = 1
nbproject/Makefile-default.mk:131: recipe for target 'dist/default/production/Prueba_UART.X.production.hex' failed
make[2]: Leaving directory 'C:/Users/Multilifts/MPLABXProjects/Prueba_UART.X'
nbproject/Makefile-default.mk:90: recipe for target '.build-conf' failed
make[1]: Leaving directory 'C:/Users/Multilifts/MPLABXProjects/Prueba_UART.X'
nbproject/Makefile-impl.mk:39: recipe for target '.build-impl' failed
make[2]: *** [dist/default/production/Prueba_UART.X.production.hex] Error 1
make[1]: *** [.build-conf] Error 2
make: *** [.build-impl] Error 2

BUILD FAILED (exit value 2, total time: 1s)

Desconectado juaperser1

  • Colaborador
  • DsPIC30
  • *****
  • Mensajes: 2979
Re:Problema compilación
« Respuesta #4 en: 06 de Octubre de 2017, 09:41:33 »
Eso tiene pinta de ser, que el ejemplo que quieres compilar esta generado para ser compilado con las opciones de optimizacion del compilador de pago, para que ocupe menos espacio.
Entra en las opciones del proyecto, las opciones de compilacion y pon las opciones para que pueda ser compilado por el gratuito, o activa la version de evaluacion de un mes.
Creo que ese es tu problema

Echale un vistazo a esto:

http://microchipdeveloper.com/faq:119

Un saludo.

« Última modificación: 06 de Octubre de 2017, 10:08:41 por juaperser1 »
Visita mi canal para aprender sobre electrónica y programación:

https://www.youtube.com/channel/UCxOYHcAMLCVEtZEvGgPQ6Vw

Desconectado Ramon90

  • PIC10
  • *
  • Mensajes: 29
Re:Problema compilación
« Respuesta #5 en: 09 de Octubre de 2017, 04:30:08 »
Muchas gracias por la aclaración juaperser1, pero no era este el problema. He conseguido que complile cambiando la configuración en building, de aplication a library. No entiendo porqué así sí compila, cuando en otros proyectos similares compila en modo aplication sin problemas.

Ya respiro tranquilo pero si alguien me lo pudiera explicar, bienvenido es.

Desconectado Ramon90

  • PIC10
  • *
  • Mensajes: 29
Re:Problema compilación
« Respuesta #6 en: 09 de Octubre de 2017, 05:09:56 »
Vale. Me acabo de dar cuenta de que en modo library no puedo cargarlo al PIC  :5] Así que sigo con el mismo problema.

Desconectado Ramon90

  • PIC10
  • *
  • Mensajes: 29
Re:Problema compilación
« Respuesta #7 en: 10 de Octubre de 2017, 08:13:56 »
Al final conseguí que compilase en el proyecto del ADC que he implementado (que me daba el mismo problema). Era cosa de una macro que estaba redefiniendo un registro: esta macro, entre otras lineas, usaba PIR1bits.ADIF; pues bien, tuve que quitar la macro y escribir "ADIF" sin el "PIR1bits.". No se por qué pero así funciona. Si alguien me lo explica le estaré muy agradecido.

Hasta ahora no he usado la librería de periféricos y siempre tuve que usar la estructura "Xbits.Y" para acceder a los registros, por lo que ahora no sé cuando usarla y cuando no.

Desconectado KILLERJC

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8242
Re:Problema compilación
« Respuesta #8 en: 10 de Octubre de 2017, 08:38:00 »
Raro, todo lo realizado nunca tuve problemas por eso.

Desconectado Ramon90

  • PIC10
  • *
  • Mensajes: 29
Re:Problema compilación
« Respuesta #9 en: 11 de Octubre de 2017, 04:19:18 »
Pues comprobado y recomprobado: si pongo la linea ADC_INT_ENABLE() (que viene en el ejemplo del ADC del documento) no compila porque hace:
Código: [Seleccionar]
PIR1bits.ADIF=0,INTCONbits.PEIE=1,PIE1bits.ADIE=1
Pero si pongo
Código: [Seleccionar]
    ADIF = 0;       //Flag a cero
    PEIE = 1;       //Habilita las interrupciones de perifericos
    ADIE = 1;       //Habilita interrupciones del ADC

compila y funciona perfectamente.

Sé que es raro. MPLAB, por las cosas que me han pasado, creo que tiene una cantidad importante de bugs, ya que es gratuito, aunque es probable que sean fallos mios.

A ver si alguien tiene idea de lo que pasa. Gracias por vuestra colaboración!
« Última modificación: 11 de Octubre de 2017, 04:22:59 por Ramon90 »

Desconectado KILLERJC

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8242
Re:Problema compilación
« Respuesta #10 en: 11 de Octubre de 2017, 09:30:59 »
Podrias pasar:

- Un ejemplo "minimo" es decir con la menor cantidad de codigo que reproduzca el error.
- El resultado de la consola donde esta el error
- Y revisar que este bien configurado el proyecto (especialmente el PIC), sino trata de crear uno nuevo. (Para descartar posibles problemas del proyecto)

Desconectado Ramon90

  • PIC10
  • *
  • Mensajes: 29
Re:Problema compilación
« Respuesta #11 en: 13 de Octubre de 2017, 07:00:46 »
OK. Ahora mismo estoy con otro asunto pero en cuanto pueda te paso lo que dices.

Muchas gracias!

Desconectado Ramon90

  • PIC10
  • *
  • Mensajes: 29
Re:Problema compilación
« Respuesta #12 en: 24 de Octubre de 2017, 07:19:11 »
Buenas! Pues la configuracion del PIC es la que he usado en otros proyectos y funciona correctamente. Dejo el codigo minimo que reproduce el error:

Código: [Seleccionar]
#include <xc.h>
#include <p18cxxx.h>
#include "adc.h"

void main(void) {   
   
    unsigned char config = ADC_FOSC_2 & ADC_RIGHT_JUST & ADC_2_TAD;
    unsigned char config2 = ADC_CH10 & ADC_INT_OFF & ADC_REF_VDD_VSS;
    unsigned char portconfig = ADC_10ANA;
    OpenADC(config, config2, portconfig);
   
    PIR1bits.ADIF = 0;
    while(1);
}

Si comento OpenADC, ya no da el error. Imagino que es porque ya no incluye la librería (aunque esté en el include). La pregunta sería: ¿qué hace la librería para que no me deje trabajar con  PIR1bits.ADIF y sí con ADIF? También imagino que tendrá algo así como #define ADIF PIR1bits.ADIF, pero eso no debería impedir que se pueda trabajar con PIR1bits.ADIF.

La respuesta de consola es:

:: advisory: (1233) Employing 18F2480 errata work-arounds:
:: advisory: (1234)  * Corrupted fast interrupt shadow registers
:: warning: (1273) Omniscient Code Generation not available in Free mode
C:\Program Files (x86)\Microchip\xc8\v1.44\include\pic18f2480.h:30018: error: (1098) conflicting declarations for variable "_PIR1bits" (C:\Program Files (x86)\Microchip\xc8\v1.44\include\pic18f2480.h:27261)
make[2]: *** [dist/default/production/ProblemaDefineLibrerias.X.production.hex] Error 1
make[1]: *** [.build-conf] Error 2
make: *** [.build-impl] Error 2
(908) exit status = 1
nbproject/Makefile-default.mk:131: recipe for target 'dist/default/production/ProblemaDefineLibrerias.X.production.hex' failed
make[2]: Leaving directory 'C:/Users/Multilifts/MPLABXProjects/ProblemaDefineLibrerias.X'
nbproject/Makefile-default.mk:90: recipe for target '.build-conf' failed
make[1]: Leaving directory 'C:/Users/Multilifts/MPLABXProjects/ProblemaDefineLibrerias.X'
nbproject/Makefile-impl.mk:39: recipe for target '.build-impl' failed

BUILD FAILED (exit value 2, total time: 1s)

Desconectado skamosito

  • PIC10
  • *
  • Mensajes: 1
Re:Problema compilación
« Respuesta #13 en: 06 de Febrero de 2018, 19:24:22 »
Saludos la solución para este problema es sencilla, solo tienes que descargar una versión anterior de compilador en mi caso, con la versión XC8 v1.45 no compila, pero si cambio a la versión XC8 v1.2 compila sin problemas.

Últimamente Michochip en las "actualizaciones" me han dado bastantes problemas de este tipo, tal vez lo mejor sea no instalar nuevos releases.