Autor Tema: Duda Librerias MPLAB X  (Leído 17224 veces)

0 Usuarios y 2 Visitantes están viendo este tema.

Desconectado bitpic

  • PIC18
  • ****
  • Mensajes: 402
    • BitPIC
Duda Librerias MPLAB X
« en: 15 de Diciembre de 2012, 15:52:05 »
Hola,

Estoy aprendiendo a usar el MPLAB X con XC8 y si creo mis propias librerias no tengo problemas para usarlas porque están en el directorio del proyecto, pero cuando intento usar una libreria de XC8 tengo problemas.

Lo normal es que me aparezcan errores por otras librerías que llevan incluidas las propias librerías que agrego, por ejemplo, para incluir la librería ADC hago lo siguiente:

- En la carpeta "Source Files" agrego todos los archivos C de la librería ADC.
- En la carpeta "Header Files" agrego el archivo adc.h

En el programa principal me aparece el #include <adc.h> subrayado en amarillo, entro en el archivo adc.h y me encuentro que hay otra librería llamada "pconfig.h" subrayada en rojo.

Si intento usar otra librería como el xlcd.h o cualquier otra tengo problemas parecidos.

Entiendo que todo esto tiene que tener alguna explicación, como por ejemplo que se haya de configurar la ruta del directorio de las librerías de XC8. ¿Puede ser este el problema?

En caso de que sea este el problema ¿se debe agregar el directorio en la pestaña "Include directories" en la ventana de la imagen que adjunto?

He intentado incluir en esta casilla el directorio "include" de XC8 pero no consigo nada.

¿Alguna idea?

BitPIC

Desconectado bitpic

  • PIC18
  • ****
  • Mensajes: 402
    • BitPIC
Re: Duda Librerias MPLAB X
« Respuesta #1 en: 15 de Diciembre de 2012, 16:47:17 »
Bueno, he comprobado que si que era este el problema lo que pasa es que tenia que indicar el directorio plib.

Ahora el problema que me encuentro que las funciones me aparecen como si estuviesen comentadas, supongo que algo me falta por averiguar.

Por ejemplo si uso la función OpenADC(ADC_FOSC_RC | ADC_20_TAD | ADC_LEFT_JUST, ADC_REF_VREFPLUS_VREFMINUS | ADC_INT_OFF, ADC_15ANA); me da error. Voy al archivo adcopen.c y veo que todo el código sale comentado porque creo que falta definir algo.

En concreto hay unas lineas de código del tipo "#if defined (ADC_V1)" entre otras, y esto me da entender que falta definir las variables ADC_V1, ADC_V2, ADC_V3, etc....

¿que son estas variable? ¿como se definen? ¿que es lo que me estoy dejando para que funcione correctamente la librería y pueda llamar a sus funciones sin problemas?

Saludos.
BitPIC

Desconectado bitpic

  • PIC18
  • ****
  • Mensajes: 402
    • BitPIC
Re: Duda Librerias MPLAB X
« Respuesta #2 en: 15 de Diciembre de 2012, 17:05:52 »
Tirando del hilo veo que el problema esta en el archivo pconfig.h incluido en el adc.h que es donde se definen las variables de configuración del micro.

El micro que estoy utilizando es el 18F97j60 y veo que si que esta incluido en el archivo pero por alguna razón no lo detecta con #ifdef y se lo pasa por alto:

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

/* ADC */
#define ADC_V6

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

/* CC */
#define CC_V4

/* EPWM */
#define PWM_V4

/* PWM */
#define PWM_V4

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

/* USART */
#define EAUSART_V9

/* SPI */
#define SPI_V3

/* I2C */
#define I2C_V3

/* TIMERS */
#define TMR_V4

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

/* PORT_B */
#define PTB_V2

/* ANCOMP */
#define ANCOM_V2

/* MWIRE */
#define MWIRE_V2

/* 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_5

#endif

En el inicio del archivo incluye esto #include <p18cxxx.h> , lo he intentado modificar por #include <xc.h> pero no me deja modificar el archivo el MPLAB X.

¿Creéis que hacer esta modificación es la solución? ¿Porque no me deja modificar el archivo? ¿Alguna ayuda?

Saludos.
BitPIC

Desconectado bitpic

  • PIC18
  • ****
  • Mensajes: 402
    • BitPIC
Re: Duda Librerias MPLAB X
« Respuesta #3 en: 16 de Diciembre de 2012, 08:38:45 »
bueno... no hay manera, no se porque pero da la impresión de que MPLAB X no define bien el micro y por tanto no tiene acceso a ninguna macro de las librerias...

De esto puedo sacar una cosa buena y una mala:

- La mala es que no puedo usar las librerías de Mplab y voy a tener que crearmelas yo, como me ocurrió con el LCD.

- La buena es que aprenderé a usar todos los registros del micro haciéndome yo las librerías   (hay que ver siempre el lado positivo :D)

Igualmente esto es una espina que tengo clavada con el MPLAB X, si alguien sabe que es lo que me esta ocurriendo le agradecería su ayuda.

Un saludo a todos.
BitPIC

Desconectado willynovi

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 546
Re: Duda Librerias MPLAB X
« Respuesta #4 en: 16 de Diciembre de 2012, 11:17:47 »
Todavia no estoy al tanto del MPLAB X pero a nivel general con el tema de los #include

tienes 2 opciones cuando usas el #include

#include "adc.h" - busca en los archivos locales, los que agregas a tu proyecto
#include <adc.h> - busca como una libreria de mplab de las standard

Quizas por ahí viene el problema de que no encuentra los archivos y por eso te da warning o error.

También puede ser que no hayas indicado bien los directorios donde buscar librerias en tu proyecto.

Yo soy muy vago quizas, pero suelo usar proyectos ya armados de Microchip que da de ejemplo y luego los modifico según mi necesidad.
Lleva un tiempito mas pero te ahorras en problemas  ;-)

Tienes que conseguir las Microchip Libraries for Applications
Intento enseñarte a pescar, si solo quieres pescados, espera que un pescador te regale los suyos.

Desconectado bitpic

  • PIC18
  • ****
  • Mensajes: 402
    • BitPIC
Re: Duda Librerias MPLAB X
« Respuesta #5 en: 16 de Diciembre de 2012, 12:17:22 »
Hola willynovi,

Lo del directorio de las librerias lo resolvi, pero el problema que tengo ahora es que el XC8 no me define bien el microcontrolador y por tanto en las macros de la librerías no ejecuta el trozo de código correspondiente al micro que uso.

Por ejemplo, yo uso el PIC18F97J60 y dentro del pconfig.h existe el siguiente código que debería ejecutar pero no lo hace (aparece como si estubiera comentado porque no esta definido el __18F97J60):

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

/* ADC */
#define ADC_V6

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

/* CC */
#define CC_V4

/* EPWM */
#define PWM_V4

/* PWM */
#define PWM_V4

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

/* USART */
#define EAUSART_V9

/* SPI */
#define SPI_V3

/* I2C */
#define I2C_V3

/* TIMERS */
#define TMR_V4

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

/* PORT_B */
#define PTB_V2

/* ANCOMP */
#define ANCOM_V2

/* MWIRE */
#define MWIRE_V2

/* 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_5

#endif

Según creo yo, cuando defines el PIC que vas a usar en la IDE debería asignarse automaticamente el   __18F97J60 en mi caso, pero no lo hace, no asigna ni este ni ninguno, y si esta definiendo un micro no es ninguno de los que aparece en la librería o lo esta haciendo mal.

Por otro lado ya me he encargado de hacer mi propia función para leer el ADC del PIC (del LCD también lo tengo por si alguien lo necesita).

Dejo aquí el trozo de código que lee el ADC (es para el PIC18F97J60 por lo que seguramente con otro PIC no funcione si no tiene los mismos registros ADCON):

Código: [Seleccionar]
void configura_ADC(void){
    // RA2and RA3 for input;
    TRISA2 = 1;
    TRISA3 = 1;

    //Disable the ADC
    ADCON0bits.ADON = 0;

   
    ADCON1 = 0b00001011;
    ADCON0 = 0b00001011;
    ADCON2 = 0b00111010;

}

unsigned int captura_ADC(int chanel){

    ADCON0bits.ADON = 1;        //Enable ADC

    if(chanel == POT) {
        //Chanel IN2
        ADCON0bits.CHS0=0;
        ADCON0bits.CHS1=1;
        ADCON0bits.CHS2=0;
        ADCON0bits.CHS3=0;
    }
    else{
        //Chanel IN3
        ADCON0bits.CHS0=1;
        ADCON0bits.CHS1=1;
        ADCON0bits.CHS2=0;
        ADCON0bits.CHS3=0;
    }
   

    ADCON0bits.GO = 1;            //Turn ON capture ADC
    while (ADCON0bits.GO);
    ADCON0bits.ADON=0;          //Disable ADC
    return ADRESH;
}

Leo dos canales el AN2 y el AN3, en el AN2 tengo un potenciometro y en el AN3 un sensor de temperatura, por eso vereis que aparece if(chanel == POT)

POT = 2

Un saludo
BitPIC

Desconectado willynovi

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 546
Re: Duda Librerias MPLAB X
« Respuesta #6 en: 16 de Diciembre de 2012, 13:46:10 »
En tu proyecto elijes que usas el 18F97J60?

El mismo mplab hace los define necesarios, creo  :?
Intento enseñarte a pescar, si solo quieres pescados, espera que un pescador te regale los suyos.

Desconectado bitpic

  • PIC18
  • ****
  • Mensajes: 402
    • BitPIC
Re: Duda Librerias MPLAB X
« Respuesta #7 en: 16 de Diciembre de 2012, 13:56:23 »
Si, lo elijo bien, pero no se porque no hace los "define" bien o los que hace no son compatibles con los de la librería.

He probado de poner otro micro más común pero aún así no funciona. Uso Win7 64bits, no se si esto tendrá algo que ver.

Es algo muy raro.
BitPIC

Desconectado omix

  • Colaborador
  • PIC16
  • *****
  • Mensajes: 244
Re: Duda Librerias MPLAB X
« Respuesta #8 en: 16 de Diciembre de 2012, 14:46:29 »
Hola,
aunque no lo he probado creo que tu problema es que estas poniendo dos _ delante del 18F97J60 y debería ser solamente un _, o sea así "_18F97J60". En cualquier caso, puedes forzar tu mismo la definición de esa macro añadiéndola a los parámetros del compilador con "-D_18F97J60", si no quieres definirla en el propio fichero.

Un saludo.

Desconectado bitpic

  • PIC18
  • ****
  • Mensajes: 402
    • BitPIC
Re: Duda Librerias MPLAB X
« Respuesta #9 en: 16 de Diciembre de 2012, 14:58:03 »
Hola omix,

Los dos _ no los pongo yo, eso viene en la librería, el problema que tengo es que el IDE no define estos valores y por tanto las macros de las librerías no me funcionan.

Quizá si podría añadirla al compilador, pero tiene que haber algo más, no me parece correcto tener que modificar los parámetros del compilador cada vez que cambie de PIC.

Saludos.
BitPIC

Desconectado jukinch

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 608
Re: Duda Librerias MPLAB X
« Respuesta #10 en: 16 de Diciembre de 2012, 15:05:56 »
Hola. Tampoco estoy ducho con el mplab x.
Pero probaría  usar la directiva define para "definirlo".

#define 18F97J60

O también probar

#define _18F97J60

Así el #ifdef seía resuelto como verdadero y se procesaría el código que te sale comentado.
Al menos para probar. Pero comparto que el IDE debería seleccionarlo correctamente.
"Divide las dificultades que examinas en tantas partes como sea posible para su mejor solución." -René Descartes

Desconectado bitpic

  • PIC18
  • ****
  • Mensajes: 402
    • BitPIC
Re: Duda Librerias MPLAB X
« Respuesta #11 en: 16 de Diciembre de 2012, 16:54:59 »
Vaya!!!!!!!! iba a probar lo que dice jukinch pero al abrir el MPLAB X me encuentro que no tengo ningún proyecto y al intentar abrirlos me aparece lo siguiente:

Error in project.xml: Content is not allowed in prolog.

¿¿Alguien sabe que es esto?? Ahora estoy aprendiendo a usarlo y los proyectos que tengo no tienen ninguna relevancia, pero voy a usar MPLAB X en un proyecto de la empresa y no me gustaría llevarme una sorpresa con un proyecto serio cuando ya lo tenga casi acabado o acabado del todo....

Por lo que se ve los archivos project.xml aparecen completamente vacíos, he cogido uno que si me dejaba abrir, he copiado el contenido dentro de los archivos vacíos cambiándole el nombre del proyecto y ya funciona.

Vaya sustos me pega este MPLAB X!!! a este ritmo me van a forzar a un cambio de marca de micro... demasiados errores (aunque algunos seguro que son por ignorancia mia).

Contestándote Junkinch, creo que de la manera que indicas si funciona, lo único malo es que tendré que definirlo a mano, pero buen, son dos palabras tampoco cuesta mucho.

gracias. espero que Mplab X no me de más sustos...

Saludos
BitPIC

Desconectado Suky

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 6758
Re: Duda Librerias MPLAB X
« Respuesta #12 en: 16 de Diciembre de 2012, 17:02:45 »
Es un problema de MPLAB X, no se a que se deberá que pasa eso. No es para asustarse, ya que el archivo fuente no se borra, pero es molesto. Igualmente en un proyecto para una empresa se trabaja con repositorios, así tenes copias de los archivos.

Respecto a lo del problema, al crear el proyecto y seleccionar el dispositivo, debería de configurarse para que tome las librerías de ese microcontrolador. Y sino en las configuraciones del proyecto podes crear el macro en lugar del define que indica jukinch.

Saludos!
No contesto mensajes privados, las consultas en el foro

Desconectado bitpic

  • PIC18
  • ****
  • Mensajes: 402
    • BitPIC
Re: Duda Librerias MPLAB X
« Respuesta #13 en: 16 de Diciembre de 2012, 17:30:49 »
Cuando averiguas que es no es para tanto, pero la primera impresión al abrir el MPLAB y no ver tus proyectos es de enfado y más cuando ya estas molesto porque estas intentando solucionar otro problema. Creo que deberían sacar cuanto antes una versión nueva que solucione los bugs ya que es una herramienta esencial para usar sus micros.

En cuanto a lo de la macro no me queda otra que definirla a mano en el programa.

Bueno, gracias a todos.

Un saludo. :)
BitPIC

Desconectado omix

  • Colaborador
  • PIC16
  • *****
  • Mensajes: 244
Re: Duda Librerias MPLAB X
« Respuesta #14 en: 17 de Diciembre de 2012, 16:29:41 »
Hola de nuevo bitpic,
he probado ha realizar una pequeña prueba con el compilador xc8 para comprobar lo que comentas y a mi me funciona tanto con la macro __18F97J60 como con la _18F97J60, la única diferencia que hay es que con la que solo lleva un _ si te lo colorea correctamente el IDE, mientras que con la de dos _ no te lo colorea correctamente, aunque el resultado es el mismo, y compila y genera el código correctamente.
Lo he probado con la versión 1.0 del XC8, ¿cual es la que usas tu?

Un saludo.


 

anything