Problema con comunicacion virtual serial port by etima con Proteus

Saludos miren tengo un problema la verdad soy nuevo en esto del protocolo rs232, e estado leyendo algunos libros y viendo algunos articulos en los foros de este medio, bueno el problema es el siguiente tengo el programa Vitual Serial Port Driver 6.9 by Etima y el Proteus 7.6 sp0, y lo que quiero es tratarlos de intercomunicar, lei en un articulo como crear una pequeña interfaz con visual basic express 2008, y ya tengo el programa, en el virtual serial port e creado 2 puertos virtuales COM2 y COM4, el programa de visual basic manda bytes por el puerto vitual COM2 y este programa si me reconoce que se estan enviando bytes por ese puerto, mas sin embargo en la simulacion del proteus utilizando un puerto virtual lo e configurado para que sea el COM2 pero no puedo hacer que estos interactuen, tambien e tratado de hacerlo por via Hyper Terminal, y resulta lo mismo, a lo que me refiero es que la interaccion de la interfaz y el virtual serial Port no tengo ningun problema el problema es cuando lo quiero hacer interactuar con el proteus. Ya que cuando envio datos virtualmente me 2 leds indicadores del COMPIM de proteus se ponen en color Rojo y no hace la interaccion

Les dejo un pequeño programa de un sensor de temperatura y un pic16f877a para ejemplificar mi problema, este programa lo diseñe para que cuando detecte una tecla enviada por el RS232 enviee la temperatura a la computadora, asi mismo la visualice en un lcd. Utilizando la Virtual Terminal del proteus no tengo ningun problema, pero lo que yo quiero es poder hacer lo mismo pero con el COMPIM de proteus

aki les dejo algunas fotos de mi problema aver si alguien me puede ayudar.
 

Adjuntos

  • rs232 1.JPG
    rs232 1.JPG
    109.5 KB · Visitas: 88
  • rs232 2.JPG
    rs232 2.JPG
    125.3 KB · Visitas: 73
  • rs232 3.JPG
    rs232 3.JPG
    111.4 KB · Visitas: 63
  • envio de datos.JPG
    envio de datos.JPG
    107.7 KB · Visitas: 67
  • respuesta del proteus final.JPG
    respuesta del proteus final.JPG
    131.6 KB · Visitas: 67
  • rs232 codigo del pic.txt
    927 bytes · Visitas: 58
A mi tambien me pasa lo mismo y nunca pude saber porque. Por eso uso el Virtual Terminal de Proteus y listo!
 
Creo que el problema es que pones el mismo puerto en ambos o sea el com2...
es decir lo que tienes que hacer es que en visualbasic le pones al control mscomm el puerto com2 y al proteus (COMPIM) le tienes que poner el puerto com4, el virtual serial port lo que hace es comunicar ambos puertos...
 
Última edición:
Gracias lubeck por tu respuesta, con eso solucione el problema ya puedo utilizarlo sin ningun problema

Bueno ya que estamos en estos temas alguien me podria decir como simular el usb en proteus, como dije anteriormente estoy usando la version 7.6 sp0
 
Última edición:
Aqui esta el codigo del pic en ccs si funciona por que me enciende y apaga el led pero yo quiero mandar un caracter y verlo en la terminal virtual de proteus lo voy a usar despues para debuguear, que tendre de malo en el codigo o en el proteus?

Código:
#include <18f2550.h>      //archivo de cabecera
#fuses HSPLL,MCLR,NOWDT,NOPROTECT,NOLVP,NODEBUG,USBDIV,PLL5,CPUDIV1,NOVREGEN,NOPBADEN // fuses  configurados
#use delay(clock=48000000)     // el clock que tendremos a la entrada del CPU
#use rs232(baud=9600, xmit=PIN_C6, rcv=PIN_C7, BITS=8)

void main() {
    while(1){    
      output_high(PIN_B0);       // saca un nivel bajo en el pin b0
      delay_ms(100);      
      output_low(PIN_B0);    // saca un nivel alto en el pin b0
      delay_ms(100);     
      printf("HOLA");
      delay_ms(100);
    }
}
 

Adjuntos

  • diag1.JPG
    diag1.JPG
    9.7 KB · Visitas: 56
saludos alberto

intenta correrlo con las siguientes correcciones

#include <18f2550.h> //archivo de cabecera
#fuses HSPLL,MCLR,NOWDT,NOPROTECT,NOLVP,NODEBUG,USBDIV,PLL5,CPUDIV1,NOVREGEN,NOPBADEN // fuses configurados
#use delay(clock=48000000) // el clock que tendremos a la entrada del CPU
#use rs232(baud=9600, xmit=PIN_C6, rcv=PIN_C7, BITS=8)

void main() {
while(TRUE){
output_high(PIN_B0); // saca un nivel alto en el pin b0
delay_ms(100);
output_low(PIN_B0); // saca un nivel bajo en el pin b0
delay_ms(100);
puts("HOLA"); //Con esto envias una cadena de caracteres HOLA a la PC
delay_ms(100);
}
}
 
Sigue sin funcionar probe ponerle en el virtual terminal que se miraran los caracteres en hexagesimal y efectivamente se mira que esta enviando pero solo 00 00 00 00 00
 
Problema resuelto era la velocidad del reloj del pic en el programa esta a 48Mhz y en proteus apesar de que tiene un cristal de 20 Mhz parece que le importa mas la velocidad que tiene cuando le das propiedades tenia 4 Mhz le puse los 48 Mhz y funciono perfecto.
 
Atrás
Arriba