Wie sollte man von der Verwendung eines Arduino als Programmierer zu einem externen Programmierer wechseln?

Teil zwei einer dreiteiligen Serie über den Übergang von Arduino zu einem einfachen AVR-Mikrocontroller und minimale unterstützende Komponenten ( Teil eins , Teil drei )

Ich habe viele Leute gesehen, die das im Internet gefragt haben, also hier ist:

Ich weiß bereits, wie man einen Barebone ATmega328 mit einem Arduino als Programmierer programmiert und verwendet . Ich möchte jetzt einen externen Programmierer mit der Arduino IDE verwenden.

Wie soll ich bei diesem Übergang vorgehen? Was soll ich lernen? (Es wäre schön, wenn ein Mini-Tutorial für einige der Teile als Teil der Antwort bereitgestellt würde.)

+1, ein ausgezeichneter Kandidat für eine Referenzfrage, ich freue mich auf einige gut strukturierte und detaillierte Antworten, die für Anfänger leicht zu befolgen sind, und nicht auf "Etch-a-Board" -Antworten.
Ich bin verwirrt. Sie möchten, dass Schritte von einer Methodik zu einer anderen übergehen. Was erwartest du als Antwort? Tutorials für die direkte Verwendung eines externen Programmierers sind gut, die eigentlichen Tutorials.
@AshRj: Übergang und Neuanfang sind zwei verschiedene Dinge. Wenn man weiß, wie man ein Arduino benutzt, müsste man wissen, was die Unterschiede in den verschiedenen Codes sein werden (und die Grundlagen der Verwendung eines Programmierers).
@Manishearth Was meinst du mit "ohne Bootloader"?
@Polar: Grundsätzlich möchte ich nicht, dass der Arduino-Bootloader da ist, um mir zu helfen (was passiert, wenn Sie einen Arduino als Programmierer verwenden), ich möchte nur einen nackten ATmega, auf dem der gesamte Code mein Code ist.
@Manishearth Sie suchen also nur nach den von Ihnen bereitgestellten Einsen und Nullen (dh um das Beste aus dem verfügbaren Speicher herauszuholen)?
@Manishearth BEARBEITEN: Ich glaube, ich habe gerade eine Methode mit Google gefunden :) Wenn ich es verstehen kann, werde ich es als Antwort posten.
@Polar: Natürlich wird es einen Compiler dazwischen geben. Wenn Sie normalerweise ein Arduino programmieren, geschieht dies über UART (Rx/Tx), da der Bootloader dies zulässt. Wenn Sie hingegen einen externen Programmierer verwenden, benötigen Sie den Arduino-Bootloader nicht (Sie können Ihren eigenen schreiben), da Sie ihn über IRS (MISO/MOSI/SCK) programmieren.
@Manishearth Keine Sorge, ich wusste, dass Sie einen Compiler brauchen würden. Ich wollte nur klarstellen, was Sie mit ohne Bootloader gemeint haben - hier auf der Arduino-Site gibt es einen Teil mit Anweisungen. Welchen Zweck erfüllt der Bootloader dann eigentlich? Ist es genau dasselbe wie sein Mainstream-Äquivalent (dh Computer)?
@Polar: Ich könnte ein Programm direkt in die ersten Bits des Programmspeichers laden, wenn ich wollte. Der Arduino-Bootloader prüft grundsätzlich zuerst, ob Daten über UART gesendet werden (falls vorhanden, programmiert er sich mit dem gesendeten Programm neu). Ist dies nicht der Fall, wird das zuletzt geladene Programm ausgeführt. Es ist nicht nötig. Ich kann einfach einen einfachen Bootloader schreiben, der sagt: "Gehe zum Speicherort X und beginne mit der Ausführung". Oder ich könnte einfach das Programm schreiben, in dem sich der Bootloader befand.
Inwieweit möchten Sie das Tutorial? Würde es die Hex-Datei mit der IDE kompilieren, die Hex-Datei finden und dann einen Programmierer wie USBtiny verwenden? Ich denke, die Frage könnte etwas allgemeiner und nützlicher sein, wenn sie lautete: "Wie verwende ich einen externen Programmierer mit einem Arduino-Board?" Für mich hört es sich so an, als ob Sie danach streben, und ich weiß, dass andere dasselbe tun (ich bin einer von ihnen).
@JamesC4S: Ja, das. Übrigens, wie ich bereits erwähnt habe, wenn das Tutorial zu lang wäre, wären einige Links und eine allgemeine Vorstellung von der Situation nett.
@Manishearth Hat das Mini-Tutorial, das ich bereitgestellt habe, überhaupt geholfen?
@Manishearth Ich denke, es wäre hilfreich zu klären, dass die Frage (wie sie sich entwickelt hat) darin besteht, die Arduino IDE zu verwenden, jedoch mit einem externen Programmierer. Ich brauchte eine Minute, um die Frage so zu verstehen, wie sie jetzt steht.
@Robert: Ja, das liegt daran, dass meine ursprüngliche Absicht war, dass Teil 1 und 2 in dieser Frage enthalten waren. Ich repariere sie immer noch, ich teile sie, nachdem ich die Antwort bekommen habe.
@Robert: Klargestellt :)

Antworten (1)

Hinweis: Dieses Mini-Tutorial basiert auf den offiziellen Informationen hier auf der Arduino-Website. Es beinhaltet auch die Verwendung der offiziellen Arduino IDE.

Hinweis 2: Die bereitgestellten Links zu Produkten können entweder Farnell -Links sein (da sie Datenblätter enthalten) oder die eigentlichen Produktseiten auf der Website des Herstellers.


Schritt 1: Holen Sie sich einen externen Programmierer

Das erste, was zu beachten ist, ist, dass Sie einen externen Programmierer benötigen, um den Bootloader zu vermeiden und die 1K oder 2K Speicher zurückzugewinnen, die er belegt (12,5% des Gesamtspeichers ). Sie könnten einen AVR-ISP , einen STK-500 oder einen Parallelport-Programmierer verwenden - die offizielle Arduino-Site enthält Anweisungen dazu hier . Beachten Sie, dass Sie nicht mit dem Board über den parallelen Programmierer kommunizieren können - der Rat ist, dafür ein serielles Kabel zu verwenden. Der Hauptvorteil der Verwendung eines Parallelprogrammierers besteht darin, dass sie viel billiger sind als die anderen, wenn Sie bereit sind, etwas zu löten - Sie benötigen nur ein paar (3) Widerstände und ein paar Anschlüsse, während ein ISP Sie wieder einrichten kann auf £30/$50 (Umrechnungskurs ist ungefähr).


Schritt 2: Bearbeiten Sie die Arduino-Einstellungsdatei

Als nächstes müssen Sie die Arduino IDE konfigurieren, damit Sie den Bootloader umgehen können. Stellen Sie sicher, dass die Arduino IDE NICHT geöffnet ist! Die Einstellungsdatei preferences.txtfinden Sie je nach Betriebssystem an den folgenden Orten:

  • C:\Documents and Settings\<Username>\Application Data\Arduino\preferences.txt(Windows)
  • /Users/<Username>/Library/Arduino/preferences.txt(Mac)
  • ~/.arduino/preferences.txt(Linux)

Um zur Einstellungsdatei in Windows zu gelangen, gehen Sie zum Startmenü und dann zu %appdata%(NB: Ich benutze Windows nicht regelmäßig, fühlen Sie sich frei, mich zu korrigieren). Navigieren Sie dann zu Arduino und dann zupreferences.txt

Verwenden Sie auf dem Mac entweder Terminal und führen Sie Folgendes aus:

cd ~/Library/Arduino
open .

Oder verwenden Sie im Finder Goto (Cmd-Shift-G) und geben Sie ein ~/Library/Arduino. Beide bringen Sie zu einem Finder-Fenster mit preferences.txtin.

Auf Unix-Systemen werden Ordner, die mit einem '.' (wie .cache, .git) sind standardmäßig ausgeblendet, daher müssen Sie unter Linux das Terminal verwenden und Folgendes eingeben:

cd ~/.arduino
nautilus .

Hinweis: Sie können nautilus durch ersetzen, gnome-open wenn Sie möchten. Ich weiß, dass diese beiden mit den gängigen Linux-Varianten funktionieren, aber Sie könnten Probleme mit einigen der "exotischeren" Varianten haben.

Wenn Sie die preferences.txtDatei gefunden haben, öffnen Sie sie und ändern Sie das upload.usingvon bootloaderin den Namen eines der Programmierer im ./hardware/programmers.txtUnterverzeichnis. Wenn Sie den Bootloader nur von einem Board entfernen möchten, ./hardware/boards.txtkönnen Sie den Parameter ändern <board>.upload.usingund alle anderen Boards verwenden weiterhin den Bootloader. Speichern Sie dann einfach die entsprechende Datei und schließen Sie sie (mein Arduino ist gerade abgestürzt und ich hätte fast die Antwort verloren, möglicherweise weil ich dies vergessen habe).


Schritt 3: Laden Sie die Skizze hoch

Sobald Sie die relevante Datei bearbeitet haben, öffnen Sie die Arduino IDE erneut und laden Sie die Skizze wie gewohnt hoch. Wenn Sie gerade bearbeitet ./hardware/boards.txthaben, hat nur dieses bestimmte Board keinen Bootloader, aber wenn Sie bearbeitet haben, haben preferences.txtalle Boards keinen Bootloader.


Schritt 4: Ersetzen Sie den Bootloader

Wenn Sie den Bootloader wieder auf Ihren Boards haben möchten (aus welchen Gründen auch immer), dann entfernen Sie zuerst entweder den <board>.upload.usingParameter oder setzen Sie upload.usingihn zurück auf bootloader. Dann müssen Sie den Bootloader wieder auf die betroffenen Boards brennen - diese Antwort erklärt ziemlich gut eine Methode, und es gibt eine einfachere Methode, den Arduino-Bootloader nur mit nur einem ISP hochzuladen (den Sie von früher haben sollten). auf der offiziellen Seite hier .

Ich glaube, ich war nicht klar, ich habe die Frage bearbeitet, um dies deutlich zu machen: Ich wollte die IDE mehr oder weniger ganz verwerfen (was bedeutet, dass Sie eine andere Programmiersprache lernen müssen. Da Sie jedoch bereits eine Antwort gepostet haben, habe ich Ich werde das vielleicht einfach als separate Frage stellen.
@Manishearth Ah, ich werde es bearbeiten, um das widerzuspiegeln, wenn Sie möchten. Andererseits könnten wir noch mehr Fragen gebrauchen ...
Ich frage noch einen, das wird zu weit gefasst, wenn ich das reinfüge.
@Manisharth Okay :)