elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: ¿Eres nuevo? ¿Tienes dudas acerca del funcionamiento de la comunidad? Lee las Reglas Generales


+  Foro de elhacker.net
|-+  Informática
| |-+  Electrónica
| | |-+  Dudas proyecto en CCS, referente a la compilacion.
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Dudas proyecto en CCS, referente a la compilacion.  (Leído 4,106 veces)
aliasx

Desconectado Desconectado

Mensajes: 3


Ver Perfil
Dudas proyecto en CCS, referente a la compilacion.
« en: 1 Septiembre 2010, 13:56 pm »

Saludos.

Estoy con un super problemon, tengo este código (yo lo hice) que controla temperatura y humedad de un invernadero, bueno, lo hice por etapas, primero el testeo de esas variables, pues funcionava bien, procedi a hacer el control de esas variables, es decir, querer hacer funcionar los actuadores (motores para aire acondicionado, bomba de agua y demás), al ingresar el código para ello y las variables necesarias, pues..... me da un monton de errores (57), me dice que no declare ninguna variable, no me reconoce ninguna. Estoy utilizando la version 4.084 del compilador, para hacer algunos otros proyectos, eso me funciono muy bien, además que lo tengo bien parchado.

Código:
#include <16F877A.h>
#device adc = 10
#FUSES XT, NOWDT, NOPROTECT, NOPUT, NOBROWNOUT
#use delay(clock=4000000)
#use fast_io(C)
#use fast_io(D)
#use rs232(baud=9600, xmit=pin_c6, rcv=pin_c7, bits=8, parity=N)
#include <LCD4x20.C>

void main()
{
   set_tris_c(0xB0);
   set_tris_d(0xC0);
   //DECLARANDO VARIABLES DE CONTROL
   short control;
   short control1;
   short controlh;
   //FIN VARIABLES DE CONTROL
   int16 hum1;
   int16 hum2;
   int16 hum3;
   int16 temp1;
   int16 temp2;
   float tempt1;
   float tempt2;
   float humt1;
   float humt2;
   float humt3;
   float humS;
   float tempS;
   float RH;
   float p;
   setup_adc_ports(AN0_AN1_AN2_AN3_AN4);
   setup_adc(ADC_CLOCK_INTERNAL);
   lcd_init();
   control = 0;
   control1 = 0;
   controlh = 0;
   while(1)
   {
      set_adc_channel(0);  //CANAL 0
      delay_us(10);
      temp1 = (read_adc() * 100);
      set_adc_channel(1);  //CANAL 1
      delay_us(10);
      temp2 = (read_adc() *100);
      tempt1 = temp1 * 0.0049;
      tempt2 = temp2 * 0.0049;
      tempS = (tempt1 + tempt2) / 2.0;   //TEMPERATURA A MANEJAR
      //*********** RUTINA DE CONTROL DE TEMPERATURA ****************
      if (tempS >= 28.0)
      {
         if (control == 0)  //AQUI TESTEAR EL RC3
         {
            output_high(PIN_C1);
            // ir a sube y luego regresar
            delay_ms(3000);
            // ir a paraA y luego regresar
            output_low(PIN_C1);
            control = 1;  //aqui ver el RC3
         }
      }
      if (tempS <= 20.0)
      {
         if (control == 1)
         {
            output_high(PIN_C3);
            //ir a baja y regresar
            delay_ms(3000);
            //ir a paraB y regresar
            output_low(PIN_C3);
            control = 0;
         }
         output_high(PIN_C2); //AIRE CALIENTE
         control1 = 1;
      }
      if (control1 == 1)
      {
         if (tempS <= 25.0)
         {
            output_high(PIN_C2);  //AIRE CALIENTE
         } else
           {
              output_low(PIN_C2);  //APAGA AIRE CALIENTE
              control1 = 0;
           }
      }
      //************ FIN RUTINA CONTROL TEMPERATURA *****************
      set_adc_channel(2);  //CANAL 2
      delay_us(10);
      hum1 = read_adc();
      set_adc_channel(3);  //CANAL 3
      delay_us(10);
      hum2 = read_adc();
      set_adc_channel(4);  //CANAL 4
      delay_us(10);
      hum3 = read_adc();
      //hum1t = (5.0 * hum1) / 1024.0;
      humt1 = hum1 * 0.0049;
      humt2 = hum2 * 0.0049;
      humt3 = hum3 * 0.0049;
      humS = (humt1 + humt2 + humt3) / 3;
      RH = (humS - 0.958) / 0.0307;   // HUMEDAD HA MANEJAR
      //******* RUTINA CONTROL DE HUMEDAD ****************
      if (RH >= 80.0)
      {
         output_low(PIN_C0);
      }
      if (RH <= 75.0)
      {
         output_high(PIN_C0);
         controlh = 1;
      }
      if (controlh == 1)
      {
         if (RH <= 77.0)
         {
            output_high(PIN_C0);
         }else
         {
            output_low(PIN_C0);
            controlh = 0;
         }
      }
      //*********** FIN RUTINA CONTROL HUMEDAD **************
      //printf(lcd_putc, "\fADC = %4ld", q);
      //printf(lcd_putc, "\nVoltage = %01.2fV", p);
      printf(lcd_putc, "\f   TEMPERATURA    ");
      printf(lcd_putc, "\n     %01.2f C", tempS);
      printf(lcd_putc, "\n HUMEDAD   ");
      printf(lcd_putc, "\n%01.2f PHS", RH);
      //TRANSMISION SERIAL
      printf("ADC = %4ld", tempt1);
      printf(" Temperatura = %01.2f C\r", tempS);  // El \r permite cambiar de línea
      printf("ADC = %4ld", hum3);
      printf(" humedad = %01.2f RH\r", RH);
      delay_ms(100);
   }
}

no se cual sea el error,  :-\  :-\  :-\ , ya prove cambiando el tipo de variables, pero nada.


En línea

Tokes

Desconectado Desconectado

Mensajes: 140


Ver Perfil
Re: Dudas proyecto en CCS, referente a la compilacion.
« Respuesta #1 en: 1 Septiembre 2010, 18:01 pm »

Mira, mi hermano:

Para empezar, intenté buscar en la carpeta Drivers que viene con el compilador de CCS el archivo "LCD_4x20.h" y me dí cuenta que no existe; en esa carpeta sólo están los archivos "LCD.h" y "LCD420.h". Tal vez en tu versión de CCS sí se encuentre el archivo.

Otra cosa: En cualquier función o bucle hay que declarar las variables y constantes antes de poner operaciones. Una vez que pones operaciones ya no debes declarar variables o lo tomará como error.

En fín, aquí te dejo el código que según yo está corregido (nota que primero declaro las variables):

Código
  1. #include <16F877A.h>
  2. #device adc = 10
  3. #FUSES XT, NOWDT, NOPROTECT, NOPUT, NOBROWNOUT
  4. #use delay(clock=4000000)
  5. #use fast_io(C)
  6. #use fast_io(D)
  7. #use rs232(baud=9600, xmit=pin_c6, rcv=pin_c7, bits=8, parity=N)
  8. #include "LCD420.C"
  9.  
  10. void main()
  11. {
  12. //DECLARANDO VARIABLES DE CONTROL
  13.   short control;
  14.   short control1;
  15.   short controlh;
  16. //FIN VARIABLES DE CONTROL
  17.  
  18.   int16 hum1;
  19.   int16 hum2;
  20.   int16 hum3;
  21.   int16 temp1;
  22.   int16 temp2;
  23.   float tempt1;
  24.   float tempt2;
  25.   float humt1;
  26.   float humt2;
  27.   float humt3;
  28.   float humS;
  29.   float tempS;
  30.   float RH;
  31.   float p;
  32.  
  33.   set_tris_c(0xB0);
  34.   set_tris_d(0xC0);
  35.  
  36.   setup_adc_ports(AN0_AN1_AN2_AN3_AN4);
  37.   setup_adc(ADC_CLOCK_INTERNAL);
  38.   lcd_init();
  39.   control = 0;
  40.   control1 = 0;
  41.   controlh = 0;
  42.   while(1)
  43.   {
  44.      set_adc_channel(0);  //CANAL 0
  45.      delay_us(10);
  46.      temp1 = (read_adc() * 100);
  47.      set_adc_channel(1);  //CANAL 1
  48.      delay_us(10);
  49.      temp2 = (read_adc() *100);
  50.      tempt1 = temp1 * 0.0049;
  51.      tempt2 = temp2 * 0.0049;
  52.      tempS = (tempt1 + tempt2) / 2.0;   //TEMPERATURA A MANEJAR
  53.      //*********** RUTINA DE CONTROL DE TEMPERATURA ****************
  54.      if (tempS >= 28.0)
  55.      {
  56.         if (control == 0)  //AQUI TESTEAR EL RC3
  57.         {
  58.            output_high(PIN_C1);
  59.            // ir a sube y luego regresar
  60.            delay_ms(3000);
  61.            // ir a paraA y luego regresar
  62.            output_low(PIN_C1);
  63.            control = 1;  //aqui ver el RC3
  64.         }
  65.      }
  66.      if (tempS <= 20.0)
  67.      {
  68.         if (control == 1)
  69.         {
  70.            output_high(PIN_C3);
  71.            //ir a baja y regresar
  72.            delay_ms(3000);
  73.            //ir a paraB y regresar
  74.            output_low(PIN_C3);
  75.            control = 0;
  76.         }
  77.         output_high(PIN_C2); //AIRE CALIENTE
  78.         control1 = 1;
  79.      }
  80.      if (control1 == 1)
  81.      {
  82.         if (tempS <= 25.0)
  83.         {
  84.            output_high(PIN_C2);  //AIRE CALIENTE
  85.         } else
  86.           {
  87.              output_low(PIN_C2);  //APAGA AIRE CALIENTE
  88.              control1 = 0;
  89.           }
  90.      }
  91.      //************ FIN RUTINA CONTROL TEMPERATURA *****************
  92.      set_adc_channel(2);  //CANAL 2
  93.      delay_us(10);
  94.      hum1 = read_adc();
  95.      set_adc_channel(3);  //CANAL 3
  96.      delay_us(10);
  97.      hum2 = read_adc();
  98.      set_adc_channel(4);  //CANAL 4
  99.      delay_us(10);
  100.      hum3 = read_adc();
  101.      //hum1t = (5.0 * hum1) / 1024.0;
  102.      humt1 = hum1 * 0.0049;
  103.      humt2 = hum2 * 0.0049;
  104.      humt3 = hum3 * 0.0049;
  105.      humS = (humt1 + humt2 + humt3) / 3;
  106.      RH = (humS - 0.958) / 0.0307;   // HUMEDAD HA MANEJAR
  107.      //******* RUTINA CONTROL DE HUMEDAD ****************
  108.      if (RH >= 80.0)
  109.      {
  110.         output_low(PIN_C0);
  111.      }
  112.      if (RH <= 75.0)
  113.      {
  114.         output_high(PIN_C0);
  115.         controlh = 1;
  116.      }
  117.      if (controlh == 1)
  118.      {
  119.         if (RH <= 77.0)
  120.         {
  121.            output_high(PIN_C0);
  122.         }else
  123.         {
  124.            output_low(PIN_C0);
  125.            controlh = 0;
  126.         }
  127.      }
  128.      //*********** FIN RUTINA CONTROL HUMEDAD **************
  129.      //printf(lcd_putc, "\fADC = %4ld", q);
  130.      //printf(lcd_putc, "\nVoltage = %01.2fV", p);
  131.      printf(lcd_putc, "\f   TEMPERATURA    ");
  132.      printf(lcd_putc, "\n     %01.2f C", tempS);
  133.      printf(lcd_putc, "\n HUMEDAD   ");
  134.      printf(lcd_putc, "\n%01.2f PHS", RH);
  135.      //TRANSMISION SERIAL
  136.      printf("ADC = %4ld", tempt1);
  137.      printf(" Temperatura = %01.2f C\r", tempS);  // El \r permite cambiar de línea
  138.      printf("ADC = %4ld", hum3);
  139.      printf(" humedad = %01.2f RH\r", RH);
  140.      delay_ms(100);
  141.   }
  142. }

              Saludos.


En línea

aliasx

Desconectado Desconectado

Mensajes: 3


Ver Perfil
Re: Dudas proyecto en CCS, referente a la compilacion.
« Respuesta #2 en: 1 Septiembre 2010, 21:20 pm »

muchas gracias por la respuesta.

Bueno, en cuanto a la libreria LCD4x20, pues.... olvide ponerlo tambien aqui en el foro, ya que de la libreria original (LCD420) modifique la conexion de los pines en el puerto B y le cambie de nombre, eso para mantener la libreria original.

aqui esta lo que midifique, por si a alguien le sirve. Bueno, solo pongo las líneas que modifique, por que lo demás se mantiene de la libreria original.

Código:
// As defined in the following structure the pin connection is as follows:
//     B0  unused
//     B1  unused
//     B2  rs
//     B3  enable
//     B4  D4
//     B5  D5
//     B6  D6
//     B7  D7
//
//   LCD pins D0-D3 are not used and PIC B3 is not used.

struct lcd_pin_map {                 // This structure is overlayed
           BOOLEAN unused1;           // on to an I/O port to gain
           BOOLEAN unused2;               // access to the LCD pins.
           BOOLEAN rs;               // The bits are allocated from
           BOOLEAN enable;           // low order up.  ENABLE will
           int     data : 4;         // be pin B0.
        } lcd;

En cuanto a la correccion de código que pusiste en el foro, pues... lo voy a provar y haber que tal.

Muchas gracias
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines