Inhaltsverzeichnis:
Video: So programmieren Sie einen AVR (Arduino) mit einem anderen Arduino - Gunook
2025 Autor: John Day | [email protected]. Zuletzt bearbeitet: 2025-01-13 06:56
Dieses instructables ist nützlich, wenn:
* Sie haben Ihr Arduino mit atmega168 und Sie haben ein atmega328 in Ihrem lokalen Elektronikgeschäft gekauft. Es hat keinen Arduino-Bootloader * Sie möchten ein Projekt erstellen, das kein Arduino verwendet - nur einen normalen AVR-Chip (wie den USBTinyISP) - Sie haben einen sauberen attiny2313 / attiny48 usw., auf den Sie Firmware brennen möchten. Normalerweise müssten Sie einen ISP (In System Programmer) wie USBTinyISP haben, um Ihren neuen Chip zu programmieren. Mit dem Arduino können Sie ihm dank einer großartigen Arbeit von Randall Bohn beibringen, ein Programmierer zu sein. Er schuf Mega-ISP - eine Arduino-Skizze, die wie ein Programmierer funktioniert.
Schritt 1: Was brauchen Sie?
* ein funktionierendes Arduino (oder ein Klon - ich verwende das BBB - BareBonesBoard und ein RBBB - RealBareBonesBoard von ModernDevices) * ein Chip, den du programmieren möchtest (getestet mit atmega8, atmega168, atmega368, attiny2313, attiny13) * ein Steckbrett oder eine Platine mit ISP-Header * 3 LEDs + 3 Widerstände * Steckbrettdrähte
Schritt 2: Erstellen des Mega-ISP-Programmierers auf einem Steckbrett
Es gibt zwei Möglichkeiten, Ihren Arduino anzuschließen, um einen Chip zu programmieren.
Sie können Ihren AVR-Chip an ein Steckbrett anschließen und 5V und GND an die entsprechenden Pins anschließen (siehe Datenblatt!) + einen Pullup-Widerstand zum Zurücksetzen und Verdrahten der Pins von Ihrem Arduino zum Chip. Dies sind die Zeilen auf Arduino und ihre Funktion 13 - SCK 12 - MISO 11 - MOSI 10 - RST (Reset) Die Pinbelegung für den ISP-Header befindet sich auf dem dritten Bild. Es gibt 3 LEDs, die den Status des Programmierers anzeigen. Pin 9 - blaue LED - es ist der Herzschlag des Programmierers. Pin 8 - rote LED - zeigt einen Fehler an Pin 7 - grüne LED - zeigt an, dass die Programmierung stattfindet (ich war faul und habe die Farben in meinem Setup nicht angepasst) Hier sind die Zeichnungen, die in Fritzing erstellt wurden MEGA-ISP-Schild. Yaroslav Osadchyy entwarf den Schild in Adler. Sie können die Eagle-Dateien auf seiner Website abrufen:
Schritt 3: Hochladen der Skizze
Laden Sie die Skizze vom Mega-ISP-Google-Code herunter (avrisp.03.zip zum Zeitpunkt des Schreibens). Entpacken Sie es und führen Sie arduino ide aus und öffnen Sie avrasp.pde. Laden Sie es auf Ihr Arduino-Board hoch. Die Heartbeat-LED sollte anfangen zu schlagen.
Schritt 4: Verwendung mit Avrdude
Um mit avrdude (und allen GUIs, die es verwenden) zu verwenden, müssen Sie den Programmierer 'avrisp' auswählen. die sicherste Bitrate ist 19200.
Um Ihren neuen atmega168 von der Kommandozeile aus zu testen, versuchen Sie: $ avrdude -p m168 -P /dev/ttyUSB0 -c avrisp -b 19200 /dev/USB0 ist der Port, den Arduino mit meiner Linux-Box verbunden ist (Ihrer kann com5) sein. Dies kann in arduino IDE unter Tools -> Serial Port überprüft werden. Sie sollten Folgendes erhalten: [kabturek@hal-9000 ~]# avrdude -p m168 -P /dev/ttyUSB0 -c avrisp -b 19200 avrdude: AVR-Gerät initialisiert und bereit, Anweisungen anzunehmen Lesen | ################################################ | 100% 0.13s avrdude: Gerätesignatur = 0x1e9406 avrdude: Safemode: Sicherungen OK avrdude erledigt. Dankeschön. Das heißt, alles ist in Ordnung. Wenn Sie Fehler erhalten, überprüfen Sie den letzten Schritt.
Schritt 5: Brennen der USBtinyISP-Firmware auf einen Attiny2313
Der USBTinyISP ist ein großartiger Programmierer von LadyAda, der wirklich günstig ist - 22 $. Ich hatte einen Ersatz attiny2313 und einige Teile, also beschloss ich, selbst einen zu machen. Wenn Sie keine Erfahrung in der Herstellung von PCB haben, kaufen Sie das Kit, da es von höherer Qualität ist, als Sie selbst herstellen können:). Kaufen Sie zumindest die Platine, wenn Sie eine bauen möchten. Sie können es von Adafruit bekommen. Verbinden Sie den ATtiny2313Im letzten Bild sehen Sie den attiny2313 mit den für ISP verwendeten Pins in rot. Das Bild stammt aus dem LadyAda avr-Tutorial. Brennen der Firmware: Entpacken Sie die USBTinyISP-Firmware. Gehen Sie in das spi-Verzeichnis und führen Sie $ avrdude -p pt2313 -P /dev/ttyUSB0 -c avrasp -b 19200 aus, um zu überprüfen, ob mit dem Chip alles in Ordnung ist. Stellen Sie nun die Fuses ein: $ avrdude -P /dev/ttyUSB0 -c avrisp -b 19200 -pt2313 -U hfuse:w:0xdf:m -U lfuse:w:0xef:m Jetzt sollten Sie den externen 12-MHz-Oszillator an den Chip anschließen. Und brenne die Firmware: $ avrdude -B 1 -pt2313 -U flash:w:main.hex -P /dev/ttyUSB0 -c avrisp -b 19200 Voila. Ihr attiny2313 verfügt über die USBTinyISP-Firmware.
Schritt 6: Brennen des Arduino Bootloaders
ConnectingIch habe ein bisschen geschummelt, weil ich ein RBBB verwendet habe, um die Verbindungen zu vereinfachen. Das Schema ist auf Bild #2. Wenn Sie 2 Arduinos verwenden, verwenden Sie das Bild # 3 und verbinden Sie den ISP-Pin mit dem ICSP 2x3-Header auf dem zweiten (Slave) Arduino. Schließen Sie nur die USB-Stromversorgung an die erste Platine an. Der GUI-Weg Dies ist ein wenig knifflig, da Sie nicht einfach Tools -> Bootloader brennen -> mit AVR ISP verwenden können, da die Standardgeschwindigkeit für Mega-ISP zu groß ist. Suchen Sie avrdude.conf, die mit arduino IDE geliefert wird (in arduino/hardware/tools/avrdude.conf) und ändern Sie die Grenze für Avrisp-Programmierer von 115200 auf 19200 (um Zeile 312). Suchen und ändern Sie in avrdude.conf-Programmierer-ID = "avrisp"; desc = "Atmel AVR ISP"; Baudrate = 115200; # Standard ist 115200 type = stk500;; an: Programmierer-ID = "avrisp"; desc = "Atmel AVR ISP"; Baudrate = 19200; # Standard ist 115200 type = stk500;; Jetzt können Sie Tools -> Burn Bootloader -> w/ AVR ISP verwenden (nachdem Sie das richtige Board aus dem Tools-Menü ausgewählt haben)Commanline Sie können auch die Befehlszeile verwenden: Edit arduino/hardware/bootloaders/atmega/Makefile and change ISPTOOL/PORT /SPEED an: # Geben Sie die Parameter für das avrdude-ISP-Tool ein ISPTOOL = avrisp ISPPORT = /dev/ttyUSB0 ISPSPEED = -b 19200 nein Sie können $ make diecimila_isp schreiben, um Sicherungen und den Bootloader zu brennen. Test Verbinden Sie nun Ihr neues Arduino mit USB und verbrenne den Blinky!
Schritt 7: Fehlerbehebung
Avrdude-Fehler: avrdude: ser_open(): Gerät "/dev/ttyUSB0" kann nicht geöffnet werden: Keine solche Datei oder kein Verzeichnis Sie haben den falschen Port (-P) angegeben oder Ihr Arduino ist nicht verbunden. Verbindung überprüfen avrdude: Gerätesignatur = 0x000000 avrdude: Huch! Ungültige Gerätesignatur. Überprüfen Sie die Verbindungen und versuchen Sie es erneut, oder verwenden Sie -F, um diese Überprüfung zu überschreiben. Dies ist eine Art allgemeiner Fehler. Ihr Chip wird nicht erkannt. Überprüfen Sie die Verbindung auf der Platine (GND / 5V an Pins angeschlossen?) Sie erhalten diesen Fehler, wenn Ihr Chip für die Verwendung eines externen Oszillators konfiguriert ist und er nicht funktioniert (es gibt keinen oder er schwingt nicht richtig - 22pf-Kappen fehlen ?)