¿Puedo generar una señal de 56 kHz con MCU funcionando a 1Mhz?

2

Soy nuevo en el diseño de sistemas embebidos. Tengo que generar una señal de 56 kHz con una MCU que se ejecute a 1Mhz. Quiero alta precisión. Si solo uso un temporizador, me da 55.55kHz.

¿Hay alguna forma en que pueda dividir la frecuencia del reloj a un valor alto y, con eso, generar una señal de 56 kHz?

    
pregunta user21986

3 respuestas

7

56.00 kHz es 1 MHz / 17.86. Eso significa que un divisor entero simple solo puede alcanzar 1 MHz / 17 = 58.82 kHz o 1 MHz / 18 = 55.56 kHz. Si no puede cambiar el reloj de 1 MHz (muy lento para un microcontrolador normal) y solo puede dividirlo por un entero, entonces no, no puede obtener 56.00 kHz.

Hay varias opciones:

  1. Usa una frecuencia de reloj diferente. Encuentre algún múltiplo entero de 56.00 kHz que de otra manera sea aceptable y úselo. Por ejemplo, 7 MHz / 125 funciona exactamente.

  2. hacer dithering. Si puede aceptar un poco de jitter, entonces puede golpear cualquier frecuencia a largo plazo. En este caso tendrías que fluctuar entre 17 y 18 ciclos de 1 MHz. Eso será difícil en la mayoría de los micros simplemente porque no habrá suficientes ciclos para hacer que el siguiente período valore y cargarlo en un contador de hardware. Sin embargo, esta técnica podría funcionar con cualquier frecuencia que proporcione suficientes ciclos. Una frecuencia de entrada más alta también produce menos fluctuación de fase, ya que la fluctuación de fase es siempre un ciclo del reloj de entrada. Por ejemplo, con un reloj de 10 MHz, fluctúa entre 178 y 179 ciclos. Es suficiente con los ciclos para que sean factibles en la mayoría de los micros, aunque probablemente aún tenga que codificarlo cuidadosamente y prestar atención a las instrucciones individuales.

  3. Algunos micros tienen generadores de reloj de lujo incorporados que efectivamente hacen el algoritmo de fluctuación en hardware. Algunos de los nuevos PIC 16F1xxx de gama baja tienen un periférico de este tipo, pero no recuerdo su nombre en la parte superior de mi cabeza.

  4. Use un oscilador externo, posiblemente con un multiplicador PLL y un divisor.

respondido por el Olin Lathrop
3

Encuentre la frecuencia más alta que divide 1000 kHz y 56 kHz [GCD (1000 kHz, 56 kHz) = 8 kHz]. A continuación, use un Phased-locked-loop (PLL): el cmos 4046 viene a la mente.

El PLL tiene un oscilador controlado por voltaje (VCO) incorporado que se puede configurar (con la elección correcta de R y C) para generar aproximadamente 56 kHz. La salida de 56 kHz se puede dividir a 8 kHz con una división por 7 circuitos. Puede usar la MCU para esto si tiene temporizadores / contadores controlados por interrupción. Si no es una solución de hardware.

Ahora, necesita obtener una precisión de 8kHz a partir de 1MHz y posiblemente la MCU lo haga también O necesitará hardware.

La precisión de 8 KHz se alimenta al comparador de fase del PLL y la señal dividida del VCO del PLL también se alimenta a él. El o / p del comparador de fase será un nivel de CC variable superpuesto con una gran cantidad de señales de CA que necesitará filtrar con una red RC.

Esta salida alimenta el pin de entrada VCO en el PLL y, con suerte, debería bloquear la salida VCO a 56 kHz. Aquí hay una imagen que encontré que muestra cómo se puede convertir 1Hz a 1kHz: -

Los3x4017estándividiendolasalidanominalde1kHzdelVCOenunintentodeigualarlaentradade1HzdelGPS.Lasalida,elfiltroylaretroalimentacióndelcomparadordefasedelPLLenelVCOprontoobtendránel"bloqueo" del VCO. Los tres 4017 son equivalentes a la división por 7 mencionados anteriormente. La señal de 1Hz del GPS es equivalente a los 8kHz precisos derivados del reloj de 1MHz mencionado anteriormente.

O, vive con 55.55kHz

    
respondido por el Andy aka
0

El AtxMega128D4 se ejecutará con un cristal externo de 0.4 a 16 MHz según su hoja de datos (página 5). No se limita a 1 MHz.

Elija una frecuencia que sea un múltiplo exacto de 56 kHz; por ejemplo, un cristal de 7 MHz es exactamente 125 veces 56 kHz. Debería poder configurar su temporizador con eso (o usar un cristal de 14 MHz y dividir por 250).

(Me acabo de dar cuenta de que esta es una pregunta antigua, pero creo que mi respuesta aún es útil para tener en el sitio).

    
respondido por el tcrosley

Lea otras preguntas en las etiquetas