Verwendung einer MC-Minimalschaltung und eines Bootloaders
Ziel
Sie verstehen eine Minimalschaltung unter Nutzung eines MCs und können diese aufbauen und betreiben.
Übersicht
In diesem Versuch wird eine MC-Minimalschaltung auf einem Steckbrett aufgebaut. Mittels eines externen Programmers wird ein Bootloader geflasht. Anschließend erfolgt die Programmierung mittels USB/Serial über den nun vorhandenen Bootloader.
Verständnisfragen
- Wie sieht eine Minimalschaltung für einen ATmega AVR prinzipiell aus?
- Auf welche Weise kann der Takt für den MC bereitgestellt werden? Was ist der jeweilige Vor- und Nachteil?
- Welchen Nachteil hat die Nutzung des internen Oszillators?
- Auf welche Weise kann man einen ATmega prinzipiell flashen?
- Was ist der Unterschied zwischen dem auf dem Arduino UNO verwendeten ATmega328 und dem hier im Versuch verwendeten ATmega8?
- Was ist ein Bootloader und welche Vor- und Nachteile ergeben sich?
- Informieren Sie sich über die Funktion der FUSES/Konfigurationsregister bei einem ATmega!
- Versuchen Sie, diese Minimalschaltung zu verstehen!
Schaltung
- Wir nutzen zunächst den intern generierten Takt des ATmega, Sie können also den Quarz aus der Minimalschaltung zunächst ignorieren.
- Wir nutzen für unseren MC-Versuch das kleine Steckbrett. Orientieren Sie sich bei den Bauelementen an folgender Skizze, um die Fehlersuche zu vereinfachen.
- Beschaltet werden soll an den MC die ISP-Buchse für den externen Programmer und die serielle Schnittstelle mittels Serial-USB-Wandler.
- Prüfen Sie die Pinbelegung der ISP-Steckerleiste Ihrer Schaltung mit der Belegung des Programmers AVRISP mkII.
- Zur Stromversorgung nutzen Sie die entsprechenden Pins der USB-Serial-Wandlers. Achten Sie auf die Einstellung der Versorgungsspannung auf 5 Volt.
- Achtung: die Bezeichnung von RX und TX ist nicht eindeutig. Aus Sicht der Geräte müssen die beiden Signale gespiegelt werden.
- Beschalten Sie auch die LED an Pin 19 des Atmegas, um die Fehlersuche zu vereinfachen. Bei einem installieren Bootloader wird diese nach einem Reset u.U. blinken und auch bei der seriellen Kommunikation Aktivität anzeigen.
- Lassen Sie sich die Schaltung abnehmen oder vergleichen Sie diese mit der Musterlösung, bevor Sie die Stromversorgung/USB-Kabel anschließen.
Programmierung mittels Programmer
- Als Bootloader nutzen wir Optiboot/Urboot des Projekts MiniCore. Dazu ist folgende URL in der Arduino IDE in
File > Preferences > Additional Boards Manager
einzutragen: https://mcudude.github.io/MiniCore/package_MCUdude_MiniCore_index.json - Achtung: Bei falschen Einstellungen können Sie sich u.U. aussperren und ein erneutes Flashen funktioniert nicht mehr!
- Wählen Sie in der Arduino-IDE als Board das Gerät: ATmega8.
- Jetzt können Sie über Tools die korrekten Werte für die Parameter einstellen (FUSES):
- Clock: Internal 8 MHz
- Bootloader: Yes
- Programmer: AVRISP
- Nach dieser Einstellung kann mittels
Tools - Burn Bootloader
der Bootloader geflasht werden. An der Ausgabe der IDE kann abgelesen werden, ob der Programmer erkannt wurde und der Bootloader erfolgreich geflasht wurde. - Bei manchen Bootloadern können Sie durch dreimaligen Blinken nach einem Reset das Vorhandensein eines Bootloaders und somit den Erfolg des Vorhabens erkennen.
- Der Programmer kann Infos des MC abfragen mittels
Tools -> Get Board Info
. Funktioniert dies, ist die ISP-Schnittstelle korrekt verbunden. - Zur Fehlersuche können Sie auch das Blink-Programm direkt mittels Programmer brennen (
Sketch -> Upload using Programmer
). Beachten Sie die Status-LED auf dem Programmer sowie die LED auf dem Steckbrett, welche mit Pin SCK verbunden ist.
Programmierung mittels serieller Schnittstelle
- Das weitere Flashen von Programmen kann nun wie gewohnt mittels serieller Schnittstelle (
Sketch -> Upload
) oder direkt per Programmer (Sketch -> Upload using Programmer
) erfolgen. Der eventuell vorhandene Bootloader wird ja nach Einstellungen erhalten bleiben oder überschrieben werden. - Der Serial-USB-Wander und somit der ATmega8 wird in der Regel als Gerät
/dev/ttyUSB0
erkannt. Bei einer Kommunikation auf der Schnittstelle sollte die grüne LED auf dem Wandler blinken. - Testen Sie die Verbindung zum PC indem Sie versuchen, das Blinkprogramm mittels serieller Schnittstelle zu flashen. Stecken Sie den Programmer dazu vorher ab!
- Erweitern Sie das Blinkprogramm mit einer Ausgabe über die serielle Schnittstelle und testen Sie diese mittels Serial Monitor!
- Gratulation! Sie haben nun ein funktionsfähiges Minimalsystem aufgebaut. Dies ist beliebig erweiterbar.
mögliche Fehlerquellen
- erweitere Meldungen: File –> Preferences –> verbose on
- Der Programmer signalisiert Fehler mittels Status LED siehe S.7.
- Anschlüsse vertauscht bei MC, USB oder Programmer
- LED falsch angeschlossen
- Versorgungsspannung nicht angeschlossen
- falsche Taḱtrate in Arduino IDE eingestellt
- keine PC-Kommunikation:
- RX und TX vertauscht
- Device:
dev/ttyUSB
nicht sichtbar –> kein korrektes Datenkabel für den USB-Serial-Wandler verwendet - falsche Baudrate im Serial Monitor eingestellt
- es ist sinnvoll, die Fehlerquellen Schritt für Schritt auszuschließen
Ressourcen
- Minimales Setup für DIP-28
- Steckbrett-Aufbau
- Progammer AVRISP mkII
- Serial-USB-Wandler
- FUSES
- FUSES-Calculatur
- MinCore
- Bootloader Urboot
Ergebnisse
Verständnis:
- Vorteil interner Oszillator: zwei zusätzlich Portpins: PB6, PB7, Nachteil: geringe Taktfrequenz und Genauigkeit
- Flashen: ISP-Programmer, Bootloader, große ATmegas mittels JTAG-Programmer
- ATmega8 hat weniger Speicher
- Bootloader kostet ca. 2kB Speicher.
Aufgaben:
Fakultativ
- Benutzen Sie einen Quarz mit 16 MHz und konfigurieren Sie den Bootloader entsprechend!
- Schließen Sie ein LCD und einen Sensor an!
Letzte Änderung: 02. April 2023 18:33