Autor Tema: Error al compilar en CCS  (Leído 3960 veces)

0 Usuarios y 2 Visitantes están viendo este tema.

Desconectado peladita

  • PIC10
  • *
  • Mensajes: 21
Error al compilar en CCS
« en: 27 de Enero de 2009, 22:18:17 »
Amigos, como estan? queria consultares Uds que realmente saben ya que estoy haciendo un programa en CCS. Al compilarlo me da el error que les adjunto. Quiza sea algo tonto (espero), porque la verdad es que funciona el programa pero cuando le agrego algunas lineas mas de programa y comienza a dar el error. Cuando veo los avisos esta el 57% de la Rom y el 27% de la RAM. Estoy utilizando el PIC16F877A.

Muchas Gracias muchachos!!

Saludos



Desconectado migsantiago

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8257
    • Sitio de MigSantiago
Re: Error al compilar en CCS
« Respuesta #1 en: 27 de Enero de 2009, 22:43:11 »
Hola

Desde la primer advertencia está mal tu programa. Estás haciendo una comparación de una variable sin signo contra un valor con signo negativo en la línea 233 de tu código fuente. Te dice que una variable unsigned nunca tendrá un valor menor a cero.

Desconectado Gonzalo_BlackHawk

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 519
Re: Error al compilar en CCS
« Respuesta #2 en: 27 de Enero de 2009, 22:51:14 »
Sin el código fuente peladita poco podemos hacer, si puedes subirlo mejor.
"Siempre piensa si el jugo vale la exprimida..."

"La muerte esta tan segura de vencer que nos da toda una vida de ventaja."

Desconectado peladita

  • PIC10
  • *
  • Mensajes: 21
Re: Error al compilar en CCS
« Respuesta #3 en: 28 de Enero de 2009, 10:57:26 »
Muchachos muchas gracias por responder. Apenas pueda subo el código. No lo tengo en este momento a mano.


Saludos :-/

Desconectado jim_17

  • Colaborador
  • PIC18
  • *****
  • Mensajes: 309
    • Blog personal
Re: Error al compilar en CCS
« Respuesta #4 en: 28 de Enero de 2009, 11:24:14 »
Estaría bien que subieras el código directamente en el mensaje que escribas, se hace de la siguiente manera:

Se selecciona el código completo y se copia, una vez copiado, mientras estes realizando el mensaje  (en la ventana dónde editas el mensaje), le das a la pestaña donde pone GeSHi, y pulsas C o C++, e introduces el código del CSS
Código: C
  1. Codigo ...


Despues de hacer esto, el código es mas leible para los foreros (así no tenemos que estar descargandonos cosas). Gracias por leer esto y cuando subas el código esperamos poder ayudarte ;).

Salu2.
Share the world !

Blog's

http://www.area0x33.com

Desconectado peladita

  • PIC10
  • *
  • Mensajes: 21
Re: Error al compilar en CCS
« Respuesta #5 en: 30 de Enero de 2009, 09:40:05 »
Buenas Amigos!! como estan disculpen que demore tanto en responder pero la verdad es que estaba con mucho trabajo y recien me doy un tiempo para subir el codigo. Les cuento este es un proceso de termostato. El mismo toma mediciones de tres sensores distintos para hacer una correccion de la misma. Tambien tiene paradas de proceso por algunas causas como discordancia en los sensores, sobretemperatura y falla externa (Hardware). Hasta ahora venia andando bien, pero cuando le quise agragar una linea de codigo en la funcion ajuste() comenzo a dar el error. Se los indique con un comentario en el codigo. Lo raro es que cualquier cosa que ponga en esa linea ya da el error. (Linea 276)
Pense que puede ser algo de las paginas de memoria pero no se en realidad.

Bueno ahi les va el codigo. Y como siempre Muchisimas Gracias!!  :mrgreen: :mrgreen: :mrgreen:

Código: C++
  1. #include <16F877A.h>         //pic a utilizar  
  2.  
  3.  
  4. #device ADC=8;      
  5. #fuses XT,WDT,NOPROTECT,PUT,NOLVP //ordenes para el programador
  6. #use delay (clock=4000000)       //Fosc=4Mhz
  7. #use fast_io(b)
  8.  
  9. #include <lcd.c>
  10. #include <stdio.h>
  11. #include <string.h>
  12. char setpoint,setviejo;
  13. char BM=2,s1=0,s2=0,s3=0,pant=0;
  14. float valor1=0;
  15. float t1=0,t2=0,t3=0,tp=0;
  16.  
  17. #INT_EXT
  18. void interrupcion(char causa)
  19. {
  20.  restart_wdt();
  21.  output_high (PIN_C2);                  //ALARMA ACUSTICA ON
  22.  output_low (PIN_C3);                  
  23.  output_low (PIN_C4);                  
  24.  lcd_putc('\f');
  25.  lcd_gotoxy(2,1);          
  26.  lcd_putc("FALLA GENERAL");
  27.  if(causa==0)
  28.  {
  29.         lcd_gotoxy(1,2);           
  30.     lcd_putc("DISPARO  EXTERNO");
  31.  }
  32.  if(causa==1)
  33.  {
  34.         lcd_gotoxy(1,2);           
  35.     lcd_putc("SENSORES DISCO");
  36.        
  37.  }       
  38.  
  39.  if(causa==2)
  40.  {
  41.         lcd_gotoxy(3,2);           
  42.     lcd_putc("TEMP >> MAX");
  43.  }
  44.  
  45.         while (input(PIN_B4)==0)
  46.      {
  47.           restart_wdt();
  48.      }
  49.   output_low (PIN_C2);                  //ALARMA ACUSTICA OFF
  50.   lcd_putc('\f');
  51.  
  52.         while (input(PIN_B3)==0)
  53.      {
  54.           restart_wdt();
  55.           lcd_gotoxy(1,1);         
  56.           lcd_putc("RECONOCER?");
  57.           while (input(PIN_C1)==1)
  58.           {
  59.           restart_wdt();
  60.           lcd_gotoxy(1,2);         
  61.           lcd_putc("BLOQUEADA!");      
  62.           }
  63.           lcd_gotoxy(3,2);         
  64.           lcd_putc("          ");
  65.          }
  66.         delay_ms(500);  
  67.         lcd_putc('\f');
  68.         causa=0;
  69.    enable_interrupts(INT_EXT);
  70.    enable_interrupts(GLOBAL);
  71. }
  72.  
  73.  
  74. //------------------------------------------------------------------------------
  75.  
  76. //------------------------------------------------------------------------------
  77. void leeradc()
  78. {
  79.           int d12=0,d13=0,d23=0;
  80.           int dif1=1;
  81.           s1=0;
  82.           s2=0;
  83.           s3=0;
  84.           set_adc_channel(0);
  85.           delay_us(10);
  86.           restart_wdt();
  87.           valor1=read_adc();
  88.           delay_us(100);
  89.           t1=(valor1*391)/1000;
  90.        
  91.           set_adc_channel(1);
  92.           delay_us(10);
  93.           restart_wdt();
  94.           valor1=read_adc();
  95.           delay_us(100);
  96.           t2=(valor1*391)/1000;
  97.        
  98.           set_adc_channel(2);
  99.           delay_us(10);
  100.           restart_wdt();
  101.           valor1=read_adc();
  102.           delay_us(100);
  103.           t3=(valor1*391)/1000;
  104.          
  105.                 d12 = Abs(t1-t2);
  106.         d13 = Abs(t1-t3);
  107.                 d23 = Abs(t2-t3);
  108.  
  109.          tp=(t1+t2+t3)/3;                       //Promedio de Temperatura
  110.  
  111.          if (d12 > dif1)
  112.          {
  113.         if (d13 > dif1)
  114.         {
  115.         s1=1;
  116.                 tp = (t2 + t3)/2;       //Falla de Sensor 1 -> Promedio de S2 y S3
  117.         }
  118.         if (d23 > dif1)
  119.         {
  120.         s2=1;
  121.                 tp = (t1 + t3)/2;       //Falla de Sensor 2 -> Promedio de S1 y S3
  122.         }
  123.      }
  124.    
  125.         if (d23 > dif1)
  126.      {
  127.          if (d13 > dif1)
  128.          {
  129.          s3=1;
  130.                  tp = (t1 + t2)/2;       //Falla de Sensor 3 -> Promedio de S1 y S2
  131.          }
  132.      }
  133.  
  134.    
  135. }
  136.  
  137. //------------------------------------------------------------------------------
  138.  
  139. void proceso()
  140. {
  141.  
  142.           leeradc();
  143.           lcd_gotoxy(1,1);         
  144.           lcd_putc("TP:");
  145.           printf(lcd_putc,"%2.1f",tp);
  146.  
  147.     if (pant==0)
  148.      {
  149.           lcd_gotoxy(9,1);         
  150.           lcd_putc("T1:");
  151.           printf(lcd_putc,"%2.1f",t1);
  152.       lcd_gotoxy(1,2);     
  153.           lcd_putc("T2:");
  154.           printf(lcd_putc,"%2.1f",t2);
  155.       lcd_gotoxy(9,2);     
  156.           lcd_putc("T3:");
  157.           printf(lcd_putc,"%2.1f",t3);
  158.  
  159.           if(s1!=0)
  160.                 {
  161.                   lcd_gotoxy(16,1);        
  162.                   lcd_putc("F");
  163.                 }
  164.           else
  165.                 {
  166.                   lcd_gotoxy(16,1);        
  167.                   lcd_putc(" ");
  168.                 }
  169.  
  170.  
  171.       if(s2!=0)
  172.                 {
  173.                   lcd_gotoxy(8,2);         
  174.                   lcd_putc("F");
  175.                 }
  176.           else
  177.                 {
  178.                   lcd_gotoxy(8,2);         
  179.                   lcd_putc(" ");
  180.                 }
  181.  
  182.       if(s3!=0)
  183.                 {
  184.                   lcd_gotoxy(16,2);        
  185.                   lcd_putc("F");
  186.                 }
  187.           else
  188.                 {
  189.                   lcd_gotoxy(16,2);        
  190.                   lcd_putc(" ");
  191.                 }
  192.           }
  193.          if (pant==1)
  194.       {
  195.           lcd_gotoxy(9,1);         
  196.           lcd_putc("        ");
  197.           lcd_gotoxy(1,2);         
  198.           lcd_putc("SP:");
  199.           printf(lcd_putc,"%2u C",setpoint);
  200.       lcd_gotoxy(9,2);     
  201.           lcd_putc("   ");
  202.           lcd_gotoxy(12,2);        
  203.           lcd_putc("BM:");
  204.           printf(lcd_putc,"%1u",BM);
  205.       lcd_gotoxy(16,2);    
  206.           lcd_putc(" ");
  207.      }
  208.  
  209.     if (s1+s2+s3>2) interrupcion(1);
  210.         if (input(PIN_C1)==1) interrupcion(2); 
  211.     if (tp>setpoint+BM) output_low (PIN_C3);
  212.     if (tp<setpoint-BM) output_high (PIN_C3);
  213.  
  214. }
  215. //------------------------------------------------------------------------------
  216.  
  217. void ajuste(int a)
  218. {
  219.         setviejo=setpoint;
  220.          while (input(PIN_B3)==0)
  221.       {
  222.                 restart_wdt();
  223.                 lcd_gotoxy(1,1);
  224.             lcd_putc("Nuevo SetPoint:");
  225.             if (input(PIN_B1))setpoint++;
  226.                 delay_ms(50);
  227.                 if (input(PIN_B2))setpoint--;
  228.                 delay_ms(50);
  229.                 if(setpoint<0) setpoint=0;
  230.             lcd_gotoxy(1,2);       
  231.             lcd_putc("SP:            ");
  232.             lcd_gotoxy(4,2);       
  233.             printf(lcd_putc,"%2u C",setpoint);
  234.         if (a==1)
  235.          {
  236.          leeradc();
  237.              if (tp>setviejo+BM) output_low (PIN_C3);
  238.          if (tp<setviejo-BM) output_high (PIN_C3);
  239.                  }
  240.                 }
  241.    
  242.         delay_ms(500);
  243.         while (input(PIN_B3)==0)
  244.       {
  245.                 restart_wdt();
  246.                 lcd_gotoxy(1,1);
  247.             lcd_putc("NUEVA BM:       ");
  248.             if (input(PIN_B1))BM++;
  249.             delay_ms(50);
  250.                 if (input(PIN_B2))BM--;
  251.             delay_ms(50);
  252.                 if(BM<1) BM=1;
  253.                 if(BM>5) BM=5;
  254.             lcd_gotoxy(12,2);      
  255.             lcd_putc("BM:");
  256.             printf(lcd_putc,"%1u",BM);
  257.    
  258.                 if (a==1)
  259.          {
  260.           leeradc();
  261.               if (tp>setviejo+BM) output_low (PIN_C3);
  262.           if (tp<setviejo-BM) output_high (PIN_C3);
  263.                   if (s1+s2+s3>2);                                                                      //CUANDO PONGO ESTA LINEA COMIENZA A SALIR EL ERROR DE COMPILACION.
  264.              }                                                                                                  //SI NO FUNCIONA CORRECTAMENTE
  265.            }
  266.  
  267.          lcd_gotoxy(1,1);
  268.          lcd_putc("                ");
  269.          
  270. }
  271.  
  272.  
  273. //------------------------------------------------------------------------------
  274.  
  275. void pilotos()
  276. {
  277.         lcd_putc('\f');
  278.         delay_ms(1000);  
  279.         while (input(PIN_B3)==0)
  280.      {
  281.           restart_wdt();
  282.           lcd_gotoxy(1,1);         
  283.           lcd_putc("Pilotos Ok?");
  284.          }
  285. }
  286.  
  287. //------------------------------------------------------------------------------
  288.  
  289. void bienvenido()
  290. {
  291.         lcd_putc('\f');
  292.         delay_ms(500);  
  293.         while (input(PIN_B3)==0)
  294.      {
  295.           restart_wdt();
  296.           lcd_gotoxy(3,1);         
  297.           lcd_putc("Bienvenido!");
  298.           lcd_gotoxy(2,2);         
  299.           lcd_putc("Nixie-Proc '09");
  300.          }
  301.         delay_ms(500);  
  302.         lcd_putc('\f');
  303. }
  304.  
  305.  
  306.  
  307. setup_adc (ADC_CLOCK_INTERNAL);
  308. setup_adc_ports (ALL_ANALOG);
  309.  
  310.  
  311. ///PROGRAMA
  312.  
  313. void main(void)
  314. {
  315.  
  316.    set_tris_b(0b11111111);   //portb como salida(RB5,las demas desactivadas)
  317.    set_tris_c(0b00000010);   //portc como salida menos pin1
  318.    output_low (PIN_C3);    
  319.    lcd_init();
  320.    enable_interrupts (INT_EXT);
  321.    ext_int_edge(L_TO_H);
  322.    enable_interrupts(GLOBAL);   //todas las interrupciones activadas
  323.    output_low (PIN_C3);        
  324.    output_low (PIN_C2);         //ALARMA ACUSTICA OFF
  325.    setup_wdt(WDT_2304MS);
  326.    setup_adc_ports(ANALOG_RA3_REF);      
  327.    bienvenido();  
  328.    setpoint=25;
  329.    ajuste(0);
  330.    pilotos();
  331.  
  332. do{
  333.  
  334.     while (input(PIN_B4)==0)
  335.     {
  336.          restart_wdt();
  337.          proceso();
  338.      
  339.         if (input(PIN_B5)==1)
  340.          {
  341.          restart_wdt();
  342.      pant++;
  343.      delay_ms(200);
  344.      if (pant>1) pant=0;
  345.          }    
  346.     }
  347.         ajuste(1);                                                              //Funcion para ajustar el setpoint.
  348.        
  349.  }while(true);         //bucle infinito
  350. }

Desconectado elmasvital

  • Administrador
  • PIC24H
  • *******
  • Mensajes: 1713
Re: Error al compilar en CCS
« Respuesta #6 en: 30 de Enero de 2009, 10:19:12 »
y que error te da???

Desconectado Gonzalo_BlackHawk

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 519
Re: Error al compilar en CCS
« Respuesta #7 en: 30 de Enero de 2009, 16:54:35 »
Bien peladita, veamos:

Elimina la siguiente linea de código:

Código: [Seleccionar]
if(setpoint<0) setpoint=0;
setpoint es una variable char y no puede tomar valores negativos, asi que esta expresión nunca se cumple y puede quitarse.

El error que no te deja compilar es el siguiente. Las dos siguientes lineas no estan dentro de ningun procedimiento. deberías colocarlas en el main(), al comienzo del mismo es una buena opción.

Código: [Seleccionar]
setup_adc (ADC_CLOCK_INTERNAL);
setup_adc_ports (ALL_ANALOG);

Si corriges esto debería compilarte sin problemas.

Saludos.
"Siempre piensa si el jugo vale la exprimida..."

"La muerte esta tan segura de vencer que nos da toda una vida de ventaja."

Desconectado peladita

  • PIC10
  • *
  • Mensajes: 21
Re: Error al compilar en CCS
« Respuesta #8 en: 03 de Febrero de 2009, 13:11:43 »
Gracias Gonzalo, apenas vuelva a mi pago lo pruebo. Ahora estoy de viaje por eso me demore tanto en contestar.


Pruebo y aviso como me fue.

Gracias!

Desconectado peladita

  • PIC10
  • *
  • Mensajes: 21
Re: Error al compilar en CCS
« Respuesta #9 en: 03 de Febrero de 2009, 13:14:24 »
y que error te da???
Hola elmasvital gracias por interesarte, el error esta adjunto en mi primer mensaje del tema. Es un error raro (por lo menos para mi) Internal CCS error o algo similar.


Muchas gracias de nuevo


Desconectado peladita

  • PIC10
  • *
  • Mensajes: 21
Re: Error al compilar en CCS
« Respuesta #10 en: 06 de Febrero de 2009, 19:46:48 »
Bien peladita, veamos:

Elimina la siguiente linea de código:

Código: [Seleccionar]
if(setpoint<0) setpoint=0;
setpoint es una variable char y no puede tomar valores negativos, asi que esta expresión nunca se cumple y puede quitarse.

El error que no te deja compilar es el siguiente. Las dos siguientes lineas no estan dentro de ningun procedimiento. deberías colocarlas en el main(), al comienzo del mismo es una buena opción.

Código: [Seleccionar]
setup_adc (ADC_CLOCK_INTERNAL);
setup_adc_ports (ALL_ANALOG);

Si corriges esto debería compilarte sin problemas.

Saludos.

Hola Gonzalo como estas, te cuento que probe y me sigue dando el error. Pero la diferencia que ahora le saco la lo de la linea 276 y me sigo dando el error. Tendra que ver con la computadora??

Saludos y gracias!

Desconectado MGLSOFT

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 7912
Re: Error al compilar en CCS
« Respuesta #11 en: 06 de Febrero de 2009, 23:33:18 »
Que version de CCS usas??
Todos los dias aprendo algo nuevo, el ultimo día de mi vida aprenderé a morir....
Mi Abuelo.

Desconectado Gonzalo_BlackHawk

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 519
Re: Error al compilar en CCS
« Respuesta #12 en: 07 de Febrero de 2009, 08:18:07 »
peladita, he probado de corregir lo que te he dicho anteriormente y me compila bien, yo estoy utilizando el PCWHD 4.084.
"Siempre piensa si el jugo vale la exprimida..."

"La muerte esta tan segura de vencer que nos da toda una vida de ventaja."

Desconectado peladita

  • PIC10
  • *
  • Mensajes: 21
Re: Error al compilar en CCS
« Respuesta #13 en: 07 de Febrero de 2009, 13:20:05 »
Que version de CCS usas??
Hola MGLSOFT, gracias por contestar, segun veo en la ayuda que es Version 4.

Saludos

Desconectado peladita

  • PIC10
  • *
  • Mensajes: 21
Re: Error al compilar en CCS
« Respuesta #14 en: 07 de Febrero de 2009, 15:09:42 »
peladita, he probado de corregir lo que te he dicho anteriormente y me compila bien, yo estoy utilizando el PCWHD 4.084.
Gonzalo estoy usando creo que la Version 4 del PCW. Estoy tratando de actualizarla ahora. Tenes idea si se baja la actualizacion solo de la pagina CCS?

Mil gracias



 

anything