TODOPIC
Microcontroladores PIC => Todo en microcontroladores PIC => Mensaje iniciado por: XRaziel 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.
-
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
-
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.
-
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
-
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 .
-
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.
-
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 .