AVR-Mikrocontroller

USB-Programmiergerät

Auch wenn man sich - wie ich - nicht systematisch mit modernen Mikrocontrollern beschäftigt, steht man doch gelegentlich vor der Situation, einen Mikrocontroller selber zu programmieren oder mal ein Programm anzupassen.

Die Programmierung mittels einfacher selbstgebauter Adapter an der seriellen oder parallelen Schnittstelle gehört allmählich der Vergangenheit an, da immer weniger Rechner noch über native serielle/parallele Schnittstellen verfügen und ein USB-RS232-Adapter auch nicht immer funktioniert - Zeit also, sich nach etwas Neuem umzuschauen.

Die im Hobbybereich/bei Funkamateuren beliebten Mikrocontroller AVR der Firma Atmel (8-Bit-Prozessor mit RISC-Architektur) lassen sich im eingebauten Zustand über eine spezielle Schnittstelle programmieren. Dies wird als In-System-Programming - kurz ISP - bezeichnet. Am häufgsten wird ein Serial Peripheral Interface (SPI) für ISP verwandt, hier wird mit drei Leitungen (MOSI -Master Out -> Slave In, MISO - Master In <- Slave Out, SCK - Serial Clock) eine synchrone serielle Datenübertragung verwirklicht.

 

ISP10
ISP6PIN ISP10PIN

Anschlussbelegung der 6- und 10-poligen Programmierstecker nach [1]
Draufsicht auf die Stifte, der Stift 1 ist am Pfostenstecker mit einem Pfeil markiert.
Pin 4 und 6 des 10-poligen Pfostensteckers des USBasp davon abweichend mit RxD und TxD (serielle Schnittstelle) verbunden.

10-poliger
Anschluss

6-poliger
Anschluss

1 MOSI

1 MISO

2 VCC

2 VCC

3 N.C.

3 SCK

4,6,8,10 GND

4 MOSI

5 RESET

5 RESET

7 SCK

6 GND

9 MISO

 

Hardwaremässig wird der SPI-Anschluss auf Seite des Programmiergerätes wie der zu programmierenden Platine standardmässig über 6 oder 10-polige Messerstecker (Pfostenstecker, “Wannenstecker”) realisiert, das Programmierkabel hat an den Enden entsprechende Pfostenbuchsen.

Für die praktische Realisierung eines SPI-ISP-Adapters für AVRs gibt es sehr vielfältige Möglichkeiten (siehe [2]) usbasp_2Hier das Open-Source-Projekt von Thomas Fischl “USBasp” (USB basiertes Programmier- gerät für Atmel AVR Mikrocontroller), für den es auch einen preiswerten “offiziellen” Bausatz gibt. (Schaltbild) Grundlage ist ein ATmega88, der per Software eine USB-Schnittstelle nachbildet.[4]

Das Programmiergerät wird über die USB-Schnittstelle mit +5 V versorgt. Die grüne LED zeigt die Stromversorgung an, die rote Datenverkehr.

Belegung der drei Jumper (normal - offen):

JP1 - SCK option - Low Speed, wenn zu programmierender AVR mit weniger als 1,5 MHz betrieben wird (notwendig bei neuen Mikro- controllern die mit 1 MHz Taktfrequenz vom internen RC-Ozillator arbeiten)

JP2 Firmware Upgrade - erlaubt das Programmieren des eingebauten ATmega8 mit einem anderen Programmiergerät

JP3 Power Target - bei geschlossenen Jumper kann die Zielschaltung mit Strom vom Programmiergerät versorgt werden oder - wenn der AVR im USBasp mit einem zweiten Programmiergerät selbst programmiert werden soll, der AVR mit Strom versorgt werden (USBasp nicht am USB-Port anschließen).

USBasp benötigt unter Windows einen Treiber [3], im Geräte-Manager wird beim 32-Bit-Vista eineDriverUSBasp libusb-win32 device hinzugefügt.

Der Programmer verwendet für die Programmierung seine eigenen 5 V, sollen AVR mit einer niedrigeren Spannung (3,3 V) programmiert werden, gibt es möglicherweise Probleme (High-Pegelerkennung). Abhilfe schafft eine kleine Hardwareänderung - 2 Si-Dioden und Durchlassrichtung in der Stromversorgung des ATMega88 bewirken, das dieser mit ca. 3,6 V betrieben wird. Siehe den Beitrag von Vlad Tepesch.

Als Programmiersoftware unter Windows eignet sich u.a. Avrdude (Kommandozeilen- programm) bzw. Avrdude mit grafischer Benutzeroberfläche.

Falls man nicht den AVR-Mikrocontroller in einer Zielschaltung mit SPI-ISP-Interface programmieren will, benötigt man noch irgendeinen Adapter mit den entprechenden IC-Sockeln. Hierfür eignet z.B. das von “Pollin” (www.pollin.de) als Bausatz und Fertiggerät vertriebene preiswerte “Atmel Evaluationsboard” (Ver. 2.01):

PollinEval

Das Evaluationsboard besitzt auch eine serielle Schnittstelle zur Programmierung (sog. bit-banging programmer), hier kann die bekannte Software Ponyprog eingesetzt werden.

Programmierung (Hard-/Software)

[1] ATMEL: AVR042: AVR Hardware Design Considerations. http://www.atmel.com/dyn/resources/prod_documents/doc2521.pdf

[2] AVR In System Programmer. http://www.mikrocontroller.net/articles/AVR_In_System_Programmer. Umfangreiche Übersicht über die verschiedenen In-System-Programmer.

[3] Thomas Fischl: USBasp - USB programmer for Atmel AVR controllers. http://www.fischl.de/usbasp/ Programmiergerät für die USB-Schnittstelle auf Basis eines ATmega8. “Offizieller” Bausatz dazu: Bausatz "USBasp". http://www.fundf.net/usbasp/.

[4] Objective Development: Virtual USB port for AVR microcontrollers. http://www.obdev.at/products/vusb/index.html.

libusb-win32. http://sourceforge.net/apps/trac/libusb-win32/wiki.

Usbasp. http://www.das-labor.org/wiki/Usbasp,

LABOR Wiki: USBasp. http://www.das-labor.org/wiki/Usbasp.

Christian Ulrich: USB AVR Lab. http://wiki.ullihome.de/index.php/USBAVR-ISP/de. Alternative Software für den USBasp - mittels Bootloader auf dem ATmega8 und einem Tool kann zwischen unterschiedlicher Firmware gewählt werden.

Programmiersoftware für USBasp:

AVRDUDE - AVR Downloader/UploaDEr. http://www.nongnu.org/avrdude/. Funktionen werden über Kommandozeile aufgerufen. Zur Einführung siehe http://www.mikrocontroller.net/articles/AVRDUDE.

Torsten Brischalle: AVR8 Burn-O-Mat. http://burn-o-mat.net/. Grafische Nutzeroberfläche (GUI) für Avrdude, Java erforderlich.

SinaProg. Ebenfalls GUI für Avrdude. Aktuell 1.7.5.10, mit Google suchen!

Behzad Khazama: Khazama AVR Programmer. http://khazama.com/project/programmer/. GUI application for USBasp and avrdude.

eXtreme Burner - AVR. http://extremeelectronics.co.in/avr-tutorials/gui-software-for-usbasp-based-usb-avr-programmers/. GUI Software for USBasp based USB AVR Programmers.

Pollin ATMEL Evaluations-Board. http://www.mikrocontroller.net/articles/Pollin_ATMEL_Evaluations-Board.

Claudio Lanconelli: PonyProg - Serial device programmer. http://www.lancos.com/prog.html

Fuse-Rechner:

Engbedded Atmel AVR® Fuse Calculator. http://www.engbedded.com/fusecalc/. Online Fuse-Kalkulator.

 

Programmentwicklung

AVR-Studio 5. http://www.atmel.com/avrstudio Kostenlose Entwicklungsumgebung von ATMEL für die Programmierung in Assembler und C/C++.
Christian Schifferle: Programmierung der AVR-Microcontroller mit C. http://www.physik.uni-regensburg.de/studium/edverg/elfort/C_KURS_Atmel_Programmieren%20htm/Index.htm. Als PDF-Datei: http://www.ulrichradig.de/home/uploads/images/Daten_Infos_Anleitungen/AtmelCprogramming.pdf
Gerhard Schmidt (DG4FAC): AVR-Assembler-Tutorial. http://www.avr-asm-tutorial.net/ Als PDF-File “Anfängerkurs zum Erlernen der Assemblersprache von ATMEL-AVR-Mikroprozessoren”: http://www.avr-asm-download.de/beginner_de.pdf

MCS Electronics: BASCOM-AVR. http://www.mcselec.com BASIC-Compiler für AVR-Mikrocontroller, die kostenlose Demo-Version kann Programmcode bis 4 KByte erzeugen.

BASCOM-AVR Manual. (Link) PDF-Version der Bascom-Hilfe.

Gerold Penz: Kleiner Bascom AVR Kurs. http://halvar.at/elektronik/kleiner_bascom_avr_kurs/

Klaus Dieter Schoch (DF1TY): Programmieren mit BASCOM AVR. http://www.df1ty.de/anleitungen/bascom-avr.pdf.

Jean-Claude Feltes: AVR-Mikrokontroller und BASCOM. http://staff.ltam.lu/feljc/electronics/electronics.htm. Bascom-Tutorials.

Thomas Krüger: uC-Lehrgäge für Bascom und Hardware-Ergänzungen. http://www.dieelektronikerseite.de

 

Anwendungen

Don L. Jackson (AE5K): HamAVR. http://hamavr.ae5k.us/ Amateurfunkanwendungen der AVR-Mikrocontroller.

Burkhard John (DK5JG): AVR-Microcontroller im Ham-Shack. http://home.arcor.de/burkhard-john/

 

Allgemein

http://www.mikrocontroller.net/.

AVR Mikrocontroller. http://mschrod.de/Elektronik/AVR/Hauptseite.htm. Allgemeines zum Mikroprozessor Atmega 8 und Atmega 32

Roland Walter: AVR-Mikrocontroller. http://www.rowalt.de/mc/index.htm.

AVR WebRing. http://hub.webring.org/hub/avr.

 

© Lutz Höll DK3WI 2011. Letzte Änderung 18.06.2011

[Home] [Amateurfunk] [Geräte] [Selbstbau] [GPS] [Links] [Privates] [Impressum]