Ähnlichkeit zwischen Atmega162 und Arduino

Ich werde einen Kurs für eingebettete Systeme belegen, in dem wir den Atmega162 verwenden, und ich möchte damit beginnen, das Zeug zu lernen, bevor der Kurs beginnt. Jetzt ist meine Frage, wenn man bedenkt, dass es viele gute Ressourcen für Arduino und relativ knappe Ressourcen gibt für den Atmega162 und dass der Arduino viel weniger einschüchternd ist als der Atmega162, wäre es von Vorteil, wenn ich nur den Arduino lernen und dann etwas von diesem Wissen auf dem 162 anwenden würde?, oder haben die beiden Mikrocontroller signifikante Unterschiede, die das machen würden mit dieser Strategie ineffizient? Außerdem habe ich bereits Zugang zu einem Arduino Uno, aber ich werde wahrscheinlich keinen Zugang zu einem tatsächlichen Atmega162 bekommen, bis ich den Kurs beginne.

Wenn Sie beabsichtigen, MCU professionell zu programmieren, raten Sie, sich nicht auf einem Board mit Abstraktionscode wie Arduino niederzulassen, und mit ein wenig Studium werden Sie feststellen, dass eine Menge Beispielcode auf anderen Architekturen wie: Z8, RS08, STM7, PSoC1 , usw. können dazu dienen, die Programmierung Ihres AVR8 zu lernen. Wenn Sie jedoch einen Code freundlich verwenden, wird er beim Wechsel von einer Architektur zur anderen nicht nützlich sein.
Ein gültiger Punkt für professionelle Ingenieure, aber wenn es ein hilfreiches Sprungbrett für Sie ist (viele von uns lernen anders), dann haben Sie es.
Es ist sicherlich möglich, die Arduino IDE zu umgehen und das Arduino-Board direkt in Ada oder C zu programmieren, wenn Sie dies bevorzugen.
@Brian Drummond Haben Sie Ressourcen, die erwähnen, wie man in die Ada-Programmierung auf AVR einsteigt?
Ich verwende das AVR-Ada-Projekt von Sourceforge, [ sourceforge.net/projects/avr-ada/] . Ich arbeite an etwas Ähnlichem für den MSP430. Der Einstieg ist nicht trivial; derzeit muss man erst den Compiler bauen (es gibt ein Skript, das das machen sollte). Die Wiki-Seite des Projekts enthält einige gute Beispiele. Für eine GPL-Edition einer kommerziellen Gnat-Veröffentlichung gibt es auch [ libre.adacore.com/download/] , wo Sie „avr-elf-windows“ im Schritt „Select your platform“ auswählen können.

Antworten (3)

Der Arduino Uno hat einen Atmel ATmega328 an Bord, aber er kann durch einen 168 und ein paar andere ersetzt werden, wenn ich mich recht erinnere. Die Moral der Geschichte ist, dass alle Arduino-Boards Atmel-Mikrocontroller verwenden. Die Architektur der AVR-Reihe ist von Chip zu Chip nahezu identisch, teilweise bis hin zum Registerinhalt. Was Arduino für Bastler und Neulinge einfach macht, ist die Software.

In Ihrer Klasse lernen Sie wie ein Profi Mikros zu programmieren. In der Industrie ist dieser Arduino-Pseudocode nutzlos. Ich würde mich nicht mit Arduino beschäftigen, es sei denn, Sie haben ein Hobbyprojekt, bei dem Sie ein Mikro benötigen, und möchten nicht viel darüber nachdenken.

Ich habe ähnliche Aussagen von Fachleuten gelesen. Ich nehme an, es ist vergleichbar mit dem Eingeständnis, RealBasic in Gegenwart etablierter Softwareentwickler zu verwenden. :-) Ich bin glücklich, meine Komfortzone zu verlassen und glückselige Ignoranz (und ausgebrannte Mikros) zuzugeben, aber ich denke, wie RealBasic und andere Stützradplattformen, ist es ein großartiges Sprungbrett für diejenigen ohne formale Bildung.
Hinzufügen: Gehen Sie zu ebay und kaufen Sie sich günstig eine kleine Menge ATMEGA328-Chips (der Versand aus China dauert eine Weile, aber ich habe nirgendwo anders bessere Preise gesehen). Auf diese Weise können Sie, wenn Sie das Gehirn Ihres Arduino ausbrennen, den Bootloader auf einen neuen Chip flashen und ihn in wenigen Minuten in Ihr Board stecken. Ich habe noch keinen Chip verbrannt, aber ich bin mir sicher, dass ich das früher oder später tun werde.
@RTOSkit Behalten wir die Perspektive im Auge. Wir haben nicht alle unbedingt die gleichen Ziele. Für meine Zwecke (da ich in erster Linie ein Software-Ingenieur bin, der entdeckt hat, dass er gerne an Elektronik bastelt), ist Arduino das PERFEKTE Sprungbrett, um mit einem Erstprojekt loszulegen. Es gibt Perspektive ("Ihre Plattform ist Einstiegsklasse") und dann gibt es Elitismus ("Sie verschwenden Ihre Zeit, weil Sie nicht nah genug am Bare-Metal sind"). Ich war beeindruckt, wie freundlich diese Community normalerweise Bastlern gegenüber ist. Bitte mehr davon.
Es ist also möglich, den Atmega328 auf dem Uno zu programmieren, ohne die Arduino IDE zu verwenden? Gibt es neben avrfreaks noch eine andere Website mit Ressourcen, die mir helfen könnten?
Ich fange gerade erst an, aber ich glaube, die (klobige unter OS X) GUI ruft nur das Kommandozeilen-Zeug auf (glaube ich avrdude). Die erzeugten .ino-Dateien sind Klartext. Ich bin sicher, Sie könnten es mit vim bearbeiten und avrdude manuell ausführen. Sobald Sie Ihre Firmware abgeschlossen haben, können Sie den Chip ohne den Arduino-Bootloader selbst mit diesem Code flashen (um die Startverzögerung und den Speicherverbrauch zu vermeiden). Auch hier fange ich gerade erst mit der Plattform an, aber das habe ich von arduino.cc gelesen
Seltsamerweise kosten ATMEGA-Chips doppelt so viel, wenn sie mit dem Arduino-Bootloader vorinstalliert sind. Ich bin kein Trottel, also habe ich ein paar Rohlinge gekauft (falls ich etwas beschädige) und habe das arduino.cc-Tutorial, um das Board in einen temporären Programmierer zu verwandeln. Alternativ können Sie den Programmierer von Amtel für ~ $ 35 kaufen.
@JoshuaNozzi Ich verstehe Ihre Position, aber ich denke, der Benutzer zeigt seine Absicht, das Programmieren von MCU zu lernen. Verwenden Sie Abkürzungen, um etwas gut zu lernen, es ist nicht der richtige Weg, um anzufangen, egal ob etwas einfach oder komplex ist, und sicherlich, wenn jemand gut in der Hardwareprogrammierung ist, ob er ein Arduino-Board oder ein XMOS-Board verwendet. Ich habe das Gefühl, dass sie ihm raten, keine Zeit zu verschwenden und ihr Studium auf etwas Wiederverwendbareres zu konzentrieren. PS. Ich glaube keiner aus dieser Community hier hat so unfreundlich geantwortet.
Abgesehen davon, dass ich genau so vom Neuling zum erfahrenen Softwareentwickler ohne Ausbildung wurde: Ich tauchte an einem einfachen Einstiegspunkt ein und vertiefte mich im Laufe der Zeit in die Dinge der unteren Ebene. Ich sehe nichts Falsches daran, sein Wissen mit einer ziemlich beliebten Einstiegsplattform zu erweitern . Etwas Neues zu lernen ist nie Zeitverschwendung, egal was Ihr ultimatives Ziel ist.
@JoshuaNozzi Ich denke, Sie müssen sehen, was unter der Haube Ihres Arduino vor sich geht, um zu verstehen, warum Fachleute diese Meinung haben. Die Arduino-Firmware schränkt das Mikro stark ein. Diese praktischen Funktionen wie digital_read und was es sonst noch genau so gibt, funktioniert. Der Benutzer wird durch die Firmware eingeschränkt. Ich arbeitete mit einer Gruppe zusammen, die versuchte, einen Roboter zu bauen, und der Micro-Typ benutzte das Board mit dem 2560. Wir hatten nichts als Timing-Probleme und endeten damit, den Bootloader zu löschen und ihn mit unserer eigenen Software zu programmieren, und er begann sofort fast 100 % zu funktionieren.
Der Grund, warum ich gegen Arduino als Lernplattform bin, ist die einfache Tatsache, dass die Unkenntnis entscheidender Themen wie Bitmaskierung und Steuerregister akzeptabel und fast erwünscht ist. Der Benutzer muss nicht einmal die Ports einrichten, und es funktioniert einfach. Dies sind Dinge, die jeder Entwickler eingebetteter Systeme lernen muss, egal ob er AVR, PIC, ARM oder irgendeine Art von DSP entwickelt.
@MattYoung - Wovon redest du? Mit einem Arduino können Sie Bit-Masking durchführen, Steuerregister drehen, mit den integrierten Peripheriegeräten herumspielen und vieles mehr.
Persönlich habe ich bei der Arbeit eine Reihe von Projekten entworfen, die verschiedene AVR-MCUs verwenden, und ich mag das Arduino immer noch für kleine Hobbyprojekte, nur weil Sie damit eine Menge des widerlichen Mists ignorieren können, der zum Beispiel erforderlich ist, um zu printfarbeiten auf einem neuen Board im Atmel Studio.
Wirklich, Sie können ein Arduino nur für den Bootloader und die einfache Programmierung verwenden und müssen keine andere Komponente des Systems verwenden. Sachen wie die DigitalReadund DigitalWriteandere Funktionen sind komplett optional .
Außerdem gibt es keine "Arduino-Firmware". Es gibt den Arduino Bootloader, der nur ein Bootloader ist, und es gibt die Arduino-Toolchain, die sicherlich einige unangenehme Dinge tut, aber Sie müssen die Arduino-Toolchain nicht mit dem Arduino-Bootloader verwenden. AVRdude unterstützt das Schreiben auf Arduinos, sodass Sie auf diese Weise problemlos den alten gcc mit einem Arduino verwenden können.
@MattYoung - Wenn jemand Timing-Probleme mit einem Arduino Mega hatte, bedeutet dies, dass er wahrscheinlich vergessen hat, den Interrupt auszuschalten, den die Arduino-Toolchain standardmäßig aktiviert. Sie können alle Arduino- Standardfunktionen einfach ausschalten .
@FakeName - das ist nicht ganz korrekt. Arduino ist nicht wirklich eine Toolchain (es verwendet gcc und avrdude), sondern eine Sammlung von Bibliotheken, die normalerweise zu Hauptkomponenten der End-Firmware werden, ein Bootloader, einige Skripte zum Ansteuern der Toolchain, eine IDE und eine Menge Dokumentation/ Beispiele/Unterstützung.
@ChrisStratton - Punkt genommen. Ich neige dazu, an all die Software auf dem Computerende zu denken, die C-Dateien nimmt und Hex-Dateien/Programme eines Geräts als "Toolchain" ausgibt.

Wenn Sie etwas tun möchten, das der Klasse näher kommt, können Sie die Arduino-Software installieren, um das Board zu testen, und dann lernen, wie Sie mit avr-gcc und avrdude Bare-Metal-Projekte kompilieren und laden, in denen Sie stattdessen den gesamten Code schreiben als die Funktionen der Arduino-Bibliothek zu verwenden.

Der Unterschied zwischen den beiden Chips wird von ziemlich begrenzter Bedeutung sein, obwohl es lehrreich sein könnte, die Datenblätter zu vergleichen und eine Liste der Unterschiede zu erstellen, die Sie finden.

Es besteht jedoch eine ziemlich hohe Wahrscheinlichkeit, dass Ihr Kurs nicht avr-gcc verwendet, sondern einen anderen Compiler und wahrscheinlich ein anderes Programmiertool. Außerdem wird es wahrscheinlich einen anderen Codierungsstil und vielleicht einige Makros für Chipregister geben, die anders sind als das, worauf Sie sich bei Ihrem Won festlegen. Sie werden also wahrscheinlich immer noch mit einem gewissen Übergang enden – aber von einer Art, die nützlich ist, um darüber nachzudenken, da das Lernen, zwischen diesen Umgebungsproblemen zu übersetzen, Ihnen in Zukunft mehr Flexibilität geben wird. Beispielsweise möchten Sie möglicherweise App-Note-Code nutzen, der einen anderen Compiler voraussetzt als den, den Sie letztendlich für ein Projekt verwenden. Oder Sie arbeiten seit einiger Zeit an einem Projekt, entscheiden, dass verschiedene Einschränkungen der von Ihnen verwendeten Toolchain nicht mehr tolerierbar sind, und möchten das Projekt in ein anderes verschieben.

Etwas späte Antwort, aber es könnte für jemanden interessant sein, der darüber stolpert. Es stimmt zwar, dass Arduino derzeit eine Sprache auf einem zu hohen Niveau ist, um wirklich professionell nützlich zu sein, obwohl es sicherlich Produkte von kleineren Unternehmen gibt, die heute mit einigen Arduino-basierten Teilen in ihnen auf den Markt kommen. Ich denke jedoch, dass sich dies ändern kann:

Ich bin eher im Software-Engineering zu Hause als im Embedded- und Elektronikdesign mit rund 20 Jahren Berufserfahrung im ersteren Bereich. Ich habe auf meinem C64 angefangen, Programmieren zu lernen, bin aber ziemlich schnell zu C und später auch zu C++ gekommen, da das damals die Standardsprachen waren, die man wirklich beherrschen musste. 1995 kam Java und ich war ein früher Adaptor. Die meisten Leute waren jedoch ziemlich skeptisch, eine verwaltete Sprache mit Garbage Collection und diesem hohen Abstraktionsgrad war sicherlich nichts anderes als ein Lehrmittel oder etwas, in dem man eine einfache Benutzeroberfläche oder so etwas bauen konnte, für echte Anwendungen brauchte man immer noch C++. Nun ja, heute sind Java und C# (die sich auf der gleichen Abstraktionsebene befinden) mit Abstand die dominierendsten Sprachen, insbesondere wenn es um Unternehmensanwendungen geht. Ja, es gibt immer noch Stellen, an denen C++ verwendet wird,

Warum ist das? Nun, technologische Fortschritte passieren in diesem Bereich schnell und können im Wesentlichen für vier Dinge verwendet werden: Hardware billiger zu machen, sie kleiner zu machen, sie schneller zu machen oder ihr zu ermöglichen, Aufgaben auszuführen, die früher nicht möglich waren. Bei Computern, sowohl PCs als auch Servern, ist kleiner nicht wirklich ein Problem, der einschränkende Faktor bei der Verkleinerung eines Laptops sind Batterien und die Tatsache, dass Sie einen Bildschirm nicht verkleinern müssen. Neue Aufgaben, dafür gibt es eigentlich keine Nachfrage, es sei denn, es ist etwas Spektakuläres. Hardware wurde also schneller und billiger. Gleichzeitig steigt die Nachfrage nach Programmierern stetig, was bedeutet, dass sie immer teurer werden, was zu der einfachen Tatsache in der Computersoftwareentwicklung von heute führt: Programmiererstunden sind teurer als RAM- und CPU-Zyklen, daher müssen Sie

Nun sind die Dinge für eingebettete Dinge leicht, aber nicht massiv anders, hauptsächlich in zwei Faktoren: Größe war immer noch ein Thema und ist es in einigen Anwendungen immer noch, und eingebettete Systeme sind oft Teile von Geräten und können daher nicht ohne weiteres aktualisiert oder geändert werden, können nicht davon profitieren von anderen Einheiten in einem Netzwerk, um Arbeit zu entladen usw. Was sie sind, wenn sie gebaut sind, werden sie bleiben, und sie müssen autark sein. Dieser letzte Teil ändert sich, da verschiedene Kommunikationsstacks für eingebettete Systeme verfügbarer werden. Diese Unterschiede sind jedoch nicht grundlegend, sondern führen nur dazu, dass die gleiche Entwicklung später stattfindet und nicht so schnell greift wie bei Computersoftware. Wir kommen an einen Punkt, an dem Sie die Rechenleistung eines durchschnittlichen Gaming-PCs vor 10 Jahren für 8 Dollar in der Größe einer Kreditkarte bekommen können, einschließlich Anschlussperipherie und sogar WLAN - wahrscheinlich werden wir in Kürze an einem Punkt sein, an dem für Embedded dasselbe gilt wie für Computersoftware: Engineering-Stunden sind teurer als Hardware, was bedeutet, dass sie immer mehr verdienen wird sinnvoll, höhere Abstraktionsebenen zu verwenden. Angesichts der Wahl, einen Atmel-Chip heute bei gleichen Kosten doppelt so schnell oder doppelt so klein zu machen, wäre es in den meisten Fällen sinnvoller, ihn schneller zu machen und diese Leistung dafür auszugeben, das Leben des Programmierers einfacher zu machen.

Nein, ich sage nicht, dass Arduino die Zukunft der Embedded-Entwicklung ist, ich denke, es hat zahlreiche Mängel, die es davon disqualifizieren werden. Ich glaube jedoch, dass sich ziemlich bald mehr Sprache auf hohem Niveau manifestieren wird und dies eine große Veränderung für die Branche sein wird.

Beifall