Programmieren Sie einen ATMega328P und verwenden Sie ihn ohne Arduino-Karte


13

Ich möchte einen ATMega328P für mein Projekt verwenden, ich hoffe, dass ich dies ohne das Arduino-Board tun kann.

Ich weiß, mit der Arduino IDE und einem Arduino Board kann ich den Mikrocontroller programmieren. Wäre es jedoch möglich, nach dem Programmieren und Debuggen des Programms mit der Arduino IDE + Arduino-Karte den Mikrocontroller von der Arduino-Karte zu entfernen und den ATMega328P separat ohne die Karte zu verwenden?

Wenn ja, welche zusätzlichen Konfigurationen sollte ich am ATMega328P vornehmen, um korrekt am Steckbrett zu arbeiten?


Verwenden Sie ATMEGA328 P-PU mit Arduino UNO Bootloader .... Sie können es in Hobbyfachgeschäften und online und so finden ☺
Arthur

Die Verwendung des nackten Chips ist absolut machbar und überhaupt kein Problem.
Dannyf

Dies ist nicht die gleiche Frage wie Ihre, aber Sie erhalten möglicherweise ein paar Informationen daraus. arduino.stackexchange.com/questions/32970/…
Code Gorilla

Sie können Antworten auf diese Frage
Rashedul Islam Emon

Antworten:


7

Sie können einen ATMEGA von einem Arduino entfernen und in Ihrem eigenen Board verwenden. Bei Verwendung auf einem typischen Arduino-Board wird der Chip jedoch für einen externen Kristall als Taktquelle anstelle des (einfacheren, aber weniger genauen) internen Takts abgesichert.

Sie können die Taktquelle über ISP nur ändern, wenn die vom Chip erwartete Taktquelle betriebsbereit ist. Wenn Sie also die Taktauswahl ändern möchten, müssen Sie dies tun, bevor Sie den Chip vom Arduino entfernen.

Sie können jedoch auch einen Clock-Kristall und seine zwei Kondensatoren (oder einen Ersatzresonator, in den dieser häufig eingebaut ist) auf Ihrer externen Platine bereitstellen.

Normalerweise sind Chips (selbst solche, die aus Bequemlichkeitsgründen mit einem Bootloader vorgebrannt wurden) billiger als Boards. Es ist daher unklar, warum Sie denselben Chip vom Arduino entfernen möchten, anstatt einen anderen zu verwenden. Sie werden sowieso einen seriellen Adapter auf USB-Logik-Ebene benötigen, und sobald Sie diesen haben, können Sie die Entwicklung auf dem bloßen Chip auf Ihrem Board durchführen, selbst wenn Sie die ersten Tests auf dem Arduino durchführen. Wenn Sie keinen USB-Konverter haben, können Sie entweder den Chip aus einer Arduino-Platine ziehen und die Drähte von D1 und D0 verlegen oder den integrierten Chip im Reset-Modus halten, damit Sie diese seriellen Leitungen ausleihen können Interferenz.


1
Meine Idee ist, nur einen Mikrocontroller ohne Platine zu verwenden. Da es einfach ist, ein Arduino zu programmieren, dachte ich, ich könnte ein ATMega wählen. Also, ich habe ein Arduino-Uno, meine Idee ist es, nur ein ATMega zu kaufen und es mit dem Uno-Board zu programmieren und zu debuggen. Ich habe jedoch gerade erneut festgestellt, dass ich, wenn ich den ATMega vom Arduino trenne, Komponenten hinzufügen müsste (Kristall, Pull-up-Widerstände ...). Kannst du bitte erklären, was du im letzten Absatz deines Beitrags meinst? Gibt es eine einfache Möglichkeit, einen ATMega (oder einen anderen Mikrocontroller) direkt zu programmieren, ohne die Arduino-IDE zu verwenden? Vielen Dank.
George

Während Sie die IDE überspringen können, ist ihre Verwendung für die Komplexität Ihrer Schaltung im Wesentlichen irrelevant, da Sie die IDE entweder mit einer Schaltung verwenden können, die über eine externe Uhr verfügt oder nicht, und entweder über eine USB-Schnittstelle. seriell auf Ihrer Zielplatine, über ein Kabel oder durch Programmieren Ihrer Skizze mit einem ISP-Programmierer. Das Abreißen eines Chips von einem Board bringt Ihnen nichts, als einfach einen Chip mit oder ohne Bootloader zu kaufen und selbst zu laden, möglicherweise mit Ihrem intakten Arduino als ISP-Programmierer oder mit ISP, um Ihre Skizze direkt ohne Bootloader zu laden.
Chris Stratton

7

Ja, Sie können ATMega328Pohne Arduino Board verwenden. Ich benutze den IC immer ohne Arduino. Dafür gibt es zwei Möglichkeiten.

  1. Sie können Arduino Board mit dem IC verwenden. Programmieren Sie den IC, nehmen Sie ihn heraus und verwenden Sie ihn in Ihrer Schaltung. Sie müssen 16MHZ Oscillatormit Kondensatoren verwenden.
  2. Wenn Sie keine Arduino-Karte haben, können Sie andere Programmierer verwenden USBasp, um Ihre zu programmieren Atmega328p. Verwenden Sie in diesem Fall nicht die Schaltfläche zum direkten Hochladen, sondern verwenden Sie den Upload mit den Programmieroptionen aus dem Dateimenü. Vergessen Sie nicht, Board als Arduino Pro or Pro Mini (5v, 16mhz) With ATmega328und Programmer als auszuwählen USBasp.

ANMERKUNG : Beziehen Sie sich auf Atmega328p Pin Mapping und programmieren Sie Ihr Gerät entsprechend. Genießen!


2

Suchen Sie nach "Build an Arduino" - Sie finden jede Menge Artikel mit Anleitungen dazu. Sie müssten in der Lage sein, Verbindungen auf einer Leiterplatte zu löten (und nicht einmal das, wenn Sie ein lötfreies Steckbrett verwenden möchten), aber es ist wirklich unkompliziert. Sie können sie sogar zuerst erstellen und die MCU mit einem FTDI-Kabel auf der Platine programmieren. Ich benutze ein Arduino-Board und ein lötfreies Steckbrett, um mit unbekannten Teilen zu experimentieren, aber ich gehe normalerweise sofort zu einem handgefertigten Board, sobald ich mit allen Komponenten vertraut bin, die ich verwenden werde.

Mit dem Prototyping mit dem Arduino-Board können Sie eine Reihe von Teilen zusammenfügen und schnell etwas zum Laufen bringen. Wenn der Arduino leistungsfähiger ist als Ihr endgültiges Ziel - f / ex, ein Mega 2650 -, können Sie die Speicher- und E / A-Einschränkungen vorübergehend ignorieren des kleineren Gerätes.


0

Es ist ziemlich einfach, einen eigenständigen Arduino-Chip zu verwenden. Das Knifflige an dem für die offiziellen Boards verwendeten Chip ist, dass sie mit dem schnelleren (und genaueren) externen Oszillator verschmolzen sind, der auf dem Board montiert ist. Dies gilt auch dann, wenn Sie die losen Chips kaufen, da die meisten, mit Ausnahme derjenigen von Digikey, in der Absicht weiterverkauft werden, in ein Arduino-Board eingebaut zu werden, um ein ausgebranntes Board zu ersetzen.

Vorsichtsmaßnahmen: Der Arduino ist als Prototyping-Board konzipiert, und nur wenige Dinge sind besser als bei dieser Aufgabe. Möglicherweise möchten Sie den Chip auf der Arduino-Platine belassen, bis Sie mit dem Entwerfen und Testen Ihrer Schaltung fertig sind. Erst dann schließen Sie es direkt an. Es kann an Ort und Stelle verwendet werden, wenn Sie über eine Taktschaltung verfügen, oder Sie können die Sicherungen austauschen (siehe später) und den Arduino mit einem ISP-Adapter und einer Taktrate von 8 MHz neu programmieren (PlatformIO ermöglicht dies ( und ermöglicht dies direkt) Import einer Arduino-Skizze) - Überprüfen Sie die Dokumentenseite für das Atmel AVR-Plugin, aber Sie können auch eine Reihe von Anleitungen zum Hinzufügen einer Board-Datei zu Arduino nachschlagen, um ihm mitzuteilen, dass die 8-MHz-Option für einen bloßen Chip verwendet werden soll.

Wenn Sie den Chip zur Verwendung in einem anderen Schaltkreis entfernen, muss entweder der Taktschaltkreis wieder hinzugefügt werden oder die Sicherungen müssen ausgetauscht werden (ich werde gleich darauf zurückkommen). Das Programmieren wird aus mehreren Gründen schwierig sein, daher sollten Sie sich ein wenig billigere Hardware kaufen:

Programmieren eines eigenständigen Chips: Die CPU des Arduino ist nicht nativ für die Kommunikation mit einem Computer ausgelegt. Sie brauchen einen Vermittler. Auf dem Uno geschieht dies über einen zweiten Atmel-Chip, der USB-fähig ist, und einen Bootloader auf dem Hauptchip. Das bedeutet, dass es den UART zum Hochladen des Programms verwendet, während der USB-Chip die Nachrichten des PCs in UART-Signale umwandelt. Da der Bootloader für sich genommen ein Problem darstellt (da UART wählerisch ist und den Chip so installiert, dass er eine externe Uhr verwendet), sollten Sie einen ISP-Programmierer für das Arduino (oder kaufen Folgen Sie der Arduino-as-ISP-Skizze und den Anweisungen, um Ihre eigenen zu erstellen. Dazu muss ein Arduino mit Chip vorhanden sein, sodass eine Sekunde programmiert werden muss.

Diese können den ATMega 328 direkt über SPI ohne einen Bootloader programmieren (es gibt viele Anweisungen im Internet; suchen Sie beispielsweise nach "Program Bare ATMega 328P mit USBAsp"). Dies macht es viel einfacher, Ihr Programm zu ändern und zu debuggen, ohne den Chip in das ursprüngliche Arduino-Board zu stecken. Sie benötigen auch eine, um die Uhreinstellungen zu ändern, wenn Sie keinen externen Quarz verwenden möchten.

Wenn Sie den Chip debuggen möchten , ist es hilfreich, einen FTDI-Adapter oder einen anderen USB-zu-UART-Konverter zu erwerben. Beachten Sie, dass Sie den ATMega ohne den Reset-Schaltungsteil der Karte (oder erneut durch Hinzufügen Ihrer eigenen) auch mit dem Bootloader nicht programmieren können. Verbinden Sie dazu die Masse-, RX- und TX-Pins mit dem Adapter. Möglicherweise möchten Sie die VCC-Leitung anschließen oder nicht, es wird jedoch empfohlen, dies nicht zu tun, wenn eine Vielzahl von Dingen mit dem Chip verbunden sind und / oder eine eigene Stromversorgung vorhanden ist. Beachten Sie, dass RX und TX beim Anschließen vertauscht werden müssen. das heißt, RX zu TX und TX zu RX - Sie möchten, dass der Chip RX empfängt, was der Adapter sendet, und umgekehrt.

Die Taktschaltung ist nicht schwer zu bauen, erfordert jedoch einige Komponenten, die Sie möglicherweise nicht haben. Um die Taktquelle zu ändern , gehen Sie zu http://www.engbedded.com/fusecalc/ und wählen Sie den ATMega 328P aus. Die Standardeinstellungen sind in Ordnung, aber Sie können das EEPROM-Löschverfahren aktivieren und die Taktdivision durch 8 deaktivieren oder die Brownout-Einstellungen anpassen. Berühren Sie nichts anderes (das Deaktivieren von Reset oder SPI oder das Aktivieren von DebugWire führt zu "Spaß", für dessen Behebung ein HV-Programmierer erforderlich ist). Wenn Sie fertig sind, fügen Sie den Befehl, den es bereitstellt, in den AVRDude-Befehl ein. Sie müssen die -c-Optionen ändern (-p ist bereits auf ATMega 328P eingestellt, schlägt jedoch bei Nicht-P 328s fehl - kaufen Sie diese nicht) und fügen möglicherweise die -P-Option (für Port) hinzu. Lassen Sie die Option -u in Kleinbuchstaben nicht aus, sonst werden die Sicherungen nicht aktualisiert.

avrdude -p m328p -v -c usbasp -B 100 -u [add extras here: (-P <PORT>) <fuse set command here>]

Beachten Sie, dass Sie beim Kauf eines USBASP (stellen Sie sicher, dass er drei Sätze Jumper hat!) Möglicherweise nicht über die aktualisierte Firmware verfügen, die die Option -B unterstützt (die Sie wahrscheinlich benötigen), obwohl sie mein Lieblingsprogrammierer sind. Das bedeutet, dass Sie es über den sechspoligen Programmierport an einen Arduino anschließen müssen, genauso wie Sie es zum Programmieren des Arduino-Bootloaders verwenden würden, aber dann die Arduino-as-ISP-Skizze zum Programmieren des neuen verwenden müssen Firmware an den Programmierer (Suche nach "Update der USB-Firmware über Arduino-as-ISP")! Dass als Referenz, in der Regel bedeutet , dass das Kabel zeigt vom Körper des Bretts entfernt, und Sie werden wahrscheinlich die Skizze programmieren , bevorKabel anschließen. Aktivieren Sie auch den Power-from-Programmer-Jumper auf dem USBASP (5V) und den "Self-Program" -Jumper. ( Die Position der Leistungs- und Programm-Jumper finden Sie unter https://forum.arduino.cc/index.php?topic=560719.0 (JP2).)

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.