<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="de">
	<id>https://www.mikrocontroller.net/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=87.180.2.162</id>
	<title>Mikrocontroller.net - Benutzerbeiträge [de]</title>
	<link rel="self" type="application/atom+xml" href="https://www.mikrocontroller.net/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=87.180.2.162"/>
	<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/articles/Spezial:Beitr%C3%A4ge/87.180.2.162"/>
	<updated>2026-04-10T13:04:25Z</updated>
	<subtitle>Benutzerbeiträge</subtitle>
	<generator>MediaWiki 1.39.7</generator>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=AVR-GCC&amp;diff=84704</id>
		<title>AVR-GCC</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=AVR-GCC&amp;diff=84704"/>
		<updated>2014-08-29T10:40:38Z</updated>

		<summary type="html">&lt;p&gt;87.180.2.162: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;avr-gcc ist ein freier [[C]]-Cross-[[Compiler]] für [[AVR]]-[[Mikrocontroller]].&lt;br /&gt;
&lt;br /&gt;
avr-gcc kann von der Leistungsfähigkeit kommerzieller [[Compiler]] gut mithalten. Sogar C++-Programme sind möglich; in der aktuellen Fassung wird C++ jedoch nur eingeschränkt unterstützt (Stand 3/2012).&lt;br /&gt;
&lt;br /&gt;
== Bestandteile ==&lt;br /&gt;
&lt;br /&gt;
Die Toolchain (Werkzeugsammlung) besteht aus mehreren Kommandozeilen-Programmen, die sich auf einfache Weise in einen Editor oder eine Entwicklungsumgebung einbinden lassen. Weit verbreitet ist die Verwendung von make zur Steuerung, siehe [[AVR-GCC-Tutorial/Exkurs Makefiles|AVR-GCC-Tutorial: Exkurs Makefiles]]. &lt;br /&gt;
&lt;br /&gt;
Die Bestandteile im einzelnen:&lt;br /&gt;
* Binutils: Assembler, Linker und weitere Hilfsprogramme.&lt;br /&gt;
* GCC: Der eigentliche C(++)-Compiler.&lt;br /&gt;
* AVR-Libc: Die C-Standardbibliothek mit AVR-spezifischen Headerdateien und Funktionen.&lt;br /&gt;
* [[AVRDUDE]]: universelle AVR-Programmiersoftware, kein eigentlicher Teil der Toolchain, aber oft verwendet&lt;br /&gt;
&lt;br /&gt;
== Installation ==&lt;br /&gt;
&lt;br /&gt;
=== Linux/Unix ===&lt;br /&gt;
&lt;br /&gt;
Wenn keine aktuelle avr-gcc-Version als Paket (Paketname ist, zumindest bei Debian, gcc-avr) für die verwendete Distribution zur Verfügung steht, dann können sich [[Unix]]/[[Linux]]-Nutzer den Sourcecode herunterladen und selbst kompilieren, dazu gibt es Schritt-für-Schritt-Anleitungen&amp;lt;ref&amp;gt;[http://www.nongnu.org/avr-libc/user-manual/install_tools.html AVR-Libc: Building and Installing under Linux, FreeBSD, and Others]&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;[http://www.roboternetz.de/wissen/index.php/Avr-gcc_und_avrdude_installieren www.roboternetz.de: avr-gcc und avrdude installieren]&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Das [http://www.femtoos.org FemtoOS]-Paket beinhaltet Scripte zum automatischen Herunterladen und Bauen einer avr-gcc Version 4.3.3.&lt;br /&gt;
&lt;br /&gt;
Empfehlenswert ist auch [http://cdk4avr.sf.net CDK4AVR], das die entsprechenden Tools als einfach installierbare Linux-Pakete bereitstellt. Leider ist das Projekt schon etwas älter, im Forum findet sich ein [http://www.mikrocontroller.net/topic/130972 Beitrag], aktuellere Sourcen mit den entsprechenden Patches zu versehen und zu kompilieren. Patches zu den Binutils und GCC-Sourcen sind unumgänglich, da die offiziellen Sourcen aufgrund des Umfangs an Prozessortargets den aktuellsten Entwicklungen hinterherhinken und damit bereits bekannte Fehler eventuell noch nicht behoben sind. Weitere Tipps zur AVR-Programmierung unter Linux stehen im Artikel [[AVR und Linux]].&lt;br /&gt;
&lt;br /&gt;
=== Mac OS X ===&lt;br /&gt;
Die beste fertige Toolchain ist das [http://www.obdev.at/crosspack/ Crosspack]. Dieses enthält auch die AVR-Libc, avrdude und avarice. Leider gab es bei Mac OS 10.5.6 eine tiefgreifende Änderung beim fork()-Systemcall, der bewirkt, dass avarice mit JTAGICE mkII und Dragon nicht funktioniert. Geräte mit Serial-USB-Konvertern (AVRISP clones etc) funktionieren dagegen problemlos. &lt;br /&gt;
&lt;br /&gt;
Wer die Toolchain von Hand bauen möchte kann das natürlich auch tun, dazu einfach den unter &amp;quot;Linux/Unix&amp;quot; verlinkten Anleitungen folgen. Unter [[Mac OS X]] muss man dazu zuerst die [http://developer.apple.com/Tools/ Apple Developer Tools] installieren.&lt;br /&gt;
&lt;br /&gt;
Teile der Toolchain (AVR-Libc und avrdude) kann folgendermaßen installieren:&lt;br /&gt;
&lt;br /&gt;
==== Mit MacPorts ====&lt;br /&gt;
Wenn man [http://www.macports.org/ MacPorts] benutzt kann man folgendes in das Terminal eingeben, um den Toolchain zu installieren:&lt;br /&gt;
&lt;br /&gt;
 sudo port install avr-libc&lt;br /&gt;
&lt;br /&gt;
Das Programmiertool avrdude bekommt man genauso:&lt;br /&gt;
&lt;br /&gt;
 sudo port install avrdude&lt;br /&gt;
&lt;br /&gt;
==== Mit Hombrew ====&lt;br /&gt;
Mit dem neueren Tool [http://brew.sh Homebrew] funktioniert das folgendermaßen:&lt;br /&gt;
&lt;br /&gt;
avrdude kann sofort installiert werden:&lt;br /&gt;
&lt;br /&gt;
 brew install avrdude&lt;br /&gt;
&lt;br /&gt;
Für den restlichen Toolchain muss man erst ein &#039;Tap&#039; hinzufügen:&lt;br /&gt;
&lt;br /&gt;
 brew tap larsimmisch/homebrew-avr&lt;br /&gt;
&lt;br /&gt;
und kann dann den eigentlichen Toolchain installieren:&lt;br /&gt;
&lt;br /&gt;
 brew install avr-libc&lt;br /&gt;
&lt;br /&gt;
Weblinks:&lt;br /&gt;
&lt;br /&gt;
* [http://tinkerlog.com/2007/09/29/programming-avr-with-a-macbook/ Programming AVR with a MacBook] (engl.)&lt;br /&gt;
* [http://www.ladyada.net/library/avrdevtut/setup-mac.html AVR Tutorial from Lady Ada] (engl.)&lt;br /&gt;
* [http://www.obdev.at/crosspack/ Crosspack]&lt;br /&gt;
* [http://www.digithink.com/OSX-AVR OSX-AVR (nicht mehr aktuell)]&lt;br /&gt;
* [http://www.definefalsetrue.com/index.php/Mac-OS-X/bootfeedx.html BootFeedX Bootloaderfrontend]&lt;br /&gt;
&lt;br /&gt;
=== Windows ===&lt;br /&gt;
&lt;br /&gt;
Für MS-Windows gibt es das fertig kompilierte Softwarepaket [[WinAVR]].&lt;br /&gt;
&lt;br /&gt;
== Entwicklungsumgebungen ==&lt;br /&gt;
&lt;br /&gt;
Win32:&lt;br /&gt;
* [[AVR-Studio]]: ab Version 4.12 mit WinAVR-Unterstützung, integrierter Simulator, Debugger, rudimentäre Projektverwaltung&lt;br /&gt;
* Programmers-Notepad: wird bei [[WinAVR]] mitgeliefert, ein guter Editor mit einer rudimentären Projektverwaltung&lt;br /&gt;
* [http://www.myavr.info/download/benutzerhandbuch_sisy_avr.pdf SiSy-AVR]: ein CASE-Tool mit WinAVR-Unterstützung, das eine Entwicklungsumgebung bereitstellt.&lt;br /&gt;
&lt;br /&gt;
Plattformunabhängig:&lt;br /&gt;
* [http://www.eclipse.org/ Eclipse] mit CDT und dem [http://avr-eclipse.sourceforge.net/index.html AVR Eclipse Plugin]&lt;br /&gt;
* [[Code::Blocks]]: vielseitige, freie Entwicklungsumgebung für Windows und Linux&lt;br /&gt;
* [http://www.netbeans.org/ Netbeans] in der C++ - Version mit [[WinAVR]] oder [[avr-gcc]] als Toolchain&lt;br /&gt;
&lt;br /&gt;
Linux:&lt;br /&gt;
*[http://sourceforge.net/projects/kontrollerlab/?_test=b KontrollerLab] ist eine freie Entwicklungsumgebung für AVR momentan aber noch im Beta-stadium.&lt;br /&gt;
&lt;br /&gt;
== Bibliotheken / Libraries ==&lt;br /&gt;
&lt;br /&gt;
Die [http://www.nongnu.org/avr-libc/ AVR-Libc] ist die gebräuchliche &amp;quot;Laufzeitbibliothek&amp;quot; zum avr-gcc C-Compiler, welche den Zugriff auf die AVR-Hardware erheblich erleichtert. Die offizielle Dokumentation zur avr-libc mit vielen Hinweisen auch zum Compiler avr-gcc und verschiedener Tools (z.&amp;amp;nbsp;B. [[AVRDUDE]]) findet man [http://www.nongnu.org/avr-libc/user-manual/index.html hier].&lt;br /&gt;
&lt;br /&gt;
Auch die [http://www.procyonengineering.com/embedded/avr/avrlib/ Procyon AVRlib] enthält nützlichen Code z.&amp;amp;nbsp;B. für UART, LCD,.... Bei der Procyon AVRlib ist die Lizenz zu beachten (in Kurzform: man muss dritten auf Verlangen den gesamten Quellcode der Firmware zur Verfügung stellen, falls Teile der Procyon Bibliothek genutzt werden).&lt;br /&gt;
&lt;br /&gt;
Zum Zugriff auf interne Funktionen oder externe Peripherie existieren einige fertige Komponenten. Z.B. &amp;quot;Projects&amp;quot;-Bereich von [http://www.avrfreaks.net/ avrfreaks.net] (Anmeldung erforderlich (kostenlos)). &lt;br /&gt;
&lt;br /&gt;
Die Erstellung eigener Bibliotheken ist im Artikel  [[Libraries]] erklärt.&lt;br /&gt;
&lt;br /&gt;
== Tipps &amp;amp; Tricks ==&lt;br /&gt;
&lt;br /&gt;
Eine Liste mit einigen Hinweisen:&lt;br /&gt;
&lt;br /&gt;
* 07.10.11 → es kann Probleme mit der aktuellen Eclipse-Version (Indigo) und WinAVR geben. Falls ihr Indigo installiert habt und Eclipse die Definitionen wie z.B. DDRA nicht kennt, jedoch kompillieren kann, dann müsst ihr auf die Version Helios SR2 wechseln. Danach läuft alles wie gehabt!&lt;br /&gt;
&lt;br /&gt;
* Keine &amp;quot;antiken&amp;quot; Versionen verwenden. Für MS-Windows-Nutzer: aktuelles WinAVR installieren. Für Linux/Unix-Nutzer: letzte stabile Version selbst kompilieren oder aus &amp;quot;Distribution-Packages&amp;quot; installieren (z.&amp;amp;nbsp;B. [http://cdk4avr.sourceforge.net/ cdk4avr]).&lt;br /&gt;
&lt;br /&gt;
* Bei Problemen zuerst in die [http://www.nongnu.org/avr-libc/user-manual/index.html Anleitung] der avr-libc schauen. Insbesondere die FAQ lesen.&lt;br /&gt;
&lt;br /&gt;
* Sicherstellen, dass der MCU-Parameter (zum Compiler/Linker, meist im Makefile defniert) mit dem Zielprozessor übereinstimmt.&lt;br /&gt;
&lt;br /&gt;
* [[AVR-GCC-Tutorial]] in diesem Wiki lesen.&lt;br /&gt;
&lt;br /&gt;
* Im Zweifel nicht INTERRUPT(...) sondern SIGNAL(...) nutzen. In neueren Versionen der avr-libc wurde &amp;quot;ISR&amp;quot; als Ersatz für SIGNAL eingeführt und sollte genutzt werden (SIGNAL und INTERRUPT werden langfristig entfallen). Darauf achten, dass die Vektor- bzw. Signal-Namen (&amp;quot;Parameter&amp;quot;) zu ISR bzw. SIGNAL (und INTERRUPT wenn denn unbedingt erforderlich) richtig geschrieben sind. Die Namen sind in der in der entsprechenden Header-Datei (ioxxx.h) für den Controller und der avr-libc-Dokumenation aufgelistet. Im Zweifel den erzeugten Interrupt-Vektor im Assembler-Listing prüfen, es darf &#039;&#039;&#039;kein&#039;&#039;&#039; SIG_&#039;&#039;xxx&#039;&#039; oder xxx_vect mehr zu sehen sein, sondern _vector_&#039;&#039;N&#039;&#039; (wobei &#039;&#039;N&#039;&#039; eine Zahl ist). Neuere Versionen der avr-gcc zeigen eine Warnung, falls etwas falsch geschrieben wurde, ältere Versionen nicht.&lt;br /&gt;
&lt;br /&gt;
* Zugriff auf Daten(-Tabellen) im Programmspeicher (Flash) erfolgt über Program-Space-Funktionen (pgm_read*). Lediglich die Definition einer Variablen/eines Feldes mit dem PROGMEM Attribut zu versehen, reicht (im Gegensatz zu Codevision, IAR, Imagecraft) nicht aus.&lt;br /&gt;
&lt;br /&gt;
* Nicht alle AVRs werden vollständig von der avr-libc bzw. dem Compiler unterstützt. Bei Problemen hilft oft ein Blick in den erzeugten Assembler-Code. Die Anzahl der unterstützen Controller steigt jedoch mit Version zu Version von binutils, avr-libc und avrdude. Evtl. reicht einfach ein Update auf neuere Software-Versionen (z.&amp;amp;nbsp;B. im jeweils aktuellen WinAVR-Packet).&lt;br /&gt;
&lt;br /&gt;
* inp(), outp(), sbi() und cbi() werden in der aktuellen Bibliotheksversion nicht offiziell unterstützt (man muss eine spezielle Header-Datei einbinden(deprecated.h). Es wird schon seit längerem empfohlen, diese Makros nicht mehr zu nutzen. Einige Anleitungen sind in diesem Punkt veraltet. Mit halbwegs aktuellen avr-gcc/avr-libc-Versionen kann einfach z.&amp;amp;nbsp;B. DDRB=0xfe bzw. foo=PINB geschrieben werden.  Mit PORTB |= _BV(1) setzt man PORTB.1, mit PORTB &amp;amp;= ~_BV(1) löscht man es wieder, mit PORTB ^= _BV(1) kann man es umschalten (_BV(x) entspricht dabei (1&amp;lt;&amp;lt;x)). Die ersten beiden Varianten erzeugen bei eingeschalteter Optimierung und passenden Parametern (wie hier im Beispiel Register im &amp;quot;unteren&amp;quot; Speicherbereich) die SBI bzw. CBI Prozessorbefehle.&lt;br /&gt;
&lt;br /&gt;
* Mit dem Tool avr-nm erhält man eine Übersicht über die Platzausnutzung in der erzeugten ELF-Datei bzw. dem damit gefüllten AVR. Das Tool wird per Kommandozeile mit &lt;br /&gt;
::&amp;lt;pre&amp;gt;avr-nm --size-sort --print-size -r -td &amp;lt;your_ELF_file&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
:aufgerufen und gibt eine vierspaltige Liste aus: Die erste Spalte ist die Adresse, die zweite die benötigte Größe, die dritte der Typ und die vierte der Name des Symbols. Alle Symbole vom Typ &amp;quot;T&amp;quot; (globale Funktionen), &amp;quot;t&amp;quot; (lokale Funktionen) und letztlich auch die mit einem &amp;quot;D&amp;quot; oder &amp;quot;d&amp;quot; (globale bzw. lokale Daten mit Initialisierungswerten im ROM) betreffen das FLASH-ROM. Typen &amp;quot;B&amp;quot; und &amp;quot;b&amp;quot; brauchen ausschließlich RAM (werden beim Start mit 0 initialisiert). (vgl. [http://www.mikrocontroller.net/topic/59960#467920 Forenbeitrag] von Jörg Wunsch)&lt;br /&gt;
&lt;br /&gt;
* Mit dem Tool avr-size erhält man eine Übersicht über den Platzbedarf in den text, data und bss Sektionen innerhalb der ELF Binärdatei. Die Sektionen text und data benötigen Platz im FLASH-ROM und die Sektionen data und bss benötigen zur Laufzeit Platz im SRAM.&lt;br /&gt;
&lt;br /&gt;
== Fußnoten ==&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Siehe auch ==&lt;br /&gt;
* [[AVR-GCC-Tutorial]]&lt;br /&gt;
* [[AVR-GCC-Codeoptimierung]]&lt;br /&gt;
* [[GCC: unbenutzte Funktionen entfernen]]&lt;br /&gt;
* [http://www.roboternetz.de/wissen/index.php/Avr-gcc/Interna AVR-GCC Interna]&lt;br /&gt;
&lt;br /&gt;
== Weblinks ==&lt;br /&gt;
* [http://winavr.sourceforge.net/install_config_WinAVR.pdf Tutorial von C. O&#039;Flynn und E. Weddington] Einstieg in die Nutzung des avr-gcc unter MS-Windows mit WinAVR (englisch)&lt;br /&gt;
* [http://www.linuxfocus.org/Deutsch/November2004/article352.shtml AVR-GCC und Linux]&lt;br /&gt;
* [http://www.mikrocontroller.net/forum/list-2-1.html GCC-Forum auf mikrocontroller.net]&lt;br /&gt;
&lt;br /&gt;
[[Category:AVR]]&lt;br /&gt;
[[Category:Compiler]]&lt;br /&gt;
[[Kategorie:avr-gcc| ]]&lt;/div&gt;</summary>
		<author><name>87.180.2.162</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=AVR-GCC&amp;diff=84703</id>
		<title>AVR-GCC</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=AVR-GCC&amp;diff=84703"/>
		<updated>2014-08-29T10:40:08Z</updated>

		<summary type="html">&lt;p&gt;87.180.2.162: Ergänzung&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;avr-gcc ist ein freier [[C]]-Cross-[[Compiler]] für [[AVR]]-[[Mikrocontroller]].&lt;br /&gt;
&lt;br /&gt;
avr-gcc kann von der Leistungsfähigkeit kommerzieller [[Compiler]] gut mithalten. Sogar C++-Programme sind möglich; in der aktuellen Fassung wird C++ jedoch nur eingeschränkt unterstützt (Stand 3/2012).&lt;br /&gt;
&lt;br /&gt;
== Bestandteile ==&lt;br /&gt;
&lt;br /&gt;
Die Toolchain (Werkzeugsammlung) besteht aus mehreren Kommandozeilen-Programmen, die sich auf einfache Weise in einen Editor oder eine Entwicklungsumgebung einbinden lassen. Weit verbreitet ist die Verwendung von make zur Steuerung, siehe [[AVR-GCC-Tutorial/Exkurs Makefiles|AVR-GCC-Tutorial: Exkurs Makefiles]]. &lt;br /&gt;
&lt;br /&gt;
Die Bestandteile im einzelnen:&lt;br /&gt;
* Binutils: Assembler, Linker und weitere Hilfsprogramme.&lt;br /&gt;
* GCC: Der eigentliche C(++)-Compiler.&lt;br /&gt;
* AVR-Libc: Die C-Standardbibliothek mit AVR-spezifischen Headerdateien und Funktionen.&lt;br /&gt;
* [[AVRDUDE]]: universelle AVR-Programmiersoftware, kein eigentlicher Teil der Toolchain, aber oft verwendet&lt;br /&gt;
&lt;br /&gt;
== Installation ==&lt;br /&gt;
&lt;br /&gt;
=== Linux/Unix ===&lt;br /&gt;
&lt;br /&gt;
Wenn keine aktuelle avr-gcc-Version als Paket (Paketname ist gcc-avr) für die verwendete Distribution zur Verfügung steht, dann können sich [[Unix]]/[[Linux]]-Nutzer den Sourcecode herunterladen und selbst kompilieren, dazu gibt es Schritt-für-Schritt-Anleitungen&amp;lt;ref&amp;gt;[http://www.nongnu.org/avr-libc/user-manual/install_tools.html AVR-Libc: Building and Installing under Linux, FreeBSD, and Others]&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;[http://www.roboternetz.de/wissen/index.php/Avr-gcc_und_avrdude_installieren www.roboternetz.de: avr-gcc und avrdude installieren]&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Das [http://www.femtoos.org FemtoOS]-Paket beinhaltet Scripte zum automatischen Herunterladen und Bauen einer avr-gcc Version 4.3.3.&lt;br /&gt;
&lt;br /&gt;
Empfehlenswert ist auch [http://cdk4avr.sf.net CDK4AVR], das die entsprechenden Tools als einfach installierbare Linux-Pakete bereitstellt. Leider ist das Projekt schon etwas älter, im Forum findet sich ein [http://www.mikrocontroller.net/topic/130972 Beitrag], aktuellere Sourcen mit den entsprechenden Patches zu versehen und zu kompilieren. Patches zu den Binutils und GCC-Sourcen sind unumgänglich, da die offiziellen Sourcen aufgrund des Umfangs an Prozessortargets den aktuellsten Entwicklungen hinterherhinken und damit bereits bekannte Fehler eventuell noch nicht behoben sind. Weitere Tipps zur AVR-Programmierung unter Linux stehen im Artikel [[AVR und Linux]].&lt;br /&gt;
&lt;br /&gt;
=== Mac OS X ===&lt;br /&gt;
Die beste fertige Toolchain ist das [http://www.obdev.at/crosspack/ Crosspack]. Dieses enthält auch die AVR-Libc, avrdude und avarice. Leider gab es bei Mac OS 10.5.6 eine tiefgreifende Änderung beim fork()-Systemcall, der bewirkt, dass avarice mit JTAGICE mkII und Dragon nicht funktioniert. Geräte mit Serial-USB-Konvertern (AVRISP clones etc) funktionieren dagegen problemlos. &lt;br /&gt;
&lt;br /&gt;
Wer die Toolchain von Hand bauen möchte kann das natürlich auch tun, dazu einfach den unter &amp;quot;Linux/Unix&amp;quot; verlinkten Anleitungen folgen. Unter [[Mac OS X]] muss man dazu zuerst die [http://developer.apple.com/Tools/ Apple Developer Tools] installieren.&lt;br /&gt;
&lt;br /&gt;
Teile der Toolchain (AVR-Libc und avrdude) kann folgendermaßen installieren:&lt;br /&gt;
&lt;br /&gt;
==== Mit MacPorts ====&lt;br /&gt;
Wenn man [http://www.macports.org/ MacPorts] benutzt kann man folgendes in das Terminal eingeben, um den Toolchain zu installieren:&lt;br /&gt;
&lt;br /&gt;
 sudo port install avr-libc&lt;br /&gt;
&lt;br /&gt;
Das Programmiertool avrdude bekommt man genauso:&lt;br /&gt;
&lt;br /&gt;
 sudo port install avrdude&lt;br /&gt;
&lt;br /&gt;
==== Mit Hombrew ====&lt;br /&gt;
Mit dem neueren Tool [http://brew.sh Homebrew] funktioniert das folgendermaßen:&lt;br /&gt;
&lt;br /&gt;
avrdude kann sofort installiert werden:&lt;br /&gt;
&lt;br /&gt;
 brew install avrdude&lt;br /&gt;
&lt;br /&gt;
Für den restlichen Toolchain muss man erst ein &#039;Tap&#039; hinzufügen:&lt;br /&gt;
&lt;br /&gt;
 brew tap larsimmisch/homebrew-avr&lt;br /&gt;
&lt;br /&gt;
und kann dann den eigentlichen Toolchain installieren:&lt;br /&gt;
&lt;br /&gt;
 brew install avr-libc&lt;br /&gt;
&lt;br /&gt;
Weblinks:&lt;br /&gt;
&lt;br /&gt;
* [http://tinkerlog.com/2007/09/29/programming-avr-with-a-macbook/ Programming AVR with a MacBook] (engl.)&lt;br /&gt;
* [http://www.ladyada.net/library/avrdevtut/setup-mac.html AVR Tutorial from Lady Ada] (engl.)&lt;br /&gt;
* [http://www.obdev.at/crosspack/ Crosspack]&lt;br /&gt;
* [http://www.digithink.com/OSX-AVR OSX-AVR (nicht mehr aktuell)]&lt;br /&gt;
* [http://www.definefalsetrue.com/index.php/Mac-OS-X/bootfeedx.html BootFeedX Bootloaderfrontend]&lt;br /&gt;
&lt;br /&gt;
=== Windows ===&lt;br /&gt;
&lt;br /&gt;
Für MS-Windows gibt es das fertig kompilierte Softwarepaket [[WinAVR]].&lt;br /&gt;
&lt;br /&gt;
== Entwicklungsumgebungen ==&lt;br /&gt;
&lt;br /&gt;
Win32:&lt;br /&gt;
* [[AVR-Studio]]: ab Version 4.12 mit WinAVR-Unterstützung, integrierter Simulator, Debugger, rudimentäre Projektverwaltung&lt;br /&gt;
* Programmers-Notepad: wird bei [[WinAVR]] mitgeliefert, ein guter Editor mit einer rudimentären Projektverwaltung&lt;br /&gt;
* [http://www.myavr.info/download/benutzerhandbuch_sisy_avr.pdf SiSy-AVR]: ein CASE-Tool mit WinAVR-Unterstützung, das eine Entwicklungsumgebung bereitstellt.&lt;br /&gt;
&lt;br /&gt;
Plattformunabhängig:&lt;br /&gt;
* [http://www.eclipse.org/ Eclipse] mit CDT und dem [http://avr-eclipse.sourceforge.net/index.html AVR Eclipse Plugin]&lt;br /&gt;
* [[Code::Blocks]]: vielseitige, freie Entwicklungsumgebung für Windows und Linux&lt;br /&gt;
* [http://www.netbeans.org/ Netbeans] in der C++ - Version mit [[WinAVR]] oder [[avr-gcc]] als Toolchain&lt;br /&gt;
&lt;br /&gt;
Linux:&lt;br /&gt;
*[http://sourceforge.net/projects/kontrollerlab/?_test=b KontrollerLab] ist eine freie Entwicklungsumgebung für AVR momentan aber noch im Beta-stadium.&lt;br /&gt;
&lt;br /&gt;
== Bibliotheken / Libraries ==&lt;br /&gt;
&lt;br /&gt;
Die [http://www.nongnu.org/avr-libc/ AVR-Libc] ist die gebräuchliche &amp;quot;Laufzeitbibliothek&amp;quot; zum avr-gcc C-Compiler, welche den Zugriff auf die AVR-Hardware erheblich erleichtert. Die offizielle Dokumentation zur avr-libc mit vielen Hinweisen auch zum Compiler avr-gcc und verschiedener Tools (z.&amp;amp;nbsp;B. [[AVRDUDE]]) findet man [http://www.nongnu.org/avr-libc/user-manual/index.html hier].&lt;br /&gt;
&lt;br /&gt;
Auch die [http://www.procyonengineering.com/embedded/avr/avrlib/ Procyon AVRlib] enthält nützlichen Code z.&amp;amp;nbsp;B. für UART, LCD,.... Bei der Procyon AVRlib ist die Lizenz zu beachten (in Kurzform: man muss dritten auf Verlangen den gesamten Quellcode der Firmware zur Verfügung stellen, falls Teile der Procyon Bibliothek genutzt werden).&lt;br /&gt;
&lt;br /&gt;
Zum Zugriff auf interne Funktionen oder externe Peripherie existieren einige fertige Komponenten. Z.B. &amp;quot;Projects&amp;quot;-Bereich von [http://www.avrfreaks.net/ avrfreaks.net] (Anmeldung erforderlich (kostenlos)). &lt;br /&gt;
&lt;br /&gt;
Die Erstellung eigener Bibliotheken ist im Artikel  [[Libraries]] erklärt.&lt;br /&gt;
&lt;br /&gt;
== Tipps &amp;amp; Tricks ==&lt;br /&gt;
&lt;br /&gt;
Eine Liste mit einigen Hinweisen:&lt;br /&gt;
&lt;br /&gt;
* 07.10.11 → es kann Probleme mit der aktuellen Eclipse-Version (Indigo) und WinAVR geben. Falls ihr Indigo installiert habt und Eclipse die Definitionen wie z.B. DDRA nicht kennt, jedoch kompillieren kann, dann müsst ihr auf die Version Helios SR2 wechseln. Danach läuft alles wie gehabt!&lt;br /&gt;
&lt;br /&gt;
* Keine &amp;quot;antiken&amp;quot; Versionen verwenden. Für MS-Windows-Nutzer: aktuelles WinAVR installieren. Für Linux/Unix-Nutzer: letzte stabile Version selbst kompilieren oder aus &amp;quot;Distribution-Packages&amp;quot; installieren (z.&amp;amp;nbsp;B. [http://cdk4avr.sourceforge.net/ cdk4avr]).&lt;br /&gt;
&lt;br /&gt;
* Bei Problemen zuerst in die [http://www.nongnu.org/avr-libc/user-manual/index.html Anleitung] der avr-libc schauen. Insbesondere die FAQ lesen.&lt;br /&gt;
&lt;br /&gt;
* Sicherstellen, dass der MCU-Parameter (zum Compiler/Linker, meist im Makefile defniert) mit dem Zielprozessor übereinstimmt.&lt;br /&gt;
&lt;br /&gt;
* [[AVR-GCC-Tutorial]] in diesem Wiki lesen.&lt;br /&gt;
&lt;br /&gt;
* Im Zweifel nicht INTERRUPT(...) sondern SIGNAL(...) nutzen. In neueren Versionen der avr-libc wurde &amp;quot;ISR&amp;quot; als Ersatz für SIGNAL eingeführt und sollte genutzt werden (SIGNAL und INTERRUPT werden langfristig entfallen). Darauf achten, dass die Vektor- bzw. Signal-Namen (&amp;quot;Parameter&amp;quot;) zu ISR bzw. SIGNAL (und INTERRUPT wenn denn unbedingt erforderlich) richtig geschrieben sind. Die Namen sind in der in der entsprechenden Header-Datei (ioxxx.h) für den Controller und der avr-libc-Dokumenation aufgelistet. Im Zweifel den erzeugten Interrupt-Vektor im Assembler-Listing prüfen, es darf &#039;&#039;&#039;kein&#039;&#039;&#039; SIG_&#039;&#039;xxx&#039;&#039; oder xxx_vect mehr zu sehen sein, sondern _vector_&#039;&#039;N&#039;&#039; (wobei &#039;&#039;N&#039;&#039; eine Zahl ist). Neuere Versionen der avr-gcc zeigen eine Warnung, falls etwas falsch geschrieben wurde, ältere Versionen nicht.&lt;br /&gt;
&lt;br /&gt;
* Zugriff auf Daten(-Tabellen) im Programmspeicher (Flash) erfolgt über Program-Space-Funktionen (pgm_read*). Lediglich die Definition einer Variablen/eines Feldes mit dem PROGMEM Attribut zu versehen, reicht (im Gegensatz zu Codevision, IAR, Imagecraft) nicht aus.&lt;br /&gt;
&lt;br /&gt;
* Nicht alle AVRs werden vollständig von der avr-libc bzw. dem Compiler unterstützt. Bei Problemen hilft oft ein Blick in den erzeugten Assembler-Code. Die Anzahl der unterstützen Controller steigt jedoch mit Version zu Version von binutils, avr-libc und avrdude. Evtl. reicht einfach ein Update auf neuere Software-Versionen (z.&amp;amp;nbsp;B. im jeweils aktuellen WinAVR-Packet).&lt;br /&gt;
&lt;br /&gt;
* inp(), outp(), sbi() und cbi() werden in der aktuellen Bibliotheksversion nicht offiziell unterstützt (man muss eine spezielle Header-Datei einbinden(deprecated.h). Es wird schon seit längerem empfohlen, diese Makros nicht mehr zu nutzen. Einige Anleitungen sind in diesem Punkt veraltet. Mit halbwegs aktuellen avr-gcc/avr-libc-Versionen kann einfach z.&amp;amp;nbsp;B. DDRB=0xfe bzw. foo=PINB geschrieben werden.  Mit PORTB |= _BV(1) setzt man PORTB.1, mit PORTB &amp;amp;= ~_BV(1) löscht man es wieder, mit PORTB ^= _BV(1) kann man es umschalten (_BV(x) entspricht dabei (1&amp;lt;&amp;lt;x)). Die ersten beiden Varianten erzeugen bei eingeschalteter Optimierung und passenden Parametern (wie hier im Beispiel Register im &amp;quot;unteren&amp;quot; Speicherbereich) die SBI bzw. CBI Prozessorbefehle.&lt;br /&gt;
&lt;br /&gt;
* Mit dem Tool avr-nm erhält man eine Übersicht über die Platzausnutzung in der erzeugten ELF-Datei bzw. dem damit gefüllten AVR. Das Tool wird per Kommandozeile mit &lt;br /&gt;
::&amp;lt;pre&amp;gt;avr-nm --size-sort --print-size -r -td &amp;lt;your_ELF_file&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
:aufgerufen und gibt eine vierspaltige Liste aus: Die erste Spalte ist die Adresse, die zweite die benötigte Größe, die dritte der Typ und die vierte der Name des Symbols. Alle Symbole vom Typ &amp;quot;T&amp;quot; (globale Funktionen), &amp;quot;t&amp;quot; (lokale Funktionen) und letztlich auch die mit einem &amp;quot;D&amp;quot; oder &amp;quot;d&amp;quot; (globale bzw. lokale Daten mit Initialisierungswerten im ROM) betreffen das FLASH-ROM. Typen &amp;quot;B&amp;quot; und &amp;quot;b&amp;quot; brauchen ausschließlich RAM (werden beim Start mit 0 initialisiert). (vgl. [http://www.mikrocontroller.net/topic/59960#467920 Forenbeitrag] von Jörg Wunsch)&lt;br /&gt;
&lt;br /&gt;
* Mit dem Tool avr-size erhält man eine Übersicht über den Platzbedarf in den text, data und bss Sektionen innerhalb der ELF Binärdatei. Die Sektionen text und data benötigen Platz im FLASH-ROM und die Sektionen data und bss benötigen zur Laufzeit Platz im SRAM.&lt;br /&gt;
&lt;br /&gt;
== Fußnoten ==&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Siehe auch ==&lt;br /&gt;
* [[AVR-GCC-Tutorial]]&lt;br /&gt;
* [[AVR-GCC-Codeoptimierung]]&lt;br /&gt;
* [[GCC: unbenutzte Funktionen entfernen]]&lt;br /&gt;
* [http://www.roboternetz.de/wissen/index.php/Avr-gcc/Interna AVR-GCC Interna]&lt;br /&gt;
&lt;br /&gt;
== Weblinks ==&lt;br /&gt;
* [http://winavr.sourceforge.net/install_config_WinAVR.pdf Tutorial von C. O&#039;Flynn und E. Weddington] Einstieg in die Nutzung des avr-gcc unter MS-Windows mit WinAVR (englisch)&lt;br /&gt;
* [http://www.linuxfocus.org/Deutsch/November2004/article352.shtml AVR-GCC und Linux]&lt;br /&gt;
* [http://www.mikrocontroller.net/forum/list-2-1.html GCC-Forum auf mikrocontroller.net]&lt;br /&gt;
&lt;br /&gt;
[[Category:AVR]]&lt;br /&gt;
[[Category:Compiler]]&lt;br /&gt;
[[Kategorie:avr-gcc| ]]&lt;/div&gt;</summary>
		<author><name>87.180.2.162</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=AVR-Tutorial:_Equipment&amp;diff=84679</id>
		<title>AVR-Tutorial: Equipment</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=AVR-Tutorial:_Equipment&amp;diff=84679"/>
		<updated>2014-08-29T09:42:35Z</updated>

		<summary type="html">&lt;p&gt;87.180.2.162: /* STK500 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= AVR-Tutorial - Benötigte Ausrüstung =&lt;br /&gt;
==Hardware==&lt;br /&gt;
&lt;br /&gt;
Ein Mikrocontroller alleine ist noch zu nichts nützlich. Damit man etwas damit anfangen kann, braucht man eine Schaltung, in die der Controller eingesetzt wird. Dazu werden bei Elektronikhändlern Platinen angeboten, die alles nötige (Taster, LEDs, Steckverbinder...) enthalten. Häufig enthalten diese Platinen nicht nur Platz für den Mikroprozessor, sondern auch einen ISP-Programmierer (Näheres dazu später)&lt;br /&gt;
&lt;br /&gt;
Da es eine Unmenge verschiedener Mikrocontroller allein aus der AVR-Familie gibt, ist der Anfänger mit der Auswahl bereits überfordert. Dieses Tutorial (und viele andere auch) beginnt mit dem &#039;&#039;mittelgroßen&#039;&#039; Controller &#039;&#039;&#039;ATmega8&#039;&#039;&#039;. Die 8 steht für 8 Kilobyte Flash-Speicher. Er gilt als ideal für Einsteiger, und auch von „alten Hasen“ wird dieser Typ gern verwendet. Es gibt ihn im 28-poligen DIL-Gehäuse, ideal für Bastelschaltungen auf dem Steckbrett, als auch in verschiedenen SMD-Gehäusen, wenn das Endgerät klein werden soll.&lt;br /&gt;
&lt;br /&gt;
=== Fertige Evaluations-Boards und Starterkits ===&lt;br /&gt;
&lt;br /&gt;
==== AVR Starterkit aus dem Mikrocontroller.net-Shop ====&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Hinweis:&#039;&#039;&#039; Damit der Programmer mit AS5.x zusammen arbeitet, muss die Firmware aktualisiert werden: http://www.usbprog.org/index.php/Firmwares (siehe Update Hinweis)&lt;br /&gt;
&lt;br /&gt;
Sehr gut für dieses Tutorial geeignet ist das [http://shop.embedded-projects.net/index.php?module=artikel&amp;amp;action=artikel&amp;amp;id=108 AVR-Starterkit aus dem Mikrocontroller.net-Shop]. Das Kit enthält eine Platine mit dem Controller ATmega8, einen USB-ISP-Programmieradapter und ein Steckernetzteil. Die im Starterkit enthaltene [http://www.eproo.de/index.php?module=artikel&amp;amp;action=artikel&amp;amp;id=74 AVR Entwicklungsplatine für 28-pol. AVRs] gibt es auch einzeln. Diese enthält eine Fassung für den Controller, einen Spannungswandler, die Beschaltung für die serielle Schnittstelle und einen Anschluss für den Programmieradapter. Die restliche Hardware wie LEDs und Taster kann man sich selber nach Belieben auf das Lochrasterfeld löten.&lt;br /&gt;
&lt;br /&gt;
==== STK500 ====&lt;br /&gt;
[[Bild:Stk500.jpg|right]]&lt;br /&gt;
Das STK500 ist das Standard-Board für AVR Entwicklung, direkt von Atmel. Es enthält auch einen ISP-Programmer und ist fertig aufgebaut. Es ist unter Entwicklern sehr beliebt und wird natürlich von Atmel unterstützt. Es gilt allgemein als gute Investition, wenn man ernsthaft in das Thema einsteigen möchte.&lt;br /&gt;
&lt;br /&gt;
Das STK500 kostet bei Reichelt ca. 95 Euro (Stand August 2014. Ein geeignetes Netzteil muss zusätzlich erworben werden).&lt;br /&gt;
&lt;br /&gt;
==== Pollin ATMEL Evaluations-Board Version 2.x ====&lt;br /&gt;
&lt;br /&gt;
Bei Pollin Elektronik gibt es für ca. 15 Euro ein Evaluations-Board als Bausatz zum Selbstlöten. Im Bausatz sind die Aufbauanleitung, die Platine und Bauteile enthalten. Der/die Mikrocontroller und eine Stromversorgung müssen separat beschafft werden. Auf dem Board ist ein einfacher ISP-Programmer (serielles &#039;&#039;bit-banging&#039;&#039;) integriert. &lt;br /&gt;
&lt;br /&gt;
Siehe: &lt;br /&gt;
* [[Pollin ATMEL Evaluations-Board]]&lt;br /&gt;
* http://www.pollin.de&lt;br /&gt;
&lt;br /&gt;
==== Pollin Funk-AVR-Evaluationsboard v1.x ====&lt;br /&gt;
&lt;br /&gt;
Bei diesem Board besteht die Möglichkeit, Funkmodule wie das [[RFM12]], RFM01 oder RFM02 auf dem Board aufzulöten.&lt;br /&gt;
&lt;br /&gt;
Siehe: &lt;br /&gt;
* [[Pollin Funk-AVR-Evaluationsboard]]&lt;br /&gt;
* [http://www.pollin.de http://www.pollin.de]&lt;br /&gt;
&lt;br /&gt;
==== Rumpus Board von lochraster.org ====&lt;br /&gt;
&lt;br /&gt;
Lochraster.org bietet ein Entwicklungsboard namens Rumpus an. Es kommt als Bausatz mit allen Teilen und Microcontroller (Atmega 168), auf dem Microcontroller ist bereits ein USB Bootloader installiert so dass man nach dem Zusammenbau sofort starten kann. Das Board wird direkt über USB mit Strom versorgt und auch über USB programmiert, es kann auch selbst als Programmer für AVR Microcontroller benutzt  werden. Das Board ist mit recht umfangreicher Peripherie ausgestattet, so das sich von sehr einfachen Anwendungen wie dem Blinken einer LED bis hin zu komplexen Aufgaben wie senden und empfangen von Infrarot Signalen eine Vielzahl von Anwendungen realisieren lassen. Mit 45 Euro gehört es sicher nicht zu den ganz billigen Einsteigerboards, für den ambitionierten Amateur bietet die reichhaltige Peripherie den Vorteil, das Board während des gesamten Lernprozesses zu nutzen ohne für die Realisierung komplexerer Aufgaben neue Hardware auflöten zu müssen. Auch relativiert sich dieser Preis wieder dadurch, dass kein ISP Programmer benötigt wird. Beim Umstieg auf ein anderes Board, für welches man dann einen ISP Programmer benötigt, kann der Rumpus diese Aufgabe übernehmen anstatt zum alten Eisen geworfen zu werden (s. Infos im [http://www.mikrocontroller.net/topic/217122#2165435 Forumbeitrag von Sebastian Noack]).&lt;br /&gt;
&lt;br /&gt;
Weitere Infos unter http://www.lochraster.org/ und http://wiki.lochraster.org/&lt;br /&gt;
&lt;br /&gt;
==== RN-Control ====&lt;br /&gt;
&lt;br /&gt;
Die Forengemeinde von Roboternetz hat ebenfalls ein Evaluierungsboard entwickelt, das mittlerweile sehr ausgereift ist und viele Erweiterungsmöglichkeiten bietet.&lt;br /&gt;
&lt;br /&gt;
Siehe:&lt;br /&gt;
* [http://robotikhardware.de/ http://robotikhardware.de/]&lt;br /&gt;
* [http://www.roboternetz.de/ http://www.roboternetz.de/]&lt;br /&gt;
&lt;br /&gt;
==== Arduino ====&lt;br /&gt;
Die Boards der [http://www.arduino.cc Arduino-Familie] bieten z.B. einen ATmega328P mit 16MHz und lassen sich über einen integrierten USB-seriell-Wandler und [[Bootloader]] programmieren. Die Ports sind auf Buchsenleisten herausgeführt. Arduino-Boards können auch unabhängig von der Arduino-Entwicklungsumgebung (Arduino-IDE) als AVR-Entwicklungsboard genutzt werden.&lt;br /&gt;
&lt;br /&gt;
==== Andere ====&lt;br /&gt;
&lt;br /&gt;
Das Angebot an AVR-Evaluationboards, -Experimentierplatinen, -Entwicklerplatinen oder wie die jeweiligen Hersteller ihre Produkte auch immer bezeichnen, ist mittlerweile recht groß geworden. Sie alle zu bewerten ist unmöglich geworden.&lt;br /&gt;
&lt;br /&gt;
===Selbstbau===&lt;br /&gt;
&lt;br /&gt;
Ein fertiges Board ist gar nicht nötig, man kann die benötigte Schaltung auch selbst auf einem kleinen Steckbrett oder einer Lochrasterplatine aufbauen. So kompliziert wie das STK500 wird es nicht, es reichen eine Handvoll Bauteile. Wie man das macht, wird im Folgenden beschrieben.&lt;br /&gt;
Steckbretter (Breadboards) gibt&#039;s z.&amp;amp;nbsp;B. bei [http://www.reichelt.de Reichelt],  [http://www.conelek.com/Steckplatinen ConeleK], [http://www.elv.de/ ELV] oder [http://www.conrad.de/ Conrad]. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Bild:Mega8_Tutorial.png|center|framed| Die Grundschaltung eines ATmega8/ATmega8A.&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;ACHTUNG:&#039;&#039;&#039; Die Pinbelegung der 6-poligen ISP-Verbindung weicht von den ATMEL Angaben ab! Wenn ATMEL oder ATMEL-kompatible ISP-Adapter benutzt werden, die Pinbelegung aus [http://www.atmel.com/images/atmel-2521-avr-hardware-design-considerations_application-note_avr042.pdf AVR042] (PDF) bzw. [[AVR_In_System_Programmer#Pinbelegung]] benutzen]]&lt;br /&gt;
&lt;br /&gt;
Über den Takteingang &#039;&#039;&#039;XTAL1&#039;&#039;&#039; ist der Mikrocontroller mit dem &#039;&#039;&#039;Quarzoszillator&#039;&#039;&#039; verbunden, der den benötigten Takt von 4 MHz liefert (siehe unten). Achtung: die Pins werden, wenn man den Oszillator mit der Schrift nach oben vor sich liegen hat, von unten links aus abgezählt. Unten links ist Pin 1, unten rechts Pin 7, oben rechts Pin 8 und oben links Pin 14 (natürlich hat der Oszillator nur 4 Pins. Die Nummerierung kommt daher, dass bei einem normalen IC dieser Größe an den gleichen Positionen die Pins Nr. 1, 7, 8 und 14 wären). Zu den Pins Datenblatt beachten [http://www.mikrocontroller.net/topic/204429#2015503].&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;PD0-PD7&#039;&#039;&#039; und &#039;&#039;&#039;PB0-PB5&#039;&#039;&#039; sind die &#039;&#039;&#039;IO-Ports&#039;&#039;&#039; des Mikrocontrollers. Hier können Bauteile wie LEDs, Taster oder LCDs angeschlossen werden.&lt;br /&gt;
Der &#039;&#039;&#039;Port C (PC0-PC5)&#039;&#039;&#039; spielt beim Atmega8 eine Sonderrolle: mit diesem Port können Analog-Spannungen gemessen werden. Aber dazu später mehr!&lt;br /&gt;
An &#039;&#039;&#039;Pin 17-19&#039;&#039;&#039; ist die Stiftleiste zur Verbindung mit dem ISP-Programmer angeschlossen, über den der AVR vom PC programmiert wird (Achtung: Pins in Abbildung entsprechen nicht der Belegung des AVRISP mkII. Die korrekte Pin-Belegung kann im Handbuch des AVRISP mkII eingesehen werden).&lt;br /&gt;
Die Resetschaltung, bestehend aus &#039;&#039;&#039;R1&#039;&#039;&#039; und &#039;&#039;&#039;C1&#039;&#039;&#039;, sorgt dafür, dass der Reseteingang des Controllers standardmäßig auf Vcc=+5V liegt.&lt;br /&gt;
Zum Programmieren zieht der ISP-Adapter die Resetleitung auf Masse (GND), die Programmausführung wird dadurch unterbrochen und der interne Speicher des Controllers kann neu programmiert werden.&lt;br /&gt;
Zwischen Vcc und GND kommen noch jeweils ein 100nF Keramik- oder Folienkondensator C3 und C4, um Störungen in der Versorgungsspannung zu unterdrücken. Diese [[Kondensator#Entkoppelkondensator | Abblockkondensatoren]] sollten so nah wie möglich am Controller platziert werden. An den Ausgang ARef wird ebenfalls ein 100nF Kondensator angeschlossen. Dieser wird allerdings erst benötigt, wenn der Analog/Digital Konverter des µC in Betrieb genommen wird.&lt;br /&gt;
&lt;br /&gt;
Für den Anschluss des ISP-Programmiergerätes kann man im Grunde jede beliebige Pin-Belegung des ISP Steckers benutzen, solange nur alle benötigten Leitungen mit dem Programmiergerät verbunden sind. In der Praxis haben sich allerdings bestimmte Belegungen durchgesetzt. Im Schaltbild ist eine &#039;&#039;&#039;eigene&#039;&#039;&#039; Belegung des 6-poligen Steckers gezeigt. Die alternative Pinbelegung eines 2-reihigen/10-poligen Steckers ist eine übliche Belegung. Benutzt man so eine übliche Belegung, so reicht normalerweise ein 10-poliges Flachbandkabel, um den vorhandenen ISP-Programmer so mit der Schaltung zu verbinden, dass alle Signale am richtigen Prozessorpin ankommen. Siehe auch [[AVR_In_System_Programmer]].&lt;br /&gt;
&lt;br /&gt;
Hier die Liste der benötigten Bauteile: &lt;br /&gt;
&lt;br /&gt;
* R1         Widerstand 10 kOhm&lt;br /&gt;
* C1         Keramikkondensator 47 nF&lt;br /&gt;
* C2, C3, C4 Keramik- oder Folienkondensator 100 nF&lt;br /&gt;
*            Stiftleiste 6-polig&lt;br /&gt;
*            Mikrocontroller ATmega8 oder ATmega8A (kann u.a. auf [http://shop.mikrocontroller.net/ http://shop.mikrocontroller.net/] bestellt werden)&lt;br /&gt;
*            Quarzoszillator 4 MHz&lt;br /&gt;
&lt;br /&gt;
Beim Steckbrett ist darauf zu achten, dass man die parallellaufenden Schienen für GND (blau) und Vcc (rot) jeweils mit Drähten verbindet (nicht Vcc und GND miteinander!).&lt;br /&gt;
&lt;br /&gt;
Eine Zusammenstellung der benötigten Bauteile befindet sich in der [[AVR-Tutorial_Bestellliste|Bestellliste]].&lt;br /&gt;
&lt;br /&gt;
Eine weitere Beschreibung für ein Minimalsystem gibt es [http://conelek.org/Mikrocontroller_Minimalsystem_mit_AVR_ATMega8 hier.]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;border: 1px solid grey; padding: 1ex; font-size: 90%;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Ergänzende Hinweise zur Taktversorgung (kann übersprungen werden) ===&lt;br /&gt;
&lt;br /&gt;
Ein Mikrocontroller benötigt, wie jeder Computer, eine Taktversorgung. Der Takt ist notwendig, um die internen Abläufe im Prozessor in einer zeitlich geordneten Reihenfolge ausführen zu können. Die Frequenz des Taktes bestimmt im Wesentlichen, wie schnell ein Mikrocontroller arbeitet. Bei einem ATMega8 gibt es viele Möglichkeiten zur Taktversorgung, die Wichtigsten sollen hier gezeigt werden.&lt;br /&gt;
&lt;br /&gt;
* interner RC-Oszillator, das ist der Auslieferungszustand&lt;br /&gt;
* Keramikresonator&lt;br /&gt;
* Quarz&lt;br /&gt;
* Quarzoszillator&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ &#039;&#039;&#039;Vergleich der AVR-Taktquellen&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
! Typ || Genauigkeit || Vorteile || Nachteile&lt;br /&gt;
|-&lt;br /&gt;
| interner&amp;lt;br&amp;gt;RC-Oszillator || 1-5% || Xtal1/2 Pins verfügbar&amp;lt;br&amp;gt;kostenlos&amp;lt;br&amp;gt;kein Platzbedarf&amp;lt;br&amp;gt;schnellstes Einschwingen (wenige Takte) || ungenau&amp;lt;br&amp;gt;Betrieb der [[UART]] riskant&lt;br /&gt;
|-&lt;br /&gt;
| Keramikresonator || 0,5-1% || ausreichend genau für [[UART]]&amp;lt;br&amp;gt;in sehr hohen Stückzahlen billiger als Quarz&amp;lt;br&amp;gt;schnelleres Einschwingen als Quarz (ca. 1ms) || XTAL1/2 Pins nicht verfügbar&amp;lt;br&amp;gt;Platzbedarf&lt;br /&gt;
|-&lt;br /&gt;
| Quarz || 10-100ppm || sehr genau&amp;lt;br&amp;gt;temperaturstabil || XTAL1/2 Pins nicht verfügbar&amp;lt;br&amp;gt;Platzbedarf&amp;lt;br&amp;gt;Kosten bei sehr hohen Stückzahlen (1000++)&amp;lt;br&amp;gt;langsames Anschwingen (ca. 10ms)&amp;lt;br&amp;gt;2 zusätzliche Ballast-Kondensatoren typ. 22 pF&lt;br /&gt;
|-&lt;br /&gt;
| Quarzoszillator || 1-100ppm || hochgenau&amp;lt;br&amp;gt;sehr temperaturstabil&amp;lt;br&amp;gt;liefert selbst ein Signal, kann dadurch [[AVR_Fuses#Taktquellen_Fuse_Einstellung | verfuste AVRs]] retten&amp;lt;br&amp;gt;kann mehrere Takteingänge treiben || XTAL1 Pin nicht verfügbar&amp;lt;br&amp;gt;Platzbedarf&amp;lt;br&amp;gt;Kosten bei sehr hohen Stückzahlen (1000++)&amp;lt;br&amp;gt;langsames Anschwingen (ca. 10ms)&lt;br /&gt;
|}&lt;br /&gt;
1ppm = 0,0001% (engl. one &#039;&#039;&#039;p&#039;&#039;&#039;art &#039;&#039;&#039;p&#039;&#039;&#039;er &#039;&#039;&#039;m&#039;&#039;&#039;illion, der millionste Teil) &lt;br /&gt;
&lt;br /&gt;
&amp;lt;font color=&amp;quot;FF0000&amp;quot;&amp;gt;Achtung: Ein ATMega8 wird mit aktiviertem internen RC-Oszillator ausgeliefert. Um eine andere Taktquelle zu aktivieren, müssen die [[AVR Fuses#Taktquellen Fuse Einstellung|AVR Fuses]] des Prozessors verändert werden. Das muss jedoch sehr vorsichtig gemacht werden, siehe Artikel.&amp;lt;/font&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Keramikresonator ====&lt;br /&gt;
&lt;br /&gt;
Die Anbindung des Keramikresonators sieht so aus:&lt;br /&gt;
&lt;br /&gt;
[[Bild:Resonator.png|framed|center| Resonator Standardbeschaltung]]&lt;br /&gt;
&lt;br /&gt;
Es werden keine Kondensatoren benötigt, diese sind schon eingebaut, daher ist der Anschluss eines Keramikschwingers kinderleicht. Achtung: Keramikresonatoren gibt es mit zwei oder drei Pins. Nur die mit drei Pins besitzen interne Kondensatoren.&lt;br /&gt;
&lt;br /&gt;
==== Quarz ====&lt;br /&gt;
&lt;br /&gt;
Die Anbindung des Quarzes sieht so aus:&lt;br /&gt;
&lt;br /&gt;
[[Bild:tutorial-quarz-schaltplan.png|center|framed| Quarz Standardbeschaltung]]&lt;br /&gt;
&lt;br /&gt;
Die beiden Kondensatoren &#039;&#039;&#039;C3&#039;&#039;&#039; und &#039;&#039;&#039;C4&#039;&#039;&#039; sind zum Betrieb des Quarzes notwendig. Ihre Größe ist abhängig von den Daten des Quarzes. Zur Berechnung ihrer Größe gibt es die folgende Formel:&lt;br /&gt;
&lt;br /&gt;
C=2xCL-(CP+CI)&lt;br /&gt;
&lt;br /&gt;
* CP: Leiterbahnen bedingte Kapazität&lt;br /&gt;
* CI: Portbedingte Kapazität&lt;br /&gt;
* CL: Datenblatt des Quarzes&lt;br /&gt;
CP+CI ca. 5pF ?&lt;br /&gt;
&lt;br /&gt;
Am Beispiel von CL = 32pF:&lt;br /&gt;
&lt;br /&gt;
C = 2x32pF-5pF = 59pF&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Spannungsversorgung ===&lt;br /&gt;
&lt;br /&gt;
Die Versorgungsspannung &#039;&#039;&#039;U&amp;lt;sub&amp;gt;CC&amp;lt;/sub&amp;gt;&#039;&#039;&#039; beträgt 5V und kann z.&amp;amp;nbsp;B. mit der in diesem Kapitel beschriebenen Schaltung erzeugt werden. Falls zum Programmieren des Mikrocontrollers ein [[AVR_In_System_Programmer|ISP-Programmiergerät]] verwendet wird, das an die USB-Schnittstelle angeschlossen ist, kann man die Schaltung auch darüber mit Strom versorgen und dieses Kapitel überspringen.&lt;br /&gt;
&lt;br /&gt;
[[Bild:V_Regler.gif|framed|center|Standard-Netzteilbeschaltung eines 7805]]&lt;br /&gt;
&lt;br /&gt;
Bauteile:&lt;br /&gt;
* IC1: 5V-Spannungsregler 7805&lt;br /&gt;
* C1: Elko 10µF (Polung beachten!)&lt;br /&gt;
* C2,C3: 2x Kondensator 100nF (kein Elektrolyt)&lt;br /&gt;
* D1: Diode 1N4001&lt;br /&gt;
&lt;br /&gt;
Hauptelement der Schaltung ist das IC 7805. Seine Aufgabe ist es aus der Versorgungsspannung stabile 5 V zu erzeugen. Dieses IC gibt es seit vielen Jahren und wird von vielen Chipherstellern produziert. Er stellt die einfachste Möglichkeit dar, aus einer vorhandenen Gleichspannung definierte 5 V zu erzeugen. Den 7805 gibt es in verschiedenen Ausführungen, was seine maximale Strombelastung angeht. Für die Zwecke dieses Tutorials ist die Standard-Variante, welche maximal 1 A abgeben kann, völlig ausreichend. Der 7805 enthält eine Übertemperatursicherung, so dass er abschaltet, wenn es ihm zu heiß wird. Auch ansonsten ist dieser Spannungsregler-IC kaum kaputt zu bekommen.&lt;br /&gt;
&lt;br /&gt;
Die beiden 100-nF-Kondensatoren haben die Aufgabe, eine mögliche Schwingneigung des 7805 zu unterdrücken. Sie müssen so nahe wie möglich an den Anschlusspins des 7805 angeschlossen werden, um ihre Wirkung zu entfalten.&lt;br /&gt;
&lt;br /&gt;
An den Eingang (+ und – im Schaltplan) wird ein Steckernetzteil mit einer Spannung von 7 .. 12 V angeschlossen. Der 7805 benötigt an seinem Eingang eine Gleichspannung, die mindestens 7 V beträgt. Auf der anderen Seite ergibt es auch keinen Sinn, wesentlich über 12 V Eingangsspannung hinauszugehen. Der 7805 ist ein Linearregler. Salopp gesagt, wird die überschüssige Spannung in Form von Wärme vernichtet. Deshalb die Kühlfahne zum thermischen Anschluss an eine Wärmesenke. Liegt die Eingangsspannung weit über 12 V, so wird schon wesentlich mehr Energie in Form von Wärme umgesetzt, als am Ausgang entnommen werden kann. Mal ganz davon abgesehen, dass der 7805 davon brennend heiß wird. Je nach Strombedarf der Gesamtschaltung kann es zweckmäßig sein, einen Schaltregler vorzusehen, wenn die Eingangsspannung stark schwanken kann, etwa für die alternative Speisung mit 24 V aus einem Schaltschrank oder dem LKW-Bordnetz. Für Anfänger führt das zu weit, und ein Kühlblech am 7805 tut es dann auch.&lt;br /&gt;
&lt;br /&gt;
Hier ein paar kleine Rechenbeispiele:&lt;br /&gt;
12 V Eingangsspannung – 5 V Ausgangsspannung = 7 V Differenz x 0,1 A Strombedarf der Schaltung ergibt die Verlustwärme die abgeführt werden muss.&lt;br /&gt;
&lt;br /&gt;
7 V × 0,1 A = 0,7 Watt&lt;br /&gt;
&lt;br /&gt;
Wenn man jetzt eine Eingangsspannung von 7 V nimmt, so dass die Mindestdifferenz von 2V noch eingehalten wird kommen wir zu diesen Werten&lt;br /&gt;
&lt;br /&gt;
2 V ×  0,1 A = 0,2 Watt Abwärme&lt;br /&gt;
2 V × 0,35 A = 0,7 Watt Abwärme oder anders gesagt, können wir der Schaltung 350 mA entnehmen und haben die gleiche Abwärme wie im oberen Beispiel mit nur 100 mA Stromentnahme.&lt;br /&gt;
&lt;br /&gt;
Man sieht, dass man die Eingangsspannung so klein wie möglich wählen sollte um dadurch die Verluste in Grenzen halten zu können. Außerdem ist es meist so, dass für eine geringere Stromentnahme auch eine niedrigere Differenzspannung ausreicht. In manchen Datenblätter ist z.B. angegeben 0,5 A = 1 V Spannungsgefälle und bei 1 A = 2 V Gefälle …&lt;br /&gt;
&lt;br /&gt;
Weiterhin sei gesagt, dass es so genannte Low-Drop-, Ultra-Low-Drop- usw. -Regler gibt, die mit einer viel kleineren Differenz zwischen Ein- und Ausgangsspannung zurechtkommen, wodurch man die Verluste noch weiter drücken kann.&lt;br /&gt;
&lt;br /&gt;
Eine Stromversorgung mit Batterien ist grundsätzlich auch möglich, wenn die elektrischen Grenzdaten des Mikrocontrollers eingehalten werden (max. Spannung, min. Spannung). Bei der geregelten Stromversorgung oben sollte die Batteriespannung ca. 1,5 .. 2,5 V (Dropout-Spannung des Linearreglers) größer sein als die Versorgungsspannung des Controllers. Die [[Versorgung aus einer Zelle]] ist ein Thema für Fortgeschrittene. In der Regel verzichtet man dabei auf die Spannungsregelung, da der Controller in einem weiten Speisespannungsbereich betriebsfähig ist.&lt;br /&gt;
&lt;br /&gt;
=== Beispielhafter Aufbau auf einem [[Steckbrett]] ===&lt;br /&gt;
&lt;br /&gt;
Auf einem [[Steckbrett]] könnte eine Schaltung etwa so aussehen:&lt;br /&gt;
&lt;br /&gt;
[[Bild:tutorial_grundschaltung_breadboard.jpg|600px|center|Steckbrett mit Selbstschaltung Atmega8 und Quarz als externe Taktquelle]]&lt;br /&gt;
&lt;br /&gt;
Hier ist die oben beschriebene Selbstbauschaltung zu sehen.  Spannungsversorgung (links), 6-poliger ISP-Anschluss (rechts hinter dem µC), Quarz mit 2 Kondensatoren statt Oszillator, erweitert um eine LED mit Vorwiderstand an PB0 (rechts vor dem µC), einem Resettaster (links vor dem µC) und einem Stützkondensator zwischen +5V und GND (rechts unten).&lt;br /&gt;
&lt;br /&gt;
=== Der ISP-Programmierer (In-System-Programmer)===&lt;br /&gt;
&lt;br /&gt;
[[Bild:Mikrocontroller.gif|framed|right|ISP Programmierer]]&lt;br /&gt;
Dann braucht man nur noch den &#039;&#039;&#039;ISP-Programmieradapter&#039;&#039;&#039;, über den man die Programme vom PC in den Controller übertragen kann. Eine Übersicht über mögliche ISP-Programmer Varianten findet sich im Artikel [[AVR_In_System_Programmer]].&lt;br /&gt;
&lt;br /&gt;
Fertige ISP-Programmer zum Anschluss an den Parallelport oder USB gibt es z.&amp;amp;nbsp;B. auf http://shop.mikrocontroller.net/. &lt;br /&gt;
&lt;br /&gt;
Eine Bauanleitung gibt es u.a. auf [http://www.rn-wissen.de/index.php/AVR-ISP_Programmierkabel http://www.rn-wissen.de/index.php/AVR-ISP_Programmierkabel] oder [http://rumil.de/hardware/avrisp.html http://rumil.de/hardware/avrisp.html].&lt;br /&gt;
&lt;br /&gt;
Den ISP-Adapter schließt man an den Parallelport an und verbindet ihn mit der Stiftleiste SV1 über ein 6-adriges Kabel (siehe Schaltplan).&lt;br /&gt;
&lt;br /&gt;
=== Sonstiges ===&lt;br /&gt;
&lt;br /&gt;
Wer vorausschauend kauft, kauft mehr als einen Mikrocontroller. Bis der erste Controller defekt ist, oder man durch Austauschen sicher gehen möchte, ob der Fehler im Programm oder im Controller ist, vergeht nur wenig Zeit.&lt;br /&gt;
&lt;br /&gt;
Tipp: Die Preise für Mikrocontroller haben eine deutliche Spannweite, nicht selten ist ein und derselbe Typ für 3 oder 8 Euro zu haben. Oft sind neuere oder größere Modelle billiger (ATmega8A statt ATmega8, ATmega328 statt ATmega8A). Eine Suche im Internet lohnt sich. Das Gleiche gilt für den Kauf von ISP-Programmierern.&lt;br /&gt;
&lt;br /&gt;
Für weitere Kapitel dieses Tutorials sollte man sich noch die folgenden Bauteile besorgen: &lt;br /&gt;
&lt;br /&gt;
---------------------------&lt;br /&gt;
Teil 2 (I/O-Grundlagen)&lt;br /&gt;
* 6 LEDs 5mm (Standard-LED, ruhig auch in unterschiedlichen Farben, rot/gelb/grün)&lt;br /&gt;
* 5 Taster&lt;br /&gt;
* 6 Widerstände 1k&lt;br /&gt;
* 5 Widerstände 10k&lt;br /&gt;
&lt;br /&gt;
---------------------------&lt;br /&gt;
Teil 6 (LC-Display)&lt;br /&gt;
* 1 Potentiometer 10k&lt;br /&gt;
* 1 HD44780-kompatibles LCD, z.&amp;amp;nbsp;B. 4x20 oder 2x16 Zeichen&lt;br /&gt;
*   besitzt das LCD eine Hintergrundbeleuchtung, dann noch einen Vorwiderstand dafür. Details dazu stehen im Datenblatt des LCD. Ein Wert von 50Ω sollte aber in jedem Fall passen. Schlimmstenfalls ist die Hintergrundbeleuchtung dann etwas zu dunkel.&lt;br /&gt;
&lt;br /&gt;
---------------------------&lt;br /&gt;
Teil 10 (Der UART)&lt;br /&gt;
* 1 Pegelwandler MAX232, MAX232&#039;&#039;&#039;A&#039;&#039;&#039; oder MAX202&lt;br /&gt;
* 5 Kondensatoren&lt;br /&gt;
** Bei einem MAX232: je 1µF Elektrolytkondensator&lt;br /&gt;
** Bei einem MAX202 oder MAX232&#039;&#039;&#039;A&#039;&#039;&#039;: je  100nF Keramik- oder Elektrolytkondensator&lt;br /&gt;
:Die Kondensatoren dürfen auch größer sein. Ist man sich nicht sicher, welchen MAX232 man hat (A oder nicht A), dann die größeren Kondensatoren 1µF nehmen, die funktionieren auch beim MAX232A oder MAX202.&lt;br /&gt;
* 1 9-polige SUBD-Buchse (female)&lt;br /&gt;
* 1 dazu passendes Modem(nicht Nullmodem!)-Kabel&lt;br /&gt;
&lt;br /&gt;
---------------------------&lt;br /&gt;
Teil 14 (ADC)&lt;br /&gt;
* 1 Kondensator 100n&lt;br /&gt;
* 1 Potentiometer 10k&lt;br /&gt;
* nach Lust und Laune temperatur- oder lichtabhängige Widerstände und jeweils einen Widerstand in der gleichen Größenordnung wie der Sensor&lt;br /&gt;
&lt;br /&gt;
---------------------------&lt;br /&gt;
Teil 17 (Schieberegister)&lt;br /&gt;
* 2 Schieberegister 74HC595&lt;br /&gt;
* einige LED, damit man an die Schieberegister auch etwas anschließen kann, samt passenden Vorwiderständen&lt;br /&gt;
&lt;br /&gt;
---------------------------&lt;br /&gt;
Teil 19 (7-Segmentanzeige)&lt;br /&gt;
* 4 7-Segmentanzeigen mit gemeinsamer Anode&lt;br /&gt;
* 4 PNP-Transistoren BC328&lt;br /&gt;
* 4 Widerstände 1k&lt;br /&gt;
* 7 Widerstände 100Ω&lt;br /&gt;
&lt;br /&gt;
Für weitere Bauteile, die man als angehender µC Bastler auch des Öfteren mal benötigt, empfiehlt sich ein Blick in die Liste der [[Standardbauelemente]] bzw. in die [[Absolute_beginner|Grundausstattung]]. Wenn Ihr Händler Großpackungen (zb. 100 Stück) von 100n Kondensatoren, 10k, 1k oder 100Ω Widerständen anbietet, sollten Sie deren Erwerb in Erwägung ziehen. Diese Bauteile benötigt man oft, und derartige Großpackungen sind meist nicht teurer, als wenn man einige wenige Exemplare einzeln kauft. Dies hängt damit zusammen, dass das Herauszählen von 9 Bauteilen für den Verkäufer teurer kommt, als 100 Bauteile abgepackt aus dem Regal zu nehmen.&lt;br /&gt;
&lt;br /&gt;
== Software ==&lt;br /&gt;
&lt;br /&gt;
In diesem Tutorial wird nur auf die Programmierung in Assembler eingegangen, da Assembler für das Verständnis der Hardware am besten geeignet ist.&lt;br /&gt;
&lt;br /&gt;
=== Assembler ===&lt;br /&gt;
&lt;br /&gt;
Zuerst braucht man einen &#039;&#039;&#039;Assembler&#039;&#039;&#039;, der in Assemblersprache geschriebene Programme in Maschinencode übersetzt. Windows-User können das [http://www.atmel.com/dyn/products/tools_card.asp?tool_id=2725 AVR-Studio] von Atmel verwenden, das neben dem Assembler auch einen Simulator enthält, mit dem sich die Programme vor der Übertragung in den Controller testen lassen; für Linux gibt es [http://www.tavrasm.org/ tavrasm], [http://avra.sourceforge.net/ avra] und [http://avr-asm-tutorial.net/gavrasm/index_de.html gavrasm]. &lt;br /&gt;
&lt;br /&gt;
Um die vom Assembler erzeugte &amp;quot;.hex&amp;quot;-Datei über den ISP-Adapter in den Mikrocontroller zu programmieren, kann man unter Windows z.&amp;amp;nbsp;B. das Programm [http://www.myplace.nu/avr/yaap/ yaap] verwenden, für Linux gibt es [http://savannah.nongnu.org/projects/uisp/ uisp], für beide [http://www.mikrocontroller.net/articles/AVRDUDE avrdude].&lt;br /&gt;
&lt;br /&gt;
=== C ===&lt;br /&gt;
Wer in C programmieren möchte, kann den kostenlosen GNU-C-Compiler AVR-GCC (unter Windows &amp;quot;WinAVR&amp;quot;) ausprobieren. Dieser C-Compiler kann auch in das für Assembler-Programmierung notwendige AVR-Studio integriert werden. In der Artikelsammlung gibt es ein umfangreiches [[AVR-GCC-Tutorial|Tutorial]] zu diesem Compiler;&lt;br /&gt;
&lt;br /&gt;
Wer unter Windows und Linux gleichermassen kostenlos entwickeln will, der sollte sich die [http://www.eclipse.org/ IDE Eclipse for C/C++ Developers] und das [http://avr-eclipse.sourceforge.net/wiki/index.php/The_AVR_Eclipse_Plugin AVR-Eclipse Plugin ] ansehen, beide sind unter Windows und Linux einfach zu installieren. Hier wird auch der AVR-GCC benutzt. In der Artikelsammlung gibt es ein umfangreiches [[AVR Eclipse|AVR Eclipse Tutorial]] zu dieser IDE.&lt;br /&gt;
Ebenfalls unter Linux und Windows verfügbar ist die Entwicklungsumgebung [http://www.codeblocks.org/ Code::Blocks] (aktuelle, stabile Versionen sind als Nightly Builds regelmäßig im [http://forums.codeblocks.org/ Forum] verfügbar). Innerhalb dieser Entwicklungsumgebung können ohne die Installation zusätzlicher Plugins &amp;quot;AVR-Projekte&amp;quot; angelegt werden.&lt;br /&gt;
&lt;br /&gt;
Fragen dazu stellt man am besten hier im [http://www.mikrocontroller.net/forum/list-2-1.html GCC-Forum].&lt;br /&gt;
&lt;br /&gt;
=== Pascal ===&lt;br /&gt;
Wer in Pascal programmieren muss, kann [http://www.e-lab.de AVRPascal] ausprobieren.&amp;lt;br&amp;gt; &lt;br /&gt;
Dieser Pascalcompiler ist kostenfrei bis 4kb Code und bietet viele ausgereifte Bibliotheken für Servoansteuerung, Serielle Schnittstellen (COM, TWI, SPI), PWM, Timernutzung, LC-Displays usw.&amp;lt;br&amp;gt; &lt;br /&gt;
Außerdem gibt es eine kostenfreie Version für den Mega8 und den Mega88.&lt;br /&gt;
[http://www.e-lab.de E-LAB].&lt;br /&gt;
&lt;br /&gt;
=== Basic ===&lt;br /&gt;
Auch Basic-Fans kommen nicht zu kurz, für die gibt es z.&amp;amp;nbsp;B. [[Bascom AVR]] ($69, Demo verfügbar) oder das kostenlose [[http://avr.myluna.de LunaAVR]].&lt;br /&gt;
&lt;br /&gt;
=== Forth ===&lt;br /&gt;
Wer einen direkten und interaktiven Zugang zum Controller haben will, sollte sich [http://amforth.sourceforge.net Forth] anschauen. Voraussetzung ist ein serieller Anschluß (Max232), also etwas mehr als die Minimalbeschaltung.&lt;br /&gt;
&lt;br /&gt;
== Bereit für das erste Programm? ==&lt;br /&gt;
&lt;br /&gt;
Zum nächsten Kapitel geht es erst, wenn man Hard- und Software in einer Weise zum Funktionieren gebracht hat, dass:&lt;br /&gt;
* die Programmiersoftware das Programmiergerät erkennt&lt;br /&gt;
* die Programmiersoftware den Mikrocontroller erkennt (alle heute üblichen Controller haben eine typspezifische Selbsterkennung), dazu muss der Controller mit Strom versorgt sein&lt;br /&gt;
* die verwendete Erstell-Software (bspw. der Assembler) aus einem leeren oder Beispiel-Projekt eine Programmier-Datei erstellt (meistens eine .HEX-Datei), die man in die Programmiersoftware laden kann (noch nicht in den Controller programmieren!)&lt;br /&gt;
Diesen arbeitsfähigen Zustand zu erreichen ist im Eigenbau (etwa dem Steckbrett) schwieriger als mit einem Starterkit — und der wichtigste Grund warum viele das Geld für das ansonsten nutzlose Starterkit ausgeben.&lt;br /&gt;
&lt;br /&gt;
== Literatur ==&lt;br /&gt;
Bevor man anfängt, sollte man sich die folgenden PDF-Dateien runterladen und zumindest mal reinschauen:&lt;br /&gt;
&lt;br /&gt;
* [http://www.atmel.com/dyn/resources/prod_documents/doc2486.pdf Datenblatt des ATmega8 (4,54 MB)]&lt;br /&gt;
* [http://www.atmel.com/dyn/resources/prod_documents/doc0856.pdf Befehlssatz der AVRs (1,27 MB)]&lt;br /&gt;
* oder [http://www.avr-modelleisenbahn.de/controller/befehle/avr-befehle.htm Befehlssatz in deutscher Übersetzung online]&lt;br /&gt;
* oder [http://www.avr-modelleisenbahn.de/controller/atmega8/atmega8.htm Datenblatt des ATmega8 in deutscher Übersetzung online]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Das Datenblatt eines Controllers ist das wichtigste Dokument für einen Entwickler. Es enthält Informationen über die Pinbelegung, Versorgungsspannung, Beschaltung, Speicher, die Verwendung der IO-Komponenten und vieles mehr.&lt;br /&gt;
&lt;br /&gt;
Im Befehlssatz sind alle Assemblerbefehle der AVR-Controllerfamilie aufgelistet und erklärt.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
 &lt;br /&gt;
{{Navigation_hochvor|	 &lt;br /&gt;
hochtext=Inhaltsverzeichnis|	 &lt;br /&gt;
hochlink=AVR-Tutorial|	 &lt;br /&gt;
vortext=I/O Grundlagen|	 &lt;br /&gt;
vorlink=AVR-Tutorial: IO-Grundlagen}}	 &lt;br /&gt;
 &lt;br /&gt;
[[Category:AVR-Tutorial|Equipment]]&lt;/div&gt;</summary>
		<author><name>87.180.2.162</name></author>
	</entry>
</feed>