Ich habe an einem Arduino-Projekt gearbeitet. Nachdem ich mit dem Arduino alles zum Laufen gebracht habe, möchte ich zu einer Lösung übergehen, die NICHT Arduino verwendet. Das heißt, ich möchte einen Mikrocontroller verwenden, ohne das Arduino-Board einzubeziehen. Dies ermöglicht eine Einzelplatine, keine Abschirmlösung.
Ich weiß, dass es Methoden gibt, um mein eigenes Arduino auf einem Steckbrett herzustellen, aber das ist nicht wirklich das, was ich versuche.
Ich bin mir nicht sicher, wie ich das machen soll.
Sofern es keine bessere Option gibt, neige ich dazu, den ATmega328 zu verwenden, der vom Arduino verwendet wird. Ich verstehe, dass Entwicklungstools kostenlos oder zumindest nicht sehr teuer verfügbar sind.
Für diese Frage wird angenommen, dass ich +5 V an meinen Stromkreis anschließen kann.
Meine erste Frage ist, wie man die MCU programmiert. Ich glaube, es gibt zwei Möglichkeiten:
- Kaufen Sie einen Programmierer, programmieren Sie die MCU und platzieren Sie dann den Chip in meiner Schaltung.
- Entwerfen Sie meine Schaltung mit Unterstützung für In-Circuit-Programmierung.
Ich gehe davon aus, dass es bei Option 1 so einfach ist, einen programmierten Chip in meine Schaltung einzufügen. Ich brauche sonst nichts. Natürlich wäre das Ändern der Software unpraktisch.
Aber für Option 2 bin ich mir nicht sicher, was ich brauche. Nach dem Lesen brauche ich ein Programmierkabel und einen Anschluss auf meiner Platine (welcher Typ?). Dann schätze ich, dass ich den Stecker mit bestimmten Pins des ATmega (richtig) verdrahte.
In jedem Fall brauche ich Atmel Studio.
Zweitens, abgesehen von der Stromversorgung, gibt es etwas auf dem Arduino, das ich unbedingt brauche? Ich vermute, vielleicht ein Reset-Schalter?
quelle
Antworten:
Willkommen in der wundervollen Welt von Atmel. Lassen Sie sich einige Antworten auf Ihre Fragen geben, die auf meinem Hobby und meiner beruflichen Erfahrung beruhen.
Kümmere dich nicht um irgendetwas, ABER um In-Circuit-Programmierung. Wenn Sie kein perfekter Programmierer sind, ist es ein Albtraum, jedes Mal, wenn Sie einen Chip programmieren möchten, diesen zu entfernen. Ich empfehle den AVRISPmkII als Einstiegsprogrammierwerkzeug. Der Nachteil ist, dass kein Hardwaredebug unterstützt wird. Eine Alternative ist der Drache, aber ich habe keine Erfahrung damit. Ich kann sagen, dass der JTAGICEmk3 ein nettes fähiges Debug-Tool ist.
Atmel Studio ist gut zum Programmieren. Es ist tatsächlich meine Lieblings-Embedded-Entwicklungsumgebung. Sie können CLI-Tools wie AVRDUDE und AVR-GCC verwenden, die IDE übernimmt dies jedoch für Sie.
ZUSAMMENFASSEND:
Kaufen Sie einen AVRISP nur zum Programmieren (einfacher, Plug & Play) oder einen DRAGON (Rat kann ich nicht geben).
Bringen Sie auf Ihrer Platine die ICSP-Pins in einen 6-poligen doppelreihigen 0,100 "-Header. Die Anschlüsse sind in diesem Datenblatt beschrieben .
Reset-Schalter sind nicht erforderlich.
quelle
Sie müssen nicht alle auf einmal "abschließen". So habe ich konvertiert:
Zu Beginn habe ich weiterhin ein Arduino verwendet, aber Aufrufe an die Arduino-Bibliothek in zeilenweise registrierte Lese- und Schreibvorgänge umgewandelt, um festzustellen, ob meine Programme noch funktionierten. Auf diese Weise habe ich mich an die Verwendung von Registern gewöhnt und festgestellt, dass sie nicht radikal unstetig mit der Arduino-Arbeitsweise sind. Arduino-Funktionen wie digitalWrite () manipulieren einfach die Register - Sie können sie direkt in Ihren Skizzen lesen und beschreiben.
Mein nächster Schritt war, einen ATTiny 85 auf ein Steckbrett zu legen und ihn mit Arduino als ISP zu programmieren ( http://highlowtech.org/?p=1695 ). Wenn Sie ein Steckernetzteil kaufen und den internen Oszillator des ATTiny verwenden, erfordert dies lächerlich wenig Verkabelung. Ich habe die Arduino-IDE zum Kompilieren verwendet, aber weiterhin so viele Register wie möglich verwendet.
Dann habe ich die kostenlose Crosspack-Befehlszeilen-Toolchain installiert und ein Blinky-Programm kompiliert. Nach einigem Hin und Her habe ich es geschafft, den ATTiny nur mit avrdude zu programmieren und mich vollständig außerhalb des Arudino-Ökosystems aufzuhalten.
Sobald Sie nur mit den Befehlszeilen-Tools blinky erreicht haben, sind Sie frei von Arduino. Erkunden Sie die verschiedenen Peripheriegeräte und ihre Register, und schon bald wird es ganz natürlich.
Nach all dem finde ich mich oft mit Arduino, weil es schneller ist. Ich habe festgestellt, dass das Durchstöbern von Registerbeschreibungen irgendwie scheiße ist. Das macht keinen Sinn, wenn Sie nicht müssen. Es ist jedoch gut zu wissen, wie es geht.
quelle
Ich stimme dem obigen Kommentar von HL-DSK zu. Ich würde das zusätzliche Geld ausgeben und mir einen Programmierer mit Debug-Fähigkeiten zulegen. Ich benutze JTAGICE3, ungefähr 110 $ auf Digischlüssel.
Informieren Sie sich über ISP Programmierung hier . Hier erfahren Sie, wie Sie die SPI-Verbindungen herstellen. Die SPI-Verbindungen auf Ihrem Chip befinden sich im ATmega-Datenblatt. Informationen zu den MISO / MOSI / SCK / RESET-Pins finden Sie auf Seite 2. Der Programmierer muss in der Lage sein, die Rücksetzleitung zu steuern. Denken Sie daran, einen Pull-up-Widerstand an der Reset-Leitung zu verwenden, damit Ihr Chip nach dem Trennen des Programmiergeräts ausgeführt wird.
Holen Sie sich ein 2x3 - Header hier . Oder machen Sie Ihre eigenen mit Abreißköpfen.
quelle
Der Unterschied zwischen einem Arduino und einem bloßen ATmega328 ist nur zwei Dinge. Der Arduino-Bootloader und die Arduino-Bibliotheken. Sie können ein Arduino mit nacktem C oder C ++ codieren, ohne eine der Bibliotheken zu verwenden. Sie können stattdessen auch Assembly verwenden. Mit dem Bootloader können Sie neuen Code seriell laden, ohne die (etwas) kompliziertere In-Circuit-Serial-Programmierung (im Grunde SPI) durchlaufen zu müssen.
Sie können mit fast jedem ide Standard-Programmierbibliotheken und avr-gcc verwenden. Im Gegensatz zu dem, was andere sagen, ist das Codieren eines Arduino im Grunde wie das Codieren eines bloßen Mikrocontrollers, mit einigen zusätzlichen Bequemlichkeiten auf Kosten einer gewissen Leistung.
quelle
Ich kaufe vorab geladene Atmega328P- Chips und programmiere sie im Schaltkreis mit einem FTDI-Kabel . Ich mag die Eclipse-IDE, aber Sie können jede beliebige Umgebung verwenden, die Sie bevorzugen - Atmel Studio, die Arduino-IDE, Emacs oder barfuß in der Befehlszeile.
Diese Platine befindet sich an dem Punkt im Aufbau, an dem sie vollständig genug ist, um sie mit einem Hello-Programm zu testen, wobei das Kabel für die Programmierung, die Stromversorgung und das Terminal verwendet wird. Es wird weiterhin seine Stromversorgung benötigen - in meinem Fall LM2936, einen extrem stromsparenden Spannungsregler und einen Batterieanschluss - und alle anderen On-Board-Komponenten und Off-Board-Verbindungen, die das Projekt benötigt:
Da Sie ein Arduino haben, können Sie mit dem Arduino ein wenig Geld sparen und unprogrammierte Chips verwenden, um den Bootloader zu installieren. Die schönen blauen Pin-Out- Etiketten helfen mir dabei, meine Goof-Rate niedrig zu halten! Ich verwende einen 16-MHz-Quarz, aber wenn Sie mit dem internen Oszillator arbeiten können, verringert sich Ihre Teilezahl um 3 (xtal und 2 Kondensatoren).
quelle
Um von Arduino zu wechseln, wo die Hardware bereitgestellt wird und die Software eine C-Sprachüberlagerung ist, möchte ich einige Vorschläge machen. Ich sehe, dass die Leute einige nützliche Antworten gepostet haben, aber ich war dort, wo Sie sind, und ich würde die Dinge ein bisschen anders machen.
Ich habe ein paar schematische Ideen, die ich selbst gelernt habe, damit Sie eine saubere und reibungslose Schnittstelle zu Ihrem Mikro haben. Lass es mich wissen falls du Hilfe benötigst.
quelle
Ehrlicher Rat
Arduino ist für Anfänger, von hier aus gibt es zwei Möglichkeiten
Methode 1: Funktionsweise eines Mikrocontrollers / Prozessors (bevorzugter Ansatz)
Damit meine ich Lernarchitekturen und Assembler-Code (oder Bare-Metal) für das Micro-P / C. Wenn Sie hierfür einen Ausgangspunkt benötigen, würde ich Atmel 8051 vorschlagen, einen 8-Bit-Mikrocontroller mit der einfachsten Architektur und dem einfachsten Montageanweisungssatz. Jeder andere moderne 32-Bit- oder 64-Bit-Prozessor hat eine davon abgeleitete Architekturform. Dieser Mikrocontroller wird immer noch als Teil meiner Abschlussarbeit verwendet, da er ein guter Ausgangspunkt ist und viel Literatur zur Verfügung steht.
Oh und Kits zur Erstellung Ihrer ISP-Karte werden verkauft (fertig montierte Kits mit Processo, Lötkomponenten zu einem Board-Kit und Sie können die Entwicklungskarte selbst bauen, nur ein paar ICs und RS-232-Kabel / -Buchsen erforderlich).
Da es Low-Tech ist, werden alle Komponenten billig sein.
Weg 2: Springe zu einem Hardware-Software-Ansatz (weniger bevorzugt)
Dies ist der Ansatz für Faulenzer, die ein wenig in die Montage eingetaucht sind und auf etwas mehr Software als Hardware setzen möchten. Ich würde vorschlagen, auf ein anderes Hobby-Board wie Raspberry Pi oder BeagleBoneBlack mit ARM-Prozessoren zu wechseln und Projekte in ihrer Kreativität zu beginnen.
quelle
Sie können das Arduino-Board verwenden, ohne die Sandbox-Bibliotheken und die Umgebung zu verwenden. Sie können alles direkt selbst programmieren. Wenn Sie ihren Bootloader über serial / uart zum Programmieren verwenden möchten, funktioniert das einwandfrei. Die meisten / alle AVR-Teile können jedoch auch auf andere Weise programmiert werden, wobei das Teil im Reset-Modus gehalten wird und somit nicht gemauert werden kann. Es ist ziemlich einfach, Spi von einem Arduino oder einem anderen Mikrocontroller oder mit einem ftdi-Ausbruch aus einem bestimmten Geschmack herauszubeißen. sparkfun hat Arduino- und Nicht-Arduino-Boards (die 32u zum Beispiel), bei denen der SPI-Header offensichtlich ist. und Ftdi-Breakout-Boards, die Sie mit der Ftdi-Bibliothek oder der Ftdi-Bibliothek, die im Lieferumfang von Linux enthalten ist, mühelos basteln können.
In der Dokumentation zu jedem Teil sind die Boot- und Flash-Programmieroptionen aufgeführt. Ja, es ist nicht schwierig, nur ein paar Teile zu kaufen und ein eigenes Breakout-Board zu bauen. Ich würde das erst tun, wenn Sie ein vorhandenes Breakout- oder einfaches Evaluierungsboard verwendet und dieses dann bei Bedarf geklont haben. Beginnen Sie am besten mit einem Teil mit einem internen RC-Oszillator, im Grunde genommen mit Strom-, Masse- und Programmierstiften ...
quelle