TODOPIC
Microcontroladores PIC => Lenguaje Basic para microcontroladores PIC => Mensaje iniciado por: khasistos en 10 de Junio de 2004, 17:28:00
-
Hola
Mi pregunta es si dispongo de pulsos (4) que varian en su ancho de 2 a 10 mls (salida de los remotos futaba de aeromodelimo) y quisiera enviarlos por la salida serie de un 18 f877 por ejemplo ,cual seria el procedimiento a seguir tomarlos por un pin de entrada con la instruccion pulsein por ej y ese dato enviarlo a la serie de salida .Las paginas de esto las he visto pero queria hacerlo yo con el pro o el plus y solo necesito saber cual es el metodo adecuado cunado tengo pulsos de entrada y los quiero sacar por la usart??
Gracias
khasistos
-
Lo que no llego a entender es el tema de los pulsos...
si te entran 4 pulsos digitales...
tendrías 4 bytes...
Espero no equivocarme con mi explicación porque como te comento, no entiendo realmente como lees y almacenas los datos de entrada...
bueno, pues si tienes esos 4 bytes...
creo que sería interesante, almacenarlos en un array de byte
y tirarlos al puerto serie, usando la usart una vez que lo tengas lleno de los valores leidos
entrada var byte[4]
cont var byte
inicio:
cont =4
while cont > 0
pulsin portb.1,1,entrada[cont -1] "almacena el valor del pulso alto leido
cont = cont -1
wend
for cont = 0 to 3
hserout[dec(entrada(cont))] "manda el valor decimal al serial
next
hserout[10] " salto de linea
goto inicio
Espero no haber liado mas tu mente... Si te refieres a otra cosa con tu pregunta, intentaré ayudarte en lo que esté en mis manos...
-
Abago, me temo que lo que le está entrando no son 4 bytes, sino una cadena PWM de modulación por ancho de pulso, que es como se maneja un servo de modelismo.
Si esto es así, habría que definir exactamente qué quieres enviar por el puerto serie, ¿el número de pulsos?, ¿un número que indique el ancho de pulso en ms?, ¿el % de duty leído en cada momento?
Una vez identificado, sí se podría usar el programa de Abago para enviarlo al puerto serie.
-
HOLA .
efectivamente nocturno tiene razon es una cadena de pulsos 4 mas uno de frame , esos 4 tienen ancho variable de acuerdo a como se manejen los potenciometros ya les digo que son de 2 a 10 ms de acuerdo a la posicion del control ,El tema es como los puedo leer y /o almacenar y TIRARLOS a la USART pues el programa simulador espera encontrar estos datos en formato serie a 19200.El programa ya esta hecho en hex pero curiosidad mia quisiera hacerlo en pro o en plus y solo le s pido la teoria de como hacerlo, en definitiva si tengo un TREN de pulsos cual seria la manera correcta de leerlos para luego ser introducidos a serout eso es todo.Lo que veo en el osciloscopio en la salida serie parecen ser los mismos pulsos mas los de inicio stop ,paridad etc es decir adecuados al protocolo serie .
GRACIAS Abago/Nocturno POR LAS RESPUESTAS
khasistos
-
Imagino que quieres hacer un adaptador para poder utilizar un simulador de vuelo en el PC controlado por la emisora de aeromodelismo.
Sin embargo, creo que la clave está en saber cómo hay que entregarle los datos al puerto serie para que el simulador entienda lo que queremos.
¿No sabes de ningún sitio en donde venga documentado?
-
EStoy un poco perdido con el tema de los pulsos....
pero si vamos documentando un poco mas ampliamente el tema, creo que no debe ser dificil...
Las comunicaciones serie, son muy sencillas, pero donde me pierdo es en el tema de los trenes de pulsos...
Tendríamos que conocer la trama de datos adaptada de los pulsos...
-
Hola aqui algo de ayuda :Protocol description
FMS cable uses the serial interface, to transmit data from TX to computer. For proper work, COM-port must be configured in following way:
- 19200 baud
- 81N (8-bit data, 1 stop bit, no parity)
- RTS set to HI (+10v)
- DTR set to LO (-10v)
TX channel data been combined into packets and transmitted to computer. Data is combined into packets for each PPM cycle:
- Every packet starts with 0xFF
- For each channel, 1 byte been added to packet (after 0xFF).
Channel byte value vary from 0 to 0xFE. Table below describe dependency between pulse length and channel data.
pulse length converted to
760 uS 0x00
1528 us 0x80
2284 us 0xFE
each 1 in data is equal to 6 uS (+/- 6 uS in signal => +/- 1 in data).
EXAMPLE:
pause 0xFF 0x80 0x80 0x80 0x80 pause 0xFF 0x80 0x80 0x80 0x80 ...
That means, we have 4-channel transmitter, and all sticks are now in the midle position.
(!) Note, when transmitter is off, cable sends to computer 0xFF bytes constantly. That helps to determine, that cable itself is ok.
-
Justo lo que hacía falta, Khasistos.
Bueno, pues con la información que pasó Abago para enviar datos al puerto serie y con la traducción de PWM a numérico que tú has aportado sólo nos queda averiguar cuál es el ancho de los pulsos que están entrando.
Para ello está la instrucción PULSIN que, según la definición del manual se comporta así:
PULSIN Pin,State,Var
Mide el ancho del pulso en Pin . Si State es cero se mide el ancho de un pulso bajo . Si State es uno , se mide el ancho de un pulso alto . El ancho medido se coloca en Var . Si el flanco del pulso no llega , ó el ancho del pulso es demasiado grande para ser medido , Var=0 . Si se usa una variable de 8 bit , solo se usan los bits menos significativos de la medición de 16 bits . Pin puede ser una constante , 0 - 15 , ó una variable que contenga un número de 0-15 (p.ej. B0) ó un número de Pin (p.ej. PORTA.0)
La resolución de PULSIN depende de la frecuencia del oscilador . Si se usa un oscilador de 4 Mhz , el ancho de pulso se obtiene en incrementos de 10 us .Si se usa un oscilador de 20 Mhz ,el ancho de pulso tendrá una resolución de 2 us .Definir un valor de OSC no tiene efectos sobre PULSIN . La resolución siempre cambia con la velocidad del oscilador en uso .
PULSIN PORTB.4,1,W3 ´ mide el pulso alto en pin 4 guardado en W3
No obstante, aquí tienes un ejemplo de su uso:
http://www.madoverlord.com/Robots/PWM.t
Creo que ya lo tienes todo; cuéntanos tus progresos.
Un saludo
-
Hola gracias por la ayuda,tal como dije anteriormente el equipo lo tengo funcionando pero lo queria hacer yo mismo con plus y ahora gracias a vuestros consejos intentare hacerlo,si lo logro lo posteo por si a alguien le interesa el simulador y el programa.
Un gran saludo
khasistos
-
Mantenos informados por si hay algún problema, y podemos ayudarte..