Autor Tema: PIC18F2550 MPLAB X CX8 ERROR AL COMPÍLAR recipe for target '.build-conf' failed  (Leído 4183 veces)

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

Desconectado sayamvo

  • PIC10
  • *
  • Mensajes: 25
Buenas noches,  migre de c18 a MPLAB X CX8, estoy leyendo y aprendiendo sobre este compilador, trabajo con una placa de desarrollo propia basada en el NEOTEO con PIC18F2550,  en el pic tengo cargado el Bootloader de cuando estaba con c18, estoy empezando y tengo muchas dudas ... estoy compilando un programa básico para prender dos led, al compilar tengo el siguiente error:
make[2]: Leaving directory 'C:/Users/USUARIO.EL-NOGAL/Documents/PROYECTOS MLPAB X CX8/Prueba xc8 1 31222.X'
nbproject/Makefile-default.mk:85: recipe for target '.build-conf' failed
make[1]: Leaving directory 'C:/Users/USUARIO.EL-NOGAL/Documents/PROYECTOS MLPAB X CX8/Prueba xc8 1 31222.X'
nbproject/Makefile-impl.mk:39: recipe for target '.build-impl' failed

No encuentro mucha información de que produce el error ni como solucionarlo.
sigo buscando y leyendo  gracias.
sayamvo

Desconectado DominusDRR

  • PIC24H
  • ******
  • Mensajes: 1982
    • Sicoy
Re:PIC18F2550 MPLAB X CX8 ERROR AL COMPÍLAR recipe for target '.build-conf' failed
« Respuesta #1 en: 05 de Diciembre de 2022, 22:43:50 »
Buenas noches,  migre de c18 a MPLAB X CX8, estoy leyendo y aprendiendo sobre este compilador, trabajo con una placa de desarrollo propia basada en el NEOTEO con PIC18F2550,  en el pic tengo cargado el Bootloader de cuando estaba con c18, estoy empezando y tengo muchas dudas ... estoy compilando un programa básico para prender dos led, al compilar tengo el siguiente error:
make[2]: Leaving directory 'C:/Users/USUARIO.EL-NOGAL/Documents/PROYECTOS MLPAB X CX8/Prueba xc8 1 31222.X'
nbproject/Makefile-default.mk:85: recipe for target '.build-conf' failed
make[1]: Leaving directory 'C:/Users/USUARIO.EL-NOGAL/Documents/PROYECTOS MLPAB X CX8/Prueba xc8 1 31222.X'
nbproject/Makefile-impl.mk:39: recipe for target '.build-impl' failed

No encuentro mucha información de que produce el error ni como solucionarlo.
sigo buscando y leyendo  gracias.

Tal vez te sirva:


http://www.todopic.com.ar/foros/index.php?topic=50297.0


Lo que deberías es intentar hacer un simple proyecto y ver si compila, luego irias añadiendo el resto de código (Porque me imagino que estás intentando abrir un proyecto existente en lugar de crear uno desde cero)
Tengo una idea algo difusa sobre MPLAB Harmony, XC32 con PIC32

Desconectado sayamvo

  • PIC10
  • *
  • Mensajes: 25
Buenas noches Ante todo desearles un feliz 2023, sigo teniendo problemas al compilar usando la funcion Delay : 
#define _XTAL_FREC 20000000
.
.
.
        LATAbits.LATA0=0 ;   //Pone en nivel bajo el bit 0 del puerto A
        LATAbits.LATA1=0 ;   //Pone en nivel bajo el bit 0 del puerto A
        __Delay_ms(400);

Como se usa la funcion  delay o como puedo crear un retardo en milisegundos?

estoy usando mplab x v6.05 y compilador Xc8 v2.40

Gracias..
sayamvo

Desconectado DominusDRR

  • PIC24H
  • ******
  • Mensajes: 1982
    • Sicoy
Buenas noches Ante todo desearles un feliz 2023, sigo teniendo problemas al compilar usando la funcion Delay : 
#define _XTAL_FREC 20000000
.
.
.
        LATAbits.LATA0=0 ;   //Pone en nivel bajo el bit 0 del puerto A
        LATAbits.LATA1=0 ;   //Pone en nivel bajo el bit 0 del puerto A
        __Delay_ms(400);

Como se usa la funcion  delay o como puedo crear un retardo en milisegundos?

estoy usando mplab x v6.05 y compilador Xc8 v2.40

Gracias..

¿Estás incluyendo lo siguiente?

Código: C
  1. #include <xc.h>
Tengo una idea algo difusa sobre MPLAB Harmony, XC32 con PIC32

Desconectado DominusDRR

  • PIC24H
  • ******
  • Mensajes: 1982
    • Sicoy
También deberías indicar que error te muestra el compilador, me parece que ese retardo sincrónico es en minúsculas, así:

Código: C
  1. __delay_ms(400);

Tengo una idea algo difusa sobre MPLAB Harmony, XC32 con PIC32

Desconectado sayamvo

  • PIC10
  • *
  • Mensajes: 25
Gracias,  cambie Delay por delay  y al compilar el error es el mismo

nbproject/Makefile-default.mk:101: recipe for target 'build/default/production/dosledcx8.p1' failed
make[2]: Leaving directory 'C:/Users/USUARIO.EL-NOGAL/Documents/PROYECTOS MLPAB X CX8/Prueba xc8 1 31222.X'
nbproject/Makefile-default.mk:85: recipe for target '.build-conf' failed
make[1]: Leaving directory 'C:/Users/USUARIO.EL-NOGAL/Documents/PROYECTOS MLPAB X CX8/Prueba xc8 1 31222.X'
nbproject/Makefile-impl.mk:39: recipe for target '.build-impl' failed

//#include <p18F2550.h>
#include <stdlib.h>
#include <math.h>
#include <stdio.h>
#include <xc.h>
#include <stdint.h>
//#include <delay.h>
#define _XTAL_FREC 20000000
sayamvo

Desconectado DominusDRR

  • PIC24H
  • ******
  • Mensajes: 1982
    • Sicoy
Gracias,  cambie Delay por delay  y al compilar el error es el mismo

nbproject/Makefile-default.mk:101: recipe for target 'build/default/production/dosledcx8.p1' failed
make[2]: Leaving directory 'C:/Users/USUARIO.EL-NOGAL/Documents/PROYECTOS MLPAB X CX8/Prueba xc8 1 31222.X'
nbproject/Makefile-default.mk:85: recipe for target '.build-conf' failed
make[1]: Leaving directory 'C:/Users/USUARIO.EL-NOGAL/Documents/PROYECTOS MLPAB X CX8/Prueba xc8 1 31222.X'
nbproject/Makefile-impl.mk:39: recipe for target '.build-impl' failed

//#include <p18F2550.h>
#include <stdlib.h>
#include <math.h>
#include <stdio.h>
#include <xc.h>
#include <stdint.h>
//#include <delay.h>
#define _XTAL_FREC 20000000

No he trabajado en años con ese compilador y los micros de 8 bits, pero estaba buscando en internet, y ese problema da por una mala instalación de xc8 o problemas con esos incluyes que pones y creo que son innecesarios a excepción del xc.h.

Según en este foro:

https://www.eevblog.com/forum/microcontrollers/microchip-xc8-compiler-problems/

Deberías hacer una prueba simple así:

Código: C
  1. #include <xc.h> //Sólo este include
  2.  
  3. void main(void)
  4. {
  5.     return;
  6. }

SI esto compila sin error, no deberías agregar todas esas otras cabecera si no lo necesitas.

Si necesitas ir agregándolas, hay un comentario que dice lo siguiente (traducido):


Creo que la clave aquí es que el #include <xc.h> debe declararse primero antes de que otro sistem includes.


Pensaría que deberías usar MCC para generar tu código en lugar de ir escribiendo las librerías y archivos adicionales por tu cuenta:

https://microchipdeveloper.com/mplabx:mcc


Tengo una idea algo difusa sobre MPLAB Harmony, XC32 con PIC32

Desconectado uZYNQ

  • PIC16
  • ***
  • Mensajes: 123
Citar
Pensaría que deberías usar MCC para generar tu código

 El MCC es para PIC nuevos. Para los pic18F2550, pic18f4550 y otros, no se puede utilizar. Tendría que migrar al pic18F45K50.

Me parece que está mal escrito el define, y en algunas versiones del XC8 dice que no puede generar el retardo, por lo que hay que reducir el parámetro y hacer un ciclo for.

Código: [Seleccionar]
#define _XTAL_FREQ 20000000

         __delay_ms(250);

Desconectado DominusDRR

  • PIC24H
  • ******
  • Mensajes: 1982
    • Sicoy
Citar
Pensaría que deberías usar MCC para generar tu código

 El MCC es para PIC nuevos. Para los pic18F2550, pic18f4550 y otros, no se puede utilizar. Tendría que migrar al pic18F45K50.

Me parece que está mal escrito el define, y en algunas versiones del XC8 dice que no puede generar el retardo, por lo que hay que reducir el parámetro y hacer un ciclo for.

Código: [Seleccionar]
#define _XTAL_FREQ 20000000

         __delay_ms(250);

Tienes toda la razón, esos microcontroladores ya son viejos, MCHP aun los sigue produciendo por misericordia.


« Última modificación: 24 de Enero de 2023, 17:26:42 por DominusDRR »
Tengo una idea algo difusa sobre MPLAB Harmony, XC32 con PIC32

Desconectado sayamvo

  • PIC10
  • *
  • Mensajes: 25
Buenas tardes,  gracias por toda la ayuda,  seguiré leyendo un poco mas,  finalmente pude solucionar lo del delay.  faltaba definir:

#define _XTAL_FREQ 20000000   // PARA USAR LA MACRO __Delay
#define __delay_ms(x) _delay((unsigned long)((x)*(_XTAL_FREQ/4000.0)))

y el programa se pudo compilar.
sayamvo

Desconectado sayamvo

  • PIC10
  • *
  • Mensajes: 25
Re:PIC18F2550 MPLAB X CX8 ERROR AL COMPÍLAR recipe for target '.build-conf' failed
« Respuesta #10 en: 24 de Enero de 2023, 21:55:54 »
Finalmente el Error que me salia se debió a que escribí en forma incorrecta  #define _XTAL_FREQ 20000000    (FREC)

#include <xc.h>
//#include <p18F2550.h>
#include <stdlib.h>
#include <math.h>
#include <stdio.h>
#include <stdint.h>


#pragma config PLLDIV  = 5 ,  CPUDIV  = OSC1_PLL2 , USBDIV = 2 , FOSC = HSPLL_HS          // (CRISTAL DE 20 MHz)
#pragma config FCMEN   = OFF, IESO    = OFF,  PWRT     = ON,   BOR      = OFF
#pragma config BORV    = 0,   VREGEN  = ON,   WDT      = OFF,  WDTPS    = 32768
#pragma config MCLRE   = ON,  LPT1OSC = OFF,  PBADEN   = OFF,  STVREN   = OFF     
#pragma config LVP     = OFF, XINST   = OFF,  CP0      = OFF,  CP1      = OFF
#pragma config CPB     = OFF, WRT0    = OFF,  WRT1     = OFF,  WRTB     = OFF
#pragma config WRTC    = OFF, EBTR0   = OFF,  EBTR1    = OFF,  EBTRB    = OFF
#pragma config CCP2MX  = OFF, DEBUG   = OFF

#define _XTAL_FREQ 20000000   // PARA USAR LA MACRO __Delay
//#define __delay_ms(x) _delay((unsigned long)((x)*(_XTAL_FREQ/4000.0)))
       
/** AQUÍ COMIENZA LA APLICACIÓN **************************************/
#pragma code
void main(void){

    TRISA=0;
   LATA=0;
     
   while(1){
        if (PORTCbits.RC2 == 1)  //Si RC2esta en nivel alto...
   {         
        LATAbits.LATA0=0;   //Pone en nivel bajo el bit 0 del puerto A
        LATAbits.LATA1=1;   //Pone en nivel alto el bit 1 del puerto A
            
        __delay_ms(1900);
        LATAbits.LATA0=1 ;   //Pone en nivel alto el bit 0 del puerto A
        LATAbits.LATA1=0 ;   //Pone en nivel bajo el bit 1 del puerto A
        __delay_ms(800);

   }
   else         //Si no se cumple dicha condición...
   {
        LATAbits.LATA0=0 ;   //Pone en nivel bajo el bit 0 del puerto A
        LATAbits.LATA1=0 ;   //Pone en nivel bajo el bit 1 del puerto A
        __delay_ms(1800);
        LATAbits.LATA0=1 ;   //Pone en nivel alto el bit 0 del puerto A
        LATAbits.LATA1=1 ;   //Pone en nivel alto el bit 1 del puerto A
        __delay_ms(650);
   }

   }
}
sayamvo

Desconectado sayamvo

  • PIC10
  • *
  • Mensajes: 25
Re:PIC18F2550 MPLAB X CX8 ERROR AL COMPÍLAR recipe for target '.build-conf' failed
« Respuesta #11 en: 01 de Marzo de 2023, 22:45:55 »
Buenas Noches, gracias a las colaboraciones he ido mejorando y recordando un poco mas.
tengo ahora un problema al tratar de usar el lcd 16x2:  pruebo el lcd com un archivo.hex creado con c18 y visualiza bien,  con cx8 estoy usando librarias lcd.h y .c descargadas  y modificadas para usar el puerto B,  al compilar y cargar el .hex en el LCD me empiezan a salir caracteres y simbolos que no corresponden a lo programado, aparecen y desaparecen y solo quiero escribir caracteres fijos o un mensaje.

codigo del lcd.h:

#include <xc.h>
#define _XTAL_FREQ 20000000

#define USE_CGRAM_LCD

#define RS LATBbits.LATB2
#define EN LATBbits.LATB3
#define D4 LATBbits.LATB4
#define D5 LATBbits.LATB5
#define D6 LATBbits.LATB6
#define D7 LATBbits.LATB7

#define RS_DIR TRISBbits.TRISB2
#define EN_DIR TRISBbits.TRISB3
#define D4_DIR TRISBbits.TRISB4
#define D5_DIR TRISBbits.TRISB5
#define D6_DIR TRISBbits.TRISB6
#define D7_DIR TRISBbits.TRISB7

void Lcd_Port(char a);
void Lcd_Cmd(char a);
void Lcd_Clear(void);
void Lcd_Set_Cursor(char a, char b);
void Lcd_Init(void);
void Lcd_Write_Char(char a);
void Lcd_Write_String(const char *a);
void Lcd_Shift_Right(void);
void Lcd_Shift_Left(void);
void Lcd_Blink(void);
void Lcd_NoBlink(void);

#ifdef USE_CGRAM_LCD
void Lcd_CGRAM_CreateChar(char add, const char* chardata);
void Lcd_CGRAM_Init(void);
void Lcd_CGRAM_Close(void);
#endif


codigo del lcd.c

#include "lcd.h"

void Lcd_Port(char a)
{
    (a & 1) ? (D4 = 1) : (D4 = 0);
    (a & 2) ? (D5 = 1) : (D5 = 0);
    (a & 4) ? (D6 = 1) : (D6 = 0);
    (a & 8) ? (D7 = 1) : (D7 = 0);
}

void Lcd_Cmd(char a)
{
    RS = 0;
    Lcd_Port(a);
    EN = 1;
    __delay_ms(4);
    EN = 0;
}

void Lcd_Clear(void)
{
    Lcd_Cmd(0);
    Lcd_Cmd(1);
}

void Lcd_Set_Cursor(char a, char b)
{
    char temp,z,y;
    if(a == 1)
    {
        temp = 0x80 + b - 1;
        z = temp>>4;
        y = temp & 0x0F;
        Lcd_Cmd(z);
        Lcd_Cmd(y);
    }
    else if(a == 2)
    {
        temp = 0xC0 + b - 1;
        z = temp>>4;
        y = temp & 0x0F;
        Lcd_Cmd(z);
        Lcd_Cmd(y);
    }
    else if(a == 3)
    {
        temp = 0x94 + b - 1;
        z = temp>>4;
        y = temp & 0x0F;
        Lcd_Cmd(z);
        Lcd_Cmd(y);
    }
    else if(a == 4)
    {
        temp = 0xD4 + b - 1;
        z = temp>>4;
        y = temp & 0x0F;
        Lcd_Cmd(z);
        Lcd_Cmd(y);
    }
}

void Lcd_Init(void)
{
   RS_DIR = 0;
   EN_DIR = 0;
   D4_DIR = 0;
   D5_DIR = 0;
   D6_DIR = 0;
   D7_DIR = 0;
    Lcd_Port(0x00);
    __delay_ms(20);
    Lcd_Cmd(0x03);
    __delay_ms(5);
    Lcd_Cmd(0x03);
    __delay_ms(11);
    Lcd_Cmd(0x03);
    Lcd_Cmd(0x02);
    Lcd_Cmd(0x02);
    Lcd_Cmd(0x08);
    Lcd_Cmd(0x00);
    Lcd_Cmd(0x0C);
    Lcd_Cmd(0x00);
    Lcd_Cmd(0x06);
    Lcd_Clear();
}

void Lcd_Write_Char(char a)
{
    char temp,y;
    temp = a&0x0F;
    y = a&0xF0;
    RS = 1;
    Lcd_Port(y>>4);
    EN = 1;
    __delay_us(40);
    EN = 0;
    Lcd_Port(temp);
    EN = 1;
    __delay_us(40);
    EN = 0;
}

void Lcd_Write_String(const char *a)
{
    int i;
    for(i=0;a!='\0';i++)
        Lcd_Write_Char(a);
}

void Lcd_Shift_Right(void)
{
    Lcd_Cmd(0x01);
    Lcd_Cmd(0x0C);
}

void Lcd_Shift_Left(void)
{
    Lcd_Cmd(0x01);
    Lcd_Cmd(0x08);
}

void Lcd_Blink(void)
{
    Lcd_Cmd(0x00);
    Lcd_Cmd(0x0F);
}

void Lcd_NoBlink(void)
{
    Lcd_Cmd(0x00);
    Lcd_Cmd(0x0C);
}

#ifdef USE_CGRAM_LCD
void Lcd_CGRAM_CreateChar(char add, const char* chardata)
{
    switch(add)
    {
        case 0:
            for(char i=0; i<=7; i++)
                Lcd_Write_Char(chardata);
            break;
        case 1:
            for(char i=8; i<=15; i++)
                Lcd_Write_Char(chardata[i-8]);
            break;
        case 2:
            for(char i=16; i<=23; i++)
                Lcd_Write_Char(chardata[i-16]);
            break;
        case 3:
            for(char i=24; i<=31; i++)
                Lcd_Write_Char(chardata[i-24]);
            break;
        case 4:
            for(char i=32; i<=39; i++)
                Lcd_Write_Char(chardata[i-32]);
            break;
        case 5:
            for(char i=40; i<=47; i++)
                Lcd_Write_Char(chardata[i-40]);
            break;
        case 6:
            for(char i=48; i<=55; i++)
                Lcd_Write_Char(chardata[i-48]);
            break;
        case 7:
            for(char i=56; i<=63; i++)
                Lcd_Write_Char(chardata[i-56]);
            break;
    }
}

void Lcd_CGRAM_Init(void)
{
    Lcd_Cmd(0x04);
    Lcd_Cmd(0x00);
}

void Lcd_CGRAM_Close(void)
{
    Lcd_Cmd(0x00);
    Lcd_Cmd(0x02);
}
#endif

he revisado y no encuentro que puede estar mal...  estoy usando XC8 v2.40   esta version tiene librerias para lcd?

gracias.
sayamvo

Desconectado DominusDRR

  • PIC24H
  • ******
  • Mensajes: 1982
    • Sicoy
Re:PIC18F2550 MPLAB X CX8 ERROR AL COMPÍLAR recipe for target '.build-conf' failed
« Respuesta #12 en: 01 de Marzo de 2023, 22:54:44 »
Suponiendo que el código mostrado es el mismo para c8 y XC8, posiblemente estés utilizando instrucciones extendidas.

Las instrucciones extendidas se habilitan en los bits de configuración o fuses, y recuerdo que leí una vez que  XC8 no soportaba ese modo de operación.

Eso leí hace varios años, cuando aun usaba C8, pero migré al PIC32 y ya no he regresado a los pics de 8 bits.

Cuando compilas con modo extendido, pero no habilitas en los fuses esa opción, sabe pasar lo que dices en una LCD. ( o me parece que era viceversa, es decir compilas en modo normal, pero habilitas el modo extendido en los fuses)
« Última modificación: 01 de Marzo de 2023, 23:00:47 por DominusDRR »
Tengo una idea algo difusa sobre MPLAB Harmony, XC32 con PIC32

Desconectado sayamvo

  • PIC10
  • *
  • Mensajes: 25
Re:PIC18F2550 MPLAB X CX8 ERROR AL COMPÍLAR recipe for target '.build-conf' failed
« Respuesta #13 en: 03 de Marzo de 2023, 22:29:07 »
buenas noches,  Al parecer el problema es del compilador, cambie el compilador a una versión anterior v1.41 y al compilar me salen errores con el codigo que antes si podia compilar pero en un nuevo proyecto y archivo:

make[2]: *** No rule to make target 'build/default/production/PRUEBA LCD1.p1', needed by 'dist/default/production/TEST_LCD_MAR032023.X.production.hex'.  Stop.
make[1]: *** [.build-conf] Error 2

nbproject/Makefile-default.mk:85: recipe for target '.build-conf' failed
make[1]: Leaving directory 'C:/Users/USUARIO.EL-NOGAL/Documents/PROYECTOS MLPAB X CX8/TEST LCD MAR032023.X'
nbproject/Makefile-impl.mk:39: recipe for target '.build-impl' failed

Bueno hay sigo revisando y leyendo a ver que mas aprendo de todo esto.. gracias.

 estoy mirando la opcion de migrar a un pic de 32 bit..
sayamvo


 

anything