Haz una pregunta
  Foros de Electrónica » Diseño digital » Microcontroladores y sistemas embebidos
Foros Registrarse ¿Olvidaste tu contraseña?

Temas similares

30/03/2008 #1

Avatar de pepechip

calcular en assembler el periodo de una frecuencia
Hola

En otro post relacionado a la construccion de un frecuencimetro, se comentaba que habia 2 formas de medir una frecuencia:
1º Contar los impulsos durante una constante de tiempo determinado
2º Midiendo el Periodo de dicha frecuencia (medir el tiempo que transcurre entre pulso y pulso)
Este segundo metodo es bastante interesante, sobre todo si se requiere rapidez en tomar la medida. (ver ejemplo)

Sabemos que para conocer la frecuencia sabiendo el periodo tenemos que aplicar la siguiente formula F=1/P

Parece ser que realizar este calculo en C resulta facil, pero yo estaria interesado en saber como se realizaria en assembler.

ejemplo: Regulador de revoluciones x minuto
mediante un teclado introducimos el valor de las revoluciones x minuto que queremos que gire un motor. Este empieza a girar y se muestran las revoluciones sobre un display, y en el momento que llegue a las revoluciones prefijadas se le corta el suministro de tension.

Si en este caso utilizara el primer metodo para calcular la frecuencia, es muy posible que cuando detecte que he superado las revoluciones prefijadas, dichas se encuentren en un valor bastante superior al requerido. Sin embargo con el periodo en un solo giro del motor ya sabre si esta a la velocidad correcta.

saludos
31/03/2008 #2


hola pepechip, fijate en esta pagina http://www.restena.lu/convict/Jeunes...perations2.htm
hay una rutina de division rapida para pic, en la cual para el peor caso con una resolucion de 8 bits demora 144 ciclos de reloj,yo la use hace un tiempo y funciona muy bien sobre todo por la velocidad de calculo lo cual era critico en mi aplicacion. Espero que te sea util.Saludos
31/03/2008 #3

Avatar de pepechip

muchas gracias, esta información me viene bien.
un saludo
31/03/2008 #4

Avatar de Eduardo

De ejemplo, mira en las notas de aplicacion de microchip, tenes librerias matematicas:
http://www.microchip.com/stellent/id...lter1=function
En particular la AN617 que son operaciones en punto fijo (tiene codigo fuente).

Saludos.
19/04/2008 #5
Moderador

Avatar de Nilfred

Aritmétrica de punto fijo: ¿Para que usar punto flotante cuando el punto puede estar fijo en la cabeza del programador?
La siguiente secuencia converge a la recíproca de N (1/N):

x(0) = 1
x(i+1) = x(i) * (2 - N * x(i))

x(i) será correcto hasta el 2^i bit mas a la derecha.

Ej: para calcular 1/3, hacemos la sequencia:

1
-1 = 1 * (2 - 3 * 1)
-5 = -1 * (2 - 3 * -1)
-85 = -5 * (2 - 3 * -5)
-21845 = -85 * (2 - 3 * -85)
...

Los 16 bits a la derecha de este número están garantizados de ser correctos. La representación binaria de -21845 es
...111111010101010101011

¿No entendiste un joraca? Bueno, yo tampoco, igual ya se fueron del tema. La palabra clave acá es "reciprocal" por si queres buscar mas información en Google, etc.
Respuesta
¿Tienes una mejor respuesta a este tema? ¿Quieres hacerle una pregunta a nuestra comunidad y sus expertos? Registrate

Foros de Electrónica » Diseño digital » Microcontroladores y sistemas embebidos

Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2017, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO ©2011, Crawlability, Inc.