FAQ FAQ  •  Buscar Buscar  •  Registrarse Registrarse  •  Entre para ver sus mensajes privados Entre para ver sus mensajes privados
Login Login

Problema Comunicacion en serie PIC a PC. VB6 +CCS+Proteus
Índice de los Foros Electronica Facil » FOROS ELECTRONICA » Microcontroladores PIC
Publicar nuevo tema   Responder al tema
Ver tema anteriorEntre para ver sus mensajes privadosVer tema siguiente
AutorMensaje
POLIMETRO
Asunto: Problema Comunicacion en serie PIC a PC. VB6 +CCS+Proteus MensajePublicado: 30 Mar, 2013 - 02:02
Nuevo en el Foro
Nuevo en el Foro


Registrado: 30 Mar, 2013
Mensajes: 1

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
*No puedes ver los enlaces externos*

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!
 
 Ver perfil de usuario Enviar mensaje privado  
Responder citando Volver arriba
rina
Asunto:  MensajePublicado: 30 Mar, 2013 - 10:57
Fanatico de la Electronica
Fanatico de la Electronica


Registrado: 14 Ago, 2005
Mensajes: 1892

la verdad que o el buscador no te va muy bien o no te molestaste mucho en buscar. (hay mucha informacion al respecto sobre ese tema en la red, ademas para distintos compiladores de pic)

lo malo que yo el pic c++ que creo que es el que estas usando no tengo mucha idea de como funciona. realmente no creo que ni lo sepan los que lo manejan..
vamos que del pic c+ alo que es el autentico lenguage de la compañia microchip hay años luz o mjor dicho no hay ni comparacion. el que mas sele puede asemejar es el pic basic
vamos que es mas facil aprender amanejarlo del pic basic y despues pasarse a mplab.
pero bueno pasando de criticas

asi mirando por encima lo que me parce es que no tienes configurados los puerto A/D, por lo menos correctamnte

echale un vistazo a la documentacion del chip
http://ww1.microchip.com/downloads/en/d ... 39582b.pdf

pongamos que el temario empieza apartir de la pagina 129
con el primer registro adcon0 y adcon1. realmente no se como maneja eso el pic c yo con el pic basic tansolo tengo que poner esa instruccio y activar o desactivar los bit que me interesan y oviamente preparar el programa de interruccion (que tampoco tengo ni pajoleta como se ace en pic c) y que conste que ni me interesa saverlo. lol

el valor que te intersa que serian tansolo los 8 bit menores te suelen entrar por interrucion en la variable ADRESL anoser que te interese octener 16bit los cojes de la variable ADRESH
pero que vamos con 8 bit normalmente va bien mas para empezar. y digo variable ADRESL y ADRESH es un emplazamiento donde el chip introduce el valor de la lectura A/D.

mi consejo es que practiques por separado un programa primro para manejar la conversora A/D y despues ya que te defiendes un poco con el manejo del RS232 pasas a introducir esa parte del programa. (vamos ir pasito a pasito) poco a poco.

sobre como funcionan las interrucciones rs232 empiean en la pajina 113 y te esplica completamente como ajustar ese puerto (la verdad que todavia nunca lo e usado. pero vamos si algun ia lo uso sera mas quee la misma tonteria quitando alguna complicacion que saldra (como siempre) lol.

que por cierto con el 16f876 no necesitas de un max232
aunque veo que ya te as dado cuenta y no selo as puesto. eso esta bien. alomucho unas pequeñas resistencias por proteccion o aislamiento.

la verdad que espro no tenr que estar con las tonterias de los saviondillos del c. para un ordenador nose. pero para un pic no me parece correcto usar si quieres realmente aprender algo.

espero que te sirvan mis indicaciones no es ni mas ni menos como se maneja un chip. (yo esque realmente no entiendo como nanejael pic c esas instrucciones y menos aun las interruciones. pero lo que te e pasdo no es mas que la informacion autentica del mismo fabricante y de su pajina web..

un saludo
 
 Ver perfil de usuario Enviar mensaje privado  
Responder citando Volver arriba
rina
Asunto:  MensajePublicado: 30 Mar, 2013 - 11:11
Fanatico de la Electronica
Fanatico de la Electronica


Registrado: 14 Ago, 2005
Mensajes: 1892

vaya y como el terminal que estas usando para la conversion A/D es el puerto a.0/NA0 la configuracion para ADCON1 del bit 0-3 que corresponderian a PCFG del 0 al 3 seria la 1110 vamos vref+ estaria a Vcc, vref- estaria a masa y solo NA0 seria una entrada analogica las demas las dejaria digitales..

sin contar que para los baudios que vas a usar te venia bien poner una reduccion de los varidos A/D a 32 o 64 veces menos de la velocidad del oscilador sino la interrucion A/D correra mucho mas rapido que la velocidad de transferencia rs232, eso te orijinaria problemas incluso cuelgues del pic
aunque dividas la velocidad de la informacion a una 64 ava parte del oscilador ya es una resolucion de unos milisegundos y te sera mas que rapido de sobra
si intentas acerlo mas rapido tendras que aumentar los baudios del rs232 para que vaya equitativo.
como tambien te trae las ecuaciones del tiempo que tardan en acer esas historias ya le echas un ojo cuales resoluciones son las que mas te convienen

vaya en el manual te esplica de como cojer 10bit. pero realmente puees cojer como te digo los 16bit


aver si esto te ayuda mas como pista.

un saludo
 
 Ver perfil de usuario Enviar mensaje privado  
Responder citando Volver arriba
Mostrar mensajes anteriores:     
Cambiar a:  
Todas las horas son GMT + 1 Hora
Publicar nuevo tema   Responder al tema
Ver tema anteriorEntre para ver sus mensajes privadosVer tema siguiente
 Índice de los Foros Electronica Facil » FOROS ELECTRONICA »  Microcontroladores PIC
powered by phppowered by MySQLPOWERED BY APACHEPOWERED BY CentOS© 2004 - 2017Información LegalPrensa