TODOPIC

Microcontroladores PIC => Todo en microcontroladores PIC => Mensaje iniciado por: polimetro en 30 de Marzo de 2013, 10:57:00

Título: Problema Comunicacion en serie PIC a PC. VB6 +CCS+Proteus
Publicado por: polimetro 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 (http://"https://docs.google.com/file/d/0BzzRKo_lcYklZ1dHLWpSellnS3M/edit?usp=sharing")

1En esta foto el esquema de lo que pretendo hacer,
(http://4.bp.blogspot.com/-GLe6nvgjgwc/UVbkEd1INyI/AAAAAAAAANg/_SBZ9x0vMtE/s640/eskema+fletxas.png)

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)
(http://4.bp.blogspot.com/-nOwsCWuXvkA/UVbkFp5s-eI/AAAAAAAAANs/HGMdKZD8H1A/s640/prot.png)

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


(http://1.bp.blogspot.com/-6cwOel1OIt0/UVbkFbxwhoI/AAAAAAAAANo/CWJZ7ygIQt8/s640/vb_prot.png)

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!
Título: Re: Problema Comunicacion en serie PIC a PC. VB6 +CCS+Proteus
Publicado por: BrunoF 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. }

Título: O excelente, pero no consigo que haga salto de linea, ni que se conecte con VB
Publicado por: polimetro 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!
Título: Re: O excelente, pero no consigo que haga salto de linea, ni que se conecte con VB
Publicado por: PalitroqueZ 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);
Título: [SOLUCIONADO] Problema Comunicacion en serie PIC a PC. VB6 +CCS+Proteus
Publicado por: polimetro en 16 de Abril de 2013, 06:42:05
Muchas graciass!! funciona de la ostia!