¿Qué significa el microcontrolador de 8,16,32 bits desde el punto de vista de un programador?

Desde el punto de vista de un programador

Diferencia y cosas para cuidar:

  • Un controlador de 8 bits funciona en 8 bits a la vez, por lo tanto, es adecuado para aplicaciones de baja potencia y menos cómputo. Mientras que un controlador de 32 bits puede trabajar en 32 bits a la vez, lo que es adecuado para aplicaciones de cómputo intensivo (FFT, proceso de imagen) y consume un poco más de energía.
  • Los tipos de datos importan en 8 bits. Por ejemplo, int var_1 asigna 2 bytes en AVR (micro de 8 bits) y char var_2 asigna 1 byte. Pero en los microcontroladores de 32 bits, incluso si declara char var_2, se asigna una ubicación de datos de 32 bits que da como resultado un desperdicio de memoria. Por lo tanto, un microcontrolador de 32 bits es eficiente cuando lo usa para el cálculo intensivo de datos pesados. Por lo tanto, usar un ARC uC de 32 bits para todos los cálculos de 8 bits será una exageración obvia.
  • El desbordamiento de datos es un problema en uC de 8 bits. Considere el siguiente ejemplo

uint8_t a, b, c; // todas las variables de 8 bits
a = 200;
b = 200;
c = (a + b) / 2;
      
      El resultado esperado es c = 200. Pero no lo será. ¿Por qué?
a + b se calcula primero dando 400 que es mayor que 255 (límite de 8 bits). Por lo tanto, el resultado MSB será un desbordamiento y c tendrá datos incorrectos.

Solución: c = a / 2 + b / 2;
O incluso mejor c = (a >> 1) + (b >> 1);

Estas son las pocas diferencias que se me ocurren ahora.

La mayor limitación que tienen los microcontroladores (en comparación con las PC o los teléfonos inteligentes) es la disponibilidad de solo un puñado de memoria.

Para simplificar enormemente, 8 bits, 16 bits, 32 bits o 64 bits significa el tamaño de cada instrucción que ejecuta la CPU. Dado que todo el código se compilará con estas instrucciones, significa que el tamaño final también aumentará. Ese es uno.

Si su CPU puede procesar n bits en x ciclos, entonces necesitaría 2 ciclos para procesar 2 bits. Por lo tanto, es posible que desee definir sus tipos de datos en consecuencia. Un escenario común es el tamaño de un ‘int’ y la capacidad de procesar puntos flotantes.

Una CPU de 16 bits será ‘más lenta’ que una de 32 bits, simplemente porque puede procesar menos datos en un momento dado. Por supuesto que hay velocidad de reloj y otras cosas.

Compiladores cruzados. Las MCU de 32 bits definitivamente tienen más compiladores cruzados que las inferiores.

Finalmente, rango de direcciones. Cuánta memoria puedes conectar. Las CPU de bits más bajos pueden abordar una menor cantidad de memoria.

En un microcontrolador está hecho de muchos registros. Ahora, en un controlador de 8 bits, podrá agregar 255 + 255 = 510, pero no podrá adelantarse a este número, si desea multiplicar 510 por 2, no tiene espacio en su controlador!

Considere un controlador de 16 bits, puede hacer la operación de 65565 * 2 = 131070, pero no más allá de eso. Como puede ver, a medida que aumentamos los bits del microcontrolador, aumenta el rango de valores en los que puede trabajar.

En el controlador de 8 bits, si necesita agregar números de 16 bits, deberá realizar 2 ciclos de adición: agregue el byte inferior y luego agregue el byte superior (con el acarreo generado desde el byte inferior) mientras que en 16 bits, puede agregar Número entero de 16 bits de una vez.

En segundo lugar, dado que el controlador procesa 16 bits a la vez, la operación también sería más rápida.

Lo que debe tener cuidado al programar los controladores con tamaños más altos es que no debe desperdiciar la memoria. Como estarías acostumbrado a programar con 8 bits, debes tener cuidado de usar todo tu espacio. De lo contrario, estaría utilizando datos de 8 bits y el tiempo de ejecución aumentaría y desperdiciaría su controlador de 16/32 bits (espero que entienda lo que quiero decir)

El término 8/16/32 bit puede usarse para referirse a dispositivos con varias combinaciones de bus de datos, bus de dirección, registro y anchos de conjuntos de instrucciones. Debe comparar dispositivos específicos y sus compiladores asociados para sacar conclusiones concretas.

Desde el punto de vista del software, los tamaños de datos y el rango de direcciones son las variaciones más obvias. Por ejemplo, en C, el tamaño de un int puede variar y generalmente es de 16 bits en compiladores de 8 y 16 bits.

Básicamente, un dispositivo de 8 bits requerirá una mayor cantidad de accesos de bus y más instrucciones para realizar operaciones aritméticas de 16 o 32 bits, por lo que puede ser más lento que su velocidad de reloj básica por ese motivo.

Si bien no está relacionado con el ancho de la arquitectura, es poco probable que los dispositivos de 16 y 8 bits incorporen una FPU o MMU, o incluso memoria caché, mientras que estos son más comunes en dispositivos de 32 bits.

  • Significa que el procesador / controlador puede procesar datos de 8 bits.
  • Significa un ancho del bus de datos.
  • 8 bits significa bus de datos de 8 bits de ancho, lo mismo para 16 y 32.
  • pero no hay relación con el bus de direcciones, puede tener cualquier ancho.
  • Los ejemplos 8051 y 8085 son controladores y procesadores de 8 bits.
  • tenían bus de datos de 8 bits. pero el bus de direcciones de 8051 tiene 16 bits de ancho.