Autor Tema: Problema Comunicacion en serie PIC a PC. VB6 +CCS+Proteus  (Leído 3182 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado polimetro

  • PIC10
  • *
  • Mensajes: 6
Problema Comunicacion en serie PIC a PC. VB6 +CCS+Proteus
« en: 30 de Marzo de 2013, 10:57:00 »
Hola amigos,  tengo un problemilla, haber si me podeis ayudar...


trato de hacer un programa que capture señal analogica con un pic y la envie a un pc mediante un max232,
y tengo un un problemilla (problemon)!

software:
Proteus
PCW ccs
Virtual Serial Port Driver
Visual basic 6

Me descargue un ejemplo que funciona, lo malo es que esta diseñado para un pic 16f84 en conjunto con un ADC,
y lo que necesito es hacerlo correr en un 16f876a.

Trato de hacerlo en ccs y utilizando el mismo vb cambiando algunos parametros como el Mscom, Baud rate,  etc.
con el fin de adaptarlo a las necesidades...

Y creo que el problema radica en el codigo CCS del pic16f876a que no envia adecuadamente los datos ya que
¡EL VIRTUAL TERMINAL DE PROTEUS SOLO ARROJA SIMBOLOS EXTRAÑOS!, y el visual basic recive incongruencias o nada.

Podia alguien ayudarme?, estoy bastante presionado porque debo acabarlo para el martes y no me sale estoy atascado!


Agradeceria la ostia a quien me ayudase ya que necesito solucion o mi jefe no se jajaj acabamos de empezar las praktikas y no la quiero cagar jaja

1Aqui estan los codigos fuente
https://docs.google.com/file/d/0BzzRKo_lcYklZ1dHLWpSellnS3M/edit?usp=sharing

1En esta foto el esquema de lo que pretendo hacer,


2Aqui el resultado de las virtual terminal de ambos pics (puse el que va y el que no va en el mismo proteus para apreciar mejor)


3 aqui visual basic reciviendo el dato del pic16f84, el que va y no necesito :D




4Aqui el programa visual basic que uso

Código: [Seleccionar]
Dim Cadena As String

Private Sub Conectar_Click()
   MSComm1.CommPort = 5 ' esto variaaa segun
   MSComm1.PortOpen = True
   MSComm1.Settings = "1200,N,8,1"
   MSComm1.InputLen = 0
   MSComm1.RThreshold = 1
   MSComm1.RTSEnable = True
   Siempre_Encima Form1, True
   Me.Caption = "Conectado"
End Sub

Private Sub Desconectar_Click()
  If MSComm1.PortOpen Then
   MSComm1.PortOpen = False
   Me.Caption = "Desconectado"
  End If
End Sub

Private Sub Form_Unload(Cancel As Integer)
  Desconectar_Click
End Sub

Private Sub MSComm1_OnComm()
  Dim i As Integer
  Dim Valor As String
  Valor = MSComm1.Input
  i = InStr(Valor, Chr(13))
  If i = 0 Then
    Cadena = Cadena & Valor
  Else
    Cadena = Cadena & Left(Valor, i - 1)
    Rx.Text = Rx.Text & vbCrLf & Cadena
    Rx.SelStart = Len(Rx.Text)
    Cadena = ""
  End If
End Sub



5Aqui el programa ccs

Código: [Seleccionar]
#include <16F876a.h>
#device adc = 8   /// must be improved to 10 bites
#fuses XT, NOWDT,NOPROTECT

#use delay(clock=4000000)
#use rs232(baud=1200,xmit=PIN_C6)
//#use rs232(baud=1200,parity=N,xmit=PIN_C6,rcv=PIN_C7,bits=8,stop=2)   /// framentos de mil pruebas
//#use RS232(BAUD=1200,XMIT=PIN_C6,RCV=PIN_C7,PARITY=N,BITS=8,STREAM=STR_PC)
int trace;
void main () {
 setup_adc(ADC_CLOCK_INTERNAL);
   setup_adc_ports(AN0)   ;
   set_adc_channel(0);
   
   while(1){
   
   set_tris_A(0x01);
   set_tris_B(0x00);
   set_tris_C(0x00);
  trace= read_adc();
   putc(trace);
 // putc(PUTCHAR(65));  // mas pruebas
    delay_ms(500);
   }
   
}

Podeis ayudarmee??? e intentado mil formas, he mancillado a google, y obligue a mirar a  taringa   y wikipedia y aun asi no he podido saciarme jajaja
Un saludo gracias!

Desconectado BrunoF

  • Administrador
  • DsPIC30
  • *******
  • Mensajes: 3865
Re: Problema Comunicacion en serie PIC a PC. VB6 +CCS+Proteus
« Respuesta #1 en: 30 de Marzo de 2013, 12:47:07 »
Estas mandando el valor ASCII equivalente al valor del ADC, por eso ves lo que parece ser un caracter extraño en lugar del valor.


Código: C
  1. unsigned int8 trace;
  2. void main () {
  3.    set_tris_A(0x01);
  4.    set_tris_B(0x00);
  5.    set_tris_C(0x00);
  6.  
  7.    setup_adc(ADC_CLOCK_INTERNAL);
  8.    setup_adc_ports(AN0)   ;
  9.    set_adc_channel(0);
  10.    
  11.    while(1){  
  12.    trace= read_adc();
  13.    printf("Valor = %u\n", trace);
  14.    delay_ms(500);
  15.    }
  16.    
  17. }

« Última modificación: 30 de Marzo de 2013, 12:49:14 por BrunoF »
"All of the books in the world contain no more information than is broadcast as video in a single large American city in a single year. Not all bits have equal value."  -- Carl Sagan

Sólo responderé a mensajes personales, por asuntos personales. El resto de las consultas DEBEN ser escritas en el foro público. Gracias.

Desconectado polimetro

  • PIC10
  • *
  • Mensajes: 6
O excelente, pero no consigo que haga salto de linea, ni que se conecte con VB
« Respuesta #2 en: 31 de Marzo de 2013, 10:44:45 »
En el virtual terminal sale el dato adquirido por el ADC, no obstante ,  no consigo que haga salto de linea,  ni que se conecte con VB6 como lo hace el otro programa de  picbasicPro


Muchas gracias por tu ayuda!

Desconectado PalitroqueZ

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 5474
    • Electrónica Didacta
Re: O excelente, pero no consigo que haga salto de linea, ni que se conecte con VB
« Respuesta #3 en: 31 de Marzo de 2013, 11:56:39 »
En el virtual terminal sale el dato adquirido por el ADC, no obstante ,  no consigo que haga salto de linea,  ni que se conecte con VB6 como lo hace el otro programa de  picbasicPro


Muchas gracias por tu ayuda!

prueba así:

printf("Valor = %u\r\n", trace);
La propiedad privada es la mayor garantía de libertad.
Friedrich August von Hayek

Desconectado polimetro

  • PIC10
  • *
  • Mensajes: 6
[SOLUCIONADO] Problema Comunicacion en serie PIC a PC. VB6 +CCS+Proteus
« Respuesta #4 en: 16 de Abril de 2013, 06:42:05 »
Muchas graciass!! funciona de la ostia!