Es gibt zahlreiche MCU-Plattformen, und wenn sich jemand einmal an eine gewöhnt hat, wechselt er im Allgemeinen nur ungern zu einer anderen Plattform.
Meine Frage ist: Wenn man heute anfing, eine MCU für allgemeine Aufgaben zu verwenden, wie würde man sich für eine entscheiden? Was sind die Alleinstellungsmerkmale der verschiedenen Plattformen?
Vor einem Jahr hielt ich einen Vortrag zum Thema Kommissionierung von Mikrocontrollern (Dauer ca. 1,5 Stunden). Das Publikum bestand aus hochrangigen Softwareprogrammierern und -herstellern. Die Mehrheit des Publikums hatte keine vorherige μC-Erfahrung, der Rest hat nur mit Arduino gespielt. Die Zahl der Zuhörer betrug ungefähr 30. Das war also eine Multicast-Sendung, im Gegensatz zu einer Eins-zu-Eins-Klinik.
Die Schlüsselfolie des Vortrags lautete:
Maße
zum Vergleich von Mikrocontrollern. Die Liste ist in absteigender Reihenfolge.
- Entwicklungsumgebung (Werkzeugkette)
- Entwicklungsumgebung
- Habe ich die Entwicklungsumgebung erwähnt?
- Unterstützung
- Anwendungshinweise
- Peer-Unterstützung: Stammeswissen, Freunde, Foren, die Codes [sic]
- Merkmale
- Erinnerung
- Peripherie
- Rechenleistung
- Energieverbrauch
- Kosten
p.s
Ich sollte den Umfang definieren, auf den sich diese meine Antwort beschränkt. Ich sehe diese Frage zur Plattformauswahl durch zwei Arten von Objektiven. Der erste ist ein Prototyper. Der zweite ist ein Entwickler von professioneller Ausrüstung mit Straßenpreisen in der Größenordnung von 3.000 $ und Mengen von Hunderten pro Jahr. Auch das Bastlerobjektiv ist nicht weit entfernt. In diesen Fällen sind die zusätzlichen Kosten des Mikrocontrollers gering im Vergleich zu den Entwicklungskosten oder den Kosten der professionellen Ausrüstung, in die der Mikrocontroller eingesetzt wird.
Natürlich gibt es eine ganz andere Perspektive der Massenproduktion. Wenn jemand einen Mikrocontroller für ein billiges Gerät auswählt, das in großen Mengen produziert wird (Mainstream-Spielzeug ist ein gutes Beispiel), wird er von den Kosten der Hardware getrieben. Eine bescheidene Einsparung bei den Hardwarekosten multipliziert mit einem großen Produktionsvolumen (in Hunderttausenden oder mehr) kann den Schmerz rechtfertigen, eine unhandliche Entwicklungsumgebung und einen preisgünstigen Mikrocontroller mit mittelmäßigem Support zu verwenden.
Da diese Frage nicht ganz zu dem erhofften Plattformvergleich geführt hat, habe ich versucht, selbst einen zu erstellen, indem ich die Literatur sowie die anderen Antworten studiert habe. Vielleicht kann das in Zukunft jemand anderem helfen.
Bitte lassen Sie mich wissen, wenn es irgendwelche Fehler gibt oder wenn es Informationen gibt, die ich hinzufügen kann.
Hinweise zum Vergleich:
BILD:
AVR:
Arm Cortex-M:
PSoc: (aus Rocketmagnets Antwort)
Propeller: (aus Rocketmagnets Antwort)
USB:
"Legende" für die Liste unten:
Eigenschaften des günstigsten Gerätes: (in etwa Preisreihenfolge)
Ethernet:
Ihre Wahl der MCU hängt stark von der Art der Projekte ab, an denen Sie arbeiten werden. Stellen Sie großvolumige, supergünstige und einfache Geräte wie blinkende Fahrradlichter her? Sie entwickeln komplexe Roboterprototypen, die mit zahlreichen bizarren IO-Geräten und Sensoren zurechtkommen müssen?
An letzterem arbeite ich hauptsächlich. Das Hauptproblem für mich besteht darin, Mikrocontroller zu finden, die über das gewünschte Peripheriegerät verfügen. Dies ist sehr schwierig, da unsere Anforderungen nicht dem Mainstream zu entsprechen scheinen. Wir wollen Dinge wie 5 PWM-Kanäle, 5 Quadratur-Decoder, 2 nicht standardmäßige SPI-Ports und einen UART mit negiertem IO.
Die einzigen MCUs, die ich gesehen habe, die diese Art von Anforderungen problemlos bewältigen können, sind der PSoC und der Propeller.
Der Propeller besteht im Wesentlichen aus acht 32-Bit-MCUs in einem einzigen Chip. Wenn Sie irgendeine Art von Peripherie benötigen, programmieren Sie einfach eine der MCUs, um diese Aufgabe auszuführen. Sie können also haben, was Sie wollen.
Die PSoCs gibt es in zwei Varianten, 3 und 5. Die 3 ist ein 8051-Kern und die 5 ist ein ARM-Cortex M3. Ebenfalls auf dem Chip enthalten sind rekonfigurierbare digitale und analoge Blöcke, die zu einer Vielzahl von Peripheriegeräten verarbeitet werden können: ADCs, Filter, Operationsverstärker, DACs, SPI, UART, Quadratur-Decoder, CRC-Generator usw.
Die Entwicklungsumgebung ist fantastisch. Sie haben die übliche Bearbeitung des Quellcodes einer typischen IDE, aber Sie haben auch einen Schaltplaneditor. Sie können buchstäblich jede beliebige digitale Schaltung verdrahten und die Peripheriegeräte mit Gattern, Flipflops usw. verbinden. Benötigen Sie 5 PWMs? Ganz einfach, fügen Sie sie einfach in den Schaltplan ein, verkabeln Sie sie und los geht's. Sie können sogar Ihre eigenen Peripheriegeräte in Verilog schreiben, wenn Sie etwas wollen, das nicht bereitgestellt wird. Ein großer Teil Ihrer Anwendung lässt sich einfach in diese Art von Hardware implementieren.
Der wirkliche Vorteil besteht darin, dass Sie bei einem Chip bleiben können, da Sie wissen, dass er viele der Projekte bewältigen kann, die Sie in Zukunft durchführen möchten. Was ich an PICs ärgerlich fand, war das ständige Durchsuchen von Dutzenden von Geräten auf der Suche nach demjenigen, das das bestimmte Peripheriegerät hatte, das ich brauchte. Jetzt habe ich das Problem nicht.
Für mich war die wichtigste Anforderung, ob das Gerät / die IDE auf meinem Nicht-Windows-PC (Linux) gut unterstützt wird. Es stellte sich heraus, dass Atmel AVRs für mich eine bessere (Open Source) Unterstützung hatten als PIC.
Die Verwendung von mehr als einer Plattform ist in Ordnung. Auswahl des besten für jeden Job und Verfügbarkeit von Code und Beispielen für den Job.
Die meisten von ihnen haben gute Entwicklungswerkzeuge, arduino hat Visual Studio, pic hat ein großartiges Werkzeug und andere auch. Für mich geht es also darum, wie schnell und einfach ich die Arbeit gut erledigen kann + wie viele Open-Source-Leute arbeiten an derselben Sache?
Mikrocontroller sind eine sich schnell verändernde Welt, es gibt viele Vorteile, sich mit den aktuellen "in"-Chips vertraut zu machen, und am bemerkenswertesten ist, dass die beliebtesten IDEs Hilfe von der Community erhalten. Als PIC-Person würde ich sagen, dass das Aduino im Moment wahrscheinlich die besten IDE- und Entwicklungsboards für Neulinge hat, und Sie können einem einfachen Aduino-Board viel hinzufügen, ohne einen Lötkolben zu berühren.
Jeder, der ein Aduino für echte Dinge verwendet, möchte vielleicht bald weitermachen, aber bis dahin werden Sie eine Menge grundlegender digitaler Elektronik und eine gute Untergruppe von C gelernt haben, um leicht etwas Passenderes zu verwenden.
Wie jemand erwähnt hat, wählen Sie den Chip für Ihr Projekt aus. Ich habe einige Projekte gesehen, bei denen ARM-Chips als einfache Temperatursensoren oder AD-Wandler verwendet wurden. Genauso habe ich Aduinos und PIC 16 gesehen, die an ihre Grenzen getrieben wurden, um ein Space Invaders-Spiel, FPGAs, zu generieren sind auch toll und es ist gut, HDL zu verstehen, wenn Sie sich ernsthaft mit Elektronikdesign beschäftigen. Aber leider gibt es in der realen Welt nicht viele Projekte, bei denen Sie eines verwenden müssen. Die meisten Jobs sind geringes Volumen, schnelles Design und Preisbeschränkungen und Hier regiert das 8-Bit-uC
Da sich viele der geposteten Antworten auf die Verwendung durch Hobbyisten konzentrieren, kommen hier verschiedene Empfehlungen, die sich nur an professionelle Entwickler richten.
Absolute Mindestanforderungen
Erfüllt die MCU diese nicht alle , sollte sie nicht verwendet werden.
Warnzeichen - MCU-Hardware
Das sind Dinge, mit denen Sie im Jahr 2019 keine Zeit verschwenden sollten.
int
, was wiederum mit allen versteckten Gefahren von Integer-Promotions in C-Sprache einhergeht.Warnzeichen - Werkzeugkette
Wenn Sie sich für allgemeine Aufgaben entscheiden, die analoge und digitale Verarbeitung haben können, dann hätte ich PSoC wegen seiner IDE, seines Debuggers und der schieren Anzahl von Dingen, die Sie damit machen können, bevorzugt.
Ich habe PSoC3 im College für meine Projekte verwendet und es ist ziemlich einfach zu meistern. Die einzige Sache ist, wenn Sie einige Leistungschips benötigen, müssen Sie sie immer noch separat erwerben. Es hat genug gute Ports. Wenn Sie also einige Leistungschips zusammen mit dem Entwicklungskit suchen, entscheiden Sie sich besser für separate Komponenten.
Raketenmagnet
Wouter van Ooijen
Chris Stratton
ARF