Especificaciones de los microcontroladores ¿Es todo lo mismo?

2

Soy virgen completo en electrónica. Aunque tengo mucha experiencia en programación. Nunca he jugado nada con la electrónica.

¿Cuáles son las especificaciones de los microcontroladores?

  

No. de pines digitales:
  No. de pines analógicos:
  SRAM:
  EEPROM:
  Flash:
  Voltaje de funcionamiento:

Si tan solo estas pocas son las características del microcontrolador. ¿Por qué vienen con una hoja de datos pdf larga?

Ahora, todos los días se pueden programar en C, y mientras se codifica solo se necesitan las primeras 5 informaciones, todas las demás se pueden encontrar fácilmente en los encabezados. Entonces, ¿por qué las empresas fabricantes no dan solo estas pocas informaciones y con algunos enlaces de aquí y allá?

y si todos los proveedores (Atmel / Motorola / Philips, etc.) hacen lo mismo por qué los profesionales no usan AVR mucho. más bien, las personas aficionados utilizan AVR. (obtuve esta información de otro hilo ¿Por qué los AVR de Atmel son tan popular? )

    
pregunta user1424

5 respuestas

7

La lista de parámetros que ha citado es solo el comienzo. Las cosas importantes (para mí) son la cantidad y el tipo de periféricos integrados en el procesador de silicio, desde qué pines están disponibles y cómo son impulsados por el software. Las diferentes familias de procesadores, incluso diferentes rangos dentro de la misma familia de un solo fabricante, tienen conjuntos de periféricos y modos de operación muy diferentes. No es posible proporcionar el nivel de soporte disponible a través de un sistema operativo principal, como el que obtendría en un sistema de escritorio dentro de los recursos de memoria del procesador.

Todos los dispositivos periféricos tienen su propio conjunto de registros de control, todos los cuales serán diferentes a los que se encuentran en otras familias de procesadores. Esto debe documentarse para permitir el uso del dispositivo.

Un ejemplo simple .
En el AVR32, la mayoría de los módulos tienen registros separados para configurar y borrar los bits de habilitación de interrupción para un periférico. Para habilitar una interrupción, escriba un 1 en el bit en el registro de habilitación. Para desactivarlo, escriba un 1 en el bit en el registro de desactivación. Para saber si está habilitado, lea el estado de bits de un tercer registro. En el MSP430, para habilitar la interrupción, escriba un 1 en el registro de habilitación de interrupción única, para deshabilitarlo, escriba un 0 en este bit, para averiguar si está habilitado, lea el estado del bit en este registro.

Sin todos los detalles en la hoja de datos, nunca lograría resolver esto. Esto se repite para cada uno de los registros disponibles para cada periférico dentro del dispositivo y puede ver por qué la hoja de datos se vuelve tan grande rápidamente.

He utilizado varias variantes de ARM, AVR32 y MSP y, aunque cada una incluye una serie de archivos de cabecera y bibliotecas de dispositivos para permitir el uso de los periféricos en el chip, estas bibliotecas son, para ser bastante honestas, variables. calidad (los errores LINT de algunos de los códigos se deben ver para creerlos) y, a menudo, no cubren el modo de operación de interrupción que se necesita para mi aplicación. La información en la hoja de datos me permite escribir y depurar el software para obtener el rendimiento óptimo para mi aplicación . Mis requisitos, normalmente una disipación de energía extremadamente baja, significarán que mi código debe escribirse usando el dispositivo de una manera diferente a la que la prioridad es el rendimiento de datos.

Su último punto acerca de que el AVR no se usa mucho en sistemas profesionales: hay muchos procesadores en el mercado y cada uno tiene sus fortalezas y debilidades. Tiendo a usar MSP430 debido a sus muy bajos requisitos de potencia. He usado AVR32 con preferencia al ARM-M3 por la misma razón. El precio es muy importante. En la mezcla de periféricos de chip y su ajuste a mi aplicación hará que un procesador sea un asesino y otro dispositivo muy similar un error. Para mí, el AVR y el AVR mega no tenían la combinación correcta de potencia de procesamiento, periféricos y consumo de energía y se descontaron muy pronto en el proceso de selección del procesador.

    
respondido por el uɐɪ
4

Una de las razones principales de la gran cantidad (a veces cientos de páginas) de hojas de datos es que cada familia de microcontroladores tiende a tener formas únicas de controlar cosas como los puertos serie (UART, I2C, SPI, USB), ADC y DAC, temporizadores / PWM, generadores de reloj, puertos paralelos, interrupciones y programación de memoria flash. Cada uno de estos periféricos está configurado y controlado por varios registros internos.

A pesar de que los registros pueden programarse en C, cada bit en cada registro aún tiene que documentarse.

El número de pines y la cantidad de memoria es solo una pequeña parte de la especificación.

    
respondido por el tcrosley
3

Estoy tratando de responder algunos puntos de su pregunta de manera más directa, para dar ejemplos de dónde esta información no es suficiente. Las especificaciones básicas que enumera no están completas, sino solo una descripción general. Cada una puede dividirse en más preguntas relacionadas, que deben responder en las hojas de datos:

  

No. de pines digitales:

¿Cuántos son 5V tolerantes? Voltajes más altos? ¿Colector abierto o emisor? ¿Disponible para periféricos de nivel superior (temporizadores, desplazadores de bits, etc.)? ¿Cuántos se pueden leer o actualizar simultáneamente?

  

No. de pines analógicos:

¿Entrada o salida? ¿Cuántos bits de precisión? Tecnología (delta-sigma, PWM, R2R ..)? ¿Con qué frecuencia se pueden medir? No es raro en absoluto que no puedan medirse al mismo tiempo.

  

SRAM:

¿La pila entra en la memoria RAM o se separa? ¿Que tan ancho es? ¿Se pueden apagar las piezas para reducir el consumo de corriente? ¿Se puede ejecutar el código desde la RAM?

  

EEPROM:

De nuevo, ¿ancho? ¿Cuánto tiempo se tarda en leer o escribir? ¿Cuáles son los requisitos de alimentación (a menudo se necesita un voltaje más alto para completar una escritura aquí)?

  

Flash:

¿Auto programable (por lo que uno podría tener un gestor de arranque)? ¿Se pueden leer los datos de Flash? ¿Se pueden usar todos esos bits para datos? ¿Cuántas operaciones (y de qué escala) puedo encajar en este tamaño?

  

Voltaje de funcionamiento:

¿Para qué rangos de frecuencia? ¿Las E / S toleran voltajes más altos que la fuente de alimentación? ¿Necesitamos rieles de suministro separados para analógico y digital, núcleo y E / S?

  

Ahora, todos los días se pueden programar en C, y mientras se codifica solo se necesitan las primeras 5 informaciones, todas las demás se pueden encontrar fácilmente en los encabezados.

En realidad, unos pocos pueden programarse en algo que solo se parece a C, y mucha información no estará presente en los encabezados, como los mapas de puertos a los cuales pin. A menudo esto variará dependiendo del paquete. Esto también es solo raspar la superficie, ya que encontrará que algunos controladores implementan hardware para propósitos muy diferentes, como subprocesos, IPC, sistemas de eventos, DMA, etc. que pueden ser críticos para un uso e irrelevantes para otro.

Entonces, dentro de una familia, una visión general del tipo que se muestra puede ser suficiente, pero generalmente habrá muchos más parámetros para comparar (número de temporizadores, por ejemplo). Depende mucho de la tarea.

FWIW, los AVR también son populares en la industria, pero a veces se evitan por razones específicas, como un solo proveedor, disponibilidad y resistencia.

    
respondido por el Yann Vernier
3

Lo que más falta en su lista son los periféricos en el chip, como (periféricos que puede encontrar o no en ciertos controladores NXP Cortex-M3)

  

Temporizadores de propósito general (¿cuántos?)
  Interrupciones externas (¿cuántas?)
  Reloj en tiempo real
  Temporizador de vigilancia

  (Motor) PWM (¿cuántos?)
  UARTs (¿cuántos?)
  Interfaces I2C (¿cuántas?)
  Interfaces CAN (¿cuántos?)
  Interfaces SPI (¿cuántas?)
  Interfaces USB (¿cuántos, velocidad, en movimiento?)
  Controlador LCD
  Ethernet
  Canales ADC (¿cuántos, cuántos bits?)
  Canales DAC (¿cuántos, cuántos bits?)

Entonces, hay mucho más para un microcontrolador que un mapa de memoria y E / S. Por cierto, incluso las I / O de propósito general deben especificarse: algunos pueden tener controladores de alta corriente, otros pueden tener capacidades de interrupción. Cada uno de estos tiene que ser descrito en un modelo de programación; Los registros controlan la interfaz y en qué direcciones se puede acceder. ¿Qué pasa si lees desde el registro? (Al contrario de lo que está acostumbrado con el almacenamiento común, leer un registro puede modificar bits en otros registros).
Todas estas son razones por las que el NXP LPC1759 tiene una hoja de datos de 73 páginas, complementada por un manual del usuario de 840 páginas (que describe las características comunes de la familia).

Si tiene en cuenta todas las funciones, no todos los proveedores hacen lo mismo, incluso los controladores construidos alrededor del mismo núcleo (como ARM Cortex) muestran grandes diferencias entre los fabricantes. Una cosa con la que intentan destacarse es la elección de los periféricos en el chip. Excepto los más pequeños, casi todos los microcontroladores tienen un par de UART. Parece que algunos usuarios necesitan más de ellos, por lo que ciertos fabricantes ofrecen hasta 8 UARTs (lo último que escuché).

Si los ingenieros utilizan menos AVR de Atmel en proyectos (no sé si eso es verdad), puede tener que ver con algo más que las especificaciones del producto. Algunas cosas que vienen a la mente:

  

precio,
  soporte del proveedor (¿tiene un FAE especializado en el producto?),
  Herramientas disponibles (s),
  plazos de entrega del producto,
  número de cambios de ingeniería (¿qué tan estable es el producto?),
  ¿Se ofrece una familia completa? (¿Puedo cambiar fácilmente a dispositivos similares, compatibles con pin o en otro paquete)?

    
respondido por el stevenvh
0

Yo tampoco tengo mucha experiencia, pero aquí hay algunos pensamientos sobre este asunto:

Algunas razones de diferentes proveedores de chips:

A menudo usan diferentes arquitecturas y esas cosas pueden ser importantes en la programación. Algunas instrucciones tardan más en ejecutarse y otras toman más tiempo. Los diseños de RISC resuelven eso a cierto nivel, pero todavía hay pocas instrucciones que llevan más de un ciclo. Por supuesto, esto es más importante si está programando directamente en ensamblaje.

No todos los compiladores de C son tan buenos. He escuchado a personas quejarse del comportamiento de los compiladores de C para varias plataformas integradas y la gran cantidad de peculiaridades que a menudo están presentes.

También hay factor social. En mi país, el PIC se convirtió en un nombre genérico para el microcontrolador. Los PIC se convirtieron en la opción predeterminada de todos al decidir qué microcontrolador utilizar.

Otro punto son las diferencias físicas entre los chips. Algunos tienen diferentes temperaturas de operación, diferentes consumos de energía, fallan de diferentes maneras y así sucesivamente. Todas estas cosas son muy importantes al hacer un producto serio.

Ahora, para información: lo más cercano a la hoja de datos en el mundo de la programación sería la especificación del lenguaje. Simplemente debe haber una fuente autorizada para toda la información sobre ese chip y esa es su hoja de datos. Todas esas cosas en esos archivos PDF largos son muy importantes para algunos usuarios. Por ejemplo, si bien es suficiente conocer algunas bibliotecas básicas para crear programas en C ++, hay usuarios que necesitan leer todo el estándar ISO / IEC 14882: 2003. Entonces, ¿cómo harías un compilador para un chip si no sabes lo que realmente hace un chip?

También hay características eléctricas importantes del chip que afectan a todo el circuito en el que se usa el chip. Hay voltajes más bajos y más altos para cada pin y pueden cambiar algunos chips con el cambio de frecuencia y temperatura. Se necesita tiempo para que se ejecute un ciclo (aunque puede que no sea importante desde el punto de vista de la programación, es importante si necesita sincronizar el resto del circuito con el chip). Todas estas cosas son importantes al elegir el microcontrolador para un proyecto.

    
respondido por el AndrejaKo

Lea otras preguntas en las etiquetas