Autor Tema: Como Generar Pulsos De 80us  (Leído 3290 veces)

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

Desconectado Gaudizuniga

  • PIC10
  • *
  • Mensajes: 30
Como Generar Pulsos De 80us
« en: 16 de Noviembre de 2005, 17:18:00 »
Cono hago para generar pulsos de 80us con el 16f84??

Desconectado LordLafebre

  • Moderador Global
  • DsPIC30
  • *****
  • Mensajes: 3529
    • Micros & micros
RE: Como Generar Pulsos De 80us
« Respuesta #1 en: 16 de Noviembre de 2005, 21:39:00 »
Hola:

Prueba esto

Loop:
high 0
pauseus 80
low 0
pauseus 80
goto loop

Desconectado Gaudizuniga

  • PIC10
  • *
  • Mensajes: 30
RE: Como Generar Pulsos De 80us
« Respuesta #2 en: 21 de Noviembre de 2005, 15:51:00 »
Hola. Es buena la idea, pero ocupo que los pulsos tengan mayor precision. Lo que quiero hacer realmente es que el pic reconozca una serie de pulsos de 80Us que yo le mande. Estos pulsos me los genera un control remoto de tv.

Desconectado Artifox

  • Colaborador
  • PIC18
  • *****
  • Mensajes: 455
    • Quadbot
RE: Como Generar Pulsos De 80us
« Respuesta #3 en: 21 de Noviembre de 2005, 22:46:00 »
Hola, en PBP hay un comando para medir tiempos en alto o en bajo, es el b]PULSIN[/b] Con eso mides la duracion de un pulso en us, lo minimo para poder leer un pulso con un cristal de 4MHz es de 10us. Por ejemplo:

PULSIN PORTB.4,1,W3

Lee el pulso en alto en el pin 4 del Puerto B y lo guarda en la variable W3.

Espero te sea de ayuda. Nos vemos Sonrisa Gigante
Video Quadbot
Saludos desde mi querido Perú.
Si realmente queremos que el mundo cambie debemos empezar por nosotros mismos... ;)

Desconectado Gaudizuniga

  • PIC10
  • *
  • Mensajes: 30
RE: Como Generar Pulsos De 80us
« Respuesta #4 en: 22 de Noviembre de 2005, 17:32:00 »
He tratado de utilizar PULSIN y ver lo que mido mediante un LCD para comprobar que efectivamente se esta midiendo correctamente pero no logro obtener una relacion si quiera cercana. En PORTB.4 tengo un reloj de 4Hz, es decir el pulso en alto es de 125ms. Y en el LCD me aparece una medicion de 23, lo que ya no se si son 23 ms o 23 us o que representa ese 23???


DEFINE OSC 20
A VAR BYTE
A=0
inicio:
    LCDOUT $FE,1,#A
LOOP:
   pulsin portb.4,1,A
   lcdout $FE,1,BIN A
   LCDOUT $FE,$C0, #A
   goto LOOP    
end              

Desconectado Artifox

  • Colaborador
  • PIC18
  • *****
  • Mensajes: 455
    • Quadbot
RE: Como Generar Pulsos De 80us
« Respuesta #5 en: 23 de Noviembre de 2005, 13:44:00 »
Hola, me parece que tienes unas cosas un poco mal.

Primero, si quieres medir un pulso tan grande (125ms) debes hacerlo con un cristal tan rapido, pues para ese comando a 20MHz hace incrementos de 2us, es decir para poder capturar todo el valor, sera como 125000us/2us que es 62500 que es el valor que deberia tener la variable, pero como es de 1 byte solo guardara el byte menos significativo. Puedes intentar con una variable WORD o tambien cambiando de cristal a uno de 4MHz, pues con este trabajaria mejor haciendo incrementos de 10us en 10 us, obteniendo 12500, tambien tendria que ser usando una variable WORD.

Otra cosa, me parece que estas usando un # en el LCDOUT y eso hace que mandes en ASCII el valor, seria mejor que lo muestres en DEC o BIN.

Espero haber sido claro, cualquier cosa avisas Rebotado
Video Quadbot
Saludos desde mi querido Perú.
Si realmente queremos que el mundo cambie debemos empezar por nosotros mismos... ;)

Desconectado Gaudizuniga

  • PIC10
  • *
  • Mensajes: 30
RE: Como Generar Pulsos De 80us
« Respuesta #6 en: 25 de Noviembre de 2005, 08:19:00 »
Bueno, creo que mi primer problema es que no entiendo claramente como es que funciona la instruccion PULSIN, ya que no encuentro relacion entre los tiempos que quiero manejar y los que tu planteas. Seria conveniente si pudieses explicar un poco mas sobre esa instruccion. Gracias!!

Desconectado Artifox

  • Colaborador
  • PIC18
  • *****
  • Mensajes: 455
    • Quadbot
RE: Como Generar Pulsos De 80us
« Respuesta #7 en: 25 de Noviembre de 2005, 08:27:00 »
Hola, un poco para que entiendas como funciona el comando puedes ver este manual en español de la pagina de Todopic

http://www.todopic.com.ar/pbp_sp.html#pulsin

Revisalo y me avisas si no entiendes para darte una explicada... Un abrazo
Sonrisa Gigante
Video Quadbot
Saludos desde mi querido Perú.
Si realmente queremos que el mundo cambie debemos empezar por nosotros mismos... ;)

Desconectado Gaudizuniga

  • PIC10
  • *
  • Mensajes: 30
RE: Como Generar Pulsos De 80us
« Respuesta #8 en: 25 de Noviembre de 2005, 08:34:00 »
OK, LO VOY A CHECAR Y LUEGO TE AVISO. GRACIAS DE ANTEMANO.

Desconectado Gaudizuniga

  • PIC10
  • *
  • Mensajes: 30
RE: Como Generar Pulsos De 80us
« Respuesta #9 en: 25 de Noviembre de 2005, 08:40:00 »
OK, SI LO ENTIENDO PERO POR QUE CUANDO QUIERO SIMULAR Y COMPROBAR QUE EFECTIVAMENTE EL ANCHO DEL PULSO QUE YO MANDO DE ENTRADA ES EL QUE RECIBE Y RECONOCE EL PIC CON EL MISMO ANCHO DE PULSO.

Desconectado Artifox

  • Colaborador
  • PIC18
  • *****
  • Mensajes: 455
    • Quadbot
RE: Como Generar Pulsos De 80us
« Respuesta #10 en: 25 de Noviembre de 2005, 09:37:00 »
Como??? Lo estas simulando (en proteus supongo) tienes q fijarte que el cristal que selecciones sea el correcto, de otra manera te dara otro valor del que esperas... Otra forma de hacerlo mas practica es que una vez detecte el pulso en alto, lo muestres en uno de los puertos con leds o con un LCD, asi vas determinando que valores tiene tu señal en la realidad.

Cuando llegue a hacer algo similar con un control remoto, era diferente de lo que yo veia en un osciloscopio, a lo que recibia mi circuito. Por lo que finalmente para poder recibir los pulsos opte por medirlos uno a uno. Algo pesado, pero funciono...

Espero puedas completar el tuyo.  Un abrazoRebotado
Video Quadbot
Saludos desde mi querido Perú.
Si realmente queremos que el mundo cambie debemos empezar por nosotros mismos... ;)

Desconectado Gaudizuniga

  • PIC10
  • *
  • Mensajes: 30
RE: Como Generar Pulsos De 80us
« Respuesta #11 en: 29 de Noviembre de 2005, 08:28:00 »
Estaba viendo un codigo que pusiste en julio en referencia al uso de PULSIN, es el sig.

Por ejemplo para recibir la data 1001 recibia lo siguiente: estado inicial 0v, pulso en alto de 1.7ms (1), pulso en bajo de 0.3ms,pulso en alto de 0.5ms(0),pulso en bajo de 0.3ms,pulso en alto de 0.5ms(0),pulso en bajo de 0.3ms, pulso en alto de 1.7ms(1).... De esa manera mas o menos venian los pulsos, para lo cual yo recibia de esta manera:

Id_Datos:
pulsin porta.4,1,time
select case time
case 30,31,32,33,34,35,36,37,38,39,40
estado=0
case 140,141,142,143,144,145,146,147,148,149,150
estado=1
end select
tmp.0=estado
tmp=tmp<<(counter-1)
dato=dato+tmp
counter=counter-1
return

Aqui la parte que no entiendo es como determinaste que tu estado en cero es 30, 31....40. Y asi mismo tu estado en uno 140, 141...150. si tus pulsos en uno son de 1.7ms y cero 0.5ms. Podrias explicar un poco mas sobre ello. Espero y no sea mucha molestia. Gracias de antemano.
   Mis pulsos en alto son de 1.6ms y 0.8ms, 1 y 0 respectivamente.

Desconectado Artifox

  • Colaborador
  • PIC18
  • *****
  • Mensajes: 455
    • Quadbot
RE: Como Generar Pulsos De 80us
« Respuesta #12 en: 29 de Noviembre de 2005, 09:18:00 »
Hola, con respecto a los tiempos... como determine los ceros y unos... lo que pasa es que la señal que yo obtenia del control remoto empezaba asi: Normalente en alto (H) luego recibia un pulso en bajo bastante largo, luego un pulso en bajo(L), luego otro pulso en alto y asi sucesivamente HLHLHLHLHLHLHLHLHLH.... Y me di cuenta que el tiempo que estaba entre pulsos en bajo, es decir los tiempos en alto eran casi iguales todos los casos, y lo que cambiaba en si para determinar los ceros y unos era el tiempo que se mantenian en bajo, entonces logre deducir que para u tiempo en bajo de 0.5ms capturaba un 0 y para uno de 1.7ms capturaba un 1.

Hasta ahi no hubo mucho problema, pero al quere implementarlo en el PIC no me funcionaba con los tiempos que yo asumia deberian ser es decir los valores que le correspondian a esos tiempos. Por lo que finalemente tuve que optar por empezar a medir cada uno de los tiempos con el mismo PIC. ¿Como? pues primero capture el primer gran pulso, y el tiempo de captura con PULSIN lo mostre en LED"s de manera que podia saber cuanto valia el tiempo, actualice en mi programa, para luego detectar el pulso en bajo uqe era casi constante, este lo ignore pues no lo necesitaba, luego empece con el primer valor que podria ser un 0 o un 1, hice lo mismo mostrandolo en los led"s y con ello capture el 1 o 0, actualice en mi codigo para capturar el que me faltaba, ignorando los que ya conocia... hasta que al final pude idenificar el 1 del 0, ahi me tuve que poner a hacer la decodificacion, es decir ver que vaores enviaba el control remoto para cada tecla...

Fue bastante tedioso, pero me funciono. Espero que mi explicacion te halla servido.Sonrisa Gigante

Nos vemos. Un abrazo Rebotado
Video Quadbot
Saludos desde mi querido Perú.
Si realmente queremos que el mundo cambie debemos empezar por nosotros mismos... ;)