5 votos

Cómo determinar una razonable frecuencia de reloj de un MCU?

Actualmente mi registrador de datos está funcionando a 12 mhz, y duerme el 90% del tiempo. Cuando se active la mayoría de sus bloqueado por I/O como tarjeta SD o de la UART.

Tengo la sospecha de que el sistema de trabajo en 6 Mhz, pero ¿cómo saber cuál es razonable? Me puede disminuir el reloj hasta las fallas extrañas empiezan a ocurrir, pero que parece demasiado confuso. Puedo contar todas las instrucciones de montaje y calcular el valor, pero eso es demasiado exacto (y demasiado trabajo).

Así hay algunas reglas del pulgar para hacer una estimación razonable?

9voto

Morten Jensen Puntos 471

Mi estrategia de elección cuando se trata con este tipo de aplicación, es hacer que el código de evento (o asincrónica) y no se preocupe demasiado acerca de la frecuencia de reloj. Si la unidad del sistema con las interrupciones (por ejemplo a través de temporizadores o periféricos), usted podría ser capaz de reducir el Mcu nivel de potencia a una especie de hibernación de configuración como la acción predeterminada y sólo algo más de interrupciones. Varios de los Atmel Mcu tienen niveles de sueño que le activar/desactivar ciertas interrupciones para el despertador. ARM Cortex-M de la serie Mcu también han avanzado las interrupciones de las habilidades que va bien con el ahorro de energía.

Cuando el evento de la cola está vacía, hacer la acción por defecto: ir al modo de baja potencia durante algún tiempo. De esa manera, la frecuencia de reloj no es importante, ya que sólo está encendido y el uso de energía cuando no tienes nada que hacer.

2voto

Moishe Lettvin Puntos 7590

Si el código no está funcionando, ya que la velocidad de reloj reduce suena como que usted está manteniendo todos los interrumpe fuentes vivas (anidada interupts) cuando el servicio de un interrumpe la rutina. Con todos los interupts habilitada todo el tiempo, saltar de un poco de código y en un orden superior interrumpe si se produce alguno, sólo volver a un orden inferior interrumpe una vez que la orden más alta que se ha terminado.

Esto puede dar lugar a importantes problemas de sincronización si la interrumpe prioridades no son adecuadamente gestionados, especialmente con puertos de comunicación como una UART Y TARJETA SD. Si uno asume que el GPIO están conectados a la parte exterior de la caja, a continuación, el GPIO interupts va a pasar "a voluntad" en un registrador de datos y no puede ser predicho, por lo que mantener estas rutinas muy corto es ventajoso.

Esto puede conducir a la configuración de un máximo GPIO alternar tarifa para estos pines externos para el código sigue siendo válida (máximo de 100 hz en cualquier pin de Entrada, y un máximo de 2 KHz a través de todas las entradas, por ejemplo).

Si desea reducir la actual, a continuación, ejecutar en modo activo en una mayor velocidad de reloj, alterando el código de modo que todas las rutinas son por evento y entrar en un sueño o esperar modo para el resto de el tiempo para reducir la corriente de alimentación. Un par de microcontroladores extremadamente bajos de Espera actual de los modos de 75% de los activos de modo de la CPU (off, periféricos), pero la mayoría sólo reducir la corriente por ~20-30% de modo activo.

Uno o dos micro vendedores pueden incluso mantener los periféricos que se ejecuta en el sueño profundo de los modos con un rápido despertar, pero la mayoría de las micro, generalmente apague todos los dispositivos periféricos en el sueño profundo y sólo permitir el GPIO, WDT, POR, BOR o un RTC para despertar a un micro.

1voto

Alex Andronov Puntos 178

Siempre y cuando usted no tiene que gastar su tiempo ocupado en espera dentro de su CPU, la carga total (energía) consumo por el núcleo de la CPU será en función del número total de instrucciones que usted necesita para ejecutar, en lugar de la velocidad de reloj en el que se ejecutan. La cantidad de energía gastada por un núcleo de la CPU, que es activa 10% del tiempo a 24MHz menudo será comparable a la de un núcleo de la CPU, que es activa 20% del tiempo a 12 mhz.

Si el chip programable interna de VDD, y sólo puede funcionar a velocidades más altas con mayor VDD ajustes, uso de los ajustes más altos, es probable que aumente la instrucción de carga de consumo , independientemente de la velocidad a la que la CPU realmente ejecuta las instrucciones. Por lo tanto, el arranque de la CPU más allá de un umbral que exige un mayor VDD tendrá un mejor efecto sobre la carga de consumo de arranque hasta un punto justo por debajo de dicho umbral.

Mi recomendación sería la de la figura aproximadamente lo que la velocidad que usted necesita, averiguar de que lo VDD y otras opciones de configuración que uno necesita, y ajustar el reloj de la CPU para ser tan rápido como sea posible dadas las restricciones. A continuación, una vez hecho eso, se centran en hacer que la CPU estar inactivo tanto tiempo como sea posible.

1voto

Matt Puntos 1115

supercat de respuesta es más o menos lo que me han sugerido, pero también comprobar el circuito para otros consumidores que la corriente cuando no lo necesitan.

  • Si hay externos ICs, a ver si proporcionan un modo de apagado (uno de los candidatos es su UART: si usted tiene un nivel de la palanca de cambios, podría ser posible que lo apague, al menos parcialmente, durante el sueño).
  • Divisores de voltaje, pull-ups o pull-downs, comprobar nada. Los componentes pasivos son a menudo ignorados porque "no hacen nada", pero que no consumo actual.

Siempre que usted tiene componentes externos, es probable que estas atraen más actual de su microcontrolador incluso antes de haber optimizado el voltaje, la frecuencia y el tiempo de actividad. Si este es tan solo un prototipo, a ver si se puede rediseñar para optimizar el consumo de energía.

0voto

Darren Newton Puntos 835

Con un ciclo de trabajo de 10:90 a un ciclo de 12 mhz, entonces, alrededor de 1.2 MHz debería dar un 100% de ciclo de trabajo con ningún margen para el error. Escoge un factor de seguridad dentro de su nivel de comodidad y se multiplica por 1,2 MHz.

Si 10:90 es una estimación que se podría recaudar un bit de salida cuando el MCU despierta y baja de nuevo justo antes de que se duerme. Usted puede encontrar el tiempo de ejecución con un alcance o un DVM que puede medir la frecuencia y ciclo de trabajo. Hacer el sobre ajuste y vuelva a medir. Repita la operación hasta que cumpla su ciclo de trabajo, consumo de energía, u otro objetivo.

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X