Autor Tema: como encender un led en proteus con labview  (Leído 13628 veces)

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

Desconectado robotic

  • PIC12
  • **
  • Mensajes: 55
como encender un led en proteus con labview
« en: 21 de Septiembre de 2010, 22:38:23 »
Hola amigos del foro después de haber estudiado un poco de labview, programación en C con el compilador ccs y proteus 7.7, he llegado a tratar de encender un led con labview en proteus con un pic 16f877a. si alguien tienen un archivo por ahi o que decirme la forma de enviar a través de un botón en labview con puerto usb un 1 y un 0, bienvenido sera. Gracias de antemano. :-/

Desconectado robotic

  • PIC12
  • **
  • Mensajes: 55
Re: como encender un led en proteus con labview
« Respuesta #1 en: 22 de Septiembre de 2010, 00:53:49 »
Hola amigos del foro después de haber estudiado un poco de labview, programación en C con el compilador ccs y proteus 7.7, he llegado a tratar de encender un led con labview en proteus con un pic 16f877a. si alguien tienen un archivo por ahi o que decirme la forma de enviar a través de un botón en labview con puerto usb un 1 y un 0, bienvenido sera. Gracias de antemano. :-/
Esto es lo que he avanzado lo hice con el puerto serial. en el visa write falta colocar algo que capte el dato del led y lo transforme en string, eso no lo se espero me puedan ayudar

Desconectado robotic

  • PIC12
  • **
  • Mensajes: 55
Re: como encender un led en proteus con labview
« Respuesta #2 en: 22 de Septiembre de 2010, 16:17:15 »
He logrado encontrar la solución al problema anterior y he puesto un booleano 0,1 que me transformo la señal verdadero y falso a 1 y 0 y ese numero lo transforme a string para poder enviarlo por el puerto serial (espero que le sirva a alguien que quiera hacer lo mismo),

ahora a tratar de averiguar como reconocer ese 1 y 0 que ya esta recibiendo el puerto serial (en el terminal virtual salen los 00011100111, cada vez que cambiaba el swith en el labview)  y hacer que encienda el led RB2 conectado al pic16f877A en proteus,

 supongo que tendré que hacer un código en el compilador ccs. :-/

Desconectado robotic

  • PIC12
  • **
  • Mensajes: 55
Re: como encender un led en proteus con labview
« Respuesta #3 en: 22 de Septiembre de 2010, 19:11:03 »
Este es el codigo donde estoy trabajando para que prenda el led con la info del puerto rs232, espero que alguien me pueda ayudar

#include <proyecto2.h>
#int_RDA
#use rs232(baud=9600,xmit=pin_c6,rcv=pin_c7,stream=HOSTPC)
int8 dato;
void  RDA_isr(void)
{
  dato=getc();
  output_bit(PIN_B2,1);     
}

void main()
{
   setup_adc_ports(NO_ANALOGS);
   setup_adc(ADC_CLOCK_DIV_2);
   setup_spi(SPI_SS_DISABLED);
   setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1);
   setup_timer_1(T1_DISABLED);
   setup_timer_2(T2_DISABLED,0,1);
   setup_ccp1(CCP_OFF);
   setup_comparator(NC_NC_NC_NC);
   enable_interrupts(INT_RDA);
   enable_interrupts(GLOBAL);

   //TODO: User Code

}

Desconectado pablomanieri

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 639
Re: como encender un led en proteus con labview
« Respuesta #4 en: 22 de Septiembre de 2010, 20:44:51 »
Supongo que en proyecto2.h tienes las configuraciones de los fuses, la velocidad del reloj, deberías también adjuntar lo que contiene ese archivo


Con respecto al código que colocaste, la cofiguración del puerto rs232 la debes hacer fuera de la interrupción.

Yo haría algo así (ten en cuenta que no lo he probado):

Código: C
  1. #include <proyecto2.h>
  2. #use rs232(baud=9600,xmit=pin_c6,rcv=pin_c7,stream=HOSTPC)
  3. char dato;
  4.  
  5. #int_RDA
  6. void  RDA_isr(void)
  7.           {
  8.              dato=getc();
  9.              if (dato=="0"){  //si el dato es 0 apaga el led
  10.                     output_bit(PIN_B2,0);    
  11.              }
  12.              if (dato=="1"){ //si el dato es 1 enciende el led
  13.                     output_bit(PIN_B2,1);    
  14.              }
  15. }
  16.  
  17. void main()
  18. {
  19.    setup_adc_ports(NO_ANALOGS);
  20.    setup_adc(ADC_CLOCK_DIV_2);
  21.    setup_spi(SPI_SS_DISABLED);
  22.    setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1);
  23.    setup_timer_1(T1_DISABLED);
  24.    setup_timer_2(T2_DISABLED,0,1);
  25.    setup_ccp1(CCP_OFF);
  26.    setup_comparator(NC_NC_NC_NC);
  27.    enable_interrupts(INT_RDA);
  28.    enable_interrupts(GLOBAL);
  29.  
  30.    //TODO: User Code
  31.  
  32. while (True){}
  33.  
  34. }

Desconectado robotic

  • PIC12
  • **
  • Mensajes: 55
Re: como encender un led en proteus con labview
« Respuesta #5 en: 22 de Septiembre de 2010, 21:23:20 »
Gracias Pablo por responder aca esta el codigo.h
#include <16F877A.h>
#device adc=8

#FUSES NOWDT                    //No Watch Dog Timer
#FUSES HS                       //High speed Osc (> 4mhz for PCM/PCH) (>10mhz for PCD)
#FUSES NOPUT                    //No Power Up Timer
#FUSES NOPROTECT                //Code not protected from reading
#FUSES NODEBUG                  //No Debug mode for ICD
#FUSES NOBROWNOUT               //No brownout reset
#FUSES NOLVP                    //No low voltage prgming, B3(PIC16) or B5(PIC18) used for I/O
#FUSES NOCPD                    //No EE protection
#FUSES NOWRT                    //Program memory not write protected

#use delay(clock=4000000)

hice el código que me escribiste, no marca error al compilar pero no prendio el led
« Última modificación: 22 de Septiembre de 2010, 21:30:00 por robotic »

Desconectado pablomanieri

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 639
Re: como encender un led en proteus con labview
« Respuesta #6 en: 22 de Septiembre de 2010, 22:03:32 »
El labview no lo tengo instalado, además lo he usado muy poco.

Me parece que tienes mal conectados los pines de RX y TX del pic, creo que deberían ir intercambiados.

Desconectado pablomanieri

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 639
Re: como encender un led en proteus con labview
« Respuesta #7 en: 22 de Septiembre de 2010, 22:10:32 »
Otra cosa, para un cristal de 4Mhz debes poner el Fuse XT y no HS, aunque creo que en el Proteus no influye, en el pic real si.

Desconectado robotic

  • PIC12
  • **
  • Mensajes: 55
Re: como encender un led en proteus con labview
« Respuesta #8 en: 22 de Septiembre de 2010, 22:14:01 »
Me parece que tienes mal conectados los pines de RX y TX del pic, creo que deberían ir intercambiados.
Hola Pablo te cuento he cambiado los pines del puerto pero no funciono, los numeros no se vieron en el terminal virtual solo al volver a su conexion anterior pude ver los 1111 y 000. y tambien cambie en el proyecto2.h el HS a XT y tampoco funciono :(

este codigo lo habia copiado de un ejemplo en internet
#use rs232(baud=9600,xmit=pin_c6,rcv=pin_c7,stream=HOSTPC)
yo creo que no tiene nada que ver en el codigo principal.
que crees tu?

Desconectado pablomanieri

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 639
Re: como encender un led en proteus con labview
« Respuesta #9 en: 22 de Septiembre de 2010, 22:52:13 »
Tenía un error en el código, debes reemplazar las comillas "0" por '0'  y "1" por '1', cuando se compara si dato es 0 o 1.  
Los pines RX y TX del pic estaban bien, lo que si tienes que tener en cuenta es que si colocas pin TX del virtual terminal no debes colocar el TX del pic  y si conectas el TX del pic no debes colocas el pin TX del virtual terminal, porque se produce un logic contention. Prueba solamente de colocar el pin RX del Virtual terminal y si el pin RX y TX del pic, con esto y con la modificación de las comillas pude hacerlo funcionar con el hyperterminal de windows, así que debería andar con el labview
« Última modificación: 22 de Septiembre de 2010, 22:56:44 por pablomanieri »

Desconectado robotic

  • PIC12
  • **
  • Mensajes: 55
Re: como encender un led en proteus con labview
« Respuesta #10 en: 22 de Septiembre de 2010, 23:29:01 »
Tenía un error en el código, debes reemplazar las comillas "0" por '0'  y "1" por '1', cuando se compara si dato es 0 o 1.  
Los pines RX y TX del pic estaban bien, lo que si tienes que tener en cuenta es que si colocas pin TX del virtual terminal no debes colocar el TX del pic  y si conectas el TX del pic no debes colocas el pin TX del virtual terminal, porque se produce un logic contention. Prueba solamente de colocar el pin RX del Virtual terminal y si el pin RX y TX del pic, con esto y con la modificación de las comillas pude hacerlo funcionar con el hyperterminal de windows, así que debería andar con el labview

gracias ha funcionado... :)

Desconectado robotic

  • PIC12
  • **
  • Mensajes: 55
Re: como encender un led en proteus con labview
« Respuesta #11 en: 24 de Septiembre de 2010, 13:24:11 »
hola amigos del foro, ya que se logro prender un led la vez pasada con labview ahora lo intentare con 2 led, creo que dos sera la puerta para prender los led que queramos desde labview ya que solo se ira añadiendo cada uno, espero que esta información sirva a futuros novatos como yo intentando hacer funcionar el labview con el proteus, siendo el gran he importante mediador  el código C en el compilador ccs.

Desconectado robotic

  • PIC12
  • **
  • Mensajes: 55
Re: como encender un led en proteus con labview
« Respuesta #12 en: 24 de Septiembre de 2010, 13:25:10 »
hola aca estaria el proteus en donde no abria mas quie decir que estarian conectados  los  dos led en RB0 Y RB1


Aca esta el labview en donde falta colocar algo que haga enviar los datos de los dos led, si alguien lo sabe espero que lo pueda escribir aca.


y solo copiare esta parte del codigo c ya que es la misma de arriba y solo cambiaran los codigos que van debajo de void  RDA_isr(void) aunque le he colocado char me imagino que deberia ser int porque recive datos de 1 y 0 y eso es de tipo entero.

#use rs232(baud=9600,xmit=pin_c6,rcv=pin_c7,stream=HOSTPC)
char dato;
#int_RDA
void  RDA_isr(void)
          {
             dato=getc(HOSTPC);
             if (dato=='0'){  //si el dato es 0 apaga el led
                    output_bit(PIN_B2,0);    
             }
             if (dato=='1'){ //si el dato es 1 enciende el led
                    output_bit(PIN_B2,1);    
             }
}

 

Desconectado huracan

  • PIC10
  • *
  • Mensajes: 2
Re: como encender un led en proteus con labview
« Respuesta #13 en: 30 de Septiembre de 2010, 20:47:27 »
mejor intente cargar un dato que quieras reflejar ,osea los 8 bits

Desconectado robotic

  • PIC12
  • **
  • Mensajes: 55
Re: como encender un led en proteus con labview
« Respuesta #14 en: 01 de Octubre de 2010, 01:16:53 »
mejor intente cargar un dato que quieras reflejar ,osea los 8 bits
y eso como podria hacerlo eso en labview?