Verwandeln Sie Arduino in einen vollwertigen AVRISP-Programmierer

  • Tutorial
Bild

Ich begrüße alle Benutzer des Habr , insbesondere diejenigen, die unter dem Arduino- Thema leiden , so wie ich.

Ich wurde schon lange gefragt - ist es möglich, Hex-Dateien mit Arduino zu flashen? Sicherungen wechseln? Firmware lesen? Und das alles ... Die Antwort lautet ja, und heute werde ich Ihnen sagen, wie ich es mache.


(Dieses Video dupliziert die folgenden Informationen.)

Arduino ist für mich ein großartiger Start für Anfänger, aber Sie müssen weiter wachsen, die Welt der Mikrocontroller ist wunderschön und bietet großartige Möglichkeiten, aber leider ist Arduino ein ziemlich engstirniger Bereich.

Ein kleiner Hintergrund:
Eines schönen Tages stieß ich auf ein hervorragendes Projekt für ATtiny13, aber leider hat der Autor nur eine Hex-Datei und eine Schaltung in das Netzwerk hochgeladen, und natürlich konnte ich es nicht mit Hardware versuchen. Diese Frage quälte mich immer mehr, und dann stieß ich versehentlich auf ein Video im Netzwerk, in dem der Autor behauptete, er habe mit Arduino einen anderen Mikrocontroller geflasht, der nur eine Hex-Datei und natürlich die Schaltung habe. Er hat mich dazu aufgefordert - benutze SinaProg, aber mit Arduino-Dateien ...

Googeln auf SinaProg habe ich heruntergeladenSinaProg 2.1.1.RUS , aber es weigerte sich, mit Arduino zu arbeiten, also warf ich ein paar Dateien von der Arduino IDE in den Ordner SinaProg 2.1.1 \ data \ und alles funktionierte.

Lassen Sie uns einen kurzen Blick auf die Funktionen der Software werfen: Wählen Sie

Bild

im Hex- Dateiblock hex oder eep aus (der erste ist die Firmware, der zweite der Inhalt des nichtflüchtigen Speichers).

In dem Bereich, in dem die Schaltfläche ">" angezeigt wird, werden alle Arten von Nachrichten angezeigt , z. B. "OK" oder "FEHLER". Über die Schaltfläche ">" werden die Avrdude- Protokolle geöffnet .

Es gibt Schaltflächen im Flash- Block :

Programm - Schreiben einer Hex-Datei auf einen Mikrocontroller (möglicherweise, wenn eine Hex-Datei ausgewählt ist);
Überprüfen Sie: Überprüfen Sie die Firmware im Mikrocontroller und die Hex-Datei (dh vergleichen Sie sie), ob alles in Ordnung ist. Das Programm meldet "OK".
Lesen - liest die Hex-Datei.

Mit dem EEPROM- Block ist alles ähnlich.

Als nächstes kommt der Device- Block , hier können Sie den gewünschten Mikrocontroller auswählen, hier ist die gesamte Liste der unterstützten (die Liste wurde aus der Device.txt-Datei herausgerissen, die sich im Ordner SinaProg 2.1.1 \ data \ befindet):

Hier sind ein paar davon
Witz, von vielen:

AT90CAN128
AT90CAN32
AT90CAN64
AT90PWM2
AT90PWM2B
AT90PWM3
AT90PWM3B
AT90USB1286
AT90USB1287
AT90USB162
AT90USB646
AT90USB647
AT90USB82
AT90S1200
AT90S2313
AT90S2323
AT90s2333
AT90S2343
AT90s4414
AT90S4433
AT90s4434
AT90S8515
AT90S8535
ATmega103
ATmega128
ATmega1280
die ATmega1281
ATmega1284P
ATmega128RFA1
der ATmega16
ATmega161
ATmega162
ATmega163
ATmega164P
Der ATmega168
ATmega169
ATmega2560
ATmega2561
ATmega32
ATmega324P
ATmega325
ATmega3250
ATmega328P
ATmega329
ATmega3290
ATmega3290P
ATmega329P
ATmega48
ATmega64
ATmega640
ATmega644
ATmega644P
ATmega645
ATmega6450
ATmega649
ATmega6490
ATmega8 Activity Kit Handbuch
ATmega8515
ATmega8535
ATmega88
ATtiny11
ATtiny12
die ATtiny13
ATtiny15
ATtiny22 2343
ATtiny2313
ATtiny24
ATtiny25
ATtiny26
ATtiny261
ATtiny44
ATtiny45
ATtiny461
ATtiny84
ATtiny85
ATtiny861
ATtiny88
ATxmega64A1
ATxmega128A1
ATxmega128A1D
ATxmega192A1
ATxmega256A1
ATxmega64A3
ATxmega128A3
ATxmega192A3
ATxmega256A3
ATxmega256A3B
ATxmega16A4
ATxmega32A4
ATxmega64A4
ATxmega128A4



Wie Sie sehen, gibt es alle gängigen ATmel-Mikrocontroller, insbesondere ATmega328P, ATmega8, ATtiny13, ATtiny2313 und viele andere ... Wenn Sie auf

die Schaltfläche " Suchen" klicken, versucht das Programm, die Signaturen des Mikrocontrollers zu lesen, der mit dem Programmierer verbunden ist. Mit anderen Worten, es sucht nach dem Mikrocontroller . Dann kann er im Informationsblock mit „OK“ oder „ERROR“ antworten, ob alles normal ist oder nicht.

Im Fuses- Block gibt es Voreinstellungen für ATmega8, die bei verschiedenen Frequenzen arbeiten. Sie können diese jedoch leider nur für ATmega8 und ATmega32 zur Fuse.txt-Datei hinzufügen (die sich im Ordner SinaProg 2.1.1 \ data \ befindet).

Es gibt eine Programmtaste - Presets aufzeichnen, siehe obigen Absatz.

Und auch Erweitert - ein schlichter Knopf, nach dem Drücken können Sie ein solches Fenster sehen:

Bild

Gerätesignatur - einige Ziffern, wie ich es verstehe, ist die Kennung des Mikrocontrollers, dementsprechend erkennt das Programm, welche Art von Mikrocontroller wir verwenden.

Der Informationsteil ist alles wie oben.

Die Sicherungen sind etwas niedriger ... wenn sie gekämmt sind, vergessen Sie nicht, sie zuerst mit der Read- Taste zu lesen (um wichtige Sicherungen, z. B. „SPIEN“ oder „RSTDSBL“ , nicht absichtlich zu ändern ), Sicherungen zu schreiben - die Write- Taste, die Chip Erase- Taste löscht den Mikrocontroller, etwas Erinnert Sie ungefähr daran, ein USB-Flash-Laufwerk auf einem Computer zu formatieren (die Sicherungen sind jedoch nicht standardmäßig installiert, Sie sollten sie also nicht vergessen).

Ein paar Worte über die Sicherungseinsätze sind wie das Feineinstellen des Mikrocontrollers, dann das Erhöhen der Frequenz, dann das Verringern und das Ein- und Ausschalten der Taktung über die interne RC-Kette Mikrocontroller (um zu locken, dass es nicht mehr funktioniert, ernst) und schon ohne Atmega Fusebit Doctor in keiner Weise.

Hier ist der erste Link von Google für "Fusionsrechner", aber ich warne Sie, stöbern Sie dort in etwas, ohne zu wissen, warum es so ist, und schreiben Sie es dann an den Mikrocontroller. Ich weiß, es führt zu nichts Gutem.

Außerdem hat sich eine Art Informationsblock nicht viel damit befasst. Ich glaube, Sie haben es bereits erraten, auch wenn Sie kein Englisch sprechen.

Der letzte Block des Hauptprogrammfensters ist alsoProgrammierer , hier wird der Typ des Programmierers ausgewählt, wenn Sie Arduino als Programmierer verwenden - setzen Sie alles wie auf meinem Bildschirm, aber nicht COM19, dies ist meins, Sie werden wahrscheinlich einen anderen haben, auf jeden Fall ist es nicht COM1, der erste System, das nur für Programmierer relevant ist, die eine Verbindung zu einem echten COM-Port herstellen, z. B. Gromov Programmer . An einem Laptop befindet sich möglicherweise kein COM-Anschluss, an Computern ist jedoch in der Regel noch ein COM-Anschluss vorhanden, insbesondere bei älteren Computern. Sie können einen anderen Programmierer, zum Beispiel USBASP , verwenden. Vergessen Sie jedoch nicht, diesen in der Liste auszuwählen. Die Geschwindigkeit dafür stelle ich wie im Fall von AVRISP ein.

Liste der unterstützten Programmierer:

Es wird nicht genug sein
Gromov
USBtiny
ALF
Arduino
AT ISP
AVR109
AVR910
AVR911
AVRISP
AVRISP 2
AVRISP mkII
AVRISP v2
Bascom
Blaster
BSD
Schmetterling
C2N232I
DAPA
DASA
DASA 3
Dragon_DW
Dragon_HVSP
Dragon_ISP
Dragon_JTAG
Dragon_PP
DT006
ERE-ISP-AVR
Frank-STK200
Futurlec
JTAG 1
JTAG 1Slow
JTAG 2Slow
JTAG 2
JTAG 2Fast
JTAG 2ISP
JTAG 2dW
JTAG mkI
JTAG mkII
MIB510
pAVR
Picoweb
Pony-STK200
Ponyser
SI Prog
SP12
STK200
STK500
STK500 HVSP
STK500 PP
STK500 v1
STK500 v2
STK600
STK600 HVSP
STK600 PP
USBasp
Xil



Persönlich habe ich nur auf den Programmierern AVRISP (Arduino mit der Stickskizze ArduinoISP) und USBasp auf zwei Mikrocontrollern getestet - ATmega8 und ATtiny13.

Um mit Arduino Sicherungen nähen / lesen / ändern / einen Mikrocontroller ausschalten zu können, müssen Sie zuerst die ArduinoISP-Skizze flashen und alles wie hier beschrieben verbinden:

ATtiny13-Firmware und Programmierung mit Arduino .

Kurz gesagt, dann verbinden wir die Pins Reset, MOSI, MISO, SCK des Mikrocontrollers, mit denen wir die Firmware flashen / lesen / die Sicherungen austauschen, wie in der Skizze in den Kommentaren angegeben:

...
// pin name:    not-mega:         mega(1280 and 2560)
// slave reset: 10:               53 
// MOSI:        11:               51 
// MISO:        12:               50 
// SCK:         13:               52 
...


Hier ist ein Beispiel für die Verbindung mit einem ATmega8-Arduino:

Bild

Nun, analog ... Wir suchen eine Pin-Karte, zum Beispiel im Datenblatt (technische Dokumentation auf MK) des Mikrocontrollers, an dem wir interessiert sind, hier ist zum Beispiel der erste Link von Google auf die Anfrage "ATmega8 pdf".

Okay, ich werde nicht mehr quälen, hier ist ein Link zum Programm mit Dateien aus der Arduino IDE .

Link zum Thread im russischsprachigen Forum Arduino ;

Fusionsrechner ;

ATtiny13 Firmware und Programmierung mit Arduino ;

Alle meine Publikationen .

PS Ich hatte so, dass ATtiny13 aufhörte zu blinken und versuchte es zu programmieren. Nachdem ich versucht hatte, es mit einer Frequenz von 128 kHz laufen zu lassen, habe ich irgendwo einen so leicht modifizierten ArduinoISP-Code ausgegraben Das führt dazu, dass die Firmware / das Wechseln der Sicherungen um ein Vielfaches langsamer vonstatten geht und andere Magie möglicherweise nicht richtig verstanden wird.

Jetzt auch beliebt: