Wie vergleicht sich der Arduino mit PIC und AVR für ernsthafte Lernende?

Ich versuche, mich mit Mikrocontrollern zu beschäftigen, aber wie Sie sich vielleicht denken können, ist die Auswahl des ersten Mikrocontrollers für den Anfang aufgrund der vielen großartigen Möglichkeiten eine schwierige Aufgabe.

Ich habe Elektronik (sowohl analog als auch digital) und Computerorganisation studiert und lese gerade ein Buch über Computerarchitektur.

Gibt es einen besseren Weg, mein Verständnis zu festigen, als einen echten Mikrocontroller zur Hand zu haben? Ich war versucht, Arduino wegen seiner Popularität und seiner angeblichen Einfachheit zu bekommen. Aber genau wie beim Programmieren in etwas wie C# und nicht unbedingt zu wissen, was hinter den Kulissen passiert, bin ich besorgt, dass ich es mit Arduino nur wie C# verwenden werde, ohne zu verstehen, wie die Architektur funktioniert, was ich mir erhoffe lernen.

Kurz gesagt, liege ich mit meinen obigen Einschätzungen des Arduino falsch? Und wie vergleicht sich der Arduino in Bezug auf das Verständnis der Funktionsweise eingebetteter Systeme mit anderen Mikrocontrollern der PIC- und AVR-Familien.

Danke

Arduino ist AVR. Es gibt Ihnen nur eine Sammlung von Bibliotheksfunktionen, die Sie verwenden können, um Ihr Leben einfacher zu machen.
Soll ich ein AVR-Entwicklungsboard oder ein Arduino kaufen?
Ein Arduino ist immer praktisch, unabhängig davon. Es kann als Programmierer für rohe AVR-Chips verwendet werden, und es ist ein einfacher Weg zum Lernen - Sie können mit den Grundlagen beginnen, indem Sie ihre API verwenden, und Ihre Abhängigkeit davon schrittweise reduzieren und das Bare Metal programmieren, ohne sich um die Unterstützung kümmern zu müssen Schaltkreise, Hardware-Programmierer usw.
Arduino ist ein Software-/Firmware-Entwicklungssystem, das ein breites (nicht-technisches) Publikum anspricht, daher verwenden sie leider eine nicht standardisierte Terminologie: sheildbedeutet Plug-in-Board, sketchbedeutet Firmware-Programm. processingund wiringsind Namen einiger ihrer Bibliotheken. Und fritzingist ein Steckbrettschaltplan, der oft als schlechter Ersatz für einen echten Schaltplan verwendet wird. Aber abgesehen von den seltsamen Namen ist es ein leistungsfähiges Entwicklungstool. Und da es Open Source ist, können Sie in den Quellcode eintauchen und sehen, wie die Dinge unter der Decke funktionieren.
@MarkU Eigentlich processingist der Name der IDE, die sie gestohlen haben, und wiringder Name der API, die sie gestohlen haben.
Ziehen Sie auch die MSP-Serie von TI in Betracht. Sie haben eine deutlich andere Architektur. Könnte interessant sein zu vergleichen.

Antworten (3)

Es sei denn, Sie haben ein extrem knappes Budget (wie das Sparen von Taschengeld), dann würde ich die Entscheidung, was ich zuerst ausprobieren soll, nicht zu sehr ins Schwitzen bringen. Wählen Sie einfach eine aus und erwarten Sie, dass Sie nach dem Start andere ausprobieren werden.

IMHO kann man mit einem Arduino als erste Wahl nicht wirklich etwas falsch machen:

  • Gerade wegen seiner Popularität und seiner angeblichen Einfachheit (im Vergleich zu PIC) finden Sie im Netz eine Fülle von Informationen und Unterstützung
  • Und mit der Standard-IDE können Sie sich ziemlich auf eine ermutigende erste Erfahrung verlassen, da Sie damit tatsächlich Dinge erledigen können (im Vergleich zu einem direkten Wechsel zu einem AVR-Chip).

Es ist also unwahrscheinlich, dass Sie an der ersten Hürde scheitern und daraufhin desillusioniert und frustriert sind.

Machen Sie sich nicht zu viele Sorgen darüber, in einer Black Box stecken zu bleiben , die Sie daran hindert, tiefere Ebenen zu lernen. Aber es liegt an Ihnen, über die Grundlagen hinauszugehen, z. B.:

Der einzige Nachteil, den ich mir vorstellen kann, wenn ich mit einem Arduino anfange, ist, dass ich gelegentlich abfällige Bemerkungen und Trolling von Real™ Engineers erleiden muss! So ähnlich wie Programmierer, die zugeben, dass ihre Muttersprache BASIC war;-)

Wenn Sie ein Arduino Uno oder ein ähnliches Board erhalten, können Sie die Tatsache völlig ignorieren, dass Sie die Arduino IDE verwenden können, um es zu programmieren, und Sie können Ihren gesamten eigenen Code in Atmel Studio schreiben und sogar die Arduino-Core-Bibliotheken darin importieren, wenn Sie möchten .

Das Gute an Arduino ist, dass Sie nicht die Low-Level-Sachen lernen müssen, wie z. B. das Aktivieren von Interrupts und das Festlegen von Masken für Timer-Register usw. Es "funktioniert" einfach.

Dies hilft Noobs, loszulegen und Dinge schnell zu erledigen.

Wenn Sie den richtigen Weg von Anfang an lernen möchten, gehen Sie direkt zu Atmel Studio mit einem AVR-Entwicklungsboard (oder verwenden Sie ein Arduino-Board, ignorieren Sie einfach die IDE) und lernen Sie von Beispielen und lesen Sie das Datenblatt für den Atmel AVR ATMEGA328P.

Ist es also möglich, den ATMEGA328P-Chip unabhängig zu verwenden?
Sie verwenden immer den Atmega328P, sowohl in Arduino als auch in anderen IDEs. Es ist nur so, dass Arduino die Hardware absichtlich abstrahiert und versucht hat, eine Programmierschnittstelle auf höherer Ebene zu erstellen, die cool ist und es ihnen ermöglicht, viele verschiedene Produkte zu haben, die alle denselben Code verwenden.
@KyranF, das die eigentliche "Essenz" der Programmierung ist, und "erfahrenere" Ingenieure sollten dies anerkennen, anstatt mit Arduino-Kiddies herabzusprechen. OpenGL und DirectX sind ein sehr ähnliches Paradigma. Die Hardware abstrahieren, damit (keuch ... sogar Anfänger) Programmierer sie verwenden können. +1

Wenn Sie Mikrocontroller programmieren möchten, müssen Sie (falls Sie es noch nicht wissen) 'C' und möglicherweise eine Assemblersprache lernen.

Arduino ist gut, wenn Sie nur etwas zum Laufen bringen wollen (dh gerade genug Programmieren verdienen möchten, um die Arbeit zu erledigen), was in Ordnung ist. Die Sprache, die Arduino verwendet, ist C-ähnlich, hat aber eine Reihe vorgefertigter Routinen, sodass Sie nicht wissen müssen, was unter der Haube vor sich geht.

Wenn es um Kontrolle und tieferes Verständnis geht, besorgen Sie sich ein Mikrocontroller-Entwicklungskit (entweder vom Hersteller oder von digikey). In der Regel können Sie dies für 30-50 USD oder weniger erhalten.

Informationen zum Erlernen von Embedded C finden Sie in den folgenden Büchern: Embedded C , Test Driven Development for Embedded Systems und Embedded Systems

Beginnen Sie mit dem Versuch, ein Problem zu lösen. Ich habe Bücher durchgeblättert und mich gelangweilt und nicht so viel behalten wie beim Versuch, ein Problem zu lösen. Viel Glück und hab Spaß!

Aber Ihre Antwort widerspricht irgendwie der von KyranF, der sagte, ich kann den Arduino wie einen normalen ATMEGA328P verwenden, wenn ich Atmel Studio anstelle des Arduino-Studios verwende. Warum dann ein AVR-Entwicklungsboard kaufen?
@medwatt Sie KÖNNEN das Arduino-Board verwenden, um einfach normalen C-Code in Atmel Studio zu entwickeln. Sie können also nicht wirklich verlieren, wenn Sie sich für ein Arduino-Board entscheiden