Un microcontrolador (abreviado µC, UC o MCU) es un circuito integrado programable, capaz de ejecutar las órdenes grabadas en su memoria. Está compuesto de varios bloques funcionales, los cuales cumplen una tarea específica. Un microcontrolador incluye en su interior las tres principales unidades funcionales de una computadora: unidad central de procesamiento, memoria y periféricos de entrada/salida.
Características de un Microcontrolador:
- Velocidad del reloj u oscilador
- Tamaño de palabra
- Memoria: SRAM, Flash, EEPROM, ROM, etc..
- I/O Digitales
- Entradas Analógicas
- Salidas analógicas (PWM)
- DAC (Digital to Analog Converter)
- ADC (Analog to Digital Converter)
- Buses
- UART
- Otras comunicaciones.
Microcontrolador: http://es.wikipedia.org/wiki/Microcontrolador
Estructura genérica de un microcontrolador:
Existen MCUs genéricas y otros de propósito especial como los DSP, para aplicaciones de voz y video por ejemplo.
Microcontroladores AVR
Los microcontroladores AVR son una familia de microcontroladores RISC del fabricante estadounidense Atmel. La arquitectura de los AVR fue concebida por dos estudiantes en el Norwegian Institute of Technology. Más información:
- http://es.wikipedia.org/wiki/AVR
- Microntroladores AVR: http://www.atmel.com/products/microcontrollers/avr/
Las placas Arduino usan principalmente microcontroladores de la gama AVR de Atmel, pero también de otras gamas de Atmel y de Intel.
RISC es una filosofía de diseño de CPU para computadora que está a favor de conjuntos de instrucciones pequeñas y simples que toman menor tiempo para ejecutarse. El tipo de procesador más comúnmente utilizado en equipos de escritorio, el x86, está basado en CISC en lugar de RISC, aunque las versiones más nuevas traducen instrucciones basadas en CISC x86 a instrucciones más simples basadas en RISC para uso interno antes de su ejecución.
Es importante saber que arduino no es el único microcontrolador ni la única plataforma. Lo mismo que hacemos con arduino se puede hacer con otros microcontroladores y otras plataformas de desarrollo, pero Arduino es la más extendida, con más documentación y soporte de la comunidad.
Un sistema embebido es un sistema diseñado para realizar una o algunas pocas funciones dedicadas, frecuentemente en un sistema de computación en tiempo real. Al contrario de lo que ocurre con los ordenadores de propósito general que están diseñados para cubrir un amplio rango de necesidades, los sistemas embebidos se diseñan para cubrir necesidades específicas. En un sistema embebido la mayoría de los componentes se encuentran incluidos en la placa base (la tarjeta de vídeo, audio, módem, etc.). Algunos ejemplos de sistemas embebidos podrían ser dispositivos como un termostato, un sistema de control de acceso, la electrónica que controla una máquina expendedora o el sistema de control de una fotocopiadora entre otras múltiples aplicaciones. El firmware es la programación o software que ejecuta y es lo que vamos a aprender a programar.
Microcontroladores Mega AVR, algunos usados en las plataformas Arduino: http://www.atmel.com/products/microcontrollers/avr/megaavr.aspx
El programa de muestras de Atmel permite obtener muestras gratuitas de productos de Atmel. Más información en: https://aprendiendoarduino.wordpress.com/2015/02/25/como-conseguir-un-arduino-gratis/
Atmel Studio, el IDE proporcionado por Atmel para programar sus MCUs: http://www.atmel.com/tools/ATMELSTUDIO.aspx
Un buen artículo de Atmel sobre Microcontroladores vs Microprocesadores: http://www.atmel.com/Images/MCU_vs_MPU_Article.pdf
Reference Guide para AVR MCUs, un poco antiguo pero muy interesante para saber la gama de MCUs de Atmel y donde situarlos: http://www.atmel.com/Images/doc4064.pdf
Microcontroladores ARM de Atmel
Los nuevos Arduinos ya no son microcontroladores Atmel AVR de 8-bit como hasta ahora eran casi todos, sino que ha apostado por la nueva gama de Atmel con arquitectura ARM http://www.atmel.com/products/microcontrollers/arm/default.aspx y en especialmente por la serie SMART SAM D ARM® Cortex®-M0+: http://www.atmel.com/products/microcontrollers/arm/sam-d.aspx
Microcontroladores ARM Cortex-M: https://en.wikipedia.org/wiki/ARM_Cortex-M
Arduino con el lanzamiento del Arduino 101 también ha dado el salto al las MCUs de Intel, en concreto con las MCU Intel Curie: http://www.intel.com/content/www/us/en/wearables/wearable-soc.html
Y Arduino no solo se queda en los microcontroladores sino que con el Arduino Yun y Arduino Yun Shield entra dentro de los sistemas con linux embebido en un microprocesador al estilo de una Raspberry Pi pero con una filosofía diferente.
Otras utilidades y placas en lugar de Arduino para programar MCUs de Atmel:
- http://www.mikroe.com/ready/avr/
- http://www.mikroe.com/avr/development-boards/
- Programador: http://www.mikroe.com/mikroprog/avr/
La compra de ARM por casi 30000 millones de euros demuestra el interés del mercado por estos dispositivos que marcarán el futuro tecnológico: http://economia.elpais.com/economia/2016/07/18/actualidad/1468824631_822455.html
Otros Microcontroladores
Existen muchos fabricantes de microcontroladores pero los principales son:
- http://es.wikipedia.org/wiki/Microcontrolador#Familias_de_microcontroladores
- http://es.wikipedia.org/wiki/Anexo:Microcontroladores_comunes
Ejemplo de microcontrolador de TI: http://es.wikipedia.org/wiki/MSP430 y su software de desarrollo: http://www.ti.com/tool/msp430ware?DCMP=msp430ware&HQS=msp430ware
Otros microcontroladores muy conocidos son los PIC de microchip:
- http://www.microchip.com/design-centers/microcontrollers
- PICs de 8 bits: http://www.microchip.com/design-centers/8-bit
MPLAB: entorno de desarrollo para los PIC: http://www.microchip.com/mplab/mplab-x-ide
Ejecutar código de Arduino en un PIC mediante MPLAB: http://circuitcellar.com/cc-blog/execute-open-source-arduino-code-in-a-pic-microcontroller-using-the-mplab-ide/
Microchip ha sacado MPIDE http://chipkit.net/started/learn-basics/mpide-quick-start-guide/ para programar como Arduino las MCUs PIC en sus plataformas de prototipado chipkit http://www.microchip.com/devtoolthirdparty/ThirdpartyListing.aspx?catId=904c0424-a68f-44ac-aca4-eb13a629a9f8 y http://store.digilentinc.com/brands/chipKIT.html
Recientemente Microchip y ATmel se han fusionado: http://www.nasdaq.com/article/microchip-atmel-merger-closing-today-on-shareholders-vote-cm601083
Interesante articulo sobre las MCUs de Microchip y de AVR: http://makezine.com/2016/01/25/why-im-excited-that-microchip-is-buying-atmel/
Un enlace muy interesante con mucha información sobre microcontroladores para ampliar conocimientos: http://www.mikroe.com/chapters/view/79/capitulo-1-el-mundo-de-los-microcontroladores/
Y mucha más información sobre cómo programar microcontroladores PIC: http://www.mikroe.com/products/view/285/book-pic-microcontrollers-programming-in-c/