¿Cuál es el mejor microcontrolador para trabajar hoy en día, ARM Cortex-M4 o AVR?

Depende de su propósito de usar un microcontrolador, si está utilizando tipos complejos de proyectos con decenas de relés de sensores y otros componentes y desea mantener la velocidad de procesamiento con sus datos en tiempo real, ARM será lo mejor, pero es un poco difícil comience con el brazo y luego con el AVR, ya que es un procesador de 32 bits si comienza con el microcontrolador stm32 ARM.

Los microcontroladores ARM tienen una amplia gama de aplicaciones y luego AVR . Se utilizan en muchos teléfonos inteligentes, computadoras, controles industriales y otras áreas del sistema integrado. Antes de comenzar a aprender ARM, debe tener un buen conocimiento de los sensores, E / S, EEPROM, y debe poder aprender mediante un enfoque esquemático. Lectura de la hoja de datos de componentes específicos y las especificaciones técnicas y después de eso, necesita interactuar y programar esos dispositivos junto con el microcontrolador ARM usando las instrucciones y el código apropiados. Aquí hay un esquema para el parpadeo básico en ARM con código

esquemático

y el código para el esquema anterior es

#include “stm32f0xx.h”
// Crear función para esperar una cantidad de tiempo especificada
nulo WaitForAMoment (int Moment)
{
volátil int i, j;
para (i = 0; i <Momento; i ++) {
j ++;
}
}
int main (nulo)
{
// Habilite el reloj GPIO para el puerto C usando AHB y RCC
RCC -> AHBENR | = RCC_AHBENR_GPIOCEN;
// Establecer cualquier registro de control para PortC Pin 6
// Moder
GPIOC -> MODER | = GPIO_MODER_MODER6_0;
// OTyper
GPIOC -> OTYPER & = ~ (GPIO_OTYPER_OT_6);
// OSpeedr
GPIO -> OSPEEDR | = GPIO_OSPEEDR_OSPEEDR6;
// PUPDr
GPIOC -> PUPDR & = ~ (GPIO_PUPDR_PUPDR6);
mientras que (1)
{
// Enciende el LED (BSRR)
GPIOC -> BSRR | = GPIO_BSRR_BS_6;
// Espere
WaitForAMoment (200000);
// Apaga el LED (BRR)
GPIOC -> BRR | = GPIO_BRR_BR_6;
// Espere
WaitForAMoment (200000);
}
}

Por otro lado, AVR es fácil de aprender, tenemos que dar instrucciones de 8 bits al microcontrolador, que es un poco más fácil que ARM de 32 o 64 bits. Hay miles de recursos en línea gratuitos para aprender el concepto central de AVR.

Veamos un ejemplo de blinky en AVR

esquemático

y el código para el proyecto anterior es

#include
#include
int main (nulo)
{
DDRA = 0b00000001;
mientras que (1)
{
PORTA = 0b00000001;
_delay_ms (1000);
PORTA = 0b00000000;
_delay_ms (1000);
}
}

Bien, entonces si está haciendo proyectos como proyectos grandes, vaya a través de ARM, pero se recomienda comenzar desde AVR.

Referencia para aprender AVR

Comenzando con AVR atmega16

Proyectos de microcontroladores AVR que utilizan ATmega16 y ATmega32

Esa pregunta es similar a preguntar “¿qué computadora portátil debo comprar?”

Depende de tus necesidades. Los microcontroladores basados ​​en AVR son simples. Puedes comenzar rápidamente.

Los microcontroladores basados ​​en AVR también son muy limitados en términos de potencia informática. Su conjunto de instrucciones es de 8 bits, y normalmente se ejecuta en un rango de 12–16MHz.

ARM Cortex tiene una amplia gama de núcleos para microcontroladores. Por lo general, desearía un M4 si realmente necesita una informática de alto rendimiento, como el procesamiento de audio en tiempo real o el manejo de muchas tareas al mismo tiempo. Si desea una aplicación de baja potencia, es mejor que elija un dispositivo basado en M0, y si desea el chip ARM más pequeño y económico, obtenga un dispositivo M0 +.

En general, los dispositivos ARM serán más capaces que los AVR, tendrán acceso a una memoria más grande y más funcionalidad. Por lo general, son un poco más difíciles de conseguir, aunque no siempre.

Elegir un microcontrolador es un problema multidimensional. Debe tener en cuenta el número de pines, el voltaje, los periféricos integrados, etc., además del núcleo de su procesador.

Esa elección realmente tiene que ver con lo que pretendes hacer. Utilizo Cotex M4 para la mayoría de mis diseños en procesamiento digital de señales, robótica y sistemas de baja latencia. El ARM Cortex de 32 bits tiene el estándar de interfaz de software de microcontrolador Cortex, CMSIS. Facilita el trabajo, especialmente cuando se trabaja con chips de diferentes proveedores. Los chips AVR han existido por muchos años más. Muchas personas que usan MCU Cortex y otros procesadores Cortex probablemente los usaron en algún momento. Siguen siendo ideales para aplicaciones de bajo costo, 8 bits y baja potencia. Simplemente averigüe cuál es la escala del proyecto y luego elija la herramienta adecuada para el trabajo. Ambos son increíbles y todavía están en uso.

No hay mejor.

Pero sí, Cortex-M3 sigue siendo bastante relevante y se elige la mayoría de las veces, si se necesita algo más eficiente, entonces se elige Cortex-M0 +.

Pero, de nuevo, estas son solo arquitecturas centrales, no se desarrollarán directamente para estas. Entonces, si digo que necesitamos un M3 para nuestro propósito, ¿debe decidir qué MCU basado en M3? Hay muchos MCU construidos alrededor del núcleo M3 de muchos proveedores diferentes, muchos proveedores tienen MCU especializados basados ​​en M3. Lo mismo ocurre con cualquier otro núcleo, ya sea M0 +, R4, A5 / A7, MIPS, etc.

Concéntrese en los conceptos en lugar de la plataforma.

No hay “mejor”, de verdad. Un microcontrolador es solo un componente como cualquier otro, y hará su trabajo o no lo hará. El ARM es más rápido y más capaz que el AVR, pero solo funciona a 3.3V, mientras que el AVR funciona a cualquier voltaje de 1.8V a 5V. Si su aplicación implica funcionar con un par de baterías AA, el AVR es definitivamente el “mejor” para esa aplicación . Si está intentando hacer un reconocimiento de imagen, no tendrá mucha suerte con un AVR y, en ese caso, el ARM es el mejor.

ARM y AVR son procesadores, ambos tienen diferentes variantes de controladores. Puede seleccionar cualquier variante según precio y periferia

Mi preferencia sería la Cortex M4.