• Domingo 22 de Diciembre de 2024, 13:39

Autor Tema:  Envio De Datos Por El Puerto Serial Pic-pc  (Leído 21168 veces)

karen81

  • Miembro MUY activo
  • ***
  • Mensajes: 119
    • Ver Perfil
Envio De Datos Por El Puerto Serial Pic-pc
« en: Martes 21 de Febrero de 2006, 04:39 »
0
Pues me ha surgido una duda, he hecho un programita para comunicar la pc con el pic (usando visual basic), probe el envio y bien, probe la recepcion y bien, el problema que me ha surgido es que el programa inicia enviando una opcion sea "A", "B", o "C", si le envio A el pic envia a la pc la palabra UNO, si envio B la palabra DOS y si envio C la palabra TRES, pero me llegan a la PC AUNO, BDOS, CTRES ,  o sea que la letra que estoy enviando la recibo y no se como corregirle ese error para comunicarme no estoy usando la MAX232 sino el circuito que esta en http://www.pablin.com.ar/electron/circuito/mc/ttl232/ ¿sera este circuito el culpable?, porque si apago el pic y le doy enviar y despues recibir recibo la letra que acabo de enviar,¿o sera alguna configuracion de visual basic? porque el pic no envia de regreso la letra para que fuera ese el problema.

Lo que he hecho en visual basic es lo siguiente:
Código: Text
  1. '................................................
  2. Private Sub Command1_Click()
  3. dato = "a"
  4. Call enviar
  5. End Sub
  6. '...................................................
  7. Private Sub Command2_Click()
  8. Call recibir
  9. End Sub
  10. '....................................................
  11. Private Sub Form_Load()
  12. With MSComm1
  13. .CommPort = 1
  14. .Settings = "9600,N,8,1"
  15. .InputMode = comInputModeText
  16. .InputLen = 0 'el control MSComm leera todo el bufer de recepcion
  17. .PortOpen = True
  18. End With
  19. End Sub
  20. '......................................................
  21. Private Sub enviar()
  22. MSComm1.InBufferCount = 0 'resetea el bufer de recepcion
  23. MSComm1.Output = dato
  24. Do While MSComm1.OutBufferCount > 0
  25. Loop
  26. End Sub
  27. '......................................................................
  28. Private Sub recibir()
  29. Dim entrada As String
  30. MSComm1.OutBufferCount = 0
  31. buferentrada = MSComm1.Input
  32. Do While MSComm1.InBufferCount > 0
  33. Loop
  34. Text1.Text = Text1.Text & entrada & vbCrLf
  35. End Sub
  36. '........................................................................
  37.  
Cualquier ayuda sera bienvenida GRACIAS  :comp:
No basta tener buen ingenio; lo principal es aplicarlo bien.

boni

  • Miembro activo
  • **
  • Mensajes: 54
    • Ver Perfil
Re: Envio De Datos Por El Puerto Serial Pic-pc
« Respuesta #1 en: Martes 21 de Febrero de 2006, 10:12 »
0
Hola!

?puedes adjuntar el programa del PIC? ?es ensamblador o c?

A mi me paso algo parecido y el error estaba en el programa del pic. Para hacer las pruebas iniciales, inclui un comando para que me devolviera el caracter recibido por el pic y probarlo con el hyperterminal.
Al probarlo con labview, me paso lo mismo que a ti. Puede que hayas cometido un error parecido.

karen81

  • Miembro MUY activo
  • ***
  • Mensajes: 119
    • Ver Perfil
Re: Envio De Datos Por El Puerto Serial Pic-pc
« Respuesta #2 en: Martes 21 de Febrero de 2006, 18:52 »
0
lo he hecho en ensamblador, por lo que no hay donde perderse, ademas lo probe con hyperterminal y no me regresa el caracter :comp:
No basta tener buen ingenio; lo principal es aplicarlo bien.

Huguen_aus_Tirol

  • Miembro MUY activo
  • ***
  • Mensajes: 318
    • Ver Perfil
    • http://www.erhard-automation.co.cc
Re: Envio De Datos Por El Puerto Serial Pic-pc
« Respuesta #3 en: Martes 21 de Febrero de 2006, 22:54 »
0
Hola Karen! Si dices que estando apagado el micro tienes el problema, descarta que la causa esté en el programa del PIC ;)
Si además dices que con el hiperterminal no tienes el problema, descarta el hard...
Entonces tu problema debería estar en el programa de la PC... Dedicate a revisar este programa, a ver que encuentras.
Espero haber ayudado, lamentablemente no tengo mucha experiencia en VB!

Saludos :hola:

karen81

  • Miembro MUY activo
  • ***
  • Mensajes: 119
    • Ver Perfil
Re: Envio De Datos Por El Puerto Serial Pic-pc
« Respuesta #4 en: Jueves 23 de Febrero de 2006, 01:29 »
0
:P me equivoque SI me devolvia el caracter en el hyperterminal (no sabia que en la pantalla no se imprimian los caracteres que se envian solo los que se reciben y si se me imprimian).
Ya solucione el problema, era el circuito, lo que hice fue quitarle la resistencia que de 4.7K y me ha funcionado bien  :comp: , (espero que no haya problema) :blink:

si alguien sabe mas de este circuito, le agradeceria que me lo dijera


GRACIAS   :lol:
No basta tener buen ingenio; lo principal es aplicarlo bien.

LexCorp

  • Nuevo Miembro
  • *
  • Mensajes: 3
    • Ver Perfil
Re: Envio De Datos Por El Puerto Serial Pic-pc
« Respuesta #5 en: Lunes 6 de Marzo de 2006, 10:00 »
0
Hola a todos, soy nuevo en el foro y he leido sobre lo que han hecho con el pic16F877, yo estoy en un proyecto con ese pic, pero mi duda es que si es necesario tener un convertidor a rs232, com por ejemplo el MAX232, o si solo conectando las salidas TX, RX del USART del pic puedo hacer el envio y recepcion de datos con una pc, ya que he tenido problemas probando con la pc, es decir le envio cualquier dato a la pc por medio del pic, pero me lo recibe como caracteres raros, no saben si se deba a la velocidad de transmision, o si necesita el MAX o podrian enviarme un programa de ejemplo de envio de datos que si funcione, que ya halla sido probado para guiarme, y que cristal utilizaron. Su ayuda va a ser de gran valor para mi.

karen81

  • Miembro MUY activo
  • ***
  • Mensajes: 119
    • Ver Perfil
Re: Envio De Datos Por El Puerto Serial Pic-pc
« Respuesta #6 en: Martes 7 de Marzo de 2006, 00:42 »
0
primero si es necesario usar un circuito como la max232 para comunicar PC-PIC, porque los niveles de voltaje del puerto no son como los del pic, yo use el circuito que enuncie antes (con el cambio respectivo) en lugar de la max232 y funciona perfecto.
tambien utilice como guia las rutinas de envio y recepcion que estan en la siguiente pagina web, solo que ellos han utilizado el pic 16f873, solo es de que te fijes en los bits de configuracion ya que pueden variar.
la pagina es :
<a href='http://www.x-robotics.com/' target='_blank'>http://www.x-robotics.com/ </a> (se va a RUTINAS y luego a comunicaciones rs232)
 :) espero sea de ayuda, cualquier duda aqui estamos  :comp:
No basta tener buen ingenio; lo principal es aplicarlo bien.

LexCorp

  • Nuevo Miembro
  • *
  • Mensajes: 3
    • Ver Perfil
Re: Envio De Datos Por El Puerto Serial Pic-pc
« Respuesta #7 en: Viernes 17 de Marzo de 2006, 22:35 »
0
Hola disculpen la otra vez ya habia ecrito al foro por lo de un problema con un pic, en especifico el 16F877, pero hice una configuracion con el pic y sigue sin funcionar, nose si podrian decirme si tiene un error el codigo fuente, o tal vez sea la forma en que hago las conexiones del pic a la pc, podrian ayudarme, y por cierto karen81, a el circuito que esta en la pagina de pablin, dijiste que le quitaste la resistencias de 4.7k, solo se la quitaste o dejaste la union del circuito en lugar de la resistencia???
Bueno aqui esta mi programa, alguien podria ayudarme diciendome si he configurado mal???
Utilizo el pic 16F877 con un crystal de 4MHz y capacitores de 22p, con un boton conectado a una patita del pic, mando una señal para que en vie el siguiente dato, envio datos en hexadecimal, si los envia pero los envia de una forma muy rara.
CUAL SERA EL PROBLEMA?????

                Include "p16f877.inc"
dato    EQU 0x21
cont          EQU 0x20
N              EQU 0xA5
contT        EQU 0x22
   org 0x0000
trans    BSF STATUS,RP0 ;banco 1
                MOVLW 0x80 ;Todos los bits del puerto C como salidas
                MOVWF   TRISB ;y el MSB como entrada
   BSF    TXSTA,BRGH ;pone bit BRGH=1    (velocidad alta)
   MOVLW .25 ;valor para 9600 Bauds (Fosc=4.000 Mhz)
   MOVWF SPBRG ;configura 9600 Bauds
   BCF TXSTA,SYNC ;limpia bit SYNC (modo asíncrono)
   BSF TXSTA,TXEN ;pone bit TXEN=1 (habilita transmisión)
   MOVLW 0xbf   ;RC7/Rx entrada,
   MOVWF TRISC   ;RC6/Tx salida
   BCF STATUS,RP0 ;regresa al banco 0
   BSF RCSTA,SPEN ;pone bit SPEN=1 (habilita puerto serie)
               CLRF cont ;Inicializa contador en cero
               CLRF contT ;Inicializa contador en cero
               MOVWF dato ;lo guarda en dato
               CALL envia
       
tecla   BTFSS PORTB,7 ;checa botón
        GOTO tecla ;Si no se ha presionado espera
        CALL d20ms ;pausa de 20 milisegundos
        BTFSS PORTB,7 ;checa nuevamente el botón
        GOTO tecla ;tecla falsa, espera de nuevo
        INCF cont,1 ;tecla válida, incrementa contador
        CALL codigo ;obtiene código para desplegar el contador
        MOVWF dato ;lo guarda en dato
        CALL envia
suelt   BTFSC PORTB,7 ;checa de nuevo el botón
        GOTO suelt ;si sigue presionado espera
        GOTO tecla ;si ya se soltó espera nueva presión.
;*************************************************
;Subrutina para enviar un dato por el puerto serie
;*************************************************
envia   BSF STATUS,RP0 ;banco 1
esp    BTFSS TXSTA,TRMT ;checa si el buffer de transmisión
      GOTO esp ;si está ocupado espera
      BCF STATUS,RP0 ;regresa al banco 0
      MOVF dato,W ;rescata dato a enviar
        MOVWF PORTB
      MOVWF TXREG ;lo envía
      RETURN
;*************************************************
;Subrutina para obtener dato
;*************************************************
codigo
                               MOVLW 0x1f ;carga máscara
      ANDWF cont,0 ;enmascara el contador y lo deja en W
      ADDWF PCL,1 ;Salta W instrucciones adelante
      RETLW 0x20
      RETLW 0x21
      RETLW 0x22
      RETLW 0x23
      RETLW 0x24
      RETLW 0x25
      RETLW 0x26
      RETLW 0x27
      RETLW 0x28
      RETLW 0x29
      RETLW 0x2A
      RETLW 0x2B
      RETLW 0x2C
      RETLW 0x2D
      RETLW 0x2E
      RETLW 0x2F
      RETLW 0x30
      RETLW 0x31
      RETLW 0x32
      RETLW 0x33
      RETLW 0x34
      RETLW 0x35
      RETLW 0x36
      RETLW 0x37
      RETLW 0x38
      RETLW 0x39
      RETLW 0x3A
      RETLW 0x3B
      RETLW 0x3C
      RETLW 0x3D
      RETLW 0x3E
      RETLW 0x3F
      RETLW 0x40
      RETLW 0x41
        RETURN

;*****************************************
;Rutina de Pausa que dura 20 milisegundos
;*****************************************
d20ms  
        MOVLW N ;Carga dato que controla la duración
        MOVWF contT ;inicializa contador con el dato
rep     DECFSZ contT,1 ;Decrementa contador y escapa si cero
        GOTO rep ;si no es cero, repite
esc     RETURN ;regresa de esta subrutina

   end

karen81

  • Miembro MUY activo
  • ***
  • Mensajes: 119
    • Ver Perfil
Re: Envio De Datos Por El Puerto Serial Pic-pc
« Respuesta #8 en: Sábado 18 de Marzo de 2006, 00:26 »
0
:) Primero, con respecto al circuito, si le quite completamente la resistencia de 4.7K y no puse nada ahi.
con respecto a la configuracion me parece que esta bien, pero deberias inicialmente probar con un programa mas sencillo solo para ver si te envia los datos.
del resto del programa solo me llamo la atencio lo siguiente
Código: Text
  1. CLRF contT&#59;Inicializa contador en cero
  2. MOVWF dato&#59;lo guarda en dato
  3.  
  4.  
 ¿que pones en dato aqui? el ultimo valor de W aqui es bf ¿eso es lo que quieres enviar?

Citar
envio datos en hexadecimal, si los envia pero los envia de una forma muy rara.
los datos llegaran a la PC en ASCII, no en hexadecimal asi se mandas 41 recibes "A", si mandas 35 recibes "5"
No basta tener buen ingenio; lo principal es aplicarlo bien.

LexCorp

  • Nuevo Miembro
  • *
  • Mensajes: 3
    • Ver Perfil
Re: Envio De Datos Por El Puerto Serial Pic-pc
« Respuesta #9 en: Miércoles 5 de Abril de 2006, 19:38 »
0
Bueno hola Karen81  :hola: , mira en el codigo que te escribi, el programa lo que hace es enviar los numeros que ahi aparecen, es decir envio el codigo en hexadecimal de una secuencia de numeros, es decir, en hexadecimal envio 0x20 que en decimal es 32, lo cual en ASCII es el caracter espacio, hasta el 0x41 que en ASCII es el caracter " ) " el programa envia los datos pero no estoy muy seguro de que los haga de la forma correcta, y tienes razon el cachito de codigo que mencionas:

Código: Text
  1.  
  2. CLRF contT;Inicializa contador en cero
  3. MOVWF dato&#59;lo guarda en dato
  4.  
  5.  

Esta de mas la instruccion, no es necesaria, sin embargo si manda datos.

Bueno continuando, yo utilice la hiperterminal de windows y no recibo nada, mi configuracion ya la viste, utilizo el cristal de 4MHz y los capacitores de 22p pero no se si tenga que ver algo la configuracion de mi programa, es decir, yo quiero utilizar la velocidad de transmision a 9600 Bauds.

Mis preguntas son las siguientes:

1.-Que sistema operativo utilisaste para la comunicacion??, lo que pasa es que he oido que windows XP desabilita el puerto paralelo.

2.-Que pic fue el que utilisaste para tu programa?

3.- Podrias pasarme la configuracion que utilisaste, que cristal, capacitores de cuanto, para que yo lo pueda reproducir, y asi salir de dudas, mas que nada por que en verdad quiero saber en que estoy mal. Utilizaria la hiperterminal para probarlo, pero anda pasame la configuracion.
Utilisas ensamblador igual que yo para el codigo, solo eso quiero, un ejemplo que ya alla funcionado para corregir mis errores.

He probado tambien mi circuito con un programa en java pero nada mas no me recibe nada, solo pura basura, eso me da a entender que los datos estan siendo enviados mal, pero no se si manejo mal la velocidad de transmision.

Si es que no quieres postear tu programa  me lo podrias manda a mi mail???

P.D. En verdad necesito ese favor...  :D

karen81

  • Miembro MUY activo
  • ***
  • Mensajes: 119
    • Ver Perfil
Re: Envio De Datos Por El Puerto Serial Pic-pc
« Respuesta #10 en: Jueves 6 de Abril de 2006, 02:05 »
0
Citar
1.-Que sistema operativo utilisaste para la comunicacion??, lo que pasa es que he oido que windows XP desabilita el puerto paralelo.

Uso el windows XP, y es mentira que desabilita el puerto paralelo yo he trabajado con ambos puertos, pero aunque asi fuera ¿estas usando el puerto serial o no?

Citar
2.-Que pic fue el que utilisaste para tu programa?
Use el pic 16f873, la configuracion y las rutinas de envio y recepcion las saque de esta pagina web http://www.x-robotics.com/se va a RUTINAS y luego a comunicaciones rs232, propiamente estos programas no los probe solo saque de ahi la configuracion y las rutinas de recepcion y envio

Citar
Podrias pasarme la configuracion que utilisaste, que cristal, capacitores de cuanto, para que yo lo pueda reproducir, y asi salir de dudas, mas que nada por que en verdad quiero saber en que estoy mal. Utilizaria la hiperterminal para probarlo, pero anda pasame la configuracion.
Utilisas ensamblador igual que yo para el codigo, solo eso quiero, un ejemplo que ya alla funcionado para corregir mis errores.

utilizo ensamblador puro. cristal 4MHZ capacitores 15Pf
¿que programa y que hardware estas utilizando para quemar el programa?
verifica bien la configuracion, tambien verifica que la configuracion del hyperterminal sea correcta
No basta tener buen ingenio; lo principal es aplicarlo bien.

Mars

  • Nuevo Miembro
  • *
  • Mensajes: 6
    • Ver Perfil
Re: Envio De Datos Por El Puerto Serial Pic-pc
« Respuesta #11 en: Jueves 4 de Mayo de 2006, 19:53 »
0
Hola,

Necesito hacer un programa para el PC que me permita comunicarse via serie con un micro. Lo estoy intentando con C pero no tengo mucha idea de como hacerlo.
He visto que Karen ha posteado un programa en Basic para comunicacion, pero no tengo ni idea de basic.

Podria alguien darme algun cosejo, alguna web con explicaciones y librerias? Me recomendais hacerlo en C o es mas sencillo con basic? el programa que necesito no tiene que hacer nada especialmente dificl, solo enviar unos caracteres y recibir ciertos bytes de info para guardarlos.

Muchas gracias!!

marçal

Huguen_aus_Tirol

  • Miembro MUY activo
  • ***
  • Mensajes: 318
    • Ver Perfil
    • http://www.erhard-automation.co.cc
Re: Envio De Datos Por El Puerto Serial Pic-pc
« Respuesta #12 en: Jueves 4 de Mayo de 2006, 20:09 »
0
Hola! yo lo hice en VB; es bastante simple, con solo leer la ayuda del comando mscomm (creo que se llama asi...) ya lo tienes. Por defecto este comando no está, pero pulsas ctrl+T y lo buscas en la lista.
No tengo gran idea de VB, pero logre la comunicación...

Saludos :hola:

Scheilla&Fabian

  • Nuevo Miembro
  • *
  • Mensajes: 2
    • Ver Perfil
Re: Envio De Datos Por El Puerto Serial Pic-pc
« Respuesta #13 en: Domingo 28 de Mayo de 2006, 00:32 »
0
Saludos...

...estoy realizando un proyecto para transmitir datos y visualizarlos en el hyperterminal tipo publik; es decir con tres efectos distintos, para eso tambien tengo que hacer recepción para escoger el tipo de efecto.

Utilizo el max232 para la conexión con el puerto serial del pc y el microcontrolador(AP16).  La situación es que no he podido visualizar nada en el pc, no sé si estoy realizando mal la configuración del hyperterminal. En el código selecciono velocidad de 38400 baudios, entonces en el hyperterminal coloco esa misma velocidad, en paridad doy ninguno, en bits de parada selecciono 1 y en control de flujo coloco ninguno pero no se si sea correcto.  La verdad agradecería cualquier tipo de información o tips al respecto.

Utilice un codigo solo para transmisión y aun así no he podido visualizar nada

Ettneciv

  • Nuevo Miembro
  • *
  • Mensajes: 6
    • Ver Perfil
Re: Envio De Datos Por El Puerto Serial Pic-pc
« Respuesta #14 en: Viernes 2 de Junio de 2006, 16:33 »
0
Hola...!!!


Bueno...como deben imaginarse tbm necesito una comunicacion PC - PIC :D

Aun no he hecho ningun montaje ni prueba alguna, estoy estudiando LA TEORIA como para ahorrarme gastos ( Gracias Karen por el circuito suplente del rs232 ) y leer las experiencias de otras personas para ahorrarme tiempo ( " PARA Q INVENTAR LA RUEDA 2 VECES? frase muy cierta y digna d ser seguida  :P )

   Aqui va mi primera duda.... :(

1.- Tengo entendido q el RS232 no ayuda a enviar datos en forma serial y q es asincrono al comenzar el envio de dato y sincrono en el proceso de transmision d dicho dato...

    El proceso de transmision es BIT x BIT? o BYTE x BYTE?

 Al PC enviar el caracter 0x20...Me imagino q el PIC deberia tener un contador = 8 el cual se decrementaria poco a poco para poder obtener los 8 bit de ese caracter
   
   En las rutinas q he podido ver no he logrado observar la recepcion individual de los 8 BIT del caracter enviado.

   Y para el caso q estoy trabajando es muy importante el manejo de los 8 bit de cada caracter para ordenarlos segun la opcion q necesite...

   
    Gracias de antemano...!!!!!

Chungungo

  • Nuevo Miembro
  • *
  • Mensajes: 3
    • Ver Perfil
Re: Envio De Datos Por El Puerto Serial Pic-pc
« Respuesta #15 en: Martes 19 de Septiembre de 2006, 21:04 »
0
Les Saludo y expongo mi consulta.
Estoy tratando de comunicar por el puerto serie el pc con el Pic 16F877A.
Realicé un programa basado en datos aparecidos en este foro.
El drama está, que recibe bien,pero al transmitir, sólo llegan de un mensaje de 10 caracteres los 4 primeros.
Alguién se maneja con Usart del Pic 16F877A.
Al revisar los registro TXREG no aparece nada; por otra parte, según los libros dicen que para transmitir se debe poner un Literal en el acumulador. Hago la prueba pero no hay nada.
Soy nuevo en este foro y agradecería su ayuda.
Atte. Chungungo

Huguen_aus_Tirol

  • Miembro MUY activo
  • ***
  • Mensajes: 318
    • Ver Perfil
    • http://www.erhard-automation.co.cc
Re: Envio De Datos Por El Puerto Serial Pic-pc
« Respuesta #16 en: Martes 19 de Septiembre de 2006, 23:30 »
0
Hola! y bienvenido!
A ver si entiendo tu problema...
El PIC recibe bien, pero cuando el micro transmite solo recibes parte del mensaje en el PC, es así? Bueno, al configurar el puerto serie en el PC (seguramente lo haces con VisualBasic) puedes indicar el tamaño del buffer de recepción; seguramente allí está el problema...
Para que el PIC transmita, debes escribir el dato (byte) a transmitir en el registro de transmisión de la USART, es decir en TXREG. El micro se encarga solo de enviar el dato, siempre que el puerto esté bien configurado.
Bueno, no creo haber entendido bien, pero nos aclaras mejor el problema y aquí estamos...

Saludos!

Ah....!!! Hice la consulta en el foro de VisualBasic, pero estan demasiado ocupados como para atender a los principiantes como yo :angry:
Necesito detectar el, o los modem instalados en el PC mediante VisualBasic, de tal manera que me devuelva un string con el nombre, tal como lo vemos cuando lo buscamos en el panel de control.
Si hay alguien aqui tan amable de indicarme los pasos a seguir, le estaré muy agradecido :)

 :hola:

Toph

  • Moderador
  • ******
  • Mensajes: 420
  • Nacionalidad: sv
    • Ver Perfil
    • http://www.electronicayotros.blogspot.com/
Re: Envio De Datos Por El Puerto Serial Pic-pc
« Respuesta #17 en: Jueves 21 de Septiembre de 2006, 00:49 »
0
Citar
Estoy tratando de comunicar por el puerto serie el pc con el Pic 16F877A.
Realicé un programa basado en datos aparecidos en este foro.
El drama está, que recibe bien,pero al transmitir, sólo llegan de un mensaje de 10 caracteres los 4 primeros.
Alguién se maneja con Usart del Pic 16F877A.

Con lo que mencionas no se entiende muy bien tu duda  :huh: , en la PC ¿estas usando hyperterminal o has hecho algun programa con el visual basic u otro lenguaje? puede ser aqui el problema de que solo te reciba 10 caracteres.
si puedes postea los programas que tienes, para ayudarte mejor  :hola:
Por favor leer esto antes de postear. Gracias
NO alimenten al TROLL y morirá
¿Querés ayudar?, pues doná comida gratis con un simple clic aqui ,sin trucos
photobucket , Google , wine y cutepdf Rock!!!


programacion,c,c++,
Microcontroladores,java,linux,videojuegos,
,.NET,asm,codigo
por favor este 2012 que sea

Chungungo

  • Nuevo Miembro
  • *
  • Mensajes: 3
    • Ver Perfil
Re: Envio De Datos Por El Puerto Serial Pic-pc
« Respuesta #18 en: Jueves 21 de Septiembre de 2006, 02:48 »
0
Gracias por responder tan rápido y de forma tan minuciosa. Explique el drama a grandes rasgos para no aburrir al lector.

Efectivamente estoy usando un programa hecho en Visual Basic y la Hyperterminal. En ambos casos, ocurre que no llegan todos los caracteres. Revisaré lo que me mencionan con respecto al buffer de recepción.

Con respecto al registro TXREG, tengo claro que es el que transmite, pero de todos los cambios que hago y simulo en el Pic Simulator Ide, la Simulación funciona sin problemas, pero al grabarlo en el Pic y hacerlo funcionar no llegan todos los caracteres con los programas antes mencionados.

Lo extraño es que para transmitir hay que cargar un literal en el acumulador(W), según información del libro de Angulo, de la forma que aparece en las últimas 3 líneas de este extracto del programa, en el registro TXREG no aparece nada
Programa:
tx              clrf   portb               
   bsf   status,rp0   ;Cambio al Banco 1
   bcf   status,rp1   ;Cambio al Banco 1

   movlw   0x24      ;Configura USART y Activa
   movwf   txsta      ;Transmisión
   movlw   .25      ;9600 Baudios
   movwf   spbrg

   bsf   txsta,txen   ;Habilita la TX

   bcf   status,rp0   ;Cambio al Banco 0
   bcf   status,rp1   ;Cambio al Banco 0

   bsf   rcsta,spen   ;Activa USART

   movf   0x22,0   ;carga W con valor registro 0x21 a transmitir
   movwf   portb      ;muestra el registro en el Puerto B
   movwf   txreg      ;comienza TX

En estas tres últimas líneas, al simularlo, el registro TXREG, está vacío. En el registro 0x21 se va guardando el valor de los caracteres que se reciben para luego transmitirlo y cargarlo en el TXREG, pero como dije funciona cuando se le carga un literal, como aparece en las tres últimas líneas no funciona.

Hoy por la noche haré cambios nuevos en el programa, les cuento y mando el programa completo si no funciona.

Gracias  : Tania_D y Huguen_aus_Tirol  :smartass:

Toph

  • Moderador
  • ******
  • Mensajes: 420
  • Nacionalidad: sv
    • Ver Perfil
    • http://www.electronicayotros.blogspot.com/
Re: Envio De Datos Por El Puerto Serial Pic-pc
« Respuesta #19 en: Viernes 22 de Septiembre de 2006, 01:11 »
0
Citar
Lo extraño es que para transmitir hay que cargar un literal en el acumulador(W), según información del libro de Angulo

No  :o , Chungungo para transmitir no es necesario poner un literal en el acumulador (W),lo que hace este ejemplo que posteaste, en esta parte:
Código: Text
  1.  
  2.  movf 0x22,0&#59;carga W con valor registro 0x21 a transmitir
  3. movwf portb&#59;muestra el registro en el Puerto B
  4. movwf txreg&#59;comienza TX
  5.  
  6.  

es pasar el dato que esta en la direccion 0x22 al registro W para mostrarlo por el puerto B y finalmente para enviarlo por el puerto serial,  ese dato que se carga en W es el dato que vamos a transmitir no es ningun indicador para que transmita  :huh: .
 tu pusiste despues
Citar
de la forma que aparece en las últimas 3 líneas de este extracto del programa, en el registro TXREG no aparece nada
No aparece nada porque en la direccion 0x22 no has puesto ningun dato seguramente.

 
saludos :hola:
Por favor leer esto antes de postear. Gracias
NO alimenten al TROLL y morirá
¿Querés ayudar?, pues doná comida gratis con un simple clic aqui ,sin trucos
photobucket , Google , wine y cutepdf Rock!!!


programacion,c,c++,
Microcontroladores,java,linux,videojuegos,
,.NET,asm,codigo
por favor este 2012 que sea

Chungungo

  • Nuevo Miembro
  • *
  • Mensajes: 3
    • Ver Perfil
Re: Envio De Datos Por El Puerto Serial Pic-pc
« Respuesta #20 en: Viernes 22 de Septiembre de 2006, 05:48 »
0
Tania_D:
Gracias nuevamente por la dedicación y ayuda.
Tengo claro que no me explicado bien en este tema. El programa que anoté era la parte de Transmisión, por esa razón el registro 0x22 se muestra vacío, pero en la parte de recepción que no anoté, el valor del caracter que recibe se guarda en esa dirección de memoria.
Estoy tratando de enviar datos por el puerto serie al pic, es decir mandar mensajes de texto en un entorno de Visual Basic. El Pc por el RS232, manda el mensaje, el Pic lo recibe y debe activar un relé de estado sólido, luego enviar el mensaje a un Transmisor de Rf para que llegue a otro Pc y mostrarlo en pantalla. Es una especie de chat con Radio Frecuencia, pero con varios Pc`s.
Dado que gran parte de información y programas salen en estos foros, una vez terminado y funcionando el sistema publico el programa.
De momento hicimos un programa en Lenguaje C y funciona. Sin embargo, queremos que resulte en Lenguaje Ensamblador, ya que en varios foros hay personas pidiendo ayuda con el uso de la Usart del Pic 16F877A
Atte. Chungungo
Tania_D Gracias  :smartass:

PS: Dado que hicmos un programa en C y que funcionó, no he revisado como prometí el Prog. en ensamblador, mañana te cuento porque puede ser que haya buenas noticias.

alf_gonzales

  • Miembro activo
  • **
  • Mensajes: 32
    • Ver Perfil
Re: Envio De Datos Por El Puerto Serial Pic-pc
« Respuesta #21 en: Sábado 21 de Octubre de 2006, 00:12 »
0
Hola a todos: AVR->RS232->PC (VB.NET 2003)
Tengo un proyecto en el que quiero recibir datos de micros AVR's por el Puerto Serial a la PC, pero utilizando el Visual.NET 2003, por favor si alguien puede darme mas datos de como realizar esto le estare muy agradecido. Atte. Alfredo

alf_gonzales

  • Miembro activo
  • **
  • Mensajes: 32
    • Ver Perfil
Re: Envio De Datos Por El Puerto Serial Pic-pc
« Respuesta #22 en: Sábado 21 de Octubre de 2006, 00:15 »
0
Por cierto mi direccion es algonzal@entel.bo

Me dijeron que podria realizar un programa en assembler utilizando el VB.NET 2003 ???