Woher weiß man, ob eine 8-Bit-MCU ausreicht oder eine 16-Bit-MCU benötigt wird? [geschlossen]

7

16-Bit-Mikrocontroller sind leistungsfähiger als 8-Bit-Controller, und die 32-Bit-Controller befinden sich auf einer ganz anderen Ebene. Während wir entscheiden können, welche Peripheriegeräte wir für eine Anwendung benötigen, und versuchen, die billigste (und einfach zu verwendende, dh die Werkzeugkette) Alternative zu finden, woher weiß man, ob ein 8-Bit-Mikrocontroller für eine Anwendung verwendet werden sollte oder ein 16 Bit oder ein 32 Bit?

Ich verstehe die Unterschiede zwischen ihnen, also werde ich die Frage anders formulieren.

Nehmen wir an, ich habe eine Anwendung, in der ich ein LCD-Display zur Anzeige eines Bitmap-Bildes, ein 16-Tastenfeld, einen Summer, einen Temperatur- und Feuchtigkeitssensor und eine Mauseingabe haben werde. Ein High-End-8-Bit-Mikrocontroller kann all diese Dinge problemlos in Echtzeit erledigen. Wenn ich jetzt zu einem farbigen LCD-Display wechsle, benötige ich möglicherweise einen 32-Bit-Mikrocontroller, der das farbige Display schnell genug aktualisieren kann und über mehr Speicher verfügt. Ich kann jedoch erst feststellen, dass mein High-End-8-Bit-Mikrocontroller schwach ist, nachdem ich es im Projekt ausprobiert habe.

Woher wissen wir also, bevor wir mit der Arbeit an dem Projekt beginnen, welche Größe und wie viel leistungsstarker Mikrocontroller für das Projekt benötigt wird?

quantum231
quelle
Sie sollten in der Tat eine Schätzung vornehmen, wie Sie es bereits getan haben. Echtzeit- / schnelle Aufgaben erfordern häufig eine MCU, Bildverarbeitung / erweiterte Eingabe / Ausgabe (nicht so in Echtzeit) funktioniert besser mit einem ARM. Grundsätzlich könnte man sich ansehen, welche Projekte Arduino im Vergleich zu Raspberry Pi hat. Obwohl es sogar 32-Bit-MCUs gibt, die ziemlich erstaunliche Dinge können. Überprüfen Sie, was für Ihr Projekt wichtig ist, nehmen Sie etwas Vernünftiges, Sie können es bei Bedarf jederzeit verkleinern.
Paul

Antworten:

13

Normalerweise ist die Entscheidung über den Mikrocontroller ein Gleichgewicht zwischen:

  1. Besonderheiten (z. B. geringer Stromverbrauch)
  2. Entwicklungszeit.
  3. Kosten der Waren in der Produktion.

Wenn eine kurze Entwicklungszeit mehr Priorität hat als die Kosten der Waren, dann entscheiden Sie sich für den muskulöseren Controller. Sie können die Kostenoptimierung später als separate Phase durchführen. Eine vorzeitige Kostenoptimierung verdirbt häufig Projekte.

Wenn Sie sich bereits in der Phase der Kostenoptimierung befinden, gehen Sie von einem funktionierenden Produkt aus. Die frühe nicht optimierte Version fungiert als Prototyp für die optimierte Version. Die frühe Version spült die Anforderungen aus.

Verwandte: Wie wählt man eine MCU-Plattform?

Nick Alexeev
quelle
Man würde nicht glauben, wie universell die Design-Implement-Review- Kette ist (oder Zyklus, wenn Sie es wünschen).
yo
6

Woher wissen wir, bevor wir mit der Arbeit an dem Projekt beginnen, welche Größe und wie viel leistungsstarker Mikrocontroller für das Projekt benötigt wird?

Du kannst es nicht wissen. Und das ist ein großes Problem. Wenn Sie einen zu kleinen Mikrocontroller auswählen, gehen Ihnen möglicherweise die Ressourcen aus (Speicher / Pins / Register / andere Funktionen), und es kann schwierig sein, diese Ressourcen genau abzuschätzen, bis es zu spät ist. Wenn Sie sich jedoch für einen zu großen Mikrocontroller entscheiden, zahlen Sie für Ressourcen, die Sie nicht verwenden, und dies erhöht die Systemkosten.

Manchmal können Sie eine fundierte Vermutung anstellen, wie viel von den verschiedenen Ressourcen Ihre Anwendung benötigt. Wenn Sie beispielsweise FFT-Berechnungen durchführen, können Sie die genaue Speichermenge berechnen, die die Beispiele benötigen. Es ist jedoch schwieriger, zuverlässig zu bestimmen, wie viel Objektcode-Speicherplatz die Software benötigt, bis sie geschrieben wurde.

Eine gute Absicherung gegen zu wenig Codespeicher ist die Auswahl einer Mikrocontrollerfamilie, die über mehrere verschiedene Preis- / Leistungspunkte skalierbar ist . Dies ist ein großes Verkaufsargument für ARM , Microchip PIC , Atmel AVR und andere skalierbare Mikros. Während Sie Ihre Software entwickeln, können Sie von einem größeren Entwicklungssystem zu einem kleineren Zielsystem wechseln, um die endgültigen Endproduktkosten niedrig zu halten.

Skalierbar bedeutet, dass alle Mikrocontroller in dieser Familie (meistens) den gleichen Befehlssatz und (meistens) die gleichen Register haben. Software, die für einen geschrieben wurde, funktioniert also für einen anderen in derselben Familie. (Microchip-PIC-Code wird nicht auf einem ARM ausgeführt, aber wenn Sie den PIC14 lernen, können Sie leicht zum PIC12 oder zum PIC16 wechseln.)

Wenn Sie nur einen einmaligen Prototyp anstatt einer vollständigen Produktionsproduktlinie bauen, ist es am besten, sich an ein Entwicklungssystem zu halten, das etwas größer ist, als Sie denken, aber Raum für Wachstum bietet.

MarkU
quelle
3

Ein wichtiger Faktor ist die Größe Ihrer am häufigsten verwendeten Variablen. Wenn Sie hauptsächlich 8-Bit-Variablen verwenden und nur auf 8-Bit-Ports zugreifen müssen, können Sie wahrscheinlich mit einer 8-Bit-MCU auskommen.

Wenn Sie jedoch viele 16-Bit-Variablen und sogar nur wenige 32-Bit-Variablen haben, müssen Sie sich eine 16-Bit- (oder sogar 32-Bit-) MCU ansehen, da Sie mit auf 16-Bit-Variablen zugreifen Eine 8-Bit-MCU benötigt viel Code.

Und wenn Sie Gleitkommavariablen verwenden möchten, empfehle ich dringend eine 16-Bit- oder 32-Bit-MCU.

Selbst wenn Sie nicht die Zeit haben, einen Großteil des Codes zu schreiben, den Sie verwenden müssen, empfehle ich, einen Teil davon vorher zu schreiben und für die von Ihnen verwendeten Mikrocontroller zu kompilieren. Die meisten Hersteller von Mikrocontrollern haben kostenlose Versionen ihrer Compiler, möglicherweise begrenzt durch die Größe der Ausgabedatei oder durch die Begrenzung des Optimierungsumfangs.

tcrosley
quelle
2

Bevor Sie ein neues Board entwerfen, führen Sie im Idealfall ein Proof-of-Concept-Projekt durch, indem Sie entweder ein Entwicklungsboard (oder ein im Handel erhältliches Board) oder ein übrig gebliebenes Board aus einem Ihrer vorherigen Projekte verwenden.

Jeanne Pindar
quelle
2

Bevor Sie wirklich mit dem Codieren beginnen, müssen Sie zunächst einige Nachforschungen anstellen, was Sie zur Realisierung eines Projekts benötigen. Das gehört zum Job.

Wenn Sie bereits mit Mikrocontrollern vertraut sind, sollten Sie nachforschen, ob eine 8-Bit-uC ausreicht oder nicht. Es hängt von der Komplexität ab, ob es erweitert wird oder nicht (wie von einem monochromen LCD zu einem Farb-LCD), ist es auf lange Sicht, muss es ein geringer Stromverbrauch, eine geringe Speichernutzung und so weiter sein ...

Ich musste nachforschen, welchen ARM uC ich wählen musste und welchen Compiler (basierend auf Preis und Beliebtheit). In meiner Situation war es wichtig, die Verfügbarkeit von Peripheriegeräten zu überprüfen.

Ein einfaches Ja oder Nein ist also nicht möglich. Willkommen in der Welt der Technik :)

AndaluZ
quelle
2

Normalerweise sind 32-Bit-MPUs aufgrund einer höheren Frequenz oft schneller, aber auch aufgrund ihrer Fähigkeiten oder einiger Tricks, die sie ausführen können.

Wie von @tcrosley gesagt, kann eine 32-Bit-MCU zwei 32-Bit-Ganzzahlen auf einmal hinzufügen, während eine 8-Bit-MCU dies Byte für Byte tun muss. Gleitkommazahlen benötigen mindestens 16 Bit und ihre Mathematik ist komplexer, was für die 8-Bit-MCU viel Arbeit bedeutet. Eine 32-Bit-MCU kann die Mathematik in Hardware ausführen, also noch einmal auf einmal. Einer der Tricks kann darin bestehen, vier Additionen von 8-Bit-Variablen gleichzeitig durchzuführen. Laden Sie vier 8-Bit-Werte in das Register und fügen Sie jedem 8-Bit-Werte hinzu.

Aber das ist nicht alles.
Schauen Sie sich auch die Hardware-Peripherie genau an, die auf 32-Bit-MCUs nicht unbedingt leistungsfähiger ist!
Eine Erfahrung:

An meiner Universität haben wir ein Oszilloskop gebaut, das aus einem PIC18F2550 (8 Bit, 10 Bit ADC, USB), einem Operationsverstärker zur Realisierung mehrerer Spannungsbereiche und einigen Kappen und Widerständen besteht. Dies war als sehr einfaches, sehr billiges Oszilloskop für Schulen mit einer Abtastrate von ... gedacht. Ich denke, es war ungefähr 50 kHz. Die Übertragung erfolgte über CDC für eine hohe Kompatibilität.

Als der Mikrochip seine PIC32-MCUs entwickelte, sah er vielversprechend aus. Der Preis war fast der gleiche, 120MInstructions / s statt 12, Highspeed-USB statt Full-Speed. Der letzte Punkt war interessant, da der Durchsatz der begrenzende Faktor des PIC18 war und Mikrochips-Benchmarks einen bemerkenswert höheren USB-Durchsatz zeigten.

Schließlich stellte sich heraus, dass der PIC18 alle USB-Aufgaben in der Hardware erledigte, während der PI32 mehr in der Software zu tun scheint - sobald der PIC32 mehr Arbeit zu erledigen hat, sank der Durchsatz. Daher konnten wir mit PIC32 kein schnelleres Oszilloskop realisieren.

(Ich war nicht daran beteiligt - daher kenne ich die Details nicht.)

süßer
quelle
1

Ein Wort liefert die Antwort - ERFAHRUNG.

Bis dahin probierst du Dinge aus und lernst, Erfahrungen zu sammeln.

Beachten Sie auch, dass es Aufgaben gibt, die Sie für eine beliebige MCU festlegen können, die möglicherweise flach ins Gesicht fällt, wenn für die Algorithmen der falsche Entwurfsansatz verwendet wird. Vor langer Zeit habe ich die Firmware für eine 4,9-MHz-8-Bit-MCU codiert, die clevere Algorithmen verwendete und in der Lage war, das Auflegen / Abheben zu überwachen und den Klingelstatus zu erkennen, indem ich auf allen 28 Telefonleitungen gleichzeitig nach dem ~ 20-Hz-Ringspannungssignal filterte und dann diesen Status an eine zentrale Kontrollstation melden, während ein LCD-Display ausgeführt und eine ziemlich komplexe Benutzeroberfläche mit erkannten DTMF-Tönen betrieben wird. Lustige Sachen.

Michael Karas
quelle
Ich wünschte, ich könnte solche Dinge bei meiner Arbeit tun
quantum231