25 votos

¿Un microcontrolador grandes, o muchos microcontroladores pequeños?

Estoy acostumbrada a hacer básico y sencillo las cosas con microcontroladores, relativamente hablando. Cosas tales como la conducción de los LEDs, motores en marcha, las rutinas básicas, GUIs en carácter de LCDs, y así sucesivamente, pero siempre acaba una tarea clave con un poco de lado de tareas. Esto ha relegado a mí a la baja de los productos finales, ya que realmente todo lo que se necesita en esos casos.

Me gustaría empezar a diseñar cosas más complejas, pero la parte superior de la microcontrolador continuum no es algo que yo he sido bien expuesto. Por lo tanto, he tenido un muy difícil momento tratando de seleccionar un microcontrolador donde voy a hacer muchas tareas a la vez — yo no puedo decir sólo por un número de MIPS y una satisfactoria pinout si tiene suficiente potencia para hacer lo que yo quiero hacer.

Por ejemplo, me gustaría control 2 de los motores BLDC con PI rutinas, junto a algunos de serie y USB de comunicaciones, una interfaz gráfica de usuario, y un montón de otras tareas. Estoy tentado a simplemente tener un microcontrolador para cada motor y, a continuación, uno para las diversas tareas, así que puedo garantizar que la carga de la miscelánea de cosas no las encías críticos en el funcionamiento motor. Pero no sé si eso es realmente una buena idea o una ingenua manera de ir sobre las cosas.

Supongo que mi pregunta es, realmente, dos veces:

  1. Es el todo-en-uno de los planteamientos de una buena idea a la hora de hacer un montón de multitarea, o es mejor segmento y aislar, y

  2. ¿Cómo puedo intuitivamente averiguar si el microcontrolador estoy mirando tiene suficiente potencia de cálculo para hacer lo que tengo que basado en mi lista de tareas?

Estoy buscando a moderada dsPIC33s todo el camino hasta el BRAZO de SoCs que se ejecutan RTOS. Una forma sistemática para perfeccionar lo que necesito me ayudaría mucho.

12voto

Matt McMinn Puntos 6067

Me gustaría separar el control del motor, y un microcontrolador que incluye PWM (tal vez un PIC18) para cada uno de los dos de los motores BLDC, ya que el control PI es un aislado de una tarea de puesta en marcha, y una vez que usted escribe el código que se puede utilizar en ambos micros. Usted puede conectar el microcontrolador a través de la interfaz I2C, y la descarga de los parámetros para el control PI partir de ahí, si lo desea. Que le permitirá modificarlas en su interfaz gráfica de usuario.

Me gustaría, a continuación, ejecute todo lo demás en el principal del microcontrolador, como un PIC24 (un PIC32 es probablemente una exageración, basado en las tareas que aparecen en la lista). Además de la forma más rápida PIC24E puede ejecutar casi tan rápido como un PIC32.

Cuando la elección de un microcontrolador, yo la primera estimación de la cantidad de memoria flash y RAM que tengo, y luego mirar a la longitud de la palabra y la velocidad del procesador. Por la tarde, a menudo el más difícil requisito a cumplir es la forma más rápida de interrupción que esperar a manejar. Si usted está saliendo de 16 KHz sonido, por ejemplo, y tiene una interrupción cada una de 62,5 µs, entonces es mejor tener un microcontrolador con un tiempo de instrucción de abajo en las decenas de nanosegundos, o usted no será capaz de dar servicio a él y conseguir que cualquier otro trabajo realizado.

11voto

Federico Builes Puntos 1940

Las respuestas a tus preguntas son diferentes dependiendo de lo que su objetivo final es. Si usted necesita un puñado o menos de estos dispositivos, se debe facilitar el desarrollo, y no preocuparse de los costes de piezas. Si vas a hacer un millar o más de estos, vale la pena analizar sus requisitos y la reducción de costos de hardware del dispositivo.

Pequeñas cantidades

Si usted está haciendo un one-off o pequeña tirada de estos dispositivos, entonces sus esfuerzos de desarrollo se va a empujar a su per-costes de elementos, y usted debe centrarse en lo que será la forma más fácil y más rápido para su desarrollar, en lugar de los costos/tamaño de la microelectrónica.

En general, la encapsulación puede reducir la complejidad, el aumento de su productividad. Si usted tiene algunos de los duros requisitos en tiempo real, tales como su BLDC de control, bucles PID, etc, entonces usted puede encontrar que es más rápido utilizar controladores separados específicamente para aquellas tareas que se comunican con los controladores en la que mantener la interfaz de usuario y otras no-tareas en tiempo real.

Así que, en este caso, la respuesta a tus preguntas son:

Es el todo-en-uno de los planteamientos de una buena idea a la hora de hacer un montón de multitarea, o es mejor segmento y aislar, y

La escala de puntas ligeramente hacia la segmentación y el aislamiento. La principal razón es que la depuración de un sistema de tiempo real puede ser muy laborioso, y mantener este tipo de tareas en su propio procesador límites de las variables que se tienen a medida o control cuando se trata de descubrir por qué algo no está funcionando bien.

¿Cómo puedo intuitivamente averiguar si el microcontrolador estoy mirando tiene suficiente potencia de cálculo para hacer lo que tengo que basado en mi lista de tareas?

En este caso, la diferencia de costos entre una versión de 32 bits del procesador con una gran cantidad de recursos y de 8 bits del procesador con recursos limitados es pequeña en relación a la cantidad de tiempo que vas a pasar a trabajar en el desarrollo. Hay pocas razones para intentar averiguar la cantidad de energía que necesita - acaba de obtener el mayor procesador usted se siente que usted puede desarrollar y usar eso. Si en algún momento posterior que usted necesita para optimizar el costo de diseño, es relativamente fácil de medir procesador real el uso de los recursos, a continuación, elija un arrendador procesador que puede manejar la carga real. Hasta entonces, el uso de la mas grande y no te preocupes por encontrar la "mejor ajuste".

La producción en masa

Si usted planea hacer muchos de estos dispositivos, luego de un cuidadoso análisis va a producir importantes ahorros de costes. Hablando en general un mayor microcontrolador tendrá un costo de menos de dos microcontroladores capaces de sustituir el único microcontrolador, aunque sin duda hay excepciones dependiendo del tipo de tareas que se requieren. En estas cantidades, el costo del hardware es probablemente mucho mayor que el costo de desarrollo, por lo que deben esperar para pasar más tiempo en analizar sus necesidades y realizar el desarrollo de lo que usted haría si estuviera solo hacer un par de.

Es el todo-en-uno de los planteamientos de una buena idea a la hora de hacer un montón de multitarea, o es mejor segmento y aislar?

El todo-en-un enfoque general será menos caro en la vida de todo el proyecto de múltiples procesadores. Se requieren más desarrollo y la depuración de tiempo para asegurarse de que las tareas no entran en conflicto, pero riguroso software de diseño límite que casi tanto como tener separadas hardware.

¿Cómo puedo intuitivamente averiguar si el microcontrolador estoy mirando tiene suficiente potencia de cálculo para hacer lo que tengo que basado en mi lista de tareas?

Usted tendrá que entender las tareas que desea realizar y cómo muchos de los recursos que tomar. Supongamos que los siguientes son true:

Su BLDC PI rutinas de consumir X ciclos de tiempo de procesador 100 veces por segundo, y cada uno necesita alrededor de 50 bytes de RAM para su funcionamiento, de 16 bytes de memoria EEPROM para la optimización, y 1k de flash para el código. Cada una se necesitan 3 de dieciséis bits PWM periféricos del microcontrolador. Puede que necesite especificar el jitter, que tendrá interrupción específico de requisitos de latencia.

Su USB y serie de rutinas de consumir Y de los ciclos de tiempo de procesador en una base como-necesaria, 2k de RAM, 64 bytes de EEPROM, y 8k flash. Va a requerir USB y serial de periféricos.

Su GUI consumirá Z ciclos de potencia de procesador de 30 veces por segundo, y la necesidad de 2k de RAM, 128 bytes de EEPROM, y 10k de flash. Que va a utilizar el 19 de e/S para las comunicaciones con la pantalla LCD, botones, perillas, etc.

Cuando está empezando, puede ser difícil entender lo que X, Y, Z son en realidad, y esto va a cambiar un poco dependiendo de la arquitectura del procesador. Sin embargo, usted debe ser capaz de entender, dentro de un estadio de béisbol de la estimación, la cantidad de memoria ram, eeprom, flash y su diseño va a necesitar, y los periféricos que necesita. Usted puede elegir un procesador de la familia que cumple con su memoria y periféricos de los requisitos y tiene una amplia gama de opciones de rendimiento, dentro de esa familia. En ese momento, para el desarrollo, usted puede simplemente utilizar el procesador más potente de la familia. Una vez que haya implementado su diseño, usted puede moverse fácilmente por la familia en términos de poder de una opción de menor costo, sin cambiar su diseño o entorno de desarrollo.

Después de que usted haya hecho lo suficiente de estos diseños, usted será capaz de estimar X, y y Z, mejor. Usted sabrá que la BLDC PI rutinas, a pesar de correr a menudo, son muy pequeñas y requieren muy pocos ciclos. El USB y serie de rutinas requieren de un gran ciclo, pero ocurren con poca frecuencia. La interfaz de usuario requiere un par de ciclos con frecuencia para encontrar cambios, pero requieren de una gran cantidad de ciclos de la poca frecuencia de actualización de una pantalla, por ejemplo.

8voto

shash Puntos 668

Hay un semi formal enfoque se puede utilizar para generar su respuesta. Te recomiendo la lectura del capítulo 2 del Blanco "Diseño de Sistemas Embebidos", la mayoría de los cuales está disponible en Google Libros.

En este capítulo se habla sobre el diseño de la arquitectura del sistema, y ofrece un semi formal enfoque a la mejor manera de encapsular las tareas. Mientras que el capítulo es en gran parte sobre un controlador de sistemas, que se extiende fácilmente a varios controladores. Esto le ayudará a prever que los recursos deben ser compartidos, y te ayudará a elegir su nivel de encapsulación para cada tarea.

Ella ofrece una gran variedad de puntos de vista a considerar, uno de los que os muestro a continuación, pero hay muchas manipulaciones. Esto, por supuesto, no tiene mucho sentido, pero espero que lo alienta a que revise el capítulo.

from White, Making Embedded Systems, Chapter 2

En cuanto a "¿cómo puedo saber si tengo suficiente controlador", mi preferencia es la de poner tanta energía en mi diseño de sandbox como puedo, y luego averiguar cómo muchos recursos que pueden reducir una vez que el diseño está bien en su camino. La diferencia en el precio entre $10 microcontrolador y $3 microcontrolador para la creación de prototipos a los efectos podrían ser sólo semanas de renovación y el girar de sus pulgares a la espera de nuevas piezas, mientras que el diseño siempre puede mantenerse en movimiento si se tiene el poder suficiente.

6voto

Mario Puntos 191

Yo trabajo en un sistema que es en términos generales lo que estás describiendo - motores, IO, pantalla, 3x UARTs + SPI + I2C que se ejecuta en un Coldfire 52259 (de gama media de 32 bits ~80MHz micro) y no es demasiado difícil, aunque para conseguir la arquitectura de software adecuado es importante - tenemos un montón de cosas que se ejecutan en hardware y las interrupciones (nada de lo que el hardware puede manejar por su propia cuenta, se ejecutan en hardware y servicio con interrupciones), dejando el main() loop para hacer toda la limpieza de la casa.

Personalmente no me gusta la mayoría de los RTOS he visto, en el extremo más bajo se hincha de un proyecto, puede añadir otra cosa que aprender, y usted va a obtener un mejor rendimiento del hardware, haciendo las cosas de forma directa (mediante la disposición de las funciones de hardware + interrupciones) en lugar de fingir con el software.

En el extremo superior, en estos días no parece ser tan poco margen entre una MCU que es complejo y lo suficientemente potente como para que realmente se benefician de un RTOS y algo (SoC) que sólo se ejecuta en Linux embebido.

Sin embargo, en ese caso yo diría que hay algo de valor en el uso de pequeños hoteles de micros para controlar funciones críticas (por ejemplo, control de motores en los que el timing o detenerse en el límite crítico) bajo el mando de la principal "cerebro" de la CPU, de modo que usted no está confiando en un "no-tiempo real" OS a hacer algo de una manera oportuna.

3voto

Nick Presta Puntos 13298

Todos los elses respuesta es mejor, pero tengo un poco de añadir que pueden ser útiles. Esto puede ser un poco fuera de la marca y me gustaría añadir un comentario, pero hay un 50 rep regla:(

Respuesta corta es que depende, ver arriba pero, ¿por qué no pensar en el procesador de beneficios también.

¿Por qué no pensar en los beneficios de procesadores pequeños. Después de todo esta es una pregunta acerca de los procesadores. Para matemáticas y ciertos tareas iterativas, varios procesadores pueden producir un logarítmica impulso. De Amdahl regla establece que un impulso se puede lograr de \$\frac{1}{((1-p)+\frac{p}{s})}\$ pero este viene . P es el porcentaje de la computación que se pueden dividir y s es la aceleración (depende del número de operaciones, hardware, etc.).

Por supuesto, el costo, facilidad de implementación; etc. son importantes y aún más importante a tener en cuenta.

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