Autor Tema: como hago recepcion???  (Leído 1831 veces)

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

Desconectado CEAUGO

  • PIC10
  • *
  • Mensajes: 13
como hago recepcion???
« en: 23 de Marzo de 2008, 02:49:09 »
Hola a todos, pues les comento enque consiste mi prueba para luego preguntar. Debo hacer una conversion analoga digital y luego el valor de esa conversion enviarla por via serial a otro pic que luego este lo visualizara por una lcd, la parte de la conversion la tengo, pero estuve mirando que cuando lo envio por "#use rs232" no me envia todo el adres, supongo porque son 16 bits y la comunicacion serial es para 8 bits "supongo" entonces este es mi problema, estoy dividiendo el adres en adresh y adresl y los estoy enviando, pero no se como hacer el otro programa de la recepcion para recoger estos dos valores, espero haberme hecho entender. Muchas gracias por toda ayuda brindarme... ha utilizo el pic 18f452

Desconectado pocher

  • Moderador Local
  • DsPIC30
  • *****
  • Mensajes: 2568
Re: como hago recepcion???
« Respuesta #1 en: 23 de Marzo de 2008, 03:00:01 »
En la recepción usa make(16) (Une 2 int8 para formar un int16)

Un saludo

Desconectado gu1llermo

  • Colaborador
  • PIC16
  • *****
  • Mensajes: 217
Re: como hago recepcion???
« Respuesta #2 en: 23 de Marzo de 2008, 15:09:54 »
pocher yo para recibir dos bytes siempre hacía var16=256*var_high+var_low  :? complicando las cosas por no dejar  :mrgreen: pero verdad como tu dices es la mejor manera,
var16=MAKE16(var_high, var_low)

Saludos y gracias que también a mí me ha resultado útil tu aporte.  :mrgreen:

Desconectado CEAUGO

  • PIC10
  • *
  • Mensajes: 13
Re: como hago recepcion???
« Respuesta #3 en: 23 de Marzo de 2008, 23:32:15 »
En la recepción usa make(16) (Une 2 int8 para formar un int16)

Un saludo
---------------------------------------------------------------------------------------------------------------Hola te agradezco tu respuesta, nunca he manejado el make(16) y no comprendo muy bien como utilizarlo disculpa mi ignorancia, te pregunto en el programa de transmision debo mandar una variable de 16 bits donde se encuentre los dos adres, ya que he intentado mandar por #use rs232 16bits y no he podido; lo hice con putc(valor); valor es una variable de 16 bits pero solo me envia 8bits, en la parte de recepcion va lo que tu me comentas de make(16) (Une 2 int8 para formar un int16), gu1llermo dio este formato var16=MAKE16(var_high, var_low); no entiendo que debo hacer con var_high y var_low, bueno les agradeceria un poco mas de ayudita y de nuevo perdon por mi ignorancia.... Muchas gracias....


Desconectado gu1llermo

  • Colaborador
  • PIC16
  • *****
  • Mensajes: 217
Re: como hago recepcion???
« Respuesta #4 en: 24 de Marzo de 2008, 10:25:14 »
Efectivamente no puedes enviar directamente una variable de 16 bits (2 bytes) por eso tienes que enviar primero 1 byte y luego el otro, es decir:

Pic Transmisor:
int16 valor;// Variables de 16 bits en donde se guarda el resultado de la conversión AD
int8 var_low, var_high;/* El resultado de la conversión AD tienes que separarlos en byte bajo y byte alto*/

/* Lees tu conversión AD y guardas el resultado en la variable "valor"*/

var_low=make8(valor, 0);// Guardas el byte bajo en var_low
var_high=make8(valor, 1);// Guardas el byte alto en var_high

putc(var_low);// Envías byte bajo
putc(var_high);// Envías byte alto

En el pic receptor:

var_low=getc();// recibimos  el byte bajo
while (!kbhit()); Mientras no haya datos queda esperando
var_high=getc();// recibimos el byte alto

valor=make16(var_high, var_low); // Unimos los dos bytes en uno.

Esto es un ejemplo pero te recomiendo que revises la ayuda ó help del CCS para más información de los comandos y busques ejemplos de recepción de datos en el foro que hay bastantes.

Saludos.