TODOPIC

Microcontroladores PIC => dsPIC => Mensaje iniciado por: pic_877a en 28 de Febrero de 2020, 11:46:14

Título: error al compilar Mplab Xide C16 y dspic 30f2010
Publicado por: pic_877a en 28 de Febrero de 2020, 11:46:14


amigos del  foro cordial saludo

bueno les comento he diseñado un codigo que es un ohmetro digital en mplab xide con c16 pero al compilar me genera muchos errores.

este es el codigo

/*
 * File:   Ohmetro.c
 * Author: JOSE
 *
 * Created on 27 de febrero de 2020, 05:44 PM
 */


// DSPIC30F2010 Configuration Bit Settings

// 'C' source line config statements

// FOSC
#pragma config FPR = HS                 // Primary Oscillator Mode (HS)
#pragma config FOS = FRC                // Oscillator Source (Internal Fast RC)
#pragma config FCKSMEN = CSW_FSCM_OFF   // Clock Switching and Monitor (Sw Disabled, Mon Disabled)

// FWDT
#pragma config FWPSB = WDTPSB_16        // WDT Prescaler B (1:16)
#pragma config FWPSA = WDTPSA_512       // WDT Prescaler A (1:512)
#pragma config WDT = WDT_OFF            // Watchdog Timer (Disabled)

// FBORPOR
#pragma config FPWRT = PWRT_64          // POR Timer Value (64ms)
#pragma config BODENV = NONE            // Brown Out Voltage (Reserved)
#pragma config BOREN = PBOR_ON          // PBOR Enable (Enabled)
#pragma config LPOL = PWMxL_ACT_HI      // Low-side PWM Output Polarity (Active High)
#pragma config HPOL = PWMxH_ACT_HI      // High-side PWM Output Polarity (Active High)
#pragma config PWMPIN = RST_IOPIN       // PWM Output Pin Reset (Control with PORT/TRIS regs)
#pragma config MCLRE = MCLR_EN          // Master Clear Enable (Enabled)

// FGS
#pragma config GWRP = GWRP_OFF          // General Code Segment Write Protect (Disabled)
#pragma config GCP = CODE_PROT_ON       // General Segment Code Protection (Enabled)

// FICD
#pragma config ICS = PGD                // Comm Channel Select (Use PGC/EMUC and PGD/EMUD)

// #pragma config statements should precede project file includes.
// Use project enums instead of #define for ON and OFF.

#include <xc.h>




int main(void)
{
   
  Initilize_LCD();
  ConfigModuleADC();
  ChangeChannelADC(0);
 
  while(1)
  {
      DisplayResistance();
      __delay__ ms(100);
  }
  return 0;
}

  }
  void DisplayResistance(void)
  {
      const char Voltage [] = "Ohmetro Digital";
      unsigned char Unit = 0;
      const float R3 = 1000, Vcc = 5.0;
      unsigned int ADC_Value = 0;
      float VoltageOutput = 0;
      unsigned long ResistanceMeasured = 0;
     
      ClearScreen_LCD();
      WriteString_LCD(Voltage);
      MoveCursorToPosition(Secondline);
      ADC_Value = SamplingAndConversionADC();
     
      VoltageOuput = ((float) (ADC_Value)) * 0.004828;
     
      ResistanceMeasured = (unsigned long)((VoltageOutput * R3) / (Vcc-VoltageOutput));
     
      unit = WriteLongAsFloatUptoFiveFigures(ResistanceMeasured);
     
      if (Unit ==2)
          WriteString_LCD("MOhm");
      else if (Unit ==1)
          WriteString_LCD("KOhm");
      else if (!Unit)
          WriteString_LCD("Ohm");
      else
          WriteString_LCD("Fuera del Rango ");
     
  }

espero y me puedan ayudar amigos

 :?

gracias

jose
Título: Re:error al compilar Mplab Xide C16 y dspic 30f2010
Publicado por: planeta9999 en 28 de Febrero de 2020, 13:10:34

Eso no son errores, son avisos (warnings). Esos que se ven en tu captura de pantalla, en concreto, son por no haber creado el prototipo de cada función antes de llamarlas, por eso el compilador te avisa que asume que la llamada lleva implícita la declaración de la función.

Si quieres que desaparezcan esos warnings, simplemente crea el prototipo de las funciones al inicio del fuente, o mueve el fuente de las funciones antes del main(), yo suelo optar por lo segundo.
Título: Re:error al compilar Mplab Xide C16 y dspic 30f2010
Publicado por: pic_877a en 28 de Febrero de 2020, 13:32:46


amigo gracias por responder, es posible y me ayudes a organizar el código para que no me genere errores?  :?:

jose
Título: Re:error al compilar Mplab Xide C16 y dspic 30f2010
Publicado por: planeta9999 en 28 de Febrero de 2020, 14:14:03

Haz lo que te he dicho.
O pones el prototipo de las funciones al principio del fuente, o mueves las funciones antes del main(), en teoría con que estén declaradas antes de ser llamadas es suficiente.
Título: Re:error al compilar Mplab Xide C16 y dspic 30f2010
Publicado por: KILLERJC en 28 de Febrero de 2020, 14:52:26
Deberias copiar bien la salida del compilador, ya que deberia existir algun error debido a que no hay ninguna referencia a esas funciones, ni siquiera un include a la mismas.

Asi que, o estas intentando usar funciones que crees que existen y no lo estan, o estas teniendo un problema y no estas agregando los archivos correspondientes.
Título: Re:error al compilar Mplab Xide C16 y dspic 30f2010
Publicado por: pic_877a en 28 de Febrero de 2020, 14:55:02
 
por fa me das un ejemplo si :?:
Título: Re:error al compilar Mplab Xide C16 y dspic 30f2010
Publicado por: pic_877a en 04 de Marzo de 2020, 12:51:15


hola amigo el planeta9999 sabes he realizado unos cambios al codigo, pero esta me esta generando un error de directorio Lcd.h
cambie el pic y estoy utlizando el pic 24f16ka102.

este es el codigo.

 *
 * File:   Ohmetro.c
 * Author: JOSE
 *
 * Created on 4 de marzo de 2020, 06:39 AM
 */


#define CRYSTAL_FRQUENCY   20000000             /*  20MHz crystal   */
#define FCY CRYSTAL_FRQUENCY/2UL                /*  Cycle frequency */

#include <p24F16KA102.h>
#include <libpic30.h>
#include "LCD.h"
#include "ADC.h"

_FGS(GWRP_OFF & GCP_OFF)
_FOSCSEL(FNOSC_PRI & IESO_OFF)
_FOSC(POSCMOD_HS & OSCIOFNC_ON & POSCFREQ_HS & FCKSM_CSDCMD)
_FWDT(WINDIS_OFF & FWDTEN_OFF)
_FPOR(BOREN_BOR2 & PWRTEN_OFF  & MCLRE_ON)
_FDS(DSBOREN_OFF & DSWDTEN_OFF)
       
int main(void)
{   
    Initilize_LCD();
   
    ConfigModuleADC();          /*  Configure ADC module    */
    ChangeChannelADC(0);        /*  AN0 channel             */
     
    while(1)
    {
        DisplayResistance();
        __delay_ms(100);                        /*  200m Second delay  */
    }
    return 0;
}

void DisplayResistance(void)
{
   
    const char Voltage[] = "Ohmetro Digital";
    unsigned char Unit = 0;
    const float R3 = 10000, Vcc = 5.0;               /*  vo = (10k/(90k + 10k)) vcc    */
    unsigned int ADC_Value = 0;
    float VoltageOutput = 0.0;
    unsigned long ResistanceMeasured = 0;           /*  32 bit wide data type          */



    ClearScreen_LCD();
    WriteString_LCD(Voltage);
    MoveCursorToPosition(SecondLine);
    ADC_Value = SamplingAndConversionADC();                 /*  Sampling                */

    VoltageOutput = ((float)(ADC_Value))* 0.0048828;        /* 0.0048828 = 5/1024       */
   

    ResistanceMeasured = (unsigned long)((VoltageOutput * R3)/(Vcc - VoltageOutput));
   
    //ResistanceMeasured *= 1000;                             /*  miliOhms conversion    */

    Unit = WriteLongAsFloatUptoFiveFigures(ResistanceMeasured);    /*  Printing integer value on LCD   */

    if (Unit ==2)
        WriteString_LCD(" MOhm");
    else if (Unit == 1)
        WriteString_LCD(" kOhm");
    else if (!Unit)
        WriteString_LCD(" Ohm");
    else
        WriteString_LCD("Fuera del Rango");

}
 puedes ayudarme con este error y gracias

jose
Título: Re:error al compilar Mplab Xide C16 y dspic 30f2010
Publicado por: KILLERJC en 04 de Marzo de 2020, 15:31:00
tu problema es que busca la libreria (Lcd.c y Lcd.h) y no existen.

Primero: Necesitas las librerias
Segundo: Tienen que estar en la carpeta de tu proyecto.
Tercero: Lo tenes que agregar al proyecto en el MPLAB a los .c y los .h

Los nombres de las funciones dependen de las librerias. Por lo tanto no hay ejemplos que te podamos dar.. Si no hay librerias y es ahi donde vos tenes el error.

Demas que es un error de programacion en C y nada tiene que ver con el micro, deberias revisar algun tutorial o hacer algun codigo mas sencillo para aprender como es que funcionan los .h y los .c
Título: Re:error al compilar Mplab Xide C16 y dspic 30f2010
Publicado por: pic_877a en 18 de Marzo de 2020, 09:42:28


bueno amigo, no me dado por vencido, sigo trabajando en el código, lo he mejorado pero al compilar me genera este error, adjunto la imagen  pueden ayudarme gracias  :(

Título: Re:error al compilar Mplab Xide C16 y dspic 30f2010
Publicado por: pic_877a en 18 de Marzo de 2020, 10:04:30


he vuelto a compilar el codigo, y ahora me genera otro error, adjunto la imagen, para ver como lo puedo solucionar amigos  :(
Título: Re:error al compilar Mplab Xide C16 y dspic 30f2010
Publicado por: KILLERJC en 18 de Marzo de 2020, 11:06:00
El error es el mismo, el problema es que esta en el linker, y por lo que veo ya es un error del compilador y no vamos a poder hacer mucho.

Podrias probar lo siguiente:
- Crear un nuevo proyecto copiando el codigo y ver si se repite
- Probar otra version del compilador

Ya que la seccion __FOSCEL esta definida en el .gld del linker, pero la seccion .config IESO esta "hard-coded" en el make por lo que lei en otro mensaje con un problema parecido.
Título: Re:error al compilar Mplab Xide C16 y dspic 30f2010
Publicado por: pic_877a en 18 de Marzo de 2020, 13:13:57


he cambiando el Mplab x ide versión 5.20 y estoy usando compilador Xc16 versión 1.31 bueno este compilador es para pic 16 bits, y estoy usando pic 24f16ka102

y me sigue generando los mismos errores, adjunto las imágenes  :(

 
Título: Re:error al compilar Mplab Xide C16 y dspic 30f2010
Publicado por: KILLERJC en 18 de Marzo de 2020, 14:37:02
Vas a tener que pasar un rar o zip con el proyecto minimo para mostrar por LCD algo... Asi con fotos nos es imposible revisarlo.

Comprimi la carpeta del proyecto y subilo.
Título: Re:error al compilar Mplab Xide C16 y dspic 30f2010
Publicado por: pic_877a en 18 de Marzo de 2020, 14:57:25


amigo KILLERJC acá  tienes el código en block de notas, puedes revisarlo para poder encontrar el error, que no me dejando compilar el codigo con pic 24f16ka102, y gracias por la ayuda de nuevo :(
Título: Re:error al compilar Mplab Xide C16 y dspic 30f2010
Publicado por: KILLERJC en 18 de Marzo de 2020, 17:11:01
No me sirve el codigo, me sirve el proyecto, porque hasta ahora seguis teniendo los errores de las funciones del LCD, por eso mismo quiero la carpeta del proyecto comprimida, para ver si estan los archivos necesarios. Y tambien para poder compilarlo completo en mi PC de esa forma si me funciona significa que el problema esta en tu compilador.
Título: Re:error al compilar Mplab Xide C16 y dspic 30f2010
Publicado por: pic_877a en 18 de Marzo de 2020, 17:29:50


amigo aca tienes la carpeta con mi proyecto, espero y me puedas ayudar gracias
Título: Re:error al compilar Mplab Xide C16 y dspic 30f2010
Publicado por: KILLERJC en 18 de Marzo de 2020, 18:01:56
Borra esto:

Código: C
  1. _FGS(GWRP_OFF & GCP_OFF)
  2. _FOSCSEL(FNOSC_PRI & IESO_OFF)
  3. _FOSC(POSCMOD_HS & OSCIOFNC_ON & POSCFREQ_HS & FCKSM_CSDCMD)
  4. _FWDT(WINDIS_OFF & FWDTEN_OFF)
  5. _FPOR(BOREN_BOR2 & PWRTEN_OFF  & MCLRE_ON)
  6. _FDS(DSBOREN_OFF & DSWDTEN_OFF)

Esto se escribia antes , pero desde hace un tiempo se usa el #pragma que tenes en el archivo al comienzo. Por lo tanto estas haciendo dos veces lo mismo.

Quite el #include PIC24F..... ya que eso lo agrega solo el include xc.h

Luego de eso puedo compilar pero con un warning, y es que se usa la funcion WriteCmd_LCD dentro de Initilize_LCD, pero la funcion Write esta despues del Inialize, por lo tanto para que sepa que existe le creo un prototipo. Este es el warning:

Citar
main.c: In function 'Initilize_LCD':
main.c:95:4: warning: implicit declaration of function 'WriteCmd_LCD'
main.c: At top level:
main.c:128:6: warning: conflicting types for 'WriteCmd_LCD'
main.c:95:4: note: previous implicit declaration of 'WriteCmd_LCD' was here

Y en el caso de agregarle el prototipo (antes del Initilize_LCD) queda todo perfecto:

Código: [Seleccionar]
BUILD SUCCESSFUL (total time: 2s)
Loading code from F:/CCS/MPLABx/XC16.X/dist/default/production/XC16.X.production.hex...
Loading completed

Adjunto el unico archivo que modifique. Ya que estaba todo ahi.
Título: Re:error al compilar Mplab Xide C16 y dspic 30f2010
Publicado por: pic_877a en 18 de Marzo de 2020, 21:46:43


ola amigo gracias por la ayuda, ya compila el codigo, te adjunto la simulación del código simulando con el pic 24f16ka102.  ;-)