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

7

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

Entiendo las diferencias entre ellos, por lo que haré la pregunta de una manera diferente.

Digamos que tengo una aplicación en la que tendré una pantalla LCD utilizada para mostrar una imagen de mapa de bits, un teclado de 16 teclas, un zumbador, un sensor de temperatura y humedad y una entrada del mouse. Un microcontrolador de 8 bits de gama alta puede hacer todas estas cosas fácilmente en tiempo real. Ahora, si me muevo a una pantalla LCD en color, es posible que necesite un microcontrolador de 32 bits que pueda actualizar la pantalla en color lo suficientemente rápido y tenga más memoria. Sin embargo, es posible que solo descubra que mi microcontrolador de 8 bits de gama alta es débil, después de haberlo probado en el proyecto.

Entonces, antes de comenzar a trabajar en el proyecto, ¿cómo sabemos qué tamaño y cuánto microcontrolador se necesita para el proyecto?

    
pregunta quantum231

7 respuestas

13

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

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

Si el tiempo de desarrollo corto tiene más prioridad que el costo de los bienes, entonces elija el controlador más musculoso. Puede hacer la optimización de costos más adelante como una etapa separada. La optimización de costos prematura [sic] a menudo estropea proyectos.

Si ya está en la etapa de optimización de costos, entonces comienza con un producto que funciona. La primera versión no optimizada actúa como un prototipo para la versión optimizada. La versión anterior elimina los requisitos.

Relacionado: ¿Cómo elegir una plataforma MCU?

    
respondido por el Nick Alexeev
6
  

antes de comenzar a trabajar en el proyecto, ¿cómo sabemos qué tamaño y cuánto microcontrolador se necesita para el proyecto?

No puedes saberlo. Y eso es un gran problema. Si elige un microcontrolador que es demasiado pequeño, puede quedarse sin recursos (memoria / pines / registros / otras características) y puede ser difícil estimar con precisión estos recursos hasta que sea demasiado tarde. Pero si elige un microcontrolador que es demasiado grande, está pagando por los recursos que no está usando, y eso se suma al costo del sistema.

A veces puede hacer una suposición adivinada de la cantidad de recursos que necesitará su aplicación ... por ejemplo, si estaba haciendo cálculos FFT, puede calcular la cantidad exacta de memoria que requerirán las muestras. Pero es más difícil determinar de manera confiable cuánto espacio de código de objeto requerirá el software, hasta después de que se haya escrito.

Una buena protección contra la falta de 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 de ARM , Microchip PIC , Atmel AVR y otros micro escalables. A medida que desarrolla su software, puede pasar de un sistema de desarrollo más grande a un sistema objetivo más pequeño, manteniendo el costo final del producto final bajo.

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

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

    
respondido por el MarkU
3

Un factor importante es el tamaño de las variables más utilizadas. Si está utilizando principalmente variables de 8 bits y solo necesita acceder a puertos de 8 bits, entonces es probable que pueda sobrevivir con una MCU de 8 bits.

Sin embargo, si tiene muchas variables de 16 bits, e incluso unas pocas longitudes de 32 bits, tendrá que ver una MCU de 16 bits (o incluso de 32 bits) desde el acceso a 16 las variables de bits con una MCU de 8 bits requieren una gran cantidad de código.

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

Incluso si no tienes tiempo para escribir gran parte del código que necesitarás usar, te sugiero que escribas un poco de antemano y compiles los microcontroladores que estés usando. La mayoría de los fabricantes de microcontroladores tienen versiones gratuitas de sus compiladores, quizás limitadas por el tamaño del archivo de salida, o limitando la cantidad de optimización.

    
respondido por el tcrosley
2

Lo ideal es que, antes de diseñar una nueva placa, realice un proyecto de prueba de concepto utilizando una placa de desarrollo (o cualquier placa disponible comercialmente) o una placa sobrante de uno de sus proyectos anteriores.

    
respondido por el Jeanne Pindar
2

Bueno, antes de que realmente empieces a codificar, primero debes investigar un poco lo que necesitarás para realizar un proyecto. Eso es parte del trabajo.

Si ya está familiarizado con los microcontroladores, entonces investigue si una uC de 8 bits es suficiente o no. Depende de la complejidad, ya sea que se extienda o no (como de un LCD monocromo a un LCD a color), es a largo plazo, tiene que ser un bajo consumo de energía, un bajo uso de memoria, etc.

Tuve que investigar un poco sobre qué ARM uC tenía que elegir y también qué compilador (según el precio y la popularidad). En mi situación, era importante verificar la disponibilidad de periféricos.

Así que solo un simple sí o no no es posible. Entonces, bienvenidos al mundo de la ingeniería :)

    
respondido por el AndaluZ
2

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

Como lo dijo @tcrosley, una MCU de 32 bits puede agregar dos enteros de 32 bits de una sola vez, mientras que una MCU de 8 bits tendrá que hacerlo en este byte por byte. Los números de punto flotante necesitan al menos 16 bits y su matemática es más compleja, lo que significa mucho trabajo para la MCU de 8 bits. Una MCU de 32 bits puede hacer las matemáticas en hardware, así que una vez más, de una vez. Uno de los trucos puede ser hacer cuatro adiciones de variables de 8 bits a la vez. Cargue cuatro valores de 8 bits en el registro y agregue valores de 8 bits a cada uno de ellos.

Pero eso no es todo.
¡También observe detenidamente la periferia del hardware, que no es necesariamente más potente en las MCU de 32 bits!
Una experiencia:

En mi universidad, construimos un osciloscopio que consta de un PIC18F2550 (8bit, 10bit ADC, USB), un opamp para realizar varios rangos de voltaje y algunas tapas y amp; resistencias Esto se entendió como un osciloscopio muy simple y muy barato para escuelas con una tasa de muestreo de ... Supongo que era de unos 50 kHz. La transferencia se realizó a través de CDC para una alta compatibilidad.

Cuando el microchip produjo sus MCU PIC32, se veía prometedor. El precio fue casi el mismo, 120MInstructions / s en lugar de 12, USB de alta velocidad en lugar de Full Speed. El último punto fue interesante porque el rendimiento fue el factor limitante del PIC18, y los puntos de referencia de los microchips mostraron un rendimiento de USB extraordinariamente alto.

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

(No estaba involucrado en esto, así que no conozco los detalles)

    
respondido por el sweber
1

Una palabra proporciona la respuesta - EXPERIENCIA.

Hasta que pruebes las cosas y aprendas a ganar experiencia.

Tenga en cuenta también que hay tareas que puede configurar en cualquier MCU que pueden caer de bruces si se utiliza un enfoque de diseño incorrecto para los algoritmos. Hace mucho tiempo, codifiqué el firmware para una MCU de 8,9 bits a 4,9 MHz que usaba algoritmos inteligentes y podía monitorear el enganche / descolgado y detectar el estado del timbre al filtrar la señal de voltaje de timbre de ~ 20Hz en todas las 28 líneas telefónicas simultáneamente y luego informe ese estado a una estación de control central mientras ejecuta una pantalla LCD y opera una interfaz de usuario bastante compleja con los tonos DTMF detectados. Cosas divertidas.

    
respondido por el Michael Karas

Lea otras preguntas en las etiquetas