ltc6904 oscilador de 1khz. a 68mhz.(i2c)

Upload: estetico

Post on 05-Jul-2018

219 views

Category:

Documents


0 download

TRANSCRIPT

  • 8/16/2019 LTC6904 Oscilador de 1Khz. a 68Mhz.(I2C)

    1/11

     

    LTC6904: Oscilador de 1Khz. a 68Mhz.(I2C)

    ELECTRÓNICA 

    etiquetas: tutoriales 

    http://www.neoteo.com/ltc6904-oscilador-de-1khz-a-68mhz-i2c/ 

    La muralla técnica de todo diseñador electrónico que intenta desarrollar un oscilador está compuestapor dos paredes que a veces resultan infranqueables: los límites de frecuencias “máxima y mínimade oscilación” y la amplitud constante en todo el rango de frecuencia de trabajo. Los circuitosconvencionales RC o LC se encuentran siempre limitados a una pequeña (y estrecha) porción delespectro para entregar una oscilación a un nivel de tensión de salida constante. LinearTechnology comercializa un chip capaz de entregarnos una oscilación variable entre 1Khz y68Mhz. por pasos ajustables mediante bus I2C. Es decir, con un microcontrolador, un sencillo juegode instrucciones y unLTC6904 puedes lograr un oscilador muy útil para tu banco deexperimentación. Es muy sencillo, compruébalo tú mismo.

    Disponible en un encapsulado MS8, el LTC6904 de Linear Technology es una solución muyinteresante cuando buscamos un oscilador que pueda abarcar un amplio rango de frecuencias útilespara desarrollos de múltiples posibilidades. Con sólo leer las características de frecuencias posiblesde funcionamiento nos damos cuenta de que estamos ante un gigante. El segmento inicial desde1Khz hasta los 20-22Khz. puede ser muy útil para trabajar en BF, ya sea en la reparación como en laasistencia al diseño de circuitos de audio. Un poco más allá y hasta los 300Khz, puedesexperimentar con ultrasonidos y las conocidas “ondas largas” de radio. Más arriba y en la me jor partedel campo experimental, puedes atravesar todo el espectro de las ondas medias, donde transmitenlas emisoras de AM, y de las ondas cortas, capaces de alcanzar una cobertura mundial con su señal.Cuando cruzamos la barrera de los 30Mhz y nos introducimos en VHF, la situación deja de serinteresante para transformarse en imperdible y digna de experimentar. 

    http://www.neoteo.com/category/electronica/http://www.neoteo.com/category/electronica/http://www.neoteo.com/tag/tutoriales/http://www.neoteo.com/tag/tutoriales/http://www.neoteo.com/tag/tutoriales/http://www.neoteo.com/ltc6904-oscilador-de-1khz-a-68mhz-i2c/http://www.neoteo.com/ltc6904-oscilador-de-1khz-a-68mhz-i2c/http://www.neoteo.com/mi-primer-receptor-tda7000.neohttp://www.neoteo.com/mi-primer-receptor-tda7000.neohttp://www.neoteo.com/mi-primer-receptor-tda7000.neohttp://www.neoteo.com/mi-primer-receptor-tda7000.neohttp://www.neoteo.com/ltc6904-oscilador-de-1khz-a-68mhz-i2c/http://www.neoteo.com/tag/tutoriales/http://www.neoteo.com/category/electronica/

  • 8/16/2019 LTC6904 Oscilador de 1Khz. a 68Mhz.(I2C)

    2/11

     

    El LTC6904 es un oscilador integrado en un solo chip que logra alcanzar una frecuencia de trabajode hasta 68Mhz sin ningún componente externo más que un clásico capacitor de 100nF acopladoa la alimentación del circuito integrado. Todas las bondades de funcionamiento que puede ofrecer elLTC6904 serían muy largas de enumerar en este artículo y nuestro propósito no es reproducir lo queexpresa la hoja de datos del producto sino compartir contigo nuestra experiencia en suimplementación. Para esto (como no podía ser de otra manera) utilizamos nuestra placa depruebas con el 18F2550, montada en el artículo anterior , que haremos debutar con esta aplicaciónde lujo. De todos modos, tú puedes realizar las prácticas con cualquier otro entrenador omicrocontrolador ya que las bases sustanciales, el concepto de diseño y la sencillez de operaciónque ofrece el LTC6904 permiten lograr un funcionamiento excepcional hasta con un elemental

    16F84A. Lo mismo vale para el circuito impreso donde se coloca el oscilador. Diseña tus propiasplacas, experimenta una y otra vez hasta encontrar el mejor funcionamiento y el rendimientoóptimo. De eso se trata, de que tú lo hagas mejor .

    http://www.neoteo.com/entrenador-para-pic-18f2550.neohttp://www.neoteo.com/entrenador-para-pic-18f2550.neohttp://www.neoteo.com/entrenador-para-pic-18f2550.neohttp://cdni.neoteo.com/AC3A_1024_36581.jpghttp://www.neoteo.com/entrenador-para-pic-18f2550.neo

  • 8/16/2019 LTC6904 Oscilador de 1Khz. a 68Mhz.(I2C)

    3/11

     

    Gracias a que vamos a trabajar con un pequeño circuito integrado que consume menos de 5mA @5Volts, utilizaremos la misma alimentación que nuestro entrenador y esto será a través del  conectorUSB. El montaje ideado para poder acoplar en forma mecánica esta maravillosa miniatura a nuestroentrenador es algo muy sencillo de realizar. Sólo hay que tener un poco de cuidado, prolijidad ybuena voluntad. Tal como mencionamos al comienzo del artículo, utilizaremos el conector I2C denuestro entrenador (RB0 y RB1 del 18F2550) y del lado opuesto, en la placa donde montaremos elLTC6904, dispondremos de pines dedicados a la salida de la señal de oscilación propiamente dichay a la conexión que posee el chip para determinar su dirección dentro de un  bus I2C. Tal como todosrecordarán, los circuitos que se conectan a un bus I2C poseen una dirección específica paracomunicar sus datos con el microcontrolador al que están acoplados. Es decir,  cada dispositivoI2C tiene un “nombre” para enterarse cuándo el microcontrolador decide “conversar” con ellos.  

    http://www.neoteo.com/conecta-tus-proyectos-al-puerto-usb.neohttp://www.neoteo.com/conecta-tus-proyectos-al-puerto-usb.neohttp://www.neoteo.com/conecta-tus-proyectos-al-puerto-usb.neohttp://www.neoteo.com/conecta-tus-proyectos-al-puerto-usb.neohttp://www.neoteo.com/microcontroladores-termometro-i2c.neohttp://www.neoteo.com/microcontroladores-termometro-i2c.neohttp://www.neoteo.com/microcontroladores-termometro-i2c.neohttp://www.neoteo.com/memorias-eeprom-i2c-24cxx.neohttp://www.neoteo.com/memorias-eeprom-i2c-24cxx.neohttp://www.neoteo.com/memorias-eeprom-i2c-24cxx.neohttp://www.neoteo.com/memorias-eeprom-i2c-24cxx.neohttp://cdni.neoteo.com/AC3C_1024_36583.jpghttp://cdni.neoteo.com/AC3B_1024_36582.jpghttp://www.neoteo.com/memorias-eeprom-i2c-24cxx.neohttp://www.neoteo.com/memorias-eeprom-i2c-24cxx.neohttp://www.neoteo.com/microcontroladores-termometro-i2c.neohttp://www.neoteo.com/conecta-tus-proyectos-al-puerto-usb.neohttp://www.neoteo.com/conecta-tus-proyectos-al-puerto-usb.neo

  • 8/16/2019 LTC6904 Oscilador de 1Khz. a 68Mhz.(I2C)

    4/11

    El LTC6904 está diseñado para poder determinar su dirección dentro del bus con sólo cambiar elestado lógico del pin 4 de su encapsulado. De esta manera, colocando este pin a GND (0),obtenemos la dirección 0010111 dentro del bus, mientras que si al mencionado pin lo elevamos ala tensión de alimentación, la dirección pasa a ser 0010110, o sea, sólo cambia el último bit. Estossiete bits están acompañados por un último bit indicador de escritura sobre el LTC6904. Recordemosque sólo escribiremos instrucciones dentro del chip y éste se encargará de ejecutar acciones deacuerdo a las indicaciones enviadas desde el microcontrolador. En ningún caso leeremos datoalguno desde el dispositivo por lo que este bit es inalterable y siempre será igual a cero (0). De este

    sencillo modo, nos queda armado el primer byte que enviaremos al bus, el que le dirá al L T6904 “A t ite hab laréy aq uíestán t us inst ru cc iones ”. Por supuesto que esto es un modo metafórico deexpresar lo que los fríos bits hacen dentro de una comunicación de datos. 

    Los dos bytes de datos que siguen indicarán la frecuencia que deseamos obtener a la salida.Vale aclarar en este punto uno de los aspectos fundamentales de esta aplicación: el circuito queestamos empleando podrá manejarse y utilizarse obteniendo de él frecuencias preestablecidas quese rigen por parámetros tabulados muy sencillos de comprender y de implementar dentro delprograma de nuestro entrenador. Es decir, tal vez no puedas elegir 10Mhz “exactos” sino que lastablas y los cálculos te podrán ofrecer 10,002Mhz o 9,998Mhz. (cifras seleccionadas alazar), valores que serán siempre útiles para aplicaciones en las que decidas ensayar un circuito a10Mhz. Aunque te suene extraño, un cristal de cuarzo, por ejemplo, jamás tendrá la frecuencia queexpresa en su nomenclatura. Siempre encontrarás valores de oscilación muy próximos a la indicadapero rara vez encontrarás uno que oscile a esa frecuencia en forma exacta. Luego, mantener lafrecuencia estable es otra historia y esa es una de las características que destacan a los osciladores

    basados en cristales de cuarzo. Pero, ¡atención!Ellos sólo pueden entregarte una frecuenciaúnica. El LTC6904 es capaz de brindarte la frecuencia que tú desees con una estabilidadmenor al 1% hasta 68Mhz. ¿Te parece poco?

    Para brindar una explicación sencilla, podemos decirte que el sistema de selección de frecuencia deoscilación tiene dos mandos principales: uno llamado OCT que actúa como un mando “grueso” desintonía y que está controlado por los cuatro bits más significativos del segundo byte. (Recuerdaque el primero decidía la dirección del dispositivo dentro del bus). Un segundo mando principal sedenominaDAC y actúa como una “sintonía fina” dentro de cada segmento OCT seleccionado. A estolo veremos en el siguiente párrafo. Regresando a los cuatro bits del mando OCT, vemos queforman una tabla de 16 posiciones (0 – 15) para dividir en segmentos todo el espectro de

    oscilación del LTC6904. En la siguiente tabla (extraída de la hoja de datos del dispositivo) semuestran las 16 divisiones y su correspondencia con el número OCT.

    http://www.neoteo.com/fuente-de-alimentacion-irrompible-diy.neohttp://www.neoteo.com/fuente-de-alimentacion-irrompible-diy.neohttp://www.neoteo.com/fuente-de-alimentacion-irrompible-diy.neohttp://www.neoteo.com/microcontroladores-termometro-i2c.neohttp://www.neoteo.com/microcontroladores-termometro-i2c.neohttp://www.neoteo.com/microcontroladores-termometro-i2c.neohttp://www.neoteo.com/dip-meter-descifrando-las-inductancias.neohttp://www.neoteo.com/dip-meter-descifrando-las-inductancias.neohttp://www.neoteo.com/dip-meter-descifrando-las-inductancias.neohttp://www.neoteo.com/receptor-multibanda-neoteo-parte-iii.neohttp://www.neoteo.com/receptor-multibanda-neoteo-parte-iii.neohttp://www.neoteo.com/receptor-multibanda-neoteo-parte-iii.neohttp://cdni.neoteo.com/AC3D_1024_36584.jpghttp://www.neoteo.com/receptor-multibanda-neoteo-parte-iii.neohttp://www.neoteo.com/dip-meter-descifrando-las-inductancias.neohttp://www.neoteo.com/microcontroladores-termometro-i2c.neohttp://www.neoteo.com/fuente-de-alimentacion-irrompible-diy.neo

  • 8/16/2019 LTC6904 Oscilador de 1Khz. a 68Mhz.(I2C)

    5/11

     

    Luego, dentro de cada segmento seleccionado con el valor de OCT, pasaremos a la configuración

    del segundo mando principal (DAC) que está compuesto por una palabra de 10 bits, ubicada justo acontinuación de los cuatros bits que forman el OCT. Estos 10 bits permiten dividir el bloque elegidoen 1024 posiciones (0 – 1023) o valores de frecuencia de oscilación de salida. Todo esto secompleta con dos bits finales que se utilizan para configurar el modo de salida que utilizaremos enlos pines 5 y 6. En nuestro ejemplo, sólo conectaremos la salida CLK y bastará colocar ambos bitsen cero para obtener salida útil desde el pin 6 del LTC6904. Entonces, juntando toda estainformación nos quedan: 4 bits del OCT + 10 bits del DAC + 2 bits de configuración de lassalidas. Todo esto equivale a 16 bits, es decir, a 2 bytes. Esos serán los bytes que completarán lainstrucción de escritura sobre el chip.

    De este modo, nos queda una secuencia tradicional de comunicación entre un microcontrolador y undispositivo I2C.

    http://cdni.neoteo.com/AC3F_1024_36586.jpghttp://cdni.neoteo.com/AC3E_1024_36585.jpg

  • 8/16/2019 LTC6904 Oscilador de 1Khz. a 68Mhz.(I2C)

    6/11

    Inicio de comunicación dentro del bus (Start)Dirección del dispositivo a comunicar (Address Byte)Bytes de instrucciones (en nuestro caso serán dos)Fin de la comunicación dentro del bus (Stop)

     A esos 4 simples comandos se les puede agregar la posibilidad que brinda todo componente esclavodentro de un bus I2C de utilizar el bit ACK (Acknowledge). Este bit es regresado desde el circuitoesclavo hacia el microcontrolador para indicarle que ha recibido la instrucción. En instalaciones

    donde las posibilidades de comunicación pueden ser críticas (al límite de lo posible) es bueno utilizareste bit de retorno para garantizar que el dispositivo remoto ha recibido el dato correcto mediante ladevolución de un ACK. Si el microcontrolador, luego de un tiempo prudencial de espera, no obtieneuna respuesta desde el componente remoto, puede volver a enviar la instrucción hasta lograr uncomunicado exitoso. Pero, como dijimos al principio, este no es nuestro caso y podemos obviar lautilización del bit ACK para evitar cargarnos de código innecesario.

    Comencemos a programar  Si nuestro objetivo fuera realizar un oscilador fijo para alguna aplicación específica, la tarea seríamuy sencilla. Bastaría con un sencillo PIC 12F675 (en encapsulado SMD) conectado al LTC6904,con un conector ICSP (para cambiar la frecuencia de trabajo de acuerdo a la necesidad), en unaplaca del tamaño de una moneda para poner en marcha este oscilador programable que serviríapara ensayos y experimentos de los más variados. ¿ Acaso no te ha sucedido que cuando buscas uncristal de cuarzo específico te enfadas al darte cuenta de que no lo tienes y de que encima es denoche y todas las tiendas están cerradas? Sin embargo, nosotros pretendemos algo más amplio:intentamos experimentar (por ahora) con este IC y tratamos de llegar hasta los extremos deoscilación, es decir, hasta cerca de los 60Mhz. (al menos). Una salida fácil entonces sería armar un

    contador de pasos individuales que incremente de a una unidad OCT + DAC y que nos lleve de unextremo a otro con solopulsar dos botones. Pensándolo bien, si DAC posee 1024 posiciones y OCT16, serían 16384 pulsaciones hasta llegar de un extremo a otro o al menos unas 8 milpulsaciones del botón para alcanzar la mitad del rango de posibilidades. Definitivamente debemospensar en algo más inteligente y eficaz.

    http://www.neoteo.com/rs485-domotica-al-alcance-de-tu-mano-15810.neohttp://www.neoteo.com/rs485-domotica-al-alcance-de-tu-mano-15810.neohttp://www.neoteo.com/rs485-domotica-al-alcance-de-tu-mano-15810.neohttp://www.neoteo.com/servomotores-el-primer-paso-hacia-tu-robot.neohttp://www.neoteo.com/servomotores-el-primer-paso-hacia-tu-robot.neohttp://www.neoteo.com/servomotores-el-primer-paso-hacia-tu-robot.neohttp://www.neoteo.com/microcontroladores-sumando-pulsadores.neohttp://www.neoteo.com/microcontroladores-sumando-pulsadores.neohttp://cdni.neoteo.com/AC40_1024_36587.jpghttp://www.neoteo.com/microcontroladores-sumando-pulsadores.neohttp://www.neoteo.com/servomotores-el-primer-paso-hacia-tu-robot.neohttp://www.neoteo.com/rs485-domotica-al-alcance-de-tu-mano-15810.neo

  • 8/16/2019 LTC6904 Oscilador de 1Khz. a 68Mhz.(I2C)

    7/11

     

    Para esto realizaremos dos sumadores y restadores elementales e individuales: uno para OCT yotro para DAC. Con sólo cuatro pulsadores conectados a pines libres del puerto C del entrenador,podremos avanzar a frecuencias alejadas en pocos pasos. OCT incrementará de a una unidad, esdecir, 00010000 00000000 a la vez. Por su parte, DAC lo hará en una unidad equivalente a00000000 00000100 a la vez. Recuerda que los dos últimos bits quedan siempre en cero paramantener la configuración de salida de la señal de oscilación. OCT y DAC suman o descuentansobre una variable única (DATOS) sus valores unitarios. Por lo tanto, con dos pulsadoresavanzamos (o retrocedemos) a grandes saltos y con otros dos pulsadores nos movemos como si

    estuviéramos manejando un mando de sintonía fina. Lo que parecía complejo, se vuelve un juego deniños al pensar en cómo resolver la operación matemática que nos mostrará la frecuenciaobtenida en la salida del LTC6904, en el LCD del entrenador  (ideal para aquellos que no posean unfrecuencímetro). Caso contrario, nunca sabrás en qué frecuencia está trabajando el circuito.

    En lenguaje BASIC (Proton), la potencia se resuelve mediante la instrucción POW y el resto de lasoperaciones se hacen muy sencillas gracias a la posibilidad de utilizar variables del tipo FLOAT quealcanzan valores entre -1e37 hasta +1e38 y permiten además trabajar con hasta 8 decimales .En este tipo de operaciones, la potencia de un lenguaje de alto nivel nos resuelve problemas que deotro modo serían muy complejos de salvar. La operación matemática mostrada se puede resolvercon apenas cinco líneas de código. Nosotros, que decidimos mostrar el resultado final de lafrecuencia expresado en Khz., le agregamos una sexta línea. Observa el código que te adjuntamos

    http://www.neoteo.com/microcontroladores-construye-un-lcd-para-i2c-16092.neohttp://www.neoteo.com/microcontroladores-construye-un-lcd-para-i2c-16092.neohttp://www.neoteo.com/microcontroladores-construye-un-lcd-para-i2c-16092.neohttp://cdni.neoteo.com/AC42_1024_36589.jpghttp://cdni.neoteo.com/AC41_1024_36588.jpghttp://www.neoteo.com/microcontroladores-construye-un-lcd-para-i2c-16092.neo

  • 8/16/2019 LTC6904 Oscilador de 1Khz. a 68Mhz.(I2C)

    8/11

    al final del artículo en un bloc de notas o en cualquier  editor de textos (si no tienes Proton) y notaráslo sencillo que resulta el trabajo matemático en un lenguaje de programación de alto nivel. Porsupuesto que no debatiremos cuál lenguaje de programación es mejor. En este ejemplo que hoy tetraemos, podemos ver que en BASIC el trabajo es muy sencillo. El resto es costumbre, comodidad ylo que supimos aprender.

    Las recomendaciones finales para trabajar con este tipo de circuitos hablan de su montaje y eldiseño de los circuitos que naturalmente deben seguirle. A la salida del chip, el fabricante aconseja

    mantener conexiones cortas y no “cargar” el circuito con más de dos entradas lógicas (TTL,microcontroladores, etc.). Lo aconsejable entonces es adaptar cualquier tipo de circuito seguidor deseñal (buffer) para “aislar” el LTC6904 y permitir su óptimo funcionamiento. Un circuito sencillosería cualquier puerta lógica de la familia 74HCT para prevenir  diferencias de niveles detensión en aquellos casos en que el oscilador esté alimentado con 3,3Volts y nosotros necesitemosuna amplitud de trabajo de 5Volts.

    La construcción mecánica que incluye el circuito impreso, desde su diseño hasta la calidad de susmateriales, y el ámbito de trabajo cuidado de manera especial permitirán obtener los parámetrosenunciados en la hoja de datos del fabricante. Es decir, trabajar más allá de los 20Mhz no es unatarea sencilla y la radiación de radiofrecuencia hace estragos en los circuitos asociados al oscilador y

    hasta en el oscilador mismo. En nuestro montaje, más allá de los 20Mhz observamos inconvenientespropios de un montaje que no tiene todos los recaudos necesarios para trabajar a frecuenciaselevadas, dentro de la banda de VHF. Por último, vale decir que este mismo circuito viene paratrabajar mediante SPI y su nomenclatura es LTC6903. Disfrútalo, has construido el osciladoruniversal, el que te servirá para aquellas raras aplicaciones en que te preguntarías: ¿Dónde obtengoun cristal de este valor de resonancia? 

    Linear Technology lo ha hecho fácil. Ha creado el LTC6904 y NeoTeo hoy te lo ha mostrado enfuncionamiento gracias a la gentileza de Tiago Velasque de Hitech Componentes, São Paulo, Brasil,quien gentilmente nos ha brindado las muestras para ensayar este magnífico trabajo.

    Hoja de datos:LTC6904 Tiago VelasqueHitech Componentes Programa de prueba:Download 

    Device 18F2550 'DEFINO EL PICXtal = 48 'DEFINO EL CRISTAL

    DelayMS 100 'PEQUEÑO RETARDO PARA ESTABILIZAR LA ALIMENTACIÓNCMCON = 7 'APAGO LOS COMPARADORES All_Digital = TRUE 'HAGO TODO DIGITAL

    LCD_DTPin = PORTB.4 'SETEO EL LCD 16X2 PARA 4 CABLESLCD_RSPin = PORTB.2LCD_ENPin = PORTB.3LCD_Interface = 4LCD_Lines = 2LCD_Type = 0

    Declare SDA_Pin PORTB.0 'DECLARO CUALES PINES DEL PIC VAN A SERDeclare SCL_Pin PORTB.1 'SDA Y SCL CON UN BUS DE MENOS DE 8 MHZDeclare Slow_Bus=On

    Declare Float_Display_Type = LARGE

    http://www.neoteo.com/wordpad-2009-rc1-editor-de-textos-estilo-14293.neohttp://www.neoteo.com/wordpad-2009-rc1-editor-de-textos-estilo-14293.neohttp://www.neoteo.com/wordpad-2009-rc1-editor-de-textos-estilo-14293.neohttp://www.neoteo.com/adaptador-de-niveles-para-bus-i2c-3-3v-5v.neohttp://www.neoteo.com/adaptador-de-niveles-para-bus-i2c-3-3v-5v.neohttp://www.neoteo.com/adaptador-de-niveles-para-bus-i2c-3-3v-5v.neohttp://www.neoteo.com/adaptador-de-niveles-para-bus-i2c-3-3v-5v.neohttp://www.neoteo.com/antenas-mas-distancia-para-radiocontrol.neohttp://www.neoteo.com/antenas-mas-distancia-para-radiocontrol.neohttp://www.neoteo.com/antenas-mas-distancia-para-radiocontrol.neohttp://cds.linear.com/docs/Datasheet/69034fc.pdfhttp://cds.linear.com/docs/Datasheet/69034fc.pdfhttp://cds.linear.com/docs/Datasheet/69034fc.pdfhttp://www.hitech.com.br/http://www.hitech.com.br/http://www.4shared.com/file/V87gKCif/ltc6904.htmlhttp://www.4shared.com/file/V87gKCif/ltc6904.htmlhttp://www.4shared.com/file/V87gKCif/ltc6904.htmlhttp://www.4shared.com/file/V87gKCif/ltc6904.htmlhttp://www.hitech.com.br/http://cds.linear.com/docs/Datasheet/69034fc.pdfhttp://www.neoteo.com/antenas-mas-distancia-para-radiocontrol.neohttp://www.neoteo.com/adaptador-de-niveles-para-bus-i2c-3-3v-5v.neohttp://www.neoteo.com/adaptador-de-niveles-para-bus-i2c-3-3v-5v.neohttp://www.neoteo.com/wordpad-2009-rc1-editor-de-textos-estilo-14293.neo

  • 8/16/2019 LTC6904 Oscilador de 1Khz. a 68Mhz.(I2C)

    9/11

     Dim FREC As Float

    Dim parteUNO As FloatDim parteDOS As FloatDim parteTRES As Float

    Dim DATOS As WordDim DAC  As WordDim OCT  As ByteDim MSDATA As DATOS.HighByte

    Dim LSDATA As DATOS.LowByte

    'OBTENIENDO "OCT"

    Dim OCTUNO As DATOS.12 'Dim OCTDOS As DATOS.13 ' LOS CUATRO BITS QUE FORMAN OCTDim OCTTRES As DATOS.14 'Dim OCTCUATRO As DATOS.15 'Dim unooct As Byte 'Dim dosoct As Byte ' ESOS CUATRO BITS TRANSFORMADOS A DECIMALDim tresoct As Byte 'Dim cuatrooct As Byte '

    'OBTENIENDO "DAC"

    Dim DACONCE As DATOS.11Dim DACDIEZ As DATOS.10Dim DACNUEVE As DATOS.9Dim DACOCHO As DATOS.8Dim DACSIETE As DATOS.7Dim DACSEIS As DATOS.6Dim DACCINCO As DATOS.5 'IGUAL QUE CON EL OCT SEPARO CADA BITDim DACCUATRO As DATOS.4 'Y LUEGO LOS TRANSFORMO A DECIMALDim DACTRES As DATOS.3Dim DACDOS As DATOS.2Dim dosdac As ByteDim tresdac As Byte

    Dim cuatrodac As ByteDim cincodac As ByteDim seisdac As ByteDim sietedac As ByteDim ochodac As ByteDim nuevedac As ByteDim diezdac As WordDim oncedac As Word

    DATOS = 0

    BStart 'INICIO EL CONTACTO A TRAVES DEL BUS I2CBusOut %00101110 'ESCRIBO LA DIRECCIÓN

    BusOut MSDATA 'ESCRIBO EL MSDATABYTE (HIGHBYTE DEL WORD)BusOut LSDATA 'ESCRIBO EL LSDATABYTE (LOWBYTE DEL WORD)BStop 'TERMINO EL CONTACTO A TRAVES DEL BUS I2C

    DelayMS 5 'DE ESCRITURA

    Print At 1,1," Entrenador PIC " 'PRESENTACIÓNPrint At 2,1," 18F2550 NeoTeo "

    DelayMS 3000

    Print At 1,1,"practicando con "Print At 2,1,"LT6904 de LINEAR"

  • 8/16/2019 LTC6904 Oscilador de 1Khz. a 68Mhz.(I2C)

    10/11

     

    DelayMS 3000

    Print At 1,1,"generador I2C de"Print At 2,1," 1Khz a 68Mhz "

    DelayMS 3000

    COMIENZO:

    DATOS = 0

    TRABAJA:

    If OCTUNO = 1 Then unooct = 1:Else:unooct = 0:End IfIf OCTDOS = 1 Then dosoct = 2:Else:dosoct = 0:End If 'CONTROLO EL VALOR DE LOS BITSQUE FORMARÁN OCTIf OCTTRES = 1 Then tresoct = 4:Else:tresoct = 0:End If 'Y LES DOY UN VALOR DECIMALIf OCTCUATRO = 1 Then cuatrooct = 8:Else:cuatrooct = 0:End If

    OCT = unooct + dosoct + tresoct + cuatrooct 'OBTENGO "OCT"

    If DACDOS = 1 Then dosdac = 1:Else:dosdac = 0:End IfIf DACTRES = 1 Then tresdac = 2:Else:tresdac = 0:End If

    If DACCUATRO = 1 Then cuatrodac = 4:Else:cuatrodac = 0:End IfIf DACCINCO = 1 Then cincodac = 8:Else:cincodac = 0:End IfIf DACSEIS = 1 Then seisdac = 16:Else:seisdac = 0:End If 'LO MISMO HAGO CON LOSBITSIf DACSIETE = 1 Then sietedac = 32:Else:sietedac = 0:End If 'QUE FORMARÁN EL VALORDE dacIf DACOCHO = 1 Then ochodac = 64:Else:ochodac = 0:End IfIf DACNUEVE = 1 Then nuevedac = 128:Else:nuevedac = 0:End IfIf DACDIEZ = 1 Then diezdac = 256:Else:diezdac = 0:End IfIf DACONCE = 1 Then oncedac = 512:Else:oncedac = 0:End If

    DAC = dosdac + tresdac + cuatrodac + cincodac + seisdac + sietedac + ochodac + nuevedac

    + diezdac + oncedac

    parteUNO = Pow 2,OCTparteTRES = DAC/1024

    parteTRES = 2 - parteTRES 'HAGO EL CÁLCULO DE LA FRECUENCIA SEGÚN LAparteDOS = 2078 / parteTRES 'FÓRMULA DE LA HOJA DE DATOSFREC = parteUNO * parteDOS

    FREC = FREC/1000

    BStart 'INICIO EL CONTACTO A TRAVES DEL BUS I2CBusOut %00101110 'ESCRIBO LA DIRECCIÓNBusOut MSDATA 'ESCRIBO EL MSDATABYTEBusOut LSDATA 'ESCRIBO EL LSDATABYTEBStop 'TERMINO EL CONTACTO A TRAVES DEL BUS I2C

    DelayMS 5

    Print At 1,1," Frecuencia "Print At 2,1," ",Dec FREC,"Khz "DelayMS 100

    ESPERA:

    If PORTC.0 = 0 ThenDATOS = DATOS + %0000000000000100

    DelayMS 150 'DETECCIÓN DE BOTONES PULSADOS Y ACCIÓNCORRESPONDIENTEGoTo TRABAJAEnd If

  • 8/16/2019 LTC6904 Oscilador de 1Khz. a 68Mhz.(I2C)

    11/11

     If PORTC.2 = 0 ThenDATOS = DATOS + %0001000000000000

    DelayMS 150GoTo TRABAJAEnd If

    If DATOS > %1111111111111100 Then GoTo COMIENZO

    If PORTC.1 = 0 ThenDATOS = DATOS - %0000000000000100

    DelayMS 150GoTo TRABAJAEnd IfIf PORTC.6 = 0 ThenDATOS = DATOS - %0001000000000000

    DelayMS 150GoTo TRABAJAEnd IfIf DATOS < %0000000000000100 Then GoTo COMIENZO

    DelayMS 10GoTo ESPERA 'REINICIA EL CICLO