TODOPIC
Microcontroladores PIC => Primeros pasos - Iniciación a los microcontroladores => Mensaje iniciado por: dr9216 en 02 de Marzo de 2013, 01:30:58
-
Hola a todos, soy nuevo en el foro, trato de realizar el encendido de un led en Proteus mediante Visual Basic, al hacerlo con el Virtual Terminal de Proteus no hay problema , corre bien, pero cuando conecto el circuito mediante un compim con VB la comunicación no se realiza correctamente, sospecho que son los parámetros de comunicación pero no encuentro el error y estoy varado en este punto y necesito avanzar, les agradecería mucho si le echaran un ojo al programa, veo que no me deja subir algunos tipos de archivos, por lo tanto dejo el código de Microcode y VB:
Microcode:
include "modedefs.bas"
cmcon=7
led var porta.0
datos var byte
high led : pause 1000 : low led
inicio:
serin portb.0,N9600,datos
if datos="P" then goto prendido
goto inicio
prendido:
high led
serout portb.1,N9600,["E"]
pause 5000
serout portb.1,N9600,["A"]
low led
goto inicio
VB:
Private Sub Command1_Click()
MSComm1.Output = "P"
End Sub
Private Sub Form_Load()
MSComm1.PortOpen = True
Timer1.Interval = 1
End Sub
Private Sub Timer1_Timer()
DATO = MSComm1.Input
If Len(DATO) > 0 Then
End If
If DATO = "E" Then
Shape1.FillColor = QBColor(12)
End If
If DATO = "A" Then
Shape1.FillColor = QBColor(8)
End If
End Sub
también un dejo un jpg del circuito en Proteus y del form en VB
y por último el link para descargar el Virtual Serial Port Kit necesario para conectar los dos programas, simplemente se crea una conexión virtual entre dos puertos com de la computadora y se asigna uno a cada uno.
www.virtual-serial-port.com
se que es mucho lo que pido, pero si tienen tiempo necesito ayuda.GRACIAS DE ANTEMANO, :)
-
Hola, trata de hacer varias cosas a ver si mejora
1- No conectes paralelamente el compim y el terminal virtual, se asume que tienes bien configurado las velocidades del compim
2- Verifica el virtual terminal entre Visual y el Hyperterminal, por ejemplo
3- Una duda, porque no estás utilizando el pin TX del PIC ?, lo estas haciendo por software ?
Saludos.
-
Hola, muchas gracias por tu respuesta.
He probado la que me haz propuesto:
Cambié la conexión para utilizar los pines TX y RX, quité el terminal virtual pero igualmente no ha funcionado, ahora que al hacerlo hubo una pista, no se prenden las luces azules que suelen prenderse entre la conexión del compim TXD y RX del pic, y la otra está de color rojo, me refiero al RXD del compim y el TX del pic, creo que esto deja a la configuración del compim como haz dicho, pero he revisado los parámetros de comunicación y en los dos programas es 9600,n,8,1, el compim está configurado de la siguiente manera:
Physical Baud Rate: 9600
Physical Data Bits: 8
Physical Parity: NONE
Virtual Baud Rate: 9600
Virtual Data Bits: 8
Virtual Parity: NONE
Y los bits de parada de ambos: 1
según yo está bien pero la configuración es el error que puede ser, he hecho otros ejercicios de comunicación solo con el Virtual Terminal utilizando 2400,N,8,1 y seteando en el Virtual Terminal RX/TX Polarity en inverted y han funcionado perfectamente, así que sospecho que en este programa lo que falla es la lógica invertida, como puedo setear esto en las propiedades del compim y si no es esto, qué crees que pueda ser? Agradezco tu ayuda de antemano.
-
Hola, trata de hacer varias cosas a ver si mejora
1- No conectes paralelamente el compim y el terminal virtual, se asume que tienes bien configurado las velocidades del compim
2- Verifica el virtual terminal entre Visual y el Hyperterminal, por ejemplo
3- Una duda, porque no estás utilizando el pin TX del PIC ?, lo estas haciendo por software ?
Saludos.
Hola, olvidé citar tu respuesta, creo que sin esto no se te notificará de la mía.
-
Hola, prueba con este ejemplo, yo utilizo el Virtual serial port drive
-
Hola
mira veo que al cargar el formulario abres el mscom, pero.. ¿ya lo tienes seteado al COM con el que se debe de comunicar?
Private Sub Form_Load()
MSComm1.PortOpen = True
Timer1.Interval = 1
End Sub
por ejemplo yo acostumbro a setear por código y después abrir el COM:
MSComm.CommPort = 1 'No. de Puerto COM a utilizar
MSComm.Settings = "9600,n,8,1"
MSComm.PortOpen = True
Saludos! 8)