TODOPIC
Microcontroladores PIC => Todo en microcontroladores PIC => Mensaje iniciado por: vlad67 en 19 de Octubre de 2004, 08:22:00
-
Ke tal Amigos.. Me encuentro realizando un microbot vigilante teleoperado como proyecto de grado "Tecnología de Telecomunicaciones" necesito controlar el microbot via RF, voy a utilizar un Tx TLP434A y un Rx RLP434A y trabajan modulando en ask +o- a 2400bps podría ser, tengo ke enviar y recibir unas 12 o 13 señales diferentes ke me comanden el micro así ke mi caso es:
Ke código generar por cada señal, y cómo hacer para ke el pic en el receptor me lo reconozca y así según el código hacer una tarea por cada uno....
Perdón si está muy repetida la pregunta, pero no soy muy experto en esto....
Thanks ![Vacilando Vacilando]()
Bye...
Como no se puede adjuntar nada ponog el link Datos del TLPRLP434A por si alguien me kiere echar una mano...
-
Hola, lo que te hace falta es definir un protocolo de comunicación.
Por ejemplo yo tengo un PIC con salida RS-232 a 1200,N,8,1 y quiero que:
-Lea uno de 5 canales AD y me devuelva el valor.
-Reciba un valor y lo envíe a uno de dos salidas PWM.
-Lea una de 8 entradas digitales y me devuelva el valor.
-Reciba un valor y lo envié a uno de 8 salidas digitales.
En mi caso defino que cada mensaje o paquete de comunicación entre la PC y el PIC, estará formado por 4 bytes:
-Un byte de inicio del paquete, ":".
-Un byte de función, según los siguientes valores
---01-Leer entrada analogica.
---02-Escribir salida PWM.
---03-Leer entrada digital.
---04-Escribir salida digital.
-Un byte de numero de canal, que indica el número de entrada o salida que se quiere leer o escribir.
-Uno o dos bytes de datos, que se usan solo cuando con las funciones de escritura (primero el LSB y luego el MSB, si corresponde).
-Dos bytes de fin del paquete, <CR> <LF> (retorno de carro y avance de linea)
Entonces si quiero leer la entrada analógica 0, envio:
":"+0x01+0x00+<CR>+<LF>
Si quiero escribir la salida PWM 1, que es de 10 bits, con el valor 0x01FF:
":"+0x02+0x01+0xFF+0x01+<CR>+<LF>
Si quiero leer el valor de la entrada digital 7, envío:
":"+0x03+0x07+<CR>+<LF>
por ultimo si quiero escribir un 1 en la salida digital 6, envio:
":"+0x04+0x06+0x01+<CR>+<LF>
Esta es un ejemplo que uso muy seguido. Para que el programa del PIC reconozca el protocolo por lo general utilizo una máquina de estado, cuyo estado cambia de acuerdo al byte recibido por la USART.
Cada vez que se recibe un byte por la entrada serial se ejecuta lo siguiente.
El estado 0 es esperar el byte ":", que indica el inicio del paquete. Si se recibe ese byte, se pasa al estado 1.
El estado 1 es recibir el byte de función, 0x01 a 0x04, si se recibe otro byte, se trata de un comando desconocido, se decarta el paquete y se vuelve al estado 0. Sino guarda el byte de función y se pasa al estado 2.
El estado 2 es recibir el numero de entrada/salida y guardarlo. Ahora si el byte de función era de lectura, se pasa al estado 5 (recibir el CR). Sino se pasa al estado 3 para recibir uno o dos bytes a escribir.
El estado 3 es recibir el byte de dato a escribir y guardarlo, Si el byte de numero de entrada/salida indica una salida de mas de 8 bits, se pasa al estado 4 para recibir el otro byte, sino se pasa al estado 5 (recibir el CR)
El estado 4 recibe el MSB del dato a escribir para las salidas de más de 8 bits y lo guarda. Luego se pasa al estado 5 (recibir el CR)
El estado 5 espera recibir el CR, si se recibe el CR se pasa al estado siguiente, recibir el LF, sino se descarta todo el mensaje y se vuelve al estado 0.
El estado 6 espera recibir el LF, si se recibe el LF, se valida el paquete y se ejecuta el comando de acuerdo a los bytes de función, nro de entrada/salida y datos, luego se vuelve al estado 0 para esperar el proximo comando, si no se recibe el LF, se descarta todo el paquete y se vuelve al estado 0.
Bueno espero que te sirva, y saludos.
Téc. Claudio J. Pérez
Ciberar-Sistemas & Desarrollos
Jujuy-Argentina
-
Buen desarrollo Tec_Claudio, interesante para hacer como proyecto.
Unas preguntillas por curiosidad.
¿Qué lenguaje usas en la PC? ¿y en el PIC?
¿Qué tiempo colocas en la PC entre el envio de un byte y el siguiente?¿o los mandas todos juntos?
Un saludo
-
Gracias Men.. voy a estudiarlo y luego te hago saber mis dudas...
![Sonrisa Gigante Sonrisa Gigante]()
BYe..
-
Impresionante el panteamiento Tec_Claudio.
Tu explicación ha sido muy interesante.
Sobre el tema de la transmisión temporizada de la cadena del protocolo, creo que sería suficiente mandarla de una sola vez...
El pic, podrá interpretarla mucho mas rápido que el tiempo de recepción de la usart... ![Sonrisa Gigante Sonrisa Gigante]()
Pero para gustos los colores... todo depende de la mente del programador...
-
Hola,
En respuesta a la pregunta de Pocher:
El programa en la PC por lo general lo hago en VB6 o en Delphi3, o incluso para hacer algunas pruebas rápidas uso el viejo Qbasic!. El programa en el PIC lo hice siempre en assembler con el MPLAB, pero hace poco comencé a usar el compilador en C PCM de CCS.
Con respecto a la demora entre bytes desde la PC, en realidad no hace falta ninguna, por ejemplo en VB envío directamente la cadena:
MSComm1.Output ":"+Chr$(01)+Chr$(00)+Chr$(13)+Chr$(10)
En realidad la clave está en que la rutina de recepción del PIC reciba un caracter por vez, haga algo muy corto y luego salga de la interrupción. Incluso recibiendo los bytes por soft (sin USART) la técnica funciona muy bien.
Saludos.
Téc. Claudio J. Pérez
Ciberar-Sistemas & Desarrollos
Jujuy-Argentina
-
Uno de mis pasatiempos favoritos son las comunicaciones RF yo hice un dispositivo movil tipo telefono celular que enviaba y recibia mensajes de texto entre un PC y un 877 via RF modilacion ASK contaba con sistema messenger y todo!!!.... si te interesa te envio la fuente de la aplicacion q hice en visual basic y el ASM....
![Payaso Payaso]()
![Payaso Payaso]()
-
una base muy iportante para la gente que empieza y tiene conocimientos básicos, sería dejar el código fuente de una copia del hyperterminal de windows...
Yo hace tiempo descagué los fuentes en VB6, y hasta trabajé con ellos haciendo las modificaciones pertinentes para mis propósitos....
Pero no se donde demonios
los he podido dejar.... y mira que he rebuscado entre los 500gb de disco, pero no he sido capaz de localizarlos....
ahora, me tengo que conformar con el hyperterminal de windows...
porque apenas tengo tiempo de ponerme a buscar las fuentes de nuevo por la red...
de todos modos, si en algún momento los localizo... avisaré...
![Fumador Fumador]()
PWRINVITRO si tus fuentes tienen algo que ver con lo que comento... creo que pueden llegar a ser interesantes para muchísima gente...
-
Este post deberia estar colgado en las alturas... es super!!!... amigo PWRINVITRO, tendrias la gentileza de pasarme el codigo que mencionas... me seria de muchisisima utilidad... a los demas compañeros... LAS MIL GRACIAS!!! por dejar sus experiencias para que novatos como yo puedan leerlas y aprender de las mismas... Realmente sin palabras mas que agradecimientos! ... Saludos!!!!
-
SALUDOS!!! NO LOS PUEDO POSTEAR PORQ SON MUY GRANDES PERO PUEDO ENVIARLES A SUS CORREOS TODO EL FUENTE DE VISUAL BASIC Y TODO EL FUENTE DE ASM DE ESE PROYECTO!!!...
![Sonrisa Gigante Sonrisa Gigante]()
![Sonrisa Gigante Sonrisa Gigante]()
-
Pues a mi me seria super util.. ya me has agregado a tu correo... ta habia preguntado por el LCD de nokia.. ... espero a que ingreses y hablamos. Saludos!
-
No olvides si vas a usar transmision por radiofrecuencia el uso de los bytes de preambulo para darle tiempo al "slicer" del receptor para que se ajuste y posteriormente transmitir usando modulacion, o codigo, manchester.
Si no lo haces asi no recibiras correctamente los primeros bytes y a no ser que te preocupes mucho de ecualizar los datos enviados para conseguir un promedio de 50% de ceros frente a unos tendras grandes problemas de transmision / recepcion
Para mas datos:
http://miarroba.com/foros/ver.php?foroid=8826&temaid=870711
El protocolo que quieras crearte para comunicarte, una vez que hayas tenido en cuenta lo anterior, será lo de menos.
-
Gracias, estoy viendo toda la info que he localizado... no soy muy ducho en el tema.. cualquier duda les consulto
... Saludos
!
-
http://www.todopic.com.ar/foros/index.php?topic=4459.0 (http://www.todopic.com.ar/foros/index.php?topic=4459.0)
El enlace en el nuevo foro a la explicación de la codificación Manchester de MarquesSalsero
-
PWRINVITRO:
Para tu comunicacion has usado modulos prefabricados de rf, o has hecho tu el circuito...,
me interesa hacer una comunicacion por RF de baja potencia, pero preferentemente sin
esos modulos...
Desde ya gracias por responder.
Saludos.
Alejandro.
-
Hola
Para poder usar los modulos de laipac, debes enviar una byte para que se engache el receptor. Yo tuve que crear un protocolo el cual consiste en dos byte de inicio, el cual era enviar un caracter cualquiera yo use ":" dos puntos, luego de eso envias los datos que tu deseas, por ultimo un byte de parada para indicar fin de transmision y eso es todo. Tuve que hacer muchos ensayos con la comunicacion entre PIC. Si lo vas ha hacer con un PC la cosa cambia un poco, todavia no he hecho comunicacion PIC->PC, Tengo que probar