Stand: 18/11/2019

AVR USB Programmer

 

Üblicherweise nutze ich zur Programmierung meiner Mikrocontroller ein solches eigenständiges Programmiergerät mit Nullkraft Sockel  =>

So muss ich nicht auf jeder einzelnen Platine einen Programmierstecker vorsehen. Und falls einmal der Reset Pin des Prozessors eine I/O Funktion übernehmen soll, kann ich das hiermit auch wieder rückgängig machen. Allerdings habe ich festgestellt, dass dieses Programmiergerät einige der gängigen Controllertypen (z.B. ATtiny261, 461, 861) nicht unterstützt.

Mit der Open Source Software AVRDUDE http://download.savannah.gnu.org/releases/avrdude/ kann man hingegen so ziemlich jeden AVR Controller programmieren, vorausgesetzt die Programmier Hardware hat ein hiervon unterstütztes Interface. Also habe ich mich nach einer entsprechenden Selbstbau-Lösung umgesehen und bin im Web auch schnell fündig geworden. Der USBasp (USB Atmel SPI Programmer) wurde unter GNU GPLv2 entwickelt, ist also quelloffen; er besteht aus einem ATmega8 Controller und wenigen weiteren Komponenten. Die USB Funktion wird per Firmware bereitgestellt, sodass kein spezieller USB Controller notwendig ist. Hierzu habe ich eine Platine und ein grafisches Benutzerinterface entworfen.

Meine Hardware Implementierung nutzt einen 6-poligen Programmier-Stecker und findet auf einer einseitig gerouteten Platine der Größe 6,8 x 2,3cm Platz. Wer will, kann für häufig eingesetzte Controllertypen noch Programmier-Adapter erstellen, so dass der Programmier Stecker auf den Anwenderboards auch weiterhin entfallen kann.

USB Programmer & Adapter

Zur Konfiguration sind 3 Steckjumper vorhanden (s. Bild & Schaltplan im Eagle Download)

  • JP1 - Self Programming: Gesteckt, wenn der ATmega8 des Programmers z.B. von einem 2. USBasp programmiert werden soll. Standard: Offen
  • JP2 - Slow SCK: Zum Programmieren von Controllern, deren Konfigurationsbytes momentan auf langsame Taktung eingestellt sind. Kein Standard, besser erst mal stecken
  • JP3 - Vcc Target: Wenn gesteckt, bezieht das Zielsystem die +5V via USB vom Programmer. Standard: Bei Verwendung der bloßen Adapterplatinen geschlossen, bei Zielsystem mit eigener Versorgung offen.
    Es werden nur Zielsysteme mit 5V Versorgungsspannung unterstützt.

Des Weiteren sind 2 LEDs vorhanden: LED1 (grün) leuchtet bei eingestecktem USB-Kabel und vorhandener 5V Versorgung, LED2 (rot) leuchtet bei Zugriffen auf das Zielsystem.

Die weiter unten zum Download bereitgestellte Firmware wurde auf der Windows Konsole mit make main.hex aus den Quelldateien kompiliert. Fusebytes: Low=0xEF, high=0xC9, lock=0xFF.

Windows Anwender müssen vor der Nutzung des Programmers noch einen USB Treiber installieren: http://zadig.akeo.ie Neuere Linux Systeme haben diesen Treiber bereits an Bord.

AVRDUDE zur Programmierung von Mikrocontrollern ist eine reine Konsolen Anwendung. Die manuelle Eingabe ellenlanger Parameter Abfolgen per Tastatur ist allerdings nicht jedermanns Sache. Um das Arbeiten hiermit etwas angenehmer zu gestalten, habe ich für Windows Nutzer eine grafische Benutzeroberfläche AVRDUDE_GUI in Delphi 3 erstellt, die derzeit zwar nur die elementaren Funktionen zum Flashen von Programmspeicher, EEprom und den Fusebytes Low & High bereitstellt, aber mehr braucht man zunächst auch nicht.

Das Hardware-Interface funktioniert zuverlässig; es ist fest auf USBasp eingestellt. Die Grundfunktionen sind selbst erklärend, so dass man bei Bedarf leicht weitere Funktionen ergänzen kann. Auch sind bisher nur einige der von mir benutzten Controllertypen definiert. Da sich diese Definitionen aber in einer separaten Textdatei befinden, lassen sich leicht weitere AVR-Typen ergänzen, ohne das Programm neu kompilieren zu müssen. Weitere Hinweise sind in der README Datei des Programm Archivs enthalten.

AVRDUDE: Delphi User Interface

 

 

 

Downloads

Firmware
Platinenlayout

AVRDUDE_GUI