Arduino vs Microprocesador vs Microcontrolador

¿Cuál es la diferencia entre un Arduino, un microprocesador y un microcontrolador? Estoy tratando de determinar qué es lo mejor para operar una pantalla táctil resistiva barata.

Respuestas (5)

Un microprocesador:

se encuentra típicamente en una PC de escritorio o portátil y contiene una CPU y una interfaz de memoria externa, además de varios buses de E/S para conectarse al mundo exterior, como SPI, I2C, UART, USB, LCD y otros. Los microprocesadores también tendrán un cristal externo para proporcionar un reloj.

La mayoría de los microprocesadores no tienen memoria de solo lectura en el chip; en cambio, hay un chip externo en la placa base donde se encuentra el código de arranque inicial. En las PC basadas en Intel, esto se denomina Sistema básico de entrada/salida (BIOS) y también contiene rutinas de E/S además del código de arranque inicial. El código de inicio comienza con una prueba automática de encendido (POST) y luego busca dónde cargar la siguiente etapa del código de inicio: desde un disco duro, un CD (o en los viejos tiempos) un disquete. Este arranque de segundo nivel luego carga el sistema operativo. (Incluso puede haber tres niveles de código de arranque en algunos sistemas).

Algunos microprocesadores (generalmente los destinados a teléfonos inteligentes y tabletas, que tienen opciones de inicio limitadas) tienen una pequeña cantidad de memoria de solo lectura que contiene el código de inicio inicial.

Me refiero al código de arranque como de solo lectura; en realidad, en algunos sistemas, se puede actualizar. Sin embargo, esto es bastante arriesgado; si algo sale mal, es posible que el sistema ya no arranque.

A diferencia de los microcontroladores, que ejecutan sus programas fuera de la memoria de solo lectura, después de arrancar, los microprocesadores cargan sus programas en la memoria RAM externa y los ejecutan desde allí.

Un microcontrolador:

por otro lado, es un IC de un solo chip independiente que contiene una CPU, memoria de solo lectura para almacenar el programa, RAM para almacenar variables utilizadas en la ejecución del programa y varios buses de E/S para conectarse al mundo exterior, como como SPI, I2C, UART y otros. Por sí mismo, no puede ejecutar ningún programa sin ser programado a través de una interfaz externa a una PC. Un microcontrolador también puede necesitar un cristal externo para proporcionar un reloj, sin embargo, algunos tienen un reloj interno.

Algunos microcontroladores (como el PIC32 de Microchip) tienen dos secciones de memoria flash; uno para contener el código de inicialización (arranque) y otro para almacenar la aplicación. Esto facilita la actualización del código de la aplicación en el lugar.

Para su propósito, querrá usar un microcontrolador, no un microprocesador. Para usar un microcontrolador, tendría que diseñar su propia placa o comprar algún tipo de placa de desarrollo.

Un arduino:

es una placa de este tipo y contiene un microcontrolador, un AVR típico de 8 bits como ATmega8, ATmega168, ATmega328, ATmega1280 y ATmega2560, además de fuentes de alimentación, cristal y conectores hembra para interactuar con varias placas periféricas.

Estas placas periféricas se denominan escudos y están diseñadas para apilarse una encima de la otra (hay pines macho en la parte inferior de los tableros para conectarse al propio Arduino u otro escudo, y conectores hembra en la parte superior para aceptar los pines macho de un escudo apilado encima).

Los escudos de ejemplo son los tableros de control del motor, los tableros de E/S generales, los tableros de relés, los tableros de Ethernet y los LCD, generalmente con una pantalla táctil. Sin embargo, no conozco ninguna pantalla táctil resistiva que se use solo para detección (sin LCD).

Además del hardware descrito anteriormente, Arduino también viene con un entorno de desarrollo integrado (IDE) multiplataforma escrito en Java. Fue diseñado para presentar la programación a artistas y otros principiantes, tal como lo hizo el lenguaje BASIC hace 50 años. Un programa para Arduino se llama boceto .

Los programas de Arduino están escritos en C o C++, sin embargo, muchos de los detalles están ocultos para el usuario: solo se deben definir dos funciones (llamadas por el sistema) para hacer un programa que se repite continuamente (que es típicamente para programas integrados)

setup(): a function run once at startup that performs initialization
loop(): a function called repeatedly until the board powers off

El IDE viene con una biblioteca de software llamada "Wiring" que se puede usar para operaciones comunes de entrada/salida.

Ya no diseño hardware, después de 25 años de hacerlo, pero no conozco ningún procesador para computadoras de escritorio que contenga memoria de solo lectura, y mucho menos memoria que pueda arrancar una computadora.
@Rob Tiene razón en que todas las PC de escritorio que conozco usan un chip de arranque externo. Pero la arquitectura OMAP3 de TI es un ejemplo de un microprocesador con una ROM de arranque interna. De la descripción aquí sobre el arranque de Linux, la primera línea dice: "Al encender, un dispositivo OMAP3 comienza a arrancar desde la ROM de arranque interna. Este código se corrige durante el proceso de fabricación y no se puede modificar. La ROM de arranque lee los pines de configuración de arranque (SW4 en el EVM de OMAP3) que le indican a la ROM de arranque dónde buscar el primer gestor de arranque externo". He actualizado mi respuesta.

arduino

Un Arduino es una placa de circuito impreso que contiene un microcontrolador Atmel AVR y, por lo general, proporciona un conjunto de conectores en un patrón estándar. El microcontrolador generalmente está preprogramado con un programa de "cargador de arranque" que permite cargar un programa (llamado "boceto") en el microcontrolador a través de una conexión serie TTY (o serie virtual a través de una conexión USB) desde una PC.

Microprocesador

Un microprocesador es un IC que contiene solo una unidad central de procesamiento (CPU). El IC no contiene RAM, ROM u otros periféricos. El IC puede contener memoria caché, pero no está diseñado para usarse sin ninguna memoria externa.

Los microprocesadores no pueden almacenar programas internamente y, por lo tanto, normalmente cargan software cuando se encienden, esto generalmente implica un complejo proceso de "arranque" de varias etapas donde el "firmware" se carga desde una ROM externa y, finalmente, se carga un sistema operativo desde otro medio de almacenamiento (por ejemplo, disco duro). ).

Por lo general, se encuentra en una computadora personal.

microcontrolador

Un microcontrolador es un IC que contiene una CPU, así como cierta cantidad de RAM, ROM y otros periféricos. Los microcontroladores pueden funcionar sin memoria externa o almacenamiento.

Normalmente, los microcontroladores se programan antes de soldarlos a una PCB o se pueden programar mediante conectores de programación en el sistema (ISP o ICSP) a través de un dispositivo especial de "programador" conectado a una computadora personal.

Los microcontroladores típicos son mucho más simples y lentos que los microprocesadores típicos, pero creo que la distinción es principalmente de escala y aplicación.

Se encuentra, por ejemplo, en electrodomésticos simples como las lavadoras básicas.

"Arduino" es un entorno de desarrollo de software y cualquiera de varias placas de microcontroladores para las que el entorno de software puede desarrollar programas. La mayoría de las placas utilizan microcontroladores Atmel AVR.

Arduino es una plataforma basada en microcontroladores (ATMEGA 328 para UNO). En general, un microcontrolador es más adecuado que un microprocesador para cualquier cosa que requiera detección de entradas. Esto se debe a que los microcontroladores como el ATMEGA 328 tienen convertidores de analógico a digital (ADC) para detectar voltajes y también tienen salidas PWM y E/S digitales.

Con Arduino también tienes el sistema Arduino Dev, que es más fácil de programar para principiantes y tiene una buena comunidad de soporte y bibliotecas.

Una pantalla táctil resistiva se comporta como potenciómetros; uno para x y otro para y. Entonces puedes ponerlos en las entradas analógicas de Arduino. Vea aquí para más detalles .

Otra opción es convertir a SPI o I2C con algo como esto y leer con Arduino.

De cualquier manera, creo que Arduino es una buena opción.

@tcrosley o cualquier otro miembro de mucho tiempo... ¿algún consejo para un nuevo colaborador como yo para evitar un voto negativo como este? Mis respuestas son precisas, responden la pregunta y brindan detalles adicionales para interactuar con una pantalla táctil resistiva. ¿Algo más que debería haber incluido?
No se tome el voto negativo demasiado en serio. Sin embargo, creo que tu primera oración es un poco inexacta. Arduino es más como una plataforma que consta de hardware y software. Y una placa Arduino no es un microcontrolador sino una placa diseñada alrededor de un microcontrolador.
Como dice Rev1.0: "Arduino es un microcontrolador" no es cierto. Arduino es un SBC (ordenador de placa única).

El Arduino consta de un microcontrolador (el ATmega328 en la versión UNO). Así que el Arduino es un PCB con los pines del microcontrolador bien separados, una fuente de alimentación, un cristal y el FTDI para la conexión USB con un firmware incorporado para que puedas programarlo fácilmente con su propio IDE. Aquí hay una lista de los componentes de arduino: http://learn.adafruit.com/arduino-tips-tricks-and-techniques/arduino-uno-faq