8 votos

¿Cómo se sabe si una MCU de 8 bits es suficiente o se necesita una MCU de 16 bits?

Los microcontroladores de 16 bits son más potentes que los de 8 bits y los de 32 bits están a otro nivel. Dicho esto, si bien podemos decidir qué periféricos necesitamos para una aplicación y tratar de encontrar la alternativa más barata (y fácil de usar, es decir, la cadena de herramientas), ¿cómo se sabe si se debe utilizar un microcontrolador de 8 bits para una aplicación o uno de 16 bits o uno de 32 bits?

Entiendo las diferencias entre ellas, así que plantearé la pregunta de otra manera.

Supongamos que tengo una aplicación en la que voy a tener una pantalla LCD para mostrar una imagen de mapa de bits, un teclado de 16 teclas, un zumbador, un sensor de temperatura y humedad y una entrada de ratón. Un microcontrolador de 8 bits de gama alta puede hacer fácilmente todas estas cosas en tiempo real. Ahora bien, si paso a una pantalla LCD de color, entonces puede que necesite un microcontrolador de 32 bits que pueda actualizar la pantalla de color con la suficiente rapidez y que tenga más memoria. Sin embargo, puede que sólo descubra que mi microcontrolador de 8 bits de gama alta es débil, después de haberlo probado en el proyecto.

Entonces, antes de empezar a trabajar en el proyecto, ¿cómo podemos saber qué tamaño y qué potencia de microcontrolador se necesita para el proyecto?

0 votos

Efectivamente, deberías hacer una estimación como la que ya hiciste. Las tareas en tiempo real/rápidas suelen necesitar una MCU, el procesamiento de imágenes/entrada/salida avanzada (no tan en tiempo real) funciona mejor con un ARM. Básicamente podrías mirar qué proyectos tiene Arduino frente a Raspberry Pi. Aunque incluso hay MCU's de 32 bits que pueden hacer cosas bastante sorprendentes. Comprueba lo que es importante para tu proyecto, coge algo razonable, siempre puedes reducirlo si es necesario.

13voto

Nick Alexeev Puntos 20994

Normalmente, la decisión sobre el microcontrolador es un equilibrio entre:

  1. Características especiales (bajo consumo de energía, por ejemplo)
  2. Tiempo de desarrollo.
  3. Coste de los bienes en producción.

Si el tiempo de desarrollo es más prioritario que el coste de los productos, entonces opta por el controlador más musculoso. La optimización de los costes se puede hacer más tarde como una etapa separada. Una optimización de costes prematura suele estropear los proyectos.

Si ya está en la fase de optimización de costes, entonces se parte de un producto en funcionamiento. La primera versión no optimizada sirve de prototipo para la versión optimizada. La versión inicial sirve para aclarar los requisitos.

Relacionado: ¿Cómo elegir una plataforma MCU?

0 votos

Uno no creería lo universal que es el diseño-implementación-revisión cadena (o ciclo, si lo desea).

6voto

MarkU Puntos 3743

Antes de empezar a trabajar en el proyecto, ¿cómo podemos saber qué tamaño y qué potencia de microcontrolador se necesita para el proyecto?

No se puede saber. Y eso es un gran problema. Si eliges un microcontrolador demasiado pequeño, es posible que te quedes sin recursos (memoria/pines/registros/otras características) y estos recursos pueden ser difíciles de calcular con precisión hasta que sea demasiado tarde. Pero si eliges un microcontrolador demasiado grande, estarás pagando por recursos que no estás utilizando, y eso se suma al coste del sistema.

A veces se puede hacer una conjetura sobre la cantidad de recursos que necesitará la aplicación... si se hacen cálculos de FFT, por ejemplo, se puede calcular la cantidad exacta de memoria que necesitarán las muestras. Pero es más difícil determinar de forma fiable cuánto espacio de código objeto requerirá el software, hasta después de haberlo escrito.

Una buena protección contra el agotamiento de la memoria de código, es seleccionar una familia de microcontroladores que sea escalable a través de diferentes puntos de precio/rendimiento. Este es un gran punto de venta del ARM , Microchip PIC , AVR de Atmel y otras microescalas. A medida que desarrolle su software, podrá pasar de un sistema de desarrollo más grande a un sistema de destino más pequeño, manteniendo el coste del producto final bajo.

Escalable significa que todos los microcontroladores de esa familia tienen (casi) el mismo conjunto de instrucciones y (casi) los mismos registros. Por lo tanto, el software escrito para uno, funcionará en otro de la misma familia. (El código PIC de Microchip no funcionará en un ARM, pero si aprendes el PIC14 es fácil pasar al PIC12 o al PIC16).

Si sólo está construyendo un prototipo único, en lugar de una línea de producción completa, su mejor opción es quedarse con un sistema de desarrollo que sea un poco más grande de lo que cree que necesita, pero que tenga espacio para crecer.

3voto

Matt McMinn Puntos 6067

Un factor importante es el tamaño de las variables más utilizadas. Si utilizas mayoritariamente variables de 8 bits y sólo necesitas acceder a puertos de 8 bits, probablemente puedas arreglártelas con una MCU de 8 bits.

Sin embargo, si tienes muchas variables de 16 bits, e incluso unos pocos longs de 32 bits, entonces vas a tener que buscar una MCU de 16 bits (o incluso de 32 bits), ya que acceder a variables de 16 bits con una MCU de 8 bits requiere una gran cantidad de código.

Y si vas a utilizar alguna variable de punto flotante, te sugiero encarecidamente una MCU de 16 o 32 bits.

Aunque no tengas tiempo de escribir gran parte del código que necesitarás utilizar, te sugiero que escribas algo de antemano y lo compiles para los microcontroladores que vayas a utilizar. La mayoría de los fabricantes de microcontroladores tienen versiones gratuitas de sus compiladores, tal vez limitadas por el tamaño del archivo de salida, o por la limitación de la cantidad de optimización.

2voto

Lo ideal es que, antes de diseñar una nueva placa, hagas un proyecto de prueba de concepto utilizando una placa de desarrollo (o cualquier placa disponible en el mercado) o una placa sobrante de uno de tus proyectos anteriores.

2voto

Rory Alsop Puntos 2709

Por lo general, las MPU de 32 bits suelen ser más rápidas debido a una mayor frecuencia, pero también por sus capacidades o algunos "trucos" que pueden hacer.

Como dijo @tcrosley, una MCU de 32 bits puede sumar dos enteros de 32 bits de una sola vez, mientras que una MCU de 8 bits tendrá que hacerlo byte a byte. Los números de punto flotante necesitan al menos 16 bits y sus matemáticas son más complejas, lo que significa mucho trabajo para la MCU de 8 bits. Un MCU de 32 bits puede hacer las matemáticas en hardware, así que una vez más, de una sola vez. Uno de los trucos puede ser hacer cuatro sumas de variables de 8bit a la vez. Cargar cuatro valores de 8 bits en el registro, y añadir valores de 8 bits a cada uno de ellos.

Pero eso no es todo.
También hay que fijarse en la periferia del hardware, que no es necesariamente más potente en los MCU de 32 bits.
Una experiencia:

En mi universidad, construimos un osciloscopio compuesto por un PIC18F2550 (8bit, 10bit ADC, USB), un opamp para realizar varios rangos de voltaje y algunos caps y resistencias. Se trataba de un osciloscopio muy simple y barato para las escuelas, con una frecuencia de muestreo de... Supongo que era de unos 50khz. La transferencia se hizo a través de CDC para una alta compatibilidad.

Cuando microchip sacó su PIC32 MCU parecía prometedor. El precio era casi el mismo, 120MInstrucciones/s en lugar de 12, USB de alta velocidad en lugar de velocidad completa. El último punto era interesante porque el rendimiento era el factor limitante del PIC18, y los benchmarks de microchips mostraban un rendimiento USB notablemente superior.

Finalmente, resultó que el PIC18 hacía todas las cosas del USB en hardware, mientras que el PI32 parece hacer más en software - tan pronto como el PIC32 tiene más trabajo que hacer, el rendimiento disminuye. Por lo tanto, no pudimos realizar un osciloscopio más rápido con el PIC32.

(No estuve involucrado en esto - así que no conozco los detalles)

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