Ver Mensaje Individual
  #1 (permalink)  
Antiguo 30/03/2013, 07:34
Mebl
 
Fecha de Ingreso: marzo-2013
Mensajes: 1
Antigüedad: 11 años
Puntos: 0
Problema Comunicacion en serie PIC a PC. VB6 +CCS+Proteus

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
[URL="https://docs.google.com/file/d/0BzzRKo_lcYklZ1dHLWpSellnS3M/edit?usp=sharing"]https://docs.google.com/file/d/0BzzRKo_lcYklZ1dHLWpSellnS3M/edit?usp=sharing[/URL]

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:
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:
#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!