Autor Tema: errores de compilacion raro raro  (Leído 11143 veces)

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

Desconectado elnina

  • PIC10
  • *
  • Mensajes: 35
errores de compilacion raro raro
« en: 30 de Abril de 2009, 07:41:10 »
Buenasss,

Estoy haciendo mi proyecto fin de carrera y me esta siendo de gran utilidad el foro.  :mrgreen:
Lo que ocurre que no tengo experiencia en PICS, pero si en microcontroladores. El software nuevo, HW tb nuevo, bueno ya me entendeis...

Al grano, estoy intentando compilar mi programa.c, que claro me da errores, pero lo mas curioso es que me da errores en la libreria del lcd.c, libreria que no he tocado y es la que viene con el programa. Uso la version CCS 4.016.

Os los muestro:

*** Error 91 "C:\Archivos de programa\PICC\drivers\LCD.C" Line 64(6,7): Expression must be a constant or simple variable
*** Error 48 "C:\Archivos de programa\PICC\drivers\LCD.C" Line 64(12,27): Expecting a (
*** Error 43 "C:\Archivos de programa\PICC\drivers\LCD.C" Line 64(28,29): Expecting a declaration
*** Error 43 "C:\Archivos de programa\PICC\drivers\LCD.C" Line 64(29,30): Expecting a declaration
*** Error 43 "C:\Archivos de programa\PICC\drivers\LCD.C" Line 64(31,32): Expecting a declaration
*** Error 43 "C:\Archivos de programa\PICC\drivers\LCD.C" Line 64(33,34): Expecting a declaration
*** Error 43 "C:\Archivos de programa\PICC\drivers\LCD.C" Line 64(34,38): Expecting a declaration
*** Error 43 "C:\Archivos de programa\PICC\drivers\LCD.C" Line 64(39,40): Expecting a declaration
*** Error 43 "C:\Archivos de programa\PICC\drivers\LCD.C" Line 64(41,42): Expecting a declaration
*** Error 43 "C:\Archivos de programa\PICC\drivers\LCD.C" Line 64(50,51): Expecting a declaration
*** Error 43 "C:\Archivos de programa\PICC\drivers\LCD.C" Line 64(51,53): Expecting a declaration
*** Error 43 "C:\Archivos de programa\PICC\drivers\LCD.C" Line 64(54,55): Expecting a declaration
*** Error 43 "C:\Archivos de programa\PICC\drivers\LCD.C" Line 64(55,56): Expecting a declaration
*** Error 43 "C:\Archivos de programa\PICC\drivers\LCD.C" Line 64(56,57): Expecting a declaration
*** Error 43 "C:\Archivos de programa\PICC\drivers\LCD.C" Line 64(58,61): Expecting a declaration
*** Error 43 "C:\Archivos de programa\PICC\drivers\LCD.C" Line 64(61,62): Expecting a declaration
*** Error 43 "C:\Archivos de programa\PICC\drivers\LCD.C" Line 64(63,64): Expecting a declaration
*** Error 43 "C:\Archivos de programa\PICC\drivers\LCD.C" Line 64(64,65): Expecting a declaration
*** Error 43 "C:\Archivos de programa\PICC\drivers\LCD.C" Line 64(66,67): Expecting a declaration
*** Error 43 "C:\Archivos de programa\PICC\drivers\LCD.C" Line 64(67,68): Expecting a declaration
*** Error 43 "C:\Archivos de programa\PICC\drivers\LCD.C" Line 64(68,69): Expecting a declaration
*** Error 12 "C:\Archivos de programa\PICC\drivers\LCD.C" Line 79(29,30): Undefined identifier   set_tris_d
*** Error 12 "C:\Archivos de programa\PICC\drivers\LCD.C" Line 91(30,31): Undefined identifier   set_tris_d
*** Error 12 "C:\Archivos de programa\PICC\drivers\LCD.C" Line 121(28,29): Undefined identifier   set_tris_d
*** Error 12 "C:\Archivos de programa\PICC\drivers\LCD.C" Line 132(24,39): Undefined identifier   LCD_INIT_STRING

Gracias chicos  8)

Desconectado AKENAFAB

  • Colaborador
  • DsPIC30
  • *****
  • Mensajes: 3227
Re: errores de compilacion raro raro
« Respuesta #1 en: 30 de Abril de 2009, 10:02:20 »
Hola

Asi esta dificil ayudarte!

Sube tu programa para ver que puede andar el error.

Tengo entendi que a mucho les ha dado problemas la libreria que trae por default.

Por lo meno seso han comentado algunos.

Un saludo!

Desconectado migsantiago

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8257
    • Sitio de MigSantiago
Re: errores de compilacion raro raro
« Respuesta #2 en: 30 de Abril de 2009, 12:14:19 »
Parece que estás usando un pic que no tiene puerto d.

Intenta con esto:

#define use_portb_lcd TRUE
#include <lcd.c> //libreria manejo de la lcd

Desconectado elnina

  • PIC10
  • *
  • Mensajes: 35
Re: errores de compilacion raro raro
« Respuesta #3 en: 01 de Mayo de 2009, 20:27:44 »
Pues no resulta, mi programa no tiene nada que ver, me dan errores de la libreria del LCD
estas son las lineas de la libreria que me dan errores:

BYTE const LCD_INIT_STRING[4] = {0x20 | (lcd_type << 2), 0xc, 1, 6};   //Linea 64

BYTE lcd_read_byte() {
      BYTE low,high;
      set_tris_lcd(LCD_READ); //Linea 79

      set_tris_lcd(LCD_WRITE); //Linea 91

    for(i=0;i<=3;++i)
       lcd_send_byte(0,LCD_INIT_STRING); //Linea 132

Gracias  :)

Desconectado AKENAFAB

  • Colaborador
  • DsPIC30
  • *****
  • Mensajes: 3227
Re: errores de compilacion raro raro
« Respuesta #4 en: 01 de Mayo de 2009, 21:33:50 »

Bueno , si ya sabes que tu programa no es ta vez te interese otra libreria.

La subo.

Se llama Flex_LCD.


Desconectado elnina

  • PIC10
  • *
  • Mensajes: 35
Re: errores de compilacion raro raro
« Respuesta #5 en: 05 de Mayo de 2009, 14:08:55 »
ok, solucionado

Desconectado AKENAFAB

  • Colaborador
  • DsPIC30
  • *****
  • Mensajes: 3227
Re: errores de compilacion raro raro
« Respuesta #6 en: 05 de Mayo de 2009, 20:02:33 »

Ok que bueno , muy bien , etc...

Podrias compartir como fue que lo solucionaste o si era otro error??



Un saludo!

ay ayy!

Desconectado cocobongo

  • PIC10
  • *
  • Mensajes: 1
Re: errores de compilacion raro raro
« Respuesta #7 en: 31 de Julio de 2009, 23:37:30 »
Hola!!

Este es mi primer comentario, debo decir que en estos foros eh resuelto muchas dudas sobre el mundo de la programacion de PIC's.

Bueno al grano, yo tube un problema parecido y debo decir que migsantiago tiene razon, el problema por lo que aparecen esos errores en el driver <LCD.C> es por que el PIC que se desea utilizar es un PIC que no tiene puerto d, en mi caso yo use el PIC16F876. Se puede observar esto al inicio del driver en el cual se declaran los set_tris_d de READ y WRITE del LCD, al buscarlos en el dispositivo y no encontrarlos marca un error de operación.

No eh probado la FLEX_LCD pero con colocar el #define use_portb_lcd TRUE antes de mandar a llamar el driver de lcd.c funcionará.

Saludos desde el IPN México!!!

Desconectado FAEC

  • PIC10
  • *
  • Mensajes: 8
Re: errores de compilacion raro raro
« Respuesta #8 en: 03 de Junio de 2010, 06:31:43 »
Hola a todos. La verdad soy nuevo en esto de dejar mensajes en un foro. Me gustaría mucho si ustedes me pudieran ayudar a saber el error que me produce mi programa en PICC al compilarlo. Estoy intentando hacer una matriz de leds 3x3x3 con un 16F873a pero al compilarlo me sale este error: ***Error 58"main.c" Line 64(30,33):Expecting a close paren. Aquí esta el código:

Citar
#include <16f873a.h>
#fuses XT,NOWDT,NOPROTECT,NOLVP,PUT,NOBROWNOUT
#use delay(clock=4000000)
#byte PORTA=0x05
#byte PORTB=0x06
#byte PORTC=0x07
#byte TRISA=0x85
#byte TRISB=0x86
#byte TRISC=0x87

#use fast_io(a)
#use fast_io(b)
#use fast_io(c)

#define LED PIN_A4 //led de estado

// Mascaras para seleccion de capa
#define LAYER1 0x01
#define LAYER2 0x02
#define LAYER3 0x04
#define LAYERS 0x07 // todas las capas prendidas
#define LAYERS_R 0xf8 // todas las capas apagadas
#define LAYER_PORT PORTA //puerto de control de capa

// puertos de malla
#define GRID1 PORTB
#define GRID2 PORTC

void ioinit (void); // inicializacion de IO
void bootmsg (void); // mensaje de reset

volatile unsigned char cube[3][3];   // buffer del cubo
volatile unsigned char tmpcube[3][3];   // buffer auxiliar
volatile unsigned char current_layer;   // capa q se esta mostrando actualmente

#include "draw.c"   // primitivas de dibujo
#include "effect.c"   // animaciones

void main()
{
   int i,j,k;
   ioinit();
   bootmsg();

   current_layer=0x00;   // comenzamos a dibujando la capa 0
   enable_interrupts(GLOBAL);   //comenzamos a dibujar el buffer en el cubo
   
   fill(0x00);
   while(TRUE)
   {
      effect_rain(10,300,500,200);   <------ Aca es donde me aparece el error :S
      random_2();
      random_filler (2, 27, 50);
      loadbar(100);
      flyplanes(10, 100);
      for(i=0;i<3;i++);
         for(j=0;j<3;j++);
             for(k=0;k<3;k++);
            {
               negpixel(i,j,k);
               delay_ms(30);
            }
   }
}


// Rutina de dibujo del cubo
#INT_TIMER0
void timer0_isr()
{

   // apagamos todas las capas para q no se vea la actualizacion
   LAYER_PORT &= LAYERS_R;

   // dibujamos la imagen correspondiente a la capa actual
   GRID1 = (0x07 & cube[current_layer][0]) | (0x38 & (cube[current_layer][1] << 3));
   GRID2 = (0x07 & cube[current_layer][2]);
   
   // activamos la capa correspondiente
   LAYER_PORT |= (0x01 << current_layer);

   // si llegamos a la ultima capa, volvemos a empezar
   if (current_layer++ == 2)
      current_layer = 0;
}

void ioinit(void)

   //puertos A, B, y C como salida
   TRISA = 0x00;   // seleccion de capa y luces de control
   TRISB = 0x00;   // malla1
   TRISC = 0x00;   // malla2
   //todos los puertos apagados
   PORTA = 0x00;
   PORTB = 0x00;
   PORTC = 0x00;

   // inicializamos el timer
   setup_counters(rtcc_internal , rtcc_div_8);
   enable_interrupts(INT_TIMER0);
   disable_interrupts(GLOBAL);
}

// el led de estado parpadea un par de veces para indicar q se inicio el programa
void bootmsg(void)
{
   int i=3;
   while(i--)
   {
      output_bit(LED, 1);
      delay_ms(100);
      output_bit(LED, 0);
      delay_ms(100);
   }
}

Por favor, agradeceria mucho si me colaboran con esto lo antes posible!! La verdad he intentado de todo y no se me quita ese error. Muchas gracias de antemano.

Desconectado AngelGris

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 2480
Re: errores de compilacion raro raro
« Respuesta #9 en: 03 de Junio de 2010, 09:31:02 »
Hola Faec, creo que deberías haber creado un nuevo tema con tu consulta como para mantener todo más ordenado. Ya me dirán si estoy equivocado o no.

Pasando a tu consulta, parecería ser que el compilador está esperando ")" y se encuentra con otra cosa. ¿Por casualidad no le estarás pasando más parámetros a la función de los que realmente necesita?
De vez en cuando la vida
nos besa en la boca
y a colores se despliega
como un atlas

Desconectado FAEC

  • PIC10
  • *
  • Mensajes: 8
Re: errores de compilacion raro raro
« Respuesta #10 en: 03 de Junio de 2010, 13:33:55 »
Hola AngelGris. Yo se que debí haber creado un nuevo tema, pero la verdad es que cuando lo fuí a crear me decía que no tenía la experiencia o algo asi, para crear un tema XD .. bueno con respecto al código ... parece que si le meti mas parámetros de lo que pensé, porque al compilarlo, al quitarle  un valor en esa línea me lo hace normal y es que necesito de 4 valores para las caras del cubo, para que se vea el efecto ... sin embargo me gustaría si alguien tiene el PICC lo compilase tambien para ver si depronto es mi compilador el que falla. Gracias por la ayuda!!

Desconectado AngelGris

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 2480
Re: errores de compilacion raro raro
« Respuesta #11 en: 03 de Junio de 2010, 15:21:30 »
El tema me parece que pasa por ver como está definida la función effect_rain.

El error parecería indicar que la función podría estar definida, por ejemplo,  void effec_rain(int, int, int); Es decir, con 3 valores como parámetros. Por tal motivo, cuando vos le querés pasar 4 valores te indica que estaba esperando un ")".
De vez en cuando la vida
nos besa en la boca
y a colores se despliega
como un atlas

Desconectado FAEC

  • PIC10
  • *
  • Mensajes: 8
Re: errores de compilacion raro raro
« Respuesta #12 en: 07 de Junio de 2010, 15:35:01 »
Bueno AngelGris, ya la compilación me dá, en definitiva si estaba usando un parametro de mas   c(:    monte el circuito pero al energizarlo no me funciona. Al principio crei que era el PIC el que se habia dañado, asi que lo cambie por un 16F877 y tampoco, luego hice algunas pruebas sencillas como prender y apagar leds para ver si era error al quemar el PIC pero los dos PICs estan funcionando bn .. XD .. la verdad no se donde esta el error, sin embargo aca les adjunto la simulacion en proteus con su respectivo codigo y librerias para ver si me pueden ayudar con este problemilla .. gracias!!!

Desconectado AngelGris

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 2480
Re: errores de compilacion raro raro
« Respuesta #13 en: 07 de Junio de 2010, 21:24:17 »
Todavía no miré el código pero puedo ver en el proteus que te faltan resistencias limitadoras para los leds. Yo haría más grande las resistencias de base de los transistores las podés llevar tranquilamente a 4K7 (ya que la base de los transistores casi no consumen corriente) y tendrías que poner una resistencia entre cada puerto de salida y el ánodo de cada led (ahí sí iria de 220 ohm) porque sino ponés resistencia limitadora corrés el riesgo de quemar el PIC. Los puertos manejan aproximadamente 25mA (consulta el datasheet para una mejor información)
De vez en cuando la vida
nos besa en la boca
y a colores se despliega
como un atlas

Desconectado oxanderv

  • PIC10
  • *
  • Mensajes: 2
Re: errores de compilacion raro raro
« Respuesta #14 en: 21 de Agosto de 2010, 12:14:57 »
Hola a todos primero que nada quiero felicitarlos por estos foros que son de gran ayuda para personas como yo que estamos iniciando en esto de la programacion.
Acudo a ustedes pues me encuentro a aprendiendo a programar y en estos momentos paso al manejo de LCD, desarroye el programa pero al momento de compilarlo genera el error 43 expecting a declaration; descargue el fichero FLEX_LCD pero me genero mas errores asi que decidi seguir trabajando con el fichero LCD.C y hacer lo que publico cocobongo puesto a que es muy similar el problema que tengo con el caso que el plantea.
 
La cantidad de errores disminuye considerablemente pero aun me sigue generando (expecting a declaration); anexo el programa para que le den un vistazo.
De antemano agradezco la atencion prestada, cualquier comentario sera bien recibido pues es la primera vez que hago una publicacion y no se si este bien hecha. 

"Bueno al grano, yo tube un problema parecido y debo decir que migsantiago tiene razon, el problema por lo que aparecen esos errores en el driver <LCD.C> es por que el PIC que se desea utilizar es un PIC que no tiene puerto d, en mi caso yo use el PIC16F876. Se puede observar esto al inicio del driver en el cual se declaran los set_tris_d de READ y WRITE del LCD, al buscarlos en el dispositivo y no encontrarlos marca un error de operación.

No eh probado la FLEX_LCD pero con colocar el #define use_portb_lcd TRUE antes de mandar a llamar el driver de lcd.c funcionará."

#include <16f876.h>
#fuses XT, NOWDT
#use delay ( clock = 4000000)
#define use_portb_lcd TRUE
#include <lcd.c>
#use standard_io(B)
#use standard_io(A)

   enum funciones {med,cal,ini};      //Asigna un valor a cada elemento
                                      //med=0, cal=1, e ini=2

void medir (void){                     //funcion de medir
                                       //algoritmo correspondiente
output_toggle(pin_B0);
}
void calibrar(void){                   //funcion de calibrar
                                       //algoritmo correspondiente
output_toggle(pin_B1);
}
void inicializar (void){              //funcion de inicializar
                                      //algoritmo correspondiente
output_toggle(pin_B2);
}
void run_func(int numfunc){            //asignacion de la funcion a realizar
                                       //viene dada por la variable "item"
        switch(numfunc) {
           case med:
             medir();
             break;
           case cal:
             calibrar();
             break;
           case ini:
             inicializar();
             break;
        }
}

void main() {
     char item;                     //variables de funciones

     char n_menus = 3;               //numero de funciones
                                    // bit_set(TRISA,0);
     lcd_init();

 while (1)  {
    if (input(PIN_A0) == 1 ) {     //detecta el boton de seleccion
       item++;                     //si pulsa aumenta la variable
       delay_ms(300);               //para evitar rebotes
       lcd_putc('\f');      }

    if (item > (n_menus=3))  {      //si la variable supera el numero de
        item=0 ;}                   //funciones la inicializa

   switch (item)  {

         case 0:
            lcd_gotoxy(1,1);
            printf(lcd_putc, "MEDRIR");
            lcd_gotoxy(1,1);
            break;

         case 1:
            printf(lcd_putc, "CALIBRAR");
            lcd_gotoxy(1,1);
            break;

         case 2:
            printf(lcd_putc, "INICIALIZAR");
            lcd_gotoxy(1,1);
            break;
   }
 if (input(PIN_A1) == 1)            //Si se pulsa el boton seleccion....
     {delay_ms(200);
     run_func(item);}               //Se llama la funcion correspondiente
 }
}

[/quote]