Autor Tema: xc8 mplabx aprendiendo de un libro "unable to resolve identifier"  (Leído 9064 veces)

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

Desconectado yamilongiano

  • PIC10
  • *
  • Mensajes: 37


hola a todos estoy aprendiendo de un libro que me compre pero al seguir los ejemplos me sale "unable to resolve identifier ANSEL"

 creo que al parecer no estan declaradas o falta definirlas. no quiero dar el nombre del libro para no generar problemas. y obvio tratar de entender por que pone un codigo el autor  y le funciona correctamente y a mi no. asi quizas evitar futuros problemas mas adelante en ejemplos practicos.

a continuacion les dejo el codigo.

estoy usando el
pic16f887

Código: [Seleccionar]
#include <xc.h>
#define _XTAL_FREQ 4000000__CONFIG(FOSC_INTRC_NOCLKOUT & WDTE_OFF & WDTE_OFF & PWRTE_ON & LPV_OFF & CP_OFF & CPD_OFF & BOREN_ON);


int main(void){

    ANSEL=0;
    ANSELH=0;
    PORTB=0;
    TRISB=0X00;


      while(1)
      {
          RB0=!RB0;
          __delay_ms(500);
      }
      return 0;
}

errores:

Código: [Seleccionar]


CLEAN SUCCESSFUL (total time: 175ms)
make -f nbproject/Makefile-default.mk SUBPROJECTS= .build-conf
make[1]: Entering directory 'C:/Users/yamil/Desktop/proyectosMPLABX/projecto1.X'
make  -f nbproject/Makefile-default.mk dist/default/production/projecto1.X.production.hex
make[2]: Entering directory 'C:/Users/yamil/Desktop/proyectosMPLABX/projecto1.X'
"C:\Program Files\Microchip\xc8\v1.32\bin\xc8.exe" --pass1  --chip=16F877 -Q -G  --double=24 --float=24 --opt=default,+asm,+asmfile,-speed,+space,-debug --addrqual=ignore --mode=free -P -N255 --warn=0 --asmlist --summary=default,-psect,-class,+mem,-hex,-file --output=default,-inhx032 --runtime=default,+clear,+init,-keep,-no_startup,+osccal,-resetbits,-download,-stackcall,+clib --output=-mcof,+elf:multilocs --stack=compiled:auto:auto "--errformat=%f:%l: error: (%n) %s" "--warnformat=%f:%l: warning: (%n) %s" "--msgformat=%f:%l: advisory: (%n) %s"    -obuild/default/production/main.p1  main.c
(908) exit status = 1
make[2]: *** [build/default/production/main.p1] Error 1
make[1]: *** [.build-conf] Error 2
make: *** [.build-impl] Error 2
main.c:16: error: (192) undefined identifier "ANSEL"
main.c:17: error: (192) undefined identifier "ANSELH"
main.c:25: error: (195) expression syntax
main.c:25: error: (187) too few function arguments
main.c:25: error: (194) ")" expected
main.c:25: error: (195) expression syntax
main.c:25: error: (195) expression syntax
nbproject/Makefile-default.mk:91: recipe for target 'build/default/production/main.p1' failed
make[2]: Leaving directory 'C:/Users/yamil/Desktop/proyectosMPLABX/projecto1.X'
nbproject/Makefile-default.mk:75: recipe for target '.build-conf' failed
make[1]: Leaving directory 'C:/Users/yamil/Desktop/proyectosMPLABX/projecto1.X'
nbproject/Makefile-impl.mk:39: recipe for target '.build-impl' failed

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

no se la relacion de ansel y anselh y tampoco comprendo por que el delay esta con problemas. seguro algo me falta definir o alguna otra biblioteca.
que en el libro quizas no se menciona.

como dato extra tengo el pickit 3.

Desconectado alev2477

  • PIC10
  • *
  • Mensajes: 21
Re: xc8 mplabx aprendiendo de un libro "unable to resolve identifier"
« Respuesta #1 en: 25 de Julio de 2014, 08:58:21 »
Saludos amigo,

He compilado tu fuente y han aparecido algunos errores como dices, yo tambien estoy aprendiendo el xc8. Encontré que los registros que mencionas con respecto a ANSEL dependen de si el chip que utilizas tiene esos registros en XC8, no se si el PIC que tu tienes los emplea. Revisa que PIC utiliza el libro.

El otro error que sale es en cuanto al __config, no entiendo porque no hay manera de colocarlo bien me sale errores, además de como lo pusiste en el texto luego del define en la misma línea.

El otro error es el que aparece en __delay, según leí es un bug del IDE, no lo se , pero si arreglas lo del config y comentas los registros ANSEL compila bien

Seguire viendo y profundisando en eso de ANSEL y que chip los tiene

Un tip muy bueno para emplear los fuses de la palabra de configuración, el mplab tiene una herramienta de autogeneracion de ese código según el chip, para ello ve a la pestaña windows - Pic Memory views - configuration bits. Selecciona tus opciones y en el boton Generate Souce Code to output tendrás lo que necesitas, según tu configuración sacó lo siguiente:


// PIC16F877A Configuration Bit Settings

// 'C' source line config statements

#include <xc.h>

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

// CONFIG
#pragma config FOSC = EXTRC     // Oscillator Selection bits (RC oscillator)
#pragma config WDTE = OFF       // Watchdog Timer Enable bit (WDT disabled)
#pragma config PWRTE = ON       // Power-up Timer Enable bit (PWRT enabled)
#pragma config BOREN = ON       // Brown-out Reset Enable bit (BOR enabled)
#pragma config LVP = OFF        // Low-Voltage (Single-Supply) In-Circuit Serial Programming Enable bit (RB3 is digital I/O, HV on MCLR must be used for programming)
#pragma config CPD = OFF        // Data EEPROM Memory Code Protection bit (Data EEPROM code protection off)
#pragma config WRT = OFF        // Flash Program Memory Write Enable bits (Write protection off; all program memory may be written to by EECON control)
#pragma config CP = OFF         // Flash Program Memory Code Protection bit (Code protection off)


Espero haberte ayudado
« Última modificación: 25 de Julio de 2014, 09:11:04 por alev2477 »
Al preguntar aprendo y al responder aprendo tambien

Desconectado yamilongiano

  • PIC10
  • *
  • Mensajes: 37
Re: xc8 mplabx aprendiendo de un libro "unable to resolve identifier"
« Respuesta #2 en: 25 de Julio de 2014, 11:00:08 »
hola muchas gracias por tu ayuda....mira he copiado directamente del libro tal cual sale. por eso quizas los errores.

el microcontrolador es el pic16f887 y tambien he estado leyendo algo de ansel y anselh es para declararlas digitales.



al parecer xc8 aun tiene problemas... mejor dicho yo tengo el problema jaja.

vere si lo puedo solucionar muchas gracias.

Desconectado alev2477

  • PIC10
  • *
  • Mensajes: 21
Re: xc8 mplabx aprendiendo de un libro "unable to resolve identifier"
« Respuesta #3 en: 25 de Julio de 2014, 13:55:55 »
Saludos,

Viendo los registros ANSEL y ANSELH con clip derecho y en navigate declaration me encuentro que la libreria que tiene el ANSEL es el pic16f88a.h pero no tiene al ANSELH

el chip que encontré que tiene los dos registros es el pic16f887.h

de hecho selecciona ese PIC, en project properties y listo tu código funciona perfectamente.

Tu codigo no funciona para el pic16f877 sino para el pic16f887
Al preguntar aprendo y al responder aprendo tambien

Desconectado rotting79

  • PIC12
  • **
  • Mensajes: 91
Re: xc8 mplabx aprendiendo de un libro "unable to resolve identifier"
« Respuesta #4 en: 25 de Julio de 2014, 14:41:24 »
hey there

there is not such a problem, I mean, the code is right
no hay tal problema, quiero decir, el código es correcto





check u select the right PIC... (16F887)
CONTROL u seleccione el PIC derecho ... (16F887)



hope this helps

Espero que esto ayude
« Última modificación: 25 de Julio de 2014, 14:47:16 por rotting79 »
...On November 2nd, a PIC10 became self-aware and decided our fate in __delay_us ( 1 ); ...

Desconectado alev2477

  • PIC10
  • *
  • Mensajes: 21
Re: xc8 mplabx aprendiendo de un libro "unable to resolve identifier"
« Respuesta #5 en: 25 de Julio de 2014, 15:26:39 »
Ojo tienes dos errores en la transcripción
Tu colocaste
#define _XTAL_FREQ 4000000__CONFIG(FOSC_INTRC_NOCLKOUT & WDTE_OFF & WDTE_OFF & PWRTE_ON & LPV_OFF & CP_OFF & CPD_OFF & BOREN_ON);


y la manera correcta es
#define _XTAL_FREQ 4000000
__CONFIG(FOSC_INTRC_NOCLKOUT & WDTE_OFF & WDTE_OFF & PWRTE_ON & LPV_OFF & CP_OFF & CPD_OFF & BOREN_ON);

Nota la nueva linea en __CONFIG tal como sale en el libro

y el otro error fue que colocaste LPV_OFF y la manera correcta es LVP_OFF

Aunque prefiero la manera moderna que hace el mismo MPLABX con los #PRAGMA

Creo que el libro no se equivocó, sólo selecciona el PIC16F887A.

Gracias por la oportunidad aprendí muchísimo de xC8
 :mrgreen:


Al preguntar aprendo y al responder aprendo tambien

Desconectado CompSystems

  • PIC18
  • ****
  • Mensajes: 488
    • Home Page
Re: xc8 mplabx aprendiendo de un libro "unable to resolve identifier"
« Respuesta #6 en: 25 de Julio de 2014, 15:35:45 »
Hola yamilongiano, por favor me informas cual es libro que estas siguiendo

Gracias
Desde Colombia

Desconectado yamilongiano

  • PIC10
  • *
  • Mensajes: 37
Re: xc8 mplabx aprendiendo de un libro "unable to resolve identifier"
« Respuesta #7 en: 26 de Julio de 2014, 17:14:50 »
Hola yamilongiano, por favor me informas cual es libro que estas siguiendo

Gracias

hola muchas gracias por sus respuestas.....debo usar lentes pues mire muchas veces y veia el pic16f877 un error muy humano.

claro que te digo el libro. se llama"DISEÑO E IMPLEMENTACION DE SISTEMAS EMBEBIDOS CON PIC (TOMO I INTRODUCCION Y APLICACIONES BASICAS)"  muy buen libro muy grafico. orientado para trabajar con MPLAB X y xc8. de verdad lo encuentro bueno. por eso he decidido llevar el lbro al pie de la letra y tratar de hacer todo lo que esta en el. aunque yo logre hacerlo de otras maneras. quiero entender la forma de programar de este profesional, ya que la encuentro sumamente buena.

volviendo al tema  me sale otro error.

Código: [Seleccionar]

#include <xc.h>
#define _XTAL_FREQ 4000000__CONFIG(FOSC_INTRC_NOCLKOUT & WDTE_OFF & WDTE_OFF & PWRTE_ON & LPV_OFF & CP_OFF & CPD_OFF & BOREN_ON);

int main(void){

    ANSEL=0;
    ANSELH=0;
    PORTB=0;
    TRISB=0X00;


      while(1)
      {
          RB0=!RB0;
          __delay_ms(500); //error aqui
      }
      return 0;
}

compilando:

Código: [Seleccionar]
CLEAN SUCCESSFUL (total time: 303ms)
make -f nbproject/Makefile-default.mk SUBPROJECTS= .build-conf
make[1]: Entering directory 'C:/Users/yamil/Desktop/proyectosMPLABX/projecto1.X'
make  -f nbproject/Makefile-default.mk dist/default/production/projecto1.X.production.hex
make[2]: Entering directory 'C:/Users/yamil/Desktop/proyectosMPLABX/projecto1.X'
"C:\Program Files\Microchip\xc8\v1.32\bin\xc8.exe" --pass1  --chip=16F887 -Q -G  --double=24 --float=24 --opt=default,+asm,+asmfile,-speed,+space,-debug --addrqual=ignore --mode=free -P -N255 --warn=0 --asmlist --summary=default,-psect,-class,+mem,-hex,-file --output=default,-inhx032 --runtime=default,+clear,+init,-keep,-no_startup,+osccal,-resetbits,-download,-stackcall,+clib --output=-mcof,+elf:multilocs --stack=compiled:auto:auto "--errformat=%f:%l: error: (%n) %s" "--warnformat=%f:%l: warning: (%n) %s" "--msgformat=%f:%l: advisory: (%n) %s"    -obuild/default/production/main.p1  main.c
main.c:23: error: (195) expression syntax
main.c:23: error: (187) too few function arguments
main.c:23: error: (194) ")" expected
main.c:23: error: (195) expression syntax
main.c:23: error: (195) expression syntax
(908) exit status = 1
make[2]: *** [build/default/production/main.p1] Error 1
make[1]: *** [.build-conf] Error 2
make: *** [.build-impl] Error 2
nbproject/Makefile-default.mk:91: recipe for target 'build/default/production/main.p1' failed
make[2]: Leaving directory 'C:/Users/yamil/Desktop/proyectosMPLABX/projecto1.X'
nbproject/Makefile-default.mk:75: recipe for target '.build-conf' failed
make[1]: Leaving directory 'C:/Users/yamil/Desktop/proyectosMPLABX/projecto1.X'
nbproject/Makefile-impl.mk:39: recipe for target '.build-impl' failed

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


no entiendo el error desde ya muchas gracias.

Desconectado MerLiNz

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 2463
Re: xc8 mplabx aprendiendo de un libro "unable to resolve identifier"
« Respuesta #8 en: 26 de Julio de 2014, 17:19:39 »
el error (si no hay otro mas) es este: #define _XTAL_FREQ 4000000__CONFIG(FOSC_INTRC_NOCLKOUT & WDTE_OFF & WDTE_OFF & PWRTE_ON & LPV_OFF & CP_OFF & CPD_OFF & BOREN_ON);

has puesto las lineas una encima de otra, seria:

#define _XTAL_FREQ 4000000

__CONFIG(FOSC_INTRC_NOCLKOUT & WDTE_OFF & WDTE_OFF & PWRTE_ON & LPV_OFF & CP_OFF & CPD_OFF & BOREN_ON);

Desconectado yamilongiano

  • PIC10
  • *
  • Mensajes: 37
Re: xc8 mplabx aprendiendo de un libro "unable to resolve identifier"
« Respuesta #9 en: 26 de Julio de 2014, 20:24:11 »
no comprendo por que el error.-

miren pongo caputas.




output:



 ya no se que puede ser... :O

Desconectado alev2477

  • PIC10
  • *
  • Mensajes: 21
Re: xc8 mplabx aprendiendo de un libro "unable to resolve identifier"
« Respuesta #10 en: 26 de Julio de 2014, 20:27:56 »
no comprendo por que el error.-

miren pongo caputas.




output:



 ya no se que puede ser... :O




Saludos Amigo pero si ya te lo respondi arriba date cuente del LPV que tienes  es LVP_OFF y listo.

Al preguntar aprendo y al responder aprendo tambien

Desconectado yamilongiano

  • PIC10
  • *
  • Mensajes: 37
Re: xc8 mplabx aprendiendo de un libro "unable to resolve identifier"
« Respuesta #11 en: 26 de Julio de 2014, 20:56:19 »
he cambiado y sigue el problema... no se si el codigo esta bien yo lo veo bien.

Código: [Seleccionar]

#include <xc.h>
#include <stdio.h>
#include <stdlib.h>
#define _XTAL_FREQ 4000000__CONFIG(FOSC_INTRC_NOCLKOUT & WDTE_OFF & WDTE_OFF & PWRTE_ON & LVP_OFF & CP_OFF & CPD_OFF & BOREN_ON);

int main(void){

    ANSEL=0;
    ANSELH=0;
    PORTB=0;
    TRISB=0X00;


      while(1)
      {
          RB0=!RB0;
          __delay_ms(500);
      }
      return 0;
}




con los otros fuses...

#pragma

codigo:
Código: [Seleccionar]
#include <xc.h>
// CONFIG
#pragma config FOSC = EXTRC     // Oscillator Selection bits (RC oscillator)
#pragma config WDTE = OFF       // Watchdog Timer Enable bit (WDT disabled)
#pragma config PWRTE = ON       // Power-up Timer Enable bit (PWRT enabled)
#pragma config BOREN = ON       // Brown-out Reset Enable bit (BOR enabled)
#pragma config LVP = OFF        // Low-Voltage (Single-Supply) In-Circuit Serial Programming Enable bit (RB3 is digital I/O, HV on MCLR must be used for programming)
#pragma config CPD = OFF        // Data EEPROM Memory Code Protection bit (Data EEPROM code protection off)
#pragma config WRT = OFF        // Flash Program Memory Write Enable bits (Write protection off; all program memory may be written to by EECON control)
#pragma config CP = OFF         // Flash Program Memory Code Protection bit (Code protection off)
int main(void){

    ANSEL=0;
    ANSELH=0;
    PORTB=0;
    TRISB=0X00;
   
      while(1)
      {
          RB0=!RB0;
          __delay_ms(500);
      }
      return 0;
}





no sera problema del MPLAB ???

Desconectado alev2477

  • PIC10
  • *
  • Mensajes: 21
Re: xc8 mplabx aprendiendo de un libro "unable to resolve identifier"
« Respuesta #12 en: 26 de Julio de 2014, 21:06:21 »
Que cosa, yo tome el mismo código tuyo, lo compile y me dio los errores arriba mencionados, le cambie el chip al 16f887 y luego me dio el ultimo error que tu tienes,
le cambie el LVP_OFF y guala me compilo correctamente.
Al preguntar aprendo y al responder aprendo tambien

Desconectado alev2477

  • PIC10
  • *
  • Mensajes: 21
Re: xc8 mplabx aprendiendo de un libro "unable to resolve identifier"
« Respuesta #13 en: 26 de Julio de 2014, 21:10:33 »
Viendo las screenshoot que tomaste y veo que mantienes el error de dejar el __config pegado al define xtal_freq 400000

ahora en el segundo asi mismo lo tengo yo sin problema
Al preguntar aprendo y al responder aprendo tambien

Desconectado yamilongiano

  • PIC10
  • *
  • Mensajes: 37
Re: xc8 mplabx aprendiendo de un libro "unable to resolve identifier"
« Respuesta #14 en: 26 de Julio de 2014, 21:31:43 »
Viendo las screenshoot que tomaste y veo que mantienes el error de dejar el __config pegado al define xtal_freq 400000

ahora en el segundo asi mismo lo tengo yo sin problema

hola muchas gracias por tu tiem po me desconcerta un poco todo esto. al parecer se loghra crear el hex. pero aun se mantienen los errores. y eso me deja algo confuso.



podria decirse que el hex. se puede crear a pesar de tener estos errores de delay... antes usaba el ide simulator y no tenia ningun problema. kajajajaaj

que me dices, alguna idea por que sucede esto o es normal en mplab x y xc8..... :shock:


bueno lo he simulado en el proteus y funciona sin ningun problema... pero no se por que esos errores. que loco. :S
« Última modificación: 26 de Julio de 2014, 21:52:45 por yamilongiano »