Haz una pregunta
  Foros de Electrónica » Diseño analógico » Diseño de circuitos en general
Foros Registrarse ¿Olvidaste tu contraseña?

Temas similares

26/03/2008 #21


Gabriel,

Me alegra mucho que hayas podido hacer andar el programa. A lo que vos te referís con AL y AH supongo que será al 80x86 de intel (el de la PC) que combina estos registros en el AX. Esto en el PIC16F no existe porque es un microprocesador de 8 bits y sólo maneja estos registros. De todas maneras no es muy complicado (yo he calculado raices cuadradas, eso sí que es feo).
La cuenta que hay que hacer es f=TMR1*76.294 (con cinco cifras significativas para no agregar error al resultado), y lo que el multiplicador es fijo, el algoritmo es sencillo, no son más que rotaciones de registros y sumas.

Igualmente si lo vas a hacer en basci creo que no necesitás todo esto, podés hacer la cuenta directamente definiendo la variable F como de 24 bits y hacer:

F = TMR1H*256+TMR1L
F = F*76.29394531

Y asunto solucionado, el basic se ocupa de todo, en F tenés la frecuencia.

Yo nunca programé un micro en basic, así que si esto no es posible y hay que hacerlo de una forma parecida al assembler lo vemos. *** La cosa sería hacer la cuenta por partes tomando en cuenta que 76.294 =aprox= 64+8+4+1/4+1/32+1/128+1/256+1/1024, dejando un error de solo 2Hz en el peor de los casos. Estas cuentas son sencillas porque son todas potencias de 2 lo cual el micro siempre maneja bien. ***

Slds...

Mariano
27/03/2008 #22


Mariano

Creo que me expliqué mal la última vez, pero ya logré lo que preguntaba, bueno mas o menos...

Lo que pasa es que no sabía como guardar TMR1H como los 8 bits mas significativos y TMR1L como los 8 bits menos significativos de una variable que declaré como "palabra" (16 bits), y lo del registro AH y AL solo era una forma de tener una referencia, debido a que cuando usé el micro había hecho algo similar, al final era sencillo:

dim y as word 'declaro y como palabra (16 bits)
y.HB = TMR1H 'el High Bank de y va a ser igual a TMR1H
y.LB = TMR1L 'el Low Bank de y va a ser igual a TMR1L
------------------
Ya simplifiqué mi formula para mostrar el valor de la inductancia directamente del TMR1 y queda así: L = 4.99049507 *10³ / (TMR1)² y la de la frecuencia con la formula que pusiste arriba.

Pero como me mencionaste anteriormente para la frecuencia tengo que declarar una variable de 24 bits (de tipo long en basic), pero el problema que tengo es que cuando trato de compilar el programa en basic me aparece el siguiente error: "Support for 32-bit variables not enabled" y no he podido encontrar la opción para habilitar el uso de las variables de 32 bits, no sé si me podrás ayudar en esto...

Gracias

Gabriel
27/03/2008 #23


Gabriel,

Buenísimo que hayas solucionado, perdón por la mala interpretación.
Respecto de las variables de 32 bits la verdad no te puedo ayudar porque nunca usé Basic para programar microprocesadores, siempre lo hice en assembler.
Sin embargo me gustaría que me digas qué Basic usás por dos motivos:
1) Para buscar información a ver si te puedo dar una mano.
2) Sería bueno que me empiece a meter en el tema porque a veces programar en assembler lleva mucho tiempo y es ineficiente.

Slds...

Mariano
29/03/2008 #24


Mariano

Primeramente la versión de Basic que uso: Basic Compiler del programa PIC SIMULATOR IDE versión 6.34. Lo de programar en assembler es cierto que es más tardado pero por un parte se ve más interesante ya que uno controla casi todo, y por lo tanto supongo que se llega a tener más dominio y a aprender más acerca de los registros y demás...

Igual lo que se me ocurrió (solución temporal con fines de prueba) para no usar palabras de 32 bits era dividir la frecuencia por 10³ por ejemplo, y colocar como que fuera la escala de megas por ejemplo, no se si me explico, pero cuando el resultado de la variable fuera 3000, en realidad debido a la división sería 3000000, aunque se perdería exactitud en la medición; además al medir inductancias que me dieran valores menores que 1000 de frecuencia entonces el resultado sería 0.algo (aunque no creo que utilice ese tipo de inductores por el momento) similar pasaría con el cálculo de las inductancias solo que en vez de dividir, multiplicaría... Una pregunta y según lo que he probado (simulado) es que depende los comandos que use para calcular los valores de las formulas, el valor de la variable que contiene el resultado me va aproximando al entero más próximo sino estoy mal...

También estaba leyendo acerca del uso de una LCD para mostrar el resultado, espero hacer funcionarla también para que tenga más presentación el proyecto...

Gracias...

Gabriel
01/12/2009 #25


Respuesta: Medidor de inductancias
Que tal gfmo2002. Soy de Mexico(san luis) estoy en finales de proyectos. Y me pidieron un Medidor de inductancias. He encontrado infinidad de proyectos pero con diferentes pics y con diferentes lenguajes de programacion. Se trabajar con
basic y el pic16f877a. Ya tengo el oscilador colpits http://www.unicrom.com/Tut_osciladores_LC.asp estoy
utilizando el de OA. Ojala me puedas ayudar con el codigo completo y el circuito de tu oscilador que utilizaste, saludos.
01/01/2012 #26


Estimado amigo:
Me podrías dar el circuito colppits que usaste ó para 20 Mhz?
Gracias
Respuesta
¿Tienes una mejor respuesta a este tema? ¿Quieres hacerle una pregunta a nuestra comunidad y sus expertos? Registrate

Buscar más temas sobre:
Lupa Diseño de circuitos en general

Alarmas, temporizadores, acondicionadores de señal...

Cerrar
Foros de Electrónica » Diseño analógico » Diseño de circuitos en general

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