<?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=Axelac</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=Axelac"/>
	<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/articles/Spezial:Beitr%C3%A4ge/Axelac"/>
	<updated>2026-04-12T10:41:20Z</updated>
	<subtitle>Benutzerbeiträge</subtitle>
	<generator>MediaWiki 1.39.7</generator>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=STM32&amp;diff=77248</id>
		<title>STM32</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=STM32&amp;diff=77248"/>
		<updated>2013-06-24T19:03:57Z</updated>

		<summary type="html">&lt;p&gt;Axelac: /* Demo-Projekte */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;STM32 ist ein Mikrocontroller-Familie von [http://www.st.com/mcu/inchtml-pages-stm32.html ST] mit einer 32-Bit [http://www.arm.com/products/processors/cortex-m/index.php ARM Cortex-M0/M3/M4] CPU. Diese Architektur ist speziell für den Einsatz in Microcontrollern neu entwickelt und löst damit die bisherigen ARM7-basierten Controller weitestgehend ab. Den STM32 gibt es von ST in unzähligen Varianten mit variabler Peripherie und verschiedenen Gehäusegrößen und -formen. Durch die geringe Chipfläche des Cores ist es ST möglich, eine 32 Bit-CPU für weniger als 1&amp;amp;nbsp;€ anzubieten.&lt;br /&gt;
&lt;br /&gt;
[[Bild:stm32F103xc.png|thumb|right|340px|Blockdiagramm STM32F103xC/D/E]]&lt;br /&gt;
&lt;br /&gt;
== STM32-Familien ==&lt;br /&gt;
&lt;br /&gt;
Bisher gibt es sieben STM32-Familien:&lt;br /&gt;
* [http://www.st.com/internet/mcu/subclass/1588.jsp STM32F0]&lt;br /&gt;
** Cortex M0&lt;br /&gt;
** Mikrocontroller zum Einstieg&lt;br /&gt;
** Bis 48MHz&lt;br /&gt;
* [http://www.st.com/internet/mcu/subclass/1169.jsp STM32F1]&lt;br /&gt;
** Cortex M3&lt;br /&gt;
** Bis 72MHz&lt;br /&gt;
**Verschiedene Unterfamilien:&lt;br /&gt;
*** Connectivity line&lt;br /&gt;
*** Performance line&lt;br /&gt;
*** USB Access line&lt;br /&gt;
*** Access Line&lt;br /&gt;
*** Value line&lt;br /&gt;
* [http://www.st.com/web/en/catalog/mmc/FM141/SC1169/SS1575 STM32F2]&lt;br /&gt;
** Cortex M3&lt;br /&gt;
** Bis 120MHz&lt;br /&gt;
** Wie die STM32F1 Serie, Camera-Interface, 32-Bit Timer, Crypto-Engine...&lt;br /&gt;
* [http://www.st.com/internet/mcu/subclass/1605.jsp STM32F3]&lt;br /&gt;
** Cortex M4F&lt;br /&gt;
** DSP und FPU&lt;br /&gt;
** Bis 72MHz&lt;br /&gt;
** Fast 12-bit 5 MSPS and precise 16-bit sigma-delta ADCs&lt;br /&gt;
** Touch sensing controller (TSC)&lt;br /&gt;
* [http://www.st.com/internet/mcu/subclass/1521.jsp STM32F4]&lt;br /&gt;
** Cortex M4F&lt;br /&gt;
** DSP und FPU&lt;br /&gt;
** Bis 180MHz&lt;br /&gt;
** Bis zu 2MB Flash&lt;br /&gt;
* [http://www.st.com/web/en/catalog/mmc/FM141/SC1169/SS1295 STM32L1]&lt;br /&gt;
** Cortex M3&lt;br /&gt;
** Low Power &lt;br /&gt;
** mit LCD Treiber&lt;br /&gt;
** Bis 32MHz&lt;br /&gt;
* [http://www.st.com/web/en/catalog/mmc/FM141/SC1169/SS1581 STM32W]&lt;br /&gt;
** Cortex M3&lt;br /&gt;
** BIS 24MHz&lt;br /&gt;
** RF-MCU &lt;br /&gt;
[http://www.st.com/internet/mcu/class/1734.jsp Hier eine Übersicht zum Auswählen eines STM32Fxxx]&lt;br /&gt;
&lt;br /&gt;
===Features===&lt;br /&gt;
* Cortex-M0 / Cortex-M3 / Cortex-M4F Kern (mit FPU)&lt;br /&gt;
* 16KB ... 2MB  [[Flash-ROM]]&lt;br /&gt;
*  4KB ... 256KB [[Speicher#SRAM|SRAM]]&lt;br /&gt;
* 4KB [[Speicher#EEPROM|EEPROM]] (STM32L)&lt;br /&gt;
* 512 one-time programmable Bytes(STM32F2/4)&lt;br /&gt;
* [[IC-Gehäuseformen | Gehäuse]] 36 ... 216 Pins als QFN, LQFP und BGA&lt;br /&gt;
* Derzeit sind über &#039;&#039;&#039;250&#039;&#039;&#039; STM32 Derivate/Varianten verfügbar&lt;br /&gt;
* Bis 72MHz CPU-Takt, bis 120MHz beim STM32F2xx, bis 168/180 MHz beim STM32F4xx, wobei eine spezielle prefetch-hardware bis 120/168 MHz eine Geschwindigkeit erzielen soll, die 0 Wait-States entspricht. Der CPU-Takt wird über einen Multiplikator aus dem internen RC-Takt oder einem externen Quarz-Takt abgeleitet.&lt;br /&gt;
* Externes Businterface (nur bei Gehäusen ab 100 Pin und nur bei STM32F4, STM32F2 und STM32F1 Performance line)&lt;br /&gt;
* LCD Treiber für 8x40 Punkte (nicht beim STM32F2xx)&lt;br /&gt;
* TFT Treiber bei STM32F429 / STM32F439&lt;br /&gt;
* Spannungsbereich 1,65 ... 3,6V, nur eine Betriebsspannung nötig&lt;br /&gt;
* Temperaturbereich bis 125 °C&lt;br /&gt;
* Bis zu 140 IOs, viele davon [[Pegelwandler|5V-tolerant]]&lt;br /&gt;
* Interner, kalibrierter RC-Oszillator mit 8MHz (16MHz bei STM32F2/F4xx)&lt;br /&gt;
* Externer Quarz&lt;br /&gt;
* Real Time Clock mit eigenem Quarz und separater Stromversorgung&lt;br /&gt;
* Bis zu 16 [[Timer]], je Timer bis zu 4 IC/OC/PWM Ausgänge. Davon 2x Motion Control Timer (bei STM32F103xF/G)&lt;br /&gt;
* Systick Counter&lt;br /&gt;
* Bis zu 3 12-Bit [[AD-Wandler]] mit insgesamt 24 AD-Eingängen, integrierter [[Temperatursensor]], Referenzspannung Vrefint und VBatt Spannungsmessung (STM32F4xx)&lt;br /&gt;
* Bis zu 2 12-Bit [[DA-Wandler]] (bis zu 3 beim STM32F3xx)&lt;br /&gt;
* Bis zu 2 [[DMA]] Controller mit bis zu 12 Kanälen (16 beim STM32F2/4xx)&lt;br /&gt;
* Bis zu 2x [[I2C|I²C]]&lt;br /&gt;
* Bis zu 5x [[UART|USART]] mit LIN, IrDA und Modem Control (bis zu 8 beim STM32F2/F4xx)&lt;br /&gt;
* Bis zu 3x [[SPI]] (bis zu 6 beim STM32F4xx)&lt;br /&gt;
* Bis zu 2x [[I2S|I²S]]&lt;br /&gt;
* Bis zu 2x [[CAN]]&lt;br /&gt;
* Unique device ID register (96 Bits)&lt;br /&gt;
* RNG - Random Number Generator (STM32F2/4xx)&lt;br /&gt;
* Cryptographic Processor (CRYP) (STM32F2/4xx)&lt;br /&gt;
* Hash Processor (HASH) (STM32F2/4xx)&lt;br /&gt;
* Kamera-Interface (DCMI) (STM32F2/4xx)&lt;br /&gt;
* [[USB]] 2.0 Full Speed / OTG&lt;br /&gt;
* [[USB]] 2.0 Hi Speed OTG mit extra PHY-Chip (STM32F2/4xx)&lt;br /&gt;
* SDIO Interface (z.B. SD-Card Reader)&lt;br /&gt;
* Ethernet&lt;br /&gt;
* Watchdog mit Window-Mode&lt;br /&gt;
* Jedes Peripheriemodul ist separat einschaltbar, wodurch sich erheblich [[Ultra low power|Strom sparen]] lässt&lt;br /&gt;
* [[JTAG]] und SWD (Serial Wire Debug) Interface&lt;br /&gt;
* Bis zu 6 Hardware-Breakpoints für Debuggen&lt;br /&gt;
* und vieles mehr . . .&lt;br /&gt;
&lt;br /&gt;
== Struktur der Dokumentation: ==&lt;br /&gt;
Die Dokumentation der STM32 ist zwar umfangreicher und komplexer z.B. die der [[AVR]], enthält aber dennoch alle nötigen Informationen. Sie teilt sich auf in mehrere Dokumente.&lt;br /&gt;
Als Beispiel der Dokumentation soll stellvertretend der [http://www.st.com/web/en/catalog/mmc/FM141/SC1169/SS1031/LN1565/PF164486 STM32F103RC] genannt werden. Die Seite von ST beinhaltet alle nötigen Informationen passend zu diesem Prozessor.&lt;br /&gt;
&lt;br /&gt;
Diese Dokumente von ST beschreiben den Controller:&lt;br /&gt;
&lt;br /&gt;
* Im [http://www.st.com/st-web-ui/static/active/en/resource/technical/document/datasheet/CD00191185.pdf STM32F103xC/D/E Datasheet] sind die speziellen Eigenschaften einer bestimmten Modellreihe beschrieben und die exakten Daten und Pinouts aufgeführt, sowie die Zuordnung Chipname - Flash/RAM-Größe. Die Peripheriemodule werden nur aufgeführt, nicht detailliert beschrieben.&lt;br /&gt;
* Im [http://www.st.com/st-web-ui/static/active/en/resource/technical/document/reference_manual/CD00171190.pdf Reference Manual (RM0008)] sind alle Peripheriemodule der jeweiligen STM32-Controllerfamilie im Detail beschrieben.&lt;br /&gt;
* Das [http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.ddi0403c/index.html ARMv7M Architecture Reference Manual] beschreibt detailliert den Prozessorkern, wie das Exception Model, die CPU Instruktionen inklusive Encoding, etc.&lt;br /&gt;
* Das [http://www.st.com/st-web-ui/static/active/en/resource/technical/document/programming_manual/CD00228163.pdf STM32 Cortex-M3 Programming Manual] ist eine Zusammenfassung des ARMv7M Architecture Reference Manual bezogen auf die STM32.&lt;br /&gt;
* Wer nicht die ST Firmware-Library verwendet, der benötigt zusätzlich das [http://www.st.com/st-web-ui/static/active/en/resource/technical/document/programming_manual/CD00283419.pdf Flash Programming Manual] für die Betriebsart des Flash-ROMs, d.h. die frequenzabhängige Konfiguration der Waitstates.&lt;br /&gt;
&lt;br /&gt;
Zusätzlich sollten auch die [http://www.st.com/st-web-ui/static/active/en/resource/technical/document/errata_sheet/CD00197763.pdf Errata Sheets] beachtet werden. Empfohlen sei auch die Appnote &amp;quot;[http://www.st.com/web/en/resource/technical/document/application_note/CD00164185.pdf AN2586 Getting started with STM32F10xxx hardware development]&amp;quot;.&lt;br /&gt;
Die jeweiligen Dokumentations-PDFs sind auf der Produktseite von ST eines jeden Mikrocontrollers verlinkt.&lt;br /&gt;
&lt;br /&gt;
== Hardware Zugriffs-Libraries ==&lt;br /&gt;
=== CMSIS ===&lt;br /&gt;
&lt;br /&gt;
Die CMSIS (ARM® &#039;&#039;&#039;C&#039;&#039;&#039;ortex™ &#039;&#039;&#039;M&#039;&#039;&#039;icrocontroller &#039;&#039;&#039;S&#039;&#039;&#039;oftware &#039;&#039;&#039;I&#039;&#039;&#039;nterface &#039;&#039;&#039;S&#039;&#039;&#039;tandard) ist eine Library von ARM für den Zugriff auf die herstellerübergreifenden Funktionend es ARM-Cores. Hierzu gehört bei den Cortex-M4F-Cores auch die DSP und Floating-Point Funktionalität. Weiterhin existieren eine Zahl von Helferfunktionen für den NVIC, den Sys-Tick-Counter, sowie eine SystemInit-Funktion, welche sich um die PLL kümmert. &lt;br /&gt;
&lt;br /&gt;
Im Rahmen des CMSIS-Standards ([http://www.onARM.com www.onARM.com]) wurden die Headerdateien standardisiert, der Zugriff auf die Register erfolgt per &#039;&#039;&#039;Peripheral-&amp;gt;Register&#039;&#039;&#039;. Die CMSIS C-Dateien bzw. Header enthalten auch Anpassungen für die verschiedenen Compiler. Die Portierung eines Real-Time-Betriebsystems sollte unter Verwendung der CMSIS, für Chips der verschiedenen Hersteller, stark vereinfacht möglich sein (z.B. einheitliche Adressen für Core-Hardware/Sys-Tick-Counter).&lt;br /&gt;
&lt;br /&gt;
Die CMSIS ist im Download der ‎STM32 Standard Peripheral Library enthalten. Die Compiler-Hersteller liefern eine jeweils zur ihrer Tool-Version passende bzw. geprüfte Library (incl. CMSIS) aus. Diese Libs können, gegenüber den Downloads beim Chip-Hersteller, auch ältere Version beinhalten.&lt;br /&gt;
&lt;br /&gt;
=== ‎STM32 Standard Peripheral Library ===&lt;br /&gt;
&lt;br /&gt;
ST bietet für jede Controller Familie eine umfangreiche zur CMSIS passende Peripherie-Bibliothek. Alle Funktionen um die Peripherie zu benutzen sind gekapselt in einfache Strukturen und Funktionsaufrufe. Somit muss man sich nicht selbst um die Peripherie-Register kümmern. Diese Library und ihre Dokumentation setzen das grundlegende Verständnis der Funktion des jeweiligen Peripheriemoduls voraus, wie es die o.A. Referenz und diverse Appnotes vermitteln. Die Library beinhaltet außerdem für fast jede Peripherie mehrere Beispiele.&lt;br /&gt;
Für die USB Schnittstelle gibt es noch eine extra Library, genauso wie für Ethernet.&lt;br /&gt;
&lt;br /&gt;
Auf der &amp;quot;Design Resources&amp;quot; Seite der Produktseite von ST eines jeden STM32 Mikrocontrollers kann die Library für den jeweiligen Controller downgeladen werden, z.B. [http://www.st.com/web/en/catalog/tools/PF257890 hier] für den o.g. STM32F103RC.&lt;br /&gt;
&lt;br /&gt;
== Programmierung ==&lt;br /&gt;
Zur Programmierung der STM32 gibt es verschiedene Möglichkeiten, sowohl kommerzielle proprietäre als auch mit Freier Software.&lt;br /&gt;
&lt;br /&gt;
Der GCC (in seinen verschiedenen Binärdistributionen) ist der einzige ARM Compiler der [http://de.wikipedia.org/wiki/C%2B%2B11 C++11] unterstützt.&lt;br /&gt;
&lt;br /&gt;
=== Freie Software/Freeware ===&lt;br /&gt;
==== Selber zusammenstellen ====&lt;br /&gt;
Man nehme...:&lt;br /&gt;
* Eine Entwicklungsumgebung nach Wahl:&lt;br /&gt;
** [http://www.eclipse.org Eclipse] mit [http://www.eclipse.org/cdt/ C/C++ Development Tooling] und [http://gnuarmeclipse.livius.net/blog/ GNU ARM Plug-in] (Bei Verwendung vom GCC-ARM-Embedded als Toolchain &amp;quot;Sourcery G++ Lite&amp;quot; auswählen, dieser sieht für eclipse gleich aus)&lt;br /&gt;
** [http://netbeans.org/ Netbeans] mit [http://plugins.netbeans.org/plugin/37426/gdbserver GDBserver-Plugin]&lt;br /&gt;
** [http://www.kdevelop.org/ KDevelop]&lt;br /&gt;
** [http://www.geany.org/ Geany]&lt;br /&gt;
** Oder ein einfacher Texteditor&lt;br /&gt;
* Einen C,C++ Compiler:&lt;br /&gt;
** [https://launchpad.net/gcc-arm-embedded GCC-ARM-Embedded] wird von ARM selbst gepflegt, siehe auch [[#GCC|GCC]]&lt;br /&gt;
** [http://www.yagarto.de Yagarto Tools] funktionieren nicht mit FPU&lt;br /&gt;
* Programmiersoftware zum Flashen des Target:&lt;br /&gt;
** [http://openocd.sourceforge.net/ OpenOCD] unterstützt viele Debug/Programmier-Adapter&lt;br /&gt;
** [https://github.com/texane/stlink Texane stlink] funktioniert gut mit den ST-Link Adaptern wie sie zB. auf den STM32 Discovery Boards zu finden sind&lt;br /&gt;
** Turtelizer2 oder andere JTAG Programmieradapter&lt;br /&gt;
&lt;br /&gt;
==== Komplette IDE&#039;s ====&lt;br /&gt;
* [http://www.codesourcery.com/sgpp/lite_edition.html Codesourcery Lite Edition]&lt;br /&gt;
* [http://www.coocox.org/ Coocox Eclipse IDE] kostenlose IDE für STM32F0 / F1 / F4 Hilfreiche Infos gibt es im [http://www.mikrocontroller.net/topic/214719?goto=new#2228482 hier] und [http://www.mikrocontroller.net/topic/214719?goto=new#2229943 hier] Forum&lt;br /&gt;
* [http://emide.org/ emIDE] kostenlose IDE die mit dem Segger J-LINK funktioniert.&lt;br /&gt;
=== Mehr Links ===&lt;br /&gt;
* Eclipse Plugin &amp;quot;GDB Hardware Debugging&amp;quot; mit [http://www.firefly-power.de/ARM/debugging.html OpenOCD server]&lt;br /&gt;
* [http://www.st.com/internet/com/software/ides_mcu.jsp#stm32 ST Liste: IDEs, Toolsets and Debug tools for MCUs]&lt;br /&gt;
* Zum Starten eine fertige Zusammenstellung: [http://www.mikrocontroller.net/topic/216554 Eclipse+codesourcery+st-link]&lt;br /&gt;
* [http://www.mikrocontroller.net/topic/265600 STM32F4 mit Code::Blocks]&lt;br /&gt;
* Sehr nützlich für Linux-Anwender auch diese Seite: [http://fun-tech.se/stm32/index.php STM32/ARM Cortex-M3 HOWTO: Development under Ubuntu.]&lt;br /&gt;
* [http://www.seng.de/downloads/HowTo_ToolChain_STM32_Ubuntu.pdf How-to manual - Installing a toolchain for Cortex-M3/STM32 on Ubuntu] ([http://www.seng.de/downloads/HowTo_ToolChain_STM32_Ubuntu.odt Das Gleiche im bearbeitbaren ODT-Format]) &lt;br /&gt;
&lt;br /&gt;
=== Eclipse für STM32 (Windows) ===&lt;br /&gt;
==== Installation ====&lt;br /&gt;
Hier ist der Anfang des Artikels [[STM32 Eclipse Installation]], hier ist neueres beschrieben als hier aufgeführt. Wenn der Artikel fertig ist, dann wird dieser Teil gelöscht.&lt;br /&gt;
&lt;br /&gt;
* Eclipse &amp;quot;Helios&amp;quot; installieren mit GNU ARM Eclipse Plug-in&lt;br /&gt;
Eclipse IDE for C/C++ Developers&amp;lt;ref&amp;gt;http://www.eclipse.org/downloads/packages/eclipse-ide-cc-developers/heliosr&amp;lt;/ref&amp;gt; downloaden und installieren&lt;br /&gt;
&lt;br /&gt;
* GNU ARM Eclipse Plug-in&amp;lt;ref&amp;gt;http://sourceforge.net/projects/gnuarmeclipse/&amp;lt;/ref&amp;gt; runterladen und installieren. [http://sourceforge.net/apps/mediawiki/gnuarmeclipse/index.php?title=Main_Page Weitere Infos].&lt;br /&gt;
&lt;br /&gt;
Wird CodeSourcery G++ Lite verwendet, so muss die PATH Variable angepasst &lt;br /&gt;
werden, damit das Plugin die CodeSourcery exe-Files findet&amp;lt;ref&amp;gt;für Discovery notwendig&amp;lt;/ref&amp;gt;. Alternativ das eclipse von einem script aus starten und zuerst den PATH erweitern.&lt;br /&gt;
&lt;br /&gt;
Soll das ST-LINK verwendet werden, so kann der Atollic ST-LINK GDBSERVER aus der Atollic free version genutzt werden. Mit dem gdbclient im Eclipse kann damit problemlos geflasht und gedebuggt werden (JTAG und SWD). &lt;br /&gt;
&lt;br /&gt;
Neuere Versionen von OpenOCD können ebenfalls mit STLINK und STLINK2 Kontakt aufnehmen. Bei vorkompilierten OpenOCD-Packeten (z.B. die von Freddy Chopin) mit libusb-Support und installiertem Herstellertreiber von STM ist noch der libusb-Filtertreiber einzurichten (relativ einfach per libusb-win32 filter wizard GUI).&lt;br /&gt;
&lt;br /&gt;
Die Startup- und Linkerscripts der Atollic free version können für ein Projekt in dieser Konstallation genutzt werden.&lt;br /&gt;
&lt;br /&gt;
* Eclipse &amp;quot;Galileo&amp;quot; installation&amp;lt;ref&amp;gt;[http://www.eclipse.org/] → Downloads → &amp;quot;Eclipse IDE for C/C++ Developers (79 MB)&amp;lt;/ref&amp;gt;. Und das Servicepack 1&amp;lt;ref&amp;gt;[http://www.eclipse.org/downloads/download.php?file=/technology/epp/downloads/release/galileo/SR1/eclipse-cpp-galileo-SR1-win32.zip Eclipse SR1]&amp;lt;/ref&amp;gt;&lt;br /&gt;
Entpacken der Datei eclipse-cpp-galileo-SR1-win32.zip nach &amp;quot;C:\WinARM\&amp;quot; (Ordner neu erstellen)&lt;br /&gt;
&lt;br /&gt;
* Eclipse PlugIn&amp;lt;ref&amp;gt;http://download.eclipse.org/tools/cdt/releases/galileo&amp;lt;/ref&amp;gt; hinzufügen: Help → Install New Software... → &amp;quot;Eclipse C/C++ Development Tools&amp;quot; + &amp;quot;Eclipse C/C++ GDB Hardware Debugging&amp;quot; installieren&lt;br /&gt;
&lt;br /&gt;
* Yagarto Tools&amp;lt;ref&amp;gt;[http://www.yagarto.de/] &amp;quot;Download (for Windows)&amp;quot; → &amp;quot;YAGARTO Tools&amp;quot; http://www.yagarto.de/download/yagarto/yagarto-tools-20091223-setup.exe Installieren, Auswahl Verzeichnis &amp;quot;C:\WinARM\yagarto-tools&amp;quot;&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* CodeSourcery: Achtung! Die Menustruktur ändert sich durchaus mal, dann suchen gehen. http://www.codesourcery.com/ → Products → Sourcery G++ → Editions&amp;gt;Lite Edition → ARM → Downloads. Direkter Download&amp;lt;ref&amp;gt;[http://www.codesourcery.com/sgpp/lite/arm/portal/package6496/public/arm-none-eabi/arm-2010q1-188-arm-none-eabi.exe]&amp;lt;/ref&amp;gt;. Installieren, Auswahl Verzeichnis &amp;quot;C:\WinARM\CodeSourcery&amp;quot;&lt;br /&gt;
&lt;br /&gt;
* OpenOCD: Kompilierte Version für Windows&amp;lt;ref&amp;gt;[http://www.freddiechopin.info/] → Download → Software → OpenOCD&amp;lt;/ref&amp;gt; installieren nach &amp;quot;C:\WinARM\OpenOCD_0_4_0&amp;quot; ist auch auf der Seite&amp;lt;ref&amp;gt;[http://yagarto.de/#ocd Yagarto.de]&amp;lt;/ref&amp;gt; beschrieben. PS: Sollte der Olimex ARM-USB-OCD verwendet werden, dann darf nicht der Treiber von Olimex verwendet werden, sondern der vom OpenOCD Download&amp;lt;ref&amp;gt;[http://www.mikrocontroller.net/topic/173753#1668913]&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
* ST Firmware: http://www.st.com → Auswahl CPU STM32F103xxx → &amp;quot;Firmware&amp;quot; &amp;quot;STM32F10x_StdPeriph_Lib&amp;quot;&amp;lt;ref&amp;gt;http://www.st.com/mcu/devicedocs-STM32F103RC-110.html&amp;lt;/ref&amp;gt;. Das ZIP &amp;quot;stm32f10x_stdperiph_lib.zip&amp;quot; Entpacken nach &amp;quot;C:\WinARM\examples\stm32_FW3.4.0\&lt;br /&gt;
&lt;br /&gt;
==== Installation für STM32 auf einem zweiten Rechner====&lt;br /&gt;
&lt;br /&gt;
* Kopieren des Verzeichnisses C:\WinARM\ (Zuvor wurden aus diesem Grund alle Setup-Pakete nach C:\WinARM\... installiert)&lt;br /&gt;
* Die PATH-Variable in der Systemsteuerung mit den C:\WinARM\.... Verzeichnissen nachführen&lt;br /&gt;
* Fertig.&lt;br /&gt;
&lt;br /&gt;
==== Installation für STM32 mit AtollicTrueStudio (+Demo) ====&lt;br /&gt;
* Installation + Demo: [[STM32 LEDBlinken AtollicTrueStudio]]&lt;br /&gt;
&lt;br /&gt;
==== Installation für STM32 mit MDK-ARM Lite und Einstellungen STM32F0/F4-Discovery Board ====&lt;br /&gt;
* [https://www.keil.com/demo/eval/arm.htm KEIL MDK-ARM Download]&lt;br /&gt;
* [https://www.youtube.com/watch?v=RXOOxby5nns&amp;amp;list=PL6-W3FoUyb48WFI5PQv3SDJj2G1t2FonV&amp;amp;index=1 Installations Video STM32F4 Discovery Board]&lt;br /&gt;
* [https://www.youtube.com/watch?annotation_id=annotation_203294&amp;amp;feature=iv&amp;amp;index=4&amp;amp;list=PL6-W3FoUyb48WFI5PQv3SDJj2G1t2FonV&amp;amp;src_vid=sN4gDZ7H8gw&amp;amp;v=BeZcQjXxk9A Einstellungen STM32F0 Discovery Board Video]&lt;br /&gt;
&lt;br /&gt;
==== Installation für STM32 mit SiSy ARM ====&lt;br /&gt;
* Download: [http://www.sisy.de/index.php?id=59 SiSy DEMO] kein Begrenzung der Codegröße&lt;br /&gt;
* [http://www.youtube.com/watch?v=84Y3jYLWYpo Videobeispiel]&lt;br /&gt;
&lt;br /&gt;
==== Installation für STM32 mit Code::Blocks ====&lt;br /&gt;
* Download: [http://www.comsytec.eu/epsdebugger.php EPS Debugger plugin für STM32]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Kommerzielle Umgebungen ===&lt;br /&gt;
&lt;br /&gt;
* [http://www.keil.com/arm/mdk.asp Keil µVision] (Demo max. 32KB Code): Die sehr komfortable µVison IDE ist neben dem ARM Compiler per Menue auch für einen beliebigen GNU-Compiler konfigurierbar. Damit besteht das 32k-Limit nur noch für den integrierten Debugger / Simulator. µVison selbst kann kostenlos mit dem MDK-Evaluationkit heruntergeladen werden. [https://www.keil.com/arm/demo/eval/arm.htm#DOWNLOAD download]&lt;br /&gt;
* [http://www.iar.com/en/Products/IAR-Embedded-Workbench/ IAR-Embedded-Workbench] (Demo max. 32KB Code) [http://supp.iar.com/Download/SW/?item=EWARM-EVAL download]&lt;br /&gt;
* [http://www.isystem.com/products/itag winIDEAiTag] Keine Code Limitierung, GCC und Testwerkzeug beinhaltet. Läuft mit dem iTag Adapter.&lt;br /&gt;
* [http://www.raisonance.com Raisonance Ride7] (GCC Compiler, kostenlose Version auf Debugging von max. 32KB Code limitiert, keine Limitierung beim Complilieren)&lt;br /&gt;
* [http://www.atollic.com Atollic] (Lite Version (bis V2.3.0) ohne Code-Limit, auf GCC basierend. Die neueste Version ab V3 hat fast keine Beschränkungen mehr außer jetzt einen Code-Limit von 32kB. Außerdem werden jetzt die meisten ARM Familien unterstützt. )&lt;br /&gt;
* [http://www.coocox.org CoIDE] (Kostenlose GCC, Eclipse basierende IDE mit einem Code-Generator Tool)&lt;br /&gt;
* [http://www.rowley.co.uk/arm/ Rowley Crossworks] (Demo 30 Tage unbeschränkt, 150$ für nichtkommerzielle Nutzung, auf GCC basierend)&lt;br /&gt;
* [http://www.code-red-tech.com Code Red] (GCC basierend)&lt;br /&gt;
* [http://www.sisy.de/index.php?id=17&amp;amp;no_cache=1 SiSy ARM oder SiSy Micrcontroller++] (Demo verfügbar keine Gößenbegrenzung, basiert auf GNU-Compiler, grafische Programmierung mit UML möglich, integrierter Debugger)&lt;br /&gt;
&lt;br /&gt;
===Programmieradapter===&lt;br /&gt;
* SEGGER [http://www.segger.com J-LINK / J-TRACE] ARM7..11, Cortex-M0..4, Cortex A8..15, als [http://www.segger.com/cms/j-link-edu.html NonComercial] J-LINK-EDU für ca. 60,- zu haben, läuft in µVision, IAR, gdb, Keil, ...&lt;br /&gt;
* [https://www.olimex.com/Products/ARM/JTAG/ Olimex] ARM-USB-OCD (ca. 60.-, hat zusätzlich einen Spannungsausgen und einen COM Port)&lt;br /&gt;
* Keil [http://www.keil.com/ulinkme/ ULINK-ME], [http://www.keil.com/arm/ulink2/ ULINK2], [http://www.keil.com/arm/ulinkpro/ ULINK pro]&lt;br /&gt;
* [http://www.st.com/internet/evalboard/product/219866.jsp ST-LINK], [http://www.st.com/internet/evalboard/product/251168.jsp ST-LINK/V2]&lt;br /&gt;
*[http://www.st.com/internet/com/press_release/p3065.jsp STM32xx Discovery] jedes STM32 Discovery board hat einen ST-Link für Programmierung/Debugging per SWD on-board, welcher auch für eigene STM32 Target Hardware benutzt werden kann (ca. 12,- bis 19,-€, je nach Typ).&lt;br /&gt;
* [http://www.raisonance.com/~rlink-debugger-programmer__microcontrollers__tool~tool__T018:4cn9ziz4bnx6.html Raisonance RLink]&lt;br /&gt;
* [http://www.amontec.com Amontec]&lt;br /&gt;
* [http://www.hjtag.com H-JTAG] Personal Edition für ca. 60,- zu haben, läuft mit ADS, SDT, IAR, Vision und RVDS &lt;br /&gt;
* [http://www.isystem.com/products/itag iTag] für 50.- bei Amazon zu bestellen, oder als Eigenbau version (offenes Design) läuft mit der freien winIDEAiTag version (siehe oben)&lt;br /&gt;
&lt;br /&gt;
Solch ein STM32FxDISCOVERY Demo-Board ist ideal für den Einstieg, da man kein extra [[JTAG]] Adapter kaufen muss. Das Board [http://www.st.com/internet/evalboard/product/252419.jsp STM32F4DISCOVERY] mit 12..15 EUR ist sehr günstig und hat einen leistungsfähigen STM32F407 Prozessor mit 168MHz und einen ST-LINK/V2 schon drauf. Zusammen mit der [http://www.coocox.org/ Coocox] Entwicklungsumgebung hat man einen günstigen Einstieg in die STM32 Welt.&lt;br /&gt;
&lt;br /&gt;
In der Regel haben diese [[JTAG]] Adapter einen 20-Poligen Stecker, den man direkt auf die Demo-Boards, die auch einen 20-Poligen [[JTAG]]-Anschluss haben, einstecken kann. Die Pinbelegung ist genormt, siehe Artikel [[JTAG]].&lt;br /&gt;
&lt;br /&gt;
Andere [[JTAG]] Adapter wie z.B. der ULink von Keil funktionieren nur mit dem Keil Compiler.&lt;br /&gt;
&lt;br /&gt;
Zu erst sollte man sich die IDE heraus suchen mit der man Arbeiten mag, und dann darin den unterstützten JTAG Adapter.&lt;br /&gt;
&lt;br /&gt;
Aus eigener Erfahrung kann ich den J-LINK von Segger sehr empfehlen, da er mit der meisten Software, auch GCC sehr gut und vor allem schnell (FLASH programmieren) funktioniert und enorm viele Prozessoren (ARM7/9/11, Cortex-M0..M4, Cortex-A8..15, uvm., viele Hersteller) unterstützt.&lt;br /&gt;
&lt;br /&gt;
===Programmieradapter Open-Source===&lt;br /&gt;
&lt;br /&gt;
* [https://www.olimex.com/Products/ARM/JTAG/ARM-JTAG-COOCOX/ ARM-JTAG-COOCOX], CoLinkEX Nachbau von Olimex, unterstützt JTAG sowie SWD&lt;br /&gt;
** [http://www.coocox.org/colinkEx.htm unterstützte uC]&lt;br /&gt;
** unterstütze IDEs: [http://www.keil.com/arm/mdk.asp Keil MDK-ARM 4.03] oder neuer, [http://www.iar.com/en/Products/IAR-Embedded-Workbench/ IAR Embedded Workbench 5.xx] oder neuer sowie die [http://www.coocox.org/CooCox_CoIDE.htm CooCox CoIDE]&lt;br /&gt;
* [http://www.oocdlink.com/ OOCDLink]&lt;br /&gt;
* [https://github.com/texane/stlink Stlink]&lt;br /&gt;
* [http://www.randomprojects.org/wiki/Floss-JTAG FLOSS-JTAG]&lt;br /&gt;
* [http://capitanio.org/mlink/ Linux Demo Code für die Discovery&#039;s ST-Link Programmierung]&lt;br /&gt;
&lt;br /&gt;
Der Controller hat auch einen fest eingebauten Boot-Lader. Damit läßt er sich auch über eine gewöhnliche serielle Schnittstelle programmieren, ohne daß man einen JTAG-Adapter benötigt.&lt;br /&gt;
&lt;br /&gt;
Tipps für Installation mit Eclipse können in [http://www.mikrocontroller.net/topic/214719 diesem Thread] gelesen werden.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Demo-Projekte ===&lt;br /&gt;
&lt;br /&gt;
* Einführung in die GPIO Programmierung der STM32F10x und STM32F30x Prozessoren am Beispiel des STM32F3 Discovery Boards und Vergleich zur AVR IO Registerstruktur [http://www.mikrocontroller.net/topic/300472#new]&lt;br /&gt;
* [[prog_bsp_timer_1_timer2|Programmbeispiel für die Verwendung von Timer2 zusammen mit dem Interrupt]]&lt;br /&gt;
* [http://www.firefly-power.de/ARM/printf.html Printf() debugging mit minimalem Aufwand]&lt;br /&gt;
* [[STM32_BLDC_Control_with_HALL_Sensor|Programmbeispiel für BLDC Motoransteuerung (Timer 1) mit HALLSensor (Timer 3)]]&lt;br /&gt;
* [[Cortex_M3_OCM3U]]&lt;br /&gt;
* Martin Thomas hat ein umfangreiches Projekt erstellt, in der die Eclipse Einstellungen enthalten sind:&lt;br /&gt;
** [http://www.siwawi.arubi.uni-kl.de/avr_projects/arm_projects/arm_memcards/index.html &amp;quot;ChaN&#039;s FAT-Module with STM32 SPI&amp;quot;]&lt;br /&gt;
* [[STM32 USB-FS-Device Lib]]&lt;br /&gt;
* Modellbau-Sender auf STM32-Basis mit vielen Treibern [http://www.rcos.eu www.rcos.eu]&lt;br /&gt;
* Ausführliches [https://github.com/jkerdels/stm32edu Einstiegs-Tutorial] in Codeform für das [http://www.st.com/internet/evalboard/product/252419.jsp STM32F4 discovery board]&lt;br /&gt;
* [http://www.redacom.ch/keillab/ Schweizer Gondelbahnsteuerung über Webserver auf ETT STM32F ARM KIT Board in Keil RTOS] mit Webcam&lt;br /&gt;
* Die [http://ethernut.svn.sourceforge.net/viewvc/ethernut/trunk/ Ethernut SVN Version] unterstützt inzwischen viele STM32 Typen, viele Devices und einige STM32 Demoboards&lt;br /&gt;
&lt;br /&gt;
== Debug- und Trace-Interface (CoreSight™ Debug and Trace Technologie)==&lt;br /&gt;
&lt;br /&gt;
Übersicht über beide Funktionalitäten und den Schnittstellen:&lt;br /&gt;
http://www.keil.com/support/man/docs/ulink2/ulink2_cs_core_sight.htm&lt;br /&gt;
&lt;br /&gt;
Die Coresight-Debug-Architektur ermöglicht ein nicht-invasives Debugging, d.h. es können während des Betriebes (meistens) ohne Beeinflussung des Prozessors Daten vom Speicher gelesen und in selbigen geschrieben werden.&lt;br /&gt;
&lt;br /&gt;
=== Debugger Funktionen ===&lt;br /&gt;
&lt;br /&gt;
Der Debugger-Teil besitzt drei Funktionen:&lt;br /&gt;
* Run Control: z.B. Programm-Start, Stopp und Einzel-Schritte.&lt;br /&gt;
* (Program) Break Points: Ein Programm hält an, wenn der Programm Counter eine bestimmte Programm-Adresse erreicht.&lt;br /&gt;
** Die maximale Anzahl der gleichzeitig möglichen Break Points ist begrenzt (z.B. 6 bei einem STM32).&lt;br /&gt;
** Die Anzahl der Break Points ist nahezu unbegrenzt, wenn ein Debugger über den Memory Access (s.u.) sogenannte Flash Break Points unterstützt. Dabei wird ein geladenes Programm im Flash umprogrammiert, um den Debugger anzuhalten. Diese Funktionalität ist meistens ein kostenpflichtiges Zusatz-Feature des Debugger-Herstellers. &lt;br /&gt;
** Beinhaltet keine Data Watch Funktionalität, welche im Trace-Teil (DWT) realisiert wird.&lt;br /&gt;
* Memory Access: Lesen und Schreiben von Speicheradressen. &lt;br /&gt;
** Diese Funktionalität beinhaltet keine direkte Flash-Programmierung. Der Programmiervorgang für einen Flash ist herstellerspezifisch und muss von dem verwendeten Debugger unterstützt werden.&lt;br /&gt;
&lt;br /&gt;
=== Trace Funktionen ===&lt;br /&gt;
Die Trace-Funktionalität wird in drei Funktionen aufgeteilt:&lt;br /&gt;
* ETM (Embedded Trace Macrocell): Optional, nicht jede CPU besitzt diese Hardware (Kostenfaktor, Austattung).&lt;br /&gt;
* ITM (Instrumentation Trace Macrocell): Über diesen Kanal kann ein vereinfachtes Trace des Core ermöglicht werden, sowie &amp;quot;printf-ähnlich&amp;quot; Daten über den ITM Channel 0 geschickt und im Debugger ausgegeben werden.&lt;br /&gt;
* DWT (Data Watchpoint &amp;amp; Trace Unit): &lt;br /&gt;
** Data Watch: 4 Access-Break-Points ( z.B. der Debugger bleibt stehen, wenn das Programm auf einen Speicher zugreift oder der Wert einer Variablen einen bestimmten Wert annimmt). &lt;br /&gt;
** Trace Unit: Programmverlauf (durch Lesen des Program Counters) und Interrupt Aufrufe verfolgen, sowie Zeitmessungen.&lt;br /&gt;
&lt;br /&gt;
Einige der Trace-Funktionalitäten können über die JTAG-Schnittstelle angesprochen werden. Die schnelle Trace-Funktionalität (mit 4 bit Parallel-Port) steht nur mit der erweiterten DEBUG + ETM Schnittstelle zur Verfügung. Im Gegensatz zum Debugger-Teil (Run Control, Break Points und Memory Access) werden Trace-Funktionen nicht von allen Debuggern unterstützt. Debugger mit der vollen Trace-Funktionalität kosten deutlich mehr.&lt;br /&gt;
&lt;br /&gt;
* Beispiele für Trace-Port-Aktivierungen für verschiedene Hersteller: http://www.keil.com/support/man/docs/jlink/jlink_capture_tracedata.htm&lt;br /&gt;
&lt;br /&gt;
Die Aktivierung des parallelen Trace-Ports erfordert, je nach CPU Hersteller, zusätzliche Debugger-Makros für die Aktivierung und Port-Freischaltung. Zusätzlich sind die Schnittstellenauswahl und Einstellung (Frequenzen) im Entwicklungs-Tool (IDE) wichtig, um erfolgreich den Programm-Verlauf &amp;quot;tracen&amp;quot; zu können.&lt;br /&gt;
&lt;br /&gt;
=== Debug und Trace-Schnittstellen ===&lt;br /&gt;
Als Debug Interface stehen zwei Varianten zur Auswahl:&lt;br /&gt;
* [[JTAG]]: Dafür sind mindestens 6 Steuerleitungen nötig. Unterstützt Device Chaining: Mehrere verbundene Geräte können mit einem Debugger/Programmer gleichzeitig angesteuert werden.&lt;br /&gt;
* SWD (Serial Wire Debug): Hier mindestens 2  Steuerleitungen (3 mit SWO, zzgl GND und 3,3V). Die SWD Schnittstelle ist in der Regel schneller und kann auch Funktionen aus dem Trace-Teil beinhalten (z.B. ITM, dafür wird der SWO-Pin benötigt). Device Chaining ist mit dieser Schnittstelle nicht möglich.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Standard-JTAG Steckerbelegungen: &lt;br /&gt;
http://www.keil.com/support/man/docs/ulink2/ulink2_hw_connectors.htm&lt;br /&gt;
&lt;br /&gt;
=== Der 10polige JTAG-Stecker von mmvisual ===&lt;br /&gt;
mmvisual hat mit dieser Steckerbelegung die Standard JTAG Schnittstelle erweitert:&lt;br /&gt;
&lt;br /&gt;
Ich habe diesen Part in den Artikel [http://www.mikrocontroller.net/articles/JTAG#Der_10-polige_JTAG_Stecker_von_mmvisual JTAG] verschoben.&lt;br /&gt;
Hinzu gekommen ist die Adapterplatine 10-Polig auf Standard JTAG 20 Polig mit TTL/V24 Wandler. [http://www.mikrocontroller.net/articles/JTAG#Die_Adapterplatine Siehe hier.]&lt;br /&gt;
&lt;br /&gt;
== Hardware-Beschaltung ==&lt;br /&gt;
&lt;br /&gt;
Der STM32 benötigt für den Betrieb nur (Minimalbeschaltung):&lt;br /&gt;
&lt;br /&gt;
* VCC 2..3,3V (je nach Typ)&lt;br /&gt;
* AVCC 2..3,3V (sehr wichtig, der STM32 lässt sich ohne diese Spannung nicht programmieren)&lt;br /&gt;
* GND&lt;br /&gt;
* Reset Pin 100nF nach GND (ein Pull-Up Widerstand von ca. 40k ist intern vorhanden)&lt;br /&gt;
* [[#Bootmodi|Boot-Pins]]&lt;br /&gt;
&lt;br /&gt;
ansonsten nur ein paar einzelne Cs 100nF an VCC/GND.&lt;br /&gt;
&lt;br /&gt;
Um Programmieren zu können wird entweder noch die serielle Schnittstelle (Programmieren über den vorprogrammierten Bootloader) oder JTAG oder die SWD Schnittstelle benötigt.&lt;br /&gt;
&lt;br /&gt;
=== Bootmodi ===&lt;br /&gt;
Unterschiedliche Bootmodi lassen sich mittels der PINs BOOT0 und BOOT1 auswählen . Siehe Application Note [https://my.st.com/public/STe2ecommunities/mcu/Lists/cortex_mx_stm32/Attachments/18225/AN2606.pdf AN2606].&lt;br /&gt;
&lt;br /&gt;
==== Boot from FLASH ====&lt;br /&gt;
Startadresse wird von 0x08000004 geladen&lt;br /&gt;
 BOOT0 Lo&lt;br /&gt;
 BOOT1 X &lt;br /&gt;
&lt;br /&gt;
==== Boot from SRAM ====&lt;br /&gt;
PC Startadresse wird an 0x200001E0 direkt angesprungen.&lt;br /&gt;
 BOOT0 Hi&lt;br /&gt;
 BOOT1 Hi&lt;br /&gt;
Da der interne FLASH der stm32f1x laut Datenblatt nur für 1000 Schreibvorgänge ausgelegt ist, kann mittels BOOT0 (High) und BOOT1 (High) auch aus dem zuvor mit dem Debugger (JTAG/SWD) beschriebenen SRAM booten. &lt;br /&gt;
Hierbei gilt zu beachten:&lt;br /&gt;
 VTOR auf die NVIC Tabelle im SRAM vor dem auslösen des ersten Interrupts remappen.&lt;br /&gt;
&lt;br /&gt;
 Um ein vergleichbares Startverhalten zum FLASH zu erreichen, empfiehlt es sich,&lt;br /&gt;
 0xF1E0F85F an 0x200001E0 zu schreiben. Diese implizite Ausführung von &amp;quot;ldr.w pc,&lt;br /&gt;
 [pc, #-0x01E0]&amp;quot; beim Start erzwingt ein laden der Startadresse von 0x20000004.&lt;br /&gt;
&lt;br /&gt;
==== Boot from SYSMEM (RS232, CAN und USB) ====&lt;br /&gt;
PC Startadresse wird von 0x1FFFF004 geladen&lt;br /&gt;
 BOOT0 Hi&lt;br /&gt;
 BOOT1 Lo&lt;br /&gt;
Auch ohne JTAG lässt sich ein STM32 programmieren (Bootloader-Aktivierung). Dabei stehen, je nach CPU-Typ, verschiedene Möglichkeiten zur Verfügung:&lt;br /&gt;
* RS-232 (bisher alle STMs)&lt;br /&gt;
* USB (nur in bestimmten MCUs mit entsprechender Bootloader-Version und PIN-Anzahl, z.B. STM32F105/107)&lt;br /&gt;
* CAN (wie USB nur in bestimmten MCUs)&lt;br /&gt;
&lt;br /&gt;
3 zusätzliche Verbindungen müssen auf dem Board gepatcht werden. Für einen Test geht es auch mit Tastern für RESET und BOOT0.&amp;lt;br&amp;gt;&lt;br /&gt;
RESET=RTS (L-aktiv)&amp;lt;br&amp;gt;&lt;br /&gt;
BOOT0=DTR (H-aktiv)&amp;lt;br&amp;gt;&lt;br /&gt;
BOOT1=LOW&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Details sind hier im Forum: [http://www.mikrocontroller.net/topic/141711 STM32 Programmiertool]&lt;br /&gt;
&lt;br /&gt;
== Bewertung ==&lt;br /&gt;
=== Vorteile ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Vorteile gegenüber ARM7:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Interrupt-Controller jetzt Teil des Prozessors (als Core Peripheral), die Vector Table ist jetzt eine echte Vektortabelle, keine Sprungliste wie bei ARM7. Durch Automatismen zwischen Core und NVIC (auto register save r0..r3, lr, sp, pc) bei Interrupt Entry wird eine deutlich schnellere Ausführungszeit bei Interrupts erreicht. Der Interrupt Code muss sich nicht mehr selbst um die Sicherung der o.g. Register kümmern und eine besondere Konfiguration der Handler im Compiler entfällt. Sind vor Beendigung einer ISR (d.h. Rücksprung zum User Code) weitere Interrupts pending, so werden diese ausgeführt, ohne dass eine komplette pop-push-sequenz der Register notwendig ist. Schön beschrieben ist es hier im [http://www.st.com/mcu/files/mcu/1221142709.pdf Insider&#039;s Guide] unter 2.4.5 / Seite 20.&lt;br /&gt;
* Thumb-2 Befehlssatz, deutlich schneller als Thumb-1 und ebenso kompakt&lt;br /&gt;
* Weniger Pins für Debugging benötigt durch SWD&lt;br /&gt;
* Mehr Hardware Breakpoints machen debuggen einfacher&lt;br /&gt;
* Software ist einfacher weil die Umschaltung zwischen ARM Mode und Thumb Mode wegfällt&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Vorteile gegenüber LPC1700 und LPC1300:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Flexiblere Gehäuseformen mit mehr Peripherie bei kleinen Gehäusen&lt;br /&gt;
* FW-Lib für alle STM32 gleich, alle AppNotes/Demos beziehen sich auf diese eine FW-Lib was die Entwicklung der eigenen Applikation sehr beschleunigt.&lt;br /&gt;
* Genauerer und flexiblerer ADC, insbesondere gegenüber LPC1300&lt;br /&gt;
* Flexiblere Varianten der Peripherie &amp;gt;&amp;gt; bei weniger einen deutlichen Preisvorteil&lt;br /&gt;
* ab 0,85 EUR (Stand 2010) Allerdings gibts den LPC1100 mit Cortex-M0 schon ab 0,65 $!&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Vorteile gegenüber SAM3/4:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Fast alle Pins sind 5-Volt tolerant.&lt;br /&gt;
&lt;br /&gt;
=== Nachteile ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Nachteil gegenüber LPC1700:&#039;&#039;&#039;&lt;br /&gt;
* STM32F1xx: nur 72 MHz statt 100 MHz (LPC1759: 120 MHz) Taktfrequenz; STM32F2xx hat diesen Nachteil nicht (ebenfalls 120MHz, STM32F4xx mit 168MHz) (Aber NXP hat schon 150MHz angekündigt)&lt;br /&gt;
* Der LPC1700 besitzt deutlich mehr Mechanismen, um die Auswirkung der Waitstates des Flash-ROMs auf Code- und Datenzugriffe zu reduzieren und das bedeutet mehr Performance bei gleicher Taktfrequenz. Beim STM32F2 entfällt dieser Nachteil wohl aufgrund des ART accelerators. &lt;br /&gt;
* Alle LPC1xxx haben 32 Bit Timer. Bei den STM32 haben das nur die STM32F2xx (2 Stück)&lt;br /&gt;
* I2S Einheit von ST hat keinen FIFO und im 24/32Bit Modus müssen 2x16Bit Halbwörter übertragen werden. Wobei allgemein bei neuen ARM Prozessoren die vorhandenen DMA-Kanäle (basierend auf eigenen BUS-Kanälen und Speicherzugriffen) FIFO in beliebiger Größe bedeutet. &lt;br /&gt;
&#039;&#039;&#039;Vorteile gegenüber anderen &amp;quot;Kleinen&amp;quot; wie z.B. PIC, Atmel usw.&#039;&#039;&#039;&lt;br /&gt;
* nahezu gleicher Preis bei Hobby Anwendungen&lt;br /&gt;
* 32 Bit ohne Umwege in Assembler rechenbar&lt;br /&gt;
* bessere Peripherie&lt;br /&gt;
* ... und weitere 1000 Punkte ...&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Nachteil für Hobby-Anwender&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Nicht direkt &amp;quot;Steckbrettauglich&amp;quot;, da kein DIL Gehäuse verfügbar. Der ebay-Shop dipmicro führt jedoch sehr günstige Lötadapter für Umsetzung von LQFP48 auf DIP48. QFP64 in 0.5mm Pinabstand und nicht 0.8mm wie AVR&lt;br /&gt;
&lt;br /&gt;
* Viel Peripherie, Clocks müssen alle richtig eingestellt werden, ggf. Anpassung des Startup Codes usw.&lt;br /&gt;
** =&amp;gt; Daher nicht besonders gut für Mikrcontroller Anfänger/Einsteiger geeignet.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Errata, Tipps und Tricks ==&lt;br /&gt;
=== Hardware ===&lt;br /&gt;
* AD-Wandler PA0: Im Errata steht, dass hier Fehler in der Wandlung entstehen könnten, also einen anderen Pin verwenden.&lt;br /&gt;
* CAN-Bus PD0/PD1: Remap geht erst ab der 100-Pin-Version. Steht im RM0008 unter 9.3.3.: &amp;quot;CAN1 alternate function remapping&amp;quot;. Alle Infos von RM0008 9.3.x sind interessant&lt;br /&gt;
* CAN und USB sind bei der F1 Serie nur bei der &amp;quot;◦Connectivity-Line&amp;quot; gleichzeitig nutzbar. Siehe Datenblätter.&lt;br /&gt;
* Mit internem RC-Oszillator kann die CPU mit maximal 64MHz betrieben werden. Mit einem externen Quarz sind dann 72MHz möglich.&lt;br /&gt;
* Für USB Betrieb muss die CPU mit 48MHz oder 72MHz betrieben werden (bei STM32F1xx).&lt;br /&gt;
* Der Idle Interrupt vom Usart wird zwar ausgelöst, aber nicht vom entsprechenden Statusflag angezeigt&lt;br /&gt;
* Der DMA fängt beim aktivieren immer von vorn an zu zählen, auch wenn er nur kurz angehalten wurde&lt;br /&gt;
* STM32F2xx hat kein Flash Size Register, bei STM32F4xx ist zwar ein flash Size Register beschrieben, kollidiert aber in der Adresse mit einem anderen Register&lt;br /&gt;
* Derivate mit internem EEPROM und nur einer Speicherbank haben das &amp;quot;Feature&amp;quot; bei write/erase des Data-Flashes (EEPROM) einen kompletten stall der code execution zu verursachen (inkl. ISR&#039;s, DMA). Desgleichen bei write/erase des internen Flash (ISP-routinen, EEPROM-Emulation).&lt;br /&gt;
* Der I2C hat diverse Fehler, welche im Errata des jeweiligen Modells (z.B. [http://www.st.com/st-web-ui/static/active/en/resource/technical/document/errata_sheet/CD00238166.pdf STM32F105xx and STM32F107xx Errata sheet] ) zu finden sind. Workarounds hierzu finden sich in der Application Note [http://www.st.com/st-web-ui/static/active/en/resource/technical/document/application_note/CD00209826.pdf AN2824]&lt;br /&gt;
* [http://blog.frankvh.com/category/stm32/ weitere undokummentierte Features]&lt;br /&gt;
&lt;br /&gt;
=== Software ===&lt;br /&gt;
[http://www.mikrocontroller.net/topic/298976#3197418 Codesize verkleinern beim GCC-ARM-Embedded]&lt;br /&gt;
==== GCC ====&lt;br /&gt;
Hier einige Hinweise wie man den GCC (zB. aus der [https://launchpad.net/gcc-arm-embedded GCC-ARM-Embedded Binärdistribution]) direkt verwenden kann (zB. mit selbstgebautem makefile), falls man das nicht von einer Entwicklungsumgebung machen lässt.&lt;br /&gt;
===== Compiler &amp;amp; Linker Flags für GCC =====&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Tool/Sprache                                          !! Cortex-M3                       !! Cortex-M4F&lt;br /&gt;
|-&lt;br /&gt;
| C-Compiler (gcc) || -mcpu=cortex-m3 -mfloat-abi=soft -mthumb -ffunction-sections -fdata-sections -Os || -mcpu=cortex-m4 -mfpu=fpv4-sp-d16 -mfloat-abi=hard -mthumb -ffunction-sections -fdata-sections -Os&lt;br /&gt;
|-&lt;br /&gt;
| C++ Compiler (g++) || -mcpu=cortex-m3 -mfloat-abi=soft -mthumb -ffunction-sections -fdata-sections -Os -fno-rtti -fno-exceptions || -mcpu=cortex-m4 -mfpu=fpv4-sp-d16 -mfloat-abi=hard -mthumb -ffunction-sections -fdata-sections -Os -fno-rtti -fno-exceptions&lt;br /&gt;
|-&lt;br /&gt;
| Linken von C Code (mit gcc-Befehl) || -mcpu=cortex-m3 -mfloat-abi=soft -mthumb -ffunction-sections -fdata-sections -Os -Wl,--gc-sections -static || -mcpu=cortex-m4 -mfpu=fpv4-sp-d16 -mfloat-abi=hard -mthumb -ffunction-sections -fdata-sections -Os -Wl,--gc-sections -static&lt;br /&gt;
|-&lt;br /&gt;
| Linken von C++ (und C) Code (mit g++-Befehl) || -mcpu=cortex-m3 -mfloat-abi=soft -mthumb -ffunction-sections -fdata-sections -Os -fno-rtti -fno-exceptions -Wl,--gc-sections -static || -mcpu=cortex-m4 -mfpu=fpv4-sp-d16 -mfloat-abi=hard -mthumb -ffunction-sections -fdata-sections -Os -fno-rtti -fno-exceptions -Wl,--gc-sections -static&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
* Siehe auch das [https://launchpadlibrarian.net/135588846/readme.txt Readme vom GCC-ARM-Embedded]&lt;br /&gt;
* Wird die [[#.E2.80.8ESTM32_Standard_Peripheral_Library|STM32 Standard Peripheral Library]] und ein Quarz verwendet, so muss noch per Präprozessor-Definition die Frequenz des Quarzes angegeben werden mittels z.B. -DHSE_VALUE=8000000 für 8MHz (wie auf dem STM32F4 Discovery).&lt;br /&gt;
* Wird wie [http://www.mikrocontroller.net/topic/298976#3197418 hier] beschrieben ein LTO-fähiger GCC verwendet, kann beim Linken &#039;&#039;&#039;und&#039;&#039;&#039; beim Compilen noch -flto angegeben werden, um die Codegröße zu verkleinern.&lt;br /&gt;
* Alle Compileroptionen müssen auch beim Linken mit angegeben werden (ist in obiger Tabelle berücksichtigt), da auch dann u.U. Code generiert werden kann.&lt;br /&gt;
&lt;br /&gt;
===== Startupcode &amp;amp; Linkerscript =====&lt;br /&gt;
* Damit der compilierte Code an den richtigen Stellen im Controller landet (d.h. dem Flash) muss man dem Linker ein Linkerscript mitgeben. Dies geht per &amp;quot;-T &#039;&#039;pfad_zum_linkerscript.ld&#039;&#039;&amp;quot; an den Linker-Befehl. Im Archiv der [[#.E2.80.8ESTM32_Standard_Peripheral_Library|STM32 Standard Peripheral Library]] befindet sich ein Beispiel-Linkerscript für die Atollic TrueSTUDIO IDE, dieses kann direkt mit dem GCC verwendet werden. Beispielsweise für den STM32F4 befindet sich das Script im Pfad &amp;quot;/STM32F4xx_DSP_StdPeriph_Lib_V1.1.0/Project/STM32F4xx_StdPeriph_Templates/TrueSTUDIO/STM324x7I_EVAL/stm32_flash.ld&amp;quot; des Archives.&lt;br /&gt;
* Damit beim Starten die richtigen Initialisierungen vorgenommen werden (wie globale Variablen und bei C++ Konstruktoren globaler Objekt-Instanzen) muss als erstes ein Startupcode laufen, der dann die main()-Funktion aufruft. Der Startupcode ist meistens in Assembler geschrieben, C-Code ist aber auch möglich. Im Archiv der [[#.E2.80.8ESTM32_Standard_Peripheral_Library|STM32 Standard Peripheral Library]] befindet sich ein Beispiel-Startupcode für die Atollic TrueSTUDIO IDE, dieser kann direkt mit dem GCC verwendet werden. Beispielsweise für den STM32F4 befindet sich der Code in Assemblerform im Pfad &amp;quot;/STM32F4xx_DSP_StdPeriph_Lib_V1.1.0/Libraries/CMSIS/Device/ST/STM32F4xx/Source/Templates/TrueSTUDIO/startup_stm32f40xx.s&amp;quot; dex Archives. Der Assemblercode kann per arm-none-eabi-as assemblisiert werden, die resultierende .o -Datei normal mitgelinkt.&lt;br /&gt;
&lt;br /&gt;
Zusammen bieten die beiden Dateien der Anwendung ein Standard-C-Interface, d.h. man kann wie gewohnt globale Variablen verwenden und seinen Code in die main()-Funktion schreiben.&lt;br /&gt;
&lt;br /&gt;
===== FPU von den STM32 mit Cortex-M4F nutzen =====&lt;br /&gt;
Um die FPU zu nutzen, muss dem Compiler per [[#Compiler_.26_Linker_Flags_f.C3.BCr_GCC|Flag]] dazu gebracht werden, FPU-Instruktionen zu generieren.&lt;br /&gt;
&lt;br /&gt;
Außerdem muss vor Benutzung der FPU-Befehle die FPU aktiviert werden, dies geschieht typischerweise im Startupcode, bevor die main() -Funktion aufgerufen wird. Hier die entsprechenden Befehle, falls sie im verwendeten Startupcode nicht onehin schon enthalten sind:&lt;br /&gt;
&amp;lt;pre&amp;gt;/*FPU settings*/&lt;br /&gt;
 ldr     r0, =0xE000ED88           /* Enable CP10,CP11 */&lt;br /&gt;
 ldr     r1,[r0]&lt;br /&gt;
 orr     r1,r1,#(0xF &amp;lt;&amp;lt; 20)&lt;br /&gt;
 str     r1,[r0]&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Falls ein C-Startupcode verwendet wird, kann man es machen wie in der system_stm32f4xx.c aus den Beispielen von ST-Microelectronics:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
SCB-&amp;gt;CPACR |= ((3UL &amp;lt;&amp;lt; 10*2)|(3UL &amp;lt;&amp;lt; 11*2)); /* set CP10 and CP11 Full Access */&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Weiterhin sollte die Toolchain auch Laufzeitbibliotheken mit FPU-Unterstützung mitbringen (CodeBench lite und Yagarto werden ohne ausgeleifert, GCC for ARM embedded von launchpad.org mit).&lt;br /&gt;
&lt;br /&gt;
Mehr dazu in diesem Thread: [http://www.mikrocontroller.net/topic/261021 Floating Pointing Unit STM32F4]&lt;br /&gt;
&lt;br /&gt;
===== Disassemblieren mit GCC =====&lt;br /&gt;
arm-none-eabi-objdump -d -t -C pfad_zum_binary.elf&lt;br /&gt;
&lt;br /&gt;
===== Konvertieren zwischen Binary-Formaten beim GCC =====&lt;br /&gt;
arm-none-eabi-objcopy -O &#039;&#039;ausgabeformat&#039;&#039; &#039;&#039;eingabe_binary.elf&#039;&#039; &#039;&#039;ausgabe_binary&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Nützlich als Ausgabeformat sind z.B. &amp;quot;ihex&amp;quot; oder &amp;quot;binary&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
=== Tipps für Umsteiger von Atmel/PIC/8051 ===&lt;br /&gt;
* Prozessortakt hat unterschiedliche Taktquellen und eine PLL.&lt;br /&gt;
* Alle Peripheriemodule haben einen extra Clock, den man aktivieren muss.&lt;br /&gt;
* Wenn man z.B. einen UART benutzen möchte, so muss man den Clock vom UART, Alternate Function IO (AFIO) und dem GPIO-Port aktivieren.&lt;br /&gt;
* Ansonsten hat man nahezu doppelt so viele Möglichkeiten in den Peripheriemodulen.&lt;br /&gt;
* Interrupt-Flags müssen in der ISR selber gelöscht werden&lt;br /&gt;
* Forum zu [http://www.mikrocontroller.net/topic/175888 Interrupts vs. Events]&lt;br /&gt;
&lt;br /&gt;
=== Errata vom STM32F4xx die nicht im Errata von ST stehen ===&lt;br /&gt;
* [http://www.mikrocontroller.net/topic/267439#2788478 Aktivieren von DMA], wenn mehr als 3 DMA Kanäle aktiviert werden, kann es sein dass die nicht alle korrekt bedient werden. Auch klappt der DMA mit dem FSMC nicht immer zuverlässig. [https://my.st.com/public/STe2ecommunities/mcu/Lists/cortex_mx_stm32/Flat.aspx?RootFolder=%2Fpublic%2FSTe2ecommunities%2Fmcu%2FLists%2Fcortex_mx_stm32%2FWarning%20limit%20simultaneous%20DMAs%20to%202&amp;amp;FolderCTID=0x01200200770978C69A1141439FE559EB459D7580009C4E14902C3CDE46A77F0FFD06506F5B&amp;amp;currentviews=811 siehe hier] [http://blog.frankvh.com/2012/01/13/stm32f2xx-stm32f4xx-dma-maximum-transactions/ und hier]&lt;br /&gt;
* [http://www.mikrocontroller.net/topic/260637#2700761 Nerviger Bug in &amp;quot;stm32f4xx.h&amp;quot;] Änderung Struktur GPIO_TypeDef&lt;br /&gt;
* [http://www.mikrocontroller.net/topic/261690#2714754 Batterie wird leer gezogen], nur bei manchen Chips mit Rev. A&lt;br /&gt;
&lt;br /&gt;
== Bezugsquellen ==&lt;br /&gt;
&lt;br /&gt;
=== Controller ===&lt;br /&gt;
&lt;br /&gt;
Versandhäuser für Privatpersonen&lt;br /&gt;
* [http://www.reichelt.de/STM-Controller/2/index.html?;ACTION=2;LA=2;GROUPID=2950; Reichelt]&lt;br /&gt;
* [http://darisusgmbh.de/shop/index.php?cat=c2692_ARM-Cortex.html Darisus]&lt;br /&gt;
* [http://www.hbe-shop.de HBE (Farnell Programm für Private)] &lt;br /&gt;
* [http://www.sander-electronic.de/be00069.html Sander]&lt;br /&gt;
*[http://www.tme.eu/de/katalog/index.phtml#cleanParameters%3D1%26search%3DSTM32F10%26bf_szukaj%3D+ TME] &lt;br /&gt;
*[http://teske-electronics.de/index.php?cPath=3_9_53 Teske electronics]&lt;br /&gt;
*[http://de.rs-online.com/web/c/halbleiter/prozessoren-und-mikrocontroller/mikrocontroller/?sort-by=default&amp;amp;sort-order=default&amp;amp;applied-dimensions=4294417325&amp;amp;lastAttributeSelectedBlock=4294425895 RS-Online]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Gewerblich liefern natürlich viele wie EBV, Mouser, Farnell, Digikey usw...&lt;br /&gt;
&lt;br /&gt;
=== Evaluation Boards ===&lt;br /&gt;
&lt;br /&gt;
* [http://shop.embedded-projects.net/index.php?module=artikel&amp;amp;action=gruppe&amp;amp;id=14 Im Shop von Embedded Projects]&lt;br /&gt;
* [http://www.watterott.com/de/Boards-Kits/ARM/ARM-Cortex-M3 Cortex M3 bei Watterott]&lt;br /&gt;
* [http://www.raisonance.com/~primer-starter-kits__microcontrollers__tool~tool__T018:4enfvamuxbtp.html Primer und Primer2 von Raisonance]&lt;br /&gt;
* [http://www.sander-electronic.de/es0028.html Sander Electronic]&lt;br /&gt;
* [http://www.mikrocontroller.net/articles/MP32F103-Stick:_Ein_Mini-Mikrocontroller-Board_mit_USB_und_bis_zu_4MB_Datenspeicher Artikel im Wiki, ARM mit USB und 4MB Speicher]&lt;br /&gt;
* [http://www.futurlec.com/STM32_Development_Board.shtml Futurlec Evalboard, ebenso Header-Board]&lt;br /&gt;
* [http://www.propox.com/products/t_174.html Propox, Header-Boards für 103R und 103V sowie Trägerplatine dafür]&lt;br /&gt;
* [http://www.mikrocontroller.net/articles/Cortex_M3_OCM3U Cortex M3 Artikel im Wiki]&lt;br /&gt;
* [http://olimex.com/dev/index.html STM32 bei Olimex]&lt;br /&gt;
* [http://de.farnell.com/jsp/displayProduct.jsp?sku=1824325&amp;amp;action=view&amp;amp;CMP=GRHS-1000962 STM32Discovery bei Farnell] Mikrocontroller Board (STM32F100RBT6B) mit onboard USB-Programming Interface für ca. 12,50€&lt;br /&gt;
* [http://www.de.rs-online.com/web/p/products/7458434/ STM32Discovery bei RS-Components] 12,65 € +MwSt.&lt;br /&gt;
* [http://www.segor.de/#Q=STM32 VL DISCOVERY] STM32 Discovery bei Segor&lt;br /&gt;
* [http://www.watterott.com/de/STM32F4Discovery STM32F4DISCOVERY] STM32F4 Cortex M4 Controller mit JTAG-Debugger auf der Platine bei Watterott für 16,66EUR.&lt;br /&gt;
* [http://www.steitec.net/ARM-Boards/ Steitec, STM32F103 Cortex M3 Board 34,80€]&lt;br /&gt;
* [http://www.mcu-raisonance.com/~open4-development-platform__microcontrollers__tool~tool__T018:g65gu6ghg2n.html/ Open 4 oder auch genannt Evo-Primer]&lt;br /&gt;
* [http://www.wayengineer.com/index.php?main_page=index&amp;amp;cPath=50_66&amp;amp;page=1&amp;amp;sort=3a WayEngineer]&lt;br /&gt;
* [http://thinkembedded.ch/ST-STMicroelectronics:::24.html Im Thinkembedded Shop] in der Schweiz / DiscoveryF4, div. ETT und Olimex Boarde ab 20,18 CHF / 16,15 EUR (inkl. MwSt.) zzgl. Versandkosten&lt;br /&gt;
* [http://shop.myavr.de/ARM-Produktlinie/STM32F4-Discovery.htm?sp=article.sp.php&amp;amp;artID=200072 Im myAVR Shop] DiscoveryF4 mit möglichem Zubehör 16,45 EUR (inkl. MwSt.) zzgl. Versandkosten&lt;br /&gt;
* [http://www.keil.com/boards/cortexm.asp Keil/ARM Demoboards]&lt;br /&gt;
* [http://www.phytec.de Phytec]&lt;br /&gt;
* [http://shop.myavr.de/index.php?sp=artlist_kat.sp.php&amp;amp;katID=37 verschiedene ARM Produkte und Erweiterungen bei myAVR]&lt;br /&gt;
&lt;br /&gt;
== Weblinks, Foren, Communities, Tutorials ==&lt;br /&gt;
&lt;br /&gt;
* [http://www.mikrocontroller.net/topic/173753 Diskussion zum Artikel]&lt;br /&gt;
* [http://www.mikrocontroller.net/forum/mikrocontroller-elektronik?filter=ARM*+STM32*+Cortex* Suche im Forum]&lt;br /&gt;
* [https://my.st.com/public/STe2ecommunities/mcu/Lists/ARM%20CortexM3%20STM32/AllItems.aspx Forum auf der ST Homepage] &lt;br /&gt;
* [http://www.stm32circle.com/hom/index.php STM32 Community] &lt;br /&gt;
*[http://joe-c.de/pages/posts/einstieg_mikrocontroller_stm32f103_101.php Einstieg:  STM32board mit Kamera (deutsch)] &lt;br /&gt;
* [http://www.ebv.com/fileadmin/products/Press_Print/Brochures/Product_Brochures/EBV_Cortex%20Collection_V2.pdf Übersicht der Cortex Prozessoren und deren Hersteller (nicht nur ST, von EBV)]&lt;br /&gt;
* [http://www.mikrocontroller.net/topic/258652 Tutorial]&lt;br /&gt;
* [http://diller-technologies.de/stm32_wide.html STM32 Tutorial in Deutsch von Diller Technologies]&lt;br /&gt;
* [http://mySTM32.de STM32 C und C++ Tutorial in Deutsch ]&lt;br /&gt;
* [http://mikrocontroller.bplaced.net STM32F4 Quellcode-Librarys und CooCox-Projekte in Deutsch ]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;br /&gt;
[[Kategorie:ARM]]&lt;br /&gt;
[[Kategorie:STM32| ]]&lt;/div&gt;</summary>
		<author><name>Axelac</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=MSP430&amp;diff=57933</id>
		<title>MSP430</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=MSP430&amp;diff=57933"/>
		<updated>2011-06-14T17:06:57Z</updated>

		<summary type="html">&lt;p&gt;Axelac: /* uIP Port auf Mikrokontroller.net */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Der MSP430 ist ein 16 Bit-Mikrocontroller von Texas Instruments (TI). Er wurde speziell für eine geringe Stromaufnahme entwickelt, so dass er besonders für batteriebetriebene Geräte geeignet ist. Es gibt verschiedene Typen mit 1-256 kB [[Flash-ROM]], 128-16384 Byte [[RAM]], teilweise mit Hardware-Multiplizierer, [[UART]], [[AD-Wandler]] oder LCD-Treiber, die meisten im [[SMD]]-Package mit 20 bis &amp;gt;100 Pins. Einige neuere aus der MSP430F2xxx-Serie gibt es auch im DIP-Package (Bezeichnung: MSPxxxx &#039;&#039;&#039;-N&#039;&#039;&#039;). Der MSP430F1121 zum Beispiel hat 4kB [[Flash-ROM]], 256B [[RAM]], 2 [[Timer]] und steckt in einem SO-20 Gehäuse. &lt;br /&gt;
&lt;br /&gt;
== Entwicklungshardware ==&lt;br /&gt;
Für den schnellen Einstieg stellt TI ein preisgünstiges Entwicklungssystem mit USB Schnittstelle zur Verfügung ([http://focus.ti.com/docs/toolsw/folders/print/ez430-f2013.html MSP430 USB Stick Development Tool]).&lt;br /&gt;
&lt;br /&gt;
Günstige Adapterplatinen und [[JTAG]]-Programmer für MSP430-Controller bekommt man bei [http://olimex.com/dev/ Olimex (Bulgarien)], in Deutschland bei http://shop.mikrocontroller.net und http://www.elektronikladen.de oder in Japan bei [http://passworld.co.jp/index.php?lang=GB&amp;amp;lieu=Soroban PassWorld].&lt;br /&gt;
&lt;br /&gt;
Einen einfachen Schaltplan für den [[JTAG]]-Programmer von TI bzw. Olimex gibt es [[Media:MSP430-JTAG-programmer.pdf|hier]]. Die Spannungsversorgung kommt im Gegensatz zum Original allerdings nicht vom Drucker-Port sondern muss extern (am besten vom MSP430 Board) bereitgestellt werden.&lt;br /&gt;
&lt;br /&gt;
Neben der JTAG-Programmierung bieten die MSP430-Controller auch die Möglichkeit, die Firmware über einen [[Bootloader]] einzuspielen. Die dafür erforderliche Hardware wird in der Application Note [http://focus.ti.com/docs/mcu/catalog/resources/appnoteabstract.jhtml?familyId=342&amp;amp;abstractName=slaa096d SLAA096d] von Texas Instruments beschrieben.&lt;br /&gt;
&lt;br /&gt;
Auf jeden Fall eine Überlegung wert wäre auch das neue &#039;&#039;&#039;Launchpad&#039;&#039;&#039; (Bezugsquellen: [https://estore.ti.com/MSP-EXP430G2-MSP430-LaunchPad-Value-Line-Development-kit-P2031.aspx] [http://search.digikey.com/scripts/DkSearch/dksus.dll?PName?Name=296-27570-ND] [http://www.watterott.com/de/MSP430-LaunchPad-MSP-EXP430G2])&lt;br /&gt;
&lt;br /&gt;
[[Datei:launchpad-lcd.jpg]]&lt;br /&gt;
&lt;br /&gt;
Der Launchpad (ca. 5Euro!) enthält neben dem per USB ansprechbaren Programmer auch das &amp;quot;Spy by Wire&amp;quot; Interface, mit dem der uController in der Schaltung emuliert werden kann (in Circuit emulation).&lt;br /&gt;
&lt;br /&gt;
=== Stromversorgung ===&lt;br /&gt;
&lt;br /&gt;
Der MSP430 benötigt eine Spannung zwischen 1,8 und 3,6 V. Einfach erzeugen kann man diese z.&amp;amp;nbsp;B. mit der folgenden Schaltung:&lt;br /&gt;
&lt;br /&gt;
http://www.mikrocontroller.net/images/lm317.png&lt;br /&gt;
&lt;br /&gt;
An den Eingang wird ein Steckernetzteil angeschlossen, die Ausgangsspannung lässt sich über das Potentiometer P1 einstellen.&lt;br /&gt;
Benutzt man für P1 einen 500-Ohm-Typ, kann man die Spannung in einem Bereich von 1,2 Volt und knapp 3,6 Volt einstellen. Dann kann man den MSP430 nicht durch zu hohe Versorgungsspannungen zerstören.&lt;br /&gt;
&lt;br /&gt;
Für den Batteriebetrieb eines MSP430 gibt es von TI eine fertige Lösung mit wenig Peripherie:&lt;br /&gt;
&lt;br /&gt;
TPS61221 &lt;br /&gt;
http://focus.ti.com/docs/prod/folders/print/tps61221.html&lt;br /&gt;
&lt;br /&gt;
Schaltung für 3,3V Versorgung:&lt;br /&gt;
http://focus.ti.com/lit/an/slva336/slva336.pdf&lt;br /&gt;
&lt;br /&gt;
Die neue Generation mit USB, MSP430F55xx, enthält bereits einen Längsregler von 5 V auf 3,3 V für den Betrieb an der USB-Speisespannung.&lt;br /&gt;
Die Minimalausstattung für die Erstinbetriebnahme ist ein Quarz (bspw. 12 MHz), ein Widerstand 1,5 kΩ und eine Drahtbrücke.&lt;br /&gt;
&lt;br /&gt;
http://www-user.tu-chemnitz.de/~heha/mb-iwp/Schrittmotorsteuerung/MSP430V1.jpg&lt;br /&gt;
&lt;br /&gt;
Dabei meldet sich der Mikrocontroller (genauer: der enthaltene Bootloader) als HID-Gerät. Zum Füllen des Flash steht von Texas Instruments eine Software mit Quelltext zur Verfügung. Leider ist die API der DLL völlig missraten (total stümperhaft), und das Programm schluckt keine .HEX-Dateien (wie sonst üblich), sondern TI-spezifische .TXT-Dateien. {Da habe ich etwas nachprogrammiert, siehe: http://www-user.tu-chemnitz.de/~heha/hs_freeware/msp430-usbbsl.zip }&lt;br /&gt;
&lt;br /&gt;
== Programmieren und Debuggen ==&lt;br /&gt;
Zum Füllen des internen Flash-Programmspeichers und zum Verfolgen des Programmablaufs stehen üblicherweise drei Schnittstellen zur Verfügung:&lt;br /&gt;
&lt;br /&gt;
* Das JTAG-Interface&lt;br /&gt;
* Der Spy-by-Wire-Anschluss&lt;br /&gt;
* Der Bootloader (seriell oder USB)&lt;br /&gt;
&lt;br /&gt;
=== Programmieren ===&lt;br /&gt;
&lt;br /&gt;
==== seriell oder USB ====&lt;br /&gt;
Wer fehlerarm programmieren kann und für jedwede Hilfsadapter zu geizig ist, benutzt am besten den eingebauten Bootloader. Dies ist auch der günstigste Weg bei der Serienfertigung.&lt;br /&gt;
&lt;br /&gt;
Zur Nutzung des seriellen Bootloaders ist es am günstigsten, wenn die fertige Schaltung bereits eine serielle Schnittstelle braucht.&lt;br /&gt;
Ungünstigerweise „hört“ der Bootloader nicht auf RxD und TxD, sondern zumeist auf P1.1 und P2.2 (siehe jeweiliges Datenblatt!). Daher behilft man sich mit festen oder trennbaren Brücken zwischen P1.1 und TxD sowie P2.2 und RxD.&lt;br /&gt;
Von den SubD-Pins 1+4+6 geht man via Widerstand und Z-Diode auf /RESET,&lt;br /&gt;
von den SubD-Pins 7+8 ebenso auf TCK, fertig ist der On-Board-Programmieradapter.&lt;br /&gt;
&lt;br /&gt;
Richtig debuggen kann man mit der seriellen Schnittstelle nicht.&lt;br /&gt;
&lt;br /&gt;
MSP430 mit USB-Schnittstelle haben &#039;&#039;keinen&#039;&#039; seriellen Bootloader. Dieser ist durch den USB-Bootloader ersetzt worden. Zu seiner Verwendung werden keine ominösen Brücken verwendet; der USB-Anschluss (den wohl jede Anwendungsschaltung mit MSP430F55xx haben wird) ist sofort zum Herunterladen der Firmware geeignet.&lt;br /&gt;
&lt;br /&gt;
==== JTAG ====&lt;br /&gt;
Komfortabel und dennoch preisgünstig ist der JTAG-Anschluss.&lt;br /&gt;
Leider benötigt dieser mindestens 5 Kontakte und damit Platz auf der Schaltung. Anschluss-Adapter fürs Parallelport sind leicht zu haben und beinhalten im einfachsten Fall nur Schutzwiderstände.&lt;br /&gt;
Wer partout kein Parallelport hat (sollte ein Entwicklungsrechner &#039;&#039;immer&#039;&#039; haben) benötigt teure aber komfortable USB-JTAG-Adapter.&lt;br /&gt;
&lt;br /&gt;
==== Spy-by-Wire ====&lt;br /&gt;
Die TI-Erfindung Spy-by-Wire kommt mit nur 2 Leitungen aus.&lt;br /&gt;
(Nebenbei, die Konkurrenz kommt mit One-Wire mit &#039;&#039;einer&#039;&#039; Leitung aus.)&lt;br /&gt;
Hier sind nur spezielle USB-Adapter bekannt, die vom Hersteller zu beziehen und closed-source sind. Auf TI-Entwicklungsplatinen ist dieser Umsetzer bereits als ein weiterer Chip aufgelötet.&lt;br /&gt;
&lt;br /&gt;
== Dokumentation ==&lt;br /&gt;
&lt;br /&gt;
* TI&#039;s Website: http://www.msp430.com &lt;br /&gt;
*:Für jede MSP430 Familie (z.&amp;amp;nbsp;B. MSP430F1xxx) gibt es ein generelles &amp;quot;datasheet&amp;quot;    und einen detailierten &amp;quot;user guide&amp;quot;. Die im user guide verwendeten   Registerbezeichnungen (Ports, SFRs, etc.) findet man auch bei den meisten   Compilern wieder.&lt;br /&gt;
&lt;br /&gt;
* Buch: Mikrocontrollertechnik Am Beispiel der MSP430-Familie&lt;br /&gt;
*:Dieses Lehrbuch führt in die Grundlagen der Mikrorechentechnik ein. Es beschreibt sehr detailliert den Aufbau, die Funktion und die Handhabung von Mikrocontrollern am Beispiel des MSP430F1232. Programmbeispiele sind in Assembler und C enthalten. Ideal für Einsteiger mit geringen technischen Vorkenntnissen. Autor: Matthias Sturm ISBN:3-446-21800-9, Hanser Verlag&lt;br /&gt;
&lt;br /&gt;
== Software ==&lt;br /&gt;
===Freie Tools===&lt;br /&gt;
====MSP-CCE430====&lt;br /&gt;
Dies ist die Entwicklungsumgebung von TI. Es gibt eine teure Pro-Version, aber eben auch eine Freeware-Version, die auf 16kB Codegrösse beschränkt ist. &lt;br /&gt;
&lt;br /&gt;
Dieser Entwicklungsumgebung liegt Eclipse zugrunde, wobei der C-Compiler und ein Debugger bereits eingebunden sind. Die Installation ist im Gegensatz zu MSPGCC kein Problem.&lt;br /&gt;
&lt;br /&gt;
* [http://focus.ti.com/docs/toolsw/folders/print/msp-cce430.html Download MSP-CCE430]&lt;br /&gt;
&lt;br /&gt;
====MSPGCC====&lt;br /&gt;
Man kann Programme für den MSP430 komplett mit freien Tools entwickeln. Mit dem C-Compiler [[MSPGCC]], dem Debugging-Programm [[GDB]]/Insight und einem beliebigen [[Texteditor]] kann man C-Programme schreiben, kompilieren, in den Controller programmieren und debuggen. In Kombination mit MSPGCC kann man auch die freie Entwicklungsumgebung Eclipse verwenden.&lt;br /&gt;
&lt;br /&gt;
Direkt mit Eclipse 3.6 Helios compilieren und debuggen&lt;br /&gt;
* [[MSP430_eclipse_helios_mspgcc4_gdb-proxy|Anleitung]] (06/2010)&lt;br /&gt;
&lt;br /&gt;
Weblinks:&lt;br /&gt;
* [http://msp430.ms.funpic.de/doku.php?id=msp430:entwicklungumgebung Eclipse+mspgcc+GDB-Proxy] (03/2009)&lt;br /&gt;
* [http://www.mikrocontroller.net/articles/Eclipse_und_MSPGCC_unter_Windows Eclipse und MSPGCC unter Windows] (03/2009)&lt;br /&gt;
* [http://matthias-hartmann.blogspot.com/ Use Eclipse and mspgcc - the easy way] (Windows 02/2009).&lt;br /&gt;
* [http://www.mikrocontroller.net/Eclipse%20und%20MSPGCC/ Eclipse und MSPGCC] (Windows 03/2006)&lt;br /&gt;
* [http://inf.ntb.ch/infoportal/help/index.jsp?topic=/ch.ntb.infoportal/embeddedSystems_MSP430.html/ Eclipse + MSPGCC + Installationsanleitung Deutsch] (Windows, Linux) (Link ist Tot! .. hat noch wer eine Version?)&lt;br /&gt;
* [http://kurt.on.ufanet.ru/ MSPFET - FREE MSP430 flash programming utility] (Windows)&lt;br /&gt;
* [http://xgoat.com/wp/2009/03/25/fetproxy-an-open-source-replacement-for-msp430-gdbproxy/ FetProxy - Ein funktionierender Open-Source-Ersatz für msp430-gdbproxy] (Unix, Linux)&lt;br /&gt;
&lt;br /&gt;
Achtung: Es gibt &#039;&#039;&#039;mspgcc&#039;&#039;&#039; und &#039;&#039;&#039;mspgcc4&#039;&#039;&#039;!&lt;br /&gt;
Ersterer unterstützt keine CPUX (moderner MSP430-Prozessorkern mit 20 Bit Adressierungs- und Verarbeitungsbreite, für 1 MByte Adressraum), so ist man praktisch auf 47 KByte Kode beschränkt, und ohne selbstgemachte Linker-Skripte kann man zurzeit keine MSP430F55xx programmieren.&lt;br /&gt;
Letzterer basiert häufig auf cygwin und ist deshalb nicht so leicht in Gang zu setzen, die Dokumentation noch spärlicher und ausschließlich auf &#039;&#039;&#039;man&#039;&#039;&#039; basierend.&lt;br /&gt;
&lt;br /&gt;
====MSPDebug====&lt;br /&gt;
MSPDebug ist ein Programmier/- Debugwerkzeug für den [[MSP430]], ähnlich wie avrdude für die [[AVR]]s.&lt;br /&gt;
&lt;br /&gt;
Momentan (0.11) unterstütze Programmer/Debugger (aus der Hilfe übernommen):&lt;br /&gt;
* ez430-RF2500 z.B. der Programmieradapter von der ez430-Chronos&lt;br /&gt;
* Olimex MSP-JTAG-TINY&lt;br /&gt;
* TI FET430UIF und Kompatible (z.B. eZ430)&lt;br /&gt;
* TI FET430UIF bootloader&lt;br /&gt;
&lt;br /&gt;
Weblinks:&lt;br /&gt;
* [http://mspdebug.sourceforge.net/ Projekthomepage bei Sourceforge]&lt;br /&gt;
* [http://aur.archlinux.org/packages.php?ID=37648 AUR-Paket für Arch Linux]&lt;br /&gt;
&lt;br /&gt;
=== Kommerzielle Compiler für MSP430 ===&lt;br /&gt;
* [http://www.imagecraft.com/devtools_MSP430.html ICC430]&lt;br /&gt;
*: 45-Tage Demo wird nach Ablauf auf 4 kByte Codegröße beschränkt&lt;br /&gt;
* [http://www.htsoft.com/products/msp430ccompiler.php HI-TECH MSP430 C]&lt;br /&gt;
*: 28-Tage Demo wird nach Ablauf unbrauchbar.&lt;br /&gt;
*: &#039;&#039;Die verlinkte Seite listet nur Compiler für PIC auf. Produkt eingestellt?&#039;&#039;&lt;br /&gt;
*: &#039;&#039;They are part of microchip now: [http://www.htsoft.com/HI-TECH%20Customer%20Letter_Final.pdf]&#039;&#039;&lt;br /&gt;
* [http://www.ide430.com/ IDE430]&lt;br /&gt;
*: &#039;&#039;Dieser Link ist tot. Gibt es das Produkt noch?&#039;&#039;&lt;br /&gt;
* [http://www.rowley.co.uk/msp430/index.htm CrossWorks for MSP430]&lt;br /&gt;
*: 30-Tage-Testversion nach Registrierung&lt;br /&gt;
* [http://www.quadravox.com/AQ430.htm Quadravox AQ430]&lt;br /&gt;
* [http://focus.ti.com/docs/toolsw/folders/print/msp-cce430.html?DCMP=MSP430_ccessentials&amp;amp;HQS=Other+PR+ccessentials CCEssentials (Eclipse)]&lt;br /&gt;
*: Mittlerweile: [http://processors.wiki.ti.com/index.php/CCSv4 Code Composer Studio 4]&amp;quot;, Microcontroller/&amp;quot;Core Edition&amp;quot; für MSP430 ist kostenlos. Download erfordert Registrierung und Exporterfassung. Dateiname &amp;quot;setup_CCS_MC_Core.zip&amp;quot;, ca. 360 MB.&lt;br /&gt;
*: Frei und auf 8 kByte Codegröße beschränkt, seit V3 bis 16kByte Code frei&lt;br /&gt;
* [http://www.iar.se/website1/1.0.1.0/675/1/index.php IAR Embedded Workbench for MSP430] &lt;br /&gt;
*: 30-Tage-Testversion&lt;br /&gt;
*: Freie auf 4 kByte (MSP430) oder 8 kByte (MSP430X) Codegröße beschränkte &amp;quot;KickStart&amp;quot;-Edition.&lt;br /&gt;
*: Kompatibel mit Windows7 7000 x64 (Stand: Februar 2009, Version 4.20.1)&lt;br /&gt;
&lt;br /&gt;
== Beispielanwendungen ==&lt;br /&gt;
&lt;br /&gt;
===Mathar.Com===&lt;br /&gt;
Auf http://www.mathar.com gibt es ein paar Beispiele (in C), was man so alles mit dem MSP430 anstellen kann. Dort hat der Autor einige Anwendungen näher erläutert. Angefangen mit simplen Aufgaben wie LEDs leuchten lassen geht es weiter über eine LCD- und GLCD-Ansteuerung (HD44780- und KS0108-kompatibel) sowie einigen Beispielen zur Verwendung des integrierten A/D-Wandlers, des USARTs, des Timers und vielem mehr ... Als weitere Codebeispiele sind dort auch eine I2C-Softwareimplementation und eine CAN-Library für den MSP430 zu finden.&lt;br /&gt;
&lt;br /&gt;
===Examples Ordner der freien Toolchain MSPGCC===&lt;br /&gt;
Der &amp;quot;examples&amp;quot;-Ordner bzw. &amp;quot;checkout&amp;quot; aus dem CVS vom [[MSPGCC]] ist auch sehr umfangreich: http://mspgcc.cvs.sourceforge.net/mspgcc/examples/&lt;br /&gt;
&lt;br /&gt;
===Codebeispiele auf Mikrokontroller.net===&lt;br /&gt;
Einige [[MSP430 Codebeispiele]] finden sich auch hier in der Artikelsammlung.&lt;br /&gt;
&lt;br /&gt;
===uIP Port auf Mikrokontroller.net===&lt;br /&gt;
Der Port des TCP/IP Stacks von Adam Dunkels [[MSP430_uIP_Port|uIP 1.0 für den MSP430 findet sich hier]].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Launchpad interne Temp. Messung mit ADC und Anzeige auf LCD===&lt;br /&gt;
C Codebeispiel für Launchpad mit IAR Kickstartcompiler, interner ADc und LCD Ansteuerung. Vergleich Atmel 8 Bit AVR Controller und mit MSP Familie: [http://www.mikrocontroller.net/topic/222015#new]&lt;br /&gt;
&lt;br /&gt;
== Links ==&lt;br /&gt;
&lt;br /&gt;
* [http://www.mikrocontroller.net/forum/1/msp430 Beiträge zum MSP430 im Mikrocontroller.net Forum]&lt;br /&gt;
* [http://mspgcc.sourceforge.net/manual/c68.html An introduction to the TI MSP430 low-power microcontrollers]&lt;br /&gt;
* [http://tinymicros.com/embedded/MSP430/ The MSP430 Bugspray Database] - umfangreiche Datenbank für Bugs in MSP430-Controllern&lt;br /&gt;
* [http://www.mathar.com www.mathar.com] - Tutorial für Einsteiger und Fortgeschrittene: LCD, ADC, USART, I2C, CAN Programmierung in C&lt;br /&gt;
* [http://cnx.org/lenses/TexasInstruments/MSP430 Connexions - Texas Instruments MSP430] Tutorial (speziell für eZ430)&lt;br /&gt;
* [http://msp430.info MSP430.info] - Portalseite für MSP430; Info, Projekte, Paper, Entwicklungstools...&lt;br /&gt;
* [http://groups.yahoo.com/group/msp430 Yahoo group MSP430] - lebhaftes Forum mit vielen MSP430-Experten&lt;br /&gt;
* [http://www.thomas-wedemeyer.de/elektronik/msp430/msp430.html Thomas Wedemeyer&#039;s MSP430-Seiten] - Kleine Beispiel Applikationen und Tips zur Nutzung von MSPGCC mit der Dev-C++ Entwicklungsumgebung&lt;br /&gt;
* [http://homepage.hispeed.ch/py430/mspgcc/ msp430-gdb und Eclipse] - Eine Anleitung von Chris Liechti&lt;br /&gt;
* [http://passworld.co.jp/index.php?lang=GB&amp;amp;lieu=GPS MSP430 GPS] - [http://passworld.co.jp/index.php?lang=GB&amp;amp;lieu=Oximeter MSP430 Puls-Oximeter]&lt;br /&gt;
* [http://passworld.co.jp/ForumMSP430 MSP430 Forum]&lt;br /&gt;
* [http://develissimo.net/de/msp430entwicklung.html MSPGCC + Eclipse + msp430-gdbproxy / Linux / Debian / Ubuntu] - Anleitung / Tutorial zur Installation der MSPGCC Toolchain + Eclipse + msp430-gdbproxy für Linux / Debian / Ubuntu Lang=Deutsch und Englisch&lt;br /&gt;
* [http://www.sinelabore.com SinelaboreRT] - Generierung von Zustandsmaschinen in C speziell für kleine Low-Power Plattformen.&lt;br /&gt;
* [http://msp430.funpic.de msp430.funpic.de] - Wiki zum MSP430&lt;br /&gt;
* [http://mspsci.blogspot.com/2010/07/tutorial-01-getting-started.html Scientific Instruments Using the TI MSP430] - Tutorial speziell zum TI Launchpad.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Mikrocontroller]]&lt;br /&gt;
[[Kategorie:MSP430| ]]&lt;/div&gt;</summary>
		<author><name>Axelac</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=Datei:Launchpad-lcd.jpg&amp;diff=57896</id>
		<title>Datei:Launchpad-lcd.jpg</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=Datei:Launchpad-lcd.jpg&amp;diff=57896"/>
		<updated>2011-06-12T13:12:17Z</updated>

		<summary type="html">&lt;p&gt;Axelac: Launchpad mit MSP430G2452 Controller und C0802 lcd Modul&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Launchpad mit MSP430G2452 Controller und C0802 lcd Modul&lt;/div&gt;</summary>
		<author><name>Axelac</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=MSP430&amp;diff=57895</id>
		<title>MSP430</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=MSP430&amp;diff=57895"/>
		<updated>2011-06-12T13:10:39Z</updated>

		<summary type="html">&lt;p&gt;Axelac: /* Entwicklungshardware */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Der MSP430 ist ein 16 Bit-Mikrocontroller von Texas Instruments (TI). Er wurde speziell für eine geringe Stromaufnahme entwickelt, so dass er besonders für batteriebetriebene Geräte geeignet ist. Es gibt verschiedene Typen mit 1-256 kB [[Flash-ROM]], 128-16384 Byte [[RAM]], teilweise mit Hardware-Multiplizierer, [[UART]], [[AD-Wandler]] oder LCD-Treiber, die meisten im [[SMD]]-Package mit 20 bis &amp;gt;100 Pins. Einige neuere aus der MSP430F2xxx-Serie gibt es auch im DIP-Package (Bezeichnung: MSPxxxx &#039;&#039;&#039;-N&#039;&#039;&#039;). Der MSP430F1121 zum Beispiel hat 4kB [[Flash-ROM]], 256B [[RAM]], 2 [[Timer]] und steckt in einem SO-20 Gehäuse. &lt;br /&gt;
&lt;br /&gt;
== Entwicklungshardware ==&lt;br /&gt;
Für den schnellen Einstieg stellt TI ein preisgünstiges Entwicklungssystem mit USB Schnittstelle zur Verfügung ([http://focus.ti.com/docs/toolsw/folders/print/ez430-f2013.html MSP430 USB Stick Development Tool]).&lt;br /&gt;
&lt;br /&gt;
Günstige Adapterplatinen und [[JTAG]]-Programmer für MSP430-Controller bekommt man bei [http://olimex.com/dev/ Olimex (Bulgarien)], in Deutschland bei http://shop.mikrocontroller.net und http://www.elektronikladen.de oder in Japan bei [http://passworld.co.jp/index.php?lang=GB&amp;amp;lieu=Soroban PassWorld].&lt;br /&gt;
&lt;br /&gt;
Einen einfachen Schaltplan für den [[JTAG]]-Programmer von TI bzw. Olimex gibt es [[Media:MSP430-JTAG-programmer.pdf|hier]]. Die Spannungsversorgung kommt im Gegensatz zum Original allerdings nicht vom Drucker-Port sondern muss extern (am besten vom MSP430 Board) bereitgestellt werden.&lt;br /&gt;
&lt;br /&gt;
Neben der JTAG-Programmierung bieten die MSP430-Controller auch die Möglichkeit, die Firmware über einen [[Bootloader]] einzuspielen. Die dafür erforderliche Hardware wird in der Application Note [http://focus.ti.com/docs/mcu/catalog/resources/appnoteabstract.jhtml?familyId=342&amp;amp;abstractName=slaa096d SLAA096d] von Texas Instruments beschrieben.&lt;br /&gt;
&lt;br /&gt;
Auf jeden Fall eine Überlegung wert wäre auch das neue &#039;&#039;&#039;Launchpad&#039;&#039;&#039; (Bezugsquellen: [https://estore.ti.com/MSP-EXP430G2-MSP430-LaunchPad-Value-Line-Development-kit-P2031.aspx] [http://search.digikey.com/scripts/DkSearch/dksus.dll?PName?Name=296-27570-ND] [http://www.watterott.com/de/MSP430-LaunchPad-MSP-EXP430G2])&lt;br /&gt;
&lt;br /&gt;
[[Datei:launchpad-lcd.jpg]]&lt;br /&gt;
&lt;br /&gt;
Der Launchpad (ca. 5Euro!) enthält neben dem per USB ansprechbaren Programmer auch das &amp;quot;Spy by Wire&amp;quot; Interface, mit dem der uController in der Schaltung emuliert werden kann (in Circuit emulation).&lt;br /&gt;
&lt;br /&gt;
=== Stromversorgung ===&lt;br /&gt;
&lt;br /&gt;
Der MSP430 benötigt eine Spannung zwischen 1,8 und 3,6 V. Einfach erzeugen kann man diese z.&amp;amp;nbsp;B. mit der folgenden Schaltung:&lt;br /&gt;
&lt;br /&gt;
http://www.mikrocontroller.net/images/lm317.png&lt;br /&gt;
&lt;br /&gt;
An den Eingang wird ein Steckernetzteil angeschlossen, die Ausgangsspannung lässt sich über das Potentiometer P1 einstellen.&lt;br /&gt;
Benutzt man für P1 einen 500-Ohm-Typ, kann man die Spannung in einem Bereich von 1,2 Volt und knapp 3,6 Volt einstellen. Dann kann man den MSP430 nicht durch zu hohe Versorgungsspannungen zerstören.&lt;br /&gt;
&lt;br /&gt;
Für den Batteriebetrieb eines MSP430 gibt es von TI eine fertige Lösung mit wenig Peripherie:&lt;br /&gt;
&lt;br /&gt;
TPS61221 &lt;br /&gt;
http://focus.ti.com/docs/prod/folders/print/tps61221.html&lt;br /&gt;
&lt;br /&gt;
Schaltung für 3,3V Versorgung:&lt;br /&gt;
http://focus.ti.com/lit/an/slva336/slva336.pdf&lt;br /&gt;
&lt;br /&gt;
Die neue Generation mit USB, MSP430F55xx, enthält bereits einen Längsregler von 5 V auf 3,3 V für den Betrieb an der USB-Speisespannung.&lt;br /&gt;
Die Minimalausstattung für die Erstinbetriebnahme ist ein Quarz (bspw. 12 MHz), ein Widerstand 1,5 kΩ und eine Drahtbrücke.&lt;br /&gt;
&lt;br /&gt;
http://www-user.tu-chemnitz.de/~heha/mb-iwp/Schrittmotorsteuerung/MSP430V1.jpg&lt;br /&gt;
&lt;br /&gt;
Dabei meldet sich der Mikrocontroller (genauer: der enthaltene Bootloader) als HID-Gerät. Zum Füllen des Flash steht von Texas Instruments eine Software mit Quelltext zur Verfügung. Leider ist die API der DLL völlig missraten (total stümperhaft), und das Programm schluckt keine .HEX-Dateien (wie sonst üblich), sondern TI-spezifische .TXT-Dateien. {Da habe ich etwas nachprogrammiert, siehe: http://www-user.tu-chemnitz.de/~heha/hs_freeware/msp430-usbbsl.zip }&lt;br /&gt;
&lt;br /&gt;
== Dokumentation ==&lt;br /&gt;
&lt;br /&gt;
* TI&#039;s Website: http://www.msp430.com &lt;br /&gt;
*:Für jede MSP430 Familie (z.&amp;amp;nbsp;B. MSP430F1xxx) gibt es ein generelles &amp;quot;datasheet&amp;quot;    und einen detailierten &amp;quot;user guide&amp;quot;. Die im user guide verwendeten   Registerbezeichnungen (Ports, SFRs, etc.) findet man auch bei den meisten   Compilern wieder.&lt;br /&gt;
&lt;br /&gt;
* Buch: Mikrocontrollertechnik Am Beispiel der MSP430-Familie&lt;br /&gt;
*:Dieses Lehrbuch führt in die Grundlagen der Mikrorechentechnik ein. Es beschreibt sehr detailliert den Aufbau, die Funktion und die Handhabung von Mikrocontrollern am Beispiel des MSP430F1232. Programmbeispiele sind in Assembler und C enthalten. Ideal für Einsteiger mit geringen technischen Vorkenntnissen. Autor: Matthias Sturm ISBN:3-446-21800-9, Hanser Verlag&lt;br /&gt;
&lt;br /&gt;
== Software ==&lt;br /&gt;
===Freie Tools===&lt;br /&gt;
====MSP-CCE430====&lt;br /&gt;
Dies ist die Entwicklungsumgebung von TI. Es gibt eine teure Pro-Version, aber eben auch eine Freeware-Version, die auf 16kB Codegrösse beschränkt ist. &lt;br /&gt;
&lt;br /&gt;
Dieser Entwicklungsumgebung liegt Eclipse zugrunde, wobei der C-Compiler und ein Debugger bereits eingebunden sind. Die Installation ist im Gegensatz zu MSPGCC kein Problem.&lt;br /&gt;
&lt;br /&gt;
* [http://focus.ti.com/docs/toolsw/folders/print/msp-cce430.html Download MSP-CCE430]&lt;br /&gt;
&lt;br /&gt;
====MSPGCC====&lt;br /&gt;
Man kann Programme für den MSP430 komplett mit freien Tools entwickeln. Mit dem C-Compiler [[MSPGCC]], dem Debugging-Programm [[GDB]]/Insight und einem beliebigen [[Texteditor]] kann man C-Programme schreiben, kompilieren, in den Controller programmieren und debuggen. In Kombination mit MSPGCC kann man auch die freie Entwicklungsumgebung Eclipse verwenden.&lt;br /&gt;
&lt;br /&gt;
Direkt mit Eclipse 3.6 Helios compilieren und debuggen&lt;br /&gt;
* [[MSP430_eclipse_helios_mspgcc4_gdb-proxy|Anleitung]] (06/2010)&lt;br /&gt;
&lt;br /&gt;
Weblinks:&lt;br /&gt;
* [http://msp430.ms.funpic.de/doku.php?id=msp430:entwicklungumgebung Eclipse+mspgcc+GDB-Proxy] (03/2009)&lt;br /&gt;
* [http://www.mikrocontroller.net/articles/Eclipse_und_MSPGCC_unter_Windows Eclipse und MSPGCC unter Windows] (03/2009)&lt;br /&gt;
* [http://matthias-hartmann.blogspot.com/ Use Eclipse and mspgcc - the easy way] (Windows 02/2009).&lt;br /&gt;
* [http://www.mikrocontroller.net/Eclipse%20und%20MSPGCC/ Eclipse und MSPGCC] (Windows 03/2006)&lt;br /&gt;
* [http://inf.ntb.ch/infoportal/help/index.jsp?topic=/ch.ntb.infoportal/embeddedSystems_MSP430.html/ Eclipse + MSPGCC + Installationsanleitung Deutsch] (Windows, Linux) (Link ist Tot! .. hat noch wer eine Version?)&lt;br /&gt;
* [http://kurt.on.ufanet.ru/ MSPFET - FREE MSP430 flash programming utility] (Windows)&lt;br /&gt;
* [http://xgoat.com/wp/2009/03/25/fetproxy-an-open-source-replacement-for-msp430-gdbproxy/ FetProxy - Ein funktionierender Open-Source-Ersatz für msp430-gdbproxy] (Unix, Linux)&lt;br /&gt;
&lt;br /&gt;
Achtung: Es gibt &#039;&#039;&#039;mspgcc&#039;&#039;&#039; und &#039;&#039;&#039;mspgcc4&#039;&#039;&#039;!&lt;br /&gt;
Ersterer unterstützt keine CPUX (moderner MSP430-Prozessorkern mit 20 Bit Adressierungs- und Verarbeitungsbreite, für 1 MByte Adressraum), so ist man praktisch auf 47 KByte Kode beschränkt, und ohne selbstgemachte Linker-Skripte kann man zurzeit keine MSP430F55xx programmieren.&lt;br /&gt;
Letzterer basiert häufig auf cygwin und ist deshalb nicht so leicht in Gang zu setzen, die Dokumentation noch spärlicher und ausschließlich auf &#039;&#039;&#039;man&#039;&#039;&#039; basierend.&lt;br /&gt;
&lt;br /&gt;
====MSPDebug====&lt;br /&gt;
MSPDebug ist ein Programmier/- Debugwerkzeug für den [[MSP430]], ähnlich wie avrdude für die [[AVR]]s.&lt;br /&gt;
&lt;br /&gt;
Momentan (0.11) unterstütze Programmer/Debugger (aus der Hilfe übernommen):&lt;br /&gt;
* ez430-RF2500 z.B. der Programmieradapter von der ez430-Chronos&lt;br /&gt;
* Olimex MSP-JTAG-TINY&lt;br /&gt;
* TI FET430UIF und Kompatible (z.B. eZ430)&lt;br /&gt;
* TI FET430UIF bootloader&lt;br /&gt;
&lt;br /&gt;
Weblinks:&lt;br /&gt;
* [http://mspdebug.sourceforge.net/ Projekthomepage bei Sourceforge]&lt;br /&gt;
* [http://aur.archlinux.org/packages.php?ID=37648 AUR-Paket für Arch Linux]&lt;br /&gt;
&lt;br /&gt;
=== Kommerzielle Compiler für MSP430 ===&lt;br /&gt;
* [http://www.imagecraft.com/devtools_MSP430.html ICC430]&lt;br /&gt;
*: 45-Tage Demo wird nach Ablauf auf 4 kByte Codegröße beschränkt&lt;br /&gt;
* [http://www.htsoft.com/products/msp430ccompiler.php HI-TECH MSP430 C]&lt;br /&gt;
*: 28-Tage Demo wird nach Ablauf unbrauchbar.&lt;br /&gt;
*: &#039;&#039;Die verlinkte Seite listet nur Compiler für PIC auf. Produkt eingestellt?&#039;&#039;&lt;br /&gt;
*: &#039;&#039;They are part of microchip now: [http://www.htsoft.com/HI-TECH%20Customer%20Letter_Final.pdf]&#039;&#039;&lt;br /&gt;
* [http://www.ide430.com/ IDE430]&lt;br /&gt;
*: &#039;&#039;Dieser Link ist tot. Gibt es das Produkt noch?&#039;&#039;&lt;br /&gt;
* [http://www.rowley.co.uk/msp430/index.htm CrossWorks for MSP430]&lt;br /&gt;
*: 30-Tage-Testversion nach Registrierung&lt;br /&gt;
* [http://www.quadravox.com/AQ430.htm Quadravox AQ430]&lt;br /&gt;
* [http://focus.ti.com/docs/toolsw/folders/print/msp-cce430.html?DCMP=MSP430_ccessentials&amp;amp;HQS=Other+PR+ccessentials CCEssentials (Eclipse)]&lt;br /&gt;
*: Mittlerweile: [http://processors.wiki.ti.com/index.php/CCSv4 Code Composer Studio 4]&amp;quot;, Microcontroller/&amp;quot;Core Edition&amp;quot; für MSP430 ist kostenlos. Download erfordert Registrierung und Exporterfassung. Dateiname &amp;quot;setup_CCS_MC_Core.zip&amp;quot;, ca. 360 MB.&lt;br /&gt;
*: Frei und auf 8 kByte Codegröße beschränkt, seit V3 bis 16kByte Code frei&lt;br /&gt;
* [http://www.iar.se/website1/1.0.1.0/675/1/index.php IAR Embedded Workbench for MSP430] &lt;br /&gt;
*: 30-Tage-Testversion&lt;br /&gt;
*: Freie auf 4 kByte (MSP430) oder 8 kByte (MSP430X) Codegröße beschränkte &amp;quot;KickStart&amp;quot;-Edition.&lt;br /&gt;
*: Kompatibel mit Windows7 7000 x64 (Stand: Februar 2009, Version 4.20.1)&lt;br /&gt;
&lt;br /&gt;
== Beispielanwendungen ==&lt;br /&gt;
&lt;br /&gt;
===Mathar.Com===&lt;br /&gt;
Auf http://www.mathar.com gibt es ein paar Beispiele (in C), was man so alles mit dem MSP430 anstellen kann. Dort hat der Autor einige Anwendungen näher erläutert. Angefangen mit simplen Aufgaben wie LEDs leuchten lassen geht es weiter über eine LCD- und GLCD-Ansteuerung (HD44780- und KS0108-kompatibel) sowie einigen Beispielen zur Verwendung des integrierten A/D-Wandlers, des USARTs, des Timers und vielem mehr ... Als weitere Codebeispiele sind dort auch eine I2C-Softwareimplementation und eine CAN-Library für den MSP430 zu finden.&lt;br /&gt;
&lt;br /&gt;
===Examples Ordner der freien Toolchain MSPGCC===&lt;br /&gt;
Der &amp;quot;examples&amp;quot;-Ordner bzw. &amp;quot;checkout&amp;quot; aus dem CVS vom [[MSPGCC]] ist auch sehr umfangreich: http://mspgcc.cvs.sourceforge.net/mspgcc/examples/&lt;br /&gt;
&lt;br /&gt;
===Codebeispiele auf Mikrokontroller.net===&lt;br /&gt;
Einige [[MSP430 Codebeispiele]] finden sich auch hier in der Artikelsammlung.&lt;br /&gt;
&lt;br /&gt;
===uIP Port auf Mikrokontroller.net===&lt;br /&gt;
Der Port des TCP/IP Stacks von Adam Dunkels [[MSP430_uIP_Port|uIP 1.0 für den MSP430 findet sich hier]].&lt;br /&gt;
&lt;br /&gt;
== Links ==&lt;br /&gt;
&lt;br /&gt;
* [http://www.mikrocontroller.net/forum/1/msp430 Beiträge zum MSP430 im Mikrocontroller.net Forum]&lt;br /&gt;
* [http://mspgcc.sourceforge.net/manual/c68.html An introduction to the TI MSP430 low-power microcontrollers]&lt;br /&gt;
* [http://tinymicros.com/embedded/MSP430/ The MSP430 Bugspray Database] - umfangreiche Datenbank für Bugs in MSP430-Controllern&lt;br /&gt;
* [http://www.mathar.com www.mathar.com] - Tutorial für Einsteiger und Fortgeschrittene: LCD, ADC, USART, I2C, CAN Programmierung in C&lt;br /&gt;
* [http://cnx.org/lenses/TexasInstruments/MSP430 Connexions - Texas Instruments MSP430] Tutorial (speziell für eZ430)&lt;br /&gt;
* [http://msp430.info MSP430.info] - Portalseite für MSP430; Info, Projekte, Paper, Entwicklungstools...&lt;br /&gt;
* [http://groups.yahoo.com/group/msp430 Yahoo group MSP430] - lebhaftes Forum mit vielen MSP430-Experten&lt;br /&gt;
* [http://www.thomas-wedemeyer.de/elektronik/msp430/msp430.html Thomas Wedemeyer&#039;s MSP430-Seiten] - Kleine Beispiel Applikationen und Tips zur Nutzung von MSPGCC mit der Dev-C++ Entwicklungsumgebung&lt;br /&gt;
* [http://homepage.hispeed.ch/py430/mspgcc/ msp430-gdb und Eclipse] - Eine Anleitung von Chris Liechti&lt;br /&gt;
* [http://passworld.co.jp/index.php?lang=GB&amp;amp;lieu=GPS MSP430 GPS] - [http://passworld.co.jp/index.php?lang=GB&amp;amp;lieu=Oximeter MSP430 Puls-Oximeter]&lt;br /&gt;
* [http://passworld.co.jp/ForumMSP430 MSP430 Forum]&lt;br /&gt;
* [http://develissimo.net/de/msp430entwicklung.html MSPGCC + Eclipse + msp430-gdbproxy / Linux / Debian / Ubuntu] - Anleitung / Tutorial zur Installation der MSPGCC Toolchain + Eclipse + msp430-gdbproxy für Linux / Debian / Ubuntu Lang=Deutsch und Englisch&lt;br /&gt;
* [http://www.sinelabore.com SinelaboreRT] - Generierung von Zustandsmaschinen in C speziell für kleine Low-Power Plattformen.&lt;br /&gt;
* [http://msp430.funpic.de msp430.funpic.de] - Wiki zum MSP430&lt;br /&gt;
* [http://mspsci.blogspot.com/2010/07/tutorial-01-getting-started.html Scientific Instruments Using the TI MSP430] - Tutorial speziell zum TI Launchpad.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Mikrocontroller]]&lt;br /&gt;
[[Kategorie:MSP430| ]]&lt;/div&gt;</summary>
		<author><name>Axelac</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=AVR_In_System_Programmer&amp;diff=42925</id>
		<title>AVR In System Programmer</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=AVR_In_System_Programmer&amp;diff=42925"/>
		<updated>2010-02-06T15:58:10Z</updated>

		<summary type="html">&lt;p&gt;Axelac: /* ISP */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Einführung ==&lt;br /&gt;
&lt;br /&gt;
In-System-Programming (ISP) bedeutet, einen Mikrocontroller oder anderen programmierbaren Baustein im eingebauten Zustand zu programmieren. Dazu muss der Mikrocontroller entsprechend verschaltet sein. Das bedeutet, die benötigten Anschlüsse am Mikrocontroller müssen zugänglich und nicht anderweitig benutzt sein, beziehungsweise nur im zulässigen Rahmen  (Atmel Application Note AVR042). &lt;br /&gt;
&lt;br /&gt;
Atmel verwendet für ihre 8-Bit RISC Mikrocontroller zum Teil unterschiedliche ISP-Protokolle. Das bekannteste davon wird einfach als ISP bezeichnet. Insgesamt findet man:&lt;br /&gt;
&lt;br /&gt;
;ISP:Der Normalfall. Gelegentlich wird die Methode auch als SPI bezeichnet, da sich bei vielen, aber nicht allen AVRs die SPI- und ISP-Schnittstelle Pins teilen. [[Microchip]]-Jünger und [[Arduino]] bezeichnen die Schnittstelle gerne fälschlich als ICSP. Je nach AVR gibt es leichte Unterschiede im Protokoll. Normalerweise ist das Protokoll für einen Typ im Datenblatt des Typs etwas versteckt unter &#039;&#039;Memory Programming -&amp;gt; Serial Downloading&#039;&#039; beschrieben.&lt;br /&gt;
;TPI:Tiny Programming Interface. Einige AVRs der Tiny-Serie, besonders die 6-Pin Tinys.&lt;br /&gt;
;PDI:Programming and Debugging Interface. Die XMEGAs.&lt;br /&gt;
;JTAG:AVRs mit [[JTAG]] Debugging-Schnittstelle lassen sich im Normalfall auch über JTAG in-system programmieren.&lt;br /&gt;
;Bootloader:Einige wenige AVRs kommen bereits mit einem einprogrammierten [[Bootloader]]. Bei diesen kann man ein zum Bootloader passendes Programm nutzen um den AVR in-system zu programmieren. Auf Bootloadern basierende Systeme haben ansonsten ein Henne-Ei Problem. Irgendwie muss der Bootloader einmal konventionell in den AVR programmiert werden, zum Beispiel mit ISP.&lt;br /&gt;
&lt;br /&gt;
Atmels [[debugWire]] ist keine Programmierschnittstelle, sondern eine reines Debugging-Interface. Zum Programmieren verwendet man bei AVRs mit debugWire daher normalerweise ISP.&lt;br /&gt;
&lt;br /&gt;
Atmel hat für die AVR 8-Bit RISC Mikrocontroller mehrere Application Notes herausgegeben, auf deren Basis eine Vielzahl von Programmiergeräten (&#039;&#039;programmer&#039;&#039;) entwickelt wurden. &lt;br /&gt;
&lt;br /&gt;
Natürlich liefert Atmel auch eigene, fertige Programmiergeräte (AVRISP (mk I), AVRISP mk II, [[AVR-Dragon]], ...), Programmiersoftware (AVRProg, AVR Studio) und Entwicklungsboards mit integriertem Programmiergerät (z.B. [[STK500]]).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p style=&amp;quot;color:darkred;&amp;quot;&amp;gt;&amp;lt;big&amp;gt;FAQ/Tipp: &#039;&#039;&#039;&amp;quot;Welchen ISP-Adapter sollte man sich zulegen oder bauen?&amp;quot;&#039;&#039;&#039;&amp;lt;/big&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Man sollte sich einen fertigen, original Atmel (keinen Clone) ISP-Adapter kaufen. Zum Beispiel für ISP (und PDI) Programmierung &#039;&#039;&#039;Atmels original [[AVR_In_System_Programmer#Atmel_AVRISP_MKII|AVRISP mkII]] für rund 36,- Euro&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Das ist eine Investition, die viel Zeit und Ärger spart, denn es geht nichts über zuverlässiges Werkzeug. Beim Umgang mit µCs ist es sehr frustrierend an drei Fronten gleichzeitig zu kämpfen:&lt;br /&gt;
# Bugs in der Software, &lt;br /&gt;
# Bugs in der Schaltung und &lt;br /&gt;
# Bugs/Probleme beim ISP-Adapter - PC-Gespann.&lt;br /&gt;
&lt;br /&gt;
Wenigstens Probleme mit dem IPS-Adapter lassen sich durch den Kauf eines zuverlässigen ISP-Adapters eliminieren. Siehe auch diverse Forenbeiträge u.a. [http://www.mikrocontroller.net/topic/91042#778908] und [http://www.mikrocontroller.net/topic/153841#1447882].&lt;br /&gt;
&lt;br /&gt;
Sehr unzuverlässig sind häufig billige oder selbstgebaute Programmierkabel mit nichts außer ein paar Widerständen. Unzuverlässig sind häufig auch billige oder selbstgebaute Programmierkabel mit einem einfachen Bustreiber. Nur weil sie bei manchen funktionieren heißt das nicht, dass sie überall problemlos funktionieren.&lt;br /&gt;
&lt;br /&gt;
Parallelport- (Druckerport-) ISP-Adapter funktionieren gar nicht, wenn man sie mit einem USB &amp;lt;-&amp;gt; Druckerport Adapter an einen USB-Port am PC anschließt. Einfach (unintelligente) ISP-Adapter für die serielle Schnittstelle funktionieren gar nicht oder extrem langsam, wenn man sie mit einem USB &amp;lt;-&amp;gt; Seriell Adapter am PC anschließt. Gute intelligente serielle Programmieradapter, wie der in Atmels STK500 eingebaute, funktionieren normalerweise mit einem USB-Adapter.&lt;br /&gt;
&lt;br /&gt;
Bei allen Programmieradaptern mit eigener Firmware, einschließlich der Original-Adapter von Atmel, ist man darauf angewiesen, dass der Hersteller wenn nötig Firmware-Updates bereitstellt. Bei Clones ist die Versorgung mit Firmware manchmal fraglich.&lt;br /&gt;
&lt;br /&gt;
== Application Notes ==&lt;br /&gt;
* [http://www.atmel.com/dyn/resources/prod_documents/DOC0943.PDF AVR910] (PDF) &amp;quot;&#039;&#039;Low-cost&#039;&#039;&amp;quot; &#039;&#039;In-system programming&#039;&#039; (&#039;&#039;&#039;AVRISP&#039;&#039;&#039;) beschreibt einen einfachen, kostengünstigen Programmieradapter zur Übertragung von Programmen in den Mikrocontroller. Auf dem Programmer befindet sich ein Mikrocontroller (natürlich von Atmel ;-), der serielle Steuerkommandos und Daten vom PC in Programmiersignale für den Mikrocontroller umsetzt.&lt;br /&gt;
&lt;br /&gt;
* [http://www.atmel.com/dyn/resources/prod_documents/doc2568.pdf AVR911] (PDF) &#039;&#039;Open source serial programmer&#039;&#039; (&#039;&#039;&#039;AVROSP&#039;&#039;&#039;) beschreibt eine &#039;&#039;open source&#039;&#039; Programmiersoftware zur Übertragung von Programmen in den Mikrocontroller. &lt;br /&gt;
&lt;br /&gt;
* [http://www.atmel.com/dyn/resources/prod_documents/doc1644.pdf AVR109] (PDF) &#039;&#039;Self-Programming&#039;&#039; mit Hilfe eines [[Bootloader|Bootloaders]]. Hier wird im Mikrocontroller zunächst ein mikrocontroller-spezifisches Bootloader-Programm abgelegt. Dieses Programm empfängt das eigentliche Benutzerprogramm oder Daten z.B. über einen seriellen Anschluss ([[UART]]), legt es ggf. im Speicher (Flash-ROM, EEPROM) ab und führt ggf. anschliessend das Benutzerprogramm aus.&lt;br /&gt;
&lt;br /&gt;
== Pinbelegung ==&lt;br /&gt;
===ISP===&lt;br /&gt;
Die Standard-Pinbelegung des ISP-Steckers zum Anschluss des Mikrocontrollers sieht nach obigen Application Notes und der [http://www.atmel.com/dyn/resources/prod_documents/doc2521.pdf AVR042] (PDF) folgendermaßen aus (Anschluss auf der Platine, Ansicht von oben). Atmel bevorzugt dabei bereits seit Jahren den 6-poligen Anschluss.&lt;br /&gt;
&lt;br /&gt;
[[Bild:avr-isp-pinout.png|right]]&lt;br /&gt;
  &lt;br /&gt;
  10-poliger       6-poliger&lt;br /&gt;
  Anschluss        Anschluss&lt;br /&gt;
  &lt;br /&gt;
  1 MOSI           1 MISO&lt;br /&gt;
  2 VCC            2 VCC&lt;br /&gt;
  3 - (*)          3 SCK&lt;br /&gt;
  4,6,8,10 GND     4 MOSI&lt;br /&gt;
  5 RESET          5 RESET&lt;br /&gt;
  7 SCK            6 GND&lt;br /&gt;
  9 MISO&lt;br /&gt;
&lt;br /&gt;
Pin 1 ist am Pfostenstecker mit einem kleinen Pfeil gekennzeichnet.&lt;br /&gt;
&lt;br /&gt;
(*) Einige Programmieradapter (Ponyprog-Adapter nach Lancos-Schaltplan) unterstützen an Pin 3 des 10-poligen Steckers eine LED (Kathode an Pin), die &amp;quot;Programmierzugriff&amp;quot; signalisieren soll. Dies ist aber kaum nützlich, daher wird der Pin auch von Atmel als N/C (not connected) definiert und beim original Atmel AVRISP mit GND verbunden.&lt;br /&gt;
&lt;br /&gt;
Der 10-polige Anschluss wurde von der Firma Kanda beim STK200 verwendet und ist deshalb auch als &amp;quot;Kanda-Standard&amp;quot; bekannt und war zur Zeit der STK2000 Programmieradapter relativ weit verbreitet. Die Anschlussbelegung über einen 6-poligen Stecker stammt von Atmel selbst und ist platzsparender auf der Platine.&lt;br /&gt;
&lt;br /&gt;
Am besten kauft oder fertigt man sich einen Adapter 6 &amp;lt;-&amp;gt; 10 (siehe [http://www.shop.robotikhardware.de/shop/catalog/product_info.php?products_id=190], [https://www.watterott.com/AVR-ISP-Programming-Adapter], [https://www.watterott.com/AVR-Programmier-Kabel]), dann lassen sich praktisch alle Boards mit jedem Programmer programmieren.&lt;br /&gt;
&lt;br /&gt;
[[Datei:Kabeloben.jpg]]&lt;br /&gt;
[[Datei:Kabelunten.jpg]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Zehnpolige Messerleisten (Wannenstecker) zur Montage auf einer µC Platine zum verpolungssicheren Anschluss des Programmieradapters sind fast &amp;quot;überall&amp;quot; verfügbar, nach den sechspoligen muss man häufig etwas suchen. Alternativ bleibt nur der Griff zu den nicht verpolungssicheren 2xN Stiftleisten (z.B. 2x40), wobei man eine Stiftleiste auf 2x6 Pole kürzt.&lt;br /&gt;
&lt;br /&gt;
Sechspolige Federleisten (Pfostenbuchsen) zum Anquetschen an ein Programmierkabel sind dagegen zumindest bei den großen Versendern und Distributoren erhältlich (z.B. von Bürklin  Art.53F3500; Conrad Art.701980-62; Farnell Art.1097021; Reichelt PFL 6). Kleine lokale Elektronikläden führen diese jedoch häufig nicht. Zu den sechpoligen Pfostenbuchsen gibt es keine Alternative, wenn man ein sechpoliges Programmierkabel bauen möchte. Zehnpolige Pfostenbuchsen lassen sich nicht auf sechs Pole kürzen. &lt;br /&gt;
&lt;br /&gt;
Je nach Programmieradapter hat der VCC-Anschluss unterschiedliche Funktionen:&lt;br /&gt;
&lt;br /&gt;
# Versorgung des Programmieradapters mit Strom aus der Schaltung, wie es bei vielen Parallelport-Adaptern der Fall ist.&lt;br /&gt;
&lt;br /&gt;
# Versorgung der Schaltung mit Strom aus dem Programmieradapter. Dies ist insbesondere beim STK500 möglich und dank dessen programmierbarer Versorgungsspannung manchmal ganz praktisch. &lt;br /&gt;
&lt;br /&gt;
# Messung der Betriebsspannung der Schaltung, so dass der Programmieradapter sich auf diese Spannung einstellen kann und so ein 3,3 V Board mit 3,3 V und ein 5 V Board mit 5 V programmiert. So wie zum Beispiel beim AVRISP mkII. Daher wird VCC auf neueren Schaltbildern auch als Vtg oider VTref bezeichnet (Atmel kann sich da nicht auf eine Bezeichnung einigen).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Je nach verwendetem Programmer muss man daher sorgfältig auf die Beschaltung von VCC/Vtg/VTref und auf die Stromversorgung von Board und Programmer achten.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
===TPI===&lt;br /&gt;
TODO&lt;br /&gt;
&lt;br /&gt;
===PDI===&lt;br /&gt;
====Atmel Board-Schnittstelle &amp;amp; AVRISP MkII ====&lt;br /&gt;
Für Mikrocontroller-Boards schlägt Atmel einen 6-Pin Header, 2,54 mm Raster, mit folgender Pinbelegung vor (Ansicht von Oben):&lt;br /&gt;
&lt;br /&gt;
 DATA  1 2  VCC&lt;br /&gt;
 N.C.  3 4  N.C.&lt;br /&gt;
  CLK  5 6  GND&lt;br /&gt;
&lt;br /&gt;
(N.C.: Not Connected, nicht verbunden). Diese Belegung wird auch von Atmels AVRISP MkII im PDI-Modus verwendet.&lt;br /&gt;
&lt;br /&gt;
Bei Atmels eigenem XPlain Eval-Kit und anderen Programmieradaptern geht es zur Zeit jedoch noch fröhlich durcheinander. Folgenden Pinbelegungen lassen sich finden.&lt;br /&gt;
&lt;br /&gt;
====Atmel XPlain Eval-Board====&lt;br /&gt;
&lt;br /&gt;
Hier hat Atmel die Xmega PDI- und JTAG-Schnittstelle gemeinsam auf den Header J100 gelegt. Die PDI-Belegung ist wie folgt:&lt;br /&gt;
&lt;br /&gt;
       1  2  GND&lt;br /&gt;
       3  4  VCC&lt;br /&gt;
       5  6  CLK&lt;br /&gt;
  VCC  7  &#039;&#039;&#039;8  DATA&#039;&#039;&#039;&lt;br /&gt;
       9 10  GND&lt;br /&gt;
&lt;br /&gt;
Nur jeweils ein VCC- und ein GND-Anschluss muss verwendet werden. Es bieten sich die Pins 2 und 4 an.&lt;br /&gt;
&lt;br /&gt;
Man beachte die Position von DATA auf Pin 8 bei dieser Belegung von PDI auf dem XPlain JTAG-Header.&lt;br /&gt;
&lt;br /&gt;
====Atmel JTAGICE MkII====&lt;br /&gt;
&lt;br /&gt;
Einige sehr alte JTAGICE MkII unterstützen kein PDI. Alle neueren, in den letzten Jahren hergestellte tun es. Eventuell ist ein Firmware-Upgrade über AVR-Studio nötig.&lt;br /&gt;
&lt;br /&gt;
Laut [http://support.atmel.no/knowledgebase/avrstudiohelp/mergedProjects/JTAGICEmkII/mkII/Html/Connecting_to_target_through_the_PDI_interface.htm] und der eingebauten Hilfe von [[AVR Studio]] 4.18 SP 1 verwendet ein JTAGICE MkII im PDI-Modus folgende Pinbelegung:&lt;br /&gt;
&lt;br /&gt;
       1  2  GND&lt;br /&gt;
       3  4  VTref&lt;br /&gt;
       5  6  CLK&lt;br /&gt;
       7  8&lt;br /&gt;
 &#039;&#039;&#039;DATA  9&#039;&#039;&#039; 10  GND&lt;br /&gt;
&lt;br /&gt;
Man beachte, dass DATA hier angeblich auf Pin 9 liegt. (VTref dürfte VCC entsprechen). In der Hilfe zu AVR Studio 4.18 SP 1 ist der Pin CLK mit PDI_CLK, und der Pin DATA mit PDI_DATA bezeichnet.&lt;br /&gt;
&lt;br /&gt;
====Atmel AVR Dragon====&lt;br /&gt;
&lt;br /&gt;
Erst mit der Dragon-Firmware im SP 1 für AVR Studio 4.18 soll der PDI-Support des[[AVR Dragon]] funktionieren. Angekündigt war PDI-Support bereits für AVR Studio 4.18. &lt;br /&gt;
&lt;br /&gt;
Leider hat Atmel es versäumt in der Dragon-Dokumentation die Pinbelegung für PDI auf der Seite des Dragon anzugeben. In der Studio-Dokumentation ist von einem ominösen Dragon PDI Adapter die Rede, der Teil des &amp;quot;Dragon Kit&amp;quot; sein soll. Allerdings wird der Dragon &#039;nackt&#039; ausgeliefert und bisher gibt es keine Berichte darüber, dass jemand diesen ominösen Adapter gesehen hat. Von neueren Versionen des JTAGICE mkII ist hingegen bekannt, dass sie mit einem &#039;&#039;XMEGA PDI adapter kit&#039;&#039; geliefert werden.&lt;br /&gt;
&lt;br /&gt;
Angeblich ist es nötig, beim Dragon jeweils einen 330 Ohm Widerstand in die CLK und DATA Leitung zu legen, um Probleme mit dem Überschwingen der Signale zu vermeiden.&lt;br /&gt;
&lt;br /&gt;
== Programmer-Varianten ==&lt;br /&gt;
&lt;br /&gt;
Mittlerweile existiert eine fast unüberschaubare Zahl von Programmer-Varianten und Untervarianten. Hier sollen nur die wichtigsten Varianten mit Bauanleitungen aufgelistet werden, geordnet nach der Art des Anschlusses an den PC.&lt;br /&gt;
&lt;br /&gt;
=== Parallelport ===&lt;br /&gt;
&lt;br /&gt;
==== STK200-kompatibel ====&lt;br /&gt;
&lt;br /&gt;
Fast alle erhältlichen Parallelport-Programmieradapter, u.a. auch der hier im [http://shop.mikrocontroller.net/ Shop] angebotene, sind kompatibel zum Programmer des [[STK200]] / STK300.&lt;br /&gt;
&lt;br /&gt;
* Bauanleitung für einen [http://rumil.de/hardware/avrisp.html STK200-kompatiblen Programmieradapter] von Rolf Milde&lt;br /&gt;
&lt;br /&gt;
==== Paralleles Interface für AVR und PonyProg ====&lt;br /&gt;
&lt;br /&gt;
Schaltplan und Erläuterungen bei [http://s-huehn.de/elektronik/avr-prog/avr-prog.htm Scott-Falk Hühn]&lt;br /&gt;
&lt;br /&gt;
==== SP12 Programmer ====&lt;br /&gt;
&lt;br /&gt;
Schaltplan, Erläuterungen und Software für mehrere Plattformen, darunter auch MSDOS, gibt es bei [http://www.xs4all.nl/~sbolt/e-spider_prog.html#programmer Steven Bolt]. [http://www.xs4all.nl/~sbolt/e-spider_prog.html#programmer Ken&#039;s Dongle] ist ein spezieller Kabeladapter für SP12 zur Verbesserung der Signalqualität. Anpassung an neue Typen erfolgt durch leicht selbst erstellbare Beschreibungsdateien.&lt;br /&gt;
&lt;br /&gt;
=== Serieller Port ([[RS-232]]) ===&lt;br /&gt;
&lt;br /&gt;
==== Atmel AVRISP, STK500, AVR910 ====&lt;br /&gt;
&lt;br /&gt;
Der original AVRISP von Atmel, das STK500 und der Programmer aus der Application Note AVR910 enthalten einen Mikrocontroller, der die Umsetzung der seriellen Daten auf das ISP-Programmierinterface vornimmt. Sie lassen sich direkt mit dem AVR-Studio programmieren und sind auch problemlos mit einem USB-seriell-Adapter verwendbar.&lt;br /&gt;
&lt;br /&gt;
Ein Layout mit Schaltplan und erweitertem Sourcecode findet sich in diesem Thread in der Codesammlung [http://www.mikrocontroller.net/topic/88295#749553 AVR910 Programmer, Schaltplan, Layout, Firmware].&lt;br /&gt;
&lt;br /&gt;
Das AVR910 Design ist u.a. auf der Seite von [http://www.serasidis.gr/circuits/avr_isp/avr_isp.htm Serasidis Vasilis] im Detail beschrieben.&lt;br /&gt;
&lt;br /&gt;
Eine weitere, auführliche Anleitung zum AVR910 gibt es in deutsch auf der Seite von [http://www.klaus-leidinger.de/mp/Mikrocontroller/AVR-Prog/AVR-Programmer.html Klaus Leidinger].&lt;br /&gt;
* [https://www.ssl-id.de/b-redemann.de AVR910-USB-Prog: Bausatz incl. USB-seriell Wandler]&lt;br /&gt;
* [http://www.avr-projekte.de/isp.htm AVR910-USB: Bauanleitung incl. USB-seriell Wandler]&lt;br /&gt;
&lt;br /&gt;
Einen AVR-ISP STK500 Protokoll Programmmer und JTAGICE kompatiblen Programmer/Debugger können Sie auf folgender Homepage bestellen: [http://www.myevertool.de myevertool]&lt;br /&gt;
&lt;br /&gt;
==== SI-Prog ====&lt;br /&gt;
&lt;br /&gt;
Daneben gibt es noch weitere Programmieradapter für den seriellen Port, die auf den eigenen Mikrocontroller im Programmieradapter verzichten und das ISP-Programmierprotokoll über die Steuerleitungen des RS-232-Port nachbilden. Das Programmierprogramm auf dem PC sendet jetzt keine Steuerkommandos und Daten mehr, sondern gibt direkt die Programmiersignale an der seriellen Schnittstelle aus (&amp;quot;Pinwackeln an den Statuspins&amp;quot;). Der Nachteil dieser Adapter ist, dass sie meistens relativ langsam sind und nur unter wenigen Betriebssystemen funktionieren. Ein Beispiel dafür ist SI-Prog.&lt;br /&gt;
&lt;br /&gt;
* [http://www.lancos.com/siprogsch.html SI-Prog Originalversion]&lt;br /&gt;
* [http://s-huehn.de/elektronik/avr-prog/avr-prog.htm Schaltplan und Erläuterungen]&lt;br /&gt;
&lt;br /&gt;
=== Sercon2 ===&lt;br /&gt;
Mit einer etwas anderen Steckerbelegung als der SI-Prog arbeitet die Sercon Familie an Adaptern. Nähere Unterlagen dazu finden sich &lt;br /&gt;
[http://www.speedy-bl.com/adapter.htm hier]&lt;br /&gt;
&lt;br /&gt;
=== USB ===&lt;br /&gt;
&lt;br /&gt;
Die meisten USB-Programmieradapter verwenden einen USB-seriell-Wandler und ein STK500/AVRPROG-kompatibles Protokoll und können damit direkt aus dem AVR-Studio programmiert werden.&lt;br /&gt;
&lt;br /&gt;
==== Atmel AVRISP MKII ====&lt;br /&gt;
&lt;br /&gt;
Nachfolger des Atmel AVRISP &amp;quot;MKI&amp;quot;. Mit USB-Schnittstelle, leistungsfähigerem Programmiercontroller und erweiterem Hardwareschutz. Programmiersoftware: [[AVR-Studio]] und [[AVRDUDE]]. Herstellerinformation bei [http://www.atmel.com/dyn/products/tools_card.asp?family_id=607&amp;amp;family_name=AVR+8%2DBit+RISC+&amp;amp;tool_id=3808 atmel.com]&lt;br /&gt;
&lt;br /&gt;
Weiter unten auf dieser Seite wird auch ein einfacher, kompatibler Nachbau namens  [http://www.mikrocontroller.net/articles/AVR_In_System_Programmer#usbprog usbprog] vorgestellt.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Bascom USB ISP ====&lt;br /&gt;
Beliebter USB programmer der speziell für den Bascom Compiler entwickelt wurde. &lt;br /&gt;
Unterstützt Bascom einen neuen AVR-Controller, so kann dies automatisch auch dieser USB Programmer, eine neue Firmware ist nicht erforderlich. Ein weiterer Vorteil ist, dass er speziell für Bascom entwickelt wurde und in der IDE unterstützt wird. Er unterstützt alle Features von Bascom, auch die automatische Fusebit-Einstellung per Direktive im Quellcode.&lt;br /&gt;
&lt;br /&gt;
Angenehm ist auch, dass er keine 5V benötigt. Im Gegenteil, er kann sogar Boards über das übliche ISP-Programmierkabel mit 5V versorgen, so dass viele Boards auch ohne weitere Spannungsquelle programmiert werden können. &lt;br /&gt;
Ein wirklich empfehlenswerter Qualitätsprogrammer für alle Programmierer, die ausschließlich mit Bascom arbeiten wollen&lt;br /&gt;
* [http://www.shop.robotikhardware.de/shop/catalog/product_info.php?cPath=73&amp;amp;products_id=161 Vertrieb in Deutschland bei robotikhardware.de]&lt;br /&gt;
&lt;br /&gt;
Im Online- / Auktionshandel werden auch Alternativen angeboten, teils recht schick im Plexiglasgehäuse für ca. 20 Euro. Angeboten z.B. als &amp;quot;USB 2.0 Full Speed low cost Programmer für ATMEGA Chips&amp;quot; oder &amp;quot;AVR USB ISP Programmer ATMEL ATMEGA STK500&amp;quot;. Die Adapter funktionieren auch mit BasCom (aber auch mit AVR Studio), z.B. mit der Einstellung &amp;quot;STK500 native driver&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Man kann die Targetspannungsversorgung per USB zwischen 3,3 und 5V umschalten oder ganz abschalten (per DIP-Schalter). Sie sind per USB an den PC angeschlossen und arbeiten über einen virtuellen COM-Port. Achtung: In BasCom funktioniert das nur bis COM9. Wenn sich das Gerät z.B. auf COM15 installiert, wird es im BasCom evtl. nicht gefunden. Dann in der Systemsteuerung entsprechend umstellen.&lt;br /&gt;
&lt;br /&gt;
==== Atmel AVR Dragon ====&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Hauptartikel [[AVR-Dragon]]&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Der [http://www.atmel.com/dyn/products/tools_card.asp?tool_id=3891 AVR Dragon] ist ein preiswerter ISP (und ICE) von Atmel, der aufgrund Preis/Leistungs-Verhältnisses schnell populär wurde. Atmel wurde von dieser Popularität überrascht, da der Dragon wohl ursprünglich nur als ein &amp;quot;Gimmick&amp;quot; zur Verbreitung von AVRs in Asien gedacht war.&lt;br /&gt;
&lt;br /&gt;
Die großen Vorteile des Dragons sind, dass er alle Programmiermodi beherrscht, inklusive High-Voltage Parallel Programming (&amp;quot;verfuste&amp;quot; AVRs retten), dass er ein natives USB-Interface hat, von AVR-Studio unterstützt wird, und sogar [[JTAG]] und [[debugWIRE]] ICE / Debugging unterstützt (bei den AVRs die dies können). &lt;br /&gt;
&lt;br /&gt;
Zu den größten bekannten Nachteilen gehören, dass der Dragon völlig &amp;quot;nackt&amp;quot; kommt. Kein USB-Kabel, kein Gehäuse, nicht einmal Abstandsbolzen unter der Platine, keine Patchkabel und nicht einmal die Fassungen zum Einstecken von AVRs sind bestückt. Eine gedruckte Anleitung gibt es auch nicht. Daneben wird aufgrund des Stromverbrauchs des Dragon ein USB-Hub mit Netzteil benötigt.&lt;br /&gt;
&lt;br /&gt;
Weiter ist der Dragon dafür bekannt, empfindlich auf statische Aufladungen zu reagieren. Ein Spannungsregler und ein Ausgangstreiber gehen dabei besonders gerne kaputt. Ein gerne von Anfängern gemachter Fehler ist es, den Dragon im Betrieb auf dem mitgelieferten &amp;quot;Schaumstoff&amp;quot; aus der Verpackung liegen zu lassen. Das ist jedoch kein Schaumstoff, sondern leitendes Moosgummi.&lt;br /&gt;
&lt;br /&gt;
Weitere Schutzmaßnahmen für gefährdete AVR Dragons findet man auf der Dragonlair-Seite von [http://www.aplomb.nl/TechStuff/Dragon/Dragon.html Nard Awater].&lt;br /&gt;
&lt;br /&gt;
Der Dragon wird unter Linux z.B. von der avrdude-Programmiersoftware unterstützt. Unerklärlicherweise stellt Atmel die Dokumentation und Beschreibung des Dragon nur als Teil der Online-Hilfe der AVR-Studio Software unter Windows zur Verfügung. Weiterhin lassen sich Firmware-Updates auch nur mittels eine proprietären Atmel-Software unter Windows einspielen. Daher ist der Dragon für Linux-Benutzer nur dann zu empfehlen, wenn man zusätzlich noch Zugriff auf eine Windows-Installation hat.&lt;br /&gt;
&lt;br /&gt;
==== USBisp ====&lt;br /&gt;
&lt;br /&gt;
AVR Programmierdongle mit USB Anschluss und kompatibel zum STK500-Protokoll. Unter anderem programmierbar mit [[AVR-Studio]], [[AVRDUDE]] und [[uisp]]. Schaltplan (PDF), Layout (PDF), Erläuterungen und Firmware gibt es vom Entwickler [http://www.matwei.de Matthias Weißer].&lt;br /&gt;
&lt;br /&gt;
==== USB avrisp ====&lt;br /&gt;
&lt;br /&gt;
USB AVR Programmer auf Basis des AVR 910 Designs. Den Schaltplan, Layout und Erläuterungen (englisch) gibt es von [http://www.e.kth.se/~joakimar/hardware.html Joakim Arfvidsson].&lt;br /&gt;
&lt;br /&gt;
==== Evertool ====&lt;br /&gt;
&lt;br /&gt;
Mit USB-seriell-Wandler. Getestet mit Adapterkabeln/ICs von FTDI, SiLabs und Prolific (Adapterkabel z.B. für ca. 10EUR bei Reichelt).&lt;br /&gt;
&lt;br /&gt;
* [http://www.siwawi.arubi.uni-kl.de/avr_projects/evertool/ Evertool-&amp;quot;Homepage&amp;quot;]&lt;br /&gt;
&lt;br /&gt;
==== USBasp ====&lt;br /&gt;
&lt;br /&gt;
Thomas Fischls [http://www.fischl.de/usbasp/ USBasp] ist ein&lt;br /&gt;
Openhardware/Openfirmware USB-ISP-Adapter.  Er basiert auf einem&lt;br /&gt;
ATmega8 (oder ATmega88), der mittels einer rein auf Firmware&lt;br /&gt;
basierenden USB-Implementierung von&lt;br /&gt;
[http://www.obdev.at/products/avrusb/index.html Objective Development]&lt;br /&gt;
arbeitet. Zum Ansteuern wird [[AVRDUDE]] in einem speziellen Modus&lt;br /&gt;
benötigt, der ab Version 5.2 standardmäßig vorhanden ist (vorher waren&lt;br /&gt;
Patches nötig).&lt;br /&gt;
Eine MacOS X Anpassung stammt von [http://www.macsven.de/page8/page8.html Sven Schwiecker].&lt;br /&gt;
*Ein [http://www.FundF.net/usbasp/ offizieller USBasp Bausatz] ist erhältlich&lt;br /&gt;
*Einen preiswerten Bausatz incl. Dokumentation gibt es [http://www.b-redemann.de/produkte-programmer.shtml hier] oder [http://shop.ulrichradig.de/Bausaetze/USB-ASP-Bausatz.html hier].&lt;br /&gt;
&lt;br /&gt;
==== AvrUsb500 ====&lt;br /&gt;
&lt;br /&gt;
* [http://www.tuxgraphics.org/electronics/200510/article05101.shtml AvrUsb500] - an open source Atmel AVR Programmer, stk500 V2 compatible, with USB interface&lt;br /&gt;
* [http://www.mechaos.de/avr_progusb.php meCHAOS] - Nachbau mit neuem Platinenlayout und weiteren Funktionen.&lt;br /&gt;
&lt;br /&gt;
==== usbprog ====&lt;br /&gt;
&lt;br /&gt;
[http://www.embedded-projects.net/usbprog usbprog] von Benedikt Sauter ist ein USB Programmieradapter, der fast alle Atmel Mikrocontroller unterstützt (ATiny, ATMega, AT89, AT90,&amp;amp;nbsp;...) und daneben auch für ARM7/9 und MSP universell einsetzbar ist.&lt;br /&gt;
&lt;br /&gt;
Der Programmer wurde so entwickelt, dass man die Firmware auf dem Adapter über die USB-Verbindung austauschen kann. Dadurch sollte der Adapter lange attraktiv bleiben, da alles rund um das Projekt als open Source veröffentlicht ist und daher neue Controller einfach in die usbprog-Firmware integriert werden können.&lt;br /&gt;
Es ensteht gerade eine Firmware für einen einfachen JTAG Adapter. Damit kann man dann ganz einfach debuggen (voraussichtlich auch aus dem AVR Studio aus).&lt;br /&gt;
&lt;br /&gt;
Man kann den Adapter auch als 1:1 AVRISP mkII kompatibles Gerät betreiben. Dafür muss man eine andere Firmware einspielen, die ebenfalls Teil des Projektes ist. Der Vorteil ist der, dass man so auf jede bestehende Programmiersoftware zurückgreifen kann, die das originale AVRISP mkII unterstützt. Getestet wurde usbprog bis jetzt mit avrdude (Linux und Windows) und dem AVR Studio 4 (Windows).&lt;br /&gt;
&lt;br /&gt;
Derzeit kann man bei Benedikt Sauter Platinen und Bauteile im Set für 22 EUR (neue v3 für 34 EUR) bestellen. Näheres auf der [http://www.embedded-projects.net/usbprog Projektseite].&lt;br /&gt;
&lt;br /&gt;
==== AVR-Doper ====&lt;br /&gt;
&lt;br /&gt;
[http://www.obdev.at/products/avrusb/avrdoper.html AVR-Doper] kann neben ISP auch im High-Voltage Serial Mode als [[AVR HV-Programmer]] programmieren. Rein auf Firmware basierende USB-Implementierung. BUS-Powered. Einseitige Platine und damit auch für Selbstbauer geeignet. Verwendet einen Mega8 zur Steuerung des Programmers. Ist kompatibel zu AVR-Studio durch STK500-Protokoll.&lt;br /&gt;
&lt;br /&gt;
==== USB AVR-Lab ====&lt;br /&gt;
&lt;br /&gt;
[http://www.ullihome.de/index.php/Hauptseite#USB_AVR-Lab USB AVR-Lab] besteht aus einer sehr einfachen Hardware, usb wird in Software gemacht. Mit einem Bootloader nebst Applikation kann die Funktion des Lab´s zwischen &lt;br /&gt;
&lt;br /&gt;
*AVRISPmkII kompatiblem Programmer (AVR Studio,Linux,MacOS)&lt;br /&gt;
*STK500v2 kompatiblem Programmer (AVR Studio)&lt;br /&gt;
*USBasp kompatiblem Programmer (Linux, MacOS)&lt;br /&gt;
*RS232/RS485 Wandler&lt;br /&gt;
*I2C Logger&lt;br /&gt;
*Oszi (in Entwicklung)&lt;br /&gt;
*Multimeter (in Entwicklung)&lt;br /&gt;
*6-Kanal Logik analyzer&lt;br /&gt;
*AVR910 kompatibler Programmer (in Entwicklung)&lt;br /&gt;
*Labornetzteil (in Entwicklung)&lt;br /&gt;
*JTAG Adapter (geplant)&lt;br /&gt;
&lt;br /&gt;
getauscht werden. Mit der STK500v2 kompatiblen Firmware kann der Programmer direkt aus dem AVR Studio heraus voll kompatibel zum AVR-ISP mkII arbeiten.&lt;br /&gt;
Zusätzlich bietet der Programmer den virtuellen Com Port als Debug Port an solange nicht geflasht wird. Man kann also direkt mit dem Terminal Programm auf seinen AVR zugreifen über den ISP Adapter.&lt;br /&gt;
Dieser Modi wird von jeder ISP Firmware unterstützt.&lt;br /&gt;
Statusanzeige des Targets (angeschlossen, falsch angeschlossen,nicht angeschlossen), max. 3 Mhz ISP Freq. Das ganze ist sehr günstig in der Beschaffung (10 Eur Bauteile bei Reichelt+ 3,5 Eur Platine von ullihome.de, oder 15 Eur bestückt von ullihome.de)&lt;br /&gt;
&lt;br /&gt;
==== USBtinyISP ====&lt;br /&gt;
&lt;br /&gt;
[http://www.ladyada.net/make/usbtinyisp/ USBtinyISP] ist ein preiswerter (ca. 16$ für die Bauteile) AVR ISP Programmer und SPI Interface auf open-source Basis. Als Software kann z.B. AVRDUDE oder AVRStudio verwendet werden. Der Programmer wurde auf Windows und MacOS X getestet. Bei Adafruit sind auch Selbstbaukits erhältlich.&lt;br /&gt;
&lt;br /&gt;
==== UCOM-IR ====&lt;br /&gt;
Der [http://www.nibo-roboter.de/wiki/UCOM-IR UCOM-IR] Programmieradapter ist ein kommerzieller Bausatz (ca. 25 €), der auf einem AT90USB162 basiert. Durch die Verwendung des STK500v2 Protokolls kann zur Programmierung sowohl das [[AVR-Studio]] wie auch [[AVRDUDE]] verwendet werden. Zusätzlich hat der Adapter einen IR-Empfänger und zwei Sendedioden, die zur Kommunikation und zur Fernsteuerung verwendet werden können.&lt;br /&gt;
&lt;br /&gt;
=== Standalone ===&lt;br /&gt;
&lt;br /&gt;
==== TheCableAVR-SD (kommerziell) ====&lt;br /&gt;
&lt;br /&gt;
[http://www.priio.com/productcart/pc/viewPrd.asp?idcategory=6&amp;amp;idproduct=88 TheCableAVR-SD]  works by saving the &amp;quot;ISP&amp;quot;, &amp;quot;HEX&amp;quot; and &amp;quot;EEP&amp;quot; files required for part programming from the PC application onto an SD-Card and inserting it into TheCableAVR-SD. This programmer is stand alone, making it very handy for field software updates and production programming.&lt;br /&gt;
&lt;br /&gt;
==== ButtLoad ====&lt;br /&gt;
&lt;br /&gt;
[http://www.fourwalledcubicle.com/ButtLoad.php ButtLoad] is based on the Atmel [[AVR Butterfly]] development board. ButtLoad is specially written firmware which converts a low-cost official Atmel Butterfly evaluation board into a smart ISP programmer for other members of the Atmel AVR family. It supports the entire AVR range, and allows for a complete program (including EEP, HEX, Fuse and Lock Bytes) to be stored and later programmed into a device from the Butterfly&#039;s on board non-volatile memory.&lt;br /&gt;
&lt;br /&gt;
==== PalmAVR ====&lt;br /&gt;
&lt;br /&gt;
* siehe [http://www.mikrocontroller.net/topic/77870#648376 Forenbeitrag]&lt;br /&gt;
&lt;br /&gt;
==== mySmartUSB ====&lt;br /&gt;
&lt;br /&gt;
Der mySmartUSB Programmer von myAVR ist ein kompakter ISP Programmer mit USB Anschluss (der Preis liegt bei 28€). Lt. Hersteller kann er auch für die Kommunikation via UART, TWI, SPI verwendet werden (hab ich noch nicht probiert).&lt;br /&gt;
&lt;br /&gt;
ich aber: Beim Schreiben der Fuse Bits musste ich das Tool myAVR_ProgTool.exe verwenden - siehe http://www.opencharge.de/wiki/Mysmartusb&lt;br /&gt;
&lt;br /&gt;
Mit avrdude ist das Schreiben der Fuse-Bits mit dem AVR910-Modus möglich.&lt;br /&gt;
 &lt;br /&gt;
avrdude-Kommandozeile :&lt;br /&gt;
&#039;&#039;avrdude -c avr910 -P PORT -p PART -U lfuse:w:0xFF:m -U hfuse:w:0xD9:m&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Achtung:&#039;&#039;&#039; Die neuere Version (mySmartUSB MK3) scheint mit der aktuellen Firmwareversion noch große Probleme mit ISP zu haben (siehe Postings im Supportforum: http://myavr.info/myForum/viewforum.php?f=8). Solange diese Probleme nicht ausgemerzt sind, sollte man auf die ältere Version (mySmartUSB MK2) oder ein anderes Produkt ausweichen.&lt;br /&gt;
&lt;br /&gt;
==== Amadeus-USB ====&lt;br /&gt;
&lt;br /&gt;
[http://home.arcor.de/bernhard.michelis Amadeus-USB] ist ein ISP-Programmer zum Selberbauen. Er unterstützt eine Vielzahl von AVRs und verfügt über ein eigenes User-Interface. Der Programmer enthält einen einfach zu bedienenden Fuse-Editor. Sollte man einmal die falschen Clock-Einstellungen vorgenommen haben, ist das kein Problem, da der Programmer über eine Takterzeugung verfügt, mit der man den AVR wiederbeleben kann.&lt;br /&gt;
Auch wer mit niedrigen Taktraten arbeitet (z.B. 32kHz), kann einen ATmega64 in ca. 4,8 Sekunden programmieren und vergleichen. Darüber hinaus kann mit geeigneten Makros die Programmausführung getracet werden. Die maximale Programmierdauer beträgt bei einem ATmega64 mit 16MHz Quarz 3,1 Sekunden, wenn der gesamte Speicher geschrieben und verglichen werden muss. Ist das Programm kleiner, geht es natürlich schneller ;-) Für einen ATTiny2313 oder ATTiny24 braucht er weniger als eine Sekunde.&lt;br /&gt;
&lt;br /&gt;
=== Geschwindigkeitsvergleich ===&lt;br /&gt;
&lt;br /&gt;
Im Rahmen einer Forendiskussion entstand die folgende Messung, die&lt;br /&gt;
einige der möglichen Programmer in ihrer Geschwindigkeit vergleicht.&lt;br /&gt;
Mit einbezogen in den Vergleich wurde neben originalen&lt;br /&gt;
Atmel-ISP-Werkzeugen noch Werkzeuge für [[JTAG#AVR_JTAG|JTAG]].&lt;br /&gt;
&lt;br /&gt;
Die Testdatei war 29704 Bytes groß.  Target ist ein ATmega6490, der&lt;br /&gt;
mit 8 MHz vom RC-Oszillator getaktet wird.  Das alles wurde mit einem&lt;br /&gt;
AVRDUDE 5.5 getestet.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Programmer     Parameter         Zeit fürs&lt;br /&gt;
                              Schreiben  Lesen&lt;br /&gt;
-----------------------------------------------&lt;br /&gt;
JTAG ICE mkII  default        2,58 s     3,27 s&lt;br /&gt;
JTAG           (4 MHz)&lt;br /&gt;
-----------------------------------------------&lt;br /&gt;
JTAG ICE mkII  1 MHz          8,34 s     8,51 s   (**)&lt;br /&gt;
ISP&lt;br /&gt;
-----------------------------------------------&lt;br /&gt;
AVRISP mkII    250 kHz        5,37 s     5,46 s&lt;br /&gt;
               1 MHz          2,45 s     2,45 s&lt;br /&gt;
               2 MHz          1,89 s     1,99 s&lt;br /&gt;
-----------------------------------------------&lt;br /&gt;
STK500         900 kHz        5,84 s     3,49 s&lt;br /&gt;
               (schnellstes)&lt;br /&gt;
-----------------------------------------------&lt;br /&gt;
AVR Dragon     default        2,81 s     3,49 s&lt;br /&gt;
JTAG           (4 MHz)&lt;br /&gt;
-----------------------------------------------&lt;br /&gt;
AVR Dragon     1 MHz          8,34 s     8,64 s&lt;br /&gt;
ISP            2 MHz          -          -        (*)&lt;br /&gt;
-----------------------------------------------&lt;br /&gt;
Parallelport-  keine Delay   13,20 s    12,45 s   (**)&lt;br /&gt;
Dongle &amp;quot;alf&amp;quot;   CPU 900 MHz&lt;br /&gt;
-----------------------------------------------&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
(*) Benutzung unmöglich, weder Fuses noch Signature zuverlässig&lt;br /&gt;
lesbar.&lt;br /&gt;
&lt;br /&gt;
(**) Fuses und Signature OK, aber das programmierte Ergebnis ist&lt;br /&gt;
fehlerhaft (verify errors)&lt;br /&gt;
&lt;br /&gt;
== Software ==&lt;br /&gt;
&lt;br /&gt;
* [http://www.myplace.nu/avr/yaap/ yaap] (Windows, diverse Parallelport-Programmer, GUI)&lt;br /&gt;
* [[Pony-Prog Tutorial|PonyProg]] (Linux, Windows, diverse Programmer für den parallelen und seriellen Port, GUI, am seriellen Port nur &amp;quot;Statuspinwackler&amp;quot; nach dem Schaltplan auf der lancos-Seite)&lt;br /&gt;
* [http://www.soft-land.de/index.php?page=avrburner AVRBurner] Ponyprog ähnliche Oberfläche für AVRDUDE.&lt;br /&gt;
* [http://www.nongnu.org/avrdude AVRDUDE] (Unix, Linux, Windows, praktisch alle Programmer, leicht erweiterbar auf andere Parallelportadapter-Anschlussbelegungen, Kommandozeile, auch für AVR Butterfly über dessen vorinstallierten Bootloader/Firmware-Uploader) siehe im Wiki [[AVRDUDE]]&lt;br /&gt;
* [http://savannah.nongnu.org/projects/uisp uisp] (Unix, Linux, Windows, praktisch alle Programmer, Kommandozeile, nicht mehr gepflegt).&lt;br /&gt;
* AVR-Studio (nur Programmieradapter mit integriertem Controller für den seriellen Port, z.B. AVR910, ATMEL AVRISP und STK500)&lt;br /&gt;
* [http://www.mcselec.com Eingebauter Programmer im Bascom-Basic Compiler]&lt;br /&gt;
* [http://esnips.com/web/AtmelAVR AvrOspII] - GUI Open Source programmer based on Atmels Application note AVR911.&lt;br /&gt;
* [http://www.mikrocontroller.net/topic/60817 Forumsbeitrag] - Wie man Ponyprog aus dem AVR-Studio heraus nutzt&lt;br /&gt;
* [http://www.cadmaniac.org/projectMain.php?projectName=kontrollerlab Kontrollerlab] - (Linux), Grafische Oberfläche zu avr-gcc, uisp, avrdude und kate mit built-in debugger und serial terminal. Einfach verständlich und aufgeräumt (im KDE-Stil)&lt;br /&gt;
&lt;br /&gt;
== ISP-Pins am AVR auch für andere Zwecke nutzen ==&lt;br /&gt;
&lt;br /&gt;
Bei einem Programmer mit eingebautem [[Ausgangsstufen_Logik-ICs#Tristate|Tristate]]-Treiber (z.B. 74HC(T)244) werden die Leitungen MISO, MOSI und SCK hochohmig geschaltet wenn die Programmierung beendet ist, d.h. sie beeinflussen die Schaltung nicht. Man kann die betreffenden Pins am AVR also relativ problemlos als Ausgänge verwenden, wenn man darauf achtet, dass die daran angeschlossene Peripherie durch die Programmierimpulse keinen Schaden nehmen kann. Als Eingänge sollte man die Pins allerdings nicht verwenden, da ein angeschlossener Taster zum Beispiel die Programmierimpulse kurzschließen würde, wenn er gedrückt ist.&lt;br /&gt;
&lt;br /&gt;
Atmel empfiehlt in der Application Note [http://www.atmel.com/dyn/resources/prod_documents/doc2521.pdf AVR042: AVR Hardware Design Considerations (PDF)] Peripherie an der SPI-Schnittstelle, bei gleichzeitiger Verwendung der Schnittstelle als In-System-Programmieranschluss, über Widerstände anzuschliessen.&lt;br /&gt;
&lt;br /&gt;
siehe auch [http://www.mikrocontroller.net/articles/AVR_HV-Programmer AVR HV-Programmer]&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:AVR-Programmer und -Bootloader| ]]&lt;/div&gt;</summary>
		<author><name>Axelac</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=Datei:Kabelunten.jpg&amp;diff=42924</id>
		<title>Datei:Kabelunten.jpg</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=Datei:Kabelunten.jpg&amp;diff=42924"/>
		<updated>2010-02-06T15:54:37Z</updated>

		<summary type="html">&lt;p&gt;Axelac: selbstgefertigtes Adapterkabel&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;selbstgefertigtes Adapterkabel&lt;/div&gt;</summary>
		<author><name>Axelac</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=Datei:Kabeloben.jpg&amp;diff=42923</id>
		<title>Datei:Kabeloben.jpg</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=Datei:Kabeloben.jpg&amp;diff=42923"/>
		<updated>2010-02-06T15:53:54Z</updated>

		<summary type="html">&lt;p&gt;Axelac: selbstgefertigtes Adapterkabel&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;selbstgefertigtes Adapterkabel&lt;/div&gt;</summary>
		<author><name>Axelac</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=AVR_Net-IO_Bausatz_von_Pollin&amp;diff=33660</id>
		<title>AVR Net-IO Bausatz von Pollin</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=AVR_Net-IO_Bausatz_von_Pollin&amp;diff=33660"/>
		<updated>2009-01-06T10:48:37Z</updated>

		<summary type="html">&lt;p&gt;Axelac: /* Hardware-Umbauten &amp;amp; -Verbesserungen */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Einleitung ==&lt;br /&gt;
&lt;br /&gt;
Hier steht eine Beschreibung des Pollin Bausatzes [http://www.pollin.de/shop/shop.php?cf=detail.php&amp;amp;pg=NQ==&amp;amp;a=MTQ5OTgxOTk= AVR-NET-IO. Best.Nr. 810 058]&lt;br /&gt;
&lt;br /&gt;
Eine Liste von Features:&lt;br /&gt;
&lt;br /&gt;
Ethernet-Platine mit ATMega32 und Netzwerkcontroller ENC28J60. Die Platine verfügt über 8 digitale Ausgänge, 4 digitale und 4 ADC-Eingänge, welche alle über einen Netzwerkanschluss (TCP/IP) abgerufen bzw. geschaltet werden können.&lt;br /&gt;
&lt;br /&gt;
Technische Daten:&lt;br /&gt;
&lt;br /&gt;
* Betriebsspannung 9 V~&lt;br /&gt;
* Stromaufnahme ca. 190 mA&lt;br /&gt;
* 8 digitale Ausgänge (0/5 V)&lt;br /&gt;
* 4 digitale Eingänge (0/5 V)&lt;br /&gt;
* 4 ADC-Eingänge (10 Bit)&lt;br /&gt;
* [[ENC28J60]]&lt;br /&gt;
* [http://www.atmel.com/dyn/Products/Product_card.asp?part_id=2014 ATmega32] Mikrocontroller&lt;br /&gt;
&lt;br /&gt;
Maße (LxBxH): 108x76x22 mm.&lt;br /&gt;
&lt;br /&gt;
== Hardware ==&lt;br /&gt;
&lt;br /&gt;
[[Bild:AVR-NET-IO.JPG|thumb|400px|AVR-NET-IO (links) mit zusätzlicher SUB-D Anschlussplatine (rechts, nicht im Lieferumfang). Ebenso ist zusätzlich ein nicht im Lieferumfang enthaltener kleiner Kühlkörper auf einem der Spannungsregler montiert und die Schraubklemmen sind nicht wie vorgesehen angereiht.]]Die Schaltung des AVR-NET-IO ist recht einfach:&lt;br /&gt;
* Ein ATmega32 Mikrocontroller enthält die gesamte Software&lt;br /&gt;
* Ein ENC28J60 Ethernet-Controller für das Senden und Empfangen von Ethernet Frames (MAC und PHY Ethernet Layer) ist über [[SPI]] mit dem ATmega32 verbunden&lt;br /&gt;
* Ein Ethernet RJ-45 MagJack TRJ 0011 BA NL von [http://www.trxcom.com/ Trxcom] mit eingebautem Übertrager und Anzeige-LEDs am ENC28J60.&lt;br /&gt;
* Ein MAX232 für die serielle Schnittstelle&lt;br /&gt;
* Zwei Spannungsregler, 5 V und 3,3 V&lt;br /&gt;
* &amp;quot;Hühnerfutter&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Fast alle I/O Pins des ATmega32 sind irgendwo auf Anschlüssen herausgeführt. Entweder auf dem SUB-D Stecker, dem EXT oder ISP Wannensteckern oder den blauen Anschlussklemmen. Sie sind nicht(!) besonders geschützt, es finden sich zum Beispiel keine Schutzdioden für die Pins in der Schaltung.&lt;br /&gt;
&lt;br /&gt;
Die blauen Anschlussklemmen haben eine Nut und eine Feder mit denen man&lt;br /&gt;
sie zusammenstecken kann, dadurch ist das Anlöten wesentlich leichter&lt;br /&gt;
und sie stehen auch sauber in der Reihe (nicht wie auf dem Foto).&lt;br /&gt;
&lt;br /&gt;
==== Hardware-Umbauten &amp;amp; -Verbesserungen ====&lt;br /&gt;
&lt;br /&gt;
* Kühlkörper auf dem 7805&lt;br /&gt;
* MAX232 nach anfänglicher Konfiguration nicht bestücken um Strom zu sparen oder um zwei weitere I/O-Pins zu gewinnen&lt;br /&gt;
* 10µF-Elkos für MAX232N (C14-C17) durch 1µF ersetzen. Eine 10µF-Version für den MAX232 gibt es nicht. Die 10µF-Elkos können auch Ursache einer nicht funktionierenden RS232 sein.&lt;br /&gt;
* Die IC-Fassungen aus &amp;quot;Pollins Resterampe&amp;quot; durch Fassungen mit gedrehten Kontakten ersetzen. &lt;br /&gt;
* &#039;&#039;Netz&#039;&#039; LED nicht bestücken um Strom zu sparen&lt;br /&gt;
* Linear-Spannungsregler ersetzen&lt;br /&gt;
* Kondensator an AREF-Pin des ATmega32 (ATmega32 Datenblatt) (100nF gegen Masse)&lt;br /&gt;
* Kondensator an den RESET-Pin des ATmega32 ([http://www.atmel.com/dyn/resources/prod_documents/doc2521.pdf Atmel Application Note AVR042: AVR Hardware Design Considerations]) Wenn man diese Quelle genauer liest, ist das aber eher unnötig.&lt;br /&gt;
* Umbau auf 3,3 V:&lt;br /&gt;
** Ersatz der Spannungsregler durch einen einzigen 3,3 V Regler&lt;br /&gt;
** Anpassen (verkleinern) des LED-Vorwiderstands R3 für 3,3 Volt Betrieb&lt;br /&gt;
** Reduktion der Taktfrequenz (Austausch von Q2) auf den bei 3,3V erlaubten Bereich des ATmega32&lt;br /&gt;
** Ersatz des MAX232 durch einen MAX3232&lt;br /&gt;
* ATmega32 vom ENC28J60 takten (OSC2)&lt;br /&gt;
* Betrieb mit Gleichspannung:&lt;br /&gt;
** Dioden D2 und D5 durch Drahtbrücken ersetzen, D1 und D4 nicht bestücken (komplette Entfernung des Brückengleichrichters, beinhaltet Verlust des Verpolungsschutzes)&lt;br /&gt;
** Diode D2 bestücken, D5 durch Drahtbrücke ersetzen, D1 und D4 nicht bestücken (Brückengleichrichter durch Verpolungsschutze ersetzen)&lt;br /&gt;
[[Bild:POWER.JPG|thumb|400px|5V Stromversorgung über USB Kabel, ohne 5 V Spannungsregler und Gleichrichterdioden, Vorsicht: kein Verpolungsschutz!  ]]&lt;br /&gt;
&lt;br /&gt;
* Ersatz des ATmega32 durch einen ATmega644 mit mehr FLASH-Speicher.&lt;br /&gt;
&lt;br /&gt;
== Inbetriebnahme der Originalsoftware ==&lt;br /&gt;
=== Einleitung ===&lt;br /&gt;
&lt;br /&gt;
Die bei Auslieferung (Stand September 2008) in den ATmega32 gebrannte Firmware stellt sich manchmal recht zickig an. Es scheint dann weder die serielle Schnittstelle, noch die Netzwerkschnittstelle zu funktionieren. Falls es Probleme geben sollte kann mit den im folgenden beschriebenen Schritten die Inbetriebnahme der Software möglich sein. Dazu benötigt man:&lt;br /&gt;
&lt;br /&gt;
* Einen Windows-PC mit Ethernet-Schnittstelle und RS232-Schnittstelle (ein Prolific RS232-USB Konverter funktioniert)&lt;br /&gt;
* Entweder&lt;br /&gt;
**zwei normale (&#039;&#039;straight through&#039;&#039;) Ethernet-Kabel und einen Ethernet Switch/Hub, oder&lt;br /&gt;
**ein gekreuztes(&#039;&#039;cross over&#039;&#039;) Ethernet-Kabel&lt;br /&gt;
* Einen AVR Programmer (Hardware und Software). Zum Beispiel einen [[AVR Dragon]] oder [[STK500]] mit [[AVR Studio]] oder das [[Pollin ATMEL Evaluations-Board]] und [[avrdude]].&lt;br /&gt;
* Die [http://www.pollin.de/shop/shop.php?cf=downloads_suchergebnis.php&amp;amp;fp=OA==&amp;amp;pg=NQ==&amp;amp;a=MTQ5OTgxOTk= Pollin NetServer Software], Version 1.01 (oder neuer)&lt;br /&gt;
&lt;br /&gt;
=== Gelieferten ATmega32 richtig einstellen ===&lt;br /&gt;
&lt;br /&gt;
Die Fuses der gelieferten ATmega32s scheinen nicht immer mit den im Handbuch auf Seite 12 als erforderlich angegebenen Fuse-Einstellungen übereinzustimmen.&lt;br /&gt;
&lt;br /&gt;
Dies kann man mittels eines Programmers ändern. LFuse = 0xBF, HFuse = 0xD2. Das genaue Vorgehen hängt dabei vom verwendeten Programmer ab. Bei der Gelegenheit kann man ebenfalls eine Sicherheitskopie des ursprünglichen Flash-Inhalts und des EEPROMs anfertigen. Das EEPROM scheint die MAC-Adresse des Ethernet-Ports zu enthalten.&lt;br /&gt;
&lt;br /&gt;
Entgegen der Spezifikation im Handbuch von Pollin sollten die &#039;&#039;&#039;HFuses auf 0xC2&#039;&#039;&#039; gesetzt werden, d. h. CKOPT-Fuse programmiert. Das sorgt für einen stabilen Betrieb des AVR-Oszillators im &amp;quot;full rail-to-rail swing&amp;quot;-Mode bei 16 MHz. Atmel garantiert ansonsten nur stabilen Betrieb bis 8 MHz. Siehe ATmega32-Datenblatt, Kapitel 8.4, Crystal Oscillator.&lt;br /&gt;
&lt;br /&gt;
==== Funktionsfähige Konfiguration - AVR-Prog ====&lt;br /&gt;
&lt;br /&gt;
Benutzer von AVR-Prog können die nachfolgenden Einstellungen für die Lock- und Fuse-Bits verwenden. Hierbei handelt es sich um die ausgelesenen Einstellungen eines funktionsfähigen Controllers. Allerdings sollte, laut Handbuch des AVR-NET-IO-Boards, das Fuse-Bit EESAVE eigentlich gesetzt sein. &lt;br /&gt;
&lt;br /&gt;
[[Bild:Avrprog.png]]&lt;br /&gt;
&lt;br /&gt;
Anschließend muß noch der Bootloader und die Firmware aktualisiert werden (siehe Handbuch AVR-NET-IO-Board Seite 12 Punkt 3).&lt;br /&gt;
&lt;br /&gt;
=== PC Konfiguration ===&lt;br /&gt;
&lt;br /&gt;
==== PC normalerweise nicht im 192.168.0/24 Subnetz ====&lt;br /&gt;
&lt;br /&gt;
Betreibt man den PC normalerweise nicht im 192.168.0/24 Subnetz, muss er wie folgt umkonfiguriert werden.&lt;br /&gt;
&lt;br /&gt;
Den PC vom normalen Netzwerk abstecken. Zur Umkonfiguration dazu bei Windows XP in der Systemsteuerung &#039;&#039;Netzwerkverbindungen&#039;&#039; aufrufen und die lokale &#039;&#039;LAN-Verbindung&#039;&#039; markieren. Dann in der rechten Leiste &#039;&#039;Einstellungen dieser Verbindung ändern&#039;&#039; aufrufen. &lt;br /&gt;
&lt;br /&gt;
Es erscheint der Dialog &#039;&#039;Eigenschaften von &amp;lt;Verbindungsname&amp;gt;&#039;&#039;. In der Liste im Dialog zu &#039;&#039;Internetprotokoll (TCP/IP)&#039;&#039; gehen. Ein Doppelklick auf den Eintrag öffnet den &#039;&#039;Eigenschaften von Internetprotokoll (TCP/IP)&#039;&#039; Dialog.&lt;br /&gt;
&lt;br /&gt;
In diesem Dialog &#039;&#039;Folgende IP-Adresse verwenden:&#039;&#039; auswählen und zum Beispiel&lt;br /&gt;
&lt;br /&gt;
IP-Adresse: &#039;&#039;&#039;192.168.0.100&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
Subnetzmaske: &#039;&#039;&#039;255.255.255.0&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
Standardgateway: &#039;&#039;&#039;192.168.0.1&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
eingeben. &lt;br /&gt;
&lt;br /&gt;
Alle geöffneten Dialoge nacheinander mit OK schließen.&lt;br /&gt;
&lt;br /&gt;
Alternativ bietet sich das Umprogrammieren des Boards über die serielle Schnittstelle an. Die Werte für IP-Adresse, Netzmaske und Standard-Gateway werden mit den dokumentierten SETxx-Befehlen geändert, das Board neu gestartet und ans vorhandene Netzwerk gesteckt.&lt;br /&gt;
&lt;br /&gt;
==== PC bereits im 192.168.0/24 Subnetz ====&lt;br /&gt;
&lt;br /&gt;
In diesem Fall muss man prüfen, ob die IP-Adresse 192.168.0.90 bereits im Subnetz verwendet wird. Ist dies der Fall, muss das verwendete Gerät mit dieser IP vorübergehend aus dem Subnetz entfernt werden. Es sei denn, dabei handelt es sich um den PC. In diesem Fall muss er wie zuvor umkonfiguriert werden. Ansonsten kann der unverändert im Netz verbleiben.&lt;br /&gt;
&lt;br /&gt;
Dem AVR-NET-IO gibt man eine neue, zuvor unbenutzte Adresse (siehe unten). Dann kann das abgekoppelte Gerät wieder angeschlossen werden, beziehungsweise der PC zurückkonfiguriert werden.&lt;br /&gt;
&lt;br /&gt;
=== AVR-NET-IO anschließen ===&lt;br /&gt;
&lt;br /&gt;
Musste man den PC umkonfigurieren, so werden jetzt nur der PC und der AVR-NET-IO über Ethernet miteinander verbunden. Je nach Ethernet-Kabel benötigt man dazu einen Switch/Hub oder nicht.&lt;br /&gt;
&lt;br /&gt;
Musste man den PC nicht umkonfigurieren, so kann man den AVR-NET-IO wie einen normalen Rechner an das vorhandenen Netz anschließen.&lt;br /&gt;
&lt;br /&gt;
Zusätzlich schließt man die serielle Schnittstelle des AVR-NET-IO an den PC an.&lt;br /&gt;
&lt;br /&gt;
=== Firmware 1.01 einspielen ===&lt;br /&gt;
&lt;br /&gt;
Laut Handbuch sollte der AVR-NET-IO jetzt über Ethernet funktionieren. Ebenso sollte er über die serielle Schnittstelle und ein Terminalprogramm konfigurierbar sein. Beides ist offensichtlich im Auslieferungszustand selten der Fall.&lt;br /&gt;
&lt;br /&gt;
Auch wenn sich Pollins NetServer Software nicht mit dem AVR-NET-IO verbinden lässt, so ist sie jedoch in der Lage eine neue Firmware 1.01 einzuspielen. Das Vorgehen ist im Handbuch auf Seite 12 beschrieben. NetServer präsentiert dabei ein paar einfache Anweisungen denen man folgen sollte.&lt;br /&gt;
&lt;br /&gt;
=== Abschluss ===&lt;br /&gt;
&lt;br /&gt;
Jetzt sollte sich die NetServer Software mit dem AVR-NET-IO über Ethernet verbinden lassen. Dies macht es wiederum möglich, den AVR-NET-IO mit einer anderen IP-Adresse zu versehen. Will man den AVR-NET-IO in einem anderen Subnetz betreiben kann man dies jetzt einstellen.&lt;br /&gt;
&lt;br /&gt;
Nachdem man die IP-Adresse neu eingestellt hat, muss man den PC zurückkonfigurieren und kann dann sowohl den AVR-NET-IO und den PC zusammen betreiben.&lt;br /&gt;
&lt;br /&gt;
== Bekannte Fehler ==&lt;br /&gt;
&lt;br /&gt;
Siehe auch [[#Hardware-Umbauten_.26_-Verbesserungen|Hardware-Umbauten und Verbesserungen]]&lt;br /&gt;
&lt;br /&gt;
* Die Stückliste auf Seite 4 in den Anleitung mit den Versionsangaben&lt;br /&gt;
** &#039;&#039;Stand 20.08.2008, kloiber, #1100, wpe&#039;&#039; (gedruckt im Bausatz)&lt;br /&gt;
** &#039;&#039;Stand 20.08.2008, cd, #all, wpe&#039;&#039; (auf der CD)&lt;br /&gt;
:ist falsch. Pollin legt dem Bausatz irgendwann ab September 2008 einen gedruckten Korrekturzettel bei. Die Online-Version der Anleitung ist korrigiert.&lt;br /&gt;
* Im Schaltplan auf Seite 7 in den Anleitungen mit den Versionen&lt;br /&gt;
** &#039;&#039;Stand 20.08.2008, kloiber, #1100, wpe&#039;&#039; (gedruckt im Bausatz)&lt;br /&gt;
** &#039;&#039;Stand 20.08.2008, cd, #all, wpe&#039;&#039; (auf der CD)&lt;br /&gt;
** &#039;&#039;Stand 03.09.2008, online, #all, wpe&#039;&#039; (Online)&lt;br /&gt;
:ist eine 25-polige SUB-D Buchse gezeichnet. Geliefert wird und in der Stückliste verzeichnet ist ein Stecker.&lt;br /&gt;
&lt;br /&gt;
* Die September 2008 ausgelieferte Firmware im ATmega32  funktioniert bei vielen nicht und muss erst upgedatet werden (siehe [[#Inbetriebnahme der Originalsoftware|Inbetriebnahme der Originalsoftware]])&lt;br /&gt;
&lt;br /&gt;
* Im Flash der gelieferten AVR ist anders als beschrieben nur der Bootloader enthalten, die eigentliche Firmware muss erst mit Hilfe der Updatefunktion geladen werden. Wenn zusätzlich auch die Fuses falsch gebrannt sind, dann funktioniert das Update nicht, auch wenn das PC Programm was anderes behauptet.&lt;br /&gt;
&lt;br /&gt;
* Die Fuse-Einstellungen des ausgelieferten ATmega32 entspricht nicht der Anleitung (siehe [[#Inbetriebnahme der Originalsoftware|Inbetriebnahme der Originalsoftware]])&lt;br /&gt;
&lt;br /&gt;
* Käufer berichten von fehlenden Bauteilen im Bausatz (Wannenstecker, Widerstände, Kondensatoren). Für Reklamationen: [https://www.pollin.de/shop/fragen_reklamation.php]&lt;br /&gt;
&lt;br /&gt;
* Bausatz, gekauft am 27.10.08, Anleitungsversion 19.09.08, ohne Probleme oder erkennbare Fehler zusammengebaut und in Betrieb genommen.&lt;br /&gt;
&lt;br /&gt;
* Bausatz gekauft 29.09.2008, Pinbelegung des 25 poligen D-Sub &amp;quot;Anschlusses&amp;quot; stimmt nicht mit der Anleitung überein. Der Aufdruck auf der Platine ist falsch. Pin1 &amp;lt;-&amp;gt; Pin13, Pin2 &amp;lt;-&amp;gt; Pin12 usw. Setzt man den D-Sub Stecker ein, so sind dessen Pinnummern korrekt.&lt;br /&gt;
&lt;br /&gt;
== Andere Software statt der Originalsoftware ==&lt;br /&gt;
&lt;br /&gt;
Die Umrüstung auf einen Webserver durch Austausch der Software (und ev. des ATmega32) bietet sich an.&lt;br /&gt;
&lt;br /&gt;
=== Bascom Version von Hütti ===&lt;br /&gt;
&lt;br /&gt;
(Quelle: http://bascom-forum.de/index.php/topic,1781.15.html )&lt;br /&gt;
&lt;br /&gt;
=== Ben&#039;s Bascom Quellcode ===&lt;br /&gt;
&lt;br /&gt;
(Quelle: http://members.home.nl/bzijlstra/software/examples/enc28j60.htm )&lt;br /&gt;
&lt;br /&gt;
Muss aber für Bascom 1.11.9.3 angepasst werden, siehe Code von Hütti !&lt;br /&gt;
&lt;br /&gt;
=== U. Radigs Webserver ===&lt;br /&gt;
&lt;br /&gt;
Angepasster Sourcecode von U.Radig: http://www.mikrocontroller.net/attachment/40027/Webserver_MEGA32.hex&lt;br /&gt;
oder selbst anpassen: &lt;br /&gt;
Ändere im File ENC28J60.H&lt;br /&gt;
 #define ENC28J60_PIN_SS    3 --&amp;gt; AVR-NET-IO Version 1.0 PIN &#039;&#039;&#039;2&#039;&#039;&#039; PORTB sonst keine Funktion&lt;br /&gt;
 #define ENC28J60_PIN_CS    4&lt;br /&gt;
(Quelle: http://www.mikrocontroller.net/topic/109988#988386)&lt;br /&gt;
&lt;br /&gt;
Temporären Dateien (*.d, *,lst,*.o) vorher im Verzeichnis löschen &#039;&#039;make clean&#039;&#039;, damit neu compiliert wird.&lt;br /&gt;
&lt;br /&gt;
IP: 192.168.0.99&amp;lt;br&amp;gt;&lt;br /&gt;
User: admin&amp;lt;br&amp;gt;&lt;br /&gt;
Pass: uli1&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Den orginal SourceCode gibt&#039;s übrigens hier:http://www.ulrichradig.de/home/index.php/avr/eth_m32_ex&lt;br /&gt;
&lt;br /&gt;
Bei den Fuses BOOTRST ausschalten, da die Software keinen Bootloader enthält.&lt;br /&gt;
&lt;br /&gt;
Wer gerne als Link-LED die grüne nutzen möchte&lt;br /&gt;
(U.Radig-Source)&lt;br /&gt;
&lt;br /&gt;
enc28j60.c Zeile 150&lt;br /&gt;
&lt;br /&gt;
 &amp;quot;enc28j60_write_phy(ENC28J60_PHY_PHLCON, 0x347A)&lt;br /&gt;
&lt;br /&gt;
Wert 0x347A in 0x374A ändern&lt;br /&gt;
&lt;br /&gt;
(Quelle: http://www.mikrocontroller.net/topic/109988#994943)&lt;br /&gt;
&lt;br /&gt;
IP: 192.168.1.90&amp;lt;br&amp;gt;&lt;br /&gt;
User: admin&amp;lt;br&amp;gt;&lt;br /&gt;
Pass: tim&amp;lt;br&amp;gt;&lt;br /&gt;
Test: http://beitz-online.dyndns.org&amp;lt;br&amp;gt;&lt;br /&gt;
Test: http://pieper-online.dyndns.org&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Weiterentwicklung des Radig-Codes von RoBue: &amp;lt;br&amp;gt;&lt;br /&gt;
- 1-Wire-Unterstützung (Anschlus an PORTA7) &amp;lt;br&amp;gt;&lt;br /&gt;
- PORTA0-3 digitaler Eingang (ein/aus) &amp;lt;br&amp;gt;&lt;br /&gt;
- PORTA4-6 analoger Eingang (0 - 1023) &amp;lt;br&amp;gt;&lt;br /&gt;
- LCD an PORTC &amp;lt;br&amp;gt;&lt;br /&gt;
- Schalten in Abhängigkeit von Temperatur und analogem Wert &amp;lt;br&amp;gt;&lt;br /&gt;
- (Teilweise) Administration über Weboberfläche &amp;lt;br&amp;gt;&lt;br /&gt;
- Erweiterung des cmd-Befehlsatzes für telnet/rs232 &amp;lt;br&amp;gt;&lt;br /&gt;
Gedacht ist der Einsatz des AVR-NET-IO-Bausatzes für Heizungs- oder Haussteuerung) &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
(Quelle: http://www.mikrocontroller.net/attachment/43307/AVR-NET-IO_RoBue_V1.3.zip)&lt;br /&gt;
&lt;br /&gt;
=== Simon Ks Webserver (uip-Stack) ===&lt;br /&gt;
Angepasster Sourcecode von Simon K: http://www.mikrocontroller.net/attachment/39939/uWebSrv.zip&lt;br /&gt;
IP: 192.168.0.93:8080&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Ethersex Server ===&lt;br /&gt;
&lt;br /&gt;
http://www.ethersex.de - Einfach für atmega32 compilieren und funktioniert.&lt;br /&gt;
&lt;br /&gt;
Oder &lt;br /&gt;
[http://spielplatz.metafnord.de/cgi-bin/firmware-builder2/input.cgi?profile=avr-net-io hier] ein Firmware Image passend für das Pollin Net-IO mit eingebautem Webserver und Beispieldateien im Flash bauen lassen und flashen (firmware-builder). Einfacher geht´s nimmer. :-)&lt;br /&gt;
&lt;br /&gt;
=== Etherrape Server ===&lt;br /&gt;
&lt;br /&gt;
http://www.lochraster.org/etherrape/ &lt;br /&gt;
&lt;br /&gt;
ist in jedem Fall hier auch zu erwähnen zumal es sich beim etherrape um das Ursprungsprojekt von ethersex handelt.&lt;br /&gt;
Es scheint aber bei der Weiterentwicklung wenig zu passieren.&lt;br /&gt;
Ausführliche Dokumentation findet sich unter http://wiki.lochraster.org/wiki/Etherrape&lt;br /&gt;
&lt;br /&gt;
=== NetIOLib ===&lt;br /&gt;
&lt;br /&gt;
In C# geschriebene Bibliothek zur Ansteuerung der Platine im Orginalzustand. Inkl. Beispielsoftware und Quellcode (GNU GPL) &lt;br /&gt;
&lt;br /&gt;
Download:&lt;br /&gt;
[http://www.tware.org/phpfusion/downloads.php?cat_id=3 Download-Link]&lt;br /&gt;
&lt;br /&gt;
=== Mini SRCP Server ===&lt;br /&gt;
&lt;br /&gt;
Damit wird die Platine zu einer Modellbahnsteuerung, die&lt;br /&gt;
über das Netzwerkprotokoll SRCP mit verschiedenen Programmen&lt;br /&gt;
gesteuert werden kann.&lt;br /&gt;
&lt;br /&gt;
[http://www.7soft.de/de/mini_srcp_server/index.html Infoseite] zur Hardware&lt;br /&gt;
und das zugrundeliegende [http://www.der-moba.de/index.php/Digitalprojekt Digitalprojekt].&lt;br /&gt;
&lt;br /&gt;
== Siehe auch ==&lt;br /&gt;
* Diskussion zu diesem Projekt: http://www.mikrocontroller.net/topic/109988&lt;br /&gt;
* [http://www.microchip.com/wwwproducts/Devices.aspx?dDocName=en022889 ENC28J60 Produktseite]&lt;br /&gt;
* [http://ww1.microchip.com/downloads/en/DeviceDoc/39662c.pdf ENC28J60 Datenblatt(pdf)]&lt;br /&gt;
* [http://son.ffdf-clan.de Forum für AVR-Net-IO]&lt;br /&gt;
* [http://bascom-forum.de/index.php/topic,1781.0.html Bascom Forum ]&lt;br /&gt;
&lt;br /&gt;
[[Category:Projekte|P]]&lt;br /&gt;
[[Category:AVR|P]]&lt;br /&gt;
[[Category:Ethernet|P]]&lt;/div&gt;</summary>
		<author><name>Axelac</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=Datei:POWER.JPG&amp;diff=33659</id>
		<title>Datei:POWER.JPG</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=Datei:POWER.JPG&amp;diff=33659"/>
		<updated>2009-01-06T10:46:09Z</updated>

		<summary type="html">&lt;p&gt;Axelac: Modifizierte Stromversorgung des AVR-NET-IO&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Modifizierte Stromversorgung des AVR-NET-IO&lt;/div&gt;</summary>
		<author><name>Axelac</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=Programmierbare_Logik&amp;diff=32802</id>
		<title>Programmierbare Logik</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=Programmierbare_Logik&amp;diff=32802"/>
		<updated>2008-11-29T11:36:17Z</updated>

		<summary type="html">&lt;p&gt;Axelac: /* Entwicklungsboards */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Programmierbare Logik ist eine Möglichkeit, digitale Schaltungen nahezu beliebiger Komplexität von der Digitaluhr über die eigene CPU bis zur Mobilfunk-Basisstation mit einzelnen, preiswerten, integrierten Schaltkreisen aufzubauen. &lt;br /&gt;
&lt;br /&gt;
Die Historie der programmierbaren digitalen Logik reicht von den starren ICs der 74***-Reihe über die schon programmierbaren &amp;quot;Urväter&amp;quot; [[GAL]] und [[PAL]] zu den heute oft eingesetzten [[CPLD]]s zu Hochleistungs-[[FPGA]]s mit intergrierter PowerPC-CPU. &lt;br /&gt;
Heute meint man mit Programmierbarer Logik Bausteine, die in einer Hochsprache wie [[VHDL]] oder [[Verilog]] beschrieben werden, also [[CPLD]]s oder [[FPGA]]s.&lt;br /&gt;
&lt;br /&gt;
Obwohl die Entwicklungsarbeit an einem FPGA der an einem Mikrocontroller ähnelt, sind FPGA- und Software-Entwicklung grundverschiedene Lösungsansätze.&lt;br /&gt;
&lt;br /&gt;
== Hardwarebeschreibungssprachen und Simulation allgemein ==&lt;br /&gt;
&lt;br /&gt;
* [[Hardwarebeschreibungssprachen|Übersicht zu VHDL, Verilog, ABEL etc.]]&lt;br /&gt;
* [http://www.symphonyeda.com/ Ein VHDL Simulator für Linux und Windows, auch mit kostenloser Lizenz] &lt;br /&gt;
* [http://ghdl.free.fr/ OpenSource VHDL Simulator unter GPL für Linux &amp;amp; Windows]&lt;br /&gt;
* [http://icarus.com/eda/verilog/ OpenSource Verilog Simulator unter GPL für Linux &amp;amp; Windows]&lt;br /&gt;
* [[ModelSim| Praxistipps zu ModelSim]]&lt;br /&gt;
* [http://home.nc.rr.com/gtkwave/ GTKWave] ist ein Program mit dem man .vcd Signal dumps ansehen kann. Es ist gerade interessant wenn man Simulatoren wie z.B. ghdl oder Icarus Verilog benutzt, die keine eigene GUI haben.&lt;br /&gt;
&lt;br /&gt;
==Synthese Digitaler Schaltungen, Electronic Design Automatisation (EDA)==&lt;br /&gt;
&lt;br /&gt;
* [[FPGA/CPLD Toolchain | Allgemeine Beschreibung der Arbeitsweise von Synthesewerkzeugen]]&lt;br /&gt;
* [http://www.xilinx.com/ise/logic_design_prod/webpack.htm Xilinx ISE Webpack]&lt;br /&gt;
** es wird empfohlen, ISE Classic 6.3 mit dem Service Pack 3 zu nutzen (nur Windows, keine Linux-Unterstützung), spart Downloadzeit und Nerven, da die Nachfolgeversionen 7..9 riesig und relativ fehlerträchtig sind (Stand 01/2008)&lt;br /&gt;
** [[Xilinx_ISE|Fehler einkreisen]]&lt;br /&gt;
** [[Xilinx ISE: Hinweise zu Versionen|Bugs &amp;amp; Features der einzelnen ISE-Versionen]]&lt;br /&gt;
** [[Xilinx_ISE_Linux|ISE unter Linux]]&lt;br /&gt;
** [[Xilinx_ISE_Tutorial|ISE Tutorial]]&lt;br /&gt;
* [http://www.altera.com/products/software/products/quartus2/qts-index.html Altera Quartus II]&lt;br /&gt;
** [http://www.mikrocontroller.net/forum/read-9-387954.html Timing mit Quartus II:]&lt;br /&gt;
* [http://www.latticesemi.com/products/designsoftware/isplever/index.cfm Lattice ispLEVER]&lt;br /&gt;
* [http://www.actel.com/products/software/default.aspx Actel Libero]&lt;br /&gt;
&lt;br /&gt;
==Beschaltung/Inbetriebnahme/Konfiguration FPGAs==&lt;br /&gt;
&lt;br /&gt;
===Konfiguration allgemein===&lt;br /&gt;
&lt;br /&gt;
* [http://www.mikrocontroller.net/forum/read-9-293892.html Kopierschutz des FPGA Konfigurationsspeichers]&lt;br /&gt;
&lt;br /&gt;
===Konfiguration (Download) Xilinx===&lt;br /&gt;
&lt;br /&gt;
* [[Impact_mask|Fehler bei Konfiguration: &amp;quot;*.mask not found&amp;quot;]]&lt;br /&gt;
* [http://www.mikrocontroller.net/forum/read-9-395732.html Spannung ROM/FPGA Spartan3]&lt;br /&gt;
* [http://www.mikrocontroller.net/forum/read-9-385079.html USB Programmierkabel unter Linux]&lt;br /&gt;
* [http://www.mikrocontroller.net/forum/read-9-360045.html Spartan2 Konfiguration per JTAG beschalten]&lt;br /&gt;
* [http://www.mikrocontroller.net/forum/read-9-286219.html Selbstbau Programmierkabel]&lt;br /&gt;
* [http://www.geocities.com/jacquesmartini/digital/schematic/Parallel_Cable_III.png Parallel Cable III, verbesserte Version, für alle Xilinxbausteine]&lt;br /&gt;
&lt;br /&gt;
===Konfiguration Altera===&lt;br /&gt;
&lt;br /&gt;
* [http://www.mikrocontroller.net/forum/read-9-282738.html Selbstbau Programmierkabel]&lt;br /&gt;
&lt;br /&gt;
===Beschaltung allgemein===&lt;br /&gt;
&lt;br /&gt;
* [http://www.mikrocontroller.net/forum/read-9-330299.html Stromaufnahme von FPGAs]&lt;br /&gt;
&lt;br /&gt;
===Beschaltung Xilinx===&lt;br /&gt;
* [http://www.mikrocontroller.net/forum/read-9-328386.html Spannungsregler für Spartan3]&lt;br /&gt;
* [http://www.mikrocontroller.net/forum/read-9-291474.html Unterschiede Spartan3/3E]&lt;br /&gt;
* [http://www.mikrocontroller.net/forum/read-9-306733.html XC95xxx CPLD: Beschaltung Quarz/Oszillator]&lt;br /&gt;
* [http://www.mikrocontroller.net/forum/read-9-294326.html Probleme beim Programmieren XC95xxx]&lt;br /&gt;
* [http://www.mikrocontroller.net/forum/read-9-285009.html Spartan2 Programmierfehler durch falsches PowerUp]&lt;br /&gt;
&lt;br /&gt;
== FPGA/CPLD Aufbau und Funktion ==&lt;br /&gt;
&lt;br /&gt;
* [[CPLD]]&lt;br /&gt;
* [[FPGA]]&lt;br /&gt;
&lt;br /&gt;
=== Xilinx-FPGA Designs ===&lt;br /&gt;
&lt;br /&gt;
*[[MicroBlaze Takt|MicroBlaze max. Taktfrequenz und Leistung]]&lt;br /&gt;
* [http://www.mikrocontroller.net/forum/read-9-393058.html MicroBlaze Timingprobleme]&lt;br /&gt;
&lt;br /&gt;
==Entwicklungsboards==&lt;br /&gt;
&lt;br /&gt;
*[[FPGA#Entwicklungsboards|FPGA-Evalboards verschiedener Hersteller]]&lt;br /&gt;
&lt;br /&gt;
*Kleines CPLD Experimentiersystem im Selbstbau [http://www.mikrocontroller.net/topic/116702]&lt;br /&gt;
&lt;br /&gt;
==Bücher/Links==&lt;br /&gt;
&lt;br /&gt;
* [http://www.xess.com/ho03000.html Tutorials, Beispieldesigns, Makefiles -&amp;gt; eine Fundgrube!]&lt;br /&gt;
* [http://www.alse-fr.com/English/ips.html Beispielcores, Application Notes zu UART,LCD,PWM,Quiz zu VHDL]&lt;br /&gt;
* [http://www.doulos.com/knowhow/vhdl_designers_guide/ Nette Monthly VHDL Columne]&lt;br /&gt;
* [http://www.fpga4fun.com/ Nette kleine Projekte von RS232, I2C, 10BaseT, PCI, bis Oszilloskope]&lt;br /&gt;
*Dokumente über Verilog und System Verilog &lt;br /&gt;
** http://www.sunburst-design.com/papers/&lt;br /&gt;
** http://www.sutherland-hdl.com/papers.html&lt;br /&gt;
* [http://mikro.e-technik.uni-ulm.de/vhdl/vhdl_infos.html VHDL Kurzanleitung und Anleitung zur Synthese/Optimierung]&lt;br /&gt;
&lt;br /&gt;
== Editoren ==&lt;br /&gt;
&lt;br /&gt;
Immer wieder wird hier nach einem guten VHDL Editor gefragt. Zu Empfehlen ist der Crimson Editor, wer etwas mehr Power mag (allerdings auch mehr Einarbeitungszeit) nimmt Emacs. Emacs gibt es für Linux, Unix, und auch für [http://www.gnu.org/software/emacs/windows/ntemacs.html Windows].&lt;br /&gt;
Sehr empfehlen kann ich noch die [http://ecb.sourceforge.net/ ECB Erweiterung]. Unter Debian GNU Linux ist Emacs und ECB enthalten! Emacs ist sehr mächtig, leider ist die Lernkurve anfangs sehr flach. Hier gibt es ein [http://book.chinaunix.net/special/ebook/oreilly/LearningGnuEmacs/ eBook] zu Emacs. &lt;br /&gt;
&lt;br /&gt;
== Forum ==&lt;br /&gt;
&lt;br /&gt;
* [http://www.mikrocontroller.net/forum/9 Bereich FPGA, VHDL &amp;amp; Co. auf mikrocontroller.net]&lt;br /&gt;
&lt;br /&gt;
== Artikel aus der Kategorie FPGA &amp;amp; Co. ==&lt;br /&gt;
&amp;lt;ncl style=compact maxdepth=2 headings=bullet headstart=2&lt;br /&gt;
      showcats=1 showarts=1&amp;gt;FPGA und Co&amp;lt;/ncl&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:FPGA und Co]]&lt;br /&gt;
__NOTOC__&lt;/div&gt;</summary>
		<author><name>Axelac</name></author>
	</entry>
</feed>