Arduino vs. Mikroprozessor vs. Mikrocontroller

Was ist der Unterschied zwischen einem Arduino, einem Mikroprozessor und einem Mikrocontroller? Ich versuche herauszufinden, was am besten ist, um einen billigen resistiven Touchscreen zu bedienen.

Antworten (5)

Ein Mikroprozessor:

ist typischerweise in einem Desktop-PC oder Laptop zu finden und enthält eine CPU und eine externe Speicherschnittstelle sowie verschiedene E/A-Busse zur Verbindung mit der Außenwelt wie SPI, I2C, UART, USB, LCD und andere. Ein Mikroprozessor hat auch einen externen Kristall, um eine Uhr bereitzustellen.

Die meisten Mikroprozessoren haben keinen Nur-Lese-Speicher auf dem Chip; Stattdessen befindet sich auf dem Motherboard ein externer Chip, auf dem sich der anfängliche Boot-Code befindet. Auf Intel-basierten PCs wird dies als Basic Input/Output System (BIOS) bezeichnet und enthält neben dem anfänglichen Boot-Code auch E/A-Routinen. Der Boot-Code beginnt mit einem Power-On Self Test (POST) und schaut dann, wo die nächste Stufe des Boot-Codes geladen werden soll – von einer Festplatte, CD (oder in alten Zeiten) einer Diskette. Dieser Second-Level-Boot lädt dann das Betriebssystem. (In manchen Systemen kann es sogar drei Boot-Code-Ebenen geben.)

Einige Mikroprozessoren (normalerweise solche, die für Smartphones und Tablets bestimmt sind, die begrenzte Boot-Optionen haben) haben eine kleine Menge an Nur-Lese-Speicher, der den anfänglichen Boot-Code enthält.

Ich bezeichne den Boot-Code als schreibgeschützt; Tatsächlich kann es auf einigen Systemen aktualisiert werden. Dies ist jedoch ziemlich riskant; Wenn etwas schief geht, bootet das System möglicherweise nicht mehr.

Im Gegensatz zu Mikrocontrollern, die ihre Programme aus dem Nur-Lese-Speicher ausführen, laden Mikroprozessoren ihre Programme nach dem Booten in einen externen RAM und führen sie von dort aus aus.

Ein Mikrocontroller:

Andererseits ist es ein eigenständiger Einzelchip-IC, der eine CPU, einen Nur-Lese-Speicher zum Speichern des Programms, einen RAM zum Speichern von Variablen, die bei der Ausführung des Programms verwendet werden, und verschiedene E/A-Busse zum Verbinden mit der Außenwelt enthält, wie z wie SPI, I2C, UART und andere. Es kann selbst keine Programme ausführen, ohne über eine externe Schnittstelle zu einem PC programmiert zu werden. Ein Mikrocontroller benötigt möglicherweise auch einen externen Kristall, um eine Uhr bereitzustellen, einige haben jedoch eine interne Uhr.

Einige Mikrocontroller (wie der PIC32 von Microchip) haben zwei Bereiche des Flash-Speichers; einer für den Initialisierungscode (Bootcode) und der andere für die Speicherung der Anwendung. Dadurch wird es einfacher, den Anwendungscode direkt zu aktualisieren.

Für Ihren Zweck möchten Sie einen Mikrocontroller verwenden, keinen Mikroprozessor. Um einen Mikrocontroller zu verwenden, müssten Sie entweder Ihr eigenes Board entwerfen oder eine Art Entwicklungsboard kaufen.

Ein Arduino:

ist eine solche Platine und enthält einen Mikrocontroller, typischerweise einen 8-Bit-AVR wie ATmega8, ATmega168, ATmega328, ATmega1280 und ATmega2560, plus Netzteile, Kristall und Buchsenleisten zur Verbindung mit verschiedenen Peripherieplatinen.

Diese Peripherieplatinen werden Shields genannt und sind so konzipiert, dass sie übereinander gestapelt werden können (es gibt männliche Stifte auf der Unterseite der Platinen, um sie mit dem Arduino selbst oder einer anderen Abschirmung zu verbinden, und Buchsenleisten auf der Oberseite, um die männlichen Pins von aufzunehmen ein darauf gestapelter Schild).

Beispiele für Abschirmungen sind Motorsteuerplatinen, allgemeine E/A-Platinen, Relaisplatinen, Ethernet-Platinen und LCDs, typischerweise mit einem Touchscreen. Ich kenne jedoch keine resistiven Touchscreens, die nur zur Erkennung verwendet würden (ohne LCD).

Zusätzlich zu der oben beschriebenen Hardware verfügt Arduino auch über eine plattformübergreifende integrierte Entwicklungsumgebung (Integrated Development Environment, IDE), die in Java geschrieben ist. Es wurde entwickelt, um Künstlern und anderen Anfängern das Programmieren näher zu bringen, ähnlich wie es die BASIC-Sprache vor 50 Jahren tat. Ein Programm für Arduino heißt Sketch .

Arduino-Programme sind in C oder C++ geschrieben, viele Details bleiben dem Benutzer jedoch verborgen: Es müssen nur zwei Funktionen (vom System aufgerufen) definiert werden, um ein Programm zu erstellen, das sich kontinuierlich wiederholt (was normalerweise für eingebettete Programme gilt).

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

Die IDE wird mit einer Softwarebibliothek namens "Wiring" geliefert, die für allgemeine Eingabe-/Ausgabeoperationen verwendet werden kann.

Ich entwerfe nach 25 Jahren keine Hardware mehr, aber mir sind keine Prozessoren für Desktop-Computer bekannt, die einen Nur-Lese-Speicher enthalten, geschweige denn einen solchen Speicher, der einen Computer hochfahren kann.
@Rob Sie haben Recht, dass alle mir bekannten Desktop-PCs einen externen Boot-Chip verwenden. Aber die OMAP3-Architektur von TI ist ein Beispiel für einen Mikroprozessor mit einem internen Boot-ROM. Aus der Beschreibung hier zum Neustarten von Linux lautet die erste Zeile: „Beim Einschalten beginnt ein OMAP3-Gerät mit dem Booten vom internen Boot-ROM. Dieser Code wird während des Herstellungsprozesses festgelegt und kann nicht geändert werden. Das Boot-ROM liest Boot-Konfigurations-Pins (SW4 auf dem OMAP3 EVM), die dem Boot-ROM mitteilen, wo es nach dem ersten externen Bootloader suchen soll." Ich habe meine Antwort aktualisiert.

Arduino

Ein Arduino ist eine Leiterplatte, die einen Atmel AVR-Mikrocontroller enthält und normalerweise eine Reihe von Anschlüssen in einem Standardmuster bereitstellt. Der Mikrocontroller ist typischerweise mit einem „Bootloader“-Programm vorprogrammiert, das es ermöglicht, ein Programm (als „Sketch“ bezeichnet) über eine serielle TTY-Verbindung (oder eine virtuelle serielle über eine USB-Verbindung) von einem PC in den Mikrocontroller zu laden.

Mikroprozessor

Ein Mikroprozessor ist ein IC, der nur eine zentrale Verarbeitungseinheit (CPU) enthält. Der IC enthält kein RAM, ROM oder andere Peripheriegeräte. Der IC kann einen Cache-Speicher enthalten, ist aber nicht dafür ausgelegt, ohne externen Speicher verwendbar zu sein.

Mikroprozessoren können keine Programme intern speichern und laden daher normalerweise Software, wenn sie eingeschaltet werden. Dies beinhaltet normalerweise einen komplexen mehrstufigen "Boot" -Prozess, bei dem "Firmware" von einem externen ROM geladen wird und schließlich ein Betriebssystem von anderen Speichermedien (z. B. Festplatte) geladen wird ).

Es ist normalerweise in einem Personal Computer zu finden.

Mikrocontroller

Ein Mikrocontroller ist ein IC, der eine CPU sowie eine gewisse Menge an RAM, ROM und andere Peripheriegeräte enthält. Mikrocontroller können ohne externen Speicher oder Speicher funktionieren.

Normalerweise werden Mikrocontroller entweder programmiert, bevor sie auf eine Leiterplatte gelötet werden, oder sie sind unter Verwendung von In-System-Programming-Anschlüssen (ISP oder ICSP) über ein spezielles "Programmiergerät", das an einen Personal Computer angeschlossen ist, programmierbar.

Typische Mikrocontroller sind viel einfacher und langsamer als typische Mikroprozessoren, aber ich glaube, dass der Unterschied hauptsächlich in Größe und Anwendung liegt.

Es findet sich beispielsweise in einfachen Geräten wie einfachen Waschmaschinen.

"Arduino" ist eine Softwareentwicklungsumgebung und eine von mehreren Mikrocontroller-Platinen, für die die Softwareumgebung Programme entwickeln kann. Die meisten Boards verwenden Atmel AVR-Mikrocontroller.

Arduino ist eine auf Mikrocontrollern basierende Plattform (ATMEGA 328 für UNO). Im Allgemeinen ist ein Mikrocontroller besser geeignet als ein Mikroprozessor für alles, was die Erfassung von Eingängen erfordert. Das liegt daran, dass Mikrocontroller wie der ATMEGA 328 über Analog-Digital-Wandler (ADCs) zum Erfassen von Spannungen verfügen und außerdem über PWM-Ausgänge sowie digitale I/Os verfügen.

Mit Arduino haben Sie auch das Arduino Dev-System, das für Anfänger einfacher zu programmieren ist und eine gute Community für Support und Bibliotheken hat.

Ein resistiver Touchscreen verhält sich wie Potentiometer; eine für x und eine für y. Sie können diese also in Arduino-Analogeingänge stecken. Einzelheiten finden Sie hier .

Eine andere Möglichkeit besteht darin , mit so etwas in SPI oder I2C zu konvertieren und mit Arduino zu lesen.

In jedem Fall halte ich Arduino für eine gute Wahl.

@tcrosley oder ein anderes langjähriges Mitglied. Gibt es Ratschläge für einen neuen Mitwirkenden wie mich, um eine Ablehnung wie diese zu vermeiden? Meine Antworten sind genau, beantworten die Frage und liefern zusätzliche Details für die Schnittstelle zu einem resistiven Touchscreen. Sollte es sonst noch etwas enthalten sein?
Nehmen Sie die Ablehnung nicht zu ernst. Allerdings finde ich deinen ersten Satz etwas ungenau. Arduino ist eher eine Plattform bestehend aus Hard- und Software. Und ein Arduino-Board ist kein Mikrocontroller, sondern ein Board, das um einen Mikrocontroller herum entwickelt wurde.
Wie Rev1.0 sagt: "Arduino ist ein Mikrocontroller" ist nicht wahr. Arduino ist ein SBC (Single Board Computer).

Der Arduino besteht aus einem Mikrocontroller (dem ATmega328 auf der UNO-Version). Der Arduino ist also eine Platine mit den sauber getrennten Pins des Mikrocontrollers, einer Stromversorgung, einem Kristall und dem FTDI für die USB-Verbindung mit einer integrierten Firmware, sodass Sie ihn einfach mit einer eigenen IDE programmieren können. Hier ist eine Liste über die Arduino-Komponenten: http://learn.adafruit.com/arduino-tips-tricks-and-techniques/arduino-uno-faq