10
\$\begingroup\$

What is the difference between an Arduino, a microprocessor, and a microcontroller? I'm trying to determine what is best to operate a cheap resistive touch screen.

\$\endgroup\$
20
\$\begingroup\$

A microprocessor:

is typically found in a desktop PC or laptop and contains a CPU and an external memory interface plus various I/O buses to connect to the outside world such as SPI, I2C, UART, USB, LCD and others. A microprocessors will also have an external crystal to provide a clock.

Most microprocessors have no read-only memory on the chip; instead there is an external chip on the motherboard where the initial boot code is located. On Intel-based PC's, this is called the Basic Input/Output System (BIOS) and also contains I/O routines in addition to the initial boot code. The boot code starts by doing a Power-On Self Test (POST) and then looks to see where to load the next stage of the boot code -- from a hard drive, CD (or in olden days) a floppy disk. This second level boot then loads the operating system. (There may even be three levels of boot code in some systems.)

Some microprocessors (usually ones targeted for smart phones and tablets, which have limited boot options) have a small amount of read-only memory that contains the initial boot code.

I refer to the boot code as read-only; actually on some systems, it can be updated. However this is fairly risky; if something goes wrong the system may no longer boot.

Unlike microcontrollers, which execute their programs out of read-only memory, after booting up microprocessors load their programs into external RAM and execute it from there.

A microcontroller:

on the other hand is a standalone single-chip IC that contains a CPU, read-only memory to store the program, RAM to store variables used in the execution of the program, and various I/O buses to connect to the outside world such as SPI, I2C, UART and others. By itself, it cannot execute any programs without being programmed via an external interface to a PC. A microcontroller may also need an external crystal to provide a clock, however some have an internal clock.

Some microcontrollers (such as Microchip's PIC32) have two sections of flash memory; one to hold initialization (boot) code, and another to store the application. This makes it easier to update the application code in-place.

For your purpose, you would want to use a microcontroller, not a microprocessor. To use a microcontroller, you would either have to design your own board, or buy some sort of development board.

An Arduino:

is such a board, and contains a microcontroller, typical an 8-bit AVR such as the ATmega8, ATmega168, ATmega328, ATmega1280, and ATmega2560, plus power supplies, crystal, and female headers to interface with various peripheral boards.

These peripheral boards are called shields, and are designed to stack on top of each other (there are male pins on the bottom of the boards to connect to the Arduino itself or another shield, and female headers on the top to accept the male pins of a shield stacked on top of it).

Example shields are motor control boards, general I/O boards, relay boards, Ethernet boards, and LCD's, typically with a touch-screen. However I don't know of any resistive touch screens that would be used just for detection (without an LCD).

In addition to the hardware described above, Arduino also come with a cross-platform Integrated Development Environment (IDE) written in Java. It was designed to introduce programming to artists and other beginners, much as the BASIC language did 50 years ago. A program for Arduino is called a sketch.

Arduino programs are written in C or C++, however many of the details are hidden from the user: only two functions (called by the system) need to be defined to make a program that continually loops (which is typically for embedded programs)

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

The IDE comes with a software library called "Wiring" which can be used for common input/output operations.

\$\endgroup\$
  • \$\begingroup\$ I don't design hardware anymore, after 25 years of doing so, but I'm not aware of any processors for desktop computers that contain any read only memory, much less any such memory that can boot up a computer. \$\endgroup\$ – Rob Mar 27 '16 at 12:20
  • \$\begingroup\$ @Rob You're right that all desktop PC's that I'm aware use an external boot chip. But TI's OMAP3 architecture is an example of a microprocessor with an internal boot ROM. From the description here re booting Linux, the first line reads, "At power-up an OMAP3 device begins booting from internal Boot ROM. This code is fixed during the manufacturing process and cannot be altered. The Boot ROM reads boot configuration pins (SW4 on the OMAP3 EVM) which tell the Boot ROM where to look for the first external bootloader." I've updated my answer. \$\endgroup\$ – tcrosley Mar 27 '16 at 20:10
10
\$\begingroup\$

Arduino

An Arduino is a PCB containing an Atmel AVR microcontroller and usually providing a set of connectors in a standard pattern. The microcontroller is typically preprogrammed with a "bootloader" program that allows a program (called a "sketch") to be loaded into the microcontroller over a TTY serial connection (or virtual serial over USB connection) from a PC.

Microprocessor

A microprocessor is an IC that contains only a central processing unit (CPU). The IC does not contain RAM, ROM or other peripherals. The IC may contain cache memory but it is not designed to be usable without any external memory.

Microprocessors cannot store programs internally and therefore typically load software when powered on, this usually involves a complex multi-stage "boot" process where "firmware" is loaded from external ROM and eventually an operating system is loaded from other storage media (e.g. hard disk).

It is typically found in a personal computer.

Microcontroller

A microcontroller is an IC that contains a CPU as well as some amount or RAM, ROM and other peripherals. Microcontrollers can function without external memory or storage.

Normally, microcontrollers are either programmed before being soldered to a PCB or are programmable using In-System-Programming (ISP or ICSP) connectors via a special "programmer" device attached to a personal computer.

Typical microcontrollers are much simpler and slower than typical microprocessors but I believe the distinction is mostly one of scale and application.

It is found, for example, in simple appliances such as basic washing machines.

\$\endgroup\$
2
\$\begingroup\$

"Arduino" is a software development environment and any of several microcontroller boards that the software environment can develop programs for. Most of the boards use Atmel AVR microcontrollers.

\$\endgroup\$
2
\$\begingroup\$

Arduino is a microcontroller based platform (ATMEGA 328 for the UNO). In general a Micro-controller is better suited than a microprocessor to anything the requires sensing of inputs. That's because micro-controllers like the ATMEGA 328 have analogue to digital converters (ADCs) to sense voltages and also have PWM outputs as well as digital I/Os.

With Arduino you also have the Arduino Dev system which is easier to program for novices and has a good community for support and libraries.

A resistive touch screen behaves like potentiometers; one for x and one for y. So you can put those into Arduino analogue inputs. See here for details.

Another option is to convert to SPI or I2C with something like this, and read with Arduino.

Either way I think Arduino is a good choice.

\$\endgroup\$
  • \$\begingroup\$ @tcrosley or any other long time member.. any advice to a new contributor like me on avoiding a down-vote like this one? My answers is accurate, answers the question and provides additional details to interface to a resistive touch screen. Anything else it should have included? \$\endgroup\$ – akellyirl Feb 11 '14 at 17:51
  • 3
    \$\begingroup\$ Don't take the down-vote too serious. I think your first sentence is a little inaccurate though. Arduino is more like a platform consisting of hardware and software. And an Arduino board is not a micro controller but a board designed around a micro controller. \$\endgroup\$ – Rev1.0 Feb 11 '14 at 19:32
  • 1
    \$\begingroup\$ Like Rev1.0 says: "Arduino is a microcontroller" is not true. Arduino is an SBC (Single Board Computer). \$\endgroup\$ – flup Feb 25 '14 at 9:50
1
\$\begingroup\$

The Arduino consist of a microcontroller (the ATmega328on the UNO version). So the Arduino is a PCB with the pins of the microcontroller nicly separated, a powersuply, a crystal and the FTDI for the USB connection with a on-board firmware so you can easly programm it with its own IDE. Here is a list about the arduino components: http://learn.adafruit.com/arduino-tips-tricks-and-techniques/arduino-uno-faq

\$\endgroup\$

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.