Inhaltsverzeichnis:

EXtreme Burner für die Programmierung von AVR-Mikrocontrollern verwenden - Gunook
EXtreme Burner für die Programmierung von AVR-Mikrocontrollern verwenden - Gunook

Video: EXtreme Burner für die Programmierung von AVR-Mikrocontrollern verwenden - Gunook

Video: EXtreme Burner für die Programmierung von AVR-Mikrocontrollern verwenden - Gunook
Video: Silbermonster Flash-Programmierung 2024, Juli
Anonim
VERWENDUNG EXtreme Brenner für die AVR-Mikrocontroller-Programmierung
VERWENDUNG EXtreme Brenner für die AVR-Mikrocontroller-Programmierung

Alle AVR-Benutzer-Bruderschaften da draußen und diejenigen, die gerade erst in den Stream einsteigen. Einige von Ihnen haben mit PIC-Mikrocontrollern und einige mit ATMEL-AVRs angefangen, dies ist für Sie geschrieben!

Sie haben also ein USBASP gekauft, weil es billig und effektiv ist, das ROM auf Ihrem Atmega-Gerät oder vielleicht der ATTINY-Reihe zu flashen. Diese sind für unter 5$ erhältlich, als chinesische Klone des Open Source USB-ASP ! AVRdude ist die Software, um sie zu programmieren.

Sie wissen zweifellos, wie man mit Atmel Studio eine Hex-Datei generiert (ich verwende immer noch AVR Studio v4.19 anstelle des neuesten v7, weil es auf meinem leichten Single-Core-CPU-Laptop schneller und schneller ist) / Netbook und WINAVR installieren, wenn Sie dies lesen. Alles, was in DotNet geschrieben wird, läuft LANGSAM! und die neueren Versionen sind so konzipiert, dass Ihr Laptop wie eine Schildkröte läuft! Sie können Studio v4.19, die beste Version von Studio von ATMEL für AVR-Mikrocontroller, verwenden, auf Version 7 umsteigen, wenn Sie sie für die späteren Chips wirklich benötigen, und Ihre Zeit am Laptop produktiver gestalten, indem Sie arbeiten statt warten! Dies ist, was ich empfehle.

Eine typische AVR-Dude-Befehlszeile zum Programmieren eines Atmega mit einer Hex-Datei läuft wie folgt ab:

AUF FLASH SCHREIBEN:AVRdude -s -c avrisp -p t44 -P usb -U "flash:w:D:\ARDUINO\pwmeg1.hex:a"

hier ist pwmeg1.hex die Intel-Hex-Datei, die in die "Ziel-MCU" im Mikrocontroller Lingo "gebrannt" oder "geflasht" werden soll

Das ist ein Bissen, den man sich merken sollte! Sie könnten eine Batch-Datei schreiben und in der Befehlszeile in Windows ausführen, indem Sie sie write_flash.bat nennen. Ähnlich zum Lesen der Sicherungen, noch ein Bissen einer Zeile, an die Sie sich erinnern sollten! Es wird langweilig.

for read flash + eeprom:AVRdude -s -c avrisp -p t44 -P usb -U "flash:r:D:\ARDUINO\pwmeg1.hex:i" -U "eeprom:r::i"

Die Lösung besteht darin, eines der benutzerfreundlichen GUI-Frontend-Tools für AVRdude wie Bitburner, Khazama-Programmierer zu verwenden, die in ihren Werten fast ähnlich sind. eXtreme-Brenner. Ich habe das kostenlose Tool eXtreme Burner oft verwendet, es ist vielseitig und zuverlässig, und dieses Tutorial handelt davon. Es kann nicht nur Ihre Hex-Datei / Ihr Programm auf die MPU flashen, indem es Befehle verwendet, die im Hintergrund an AVRdude ausgegeben werden, es kann Ihnen auch helfen, die SICHERUNGEN einzustellen, was ein kompliziertes Thema ist, das Anfänger in der AVR-Programmierung oft verwirrt. Hier ist ein Link zu einem hervorragenden Tutorial zum Thema FUSES, das Sie durchgehen oder auffrischen können. Ein Wort zur Vorsicht: ATMEL verwendet den Zustand '1' eines FUSE-Bits, um seinen 'Standard'-Zustand (nicht gesetzter oder unprogrammierter Zustand) anzuzeigen, und '0', um seinen programmierten oder gesetzten oder aktivierten Zustand anzuzeigen! Dies ist genau das Gegenteil von dem, was Sie mit FUSE-Bits in einem PIC-Mikrocontroller tun. Seien Sie vorsichtig, wenn Sie die Taktsicherungsbits ändern, z. Seien Sie auch vorsichtig, wenn Sie den Zustand kritischer Fuse-Bits wie SPIEN und RESET DISABLE ändern (diese sollten immer auf SPIEN = 0 und RESET DISABLE = 1 gesetzt werden, wenn Sie weiterhin mit der MCU mit Ihrem USB-ASP im ISP / SPI-Modus kommunizieren möchten Wenn Sie dies vermasseln, benötigen Sie einen Hochspannungs-Programmierer, um Ihren AVR "auszubauen".

Wenn Sie sich fragen "was zum Teufel sind Sicherungen" und "was machen sie"? Lesen Sie dieses ausgezeichnete Schreiben:

Ein weiteres verwandtes Thema ist, wie Sie die Taktfrequenz Ihrer AVR-MPU einstellen, die Geschwindigkeiten von 1 MHz bis 16 oder 20 MHz erreichen kann. Es gibt auch eine spezielle Niederfrequenzkristalloption mit 31,25 kHz, die Ihren AVR bei richtiger Auslegung 3 Monate lang ohne AA-Batterien betreiben kann!

Beide, Clock Fuse Bits (sowohl Frequenz als auch Typ der Clock interner RC/externer Quarz und andere Fuse Bits) können über die Registerkarte FUSES in eXtreme Burner eingestellt werden. Zuerst zeigen wir Ihnen, wie Sie das ROM lesen und dann die Hex-Datei mit eXtreme Burner flashen. Natürlich können Sie auch die Online-AVR-Sicherungs-Websites verwenden, aber die von mir erläuterte Option kann auch verwendet werden, wenn Sie offline sind, und zwar überall.

Schritt 1: Vorzunehmende Einstellungen:

Zu machende Einstellungen
Zu machende Einstellungen
Zu machende Einstellungen
Zu machende Einstellungen
Zu machende Einstellungen
Zu machende Einstellungen
Zu machende Einstellungen
Zu machende Einstellungen

Die Bilder zeigen die EINSTELLUNGEN, die vor Beginn der Arbeit vorgenommen werden müssen. (es ist nur einmal). Im Untermenüpunkt 'Hardwareeinstellungen' wählen wir 375Hz, da die meisten MCUs von ATMEL werkseitig auf die Standardeinstellungen von 1 MHz CPU-Takt auf dem internen RC-Oszillator eingestellt sind. Die ISP-Geschwindigkeit beträgt ein Viertel von F_cpu. Das gibt uns 375 Khz nächste Geschwindigkeit, Sie könnten auch zu einer niedrigeren Geschwindigkeit gehen, es wird keinen großen Unterschied machen. Sie könnten versuchen, eine Verbindung herzustellen und dies auf den Standardeinstellungen zu belassen, und ein 'Alles lesen' ausgeben. Wenn dies fehlschlägt, können Sie hierher kommen und die Geschwindigkeit ändern, um sie zu verringern.

Denn wenn Sie keine Verbindung herstellen können (die Meldung im Programmierfenster "kann nicht mit dem Chip kommunizieren, kann kein SCK" angezeigt werden, bedeutet das, dass das Taktsignal von Ihrem PC nicht mit Ihrem Chip synchronisiert werden konnte, den Sie zu lesen versuchen, oder Programm). Verbinden ist also die Basis von allem! Es ist wie "ERSTER KONTAKT", wie man es in den Spielberg-Filmen sieht. Wenn Ihnen dies gelingt, können Sie die Taktrate Ihrer MCU jederzeit durch entsprechende Programmierung der Sicherungen erhöhen und später mit einer höheren Geschwindigkeit verbinden.

Gehen Sie also die hier bereitgestellten Snapshots der Hardwareeinstellungen durch und stellen Sie dann auch den Gerätetyp ein (den Chip, den Sie programmieren möchten, seine Modellnummer).

Schritt 2: Einstellen Ihres Gerätetyps

Einstellen Ihres Gerätetyps
Einstellen Ihres Gerätetyps
Einstellen Ihres Gerätetyps
Einstellen Ihres Gerätetyps
Einstellen Ihres Gerätetyps
Einstellen Ihres Gerätetyps

siehe Screenshot, Bild 1, wir haben "ATTINY44A" eingestellt. Dies ist ein 14-poliger Mikrocontroller ohne UART. Ich habe diese vor kurzem verwendet, die SSU-Version. Wenn Sie die Standardversion des Extreme-Brenners installiert haben, sehen Sie Attiny44A nicht in der Dropdown-Liste für die Geräteauswahl, lesen Sie mein anderes anweisbares "Hacking eXtreme Burner".

Ich habe Atmega88PA-AU auch mit eXtreme Burner verwendet, aber in diesem Instructable erwähnen wir überall "Attiny44A". Wie erstellen Sie nun eine Steckbrettversion des winzigen quadratischen 7-mm-SMD-Chips und testen sie mit Ihren Programmen? (Siehe die Bilder, die die Chipgröße angeben), Siehe dazu meine andere Anleitung, in der ich demonstriere, wie man Breadboard-geeignete Plug-in-Module mit dem Attiny44A-SSU und ATmega88PA-AU herstellt

Sobald Sie diese Technik gelernt haben, können Sie jeden Chip ausprobieren, an dem Sie basteln möchten, sei es im SMD- oder DIL-Gehäuse. Zum Beispiel habe ich sogar einen SMD-Chip in einem 32-Pin-Quad-Gehäuse mit 0,8 mm Pinabstand (Atmega88A) auf ähnliche Weise verwendet!

. Oder Sie könnten einfach die 28-Pin-DIL-Version des Attiny44A für dieses Instructable oder jeden anderen AVR verwenden, den Sie gerade verwenden, um eXtreme Burner für die AVR-Programmierung auszuprobieren.

Schritt 3: READ ALL oder READ FLASH ausgeben

READ ALL oder READ FLASH ausgeben
READ ALL oder READ FLASH ausgeben
READ ALL oder READ FLASH ausgeben
READ ALL oder READ FLASH ausgeben

Verbinden Sie Ihren USBasp mit dem USB-Port Ihres Laptops, ich gehe davon aus, dass Sie bereits die richtigen Treiber geladen haben, die mit Ihrem Programmierer geliefert wurden und dass er korrekt erkannt wird. Es sollte unter 'Geräte und Drucker' im Windows-Startmenü erscheinen, wenn es so wäre, sobald es an den USB-Port angeschlossen ist! Verbinden Sie Ihren Zielchip auf seiner Platine mit Ihrem USBasp (relevante SDI//ISP-Pins mit 6-Pin- oder 10-Pin-Kabel müssen zwischen den beiden angeschlossen werden, nämlich die Pins: MOSI, RESET, MISO, SCK, Vcc, Ground).

Geben Sie READ ALL aus dem MENÜ von Xtreme Burner aus. Siehe Bilder und Nachrichten, die wir erhalten haben. Anfänglich zeigte Ihr Bildschirm 'FF' für ROM im ersten TAB des Brenners, nachdem alles gelesen wurde, wird der tatsächliche ROM-Inhalt auf dem Chip angezeigt. Wenn Sie einen fabrikneuen Chip oder einen gelöschten Chip verwendet haben, sehen Sie nach einem "Read All" FF im Inhalt. Ein unprogrammierter Chip zeigt 'FF' in seinem Speicher an, ebenso ein EEPROM (zweite Registerkarte im Programmierer), die letzte Registerkarte zeigt die SICHERUNGEN.

Nach einem READ ALL würden die 3 Registerkarten die korrekten Informationen anzeigen, die im Chip enthalten sind. Davor war dies nicht der Fall. Geben Sie also zuerst Alles lesen aus, sobald Sie alles angeschlossen haben.

Schritt 4: In Flash schreiben (Ihre Hex-Datei wurde in das ROM auf dem Chip geflasht)

In Flash schreiben (Ihre Hex-Datei wurde in das ROM auf dem Chip geflasht)
In Flash schreiben (Ihre Hex-Datei wurde in das ROM auf dem Chip geflasht)
In Flash schreiben (Ihre Hex-Datei wurde in das ROM auf dem Chip geflasht)
In Flash schreiben (Ihre Hex-Datei wurde in das ROM auf dem Chip geflasht)
In Flash schreiben (Ihre Hex-Datei wurde in das ROM auf dem Chip geflasht)
In Flash schreiben (Ihre Hex-Datei wurde in das ROM auf dem Chip geflasht)

Wählen Sie eine Datei mit dem Durchsuchen-Dialog aus, der sich öffnet, wenn Sie auf das erste Symbol in der MENÜ-Leiste oben klicken. Wir haben eine Datei ausgewählt, wie Sie im Bild sehen. Sobald Sie die Hex-Datei (Intel-Hex-Format) ausgewählt haben, änderte sich die Menüleiste, die "keine Datei geladen" anzeigte, in den von Ihnen geladenen Dateinamen.

Geben Sie nun einen Write Flash aus dem Menü der Software aus. Die Nachrichten zeigen Ihnen, was passiert. siehe die Bilder.

Nach einem erfolgreichen Schreibvorgang würden Sie das 'FF' sehen, das eine frische oder gelöschte ROM-Änderung an dem, was Ihr Programm oder Ihre Hex-Datei enthält, markiert. Die Größe oder Anzahl der Bytes, die Ihre Datei im ROM belegt, ist Ihnen auch auf diesem Bildschirm bekannt, der Ihnen den tatsächlichen ROM-Inhalt Ihres Zielchips anzeigt, den Sie gerade geflasht haben.

Der Verifizierungsschritt erfolgt auch durch das Lesen des Chips, wie in den EINSTELLUNGEN, die wir im ersten Schritt vorgenommen haben. Dies ist in den Meldungen zu sehen, dass die Verifizierung ebenfalls erfolgreich war.

Schritt 5: SICHERUNGEN: Wie man sie in EXtreme Burner einstellt

SICHERUNGEN: Wie man sie in EXtreme Burner einstellt
SICHERUNGEN: Wie man sie in EXtreme Burner einstellt

Wenn Sie READ ALL ausgegeben haben, wurden die Sicherungen vom Chip gelesen. Das ist das ERSTE gezeigte Bild fuses.jpg.

Jetzt müssen Sie sie vielleicht in etwas anderes ändern. Die Sicherungen bestehen aus 4 Kästchen im letzten TAB auf Ihrem eXtreme Burner Bildschirm. Nämlich LOW FUSE BYTE, HIGH FUSE BYTE, EXTENDED FUSE BYTE, LOCK FUSE BYTE und CALIBRATION BYTE. in dieser Reihenfolge werden sie angezeigt.

Sie könnten einfach einen ONLINE-Sicherungsrechner verwenden und diese ausfüllen. wie den bei

eleccelerator.com/fusecalc/fusecalc.php?

Oder Sie können den eXtreme-Brenner verwenden, um dies für Sie zu tun. jederzeit offline selbst: Wählen Sie aus der Dropdown-Liste, die angezeigt wird, wenn Sie auf die Schaltfläche DETAILS klicken, die sich unter jeder Art von Sicherungsbyte befindet. Doppelklicken Sie einfach auf eine beliebige Zeile im Bildschirm DETAILS und beobachten Sie, wie sie von SET zu CLEARED wechselt und wechseln Sie ihren Status mit Ihrem Mausklick auf jede Zeile. Das Fuse Byte im Kästchen darüber würde sich entsprechend ändern.

Wenn Sie sich fragen "was zum Teufel sind Sicherungen" und "was machen sie"? Lesen Sie diesen hervorragenden Bericht:

www.instructables.com/id/Avr-fuse-basics-Running-an-avr-with-an-external-cl/

Schritt 6: Sicherungen mit dem EXtreme Brennersicherungsrechner einstellen

Einstellen von Sicherungen mit dem EXtreme Brennersicherungsrechner
Einstellen von Sicherungen mit dem EXtreme Brennersicherungsrechner
Einstellen von Sicherungen mit dem EXtreme Brennersicherungsrechner
Einstellen von Sicherungen mit dem EXtreme Brennersicherungsrechner
Einstellen von Sicherungen mit dem EXtreme Brennersicherungsrechner
Einstellen von Sicherungen mit dem EXtreme Brennersicherungsrechner

Sie können den Detailbildschirm sehen, der für jedes der Sicherungsbytes (LOW, HIGH, EXTENDED, LOCK und Calibration) angezeigt wird. Das Kalibrierungsbyte sollte unverändert bleiben, da es das Kalibrierungsdatenbyte im AVR anzeigt, das für den internen RC-Oszillator gilt. Das LOCK-Byte ist normalerweise nur FF (nicht in den Bildern oben beschrieben), da Sie das Flash oder EEPROM während der Lernphase nicht sperren würden. Sie würden nur die LOW-, HIGH- und EXTENDED-Bytes ändern. Vorsichtig sein !

Wenn Sie das SPIEN-Bit auf 1 ändern (unprogrammierter Zustand ist 1 in AVR-Mikrocontrollern), können Sie nicht mit Ihrem Chip über USBASP oder einen Programmierer kommunizieren! Der Standardzustand wird auch in Ihrem Bildschirm für jedes Fuse-Bit angezeigt. Dies weist Sie darauf hin, dass der SPIEN-Standard immer 0 (programmierter Zustand) ist, damit Sie den SPI-Modus für die ISP-Programmierung verwenden können. Debug-Wire oder DW-Bit bleibt immer auf 1 (unprogrammiert), wenn SPIEN auf 0 gesetzt ist. Dies ist auch der Standardzustand. Außerdem sollte in Extended Fuse Bits 'Self Programming Enable' auf '1' (unprogrammiert) stehen, wenn Sie Ihren USB-ASP zum Programmieren Ihres Zielchips verwenden (nicht mit Bootloader-ROM wie in ARDUINO).

Sie können die CLOCK-Bits (Anzahl 3) ändern, um internen RC oder externen Quarz auszuwählen. Normalerweise überlasse ich es dem internen RC, wodurch Sie 2 zusätzliche Pins erhalten, die das Freigeben des externen Quarzes als PORT-Pins für Ihre AVR-Projekte erfordern. Normalerweise wird ein externer Quarz benötigt, wenn Sie in Ihrem Projekt ein hochpräzises Timing benötigen. Für Lernende reicht internes RC.

Normalerweise würden Sie, sobald Sie sich auf eine Sicherungskombination festgelegt haben, diese nicht mehr ändern. Es wäre einmalig. Sie würden nur das ROM oder manchmal auch das EEPROM flashen. Für das Flashen des EEPROMs wird eine separate.eep-Datei von Ihrem WINAVR / ATMEL-Studio generiert, wenn Ihr Programm überhaupt das EEPROM zum Speichern von Daten verwendet. Andernfalls bleibt das EEPROM ungenutzt und wird mit den 'FF'-Daten gefüllt, die den 'NO DATA state' des EEPROM anzeigen.

Schritt 7: Endwert der Sicherungsbits

Endwert der Sicherungsbits
Endwert der Sicherungsbits

Nachdem Sie alle Fuse-Bits eingestellt und die von Ihnen verwendeten DETAILS-Boxen geschlossen haben, können Sie den vom Programm berechneten Wert der Fuse-Bits sehen (siehe Bild). Es bleibt nur noch, über das Menü ein "Schreibsicherungen" auszugeben. Und schauen Sie sich die Nachrichten an, die einen erfolgreichen Schreibvorgang melden. Später können Sie auch READ ALL aus dem Menü ausgeben und überprüfen, ob die im letzten TAB des Brennerbildschirms gelesenen Sicherungen mit dem übereinstimmen, was Sie auf den Chip schreiben wollten. (Sicherungsüberprüfung).

Sie würden feststellen, dass zu Beginn dieses Instructable, als wir eine LESESICHERUNG gemacht haben, der Bildschirm die gleichen Sicherungswerte anzeigt, die wir hier sehen! Das liegt daran, dass dies die Sicherungen sind, die ich oft verwende und selten ändere, sobald ich sie in meiner MCU eingestellt habe, es sei denn, ich ändere die Frequenz für einige Projekte von 1 MHz auf 4 MHz. Der AVR kann auf maximal 20Mhz eingestellt werden (einige Chips nur bis 16Mhz). Die Frequenz, die Sie für F_cpu einstellen, hängt auch von der Spannung ab, mit der Sie den Chip versorgen! Wenn Ihr Chip beispielsweise von 1,8 V Vcc bis zu 5,5 V Vcc (siehe Datenblatt) arbeitet, würden Sie nicht erwarten, dass Ihr Chip mit 20 MHz läuft, wenn Sie ihn nur mit 1,8 V versorgen! du erwartest zu viel davon! Eine Tabelle im Datenblatt gibt an, bei welcher Spannung die Freq bei welchem Wert ausläuft. Je höher Ihre Frequenz des Chipbetriebs, desto mehr Wärme und mehr Strom verbraucht er. Stellen Sie sich die Frequenz wie den Herzschlag eines Tieres vor. Ein Kolibri mit einer hohen Herzfrequenz hätte eine höhere Energieverbrennung pro Minute als ein Wal oder Elefant mit einem viel niedrigeren Herzschlag! Aber dann kann es viel mehr in kürzerer Zeit. Die MCU ist genau so.

Schritt 8: Fertig

Jetzt haben Sie alle Schritte im eXtreme-Brenner abgeschlossen, Sie haben das ROM eines Chips gelesen, eine HEX-Datei geöffnet und auf den Chip geflasht und überprüft, ob der Flash in Ordnung war, Sie haben auch gelernt, wie man die Sicherungen setzt und auf den Chip flasht.

Wenn Sie Fragen haben, beantworte ich gerne das Tutorial oder ändere es, um es klarer zu machen.

Bei einigen Chips fehlt möglicherweise der Eintrag in der Chipauswahl-Dropdown-Liste im Menü. Oder es können Schreibfehler auftreten und Fehler überprüfen. In solchen Fällen lesen Sie bitte meine anderen Instructable "Hacking eXtreme Burner", um das Problem zu lösen.

Viel Spaß beim Programmieren.

Empfohlen: