Autor Tema: variable de usuario en XC8  (Leído 8497 veces)

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

Desconectado mak_paint

  • PIC12
  • **
  • Mensajes: 62
Re:variable de usuario en XC8
« Respuesta #15 en: 25 de Noviembre de 2018, 19:33:33 »
ok... veamos FLG_VF y FLG_TC son las banderas de las interrupciones externas INT0 y INT1 como se ve aca:
///////////////////////////////////
#define FLG_VF  INTCONbits.INT0IF   
#define FLG_TC  INTCON3bits.INT1IF
///////////////////////////////////
lo que voy a hacer es poner las directo en el codigo asi:
//////////////////////////////////
void interrupt boton(){
  if (INTCONbits.INT0IF==1){
    V_Hz = ~V_Hz;
  }
  else if (INTCON3bits.INT1IF==1){
   PORTAbits.RA6 = PORTAbits.RA6 + 1;
  }
  INTCONbits.INT0IF=0;
  INTCON3bits.INT1IF=0;
//
}
//////////////////////////////

SELC_TC es un pin de PORTA.... y, V_Hz es una variable bandera de tipo bit que e declarado antes al principio del programa:
////////////////////////////

#define SELC_TC PORTAbits.RA6
/////////////////////////////
__bit       V_Hz;
////////////////////////////////

salta el mismo error supongo que tienes razón no debe ser la función  interrupcion, pero si la comento y nada mas a ella entonces si compila sin error
 :?


Desconectado mak_paint

  • PIC12
  • **
  • Mensajes: 62
Re:variable de usuario en XC8
« Respuesta #16 en: 25 de Noviembre de 2018, 19:37:29 »
debo colocar la funcion de interrupcion en algún sitio especifico del código o no importa???

Desconectado mak_paint

  • PIC12
  • **
  • Mensajes: 62
Re:variable de usuario en XC8
« Respuesta #17 en: 25 de Noviembre de 2018, 19:45:38 »
noto esto el included <xc.h> aparece como error....
/////////////////

Desconectado mak_paint

  • PIC12
  • **
  • Mensajes: 62
Re:variable de usuario en XC8
« Respuesta #18 en: 25 de Noviembre de 2018, 20:11:23 »
disculpa aca se ve mejor

Desconectado KILLERJC

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8242
Re:variable de usuario en XC8
« Respuesta #19 en: 25 de Noviembre de 2018, 20:41:00 »
El xc.h te deberia funcionar bien... ya que ese archivo luego te agrega el PIC que corresponde y te habilita el uso de las estructuras INTCONbits así como también todos los registros.

Lo que no reconozco es el __bit, el manual de XC8 no lo define. Y seguramente sea ese bit_config.h que tenes.

Desconectado mak_paint

  • PIC12
  • **
  • Mensajes: 62
Re:variable de usuario en XC8
« Respuesta #20 en: 26 de Noviembre de 2018, 00:52:36 »
El xc.h te deberia funcionar bien... ya que ese archivo luego te agrega el PIC que corresponde y te habilita el uso de las estructuras INTCONbits así como también todos los registros.

Lo que no reconozco es el __bit, el manual de XC8 no lo define. Y seguramente sea ese bit_config.h que tenes.

no le hagas caso a bit_config.h es una archivo de cabecera que hice para tener los bit de configuración ósea los fuses, en un archivo aparte para no tenerlos amontonados el el código principal... sin ese arreglo que hice ya igual me marca el error en el xc.h aunque no interfiere en nada en el código como dices... la estructura __bit la uso para crear variables de un solo bit uso "__bit" pues la estructura"bit" el compilador no me la reconoce y en un foro vi que se creaba asi: "__bit" y a funcionado, el código si quito la funcion de interrupcion funciona al 100 y uso varios de estas variables __bity todo bien,  ademas por prueba quite todo lo que tiene que ver con __bit  V_Hz de la función de interrupción y por ultimo deje la funcion de interrupcion vacía y sigue sin compilar :

///////////////////////////////////
void interrupt boton(){

}
////////////////////////////////////

proyecto.c:116:6: error: variable has incomplete type 'void'
void interrupt boton(){
     ^
proyecto.c:116:15: error: expected ';' after top level declarator
void interrupt boton(){
              ^
              ;
2 errors generated.
(908) exit status = 1
« Última modificación: 26 de Noviembre de 2018, 01:03:25 por mak_paint »

Desconectado mak_paint

  • PIC12
  • **
  • Mensajes: 62
Re:variable de usuario en XC8
« Respuesta #21 en: 26 de Noviembre de 2018, 00:55:22 »
probé de esta otra forma  que vi en el documento de ayuda del compilador xc8 de como se debe escribir la funcion de interrupcion:
////////////////////
void interrupt boton(void){

}
///////////////////////////
y este fue el error que aroo el compilador
///////////////////////
PuntaLoguica.c:116:6: error: variable has incomplete type 'void'
void interrupt boton(void){
     ^
PuntaLoguica.c:116:15: error: expected ';' after top level declarator
void interrupt boton(void){
              ^
              ;
2 errors generated.
(908) exit status = 1
« Última modificación: 26 de Noviembre de 2018, 01:00:15 por mak_paint »

Desconectado mak_paint

  • PIC12
  • **
  • Mensajes: 62
Re:variable de usuario en XC8
« Respuesta #22 en: 26 de Noviembre de 2018, 01:04:54 »
voy a hacer una prueba voy a compilar un código de prueba en un nuevo proyecto con tan solo la funcion de interrupcion a ver que pasa...

Desconectado mak_paint

  • PIC12
  • **
  • Mensajes: 62
Re:variable de usuario en XC8
« Respuesta #23 en: 26 de Noviembre de 2018, 01:15:40 »
aca la prueba:
//////////////////////


// PIC18F1320 Configuration Bit Settings

// 'C' source line config statements

// CONFIG1H
#pragma config OSC = INTIO2     // Oscillator Selection bits (Internal RC oscillator, port function on RA6 and port function on RA7)
#pragma config FSCM = OFF       // Fail-Safe Clock Monitor Enable bit (Fail-Safe Clock Monitor disabled)
#pragma config IESO = OFF       // Internal External Switchover bit (Internal External Switchover mode disabled)

// CONFIG2L
#pragma config PWRT = ON        // Power-up Timer Enable bit (PWRT enabled)
#pragma config BOR = ON         // Brown-out Reset Enable bit (Brown-out Reset enabled)
#pragma config BORV = 42        // Brown-out Reset Voltage bits (VBOR set to 4.2V)

// CONFIG2H
#pragma config WDT = OFF        // Watchdog Timer Enable bit (WDT disabled (control is placed on the SWDTEN bit))
#pragma config WDTPS = 32768    // Watchdog Timer Postscale Select bits (1:32768)

// CONFIG3H
#pragma config MCLRE = OFF      // MCLR Pin Enable bit (RA5 input pin enabled, MCLR disabled)

// CONFIG4L
#pragma config STVR = ON        // Stack Full/Underflow Reset Enable bit (Stack full/underflow will cause Reset)
#pragma config LVP = OFF        // Low-Voltage ICSP Enable bit (Low-Voltage ICSP disabled)

// CONFIG5L
#pragma config CP0 = OFF        // Code Protection bit (Block 0 (00200-000FFFh) not code-protected)
#pragma config CP1 = OFF        // Code Protection bit (Block 1 (001000-001FFFh) not code-protected)

// CONFIG5H
#pragma config CPB = OFF        // Boot Block Code Protection bit (Boot Block (000000-0001FFh) not code-protected)
#pragma config CPD = OFF        // Data EEPROM Code Protection bit (Data EEPROM not code-protected)

// CONFIG6L
#pragma config WRT0 = OFF       // Write Protection bit (Block 0 (00200-000FFFh) not write-protected)
#pragma config WRT1 = OFF       // Write Protection bit (Block 1 (001000-001FFFh) not write-protected)

// CONFIG6H
#pragma config WRTC = OFF       // Configuration Register Write Protection bit (Configuration registers (300000-3000FFh) not write-protected)
#pragma config WRTB = OFF       // Boot Block Write Protection bit (Boot Block (000000-0001FFh) not write-protected)
#pragma config WRTD = OFF       // Data EEPROM Write Protection bit (Data EEPROM not write-protected)

// CONFIG7L
#pragma config EBTR0 = OFF      // Table Read Protection bit (Block 0 (00200-000FFFh) not protected from table reads executed in other blocks)
#pragma config EBTR1 = OFF      // Table Read Protection bit (Block 1 (001000-001FFFh) not protected from table reads executed in other blocks)

// CONFIG7H
#pragma config EBTRB = OFF      // Boot Block Table Read Protection bit (Boot Block (000000-0001FFh) not protected from table reads executed in other blocks)

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

#include <xc.h>

void interrupt boton (){
   
}


void main(void) {
    return;
}
///////////////
 y da el error:

//////////////////////
make -f nbproject/Makefile-default.mk SUBPROJECTS= .build-conf
make[1]: Entering directory 'C:/Users/mak_p/Documents/prueba.X'
make  -f nbproject/Makefile-default.mk dist/default/production/prueba.X.production.hex
make[2]: Entering directory 'C:/Users/mak_p/Documents/prueba.X'
"C:\Program Files (x86)\Microchip\xc8\v2.00\bin\xc8-cc.exe"  -mcpu=18F1320 -c  -fno-short-double -fno-short-float -memi=wordwrite -O0 -fasmfile -maddrqual=ignore -xassembler-with-cpp -Wa,-a -DXPRJ_default=default  -msummary=-psect,-class,+mem,-hex,-file  -ginhx032 -Wl,--data-init -mno-keep-startup -mno-download -mdefault-config-bits   -std=c99 -gdwarf-3 -mstack=compiled:auto:auto:auto     -o build/default/production/newmain.p1 newmain.c
make[2]: *** [build/default/production/newmain.p1] Error 1
make[1]: *** [.build-conf] Error 2
make: *** [.build-impl] Error 2
newmain.c:56:6: error: variable has incomplete type 'void'
void interrupt boton (){
     ^
newmain.c:56:15: error: expected ';' after top level declarator
void interrupt boton (){
              ^
              ;
2 errors generated.
(908) exit status = 1
nbproject/Makefile-default.mk:106: recipe for target 'build/default/production/newmain.p1' failed
make[2]: Leaving directory 'C:/Users/mak_p/Documents/prueba.X'
nbproject/Makefile-default.mk:90: recipe for target '.build-conf' failed
make[1]: Leaving directory 'C:/Users/mak_p/Documents/prueba.X'
nbproject/Makefile-impl.mk:39: recipe for target '.build-impl' failed

BUILD FAILED (exit value 2, total time: 868ms)
/////////////////////////////
si quito la funcion interrupción compila bien....

Desconectado mak_paint

  • PIC12
  • **
  • Mensajes: 62
Re:variable de usuario en XC8
« Respuesta #24 en: 26 de Noviembre de 2018, 01:26:00 »
asi se ve:

Desconectado KILLERJC

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8242
Re:variable de usuario en XC8
« Respuesta #25 en: 26 de Noviembre de 2018, 07:24:44 »
Proba crear un proyecto nuevo.... no deberias tener error ahi... es la unica que se me ocurre..

Por cierto en el main, no necesitas un return. solo necesitas un while(1), el loop infinito siempre debe estar.

Desconectado mak_paint

  • PIC12
  • **
  • Mensajes: 62
Re:variable de usuario en XC8
« Respuesta #26 en: 26 de Noviembre de 2018, 09:44:04 »
lo ultimo fue un proyecto nuevo y da el mismo error... voy a desinstalar el xc 8 y instalare uno versión mas antigua


 

anything