Autor Tema: Direccionamiento serial  (Leído 2542 veces)

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

Desconectado XRaziel

  • PIC10
  • *
  • Mensajes: 15
Direccionamiento serial
« en: 27 de Octubre de 2005, 08:44:00 »
Hola amigos tengo la siguiente inquietud  deseo mediante trasnmision serial controlar otro dispositivo pero quiero darle direccion osea que sepa a donde estoy enviando la orden lo que he podido hacer hasta ahora es en una palabra la mitad dejarla como direccion (4bits) y la otra como orden (4bits restantes) pero lo que me gustaria es enviar 8 bits de direccion y 8 bits de control pero no se ocurre como generar la rutina  si alguno sabe o lo ha hecho por favor envienme la informacion  el pic es el 16f84 y mi lenguaje assembler. gracias.

Desconectado RaDoN

  • Moderadores
  • PIC24H
  • *****
  • Mensajes: 1498
RE: Direccionamiento serial
« Respuesta #1 en: 27 de Octubre de 2005, 09:44:00 »
Philips ya se a encargado de hacer el protocolo I2C, no te partas la cabeza inventando un nuevo protocolo, lo que puedes es hacer, o bien usar un PIC con I2C por hard o implementarlo por soft, que seguro que por la red hay rutinas hechas.

El protocolo es mas o menos lo que tu deseas, una comunicación serial por difusión, es decir, que en un bus plantea una info y todos los dispositivos hacen caso omiso a esta excepto al que direccionas que se da por aludido Fumador
Si juegas contra el mejor, pierdes como los demás.

Desconectado XRaziel

  • PIC10
  • *
  • Mensajes: 15
RE: Direccionamiento serial
« Respuesta #2 en: 27 de Octubre de 2005, 10:08:00 »
Hola radon la cuestion es que el i2c no me sirve por que lo mio es serial asincronico o sea quiero por un hilo transmitir  toda la informacion y en este caso el i2c no me vendria la idea es interconectar varios pic cada uno con su direccion y enviarle la orden al que le corresponda ,mi idea es usar el puerto A  como direccion y todo el puerto B como control actualmente lo que hago funciona pero necesito de 2 micros para controlar 8 salidas.

Desconectado kuauhtemok

  • PIC16
  • ***
  • Mensajes: 116
RE: Direccionamiento serial
« Respuesta #3 en: 27 de Octubre de 2005, 11:30:00 »

A ver para aclarar dices que el Maestro debe mandar 16 bits... 8 para datos (control) y 8 para direccion...  ???

Se me ocurre esto

Lo primero es mandar los ocho bits de datos (control segun tu) y cada uno de los esclavos lo guarda en un buffer. Acabada esta transferencia  vuelves a mandar 8 bits pero ahora son los de direccion... igual cada esclavo lo guarda en un buffer...
Entonces cada esclavo por su cuenta hace una rutina de comparacion entre un valor que ya tenga establecido como su direccion y el valor almacenado en el buffer de direccion....solo si y unicamente si son iguales los valores de direccion (el que tiene el esclavo guardado en una variable y el del buffer de direccion de este esclavo) entonces el esclavo correspondiente ejecuta la ORDEN que tiene almacenado en el buffer de DATOS (control).

Entonces las cadenas de datos siempre son las mismas... primero los datos y despues direccion... eso es para que no se confundan los esclavos acerca de la secuencia.

Cuando vuelvas a mandar los datos solamente tienes que sobreescibir los buffers de datos y de direccion de cada esclavo y repetir el procedimiento antes mencionado.

Espero te sirva de algo...  segun eso entendi que es lo que deseas... si no pues dinos Flash
La felicidad no es mas q la ausencia momentanea del dolor

Desconectado XRaziel

  • PIC10
  • *
  • Mensajes: 15
RE: Direccionamiento serial
« Respuesta #4 en: 27 de Octubre de 2005, 14:04:00 »
chip chip chip esa es la idea la verdad lo pense al reves primero la direccion depues el dato o control la cosa es como genero esa rutina en assembler ,o sea como le indico que  a los 8 bits no  se acaba la palabra y que falta una secuencia o estoy muy cerrado de mente pero no me resulta .

Desconectado dogflu66

  • Moderadores
  • DsPIC30
  • *****
  • Mensajes: 3549
RE: Direccionamiento serial
« Respuesta #5 en: 27 de Octubre de 2005, 14:48:00 »
Esto seria un protocolo muy simple, recibes un byte y activas una variable de control a 1… cuando te llega el próximo byte como la variable de control esta a 1 sabes que es el dato… procesar la información y pones la variable de control a cero…. y listo para comenzar de nuevo.
Otro seria envías un dato de arranque o nombre de la red…. El dato es recibido por todos y almacenado en la primera posición de memoria, activas una variable indicando que tienes el valor 1, recibes el siguiente dato que puede ser el numero de periférico, incrementas la variable y gurdas el dato y asi sucesivamente hasta completar toda la trama y cuando la variable llega a un numero determinado, la borras y procesas la información... e incluso podrías mandar un byte de control que podría ser la suma de todos los anteriores….

…. esto es lo que yo entendí que quieres.
Saludos desde Granada, España.

Desconectado XRaziel

  • PIC10
  • *
  • Mensajes: 15
RE: Direccionamiento serial
« Respuesta #6 en: 27 de Octubre de 2005, 15:48:00 »
ufff chungale socio si la verdad es que me estaba ahogando en un vaso de agua si la cosa era mas bien simple pero me fuy por otro lado bueno a todos nos suele suceder solo se remite a comparar el registro y nada mas si es verdadero ejecuta la rutina del segundo registro y chao realmente sensillo entodo caso gracias amigos por el interes que prestaron .