TODOPIC

Microcontroladores PIC => Lenguaje C para microcontroladores PIC => Mensaje iniciado por: robotic en 21 de Septiembre de 2010, 22:38:23

Título: como encender un led en proteus con labview
Publicado por: robotic 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. :-/
Título: Re: como encender un led en proteus con labview
Publicado por: robotic 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
(http://s3.subirimagenes.com:81/otros/5225404dibujo.jpg)
Título: Re: como encender un led en proteus con labview
Publicado por: robotic 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),
(http://s3.subirimagenes.com:81/otros/5228670dibujo2.jpg)
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,
(http://s2.subirimagenes.com/otros/5228729dibujo3.jpg)
 supongo que tendré que hacer un código en el compilador ccs. :-/
Título: Re: como encender un led en proteus con labview
Publicado por: robotic 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

}
Título: Re: como encender un led en proteus con labview
Publicado por: pablomanieri 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. }
Título: Re: como encender un led en proteus con labview
Publicado por: robotic 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
Título: Re: como encender un led en proteus con labview
Publicado por: pablomanieri 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.
Título: Re: como encender un led en proteus con labview
Publicado por: pablomanieri 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.
Título: Re: como encender un led en proteus con labview
Publicado por: robotic 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?
Título: Re: como encender un led en proteus con labview
Publicado por: pablomanieri 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
Título: Re: como encender un led en proteus con labview
Publicado por: robotic 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... :)
Título: Re: como encender un led en proteus con labview
Publicado por: robotic 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.
Título: Re: como encender un led en proteus con labview
Publicado por: robotic 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
(http://s3.subirimagenes.com:81/otros/5241650dibujo.jpg)

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.
(http://s2.subirimagenes.com/otros/5241710dibujo2.jpg)

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);    
             }
}

 
Título: Re: como encender un led en proteus con labview
Publicado por: huracan en 30 de Septiembre de 2010, 20:47:27
mejor intente cargar un dato que quieras reflejar ,osea los 8 bits
Título: Re: como encender un led en proteus con labview
Publicado por: robotic 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?
Título: Re: como encender un led en proteus con labview
Publicado por: d4n13l4 en 10 de Octubre de 2010, 18:02:24
hola
usando un pic real has logrado encender un led? yo no he tenido buenos resultados con un 16f877a programado en C

Saludos
Título: Re: como encender un led en proteus con labview
Publicado por: robotic en 12 de Octubre de 2010, 20:15:49
hola, solo lo he probado con el puerto virtual....
Título: Re: como encender un led en proteus con labview
Publicado por: ramirez en 12 de Septiembre de 2011, 07:42:20
Hola a todos, yo también quisiera iniciarme con Labview y estoy haciendo el ejemplo de unestro amigo robotic, adjunto dejo los ficheros que estoy utilizando. Con labview ya he conseguido que no me salga el error  de Visa y corre bien, pero en proteus no consigo que se encienda el led. Creo que en el ficheroi original están cambiados los pines 25 y 26, pero aunque le he dado la vuelta no consigo que funcionen (ssi no me equivoco el pin 25 del pic Tx debe de ir a RXD yh el 26 a TXD)

Bueno si veis el error que estoy cometiendo os lo agradezco, o que el lo que estoy haciendo mal.

Gracias de antemano y que pasen un buen día