Existen numerosas plataformas de MCU y una vez que alguien se ha acostumbrado a una, generalmente se muestran reacios a cambiar a otra plataforma.
Mi pregunta es: si uno comenzara a usar una MCU para tareas de propósito general hoy, ¿cómo elegiría una? ¿Cuáles son los puntos de venta únicos de las diferentes plataformas?
Hace un año, di una charla sobre el tema de la selección de microcontroladores (me tomó alrededor de 1,5 horas). La audiencia eran programadores y creadores de software de alto nivel. La mayoría de la audiencia no tenía experiencia previa en μC, el resto ha jugado solo con Arduino. El conteo de cabezas en la audiencia fue de aproximadamente 30. Entonces, esto fue una transmisión múltiple, en lugar de una clínica uno a uno.
La diapositiva clave en la charla fue esta:
Dimensiones
para comparar microcontroladores. La lista está en orden descendente.
- Entorno de desarrollo (cadena de herramientas)
- Entorno de desarrollo
- ¿Mencioné el entorno de desarrollo?
- Soporte
- Notas de aplicación
- Apoyo entre pares: conocimiento tribal, amigos, foros, los códigos [sic]
- Características
- Memoria
- Periféricos
- destreza computacional
- El consumo de energía
- Costo
PD
Debo definir el alcance al que se limita esta respuesta mía. Veo esta cuestión de selección de plataforma a través de dos tipos de lentes. El primero es un prototipo. El segundo es un desarrollador de equipos profesionales con precios de venta en el orden de $ 3k y cantidades de cientos al año. La lente del aficionado tampoco está muy lejos. En estos casos, el costo incremental del microcontrolador es pequeño, en comparación con el costo de desarrollo o el costo del equipo profesional en el que se integra el microcontrolador.
Hay, por supuesto, una perspectiva muy diferente de la producción en masa. Cuando alguien elige un microcontrolador para un dispositivo barato que se producirá en grandes cantidades (los juguetes convencionales son un buen ejemplo), lo impulsará el costo del hardware. Un ahorro modesto en el costo del hardware multiplicado por un gran volumen de producción (en cientos de miles o más) puede justificar el dolor de usar un entorno de desarrollo difícil de manejar y un microcontrolador a precio de ganga con un soporte mediocre.
Dado que esta pregunta no ha producido la comparación de plataformas que esperaba, he intentado crear una yo mismo estudiando la literatura y las otras respuestas. Tal vez esto pueda ayudar a alguien más en el futuro.
Avíseme si hay algún error o si hay información que pueda agregar.
Notas sobre la comparación:
FOTO:
AVR:
Brazo Cortex-M:
PSoc: (de la respuesta de Rocketmagnet)
Hélice: (de la respuesta de Rocketmagnet)
USB:
"Leyenda" para la lista a continuación:
Propiedades del dispositivo menos costoso: (en orden aproximado de precio)
ethernet:
Su elección de MCU depende mucho del tipo de proyectos en los que va a trabajar. ¿Está fabricando dispositivos sencillos, súper baratos y de gran volumen, como luces intermitentes para bicicletas? ¿Está desarrollando prototipos de robots complejos que tienen que lidiar con numerosos sensores y dispositivos IO extraños?
Principalmente trabajo en esto último. El principal problema para mí es tratar de encontrar microcontroladores que tengan el conjunto de periféricos que quiero. Esto es muy difícil ya que nuestros requisitos no parecen ser los principales. Queremos cosas como 5 canales PWM, 5 decodificadores de cuadratura, 2 puertos SPI no estándar y un UART con IO negado.
Los únicos MCU que he visto que pueden manejar ese tipo de requisitos con facilidad son PSoC y Propeller.
El Propeller es básicamente ocho MCU de 32 bits en un solo chip. Si desea algún tipo de periférico, simplemente programe una de las MCU para realizar ese trabajo. Así que puedes tener lo que quieras.
Los PSoC vienen en dos sabores, 3 y 5. El 3 es un núcleo 8051 y el 5 es un ARM cortex M3. En el chip también se incluyen bloques digitales y analógicos reconfigurables que se pueden convertir en una amplia gama de periféricos: ADC, filtros, amplificadores operacionales, DAC, SPI, UART, decodificador de cuadratura, generador CRC, etc.
El entorno de desarrollo es fantástico. Tiene la edición de código fuente habitual de un IDE típico, pero también tiene un editor de esquemas. Literalmente, puede conectar cualquier circuito digital que desee, conectando los periféricos con puertas, flip-flops, etc. ¿Necesita 5 PWM? Fácil, solo colóquelos en el esquema, conéctelos y listo. Incluso puede escribir sus propios periféricos en Verilog si desea algo que no se proporciona. Gran parte de su aplicación puede implementarse fácilmente en este tipo de hardware.
El beneficio real es que puede quedarse con un chip, sabiendo que puede abordar muchos de los proyectos que querrá hacer en el futuro. Lo que encontré molesto acerca de los PIC fue rastrear constantemente docenas de dispositivos en busca del que tenía el conjunto de periféricos particular que necesitaba. Ahora no tengo ese problema.
Para mí, el requisito más importante era si el dispositivo/el IDE es compatible con mi PC que no es Windows (Linux). Resultó que para mí Atmel AVR tenía mejor soporte (código abierto) que PIC.
Usar más de una plataforma está bien. Selección del mejor para cada trabajo y también disponibilidad de código y ejemplos relacionados con el trabajo.
La mayoría de ellos tienen buenas herramientas de desarrollo, arduino tiene Visual Studio, Pic tiene una gran herramienta y otros también. Entonces, para mí, es qué tan rápido y fácil puedo hacer bien el trabajo, + ¿cuántas personas de código abierto trabajan en lo mismo?
Los microcontroladores son un mundo que cambia rápidamente, hay muchas ventajas de aprender en los chips "in" actuales y los IDE más populares son la ayuda de la comunidad. Como persona de PIC, diría que Aduino probablemente tiene las mejores placas IDE y de desarrollo para novatos en este momento y puede agregar mucho a una placa aduino básica sin tocar un soldador.
Cualquiera que use un aduino para cosas de la vida real pronto querrá seguir adelante, pero para entonces habrá aprendido mucha electrónica digital básica y un buen subconjunto de C para usar fácilmente algo más adecuado.
Como alguien mencionó que eliges el chip para tu proyecto, he visto algunos proyectos que usan chips ARM como simples sensores de temperatura o convertidores AD, de la misma manera que he visto aduinos y PIC 16 llevados al límite para generar un juego de invasores del espacio, FPGA son geniales y es bueno entender HDL si te estás metiendo en serio en el diseño electrónico... pero desafortunadamente no hay muchos proyectos en el mundo real en los que necesitarás usar uno. La mayoría de los trabajos son de bajo volumen, diseño rápido y precio limitado y aquí es donde el uC de 8 bits reina supremamente
Dado que muchas de las respuestas publicadas se centran en el uso de aficionados, aquí vienen varias recomendaciones dirigidas solo a desarrolladores profesionales.
Requisitos mínimos básicos
Si la MCU no cumple con todos estos requisitos, no debe utilizarse.
Señales de advertencia: hardware de MCU
Estas son cosas con las que no debe perder el tiempo en el año 2019.
int
, que a su vez viene con todos los peligros ocultos de las promociones de enteros del lenguaje C.Señales de advertencia - cadena de herramientas
Si va a realizar tareas de propósito general que pueden tener procesamiento analógico y digital, entonces hubiera preferido PSoC por su IDE, depurador y la gran cantidad de cosas que puede hacer con ellos.
He usado PSoC3 en la universidad para mis proyectos y es bastante simple de dominar. Lo único es que si necesita algunos chips de rendimiento, aún deberá obtenerlos por separado. Tiene puertos lo suficientemente buenos. Entonces, si está buscando algunos chips de rendimiento junto con el kit de desarrollo, mejor busque componentes separados.
Rocketmagnet
Wouter van Ooijen
chris stratton
FRA