<?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=172.26.11.139</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=172.26.11.139"/>
	<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/articles/Spezial:Beitr%C3%A4ge/172.26.11.139"/>
	<updated>2026-04-09T23:06:35Z</updated>
	<subtitle>Benutzerbeiträge</subtitle>
	<generator>MediaWiki 1.39.7</generator>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=ARM_Cortex_Mikrocontroller&amp;diff=104298</id>
		<title>ARM Cortex Mikrocontroller</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=ARM_Cortex_Mikrocontroller&amp;diff=104298"/>
		<updated>2021-04-21T14:14:35Z</updated>

		<summary type="html">&lt;p&gt;172.26.11.139: /* Hersteller */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Die Firma [[ARM]] stellt selbst keine Prozessoren/Controller her, sondern entwickelt nur sogenannte &amp;quot;IP-Cores&amp;quot;, die von Herstellern wie Atmel, Infineon, ST, NXP, TI und vielen anderen lizenziert werden. Diese Hersteller ergänzen den Core um Speicher und Peripherie. Der Vorteil dieses Modells ist, dass dadurch sehr viele Prozessoren mit unterschiedlichster Ausstattung verfügbar sind, die alle mit dem selben Befehlssatz (und damit dem selben Compiler) programmierbar sind.&lt;br /&gt;
&lt;br /&gt;
Allen ARM-Cores gemeinsam ist die 32 Bit RISC-Architektur. Um Speicherplatz zu sparen hat ARM zusätzlich zum ARM-Befehlssatz (32bit-Instruktion) den Thumb-Befehlssatz entwickelt, der bis auf einige Ausnahmen alle Befehle in 16bit codiert[http://www.arm.com/files/pdf/ARM_Microcontroller_Code_Size_%28full%29.pdf]. Den Vorteil des gesparten Speichers erkauft sich das Instruction-Set allerdings durch eine etwas langsame Ausführungsgeschwindigkeit. Die Cortex-M Controller können ausschließlich Thumb-Instruktionen ausführen. Die Vorgänger der Cortex-Serie sind die ARM7-Mikrocontroller, die entweder nur den ARM-Befehlssatz kennen oder beide. Thumb-fähige Controller sind erkennbar am &#039;&#039;&#039;T&#039;&#039;&#039; in der Bezeichnung, z.B. ARM7&#039;&#039;&#039;T&#039;&#039;&#039;DMI. &lt;br /&gt;
&lt;br /&gt;
Die ARM-Cortex-Mikrocontroller sind aufgrund der vergleichbar einfachen Beschaltung und niedrigem Stromverbrauch eine echte Alternative zu 8-Bit-Controllern wie dem [[AVR]], die auch noch eine höhere Leistungsfähigkeit besitzen. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;In diesem Artikel geht es primär um die ARM Cortex-M Mikrocontroller, weniger um ARM [[Cortex-A]] Prozessoren, welche in Smartphones, [[Raspberry Pi]] u.ä. eingesetzt werden.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Es gibt folgende Varianten des Cortex-M Mikrocontroller-Kerns, aufgeführt vom energieeffizientesten zum leistungsfähigsten (Liste nicht unbedingt aktuell! Am besten immer die Herstellerseiten bemühen).&lt;br /&gt;
&lt;br /&gt;
== Übersicht ==&lt;br /&gt;
ARM hat zur Zeit diese Cores im Programm:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;width: 15% | Core !! Beschreibung&lt;br /&gt;
|-&lt;br /&gt;
| Cortex-M0  || Als günstigste und Energie-effizienteste Variante gibt es den Cortex-M0 Core mit deutlich kleinerem Befehlssatz als z.B. Cortex-M3. Dieser ist der kleinster Prozessor der Serie und tritt in Konkurrenz zu 8-Bit-Controllern&lt;br /&gt;
|-&lt;br /&gt;
| Cortex-M0+ || Der M0+ ist die optimierte Variante des Cortex-M0 und vollständig kompatibel zu diesem, erweitert ihn aber zum Beispiel mit einem Single-Cycle-I/O-Port und optionalen Features des Cortex-M3, z.B. einer [[MPU]]&lt;br /&gt;
|-&lt;br /&gt;
| Cortex-M23 || Dieser Core ist der zuletzt erschienene mit ARMv8-M-Befehlssatz und der Trustzone-Erweiterung (z.B. für IoT) und ist vergleichbar mit dem Cortex-M3&lt;br /&gt;
|-&lt;br /&gt;
| Cortex-M3  || Der erste Cortex-Mikrocontroller und der Allrounder unter den Cortex-Ms. Die Leistung ist etwa mit der seiner Vorgänger, den ARM7TDMI, vergleichbar&lt;br /&gt;
|-&lt;br /&gt;
| Cortex-M33 || Der Controller ist Vergleichbar mit dem Cortex-M4, hat allerdings den neueren ARMv8-M-Befehlssatz und die Trustzone-Erweiterung (z.B. für IoT) und ist vergleichbar mit dem Cortex-M4&lt;br /&gt;
|-&lt;br /&gt;
| Cortex-M4  || Ein hochperformanter Cortex-M3 mit [[DSP]]-Erweiterungen und einer optionalen single-precision [[FPU]]&lt;br /&gt;
|-&lt;br /&gt;
| Cortex-M7  || Der leistungsfähigste Controller der Serie, der viele Features besitzt, die früher nur Anwendungs-Prozessoren hatten, unter anderem eine double-precision-[[FPU]], Instruktions- und Daten-Caches und einer 6-stufigen Pipeline mit Sprung-Vorhersage&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
Die Liste ist nach Leistungsfähigkeit sortiert. Programme sind binär-kompatibel zu &amp;quot;größeren&amp;quot; Cores, ein für einen Cortex-M0 kompiliertes Programm kann also auch von einem Cortex-M7 ausgeführt werden.&lt;br /&gt;
&lt;br /&gt;
== Hersteller ==&lt;br /&gt;
&lt;br /&gt;
=== ARM Cortex M0 ===&lt;br /&gt;
* [http://www.st.com/en/microcontrollers/stm32f0-series.html STM32F0] von [http://www.st.com STMicro], siehe [[STM32|STM32 hier im Wiki]]&lt;br /&gt;
* [http://www.nxp.com/products/microcontrollers-and-processors/arm-processors/lpc-cortex-m-mcus/lpc1100-cortex-m0-plus-m0 LCP1100] und [http://www.nxp.com/products/microcontrollers-and-processors/arm-processors/lpc-cortex-m-mcus/lpc1200-cortex-m0 LPC1200] von [http://www.nxp.com NXP], siehe [[LPC-Mikrocontroller|LPC-Mikrocontroller hier im Wiki]]. Für diese Controller gibt es bereits eine [[Codebase für LPC1xxx|Codebase hier im Wiki]].&lt;br /&gt;
* [http://www.infineon.com/XMC1000 XMC1000] von [http://www.infineon.com Infineon], siehe [[XMCxxxx|XMCxxxx hier im Wiki]]&lt;br /&gt;
* [http://www.nuvoton.com/NuvotonMOSS/Community/ProductInfo.aspx?tp_GUID=5dbf7d7a-b6df-4fe1-91c9-063449500ce7 NuMicro-Controller] von Nuvoton (ex Winbond), laut Datenblatt mit 2.5-5.5V Betriebsspannung!&lt;br /&gt;
* [http://www.cypress.com/PSOC4  PSOC4 Familie] von [http://www.cypress.com  Cypress]&lt;br /&gt;
&lt;br /&gt;
=== ARM Cortex M0+ ===&lt;br /&gt;
* [http://www.silabs.com/products/mcu/32-bit/efm32-zero-gecko/pages/efm32-zero-gecko.aspx EFM32 Zero Gecko] und [http://www.silabs.com/products/mcu/32-bit/efm32-happy-gecko/pages/efm32-happy-gecko.aspx EFM32 Happy Gecko] von [http://www.silabs.com Silicon Labs], siehe [[EFM32|EFM32 hier im Wiki]]&lt;br /&gt;
* [http://www.nxp.com/products/microcontrollers-and-processors/arm-processors/lpc-cortex-m-mcus/lpc800-series-cortex-m0-plus-mcus LPC800] von [http://www.nxp.com NXP]. Für diese Controller gibt es bereits eine [[Codebase für LPC1xxx|Codebase hier im Wiki]].&lt;br /&gt;
* [http://www.freescale.com/webapp/sps/site/taxonomy.jsp?code=KINETIS_L_SERIES Kinetis L-Serie] und [http://www.freescale.com/webapp/sps/site/taxonomy.jsp?code=KINETIS_M_SERIES Kinetis M-Serie] von [http://www.freescale.com/ Freescale]&lt;br /&gt;
* [http://www.nxp.com/products/microcontrollers-and-processors/arm-processors/kinetis-cortex-m-mcus/e-series-5v-robust-m0-plus-m4:KINETIS_E_SERIES Kinetis E-Serie] (5V Versorgungsspannung) von [http://www.nxp.com/ NXP (Freescale)]&lt;br /&gt;
* [http://www.fujitsu-fm-family.com/products/fm0.html angekündigte FM0+ Familie] von [http://www.fujitsu.com/emea/services/microelectronics Fujitsu]&lt;br /&gt;
* [http://www.st.com/web/en/catalog/mmc/FM141/SC1169/SS1817?icmp=ss1817_pron_pr_feb2014 angekündigte M0+ Familie] von [http://st.com  STMicroelectronics]&lt;br /&gt;
* [http://www.atmel.com/products/microcontrollers/ARM/SAM-C.aspx  SAM C Familie] von [http://www.atmel.com/default.aspx  Atmel] (5V Versorgungsspannung, nicht nur 5V-tolerant)&lt;br /&gt;
* [http://www.atmel.com/products/microcontrollers/ARM/SAM-D.aspx  SAM D Familie] von [http://www.atmel.com/default.aspx  Atmel]&lt;br /&gt;
* [http://www.cypress.com/PSOC4  PSOC4 Familie] von [http://www.cypress.com  Cypress]&lt;br /&gt;
&lt;br /&gt;
=== ARM Cortex M23 ===&lt;br /&gt;
* [https://www.renesas.com/eu/en/products/microcontrollers-microprocessors/ra.html RA2A1] von [https://www.renesas.com Renesas], siehe Renesas Advanced [https://www.mikrocontroller.net/articles/Renesas_ra hier im Wiki]&lt;br /&gt;
&lt;br /&gt;
=== ARM Cortex M3 ===&lt;br /&gt;
* [http://www.silabs.com/products/mcu/32-bit/efm32-tiny-gecko/pages/efm32-tiny-gecko.aspx EFM32 Tiny Gecko], [http://www.silabs.com/products/mcu/32-bit/efm32-gecko/pages/efm32-gecko.aspx EFM32 Gecko], [http://www.silabs.com/products/mcu/32-bit/efm32-leopard-gecko/pages/efm32-leopard-gecko.aspx EFM32 Leopard Gecko] sowie [http://www.silabs.com/products/mcu/32-bit/efm32-giant-gecko/pages/efm32-giant-gecko.aspx EFM32 Giant Gecko] von [http://www.silabs.com Silicon Labs] , siehe [[EFM32|EFM32 hier im Wiki]]&lt;br /&gt;
* [http://www.nxp.com/products/microcontrollers-and-processors/arm-processors/lpc-cortex-m-mcus:LPC-ARM-CORTEX-M-MCUS LPC13xx/LPC15xx/LPC17xx/LPC18xx] von NXP oder die inzwischen schon sehr ausführliche, siehe [[LPC1xxx|LPC1xxx hier im Wiki]]. Für diese Controller gibt es bereits eine [[Codebase für LPC1xxx|Codebase]].&lt;br /&gt;
* [http://www.ti.com/lsds/ti/microcontroller/tiva_arm_cortex/c_series/tm4c_arm_cortex-m4/overview.page TIVA] von [http://www.ti.com Texas Instruments] (vormals Stellaris, vormals Luminary Micro)&lt;br /&gt;
* [http://www.atmel.com/products/microcontrollers/arm/default.aspx SAM3N, SAM3S,SAM3U, SAM3A und SAM3X Serien] von [http://www.atmel.com/default.aspx Atmel]&lt;br /&gt;
* [http://www.st.com/internet/mcu/family/141.jsp STM32] Baureihen [http://www.st.com/internet/mcu/subclass/1169.jsp F1]/[http://www.st.com/internet/mcu/subclass/1520.jsp F2]/[http://www.st.com/internet/mcu/subclass/1376.jsp L1]/[http://www.st.com/internet/mcu/subclass/1377.jsp W] von STMicroelectronics , siehe [[STM32|STM32 hier im Wiki]]&lt;br /&gt;
* [http://www.toshiba-components.com/microcontroller/TMPM330.html TMPM330] von Toshiba&lt;br /&gt;
* [http://www.spansion.com/Products/microcontrollers/32-bit-ARM-Core/fm3/Pages/FM3-family.aspx FM3] von [http://www.spansion.com Spansion] (vormals Fujitsu)&lt;br /&gt;
* [http://www.holtek.com.tw/english/products/32bit_flashmcu.htm HT32] von Holtek Semiconductor&lt;br /&gt;
* [http://www.cypress.com/PSOC5 PSOC5] von Cypress&lt;br /&gt;
&lt;br /&gt;
=== ARM Cortex M4 ===&lt;br /&gt;
* [https://www.renesas.com/eu/en/products/microcontrollers-microprocessors/ra.html RA] von [https://www.renesas.com Renesas], siehe Renesas Advanced [https://www.mikrocontroller.net/articles/Renesas_ra hier im Wiki]&lt;br /&gt;
* [http://www.nxp.com/products/microcontrollers-and-processors/arm-processors/kinetis-cortex-m-mcus:KINETIS Kinetis Series] von Freescale (jetzt NXP)&lt;br /&gt;
* [http://www.nxp.com/products/microcontrollers-and-processors/arm-processors/lpc-cortex-m-mcus/lpc-cortex-m4/lpc4300-cortex-m4-m0:MC_1403790133078 LPC43xx] von [http://www.nxp.com/ NXP] (Dual Core: M4F + bis zu 2 Cortex-M0)&lt;br /&gt;
* [http://www.nxp.com/products/microcontrollers-and-processors/arm-processors/lpc-cortex-m-mcus/lpc-cortex-m4/lpc54000-low-power-cortex-m4:MC_1414576688124 LPC54xxx] von [http://www.nxp.com/ NXP] (Dual Core: M4F + bis zu einem Cortex-M0+)&lt;br /&gt;
* [http://www.nxp.com/products/microcontrollers-and-processors/arm-processors/lpc-cortex-m-mcus/lpc-cortex-m4/lpc4000-cortex-m4:MC_1403790399405 LPC4xxx] von [http://www.nxp.com/ NXP]&lt;br /&gt;
* [http://www.silabs.com/products/mcu/32-bit/efm32-wonder-gecko/pages/efm32-wonder-gecko.aspx EFM32-Wonder Gecko] von [http://www.silabs.com Silicon Labs], siehe [[EFM32|EFM32 hier im Wiki]]&lt;br /&gt;
* [http://www.st.com/internet/mcu/subclass/1605.jsp STM32F3] von [http://www.st.com STMicro], siehe [[STM32|STM32 hier im Wiki]]&lt;br /&gt;
* [http://www.st.com/internet/mcu/subclass/1521.jsp?WT.ac=p2_bn_jun12_stm32f4series STM32F4] von [http://www.st.com STMicro], siehe [[STM32|STM32 hier im Wiki]]&lt;br /&gt;
* [http://www.ti.com/lsds/ti/microcontroller/tiva_arm_cortex/c_series/tm4c_arm_cortex-m4/overview.page Tiva C Series, TM4C] von [http://www.ti.com Texas Instruments]. Früher nannte Texas Instruments diese Controller &#039;&#039;Stellaris LM4F Series&#039;&#039;. 2013 begann TI mit einer große Umbenennung, bei der sogar neue Typenbezeichnung vergeben wurden. So wurde zum Beispiel aus dem LM4F230H5QR der TM4C123GH6PM. Gleichzeitig begann TI die Bezeichnung &#039;&#039;Stellaris&#039;&#039; aus Datenblättern, Software-Bibliotheken und Ähnlichem zu entfernen und durch &#039;&#039;Tiva&#039;&#039; zu ersetzen. Siehe auch [http://www.ti.com/lit/an/spma050a/spma050a.pdf].&lt;br /&gt;
* [http://www.infineon.com/XMC4000 XMC4000] von [http://www.infineon.com Infineon],  siehe [[XMCxxxx|XMCxxxx hier im Wiki]], [[XMC4500|Artikel zum XMC4500]]&lt;br /&gt;
* [http://www.spansion.com/Products/microcontrollers/32-bit-ARM-Core/fm4/Pages/default.aspx FM4] von [http://www.spansion.com Spansion] (vormals Fujitsu)&lt;br /&gt;
* [http://www.atmel.com/products/microcontrollers/arm/sam4l.aspx SAML], [http://www.atmel.com/products/microcontrollers/arm/sam4e.aspx SAME], [http://www.atmel.com/products/microcontrollers/arm/sam4n.aspx SAMN] und [http://www.atmel.com/products/microcontrollers/arm/sam4s.aspx SAMS] von [http://www.atmel.com/default.aspx Atmel]&lt;br /&gt;
&lt;br /&gt;
=== ARM Cortex M33 ===&lt;br /&gt;
* [https://www.renesas.com/eu/en/products/microcontrollers-microprocessors/ra.html RA] von [https://www.renesas.com Renesas], siehe Renesas Advanced [https://www.mikrocontroller.net/articles/Renesas_ra hier im Wiki]&lt;br /&gt;
&lt;br /&gt;
=== ARM Cortex M7 ===&lt;br /&gt;
Die neueste Variante der Cortex M-Reihe ist der M7, bei dem gegenüber dem M4 zahlreiche Features hinzukommen die die Brücke zu Anwendungsprozessoren schlagen: eine double precision-FPU, Code- und Daten-Cache, eine 6-stufige Pipeline mit Sprungvorhersage, und unterm Strich eine deutlich höhere Rechenleistung. Controller basierend auf dem Cortex M7 sind u.a. von Atmel, NXP und ST erhältlich. &lt;br /&gt;
&lt;br /&gt;
* [http://www.atmel.com/products/microcontrollers/ARM/SAM-E.aspx SAME] von [http://www.atmel.com/default.aspx Atmel]&lt;br /&gt;
* [http://www.atmel.com/products/microcontrollers/ARM/SAM-S.aspx SAMS] von [http://www.atmel.com/default.aspx Atmel]&lt;br /&gt;
* [http://www.atmel.com/products/microcontrollers/ARM/SAM-V.aspx SAMV] von [http://www.atmel.com/default.aspx Atmel]&lt;br /&gt;
* [http://www.atmel.com/products/microcontrollers/ARM/sam7s_se.aspx SAM7S/SE] von [http://www.atmel.com/default.aspx Atmel]&lt;br /&gt;
* [http://www.atmel.com/products/microcontrollers/ARM/sam7x_xc.aspx SAM7X/XC] von [http://www.atmel.com/default.aspx Atmel]&lt;br /&gt;
* [http://www.st.com/web/en/catalog/mmc/SC1169/SS1858 Produktseite der STM32F7-Serie von ST]&lt;br /&gt;
&lt;br /&gt;
=== ARM7TDMI ===&lt;br /&gt;
Der Vorgänger der Cortex-M-Cores ist der &#039;&#039;&#039;ARM7&#039;&#039;&#039;TDMI. Controllerfamilien dieser Klasse sind immer noch weit verbreitet:&lt;br /&gt;
* [[LPC2000]] von NXP&lt;br /&gt;
* [[AT91SAM]] von Atmel&lt;br /&gt;
* [[ADuC7xxx]] von Analog Devices&lt;br /&gt;
* [http://focus.ti.com/mcu/docs/mcuprodoverview.tsp?sectionId=95&amp;amp;tabId=203&amp;amp;familyId=454 Texas Instruments TMS470]&lt;br /&gt;
* S3C24x0 [http://www.samsung.com/global/business/semiconductor/productInfo.do?fmly_id=229&amp;amp;partnum=S3C2410] von SAMSUNG&lt;br /&gt;
* STR7xx von ST Microelectronics [http://www.st.com/mcu/inchtml-pages-str7.html]&lt;br /&gt;
* und viele weitere&lt;br /&gt;
&lt;br /&gt;
Mehr Informationen zur ARM-Architektur finden sich in der [http://de.wikipedia.org/wiki/ARM-Architektur Wikipedia], weiterführende Links in der [[Linksammlung#ARM|Linksammlung]].&lt;br /&gt;
&lt;br /&gt;
== Compiler &amp;amp; Software ==&lt;br /&gt;
=== [[ARM_GCC|GCC]] ===&lt;br /&gt;
Einer der beliebtesten Compiler für ARM-Prozessoren ist der GCC. Er kann sowohl ARM- als auch Thumb-Code erzeugen. Mehr dazu unter [[ARM GCC]].&lt;br /&gt;
&lt;br /&gt;
=== C/C++ IDEs ===&lt;br /&gt;
Kostenlose Entwicklungsumgebungen (überwiegend GCC-basiert):&lt;br /&gt;
* [http://www.coocox.org/software.html CooCox IDE] (Eclipse basierend)&lt;br /&gt;
* [https://gnuarmeclipse.github.io GNU ARM Eclipse] (Eclipse Plugin)&lt;br /&gt;
* [http://www.emblocks.org/web/ EmBlocks IDE] (Basiert auf Code::Blocks)&lt;br /&gt;
** Compiler: GNU ARM-GCC (in der Installation enthalten), RealView und IAR &lt;br /&gt;
** Hardware: STlink (mit &amp;quot;Live data&amp;quot;), openOCD, Jlink. &lt;br /&gt;
** Project Import: CoIDE, uVision, Atmel studio, MplabX, Mplab 8&lt;br /&gt;
** OS aware debugging &lt;br /&gt;
***FreeRTOS&lt;br /&gt;
***ChibiOS/RT  &lt;br /&gt;
** Unterstützt sehr viele Controller(-Hersteller):&lt;br /&gt;
***Atmel-ARM&lt;br /&gt;
***NXP-ARM&lt;br /&gt;
***STMicro-ARM&lt;br /&gt;
***EnergyMicro-ARM&lt;br /&gt;
**Keine Beschränkungen&lt;br /&gt;
**Hier gehts zum &#039;&#039;[http://www.emblocks.org/web/downloads-main Download]&#039;&#039;&#039;&lt;br /&gt;
* [http://www.emide.org/ emIDE] Windows, komplette Visual Studio artige Entwicklungsumgebung (basierend auf Code::Blocks) mit GCC und Debugger (Unterstützung für Adapter von Segger) &amp;lt;!-- Projekt eines Segger Mitarbeiters --&amp;gt;&lt;br /&gt;
* [https://mbed.org mbed]: eine kostenlose Online-Entwicklungsumgebung basierend auf dem ARM Realview-Compiler, mit einer umfangreichen C++-Bibliothek für die Controllerfunktionen, integrierter Versionsverwaltung, und vielen Beispielprogrammen. Projekte lassen sich für Keil/IAR/GCC exportieren und offline weiterbearbeiten; die Bibliotheksfunktionen sind Open Source und auch kommerziell einsetzbar.&lt;br /&gt;
* [http://www.isystem.com/products/software/winidea-open winIDEAOpen]Die Fa. iSystem stellt mit der winIDEAOpen nun eine kostenlose Entwicklungsumgebung für alle Cortex-M Bauteile zur Verfügung. Als Compiler wird der GNU GCC verwendet und auch gleich mitinstalliert. Die IDE ist recht intuitiv und mit einer umfangreichen Hilfe ausgestattet. Das Ganze funktioniert mit dem &amp;lt;u&amp;gt;GCC ohne Codesize Limit&amp;lt;/u&amp;gt; und auch ein Testwerkzeug (testIDEA) ist mit integriert. Hardwareseitig werden neben dem iSystem iTag50 [http://www.isystem.com/products/hardware/cortex-debugger/itag] auch die Segger J-Link Debug Probes sowie der ST-Link von ST unterstützt. Auf der Webseite von iSystem sind auch einige schöne Beispielprojekte für diverse Boards zu finden [http://www.isystem.com/download/winideaopen]. Demnächst soll noch die Unterstützung für die ARM und IAR Compiler hinzuzkommen. Hier gehts zum &#039;&#039;[http://www.isystem.com/download/winideaopen Download]&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;Infineon&#039;&#039;&#039; bietet für seine &#039;&#039;&#039;XMC&#039;&#039;&#039; Prozessorfamilien auch eine kostenlose, professionell gepflegte C/C++ Entwicklungsumgebung an, ohne Einschränkungen auf bestimmte Typen oder Speichergrößen - &amp;lt;u&amp;gt;alle erhältlichen XMC 1000er und 4000er Prozessoren werden unterstützt&amp;lt;/u&amp;gt;. Wenn man sich dazu noch eines der günstigen XMC Evaluierungsboards besorgt (XMC 1100 Bootkit, XMC 4500 Relax (lite) Kit o.ä.), hat man ein erstes Entwicklungssystem inklusive wiederverwendbaren HW-Debugger zur Verfügung. Die Entwicklungsumgebung basiert auf Eclipse, besitzt aber zahlreiche Erweiterungen samt Codegenerierung (sogenannte Apps), die gerade am Anfang viele Dinge abnehmen kann, da man die Peripherals damit einfach grafisch konfigurieren kann. Das ist bei Prozessoren, dessen User Manual einige hundert Seiten ausmacht (oder auch für Umsteiger von 8bitter oder anderen 32bittern), nicht unwichtig. Der generierte Code ist template-basiert, gut lesbar und kann später - wenn man mehr Erfahrung hat, für eigene Entwicklungen weiter nutzen und optimieren. Damit verliert man dann allerdings die Möglichkeit, Updates der generierten Codes aus den Apps zu bekommen, die Infineon ebenfalls kostenfrei zur Verfügung stellt. Die Software nennt sich &#039;&#039;Digital Application Virtual Engineer&#039;&#039; ([http://www.infineon.com/dave DAVE]) und kann nach Registrierung kostenlos für Windows heruntergeladen werden. Innerhalb von Dave kann man dann Apps und viele Beispiele (ohne weitere Anmeldung und Kosten) komplett oder selektiv (für bestimmte Prozessoren) herunterladen. Die aktuell stabile Version ist v3. Es ist eine neue DAVE Umgebung v4 in Arbeit, eine Betaversion kann heruntergeladen werden. Diese neue v4 Variante wird auch ein separates SDK besitzen, um Apps für Dave selbst schreiben zu können (z.B. Bauteilhersteller, die die Anbindung an den XMC für Kunden vereinfachen wollen). Einsteiger sollten aber mit v3 beginnen, um nicht über Bugs der Beta v4 zu stolpern (siehe auch im [http://www.infineonforums.com/forums/8-XMC-Forum XMC-Forum]).&lt;br /&gt;
* &#039;&#039;&#039;NXP&#039;&#039;&#039; bietet für seine &#039;&#039;&#039;LPC&#039;&#039;&#039; Prozessorfamilien eine &amp;lt;u&amp;gt;kostenlose&amp;lt;/u&amp;gt; C/C++ Entwicklungsumgebung an. Die auf Eclipse basierende Entwicklungsumgebung ([http://www.lpcware.com/lpcxpresso LPCXpresso]) ist nach der Installation bis 8kB freigeschaltet und nach einer einfachen und kostenlosen Registrierung für 256kB. [http://www.lpcware.com/lpcxpresso LPCXpresso] steht für Windows, Linux und Mac zur Verfügung.&lt;br /&gt;
* &#039;&#039;&#039;ST&#039;&#039;&#039; bietet für seine &#039;&#039;&#039;STM32&#039;&#039;&#039; Prozessorfamilie eine &amp;lt;u&amp;gt;kostenlose&amp;lt;/u&amp;gt; C/C++ Entwicklungsumgebung an. Die auf Eclipse basierende Entwicklungsumgebung kann nach Registrierung auf der Homepage heruntergeladen werden. [http://www.openstm32.org/] &lt;br /&gt;
&lt;br /&gt;
Kommerzielle Entwicklungsumgebungen (zum Teil kostenlos mit Einschränkungen) für ARM-basierte Mikrocontroller sind z.&amp;amp;nbsp;B.:&lt;br /&gt;
* [http://timor.atollic.com/truestudio/ Atollic TrueStudio] (Windows), Eclipse-basierend inkl. Compiler und Linker für fast alle ARMs, jetzt auch kostenlos mit vielen Beispielen und ohne Codesize-Limitierung, dafür mit anderen Einschränkungen&lt;br /&gt;
* [http://www.cosmicsoftware.com/download_cortex_64k.php Cosmic Software] (Windows), bis 64kB kostenlos&lt;br /&gt;
* [http://rowley.co.uk/arm/index.htm Crossworks ARM] (inkl. Toolchains basierend auf GCC und Clang, für Windows, Mac OS und Linux)&lt;br /&gt;
* [http://www.iar.com/ewarm/ IAR Embedded Workbench for ARM] (Windows)&lt;br /&gt;
* [http://www.keil.com/arm/ MDK-ARM von Keil/ARM] (Windows), Lite-Version bis 32kB kostenlos,&lt;br /&gt;
* [http://www2.keil.com/stmicroelectronics-stm32/mdk MDK-STM32 von KEIL] Speziell für STM32x0 kostenlos ohne Beschränkung &lt;br /&gt;
* [http://www.sisy.de/ SiSy MC++] (Windows), Demo-Version, keine Code-Begrenzung&lt;br /&gt;
&lt;br /&gt;
=== Compiler für sonstige Programmiersprachen ===&lt;br /&gt;
* Basic: http://www.mikroe.com/mikrobasic/arm/&lt;br /&gt;
* Pascal: http://www.mikroe.com/mikropascal/arm/&lt;br /&gt;
* Rust: https://rust-embedded.github.io/book/&lt;br /&gt;
&lt;br /&gt;
=== Interpreter ===&lt;br /&gt;
* Forth: https://github.com/ekoeppen/CoreForth&lt;br /&gt;
* JavaScript: http://www.espruino.com/&lt;br /&gt;
* Lua: http://www.eluaproject.net/&lt;br /&gt;
* Python: http://micropython.org/&lt;br /&gt;
&lt;br /&gt;
=== ARM/XSCALE/CORTEX Instruction Set Simulator ===&lt;br /&gt;
Die Firma Lauterbach bietet unter der Artikelnummer LA-8809 einen Instruction Set Simulator für ARM Cores an. Die Demoversion ist zur Evaluierung kostenlos. Einschränkungen bestehen in der Anzahl der zu ladenden Debugsymbole. Der Simulator unterstützt alle gängigen ARM Derivate und lädt alle üblichen Debugformate, wie die des RealView,  IAR und TI Compilers, oder der freien GCC Tools. Zum Simulator gibt es entsprechende zugehörige Debugtools, die allerdings käuflich zu erwerben sind.&lt;br /&gt;
&lt;br /&gt;
* [http://www.lauterbach.com/frames.html?dwnload.html Download ARM/XSCALE/CORTEX Simulator]&lt;br /&gt;
&lt;br /&gt;
== Debug- und Programmierschnittstellen (JTAG/SWD) ==&lt;br /&gt;
&lt;br /&gt;
Alle ARM-basierten Prozessoren verwenden ein einheitliches [[JTAG]]-Interface, über das Debugging und Speicherzugriff erfolgen kann. Nicht standardisiert sind allerdings die Verfahren zum Beschreiben des Flash-ROMs. Deshalb muss man beachten, ob die verwendete JTAG-Software Programmierroutinen für den jeweiligen Controller besitzt.&lt;br /&gt;
&lt;br /&gt;
SWD (Serial Wire Debug) ist eine neue mit den Cortex-Mikrocontrollern eingeführte Debug- und Programmierschnittstelle, die weniger Pins benötigt als JTAG. Hier wird Debug-Bandbreite bzw. Speed gegen mehr verfügbare Pins für in-circuit Debugging &amp;quot;getauscht&amp;quot;. Die meisten Controller der Cortex-M0 &amp;amp; M3 Serie können sowohl mittels JTAG als auch mittels SWD programmiert werden, es gibt allerdings auch Exemplare (z.B. [[EFM32]] von [https://www.silabs.com Silicon Labs], XMC1100 von [http://www.infineon.com/xmc Infineon]) welche nur SWD unterstützen.&lt;br /&gt;
&lt;br /&gt;
Eine Übersicht über die empfohlenen Steckerbelegungen für JTAG und SWD gibt ein [http://infocenter.arm.com/help/topic/com.arm.doc.faqs/attached/13634/cortex_debug_connectors.pdf Dokument von ARM].&lt;br /&gt;
&lt;br /&gt;
Darüber hinaus gibt es noch herstellerspezifische Schnittstellen wie SPD (Single Pin Debug) von Infineon, oder vorinstallierte serielle Bootloader, z.B. beim [[STM32]] oder auch bei den [[Infineon XMC]], die dann z.B. über ein eigenes [http://www.infineon.com/cms/de/product/microcontroller/development-tools-software-and-kits/c166/xc166-development-tools-software-and-kits/software-downloads/channel.html?channel=ff80808112ab681d0112ab6b50fe07c9 Tool] ohne weitere Hardware - abgesehen von einem handelsüblichen seriellen Schnittstellenadapter - programmiert werden können. &lt;br /&gt;
&lt;br /&gt;
Viele Entwicklungsboards enthalten auch einen On-Board-Debugadapter zum direkten Anschluss an USB, so dass kein externer SWD- oder JTAG-Adapter notwendig ist. Manche erlauben auch, diesen Adapter abzubrechen und für eigene Entwicklungen weiterzuverwenden, somit ist nach dem Kauf eines Eval-Kits nicht nötig, einen weiteren Adapter später nachzukaufen.&lt;br /&gt;
&lt;br /&gt;
=== Günstige Beispiele zum Einstieg ===&lt;br /&gt;
Früher bildeten einfache JTAG-Adapter für den Parallelport die einfachste Variante für den Einstieg. Diese waren kompatibel zum &amp;quot;Wiggler&amp;quot;, und man konnte sie auch einfach selbst bauen. Als Software kommt [http://openocd.berlios.de/ OpenOCD] (zusammen mit [[GDB]]) oder [http://rowley.co.uk Crossworks ARM] zum Einsatz. &lt;br /&gt;
Mit dem Verschwinden des Parallelports an üblichen Computern hat die Attraktivität dieser Variante deutlich abgenommen.&lt;br /&gt;
&lt;br /&gt;
Für USB gibt es ebenfalls OpenOCD-kompatible JTAG-Adapter, beispielsweise basierend auf den FTDI-Chips und deren eingebauten Möglichkeiten, effizient &amp;quot;Bitbang&amp;quot;-Protokolle zu implementieren (MPSSE - Multiprotocol Synchronous Serial Engine). Weiterhin kann OpenOCD auch die meisten anderen hier genannten Programmiergeräte ansteuern.&lt;br /&gt;
&lt;br /&gt;
Von NXP sind preiswerte Entwicklungskits (ca. 25€ für Evaluation-Board incl. USB-JTAG-/-SWD-Programer und Debugger) erhältlich z.B. &#039;&#039;&#039;[http://www.watterott.com/index.php?page=search&amp;amp;keywords=LPCXpresso&amp;amp;cat=&amp;amp;mnf=&amp;amp;x=0&amp;amp;y=0 Watterott]&#039;&#039;&#039;. Siehe dazu auch die Dokumentation von NXP zu den &#039;&#039;&#039;[http://www.nxp.com/documents/leaflet/75016842.pdf LPCXpresso-Entwicklungskits]&#039;&#039;&#039; (PDF), oder diese &#039;&#039;&#039;[http://www.mikrocontroller.net/wikisoftware/index.php?title=LPC1xxx_Entwicklungskit_LPCXpresso Beschreibung]&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Von ST gibt es günstige MBED/Arduino kompatible Nucleo Entwicklungskits (ca. 12€) z.B. &#039;&#039;&#039;[http://www.st.com/web/catalog/tools/FM116/SC959/SS1532/LN1847/PF260320?s_searchtype=partnumber]&#039;&#039;&#039;. Der integrierte ST-Link Debugger kann mittels SWD und OpenOCD als Software auch andere Chip programmieren. Die etwas teuereren Discoveryboards, z.B. &#039;&#039;&#039;[http://www.st.com/web/catalog/tools/FM116/SC959/SS1532/LN1848/PF260946?s_searchtype=partnumber]&#039;&#039;&#039;, haben mehr externe Bauteile on-board, während die Nucleo Board über Shields erweiterbar sind. Nur bei Nucleo Boards ist eine UART Schnittstelle als Standard über USB zu erreichen, bei Discovery Boards mit ST-Link V2-1 müssen Lötbrücken gesetzt werden.&lt;br /&gt;
&lt;br /&gt;
Auch Infineon bietet Arduino-kompatible Boards+Shields mit dem XMC1100 Prozessor und angeflanschtem Debugger an (ab ca. 16€). Weiters gibt es günstige XMC4500 Kits, die auch Ethernet, SPI-Flash und SDCard-Slot Optionen bieten. Am unteren Ende gibt es ein XMC1100 Kit samt Debugger ab ca. 5€, dieses Board für den Schlüsselbund sozusagen nennt sich treffend &amp;quot;XMC 2 Go&amp;quot;. Die Preise können je nach Distributor stark variieren.&lt;br /&gt;
Siehe auch hier &#039;&#039;&#039;[http://www.infineon.com/cms/de/product/microcontroller/32-bit-industrial-microcontroller-based-on-arm-registered-cortex-registered-m/xmc-development-tools-kits-and-boards/channel.html?channel=db3a30433580b3710135a07902883872 XMC-Starter-Kits]&#039;&#039;&#039;.&lt;br /&gt;
Des weiteren werden auch schon Kits in Verbindung mit Sensoren zum Evaluieren angeboten, wie das &amp;quot;3D 2 Go&amp;quot; Board mit einem XMC1100 Prozessor und dem neuen 3D-Magnetfeldsensor von Infineon, um ein Beispiel zu nennen: &#039;&#039;&#039;[http://www.infineon.com/cms/en/product/sensor-ics/magnetic-sensors/3d-magnetic-sensor/channel.html?channel=5546d4624c9e0f0e014c9e105a8a001c 3D-Sensorkit]&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Von Silicon Labs gibt es [https://www.silabs.com/products/mcu/Pages/32-bit-microcontroller-tools.aspx Starter Kits] mit integriertem J-Link (Debugger) ab ca. 25 € z.B. das [https://www.silabs.com/products/mcu/lowpower/Pages/efm32tg-stk3300.aspx EFM32 Tiny Gecko Starter Kit] bei [http://www.mouser.de/ProductDetail/Silicon-Laboratories/EFM32TG-STK3300/?qs=%2fha2pyFadujBGJvO8YBq9JikBLXQGi%2fjwmF17imXuts5383tWpQKFA%3d%3d Mouser]&lt;br /&gt;
&lt;br /&gt;
Der [http://www.segger.com/cms/jlink.html J-Link]-&amp;quot;Emulator&amp;quot; von Segger wird von vielen Softwarepaketen unterstützt und ist für den &amp;quot;nicht-kommerziellen&amp;quot; Einsatz von Studenten, Funkamateuren und Hobby-Bastler für ca. €50.- erhältlich (J-Link-Edu). Sein Umfang ist auf das Flashen des Speichers und das Debuggen beschränkt. Bonus: Neben den im Prozessor limitiert vorhandenen Hardware-Breakpoints (Anzahl ist MCU abhängig) sind zusätzliche Flash-Breakpoints möglich (müssen aber von der verwendeten Debug-IDE unterstüzt werden). Die sehr gut geplegte Debugger-Software unterstützt nahezu alle ARM Prozessoren. Die Trace-Option wie sie bei der PRO-Variante zur Verfügung steht, ist nicht vorhanden. Für den Preis bekommt man jedoch ein ausgewachsenes Werkzeug mit breiter Unterstützung und der Möglichkeit sowohl SWD als auch JTAG in einem Gerät vereint zu haben. Wenn man aber plant, ein oben genanntes Kit von ST, NXP, Infineon oder ähnlich zu kaufen kann man für ähnliche Kosten auch gleich ein CPU-Board dazubekommen - daher ist es sinnvoll, sich die Dokumentationen der Evalkits voher genau durchzusehen. &lt;br /&gt;
&lt;br /&gt;
Der ULINK2 von Keil/ARM ist ebenfalls ein wirklich gutes Gerät. Leider ist er nicht ganz so günstig und seine Zusammenarbeit beschränkt sich auf die Arm/Keil IDE µVision. Er benötigt jedoch keine speziellen USB-Treiber sondern nutzt geschickt die Funktionalität der HID-Treiber des Betriebssystems. Das macht ihn sofort auf jedem Windows-Betriebssystem einsatzbereit.&lt;br /&gt;
&lt;br /&gt;
Als Alternative zum Beschreiben des Flashs über JTAG ist oft ein serieller [[Bootloader]] im Controller enthalten. Bei ST werden sie über einen speziellen Pin der MPU aktiviert und sind dank Kompression und das intelligente Entfernen redundanter Information bei der Übertragung genauso schnell wie JTAG-/SWD-Adapter.&lt;br /&gt;
&lt;br /&gt;
== CMSIS - ARM Cortex Software Libraries  ==&lt;br /&gt;
Der ARM Cortex Microcontroller Software Interface Standard (CMSIS) ist ein herstellerunabhängiger Hardware Abstraction Layer für die Cortex-M-Prozessor -Serie. Dieser ermöglicht konsistente und einfache Software-Schnittstellen für den Prozessor und die Peripherie, und vereinfacht damit die Software-Wiederverwendung. &lt;br /&gt;
&lt;br /&gt;
CMSIS besteht aus folgenden Komponenten:&lt;br /&gt;
&lt;br /&gt;
* CMSIS-CORE: Bietet eine Schnittstelle zum Cortex-M0, Cortex-M3, Cortex-M4, SC000 und SC300-Prozessorkern und Peripherie-Registern.&lt;br /&gt;
* CMSIS-DSP: DSP-Bibliothek mit über 60 Funktionen in Festkomma-(fractional q7, q15, q31) und single precision floating-point (32-bit)-Implementierung&lt;br /&gt;
* CMSIS-RTOS API: Standardisierte Programmierschnittstelle für Echtzeit-Betriebssysteme für Thread-Steuerung, Ressourcen-und Zeitmanagement. Implementierungen gibt es z.B. von Keil ([http://www.keil.com/pack/doc/cmsis_rtx/index.html RTX])&lt;br /&gt;
* CMSIS-SVD: System View Beschreibung -  XML-Dateien, die die Programmiereransicht des kompletten Mikrocontroller-Systems einschließlich Peripheriegeräte enthalten&lt;br /&gt;
&lt;br /&gt;
Der Standard ist für Cortex-M-Mikrocontroller skalierbar: Von der  kleinsten 4 KB MCU bis zu MCUs mit anspruchsvoller Kommunikations-Peripherie wie Ethernet oder USB. Die &amp;quot;Core Peripheral Funktionen&amp;quot; benötigt beispielsweise weniger als 1 KB-Code und weniger als 10 Bytes RAM.&lt;br /&gt;
&lt;br /&gt;
Beispiele:&lt;br /&gt;
* Software Beispiele von [http://www.energymicro.com/downloads/application-notes Energy Micro] basierend auf CMSIS&lt;br /&gt;
&lt;br /&gt;
Mehr Informationen auf der [http://www.arm.com/products/processors/cortex-m/cortex-microcontroller-software-interface-standard.php ARM CMSIS Webseite].&lt;br /&gt;
&lt;br /&gt;
== Siehe auch ==&lt;br /&gt;
* [[Linksammlung#ARM|Linksammlung (Abschnitt ARM)]]&lt;br /&gt;
* [[LPC1xxx]]&lt;br /&gt;
* [[LPC1xxx_Entwicklungskit_LPCXpresso]]&lt;br /&gt;
* [[Installationsanleitung_C-Entwicklungsumgebung_f%C3%BCr_LPC1xxx_von_Code_Red]]&lt;br /&gt;
* [[Codebase_f%C3%BCr_LPC1xxx]]&lt;br /&gt;
* [[ARM-elf-GCC-Tutorial]]&lt;br /&gt;
* [[AVR32]]&lt;br /&gt;
* [[Blackfin]]&lt;br /&gt;
* [[AT91SAM9260]]&lt;br /&gt;
* [[STM32]]&lt;br /&gt;
* [[JTAG]]&lt;br /&gt;
* [http://www.mikrocontroller.net/articles/EFM32 EFM32]&lt;br /&gt;
* [http://www.mikrocontroller.net/articles/STM32_-_Einstieg_mit_Em::Blocks STM32 - Einstieg mit Em::Blocks Tutorial]&lt;br /&gt;
&lt;br /&gt;
== Weblinks ==&lt;br /&gt;
* [http://www.mySTM32.de Online Tutorial für den STM32]&lt;br /&gt;
* [http://www.myXMC.de Online Tutorial für den XMC von Infineon]&lt;br /&gt;
* [http://www.myUGL.de Online Tutorial für freie Grafikbibliothek, STM32, STM32F429, TFT, Touch]&lt;br /&gt;
* [http://embdev.net/forum/arm-gcc ARM-GCC Forum] im englischsprachigen &amp;quot;Ableger&amp;quot; von mikrocontroller.net embdev.net u.a. für WinARM, Yagarto, CS Codebench&lt;br /&gt;
* [http://www.arm.com/products/processors/cortex-m/index.php Cortex-M Produktseite von ARM]&lt;br /&gt;
* [http://infocenter.arm.com/help/index.jsp Infocenter von ARM Ltd.]&lt;br /&gt;
* [http://www.open-research.org.uk/ARMuC/ ARMuC ARM microcontroller Wiki]&lt;br /&gt;
* [http://chaosradio.ccc.de/cre151.html Chaosradio Express - Die ARM-Architektur]&lt;br /&gt;
&lt;br /&gt;
== Literatur ==&lt;br /&gt;
* ARM Systems Developer&#039;s Guide (2004) ISBN 1558608745 [http://books.google.de/books?id=HKKUkDQE17QC&amp;amp;output=html Im Buch blättern] [http://booksite.elsevier.com/9781558608740/ Programmbeispiele aus dem Buch, u.a. FFT, FIR/IIR-Filter, Division, Wurzel]&lt;br /&gt;
* ARM Assembly Language - an Introduction (2007) ISBN 1847536964 [http://books.google.de/books?id=8KJX5R8mMvsC&amp;amp;output=html Im Buch blättern]   [http://www.lulu.com/content/1172076 Verlagsseite &amp;quot;Book on demand&amp;quot;]&lt;br /&gt;
* ARM Rechnerarchitekturen für System-on-Chip-Design (2002) ISBN 3826608542&lt;br /&gt;
* Co-Verification of Hardware and Software for Arm Soc Design (2004) ISBN 0750677309&lt;br /&gt;
* ARM System-on-Chip Architecture (2000) ISBN 0201675196 [http://books.google.de/books?id=J_Fu_YTVD9gC&amp;amp;printsec=frontcover&amp;amp;output=html&amp;amp;source=gbs_summary_r&amp;amp;cad=0 Im Buch blättern]&lt;br /&gt;
* ARM Architecture Reference Manual ISBN 0201737191 [http://books.google.de/books?id=O5G-6WX1xWsC&amp;amp;printsec=frontcover&amp;amp;output=html&amp;amp;source=gbs_summary_r&amp;amp;cad=0 Im Buch blättern]&lt;br /&gt;
* Messen, Steuern und Regeln mit ARM-Mikrocontrollern ISBN 3772340172 [http://books.google.de/books?id=TKs4kN-zNYQC&amp;amp;output=html im Buch blättern]&lt;br /&gt;
* Programming Arm Microcontrollers: Using C and the Lpc2100 Family (2005? /ab 1. Dezember 2008) ISBN 0321263359&lt;br /&gt;
* Arm Assembly: Fundamentals and Techniques (ab 1. März 2009) ISBN 1439806101&lt;br /&gt;
* Reliable Embedded Systems: Using 8051 and ARM Microcontrollers (2007) ISBN 0321252918 600 Seiten mit CD [http://vig.pearsoned.co.uk/catalog/academic/product/0,1144,0321252918-TOC,00.html Inhaltsverzeichnis]&lt;br /&gt;
* C und C++ für Embedded Systems (u.a. ARM Cortex-M3) mitp-Verlag 2008 ISBN 382665949X&lt;br /&gt;
* The Definitive Guide to the Arm Cortex-M0 (Joseph Yiu) Newnes Verlag ISBN 0123854776&lt;br /&gt;
* The Definitive Guide to the Arm Cortex-M3 (Joseph Yiu) Newnes Verlag ISBN 185617963X&lt;br /&gt;
&lt;br /&gt;
[[Category:ARM| ]]&lt;/div&gt;</summary>
		<author><name>172.26.11.139</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=230V&amp;diff=104285</id>
		<title>230V</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=230V&amp;diff=104285"/>
		<updated>2021-04-20T08:20:55Z</updated>

		<summary type="html">&lt;p&gt;172.26.11.139: Grammatische Korrekturen an verschiedenen Stellen&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Portpin an 230V AC ==&lt;br /&gt;
&lt;br /&gt;
[[Bild:Eingangsbeschaltung.png|thumb|300px|Schaltplan und Stückliste]]&lt;br /&gt;
&lt;br /&gt;
Hier ist eine kurze Beschreibung, wie man einen 230V-Pegel direkt an einen Input-pin eines Mikrocontrollers anschließen kann. Da diese Schaltung keine [[Galvanische Trennung | galvanische Trennung]] besitzt, muss die gesamte Schaltung berührungssicher verbaut sein! Beim Experimentieren sollte &#039;&#039;auf jeden Fall ein Trenntrafo verwendet werden&#039;&#039; und auch sonst sehr vorsichtig gehandelt werden.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Das Berühren von 230V Netzspannung ist lebensgefährlich!&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Obige Schaltung ist für eine bloße Detektion von Wechselspannung konzipiert. Für eine phasenrichtige, niedriglatente Detektion des Nulldurchgangs der Netzspannung, lässt man R3 weg. Die beiden Dioden, welche &#039;&#039;&#039;immer&#039;&#039;&#039; vom Typ Schottky sein müssen, hier BAT45, sind in integrierten Schaltkreisen (IC) üblicherweise bereits als Schutzdiode enthalten. Beim Verwenden des MCLR-Eingangs speziell von MICROCHIP Mikroprozessoren können diese Dioden fehlen und müssen in der Schaltung ergänzt werden. Aber Achtung! Die externen Dioden sind immer zu empfehlen, da ein Strom über die integrierten Bodydioden chipinterne Referenzspannungen &amp;quot;verziehen&amp;quot; kann, ausserdem sind sie meist nur wenig belastbar, teilweise nur mit 1mA. Der Widerstand R3 hat zwei Funktionen: Erstes als Spannungsteiler mit R1 und R2 um die Spannung auf einen vernünftigen Wert zu begrenzen und zweitens als Pulldown-Widerstand für den Portpin.&lt;br /&gt;
&lt;br /&gt;
Die Widerstände R1 und R2 dürfen &#039;&#039;&#039;nicht&#039;&#039;&#039; durch einen Widerstand mit 2M&amp;amp;Omega; ersetzt werden, weil auch bei bedrahteten Widerständen die Spannungsfestigkeit meistens nicht ausreichend ist und aus Sicherheitsgründen davon ausgegangen werden muss, dass ein Widerstand ausfällt, nicht aber beide auf einmal. Wird SMD verwendet, sind &#039;&#039;&#039;zwei&#039;&#039;&#039; Stück in der Bauform 1206 oder größer mit ca. 5mm Abstand zu empfehlen. Die Spannungsfestigkeit der Widerstände ist zu überprüfen (siehe Datenblatt). Gegen Spikes könnte zusätzlich ein 500pF Kerko direkt am Portpin gegen GND helfen. &#039;&#039;&#039;Aber Achtung: Falle&#039;&#039;&#039;&lt;br /&gt;
	 	&lt;br /&gt;
Eine ganz besonders schlechte Idee hatte ich, als ich zum Schaltungsschutz noch eine Z-Diode mit 4,7V parallel zum 39K-Widerstand schalten wollte. Nichts funktionierte mehr! Warum? Weil sich die Z-Diode wie ein Kondensator verhält, die den H-Pegel über längere Zeit am yC-Pin aufrecht erhält. In der Simulation mit LT-Spice hingegen klappte es mit der Z-Diode wunderbar. - Theorie und Praxis eben!&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Die Firma Microchip hat hier auch eine gute Applikation Note hierzu. Für die allgegenwärtigen Sicherheitsfanatiker: Bei einer FMEA wird ein Widerstand als ein sehr sicheres Bauteil angesehen, der nicht so mir-nichts-dir-nichts kaputt geht. (Ganz anders schaut es da schon mit den Dioden aus)&lt;br /&gt;
&lt;br /&gt;
Wichtig ist bei dieser Schaltung noch, daß ich einen vernünftigen High-Pegel nur jede positive Halbwelle und auch nur in der Nähe des Spannungsmaximum erhalte. Ich muß also durch meine restliche Schaltung sicherstellen, dass ich den Nulldurchgang des Wechselstromes richtig mitbekomme und dann ( Bei Netzspannung 230V / 50Hz ) mindestens 2ms nach dem Nulldurchgang warten, bis ich den Portpin richtig einlesen kann. Und natürlich muß es die positive Halbwelle sein. (Siehe Simulation, hier erkennt man gut, wann der High-Pegel hoch genug ist...)&lt;br /&gt;
&lt;br /&gt;
Der Elko mit 470µF und die Spannungsquelle werden natürlich nicht explizit benötigt und stellen nur die vorhanden Stromversorgung des Microcontrollers dar.&lt;br /&gt;
&lt;br /&gt;
== Galvanisch getrenntes Abfragen von 230V Wechselspannung (empfohlene Methode) ==&lt;br /&gt;
&lt;br /&gt;
Bevor sich mit obiger Schaltung jemand ins Jenseits befördert, hier eine sicherere Schaltung, mit der man galvanisch getrennt (also Potentialgetrennt) vom Netz ein Signal für den Mikrocontroller-Eingang erzeugen kann:&lt;br /&gt;
&lt;br /&gt;
[[Bild:230V_am_uC_Port-Pin.png]]&lt;br /&gt;
&lt;br /&gt;
Die Bauteile links des Optokopplers müssen alle mindestens eine Spannungsfestigkeit von 250V AC aufweisen, d.h. sie müssen 230V&amp;lt;sub&amp;gt;eff&amp;lt;/sub&amp;gt; bzw. 325V&amp;lt;sub&amp;gt;ss&amp;lt;/sub&amp;gt; dauerhaft verkraften. Um diese Hohe Spannung aufzuteilen, sind jeweils zwei Widerstände als Spannungsteiler in Reihe geschaltet. Selbst größere SMD-Widerstände vom Typ 2512 weisen nur eine Spannungsfestigkeit von 200V DC auf!&lt;br /&gt;
&lt;br /&gt;
R1 und R2 begrenzen den Einschaltstrom durch C1. R3 und R4 entladen C1 nach dem Ausschalten. C2 und R5 sorgen für einen dauerhaften Low-Pegel am Controller-Eingang solange Netzspannung anliegt. Wer den 100-Hz-Puls braucht, möge C2 weglassen. Zum Detektieren des Nulldurchgangs eignet sich diese Schaltung wegen der Phasenverschiebung durch C1 nicht.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Beim Arbeiten mit Schaltungen, die direkt Netzspannung führen, ist immer äußerste Vorsicht angesagt!&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Siehe auch ==&lt;br /&gt;
&lt;br /&gt;
* [http://www.mikrocontroller.net/topic/166569?goto=1593827#1593827 Forumsbeitrag]: Genauer Nulldurchgangsdetektor, galvanisch getrennt, Erhalt der Phaseninformation&lt;br /&gt;
* [http://www.mikrocontroller.net/topic/248511#2548074 Forumsbeitrag]: Sparsamer Nulldurchgangsdetektor, 0,2mA&lt;br /&gt;
* [http://www.mikrocontroller.net/topic/186832#1820077 Forumsbeitrag]: Ähnlich sparsamer Nulldurchgangsdetektor&lt;br /&gt;
* [http://www.mikrocontroller.net/topic/286318#3036999 Forumsbeitrag]: sparsamer Nulldurchgangsdetektor, praktisch aufgebaut&lt;br /&gt;
* [http://www.mikrocontroller.net/topic/286730?goto=3043901#3042236 Forumsbeitrag]: Schneller, präziser Nulldurchgangsdetektor&lt;br /&gt;
* [https://www.mikrocontroller.net/topic/443440#5285400 Forumsbeitrag]: Vorteile eines DC-Netzes?&lt;br /&gt;
* [https://www.mikrocontroller.net/topic/514221?goto=6611773#6611773 Forumsbeitrag]: 230V, geringen Strom detektieren&lt;br /&gt;
&lt;br /&gt;
== Links ==&lt;br /&gt;
* [http://www.mikrocontroller.net/articles/Datei:Eingangsbeschaltung.asc Simulation] in LTSpice &lt;br /&gt;
* [http://ww1.microchip.com/downloads/en/AppNotes/00521c.pdf Microchip AN521]: Interfacing to AC Power Lines&lt;br /&gt;
* [http://ww1.microchip.com/downloads/en/AppNotes/Atmel-2508-Zero-Cross-Detector_ApplicationNote_AVR182.pdf Atmel Application Note AVR182]: Zero Cross Detector&lt;br /&gt;
* [http://www.dse-faq.elektronik-kompendium.de/dse-faq.htm#F.9.3 d.s.e. FAQ]: Präziser Nulldurchgangsdetektor &lt;br /&gt;
* [http://www.dextrel.net/diyzerocrosser.htm DIY ] - Isolated High Quality Mains Voltage Zero Crossing Detector, engl. &amp;quot;DEXTREL&amp;quot;&lt;br /&gt;
* [http://www.edn.com/design/analog/4368740/Mains-driven-zero-crossing-detector-uses-only-a-few-high-voltage-parts Mains-driven zero-crossing detector uses only a few high-voltage parts], EDN, engl.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Sensorik]]&lt;br /&gt;
[[Kategorie:Leistungselektronik]]&lt;/div&gt;</summary>
		<author><name>172.26.11.139</name></author>
	</entry>
</feed>