Tengo experiencia en ensamblaje y programación en C para microcontroladores, pero no estoy familiarizado con las diversas familias de MCU y DSP que ofrecen las empresas actuales. (por ejemplo: Texas Instruments, Atmel, Renesas)
Me gustaría saber acerca de los buenos microcontroladores/DSP y cómo es desarrollar con ellos. Resuma sus conocimientos sobre las diversas familias de MCU/DSP, una familia por respuesta.
Sería muy interesante también si detallas cuáles son las aplicaciones principales para este microcontrolador, por favor.
(Esta es una "wiki comunitaria", por lo que cualquier persona con una reputación de más de 100 puede refinar y mejorar las respuestas)
ARM es el estándar de la industria para los controladores de 32 bits, aunque el PIC32 tiene algunas características interesantes. Son bastante fáciles de usar. Me gustan los chips NXP LPC2000 y LPC1000 ARM, pero el nuevo chip Energy Micro ARM Cortex-M3 es muy interesante debido a su bajo consumo de energía, tan bueno como el MSP430 [Youtube]. El soporte es muy variable, los chips NXP tienen el grupo LPC2000 que dirijo, que parece gustarle a la gente: ¡tenemos más de 8000 miembros!
Atmel AVR , quizás en un Arduino : no estoy de acuerdo con Leon y diría que la línea AVR de Atmel es una gran familia para empezar. Es bastante diversa, desde ATtiny, pasando por ATmega, hasta Dragon (con la que no he trabajado). Diría que AVR32 y Xmega son familias diferentes.
AVRfreaks es uno de los mejores foros de electrónica en la web (que pronto será superado por Chiphacker :), también existe la comunidad Arduino, que está dirigida a los aficionados. Arduino es excelente para aprender hardware de microcontroladores, aunque no lo ayudará con la programación (el OP declaró que conocía ASM y C).
La suite WinAVR es muy sencilla en comparación con otras cadenas de herramientas. Simplemente descargue, presione Siguiente varias veces, ingrese un código y presione F5. No hay nada más fácil que eso. Claro, el editor de AVR Studio no tiene todas las funciones que debería tener, pero muchos IDE de proveedores no son mejores, o incluso peores (*tos*MPLAB*tos*).
No estoy seguro de la entrega, pero diría que el SOT23 ATtiny de 6 pines es un chip de nicho, y la versión SO8 o DIP está muy disponible. En una nota relacionada, también hacen un gran trabajo al obtenerlos tanto en DIP (para creación de prototipos) como en paquetes SMT compactos.
Serie TI MSP430
Hardware
La variedad de periféricos de hardware no es tan flexible como los PIC de Microchip, pero el soporte de la cadena de herramientas de depuración de software es mucho mejor que las piezas de Microchip. TI lanzó recientemente su nueva versión de Code Composer para los microcontroladores MSP430 y los DSP TMS320F28xx, que utilizan Eclipse. El soporte de depuración es excelente.
También son muy fáciles de configurar los registros de control, mucho más fáciles que los DSP 28xx.
El MSP430 puede ser excelente para aplicaciones intensivas de temporización, ya que normalmente tendrá más registros de captura/comparación disponibles para su uso. Esto puede simplificar enormemente los sistemas en los que necesita lidiar con muchos periféricos intensivos en tiempo.
Desarrollo
Puede comprar un sistema de desarrollo por $ 150 (hay una variante más barata de $ 20 MSP430 en una memoria USB, pero es un poco limitante), y obtiene un sistema real de creación de prototipos de hardware + depurador. También puede obtener la nueva plataforma de lanzamiento de TI que viene con 2 chips y cuesta $ 4.30.
Foto de microchip 16F/18F
mercado objetivo
Microprocesadores económicos de 8 bits. El 16F es una de las primeras líneas de procesadores de Microchip y no es particularmente adecuado para la programación en C/C++ debido a:
La serie 18F es más nueva y debe tenerse en cuenta si puede pagarla para su proyecto. Es similar en mercado objetivo, conjunto de periféricos, paquetes de circuitos integrados, herramientas de desarrollo y precio a la serie 16F. El núcleo 18F fue diseñado para ser más compatible con C y C++, debido a:
Software
Bastante fácil de programar, puede escribir usando su conjunto de 30 instrucciones de ensamblaje, o usar un compilador de C. Estos son MCU de 8 bits, por lo que si desea trabajar con valores> 255, tendrá que encontrar / escribir un código de suma / resta / multiplicación / división de 2 bytes usted mismo. Su RAM tiene 4 "bancos", por lo que si escribe en ensamblaje, debe seguir cambiando de un lado a otro para acceder a las variables almacenadas en bancos distintos al actual.
Hardware
Estos MCU funcionan bastante lentos, con una velocidad típica de 4 MIPS y una velocidad máxima de 20 MIPS. Tienen algunas funciones de hardware integradas que funcionan bien si se configuran correctamente, como el ADC, el puerto serie, el puerto paralelo, el bus CAN, el bus I2C, el bus SPI, la comparación de voltaje, la EEPROM y, por supuesto, los puertos de E/S multiusos. .
Documentación
Herramientas de desarrollo
Microchip tiene una nueva herramienta, el VDI , que facilita la configuración de las diversas funciones de hardware de la MCU, que genera código ensamblador o C. Mejor que verter sobre las hojas de datos.
Microchip ha ofrecido su MPLAB IDE durante muchos años y, aunque el programa ha ido mejorando lentamente, en comparación con las herramientas de desarrollo para PC (Visual C++, Eclipse/NetBeans para Java/etc.), la interfaz de usuario es muy pobre y el software todavía tiene muchos errores. Tampoco es compatible con C++, a pesar de que la diferencia entre C y la mayoría de las características de C++ (excluyendo la asignación de memoria dinámica, las funciones virtuales y algunas otras características) es muy pequeña y C++ fomenta la modularidad de la programación. Hay proveedores de IDE de terceros, particularmente IAR, pero son costosos. (Hi-Tech fue comprada recientemente por Microchip).
La depuración en circuito se ofrece en algunas piezas mediante la interfaz ICD de Microchip, una interfaz serie de 2 pines a la que se puede acceder a través de los adaptadores de depuración ICD2, ICD3 , REAL ICE , PICkit2 /3, etc. Asegúrese de comprobar si la pieza que elija tiene las características de ICD! Las características de depuración son algo limitantes y tienen un "deslizamiento" en el que establece un punto de interrupción en una instrucción y el programa se detiene unas pocas instrucciones más tarde. Sin embargo, ICD es mejor que nada.
Soporte
Blackfin de Analog Devices La familia Blackfin es un DSP/microcontrolador híbrido con un sólido núcleo RISC y admite instrucciones de procesamiento de señales/vídeo. Algunas instrucciones admiten SIMD.
Hardware
Tiene un núcleo RISC. Las velocidades van desde 200 MHz de un solo núcleo hasta 600 MHz de doble núcleo. Tiene muchos periféricos: 10/100 Ethernet MAC, UARTS, SPI, controlador CAN, temporizadores con soporte PWM, temporizador de vigilancia, reloj en tiempo real y un controlador de memoria síncrona y asíncrona sin cola. Tiene administración de energía dinámica: apaga automáticamente las partes del procesador que no se utilizan.
Desarrollo
Las dos principales herramientas de desarrollo son VisualDSP++ de AD y la cadena de herramientas GNU. También hay un SDK con mucho código y notas de aplicación. El código SDK sirve como marco o como buenos ejemplos de código. Hay varios sistemas operativos, incluido uCLinux, que se ejecutarán en él. Hay varios tableros de evaluación disponibles. Los manuales son indispensables.
Precios actualmente desde 2$ en cantidades de 1000 unidades.
El Parallax Propeller es un extraño microcontrolador de 8 núcleos (ocho "cogs" más un concentrador) que puede hacer cosas muy interesantes/impresionantes, incluida la generación de video SD/VGA.
Tiene su propio entorno de desarrollo que incluye un lenguaje llamado SPIN. Asamblea (PASM) está naturalmente disponible.
Existe un considerable apoyo de la comunidad y proyectos visibles que utilizan el chip.
No hay una amplia gama de modelos, pero el chip parece ser el resultado de un diseño muy cuidadoso y una larga carrera de desarrollo realizada por personas extremadamente talentosas y competentes. Puede estar disponible por alrededor de $ 8.
El hardware de programación (dentro del sistema) aparentemente consiste en un puerto serie de nivel TTL y una línea de reinicio. Hay un dongle llamado Prop Plug disponible.
¿Qué tal el STM32 , otra familia de mcu basada en Cortex-M3?
Comenzar es barato ya que encontré algunas cosas buenas de Olimex.
Luego uso gcc como compilador y OpenOCD para controlar el jtag.
dsPIC33F y PIC24 : Microchip tiene una familia de microcontroladores de 16 bits y 40 MIPS llamados dsPIC33F que combinan su conjunto de instrucciones PIC24F y periféricos con funciones DSP, como dos acumuladores de 40 bits con opciones de redondeo y saturación; multiplicar y acumular de un solo ciclo; y cambios de hasta ±16 bits para datos de hasta 40 bits. Los precios son bajos (tan bajos como $ 2 en volumen). Una cosa que me gusta de los microcontroladores de Microchip es que muchos de sus dispositivos están disponibles en paquetes DIP que son ideales para la creación de placas. He usado uno de estos en un proyecto donde necesitaba decodificar señales DTMF; era más rentable que una solución de hardware decodificador DTMF dedicada. Se utiliza un PIC24 en el increíble uWatch, "El reloj con calculadora científica programable RPN/algebraica más potente (¡y el único!) del mundo".
Cypress PSoC1 (CY8C29466) tiene un núcleo de CPU simple de 8 bits rodeado de bloques digitales y analógicos similares a FPGA.
Tiene tanto entradas analógicas como salidas analógicas. Muchos proyectos que requerirían un montón de partes externas con cualquier otro microcontrolador (amplificadores operacionales, PGA, etc.) se pueden realizar con un solo chip PSoC. Muchos ratones de computadora usan un PSoC1. Por ejemplo, puede decodificar tonos DTMF que vienen en un pin de entrada y generar directamente señales DTMF analógicas independientes en dos pines de salida: verdadero analógico, no PWM.
Los bloques digitales y analógicos se pueden configurar para que hagan las cosas de manera completamente independiente del núcleo y, por lo tanto, con un tiempo de respuesta fijo garantizado, incluso si la CPU está ocupada manejando alguna interrupción durante ese tiempo.
Potencia bastante baja. Viene en paquetes DIP y SMT.
El núcleo de 8 bits y 24 MHz es más o menos equivalente al núcleo PIC16F, con el peculiar cambio de banco y todo. Hay compiladores de C patentados disponibles, pero es poco probable que GCC se transfiera a cualquiera de ellos.
El proyecto "Gainer.cc" programa sistemas basados en PSoC1 mediante el procesamiento a través de un cable USB, muy similar al proyecto posterior "Arduino".
El foro http://www.psocdeveloper.com/ es amigable. Hay algunas utilidades disponibles para hacer desarrollo en Linux: http://m8cutils.sourceforge.net/ .
Los micros Freescale HCS08 son competidores directos de los PIC10-18 y AVR, generalmente de menor costo pero aún con un conjunto de periféricos bastante rico. Su biblioteca de notas de aplicaciones y material de referencia es bastante buena.
Su CodeWarrior IDE (compilador gratuito para hasta 32k de código) incluye algunas bibliotecas útiles de "Inicialización de dispositivos" para un enfoque basado en GUI para voltear bits, y un "Procesador experto" más avanzado que puede generar controladores de nivel superior para periféricos. No está obligado a usar ninguno de los dos, y simplemente puede hacer todo en código C directo si lo desea.
Serie TI TMS320F28xx de DSP.
mercado objetivo
Convertidores de potencia de control de motores y controlados digitalmente: tienen periféricos PWM muy flexibles y ADC rápidos.
Hardware
Estos DSP tienen dos grandes inconvenientes:
Herramientas de desarrollo
Depuración en tiempo real a través del puerto JTAG, utilizando Code Composer v4 (basado en Eclipse).
Compatible con MatLAB simulink para la generación automática de código (no se requiere experiencia en programación)
Los DSP de TI solían ser muy caros de crear prototipos porque necesitabas un pod de depuración en tiempo real de $ 1500 (adaptador JTAG), pero el precio ha bajado mucho (hay uno económico por $ 150-200) y venden placas de evaluación con adaptadores JTAG integrados.
XMOS fabrica una gama de chips de procesamiento paralelo de 32 bits muy potentes (1600 MIPS de cuatro núcleos con 32 subprocesos de hardware). Son lo suficientemente rápidos como para hacer USB y Ethernet de alta velocidad en el software. Sus herramientas son muy buenas, los chips son magníficos, tienen un precio razonable (comienzan en $7.50) y la gente allí es muy útil. Tienen dos foros de soporte muy buenos; uno es administrado por la empresa, el otro es independiente.
Tendré que votar por Cypress PSoC3. He estado usando PIC durante unos 10 años (PIC16, PIC18, dsPIC y PIC32). Me vuelven loco con su configuración periférica irritante y la búsqueda constante a través de la hoja de datos para encontrar ese bit que debe borrarse para que funcione algún pin.
Por otro lado, la experiencia que he tenido hasta ahora con los PSoC3s ha sido una delicia. Lo más importante es que configurar los periféricos digitales y analógicos es una alegría total. Los puertos serie, los relojes, las interrupciones, los controladores, los comparadores, los ADC y los DAC se pueden conectar en una hoja esquemática y funcionan perfectamente.
Por ejemplo, puede conectar su PWM para activar el ADC para muestrear en medio de un pulso, lo que hace que la medición de corriente del motor sea más precisa. Intenta hacer eso en un PIC.
¿Quiere 5 PWM, 5 decodificadores de cuadratura, un ADC, un puerto SPI y un generador CRC en el mismo chip? Lo tienes. ¿Desea configurar el ADC para muestrear secuencialmente la corriente en cada motor en el centro del pulso? Lo tienes. Además, puede conectar todas estas entradas y salidas a casi cualquier pin que desee.
Ah, sí, Y si no hay un periférico disponible en la biblioteca, ¡puedes escribir el tuyo propio en verilog!
Cypress PSoC5 tiene un ARM Cortex M3 de 32 bits rodeado de bloques digitales y analógicos similares a FPGA.
ADC y DAC analógicos de resolución de 20 bits.
Los bloques digitales y analógicos se pueden configurar para que hagan las cosas de manera completamente independiente del núcleo y, por lo tanto, con un tiempo de respuesta fijo garantizado, incluso si la CPU está ocupada manejando alguna interrupción durante ese tiempo.
Potencia bastante baja.
El núcleo ARM Cortex-M3 de 32 bits y 80 MHz es aproximadamente equivalente a...
El soporte de Atmel para el AVR no es muy bueno y sus herramientas de hardware son un poco inestables. Sin embargo, los chips son buenos y el foro AVR Freaks es muy bueno. Tienen serios problemas de entrega con sus chips más nuevos como el XMega y los chips Tiny de 6 pines.
Zilog también tiene algunos microcontroladores. Personalmente no he probado a programar la línea de chips Z8 Encore , pero sí envían muestras. Tienen muchos chips diferentes que van desde 1 KB a 16 KB (tal vez más) con periféricos que incluyen UART, ADC, I2C , SPI, etc.
En mi opinión, este no es un muy buen microcontrolador para aficionados.
Usé varias familias de procesadores. El problema principal al aprender un nuevo procesador es aprender a codificar cientos de registros de configuración de registros periféricos, este será el principal proceso que consumirá mucho tiempo cuando cambie de una familia a otra. el código de la aplicación principal está escrito en c, no importa la familia que estemos usando, desearía que hubiera evolucionado un estándar para los registros periféricos. Si alguien está al tanto de cualquier desarrollo en esta dirección, por favor, compártalo.
Uso PIC, ARM, MSP430, AVR y algunos otros.
Microchip tiene un excelente soporte y buenas herramientas de hardware y software, la depuración es especialmente fácil y rápida. La arquitectura de 8 bits está un poco anticuada. Sus nuevos chips de 16 bits son excelentes. Son el líder del mercado en MCU de 8 bits.
Eduardo
condez
XTL
Wouter van Ooijen
olin lathrop
Nick Alexeev
mate joven
ricardo
mate joven
ricardo
ricardo
mate joven