Autor Tema: Rutina para convertir byte en tiempo  (Leído 2061 veces)

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

Desconectado chipeater

  • PIC10
  • *
  • Mensajes: 9
Rutina para convertir byte en tiempo
« en: 21 de Diciembre de 2006, 13:16:09 »
Hola... tengo un problema dicifil... al menos para mi..
Necesito convertir un byte en tiempo, me explico:
Quiero cargar un byte a un registro y llamar a una rutina que dure exactamente tantos pasos como el valor del registro cargado, osea que si cargue 16 en el registro, que la rutina dure 16 uS (trabajo a 4Mhz) y en MPLAB
Aparenta ser facil, solo decrementando el numero, pero no olvidar que la orden DECFSZ jala dos pasos, no solo uno.
Seria chevere si pueden ayudarme.
Gracias de antemano, desde Peru....
Alex Rojas.

Desconectado maunix

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 4751
    • Mi Sitio Web Personal
Re: Rutina para convertir byte en tiempo
« Respuesta #1 en: 21 de Diciembre de 2006, 13:37:59 »
Hola... tengo un problema dicifil... al menos para mi..
Necesito convertir un byte en tiempo, me explico:
Quiero cargar un byte a un registro y llamar a una rutina que dure exactamente tantos pasos como el valor del registro cargado, osea que si cargue 16 en el registro, que la rutina dure 16 uS (trabajo a 4Mhz) y en MPLAB
Aparenta ser facil, solo decrementando el numero, pero no olvidar que la orden DECFSZ jala dos pasos, no solo uno.
Seria chevere si pueden ayudarme.
Gracias de antemano, desde Peru....
Alex Rojas.

Sería importante que hables de qué precisión estas hablando, es decir si quieres una precisión de 1useg en pasos de 1useg, la respuesta con una única rutina que resuelva todos los casos es un rotundo "no".    Si quieres precisión de 1useg deberás hacer rutina de paso de 200nseg por ejemplo , osea utilizar un clock de 20Mhz.  Aún así es poco probable que consigas una rutina que sea 100% efectiva para todos los valores que le puedas pasar. 

Sumado a eso no se porqué requieres semejante precisión pero si es para algo tan super preciso, debieras saber que debes comenzar por compensar en temperatura a tu pic y a su oscilador.

Tal vez si nos dices qué es lo que necesitas resolver te podamos mostrar otra forma de resolver tu problema.

Saludos



- La soberbia de un Einstein es entendible.. la de un salame es intolerable (A.Dolina)
- En teoría no hay diferencia entre la teoría y la práctica. En la práctica... si la hay.
- Lee, Lee, Lee y luego pregunta.(maunix)
- Las que conducen y arrastran al mundo no son las máquinas, sino las ideas (V. Hugo)
- Todos los hombres se parecen por sus palabras; solamente las obras evidencian que no son iguales.(Moliere)
- Todo debería ser hecho tan simple como sea posible pero no mas simple que eso.(A.Einstein)

Desconectado chipeater

  • PIC10
  • *
  • Mensajes: 9
Re: Rutina para convertir byte en tiempo
« Respuesta #2 en: 21 de Diciembre de 2006, 14:00:05 »
Ok..Ok..  explicare todo..
Lo que requiero es calibrar unos tacometros que miden frecuencias altas, asi que construyo un equipo que pueda generar ondas cuadradas usando leds, desde 1 rpm hasta 100000 rpm, con cosas que ya tengo dominadas como un teclado, un lcd, etc. El problema se presenta en la conversion de rpms a periodo, donde tengo que generar delays variables, cuyas variables cambian con los numeros presionados en el lcd.
Por lo de la compensacion de temperatura ya lo probe para 100000 rpms con un delay de 300 us y funciona bacan, asi  que supongo que no necesito hacerla.
Por favor, si pueden ayudenme......

Desconectado elreypic2

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1297
Re: Rutina para convertir byte en tiempo
« Respuesta #3 en: 21 de Diciembre de 2006, 14:49:37 »

Desconectado maunix

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 4751
    • Mi Sitio Web Personal
Re: Rutina para convertir byte en tiempo
« Respuesta #4 en: 21 de Diciembre de 2006, 15:08:57 »
Ok..Ok..  explicare todo..
Lo que requiero es calibrar unos tacometros que miden frecuencias altas, asi que construyo un equipo que pueda generar ondas cuadradas usando leds, desde 1 rpm hasta 100000 rpm, con cosas que ya tengo dominadas como un teclado, un lcd, etc. El problema se presenta en la conversion de rpms a periodo, donde tengo que generar delays variables, cuyas variables cambian con los numeros presionados en el lcd.
Por lo de la compensacion de temperatura ya lo probe para 100000 rpms con un delay de 300 us y funciona bacan, asi  que supongo que no necesito hacerla.
Por favor, si pueden ayudenme......


Una rutina única lo veo complicado además de que estarías usando el micro todo el tiempo para eso, sobre todo para retardos cortos.

El tema es , que 100.000 rpm = 1666,67 rps = 1667,67 Hz = 600 useg. 

Eso para cada pulso, el cual contaría con un tiempo en alto y un tiempo en bajo es decir 300useg.

Yo que tu uso el modo de comparación y le voy variando el prescaler en función de cada necesidad.   Una vez que el prescaler no de más, bueno, usas un contador (para generar las frecuencias bajas).

Eso suponiendo que es un pulso por cada RPM, porque si quieres hacer ruedas dentadas como la de los sensores de los autos deberías generar N dientes (con su bajo y su alto). 

Saludos

- La soberbia de un Einstein es entendible.. la de un salame es intolerable (A.Dolina)
- En teoría no hay diferencia entre la teoría y la práctica. En la práctica... si la hay.
- Lee, Lee, Lee y luego pregunta.(maunix)
- Las que conducen y arrastran al mundo no son las máquinas, sino las ideas (V. Hugo)
- Todos los hombres se parecen por sus palabras; solamente las obras evidencian que no son iguales.(Moliere)
- Todo debería ser hecho tan simple como sea posible pero no mas simple que eso.(A.Einstein)