Autor Tema: Manejo de bits de stop con PBP  (Leído 3130 veces)

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

Desconectado Sebas22

  • PIC10
  • *
  • Mensajes: 34
Manejo de bits de stop con PBP
« en: 02 de Marzo de 2003, 11:52:00 »
Hola a todos. Tengo la siguiente linea de codigo:

serin2 PORTB.1,188,[wait (1), bin8 dato1, bin8 dato2]

Estoy en un pequeño proyecto en donde me tengo que manejar con tipos de transmisiones seriales con una PC a 4800 baudios, 8 bits de datos, sin paridad, con bit de stop. En el codigo anterior lo que pretendo es recibir datos seriales a esa velocidad, de la siguiente manera: Quiero esperar que me llegue un 1 binario, y después de eso que se me almacene en dos variables de 8 bits cada una datos binarios. Ahora bien, ¿como debería manejarme con los bits de stop? Seguramente tenga que agregar algo al codigo anterior, pero ignoro como hacerlo. Lo mismo me pasaria para el caso de enviar datos desde el PIC:

serout2 PORTB.2,188,[bin8 %01010101]

En este ultimo caso lo mismo, como es el manejo con el bit de stop? Un saludo y muchas gracias a todos!

Desconectado RGL

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 634
RE: Manejo de bits de stop con PBP
« Respuesta #1 en: 02 de Marzo de 2003, 19:27:00 »
Hola sebas,

Lo del bit stop lo implementa ya el comando serout2  y serin2 de un modo automático, así que tu por eso ya no te preocupes. Luego en cuanto al formato de enviar y transmitir, una aclaración. Lo que manda la puerta serie son bytes (en este caso que tu has elegido 8 bit).  Vamos a ver si con un ejemplo te lo explico mejor:

Supón que quieres enviar el byte 01010101. Este byte es el 55 hex o el 85 dec (es símbolo ASCII U mayúscula). Si tu conectas el hiperterminal  de windows al pic encontrarás diferentes modos de representar la misma cosa. Por simplicidad normalmente se suele enviar en decimal (un byte) porque ahorras tiempo de transmisión. Si quieres envialo en hexadecimal, por la línea enviaría dos bytes, primero un 5 y luego otro 5. Si lo mandas en binario, por la linea enviaría 8 bytes con valores cero y uno en una secuencia de tal manera que en hiperterminal tu verías 01010101 pero por la línea se ha transmitido realmente 00000000 00000001 00000000 00000001 00000000 00000001 00000000 00000001. Es decir lo que tu ves en hipertreminal no es exactamente la forma que se ha enviado.

Hay que tener en cuenta que siendo todo lo mismo, una cosa son los símbolos y otra cosa es lo que se envía.

Personalmente siempre utilizo la nomenclatura decimal para enviar, creo que es lo menos ambiguo. Imagina que tienes una variable tipo byte que se llama ENVIO,  que contiene un valor de 85 en decimal. La forma más cómoda es:
 serout ........ [ENVIO], aunque tu puedes enviar esto mismo con otros formatos como % (binario) y $ (hexadecimal)

Es muy util que hagas unas pruebas con el hiperterminal o con el canal serie de Micro Code Studio para ver las diferencias.

Saludos
Ricky

Desconectado Sebas22

  • PIC10
  • *
  • Mensajes: 34
RE: Manejo de bits de stop con PBP
« Respuesta #2 en: 03 de Marzo de 2003, 00:07:00 »
Ricky gracias por tu aporte, me aclaró bastante el panorama. Ahora tengo que ver como recibir los datos desde la PC, porque vamos a enviar señales desde el Visual Basic usando MSComm... si por casualidad lo has manejado antes, cualquier aporte extra será bienvenido.
Saludos y gracias!

adolfoadc

  • Visitante
RE: Manejo de bits de stop con PBP
« Respuesta #3 en: 03 de Marzo de 2003, 10:58:00 »
Cuando utilizas el mscomm del vb lo que haces es enviar el caracter ascii, pero puedes enviar cualquier valor de 1byte mediante la transformacion de los valores que deseas enviar a ascii, es decir primero tienes el valor binario, lo conviertes a hexadecimal, luego a decimal y por ultimo el caracter ascii de ese valor decimal y lo envias, de esta forma es el pc el que realiza la terea de conversion entre bases y cuando le llega al micro ya esta listo para ser manejado como un valor mas.
Por ejemplo:
00101111------> en hexadecimal:2F -------> en decimal 47 --------> el ascii de 47 es "/" que es lo que envias y cuando el micro lo recibe es el 00101111.
En cuanto al bit de stop solo tienes que configurar el mscomm para que tenga 1bit de stop y ya esta.

Desconectado RGL

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 634
RE: Manejo de bits de stop con PBP
« Respuesta #4 en: 03 de Marzo de 2003, 16:03:00 »
Hola Sebas,

No soy programador de Visual Basic, pero he mirado por encima el mscomm. Tienes propiedades para abrir puerto, ajustar parámetrod del puerto, enviar, recibir, manejo de errores etc.

También tenía algunas rutinas Norberto, pero noi me acuerdo en que´parte, quizás en las utilidades de todopic. Puedes enviarle un correo y te lo aclara.

Saludos

Ricky

Desconectado Sebas22

  • PIC10
  • *
  • Mensajes: 34
RE: Manejo de bits de stop con PBP
« Respuesta #5 en: 04 de Marzo de 2003, 14:42:00 »
Gracias Adolfo y Ricky

En cuanto a tu comentario Adolfo, ya lo he remitido a un compañero que está trabajando en la parte de Visual Basic. Tengo una pequeña duda con el serin2. El parámetro que yo he colcado como Wait(1), aguardará un valor de 1 binario , o también dentro de wait debo colocar un valor byte..., en sintesis, yo quiero enviar desde el VB mediante MsComm dos unos (11), de modo tal que al recibir el primero, el segundo lo guarde en una variable que yo llamé "ok" de tipo bit...
y más allá de eso, el PIC quedará aguardando a que ese valor llegue y se frenará en esa linea de codigo de no ser asi? Pues esto ultimo precisamente lo que quiero hacer. Saludos y muchas gracias a ambos.

Desconectado RGL

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 634
RE: Manejo de bits de stop con PBP
« Respuesta #6 en: 04 de Marzo de 2003, 16:16:00 »
Hola Sebas,

Wait(1) espera 00000001
Wait("1" espera 00110001 que es el 49 ASCII.

En cualquier caso recibes un byte.

En cuanto a almacenar en una variable bit puedes hacerlo:

IF condicion THEN variable_bit=1

O de otra forma:

variable_bit=espera.0 , siendo espera.0 el bit cero  de la variable espera (que supongamos que vale 00000001).

Saludos
Ricky

Desconectado Sebas22

  • PIC10
  • *
  • Mensajes: 34
RE: Manejo de bits de stop con PBP
« Respuesta #7 en: 04 de Marzo de 2003, 20:49:00 »
Ricky:

Lo de almacenar la variable lo entiendo bien, crei que habia copiado ese mismo ejemplo que yo tengo hecho en el primer mensaje. Gracias por la aclaración del WAIT. En cuanto a este mismo parámetro, como decía antes, yo necesito que el programa del PIC quede "parado" en esa linea del serin2 de tal manera que hasta que no reciba ese "1" la ejecución no prosiga (para poder mantener un "diálogo" con la PC). El parametro WAIT funciona de esa manera? Si es así, me quedaré mas tranquilo!!

Gracias nuevamente
Sebas.

Desconectado todopic

  • Administrador
  • DsPIC30
  • *******
  • Mensajes: 3495
    • http://www.todopicelectronica.com.ar
RE: Manejo de bits de stop con PBP
« Respuesta #8 en: 04 de Marzo de 2003, 21:48:00 »
Hola Seba, el programita de comunicacion con el mscomm esta en la seccion de visual basic....
y hablando de bin, hex, dec... tengo problemas con un reloj Holtec... cuando lo presento en el LCD
todo funciona muy bien, el reloj esta andando, pero quiero ponerlo en hora mediante rs232..., esta claro que yo envio caracteres ascii, pero el reloj trabaja en bcd, asi que me aparecen por ejemplo, el valor mas 30h, que es justamente el valor ascii... y lo raro, es que el reloj no lo actualiza, es decir, puede presentar valores superiores a 59... y en exadecimal...
alguno trabajo con estor RTC?

gracias

Norberto
Firmat - Santa Fe - Argentina

www.TodoPic.net

Solo se tiran piedras, al arbol que tiene frutos...

Conectado MGLSOFT

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 7912
RE: Manejo de bits de stop con PBP
« Respuesta #9 en: 05 de Marzo de 2003, 12:52:00 »
Al WAIT agregale un tiempo de espera (aconsejable unos 4 milisegundos) y una etiqueta donde saltar cuando no recibe ese caracter esperado, porque sino te va a parecer que se detiene el programa.
A mi me paso asi.
Todos los dias aprendo algo nuevo, el ultimo día de mi vida aprenderé a morir....
Mi Abuelo.

Desconectado Sebas22

  • PIC10
  • *
  • Mensajes: 34
RE: Manejo de bits de stop con PBP
« Respuesta #10 en: 05 de Marzo de 2003, 21:23:00 »
Uh ahora me perdi mas que antes...

Dos preguntas entonces:

1) Podrian darme un ejemplo de como colocar el tiempo de espera en el WAIT en un serin2?

2) Como le indico mediante un IF por ejemplo si el tiempo de espera expiró?

Saludos y gracias

Desconectado jorgeansuini

  • PIC18
  • ****
  • Mensajes: 340
RE: Manejo de bits de stop con PBP
« Respuesta #11 en: 07 de Marzo de 2003, 20:33:00 »
Buenas:

Podes ver algo en el soft del sim_gps que esta en el subforo de proyectos.Basicamente hay una instruccion serin2 que espera recibir un caracte y la espera es durante un certo tiempo.
Saludos
Jorge

Desconectado Sebas22

  • PIC10
  • *
  • Mensajes: 34
RE: Manejo de bits de stop con PBP
« Respuesta #12 en: 07 de Marzo de 2003, 22:49:00 »
Jorge ese ejemplo me viene como anillo al dedo, gracias!!

Sebas.