So programmieren Sie den AVR-Mikrocontroller mit Arduino

Inhaltsverzeichnis

Program the AVR Microcontroller with Arduino

In der Welt der Mikrocontroller und Elektronik gibt es viele verschiedene Typen. Einer der beliebtesten Mikrocontroller-Typen ist die AVR-Familie. Diese Mikrocontroller können in einer Vielzahl von Projekten oder Produkten eingesetzt werden, da sie viele Verwendungsmöglichkeiten und Funktionen haben.

 Wenn Sie mit einem Arduino-Projekt beginnen möchten, aber nicht sicher sind, wie Sie den AVR-Mikrocontroller mit Arduino programmieren sollen – keine Sorge! In diesem Blogbeitrag werden wir alle Ihre Optionen behandeln!

Was ist ein AVR-Mikrocontroller?

Ein AVR-Mikrocontroller ist ein Mikrocontroller, der den AVR-Befehlssatz verwendet. AVR ist ein modifizierter 8-Bit-RISC-Einchip-Mikrocontroller mit Harvard-Architektur, der 1996 von Atmel entwickelt wurde. AVR-Mikrocontroller werden häufig in Arduino-Boards verwendet, und bei der Programmierung für Arduino-Boards verwenden Sie den AVR-Mikrocontroller.

avr microcontroller

AVR-Mikrocontroller in voller Form

Die vollständige Bezeichnung des AVR-Mikrocontrollers lautet Atmel AVR. Es handelt sich um einen Mikrocontroller, der ursprünglich für eingebettete Geräte wie Autos, Mobiltelefone, Haushaltsgeräte, Hausüberwachungssysteme und vieles mehr entwickelt wurde. AVR-Mikrocontroller werden häufig in Arduino-Boards verwendet, und bei der Programmierung für Arduino-Boards kommt der AVR-Mikrocontroller zum Einsatz.

Funktionen des AVR-Mikrocontrollers

Geringer Stromverbrauch – Eine der besten Eigenschaften von AVR-Mikrocontrollern ist ihr geringer Stromverbrauch. Je nachdem, wofür Sie das Gerät verwenden, kann dieser zwischen vernachlässigbar und einigen Watt liegen.

Großer Temperaturbereich – Obwohl die Temperatur die Geschwindigkeit des Geräts beeinflussen kann, halten AVR-Mikrocontroller Temperaturen von -40 °C bis 85 °C stand.

8-Bit-Architektur – Ein weiteres Merkmal von AVR-Mikrocontrollern ist ihre 8-Bit-Architektur. Dadurch verfügt Ihr Gerät über mehr Speicher und mehr Rechenleistung.

Programmiererfreundlich – Und zu guter Letzt sind AVR-Mikrocontroller programmiererfreundlich. Das macht sie zu einer großartigen Wahl für Anfänger und Hobbybastler, die ihre eigenen Projekte verwirklichen möchten.

AVR-Mikrocontroller-Architektur

Die AVR-Architektur basiert auf einer RISC-Architektur (Reduced Instruction Set Computer). RISC-Architekturen vereinfachen den Programmierprozess erheblich und machen ihn effizienter, was einer der Gründe für die große Beliebtheit von AVR ist.

Befehlssatz – Der Befehlssatz der Architektur ist ebenfalls reduziert. Das klingt zwar so, als würde es die Programmierung erschweren, macht sie aber einfacher, da weniger Befehle auch weniger komplexe Befehle bedeuten.

8-Bit-Datenpfad – Die 8-Bit-Architektur bedeutet auch, dass sie über einen 8-Bit-Datenpfad verfügt, wodurch sie mehr Daten gleichzeitig verarbeiten kann.

Programmspeicher – Im Programmspeicher werden alle Ihre Programme gespeichert. Er ist wie eine Festplatte für Ihr Gerät.

Datenspeicher – Im Datenspeicher werden Ihre Daten gespeichert. Wenn Sie beispielsweise eine Zahl im Gerät speichern möchten, wird diese im Datenspeicher abgelegt.

Pinbelegung des AVR-Mikrocontrollers

Es gibt verschiedene Arten von AVR-Mikrocontrollern, und das Pin-Diagramm variiert je nach Typ. Es gibt jedoch einige Pin-Diagramme, die bei vielen Arten von AVR-Mikrocontrollern, wie z. B. ATmega328P, gleich sind.

AVR ATmega328P pighixxx
AVR ATmega328P Pin

ATmega328P Pin-Konfiguration

RESET – RESET ist eine Leitung, die ausgelöst wird, wenn Ihr Gerät zurückgesetzt wird. Dies kann Ihr Programm stören, wenn beide miteinander verbunden sind.

GND – GND steht für „Ground“ (Erdung). Dies ist die Verbindung, die Ihr Gerät verwendet, um den Stromkreis zu schließen.

VCC – VCC ist die Spannung, mit der Ihr Gerät mit Strom versorgt wird.

RX – RX ist ein Eingangs-Pin, der Daten von einem anderen Gerät empfängt.

TX – TX ist ein Ausgangspin, der Daten an ein anderes Gerät sendet.

Blockschaltbild des AVR-Mikrocontrollers

Das Blockdiagramm des AVR-Mikrocontrollers zeigt alle internen Komponenten des Mikrocontrollers. Verschiedene Modelle verfügen über unterschiedliche Komponenten, aber alle Modelle sind in Bezug auf ihre Funktionalität im Allgemeinen identisch.

Programmspeicher – Der Programmspeicher ist der Ort, an dem Ihr Programm gespeichert wird. Er entspricht in etwa der Festplatte eines Computers.

Datenspeicher – Im Datenspeicher werden Ihre Daten gespeichert.

Programmzähler – Der Programmzähler verfolgt, an welcher Stelle Sie sich in Ihrem Programm befinden.

Befehlsregister – Das Befehlsregister enthält den nächsten Befehl, der ausgeführt wird.

ALU – ALU steht für „Arithmetic Logic Unit” (Arithmetisch-Logische Einheit). Diese führt alle mathematischen Operationen in Ihrem Programm aus.

Registerdatei – Die Registerdatei ist eine Sammlung der Register der ALU. – Timer/Zähler – Der Timer/Zähler wird verwendet, um Zeit zu messen oder mehrere Ereignisse zu zählen.

Was ist Arduino?

Arduino ist eine Open-Source-Plattform, die es Menschen mit wenig bis gar keiner Programmiererfahrung leicht macht, elektronische Projekte zu entwerfen und zu realisieren. Arduino-Boards sind in der Lage, eine Vielzahl von Leuchten, Sensoren und anderen Geräten zu steuern. Arduino-Boards werden mit einer speziellen Software programmiert. Wenn Sie den AVR-Mikrocontroller mit Arduino programmieren möchten, müssen Sie ein speziell dafür entwickeltes Board verwenden.

Programmierung von AVR-Mikrocontrollern mit Arduino

Wenn Sie den AVR-Mikrocontroller mit Arduino programmieren möchten, benötigen Sie ein Arduino-Board, das für AVR-Mikrocontroller ausgelegt ist. Diese Boards wurden speziell für die Programmierung des AVR-Mikrocontrollers entwickelt. Die Programmierung des AVR-Mikrocontrollers mit Arduino ist so einfach wie das Hochladen eines Programms auf das Board. Nachdem Sie das Programm hochgeladen haben, müssen Sie das Arduino-Board zurücksetzen und dann die Stromquelle trennen. Wenn Sie die Stromquelle wieder anschließen, wird der AVR-Mikrocontroller mit Arduino programmiert.

1. Programmierer-Arduino konfigurieren

Zunächst müssen Sie „Programmierer-Arduino” (das Arduino, das Sie als Programmierer konfiguriert haben) als ISP konfigurieren. Standardmäßig sind Skizzen (Code) im Menü „Datei” der Arduino IDE unter „Beispielcode” verfügbar. Die Arduino-ISP-Skizze übermittelt die erforderlichen Anweisungen an den Programmierer-Arduino, um ihn im Programmiermodus einzurichten.

Select Arduino ISP option
Select Arduino ISP option

2. LED mit Arduino verbunden

In einem zweiten Schritt kann der Status des Programmiergeräts Arduino mithilfe der angeschlossenen LEDs wie abgebildet überwacht werden. Der Arduino-ISP-Code ist für diese Funktion vorprogrammiert.

Arduino-LED connection
Arduino-LED connection

LED-Hinweise:

Pin 7 = Programmierung (leuchtet bei der Programmierung)

Pin 8 = Fehler (leuchtet bei Programmierfehler)

Pin 9 = Normal (leuchtet, sobald der Programmierer eingeschaltet ist)

Sobald der Programmierer-Arduino konfiguriert ist, wird die Verbindung zwischen dem Programmierer-Arduino und dem Arduino-Ziel hergestellt. Die Pin-Konfiguration muss genau wie im Arduino-ISP-Code beschrieben durchgeführt werden.

3. SPI-Kommunikation konfigurieren

Der Arduino ISP kommuniziert über das SPI-Protokoll (Serial Peripheral Interface), um den AVR-Mikrocontroller zu programmieren. Die SPI-Kommunikation verwendet vier Logiksignale: MOSI, MISO, SCLK und SS. Neben I2C ist SPI einer der am häufigsten verwendeten Kommunikationsmodi für MCUs. SPI folgt einer Master-Slave-Architektur, was bedeutet, dass ein Master-Gerät mit mehreren Slave-Geräten über dieselben Datenpins kommunizieren kann und das Ziel-Slave-Gerät über die Slave-Auswahlleitung ausgewählt wird.

Wenn eine Speicherkarte vorhanden ist, wird Select verwendet, um einen bestimmten Chip unter mehreren Chips auszuwählen. Wenn Sie jedoch Arduino als Programmierwerkzeug verwenden, wird das Slave-Select-Signal nur zum Zurücksetzen des Mikrocontrollers verwendet. Setzen Sie den Mikrocontroller in einen Zustand zurück, in dem er Befehle vom Arduino des Programmierers akzeptiert.

Auf dem Programmiergerät Arduino werden die Pins 10, 11, 12 und 13 als Datenpins verwendet. Die Konfiguration ist wie folgt:

Pin 10 = Zurücksetzen

Pin 11 = MOSI

Pin 12 = MISO

Pin 13 = SCK

4. ICSP-Header-Pins konfigurieren

In-Circuit Serial Programming (ICSP) ist die Möglichkeit, einen Mikrocontroller zu programmieren, ohne den Schaltkreis zu unterbrechen. Der ICSP-Header ist als 6-polige Buchse auf dem Arduino-Board verfügbar. Verbinden Sie die Pins 11, 12 und 13 des Ziel-Arduino mit den Pins 11, 12 und 13 des Programmier-Arduino. Beachten Sie, dass Pin 10 des Programmier-Arduino mit dem Reset-Pin des Ziel-Arduino verbunden werden muss. Alternativ können die ICSP-Header-Pins für die SPI-Kommunikation verwendet werden.

ICSP header for Arduino
ICSP header for Arduino

5. Arduino als ISP konfigurieren

Nachdem Sie alle oben genannten Komponenten angeschlossen haben, müssen Sie festlegen, dass Sie den Programmiermodus auf dem Host-PC verwenden. Gehen Sie im Menü zu „Tools“ und wählen Sie unter „Programmierer“ die Option „Arduino als ISP“.

Configure Arduino as ISP
Configure Arduino as ISP

6. Brennen Sie den Bootloader auf den Arduino.

Laden Sie als Nächstes den Bootloader in den Speicher des Ziel-Arduinos und definieren Sie die „Fuse“. In der Arduino-Welt ist eine Fuse eine Reihe von Anweisungen, mit denen mehrere Funktionen in einem Mikrocontroller definiert werden. Beispielsweise werden die Chipfrequenz und die Taktquelle in Fuses definiert. Mikrocontroller reagieren empfindlich auf Betriebsspannungen und können Fehlfunktionen aufweisen, wenn die Spannungspegel unter den angegebenen Werten liegen. Die minimale Betriebsspannung wird ebenfalls in der Fuse definiert.

burn bootloader to Arduino
burn bootloader to Arduino

Vorsichtsmaßnahmen

#1. Wenn der Mikrocontroller oder das Arduino-Board mit dem Arduino IDE-Programm kommunizieren kann, ergeben sich verschiedene Vorteile, beispielsweise die Möglichkeit, den seriellen Monitor der Arduino IDE zu verwenden, um die Ergebnisse während der Laufzeit zu überprüfen. (Der serielle Monitor wird in einem separaten Fenster geöffnet und fungiert als separates Terminal zum Empfangen und Senden serieller Daten.)

#2. Wenn der Bootloader nicht in den Mikrocontroller geladen ist, kann er die Funktionen des Arduino nicht nutzen und nicht mit der Arduino IDE kommunizieren. Der Bootloader belegt einen Teil des Speichers. In einigen Fällen ist es nicht notwendig, die Arduino IDE zu verwenden, sodass der Bootloader nicht programmiert werden muss. Wenn der Bootloader nicht programmiert ist, kann mehr Speicher für den Hauptprogramm-Sketch freigegeben werden. Bei Arduino UNO beträgt die Gesamtspeichergröße beispielsweise 32 KB, wobei 0,5 KB Speicher für den Bootloader reserviert sind. Wenn der Bootloader nicht installiert ist, steht mehr Speicher für den Hauptprogramm-Sketch zur Verfügung.

Zusammenfassung

Der AVR-Mikrocontroller ist ein benutzerfreundlicher und leistungsstarker Chip, der für eine Vielzahl von Anwendungen programmiert werden kann. Er eignet sich hervorragend für Einsteiger, die sich mit Mikrocontrollern und Elektronik vertraut machen möchten. Die Arduino-Plattform ist ideal für den Einstieg in die Welt der Mikrocontroller und wurde speziell für Anfänger entwickelt.

Abonnieren

Tragen Sie sich in unsere Abonnentenliste ein, um monatliche Blog-Updates, Technologie-News und Fallstudien zu erhalten. Wir versenden niemals Spam, und Sie können sich jederzeit wieder abmelden.

Über den Autor

Picture of Aidan Taylor
Aidan Taylor

I am Aidan Taylor and I have over 10 years of experience in the field of PCB Reverse Engineering, PCB design and IC Unlock.

Benötigen Sie Hilfe?

Nach oben scrollen

Instant Quote