Arduino gegen Mikroprozessor gegen Mikrocontroller

11

Was ist der Unterschied zwischen einem Arduino, einem Mikroprozessor und einem Mikrocontroller? Ich versuche herauszufinden, was am besten für den Betrieb eines billigen resistiven Touchscreens geeignet ist.

Martin Marino
quelle

Antworten:

21

Ein Mikroprozessor:

befindet sich normalerweise in einem Desktop-PC oder Laptop und enthält eine CPU und eine externe Speicherschnittstelle sowie verschiedene E / A-Busse für die Verbindung mit der Außenwelt wie SPI, I2C, UART, USB, LCD und anderen. 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 ursprüngliche Startcode befindet. Auf Intel-basierten PCs wird dies als BIOS ( Basic Input / Output System ) bezeichnet und enthält neben dem anfänglichen Startcode auch E / A-Routinen. Der Startcode beginnt mit einem Power-On Self Test (POST) und prüft dann, wo die nächste Stufe des Startcodes geladen werden muss - von einer Festplatte, einer CD (oder in alten Tagen) einer Diskette. Dieser Boot der zweiten Ebene lädt dann das Betriebssystem. (In einigen Systemen gibt es möglicherweise sogar drei Bootcode-Ebenen.)

Einige Mikroprozessoren (normalerweise für Smartphones und Tablets mit eingeschränkten Startoptionen) verfügen über einen geringen Nur-Lese-Speicher, der den anfänglichen Startcode enthält.

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

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

Ein Mikrocontroller:

Auf der anderen Seite handelt es sich um einen eigenständigen Single-Chip-IC, der eine CPU, einen Nur-Lese-Speicher zum Speichern des Programms, einen RAM zum Speichern der bei der Ausführung des Programms verwendeten Variablen und verschiedene E / A-Busse zur Verbindung mit der Außenwelt enthält, z als SPI, I2C, UART und andere. Es kann keine Programme ausführen, ohne über eine externe Schnittstelle zu einem PC programmiert zu sein. 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) verfügen über zwei Abschnitte des Flash-Speichers. eine zum Speichern des Initialisierungscodes (Boot-Codes) und eine zum Speichern der Anwendung. Dies erleichtert das Aktualisieren des Anwendungscodes vor Ort.

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 Karte und enthält einen Mikrocontroller, typisch für einen 8-Bit-AVR wie ATmega8, ATmega168, ATmega328, ATmega1280 und ATmega2560, sowie Netzteile, Quarz- und Buchsenköpfe für die Schnittstelle mit verschiedenen Peripheriekarten.

Diese Peripheriekarten werden als Schilde und sind auf der jeweils anderen stapeln ausgelegt (es gibt Steckstifte auf der Unterseite der Platten an den Arduino selbst oder einer anderen Abschirmung und Buchsenleisten auf der Oberseite verbinden die Steckstifte des anzunehmen ein darauf gestapelter Schild).

Beispielhafte Abschirmungen sind Motorsteuerkarten, allgemeine E / A-Karten, Relaiskarten, Ethernet-Karten und LCDs, typischerweise mit einem Touchscreen. Ich kenne jedoch keine resistiven Touchscreens, die nur zur Erkennung verwendet werden (ohne LCD).

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

Arduino-Programme sind in C oder C ++ geschrieben, viele Details sind 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 Ein- / Ausgabevorgänge verwendet werden kann.

tcrosley
quelle
Nach 25 Jahren entwerfe ich keine Hardware mehr, aber mir sind keine Prozessoren für Desktop-Computer bekannt, die Nur-Lese-Speicher enthalten, geschweige denn solche, die einen Computer starten können.
Rob
@Rob Sie haben Recht, dass alle mir bekannten Desktop-PCs einen externen Boot-Chip verwenden. Die OMAP3-Architektur von TI ist jedoch ein Beispiel für einen Mikroprozessor mit einem internen Boot-ROM. In der Beschreibung hier zum Neustart von Linux heißt es in der ersten Zeile: "Beim Einschalten beginnt ein OMAP3-Gerät mit dem Booten vom internen Boot-ROM. Dieser Code wird während des Herstellungsprozesses behoben und kann nicht geändert werden. Das Boot-ROM liest die Boot-Konfigurations-Pins (SW4) auf dem OMAP3 EVM), die dem Boot-ROM mitteilen, wo nach dem ersten externen Bootloader gesucht werden soll. " Ich habe meine Antwort aktualisiert.
Tcrosley
10

Arduino

Ein Arduino ist eine Leiterplatte, die einen Atmel AVR-Mikrocontroller enthält und normalerweise einen Satz von Anschlüssen in einem Standardmuster bereitstellt. Der Mikrocontroller ist normalerweise mit einem "Bootloader" -Programm vorprogrammiert, mit dem ein Programm (als "Skizze" bezeichnet) über eine serielle TTY-Verbindung (oder eine virtuelle serielle über USB-Verbindung) von einem PC in den Mikrocontroller geladen werden kann.

Mikroprozessor

Ein Mikroprozessor ist ein IC, der nur eine Zentraleinheit (CPU) enthält. Der IC enthält kein RAM, ROM oder andere Peripheriegeräte. Der IC kann Cache-Speicher enthalten, ist jedoch nicht für die Verwendung ohne externen Speicher ausgelegt.

Mikroprozessoren können Programme nicht intern speichern und laden daher normalerweise Software beim Einschalten. Dies beinhaltet normalerweise einen komplexen mehrstufigen "Boot" -Prozess, bei dem "Firmware" von einem externen ROM geladen wird und schließlich ein Betriebssystem von einem anderen Speichermedium (z. B. einer Festplatte) geladen wird ).

Es wird normalerweise in einem Personal Computer gefunden.

Mikrocontroller

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

Normalerweise werden Mikrocontroller entweder vor dem Löten auf eine Leiterplatte programmiert oder können mithilfe von ISP- oder ICSP-Anschlüssen (In-System-Programming) über ein spezielles "Programmiergerät" programmiert werden, das an einen Personal Computer angeschlossen ist.

Typische Mikrocontroller sind viel einfacher und langsamer als typische Mikroprozessoren, aber ich glaube, der Unterschied besteht hauptsächlich in der Skalierung und Anwendung.

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

RedGrittyBrick
quelle
2

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

Peter Bennett
quelle
2

Arduino ist eine Mikrocontroller-basierte Plattform (ATMEGA 328 für die UNO). Im Allgemeinen eignet sich ein Mikrocontroller besser als ein Mikroprozessor für alles, was die Erfassung von Eingängen erfordert. Dies liegt daran, dass Mikrocontroller wie der ATMEGA 328 über Analog-Digital-Wandler (ADCs) verfügen, um Spannungen zu erfassen, sowie über PWM-Ausgänge und digitale E / A.

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 bietet.

Ein resistiver Touchscreen verhält sich wie ein Potentiometer. eine für x und eine für y. Sie können diese also in analoge Arduino-Eingänge stecken. Siehe hier für Details .

Eine weitere Möglichkeit besteht darin , SPI oder I2C mit so etwas wie zu konvertieren diesem und liest mit Arduino.

In jedem Fall denke ich, dass Arduino eine gute Wahl ist.

Akellyirl
quelle
@tcrosley oder ein anderes langjähriges Mitglied. Irgendwelche Ratschläge für einen neuen Mitwirkenden wie mich, um eine Abwertung wie diese zu vermeiden? Meine Antworten sind korrekt, beantworten die Frage und bieten zusätzliche Details für die Schnittstelle zu einem resistiven Touchscreen. Sonst noch etwas hätte enthalten sein sollen?
Akellyirl
3
Nehmen Sie die Abstimmung nicht zu ernst. Ich denke, dein erster Satz ist allerdings etwas ungenau. Arduino ist eher eine Plattform, die aus Hardware und Software besteht. Und eine Arduino-Karte ist kein Mikrocontroller, sondern eine Karte, die um einen Mikrocontroller herum entwickelt wurde.
Rev1.0
1
Wie Rev1.0 sagt: "Arduino ist ein Mikrocontroller" ist nicht wahr. Arduino ist ein SBC (Single Board Computer).
Flup
1

Der Arduino besteht aus einem Mikrocontroller (der ATmega328 in der UNO-Version). Das Arduino ist also eine Platine, bei der die Stifte des Mikrocontrollers gut getrennt sind, ein Power-Up, ein Kristall und das FTDI für die USB-Verbindung mit einer integrierten Firmware, sodass Sie es einfach mit einer eigenen IDE programmieren können. Hier ist eine Liste der Arduino-Komponenten: http://learn.adafruit.com/arduino-tips-tricks-and-techniques/arduino-uno-faq

kimliv
quelle