Inhaltsverzeichnis:

Programmierung des ATTiny85, ATTiny84 und ATMega328P: Arduino als ISP - Gunook
Programmierung des ATTiny85, ATTiny84 und ATMega328P: Arduino als ISP - Gunook

Video: Programmierung des ATTiny85, ATTiny84 und ATMega328P: Arduino als ISP - Gunook

Video: Programmierung des ATTiny85, ATTiny84 und ATMega328P: Arduino als ISP - Gunook
Video: ATtiny ISP/Programmer Arduino Shield 2024, Juli
Anonim
Programmierung des ATTiny85, ATTiny84 und ATMega328P: Arduino als ISP
Programmierung des ATTiny85, ATTiny84 und ATMega328P: Arduino als ISP
Programmierung des ATTiny85, ATTiny84 und ATMega328P: Arduino als ISP
Programmierung des ATTiny85, ATTiny84 und ATMega328P: Arduino als ISP

Vorwort

Ich habe vor kurzem ein paar ESP8266-basierte IoT-Projekte entwickelt und festgestellt, dass der Core-Prozessor Schwierigkeiten hatte, alle Aufgaben auszuführen, die ich benötigte Auf diese Weise wird der ESP8266 frei, um seiner Aufgabe als IoT-Gerät nachzukommen.

Da ich mein Projekt einem möglichst breiten Publikum zugänglich machen wollte, entschied ich mich, die Arduino IDE als Entwicklungsplattform der Wahl zu verwenden, da sie eine so breit unterstützte Community hat.

Designeinschränkungen

Um eine angemessene Streuung von Zielgeräten bereitzustellen, die die Auswahl eines geeigneten Mikrocontrollers für die jeweilige Anwendung ermöglicht, habe ich mich für die folgenden Atmel-Teile entschieden; ATMega328P, ATTiny84 und ATTiny85. Um die Komplexität des notwendigen Programmierers zu begrenzen, habe ich die Wahl des Takts auf intern für alle Geräte und auf 16 MHz extern für nur den ATMega328P und ATTiny84 beschränkt.

Was folgt, ist eine Sammlung von Hinweisen zur Programmierung mit dem Arduino und eine Beschreibung, wie ich einen einfachen Arduino Uno-basierten Programmierer für diese Geräte zusammenstelle (Bilder oben).

Welche Teile brauche ich?

Um den Programmierer zu bauen, benötigen Sie die folgenden Teile

  1. 1 Stück Arduino Uno
  2. 2 von 28-poligen Zero Insertion Force (ZIF) DIP-Buchsen (zur Aufnahme von ATMega328P, ATTiny85, ATTiny84)
  3. 1 von Arduino-Prototyp-Schild (ich habe meinen hier;
  4. 2 aus 5MM LEDs
  5. 2 von 1K Widerständen
  6. 1 von 10K Widerstand
  7. 4 von 22pF Keramikkondensatoren
  8. 2 von 16MHz Quarzen
  9. 3 von 0,1uF Keramikkondensatoren
  10. 1 von 47uF Elektrolytkondensator
  11. 1 von 10uF Elektrolytkondensator
  12. Drahtwickeldraht in verschiedenen Längen.

Welche Software benötige ich?

Arduino-IDE 1.6.9

Welche Fähigkeiten brauche ich?

  1. Kenntnisse der Arduino-IDE
  2. Einige Kenntnisse in Elektronik und Löten
  3. Viel handwerkliches Geschick
  4. Viel Geduld und gutes Sehvermögen

Behandelten Themen

  1. Allgemeine Einführung in die Programmierung von Atmel-Mikrocontrollern
  2. ISP oder Bootloader: Es ist alles ein bisschen verwirrend
  3. Schaltungsübersicht
  4. Einrichten Ihres Programmierers
  5. Verwenden Ihres Arduino ISP-Programmierers
  6. Entwicklung von Code auf Ihrem Zielsystem
  7. Fallstricke
  8. Abschluss
  9. Verwendete Referenzen

Haftungsausschluss

Wie immer verwenden Sie diese Anweisungen auf eigene Gefahr und werden nicht unterstützt

Schritt 1: Allgemeine Einführung in die Programmierung von Atmel-Mikrocontrollern

Allgemeine Einführung in die Programmierung von Atmel-Mikrocontrollern
Allgemeine Einführung in die Programmierung von Atmel-Mikrocontrollern
Allgemeine Einführung in die Programmierung von Atmel-Mikrocontrollern
Allgemeine Einführung in die Programmierung von Atmel-Mikrocontrollern
Allgemeine Einführung in die Programmierung von Atmel-Mikrocontrollern
Allgemeine Einführung in die Programmierung von Atmel-Mikrocontrollern

Für die Programmierung von Atmel-Mikrocontrollern stehen zwei Methoden zur Verfügung;

  1. In der Systemprogrammierung (ISP)
  2. Selbstprogrammierung (über einen Bootloader).

Die erstere Methode (1) programmiert den Mikrocontroller direkt über die SPI-Schnittstelle, nachdem das Gerät zuerst in einen Reset versetzt wurde. Sofern nicht anders angewiesen, wird ein kompiliertes ausführbares Quellprogramm inkrementell in den Codespeicher auf das Gerät geschrieben, von wo es beim Start ausgeführt wird. Es gibt viele ISP-Geräte, die Atmel-Geräte programmieren können, von denen einige sind (Bild 1); AVRISPmkII, Atmel-ICE, Olimex AVR-ISP-MK2, Olimex AVR-ISP500. Bild 2 zeigt, wie das ISP-Gerät mit dem ATMega328P (seltsamerweise mit ICSP gekennzeichnet) auf der Arduino Uno R3-Platine verbunden ist (Bild 3 gibt den ISP-Pin an). Es ist auch möglich, einen Atmel-Mikrocontroller über seine SPI-Schnittstelle mit einem Arduino Uno als ISP zu programmieren (Bild 4), hier wird der Uno verwendet, um einen ATMega328P zu programmieren.

Die letztere Methode (2) verwendet einen kleinen Code-Stub, der als 'Bootloader' bekannt ist und sich permanent im ausführbaren Code-Speicher befindet (normalerweise gesperrt, um ein versehentliches Überschreiben von Bild 5 zu verhindern). Dieser Code wird als erstes beim Einschalten oder Zurücksetzen des Geräts ausgeführt und ermöglicht es dem Mikrocontroller, sich selbst mit neuem Code neu zu programmieren, der über eine seiner Schnittstellen von einer externen Quelle empfangen wird. Die Bootloader-Methode wird von der Arduino IDE verwendet, um Arduinos neu zu programmieren, die als USB-Comm-Port auf dem PC (oder MAC, Linux-Box usw serielle Schnittstelle an den IC Pins 2 und 3 des ATMega328P. Auch das Arduino Uno (mit entferntem ATMega328P-Mikrocontroller) kann verwendet werden, um einen ATMega328P über die Bootloader-Methode zu programmieren, die effektiv als USB-zu-Seriell-Adaptergerät fungiert (Bild 7).

Was ist ein USB-Seriell-Adapter?

Ein USB-zu-Seriell-Adapter ist ein Stück Hardware, das an den USB-Port Ihres PCs angeschlossen wird und wie ein serieller COM-Port aussieht (ein Erbe aus früheren Zeiten, als Computer einen seriellen Kommunikationsstandard namens EIA-232, V24 oder RS232 verwendeten). Senden und empfangen Sie serielle Daten auf den gleichen elektrischen Ebenen des Mikrocontrollers. Wenn Sie Tools -> Port -> COMx von der Arduino IDE auswählen, verbinden Sie Ihren PC mit Ihrem Arduino.

Ein solches Gerät wird manchmal als FTDI (Bild 8, eigentlich ein Markenname) oder CH340G usw. bezeichnet. USB zu seriell auf dem Arduino uno wird über einen ATMega16U2-MU(R) IC ZU4 wie im Arduino-Schema erreicht unter.

Aus Gründen der Übersichtlichkeit identifiziert Bild 9 die beiden Atmel-Geräte und ihre jeweiligen ISP-Anschlüsse auf dem Arduino Uno R3.

Hinweis 1: Wenn Sie sich für den FTDI-Geräteweg entscheiden, stellen Sie sicher, dass Sie bei einem seriösen Verkäufer kaufen, da es viele billige gefälschte Geräte auf dem Markt gibt, die nach der Anwendung eines Windows-Updates fehlgeschlagen sind.

Empfohlen: