<?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=Frank+m35</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=Frank+m35"/>
	<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/articles/Spezial:Beitr%C3%A4ge/Frank_m35"/>
	<updated>2026-04-21T13:49:56Z</updated>
	<subtitle>Benutzerbeiträge</subtitle>
	<generator>MediaWiki 1.39.7</generator>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=Royer_Converter&amp;diff=81437</id>
		<title>Royer Converter</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=Royer_Converter&amp;diff=81437"/>
		<updated>2014-02-08T22:09:18Z</updated>

		<summary type="html">&lt;p&gt;Frank m35: LTSpice Simulation hinzugefügt&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Ein Royer-Converter ist ein Sinus-Leistungsoszillator. Er wird im Wesentlichen als Schaltnetzteil verwendet.&lt;br /&gt;
&lt;br /&gt;
== Geschichtliches ==&lt;br /&gt;
&lt;br /&gt;
Der Name geht auf George Howard Royer zurück, welcher diese Schaltung im Jahr 1954 entwickelte (siehe US-Patent 2783384). Die originale Schaltung arbeitet mit einem [http://de.wikipedia.org/wiki/Trafo Trafo] mit [http://de.wikipedia.org/wiki/Ferrite Ferritkern], welcher zum Umschalten in die Sättigung getrieben wird. Das Ausgangssignal ist rechteckförmig. Die hier vorgestellte Version, die auf Peter James Baxandall zurückgeht, arbeitet jedoch mit einem Trafo, welcher nicht in die Sättigung geht und mittels LC-[http://de.wikipedia.org/wiki/Schwingkreis Schwingkreis] ein Sinussignal erzeugt. Der Trafo kann sogar als Luftspule ohne Kern ausgeführt werden.&lt;br /&gt;
&lt;br /&gt;
== Aufbau und Eigenschaften ==&lt;br /&gt;
&lt;br /&gt;
Der Aufbau ist sehr einfach und robust. Zwei Transistoren ([[FET|MOSFETs]] oder [[Transistor|Bipolar]]) werden wechselseitig geschaltet (Gegentaktbetrieb, engl. push pull), und damit abwechselnd die eine und die andere Spulenhälfte der Primärwicklung von Strom durchflossen. Die Schaltung ist selbstschwingend, d.h. das Steuersignal wird direkt aus dem Trafo zurückgewonnen. Damit schwingt sie immer optimal auf Resonanz, ohne Abgleich von Bauteiltoleranzen und auch bei Alterung oder Temperaturänderung. Allerdings ändert sich damit die Frequenz des [[Schwingkreis]]es und damit geringfügig die Effizienz. Die Frequenz wird durch die Induktivität der Primärwicklung und den Kondensator C2 bestimmt (Parallelschwingkreis). Die Drosselspule L1 sorgt dafür, dass die Betriebsspannung wechselspannungsmäßig von der Mittelanzapfung von TR1 entkoppelt wird, sie wirkt als [[Konstantstromquelle]].&lt;br /&gt;
&lt;br /&gt;
[[bild:royer_bipolar.png | thumb | 670px | left | Schaltplan des Royer Converters]]&lt;br /&gt;
&lt;br /&gt;
{{Clear}}&lt;br /&gt;
&lt;br /&gt;
*Einfacher, robuster Aufbau&lt;br /&gt;
*Sinusförmige Strom- und Spannungsverläufe&lt;br /&gt;
*Transistoren schalten im Nulldurchgang der Spannung, dadurch geringe Schaltverluste und Störstrahlung&lt;br /&gt;
*Bei ausreichend großer Streuinduktivität zwischen Primär- und Sekundärwicklung ist die Schaltung kurzschlussfest.&lt;br /&gt;
*Vollkommen unempfindlich gegenüber Streuinduktivitäten des Trafos (im Gegensatz zu den meisten anderen Schaltnetzteiltopologien)&lt;br /&gt;
&lt;br /&gt;
Besonders der letzte Punkt ist sehr interessant. Auf Grund des Aufbaus und der Funktion wird sämtliche Energie im Magnetfeld, welche nicht über die Sekundärspule ausgekoppelt wird, wieder in den Schwingkreis zurückgeführt. Damit geht nur sehr wenig Energie verloren, egal wie gut die Kopplung zwischen Sekundär- und Primärspule ist.&lt;br /&gt;
&lt;br /&gt;
Der Trafo TR1 kann sehr verschieden aufgebaut sein. In einem Inverter für [http://de.wikipedia.org/wiki/Leuchtr%C3%B6hre CCFLs] ist es ein normaler Trafo mit Ferritkern. In anderen Anwendungen kann es aber auch ein kernloser Trafo sein, bei dem es zwischen Primärspule und Sekundärspule einen großen Abstand gibt ([http://de.wikipedia.org/wiki/Induktive_%C3%9Cbertragung Kontaktlose Energieübertragung]).&lt;br /&gt;
&lt;br /&gt;
== Ein praktisches Beispiel ==&lt;br /&gt;
&lt;br /&gt;
Auf Grund der Unempfindlichkeit der Schaltung gegenüber Streuinduktivitäten ist diese Schaltung ideal für einen Trafo ohne Kern und mit grossem Abstand zwischen Primär- und Sekundärspule. Damit kann kontaktlos recht viel Energie übertragen werden. Anwendungen sind z.&amp;amp;nbsp;B. die Ladestation elektrischer Zahnbürsten oder ein Rotationstrafo für eine [http://www.google.de/cse?q=propelleruhr Propelleruhr]. Für Letzteres soll dieses Beispiel hier dargestellt werden.&lt;br /&gt;
&lt;br /&gt;
Die Schaltung benutzt einfach beschaffbare Bauteile. Der Trafo wird selber gewickelt, ist aber auch vollkommen unkritisch. Wie im Bild zu sehen, wurde absichtlich ein recht grosser Luftspalt zwischen Primär- und Sekundärspule gelassen, um die Leistungsfähigkeit der Schaltung zu demonstrieren. Die Primärwicklung ist [http://de.wikipedia.org/wiki/Bifilar bifilar] gewickelt, d.h. man nimmt den Draht doppelt und wickelt damit gleichzeitig beide Spulenhälften, das geschlossene Ende trennt man danach auf und verschaltet phasenrichtig. Es entstehen zwei verschachtelte Wicklungen (engl. interleaved windings), dadurch verbessert sich die Kopplung. Der Trafo hat folgende Parameter.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align:center&amp;quot;&lt;br /&gt;
|+ &#039;&#039;&#039;Wickeldaten&#039;&#039;&#039; &lt;br /&gt;
|- &lt;br /&gt;
! Wicklung       || Windungszahl || Drahtdurchmesser [mm] || Durchmesser [mm] || Induktivität [µH]&lt;br /&gt;
|-&lt;br /&gt;
| Primär         || 2x10           || 0,55   || 80 || 70&lt;br /&gt;
|-&lt;br /&gt;
| Steuer         || 1              || 0,2    || 80 || ---&lt;br /&gt;
|-&lt;br /&gt;
| Sekundär       || 13             || 0,55   || 65 || 23&lt;br /&gt;
|}&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ &#039;&#039;&#039;Stückliste&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
! Bauteil || Wert || Reichelt Bestellnummer&lt;br /&gt;
|-&lt;br /&gt;
| T1, T2  || BC337 || [http://www.reichelt.de/?;ARTICLE=4986; 337-25] &lt;br /&gt;
|-&lt;br /&gt;
| L1 || 330µH; 0,5A|| [http://www.reichelt.de/?ARTICLE=1123; 09P 330µ]&lt;br /&gt;
|-&lt;br /&gt;
| C1 || 100µF, 25V|| [http://www.reichelt.de/?ARTICLE=15102; RAD 100/25]&lt;br /&gt;
|-&lt;br /&gt;
| C2 || 33nF, 100V|| [http://www.reichelt.de/?ARTICLE=31975; MKP-10-630 33N]&lt;br /&gt;
|-&lt;br /&gt;
| C3 || 6,8µF, 50V|| [http://www.reichelt.de/?ARTICLE=31926; MKS-2 6,8µ]&lt;br /&gt;
|-&lt;br /&gt;
| R1 || 2k2, 1/4W|| [http://www.reichelt.de/?ARTICLE=11586; METALL 2,21K]&lt;br /&gt;
|-&lt;br /&gt;
| R2 || 22R, 5W|| [http://www.reichelt.de/?ARTICLE=2611; 5W AXIAL 22]&lt;br /&gt;
|-&lt;br /&gt;
| D1-4 || 1N5818|| [http://www.reichelt.de/?ARTICLE=41849; 1N 5818]&lt;br /&gt;
|-&lt;br /&gt;
| TR1 || CuL, 0,5mm || [http://www.reichelt.de/?;ARTICLE=57182 CUL 100/0,50] &lt;br /&gt;
|}&lt;br /&gt;
[[bild:royer_prop_aufbau.jpg | thumb | 640px | left | Praktischer Aufbau]]&lt;br /&gt;
{{Clear}}&lt;br /&gt;
Mit 12V Eingangsspannung beträgt die Spannungsamplitude im Primärkreis ziemlich genau 38V. Der Leerlaufstrom der Schaltung beträgt 36mA. ABER! Der Leerlaufstrom im Schwingkreis beträgt 580mA(eff), die Blindleistung 15,6VA! Hier wird klar, warum sowohl die Primärspule als auch C2 sehr verlustarm sein müssen. Die Resonanzfrequenz beträgt 105 kHz. Damit wurden folgende Messwerte erreicht.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align:center&amp;quot;&lt;br /&gt;
|- &lt;br /&gt;
!Belastung	|| Eingangsstrom&amp;lt;br&amp;gt;[mA] || Ausgangsstrom&amp;lt;br&amp;gt;[mA]	|| Ausgangsspannung&amp;lt;br&amp;gt;[Veff] || Ausgangsleistung&amp;lt;br&amp;gt;[W] || Wirkungsgrad&amp;lt;br&amp;gt;[%]&lt;br /&gt;
|-&lt;br /&gt;
| Leerlauf               || 36  || 	0  || 7,8 || 0 ||  0&lt;br /&gt;
|-&lt;br /&gt;
| 22 &amp;amp;Omega;                  || 220	|| 320	|| 7	|| 2,2 || 84&lt;br /&gt;
|-&lt;br /&gt;
| Gleichrichter + 22 &amp;amp;Omega; || 190	|| 270	|| 6	|| 1,6 || 71&lt;br /&gt;
|-&lt;br /&gt;
| 10 &amp;amp;Omega;                || 250 || 490  || 4,9  || 2,4 || 80&lt;br /&gt;
|-&lt;br /&gt;
| Kurzschluß             || 60  || 650  || 0    || 0 || 0&lt;br /&gt;
|}&lt;br /&gt;
Nach Gleichrichtung mit schnellen Schottkydioden und Filterung bleiben bei 22Ω Last noch ca. 6V Gleichspannung übrig, genug um mit einem Low Drop Spannungsregler stabile 5V für einen Mikrocontroller bereitzustellen. Selbst bei der recht hohen Ausgangsleistung bleiben alle Bauteile kühl. Dabei werden nur recht kleine Transistoren verwendet. Das zeigt umso mehr die Leistungsfähigkeit der Schaltung. Bei optimaler Leistungsanpassung mit 10 &amp;amp;Omega; Last kann man 2,4W aus dem Trafo entnehmen. Diese Leistung wird vor allem durch den recht geringen Koppelfaktor von nur 0,45 begrenzt. Dieser kommt allerdings dem Kurzschlussfall zu gute, hier beträgt die Stromaufnahme der Schaltung nur 60mA, die Resonanzfrequenz steigt nur mässig auf 123kHz. Prinzipiell ist diese Schaltung bis in den Bereich von mehreren kW Leistung skalierbar.&lt;br /&gt;
&lt;br /&gt;
== Hinweise ==&lt;br /&gt;
&lt;br /&gt;
* Beim ersten Einschalten unbedingt die &amp;lt;span style=&amp;quot;color:#FF0000&amp;quot;&amp;gt;Strombegrenzung&amp;lt;/span&amp;gt; am Netzteil einstellen! Für die Beispielschaltung reichen 100mA.&lt;br /&gt;
*Schwingt die Schaltung nicht an, ist in den meisten Fällen die Steuerwicklung verpolt.&lt;br /&gt;
* Manchmal ist auch die Primärwicklung falsch angeschlossen. Beim [http://de.wikipedia.org/wiki/Bifilar bifilaren] Wickeln muss man das geschlossene Ende aufschneiden und das linke Ende der nun entstandenen Teilwicklung mit dem rechten Ende der zweiten Teilwicklung zur [http://www.mikrocontroller.net/topic/152785#1605883 Mittelanzapfung] verbinden.&lt;br /&gt;
*Der Kondensator C2 wird auch im Leerlauf von einem recht hohen Strom durchflossen. Deshalb muss hier auf jeden Fall ein verlustarmer Typ eingesetzt werden. Entweder ein [http://de.wikipedia.org/wiki/Folienkondensator Folienkondensator] mit Polypropylen als Dielektrikum (MKP oder FKP) oder ein [http://de.wikipedia.org/wiki/Keramikkondensator Keramikkondensator] aus C0G oder NP0. Andere Typen (Folie MKS, Keramik X7R, Z5U etc.) gehen &#039;&#039;&#039;nicht&#039;&#039;&#039;, denn hier werden zu hohe dielektrische Veluste im Kondensator erzeugt, welche diesen erhitzen und irgendwann zerstören. Die Verluste von X7R sind ca. 20mal höher als von NP0!&lt;br /&gt;
*Die Transistoren sollten nur mässig überdimensioniert sein, denn Transistoren mit sehr hohen Kollektorströmen sind meist auch recht langsam.&lt;br /&gt;
*Die Transistoren müssen mindestens eine Sperrspannung von &amp;lt;math&amp;gt;\pi \cdot U_{ein}&amp;lt;/math&amp;gt; aushalten, denn das ist die exakte Amplitude der Schwingung im Primärkreis. Praktisch sollte man aber mindestens 20% und mehr Reserve einplanen.&lt;br /&gt;
*Der [[Basiswiderstand]] muss experimentell ermittelt werden. Er muss so ausgelegt sein, dass die Transistoren beim Schalten nur &#039;&#039;&#039;schwach&#039;&#039;&#039; in die Sättigung gehen, um schneller wieder abschalten zu können (Stichwort Speicherzeit, engl. storage time).&lt;br /&gt;
*Die Drossel L1 sollte ca. den 2..3fachen Induktivitätswert der Primärwicklung haben. Je mehr, umso besser. Sie darf bei vollem Laststrom nicht in die Sättigung gehen, da dann ihre Induktivität stark absinkt.&lt;br /&gt;
* Man sollte &#039;&#039;&#039;keine&#039;&#039;&#039; [[Potentiometer | Drahtpotis]] zur Lastvariation nutzen. Die haben soviel Induktivität (im Test 12µH, =8&amp;amp;Omega; bei 105kHz), dass die dadurch den Maximalstrom ungewollt verringern. Selbst einfache Drahtwiderstände sind mit 3µH/2&amp;amp;Omega; induktivem Anteil schon ungünstig.&lt;br /&gt;
*Die Spitzenspannung der Steuerwicklung darf ca. 5V nicht überschreiten, weil diese als Sperrspannung für die Transistoren wirksam wird. Die meisten Bipolartransistoren verkraften max. 5V Sperrspannung zwischen Basis und Emitter.&lt;br /&gt;
*Im Kurzschlussfall der Sekundärwicklung reduziert sich die Induktivität der Primärwicklung auf die Streuinduktivität, was zu einer Frequenzerhöhung führt. Durch die höhere Frequenz stellt die Streuinduktivität einen höheren Blindwiderstand dar, welcher den Strom wirkungsvoll begrenzt. Aufgrund der höheren Frequenz fließt allerdings ein größerer Strom im Schwingkreis. Verwendet man also diesen Zustand, dann muss die Schaltung für die höheren Belastungen ausgelegt sein. Je kleiner der Koppelfaktor, umso besser die Kurzschlussfestigkeit. Die nachfolgende Tabelle gibt die Erhöhung des Eingangsstroms sowie der Resonanzfrequenz beim Kurzschluss in Abhängigkeit des Koppelfaktors an.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align:center&amp;quot; &lt;br /&gt;
|- &lt;br /&gt;
! rowspan=&amp;quot;2&amp;quot; | Koppelfaktor &lt;br /&gt;
! colspan=&amp;quot;2&amp;quot; | Faktor gegenüber Leerlauf&lt;br /&gt;
|-&lt;br /&gt;
! Resonanzfrequenz || Eingangsstrom&lt;br /&gt;
|-&lt;br /&gt;
|0,01 || 1,0 || 1,0&lt;br /&gt;
|-&lt;br /&gt;
|0,1 || 1,1 || 1,1&lt;br /&gt;
|-&lt;br /&gt;
|0,2 || 1,1 || 1,3&lt;br /&gt;
|-&lt;br /&gt;
|0,5 || 1,4 || 2,0&lt;br /&gt;
|-&lt;br /&gt;
|0,6 || 1,6 || 2,5&lt;br /&gt;
|-&lt;br /&gt;
|0,7 || 1,8 || 3,3&lt;br /&gt;
|-&lt;br /&gt;
|0,8 || 2,2 || 5&lt;br /&gt;
|-&lt;br /&gt;
|0,9 || 3,2 || 10&lt;br /&gt;
|-&lt;br /&gt;
|0,95 || 4,5 || 20&lt;br /&gt;
|-&lt;br /&gt;
|0,99 || 10 || 100&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Formeln zum Royer Converter ==&lt;br /&gt;
&lt;br /&gt;
*&amp;lt;math&amp;gt;f_r=\frac{1}{2 \pi \sqrt{L_{pri} C_2}}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*&amp;lt;math&amp;gt;U_p = \pi \cdot U_{ein}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*&amp;lt;math&amp;gt;I_p = U_{ein} \cdot \pi \sqrt{\frac{C}{L}}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*&amp;lt;math&amp;gt;k = \frac {U_{aus}}{\pi \cdot U_{ein}} \cdot \frac {N_{pri}}{N_{sek}}&amp;lt;/math&amp;gt; (im Leerlauf gemessen)&lt;br /&gt;
&lt;br /&gt;
*&amp;lt;math&amp;gt;k = \sqrt{1-\frac{L_{Pri-K}}{L_{Pri-0}}}&amp;lt;/math&amp;gt; (mit L-Meter gemessen)&lt;br /&gt;
&lt;br /&gt;
*&amp;lt;math&amp;gt;R1 \sim \frac{\beta _{I_N} \cdot U_{ein}}{I_N}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*&amp;lt;math&amp;gt;N_{steu} \le \frac{5}{\pi \cdot U_{ein}}\cdot N_{Pri}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*&amp;lt;math&amp;gt;P_{max}=\frac{(\pi \cdot U_{ein} \cdot k)^2 \sqrt{L_{pri} \cdot C_2 (1-k^2)}}{4 \cdot L_{pri} \cdot (1-k^2)}&amp;lt;/math&amp;gt; (Näherungsformel)&lt;br /&gt;
&lt;br /&gt;
*&amp;lt;math&amp;gt;R_{opt}=(1-k^2)(\frac{N_{sek}}{N_{pri}})^2 L_{pri} \cdot 2\pi \cdot f&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
|- &lt;br /&gt;
! Formelzeichen	|| Bedeutung&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;math&amp;gt;\!\, f_r&amp;lt;/math&amp;gt; || Resonanzfrequenz im Leerlauf &lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;math&amp;gt;\!\, L_{Pri}&amp;lt;/math&amp;gt; || Induktivität der Primärwicklung &lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;math&amp;gt;\!\, C2&amp;lt;/math&amp;gt; || Kapazität des Primärschwingkreises&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;math&amp;gt;\!\, U_p&amp;lt;/math&amp;gt; || Spitzenspannung im Resonanzkreis &lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;math&amp;gt;\!\, I_p&amp;lt;/math&amp;gt; || Spitzenstrom im Resonanzkreis &lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;math&amp;gt;\!\, k&amp;lt;/math&amp;gt; || Koppelfaktor zwischen Primär- und Sekundärwicklung &lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;math&amp;gt;\!\, L_{Pri-0}&amp;lt;/math&amp;gt; || Primärinduktivität bei Leerlauf der Sekundärwicklung&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;math&amp;gt;\!\, L_{Pri-K}&amp;lt;/math&amp;gt; || Primärinduktivität bei Kurzschluss der Sekundärwicklung&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;math&amp;gt;\!\, U_{ein}&amp;lt;/math&amp;gt; || Eingangsspannung des Royer Converters (Gleichspannung)&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;math&amp;gt;\!\, U_{aus}&amp;lt;/math&amp;gt; || Ausgangsspannung des Royer Converters (Wechselspannung, Spitzenwert)&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;math&amp;gt;\!\, R1&amp;lt;/math&amp;gt; || Basiswiderstand&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;math&amp;gt;\!\, I_N&amp;lt;/math&amp;gt; || Nennstrom des Royer Converters am Eingang&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;math&amp;gt;\!\, \beta _{I_N}&amp;lt;/math&amp;gt; || Stromverstärkung der Transistoren bei Nennstrom&amp;lt;br&amp;gt;Achung! Die Stromverstärkung sinkt bei höheren Strömen deutlich, ins Datenblatt schauen.&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;math&amp;gt;\!\, N_{steu}&amp;lt;/math&amp;gt; || Windungszahl der Steuerwicklung &lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;math&amp;gt;\!\, P_{max}&amp;lt;/math&amp;gt; || Maximale Ausgangsleistung bei Leistungsanpassung&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;math&amp;gt;\!\, R_{opt}&amp;lt;/math&amp;gt; || Optimaler Lastwiderstand für Leistungsanpassung&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Das Ganze ist auch als [[media:Royer_Converter.xls | Exceltabelle]] zur leichten Anwendung verfügbar.&lt;br /&gt;
&lt;br /&gt;
== Leistungsoptimierung ==&lt;br /&gt;
&lt;br /&gt;
Wie kann ich den Wirkungsgrad sowie die Ausgangsleistung für meine Anwendung optimieren?&lt;br /&gt;
&lt;br /&gt;
* Die Eingangsspannung soll möglichst hoch sein.&lt;br /&gt;
* Der Koppelfaktor soll möglichst hoch sein. Das erreicht man durch&lt;br /&gt;
** Flache Spulen mit grossem Durchmesser und kleinem Abstand (parallele Spulen)&lt;br /&gt;
** Konzentrische (ineinandergestapelte) Spulen mit geringem Luftspalt zwischen den Spulen&lt;br /&gt;
** Einsatz von Ferritkernen (Schalenkerne, Stäbe etc.) zur Bündelung des Magnetfeldes&lt;br /&gt;
* Wenn man die Sekundärwicklung mit einem parallel oder in Reihe geschalteten Kondensator auf Resonanz mit der Primärwicklung abgleicht, kann die Ausgangsleistung deutlich erhöht werden, weil dadurch die Streuinduktivität der Sekundärseite kompensiert wird. Man muss dabei beachten, dass bei Parallelschaltung die Ausgangsspannung ohne Last stark ansteigt (Prinzip der [http://de.wikipedia.org/wiki/Teslaspule Teslaspule]). Unter Last verhält sich der Ausgang dann nahezu wie eine [[Konstantstromquelle]]. Bei Reihenschaltung ist das nicht der Fall, hier bleibt die Leerlaufspannung niedrig. Auch für diesen zusätzlichen Kondensator gilt das Gleiche wie C2, er muss sehr verlustarm sein. Es gilt&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;C_{sek} = \frac{1}{(2 \pi f)^2 L_{sek}\sqrt{1-k^2}}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Das Verhältnis &amp;lt;math&amp;gt;C/L&amp;lt;/math&amp;gt; soll möglichst hoch sein. Verdoppelt man die Kapazität und reduziert gleichzeitig die Primärinduktivität um den Faktor zwei (Windungszahl * 0,7), verdoppelt sich die maximal verfügbare Leistung. Der Preis dafür sind doppelt so hohe Leerlaufströme im Schwingkreis und damit ca. 2,8mal so hohe Leerlaufverluste (bei gleichem Drahtquerschnitt, P = I^2 * R).&lt;br /&gt;
* Die Resonanzfrequenz soll möglichst niedrig sein, daduch veringern sich die induktiven Widerstände der Streuinduktivitäten, welche den Strom und damit die Leistung begrenzen.&lt;br /&gt;
* Der Drahtquerschnitt der Primärwicklung muss möglichst gross sein, denn hier fließen sehr hohe Ströme. Allerdings bewirkt die meist recht hohe Resonanzfrequenz auf grund des [http://de.wikipedia.org/wiki/Skineffekt Skineffekts] eine Verringerung des effektiven Drahtquerschnitts. Ausserdem lassen sich dicke, massive Kupferdrähte eher schlecht wickeln. Darum verwendet man oft [http://de.wikipedia.org/wiki/Hochfrequenzlitze HF-Litze], welche aus sehr vielen, sehr dünnen, gegeneinander isolierten Drähten besteht. Diese lässt sich deutlich besser wickeln und wirkt dem Skineffekt entgegen.&lt;br /&gt;
&lt;br /&gt;
== MOSFET-Variante ==&lt;br /&gt;
[[Datei:WurthWE-WPCC.png| thumb | 300px | right | Auswahl bestimmter Würth WE-WPCC Ladespulen. Links unten die kleinste Ladespule mit 10µH, mittig oben 6.3µH, rechts unten 6.3µH mit einem Neodym-Magnet in der Mitte.]]&lt;br /&gt;
&lt;br /&gt;
Man kann die Primärseite des Trafos mit Mittelanzapfung und Steuerwicklung auch durch eine einfache Spule ersetzen, wenn man MOSFETs statt Bipolartransistoren nutzt und die Betriebsspannung über zwei Spulen an den Enden der Primärwicklung einspeist. Das vereinfacht den Aufbau der Primärspule deutlich, was u.a. bei bei höheren Leistungen günstig ist. Der Preis dafür ist, daß man zwei Spulen mit etwa der doppelten Induktivität benötigt. Ebenfalls werden dazu geeignete Flachspulen von Herstellern wie Würth, TDK, .. (siehe Abbildung rechts) produziert (Stichwort: Ladespule bzw. charging coil).&lt;br /&gt;
&lt;br /&gt;
Die unten abgebildete Mosfet-Schaltung baut auf [http://www.mikrocontroller.net/topic/278961#2948009 einem Beitrag aus dem Forum] auf, in dem auch weitere Erklärungen der Funktionsweise sowie zahlreiche Dimensionierungs-Beispiele enthalten sind. Eine dazugehörige Simulation in LTSpice kann unter [[Datei:LTSpiceRoyerMosfet.asc]] gefunden werden. Die Effizienz scheint in der Simulation niedriger als in der Realität zu liegen, jedoch eignet sich die Simulation ideal zum Verstehen sowie dem schnellem Testen der Auswirkungen unterschiedlicher Bauteilvarianten wie bspw. der Ermittlung der optimalen Eingangsinduktivität oder Gate-Widerstände.&lt;br /&gt;
[[Datei:Royer MOSFET.png| thumb | 600px | left | MOSFET-Schaltung des Royer Converters]]&lt;br /&gt;
&lt;br /&gt;
[[Datei:Royer_MOSFET_Aufbau.jpg| thumb | 300px | right | Der beschriebene Aufbau mit Logic-Level MOSFETs. Von links nach rechts: Die Royer-Converter Schaltung an welche die kleine Würth Ladespule mit 10µH angeschlossen ist. Darüber die selbst gewickelte Empfangsspule sowie der Ferritkern welcher im Betrieb hinter die Empfangsspule befestigt wird. Die Empfangsspule ist mit dem Gleichrichter verbunden welcher den DC-DC Buck-Converter speist. Der Lastwiderstand ist rechts außen sichtbar. Im Betrieb sind beide Spulen parallel übereinander ausgerichtet im Abstand von 3mm, getrennt durch eine Acrylplatte. ]]&lt;br /&gt;
&lt;br /&gt;
{{Clear}}&lt;br /&gt;
&lt;br /&gt;
Beispieleinsatz:&lt;br /&gt;
&lt;br /&gt;
Die in obiger Schaltung verwendeten Bauteile sind für eine drahtlose Energieübertragung mit einer Eingangsspannung von 5V, einer Ausgangsspannung von 5V und Ausgangsleistung von 2.2W bei einem Abstand von 3mm ausgelegt. Als Primärspule wird eine Würth 10µH Ladespule verwendet, als Sekundärspule eine selbstgewickelte Flachspule mit 14mm Durchmesser und 14 Wicklungen auf deren Rückseite ein Pot Core Ferritkern (3H1) zur Leistungsverbesserung plaziert ist. Die hier verwendeten Mosfets sind Logic-Level-Mosfets und nicht für hohe Eingangsspannungen ausgelegt (im oben genannten Beitrag finden sich Beispiele für Eingangsspannungen &amp;gt;10V). Um die ungeregelte Ausgangsspannung auf 5V zu stabilisieren wird der Texas Instruments TPS54331 Buck-Converter verwendet (nicht in der Schaltung aufgeführt), der eine Ein-/Ausschalthysterese besitzt um nur bei geeigneter Orientierung der Spulen einzuschalten und dadurch stabile 5V erzeugen kann. Die komplette Schaltung ist mit SMD Bauteilen und 0.1µF NP0 50V Kondensatoren in der Bauform 1206 aufgebaut worden (siehe rechte Abbildung). Bei den Spulen L1 und L2 muss ein Mittelmaß zwischen Baugröße, Induktivität und Widerstand gefunden werden. Bei gleichbleibender Baugröße stellte 100µH die optimale Wahl im Vergleich zu 47µH (zu geringe Induktivität) und 220µH (zu hoher Widerstand) dar. Die so aufgebaute Schaltung arbeitet bei 115kHz und es wird momentan ein Wirkungsgrad von ca. 58% erreicht mit einer Last von 450mA am 5V Ausgang.&lt;br /&gt;
&lt;br /&gt;
Wie im Artikel beschrieben, kann die Effizienz gesteigert werden, indem die Fläche der Sekundärspule vergrößert wird, Lastanpassung vorgenommen wird, optimierte Ferritkerne verwendet werden etc. Bei identischer Primär- und Sekundärspule (Würth WE-WPCC 10µH) im Abstand von 5mm und einem Lastwiderstand von 68 &amp;amp;Omega; direkt am Delon-Brückengleichrichter angeschlossen (ohne DC-DC Converter) wurde in einem kurzen Versuch eine Effizienz von ca. 70% gemessen, bei einer Ausgangsleistung von ca. 4W (19V @ 220mA) mit sonst unveränderten Parametern (5V @ 1.2A Eingang). Da an der Schaltung nichts verändert wurde und auch der Lastwiderstand eher zufällig gewählt wurde ist es offensichtlich, dass der maximale Wirkungsgrad noch nicht erreicht ist und somit weiteres Potenzial im Aufbau steckt.&lt;br /&gt;
&lt;br /&gt;
== Siehe auch ==&lt;br /&gt;
&lt;br /&gt;
* [[Spule]]&lt;br /&gt;
* [[Transformatoren und Spulen]]&lt;br /&gt;
&lt;br /&gt;
== Diskussionen im Forum ==&lt;br /&gt;
&lt;br /&gt;
*[http://www.mikrocontroller.net/topic/118124#new Verwendung in einem Induktionsofen, MOSFETs als Schalter]&lt;br /&gt;
*[http://www.mikrocontroller.net/topic/151538#new Verwendung in einem Induktionsofen, neuer Thread]&lt;br /&gt;
* [http://www.mikrocontroller.net/topic/263161#2734278 Dokumente über Induktionskochfelder]&lt;br /&gt;
*[http://www.mikrocontroller.net/attachment/61266/Induktive_Energie_bertragung.pdf Dokument über drahtlose Energieübertragung]&lt;br /&gt;
*[http://www.mikrocontroller.net/topic/80808#675198 Komplettes Projekt einer Propelleruhr und lange Diskussion]&lt;br /&gt;
*[http://www.mikrocontroller.net/topic/61706#489279 Noch eine Propelleruhr]&lt;br /&gt;
*[http://www.mikrocontroller.net/topic/155778#1529891 Royer Converter mit Schalenkernen und 20W Ausgangsleistung]&lt;br /&gt;
*[http://www.mikrocontroller.net/topic/152785#1540938 Royer Converter mit Luftspulen und 14W Ausgangsleistung]&lt;br /&gt;
* [http://www.mikrocontroller.net/topic/152785#1712213 Kleiner Royer Converter für einen Propellerglobus]&lt;br /&gt;
*[http://www.mikrocontroller.net/topic/214735#new Herleitung der Formeln im Artikel Royer Converter]&lt;br /&gt;
* [http://www.mikrocontroller.net/topic/219148?goto=2195298#2195298 berührungslos Bleigel Akku laden, 12V/1,6W]&lt;br /&gt;
* [http://www.mikrocontroller.net/topic/221845?goto=2238458#2238458 Kleiner Wandler für 5V/250mW]&lt;br /&gt;
* [http://www.mikrocontroller.net/topic/152785#2447793 Automatische Lasterkennung und Steuerung für den Royer Converter]&lt;br /&gt;
* [http://www.mikrocontroller.net/topic/278961#2948009 RFID Spulen für Leistungsübertragung?]&lt;br /&gt;
* [http://www.mikrocontroller.net/topic/goto_post/2937446 Flachspule 1 mH -- wie selbst herstellen?]&lt;br /&gt;
* [http://www.mikrocontroller.net/topic/297295 Leistungsverbesserung Royer Converter]&lt;br /&gt;
* [http://www.mikrocontroller.net/topic/263068#new WiTricity heute]&lt;br /&gt;
* [http://www.mikrocontroller.net/topic/322461?goto=3508850#3508850 Forumsbeitrag] Ferritplatten&lt;br /&gt;
&lt;br /&gt;
== Weblinks ==&lt;br /&gt;
&lt;br /&gt;
*[http://www.serious-technology.de/kleiner-wandler.htm Kleiner Wandler]: Sehr ausführliche Beschreibung des Aufbaus und Berechnung der Komponenten&lt;br /&gt;
*[http://www.serious-technology.de/ernsthafter_wandler.htm Ernsthafter Wandler]: Das Ganze nochmal in Groß&lt;br /&gt;
* [http://www.google.de/url?url=http://www.rrc-wireless-power.com/fileadmin/website_wireless_power/Dokumente/Whitepapers/RRC_WirelessPower_Kontaktlose_Energie___Datenuebertragung_D_E_Entwicklerforum_2008.pdf&amp;amp;rct=j&amp;amp;sa=U&amp;amp;ei=Fx7CUJXXJqSl4ASniIHoBg&amp;amp;ved=0CCUQFjACOAo&amp;amp;q=kontaktlose+energie%C3%BCbertragung&amp;amp;usg=AFQjCNE6dSlRmsaMDw8EnvLmJ3ovOZe2EA Dokument] zur kontaktlosen Energieübertragung&lt;br /&gt;
*[[media: an14.pdf | AN14]]: Application Note von Zetex, englisch&lt;br /&gt;
*[[media: dn164f.pdf | DN164]]: Design Note von Linear Technology, englisch&lt;br /&gt;
*[http://www.linear.com/docs/26421 Linear Technology Application Note 118:] High Voltage, Low Noise, DC/DC Converters (mit primärgeregeltem Royer-Converter)&lt;br /&gt;
*[http://4hv.org/e107_plugins/forum/forum_viewtopic.php?74096.0 Schönes Projekt zur kontaktlosen Energieübertragung] &amp;lt;---- Achtung: Seite hat einen Virus!!!&lt;br /&gt;
*[http://www.youtube.com/watch?v=2ODW-ntPHSU Video zum Projekt]&lt;br /&gt;
*[http://www.joretronik.de/Oszillatoren/Oszillatoren.html Royer-Hochleistungsoszillatoren mit MOSFETs und IGBTs]&lt;br /&gt;
*[http://www.joretronik.de/Web_NT_Buch/Kap11_2/Kapitel11_2.html Diverse Schaltungsbeispiele]&lt;br /&gt;
*[http://www.joretronik.de/Web_NT_Buch/Kap13_2/Kapitel13_2.html#13.2.2 Royer Oszillator für CCFL-Lampen]&lt;br /&gt;
* [http://mitglied.multimania.de/lvane/js_code/loop/loop.html Induktivität einer Kreisringspule]&lt;br /&gt;
* [http://home.planet.nl/~sloma000/Baxandall%20parallel-resonant%20Class-D%20oscillator1.htm The Baxandall parallel-resonant Class-D oscillator]&lt;br /&gt;
* [http://www.ti.com/ww/de/analog/wireless_power_solutions/index.shtml?DCMP=hpa_pmp_bq51013_de&amp;amp;HQS=Other+BA+bq51013-bpde bq51013], IC zur kontaklosen Energieübertragung von [http://www.ti.com TI], Evaluationboard verfügbar&lt;br /&gt;
* [http://www.wirelesspowerconsortium.com/ Wireless Power Consortium], definiert einen Standard zur kontaktlosen Energieübertragung (Qi)&lt;br /&gt;
* Kontaktlose Energieübertragungslösungen von Firmen&lt;br /&gt;
** [http://www.schleifring.de/de/Produkte/Technologien/Kontaktlose._.Uebertragung/energie.uebertragung.php Schleifring], 100W - 200kW&lt;br /&gt;
** [http://www.j-lasslop.de/produkte/kontaktlose-energie-und-datenuebertragung.html J-Lasselop], Mikrowatt bis 500kW&lt;br /&gt;
** [http://www.enasys.de/de/produkte/kontaktlose-energieuebertragung.html EnASYS], 60W-500kW&lt;br /&gt;
** [http://www.kontenda.de KONTENDA], 1W-2kW&lt;br /&gt;
** [http://www.mesa-systemtechnik.de MESA Systemtechnik], Power- und Sensortelemetrie&lt;br /&gt;
** [http://www.wirelesspower.cn Wirelesspower], Anbieter von verschiedenen ICs und Modulen von 1W-3kW&lt;br /&gt;
** [http://www.rrc-ps.de/de/produkte/kabellose-energieuebertragung/plattformen.html RRC Power Solutions] - Plattform Kabellose Energie- / Datenübertragung, 5W, Qi kompatibel&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Spannungsversorgung und Energiequellen]]&lt;/div&gt;</summary>
		<author><name>Frank m35</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=Datei:LTSpiceRoyerMosfet.asc&amp;diff=81434</id>
		<title>Datei:LTSpiceRoyerMosfet.asc</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=Datei:LTSpiceRoyerMosfet.asc&amp;diff=81434"/>
		<updated>2014-02-08T22:03:36Z</updated>

		<summary type="html">&lt;p&gt;Frank m35: LTSpice Simulation des Royer-Converters durch MOSFETs realisiert.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;LTSpice Simulation des Royer-Converters durch MOSFETs realisiert.&lt;/div&gt;</summary>
		<author><name>Frank m35</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=Royer_Converter&amp;diff=80940</id>
		<title>Royer Converter</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=Royer_Converter&amp;diff=80940"/>
		<updated>2014-01-17T20:53:28Z</updated>

		<summary type="html">&lt;p&gt;Frank m35: /* MOSFET-Variante */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Ein Royer-Converter ist ein Sinus-Leistungsoszillator. Er wird im Wesentlichen als Schaltnetzteil verwendet.&lt;br /&gt;
&lt;br /&gt;
== Geschichtliches ==&lt;br /&gt;
&lt;br /&gt;
Der Name geht auf George Howard Royer zurück, welcher diese Schaltung im Jahr 1954 entwickelte (siehe US-Patent 2783384). Die originale Schaltung arbeitet mit einem [http://de.wikipedia.org/wiki/Trafo Trafo] mit [http://de.wikipedia.org/wiki/Ferrite Ferritkern], welcher zum Umschalten in die Sättigung getrieben wird. Das Ausgangssignal ist rechteckförmig. Die hier vorgestellte Version, die auf Peter James Baxandall zurückgeht, arbeitet jedoch mit einem Trafo, welcher nicht in die Sättigung geht und mittels LC-[http://de.wikipedia.org/wiki/Schwingkreis Schwingkreis] ein Sinussignal erzeugt. Der Trafo kann sogar als Luftspule ohne Kern ausgeführt werden.&lt;br /&gt;
&lt;br /&gt;
== Aufbau und Eigenschaften ==&lt;br /&gt;
&lt;br /&gt;
Der Aufbau ist sehr einfach und robust. Zwei Transistoren ([[FET|MOSFETs]] oder [[Transistor|Bipolar]]) werden wechselseitig geschaltet (Gegentaktbetrieb, engl. push pull), und damit abwechselnd die eine und die andere Spulenhälfte der Primärwicklung von Strom durchflossen. Die Schaltung ist selbstschwingend, d.h. das Steuersignal wird direkt aus dem Trafo zurückgewonnen. Damit schwingt sie immer optimal auf Resonanz, ohne Abgleich von Bauteiltoleranzen und auch bei Alterung oder Temperaturänderung. Allerdings ändert sich damit die Frequenz des [[Schwingkreis]]es und damit geringfügig die Effizienz. Die Frequenz wird durch die Induktivität der Primärwicklung und den Kondensator C2 bestimmt (Parallelschwingkreis). Die Drosselspule L1 sorgt dafür, dass die Betriebsspannung wechselspannungsmäßig von der Mittelanzapfung von TR1 entkoppelt wird, sie wirkt als [[Konstantstromquelle]].&lt;br /&gt;
&lt;br /&gt;
[[bild:royer_bipolar.png | thumb | 670px | left | Schaltplan des Royer Converters]]&lt;br /&gt;
&lt;br /&gt;
{{Clear}}&lt;br /&gt;
&lt;br /&gt;
*Einfacher, robuster Aufbau&lt;br /&gt;
*Sinusförmige Strom- und Spannungsverläufe&lt;br /&gt;
*Transistoren schalten im Nulldurchgang der Spannung, dadurch geringe Schaltverluste und Störstrahlung&lt;br /&gt;
*Bei ausreichend großer Streuinduktivität zwischen Primär- und Sekundärwicklung ist die Schaltung kurzschlussfest.&lt;br /&gt;
*Vollkommen unempfindlich gegenüber Streuinduktivitäten des Trafos (im Gegensatz zu den meisten anderen Schaltnetzteiltopologien)&lt;br /&gt;
&lt;br /&gt;
Besonders der letzte Punkt ist sehr interessant. Auf Grund des Aufbaus und der Funktion wird sämtliche Energie im Magnetfeld, welche nicht über die Sekundärspule ausgekoppelt wird, wieder in den Schwingkreis zurückgeführt. Damit geht nur sehr wenig Energie verloren, egal wie gut die Kopplung zwischen Sekundär- und Primärspule ist.&lt;br /&gt;
&lt;br /&gt;
Der Trafo TR1 kann sehr verschieden aufgebaut sein. In einem Inverter für [http://de.wikipedia.org/wiki/Leuchtr%C3%B6hre CCFLs] ist es ein normaler Trafo mit Ferritkern. In anderen Anwendungen kann es aber auch ein kernloser Trafo sein, bei dem es zwischen Primärspule und Sekundärspule einen großen Abstand gibt ([http://de.wikipedia.org/wiki/Induktive_%C3%9Cbertragung Kontaktlose Energieübertragung]).&lt;br /&gt;
&lt;br /&gt;
== Ein praktisches Beispiel ==&lt;br /&gt;
&lt;br /&gt;
Auf Grund der Unempfindlichkeit der Schaltung gegenüber Streuinduktivitäten ist diese Schaltung ideal für einen Trafo ohne Kern und mit grossem Abstand zwischen Primär- und Sekundärspule. Damit kann kontaktlos recht viel Energie übertragen werden. Anwendungen sind z.&amp;amp;nbsp;B. die Ladestation elektrischer Zahnbürsten oder ein Rotationstrafo für eine [http://www.google.de/cse?q=propelleruhr Propelleruhr]. Für Letzteres soll dieses Beispiel hier dargestellt werden.&lt;br /&gt;
&lt;br /&gt;
Die Schaltung benutzt einfach beschaffbare Bauteile. Der Trafo wird selber gewickelt, ist aber auch vollkommen unkritisch. Wie im Bild zu sehen, wurde absichtlich ein recht grosser Luftspalt zwischen Primär- und Sekundärspule gelassen, um die Leistungsfähigkeit der Schaltung zu demonstrieren. Die Primärwicklung ist [http://de.wikipedia.org/wiki/Bifilar bifilar] gewickelt, d.h. man nimmt den Draht doppelt und wickelt damit gleichzeitig beide Spulenhälften, das geschlossene Ende trennt man danach auf und verschaltet phasenrichtig. Es entstehen zwei verschachtelte Wicklungen (engl. interleaved windings), dadurch verbessert sich die Kopplung. Der Trafo hat folgende Parameter.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align:center&amp;quot;&lt;br /&gt;
|+ &#039;&#039;&#039;Wickeldaten&#039;&#039;&#039; &lt;br /&gt;
|- &lt;br /&gt;
! Wicklung       || Windungszahl || Drahtdurchmesser [mm] || Durchmesser [mm] || Induktivität [µH]&lt;br /&gt;
|-&lt;br /&gt;
| Primär         || 2x10           || 0,55   || 80 || 70&lt;br /&gt;
|-&lt;br /&gt;
| Steuer         || 1              || 0,2    || 80 || ---&lt;br /&gt;
|-&lt;br /&gt;
| Sekundär       || 13             || 0,55   || 65 || 23&lt;br /&gt;
|}&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ &#039;&#039;&#039;Stückliste&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
! Bauteil || Wert || Reichelt Bestellnummer&lt;br /&gt;
|-&lt;br /&gt;
| T1, T2  || BC337 || [http://www.reichelt.de/?;ARTICLE=4986; 337-25] &lt;br /&gt;
|-&lt;br /&gt;
| L1 || 330µH; 0,5A|| [http://www.reichelt.de/?ARTICLE=1123; 09P 330µ]&lt;br /&gt;
|-&lt;br /&gt;
| C1 || 100µF, 25V|| [http://www.reichelt.de/?ARTICLE=15102; RAD 100/25]&lt;br /&gt;
|-&lt;br /&gt;
| C2 || 33nF, 100V|| [http://www.reichelt.de/?ARTICLE=31975; MKP-10-630 33N]&lt;br /&gt;
|-&lt;br /&gt;
| C3 || 6,8µF, 50V|| [http://www.reichelt.de/?ARTICLE=31926; MKS-2 6,8µ]&lt;br /&gt;
|-&lt;br /&gt;
| R1 || 2k2, 1/4W|| [http://www.reichelt.de/?ARTICLE=11586; METALL 2,21K]&lt;br /&gt;
|-&lt;br /&gt;
| R2 || 22R, 5W|| [http://www.reichelt.de/?ARTICLE=2611; 5W AXIAL 22]&lt;br /&gt;
|-&lt;br /&gt;
| D1-4 || 1N5818|| [http://www.reichelt.de/?ARTICLE=41849; 1N 5818]&lt;br /&gt;
|-&lt;br /&gt;
| TR1 || CuL, 0,5mm || [http://www.reichelt.de/?;ARTICLE=57182 CUL 100/0,50] &lt;br /&gt;
|}&lt;br /&gt;
[[bild:royer_prop_aufbau.jpg | thumb | 640px | left | Praktischer Aufbau]]&lt;br /&gt;
{{Clear}}&lt;br /&gt;
Mit 12V Eingangsspannung beträgt die Spannungsamplitude im Primärkreis ziemlich genau 38V. Der Leerlaufstrom der Schaltung beträgt 36mA. ABER! Der Leerlaufstrom im Schwingkreis beträgt 580mA(eff), die Blindleistung 15,6VA! Hier wird klar, warum sowohl die Primärspule als auch C2 sehr verlustarm sein müssen. Die Resonanzfrequenz beträgt 105 kHz. Damit wurden folgende Messwerte erreicht.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align:center&amp;quot;&lt;br /&gt;
|- &lt;br /&gt;
!Belastung	|| Eingangsstrom&amp;lt;br&amp;gt;[mA] || Ausgangsstrom&amp;lt;br&amp;gt;[mA]	|| Ausgangsspannung&amp;lt;br&amp;gt;[Veff] || Ausgangsleistung&amp;lt;br&amp;gt;[W] || Wirkungsgrad&amp;lt;br&amp;gt;[%]&lt;br /&gt;
|-&lt;br /&gt;
| Leerlauf               || 36  || 	0  || 7,8 || 0 ||  0&lt;br /&gt;
|-&lt;br /&gt;
| 22 &amp;amp;Omega;                  || 220	|| 320	|| 7	|| 2,2 || 84&lt;br /&gt;
|-&lt;br /&gt;
| Gleichrichter + 22 &amp;amp;Omega; || 190	|| 270	|| 6	|| 1,6 || 71&lt;br /&gt;
|-&lt;br /&gt;
| 10 &amp;amp;Omega;                || 250 || 490  || 4,9  || 2,4 || 80&lt;br /&gt;
|-&lt;br /&gt;
| Kurzschluß             || 60  || 650  || 0    || 0 || 0&lt;br /&gt;
|}&lt;br /&gt;
Nach Gleichrichtung mit schnellen Schottkydioden und Filterung bleiben bei 22Ω Last noch ca. 6V Gleichspannung übrig, genug um mit einem Low Drop Spannungsregler stabile 5V für einen Mikrocontroller bereitzustellen. Selbst bei der recht hohen Ausgangsleistung bleiben alle Bauteile kühl. Dabei werden nur recht kleine Transistoren verwendet. Das zeigt umso mehr die Leistungsfähigkeit der Schaltung. Bei optimaler Leistungsanpassung mit 10 &amp;amp;Omega; Last kann man 2,4W aus dem Trafo entnehmen. Diese Leistung wird vor allem durch den recht geringen Koppelfaktor von nur 0,45 begrenzt. Dieser kommt allerdings dem Kurzschlussfall zu gute, hier beträgt die Stromaufnahme der Schaltung nur 60mA, die Resonanzfrequenz steigt nur mässig auf 123kHz. Prinzipiell ist diese Schaltung bis in den Bereich von mehreren kW Leistung skalierbar.&lt;br /&gt;
&lt;br /&gt;
== Hinweise ==&lt;br /&gt;
&lt;br /&gt;
* Beim ersten Einschalten unbedingt die &amp;lt;span style=&amp;quot;color:#FF0000&amp;quot;&amp;gt;Strombegrenzung&amp;lt;/span&amp;gt; am Netzteil einstellen! Für die Beispielschaltung reichen 100mA.&lt;br /&gt;
*Schwingt die Schaltung nicht an, ist in den meisten Fällen die Steuerwicklung verpolt.&lt;br /&gt;
* Manchmal ist auch die Primärwicklung falsch angeschlossen. Beim [http://de.wikipedia.org/wiki/Bifilar bifilaren] Wickeln muss man das geschlossene Ende aufschneiden und das linke Ende der nun entstandenen Teilwicklung mit dem rechten Ende der zweiten Teilwicklung zur [http://www.mikrocontroller.net/topic/152785#1605883 Mittelanzapfung] verbinden.&lt;br /&gt;
*Der Kondensator C2 wird auch im Leerlauf von einem recht hohen Strom durchflossen. Deshalb muss hier auf jeden Fall ein verlustarmer Typ eingesetzt werden. Entweder ein [http://de.wikipedia.org/wiki/Folienkondensator Folienkondensator] mit Polypropylen als Dielektrikum (MKP oder FKP) oder ein [http://de.wikipedia.org/wiki/Keramikkondensator Keramikkondensator] aus C0G oder NP0. Andere Typen (Folie MKS, Keramik X7R, Z5U etc.) gehen &#039;&#039;&#039;nicht&#039;&#039;&#039;, denn hier werden zu hohe dielektrische Veluste im Kondensator erzeugt, welche diesen erhitzen und irgendwann zerstören. Die Verluste von X7R sind ca. 20mal höher als von NP0!&lt;br /&gt;
*Die Transistoren sollten nur mässig überdimensioniert sein, denn Transistoren mit sehr hohen Kollektorströmen sind meist auch recht langsam.&lt;br /&gt;
*Die Transistoren müssen mindestens eine Sperrspannung von &amp;lt;math&amp;gt;\pi \cdot U_{ein}&amp;lt;/math&amp;gt; aushalten, denn das ist die exakte Amplitude der Schwingung im Primärkreis. Praktisch sollte man aber mindestens 20% und mehr Reserve einplanen.&lt;br /&gt;
*Der [[Basiswiderstand]] muss experimentell ermittelt werden. Er muss so ausgelegt sein, dass die Transistoren beim Schalten nur &#039;&#039;&#039;schwach&#039;&#039;&#039; in die Sättigung gehen, um schneller wieder abschalten zu können (Stichwort Speicherzeit, engl. storage time).&lt;br /&gt;
*Die Drossel L1 sollte ca. den 2..3fachen Induktivitätswert der Primärwicklung haben. Je mehr, umso besser. Sie darf bei vollem Laststrom nicht in die Sättigung gehen, da dann ihre Induktivität stark absinkt.&lt;br /&gt;
* Man sollte &#039;&#039;&#039;keine&#039;&#039;&#039; [[Potentiometer | Drahtpotis]] zur Lastvariation nutzen. Die haben soviel Induktivität (im Test 12µH, =8&amp;amp;Omega; bei 105kHz), dass die dadurch den Maximalstrom ungewollt verringern. Selbst einfache Drahtwiderstände sind mit 3µH/2&amp;amp;Omega; induktivem Anteil schon ungünstig.&lt;br /&gt;
*Die Spitzenspannung der Steuerwicklung darf ca. 5V nicht überschreiten, weil diese als Sperrspannung für die Transistoren wirksam wird. Die meisten Bipolartransistoren verkraften max. 5V Sperrspannung zwischen Basis und Emitter.&lt;br /&gt;
*Im Kurzschlussfall der Sekundärwicklung reduziert sich die Induktivität der Primärwicklung auf die Streuinduktivität, was zu einer Frequenzerhöhung führt. Durch die höhere Frequenz stellt die Streuinduktivität einen höheren Blindwiderstand dar, welcher den Strom wirkungsvoll begrenzt. Aufgrund der höheren Frequenz fließt allerdings ein größerer Strom im Schwingkreis. Verwendet man also diesen Zustand, dann muss die Schaltung für die höheren Belastungen ausgelegt sein. Je kleiner der Koppelfaktor, umso besser die Kurzschlussfestigkeit. Die nachfolgende Tabelle gibt die Erhöhung des Eingangsstroms sowie der Resonanzfrequenz beim Kurzschluss in Abhängigkeit des Koppelfaktors an.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align:center&amp;quot; &lt;br /&gt;
|- &lt;br /&gt;
! rowspan=&amp;quot;2&amp;quot; | Koppelfaktor &lt;br /&gt;
! colspan=&amp;quot;2&amp;quot; | Faktor gegenüber Leerlauf&lt;br /&gt;
|-&lt;br /&gt;
! Resonanzfrequenz || Eingangsstrom&lt;br /&gt;
|-&lt;br /&gt;
|0,01 || 1,0 || 1,0&lt;br /&gt;
|-&lt;br /&gt;
|0,1 || 1,1 || 1,1&lt;br /&gt;
|-&lt;br /&gt;
|0,2 || 1,1 || 1,3&lt;br /&gt;
|-&lt;br /&gt;
|0,5 || 1,4 || 2,0&lt;br /&gt;
|-&lt;br /&gt;
|0,6 || 1,6 || 2,5&lt;br /&gt;
|-&lt;br /&gt;
|0,7 || 1,8 || 3,3&lt;br /&gt;
|-&lt;br /&gt;
|0,8 || 2,2 || 5&lt;br /&gt;
|-&lt;br /&gt;
|0,9 || 3,2 || 10&lt;br /&gt;
|-&lt;br /&gt;
|0,95 || 4,5 || 20&lt;br /&gt;
|-&lt;br /&gt;
|0,99 || 10 || 100&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Formeln zum Royer Converter ==&lt;br /&gt;
&lt;br /&gt;
*&amp;lt;math&amp;gt;f_r=\frac{1}{2 \pi \sqrt{L_{pri} C_2}}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*&amp;lt;math&amp;gt;U_p = \pi \cdot U_{ein}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*&amp;lt;math&amp;gt;I_p = U_{ein} \cdot \pi \sqrt{\frac{C}{L}}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*&amp;lt;math&amp;gt;k = \frac {U_{aus}}{\pi \cdot U_{ein}} \cdot \frac {N_{pri}}{N_{sek}}&amp;lt;/math&amp;gt; (im Leerlauf gemessen)&lt;br /&gt;
&lt;br /&gt;
*&amp;lt;math&amp;gt;k = \sqrt{1-\frac{L_{Pri-K}}{L_{Pri-0}}}&amp;lt;/math&amp;gt; (mit L-Meter gemessen)&lt;br /&gt;
&lt;br /&gt;
*&amp;lt;math&amp;gt;R1 \sim \frac{\beta _{I_N} \cdot U_{ein}}{I_N}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*&amp;lt;math&amp;gt;N_{steu} \le \frac{5}{\pi \cdot U_{ein}}\cdot N_{Pri}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*&amp;lt;math&amp;gt;P_{max}=\frac{(\pi \cdot U_{ein} \cdot k)^2 \sqrt{L_{pri} \cdot C_2 (1-k^2)}}{4 \cdot L_{pri} \cdot (1-k^2)}&amp;lt;/math&amp;gt; (Näherungsformel)&lt;br /&gt;
&lt;br /&gt;
*&amp;lt;math&amp;gt;R_{opt}=(1-k^2)(\frac{N_{sek}}{N_{pri}})^2 L_{pri} \cdot 2\pi \cdot f&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
|- &lt;br /&gt;
! Formelzeichen	|| Bedeutung&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;math&amp;gt;\!\, f_r&amp;lt;/math&amp;gt; || Resonanzfrequenz im Leerlauf &lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;math&amp;gt;\!\, L_{Pri}&amp;lt;/math&amp;gt; || Induktivität der Primärwicklung &lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;math&amp;gt;\!\, C2&amp;lt;/math&amp;gt; || Kapazität des Primärschwingkreises&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;math&amp;gt;\!\, U_p&amp;lt;/math&amp;gt; || Spitzenspannung im Resonanzkreis &lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;math&amp;gt;\!\, I_p&amp;lt;/math&amp;gt; || Spitzenstrom im Resonanzkreis &lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;math&amp;gt;\!\, k&amp;lt;/math&amp;gt; || Koppelfaktor zwischen Primär- und Sekundärwicklung &lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;math&amp;gt;\!\, L_{Pri-0}&amp;lt;/math&amp;gt; || Primärinduktivität bei Leerlauf der Sekundärwicklung&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;math&amp;gt;\!\, L_{Pri-K}&amp;lt;/math&amp;gt; || Primärinduktivität bei Kurzschluss der Sekundärwicklung&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;math&amp;gt;\!\, U_{ein}&amp;lt;/math&amp;gt; || Eingangsspannung des Royer Converters (Gleichspannung)&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;math&amp;gt;\!\, U_{aus}&amp;lt;/math&amp;gt; || Ausgangsspannung des Royer Converters (Wechselspannung, Spitzenwert)&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;math&amp;gt;\!\, R1&amp;lt;/math&amp;gt; || Basiswiderstand&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;math&amp;gt;\!\, I_N&amp;lt;/math&amp;gt; || Nennstrom des Royer Converters am Eingang&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;math&amp;gt;\!\, \beta _{I_N}&amp;lt;/math&amp;gt; || Stromverstärkung der Transistoren bei Nennstrom&amp;lt;br&amp;gt;Achung! Die Stromverstärkung sinkt bei höheren Strömen deutlich, ins Datenblatt schauen.&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;math&amp;gt;\!\, N_{steu}&amp;lt;/math&amp;gt; || Windungszahl der Steuerwicklung &lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;math&amp;gt;\!\, P_{max}&amp;lt;/math&amp;gt; || Maximale Ausgangsleistung bei Leistungsanpassung&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;math&amp;gt;\!\, R_{opt}&amp;lt;/math&amp;gt; || Optimaler Lastwiderstand für Leistungsanpassung&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Das Ganze ist auch als [[media:Royer_Converter.xls | Exceltabelle]] zur leichten Anwendung verfügbar.&lt;br /&gt;
&lt;br /&gt;
== Leistungsoptimierung ==&lt;br /&gt;
&lt;br /&gt;
Wie kann ich den Wirkungsgrad sowie die Ausgangsleistung für meine Anwendung optimieren?&lt;br /&gt;
&lt;br /&gt;
* Die Eingangsspannung soll möglichst hoch sein.&lt;br /&gt;
* Der Koppelfaktor soll möglichst hoch sein. Das erreicht man durch&lt;br /&gt;
** Flache Spulen mit grossem Durchmesser und kleinem Abstand (parallele Spulen)&lt;br /&gt;
** Konzentrische (ineinandergestapelte) Spulen mit geringem Luftspalt zwischen den Spulen&lt;br /&gt;
** Einsatz von Ferritkernen (Schalenkerne, Stäbe etc.) zur Bündelung des Magnetfeldes&lt;br /&gt;
* Wenn man die Sekundärwicklung mit einem parallel oder in Reihe geschalteten Kondensator auf Resonanz mit der Primärwicklung abgleicht, kann die Ausgangsleistung deutlich erhöht werden, weil dadurch die Streuinduktivität der Sekundärseite kompensiert wird. Man muss dabei beachten, dass bei Parallelschaltung die Ausgangsspannung ohne Last stark ansteigt (Prinzip der [http://de.wikipedia.org/wiki/Teslaspule Teslaspule]). Unter Last verhält sich der Ausgang dann nahezu wie eine [[Konstantstromquelle]]. Bei Reihenschaltung ist das nicht der Fall, hier bleibt die Leerlaufspannung niedrig. Auch für diesen zusätzlichen Kondensator gilt das Gleiche wie C2, er muss sehr verlustarm sein. Es gilt&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;C_{sek} = \frac{1}{(2 \pi f)^2 L_{sek}\sqrt{1-k^2}}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Das Verhältnis &amp;lt;math&amp;gt;C/L&amp;lt;/math&amp;gt; soll möglichst hoch sein. Verdoppelt man die Kapazität und reduziert gleichzeitig die Primärinduktivität um den Faktor zwei (Windungszahl * 0,7), verdoppelt sich die maximal verfügbare Leistung. Der Preis dafür sind doppelt so hohe Leerlaufströme im Schwingkreis und damit ca. 2,8mal so hohe Leerlaufverluste (bei gleichem Drahtquerschnitt, P = I^2 * R).&lt;br /&gt;
* Die Resonanzfrequenz soll möglichst niedrig sein, daduch veringern sich die induktiven Widerstände der Streuinduktivitäten, welche den Strom und damit die Leistung begrenzen.&lt;br /&gt;
* Der Drahtquerschnitt der Primärwicklung muss möglichst gross sein, denn hier fließen sehr hohe Ströme. Allerdings bewirkt die meist recht hohe Resonanzfrequenz auf grund des [http://de.wikipedia.org/wiki/Skineffekt Skineffekts] eine Verringerung des effektiven Drahtquerschnitts. Ausserdem lassen sich dicke, massive Kupferdrähte eher schlecht wickeln. Darum verwendet man oft [http://de.wikipedia.org/wiki/Hochfrequenzlitze HF-Litze], welche aus sehr vielen, sehr dünnen, gegeneinander isolierten Drähten besteht. Diese lässt sich deutlich besser wickeln und wirkt dem Skineffekt entgegen.&lt;br /&gt;
&lt;br /&gt;
== MOSFET-Variante ==&lt;br /&gt;
[[Datei:WurthWE-WPCC.png| thumb | 300px | right | Auswahl bestimmter Würth WE-WPCC Ladespulen. Links unten die kleinste Ladespule mit 10µH, mittig oben 6.3µH, rechts unten 6.3µH mit einem Neodym-Magnet in der Mitte.]]&lt;br /&gt;
&lt;br /&gt;
Man kann die Primärseite des Trafos mit Mittelanzapfung und Steuerwicklung auch durch eine einfache Spule ersetzen, wenn man MOSFETs statt Bipolartransistoren nutzt und die Betriebsspannung über zwei Spulen an den Enden der Primärwicklung einspeist. Das vereinfacht den Aufbau der Primärspule deutlich, was u.a. bei bei höheren Leistungen günstig ist. Der Preis dafür ist, daß man zwei Spulen mit etwa der doppelten Induktivität benötigt. Ebenfalls werden dazu geeignete Flachspulen von Herstellern wie Würth, TDK, .. (siehe Abbildung rechts) produziert (Stichwort: Ladespule bzw. charging coil).&lt;br /&gt;
Die unten abgebildete Mosfet-Schaltung baut auf diesem [http://www.mikrocontroller.net/topic/278961#2948009 Beitrag] auf, in dem auch weitere Erklärungen der Funktionsweise sowie zahlreiche Dimensionierungs-Beispiele enthalten sind.&lt;br /&gt;
[[Datei:Royer MOSFET.png| thumb | 600px | left | MOSFET-Schaltung des Royer Converters]]&lt;br /&gt;
&lt;br /&gt;
[[Datei:Royer_MOSFET_Aufbau.jpg| thumb | 300px | right | Der beschriebene Aufbau mit Logic-Level MOSFETs. Von links nach rechts: Die Royer-Converter Schaltung an welche die kleine Würth Ladespule mit 10µH angeschlossen ist. Darüber die selbst gewickelte Empfangsspule sowie der Ferritkern welcher im Betrieb hinter die Empfangsspule befestigt wird. Die Empfangsspule ist mit dem Gleichrichter verbunden welcher den DC-DC Buck-Converter speist. Der Lastwiderstand ist rechts außen sichtbar. Im Betrieb sind beide Spulen parallel übereinander ausgerichtet im Abstand von 3mm, getrennt durch eine Acrylplatte. ]]&lt;br /&gt;
&lt;br /&gt;
{{Clear}}&lt;br /&gt;
&lt;br /&gt;
Beispieleinsatz:&lt;br /&gt;
&lt;br /&gt;
Die in obiger Schaltung verwendeten Bauteile sind für eine drahtlose Energieübertragung mit einer Eingangsspannung von 5V, einer Ausgangsspannung von 5V und Ausgangsleistung von 2.2W bei einem Abstand von 3mm ausgelegt. Als Primärspule wird eine Würth 10µH Ladespule verwendet, als Sekundärspule eine selbstgewickelte Flachspule mit 14mm Durchmesser und 14 Wicklungen auf deren Rückseite ein Pot Core Ferritkern (3H1) zur Leistungsverbesserung plaziert ist. Die hier verwendeten Mosfets sind Logic-Level-Mosfets und nicht für hohe Eingangsspannungen ausgelegt (im oben genannten Beitrag finden sich Beispiele für Eingangsspannungen &amp;gt;10V). Um die ungeregelte Ausgangsspannung auf 5V zu stabilisieren wird der Texas Instruments TPS54331 Buck-Converter verwendet (nicht in der Schaltung aufgeführt), der eine Ein-/Ausschalthysterese besitzt um nur bei geeigneter Orientierung der Spulen einzuschalten und dadurch stabile 5V erzeugen kann. Die komplette Schaltung ist mit SMD Bauteilen und 0.1µF NP0 50V Kondensatoren in der Bauform 1206 aufgebaut worden (siehe rechte Abbildung). Bei den Spulen L1 und L2 muss ein Mittelmaß zwischen Baugröße, Induktivität und Widerstand gefunden werden. Bei gleichbleibender Baugröße stellte 100µH die optimale Wahl im Vergleich zu 47µH (zu geringe Induktivität) und 220µH (zu hoher Widerstand) dar. Die so aufgebaute Schaltung arbeitet bei 115kHz und es wird momentan ein Wirkungsgrad von ca. 58% erreicht mit einer Last von 450mA am 5V Ausgang.&lt;br /&gt;
&lt;br /&gt;
Wie im Artikel beschrieben, kann die Effizienz gesteigert werden, indem die Fläche der Sekundärspule vergrößert wird, Lastanpassung vorgenommen wird, optimierte Ferritkerne verwendet werden etc. Bei identischer Primär- und Sekundärspule (Würth WE-WPCC 10µH) im Abstand von 5mm und einem Lastwiderstand von 68 &amp;amp;Omega; direkt am Delon-Brückengleichrichter angeschlossen (ohne DC-DC Converter) wurde in einem kurzen Versuch eine Effizienz von ca. 70% gemessen, bei einer Ausgangsleistung von ca. 4W (19V @ 220mA) mit sonst unveränderten Parametern (5V @ 1.2A Eingang). Da an der Schaltung nichts verändert wurde und auch der Lastwiderstand eher zufällig gewählt wurde ist es offensichtlich, dass der maximale Wirkungsgrad noch nicht erreicht ist und somit weiteres Potenzial im Aufbau steckt.&lt;br /&gt;
&lt;br /&gt;
== Siehe auch ==&lt;br /&gt;
&lt;br /&gt;
* [[Spule]]&lt;br /&gt;
* [[Transformatoren und Spulen]]&lt;br /&gt;
&lt;br /&gt;
== Diskussionen im Forum ==&lt;br /&gt;
&lt;br /&gt;
*[http://www.mikrocontroller.net/topic/118124#new Verwendung in einem Induktionsofen, MOSFETs als Schalter]&lt;br /&gt;
*[http://www.mikrocontroller.net/topic/151538#new Verwendung in einem Induktionsofen, neuer Thread]&lt;br /&gt;
* [http://www.mikrocontroller.net/topic/263161#2734278 Dokumente über Induktionskochfelder]&lt;br /&gt;
*[http://www.mikrocontroller.net/attachment/61266/Induktive_Energie_bertragung.pdf Dokument über drahtlose Energieübertragung]&lt;br /&gt;
*[http://www.mikrocontroller.net/topic/80808#675198 Komplettes Projekt einer Propelleruhr und lange Diskussion]&lt;br /&gt;
*[http://www.mikrocontroller.net/topic/61706#489279 Noch eine Propelleruhr]&lt;br /&gt;
*[http://www.mikrocontroller.net/topic/155778#1529891 Royer Converter mit Schalenkernen und 20W Ausgangsleistung]&lt;br /&gt;
*[http://www.mikrocontroller.net/topic/152785#1540938 Royer Converter mit Luftspulen und 14W Ausgangsleistung]&lt;br /&gt;
* [http://www.mikrocontroller.net/topic/152785#1712213 Kleiner Royer Converter für einen Propellerglobus]&lt;br /&gt;
*[http://www.mikrocontroller.net/topic/214735#new Herleitung der Formeln im Artikel Royer Converter]&lt;br /&gt;
* [http://www.mikrocontroller.net/topic/219148?goto=2195298#2195298 berührungslos Bleigel Akku laden, 12V/1,6W]&lt;br /&gt;
* [http://www.mikrocontroller.net/topic/221845?goto=2238458#2238458 Kleiner Wandler für 5V/250mW]&lt;br /&gt;
* [http://www.mikrocontroller.net/topic/152785#2447793 Automatische Lasterkennung und Steuerung für den Royer Converter]&lt;br /&gt;
* [http://www.mikrocontroller.net/topic/278961#2948009 RFID Spulen für Leistungsübertragung?]&lt;br /&gt;
* [http://www.mikrocontroller.net/topic/goto_post/2937446 Flachspule 1 mH -- wie selbst herstellen?]&lt;br /&gt;
* [http://www.mikrocontroller.net/topic/297295 Leistungsverbesserung Royer Converter]&lt;br /&gt;
* [http://www.mikrocontroller.net/topic/263068#new WiTricity heute]&lt;br /&gt;
&lt;br /&gt;
== Weblinks ==&lt;br /&gt;
&lt;br /&gt;
*[http://www.serious-technology.de/kleiner-wandler.htm Kleiner Wandler]: Sehr ausführliche Beschreibung des Aufbaus und Berechnung der Komponenten&lt;br /&gt;
*[http://www.serious-technology.de/ernsthafter_wandler.htm Ernsthafter Wandler]: Das Ganze nochmal in Groß&lt;br /&gt;
* [http://www.google.de/url?url=http://www.rrc-wireless-power.com/fileadmin/website_wireless_power/Dokumente/Whitepapers/RRC_WirelessPower_Kontaktlose_Energie___Datenuebertragung_D_E_Entwicklerforum_2008.pdf&amp;amp;rct=j&amp;amp;sa=U&amp;amp;ei=Fx7CUJXXJqSl4ASniIHoBg&amp;amp;ved=0CCUQFjACOAo&amp;amp;q=kontaktlose+energie%C3%BCbertragung&amp;amp;usg=AFQjCNE6dSlRmsaMDw8EnvLmJ3ovOZe2EA Dokument] zur kontaktlosen Energieübertragung&lt;br /&gt;
*[[media: an14.pdf | AN14]]: Application Note von Zetex, englisch&lt;br /&gt;
*[[media: dn164f.pdf | DN164]]: Design Note von Linear Technology, englisch&lt;br /&gt;
*[http://www.linear.com/docs/26421 Linear Technology Application Note 118:] High Voltage, Low Noise, DC/DC Converters (mit primärgeregeltem Royer-Converter)&lt;br /&gt;
*[http://4hv.org/e107_plugins/forum/forum_viewtopic.php?74096.0 Schönes Projekt zur kontaktlosen Energieübertragung] &amp;lt;---- Achtung: Seite hat einen Virus!!!&lt;br /&gt;
*[http://www.youtube.com/watch?v=2ODW-ntPHSU Video zum Projekt]&lt;br /&gt;
*[http://www.joretronik.de/Oszillatoren/Oszillatoren.html Royer-Hochleistungsoszillatoren mit MOSFETs und IGBTs]&lt;br /&gt;
*[http://www.joretronik.de/Web_NT_Buch/Kap11_2/Kapitel11_2.html Diverse Schaltungsbeispiele]&lt;br /&gt;
*[http://www.joretronik.de/Web_NT_Buch/Kap13_2/Kapitel13_2.html#13.2.2 Royer Oszillator für CCFL-Lampen]&lt;br /&gt;
* [http://mitglied.multimania.de/lvane/js_code/loop/loop.html Induktivität einer Kreisringspule]&lt;br /&gt;
* [http://home.planet.nl/~sloma000/Baxandall%20parallel-resonant%20Class-D%20oscillator1.htm The Baxandall parallel-resonant Class-D oscillator]&lt;br /&gt;
* [http://www.ti.com/ww/de/analog/wireless_power_solutions/index.shtml?DCMP=hpa_pmp_bq51013_de&amp;amp;HQS=Other+BA+bq51013-bpde bq51013], IC zur kontaklosen Energieübertragung von [http://www.ti.com TI], Evaluationboard verfügbar&lt;br /&gt;
* [http://www.wirelesspowerconsortium.com/ Wireless Power Consortium], definiert einen Standard zur kontaktlosen Energieübertragung (Qi)&lt;br /&gt;
* Kontaktlose Energieübertragungslösungen von Firmen&lt;br /&gt;
** [http://www.schleifring.de/de/Produkte/Technologien/Kontaktlose._.Uebertragung/energie.uebertragung.php Schleifring], 100W - 200kW&lt;br /&gt;
** [http://www.j-lasslop.de/produkte/kontaktlose-energie-und-datenuebertragung.html J-Lasselop], Mikrowatt bis 500kW&lt;br /&gt;
** [http://www.enasys.de/de/produkte/kontaktlose-energieuebertragung.html EnASYS], 60W-500kW&lt;br /&gt;
** [http://www.kontenda.de KONTENDA], 1W-2kW&lt;br /&gt;
** [http://www.mesa-systemtechnik.de MESA Systemtechnik], Power- und Sensortelemetrie&lt;br /&gt;
** [http://www.wirelesspower.cn Wirelesspower], Anbieter von verschiedenen ICs und Modulen von 1W-3kW&lt;br /&gt;
** [http://www.rrc-ps.de/de/produkte/kabellose-energieuebertragung/plattformen.html RRC Power Solutions] - Plattform Kabellose Energie- / Datenübertragung, 5W, Qi kompatibel&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Spannungsversorgung und Energiequellen]]&lt;/div&gt;</summary>
		<author><name>Frank m35</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=Royer_Converter&amp;diff=80939</id>
		<title>Royer Converter</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=Royer_Converter&amp;diff=80939"/>
		<updated>2014-01-17T20:47:04Z</updated>

		<summary type="html">&lt;p&gt;Frank m35: /* MOSFET-Variante */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Ein Royer-Converter ist ein Sinus-Leistungsoszillator. Er wird im Wesentlichen als Schaltnetzteil verwendet.&lt;br /&gt;
&lt;br /&gt;
== Geschichtliches ==&lt;br /&gt;
&lt;br /&gt;
Der Name geht auf George Howard Royer zurück, welcher diese Schaltung im Jahr 1954 entwickelte (siehe US-Patent 2783384). Die originale Schaltung arbeitet mit einem [http://de.wikipedia.org/wiki/Trafo Trafo] mit [http://de.wikipedia.org/wiki/Ferrite Ferritkern], welcher zum Umschalten in die Sättigung getrieben wird. Das Ausgangssignal ist rechteckförmig. Die hier vorgestellte Version, die auf Peter James Baxandall zurückgeht, arbeitet jedoch mit einem Trafo, welcher nicht in die Sättigung geht und mittels LC-[http://de.wikipedia.org/wiki/Schwingkreis Schwingkreis] ein Sinussignal erzeugt. Der Trafo kann sogar als Luftspule ohne Kern ausgeführt werden.&lt;br /&gt;
&lt;br /&gt;
== Aufbau und Eigenschaften ==&lt;br /&gt;
&lt;br /&gt;
Der Aufbau ist sehr einfach und robust. Zwei Transistoren ([[FET|MOSFETs]] oder [[Transistor|Bipolar]]) werden wechselseitig geschaltet (Gegentaktbetrieb, engl. push pull), und damit abwechselnd die eine und die andere Spulenhälfte der Primärwicklung von Strom durchflossen. Die Schaltung ist selbstschwingend, d.h. das Steuersignal wird direkt aus dem Trafo zurückgewonnen. Damit schwingt sie immer optimal auf Resonanz, ohne Abgleich von Bauteiltoleranzen und auch bei Alterung oder Temperaturänderung. Allerdings ändert sich damit die Frequenz des [[Schwingkreis]]es und damit geringfügig die Effizienz. Die Frequenz wird durch die Induktivität der Primärwicklung und den Kondensator C2 bestimmt (Parallelschwingkreis). Die Drosselspule L1 sorgt dafür, dass die Betriebsspannung wechselspannungsmäßig von der Mittelanzapfung von TR1 entkoppelt wird, sie wirkt als [[Konstantstromquelle]].&lt;br /&gt;
&lt;br /&gt;
[[bild:royer_bipolar.png | thumb | 670px | left | Schaltplan des Royer Converters]]&lt;br /&gt;
&lt;br /&gt;
{{Clear}}&lt;br /&gt;
&lt;br /&gt;
*Einfacher, robuster Aufbau&lt;br /&gt;
*Sinusförmige Strom- und Spannungsverläufe&lt;br /&gt;
*Transistoren schalten im Nulldurchgang der Spannung, dadurch geringe Schaltverluste und Störstrahlung&lt;br /&gt;
*Bei ausreichend großer Streuinduktivität zwischen Primär- und Sekundärwicklung ist die Schaltung kurzschlussfest.&lt;br /&gt;
*Vollkommen unempfindlich gegenüber Streuinduktivitäten des Trafos (im Gegensatz zu den meisten anderen Schaltnetzteiltopologien)&lt;br /&gt;
&lt;br /&gt;
Besonders der letzte Punkt ist sehr interessant. Auf Grund des Aufbaus und der Funktion wird sämtliche Energie im Magnetfeld, welche nicht über die Sekundärspule ausgekoppelt wird, wieder in den Schwingkreis zurückgeführt. Damit geht nur sehr wenig Energie verloren, egal wie gut die Kopplung zwischen Sekundär- und Primärspule ist.&lt;br /&gt;
&lt;br /&gt;
Der Trafo TR1 kann sehr verschieden aufgebaut sein. In einem Inverter für [http://de.wikipedia.org/wiki/Leuchtr%C3%B6hre CCFLs] ist es ein normaler Trafo mit Ferritkern. In anderen Anwendungen kann es aber auch ein kernloser Trafo sein, bei dem es zwischen Primärspule und Sekundärspule einen großen Abstand gibt ([http://de.wikipedia.org/wiki/Induktive_%C3%9Cbertragung Kontaktlose Energieübertragung]).&lt;br /&gt;
&lt;br /&gt;
== Ein praktisches Beispiel ==&lt;br /&gt;
&lt;br /&gt;
Auf Grund der Unempfindlichkeit der Schaltung gegenüber Streuinduktivitäten ist diese Schaltung ideal für einen Trafo ohne Kern und mit grossem Abstand zwischen Primär- und Sekundärspule. Damit kann kontaktlos recht viel Energie übertragen werden. Anwendungen sind z.&amp;amp;nbsp;B. die Ladestation elektrischer Zahnbürsten oder ein Rotationstrafo für eine [http://www.google.de/cse?q=propelleruhr Propelleruhr]. Für Letzteres soll dieses Beispiel hier dargestellt werden.&lt;br /&gt;
&lt;br /&gt;
Die Schaltung benutzt einfach beschaffbare Bauteile. Der Trafo wird selber gewickelt, ist aber auch vollkommen unkritisch. Wie im Bild zu sehen, wurde absichtlich ein recht grosser Luftspalt zwischen Primär- und Sekundärspule gelassen, um die Leistungsfähigkeit der Schaltung zu demonstrieren. Die Primärwicklung ist [http://de.wikipedia.org/wiki/Bifilar bifilar] gewickelt, d.h. man nimmt den Draht doppelt und wickelt damit gleichzeitig beide Spulenhälften, das geschlossene Ende trennt man danach auf und verschaltet phasenrichtig. Es entstehen zwei verschachtelte Wicklungen (engl. interleaved windings), dadurch verbessert sich die Kopplung. Der Trafo hat folgende Parameter.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align:center&amp;quot;&lt;br /&gt;
|+ &#039;&#039;&#039;Wickeldaten&#039;&#039;&#039; &lt;br /&gt;
|- &lt;br /&gt;
! Wicklung       || Windungszahl || Drahtdurchmesser [mm] || Durchmesser [mm] || Induktivität [µH]&lt;br /&gt;
|-&lt;br /&gt;
| Primär         || 2x10           || 0,55   || 80 || 70&lt;br /&gt;
|-&lt;br /&gt;
| Steuer         || 1              || 0,2    || 80 || ---&lt;br /&gt;
|-&lt;br /&gt;
| Sekundär       || 13             || 0,55   || 65 || 23&lt;br /&gt;
|}&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ &#039;&#039;&#039;Stückliste&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
! Bauteil || Wert || Reichelt Bestellnummer&lt;br /&gt;
|-&lt;br /&gt;
| T1, T2  || BC337 || [http://www.reichelt.de/?;ARTICLE=4986; 337-25] &lt;br /&gt;
|-&lt;br /&gt;
| L1 || 330µH; 0,5A|| [http://www.reichelt.de/?ARTICLE=1123; 09P 330µ]&lt;br /&gt;
|-&lt;br /&gt;
| C1 || 100µF, 25V|| [http://www.reichelt.de/?ARTICLE=15102; RAD 100/25]&lt;br /&gt;
|-&lt;br /&gt;
| C2 || 33nF, 100V|| [http://www.reichelt.de/?ARTICLE=31975; MKP-10-630 33N]&lt;br /&gt;
|-&lt;br /&gt;
| C3 || 6,8µF, 50V|| [http://www.reichelt.de/?ARTICLE=31926; MKS-2 6,8µ]&lt;br /&gt;
|-&lt;br /&gt;
| R1 || 2k2, 1/4W|| [http://www.reichelt.de/?ARTICLE=11586; METALL 2,21K]&lt;br /&gt;
|-&lt;br /&gt;
| R2 || 22R, 5W|| [http://www.reichelt.de/?ARTICLE=2611; 5W AXIAL 22]&lt;br /&gt;
|-&lt;br /&gt;
| D1-4 || 1N5818|| [http://www.reichelt.de/?ARTICLE=41849; 1N 5818]&lt;br /&gt;
|-&lt;br /&gt;
| TR1 || CuL, 0,5mm || [http://www.reichelt.de/?;ARTICLE=57182 CUL 100/0,50] &lt;br /&gt;
|}&lt;br /&gt;
[[bild:royer_prop_aufbau.jpg | thumb | 640px | left | Praktischer Aufbau]]&lt;br /&gt;
{{Clear}}&lt;br /&gt;
Mit 12V Eingangsspannung beträgt die Spannungsamplitude im Primärkreis ziemlich genau 38V. Der Leerlaufstrom der Schaltung beträgt 36mA. ABER! Der Leerlaufstrom im Schwingkreis beträgt 580mA(eff), die Blindleistung 15,6VA! Hier wird klar, warum sowohl die Primärspule als auch C2 sehr verlustarm sein müssen. Die Resonanzfrequenz beträgt 105 kHz. Damit wurden folgende Messwerte erreicht.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align:center&amp;quot;&lt;br /&gt;
|- &lt;br /&gt;
!Belastung	|| Eingangsstrom&amp;lt;br&amp;gt;[mA] || Ausgangsstrom&amp;lt;br&amp;gt;[mA]	|| Ausgangsspannung&amp;lt;br&amp;gt;[Veff] || Ausgangsleistung&amp;lt;br&amp;gt;[W] || Wirkungsgrad&amp;lt;br&amp;gt;[%]&lt;br /&gt;
|-&lt;br /&gt;
| Leerlauf               || 36  || 	0  || 7,8 || 0 ||  0&lt;br /&gt;
|-&lt;br /&gt;
| 22 &amp;amp;Omega;                  || 220	|| 320	|| 7	|| 2,2 || 84&lt;br /&gt;
|-&lt;br /&gt;
| Gleichrichter + 22 &amp;amp;Omega; || 190	|| 270	|| 6	|| 1,6 || 71&lt;br /&gt;
|-&lt;br /&gt;
| 10 &amp;amp;Omega;                || 250 || 490  || 4,9  || 2,4 || 80&lt;br /&gt;
|-&lt;br /&gt;
| Kurzschluß             || 60  || 650  || 0    || 0 || 0&lt;br /&gt;
|}&lt;br /&gt;
Nach Gleichrichtung mit schnellen Schottkydioden und Filterung bleiben bei 22Ω Last noch ca. 6V Gleichspannung übrig, genug um mit einem Low Drop Spannungsregler stabile 5V für einen Mikrocontroller bereitzustellen. Selbst bei der recht hohen Ausgangsleistung bleiben alle Bauteile kühl. Dabei werden nur recht kleine Transistoren verwendet. Das zeigt umso mehr die Leistungsfähigkeit der Schaltung. Bei optimaler Leistungsanpassung mit 10 &amp;amp;Omega; Last kann man 2,4W aus dem Trafo entnehmen. Diese Leistung wird vor allem durch den recht geringen Koppelfaktor von nur 0,45 begrenzt. Dieser kommt allerdings dem Kurzschlussfall zu gute, hier beträgt die Stromaufnahme der Schaltung nur 60mA, die Resonanzfrequenz steigt nur mässig auf 123kHz. Prinzipiell ist diese Schaltung bis in den Bereich von mehreren kW Leistung skalierbar.&lt;br /&gt;
&lt;br /&gt;
== Hinweise ==&lt;br /&gt;
&lt;br /&gt;
* Beim ersten Einschalten unbedingt die &amp;lt;span style=&amp;quot;color:#FF0000&amp;quot;&amp;gt;Strombegrenzung&amp;lt;/span&amp;gt; am Netzteil einstellen! Für die Beispielschaltung reichen 100mA.&lt;br /&gt;
*Schwingt die Schaltung nicht an, ist in den meisten Fällen die Steuerwicklung verpolt.&lt;br /&gt;
* Manchmal ist auch die Primärwicklung falsch angeschlossen. Beim [http://de.wikipedia.org/wiki/Bifilar bifilaren] Wickeln muss man das geschlossene Ende aufschneiden und das linke Ende der nun entstandenen Teilwicklung mit dem rechten Ende der zweiten Teilwicklung zur [http://www.mikrocontroller.net/topic/152785#1605883 Mittelanzapfung] verbinden.&lt;br /&gt;
*Der Kondensator C2 wird auch im Leerlauf von einem recht hohen Strom durchflossen. Deshalb muss hier auf jeden Fall ein verlustarmer Typ eingesetzt werden. Entweder ein [http://de.wikipedia.org/wiki/Folienkondensator Folienkondensator] mit Polypropylen als Dielektrikum (MKP oder FKP) oder ein [http://de.wikipedia.org/wiki/Keramikkondensator Keramikkondensator] aus C0G oder NP0. Andere Typen (Folie MKS, Keramik X7R, Z5U etc.) gehen &#039;&#039;&#039;nicht&#039;&#039;&#039;, denn hier werden zu hohe dielektrische Veluste im Kondensator erzeugt, welche diesen erhitzen und irgendwann zerstören. Die Verluste von X7R sind ca. 20mal höher als von NP0!&lt;br /&gt;
*Die Transistoren sollten nur mässig überdimensioniert sein, denn Transistoren mit sehr hohen Kollektorströmen sind meist auch recht langsam.&lt;br /&gt;
*Die Transistoren müssen mindestens eine Sperrspannung von &amp;lt;math&amp;gt;\pi \cdot U_{ein}&amp;lt;/math&amp;gt; aushalten, denn das ist die exakte Amplitude der Schwingung im Primärkreis. Praktisch sollte man aber mindestens 20% und mehr Reserve einplanen.&lt;br /&gt;
*Der [[Basiswiderstand]] muss experimentell ermittelt werden. Er muss so ausgelegt sein, dass die Transistoren beim Schalten nur &#039;&#039;&#039;schwach&#039;&#039;&#039; in die Sättigung gehen, um schneller wieder abschalten zu können (Stichwort Speicherzeit, engl. storage time).&lt;br /&gt;
*Die Drossel L1 sollte ca. den 2..3fachen Induktivitätswert der Primärwicklung haben. Je mehr, umso besser. Sie darf bei vollem Laststrom nicht in die Sättigung gehen, da dann ihre Induktivität stark absinkt.&lt;br /&gt;
* Man sollte &#039;&#039;&#039;keine&#039;&#039;&#039; [[Potentiometer | Drahtpotis]] zur Lastvariation nutzen. Die haben soviel Induktivität (im Test 12µH, =8&amp;amp;Omega; bei 105kHz), dass die dadurch den Maximalstrom ungewollt verringern. Selbst einfache Drahtwiderstände sind mit 3µH/2&amp;amp;Omega; induktivem Anteil schon ungünstig.&lt;br /&gt;
*Die Spitzenspannung der Steuerwicklung darf ca. 5V nicht überschreiten, weil diese als Sperrspannung für die Transistoren wirksam wird. Die meisten Bipolartransistoren verkraften max. 5V Sperrspannung zwischen Basis und Emitter.&lt;br /&gt;
*Im Kurzschlussfall der Sekundärwicklung reduziert sich die Induktivität der Primärwicklung auf die Streuinduktivität, was zu einer Frequenzerhöhung führt. Durch die höhere Frequenz stellt die Streuinduktivität einen höheren Blindwiderstand dar, welcher den Strom wirkungsvoll begrenzt. Aufgrund der höheren Frequenz fließt allerdings ein größerer Strom im Schwingkreis. Verwendet man also diesen Zustand, dann muss die Schaltung für die höheren Belastungen ausgelegt sein. Je kleiner der Koppelfaktor, umso besser die Kurzschlussfestigkeit. Die nachfolgende Tabelle gibt die Erhöhung des Eingangsstroms sowie der Resonanzfrequenz beim Kurzschluss in Abhängigkeit des Koppelfaktors an.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align:center&amp;quot; &lt;br /&gt;
|- &lt;br /&gt;
! rowspan=&amp;quot;2&amp;quot; | Koppelfaktor &lt;br /&gt;
! colspan=&amp;quot;2&amp;quot; | Faktor gegenüber Leerlauf&lt;br /&gt;
|-&lt;br /&gt;
! Resonanzfrequenz || Eingangsstrom&lt;br /&gt;
|-&lt;br /&gt;
|0,01 || 1,0 || 1,0&lt;br /&gt;
|-&lt;br /&gt;
|0,1 || 1,1 || 1,1&lt;br /&gt;
|-&lt;br /&gt;
|0,2 || 1,1 || 1,3&lt;br /&gt;
|-&lt;br /&gt;
|0,5 || 1,4 || 2,0&lt;br /&gt;
|-&lt;br /&gt;
|0,6 || 1,6 || 2,5&lt;br /&gt;
|-&lt;br /&gt;
|0,7 || 1,8 || 3,3&lt;br /&gt;
|-&lt;br /&gt;
|0,8 || 2,2 || 5&lt;br /&gt;
|-&lt;br /&gt;
|0,9 || 3,2 || 10&lt;br /&gt;
|-&lt;br /&gt;
|0,95 || 4,5 || 20&lt;br /&gt;
|-&lt;br /&gt;
|0,99 || 10 || 100&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Formeln zum Royer Converter ==&lt;br /&gt;
&lt;br /&gt;
*&amp;lt;math&amp;gt;f_r=\frac{1}{2 \pi \sqrt{L_{pri} C_2}}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*&amp;lt;math&amp;gt;U_p = \pi \cdot U_{ein}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*&amp;lt;math&amp;gt;I_p = U_{ein} \cdot \pi \sqrt{\frac{C}{L}}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*&amp;lt;math&amp;gt;k = \frac {U_{aus}}{\pi \cdot U_{ein}} \cdot \frac {N_{pri}}{N_{sek}}&amp;lt;/math&amp;gt; (im Leerlauf gemessen)&lt;br /&gt;
&lt;br /&gt;
*&amp;lt;math&amp;gt;k = \sqrt{1-\frac{L_{Pri-K}}{L_{Pri-0}}}&amp;lt;/math&amp;gt; (mit L-Meter gemessen)&lt;br /&gt;
&lt;br /&gt;
*&amp;lt;math&amp;gt;R1 \sim \frac{\beta _{I_N} \cdot U_{ein}}{I_N}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*&amp;lt;math&amp;gt;N_{steu} \le \frac{5}{\pi \cdot U_{ein}}\cdot N_{Pri}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*&amp;lt;math&amp;gt;P_{max}=\frac{(\pi \cdot U_{ein} \cdot k)^2 \sqrt{L_{pri} \cdot C_2 (1-k^2)}}{4 \cdot L_{pri} \cdot (1-k^2)}&amp;lt;/math&amp;gt; (Näherungsformel)&lt;br /&gt;
&lt;br /&gt;
*&amp;lt;math&amp;gt;R_{opt}=(1-k^2)(\frac{N_{sek}}{N_{pri}})^2 L_{pri} \cdot 2\pi \cdot f&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
|- &lt;br /&gt;
! Formelzeichen	|| Bedeutung&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;math&amp;gt;\!\, f_r&amp;lt;/math&amp;gt; || Resonanzfrequenz im Leerlauf &lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;math&amp;gt;\!\, L_{Pri}&amp;lt;/math&amp;gt; || Induktivität der Primärwicklung &lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;math&amp;gt;\!\, C2&amp;lt;/math&amp;gt; || Kapazität des Primärschwingkreises&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;math&amp;gt;\!\, U_p&amp;lt;/math&amp;gt; || Spitzenspannung im Resonanzkreis &lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;math&amp;gt;\!\, I_p&amp;lt;/math&amp;gt; || Spitzenstrom im Resonanzkreis &lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;math&amp;gt;\!\, k&amp;lt;/math&amp;gt; || Koppelfaktor zwischen Primär- und Sekundärwicklung &lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;math&amp;gt;\!\, L_{Pri-0}&amp;lt;/math&amp;gt; || Primärinduktivität bei Leerlauf der Sekundärwicklung&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;math&amp;gt;\!\, L_{Pri-K}&amp;lt;/math&amp;gt; || Primärinduktivität bei Kurzschluss der Sekundärwicklung&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;math&amp;gt;\!\, U_{ein}&amp;lt;/math&amp;gt; || Eingangsspannung des Royer Converters (Gleichspannung)&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;math&amp;gt;\!\, U_{aus}&amp;lt;/math&amp;gt; || Ausgangsspannung des Royer Converters (Wechselspannung, Spitzenwert)&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;math&amp;gt;\!\, R1&amp;lt;/math&amp;gt; || Basiswiderstand&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;math&amp;gt;\!\, I_N&amp;lt;/math&amp;gt; || Nennstrom des Royer Converters am Eingang&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;math&amp;gt;\!\, \beta _{I_N}&amp;lt;/math&amp;gt; || Stromverstärkung der Transistoren bei Nennstrom&amp;lt;br&amp;gt;Achung! Die Stromverstärkung sinkt bei höheren Strömen deutlich, ins Datenblatt schauen.&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;math&amp;gt;\!\, N_{steu}&amp;lt;/math&amp;gt; || Windungszahl der Steuerwicklung &lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;math&amp;gt;\!\, P_{max}&amp;lt;/math&amp;gt; || Maximale Ausgangsleistung bei Leistungsanpassung&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;math&amp;gt;\!\, R_{opt}&amp;lt;/math&amp;gt; || Optimaler Lastwiderstand für Leistungsanpassung&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Das Ganze ist auch als [[media:Royer_Converter.xls | Exceltabelle]] zur leichten Anwendung verfügbar.&lt;br /&gt;
&lt;br /&gt;
== Leistungsoptimierung ==&lt;br /&gt;
&lt;br /&gt;
Wie kann ich den Wirkungsgrad sowie die Ausgangsleistung für meine Anwendung optimieren?&lt;br /&gt;
&lt;br /&gt;
* Die Eingangsspannung soll möglichst hoch sein.&lt;br /&gt;
* Der Koppelfaktor soll möglichst hoch sein. Das erreicht man durch&lt;br /&gt;
** Flache Spulen mit grossem Durchmesser und kleinem Abstand (parallele Spulen)&lt;br /&gt;
** Konzentrische (ineinandergestapelte) Spulen mit geringem Luftspalt zwischen den Spulen&lt;br /&gt;
** Einsatz von Ferritkernen (Schalenkerne, Stäbe etc.) zur Bündelung des Magnetfeldes&lt;br /&gt;
* Wenn man die Sekundärwicklung mit einem parallel oder in Reihe geschalteten Kondensator auf Resonanz mit der Primärwicklung abgleicht, kann die Ausgangsleistung deutlich erhöht werden, weil dadurch die Streuinduktivität der Sekundärseite kompensiert wird. Man muss dabei beachten, dass bei Parallelschaltung die Ausgangsspannung ohne Last stark ansteigt (Prinzip der [http://de.wikipedia.org/wiki/Teslaspule Teslaspule]). Unter Last verhält sich der Ausgang dann nahezu wie eine [[Konstantstromquelle]]. Bei Reihenschaltung ist das nicht der Fall, hier bleibt die Leerlaufspannung niedrig. Auch für diesen zusätzlichen Kondensator gilt das Gleiche wie C2, er muss sehr verlustarm sein. Es gilt&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;C_{sek} = \frac{1}{(2 \pi f)^2 L_{sek}\sqrt{1-k^2}}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Das Verhältnis &amp;lt;math&amp;gt;C/L&amp;lt;/math&amp;gt; soll möglichst hoch sein. Verdoppelt man die Kapazität und reduziert gleichzeitig die Primärinduktivität um den Faktor zwei (Windungszahl * 0,7), verdoppelt sich die maximal verfügbare Leistung. Der Preis dafür sind doppelt so hohe Leerlaufströme im Schwingkreis und damit ca. 2,8mal so hohe Leerlaufverluste (bei gleichem Drahtquerschnitt, P = I^2 * R).&lt;br /&gt;
* Die Resonanzfrequenz soll möglichst niedrig sein, daduch veringern sich die induktiven Widerstände der Streuinduktivitäten, welche den Strom und damit die Leistung begrenzen.&lt;br /&gt;
* Der Drahtquerschnitt der Primärwicklung muss möglichst gross sein, denn hier fließen sehr hohe Ströme. Allerdings bewirkt die meist recht hohe Resonanzfrequenz auf grund des [http://de.wikipedia.org/wiki/Skineffekt Skineffekts] eine Verringerung des effektiven Drahtquerschnitts. Ausserdem lassen sich dicke, massive Kupferdrähte eher schlecht wickeln. Darum verwendet man oft [http://de.wikipedia.org/wiki/Hochfrequenzlitze HF-Litze], welche aus sehr vielen, sehr dünnen, gegeneinander isolierten Drähten besteht. Diese lässt sich deutlich besser wickeln und wirkt dem Skineffekt entgegen.&lt;br /&gt;
&lt;br /&gt;
== MOSFET-Variante ==&lt;br /&gt;
[[Datei:WurthWE-WPCC.png| thumb | 300px | right | Auswahl bestimmter Würth WE-WPCC Ladespulen. Links unten die kleinste Ladespule mit 10µH, mittig oben 6.3µH, rechts unten 6.3µH mit einem Neodym-Magnet in der Mitte.]]&lt;br /&gt;
Man kann die Primärseite des Trafos mit Mittelanzapfung und Steuerwicklung auch durch eine einfache Spule ersetzen, wenn man MOSFETs statt Bipolartransistoren nutzt und die Betriebsspannung über zwei Spulen an den Enden der Primärwicklung einspeist. Das vereinfacht den Aufbau der Primärspule deutlich, was u.a. bei bei höheren Leistungen günstig ist. Der Preis dafür ist, daß man zwei Spulen mit etwa der doppelten Induktivität benötigt. Ebenfalls werden dazu geeignete Flachspulen von Herstellern wie Würth, TDK, .. (siehe Abbildung rechts) produziert (Stichwort: Ladespule bzw. charging coil).&lt;br /&gt;
&lt;br /&gt;
Die unten abgebildete Mosfet-Schaltung baut auf diesem [http://www.mikrocontroller.net/topic/278961#2948009 Beitrag] auf, in dem auch weitere Erklärungen der Funktionsweise sowie zahlreiche Dimensionierungs-Beispiele enthalten sind.&lt;br /&gt;
[[Datei:Royer MOSFET.png| thumb | 600px | left | MOSFET-Schaltung des Royer Converters]]&lt;br /&gt;
&lt;br /&gt;
{{Clear}}&lt;br /&gt;
&lt;br /&gt;
[[Datei:Royer_MOSFET_Aufbau.jpg| thumb | 300px | right | Der beschriebene Aufbau mit Logic-Level MOSFETs. Von links nach rechts: Die Royer-Converter Schaltung an welche die kleine Würth Ladespule mit 10µH angeschlossen ist. Darüber die selbst gewickelte Empfangsspule sowie der Ferritkern welcher im Betrieb hinter die Empfangsspule befestigt wird. Die Empfangsspule ist mit dem Gleichrichter verbunden welcher den DC-DC Buck-Converter speist. Der Lastwiderstand ist rechts außen sichtbar. Im Betrieb sind beide Spulen parallel übereinander ausgerichtet im Abstand von 3mm, getrennt durch eine Acrylplatte. ]]&lt;br /&gt;
&lt;br /&gt;
Beispieleinsatz:&lt;br /&gt;
&lt;br /&gt;
Die in obiger Schaltung verwendeten Bauteile sind für eine drahtlose Energieübertragung mit einer Eingangsspannung von 5V, einer Ausgangsspannung von 5V und Ausgangsleistung von 2.2W bei einem Abstand von 3mm ausgelegt. Als Primärspule wird eine Würth 10µH Ladespule verwendet, als Sekundärspule eine selbstgewickelte Flachspule mit 14mm Durchmesser und 14 Wicklungen auf deren Rückseite ein Pot Core Ferritkern (3H1) zur Leistungsverbesserung plaziert ist. Die hier verwendeten Mosfets sind Logic-Level-Mosfets und nicht für hohe Eingangsspannungen ausgelegt (im oben genannten Beitrag finden sich Beispiele für Eingangsspannungen &amp;gt;10V). Um die ungeregelte Ausgangsspannung auf 5V zu stabilisieren wird der Texas Instruments TPS54331 Buck-Converter verwendet (nicht in der Schaltung aufgeführt), der eine Ein-/Ausschalthysterese besitzt um nur bei geeigneter Orientierung der Spulen einzuschalten und dadurch stabile 5V erzeugen kann. Die komplette Schaltung ist mit SMD Bauteilen und 0.1µF NP0 50V Kondensatoren in der Bauform 1206 aufgebaut worden (siehe rechte Abbildung). Bei den Spulen L1 und L2 muss ein Mittelmaß zwischen Baugröße, Induktivität und Widerstand gefunden werden. Bei gleichbleibender Baugröße stellte 100µH die optimale Wahl im Vergleich zu 47µH (zu geringe Induktivität) und 220µH (zu hoher Widerstand) dar. Die so aufgebaute Schaltung arbeitet bei 115kHz und es wird momentan ein Wirkungsgrad von ca. 58% erreicht mit einer Last von 450mA am 5V Ausgang.&lt;br /&gt;
&lt;br /&gt;
Wie im Artikel beschrieben, kann die Effizienz gesteigert werden, indem die Fläche der Sekundärspule vergrößert wird, Lastanpassung vorgenommen wird, optimiertere Ferrit-Kerne verwendet werden etc. Bei identischer Primär- und Sekundärspule (Würth 10µH), im Abstand von 5mm, und einem Lastwiderstand von 68 &amp;amp;Omega; direkt am Delon-Brückengleichrichter angeschlossen (ohne DC-DC Converter) wurde in einem kurzen Versuch eine Effizienz von ca. 70% gemessen, bei einer Ausgangsleistung von ca. 4W (19V@220mA) mit sonst unveränderten Parametern (5V@1.2A Eingang, selbe Schaltung). Da an der Schaltung nichts verändert wurde und auch der Lastwiderstand zufällig gewählt wurde ist es offensichtlich, dass der maximale Wirkungsgrad noch nicht erreicht ist.&lt;br /&gt;
&lt;br /&gt;
== Siehe auch ==&lt;br /&gt;
&lt;br /&gt;
* [[Spule]]&lt;br /&gt;
* [[Transformatoren und Spulen]]&lt;br /&gt;
&lt;br /&gt;
== Diskussionen im Forum ==&lt;br /&gt;
&lt;br /&gt;
*[http://www.mikrocontroller.net/topic/118124#new Verwendung in einem Induktionsofen, MOSFETs als Schalter]&lt;br /&gt;
*[http://www.mikrocontroller.net/topic/151538#new Verwendung in einem Induktionsofen, neuer Thread]&lt;br /&gt;
* [http://www.mikrocontroller.net/topic/263161#2734278 Dokumente über Induktionskochfelder]&lt;br /&gt;
*[http://www.mikrocontroller.net/attachment/61266/Induktive_Energie_bertragung.pdf Dokument über drahtlose Energieübertragung]&lt;br /&gt;
*[http://www.mikrocontroller.net/topic/80808#675198 Komplettes Projekt einer Propelleruhr und lange Diskussion]&lt;br /&gt;
*[http://www.mikrocontroller.net/topic/61706#489279 Noch eine Propelleruhr]&lt;br /&gt;
*[http://www.mikrocontroller.net/topic/155778#1529891 Royer Converter mit Schalenkernen und 20W Ausgangsleistung]&lt;br /&gt;
*[http://www.mikrocontroller.net/topic/152785#1540938 Royer Converter mit Luftspulen und 14W Ausgangsleistung]&lt;br /&gt;
* [http://www.mikrocontroller.net/topic/152785#1712213 Kleiner Royer Converter für einen Propellerglobus]&lt;br /&gt;
*[http://www.mikrocontroller.net/topic/214735#new Herleitung der Formeln im Artikel Royer Converter]&lt;br /&gt;
* [http://www.mikrocontroller.net/topic/219148?goto=2195298#2195298 berührungslos Bleigel Akku laden, 12V/1,6W]&lt;br /&gt;
* [http://www.mikrocontroller.net/topic/221845?goto=2238458#2238458 Kleiner Wandler für 5V/250mW]&lt;br /&gt;
* [http://www.mikrocontroller.net/topic/152785#2447793 Automatische Lasterkennung und Steuerung für den Royer Converter]&lt;br /&gt;
* [http://www.mikrocontroller.net/topic/278961#2948009 RFID Spulen für Leistungsübertragung?]&lt;br /&gt;
* [http://www.mikrocontroller.net/topic/goto_post/2937446 Flachspule 1 mH -- wie selbst herstellen?]&lt;br /&gt;
* [http://www.mikrocontroller.net/topic/297295 Leistungsverbesserung Royer Converter]&lt;br /&gt;
* [http://www.mikrocontroller.net/topic/263068#new WiTricity heute]&lt;br /&gt;
&lt;br /&gt;
== Weblinks ==&lt;br /&gt;
&lt;br /&gt;
*[http://www.serious-technology.de/kleiner-wandler.htm Kleiner Wandler]: Sehr ausführliche Beschreibung des Aufbaus und Berechnung der Komponenten&lt;br /&gt;
*[http://www.serious-technology.de/ernsthafter_wandler.htm Ernsthafter Wandler]: Das Ganze nochmal in Groß&lt;br /&gt;
* [http://www.google.de/url?url=http://www.rrc-wireless-power.com/fileadmin/website_wireless_power/Dokumente/Whitepapers/RRC_WirelessPower_Kontaktlose_Energie___Datenuebertragung_D_E_Entwicklerforum_2008.pdf&amp;amp;rct=j&amp;amp;sa=U&amp;amp;ei=Fx7CUJXXJqSl4ASniIHoBg&amp;amp;ved=0CCUQFjACOAo&amp;amp;q=kontaktlose+energie%C3%BCbertragung&amp;amp;usg=AFQjCNE6dSlRmsaMDw8EnvLmJ3ovOZe2EA Dokument] zur kontaktlosen Energieübertragung&lt;br /&gt;
*[[media: an14.pdf | AN14]]: Application Note von Zetex, englisch&lt;br /&gt;
*[[media: dn164f.pdf | DN164]]: Design Note von Linear Technology, englisch&lt;br /&gt;
*[http://www.linear.com/docs/26421 Linear Technology Application Note 118:] High Voltage, Low Noise, DC/DC Converters (mit primärgeregeltem Royer-Converter)&lt;br /&gt;
*[http://4hv.org/e107_plugins/forum/forum_viewtopic.php?74096.0 Schönes Projekt zur kontaktlosen Energieübertragung] &amp;lt;---- Achtung: Seite hat einen Virus!!!&lt;br /&gt;
*[http://www.youtube.com/watch?v=2ODW-ntPHSU Video zum Projekt]&lt;br /&gt;
*[http://www.joretronik.de/Oszillatoren/Oszillatoren.html Royer-Hochleistungsoszillatoren mit MOSFETs und IGBTs]&lt;br /&gt;
*[http://www.joretronik.de/Web_NT_Buch/Kap11_2/Kapitel11_2.html Diverse Schaltungsbeispiele]&lt;br /&gt;
*[http://www.joretronik.de/Web_NT_Buch/Kap13_2/Kapitel13_2.html#13.2.2 Royer Oszillator für CCFL-Lampen]&lt;br /&gt;
* [http://mitglied.multimania.de/lvane/js_code/loop/loop.html Induktivität einer Kreisringspule]&lt;br /&gt;
* [http://home.planet.nl/~sloma000/Baxandall%20parallel-resonant%20Class-D%20oscillator1.htm The Baxandall parallel-resonant Class-D oscillator]&lt;br /&gt;
* [http://www.ti.com/ww/de/analog/wireless_power_solutions/index.shtml?DCMP=hpa_pmp_bq51013_de&amp;amp;HQS=Other+BA+bq51013-bpde bq51013], IC zur kontaklosen Energieübertragung von [http://www.ti.com TI], Evaluationboard verfügbar&lt;br /&gt;
* [http://www.wirelesspowerconsortium.com/ Wireless Power Consortium], definiert einen Standard zur kontaktlosen Energieübertragung (Qi)&lt;br /&gt;
* Kontaktlose Energieübertragungslösungen von Firmen&lt;br /&gt;
** [http://www.schleifring.de/de/Produkte/Technologien/Kontaktlose._.Uebertragung/energie.uebertragung.php Schleifring], 100W - 200kW&lt;br /&gt;
** [http://www.j-lasslop.de/produkte/kontaktlose-energie-und-datenuebertragung.html J-Lasselop], Mikrowatt bis 500kW&lt;br /&gt;
** [http://www.enasys.de/de/produkte/kontaktlose-energieuebertragung.html EnASYS], 60W-500kW&lt;br /&gt;
** [http://www.kontenda.de KONTENDA], 1W-2kW&lt;br /&gt;
** [http://www.mesa-systemtechnik.de MESA Systemtechnik], Power- und Sensortelemetrie&lt;br /&gt;
** [http://www.wirelesspower.cn Wirelesspower], Anbieter von verschiedenen ICs und Modulen von 1W-3kW&lt;br /&gt;
** [http://www.rrc-ps.de/de/produkte/kabellose-energieuebertragung/plattformen.html RRC Power Solutions] - Plattform Kabellose Energie- / Datenübertragung, 5W, Qi kompatibel&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Spannungsversorgung und Energiequellen]]&lt;/div&gt;</summary>
		<author><name>Frank m35</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=Royer_Converter&amp;diff=80938</id>
		<title>Royer Converter</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=Royer_Converter&amp;diff=80938"/>
		<updated>2014-01-17T20:46:27Z</updated>

		<summary type="html">&lt;p&gt;Frank m35: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Ein Royer-Converter ist ein Sinus-Leistungsoszillator. Er wird im Wesentlichen als Schaltnetzteil verwendet.&lt;br /&gt;
&lt;br /&gt;
== Geschichtliches ==&lt;br /&gt;
&lt;br /&gt;
Der Name geht auf George Howard Royer zurück, welcher diese Schaltung im Jahr 1954 entwickelte (siehe US-Patent 2783384). Die originale Schaltung arbeitet mit einem [http://de.wikipedia.org/wiki/Trafo Trafo] mit [http://de.wikipedia.org/wiki/Ferrite Ferritkern], welcher zum Umschalten in die Sättigung getrieben wird. Das Ausgangssignal ist rechteckförmig. Die hier vorgestellte Version, die auf Peter James Baxandall zurückgeht, arbeitet jedoch mit einem Trafo, welcher nicht in die Sättigung geht und mittels LC-[http://de.wikipedia.org/wiki/Schwingkreis Schwingkreis] ein Sinussignal erzeugt. Der Trafo kann sogar als Luftspule ohne Kern ausgeführt werden.&lt;br /&gt;
&lt;br /&gt;
== Aufbau und Eigenschaften ==&lt;br /&gt;
&lt;br /&gt;
Der Aufbau ist sehr einfach und robust. Zwei Transistoren ([[FET|MOSFETs]] oder [[Transistor|Bipolar]]) werden wechselseitig geschaltet (Gegentaktbetrieb, engl. push pull), und damit abwechselnd die eine und die andere Spulenhälfte der Primärwicklung von Strom durchflossen. Die Schaltung ist selbstschwingend, d.h. das Steuersignal wird direkt aus dem Trafo zurückgewonnen. Damit schwingt sie immer optimal auf Resonanz, ohne Abgleich von Bauteiltoleranzen und auch bei Alterung oder Temperaturänderung. Allerdings ändert sich damit die Frequenz des [[Schwingkreis]]es und damit geringfügig die Effizienz. Die Frequenz wird durch die Induktivität der Primärwicklung und den Kondensator C2 bestimmt (Parallelschwingkreis). Die Drosselspule L1 sorgt dafür, dass die Betriebsspannung wechselspannungsmäßig von der Mittelanzapfung von TR1 entkoppelt wird, sie wirkt als [[Konstantstromquelle]].&lt;br /&gt;
&lt;br /&gt;
[[bild:royer_bipolar.png | thumb | 670px | left | Schaltplan des Royer Converters]]&lt;br /&gt;
&lt;br /&gt;
{{Clear}}&lt;br /&gt;
&lt;br /&gt;
*Einfacher, robuster Aufbau&lt;br /&gt;
*Sinusförmige Strom- und Spannungsverläufe&lt;br /&gt;
*Transistoren schalten im Nulldurchgang der Spannung, dadurch geringe Schaltverluste und Störstrahlung&lt;br /&gt;
*Bei ausreichend großer Streuinduktivität zwischen Primär- und Sekundärwicklung ist die Schaltung kurzschlussfest.&lt;br /&gt;
*Vollkommen unempfindlich gegenüber Streuinduktivitäten des Trafos (im Gegensatz zu den meisten anderen Schaltnetzteiltopologien)&lt;br /&gt;
&lt;br /&gt;
Besonders der letzte Punkt ist sehr interessant. Auf Grund des Aufbaus und der Funktion wird sämtliche Energie im Magnetfeld, welche nicht über die Sekundärspule ausgekoppelt wird, wieder in den Schwingkreis zurückgeführt. Damit geht nur sehr wenig Energie verloren, egal wie gut die Kopplung zwischen Sekundär- und Primärspule ist.&lt;br /&gt;
&lt;br /&gt;
Der Trafo TR1 kann sehr verschieden aufgebaut sein. In einem Inverter für [http://de.wikipedia.org/wiki/Leuchtr%C3%B6hre CCFLs] ist es ein normaler Trafo mit Ferritkern. In anderen Anwendungen kann es aber auch ein kernloser Trafo sein, bei dem es zwischen Primärspule und Sekundärspule einen großen Abstand gibt ([http://de.wikipedia.org/wiki/Induktive_%C3%9Cbertragung Kontaktlose Energieübertragung]).&lt;br /&gt;
&lt;br /&gt;
== Ein praktisches Beispiel ==&lt;br /&gt;
&lt;br /&gt;
Auf Grund der Unempfindlichkeit der Schaltung gegenüber Streuinduktivitäten ist diese Schaltung ideal für einen Trafo ohne Kern und mit grossem Abstand zwischen Primär- und Sekundärspule. Damit kann kontaktlos recht viel Energie übertragen werden. Anwendungen sind z.&amp;amp;nbsp;B. die Ladestation elektrischer Zahnbürsten oder ein Rotationstrafo für eine [http://www.google.de/cse?q=propelleruhr Propelleruhr]. Für Letzteres soll dieses Beispiel hier dargestellt werden.&lt;br /&gt;
&lt;br /&gt;
Die Schaltung benutzt einfach beschaffbare Bauteile. Der Trafo wird selber gewickelt, ist aber auch vollkommen unkritisch. Wie im Bild zu sehen, wurde absichtlich ein recht grosser Luftspalt zwischen Primär- und Sekundärspule gelassen, um die Leistungsfähigkeit der Schaltung zu demonstrieren. Die Primärwicklung ist [http://de.wikipedia.org/wiki/Bifilar bifilar] gewickelt, d.h. man nimmt den Draht doppelt und wickelt damit gleichzeitig beide Spulenhälften, das geschlossene Ende trennt man danach auf und verschaltet phasenrichtig. Es entstehen zwei verschachtelte Wicklungen (engl. interleaved windings), dadurch verbessert sich die Kopplung. Der Trafo hat folgende Parameter.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align:center&amp;quot;&lt;br /&gt;
|+ &#039;&#039;&#039;Wickeldaten&#039;&#039;&#039; &lt;br /&gt;
|- &lt;br /&gt;
! Wicklung       || Windungszahl || Drahtdurchmesser [mm] || Durchmesser [mm] || Induktivität [µH]&lt;br /&gt;
|-&lt;br /&gt;
| Primär         || 2x10           || 0,55   || 80 || 70&lt;br /&gt;
|-&lt;br /&gt;
| Steuer         || 1              || 0,2    || 80 || ---&lt;br /&gt;
|-&lt;br /&gt;
| Sekundär       || 13             || 0,55   || 65 || 23&lt;br /&gt;
|}&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ &#039;&#039;&#039;Stückliste&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
! Bauteil || Wert || Reichelt Bestellnummer&lt;br /&gt;
|-&lt;br /&gt;
| T1, T2  || BC337 || [http://www.reichelt.de/?;ARTICLE=4986; 337-25] &lt;br /&gt;
|-&lt;br /&gt;
| L1 || 330µH; 0,5A|| [http://www.reichelt.de/?ARTICLE=1123; 09P 330µ]&lt;br /&gt;
|-&lt;br /&gt;
| C1 || 100µF, 25V|| [http://www.reichelt.de/?ARTICLE=15102; RAD 100/25]&lt;br /&gt;
|-&lt;br /&gt;
| C2 || 33nF, 100V|| [http://www.reichelt.de/?ARTICLE=31975; MKP-10-630 33N]&lt;br /&gt;
|-&lt;br /&gt;
| C3 || 6,8µF, 50V|| [http://www.reichelt.de/?ARTICLE=31926; MKS-2 6,8µ]&lt;br /&gt;
|-&lt;br /&gt;
| R1 || 2k2, 1/4W|| [http://www.reichelt.de/?ARTICLE=11586; METALL 2,21K]&lt;br /&gt;
|-&lt;br /&gt;
| R2 || 22R, 5W|| [http://www.reichelt.de/?ARTICLE=2611; 5W AXIAL 22]&lt;br /&gt;
|-&lt;br /&gt;
| D1-4 || 1N5818|| [http://www.reichelt.de/?ARTICLE=41849; 1N 5818]&lt;br /&gt;
|-&lt;br /&gt;
| TR1 || CuL, 0,5mm || [http://www.reichelt.de/?;ARTICLE=57182 CUL 100/0,50] &lt;br /&gt;
|}&lt;br /&gt;
[[bild:royer_prop_aufbau.jpg | thumb | 640px | left | Praktischer Aufbau]]&lt;br /&gt;
{{Clear}}&lt;br /&gt;
Mit 12V Eingangsspannung beträgt die Spannungsamplitude im Primärkreis ziemlich genau 38V. Der Leerlaufstrom der Schaltung beträgt 36mA. ABER! Der Leerlaufstrom im Schwingkreis beträgt 580mA(eff), die Blindleistung 15,6VA! Hier wird klar, warum sowohl die Primärspule als auch C2 sehr verlustarm sein müssen. Die Resonanzfrequenz beträgt 105 kHz. Damit wurden folgende Messwerte erreicht.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align:center&amp;quot;&lt;br /&gt;
|- &lt;br /&gt;
!Belastung	|| Eingangsstrom&amp;lt;br&amp;gt;[mA] || Ausgangsstrom&amp;lt;br&amp;gt;[mA]	|| Ausgangsspannung&amp;lt;br&amp;gt;[Veff] || Ausgangsleistung&amp;lt;br&amp;gt;[W] || Wirkungsgrad&amp;lt;br&amp;gt;[%]&lt;br /&gt;
|-&lt;br /&gt;
| Leerlauf               || 36  || 	0  || 7,8 || 0 ||  0&lt;br /&gt;
|-&lt;br /&gt;
| 22 &amp;amp;Omega;                  || 220	|| 320	|| 7	|| 2,2 || 84&lt;br /&gt;
|-&lt;br /&gt;
| Gleichrichter + 22 &amp;amp;Omega; || 190	|| 270	|| 6	|| 1,6 || 71&lt;br /&gt;
|-&lt;br /&gt;
| 10 &amp;amp;Omega;                || 250 || 490  || 4,9  || 2,4 || 80&lt;br /&gt;
|-&lt;br /&gt;
| Kurzschluß             || 60  || 650  || 0    || 0 || 0&lt;br /&gt;
|}&lt;br /&gt;
Nach Gleichrichtung mit schnellen Schottkydioden und Filterung bleiben bei 22Ω Last noch ca. 6V Gleichspannung übrig, genug um mit einem Low Drop Spannungsregler stabile 5V für einen Mikrocontroller bereitzustellen. Selbst bei der recht hohen Ausgangsleistung bleiben alle Bauteile kühl. Dabei werden nur recht kleine Transistoren verwendet. Das zeigt umso mehr die Leistungsfähigkeit der Schaltung. Bei optimaler Leistungsanpassung mit 10 &amp;amp;Omega; Last kann man 2,4W aus dem Trafo entnehmen. Diese Leistung wird vor allem durch den recht geringen Koppelfaktor von nur 0,45 begrenzt. Dieser kommt allerdings dem Kurzschlussfall zu gute, hier beträgt die Stromaufnahme der Schaltung nur 60mA, die Resonanzfrequenz steigt nur mässig auf 123kHz. Prinzipiell ist diese Schaltung bis in den Bereich von mehreren kW Leistung skalierbar.&lt;br /&gt;
&lt;br /&gt;
== Hinweise ==&lt;br /&gt;
&lt;br /&gt;
* Beim ersten Einschalten unbedingt die &amp;lt;span style=&amp;quot;color:#FF0000&amp;quot;&amp;gt;Strombegrenzung&amp;lt;/span&amp;gt; am Netzteil einstellen! Für die Beispielschaltung reichen 100mA.&lt;br /&gt;
*Schwingt die Schaltung nicht an, ist in den meisten Fällen die Steuerwicklung verpolt.&lt;br /&gt;
* Manchmal ist auch die Primärwicklung falsch angeschlossen. Beim [http://de.wikipedia.org/wiki/Bifilar bifilaren] Wickeln muss man das geschlossene Ende aufschneiden und das linke Ende der nun entstandenen Teilwicklung mit dem rechten Ende der zweiten Teilwicklung zur [http://www.mikrocontroller.net/topic/152785#1605883 Mittelanzapfung] verbinden.&lt;br /&gt;
*Der Kondensator C2 wird auch im Leerlauf von einem recht hohen Strom durchflossen. Deshalb muss hier auf jeden Fall ein verlustarmer Typ eingesetzt werden. Entweder ein [http://de.wikipedia.org/wiki/Folienkondensator Folienkondensator] mit Polypropylen als Dielektrikum (MKP oder FKP) oder ein [http://de.wikipedia.org/wiki/Keramikkondensator Keramikkondensator] aus C0G oder NP0. Andere Typen (Folie MKS, Keramik X7R, Z5U etc.) gehen &#039;&#039;&#039;nicht&#039;&#039;&#039;, denn hier werden zu hohe dielektrische Veluste im Kondensator erzeugt, welche diesen erhitzen und irgendwann zerstören. Die Verluste von X7R sind ca. 20mal höher als von NP0!&lt;br /&gt;
*Die Transistoren sollten nur mässig überdimensioniert sein, denn Transistoren mit sehr hohen Kollektorströmen sind meist auch recht langsam.&lt;br /&gt;
*Die Transistoren müssen mindestens eine Sperrspannung von &amp;lt;math&amp;gt;\pi \cdot U_{ein}&amp;lt;/math&amp;gt; aushalten, denn das ist die exakte Amplitude der Schwingung im Primärkreis. Praktisch sollte man aber mindestens 20% und mehr Reserve einplanen.&lt;br /&gt;
*Der [[Basiswiderstand]] muss experimentell ermittelt werden. Er muss so ausgelegt sein, dass die Transistoren beim Schalten nur &#039;&#039;&#039;schwach&#039;&#039;&#039; in die Sättigung gehen, um schneller wieder abschalten zu können (Stichwort Speicherzeit, engl. storage time).&lt;br /&gt;
*Die Drossel L1 sollte ca. den 2..3fachen Induktivitätswert der Primärwicklung haben. Je mehr, umso besser. Sie darf bei vollem Laststrom nicht in die Sättigung gehen, da dann ihre Induktivität stark absinkt.&lt;br /&gt;
* Man sollte &#039;&#039;&#039;keine&#039;&#039;&#039; [[Potentiometer | Drahtpotis]] zur Lastvariation nutzen. Die haben soviel Induktivität (im Test 12µH, =8&amp;amp;Omega; bei 105kHz), dass die dadurch den Maximalstrom ungewollt verringern. Selbst einfache Drahtwiderstände sind mit 3µH/2&amp;amp;Omega; induktivem Anteil schon ungünstig.&lt;br /&gt;
*Die Spitzenspannung der Steuerwicklung darf ca. 5V nicht überschreiten, weil diese als Sperrspannung für die Transistoren wirksam wird. Die meisten Bipolartransistoren verkraften max. 5V Sperrspannung zwischen Basis und Emitter.&lt;br /&gt;
*Im Kurzschlussfall der Sekundärwicklung reduziert sich die Induktivität der Primärwicklung auf die Streuinduktivität, was zu einer Frequenzerhöhung führt. Durch die höhere Frequenz stellt die Streuinduktivität einen höheren Blindwiderstand dar, welcher den Strom wirkungsvoll begrenzt. Aufgrund der höheren Frequenz fließt allerdings ein größerer Strom im Schwingkreis. Verwendet man also diesen Zustand, dann muss die Schaltung für die höheren Belastungen ausgelegt sein. Je kleiner der Koppelfaktor, umso besser die Kurzschlussfestigkeit. Die nachfolgende Tabelle gibt die Erhöhung des Eingangsstroms sowie der Resonanzfrequenz beim Kurzschluss in Abhängigkeit des Koppelfaktors an.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align:center&amp;quot; &lt;br /&gt;
|- &lt;br /&gt;
! rowspan=&amp;quot;2&amp;quot; | Koppelfaktor &lt;br /&gt;
! colspan=&amp;quot;2&amp;quot; | Faktor gegenüber Leerlauf&lt;br /&gt;
|-&lt;br /&gt;
! Resonanzfrequenz || Eingangsstrom&lt;br /&gt;
|-&lt;br /&gt;
|0,01 || 1,0 || 1,0&lt;br /&gt;
|-&lt;br /&gt;
|0,1 || 1,1 || 1,1&lt;br /&gt;
|-&lt;br /&gt;
|0,2 || 1,1 || 1,3&lt;br /&gt;
|-&lt;br /&gt;
|0,5 || 1,4 || 2,0&lt;br /&gt;
|-&lt;br /&gt;
|0,6 || 1,6 || 2,5&lt;br /&gt;
|-&lt;br /&gt;
|0,7 || 1,8 || 3,3&lt;br /&gt;
|-&lt;br /&gt;
|0,8 || 2,2 || 5&lt;br /&gt;
|-&lt;br /&gt;
|0,9 || 3,2 || 10&lt;br /&gt;
|-&lt;br /&gt;
|0,95 || 4,5 || 20&lt;br /&gt;
|-&lt;br /&gt;
|0,99 || 10 || 100&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Formeln zum Royer Converter ==&lt;br /&gt;
&lt;br /&gt;
*&amp;lt;math&amp;gt;f_r=\frac{1}{2 \pi \sqrt{L_{pri} C_2}}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*&amp;lt;math&amp;gt;U_p = \pi \cdot U_{ein}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*&amp;lt;math&amp;gt;I_p = U_{ein} \cdot \pi \sqrt{\frac{C}{L}}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*&amp;lt;math&amp;gt;k = \frac {U_{aus}}{\pi \cdot U_{ein}} \cdot \frac {N_{pri}}{N_{sek}}&amp;lt;/math&amp;gt; (im Leerlauf gemessen)&lt;br /&gt;
&lt;br /&gt;
*&amp;lt;math&amp;gt;k = \sqrt{1-\frac{L_{Pri-K}}{L_{Pri-0}}}&amp;lt;/math&amp;gt; (mit L-Meter gemessen)&lt;br /&gt;
&lt;br /&gt;
*&amp;lt;math&amp;gt;R1 \sim \frac{\beta _{I_N} \cdot U_{ein}}{I_N}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*&amp;lt;math&amp;gt;N_{steu} \le \frac{5}{\pi \cdot U_{ein}}\cdot N_{Pri}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*&amp;lt;math&amp;gt;P_{max}=\frac{(\pi \cdot U_{ein} \cdot k)^2 \sqrt{L_{pri} \cdot C_2 (1-k^2)}}{4 \cdot L_{pri} \cdot (1-k^2)}&amp;lt;/math&amp;gt; (Näherungsformel)&lt;br /&gt;
&lt;br /&gt;
*&amp;lt;math&amp;gt;R_{opt}=(1-k^2)(\frac{N_{sek}}{N_{pri}})^2 L_{pri} \cdot 2\pi \cdot f&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
|- &lt;br /&gt;
! Formelzeichen	|| Bedeutung&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;math&amp;gt;\!\, f_r&amp;lt;/math&amp;gt; || Resonanzfrequenz im Leerlauf &lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;math&amp;gt;\!\, L_{Pri}&amp;lt;/math&amp;gt; || Induktivität der Primärwicklung &lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;math&amp;gt;\!\, C2&amp;lt;/math&amp;gt; || Kapazität des Primärschwingkreises&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;math&amp;gt;\!\, U_p&amp;lt;/math&amp;gt; || Spitzenspannung im Resonanzkreis &lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;math&amp;gt;\!\, I_p&amp;lt;/math&amp;gt; || Spitzenstrom im Resonanzkreis &lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;math&amp;gt;\!\, k&amp;lt;/math&amp;gt; || Koppelfaktor zwischen Primär- und Sekundärwicklung &lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;math&amp;gt;\!\, L_{Pri-0}&amp;lt;/math&amp;gt; || Primärinduktivität bei Leerlauf der Sekundärwicklung&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;math&amp;gt;\!\, L_{Pri-K}&amp;lt;/math&amp;gt; || Primärinduktivität bei Kurzschluss der Sekundärwicklung&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;math&amp;gt;\!\, U_{ein}&amp;lt;/math&amp;gt; || Eingangsspannung des Royer Converters (Gleichspannung)&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;math&amp;gt;\!\, U_{aus}&amp;lt;/math&amp;gt; || Ausgangsspannung des Royer Converters (Wechselspannung, Spitzenwert)&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;math&amp;gt;\!\, R1&amp;lt;/math&amp;gt; || Basiswiderstand&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;math&amp;gt;\!\, I_N&amp;lt;/math&amp;gt; || Nennstrom des Royer Converters am Eingang&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;math&amp;gt;\!\, \beta _{I_N}&amp;lt;/math&amp;gt; || Stromverstärkung der Transistoren bei Nennstrom&amp;lt;br&amp;gt;Achung! Die Stromverstärkung sinkt bei höheren Strömen deutlich, ins Datenblatt schauen.&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;math&amp;gt;\!\, N_{steu}&amp;lt;/math&amp;gt; || Windungszahl der Steuerwicklung &lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;math&amp;gt;\!\, P_{max}&amp;lt;/math&amp;gt; || Maximale Ausgangsleistung bei Leistungsanpassung&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;math&amp;gt;\!\, R_{opt}&amp;lt;/math&amp;gt; || Optimaler Lastwiderstand für Leistungsanpassung&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Das Ganze ist auch als [[media:Royer_Converter.xls | Exceltabelle]] zur leichten Anwendung verfügbar.&lt;br /&gt;
&lt;br /&gt;
== Leistungsoptimierung ==&lt;br /&gt;
&lt;br /&gt;
Wie kann ich den Wirkungsgrad sowie die Ausgangsleistung für meine Anwendung optimieren?&lt;br /&gt;
&lt;br /&gt;
* Die Eingangsspannung soll möglichst hoch sein.&lt;br /&gt;
* Der Koppelfaktor soll möglichst hoch sein. Das erreicht man durch&lt;br /&gt;
** Flache Spulen mit grossem Durchmesser und kleinem Abstand (parallele Spulen)&lt;br /&gt;
** Konzentrische (ineinandergestapelte) Spulen mit geringem Luftspalt zwischen den Spulen&lt;br /&gt;
** Einsatz von Ferritkernen (Schalenkerne, Stäbe etc.) zur Bündelung des Magnetfeldes&lt;br /&gt;
* Wenn man die Sekundärwicklung mit einem parallel oder in Reihe geschalteten Kondensator auf Resonanz mit der Primärwicklung abgleicht, kann die Ausgangsleistung deutlich erhöht werden, weil dadurch die Streuinduktivität der Sekundärseite kompensiert wird. Man muss dabei beachten, dass bei Parallelschaltung die Ausgangsspannung ohne Last stark ansteigt (Prinzip der [http://de.wikipedia.org/wiki/Teslaspule Teslaspule]). Unter Last verhält sich der Ausgang dann nahezu wie eine [[Konstantstromquelle]]. Bei Reihenschaltung ist das nicht der Fall, hier bleibt die Leerlaufspannung niedrig. Auch für diesen zusätzlichen Kondensator gilt das Gleiche wie C2, er muss sehr verlustarm sein. Es gilt&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;C_{sek} = \frac{1}{(2 \pi f)^2 L_{sek}\sqrt{1-k^2}}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Das Verhältnis &amp;lt;math&amp;gt;C/L&amp;lt;/math&amp;gt; soll möglichst hoch sein. Verdoppelt man die Kapazität und reduziert gleichzeitig die Primärinduktivität um den Faktor zwei (Windungszahl * 0,7), verdoppelt sich die maximal verfügbare Leistung. Der Preis dafür sind doppelt so hohe Leerlaufströme im Schwingkreis und damit ca. 2,8mal so hohe Leerlaufverluste (bei gleichem Drahtquerschnitt, P = I^2 * R).&lt;br /&gt;
* Die Resonanzfrequenz soll möglichst niedrig sein, daduch veringern sich die induktiven Widerstände der Streuinduktivitäten, welche den Strom und damit die Leistung begrenzen.&lt;br /&gt;
* Der Drahtquerschnitt der Primärwicklung muss möglichst gross sein, denn hier fließen sehr hohe Ströme. Allerdings bewirkt die meist recht hohe Resonanzfrequenz auf grund des [http://de.wikipedia.org/wiki/Skineffekt Skineffekts] eine Verringerung des effektiven Drahtquerschnitts. Ausserdem lassen sich dicke, massive Kupferdrähte eher schlecht wickeln. Darum verwendet man oft [http://de.wikipedia.org/wiki/Hochfrequenzlitze HF-Litze], welche aus sehr vielen, sehr dünnen, gegeneinander isolierten Drähten besteht. Diese lässt sich deutlich besser wickeln und wirkt dem Skineffekt entgegen.&lt;br /&gt;
&lt;br /&gt;
== MOSFET-Variante ==&lt;br /&gt;
[[Datei:WurthWE-WPCC.png| thumb | 300px | right | Auswahl bestimmter Würth WE-WPCC Ladespulen. Links unten die kleinste Ladespule mit 10µH, mittig oben 6.3µH, rechts unten 6.3µH mit einem Neodym-Magnet in der Mitte.]]&lt;br /&gt;
Man kann die Primärseite des Trafos mit Mittelanzapfung und Steuerwicklung auch durch eine einfache Spule ersetzen, wenn man MOSFETs statt Bipolartransistoren nutzt und die Betriebsspannung über zwei Spulen an den Enden der Primärwicklung einspeist. Das vereinfacht den Aufbau der Primärspule deutlich, was u.a. bei bei höheren Leistungen günstig ist. Der Preis dafür ist, daß man zwei Spulen mit etwa der doppelten Induktivität benötigt. Ebenfalls werden dazu geeignete Flachspulen von Herstellern wie Würth, TDK, .. (siehe Abbildung rechts) produziert (Stichwort: Ladespule bzw. charging coil).&lt;br /&gt;
&lt;br /&gt;
Die unten abgebildete Mosfet-Schaltung baut auf diesem [http://www.mikrocontroller.net/topic/278961#2948009 Beitrag] auf, in dem auch weitere Erklärungen der Funktionsweise sowie zahlreiche Dimensionierungs-Beispiele enthalten sind.&lt;br /&gt;
[[Datei:Royer MOSFET.png| thumb | 600px | left | MOSFET-Schaltung des Royer Converters]]&lt;br /&gt;
&lt;br /&gt;
{{Clear}}&lt;br /&gt;
&lt;br /&gt;
[[Datei:Royer_MOSFET_Aufbau.jpg| thumb | 300px | right | Der beschriebene Aufbau mit Logic-Level MOSFETs. Von links nach rechts: Die Royer-Converter Schaltung an welche die kleine Würth Ladespule mit 10µH angeschlossen ist. Darüber die selbst gewickelte Empfangsspule sowie der Ferritkern welcher im Betrieb hinter die Empfangsspule befestigt wird. Die Empfangsspule ist mit dem Gleichrichter verbunden welcher den DC-DC Buck-Converter speist. Der Lastwiderstand ist rechts außen sichtbar. Im Betrieb sind beide Spulen parallel übereinander ausgerichtet im Abstand von 3mm, getrennt durch eine Acrylplatte. ]]&lt;br /&gt;
&lt;br /&gt;
Beispieleinsatz:&lt;br /&gt;
&lt;br /&gt;
Die in obiger Schaltung verwendeten Bauteile sind für eine drahtlose Energieübertragung mit einer Eingangsspannung von 5V, einer Ausgangsspannung von 5V und Ausgangsleistung von 2.2W bei einem Abstand von 3mm ausgelegt. Als Primärspule wird eine Würth 10µH Ladespule verwendet, als Sekundärspule eine selbstgewickelte Flachspule mit 14mm Durchmesser und 14 Wicklungen auf deren Rückseite ein Pot Core Ferritkern (3H1) zur Leistungsverbesserung plaziert ist. Die hier verwendeten Mosfets sind Logic-Level-Mosfets und nicht für hohe Eingangsspannungen ausgelegt (im oben genannten Beitrag finden sich Beispiele für Eingangsspannungen &amp;gt;10V). Um die ungeregelte Ausgangsspannung auf 5V zu stabilisieren wird der Texas Instruments TPS54331 Buck-Converter verwendet (nicht in der Schaltung aufgeführt), der eine Ein-/Ausschalthysterese besitzt um nur bei geeigneter Orientierung der Spulen einzuschalten und dadurch stabile 5V erzeugen kann. Die komplette Schaltung ist mit SMD Bauteilen und 0.1µF NP0 50V Kondensatoren in der Bauform 1206 aufgebaut worden (siehe rechte Abbildung). Bei den Spulen L1 und L2 muss ein Mittelmaß zwischen Baugröße, Induktivität und Widerstand gefunden werden. Bei gleichbleibender Baugröße stellte 100µH die optimale Wahl im Vergleich zu 47µH (zu geringe Induktivität) und 220µH (zu hoher Widerstand) dar. Die so aufgebaute Schaltung arbeitet bei 115kHz und es wird momentan ein Wirkungsgrad von von ca 58% erreicht mit einer Last von 450mA am 5V Ausgang.&lt;br /&gt;
&lt;br /&gt;
Wie im Artikel beschrieben, kann die Effizienz gesteigert werden, indem die Fläche der Sekundärspule vergrößert wird, Lastanpassung vorgenommen wird, optimiertere Ferrit-Kerne verwendet werden etc. Bei identischer Primär- und Sekundärspule (Würth 10µH), im Abstand von 5mm, und einem Lastwiderstand von 68 &amp;amp;Omega; direkt am Delon-Brückengleichrichter angeschlossen (ohne DC-DC Converter) wurde in einem kurzen Versuch eine Effizienz von ca. 70% gemessen, bei einer Ausgangsleistung von ca. 4W (19V@220mA) mit sonst unveränderten Parametern (5V@1.2A Eingang, selbe Schaltung). Da an der Schaltung nichts verändert wurde und auch der Lastwiderstand zufällig gewählt wurde ist es offensichtlich, dass der maximale Wirkungsgrad noch nicht erreicht ist.&lt;br /&gt;
 &lt;br /&gt;
== Siehe auch ==&lt;br /&gt;
&lt;br /&gt;
* [[Spule]]&lt;br /&gt;
* [[Transformatoren und Spulen]]&lt;br /&gt;
&lt;br /&gt;
== Diskussionen im Forum ==&lt;br /&gt;
&lt;br /&gt;
*[http://www.mikrocontroller.net/topic/118124#new Verwendung in einem Induktionsofen, MOSFETs als Schalter]&lt;br /&gt;
*[http://www.mikrocontroller.net/topic/151538#new Verwendung in einem Induktionsofen, neuer Thread]&lt;br /&gt;
* [http://www.mikrocontroller.net/topic/263161#2734278 Dokumente über Induktionskochfelder]&lt;br /&gt;
*[http://www.mikrocontroller.net/attachment/61266/Induktive_Energie_bertragung.pdf Dokument über drahtlose Energieübertragung]&lt;br /&gt;
*[http://www.mikrocontroller.net/topic/80808#675198 Komplettes Projekt einer Propelleruhr und lange Diskussion]&lt;br /&gt;
*[http://www.mikrocontroller.net/topic/61706#489279 Noch eine Propelleruhr]&lt;br /&gt;
*[http://www.mikrocontroller.net/topic/155778#1529891 Royer Converter mit Schalenkernen und 20W Ausgangsleistung]&lt;br /&gt;
*[http://www.mikrocontroller.net/topic/152785#1540938 Royer Converter mit Luftspulen und 14W Ausgangsleistung]&lt;br /&gt;
* [http://www.mikrocontroller.net/topic/152785#1712213 Kleiner Royer Converter für einen Propellerglobus]&lt;br /&gt;
*[http://www.mikrocontroller.net/topic/214735#new Herleitung der Formeln im Artikel Royer Converter]&lt;br /&gt;
* [http://www.mikrocontroller.net/topic/219148?goto=2195298#2195298 berührungslos Bleigel Akku laden, 12V/1,6W]&lt;br /&gt;
* [http://www.mikrocontroller.net/topic/221845?goto=2238458#2238458 Kleiner Wandler für 5V/250mW]&lt;br /&gt;
* [http://www.mikrocontroller.net/topic/152785#2447793 Automatische Lasterkennung und Steuerung für den Royer Converter]&lt;br /&gt;
* [http://www.mikrocontroller.net/topic/278961#2948009 RFID Spulen für Leistungsübertragung?]&lt;br /&gt;
* [http://www.mikrocontroller.net/topic/goto_post/2937446 Flachspule 1 mH -- wie selbst herstellen?]&lt;br /&gt;
* [http://www.mikrocontroller.net/topic/297295 Leistungsverbesserung Royer Converter]&lt;br /&gt;
* [http://www.mikrocontroller.net/topic/263068#new WiTricity heute]&lt;br /&gt;
&lt;br /&gt;
== Weblinks ==&lt;br /&gt;
&lt;br /&gt;
*[http://www.serious-technology.de/kleiner-wandler.htm Kleiner Wandler]: Sehr ausführliche Beschreibung des Aufbaus und Berechnung der Komponenten&lt;br /&gt;
*[http://www.serious-technology.de/ernsthafter_wandler.htm Ernsthafter Wandler]: Das Ganze nochmal in Groß&lt;br /&gt;
* [http://www.google.de/url?url=http://www.rrc-wireless-power.com/fileadmin/website_wireless_power/Dokumente/Whitepapers/RRC_WirelessPower_Kontaktlose_Energie___Datenuebertragung_D_E_Entwicklerforum_2008.pdf&amp;amp;rct=j&amp;amp;sa=U&amp;amp;ei=Fx7CUJXXJqSl4ASniIHoBg&amp;amp;ved=0CCUQFjACOAo&amp;amp;q=kontaktlose+energie%C3%BCbertragung&amp;amp;usg=AFQjCNE6dSlRmsaMDw8EnvLmJ3ovOZe2EA Dokument] zur kontaktlosen Energieübertragung&lt;br /&gt;
*[[media: an14.pdf | AN14]]: Application Note von Zetex, englisch&lt;br /&gt;
*[[media: dn164f.pdf | DN164]]: Design Note von Linear Technology, englisch&lt;br /&gt;
*[http://www.linear.com/docs/26421 Linear Technology Application Note 118:] High Voltage, Low Noise, DC/DC Converters (mit primärgeregeltem Royer-Converter)&lt;br /&gt;
*[http://4hv.org/e107_plugins/forum/forum_viewtopic.php?74096.0 Schönes Projekt zur kontaktlosen Energieübertragung] &amp;lt;---- Achtung: Seite hat einen Virus!!!&lt;br /&gt;
*[http://www.youtube.com/watch?v=2ODW-ntPHSU Video zum Projekt]&lt;br /&gt;
*[http://www.joretronik.de/Oszillatoren/Oszillatoren.html Royer-Hochleistungsoszillatoren mit MOSFETs und IGBTs]&lt;br /&gt;
*[http://www.joretronik.de/Web_NT_Buch/Kap11_2/Kapitel11_2.html Diverse Schaltungsbeispiele]&lt;br /&gt;
*[http://www.joretronik.de/Web_NT_Buch/Kap13_2/Kapitel13_2.html#13.2.2 Royer Oszillator für CCFL-Lampen]&lt;br /&gt;
* [http://mitglied.multimania.de/lvane/js_code/loop/loop.html Induktivität einer Kreisringspule]&lt;br /&gt;
* [http://home.planet.nl/~sloma000/Baxandall%20parallel-resonant%20Class-D%20oscillator1.htm The Baxandall parallel-resonant Class-D oscillator]&lt;br /&gt;
* [http://www.ti.com/ww/de/analog/wireless_power_solutions/index.shtml?DCMP=hpa_pmp_bq51013_de&amp;amp;HQS=Other+BA+bq51013-bpde bq51013], IC zur kontaklosen Energieübertragung von [http://www.ti.com TI], Evaluationboard verfügbar&lt;br /&gt;
* [http://www.wirelesspowerconsortium.com/ Wireless Power Consortium], definiert einen Standard zur kontaktlosen Energieübertragung (Qi)&lt;br /&gt;
* Kontaktlose Energieübertragungslösungen von Firmen&lt;br /&gt;
** [http://www.schleifring.de/de/Produkte/Technologien/Kontaktlose._.Uebertragung/energie.uebertragung.php Schleifring], 100W - 200kW&lt;br /&gt;
** [http://www.j-lasslop.de/produkte/kontaktlose-energie-und-datenuebertragung.html J-Lasselop], Mikrowatt bis 500kW&lt;br /&gt;
** [http://www.enasys.de/de/produkte/kontaktlose-energieuebertragung.html EnASYS], 60W-500kW&lt;br /&gt;
** [http://www.kontenda.de KONTENDA], 1W-2kW&lt;br /&gt;
** [http://www.mesa-systemtechnik.de MESA Systemtechnik], Power- und Sensortelemetrie&lt;br /&gt;
** [http://www.wirelesspower.cn Wirelesspower], Anbieter von verschiedenen ICs und Modulen von 1W-3kW&lt;br /&gt;
** [http://www.rrc-ps.de/de/produkte/kabellose-energieuebertragung/plattformen.html RRC Power Solutions] - Plattform Kabellose Energie- / Datenübertragung, 5W, Qi kompatibel&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Spannungsversorgung und Energiequellen]]&lt;/div&gt;</summary>
		<author><name>Frank m35</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=Royer_Converter&amp;diff=80936</id>
		<title>Royer Converter</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=Royer_Converter&amp;diff=80936"/>
		<updated>2014-01-17T20:23:56Z</updated>

		<summary type="html">&lt;p&gt;Frank m35: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Ein Royer-Converter ist ein Sinus-Leistungsoszillator. Er wird im Wesentlichen als Schaltnetzteil verwendet.&lt;br /&gt;
&lt;br /&gt;
== Geschichtliches ==&lt;br /&gt;
&lt;br /&gt;
Der Name geht auf George Howard Royer zurück, welcher diese Schaltung im Jahr 1954 entwickelte (siehe US-Patent 2783384). Die originale Schaltung arbeitet mit einem [http://de.wikipedia.org/wiki/Trafo Trafo] mit [http://de.wikipedia.org/wiki/Ferrite Ferritkern], welcher zum Umschalten in die Sättigung getrieben wird. Das Ausgangssignal ist rechteckförmig. Die hier vorgestellte Version, die auf Peter James Baxandall zurückgeht, arbeitet jedoch mit einem Trafo, welcher nicht in die Sättigung geht und mittels LC-[http://de.wikipedia.org/wiki/Schwingkreis Schwingkreis] ein Sinussignal erzeugt. Der Trafo kann sogar als Luftspule ohne Kern ausgeführt werden.&lt;br /&gt;
&lt;br /&gt;
== Aufbau und Eigenschaften ==&lt;br /&gt;
&lt;br /&gt;
Der Aufbau ist sehr einfach und robust. Zwei Transistoren ([[FET|MOSFETs]] oder [[Transistor|Bipolar]]) werden wechselseitig geschaltet (Gegentaktbetrieb, engl. push pull), und damit abwechselnd die eine und die andere Spulenhälfte der Primärwicklung von Strom durchflossen. Die Schaltung ist selbstschwingend, d.h. das Steuersignal wird direkt aus dem Trafo zurückgewonnen. Damit schwingt sie immer optimal auf Resonanz, ohne Abgleich von Bauteiltoleranzen und auch bei Alterung oder Temperaturänderung. Allerdings ändert sich damit die Frequenz des [[Schwingkreis]]es und damit geringfügig die Effizienz. Die Frequenz wird durch die Induktivität der Primärwicklung und den Kondensator C2 bestimmt (Parallelschwingkreis). Die Drosselspule L1 sorgt dafür, dass die Betriebsspannung wechselspannungsmäßig von der Mittelanzapfung von TR1 entkoppelt wird, sie wirkt als [[Konstantstromquelle]].&lt;br /&gt;
&lt;br /&gt;
[[bild:royer_bipolar.png | thumb | 670px | left | Schaltplan des Royer Converters]]&lt;br /&gt;
&lt;br /&gt;
{{Clear}}&lt;br /&gt;
&lt;br /&gt;
*Einfacher, robuster Aufbau&lt;br /&gt;
*Sinusförmige Strom- und Spannungsverläufe&lt;br /&gt;
*Transistoren schalten im Nulldurchgang der Spannung, dadurch geringe Schaltverluste und Störstrahlung&lt;br /&gt;
*Bei ausreichend großer Streuinduktivität zwischen Primär- und Sekundärwicklung ist die Schaltung kurzschlussfest.&lt;br /&gt;
*Vollkommen unempfindlich gegenüber Streuinduktivitäten des Trafos (im Gegensatz zu den meisten anderen Schaltnetzteiltopologien)&lt;br /&gt;
&lt;br /&gt;
Besonders der letzte Punkt ist sehr interessant. Auf Grund des Aufbaus und der Funktion wird sämtliche Energie im Magnetfeld, welche nicht über die Sekundärspule ausgekoppelt wird, wieder in den Schwingkreis zurückgeführt. Damit geht nur sehr wenig Energie verloren, egal wie gut die Kopplung zwischen Sekundär- und Primärspule ist.&lt;br /&gt;
&lt;br /&gt;
Der Trafo TR1 kann sehr verschieden aufgebaut sein. In einem Inverter für [http://de.wikipedia.org/wiki/Leuchtr%C3%B6hre CCFLs] ist es ein normaler Trafo mit Ferritkern. In anderen Anwendungen kann es aber auch ein kernloser Trafo sein, bei dem es zwischen Primärspule und Sekundärspule einen großen Abstand gibt ([http://de.wikipedia.org/wiki/Induktive_%C3%9Cbertragung Kontaktlose Energieübertragung]).&lt;br /&gt;
&lt;br /&gt;
== Ein praktisches Beispiel ==&lt;br /&gt;
&lt;br /&gt;
Auf Grund der Unempfindlichkeit der Schaltung gegenüber Streuinduktivitäten ist diese Schaltung ideal für einen Trafo ohne Kern und mit grossem Abstand zwischen Primär- und Sekundärspule. Damit kann kontaktlos recht viel Energie übertragen werden. Anwendungen sind z.&amp;amp;nbsp;B. die Ladestation elektrischer Zahnbürsten oder ein Rotationstrafo für eine [http://www.google.de/cse?q=propelleruhr Propelleruhr]. Für Letzteres soll dieses Beispiel hier dargestellt werden.&lt;br /&gt;
&lt;br /&gt;
Die Schaltung benutzt einfach beschaffbare Bauteile. Der Trafo wird selber gewickelt, ist aber auch vollkommen unkritisch. Wie im Bild zu sehen, wurde absichtlich ein recht grosser Luftspalt zwischen Primär- und Sekundärspule gelassen, um die Leistungsfähigkeit der Schaltung zu demonstrieren. Die Primärwicklung ist [http://de.wikipedia.org/wiki/Bifilar bifilar] gewickelt, d.h. man nimmt den Draht doppelt und wickelt damit gleichzeitig beide Spulenhälften, das geschlossene Ende trennt man danach auf und verschaltet phasenrichtig. Es entstehen zwei verschachtelte Wicklungen (engl. interleaved windings), dadurch verbessert sich die Kopplung. Der Trafo hat folgende Parameter.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align:center&amp;quot;&lt;br /&gt;
|+ &#039;&#039;&#039;Wickeldaten&#039;&#039;&#039; &lt;br /&gt;
|- &lt;br /&gt;
! Wicklung       || Windungszahl || Drahtdurchmesser [mm] || Durchmesser [mm] || Induktivität [µH]&lt;br /&gt;
|-&lt;br /&gt;
| Primär         || 2x10           || 0,55   || 80 || 70&lt;br /&gt;
|-&lt;br /&gt;
| Steuer         || 1              || 0,2    || 80 || ---&lt;br /&gt;
|-&lt;br /&gt;
| Sekundär       || 13             || 0,55   || 65 || 23&lt;br /&gt;
|}&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ &#039;&#039;&#039;Stückliste&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
! Bauteil || Wert || Reichelt Bestellnummer&lt;br /&gt;
|-&lt;br /&gt;
| T1, T2  || BC337 || [http://www.reichelt.de/?;ARTICLE=4986; 337-25] &lt;br /&gt;
|-&lt;br /&gt;
| L1 || 330µH; 0,5A|| [http://www.reichelt.de/?ARTICLE=1123; 09P 330µ]&lt;br /&gt;
|-&lt;br /&gt;
| C1 || 100µF, 25V|| [http://www.reichelt.de/?ARTICLE=15102; RAD 100/25]&lt;br /&gt;
|-&lt;br /&gt;
| C2 || 33nF, 100V|| [http://www.reichelt.de/?ARTICLE=31975; MKP-10-630 33N]&lt;br /&gt;
|-&lt;br /&gt;
| C3 || 6,8µF, 50V|| [http://www.reichelt.de/?ARTICLE=31926; MKS-2 6,8µ]&lt;br /&gt;
|-&lt;br /&gt;
| R1 || 2k2, 1/4W|| [http://www.reichelt.de/?ARTICLE=11586; METALL 2,21K]&lt;br /&gt;
|-&lt;br /&gt;
| R2 || 22R, 5W|| [http://www.reichelt.de/?ARTICLE=2611; 5W AXIAL 22]&lt;br /&gt;
|-&lt;br /&gt;
| D1-4 || 1N5818|| [http://www.reichelt.de/?ARTICLE=41849; 1N 5818]&lt;br /&gt;
|-&lt;br /&gt;
| TR1 || CuL, 0,5mm || [http://www.reichelt.de/?;ARTICLE=57182 CUL 100/0,50] &lt;br /&gt;
|}&lt;br /&gt;
[[bild:royer_prop_aufbau.jpg | thumb | 640px | left | Praktischer Aufbau]]&lt;br /&gt;
{{Clear}}&lt;br /&gt;
Mit 12V Eingangsspannung beträgt die Spannungsamplitude im Primärkreis ziemlich genau 38V. Der Leerlaufstrom der Schaltung beträgt 36mA. ABER! Der Leerlaufstrom im Schwingkreis beträgt 580mA(eff), die Blindleistung 15,6VA! Hier wird klar, warum sowohl die Primärspule als auch C2 sehr verlustarm sein müssen. Die Resonanzfrequenz beträgt 105 kHz. Damit wurden folgende Messwerte erreicht.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align:center&amp;quot;&lt;br /&gt;
|- &lt;br /&gt;
!Belastung	|| Eingangsstrom&amp;lt;br&amp;gt;[mA] || Ausgangsstrom&amp;lt;br&amp;gt;[mA]	|| Ausgangsspannung&amp;lt;br&amp;gt;[Veff] || Ausgangsleistung&amp;lt;br&amp;gt;[W] || Wirkungsgrad&amp;lt;br&amp;gt;[%]&lt;br /&gt;
|-&lt;br /&gt;
| Leerlauf               || 36  || 	0  || 7,8 || 0 ||  0&lt;br /&gt;
|-&lt;br /&gt;
| 22 &amp;amp;Omega;                  || 220	|| 320	|| 7	|| 2,2 || 84&lt;br /&gt;
|-&lt;br /&gt;
| Gleichrichter + 22 &amp;amp;Omega; || 190	|| 270	|| 6	|| 1,6 || 71&lt;br /&gt;
|-&lt;br /&gt;
| 10 &amp;amp;Omega;                || 250 || 490  || 4,9  || 2,4 || 80&lt;br /&gt;
|-&lt;br /&gt;
| Kurzschluß             || 60  || 650  || 0    || 0 || 0&lt;br /&gt;
|}&lt;br /&gt;
Nach Gleichrichtung mit schnellen Schottkydioden und Filterung bleiben bei 22Ω Last noch ca. 6V Gleichspannung übrig, genug um mit einem Low Drop Spannungsregler stabile 5V für einen Mikrocontroller bereitzustellen. Selbst bei der recht hohen Ausgangsleistung bleiben alle Bauteile kühl. Dabei werden nur recht kleine Transistoren verwendet. Das zeigt umso mehr die Leistungsfähigkeit der Schaltung. Bei optimaler Leistungsanpassung mit 10 &amp;amp;Omega; Last kann man 2,4W aus dem Trafo entnehmen. Diese Leistung wird vor allem durch den recht geringen Koppelfaktor von nur 0,45 begrenzt. Dieser kommt allerdings dem Kurzschlussfall zu gute, hier beträgt die Stromaufnahme der Schaltung nur 60mA, die Resonanzfrequenz steigt nur mässig auf 123kHz. Prinzipiell ist diese Schaltung bis in den Bereich von mehreren kW Leistung skalierbar.&lt;br /&gt;
&lt;br /&gt;
== Hinweise ==&lt;br /&gt;
&lt;br /&gt;
* Beim ersten Einschalten unbedingt die &amp;lt;span style=&amp;quot;color:#FF0000&amp;quot;&amp;gt;Strombegrenzung&amp;lt;/span&amp;gt; am Netzteil einstellen! Für die Beispielschaltung reichen 100mA.&lt;br /&gt;
*Schwingt die Schaltung nicht an, ist in den meisten Fällen die Steuerwicklung verpolt.&lt;br /&gt;
* Manchmal ist auch die Primärwicklung falsch angeschlossen. Beim [http://de.wikipedia.org/wiki/Bifilar bifilaren] Wickeln muss man das geschlossene Ende aufschneiden und das linke Ende der nun entstandenen Teilwicklung mit dem rechten Ende der zweiten Teilwicklung zur [http://www.mikrocontroller.net/topic/152785#1605883 Mittelanzapfung] verbinden.&lt;br /&gt;
*Der Kondensator C2 wird auch im Leerlauf von einem recht hohen Strom durchflossen. Deshalb muss hier auf jeden Fall ein verlustarmer Typ eingesetzt werden. Entweder ein [http://de.wikipedia.org/wiki/Folienkondensator Folienkondensator] mit Polypropylen als Dielektrikum (MKP oder FKP) oder ein [http://de.wikipedia.org/wiki/Keramikkondensator Keramikkondensator] aus C0G oder NP0. Andere Typen (Folie MKS, Keramik X7R, Z5U etc.) gehen &#039;&#039;&#039;nicht&#039;&#039;&#039;, denn hier werden zu hohe dielektrische Veluste im Kondensator erzeugt, welche diesen erhitzen und irgendwann zerstören. Die Verluste von X7R sind ca. 20mal höher als von NP0!&lt;br /&gt;
*Die Transistoren sollten nur mässig überdimensioniert sein, denn Transistoren mit sehr hohen Kollektorströmen sind meist auch recht langsam.&lt;br /&gt;
*Die Transistoren müssen mindestens eine Sperrspannung von &amp;lt;math&amp;gt;\pi \cdot U_{ein}&amp;lt;/math&amp;gt; aushalten, denn das ist die exakte Amplitude der Schwingung im Primärkreis. Praktisch sollte man aber mindestens 20% und mehr Reserve einplanen.&lt;br /&gt;
*Der [[Basiswiderstand]] muss experimentell ermittelt werden. Er muss so ausgelegt sein, dass die Transistoren beim Schalten nur &#039;&#039;&#039;schwach&#039;&#039;&#039; in die Sättigung gehen, um schneller wieder abschalten zu können (Stichwort Speicherzeit, engl. storage time).&lt;br /&gt;
*Die Drossel L1 sollte ca. den 2..3fachen Induktivitätswert der Primärwicklung haben. Je mehr, umso besser. Sie darf bei vollem Laststrom nicht in die Sättigung gehen, da dann ihre Induktivität stark absinkt.&lt;br /&gt;
* Man sollte &#039;&#039;&#039;keine&#039;&#039;&#039; [[Potentiometer | Drahtpotis]] zur Lastvariation nutzen. Die haben soviel Induktivität (im Test 12µH, =8&amp;amp;Omega; bei 105kHz), dass die dadurch den Maximalstrom ungewollt verringern. Selbst einfache Drahtwiderstände sind mit 3µH/2&amp;amp;Omega; induktivem Anteil schon ungünstig.&lt;br /&gt;
*Die Spitzenspannung der Steuerwicklung darf ca. 5V nicht überschreiten, weil diese als Sperrspannung für die Transistoren wirksam wird. Die meisten Bipolartransistoren verkraften max. 5V Sperrspannung zwischen Basis und Emitter.&lt;br /&gt;
*Im Kurzschlussfall der Sekundärwicklung reduziert sich die Induktivität der Primärwicklung auf die Streuinduktivität, was zu einer Frequenzerhöhung führt. Durch die höhere Frequenz stellt die Streuinduktivität einen höheren Blindwiderstand dar, welcher den Strom wirkungsvoll begrenzt. Aufgrund der höheren Frequenz fließt allerdings ein größerer Strom im Schwingkreis. Verwendet man also diesen Zustand, dann muss die Schaltung für die höheren Belastungen ausgelegt sein. Je kleiner der Koppelfaktor, umso besser die Kurzschlussfestigkeit. Die nachfolgende Tabelle gibt die Erhöhung des Eingangsstroms sowie der Resonanzfrequenz beim Kurzschluss in Abhängigkeit des Koppelfaktors an.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align:center&amp;quot; &lt;br /&gt;
|- &lt;br /&gt;
! rowspan=&amp;quot;2&amp;quot; | Koppelfaktor &lt;br /&gt;
! colspan=&amp;quot;2&amp;quot; | Faktor gegenüber Leerlauf&lt;br /&gt;
|-&lt;br /&gt;
! Resonanzfrequenz || Eingangsstrom&lt;br /&gt;
|-&lt;br /&gt;
|0,01 || 1,0 || 1,0&lt;br /&gt;
|-&lt;br /&gt;
|0,1 || 1,1 || 1,1&lt;br /&gt;
|-&lt;br /&gt;
|0,2 || 1,1 || 1,3&lt;br /&gt;
|-&lt;br /&gt;
|0,5 || 1,4 || 2,0&lt;br /&gt;
|-&lt;br /&gt;
|0,6 || 1,6 || 2,5&lt;br /&gt;
|-&lt;br /&gt;
|0,7 || 1,8 || 3,3&lt;br /&gt;
|-&lt;br /&gt;
|0,8 || 2,2 || 5&lt;br /&gt;
|-&lt;br /&gt;
|0,9 || 3,2 || 10&lt;br /&gt;
|-&lt;br /&gt;
|0,95 || 4,5 || 20&lt;br /&gt;
|-&lt;br /&gt;
|0,99 || 10 || 100&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Formeln zum Royer Converter ==&lt;br /&gt;
&lt;br /&gt;
*&amp;lt;math&amp;gt;f_r=\frac{1}{2 \pi \sqrt{L_{pri} C_2}}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*&amp;lt;math&amp;gt;U_p = \pi \cdot U_{ein}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*&amp;lt;math&amp;gt;I_p = U_{ein} \cdot \pi \sqrt{\frac{C}{L}}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*&amp;lt;math&amp;gt;k = \frac {U_{aus}}{\pi \cdot U_{ein}} \cdot \frac {N_{pri}}{N_{sek}}&amp;lt;/math&amp;gt; (im Leerlauf gemessen)&lt;br /&gt;
&lt;br /&gt;
*&amp;lt;math&amp;gt;k = \sqrt{1-\frac{L_{Pri-K}}{L_{Pri-0}}}&amp;lt;/math&amp;gt; (mit L-Meter gemessen)&lt;br /&gt;
&lt;br /&gt;
*&amp;lt;math&amp;gt;R1 \sim \frac{\beta _{I_N} \cdot U_{ein}}{I_N}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*&amp;lt;math&amp;gt;N_{steu} \le \frac{5}{\pi \cdot U_{ein}}\cdot N_{Pri}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*&amp;lt;math&amp;gt;P_{max}=\frac{(\pi \cdot U_{ein} \cdot k)^2 \sqrt{L_{pri} \cdot C_2 (1-k^2)}}{4 \cdot L_{pri} \cdot (1-k^2)}&amp;lt;/math&amp;gt; (Näherungsformel)&lt;br /&gt;
&lt;br /&gt;
*&amp;lt;math&amp;gt;R_{opt}=(1-k^2)(\frac{N_{sek}}{N_{pri}})^2 L_{pri} \cdot 2\pi \cdot f&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
|- &lt;br /&gt;
! Formelzeichen	|| Bedeutung&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;math&amp;gt;\!\, f_r&amp;lt;/math&amp;gt; || Resonanzfrequenz im Leerlauf &lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;math&amp;gt;\!\, L_{Pri}&amp;lt;/math&amp;gt; || Induktivität der Primärwicklung &lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;math&amp;gt;\!\, C2&amp;lt;/math&amp;gt; || Kapazität des Primärschwingkreises&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;math&amp;gt;\!\, U_p&amp;lt;/math&amp;gt; || Spitzenspannung im Resonanzkreis &lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;math&amp;gt;\!\, I_p&amp;lt;/math&amp;gt; || Spitzenstrom im Resonanzkreis &lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;math&amp;gt;\!\, k&amp;lt;/math&amp;gt; || Koppelfaktor zwischen Primär- und Sekundärwicklung &lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;math&amp;gt;\!\, L_{Pri-0}&amp;lt;/math&amp;gt; || Primärinduktivität bei Leerlauf der Sekundärwicklung&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;math&amp;gt;\!\, L_{Pri-K}&amp;lt;/math&amp;gt; || Primärinduktivität bei Kurzschluss der Sekundärwicklung&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;math&amp;gt;\!\, U_{ein}&amp;lt;/math&amp;gt; || Eingangsspannung des Royer Converters (Gleichspannung)&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;math&amp;gt;\!\, U_{aus}&amp;lt;/math&amp;gt; || Ausgangsspannung des Royer Converters (Wechselspannung, Spitzenwert)&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;math&amp;gt;\!\, R1&amp;lt;/math&amp;gt; || Basiswiderstand&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;math&amp;gt;\!\, I_N&amp;lt;/math&amp;gt; || Nennstrom des Royer Converters am Eingang&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;math&amp;gt;\!\, \beta _{I_N}&amp;lt;/math&amp;gt; || Stromverstärkung der Transistoren bei Nennstrom&amp;lt;br&amp;gt;Achung! Die Stromverstärkung sinkt bei höheren Strömen deutlich, ins Datenblatt schauen.&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;math&amp;gt;\!\, N_{steu}&amp;lt;/math&amp;gt; || Windungszahl der Steuerwicklung &lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;math&amp;gt;\!\, P_{max}&amp;lt;/math&amp;gt; || Maximale Ausgangsleistung bei Leistungsanpassung&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;math&amp;gt;\!\, R_{opt}&amp;lt;/math&amp;gt; || Optimaler Lastwiderstand für Leistungsanpassung&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Das Ganze ist auch als [[media:Royer_Converter.xls | Exceltabelle]] zur leichten Anwendung verfügbar.&lt;br /&gt;
&lt;br /&gt;
== Leistungsoptimierung ==&lt;br /&gt;
&lt;br /&gt;
Wie kann ich den Wirkungsgrad sowie die Ausgangsleistung für meine Anwendung optimieren?&lt;br /&gt;
&lt;br /&gt;
* Die Eingangsspannung soll möglichst hoch sein.&lt;br /&gt;
* Der Koppelfaktor soll möglichst hoch sein. Das erreicht man durch&lt;br /&gt;
** Flache Spulen mit grossem Durchmesser und kleinem Abstand (parallele Spulen)&lt;br /&gt;
** Konzentrische (ineinandergestapelte) Spulen mit geringem Luftspalt zwischen den Spulen&lt;br /&gt;
** Einsatz von Ferritkernen (Schalenkerne, Stäbe etc.) zur Bündelung des Magnetfeldes&lt;br /&gt;
* Wenn man die Sekundärwicklung mit einem parallel oder in Reihe geschalteten Kondensator auf Resonanz mit der Primärwicklung abgleicht, kann die Ausgangsleistung deutlich erhöht werden, weil dadurch die Streuinduktivität der Sekundärseite kompensiert wird. Man muss dabei beachten, dass bei Parallelschaltung die Ausgangsspannung ohne Last stark ansteigt (Prinzip der [http://de.wikipedia.org/wiki/Teslaspule Teslaspule]). Unter Last verhält sich der Ausgang dann nahezu wie eine [[Konstantstromquelle]]. Bei Reihenschaltung ist das nicht der Fall, hier bleibt die Leerlaufspannung niedrig. Auch für diesen zusätzlichen Kondensator gilt das Gleiche wie C2, er muss sehr verlustarm sein. Es gilt&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;C_{sek} = \frac{1}{(2 \pi f)^2 L_{sek}\sqrt{1-k^2}}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Das Verhältnis &amp;lt;math&amp;gt;C/L&amp;lt;/math&amp;gt; soll möglichst hoch sein. Verdoppelt man die Kapazität und reduziert gleichzeitig die Primärinduktivität um den Faktor zwei (Windungszahl * 0,7), verdoppelt sich die maximal verfügbare Leistung. Der Preis dafür sind doppelt so hohe Leerlaufströme im Schwingkreis und damit ca. 2,8mal so hohe Leerlaufverluste (bei gleichem Drahtquerschnitt, P = I^2 * R).&lt;br /&gt;
* Die Resonanzfrequenz soll möglichst niedrig sein, daduch veringern sich die induktiven Widerstände der Streuinduktivitäten, welche den Strom und damit die Leistung begrenzen.&lt;br /&gt;
* Der Drahtquerschnitt der Primärwicklung muss möglichst gross sein, denn hier fließen sehr hohe Ströme. Allerdings bewirkt die meist recht hohe Resonanzfrequenz auf grund des [http://de.wikipedia.org/wiki/Skineffekt Skineffekts] eine Verringerung des effektiven Drahtquerschnitts. Ausserdem lassen sich dicke, massive Kupferdrähte eher schlecht wickeln. Darum verwendet man oft [http://de.wikipedia.org/wiki/Hochfrequenzlitze HF-Litze], welche aus sehr vielen, sehr dünnen, gegeneinander isolierten Drähten besteht. Diese lässt sich deutlich besser wickeln und wirkt dem Skineffekt entgegen.&lt;br /&gt;
&lt;br /&gt;
== MOSFET-Variante ==&lt;br /&gt;
[[Datei:WurthWE-WPCC.png| thumb | 300px | right | Auswahl bestimmter Würth Ladespulen. Links unten die kleinste Ladespule mit 10uH, mittig oben 6.8uH, rechts unten 6.8uH mit einem Neodym-Magnet in der Mitte.]]&lt;br /&gt;
Man kann die Primärseite des Trafos mit Mittelanzapfung und Steuerwicklung auch durch eine einfache Spule ersetzen, wenn man MOSFETs statt Bipolartransistoren nutzt und die Betriebsspannung über zwei Spulen an den Enden der Primärwicklung einspeist. Das vereinfacht den Aufbau der Primärspule deutlich, was u.a. bei bei höheren Leistungen günstig ist. Der Preis dafür ist, daß man zwei Spulen mit etwa der doppelten Induktivität benötigt. Ebenfalls werden dazu geeignete Flachspulen von Herstellern wie Würth, TDK, .. (siehe Abbildung rechts) produziert (Stichwort: Ladespule bzw. charging coil).&lt;br /&gt;
&lt;br /&gt;
Die unten abgebildete Mosfet-Schaltung baut auf diesem [http://www.mikrocontroller.net/topic/278961#2948009 Beitrag] auf, in dem auch weitere Erklärungen der Funktionsweise sowie zahlreiche Dimensionierungs-Beispiele enthalten sind.&lt;br /&gt;
[[Datei:Royer MOSFET.png| thumb | 600px | left | MOSFET-Schaltung des Royer Converters]]&lt;br /&gt;
&lt;br /&gt;
{{Clear}}&lt;br /&gt;
&lt;br /&gt;
[[Datei:Royer_MOSFET_Aufbau.jpg| thumb | 300px | right | Der beschriebene Aufbau mit Logic-Level MOSFETs. Von links nach rechts: Die Royer-Converter Schaltung an welche die kleine Würth Ladespule mit 10uH angeschlossen ist. Darüber die selbst gewickelte Empfangsspule sowie der Ferritkern welcher im Betrieb hinter die Empfangsspule befestigt wird. Die Empfangsspule ist mit dem Gleichrichter verbunden welcher den DC-DC Buck-Converter speist. Der Lastwiderstand ist rechts außen sichtbar. Im Betrieb sind beide Spulen parallel übereinander ausgerichtet im Abstand von 3mm, getrennt durch eine Acrylplatte. ]]&lt;br /&gt;
&lt;br /&gt;
Beispieleinsatz:&lt;br /&gt;
&lt;br /&gt;
Die in obiger Schaltung verwendeten Bauteile sind für eine drahtlose Energieübertragung mit einer Eingangsspannung von 5V, einer Ausgangsspannung von 5V und Ausgangsleistung von 2.2W bei einem Abstand von 3mm ausgelegt. Als Primärspule wird eine Würth 10uH Ladespule verwendet, als Sekundärspule eine selbstgewickelte Flachspule mit 14mm Durchmesser und 14 Wicklungen auf deren Rückseite ein Pot Core Ferritkern (3H1) zur Leistungsverbesserung plaziert ist. Die hier verwendeten Mosfets sind Logic-Level-Mosfets und nicht für hohe Eingangsspannungen ausgelegt (im oben genannten Beitrag finden sich Beispiele für Eingangsspannungen &amp;gt;10V). Um die ungeregelte Ausgangsspannung auf 5V zu stabilisieren wird der Texas Instruments TPS54331 Buck-Converter verwendet (nicht in der Schaltung aufgeführt), der eine Ein-/Ausschalthysterese besitzt um nur bei geeigneter Orientierung der Spulen einzuschalten und dadurch stabile 5V erzeugen kann. Die komplette Schaltung ist mit SMD Bauteilen und 0.1uF NP0 50V Kondensatoren in der Bauform 1206 aufgebaut worden (siehe rechte Abbildung). Bei den Spulen L1 und L2 muss ein Mittelmaß zwischen Baugröße, Induktivität und Widerstand gefunden werden. Bei gleichbleibender Baugröße stellte 100uH die optimale Wahl im Vergleich zu 47uH (zu geringe Induktivität) und 220uH (zu hoher Widerstand) dar. Die so aufgebaute Schaltung arbeitet bei 115kHz und es wird momentan ein Wirkungsgrad von von ca 58% erreicht mit einer Last von 450mA am 5V Ausgang.&lt;br /&gt;
&lt;br /&gt;
Wie im Artikel beschrieben, kann die Effizienz gesteigert werden, indem die Fläche der Sekundärspule vergrößert wird, Lastanpassung vorgenommen wird, optimiertere Ferrit-Kerne verwendet werden etc. Bei identischer Primär- und Sekundärspule (Würth 10uH), im Abstand von 5mm, und einem Lastwiderstand von 68 Ohm direkt am Delon-Brückengleichrichter angeschlossen (ohne DC-DC Converter) wurde in einem kurzen Versuch eine Effizienz von ca. 70% gemessen, bei einer Ausgangsleistung von ca. 4W (19V@220mA) mit sonst unveränderten Parametern (5V@1.2A Eingang, selbe Schaltung). Da an der Schaltung nichts verändert wurde und auch der Lastwiderstand zufällig gewählt wurde ist es offensichtlich, dass der maximale Wirkungsgrad noch nicht erreicht ist.&lt;br /&gt;
 &lt;br /&gt;
== Siehe auch ==&lt;br /&gt;
&lt;br /&gt;
* [[Spule]]&lt;br /&gt;
* [[Transformatoren und Spulen]]&lt;br /&gt;
&lt;br /&gt;
== Diskussionen im Forum ==&lt;br /&gt;
&lt;br /&gt;
*[http://www.mikrocontroller.net/topic/118124#new Verwendung in einem Induktionsofen, MOSFETs als Schalter]&lt;br /&gt;
*[http://www.mikrocontroller.net/topic/151538#new Verwendung in einem Induktionsofen, neuer Thread]&lt;br /&gt;
* [http://www.mikrocontroller.net/topic/263161#2734278 Dokumente über Induktionskochfelder]&lt;br /&gt;
*[http://www.mikrocontroller.net/attachment/61266/Induktive_Energie_bertragung.pdf Dokument über drahtlose Energieübertragung]&lt;br /&gt;
*[http://www.mikrocontroller.net/topic/80808#675198 Komplettes Projekt einer Propelleruhr und lange Diskussion]&lt;br /&gt;
*[http://www.mikrocontroller.net/topic/61706#489279 Noch eine Propelleruhr]&lt;br /&gt;
*[http://www.mikrocontroller.net/topic/155778#1529891 Royer Converter mit Schalenkernen und 20W Ausgangsleistung]&lt;br /&gt;
*[http://www.mikrocontroller.net/topic/152785#1540938 Royer Converter mit Luftspulen und 14W Ausgangsleistung]&lt;br /&gt;
* [http://www.mikrocontroller.net/topic/152785#1712213 Kleiner Royer Converter für einen Propellerglobus]&lt;br /&gt;
*[http://www.mikrocontroller.net/topic/214735#new Herleitung der Formeln im Artikel Royer Converter]&lt;br /&gt;
* [http://www.mikrocontroller.net/topic/219148?goto=2195298#2195298 berührungslos Bleigel Akku laden, 12V/1,6W]&lt;br /&gt;
* [http://www.mikrocontroller.net/topic/221845?goto=2238458#2238458 Kleiner Wandler für 5V/250mW]&lt;br /&gt;
* [http://www.mikrocontroller.net/topic/152785#2447793 Automatische Lasterkennung und Steuerung für den Royer Converter]&lt;br /&gt;
* [http://www.mikrocontroller.net/topic/278961#2948009 RFID Spulen für Leistungsübertragung?]&lt;br /&gt;
* [http://www.mikrocontroller.net/topic/goto_post/2937446 Flachspule 1 mH -- wie selbst herstellen?]&lt;br /&gt;
* [http://www.mikrocontroller.net/topic/297295 Leistungsverbesserung Royer Converter]&lt;br /&gt;
* [http://www.mikrocontroller.net/topic/263068#new WiTricity heute]&lt;br /&gt;
&lt;br /&gt;
== Weblinks ==&lt;br /&gt;
&lt;br /&gt;
*[http://www.serious-technology.de/kleiner-wandler.htm Kleiner Wandler]: Sehr ausführliche Beschreibung des Aufbaus und Berechnung der Komponenten&lt;br /&gt;
*[http://www.serious-technology.de/ernsthafter_wandler.htm Ernsthafter Wandler]: Das Ganze nochmal in Groß&lt;br /&gt;
* [http://www.google.de/url?url=http://www.rrc-wireless-power.com/fileadmin/website_wireless_power/Dokumente/Whitepapers/RRC_WirelessPower_Kontaktlose_Energie___Datenuebertragung_D_E_Entwicklerforum_2008.pdf&amp;amp;rct=j&amp;amp;sa=U&amp;amp;ei=Fx7CUJXXJqSl4ASniIHoBg&amp;amp;ved=0CCUQFjACOAo&amp;amp;q=kontaktlose+energie%C3%BCbertragung&amp;amp;usg=AFQjCNE6dSlRmsaMDw8EnvLmJ3ovOZe2EA Dokument] zur kontaktlosen Energieübertragung&lt;br /&gt;
*[[media: an14.pdf | AN14]]: Application Note von Zetex, englisch&lt;br /&gt;
*[[media: dn164f.pdf | DN164]]: Design Note von Linear Technology, englisch&lt;br /&gt;
*[http://www.linear.com/docs/26421 Linear Technology Application Note 118:] High Voltage, Low Noise, DC/DC Converters (mit primärgeregeltem Royer-Converter)&lt;br /&gt;
*[http://4hv.org/e107_plugins/forum/forum_viewtopic.php?74096.0 Schönes Projekt zur kontaktlosen Energieübertragung] &amp;lt;---- Achtung: Seite hat einen Virus!!!&lt;br /&gt;
*[http://www.youtube.com/watch?v=2ODW-ntPHSU Video zum Projekt]&lt;br /&gt;
*[http://www.joretronik.de/Oszillatoren/Oszillatoren.html Royer-Hochleistungsoszillatoren mit MOSFETs und IGBTs]&lt;br /&gt;
*[http://www.joretronik.de/Web_NT_Buch/Kap11_2/Kapitel11_2.html Diverse Schaltungsbeispiele]&lt;br /&gt;
*[http://www.joretronik.de/Web_NT_Buch/Kap13_2/Kapitel13_2.html#13.2.2 Royer Oszillator für CCFL-Lampen]&lt;br /&gt;
* [http://mitglied.multimania.de/lvane/js_code/loop/loop.html Induktivität einer Kreisringspule]&lt;br /&gt;
* [http://home.planet.nl/~sloma000/Baxandall%20parallel-resonant%20Class-D%20oscillator1.htm The Baxandall parallel-resonant Class-D oscillator]&lt;br /&gt;
* [http://www.ti.com/ww/de/analog/wireless_power_solutions/index.shtml?DCMP=hpa_pmp_bq51013_de&amp;amp;HQS=Other+BA+bq51013-bpde bq51013], IC zur kontaklosen Energieübertragung von [http://www.ti.com TI], Evaluationboard verfügbar&lt;br /&gt;
* [http://www.wirelesspowerconsortium.com/ Wireless Power Consortium], definiert einen Standard zur kontaktlosen Energieübertragung (Qi)&lt;br /&gt;
* Kontaktlose Energieübertragungslösungen von Firmen&lt;br /&gt;
** [http://www.schleifring.de/de/Produkte/Technologien/Kontaktlose._.Uebertragung/energie.uebertragung.php Schleifring], 100W - 200kW&lt;br /&gt;
** [http://www.j-lasslop.de/produkte/kontaktlose-energie-und-datenuebertragung.html J-Lasselop], Mikrowatt bis 500kW&lt;br /&gt;
** [http://www.enasys.de/de/produkte/kontaktlose-energieuebertragung.html EnASYS], 60W-500kW&lt;br /&gt;
** [http://www.kontenda.de KONTENDA], 1W-2kW&lt;br /&gt;
** [http://www.mesa-systemtechnik.de MESA Systemtechnik], Power- und Sensortelemetrie&lt;br /&gt;
** [http://www.wirelesspower.cn Wirelesspower], Anbieter von verschiedenen ICs und Modulen von 1W-3kW&lt;br /&gt;
** [http://www.rrc-ps.de/de/produkte/kabellose-energieuebertragung/plattformen.html RRC Power Solutions] - Plattform Kabellose Energie- / Datenübertragung, 5W, Qi kompatibel&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Spannungsversorgung und Energiequellen]]&lt;/div&gt;</summary>
		<author><name>Frank m35</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=Datei:Royer_MOSFET_Aufbau.jpg&amp;diff=80934</id>
		<title>Datei:Royer MOSFET Aufbau.jpg</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=Datei:Royer_MOSFET_Aufbau.jpg&amp;diff=80934"/>
		<updated>2014-01-17T20:08:03Z</updated>

		<summary type="html">&lt;p&gt;Frank m35: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Frank m35</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=Datei:WurthWE-WPCC.png&amp;diff=80933</id>
		<title>Datei:WurthWE-WPCC.png</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=Datei:WurthWE-WPCC.png&amp;diff=80933"/>
		<updated>2014-01-17T20:06:50Z</updated>

		<summary type="html">&lt;p&gt;Frank m35: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Frank m35</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=Datei:Royer_MOSFET.png&amp;diff=80920</id>
		<title>Datei:Royer MOSFET.png</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=Datei:Royer_MOSFET.png&amp;diff=80920"/>
		<updated>2014-01-17T10:46:25Z</updated>

		<summary type="html">&lt;p&gt;Frank m35: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Frank m35</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=Diskussion:Transformatoren_und_Spulen&amp;diff=80825</id>
		<title>Diskussion:Transformatoren und Spulen</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=Diskussion:Transformatoren_und_Spulen&amp;diff=80825"/>
		<updated>2014-01-12T15:37:22Z</updated>

		<summary type="html">&lt;p&gt;Frank m35: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Mein Vorschlag zur korrekten Einheitendarstellung ist wohl untergegangen. Ich habe mal die Gleichung für den magnetischen fluss auf eine korrekte Schreibweise geändert.&lt;br /&gt;
Joe&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
klingt alles irgendwie sogar nicht Wiki mäßig... persönliche Anrede und so...--[[Benutzer:Docean|Docean]] 08:23, 11. Mär. 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Was wohl daran liegt, daß es eine 1:1 Übersetzung ist. Siehe Vorwort.&lt;br /&gt;
&lt;br /&gt;
MFG&lt;br /&gt;
Falk&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Schön wäre noch die Schaltung des Netzteils.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
????&lt;br /&gt;
Das gehört hier nicht rein, es geht um physikalische Grundlagen an Induktivitäten, nicht um Schaltungstechnik. Aber mach doch einfach einen neuen Artikel über Netzteile auf und verlinke hierher.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Die Skizze wäre hilfreich, um das nachvollziehen zu können, was über die Spannungsbelastung des Schalttransistors gesagt wird.&lt;br /&gt;
&lt;br /&gt;
Wäre es nicht günstiger, statt Wb Vs und statt J Ws als Einheiten zu nehmen? Dann sind Dimensionsbetrachtungen leichter durchzuziehen und 1 H ist dann offensichlich 1 Vs / A*Windung. Die A*Windung findet man in den Datenblättern der Kerne wieder.&lt;br /&gt;
&lt;br /&gt;
--[[Benutzer:Uhu|Uhu]] 00:11, 21. Mär. 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
Kann es sein, dass die Gleichung unter (4) grosser unfug ist? Weshalb sollte man eine Einheit fuer die Anzahl der Windungen angeben? Und wieso steht da noch der Faktor drin? Eigentlich koennte die Zeile einfach weg, oder?&lt;br /&gt;
--[[Benutzer:Demo|Demo]] 07:44, 22. Mai 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
&amp;gt;Kann es sein, dass die Gleichung unter (4) grosser unfug ist?&lt;br /&gt;
&lt;br /&gt;
Nö.&lt;br /&gt;
&lt;br /&gt;
&amp;gt; Weshalb sollte man eine Einheit fuer die Anzahl der Windungen angeben?&lt;br /&gt;
&lt;br /&gt;
Das ist mehr oder weniger nur aus formalen Gründen so, weil es für alle Formeln die entsprechnde Einheitenformel gibt. Und formal gibt es sogar die Einheit 1 (eins) für einheitenlose Parameter.&lt;br /&gt;
&lt;br /&gt;
&amp;gt; Und wieso steht da noch der Faktor drin?&lt;br /&gt;
&lt;br /&gt;
Artikel lesen!&lt;br /&gt;
&lt;br /&gt;
&amp;gt; Eigentlich koennte die Zeile einfach &amp;gt;weg, oder?&lt;br /&gt;
&lt;br /&gt;
Keineswegs!&lt;br /&gt;
&lt;br /&gt;
Falk&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
Die Einheitengleichungen sollten auch Einheitengleichungen sein, also:&lt;br /&gt;
1H = 1 Vs/A&lt;br /&gt;
und NICHT [H] = Vs/A&lt;br /&gt;
&lt;br /&gt;
Die Klammer ist für die Darstellung [L] = H gedacht&lt;br /&gt;
&lt;br /&gt;
Joe&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Bitte den Abschnitt Trenntrafo in einen eigenen Artikel packen. Und es wäre nicht schlecht, einen Artikel halbwegs fertig einzustellen, das kann man offleine vorbereiten. Offene Baustellen und angefangene Artikel gibt es hier schon genug!&lt;br /&gt;
&lt;br /&gt;
Danke&lt;br /&gt;
Falk&lt;br /&gt;
&lt;br /&gt;
Ich hab noch eine Unklarheit,&lt;br /&gt;
Sie haben geschrieben das die Spule 35 Ohm besitzt.&lt;br /&gt;
Wie sind Sie da auf die 0,32 Ampere gekommen?&lt;br /&gt;
Kann man dies ausrechnen?&lt;br /&gt;
&lt;br /&gt;
-----&lt;br /&gt;
&lt;br /&gt;
Einfach mal den Abschnitt &amp;quot;Leistung&amp;quot; lesen und drüber nachdenken. Es steht alles drin. Und wenn man es beim ersten Mal Lesen nciht verstehen, nochmal lesen. Im Zweifelsfall drei oder viermal.&lt;br /&gt;
&lt;br /&gt;
Wie wählt man die Größe der Bleche des Eisenkerns?&lt;br /&gt;
Je mehr Watt der Trafo hat desto größer muss er sein.&lt;br /&gt;
Gibt es dazu eine Formel?&lt;br /&gt;
&lt;br /&gt;
-----&lt;br /&gt;
07.10.2013&lt;br /&gt;
&lt;br /&gt;
Also ich komme irgendwie ins schleudern, wie man von&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;(1)\quad \Phi = \frac{U \cdot t}{N}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
und&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;(3)\quad L = \frac{\Phi}{I}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
auf&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;L = \frac{\Phi \cdot N}{I}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
kommt. Wenn ich (1) in (3) einsetze, hätte ich dies:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;L = \frac{\frac{U \cdot t}{N}}{I}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
bzw.&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;L = \frac{U \cdot t}{N \cdot I}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Das wäre aber Blödsinn, denn N gehört natürlich nach oben.&lt;br /&gt;
Oder muss&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;(1)\quad \Phi = \frac{U \cdot t}{N}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
in&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;L = \frac{\Phi \cdot N}{I}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
eingesetzt werden?&lt;br /&gt;
Das wäre ja auch Quark, da dann N komplett rausfallen würde ...&lt;br /&gt;
&lt;br /&gt;
Das ist nicht eindeutig, aber ich sehe gerade den Fehler nicht ... :-/&lt;br /&gt;
&lt;br /&gt;
Gruß&lt;br /&gt;
&lt;br /&gt;
Jobst&lt;br /&gt;
----&lt;br /&gt;
Korrekt, es ist falsch was da steht. Im englischen Original wird das Problem geschickt umgangen indem die Einheiten anstatt die Variablen verwendet wird.&lt;br /&gt;
In der deutschen Übersetzung wird jedoch der verkettete Fluss mit dem magnetischen Fluss gleichgesetzt.&lt;br /&gt;
Ich unterscheide dies wieder nicht um zu verdeutlichen was im Beitrag gemeint ist:&lt;br /&gt;
:&amp;lt;math&amp;gt;(1)\quad \Phi = \frac{U \cdot t}{N}&amp;lt;/math&amp;gt;&lt;br /&gt;
:&amp;lt;math&amp;gt;(3)\quad L = \frac{\Phi}{I} = \frac{U \cdot t}{I}&amp;lt;/math&amp;gt;&lt;br /&gt;
wenn man nun (1) und die zweite Umformung von (3) ineinandersetzt, so kommt man auf das gewünsche Ergebnis:&lt;br /&gt;
:&amp;lt;math&amp;gt;L = \frac{\Phi \cdot N}{I}&amp;lt;/math&amp;gt;&lt;br /&gt;
was natürlich im Widerspruch zum ersten Teil von (3) steht. Das liegt eben daran, dass der verkette magnetische Fluss&lt;br /&gt;
:&amp;lt;math&amp;gt;\Psi= N \cdot \Phi&amp;lt;/math&amp;gt;&lt;br /&gt;
ist und die zu berechnete Induktivität eben nicht aus einer Windung sondern vielen besteht, somit &lt;br /&gt;
:&amp;lt;math&amp;gt;(3)\quad L = \frac{\Psi}{I}&amp;lt;/math&amp;gt;&lt;br /&gt;
gesucht ist.&lt;br /&gt;
Wie gesagt im englischen Original ist es geschickt für den Autor umgangen worden, wodurch es fehlerhaft in der deutschen Übesetzung wurde da es in physikalisch korrekte Formeln 1:1 übersetzt wurde, was so nicht funktioniert.&lt;br /&gt;
Kurz und knapp:&lt;br /&gt;
Der Abschnitt ist für die Katz :-)&lt;br /&gt;
Korrekterweise geht man das über das Integral an: http://de.wikipedia.org/wiki/Magnetischer_Fluss#Verketteter_Fluss.2C_Verkettungsfluss.2C_Induktionsfluss&lt;br /&gt;
----&lt;br /&gt;
OK, darüber bin ich auch schon gestolpert, konnte es aber nicht erklären. Gut, das hätten wir jetzt.&lt;br /&gt;
Also sollte man den Verkettungsfluß einführen? Oder besser die Unterscheidung machen und N behalten?&lt;br /&gt;
Ich bin für die 2. Lösung.&lt;br /&gt;
----&lt;br /&gt;
Was du genau mit &#039;Unterscheidung machen und N behalten&#039; und dabei nicht den Verkettungsfluss einführen verstehst, verstehe ich gerade nicht.&lt;br /&gt;
&lt;br /&gt;
Ich hätte jetzt als mögliche Lösung vorgeschlagen auf N in allen Formeln erstmal zu verzichten und nur eine Leiterschleife verwendet. Dann hätte man das alles bequem durchrechnen können.&lt;br /&gt;
Am Ende des Abschnitts bei der Einführung der Induktivität dann gesagt, was passiert wenn man nun mehr Windungen hat, dass dadurch die Fläche sich vergrößert, man somit mit N multiplizieren muss, was einleuchtend ist. Und dann (1) dahinter anschließen um zu sehen was es für Auswirkungen auf den Fluss hat (eben geteilt durch N), der Vollständigkeitshalber und um auch noch am englischen Original zu bleiben.&lt;br /&gt;
&lt;br /&gt;
Ich tu mir mit E-Dyn aber selbst auch immer recht schwer, von daher keine Ahnung ob das nun besser ist :-)&lt;/div&gt;</summary>
		<author><name>Frank m35</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=Diskussion:Transformatoren_und_Spulen&amp;diff=80820</id>
		<title>Diskussion:Transformatoren und Spulen</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=Diskussion:Transformatoren_und_Spulen&amp;diff=80820"/>
		<updated>2014-01-12T11:01:27Z</updated>

		<summary type="html">&lt;p&gt;Frank m35: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Mein Vorschlag zur korrekten Einheitendarstellung ist wohl untergegangen. Ich habe mal die Gleichung für den magnetischen fluss auf eine korrekte Schreibweise geändert.&lt;br /&gt;
Joe&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
klingt alles irgendwie sogar nicht Wiki mäßig... persönliche Anrede und so...--[[Benutzer:Docean|Docean]] 08:23, 11. Mär. 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Was wohl daran liegt, daß es eine 1:1 Übersetzung ist. Siehe Vorwort.&lt;br /&gt;
&lt;br /&gt;
MFG&lt;br /&gt;
Falk&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Schön wäre noch die Schaltung des Netzteils.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
????&lt;br /&gt;
Das gehört hier nicht rein, es geht um physikalische Grundlagen an Induktivitäten, nicht um Schaltungstechnik. Aber mach doch einfach einen neuen Artikel über Netzteile auf und verlinke hierher.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Die Skizze wäre hilfreich, um das nachvollziehen zu können, was über die Spannungsbelastung des Schalttransistors gesagt wird.&lt;br /&gt;
&lt;br /&gt;
Wäre es nicht günstiger, statt Wb Vs und statt J Ws als Einheiten zu nehmen? Dann sind Dimensionsbetrachtungen leichter durchzuziehen und 1 H ist dann offensichlich 1 Vs / A*Windung. Die A*Windung findet man in den Datenblättern der Kerne wieder.&lt;br /&gt;
&lt;br /&gt;
--[[Benutzer:Uhu|Uhu]] 00:11, 21. Mär. 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
Kann es sein, dass die Gleichung unter (4) grosser unfug ist? Weshalb sollte man eine Einheit fuer die Anzahl der Windungen angeben? Und wieso steht da noch der Faktor drin? Eigentlich koennte die Zeile einfach weg, oder?&lt;br /&gt;
--[[Benutzer:Demo|Demo]] 07:44, 22. Mai 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
&amp;gt;Kann es sein, dass die Gleichung unter (4) grosser unfug ist?&lt;br /&gt;
&lt;br /&gt;
Nö.&lt;br /&gt;
&lt;br /&gt;
&amp;gt; Weshalb sollte man eine Einheit fuer die Anzahl der Windungen angeben?&lt;br /&gt;
&lt;br /&gt;
Das ist mehr oder weniger nur aus formalen Gründen so, weil es für alle Formeln die entsprechnde Einheitenformel gibt. Und formal gibt es sogar die Einheit 1 (eins) für einheitenlose Parameter.&lt;br /&gt;
&lt;br /&gt;
&amp;gt; Und wieso steht da noch der Faktor drin?&lt;br /&gt;
&lt;br /&gt;
Artikel lesen!&lt;br /&gt;
&lt;br /&gt;
&amp;gt; Eigentlich koennte die Zeile einfach &amp;gt;weg, oder?&lt;br /&gt;
&lt;br /&gt;
Keineswegs!&lt;br /&gt;
&lt;br /&gt;
Falk&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
Die Einheitengleichungen sollten auch Einheitengleichungen sein, also:&lt;br /&gt;
1H = 1 Vs/A&lt;br /&gt;
und NICHT [H] = Vs/A&lt;br /&gt;
&lt;br /&gt;
Die Klammer ist für die Darstellung [L] = H gedacht&lt;br /&gt;
&lt;br /&gt;
Joe&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Bitte den Abschnitt Trenntrafo in einen eigenen Artikel packen. Und es wäre nicht schlecht, einen Artikel halbwegs fertig einzustellen, das kann man offleine vorbereiten. Offene Baustellen und angefangene Artikel gibt es hier schon genug!&lt;br /&gt;
&lt;br /&gt;
Danke&lt;br /&gt;
Falk&lt;br /&gt;
&lt;br /&gt;
Ich hab noch eine Unklarheit,&lt;br /&gt;
Sie haben geschrieben das die Spule 35 Ohm besitzt.&lt;br /&gt;
Wie sind Sie da auf die 0,32 Ampere gekommen?&lt;br /&gt;
Kann man dies ausrechnen?&lt;br /&gt;
&lt;br /&gt;
-----&lt;br /&gt;
&lt;br /&gt;
Einfach mal den Abschnitt &amp;quot;Leistung&amp;quot; lesen und drüber nachdenken. Es steht alles drin. Und wenn man es beim ersten Mal Lesen nciht verstehen, nochmal lesen. Im Zweifelsfall drei oder viermal.&lt;br /&gt;
&lt;br /&gt;
Wie wählt man die Größe der Bleche des Eisenkerns?&lt;br /&gt;
Je mehr Watt der Trafo hat desto größer muss er sein.&lt;br /&gt;
Gibt es dazu eine Formel?&lt;br /&gt;
&lt;br /&gt;
-----&lt;br /&gt;
07.10.2013&lt;br /&gt;
&lt;br /&gt;
Also ich komme irgendwie ins schleudern, wie man von&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;(1)\quad \Phi = \frac{U \cdot t}{N}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
und&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;(3)\quad L = \frac{\Phi}{I}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
auf&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;L = \frac{\Phi \cdot N}{I}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
kommt. Wenn ich (1) in (3) einsetze, hätte ich dies:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;L = \frac{\frac{U \cdot t}{N}}{I}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
bzw.&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;L = \frac{U \cdot t}{N \cdot I}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Das wäre aber Blödsinn, denn N gehört natürlich nach oben.&lt;br /&gt;
Oder muss&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;(1)\quad \Phi = \frac{U \cdot t}{N}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
in&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;L = \frac{\Phi \cdot N}{I}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
eingesetzt werden?&lt;br /&gt;
Das wäre ja auch Quark, da dann N komplett rausfallen würde ...&lt;br /&gt;
&lt;br /&gt;
Das ist nicht eindeutig, aber ich sehe gerade den Fehler nicht ... :-/&lt;br /&gt;
&lt;br /&gt;
Gruß&lt;br /&gt;
&lt;br /&gt;
Jobst&lt;br /&gt;
----&lt;br /&gt;
Korrekt, es ist falsch was da steht. Im englischen Original wird das Problem geschickt umgangen indem die Einheiten anstatt die Variablen verwendet wird.&lt;br /&gt;
In der deutschen Übersetzung wird jedoch der verkettete Fluss mit dem magnetischen Fluss gleichgesetzt.&lt;br /&gt;
Ich unterscheide dies wieder nicht um zu verdeutlichen was im Beitrag gemeint ist:&lt;br /&gt;
:&amp;lt;math&amp;gt;(1)\quad \Phi = \frac{U \cdot t}{N}&amp;lt;/math&amp;gt;&lt;br /&gt;
:&amp;lt;math&amp;gt;(3)\quad L = \frac{\Phi}{I} = \frac{U \cdot t}{I}&amp;lt;/math&amp;gt;&lt;br /&gt;
wenn man nun (1) und die zweite Umformung von (3) ineinandersetzt, so kommt man auf das gewünsche Ergebnis:&lt;br /&gt;
:&amp;lt;math&amp;gt;L = \frac{\Phi \cdot N}{I}&amp;lt;/math&amp;gt;&lt;br /&gt;
was natürlich im Widerspruch zum ersten Teil von (3) steht. Das liegt eben daran, dass der verkette magnetische Fluss&lt;br /&gt;
:&amp;lt;math&amp;gt;\Psi= N \cdot \Phi&amp;lt;/math&amp;gt;&lt;br /&gt;
ist und die zu berechnete Induktivität eben nicht aus einer Windung sondern vielen besteht, somit &lt;br /&gt;
:&amp;lt;math&amp;gt;(3)\quad L = \frac{\Psi}{I}&amp;lt;/math&amp;gt;&lt;br /&gt;
gesucht ist.&lt;br /&gt;
Wie gesagt im englischen Original ist es geschickt für den Autor umgangen worden, wodurch es fehlerhaft in der deutschen Übesetzung wurde da es in physikalisch korrekte Formeln 1:1 übersetzt wurde, was so nicht funktioniert.&lt;br /&gt;
Kurz und knapp:&lt;br /&gt;
Der Abschnitt ist für die Katz :-)&lt;br /&gt;
Korrekterweise geht man das über das Integral an: http://de.wikipedia.org/wiki/Magnetischer_Fluss#Verketteter_Fluss.2C_Verkettungsfluss.2C_Induktionsfluss&lt;br /&gt;
&lt;br /&gt;
--[[Benutzer:Frank_m35|Frank]] 12:00, 12. Jan. 2014 (UTC)&lt;/div&gt;</summary>
		<author><name>Frank m35</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=Diskussion:Transformatoren_und_Spulen&amp;diff=80819</id>
		<title>Diskussion:Transformatoren und Spulen</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=Diskussion:Transformatoren_und_Spulen&amp;diff=80819"/>
		<updated>2014-01-12T10:59:42Z</updated>

		<summary type="html">&lt;p&gt;Frank m35: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Mein Vorschlag zur korrekten Einheitendarstellung ist wohl untergegangen. Ich habe mal die Gleichung für den magnetischen fluss auf eine korrekte Schreibweise geändert.&lt;br /&gt;
Joe&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
klingt alles irgendwie sogar nicht Wiki mäßig... persönliche Anrede und so...--[[Benutzer:Docean|Docean]] 08:23, 11. Mär. 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Was wohl daran liegt, daß es eine 1:1 Übersetzung ist. Siehe Vorwort.&lt;br /&gt;
&lt;br /&gt;
MFG&lt;br /&gt;
Falk&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Schön wäre noch die Schaltung des Netzteils.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
????&lt;br /&gt;
Das gehört hier nicht rein, es geht um physikalische Grundlagen an Induktivitäten, nicht um Schaltungstechnik. Aber mach doch einfach einen neuen Artikel über Netzteile auf und verlinke hierher.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Die Skizze wäre hilfreich, um das nachvollziehen zu können, was über die Spannungsbelastung des Schalttransistors gesagt wird.&lt;br /&gt;
&lt;br /&gt;
Wäre es nicht günstiger, statt Wb Vs und statt J Ws als Einheiten zu nehmen? Dann sind Dimensionsbetrachtungen leichter durchzuziehen und 1 H ist dann offensichlich 1 Vs / A*Windung. Die A*Windung findet man in den Datenblättern der Kerne wieder.&lt;br /&gt;
&lt;br /&gt;
--[[Benutzer:Uhu|Uhu]] 00:11, 21. Mär. 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
Kann es sein, dass die Gleichung unter (4) grosser unfug ist? Weshalb sollte man eine Einheit fuer die Anzahl der Windungen angeben? Und wieso steht da noch der Faktor drin? Eigentlich koennte die Zeile einfach weg, oder?&lt;br /&gt;
--[[Benutzer:Demo|Demo]] 07:44, 22. Mai 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
&amp;gt;Kann es sein, dass die Gleichung unter (4) grosser unfug ist?&lt;br /&gt;
&lt;br /&gt;
Nö.&lt;br /&gt;
&lt;br /&gt;
&amp;gt; Weshalb sollte man eine Einheit fuer die Anzahl der Windungen angeben?&lt;br /&gt;
&lt;br /&gt;
Das ist mehr oder weniger nur aus formalen Gründen so, weil es für alle Formeln die entsprechnde Einheitenformel gibt. Und formal gibt es sogar die Einheit 1 (eins) für einheitenlose Parameter.&lt;br /&gt;
&lt;br /&gt;
&amp;gt; Und wieso steht da noch der Faktor drin?&lt;br /&gt;
&lt;br /&gt;
Artikel lesen!&lt;br /&gt;
&lt;br /&gt;
&amp;gt; Eigentlich koennte die Zeile einfach &amp;gt;weg, oder?&lt;br /&gt;
&lt;br /&gt;
Keineswegs!&lt;br /&gt;
&lt;br /&gt;
Falk&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
Die Einheitengleichungen sollten auch Einheitengleichungen sein, also:&lt;br /&gt;
1H = 1 Vs/A&lt;br /&gt;
und NICHT [H] = Vs/A&lt;br /&gt;
&lt;br /&gt;
Die Klammer ist für die Darstellung [L] = H gedacht&lt;br /&gt;
&lt;br /&gt;
Joe&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Bitte den Abschnitt Trenntrafo in einen eigenen Artikel packen. Und es wäre nicht schlecht, einen Artikel halbwegs fertig einzustellen, das kann man offleine vorbereiten. Offene Baustellen und angefangene Artikel gibt es hier schon genug!&lt;br /&gt;
&lt;br /&gt;
Danke&lt;br /&gt;
Falk&lt;br /&gt;
&lt;br /&gt;
Ich hab noch eine Unklarheit,&lt;br /&gt;
Sie haben geschrieben das die Spule 35 Ohm besitzt.&lt;br /&gt;
Wie sind Sie da auf die 0,32 Ampere gekommen?&lt;br /&gt;
Kann man dies ausrechnen?&lt;br /&gt;
&lt;br /&gt;
-----&lt;br /&gt;
&lt;br /&gt;
Einfach mal den Abschnitt &amp;quot;Leistung&amp;quot; lesen und drüber nachdenken. Es steht alles drin. Und wenn man es beim ersten Mal Lesen nciht verstehen, nochmal lesen. Im Zweifelsfall drei oder viermal.&lt;br /&gt;
&lt;br /&gt;
Wie wählt man die Größe der Bleche des Eisenkerns?&lt;br /&gt;
Je mehr Watt der Trafo hat desto größer muss er sein.&lt;br /&gt;
Gibt es dazu eine Formel?&lt;br /&gt;
&lt;br /&gt;
-----&lt;br /&gt;
07.10.2013&lt;br /&gt;
&lt;br /&gt;
Also ich komme irgendwie ins schleudern, wie man von&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;(1)\quad \Phi = \frac{U \cdot t}{N}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
und&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;(3)\quad L = \frac{\Phi}{I}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
auf&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;L = \frac{\Phi \cdot N}{I}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
kommt. Wenn ich (1) in (3) einsetze, hätte ich dies:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;L = \frac{\frac{U \cdot t}{N}}{I}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
bzw.&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;L = \frac{U \cdot t}{N \cdot I}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Das wäre aber Blödsinn, denn N gehört natürlich nach oben.&lt;br /&gt;
Oder muss&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;(1)\quad \Phi = \frac{U \cdot t}{N}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
in&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;L = \frac{\Phi \cdot N}{I}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
eingesetzt werden?&lt;br /&gt;
Das wäre ja auch Quark, da dann N komplett rausfallen würde ...&lt;br /&gt;
&lt;br /&gt;
Das ist nicht eindeutig, aber ich sehe gerade den Fehler nicht ... :-/&lt;br /&gt;
&lt;br /&gt;
Gruß&lt;br /&gt;
&lt;br /&gt;
Jobst&lt;br /&gt;
----&lt;br /&gt;
Korrekt, es ist falsch was da steht. Im englischen Original wird das Problem geschickt umgangen indem die Einheiten anstatt die Variablen verwendet wird.&lt;br /&gt;
In der deutschen Übersetzung wird jedoch der verkettete Fluss mit dem magnetischen Fluss gleichgesetzt.&lt;br /&gt;
Ich unterscheide dies wieder nicht um zu verdeutlichen was im Beitrag gemeint ist:&lt;br /&gt;
:&amp;lt;math&amp;gt;(1)\quad \Phi = \frac{U \cdot t}{N}&amp;lt;/math&amp;gt;&lt;br /&gt;
:&amp;lt;math&amp;gt;(3)\quad L = \frac{\Phi}{I} = \frac{U \cdot t}{I}&amp;lt;/math&amp;gt;&lt;br /&gt;
wenn man nun (1) und die zweite Umformung von (3) ineinandersetzt, so kommt man auf das gewünsche Ergebnis:&lt;br /&gt;
:&amp;lt;math&amp;gt;L = \frac{\Phi \cdot N}{I}&amp;lt;/math&amp;gt;&lt;br /&gt;
was natürlich im Widerspruch zum ersten Teil von (3) steht. Das liegt eben daran, dass der verkette magnetische Fluss&lt;br /&gt;
:&amp;lt;math&amp;gt;\Psi= N \cdot \Phi&amp;lt;/math&amp;gt;&lt;br /&gt;
ist und die zu berechnete Induktivität eben nicht aus einer Windung sondern vielen besteht, somit &lt;br /&gt;
:&amp;lt;math&amp;gt;(3)\quad L = \frac{\Psi}{I}&amp;lt;/math&amp;gt;&lt;br /&gt;
gesucht ist.&lt;br /&gt;
Wie gesagt im englischen Original ist es geschickt für den Autor umgangen worden, wodurch es fehlerhaft in der deutschen Übesetzung wurde da es in physikalisch korrekte Formeln 1:1 übersetzt wurde, was so nicht funktioniert.&lt;br /&gt;
Kurz und knapp:&lt;br /&gt;
Der Abschnitt ist für die Katz :-)&lt;br /&gt;
Korrekterweise geht man das über das Integral an: http://de.wikipedia.org/wiki/Magnetischer_Fluss#Verketteter_Fluss.2C_Verkettungsfluss.2C_Induktionsfluss&lt;/div&gt;</summary>
		<author><name>Frank m35</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=STM32_f%C3%BCr_Einsteiger&amp;diff=80355</id>
		<title>STM32 für Einsteiger</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=STM32_f%C3%BCr_Einsteiger&amp;diff=80355"/>
		<updated>2013-12-31T14:50:36Z</updated>

		<summary type="html">&lt;p&gt;Frank m35: /* Eigene Fähigkeiten und Wünsche */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Immer wiederkehrend hier im Forum &amp;quot;Mit welchem Mikrocontroller anfangen?&amp;quot;. Es gibt eine große Auswahl und eben so viele Empfehlungen. In diesem Artikel soll zu erst geholfen werden ob ein STM32-Prozessor mit Cortex-M3/M4 Kern überhaupt der Richtige für den Start ist.&lt;br /&gt;
Nicht für jeden ist der STM32 zu empfehlen, denn die Anforderungen und Wünsche die man realisieren möchte, sowie die eigenen Fähigkeiten sind verschieden.&lt;br /&gt;
&lt;br /&gt;
Es werden meist die Prozessoren AVR, PIC, Arduino, MSP430 und STM32 empfohlen. Seltener auch 8051, LPC und M16C. Alle haben Vorzüge und ebenso auch Nachteile.&lt;br /&gt;
&lt;br /&gt;
= Eigene Fähigkeiten und Wünsche =&lt;br /&gt;
&lt;br /&gt;
Dieser Artikel geht davon aus, dass bereits Elektronik Kenntnisse vorhanden sind. Wenn nicht dann sollte man erst einmal den Artikel &amp;quot;[[Absolute Beginner]]&amp;quot; durcharbeiten, sowie die anderen Artikel aus der Kategorie &amp;quot;[http://www.mikrocontroller.net/articles/Kategorie:Grundlagen Grundlagen]&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Zu erst einmal die Randbedingungen, mit der man sich selbst zu erst einmal einschätzen sollte:&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|- bgcolor=&amp;quot;#d0d0ff&amp;quot;&lt;br /&gt;
! Fähigkeit || Empfehlung [[STM32]] || Empfehlung [[AVR]] || colspan=&amp;quot;3&amp;quot; | Empfehlung [[PIC]] || Empfehlung [[MSP430]] || Empfehlung Arduino&lt;br /&gt;
|-&lt;br /&gt;
| ||  ||  || align=&amp;quot;center&amp;quot; | 8-bit || align=&amp;quot;center&amp;quot; | 16-bit || align=&amp;quot;center&amp;quot; | 32-bit ||  || &lt;br /&gt;
|-&lt;br /&gt;
| Neueinsteiger, kaum Elektronikkenntnisse, noch nie programmiert &lt;br /&gt;
| align=&amp;quot;center&amp;quot; | O &lt;br /&gt;
| align=&amp;quot;center&amp;quot; | O &amp;lt;ref name=&amp;quot;AVR_TUT1&amp;quot;&amp;gt;[http://www.rn-wissen.de/index.php/AVR-Einstieg_leicht_gemacht], RoboterNetz: AVR-Einstieg leicht gemacht&amp;lt;/ref&amp;gt;&amp;lt;ref name=&amp;quot;AVR_TUT2&amp;quot;&amp;gt;[http://www.avr-asm-tutorial.net/avr_de/], Tutorial für das Erlernen der Assemblersprache von AVR-Einchip-Prozessoren&amp;lt;/ref&amp;gt;&lt;br /&gt;
| colspan=&amp;quot;3&amp;quot; align=&amp;quot;center&amp;quot; | O&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | O &lt;br /&gt;
| align=&amp;quot;center&amp;quot; | X&lt;br /&gt;
|-&lt;br /&gt;
| Wunsch ist SD-Card oder Grafik-Display&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | X &lt;br /&gt;
| align=&amp;quot;center&amp;quot; | O &lt;br /&gt;
| align=&amp;quot;center&amp;quot; | O &amp;lt;ref name=&amp;quot;PIC_SD&amp;quot;&amp;gt;[http://www.microchip.com/stellent/idcplg?IdcService=SS_GET_PAGE&amp;amp;nodeId=2680&amp;amp;dDocName=en537999], Microchip Memory Disk Drive File System for PIC18 PIC24 dsPIC PIC32&amp;lt;/ref&amp;gt; || align=&amp;quot;center&amp;quot; | X&amp;lt;ref name=&amp;quot;PIC_SD&amp;quot; /&amp;gt;&amp;lt;ref name=&amp;quot;PIC_LCD&amp;quot;&amp;gt;[http://www.microchip.com/pagehandler/en-us/technology/graphics/], Microchip Graphics Library&amp;lt;/ref&amp;gt; || align=&amp;quot;center&amp;quot; | X&amp;lt;ref name=&amp;quot;PIC_SD&amp;quot; /&amp;gt;&amp;lt;ref name=&amp;quot;PIC_LCD&amp;quot; /&amp;gt;&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | X &lt;br /&gt;
| align=&amp;quot;center&amp;quot; | X&lt;br /&gt;
|-&lt;br /&gt;
| Wunsch ist TCP/IP Netzwerk&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | X&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | O&lt;br /&gt;
| colspan=&amp;quot;3&amp;quot; align=&amp;quot;center&amp;quot; | X &amp;lt;ref name=&amp;quot;PIC_TCP&amp;quot;&amp;gt;[http://www.microchip.com/stellent/idcplg?IdcService=SS_GET_PAGE&amp;amp;nodeId=2505&amp;amp;param=en535724], Microchip TCP/IP stack&amp;lt;/ref&amp;gt;&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | O&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | O&lt;br /&gt;
|-&lt;br /&gt;
|-&lt;br /&gt;
| Wunsch ist Kamera und Video-/Bildbearbeitung&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | X&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | -&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | - || align=&amp;quot;center&amp;quot; | - || align=&amp;quot;center&amp;quot; | X&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | -&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | -&lt;br /&gt;
|-&lt;br /&gt;
| Möchte die Erkenntnisse beruflich nutzen &lt;br /&gt;
| align=&amp;quot;center&amp;quot; | X &lt;br /&gt;
| align=&amp;quot;center&amp;quot; | X&lt;br /&gt;
| colspan=&amp;quot;3&amp;quot; align=&amp;quot;center&amp;quot; | X&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | X&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | -&lt;br /&gt;
|-&lt;br /&gt;
| Strom sparende Anwendungen &lt;br /&gt;
| align=&amp;quot;center&amp;quot; | - &amp;lt;br&amp;gt; 300 nA Sleep&amp;lt;ref name=&amp;quot;STM_Power&amp;quot;&amp;gt;[http://www.st.com/web/en/catalog/mmc/FM141/SC1169/SS1295], STM32 L1 series of ultra-low-power MCUs&amp;lt;/ref&amp;gt;&amp;lt;br&amp;gt;230 μA/MHz&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | - &amp;lt;br&amp;gt;100 nA Sleep&amp;lt;ref name=&amp;quot;AVR_Power1&amp;quot;&amp;gt;[http://www.atmel.com/technologies/lowpower/default.aspx], Atmel picoPower Technology&amp;lt;/ref&amp;gt; &amp;lt;ref name=&amp;quot;AVR_Power2&amp;quot;&amp;gt;[http:/www.futurlec.com/News/Atmel/PicoPower.shtml], Atmel Releases New picoPower AVR Microcontrollers&amp;lt;/ref&amp;gt;&amp;lt;br&amp;gt;340 μA/MHz&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; align=&amp;quot;center&amp;quot; | X&amp;lt;br&amp;gt;9 nA Sleep&amp;lt;ref name=&amp;quot;PIC_XLPvsTI&amp;quot;&amp;gt;[http://ww1.microchip.com/downloads/en/DeviceDoc/39989A.pdf], The Truth about Power Consumption in PIC® MCUs with &lt;br /&gt;
XLP Technology vs. TI’s MSP430&amp;lt;/ref&amp;gt;&amp;lt;ref name=&amp;quot;PIC_XLP&amp;quot;&amp;gt;[http://ww1.microchip.com/downloads/en/DeviceDoc/30009941F.pdf], nanoWatt XLP eXtreme Low Power PIC® Microcontrollers&amp;lt;/ref&amp;gt;&amp;lt;br&amp;gt;35 μA/MHz || align=&amp;quot;center&amp;quot; | -&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | X &amp;lt;br&amp;gt; 100 nA Sleep&amp;lt;ref name=&amp;quot;TI_Power1&amp;quot;&amp;gt;[http://www.ti.com/lit/wp/slay015/slay015.pdf], Texas Instruments: Ultra-Low Power Comparison: MSP430 vs. Microchip XLP&amp;lt;/ref&amp;gt;&amp;lt;ref name=&amp;quot;TI_Power2&amp;quot;&amp;gt;[http://www.ti.com/ww/mx/multimedia/webcasts/Aspectos_Generales_MSP430.pdf], Texas Instruments: Meet MSP430&amp;lt;/ref&amp;gt;&amp;lt;br&amp;gt;100 μA/MHz &lt;br /&gt;
| align=&amp;quot;center&amp;quot; | -&lt;br /&gt;
|-&lt;br /&gt;
| Multithreading, RTOS, Schedulern &lt;br /&gt;
| align=&amp;quot;center&amp;quot; | X &lt;br /&gt;
| align=&amp;quot;center&amp;quot; | - &amp;lt;ref name=&amp;quot;AVR_RTOS1&amp;quot;&amp;gt;[http://www.freertos.org/a00098.html], Atmel AVR freeRTOS port&amp;lt;/ref&amp;gt;&amp;lt;ref name=&amp;quot;AVR_RTOS2&amp;quot;&amp;gt;[http://www.femtoos.org/], Femto OS: RTOS for small MCU&#039;s like AVR&amp;lt;/ref&amp;gt;&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | - &amp;lt;ref name=&amp;quot;PIC_RTOS2&amp;quot;&amp;gt;[http://www.freertos.org/a00097.html], Microchip PICmicro (PIC18) freeRTOS Port&amp;lt;/ref&amp;gt; &amp;lt;ref name=&amp;quot;PIC_RTOS3&amp;quot;&amp;gt;[http://www.pumpkininc.com/], Salvo RTOS&amp;lt;/ref&amp;gt;|| align=&amp;quot;center&amp;quot; | X&amp;lt;ref name=&amp;quot;PIC_RTOS&amp;quot;&amp;gt;[http://www.microchip.com/stellent/idcplg?IdcService=SS_GET_PAGE&amp;amp;nodeId=1406&amp;amp;dDocName=en531543&amp;amp;redirects=rtos], 3rd Party RTOS selection guide&amp;lt;/ref&amp;gt; || align=&amp;quot;center&amp;quot; | X&amp;lt;ref name=&amp;quot;PIC_RTOS&amp;quot; /&amp;gt;&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | X &amp;lt;ref name=&amp;quot;TI_RTOS&amp;quot;&amp;gt;[http://processors.wiki.ti.com/index.php/MSP430_Real_Time_Operating_Systems_Overview], TI Wiki: MSP430 Real Time Operating Systems Overview&amp;lt;/ref&amp;gt;&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | -&lt;br /&gt;
|-&lt;br /&gt;
| Besonders große, speicherintensive Programme&amp;lt;br&amp;gt;z.B. Grafiken, Fonts &lt;br /&gt;
| align=&amp;quot;center&amp;quot; | bis 2MB Flash&amp;lt;br&amp;gt;bis 256kB SRAM &lt;br /&gt;
| align=&amp;quot;center&amp;quot; | bis 256kB Flash&amp;lt;br&amp;gt;bis 16kB SRAM &lt;br /&gt;
| align=&amp;quot;center&amp;quot; | bis 128kB Flash&amp;lt;br&amp;gt;bis 4kB SRAM || bis 2MB Flash&amp;lt;br&amp;gt;bis 98kB SRAM || bis 2MB Flash&amp;lt;br&amp;gt;bis 512kB SRAM &lt;br /&gt;
| align=&amp;quot;center&amp;quot; | bis 512KB Flash&amp;lt;br&amp;gt;bis 66kB SRAM &lt;br /&gt;
| align=&amp;quot;center&amp;quot; | bis 256kB Flash&amp;lt;br&amp;gt;bis 16kB SRAM&lt;br /&gt;
|-&lt;br /&gt;
| Sehr viel PWM mit komplexem Timing&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | X &lt;br /&gt;
| align=&amp;quot;center&amp;quot; | AT90Spwm &lt;br /&gt;
| align=&amp;quot;center&amp;quot; | - || align=&amp;quot;center&amp;quot; | X || align=&amp;quot;center&amp;quot; | X&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | O &lt;br /&gt;
| align=&amp;quot;center&amp;quot; | -&lt;br /&gt;
|-&lt;br /&gt;
| Deutschsprachige Community &lt;br /&gt;
| align=&amp;quot;center&amp;quot; | O &lt;br /&gt;
| align=&amp;quot;center&amp;quot; | X &lt;br /&gt;
| align=&amp;quot;center&amp;quot; | X &amp;lt;ref name=&amp;quot;SPRUT&amp;quot;&amp;gt;[http://www.sprut.de/], sprut.de&amp;lt;/ref&amp;gt; || align=&amp;quot;center&amp;quot; | - || align=&amp;quot;center&amp;quot; | - &lt;br /&gt;
| align=&amp;quot;center&amp;quot; | - &lt;br /&gt;
| align=&amp;quot;center&amp;quot; | X&lt;br /&gt;
|-&lt;br /&gt;
| Anzahl möglicher HW-Breakpoints &lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 4 bis 6 &lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 2 &lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 1 bis 5 &amp;lt;ref name=&amp;quot;PIC_HWBP&amp;quot;&amp;gt;[http://www.microchip.com/stellent/groups/SiteComm_sg/documents/DeviceDoc/en556761.pdf], PIC Hardware Breakpoints (Seite 6)&amp;lt;/ref&amp;gt; || align=&amp;quot;center&amp;quot; | 1 bis 10 &amp;lt;ref name=&amp;quot;PIC_HWBP&amp;quot;/&amp;gt; || align=&amp;quot;center&amp;quot; | 6&amp;lt;ref name=&amp;quot;PIC_HWBP&amp;quot;/&amp;gt;&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 2 &lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 2&lt;br /&gt;
|}&lt;br /&gt;
* X = ja&lt;br /&gt;
* O = Teilweise, Einschränkungen&lt;br /&gt;
* - = nicht empfohlen&lt;br /&gt;
Nur um nicht zu verwirren, auch wenn Teile &amp;quot;nicht empfohlen&amp;quot; sind, heißt dass nicht dass es mit dem Prozessor nicht geht, vielmehr dass es mehr Aufwand ist das zu realisieren oder mehr Einschränkungen hat.&lt;br /&gt;
Viele Eigenschaften weisen nur bestimmte Modelle einer Mikrocontrollerfamilie auf, es gibt keine Eierlegende Wollmilchsau. Der Wechsel innerhalb einer Familie gestaltet sich jedoch oft einfach.&lt;br /&gt;
&lt;br /&gt;
Die Spalte PIC zeigt die Eigenschaften der 8-Bit PIC18 (vergleichbar mit [[AVR]]), 16-Bit [[PIC24]]/[[dsPIC]] (vergleichbar mit [[MSP430]]) und 32-Bit [[PIC32]] (vergleichbar mit [[STM32]]). Ein Wechsel des Mikrocontrollers innerhalb der Familien ist Codetechnisch problemlos möglich. &amp;lt;ref name=&amp;quot;PIC_codeswitch&amp;quot;&amp;gt;[http://www.elektor.nl/Uploads/Files/PIC24FIntro_5f082806.pdf], Microchip: Introduction to the 16-bit PIC24F Microcontroller Family&amp;lt;/ref&amp;gt; Hardwaretechnisch sind verschiedene Modelle gleicher Familie zudem auch meist Pin-Kompatibel &amp;lt;ref name=&amp;quot;PIC_PinCompatibility&amp;quot;&amp;gt;[http://ww1.microchip.com/downloads/en/DeviceDoc/00148m.pdf], Microchip: 2007 Product Selector Guide (Seite 114 ff.)&amp;lt;/ref&amp;gt; sodass ohne Design-Änderung zwischen verschiedenen Modellen gewechselt werden kann.&lt;br /&gt;
Ein Wechsel zwischen den Familien ist Architekturbedingt aufwendiger, vor allem von 8-Bit auf 16/32-Bit. &amp;lt;ref name=&amp;quot;PIC_8to16Migration&amp;quot;&amp;gt;[http://ww1.microchip.com/downloads/en/DeviceDoc/39764a.pdf], Microchip: PIC18F to PIC24F Migration: An Overview&amp;lt;/ref&amp;gt; Aufgrund gleichbleibender IDE (Mplab) sowie gleichbleibenden Libraries bei Verwendung einer Hochsprache (C) jedoch vor allem zwischen 16-Bit und 32-Bit ohne weitere Probleme möglich &amp;lt;ref name=&amp;quot;PIC_16to32Migration&amp;quot;&amp;gt;[http://www.embedded.com/design/mcus-processors-and-socs/4007683/Practical-migration-from-8-16-to-32-bit-PIC], Artikel: Practical migration from 8-/16- to 32-bit PIC&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&amp;lt;br&amp;gt;Ein PIC10/12/16 ist für den Einstieg nicht empfohlen, da diese Architekturbedingt viele Einschränkungen haben, die eher hinderlich für das Lernen sind.&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Unwichtige Randbedingungen =&lt;br /&gt;
&lt;br /&gt;
Oftmals werden fälschlicherweise Argumente für oder gegen eine µC-Familie ausgesprochen, die in der Praxis &#039;&#039;&#039;zum Einstieg&#039;&#039;&#039; (bei konkreten Anwendungen kann das anders aussehen) eher unwichtig sind.&lt;br /&gt;
&lt;br /&gt;
* Spannungsversorgung 3,3V / 5V&lt;br /&gt;
* 8 (z.B. [[AVR]]), 16 (z.B. [[MSP430]]) oder 32 (z.B. [[STM32]]) Bit&lt;br /&gt;
* Interrupt System mit mehr oder weniger Features&lt;br /&gt;
* Programmiersprache (Assembler, Basic, C, C++, Pascal)&lt;br /&gt;
* Assembler verstehen (Sollte nur theoretisch verstanden werden, ein Programm sollte in einer Hochsprache geschrieben sein)&lt;br /&gt;
* DIL Gehäuse - steckbretttauglich (STM32-Prozessoren gibt es auch fertig gelötet auf einem steckbretttauglichen Board zum fünffachen Preis vergleichbarer DIL Mikrocontroller)&lt;br /&gt;
* Programmieradapter&lt;br /&gt;
* zu 90% reicht doch ein kleiner Prozessor ([[AVR]]/PIC) - und für die restlichen kann man immer noch einen großen nehmen. Warum also nicht gleich einen großen nehmen?&lt;br /&gt;
&lt;br /&gt;
= Kosten =&lt;br /&gt;
&lt;br /&gt;
Grobe Abschätzung was das alles denn kosten wird. Hier sind nur einige Beispiele gezeigt (Einzelpreise bei Bezugsquellen in Deutschland).&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|- bgcolor=&amp;quot;#d0d0ff&amp;quot;&lt;br /&gt;
! Board || [[STM32]] || [[AVR]] || PIC18/24/32 || [[MSP430]] || Arduino&lt;br /&gt;
|-&lt;br /&gt;
| Demo-Board || align=&amp;quot;center&amp;quot;|[http://www.st.com/web/en/catalog/tools/FM116/SC959/SS1532/PF252419] 9..20€ (incl. Programmieradapter und Debugger) || align=&amp;quot;center&amp;quot;|5..500€, z.B. Arduino || align=&amp;quot;center&amp;quot;| [http://www.microchipdirect.com/ProductDetails.aspx?Catalog=BuyMicrochip&amp;amp;Category=Starter%20Kits&amp;amp;mid=1&amp;amp;lmid=610 durchschnittlich 18€ .. 50€] || align=&amp;quot;center&amp;quot;|[http://www.ti.com/tool/msp-exp430fr5739] ~35€ || align=&amp;quot;center&amp;quot;|20€&lt;br /&gt;
|-&lt;br /&gt;
| Steckbrettaugliches Board || align=&amp;quot;center&amp;quot;| s.o. oder [http://re.reworld.eu/de/produkte/s64dil-405/index.htm S64DIL-405] 30€ || align=&amp;quot;center&amp;quot;|0,6–5€ als einzelner DIP-IC || align=&amp;quot;center&amp;quot;|2-5€ als einzelner IC || align=&amp;quot;center&amp;quot;|?? || align=&amp;quot;center&amp;quot;|??&lt;br /&gt;
|-&lt;br /&gt;
| Programmieradapter || align=&amp;quot;center&amp;quot;|  || align=&amp;quot;center&amp;quot;| ab 4€ || align=&amp;quot;center&amp;quot;| || align=&amp;quot;center&amp;quot;| || align=&amp;quot;center&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Programmieradapter mit Debugger || align=&amp;quot;center&amp;quot;| s.o. oder z.B [http://www.segger.com/j-link-edu.html Segger J-LINK EDU] 50€ (sehr schnell und unterstützt viele Prozessoren) || align=&amp;quot;center&amp;quot;|?? || align=&amp;quot;center&amp;quot;|PICkit 3 30€ [http://www.microchipdirect.com/ProductSearch.aspx?keywords=PG164130] || align=&amp;quot;center&amp;quot;|z.B. Dragon 50€ || align=&amp;quot;center&amp;quot;|20€ (Man muss DebugWire aktivieren)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Das Demo-Board sollte ein Board sein, nicht zu teuer, um die ersten Erfahrungen zu sammeln. Wenn einem der Prozessor gefällt, so kann man später immer noch mit einem zweiten Demo-Board, z.B. mit Display aufrüsten.&lt;br /&gt;
&lt;br /&gt;
Wenn man gerne mit einem Steckbrett sich die Schaltung zusammen stecken möchte, so kann man entweder die benötigten Drähte am Demo-Board anlöten oder bei z.B. [[AVR]]/[[PIC]] Prozessoren gibt es Ausführungen im DIL Gehäuse, die direkt steckbar sind.&lt;br /&gt;
&lt;br /&gt;
Ein Programmieradapter sollte unbedingt auch einen Debugger beinhalten. Denn für den Start ist es ungemein hilfreich zu sehen was im Prozessor gerade geschieht. Die JTAG-Adapter für einen [[STM32]] Prozessor sind alle Debugger-Tauglich. Für einen [[AVR]] oder [[PIC]] Prozessor gibt es auch oft reine Programmer (oft Selbstbau-Lösungen über die serielle oder parallele Schnittstelle) welche den Mikrocontroller nur beschreiben können. Sinvoller sind hingegen Debugger (bspw. PIC Kit 3 [http://www.microchipdirect.com/ProductSearch.aspx?keywords=PG164130] kompatibel zu allen PIC Mikrocontrollern), die die Ausführung eines Mikrocontrollers anhalten können um die aktuelle Position im Programmcode, Variableninhalt, Register, ... auszulesen bzw. zur Laufzeit zu ändern.&lt;br /&gt;
&lt;br /&gt;
Der für den [[STM32]] empfohlene Segger J-LINK EDU ist zwar nicht der günstigste (z.B. auf einem STM32F4DISCOVERY Borad ist auch einer drauf den man für andere STM32 nutzen kann) aber eines der besten, mit sehr guten Software-Tools und nutzbar für alle Prozessoren mit ARM-Kern (ARM7/9/11/... Cortex-Mx). Niemals am Werkzeug sparen und man hat viel mehr Freude bei der Arbeit.&lt;br /&gt;
&lt;br /&gt;
Der &amp;quot;Arduino&amp;quot; ist kein eigenständiger Prozessor, sondern ein fertiges Board mit einer &amp;quot;Arduino&amp;quot; Programmierumgebung (und einem AVR Prozessor), extra geschaffen für Einsteiger. Allerdings ist da der Lerneffekt viel geringer da man den Prozessor mit der Arduino-Software programmiert und nicht direkt die Register.&lt;br /&gt;
&lt;br /&gt;
Ein [[PIC16]] ist ein älterer 8-Bit Mikrocontroller, der durch die [[PIC18]] Reihe abgelöst wurde. Werden komplexere Anforderungen in Zukunft an den Mikrocontroller gestellt (Audio, Grafik), so sollte zu den moderneren [[PIC24]] bzw. [[dsPIC]] (16-Bit) oder gar zu [[PIC32]] (32-Bit MIPS Prozessor) gegriffen werden, wobei letzterer von der Performance vergleichbar mit den STM32 ARM-basierten Mikrocontrollern ist.&lt;br /&gt;
&lt;br /&gt;
= Programmierumgebungen=&lt;br /&gt;
&lt;br /&gt;
Bei den Programmierumgebungen gibt es zu allen Prozessorfamilien kostenlose und Leistungsfähige Software&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|- bgcolor=&amp;quot;#d0d0ff&amp;quot;&lt;br /&gt;
! [[STM32]] || [[AVR]] || PIC || [[MSP430]] || Arduino&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot;|[http://www.coocox.org/CooCox_CoIDE.htm CooCox] || align=&amp;quot;center&amp;quot;|Atmel-Studio || align=&amp;quot;center&amp;quot;|[http://www.microchip.com/pagehandler/en-us/family/mplabx/ MPLAB X] (IDE inklusive compiler) || align=&amp;quot;center&amp;quot;|?? || align=&amp;quot;center&amp;quot;|arduino 1.0.5&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
natürlich gibt es noch viele weitere (für STM32 siehe [[STM32#Programmierung]]), es sollte jedoch nur die einfachsten kostenlose (und ohne Codebegrenzung) für den ersten Einstieg gezeigt werden.&lt;br /&gt;
&lt;br /&gt;
* CooCox Anleitung wie man innerhalb einer Stunde die LED eines Nagel neuen STM32F4DISCOVERY Boards zum blinken bekommt, Artikel: [[STM32 CooCox Installation]]. Diese Anleitung ist eine Schritt-Für-Schritt Anleitung um den aller ersten Start zu vereinfachen.&lt;br /&gt;
&lt;br /&gt;
= Dokumentation=&lt;br /&gt;
&lt;br /&gt;
Bevor man sich für einen Prozessor entscheidet sollte man unbedingt deren Dokumentation mal zumindest überfliegen und auch deren Errata&#039;s lesen. Nicht dass man eine Anwendung erstellen möchte und stellt hinterher fest, dass genau dieser Teil so buggy ist das er nicht genutzt werden kann.&lt;br /&gt;
&lt;br /&gt;
Beim [[STM32]] hat die Dokumentation doch recht viele Seiten, viel mehr als bei einem [[AVR]] oder PIC. Dabei ist vieles eher knapp beschrieben, man muss mehr suchen als z.B. bei den AVR-Dokus, um die gewünschten Informationen zu finden. Außerdem gibt es durchaus einige Unklarheiten und Fehler/Widersprüche. Schlussendlich ist es Geschmackssache mit welcher Doku von welchem Hersteller man sich besser zurecht findet.&lt;br /&gt;
&lt;br /&gt;
Bei den PICs gibt es zu jedem Mikrocontroller ein Datenblatt. Bei den Familien 10F, 12F, 16F und 18F wird in diesem Datenblatt jeweils der ganze Controller incl. seiner Peripherie ausführlich beschrieben. Bei den 16 &amp;amp; 32 Bit Familien (PIC24F und aufwärts) gibt es hingegen zu jedem Controller ein Kurzdatenblatt das die genauen Leistungsmerkmale  sowie die wichtigsten Informationen für den alltäglichen Gebrauch enthält. Da bestimmte Peripherie (bspw. I2C, SPI, ... ) aber sehr komplex ist und innerhalb einer Familie (PIC24/dSPic/32) sich identisch verhält, gibt es bei diesen Familien zu jeder Familie die sogenannten Family-Datasheets, welche alle Module im Detail beschreiben.&lt;br /&gt;
&lt;br /&gt;
Parallel zur Dokumentation sollte man sich auch die Demo-Beispiele der Hersteller anschauen, dann wird vieles gleich verständlicher.&lt;br /&gt;
&lt;br /&gt;
Eine Übersicht über die Funktionen gibt es im Artikel: [[STM32]]&lt;br /&gt;
&lt;br /&gt;
= Die Arbeit mit dem STM32=&lt;br /&gt;
&lt;br /&gt;
Zu erst einmal SOOO groß sind die Unterschiede zwischen den einzelnen Prozessoren nicht. Alle haben Ein-/Ausgänge und um mittels einem Port-Pin eine LED ansteuern zu können muss bei jedem Prozessor der Pin erst einmal parametriert werden, egal ob das jetzt ein [[STM32]] oder ein [[AVR]] oder ein [[MSP430]] ist. Nur hat man bei einem STM32 doch einige Funktionen mehr, z.B. zuschaltbarer Pull-Up oder Pull-Down Widerstand und spezielle Setz-Rücksetzregister, die andere Prozessoren nicht haben, jedoch das programmieren vereinfachen.&lt;br /&gt;
Der Haupt-Unterschied zu den anderen Prozessoren ist, dass der [[STM32]] so viele Peripherie-Module beherbergt, dass man die einzeln immer mit einem Clock aktivieren muss, denn damit lässt sich viel Strom sparen.&lt;br /&gt;
&lt;br /&gt;
Und mal ganz ehrlich die Diskussion welcher µc einfacher zu konfigurieren ist, ist doch absoluter Unsinn. Der Weg ist immer der Gleiche:&lt;br /&gt;
*1. Blick ins Datenblatt welche Register für diese Funktion benötigt werden.&lt;br /&gt;
*2. Werte ermitteln die in die Register eingetragen werden.&lt;br /&gt;
*3. Werte ins Register schreiben. Da machte es GAR KEINEN UNTERSCHIED ob es ein [[AVR]], 8051/2, [[ARM]],...... ist.&lt;br /&gt;
&lt;br /&gt;
Stimmt schon es gibt Unterschiede. Die Register haben anderen Namen, andere Adressen, andere Bitbedeutungen,...&lt;br /&gt;
Aber es steht doch alles im Datenblatt. Und ob ich jetzt einen [[AVR]] oder einen [[ARM]] das erste mal vor mir liegen hab. Ich brauch in allen Fällen die oben beschriebenen Schritte.&lt;br /&gt;
&lt;br /&gt;
Das Interruptsystem ist bei einem STM32 zusätzlich priorisiert, damit kann man festlegen welcher Interrupt vorrangig bearbeitet wird. Die Prioritätenvergabe ist auch kein Hexenwerk.&lt;br /&gt;
&lt;br /&gt;
Zu allen Prozessoren liefern die jeweiligen Hersteller umfangreiche Demo-Codes und Libraries mit. Meist sind alle in C geschrieben, daher sollte auch die Programmiersprache C verwendet werden. Vor allem auch wenn man berufliche Absichten verfolgt.&lt;br /&gt;
&lt;br /&gt;
Und wenn man einen [[STM32]] kann, dann ist ein Umstieg auf einen LPC17xx (NXP) oder andere Hersteller überhaupt kein Problem (*), denn die bieten ebenfalls Prozessoren mit Cortex-M3 Kern und man kann diese mit der gleichen Programmierumgebung programmieren. Somit ist man nicht zwingend Herstellerabhängig. (* jeder Hersteller verbaut seine eigene Peripherie, die andere Funktionalitäten haben.)&lt;br /&gt;
&lt;br /&gt;
Mit einem [[STM32]] kann man als Hobby-Baster und Professionell nahezu alle Anwendungen realisieren. Der hat genügend RAM und FLASH Speicher und auch genügen Geschwindigkeit. Viele Gehäuse-Varianten um kleine bis hin zu größere Geräte zu erstellen. Viele Schnittstellen, sind im Artikel [[STM32]] beschrieben.&lt;br /&gt;
&lt;br /&gt;
Der einzige Nachteil beim [[STM32]]: man muss etwas mehr lesen, da eine Peripherie doch viel mehr Funktionalität hat. Ansonsten kenne ich nicht wirklich einen Grund warum man als Neueinsteiger keinen [[STM32]] nehmen sollte.&lt;br /&gt;
&lt;br /&gt;
= Programmiersprachen =&lt;br /&gt;
* Wie bei vielen anderen Controllern wird beim STM32 auch hauptsächlich C und C++ verwendet. Kennen sollte man die Programmiersprache C schon, wenn man davon noch keine Ahnung hat dann sollte man erst mal mittels einem Tutorial auf einem PC ein Konsoleprogramm schreiben, sodass man es einigermaßen kennen lernt. Hier im Forum gibt es ebenfalls Artikel dazu. Zielt man auf die (spätere) Anwendung in der Industrie, sollte aufgrund der Verbreitung auf jeden Fall C (oder C++) gewählt werden; außerdem sind die meisten verfügbaren Libraries in C geschrieben.&lt;br /&gt;
* Assembler sollte man nur grob verstehen, Details wie ein Befehl arbeitet ist unwichtig. Selbst wenn man die Zyklen für einen Funktionsaufruf wissen will, so bietet der STM32 (Cortex-M3) einen Cycle-Counter den man auslesen kann; durch die komplexere Pipeline und Cache-Effekte sind die Laufzeiten allerdings nicht genau vorhersehbar. Wird zyklengenause Timing benötigt, sollten Timer verwendet werden - davon hat der STM32 genug.&lt;br /&gt;
&lt;br /&gt;
Der 32bit-Adressraum, der RAM, Flash, I/O-Register vereinheitlicht ansprechen kann (im Gegensatz zu z.B. AVR) ist ideal für eine Verwendung durch Hochsprachen; bei Pointern muss keine zusätzliche Information verwaltet werden, in welche Art Speicher sie zeigen. Die Adresse gibt dies eindeutig an (es gibt nur &#039;&#039;&#039;eine&#039;&#039;&#039; Adresse 42, und nicht 2 wie bei es für Harvard-Architekturen eigentlich typisch ist (Programmspeicher und Datenspeicher, also z.B. Flash und RAM/IO) und die Hardware spricht automatisch den richtigen Speicher an. Die Möglichkeiten zur Offset-Adressierung, der Barrel-Shifter, Divsions-Einheit, die FPU (bei STM32F4), Interrupt-Modell etc. begünstigen ebenfalls die Erzeugung effizienteren Codes. Außerdem haben die STM32 einfach mehr &amp;quot;rohe Leistung&amp;quot;, d.h. mehr Flash/RAM-Speicher und höhere Taktfrequenzen.&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Folgerung&#039;&#039;&#039;: Die Programmierung in Hochsprachen ist &#039;&#039;&#039;bequemer als bei 8-Bittern&#039;&#039;&#039;, denn man muss sich einfach weniger Gedanken machen, ob der Compiler ein Programm nun effizent umsetzen kann (kann man natürlich trotzdem machen, um noch mehr Leistung &amp;quot;herauszuquetschen&amp;quot;, wenn man will).&lt;br /&gt;
&lt;br /&gt;
= Weitere Randbedingungen für die Entscheidung=&lt;br /&gt;
&lt;br /&gt;
Der wichtige Punkt, der oftmals auch vergessen wird: die Beschaffbarkeit. Wenn jemand einen Renesas M16C oder Fujitsu empfiehlt, dann sucht man erst mal und findet nur wenige vereinzelte die man privat kaufen kann.&lt;br /&gt;
&lt;br /&gt;
Oder auch die Unterstützung im Internet - ist bei einigen Exoten spärlich. Dieses Forum bietet die beste Hilfe für [[AVR]], PIC, [[STM32]] und [[MSP430]].&lt;br /&gt;
&lt;br /&gt;
Andere Prozessoren sind schon sehr alt, bzw. nicht mehr modern da deren Peripherie zum Teil doch recht eingeschränkte Funktionalität bietet. z.B. viele 8051 Typen oder PIC16 (oder auch dsPIC30). Die mögen für Mini-Anwenungen gut sein, aber wer will den schon gerne sich extra für eine Kleinanwendung mit einem kleinen µC auseinandersetzen, wenn er schon einen STM32 kennt, mit dem er alles machen kann (und sich bereits gute Funktionen geschrieben hat)?&lt;br /&gt;
&lt;br /&gt;
Daher mein Resümee: wer nicht gerade auf den Kopf gefallen ist, der kann getrost mit einem STM32 starten. Ein [http://www.st.com/web/en/catalog/tools/FM116/SC959/SS1532/PF252419?s_searchtype=keyword STM32F4DISCOVERY] Board kostet nur ca. 20 EUR - und mehr muss für den ersten Start nicht investiert werden - wenn es doch zu komplex sein sollte gibt es hier im Forum auch Hilfe oder man nimmt erst mal ein &amp;quot;Arduino&amp;quot;. Jedenfalls sind diese 20 EUR wirklich keine große Investition.&lt;br /&gt;
&lt;br /&gt;
= Weblinks, Foren, Communities, Tutorials =&lt;br /&gt;
* [[STM32]] Hauptartikel, [http://www.mikrocontroller.net/articles/STM32#Weblinks.2C_Foren.2C_Communities.2C_Tutorials dortige Linksammlung]&lt;br /&gt;
* [http://www.mikrocontroller.net/topic/319328 Diskussion zum Artikel]&lt;br /&gt;
* [[STM32 CooCox Installation]]&lt;br /&gt;
* [[STM32 Eclipse Installation]]&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>Frank m35</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=STM32_f%C3%BCr_Einsteiger&amp;diff=80345</id>
		<title>STM32 für Einsteiger</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=STM32_f%C3%BCr_Einsteiger&amp;diff=80345"/>
		<updated>2013-12-31T10:20:50Z</updated>

		<summary type="html">&lt;p&gt;Frank m35: /* Eigene Fähigkeiten und Wünsche */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Immer wiederkehrend hier im Forum &amp;quot;Mit welchem Mikrocontroller anfangen?&amp;quot;. Es gibt eine große Auswahl und eben so viele Empfehlungen. In diesem Artikel soll zu erst geholfen werden ob ein STM32-Prozessor mit Cortex-M3/M4 Kern überhaupt der Richtige für den Start ist.&lt;br /&gt;
Nicht für jeden ist der STM32 zu empfehlen, denn die Anforderungen und Wünsche die man realisieren möchte, sowie die eigenen Fähigkeiten sind verschieden.&lt;br /&gt;
&lt;br /&gt;
Es werden meist die Prozessoren AVR, PIC, Arduino, MSP430 und STM32 empfohlen. Seltener auch 8051, LPC und M16C. Alle haben Vorzüge und ebenso auch Nachteile.&lt;br /&gt;
&lt;br /&gt;
= Eigene Fähigkeiten und Wünsche =&lt;br /&gt;
&lt;br /&gt;
Dieser Artikel geht davon aus, dass bereits Elektronik Kenntnisse vorhanden sind. Wenn nicht dann sollte man erst einmal den Artikel &amp;quot;[[Absolute Beginner]]&amp;quot; durcharbeiten, sowie die anderen Artikel aus der Kategorie &amp;quot;[http://www.mikrocontroller.net/articles/Kategorie:Grundlagen Grundlagen]&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Zu erst einmal die Randbedingungen, mit der man sich selbst zu erst einmal einschätzen sollte:&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|- bgcolor=&amp;quot;#d0d0ff&amp;quot;&lt;br /&gt;
! Fähigkeit || Empfehlung [[STM32]] || Empfehlung [[AVR]] || Empfehlung PIC || Empfehlung [[MSP430]] || Empfehlung Arduino&lt;br /&gt;
|-&lt;br /&gt;
| Neueinsteiger, kaum Elektronikkenntnisse, noch nie programmiert || align=&amp;quot;center&amp;quot;|O || align=&amp;quot;center&amp;quot;|O [http://www.rn-wissen.de/index.php/AVR-Einstieg_leicht_gemacht] [http://www.avr-asm-tutorial.net/avr_de/] || align=&amp;quot;center&amp;quot;|O [http://www.sprut.de/] || align=&amp;quot;center&amp;quot;|O || align=&amp;quot;center&amp;quot;|x&lt;br /&gt;
|-&lt;br /&gt;
| Wunsch ist SD-Card oder Grafik-Display || align=&amp;quot;center&amp;quot;|x || align=&amp;quot;center&amp;quot;|x || align=&amp;quot;center&amp;quot;|x [http://www.microchip.com/stellent/idcplg?IdcService=SS_GET_PAGE&amp;amp;nodeId=2680&amp;amp;dDocName=en537999] [http://www.microchip.com/pagehandler/en-us/technology/graphics/] || align=&amp;quot;center&amp;quot;|x || align=&amp;quot;center&amp;quot;|x&lt;br /&gt;
|-&lt;br /&gt;
| Wunsch ist TCP/IP Netzwerk oder Kamera|| align=&amp;quot;center&amp;quot;|x || align=&amp;quot;center&amp;quot;|O || align=&amp;quot;center&amp;quot;|x [http://www.microchip.com/stellent/idcplg?IdcService=SS_GET_PAGE&amp;amp;nodeId=2505&amp;amp;param=en535724] || align=&amp;quot;center&amp;quot;|O || align=&amp;quot;center&amp;quot;|O&lt;br /&gt;
|-&lt;br /&gt;
| Möchte die Erkenntnisse beruflich nutzen|| align=&amp;quot;center&amp;quot;|x || align=&amp;quot;center&amp;quot;|x || align=&amp;quot;center&amp;quot;|x || align=&amp;quot;center&amp;quot;|x || align=&amp;quot;center&amp;quot;|-&lt;br /&gt;
|-&lt;br /&gt;
| Strom sparende Anwendungen|| align=&amp;quot;center&amp;quot;|- [http://www.st.com/web/en/catalog/mmc/FM141/SC1169/SS1295]&amp;lt;br&amp;gt; 300 nA Sleep&amp;lt;br&amp;gt;230 μA/MHz]|| align=&amp;quot;center&amp;quot;|- [http://www.atmel.com/technologies/lowpower/default.aspx] [http://www.futurlec.com/News/Atmel/PicoPower.shtml]&amp;lt;br&amp;gt;100 nA Sleep&amp;lt;br&amp;gt;340 μA/MHz|| align=&amp;quot;center&amp;quot;|x [http://ww1.microchip.com/downloads/en/DeviceDoc/39989A.pdf] [http://ww1.microchip.com/downloads/en/DeviceDoc/30009941F.pdf] &amp;lt;br&amp;gt; 9 nA Sleep&amp;lt;br&amp;gt;35 μA/MHz || align=&amp;quot;center&amp;quot;|x [http://www.ti.com/lit/wp/slay015/slay015.pdf] [http://www.ti.com/ww/mx/multimedia/webcasts/Aspectos_Generales_MSP430.pdf] &amp;lt;br&amp;gt; 100 nA Sleep&amp;lt;br&amp;gt;100 μA/MHz || align=&amp;quot;center&amp;quot;|-&lt;br /&gt;
|-&lt;br /&gt;
| Experimentieren mit Multithreading, RTOS, Schedulern || align=&amp;quot;center&amp;quot;|x || align=&amp;quot;center&amp;quot;|O [http://www.freertos.org/a00098.html] [http://www.femtoos.org/] || align=&amp;quot;center&amp;quot;|PIC32 [http://www.microchip.com/stellent/idcplg?IdcService=SS_GET_PAGE&amp;amp;nodeId=1406&amp;amp;dDocName=en531543&amp;amp;redirects=rtos] || align=&amp;quot;center&amp;quot;|- || align=&amp;quot;center&amp;quot;|-&lt;br /&gt;
|-&lt;br /&gt;
| Besonders große, speicherintensive Programme&amp;lt;br&amp;gt;z.B. Grafiken, Fonts || align=&amp;quot;center&amp;quot;|bis 2MB Flash&amp;lt;br&amp;gt;bis 256kB SRAM || align=&amp;quot;center&amp;quot;|bis 256kB Flash&amp;lt;br&amp;gt;bis 16kB SRAM || align=&amp;quot;center&amp;quot;|bis 2MB Flash&amp;lt;br&amp;gt;bis 512kB SRAM || align=&amp;quot;center&amp;quot;|bis 512KB Flash&amp;lt;br&amp;gt;bis 66kB SRAM || align=&amp;quot;center&amp;quot;|bis 256kB Flash&amp;lt;br&amp;gt;bis 16kB SRAM&lt;br /&gt;
|-&lt;br /&gt;
| Sehr viel PWM mit komplexem Timing || align=&amp;quot;center&amp;quot;|x || align=&amp;quot;center&amp;quot;| AT90Spwm || align=&amp;quot;center&amp;quot;|dsPIC/PIC32 || align=&amp;quot;center&amp;quot;|O || align=&amp;quot;center&amp;quot;|-&lt;br /&gt;
|-&lt;br /&gt;
| Deutschsprachige Community || align=&amp;quot;center&amp;quot;|O || align=&amp;quot;center&amp;quot;|x || align=&amp;quot;center&amp;quot;|O || align=&amp;quot;center&amp;quot;|- || align=&amp;quot;center&amp;quot;|x&lt;br /&gt;
|-&lt;br /&gt;
| Anzahl möglicher HW-Breakpoints || align=&amp;quot;center&amp;quot;|4 bis 6 || align=&amp;quot;center&amp;quot;|2 || align=&amp;quot;center&amp;quot;| 1 bis 10 [http://www.microchip.com/stellent/groups/SiteComm_sg/documents/DeviceDoc/en556761.pdf] || align=&amp;quot;center&amp;quot;|2 || align=&amp;quot;center&amp;quot;|2&lt;br /&gt;
|}&lt;br /&gt;
* x = ja&lt;br /&gt;
* O = Teilweise, Einschränkungen&lt;br /&gt;
* - = nicht empfohlen&lt;br /&gt;
* ? = Bitte ergänzen&lt;br /&gt;
&lt;br /&gt;
Nur um nicht zu verwirren, auch wenn Teile &amp;quot;nicht empfohlen&amp;quot; sind, heißt dass nicht dass es mit dem Prozessor nicht geht, vielmehr dass es mehr Aufwand ist das zu realisieren oder mehr Einschränkungen hat.&lt;br /&gt;
&lt;br /&gt;
Die Spalte PIC zeigt die Eigenschaften der 8-Bit PIC12/16/18 (vergleichbar mit [[AVR]]), 16-Bit [[PIC24]]/[[dsPIC]] (vergleichbar mit [[MSP430]]) und 32-Bit [[PIC32]] (vergleichbar mit [[STM32]]). Ein Wechsel des Mikrocontrollers innerhalb der Familien ist Codetechnisch problemlos möglich. [http://www.elektor.nl/Uploads/Files/PIC24FIntro_5f082806.pdf] Hardwaretechnisch sind verschiedene Modelle gleicher Familie zudem auch meist Pin-Kompatibel [http://ww1.microchip.com/downloads/en/DeviceDoc/00148m.pdf] sodass ohne Design-Änderung zwischen verschiedenen Modellen gewechselt werden kann.&lt;br /&gt;
Ein Wechsel zwischen den Familien ist Architekturbedingt aufwendiger, vor allem von 8-Bit auf 16/32-Bit. [http://ww1.microchip.com/downloads/en/DeviceDoc/39764a.pdf] Aufgrund gleichbleibender IDE (Mplab) sowie gleichbleibenden Libraries bei Verwendung einer Hochsprache (C) jedoch vor allem zwischen 16-Bit und 32-Bit ohne weitere Probleme möglich [http://www.embedded.com/design/mcus-processors-and-socs/4007683/Practical-migration-from-8-16-to-32-bit-PIC].&lt;br /&gt;
&lt;br /&gt;
= Unwichtige Randbedingungen =&lt;br /&gt;
&lt;br /&gt;
Oftmals werden fälschlicherweise Argumente für oder gegen eine µC-Familie ausgesprochen, die in der Praxis &#039;&#039;&#039;zum Einstieg&#039;&#039;&#039; (bei konkreten Anwendungen kann das anders aussehen) eher unwichtig sind.&lt;br /&gt;
&lt;br /&gt;
* Spannungsversorgung 3,3V / 5V&lt;br /&gt;
* 8 (z.B. [[AVR]]), 16 (z.B. [[MSP430]]) oder 32 (z.B. [[STM32]]) Bit&lt;br /&gt;
* Interrupt System mit mehr oder weniger Features&lt;br /&gt;
* Programmiersprache (Assembler, Basic, C, C++, Pascal)&lt;br /&gt;
* Assembler verstehen (Sollte nur theoretisch verstanden werden, ein Programm sollte in einer Hochsprache geschrieben sein)&lt;br /&gt;
* DIL Gehäuse - steckbretttauglich (STM32-Prozessoren gibt es auch fertig gelötet auf einem steckbretttauglichen Board zum fünffachen Preis vergleichbarer DIL Mikrocontroller)&lt;br /&gt;
* Programmieradapter&lt;br /&gt;
* zu 90% reicht doch ein kleiner Prozessor ([[AVR]]/PIC) - und für die restlichen kann man immer noch einen großen nehmen. Warum also nicht gleich einen großen nehmen?&lt;br /&gt;
&lt;br /&gt;
= Kosten =&lt;br /&gt;
&lt;br /&gt;
Grobe Abschätzung was das alles denn kosten wird. Hier sind nur einige Beispiele gezeigt (Einzelpreise bei Bezugsquellen in Deutschland).&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|- bgcolor=&amp;quot;#d0d0ff&amp;quot;&lt;br /&gt;
! Board || [[STM32]] || [[AVR]] || PIC18/24/32 || [[MSP430]] || Arduino&lt;br /&gt;
|-&lt;br /&gt;
| Demo-Board || align=&amp;quot;center&amp;quot;|[http://www.st.com/web/en/catalog/tools/FM116/SC959/SS1532/PF252419] 9..20€ (incl. Programmieradapter und Debugger) || align=&amp;quot;center&amp;quot;|5..500€, z.B. Arduino || align=&amp;quot;center&amp;quot;| [http://www.microchipdirect.com/ProductDetails.aspx?Catalog=BuyMicrochip&amp;amp;Category=Starter%20Kits&amp;amp;mid=1&amp;amp;lmid=610 durchschnittlich 18€ .. 50€] || align=&amp;quot;center&amp;quot;|[http://www.ti.com/tool/msp-exp430fr5739] ~35€ || align=&amp;quot;center&amp;quot;|20€&lt;br /&gt;
|-&lt;br /&gt;
| Steckbrettaugliches Board || align=&amp;quot;center&amp;quot;| s.o. oder [http://re.reworld.eu/de/produkte/s64dil-405/index.htm S64DIL-405] 30€ || align=&amp;quot;center&amp;quot;|0,6–5€ als einzelner DIP-IC || align=&amp;quot;center&amp;quot;|2-5€ als einzelner IC || align=&amp;quot;center&amp;quot;|?? || align=&amp;quot;center&amp;quot;|??&lt;br /&gt;
|-&lt;br /&gt;
| Programmieradapter || align=&amp;quot;center&amp;quot;|  || align=&amp;quot;center&amp;quot;| ab 4€ || align=&amp;quot;center&amp;quot;| || align=&amp;quot;center&amp;quot;| || align=&amp;quot;center&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Programmieradapter mit Debugger || align=&amp;quot;center&amp;quot;| s.o. oder z.B [http://www.segger.com/j-link-edu.html Segger J-LINK EDU] 50€ (sehr schnell und unterstützt viele Prozessoren) || align=&amp;quot;center&amp;quot;|?? || align=&amp;quot;center&amp;quot;|PICkit 3 30€ [http://www.microchipdirect.com/ProductSearch.aspx?keywords=PG164130] || align=&amp;quot;center&amp;quot;|z.B. Dragon 50€ || align=&amp;quot;center&amp;quot;|20€ (Man muss DebugWire aktivieren)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Das Demo-Board sollte ein Board sein, nicht zu teuer, um die ersten Erfahrungen zu sammeln. Wenn einem der Prozessor gefällt, so kann man später immer noch mit einem zweiten Demo-Board, z.B. mit Display aufrüsten.&lt;br /&gt;
&lt;br /&gt;
Wenn man gerne mit einem Steckbrett sich die Schaltung zusammen stecken möchte, so kann man entweder die benötigten Drähte am Demo-Board anlöten oder bei z.B. [[AVR]]/[[PIC]] Prozessoren gibt es Ausführungen im DIL Gehäuse, die direkt steckbar sind.&lt;br /&gt;
&lt;br /&gt;
Ein Programmieradapter sollte unbedingt auch einen Debugger beinhalten. Denn für den Start ist es ungemein hilfreich zu sehen was im Prozessor gerade geschieht. Die JTAG-Adapter für einen [[STM32]] Prozessor sind alle Debugger-Tauglich. Für einen [[AVR]] oder [[PIC]] Prozessor gibt es auch oft reine Programmer (oft Selbstbau-Lösungen über die serielle oder parallele Schnittstelle) welche den Mikrocontroller nur beschreiben können. Sinvoller sind hingegen Debugger (bspw. PIC Kit 3 [http://www.microchipdirect.com/ProductSearch.aspx?keywords=PG164130] kompatibel zu allen PIC Mikrocontrollern), die die Ausführung eines Mikrocontrollers anhalten können um die aktuelle Position im Programmcode, Variableninhalt, Register, ... auszulesen bzw. zur Laufzeit zu ändern.&lt;br /&gt;
&lt;br /&gt;
Der für den [[STM32]] empfohlene Segger J-LINK EDU ist zwar nicht der günstigste (z.B. auf einem STM32F4DISCOVERY Borad ist auch einer drauf den man für andere STM32 nutzen kann) aber eines der besten, mit sehr guten Software-Tools und nutzbar für alle Prozessoren mit ARM-Kern (ARM7/9/11/... Cortex-Mx). Niemals am Werkzeug sparen und man hat viel mehr Freude bei der Arbeit.&lt;br /&gt;
&lt;br /&gt;
Der &amp;quot;Arduino&amp;quot; ist kein eigenständiger Prozessor, sondern ein fertiges Board mit einer &amp;quot;Arduino&amp;quot; Programmierumgebung (und einem AVR Prozessor), extra geschaffen für Einsteiger. Allerdings ist da der Lerneffekt viel geringer da man den Prozessor mit der Arduino-Software programmiert und nicht direkt die Register.&lt;br /&gt;
&lt;br /&gt;
Ein [[PIC16]] ist ein älterer 8-Bit Mikrocontroller, der durch die [[PIC18]] Reihe abgelöst wurde. Werden komplexere Anforderungen in Zukunft an den Mikrocontroller gestellt (Audio, Grafik), so sollte zu den moderneren [[PIC24]] bzw. [[dsPIC]] (16-Bit) oder gar zu [[PIC32]] (32-Bit MIPS Prozessor) gegriffen werden, wobei letzterer von der Performance vergleichbar mit den STM32 ARM-basierten Mikrocontrollern ist.&lt;br /&gt;
&lt;br /&gt;
= Programmierumgebungen=&lt;br /&gt;
&lt;br /&gt;
Bei den Programmierumgebungen gibt es zu allen Prozessorfamilien kostenlose und Leistungsfähige Software&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|- bgcolor=&amp;quot;#d0d0ff&amp;quot;&lt;br /&gt;
! [[STM32]] || [[AVR]] || PIC || [[MSP430]] || Arduino&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot;|[http://www.coocox.org/CooCox_CoIDE.htm CooCox] || align=&amp;quot;center&amp;quot;|Atmel-Studio || align=&amp;quot;center&amp;quot;|[http://www.microchip.com/pagehandler/en-us/family/mplabx/ MPALB X] (IDE inklusive compiler) || align=&amp;quot;center&amp;quot;|?? || align=&amp;quot;center&amp;quot;|arduino 1.0.5&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
natürlich gibt es noch viele weitere (für STM32 siehe [[STM32#Programmierung]]), es sollte jedoch nur die einfachsten kostenlose (und ohne Codebegrenzung) für den ersten Einstieg gezeigt werden.&lt;br /&gt;
&lt;br /&gt;
* CooCox Anleitung wie man innerhalb einer Stunde die LED eines Nagel neuen STM32F4DISCOVERY Boards zum blinken bekommt, Artikel: [[STM32 CooCox Installation]]. Diese Anleitung ist eine Schritt-Für-Schritt Anleitung um den aller ersten Start zu vereinfachen.&lt;br /&gt;
&lt;br /&gt;
= Dokumentation=&lt;br /&gt;
&lt;br /&gt;
Bevor man sich für einen Prozessor entscheidet sollte man unbedingt deren Dokumentation mal zumindest überfliegen und auch deren Errata&#039;s lesen. Nicht dass man eine Anwendung erstellen möchte und stellt hinterher fest, dass genau dieser Teil so buggy ist das er nicht genutzt werden kann.&lt;br /&gt;
&lt;br /&gt;
Beim [[STM32]] hat die Dokumentation doch recht viele Seiten, viel mehr als bei einem [[AVR]] oder PIC. Dabei ist vieles eher knapp beschrieben, man muss mehr suchen als z.B. bei den AVR-Dokus, um die gewünschten Informationen zu finden. Außerdem gibt es durchaus einige Unklarheiten und Fehler/Widersprüche. Schlussendlich ist es Geschmackssache mit welcher Doku von welchem Hersteller man sich besser zurecht findet.&lt;br /&gt;
&lt;br /&gt;
Bei den PICs gibt es zu jedem Mikrocontroller ein Datenblatt das die wichtigsten Informationen für den alltäglichen Gebrauch enthält. Da bestimmte Peripherie (bspw. I2C, SPI, ... ) aber sehr komplex ist und innerhalb einer Familie (PIC16/18/24/32) sich identisch verhält, gibt es zu jeder Familie die sogenannten Family-Datasheets, welche alle Module im Detail beschreiben.&lt;br /&gt;
&lt;br /&gt;
Parallel zur Dokumentation sollte man sich auch die Demo-Beispiele der Hersteller anschauen, dann wird vieles gleich verständlicher.&lt;br /&gt;
&lt;br /&gt;
Eine Übersicht über die Funktionen gibt es im Artikel: [[STM32]]&lt;br /&gt;
&lt;br /&gt;
= Die Arbeit mit dem STM32=&lt;br /&gt;
&lt;br /&gt;
Zu erst einmal SOOO groß sind die Unterschiede zwischen den einzelnen Prozessoren nicht. Alle haben Ein-/Ausgänge und um mittels einem Port-Pin eine LED ansteuern zu können muss bei jedem Prozessor der Pin erst einmal parametriert werden, egal ob das jetzt ein STM32 oder ein AVR oder ein MSP430 ist. Nur hat man bei einem STM32 doch einige Funktionen mehr, z.B. zuschaltbarer Pull-Up oder Pull-Down Widerstand und spezielle Setz-Rücksetzregister, die andere Prozessoren nicht haben, jedoch das programmieren vereinfachen.&lt;br /&gt;
Der Haupt-Unterschied zu den anderen Prozessoren ist, dass der [[STM32]] so viele Peripherie-Module beherbergt, dass man die einzeln immer mit einem Clock aktivieren muss, denn damit lässt sich viel Strom sparen.&lt;br /&gt;
&lt;br /&gt;
Und mal ganz ehrlich die Diskussion welcher µc einfacher zu konfigurieren ist, ist doch absoluter Unsinn. Der Weg ist immer der Gleiche:&lt;br /&gt;
*1. Blick ins Datenblatt welche Register für diese Funktion benötigt werden.&lt;br /&gt;
*2. Werte ermitteln die in die Register eingetragen werden.&lt;br /&gt;
*3. Werte ins Register schreiben. Da machte es GAR KEINEN UNTERSCHIED ob es ein [[AVR]], 8051/2, ARM,...... ist.&lt;br /&gt;
&lt;br /&gt;
Stimmt schon es gibt Unterschiede. Die Register haben anderen Namen, andere Adressen, andere Bitbedeutungen,...&lt;br /&gt;
Aber es steht doch alles im Datenblatt. Und ob ich jetzt einen [[AVR]] oder einen ARM das erste mal vor mir liegen hab. Ich brauch in allen Fällen die oben beschriebenen Schritte.&lt;br /&gt;
&lt;br /&gt;
Das Interruptsystem ist bei einem STM32 zusätzlich priorisiert, damit kann man festlegen welcher Interrupt vorrangig bearbeitet wird. Die Prioritätenvergabe ist auch kein Hexenwerk.&lt;br /&gt;
&lt;br /&gt;
Zu allen Prozessoren liefern die jeweiligen Hersteller umfangreiche Demo-Codes und Libraries mit. Meist sind alle in C geschrieben, daher sollte auch die Programmiersprache C verwendet werden. Vor allem auch wenn man berufliche Absichten verfolgt.&lt;br /&gt;
&lt;br /&gt;
Und wenn man einen STM32 kann, dann ist ein Umstieg auf einen LPC17xx (NXP) oder andere Hersteller überhaupt kein Problem (*), denn die bieten ebenfalls Prozessoren mit Cortex-M3 Kern und man kann diese mit der gleichen Programmierumgebung programmieren. Somit ist man nicht zwingend Herstellerabhängig. (* jeder Hersteller verbaut seine eigene Peripherie, die andere Funktionalitäten haben.)&lt;br /&gt;
&lt;br /&gt;
Mit einem STM32 kann man als Hobby-Baster und Professionell nahezu alle Anwendungen realisieren. Der hat genügend RAM und FLASH Speicher und auch genügen Geschwindigkeit. Viele Gehäuse-Varianten um kleine bis hin zu größere Geräte zu erstellen. Viele Schnittstellen, sind im Artikel [[STM32]] beschrieben.&lt;br /&gt;
&lt;br /&gt;
Der einzige Nachteil beim STM32: man muss etwas mehr lesen, da eine Peripherie doch viel mehr Funktionalität hat. Ansonsten kenne ich nicht wirklich einen Grund warum man als Neueinsteiger keinen STM32 nehmen sollte.&lt;br /&gt;
&lt;br /&gt;
= Programmiersprachen =&lt;br /&gt;
* Wie bei vielen anderen Controllern wird beim STM32 auch hauptsächlich C und C++ verwendet. Kennen sollte man die Programmiersprache C schon, wenn man davon noch keine Ahnung hat dann sollte man erst mal mittels einem Tutorial auf einem PC ein Konsoleprogramm schreiben, sodass man es einigermaßen kennen lernt. Hier im Forum gibt es ebenfalls Artikel dazu. Zielt man auf die (spätere) Anwendung in der Industrie, sollte aufgrund der Verbreitung auf jeden Fall C (oder C++) gewählt werden; außerdem sind die meisten verfügbaren Libraries in C geschrieben.&lt;br /&gt;
* Assembler sollte man nur grob verstehen, Details wie ein Befehl arbeitet ist unwichtig. Selbst wenn man die Zyklen für einen Funktionsaufruf wissen will, so bietet der STM32 (Cortex-M3) einen Cycle-Counter den man auslesen kann; durch die komplexere Pipeline und Cache-Effekte sind die Laufzeiten allerdings nicht genau vorhersehbar. Wird zyklengenause Timing benötigt, sollten Timer verwendet werden - davon hat der STM32 genug.&lt;br /&gt;
&lt;br /&gt;
Der 32bit-Adressraum, der RAM, Flash, I/O-Register vereinheitlicht ansprechen kann (im Gegensatz zu z.B. AVR) ist ideal für eine Verwendung durch Hochsprachen; bei Pointern muss keine zusätzliche Information verwaltet werden, in welche Art Speicher sie zeigen. Die Adresse gibt dies eindeutig an (es gibt nur &#039;&#039;&#039;eine&#039;&#039;&#039; Adresse 42, und nicht 2 wie bei es für Harvard-Architekturen eigentlich typisch ist (Programmspeicher und Datenspeicher, also z.B. Flash und RAM/IO) und die Hardware spricht automatisch den richtigen Speicher an. Die Möglichkeiten zur Offset-Adressierung, der Barrel-Shifter, Divsions-Einheit, die FPU (bei STM32F4), Interrupt-Modell etc. begünstigen ebenfalls die Erzeugung effizienteren Codes. Außerdem haben die STM32 einfach mehr &amp;quot;rohe Leistung&amp;quot;, d.h. mehr Flash/RAM-Speicher und höhere Taktfrequenzen.&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Folgerung&#039;&#039;&#039;: Die Programmierung in Hochsprachen ist &#039;&#039;&#039;bequemer als bei 8-Bittern&#039;&#039;&#039;, denn man muss sich einfach weniger Gedanken machen, ob der Compiler ein Programm nun effizent umsetzen kann (kann man natürlich trotzdem machen, um noch mehr Leistung &amp;quot;herauszuquetschen&amp;quot;, wenn man will).&lt;br /&gt;
&lt;br /&gt;
= Weitere Randbedingungen für die Entscheidung=&lt;br /&gt;
&lt;br /&gt;
Der wichtige Punkt, der oftmals auch vergessen wird: die Beschaffbarkeit. Wenn jemand einen Renesas M16C oder Fujitsu empfiehlt, dann sucht man erst mal und findet nur wenige vereinzelte die man privat kaufen kann.&lt;br /&gt;
&lt;br /&gt;
Oder auch die Unterstützung im Internet - ist bei einigen Exoten spärlich. Dieses Forum bietet die beste Hilfe für [[AVR]], PIC, [[STM32]] und [[MSP430]].&lt;br /&gt;
&lt;br /&gt;
Andere Prozessoren sind schon sehr alt, bzw. nicht mehr modern da deren Peripherie zum Teil doch recht eingeschränkte Funktionalität bietet. z.B. viele 8051 Typen oder PIC16 (oder auch dsPIC30). Die mögen für Mini-Anwenungen gut sein, aber wer will den schon gerne sich extra für eine Kleinanwendung mit einem kleinen µC auseinandersetzen, wenn er schon einen STM32 kennt, mit dem er alles machen kann (und sich bereits gute Funktionen geschrieben hat)?&lt;br /&gt;
&lt;br /&gt;
Daher mein Resümee: wer nicht gerade auf den Kopf gefallen ist, der kann getrost mit einem STM32 starten. Ein [http://www.st.com/web/en/catalog/tools/FM116/SC959/SS1532/PF252419?s_searchtype=keyword STM32F4DISCOVERY] Board kostet nur ca. 20 EUR - und mehr muss für den ersten Start nicht investiert werden - wenn es doch zu komplex sein sollte gibt es hier im Forum auch Hilfe oder man nimmt erst mal ein &amp;quot;Arduino&amp;quot;. Jedenfalls sind diese 20 EUR wirklich keine große Investition.&lt;br /&gt;
&lt;br /&gt;
= Weblinks, Foren, Communities, Tutorials =&lt;br /&gt;
* [[STM32]] Hauptartikel, [http://www.mikrocontroller.net/articles/STM32#Weblinks.2C_Foren.2C_Communities.2C_Tutorials dortige Linksammlung]&lt;br /&gt;
* [http://www.mikrocontroller.net/topic/319328 Diskussion zum Artikel]&lt;br /&gt;
* [[STM32 CooCox Installation]]&lt;br /&gt;
* [[STM32 Eclipse Installation]]&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>Frank m35</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=STM32_f%C3%BCr_Einsteiger&amp;diff=80344</id>
		<title>STM32 für Einsteiger</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=STM32_f%C3%BCr_Einsteiger&amp;diff=80344"/>
		<updated>2013-12-31T10:20:01Z</updated>

		<summary type="html">&lt;p&gt;Frank m35: /* Eigene Fähigkeiten und Wünsche */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Immer wiederkehrend hier im Forum &amp;quot;Mit welchem Mikrocontroller anfangen?&amp;quot;. Es gibt eine große Auswahl und eben so viele Empfehlungen. In diesem Artikel soll zu erst geholfen werden ob ein STM32-Prozessor mit Cortex-M3/M4 Kern überhaupt der Richtige für den Start ist.&lt;br /&gt;
Nicht für jeden ist der STM32 zu empfehlen, denn die Anforderungen und Wünsche die man realisieren möchte, sowie die eigenen Fähigkeiten sind verschieden.&lt;br /&gt;
&lt;br /&gt;
Es werden meist die Prozessoren AVR, PIC, Arduino, MSP430 und STM32 empfohlen. Seltener auch 8051, LPC und M16C. Alle haben Vorzüge und ebenso auch Nachteile.&lt;br /&gt;
&lt;br /&gt;
= Eigene Fähigkeiten und Wünsche =&lt;br /&gt;
&lt;br /&gt;
Dieser Artikel geht davon aus, dass bereits Elektronik Kenntnisse vorhanden sind. Wenn nicht dann sollte man erst einmal den Artikel &amp;quot;[[Absolute Beginner]]&amp;quot; durcharbeiten, sowie die anderen Artikel aus der Kategorie &amp;quot;[http://www.mikrocontroller.net/articles/Kategorie:Grundlagen Grundlagen]&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Zu erst einmal die Randbedingungen, mit der man sich selbst zu erst einmal einschätzen sollte:&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|- bgcolor=&amp;quot;#d0d0ff&amp;quot;&lt;br /&gt;
! Fähigkeit || Empfehlung [[STM32]] || Empfehlung [[AVR]] || Empfehlung PIC || Empfehlung [[MSP430]] || Empfehlung Arduino&lt;br /&gt;
|-&lt;br /&gt;
| Neueinsteiger, kaum Elektronikkenntnisse, noch nie programmiert || align=&amp;quot;center&amp;quot;|O || align=&amp;quot;center&amp;quot;|O [http://www.rn-wissen.de/index.php/AVR-Einstieg_leicht_gemacht] [http://www.avr-asm-tutorial.net/avr_de/] || align=&amp;quot;center&amp;quot;|O [http://www.sprut.de/] || align=&amp;quot;center&amp;quot;|O || align=&amp;quot;center&amp;quot;|x&lt;br /&gt;
|-&lt;br /&gt;
| Wunsch ist SD-Card oder Grafik-Display || align=&amp;quot;center&amp;quot;|x || align=&amp;quot;center&amp;quot;|x || align=&amp;quot;center&amp;quot;|x [http://www.microchip.com/stellent/idcplg?IdcService=SS_GET_PAGE&amp;amp;nodeId=2680&amp;amp;dDocName=en537999] [http://www.microchip.com/pagehandler/en-us/technology/graphics/] || align=&amp;quot;center&amp;quot;|x || align=&amp;quot;center&amp;quot;|x&lt;br /&gt;
|-&lt;br /&gt;
| Wunsch ist TCP/IP Netzwerk oder Kamera|| align=&amp;quot;center&amp;quot;|x || align=&amp;quot;center&amp;quot;|O || align=&amp;quot;center&amp;quot;|x [http://www.microchip.com/stellent/idcplg?IdcService=SS_GET_PAGE&amp;amp;nodeId=2505&amp;amp;param=en535724] || align=&amp;quot;center&amp;quot;|O || align=&amp;quot;center&amp;quot;|O&lt;br /&gt;
|-&lt;br /&gt;
| Möchte die Erkenntnisse beruflich nutzen|| align=&amp;quot;center&amp;quot;|x || align=&amp;quot;center&amp;quot;|x || align=&amp;quot;center&amp;quot;|x || align=&amp;quot;center&amp;quot;|x || align=&amp;quot;center&amp;quot;|-&lt;br /&gt;
|-&lt;br /&gt;
| Strom sparende Anwendungen|| align=&amp;quot;center&amp;quot;|- [http://www.st.com/web/en/catalog/mmc/FM141/SC1169/SS1295]&amp;lt;br&amp;gt; 300 nA Sleep&amp;lt;br&amp;gt;230 μA/MHz]|| align=&amp;quot;center&amp;quot;|- [http://www.atmel.com/technologies/lowpower/default.aspx] [http://www.futurlec.com/News/Atmel/PicoPower.shtml]&amp;lt;br&amp;gt;100 nA Sleep&amp;lt;br&amp;gt;340 μA/MHz|| align=&amp;quot;center&amp;quot;|x [http://ww1.microchip.com/downloads/en/DeviceDoc/39989A.pdf] [http://ww1.microchip.com/downloads/en/DeviceDoc/30009941F.pdf] &amp;lt;br&amp;gt; 9 nA Sleep&amp;lt;br&amp;gt;35 μA/MHz || align=&amp;quot;center&amp;quot;|x [http://www.ti.com/lit/wp/slay015/slay015.pdf] [http://www.ti.com/ww/mx/multimedia/webcasts/Aspectos_Generales_MSP430.pdf] &amp;lt;br&amp;gt; 100 nA Sleep&amp;lt;br&amp;gt;100 μA/MHz || align=&amp;quot;center&amp;quot;|-&lt;br /&gt;
|-&lt;br /&gt;
| Experimentieren mit Multithreading, RTOS, Schedulern || align=&amp;quot;center&amp;quot;|x || align=&amp;quot;center&amp;quot;|O [http://www.freertos.org/a00098.html] [http://www.femtoos.org/] || align=&amp;quot;center&amp;quot;|PIC32 [http://www.microchip.com/stellent/idcplg?IdcService=SS_GET_PAGE&amp;amp;nodeId=1406&amp;amp;dDocName=en531543&amp;amp;redirects=rtos] || align=&amp;quot;center&amp;quot;|- || align=&amp;quot;center&amp;quot;|-&lt;br /&gt;
|-&lt;br /&gt;
| Besonders große, speicherintensive Programme&amp;lt;br&amp;gt;z.B. Grafiken, Fonts || align=&amp;quot;center&amp;quot;|bis 2MB Flash&amp;lt;br&amp;gt;bis 256kB SRAM || align=&amp;quot;center&amp;quot;|bis 256kB Flash&amp;lt;br&amp;gt;bis 16kB SRAM || align=&amp;quot;center&amp;quot;|bis 2MB Flash&amp;lt;br&amp;gt;bis 512kB SRAM || align=&amp;quot;center&amp;quot;|bis 512KB Flash&amp;lt;br&amp;gt;bis 66kB SRAM || align=&amp;quot;center&amp;quot;|bis 256kB Flash&amp;lt;br&amp;gt;bis 16kB SRAM&lt;br /&gt;
|-&lt;br /&gt;
| Sehr viel PWM mit komplexem Timing || align=&amp;quot;center&amp;quot;|x || align=&amp;quot;center&amp;quot;| AT90Spwm || align=&amp;quot;center&amp;quot;|dsPIC/PIC32 || align=&amp;quot;center&amp;quot;|O || align=&amp;quot;center&amp;quot;|-&lt;br /&gt;
|-&lt;br /&gt;
| Deutschsprachige Community || align=&amp;quot;center&amp;quot;|O || align=&amp;quot;center&amp;quot;|x || align=&amp;quot;center&amp;quot;|O || align=&amp;quot;center&amp;quot;|- || align=&amp;quot;center&amp;quot;|x&lt;br /&gt;
|-&lt;br /&gt;
| Anzahl möglicher HW-Breakpoints || align=&amp;quot;center&amp;quot;|4 bis 6 || align=&amp;quot;center&amp;quot;|2 || align=&amp;quot;center&amp;quot;| 1 bis 10 [http://www.microchip.com/stellent/groups/SiteComm_sg/documents/DeviceDoc/en556761.pdf] || align=&amp;quot;center&amp;quot;|2 || align=&amp;quot;center&amp;quot;|2&lt;br /&gt;
|}&lt;br /&gt;
* x = ja&lt;br /&gt;
* O = Teilweise, Einschränkungen&lt;br /&gt;
* - = nicht empfohlen&lt;br /&gt;
* ? = Bitte ergänzen&lt;br /&gt;
&lt;br /&gt;
Nur um nicht zu verwirren, auch wenn Teile &amp;quot;nicht empfohlen&amp;quot; sind, heißt dass nicht dass es mit dem Prozessor nicht geht, vielmehr dass es mehr Aufwand ist das zu realisieren oder mehr Einschränkungen hat.&lt;br /&gt;
&lt;br /&gt;
Die Spalte PIC zeigt die Eigenschaften der 8-Bit PIC12/16/18 (vergleichbar mit [[AVR]]), 16-Bit [[PIC24]] (vergleichbar mit [[MSP430]]) und 32-Bit [[PIC32]] (vergleichbar mit [[STM32]]). Ein Wechsel des Mikrocontrollers innerhalb der Familien ist Codetechnisch problemlos möglich. [http://www.elektor.nl/Uploads/Files/PIC24FIntro_5f082806.pdf] Hardwaretechnisch sind verschiedene Modelle gleicher Familie zudem auch meist Pin-Kompatibel [http://ww1.microchip.com/downloads/en/DeviceDoc/00148m.pdf] sodass ohne Design-Änderung zwischen verschiedenen Modellen gewechselt werden kann.&lt;br /&gt;
Ein Wechsel zwischen den Familien ist Architekturbedingt aufwendiger, vor allem von 8-Bit auf 16/32-Bit. [http://ww1.microchip.com/downloads/en/DeviceDoc/39764a.pdf] Aufgrund gleichbleibender IDE (Mplab) sowie gleichbleibenden Libraries bei Verwendung einer Hochsprache (C) jedoch vor allem zwischen 16-Bit und 32-Bit ohne weitere Probleme möglich [http://www.embedded.com/design/mcus-processors-and-socs/4007683/Practical-migration-from-8-16-to-32-bit-PIC].&lt;br /&gt;
&lt;br /&gt;
= Unwichtige Randbedingungen =&lt;br /&gt;
&lt;br /&gt;
Oftmals werden fälschlicherweise Argumente für oder gegen eine µC-Familie ausgesprochen, die in der Praxis &#039;&#039;&#039;zum Einstieg&#039;&#039;&#039; (bei konkreten Anwendungen kann das anders aussehen) eher unwichtig sind.&lt;br /&gt;
&lt;br /&gt;
* Spannungsversorgung 3,3V / 5V&lt;br /&gt;
* 8 (z.B. [[AVR]]), 16 (z.B. [[MSP430]]) oder 32 (z.B. [[STM32]]) Bit&lt;br /&gt;
* Interrupt System mit mehr oder weniger Features&lt;br /&gt;
* Programmiersprache (Assembler, Basic, C, C++, Pascal)&lt;br /&gt;
* Assembler verstehen (Sollte nur theoretisch verstanden werden, ein Programm sollte in einer Hochsprache geschrieben sein)&lt;br /&gt;
* DIL Gehäuse - steckbretttauglich (STM32-Prozessoren gibt es auch fertig gelötet auf einem steckbretttauglichen Board zum fünffachen Preis vergleichbarer DIL Mikrocontroller)&lt;br /&gt;
* Programmieradapter&lt;br /&gt;
* zu 90% reicht doch ein kleiner Prozessor ([[AVR]]/PIC) - und für die restlichen kann man immer noch einen großen nehmen. Warum also nicht gleich einen großen nehmen?&lt;br /&gt;
&lt;br /&gt;
= Kosten =&lt;br /&gt;
&lt;br /&gt;
Grobe Abschätzung was das alles denn kosten wird. Hier sind nur einige Beispiele gezeigt (Einzelpreise bei Bezugsquellen in Deutschland).&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|- bgcolor=&amp;quot;#d0d0ff&amp;quot;&lt;br /&gt;
! Board || [[STM32]] || [[AVR]] || PIC18/24/32 || [[MSP430]] || Arduino&lt;br /&gt;
|-&lt;br /&gt;
| Demo-Board || align=&amp;quot;center&amp;quot;|[http://www.st.com/web/en/catalog/tools/FM116/SC959/SS1532/PF252419] 9..20€ (incl. Programmieradapter und Debugger) || align=&amp;quot;center&amp;quot;|5..500€, z.B. Arduino || align=&amp;quot;center&amp;quot;| [http://www.microchipdirect.com/ProductDetails.aspx?Catalog=BuyMicrochip&amp;amp;Category=Starter%20Kits&amp;amp;mid=1&amp;amp;lmid=610 durchschnittlich 18€ .. 50€] || align=&amp;quot;center&amp;quot;|[http://www.ti.com/tool/msp-exp430fr5739] ~35€ || align=&amp;quot;center&amp;quot;|20€&lt;br /&gt;
|-&lt;br /&gt;
| Steckbrettaugliches Board || align=&amp;quot;center&amp;quot;| s.o. oder [http://re.reworld.eu/de/produkte/s64dil-405/index.htm S64DIL-405] 30€ || align=&amp;quot;center&amp;quot;|0,6–5€ als einzelner DIP-IC || align=&amp;quot;center&amp;quot;|2-5€ als einzelner IC || align=&amp;quot;center&amp;quot;|?? || align=&amp;quot;center&amp;quot;|??&lt;br /&gt;
|-&lt;br /&gt;
| Programmieradapter || align=&amp;quot;center&amp;quot;|  || align=&amp;quot;center&amp;quot;| ab 4€ || align=&amp;quot;center&amp;quot;| || align=&amp;quot;center&amp;quot;| || align=&amp;quot;center&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Programmieradapter mit Debugger || align=&amp;quot;center&amp;quot;| s.o. oder z.B [http://www.segger.com/j-link-edu.html Segger J-LINK EDU] 50€ (sehr schnell und unterstützt viele Prozessoren) || align=&amp;quot;center&amp;quot;|?? || align=&amp;quot;center&amp;quot;|PICkit 3 30€ [http://www.microchipdirect.com/ProductSearch.aspx?keywords=PG164130] || align=&amp;quot;center&amp;quot;|z.B. Dragon 50€ || align=&amp;quot;center&amp;quot;|20€ (Man muss DebugWire aktivieren)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Das Demo-Board sollte ein Board sein, nicht zu teuer, um die ersten Erfahrungen zu sammeln. Wenn einem der Prozessor gefällt, so kann man später immer noch mit einem zweiten Demo-Board, z.B. mit Display aufrüsten.&lt;br /&gt;
&lt;br /&gt;
Wenn man gerne mit einem Steckbrett sich die Schaltung zusammen stecken möchte, so kann man entweder die benötigten Drähte am Demo-Board anlöten oder bei z.B. [[AVR]]/[[PIC]] Prozessoren gibt es Ausführungen im DIL Gehäuse, die direkt steckbar sind.&lt;br /&gt;
&lt;br /&gt;
Ein Programmieradapter sollte unbedingt auch einen Debugger beinhalten. Denn für den Start ist es ungemein hilfreich zu sehen was im Prozessor gerade geschieht. Die JTAG-Adapter für einen [[STM32]] Prozessor sind alle Debugger-Tauglich. Für einen [[AVR]] oder [[PIC]] Prozessor gibt es auch oft reine Programmer (oft Selbstbau-Lösungen über die serielle oder parallele Schnittstelle) welche den Mikrocontroller nur beschreiben können. Sinvoller sind hingegen Debugger (bspw. PIC Kit 3 [http://www.microchipdirect.com/ProductSearch.aspx?keywords=PG164130] kompatibel zu allen PIC Mikrocontrollern), die die Ausführung eines Mikrocontrollers anhalten können um die aktuelle Position im Programmcode, Variableninhalt, Register, ... auszulesen bzw. zur Laufzeit zu ändern.&lt;br /&gt;
&lt;br /&gt;
Der für den [[STM32]] empfohlene Segger J-LINK EDU ist zwar nicht der günstigste (z.B. auf einem STM32F4DISCOVERY Borad ist auch einer drauf den man für andere STM32 nutzen kann) aber eines der besten, mit sehr guten Software-Tools und nutzbar für alle Prozessoren mit ARM-Kern (ARM7/9/11/... Cortex-Mx). Niemals am Werkzeug sparen und man hat viel mehr Freude bei der Arbeit.&lt;br /&gt;
&lt;br /&gt;
Der &amp;quot;Arduino&amp;quot; ist kein eigenständiger Prozessor, sondern ein fertiges Board mit einer &amp;quot;Arduino&amp;quot; Programmierumgebung (und einem AVR Prozessor), extra geschaffen für Einsteiger. Allerdings ist da der Lerneffekt viel geringer da man den Prozessor mit der Arduino-Software programmiert und nicht direkt die Register.&lt;br /&gt;
&lt;br /&gt;
Ein [[PIC16]] ist ein älterer 8-Bit Mikrocontroller, der durch die [[PIC18]] Reihe abgelöst wurde. Werden komplexere Anforderungen in Zukunft an den Mikrocontroller gestellt (Audio, Grafik), so sollte zu den moderneren [[PIC24]] bzw. [[dsPIC]] (16-Bit) oder gar zu [[PIC32]] (32-Bit MIPS Prozessor) gegriffen werden, wobei letzterer von der Performance vergleichbar mit den STM32 ARM-basierten Mikrocontrollern ist.&lt;br /&gt;
&lt;br /&gt;
= Programmierumgebungen=&lt;br /&gt;
&lt;br /&gt;
Bei den Programmierumgebungen gibt es zu allen Prozessorfamilien kostenlose und Leistungsfähige Software&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|- bgcolor=&amp;quot;#d0d0ff&amp;quot;&lt;br /&gt;
! [[STM32]] || [[AVR]] || PIC || [[MSP430]] || Arduino&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot;|[http://www.coocox.org/CooCox_CoIDE.htm CooCox] || align=&amp;quot;center&amp;quot;|Atmel-Studio || align=&amp;quot;center&amp;quot;|[http://www.microchip.com/pagehandler/en-us/family/mplabx/ MPALB X] (IDE inklusive compiler) || align=&amp;quot;center&amp;quot;|?? || align=&amp;quot;center&amp;quot;|arduino 1.0.5&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
natürlich gibt es noch viele weitere (für STM32 siehe [[STM32#Programmierung]]), es sollte jedoch nur die einfachsten kostenlose (und ohne Codebegrenzung) für den ersten Einstieg gezeigt werden.&lt;br /&gt;
&lt;br /&gt;
* CooCox Anleitung wie man innerhalb einer Stunde die LED eines Nagel neuen STM32F4DISCOVERY Boards zum blinken bekommt, Artikel: [[STM32 CooCox Installation]]. Diese Anleitung ist eine Schritt-Für-Schritt Anleitung um den aller ersten Start zu vereinfachen.&lt;br /&gt;
&lt;br /&gt;
= Dokumentation=&lt;br /&gt;
&lt;br /&gt;
Bevor man sich für einen Prozessor entscheidet sollte man unbedingt deren Dokumentation mal zumindest überfliegen und auch deren Errata&#039;s lesen. Nicht dass man eine Anwendung erstellen möchte und stellt hinterher fest, dass genau dieser Teil so buggy ist das er nicht genutzt werden kann.&lt;br /&gt;
&lt;br /&gt;
Beim [[STM32]] hat die Dokumentation doch recht viele Seiten, viel mehr als bei einem [[AVR]] oder PIC. Dabei ist vieles eher knapp beschrieben, man muss mehr suchen als z.B. bei den AVR-Dokus, um die gewünschten Informationen zu finden. Außerdem gibt es durchaus einige Unklarheiten und Fehler/Widersprüche. Schlussendlich ist es Geschmackssache mit welcher Doku von welchem Hersteller man sich besser zurecht findet.&lt;br /&gt;
&lt;br /&gt;
Bei den PICs gibt es zu jedem Mikrocontroller ein Datenblatt das die wichtigsten Informationen für den alltäglichen Gebrauch enthält. Da bestimmte Peripherie (bspw. I2C, SPI, ... ) aber sehr komplex ist und innerhalb einer Familie (PIC16/18/24/32) sich identisch verhält, gibt es zu jeder Familie die sogenannten Family-Datasheets, welche alle Module im Detail beschreiben.&lt;br /&gt;
&lt;br /&gt;
Parallel zur Dokumentation sollte man sich auch die Demo-Beispiele der Hersteller anschauen, dann wird vieles gleich verständlicher.&lt;br /&gt;
&lt;br /&gt;
Eine Übersicht über die Funktionen gibt es im Artikel: [[STM32]]&lt;br /&gt;
&lt;br /&gt;
= Die Arbeit mit dem STM32=&lt;br /&gt;
&lt;br /&gt;
Zu erst einmal SOOO groß sind die Unterschiede zwischen den einzelnen Prozessoren nicht. Alle haben Ein-/Ausgänge und um mittels einem Port-Pin eine LED ansteuern zu können muss bei jedem Prozessor der Pin erst einmal parametriert werden, egal ob das jetzt ein STM32 oder ein AVR oder ein MSP430 ist. Nur hat man bei einem STM32 doch einige Funktionen mehr, z.B. zuschaltbarer Pull-Up oder Pull-Down Widerstand und spezielle Setz-Rücksetzregister, die andere Prozessoren nicht haben, jedoch das programmieren vereinfachen.&lt;br /&gt;
Der Haupt-Unterschied zu den anderen Prozessoren ist, dass der [[STM32]] so viele Peripherie-Module beherbergt, dass man die einzeln immer mit einem Clock aktivieren muss, denn damit lässt sich viel Strom sparen.&lt;br /&gt;
&lt;br /&gt;
Und mal ganz ehrlich die Diskussion welcher µc einfacher zu konfigurieren ist, ist doch absoluter Unsinn. Der Weg ist immer der Gleiche:&lt;br /&gt;
*1. Blick ins Datenblatt welche Register für diese Funktion benötigt werden.&lt;br /&gt;
*2. Werte ermitteln die in die Register eingetragen werden.&lt;br /&gt;
*3. Werte ins Register schreiben. Da machte es GAR KEINEN UNTERSCHIED ob es ein [[AVR]], 8051/2, ARM,...... ist.&lt;br /&gt;
&lt;br /&gt;
Stimmt schon es gibt Unterschiede. Die Register haben anderen Namen, andere Adressen, andere Bitbedeutungen,...&lt;br /&gt;
Aber es steht doch alles im Datenblatt. Und ob ich jetzt einen [[AVR]] oder einen ARM das erste mal vor mir liegen hab. Ich brauch in allen Fällen die oben beschriebenen Schritte.&lt;br /&gt;
&lt;br /&gt;
Das Interruptsystem ist bei einem STM32 zusätzlich priorisiert, damit kann man festlegen welcher Interrupt vorrangig bearbeitet wird. Die Prioritätenvergabe ist auch kein Hexenwerk.&lt;br /&gt;
&lt;br /&gt;
Zu allen Prozessoren liefern die jeweiligen Hersteller umfangreiche Demo-Codes und Libraries mit. Meist sind alle in C geschrieben, daher sollte auch die Programmiersprache C verwendet werden. Vor allem auch wenn man berufliche Absichten verfolgt.&lt;br /&gt;
&lt;br /&gt;
Und wenn man einen STM32 kann, dann ist ein Umstieg auf einen LPC17xx (NXP) oder andere Hersteller überhaupt kein Problem (*), denn die bieten ebenfalls Prozessoren mit Cortex-M3 Kern und man kann diese mit der gleichen Programmierumgebung programmieren. Somit ist man nicht zwingend Herstellerabhängig. (* jeder Hersteller verbaut seine eigene Peripherie, die andere Funktionalitäten haben.)&lt;br /&gt;
&lt;br /&gt;
Mit einem STM32 kann man als Hobby-Baster und Professionell nahezu alle Anwendungen realisieren. Der hat genügend RAM und FLASH Speicher und auch genügen Geschwindigkeit. Viele Gehäuse-Varianten um kleine bis hin zu größere Geräte zu erstellen. Viele Schnittstellen, sind im Artikel [[STM32]] beschrieben.&lt;br /&gt;
&lt;br /&gt;
Der einzige Nachteil beim STM32: man muss etwas mehr lesen, da eine Peripherie doch viel mehr Funktionalität hat. Ansonsten kenne ich nicht wirklich einen Grund warum man als Neueinsteiger keinen STM32 nehmen sollte.&lt;br /&gt;
&lt;br /&gt;
= Programmiersprachen =&lt;br /&gt;
* Wie bei vielen anderen Controllern wird beim STM32 auch hauptsächlich C und C++ verwendet. Kennen sollte man die Programmiersprache C schon, wenn man davon noch keine Ahnung hat dann sollte man erst mal mittels einem Tutorial auf einem PC ein Konsoleprogramm schreiben, sodass man es einigermaßen kennen lernt. Hier im Forum gibt es ebenfalls Artikel dazu. Zielt man auf die (spätere) Anwendung in der Industrie, sollte aufgrund der Verbreitung auf jeden Fall C (oder C++) gewählt werden; außerdem sind die meisten verfügbaren Libraries in C geschrieben.&lt;br /&gt;
* Assembler sollte man nur grob verstehen, Details wie ein Befehl arbeitet ist unwichtig. Selbst wenn man die Zyklen für einen Funktionsaufruf wissen will, so bietet der STM32 (Cortex-M3) einen Cycle-Counter den man auslesen kann; durch die komplexere Pipeline und Cache-Effekte sind die Laufzeiten allerdings nicht genau vorhersehbar. Wird zyklengenause Timing benötigt, sollten Timer verwendet werden - davon hat der STM32 genug.&lt;br /&gt;
&lt;br /&gt;
Der 32bit-Adressraum, der RAM, Flash, I/O-Register vereinheitlicht ansprechen kann (im Gegensatz zu z.B. AVR) ist ideal für eine Verwendung durch Hochsprachen; bei Pointern muss keine zusätzliche Information verwaltet werden, in welche Art Speicher sie zeigen. Die Adresse gibt dies eindeutig an (es gibt nur &#039;&#039;&#039;eine&#039;&#039;&#039; Adresse 42, und nicht 2 wie bei es für Harvard-Architekturen eigentlich typisch ist (Programmspeicher und Datenspeicher, also z.B. Flash und RAM/IO) und die Hardware spricht automatisch den richtigen Speicher an. Die Möglichkeiten zur Offset-Adressierung, der Barrel-Shifter, Divsions-Einheit, die FPU (bei STM32F4), Interrupt-Modell etc. begünstigen ebenfalls die Erzeugung effizienteren Codes. Außerdem haben die STM32 einfach mehr &amp;quot;rohe Leistung&amp;quot;, d.h. mehr Flash/RAM-Speicher und höhere Taktfrequenzen.&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Folgerung&#039;&#039;&#039;: Die Programmierung in Hochsprachen ist &#039;&#039;&#039;bequemer als bei 8-Bittern&#039;&#039;&#039;, denn man muss sich einfach weniger Gedanken machen, ob der Compiler ein Programm nun effizent umsetzen kann (kann man natürlich trotzdem machen, um noch mehr Leistung &amp;quot;herauszuquetschen&amp;quot;, wenn man will).&lt;br /&gt;
&lt;br /&gt;
= Weitere Randbedingungen für die Entscheidung=&lt;br /&gt;
&lt;br /&gt;
Der wichtige Punkt, der oftmals auch vergessen wird: die Beschaffbarkeit. Wenn jemand einen Renesas M16C oder Fujitsu empfiehlt, dann sucht man erst mal und findet nur wenige vereinzelte die man privat kaufen kann.&lt;br /&gt;
&lt;br /&gt;
Oder auch die Unterstützung im Internet - ist bei einigen Exoten spärlich. Dieses Forum bietet die beste Hilfe für [[AVR]], PIC, [[STM32]] und [[MSP430]].&lt;br /&gt;
&lt;br /&gt;
Andere Prozessoren sind schon sehr alt, bzw. nicht mehr modern da deren Peripherie zum Teil doch recht eingeschränkte Funktionalität bietet. z.B. viele 8051 Typen oder PIC16 (oder auch dsPIC30). Die mögen für Mini-Anwenungen gut sein, aber wer will den schon gerne sich extra für eine Kleinanwendung mit einem kleinen µC auseinandersetzen, wenn er schon einen STM32 kennt, mit dem er alles machen kann (und sich bereits gute Funktionen geschrieben hat)?&lt;br /&gt;
&lt;br /&gt;
Daher mein Resümee: wer nicht gerade auf den Kopf gefallen ist, der kann getrost mit einem STM32 starten. Ein [http://www.st.com/web/en/catalog/tools/FM116/SC959/SS1532/PF252419?s_searchtype=keyword STM32F4DISCOVERY] Board kostet nur ca. 20 EUR - und mehr muss für den ersten Start nicht investiert werden - wenn es doch zu komplex sein sollte gibt es hier im Forum auch Hilfe oder man nimmt erst mal ein &amp;quot;Arduino&amp;quot;. Jedenfalls sind diese 20 EUR wirklich keine große Investition.&lt;br /&gt;
&lt;br /&gt;
= Weblinks, Foren, Communities, Tutorials =&lt;br /&gt;
* [[STM32]] Hauptartikel, [http://www.mikrocontroller.net/articles/STM32#Weblinks.2C_Foren.2C_Communities.2C_Tutorials dortige Linksammlung]&lt;br /&gt;
* [http://www.mikrocontroller.net/topic/319328 Diskussion zum Artikel]&lt;br /&gt;
* [[STM32 CooCox Installation]]&lt;br /&gt;
* [[STM32 Eclipse Installation]]&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>Frank m35</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=STM32_f%C3%BCr_Einsteiger&amp;diff=80343</id>
		<title>STM32 für Einsteiger</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=STM32_f%C3%BCr_Einsteiger&amp;diff=80343"/>
		<updated>2013-12-31T10:17:17Z</updated>

		<summary type="html">&lt;p&gt;Frank m35: /* Eigene Fähigkeiten und Wünsche */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Immer wiederkehrend hier im Forum &amp;quot;Mit welchem Mikrocontroller anfangen?&amp;quot;. Es gibt eine große Auswahl und eben so viele Empfehlungen. In diesem Artikel soll zu erst geholfen werden ob ein STM32-Prozessor mit Cortex-M3/M4 Kern überhaupt der Richtige für den Start ist.&lt;br /&gt;
Nicht für jeden ist der STM32 zu empfehlen, denn die Anforderungen und Wünsche die man realisieren möchte, sowie die eigenen Fähigkeiten sind verschieden.&lt;br /&gt;
&lt;br /&gt;
Es werden meist die Prozessoren AVR, PIC, Arduino, MSP430 und STM32 empfohlen. Seltener auch 8051, LPC und M16C. Alle haben Vorzüge und ebenso auch Nachteile.&lt;br /&gt;
&lt;br /&gt;
= Eigene Fähigkeiten und Wünsche =&lt;br /&gt;
&lt;br /&gt;
Dieser Artikel geht davon aus, dass bereits Elektronik Kenntnisse vorhanden sind. Wenn nicht dann sollte man erst einmal den Artikel &amp;quot;[[Absolute Beginner]]&amp;quot; durcharbeiten, sowie die anderen Artikel aus der Kategorie &amp;quot;[http://www.mikrocontroller.net/articles/Kategorie:Grundlagen Grundlagen]&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Zu erst einmal die Randbedingungen, mit der man sich selbst zu erst einmal einschätzen sollte:&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|- bgcolor=&amp;quot;#d0d0ff&amp;quot;&lt;br /&gt;
! Fähigkeit || Empfehlung [[STM32]] || Empfehlung [[AVR]] || Empfehlung PIC || Empfehlung [[MSP430]] || Empfehlung Arduino&lt;br /&gt;
|-&lt;br /&gt;
| Neueinsteiger, kaum Elektronikkenntnisse, noch nie programmiert || align=&amp;quot;center&amp;quot;|O || align=&amp;quot;center&amp;quot;|O [http://www.rn-wissen.de/index.php/AVR-Einstieg_leicht_gemacht] [http://www.avr-asm-tutorial.net/avr_de/] || align=&amp;quot;center&amp;quot;|O [http://www.sprut.de/] || align=&amp;quot;center&amp;quot;|O || align=&amp;quot;center&amp;quot;|x&lt;br /&gt;
|-&lt;br /&gt;
| Wunsch ist SD-Card oder Grafik-Display || align=&amp;quot;center&amp;quot;|x || align=&amp;quot;center&amp;quot;|x || align=&amp;quot;center&amp;quot;|x [http://www.microchip.com/stellent/idcplg?IdcService=SS_GET_PAGE&amp;amp;nodeId=2680&amp;amp;dDocName=en537999] [http://www.microchip.com/pagehandler/en-us/technology/graphics/] || align=&amp;quot;center&amp;quot;|x || align=&amp;quot;center&amp;quot;|x&lt;br /&gt;
|-&lt;br /&gt;
| Wunsch ist TCP/IP Netzwerk oder Kamera|| align=&amp;quot;center&amp;quot;|x || align=&amp;quot;center&amp;quot;|O || align=&amp;quot;center&amp;quot;|x [http://www.microchip.com/stellent/idcplg?IdcService=SS_GET_PAGE&amp;amp;nodeId=2505&amp;amp;param=en535724] || align=&amp;quot;center&amp;quot;|O || align=&amp;quot;center&amp;quot;|O&lt;br /&gt;
|-&lt;br /&gt;
| Möchte die Erkenntnisse beruflich nutzen|| align=&amp;quot;center&amp;quot;|x || align=&amp;quot;center&amp;quot;|x || align=&amp;quot;center&amp;quot;|x || align=&amp;quot;center&amp;quot;|x || align=&amp;quot;center&amp;quot;|-&lt;br /&gt;
|-&lt;br /&gt;
| Strom sparende Anwendungen|| align=&amp;quot;center&amp;quot;|- [http://www.st.com/web/en/catalog/mmc/FM141/SC1169/SS1295]&amp;lt;br&amp;gt; 300 nA Sleep&amp;lt;br&amp;gt;230 μA/MHz]|| align=&amp;quot;center&amp;quot;|- [http://www.atmel.com/technologies/lowpower/default.aspx] [http://www.futurlec.com/News/Atmel/PicoPower.shtml]&amp;lt;br&amp;gt;100 nA Sleep&amp;lt;br&amp;gt;340 μA/MHz|| align=&amp;quot;center&amp;quot;|x [http://ww1.microchip.com/downloads/en/DeviceDoc/39989A.pdf] [http://ww1.microchip.com/downloads/en/DeviceDoc/30009941F.pdf] &amp;lt;br&amp;gt; 9 nA Sleep&amp;lt;br&amp;gt;35 μA/MHz || align=&amp;quot;center&amp;quot;|x [http://www.ti.com/lit/wp/slay015/slay015.pdf] [http://www.ti.com/ww/mx/multimedia/webcasts/Aspectos_Generales_MSP430.pdf] &amp;lt;br&amp;gt; 100 nA Sleep&amp;lt;br&amp;gt;100 μA/MHz || align=&amp;quot;center&amp;quot;|-&lt;br /&gt;
|-&lt;br /&gt;
| Experimentieren mit Multithreading, RTOS, Schedulern || align=&amp;quot;center&amp;quot;|x || align=&amp;quot;center&amp;quot;|O [http://www.freertos.org/a00098.html] [http://www.femtoos.org/] || align=&amp;quot;center&amp;quot;|PIC32 [http://www.microchip.com/stellent/idcplg?IdcService=SS_GET_PAGE&amp;amp;nodeId=1406&amp;amp;dDocName=en531543&amp;amp;redirects=rtos] || align=&amp;quot;center&amp;quot;|- || align=&amp;quot;center&amp;quot;|-&lt;br /&gt;
|-&lt;br /&gt;
| Besonders große, speicherintensive Programme&amp;lt;br&amp;gt;z.B. Grafiken, Fonts || align=&amp;quot;center&amp;quot;|bis 2MB Flash&amp;lt;br&amp;gt;bis 256kB SRAM || align=&amp;quot;center&amp;quot;|bis 256kB Flash&amp;lt;br&amp;gt;bis 16kB SRAM || align=&amp;quot;center&amp;quot;|bis 2MB Flash&amp;lt;br&amp;gt;bis 512kB SRAM || align=&amp;quot;center&amp;quot;|bis 512KB Flash&amp;lt;br&amp;gt;bis ? kB SRAM || align=&amp;quot;center&amp;quot;|bis 256kB Flash&amp;lt;br&amp;gt;bis 16kB SRAM&lt;br /&gt;
|-&lt;br /&gt;
| Sehr viel PWM mit komplexem Timing || align=&amp;quot;center&amp;quot;|x || align=&amp;quot;center&amp;quot;| AT90Spwm || align=&amp;quot;center&amp;quot;|dsPIC/PIC32 || align=&amp;quot;center&amp;quot;|O || align=&amp;quot;center&amp;quot;|-&lt;br /&gt;
|-&lt;br /&gt;
| Deutschsprachige Community || align=&amp;quot;center&amp;quot;|O || align=&amp;quot;center&amp;quot;|x || align=&amp;quot;center&amp;quot;|O || align=&amp;quot;center&amp;quot;|- || align=&amp;quot;center&amp;quot;|x&lt;br /&gt;
|-&lt;br /&gt;
| Anzahl möglicher HW-Breakpoints || align=&amp;quot;center&amp;quot;|4 bis 6 || align=&amp;quot;center&amp;quot;|2 || align=&amp;quot;center&amp;quot;| 1 bis 10 [http://www.microchip.com/stellent/groups/SiteComm_sg/documents/DeviceDoc/en556761.pdf] || align=&amp;quot;center&amp;quot;|2 || align=&amp;quot;center&amp;quot;|2&lt;br /&gt;
|}&lt;br /&gt;
* x = ja&lt;br /&gt;
* O = Teilweise, Einschränkungen&lt;br /&gt;
* - = nicht empfohlen&lt;br /&gt;
* ? = Bitte ergänzen&lt;br /&gt;
&lt;br /&gt;
Nur um nicht zu verwirren, auch wenn Teile &amp;quot;nicht empfohlen&amp;quot; sind, heißt dass nicht dass es mit dem Prozessor nicht geht, vielmehr dass es mehr Aufwand ist das zu realisieren oder mehr Einschränkungen hat.&lt;br /&gt;
&lt;br /&gt;
Die Spalte PIC zeigt die Eigenschaften der 8-Bit PIC12/16/18 (vergleichbar mit [[AVR]]), 16-Bit [[PIC24]] (vergleichbar mit [[MSP430]]) und 32-Bit [[PIC32]] (vergleichbar mit [[STM32]]). Ein Wechsel des Mikrocontrollers innerhalb der Familien ist Codetechnisch problemlos möglich. [http://www.elektor.nl/Uploads/Files/PIC24FIntro_5f082806.pdf] Hardwaretechnisch sind verschiedene Modelle gleicher Familie zudem auch meist Pin-Kompatibel [http://ww1.microchip.com/downloads/en/DeviceDoc/00148m.pdf] sodass ohne Design-Änderung zwischen verschiedenen Modellen gewechselt werden kann.&lt;br /&gt;
Ein Wechsel zwischen den Familien ist Architekturbedingt aufwendiger, vor allem von 8-Bit auf 16/32-Bit. [http://ww1.microchip.com/downloads/en/DeviceDoc/39764a.pdf] Aufgrund gleichbleibender IDE (Mplab) sowie gleichbleibenden Libraries bei Verwendung einer Hochsprache (C) jedoch vor allem zwischen 16-Bit und 32-Bit ohne weitere Probleme möglich [http://www.embedded.com/design/mcus-processors-and-socs/4007683/Practical-migration-from-8-16-to-32-bit-PIC].&lt;br /&gt;
&lt;br /&gt;
= Unwichtige Randbedingungen =&lt;br /&gt;
&lt;br /&gt;
Oftmals werden fälschlicherweise Argumente für oder gegen eine µC-Familie ausgesprochen, die in der Praxis &#039;&#039;&#039;zum Einstieg&#039;&#039;&#039; (bei konkreten Anwendungen kann das anders aussehen) eher unwichtig sind.&lt;br /&gt;
&lt;br /&gt;
* Spannungsversorgung 3,3V / 5V&lt;br /&gt;
* 8 (z.B. [[AVR]]), 16 (z.B. [[MSP430]]) oder 32 (z.B. [[STM32]]) Bit&lt;br /&gt;
* Interrupt System mit mehr oder weniger Features&lt;br /&gt;
* Programmiersprache (Assembler, Basic, C, C++, Pascal)&lt;br /&gt;
* Assembler verstehen (Sollte nur theoretisch verstanden werden, ein Programm sollte in einer Hochsprache geschrieben sein)&lt;br /&gt;
* DIL Gehäuse - steckbretttauglich (STM32-Prozessoren gibt es auch fertig gelötet auf einem steckbretttauglichen Board zum fünffachen Preis vergleichbarer DIL Mikrocontroller)&lt;br /&gt;
* Programmieradapter&lt;br /&gt;
* zu 90% reicht doch ein kleiner Prozessor ([[AVR]]/PIC) - und für die restlichen kann man immer noch einen großen nehmen. Warum also nicht gleich einen großen nehmen?&lt;br /&gt;
&lt;br /&gt;
= Kosten =&lt;br /&gt;
&lt;br /&gt;
Grobe Abschätzung was das alles denn kosten wird. Hier sind nur einige Beispiele gezeigt (Einzelpreise bei Bezugsquellen in Deutschland).&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|- bgcolor=&amp;quot;#d0d0ff&amp;quot;&lt;br /&gt;
! Board || [[STM32]] || [[AVR]] || PIC18/24/32 || [[MSP430]] || Arduino&lt;br /&gt;
|-&lt;br /&gt;
| Demo-Board || align=&amp;quot;center&amp;quot;|[http://www.st.com/web/en/catalog/tools/FM116/SC959/SS1532/PF252419] 9..20€ (incl. Programmieradapter und Debugger) || align=&amp;quot;center&amp;quot;|5..500€, z.B. Arduino || align=&amp;quot;center&amp;quot;| [http://www.microchipdirect.com/ProductDetails.aspx?Catalog=BuyMicrochip&amp;amp;Category=Starter%20Kits&amp;amp;mid=1&amp;amp;lmid=610 durchschnittlich 18€ .. 50€] || align=&amp;quot;center&amp;quot;|[http://www.ti.com/tool/msp-exp430fr5739] ~35€ || align=&amp;quot;center&amp;quot;|20€&lt;br /&gt;
|-&lt;br /&gt;
| Steckbrettaugliches Board || align=&amp;quot;center&amp;quot;| s.o. oder [http://re.reworld.eu/de/produkte/s64dil-405/index.htm S64DIL-405] 30€ || align=&amp;quot;center&amp;quot;|0,6–5€ als einzelner DIP-IC || align=&amp;quot;center&amp;quot;|2-5€ als einzelner IC || align=&amp;quot;center&amp;quot;|?? || align=&amp;quot;center&amp;quot;|??&lt;br /&gt;
|-&lt;br /&gt;
| Programmieradapter || align=&amp;quot;center&amp;quot;|  || align=&amp;quot;center&amp;quot;| ab 4€ || align=&amp;quot;center&amp;quot;| || align=&amp;quot;center&amp;quot;| || align=&amp;quot;center&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Programmieradapter mit Debugger || align=&amp;quot;center&amp;quot;| s.o. oder z.B [http://www.segger.com/j-link-edu.html Segger J-LINK EDU] 50€ (sehr schnell und unterstützt viele Prozessoren) || align=&amp;quot;center&amp;quot;|?? || align=&amp;quot;center&amp;quot;|PICkit 3 30€ [http://www.microchipdirect.com/ProductSearch.aspx?keywords=PG164130] || align=&amp;quot;center&amp;quot;|z.B. Dragon 50€ || align=&amp;quot;center&amp;quot;|20€ (Man muss DebugWire aktivieren)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Das Demo-Board sollte ein Board sein, nicht zu teuer, um die ersten Erfahrungen zu sammeln. Wenn einem der Prozessor gefällt, so kann man später immer noch mit einem zweiten Demo-Board, z.B. mit Display aufrüsten.&lt;br /&gt;
&lt;br /&gt;
Wenn man gerne mit einem Steckbrett sich die Schaltung zusammen stecken möchte, so kann man entweder die benötigten Drähte am Demo-Board anlöten oder bei z.B. [[AVR]]/[[PIC]] Prozessoren gibt es Ausführungen im DIL Gehäuse, die direkt steckbar sind.&lt;br /&gt;
&lt;br /&gt;
Ein Programmieradapter sollte unbedingt auch einen Debugger beinhalten. Denn für den Start ist es ungemein hilfreich zu sehen was im Prozessor gerade geschieht. Die JTAG-Adapter für einen [[STM32]] Prozessor sind alle Debugger-Tauglich. Für einen [[AVR]] oder [[PIC]] Prozessor gibt es auch oft reine Programmer (oft Selbstbau-Lösungen über die serielle oder parallele Schnittstelle) welche den Mikrocontroller nur beschreiben können. Sinvoller sind hingegen Debugger (bspw. PIC Kit 3 [http://www.microchipdirect.com/ProductSearch.aspx?keywords=PG164130] kompatibel zu allen PIC Mikrocontrollern), die die Ausführung eines Mikrocontrollers anhalten können um die aktuelle Position im Programmcode, Variableninhalt, Register, ... auszulesen bzw. zur Laufzeit zu ändern.&lt;br /&gt;
&lt;br /&gt;
Der für den [[STM32]] empfohlene Segger J-LINK EDU ist zwar nicht der günstigste (z.B. auf einem STM32F4DISCOVERY Borad ist auch einer drauf den man für andere STM32 nutzen kann) aber eines der besten, mit sehr guten Software-Tools und nutzbar für alle Prozessoren mit ARM-Kern (ARM7/9/11/... Cortex-Mx). Niemals am Werkzeug sparen und man hat viel mehr Freude bei der Arbeit.&lt;br /&gt;
&lt;br /&gt;
Der &amp;quot;Arduino&amp;quot; ist kein eigenständiger Prozessor, sondern ein fertiges Board mit einer &amp;quot;Arduino&amp;quot; Programmierumgebung (und einem AVR Prozessor), extra geschaffen für Einsteiger. Allerdings ist da der Lerneffekt viel geringer da man den Prozessor mit der Arduino-Software programmiert und nicht direkt die Register.&lt;br /&gt;
&lt;br /&gt;
Ein [[PIC16]] ist ein älterer 8-Bit Mikrocontroller, der durch die [[PIC18]] Reihe abgelöst wurde. Werden komplexere Anforderungen in Zukunft an den Mikrocontroller gestellt (Audio, Grafik), so sollte zu den moderneren [[PIC24]] bzw. [[dsPIC]] (16-Bit) oder gar zu [[PIC32]] (32-Bit MIPS Prozessor) gegriffen werden, wobei letzterer von der Performance vergleichbar mit den STM32 ARM-basierten Mikrocontrollern ist.&lt;br /&gt;
&lt;br /&gt;
= Programmierumgebungen=&lt;br /&gt;
&lt;br /&gt;
Bei den Programmierumgebungen gibt es zu allen Prozessorfamilien kostenlose und Leistungsfähige Software&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|- bgcolor=&amp;quot;#d0d0ff&amp;quot;&lt;br /&gt;
! [[STM32]] || [[AVR]] || PIC || [[MSP430]] || Arduino&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot;|[http://www.coocox.org/CooCox_CoIDE.htm CooCox] || align=&amp;quot;center&amp;quot;|Atmel-Studio || align=&amp;quot;center&amp;quot;|[http://www.microchip.com/pagehandler/en-us/family/mplabx/ MPALB X] (IDE inklusive compiler) || align=&amp;quot;center&amp;quot;|?? || align=&amp;quot;center&amp;quot;|arduino 1.0.5&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
natürlich gibt es noch viele weitere (für STM32 siehe [[STM32#Programmierung]]), es sollte jedoch nur die einfachsten kostenlose (und ohne Codebegrenzung) für den ersten Einstieg gezeigt werden.&lt;br /&gt;
&lt;br /&gt;
* CooCox Anleitung wie man innerhalb einer Stunde die LED eines Nagel neuen STM32F4DISCOVERY Boards zum blinken bekommt, Artikel: [[STM32 CooCox Installation]]. Diese Anleitung ist eine Schritt-Für-Schritt Anleitung um den aller ersten Start zu vereinfachen.&lt;br /&gt;
&lt;br /&gt;
= Dokumentation=&lt;br /&gt;
&lt;br /&gt;
Bevor man sich für einen Prozessor entscheidet sollte man unbedingt deren Dokumentation mal zumindest überfliegen und auch deren Errata&#039;s lesen. Nicht dass man eine Anwendung erstellen möchte und stellt hinterher fest, dass genau dieser Teil so buggy ist das er nicht genutzt werden kann.&lt;br /&gt;
&lt;br /&gt;
Beim [[STM32]] hat die Dokumentation doch recht viele Seiten, viel mehr als bei einem [[AVR]] oder PIC. Dabei ist vieles eher knapp beschrieben, man muss mehr suchen als z.B. bei den AVR-Dokus, um die gewünschten Informationen zu finden. Außerdem gibt es durchaus einige Unklarheiten und Fehler/Widersprüche. Schlussendlich ist es Geschmackssache mit welcher Doku von welchem Hersteller man sich besser zurecht findet.&lt;br /&gt;
&lt;br /&gt;
Bei den PICs gibt es zu jedem Mikrocontroller ein Datenblatt das die wichtigsten Informationen für den alltäglichen Gebrauch enthält. Da bestimmte Peripherie (bspw. I2C, SPI, ... ) aber sehr komplex ist und innerhalb einer Familie (PIC16/18/24/32) sich identisch verhält, gibt es zu jeder Familie die sogenannten Family-Datasheets, welche alle Module im Detail beschreiben.&lt;br /&gt;
&lt;br /&gt;
Parallel zur Dokumentation sollte man sich auch die Demo-Beispiele der Hersteller anschauen, dann wird vieles gleich verständlicher.&lt;br /&gt;
&lt;br /&gt;
Eine Übersicht über die Funktionen gibt es im Artikel: [[STM32]]&lt;br /&gt;
&lt;br /&gt;
= Die Arbeit mit dem STM32=&lt;br /&gt;
&lt;br /&gt;
Zu erst einmal SOOO groß sind die Unterschiede zwischen den einzelnen Prozessoren nicht. Alle haben Ein-/Ausgänge und um mittels einem Port-Pin eine LED ansteuern zu können muss bei jedem Prozessor der Pin erst einmal parametriert werden, egal ob das jetzt ein STM32 oder ein AVR oder ein MSP430 ist. Nur hat man bei einem STM32 doch einige Funktionen mehr, z.B. zuschaltbarer Pull-Up oder Pull-Down Widerstand und spezielle Setz-Rücksetzregister, die andere Prozessoren nicht haben, jedoch das programmieren vereinfachen.&lt;br /&gt;
Der Haupt-Unterschied zu den anderen Prozessoren ist, dass der [[STM32]] so viele Peripherie-Module beherbergt, dass man die einzeln immer mit einem Clock aktivieren muss, denn damit lässt sich viel Strom sparen.&lt;br /&gt;
&lt;br /&gt;
Und mal ganz ehrlich die Diskussion welcher µc einfacher zu konfigurieren ist, ist doch absoluter Unsinn. Der Weg ist immer der Gleiche:&lt;br /&gt;
*1. Blick ins Datenblatt welche Register für diese Funktion benötigt werden.&lt;br /&gt;
*2. Werte ermitteln die in die Register eingetragen werden.&lt;br /&gt;
*3. Werte ins Register schreiben. Da machte es GAR KEINEN UNTERSCHIED ob es ein [[AVR]], 8051/2, ARM,...... ist.&lt;br /&gt;
&lt;br /&gt;
Stimmt schon es gibt Unterschiede. Die Register haben anderen Namen, andere Adressen, andere Bitbedeutungen,...&lt;br /&gt;
Aber es steht doch alles im Datenblatt. Und ob ich jetzt einen [[AVR]] oder einen ARM das erste mal vor mir liegen hab. Ich brauch in allen Fällen die oben beschriebenen Schritte.&lt;br /&gt;
&lt;br /&gt;
Das Interruptsystem ist bei einem STM32 zusätzlich priorisiert, damit kann man festlegen welcher Interrupt vorrangig bearbeitet wird. Die Prioritätenvergabe ist auch kein Hexenwerk.&lt;br /&gt;
&lt;br /&gt;
Zu allen Prozessoren liefern die jeweiligen Hersteller umfangreiche Demo-Codes und Libraries mit. Meist sind alle in C geschrieben, daher sollte auch die Programmiersprache C verwendet werden. Vor allem auch wenn man berufliche Absichten verfolgt.&lt;br /&gt;
&lt;br /&gt;
Und wenn man einen STM32 kann, dann ist ein Umstieg auf einen LPC17xx (NXP) oder andere Hersteller überhaupt kein Problem (*), denn die bieten ebenfalls Prozessoren mit Cortex-M3 Kern und man kann diese mit der gleichen Programmierumgebung programmieren. Somit ist man nicht zwingend Herstellerabhängig. (* jeder Hersteller verbaut seine eigene Peripherie, die andere Funktionalitäten haben.)&lt;br /&gt;
&lt;br /&gt;
Mit einem STM32 kann man als Hobby-Baster und Professionell nahezu alle Anwendungen realisieren. Der hat genügend RAM und FLASH Speicher und auch genügen Geschwindigkeit. Viele Gehäuse-Varianten um kleine bis hin zu größere Geräte zu erstellen. Viele Schnittstellen, sind im Artikel [[STM32]] beschrieben.&lt;br /&gt;
&lt;br /&gt;
Der einzige Nachteil beim STM32: man muss etwas mehr lesen, da eine Peripherie doch viel mehr Funktionalität hat. Ansonsten kenne ich nicht wirklich einen Grund warum man als Neueinsteiger keinen STM32 nehmen sollte.&lt;br /&gt;
&lt;br /&gt;
= Programmiersprachen =&lt;br /&gt;
* Wie bei vielen anderen Controllern wird beim STM32 auch hauptsächlich C und C++ verwendet. Kennen sollte man die Programmiersprache C schon, wenn man davon noch keine Ahnung hat dann sollte man erst mal mittels einem Tutorial auf einem PC ein Konsoleprogramm schreiben, sodass man es einigermaßen kennen lernt. Hier im Forum gibt es ebenfalls Artikel dazu. Zielt man auf die (spätere) Anwendung in der Industrie, sollte aufgrund der Verbreitung auf jeden Fall C (oder C++) gewählt werden; außerdem sind die meisten verfügbaren Libraries in C geschrieben.&lt;br /&gt;
* Assembler sollte man nur grob verstehen, Details wie ein Befehl arbeitet ist unwichtig. Selbst wenn man die Zyklen für einen Funktionsaufruf wissen will, so bietet der STM32 (Cortex-M3) einen Cycle-Counter den man auslesen kann; durch die komplexere Pipeline und Cache-Effekte sind die Laufzeiten allerdings nicht genau vorhersehbar. Wird zyklengenause Timing benötigt, sollten Timer verwendet werden - davon hat der STM32 genug.&lt;br /&gt;
&lt;br /&gt;
Der 32bit-Adressraum, der RAM, Flash, I/O-Register vereinheitlicht ansprechen kann (im Gegensatz zu z.B. AVR) ist ideal für eine Verwendung durch Hochsprachen; bei Pointern muss keine zusätzliche Information verwaltet werden, in welche Art Speicher sie zeigen. Die Adresse gibt dies eindeutig an (es gibt nur &#039;&#039;&#039;eine&#039;&#039;&#039; Adresse 42, und nicht 2 wie bei es für Harvard-Architekturen eigentlich typisch ist (Programmspeicher und Datenspeicher, also z.B. Flash und RAM/IO) und die Hardware spricht automatisch den richtigen Speicher an. Die Möglichkeiten zur Offset-Adressierung, der Barrel-Shifter, Divsions-Einheit, die FPU (bei STM32F4), Interrupt-Modell etc. begünstigen ebenfalls die Erzeugung effizienteren Codes. Außerdem haben die STM32 einfach mehr &amp;quot;rohe Leistung&amp;quot;, d.h. mehr Flash/RAM-Speicher und höhere Taktfrequenzen.&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Folgerung&#039;&#039;&#039;: Die Programmierung in Hochsprachen ist &#039;&#039;&#039;bequemer als bei 8-Bittern&#039;&#039;&#039;, denn man muss sich einfach weniger Gedanken machen, ob der Compiler ein Programm nun effizent umsetzen kann (kann man natürlich trotzdem machen, um noch mehr Leistung &amp;quot;herauszuquetschen&amp;quot;, wenn man will).&lt;br /&gt;
&lt;br /&gt;
= Weitere Randbedingungen für die Entscheidung=&lt;br /&gt;
&lt;br /&gt;
Der wichtige Punkt, der oftmals auch vergessen wird: die Beschaffbarkeit. Wenn jemand einen Renesas M16C oder Fujitsu empfiehlt, dann sucht man erst mal und findet nur wenige vereinzelte die man privat kaufen kann.&lt;br /&gt;
&lt;br /&gt;
Oder auch die Unterstützung im Internet - ist bei einigen Exoten spärlich. Dieses Forum bietet die beste Hilfe für [[AVR]], PIC, [[STM32]] und [[MSP430]].&lt;br /&gt;
&lt;br /&gt;
Andere Prozessoren sind schon sehr alt, bzw. nicht mehr modern da deren Peripherie zum Teil doch recht eingeschränkte Funktionalität bietet. z.B. viele 8051 Typen oder PIC16 (oder auch dsPIC30). Die mögen für Mini-Anwenungen gut sein, aber wer will den schon gerne sich extra für eine Kleinanwendung mit einem kleinen µC auseinandersetzen, wenn er schon einen STM32 kennt, mit dem er alles machen kann (und sich bereits gute Funktionen geschrieben hat)?&lt;br /&gt;
&lt;br /&gt;
Daher mein Resümee: wer nicht gerade auf den Kopf gefallen ist, der kann getrost mit einem STM32 starten. Ein [http://www.st.com/web/en/catalog/tools/FM116/SC959/SS1532/PF252419?s_searchtype=keyword STM32F4DISCOVERY] Board kostet nur ca. 20 EUR - und mehr muss für den ersten Start nicht investiert werden - wenn es doch zu komplex sein sollte gibt es hier im Forum auch Hilfe oder man nimmt erst mal ein &amp;quot;Arduino&amp;quot;. Jedenfalls sind diese 20 EUR wirklich keine große Investition.&lt;br /&gt;
&lt;br /&gt;
= Weblinks, Foren, Communities, Tutorials =&lt;br /&gt;
* [[STM32]] Hauptartikel, [http://www.mikrocontroller.net/articles/STM32#Weblinks.2C_Foren.2C_Communities.2C_Tutorials dortige Linksammlung]&lt;br /&gt;
* [http://www.mikrocontroller.net/topic/319328 Diskussion zum Artikel]&lt;br /&gt;
* [[STM32 CooCox Installation]]&lt;br /&gt;
* [[STM32 Eclipse Installation]]&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>Frank m35</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=STM32_f%C3%BCr_Einsteiger&amp;diff=80342</id>
		<title>STM32 für Einsteiger</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=STM32_f%C3%BCr_Einsteiger&amp;diff=80342"/>
		<updated>2013-12-31T10:15:42Z</updated>

		<summary type="html">&lt;p&gt;Frank m35: /* Eigene Fähigkeiten und Wünsche */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Immer wiederkehrend hier im Forum &amp;quot;Mit welchem Mikrocontroller anfangen?&amp;quot;. Es gibt eine große Auswahl und eben so viele Empfehlungen. In diesem Artikel soll zu erst geholfen werden ob ein STM32-Prozessor mit Cortex-M3/M4 Kern überhaupt der Richtige für den Start ist.&lt;br /&gt;
Nicht für jeden ist der STM32 zu empfehlen, denn die Anforderungen und Wünsche die man realisieren möchte, sowie die eigenen Fähigkeiten sind verschieden.&lt;br /&gt;
&lt;br /&gt;
Es werden meist die Prozessoren AVR, PIC, Arduino, MSP430 und STM32 empfohlen. Seltener auch 8051, LPC und M16C. Alle haben Vorzüge und ebenso auch Nachteile.&lt;br /&gt;
&lt;br /&gt;
= Eigene Fähigkeiten und Wünsche =&lt;br /&gt;
&lt;br /&gt;
Dieser Artikel geht davon aus, dass bereits Elektronik Kenntnisse vorhanden sind. Wenn nicht dann sollte man erst einmal den Artikel &amp;quot;[[Absolute Beginner]]&amp;quot; durcharbeiten, sowie die anderen Artikel aus der Kategorie &amp;quot;[http://www.mikrocontroller.net/articles/Kategorie:Grundlagen Grundlagen]&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Zu erst einmal die Randbedingungen, mit der man sich selbst zu erst einmal einschätzen sollte:&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|- bgcolor=&amp;quot;#d0d0ff&amp;quot;&lt;br /&gt;
! Fähigkeit || Empfehlung [[STM32]] || Empfehlung [[AVR]] || Empfehlung PIC || Empfehlung [[MSP430]] || Empfehlung Arduino&lt;br /&gt;
|-&lt;br /&gt;
| Neueinsteiger, kaum Elektronikkenntnisse, noch nie programmiert || align=&amp;quot;center&amp;quot;|O || align=&amp;quot;center&amp;quot;|O [http://www.rn-wissen.de/index.php/AVR-Einstieg_leicht_gemacht] [http://www.avr-asm-tutorial.net/avr_de/] || align=&amp;quot;center&amp;quot;|O [http://www.sprut.de/] || align=&amp;quot;center&amp;quot;|O || align=&amp;quot;center&amp;quot;|x&lt;br /&gt;
|-&lt;br /&gt;
| Wunsch ist SD-Card oder Grafik-Display || align=&amp;quot;center&amp;quot;|x || align=&amp;quot;center&amp;quot;|x || align=&amp;quot;center&amp;quot;|x [http://www.microchip.com/stellent/idcplg?IdcService=SS_GET_PAGE&amp;amp;nodeId=2680&amp;amp;dDocName=en537999] [http://www.microchip.com/pagehandler/en-us/technology/graphics/] || align=&amp;quot;center&amp;quot;|x || align=&amp;quot;center&amp;quot;|x&lt;br /&gt;
|-&lt;br /&gt;
| Wunsch ist TCP/IP Netzwerk oder Kamera|| align=&amp;quot;center&amp;quot;|x || align=&amp;quot;center&amp;quot;|O || align=&amp;quot;center&amp;quot;|x [http://www.microchip.com/stellent/idcplg?IdcService=SS_GET_PAGE&amp;amp;nodeId=2505&amp;amp;param=en535724] || align=&amp;quot;center&amp;quot;|O || align=&amp;quot;center&amp;quot;|O&lt;br /&gt;
|-&lt;br /&gt;
| Möchte die Erkenntnisse beruflich nutzen|| align=&amp;quot;center&amp;quot;|x || align=&amp;quot;center&amp;quot;|x || align=&amp;quot;center&amp;quot;|x || align=&amp;quot;center&amp;quot;|x || align=&amp;quot;center&amp;quot;|-&lt;br /&gt;
|-&lt;br /&gt;
| Strom sparende Anwendungen|| align=&amp;quot;center&amp;quot;|- [http://www.st.com/web/en/catalog/mmc/FM141/SC1169/SS1295]&amp;lt;br&amp;gt; 300 nA Sleep&amp;lt;br&amp;gt;230 μA/MHz]|| align=&amp;quot;center&amp;quot;|- [http://www.atmel.com/technologies/lowpower/default.aspx] [http://www.futurlec.com/News/Atmel/PicoPower.shtml]&amp;lt;br&amp;gt;100 nA Sleep&amp;lt;br&amp;gt;340 μA/MHz|| align=&amp;quot;center&amp;quot;|x [http://ww1.microchip.com/downloads/en/DeviceDoc/39989A.pdf] [http://ww1.microchip.com/downloads/en/DeviceDoc/30009941F.pdf] &amp;lt;br&amp;gt; 9 nA Sleep&amp;lt;br&amp;gt;35 μA/MHz || align=&amp;quot;center&amp;quot;|x [http://www.ti.com/lit/wp/slay015/slay015.pdf] [http://www.ti.com/ww/mx/multimedia/webcasts/Aspectos_Generales_MSP430.pdf] &amp;lt;br&amp;gt; 100 nA Sleep&amp;lt;br&amp;gt;100 μA/MHz || align=&amp;quot;center&amp;quot;|-&lt;br /&gt;
|-&lt;br /&gt;
| Experimentieren mit Multithreading, RTOS, Schedulern || align=&amp;quot;center&amp;quot;|x || align=&amp;quot;center&amp;quot;|O [http://www.freertos.org/a00098.html] [http://www.femtoos.org/] || align=&amp;quot;center&amp;quot;|bedingt, PIC32 [http://www.microchip.com/stellent/idcplg?IdcService=SS_GET_PAGE&amp;amp;nodeId=1406&amp;amp;dDocName=en531543&amp;amp;redirects=rtos] || align=&amp;quot;center&amp;quot;|- || align=&amp;quot;center&amp;quot;|-&lt;br /&gt;
|-&lt;br /&gt;
| Besonders große, speicherintensive Programme&amp;lt;br&amp;gt;z.B. Grafiken, Fonts || align=&amp;quot;center&amp;quot;|bis 2MB Flash&amp;lt;br&amp;gt;bis 256kB SRAM || align=&amp;quot;center&amp;quot;|bis 256kB Flash&amp;lt;br&amp;gt;bis 16kB SRAM || align=&amp;quot;center&amp;quot;|bis 2MB Flash&amp;lt;br&amp;gt;bis 512kB SRAM || align=&amp;quot;center&amp;quot;|bis 512KB Flash&amp;lt;br&amp;gt;bis ? kB SRAM || align=&amp;quot;center&amp;quot;|bis 256kB Flash&amp;lt;br&amp;gt;bis 16kB SRAM&lt;br /&gt;
|-&lt;br /&gt;
| Sehr viel PWM mit komplexem Timing || align=&amp;quot;center&amp;quot;|x || align=&amp;quot;center&amp;quot;|bedingt, AT90Spwm || align=&amp;quot;center&amp;quot;|bedingt, dsPIC/PIC32 || align=&amp;quot;center&amp;quot;|O || align=&amp;quot;center&amp;quot;|-&lt;br /&gt;
|-&lt;br /&gt;
| Deutschsprachige Community || align=&amp;quot;center&amp;quot;|O || align=&amp;quot;center&amp;quot;|x || align=&amp;quot;center&amp;quot;|O || align=&amp;quot;center&amp;quot;|- || align=&amp;quot;center&amp;quot;|x&lt;br /&gt;
|-&lt;br /&gt;
| Anzahl möglicher HW-Breakpoints || align=&amp;quot;center&amp;quot;|4 bis 6 || align=&amp;quot;center&amp;quot;|2 || align=&amp;quot;center&amp;quot;| 1 bis 10 [http://www.microchip.com/stellent/groups/SiteComm_sg/documents/DeviceDoc/en556761.pdf] || align=&amp;quot;center&amp;quot;|2 || align=&amp;quot;center&amp;quot;|2&lt;br /&gt;
|}&lt;br /&gt;
* x = ja&lt;br /&gt;
* O = Teilweise, Einschränkungen&lt;br /&gt;
* - = nicht empfohlen&lt;br /&gt;
* ? = Bitte ergänzen&lt;br /&gt;
&lt;br /&gt;
Nur um nicht zu verwirren, auch wenn Teile &amp;quot;nicht empfohlen&amp;quot; sind, heißt dass nicht dass es mit dem Prozessor nicht geht, vielmehr dass es mehr Aufwand ist das zu realisieren oder mehr Einschränkungen hat.&lt;br /&gt;
&lt;br /&gt;
Die Spalte PIC zeigt die Eigenschaften der 8-Bit PIC12/16/18 (vergleichbar mit [[AVR]]), 16-Bit [[PIC24]] (vergleichbar mit [[MSP430]]) und 32-Bit [[PIC32]] (vergleichbar mit [[STM32]]). Ein Wechsel des Mikrocontrollers innerhalb der Familien ist Codetechnisch problemlos möglich. [http://www.elektor.nl/Uploads/Files/PIC24FIntro_5f082806.pdf] Hardwaretechnisch sind verschiedene Modelle gleicher Familie zudem auch meist Pin-Kompatibel [http://ww1.microchip.com/downloads/en/DeviceDoc/00148m.pdf] sodass ohne Design-Änderung zwischen verschiedenen Modellen gewechselt werden kann.&lt;br /&gt;
Ein Wechsel zwischen den Familien ist Architekturbedingt aufwendiger, vor allem von 8-Bit auf 16/32-Bit. [http://ww1.microchip.com/downloads/en/DeviceDoc/39764a.pdf] Aufgrund gleichbleibender IDE (Mplab) sowie gleichbleibenden Libraries bei Verwendung einer Hochsprache (C) jedoch vor allem zwischen 16-Bit und 32-Bit ohne weitere Probleme möglich [http://www.embedded.com/design/mcus-processors-and-socs/4007683/Practical-migration-from-8-16-to-32-bit-PIC].&lt;br /&gt;
&lt;br /&gt;
= Unwichtige Randbedingungen =&lt;br /&gt;
&lt;br /&gt;
Oftmals werden fälschlicherweise Argumente für oder gegen eine µC-Familie ausgesprochen, die in der Praxis &#039;&#039;&#039;zum Einstieg&#039;&#039;&#039; (bei konkreten Anwendungen kann das anders aussehen) eher unwichtig sind.&lt;br /&gt;
&lt;br /&gt;
* Spannungsversorgung 3,3V / 5V&lt;br /&gt;
* 8 (z.B. [[AVR]]), 16 (z.B. [[MSP430]]) oder 32 (z.B. [[STM32]]) Bit&lt;br /&gt;
* Interrupt System mit mehr oder weniger Features&lt;br /&gt;
* Programmiersprache (Assembler, Basic, C, C++, Pascal)&lt;br /&gt;
* Assembler verstehen (Sollte nur theoretisch verstanden werden, ein Programm sollte in einer Hochsprache geschrieben sein)&lt;br /&gt;
* DIL Gehäuse - steckbretttauglich (STM32-Prozessoren gibt es auch fertig gelötet auf einem steckbretttauglichen Board zum fünffachen Preis vergleichbarer DIL Mikrocontroller)&lt;br /&gt;
* Programmieradapter&lt;br /&gt;
* zu 90% reicht doch ein kleiner Prozessor ([[AVR]]/PIC) - und für die restlichen kann man immer noch einen großen nehmen. Warum also nicht gleich einen großen nehmen?&lt;br /&gt;
&lt;br /&gt;
= Kosten =&lt;br /&gt;
&lt;br /&gt;
Grobe Abschätzung was das alles denn kosten wird. Hier sind nur einige Beispiele gezeigt (Einzelpreise bei Bezugsquellen in Deutschland).&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|- bgcolor=&amp;quot;#d0d0ff&amp;quot;&lt;br /&gt;
! Board || [[STM32]] || [[AVR]] || PIC18/24/32 || [[MSP430]] || Arduino&lt;br /&gt;
|-&lt;br /&gt;
| Demo-Board || align=&amp;quot;center&amp;quot;|[http://www.st.com/web/en/catalog/tools/FM116/SC959/SS1532/PF252419] 9..20€ (incl. Programmieradapter und Debugger) || align=&amp;quot;center&amp;quot;|5..500€, z.B. Arduino || align=&amp;quot;center&amp;quot;| [http://www.microchipdirect.com/ProductDetails.aspx?Catalog=BuyMicrochip&amp;amp;Category=Starter%20Kits&amp;amp;mid=1&amp;amp;lmid=610 durchschnittlich 18€ .. 50€] || align=&amp;quot;center&amp;quot;|[http://www.ti.com/tool/msp-exp430fr5739] ~35€ || align=&amp;quot;center&amp;quot;|20€&lt;br /&gt;
|-&lt;br /&gt;
| Steckbrettaugliches Board || align=&amp;quot;center&amp;quot;| s.o. oder [http://re.reworld.eu/de/produkte/s64dil-405/index.htm S64DIL-405] 30€ || align=&amp;quot;center&amp;quot;|0,6–5€ als einzelner DIP-IC || align=&amp;quot;center&amp;quot;|2-5€ als einzelner IC || align=&amp;quot;center&amp;quot;|?? || align=&amp;quot;center&amp;quot;|??&lt;br /&gt;
|-&lt;br /&gt;
| Programmieradapter || align=&amp;quot;center&amp;quot;|  || align=&amp;quot;center&amp;quot;| ab 4€ || align=&amp;quot;center&amp;quot;| || align=&amp;quot;center&amp;quot;| || align=&amp;quot;center&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Programmieradapter mit Debugger || align=&amp;quot;center&amp;quot;| s.o. oder z.B [http://www.segger.com/j-link-edu.html Segger J-LINK EDU] 50€ (sehr schnell und unterstützt viele Prozessoren) || align=&amp;quot;center&amp;quot;|?? || align=&amp;quot;center&amp;quot;|PICkit 3 30€ [http://www.microchipdirect.com/ProductSearch.aspx?keywords=PG164130] || align=&amp;quot;center&amp;quot;|z.B. Dragon 50€ || align=&amp;quot;center&amp;quot;|20€ (Man muss DebugWire aktivieren)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Das Demo-Board sollte ein Board sein, nicht zu teuer, um die ersten Erfahrungen zu sammeln. Wenn einem der Prozessor gefällt, so kann man später immer noch mit einem zweiten Demo-Board, z.B. mit Display aufrüsten.&lt;br /&gt;
&lt;br /&gt;
Wenn man gerne mit einem Steckbrett sich die Schaltung zusammen stecken möchte, so kann man entweder die benötigten Drähte am Demo-Board anlöten oder bei z.B. [[AVR]]/[[PIC]] Prozessoren gibt es Ausführungen im DIL Gehäuse, die direkt steckbar sind.&lt;br /&gt;
&lt;br /&gt;
Ein Programmieradapter sollte unbedingt auch einen Debugger beinhalten. Denn für den Start ist es ungemein hilfreich zu sehen was im Prozessor gerade geschieht. Die JTAG-Adapter für einen [[STM32]] Prozessor sind alle Debugger-Tauglich. Für einen [[AVR]] oder [[PIC]] Prozessor gibt es auch oft reine Programmer (oft Selbstbau-Lösungen über die serielle oder parallele Schnittstelle) welche den Mikrocontroller nur beschreiben können. Sinvoller sind hingegen Debugger (bspw. PIC Kit 3 [http://www.microchipdirect.com/ProductSearch.aspx?keywords=PG164130] kompatibel zu allen PIC Mikrocontrollern), die die Ausführung eines Mikrocontrollers anhalten können um die aktuelle Position im Programmcode, Variableninhalt, Register, ... auszulesen bzw. zur Laufzeit zu ändern.&lt;br /&gt;
&lt;br /&gt;
Der für den [[STM32]] empfohlene Segger J-LINK EDU ist zwar nicht der günstigste (z.B. auf einem STM32F4DISCOVERY Borad ist auch einer drauf den man für andere STM32 nutzen kann) aber eines der besten, mit sehr guten Software-Tools und nutzbar für alle Prozessoren mit ARM-Kern (ARM7/9/11/... Cortex-Mx). Niemals am Werkzeug sparen und man hat viel mehr Freude bei der Arbeit.&lt;br /&gt;
&lt;br /&gt;
Der &amp;quot;Arduino&amp;quot; ist kein eigenständiger Prozessor, sondern ein fertiges Board mit einer &amp;quot;Arduino&amp;quot; Programmierumgebung (und einem AVR Prozessor), extra geschaffen für Einsteiger. Allerdings ist da der Lerneffekt viel geringer da man den Prozessor mit der Arduino-Software programmiert und nicht direkt die Register.&lt;br /&gt;
&lt;br /&gt;
Ein [[PIC16]] ist ein älterer 8-Bit Mikrocontroller, der durch die [[PIC18]] Reihe abgelöst wurde. Werden komplexere Anforderungen in Zukunft an den Mikrocontroller gestellt (Audio, Grafik), so sollte zu den moderneren [[PIC24]] bzw. [[dsPIC]] (16-Bit) oder gar zu [[PIC32]] (32-Bit MIPS Prozessor) gegriffen werden, wobei letzterer von der Performance vergleichbar mit den STM32 ARM-basierten Mikrocontrollern ist.&lt;br /&gt;
&lt;br /&gt;
= Programmierumgebungen=&lt;br /&gt;
&lt;br /&gt;
Bei den Programmierumgebungen gibt es zu allen Prozessorfamilien kostenlose und Leistungsfähige Software&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|- bgcolor=&amp;quot;#d0d0ff&amp;quot;&lt;br /&gt;
! [[STM32]] || [[AVR]] || PIC || [[MSP430]] || Arduino&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot;|[http://www.coocox.org/CooCox_CoIDE.htm CooCox] || align=&amp;quot;center&amp;quot;|Atmel-Studio || align=&amp;quot;center&amp;quot;|[http://www.microchip.com/pagehandler/en-us/family/mplabx/ MPALB X] (IDE inklusive compiler) || align=&amp;quot;center&amp;quot;|?? || align=&amp;quot;center&amp;quot;|arduino 1.0.5&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
natürlich gibt es noch viele weitere (für STM32 siehe [[STM32#Programmierung]]), es sollte jedoch nur die einfachsten kostenlose (und ohne Codebegrenzung) für den ersten Einstieg gezeigt werden.&lt;br /&gt;
&lt;br /&gt;
* CooCox Anleitung wie man innerhalb einer Stunde die LED eines Nagel neuen STM32F4DISCOVERY Boards zum blinken bekommt, Artikel: [[STM32 CooCox Installation]]. Diese Anleitung ist eine Schritt-Für-Schritt Anleitung um den aller ersten Start zu vereinfachen.&lt;br /&gt;
&lt;br /&gt;
= Dokumentation=&lt;br /&gt;
&lt;br /&gt;
Bevor man sich für einen Prozessor entscheidet sollte man unbedingt deren Dokumentation mal zumindest überfliegen und auch deren Errata&#039;s lesen. Nicht dass man eine Anwendung erstellen möchte und stellt hinterher fest, dass genau dieser Teil so buggy ist das er nicht genutzt werden kann.&lt;br /&gt;
&lt;br /&gt;
Beim [[STM32]] hat die Dokumentation doch recht viele Seiten, viel mehr als bei einem [[AVR]] oder PIC. Dabei ist vieles eher knapp beschrieben, man muss mehr suchen als z.B. bei den AVR-Dokus, um die gewünschten Informationen zu finden. Außerdem gibt es durchaus einige Unklarheiten und Fehler/Widersprüche. Schlussendlich ist es Geschmackssache mit welcher Doku von welchem Hersteller man sich besser zurecht findet.&lt;br /&gt;
&lt;br /&gt;
Bei den PICs gibt es zu jedem Mikrocontroller ein Datenblatt das die wichtigsten Informationen für den alltäglichen Gebrauch enthält. Da bestimmte Peripherie (bspw. I2C, SPI, ... ) aber sehr komplex ist und innerhalb einer Familie (PIC16/18/24/32) sich identisch verhält, gibt es zu jeder Familie die sogenannten Family-Datasheets, welche alle Module im Detail beschreiben.&lt;br /&gt;
&lt;br /&gt;
Parallel zur Dokumentation sollte man sich auch die Demo-Beispiele der Hersteller anschauen, dann wird vieles gleich verständlicher.&lt;br /&gt;
&lt;br /&gt;
Eine Übersicht über die Funktionen gibt es im Artikel: [[STM32]]&lt;br /&gt;
&lt;br /&gt;
= Die Arbeit mit dem STM32=&lt;br /&gt;
&lt;br /&gt;
Zu erst einmal SOOO groß sind die Unterschiede zwischen den einzelnen Prozessoren nicht. Alle haben Ein-/Ausgänge und um mittels einem Port-Pin eine LED ansteuern zu können muss bei jedem Prozessor der Pin erst einmal parametriert werden, egal ob das jetzt ein STM32 oder ein AVR oder ein MSP430 ist. Nur hat man bei einem STM32 doch einige Funktionen mehr, z.B. zuschaltbarer Pull-Up oder Pull-Down Widerstand und spezielle Setz-Rücksetzregister, die andere Prozessoren nicht haben, jedoch das programmieren vereinfachen.&lt;br /&gt;
Der Haupt-Unterschied zu den anderen Prozessoren ist, dass der [[STM32]] so viele Peripherie-Module beherbergt, dass man die einzeln immer mit einem Clock aktivieren muss, denn damit lässt sich viel Strom sparen.&lt;br /&gt;
&lt;br /&gt;
Und mal ganz ehrlich die Diskussion welcher µc einfacher zu konfigurieren ist, ist doch absoluter Unsinn. Der Weg ist immer der Gleiche:&lt;br /&gt;
*1. Blick ins Datenblatt welche Register für diese Funktion benötigt werden.&lt;br /&gt;
*2. Werte ermitteln die in die Register eingetragen werden.&lt;br /&gt;
*3. Werte ins Register schreiben. Da machte es GAR KEINEN UNTERSCHIED ob es ein [[AVR]], 8051/2, ARM,...... ist.&lt;br /&gt;
&lt;br /&gt;
Stimmt schon es gibt Unterschiede. Die Register haben anderen Namen, andere Adressen, andere Bitbedeutungen,...&lt;br /&gt;
Aber es steht doch alles im Datenblatt. Und ob ich jetzt einen [[AVR]] oder einen ARM das erste mal vor mir liegen hab. Ich brauch in allen Fällen die oben beschriebenen Schritte.&lt;br /&gt;
&lt;br /&gt;
Das Interruptsystem ist bei einem STM32 zusätzlich priorisiert, damit kann man festlegen welcher Interrupt vorrangig bearbeitet wird. Die Prioritätenvergabe ist auch kein Hexenwerk.&lt;br /&gt;
&lt;br /&gt;
Zu allen Prozessoren liefern die jeweiligen Hersteller umfangreiche Demo-Codes und Libraries mit. Meist sind alle in C geschrieben, daher sollte auch die Programmiersprache C verwendet werden. Vor allem auch wenn man berufliche Absichten verfolgt.&lt;br /&gt;
&lt;br /&gt;
Und wenn man einen STM32 kann, dann ist ein Umstieg auf einen LPC17xx (NXP) oder andere Hersteller überhaupt kein Problem (*), denn die bieten ebenfalls Prozessoren mit Cortex-M3 Kern und man kann diese mit der gleichen Programmierumgebung programmieren. Somit ist man nicht zwingend Herstellerabhängig. (* jeder Hersteller verbaut seine eigene Peripherie, die andere Funktionalitäten haben.)&lt;br /&gt;
&lt;br /&gt;
Mit einem STM32 kann man als Hobby-Baster und Professionell nahezu alle Anwendungen realisieren. Der hat genügend RAM und FLASH Speicher und auch genügen Geschwindigkeit. Viele Gehäuse-Varianten um kleine bis hin zu größere Geräte zu erstellen. Viele Schnittstellen, sind im Artikel [[STM32]] beschrieben.&lt;br /&gt;
&lt;br /&gt;
Der einzige Nachteil beim STM32: man muss etwas mehr lesen, da eine Peripherie doch viel mehr Funktionalität hat. Ansonsten kenne ich nicht wirklich einen Grund warum man als Neueinsteiger keinen STM32 nehmen sollte.&lt;br /&gt;
&lt;br /&gt;
= Programmiersprachen =&lt;br /&gt;
* Wie bei vielen anderen Controllern wird beim STM32 auch hauptsächlich C und C++ verwendet. Kennen sollte man die Programmiersprache C schon, wenn man davon noch keine Ahnung hat dann sollte man erst mal mittels einem Tutorial auf einem PC ein Konsoleprogramm schreiben, sodass man es einigermaßen kennen lernt. Hier im Forum gibt es ebenfalls Artikel dazu. Zielt man auf die (spätere) Anwendung in der Industrie, sollte aufgrund der Verbreitung auf jeden Fall C (oder C++) gewählt werden; außerdem sind die meisten verfügbaren Libraries in C geschrieben.&lt;br /&gt;
* Assembler sollte man nur grob verstehen, Details wie ein Befehl arbeitet ist unwichtig. Selbst wenn man die Zyklen für einen Funktionsaufruf wissen will, so bietet der STM32 (Cortex-M3) einen Cycle-Counter den man auslesen kann; durch die komplexere Pipeline und Cache-Effekte sind die Laufzeiten allerdings nicht genau vorhersehbar. Wird zyklengenause Timing benötigt, sollten Timer verwendet werden - davon hat der STM32 genug.&lt;br /&gt;
&lt;br /&gt;
Der 32bit-Adressraum, der RAM, Flash, I/O-Register vereinheitlicht ansprechen kann (im Gegensatz zu z.B. AVR) ist ideal für eine Verwendung durch Hochsprachen; bei Pointern muss keine zusätzliche Information verwaltet werden, in welche Art Speicher sie zeigen. Die Adresse gibt dies eindeutig an (es gibt nur &#039;&#039;&#039;eine&#039;&#039;&#039; Adresse 42, und nicht 2 wie bei es für Harvard-Architekturen eigentlich typisch ist (Programmspeicher und Datenspeicher, also z.B. Flash und RAM/IO) und die Hardware spricht automatisch den richtigen Speicher an. Die Möglichkeiten zur Offset-Adressierung, der Barrel-Shifter, Divsions-Einheit, die FPU (bei STM32F4), Interrupt-Modell etc. begünstigen ebenfalls die Erzeugung effizienteren Codes. Außerdem haben die STM32 einfach mehr &amp;quot;rohe Leistung&amp;quot;, d.h. mehr Flash/RAM-Speicher und höhere Taktfrequenzen.&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Folgerung&#039;&#039;&#039;: Die Programmierung in Hochsprachen ist &#039;&#039;&#039;bequemer als bei 8-Bittern&#039;&#039;&#039;, denn man muss sich einfach weniger Gedanken machen, ob der Compiler ein Programm nun effizent umsetzen kann (kann man natürlich trotzdem machen, um noch mehr Leistung &amp;quot;herauszuquetschen&amp;quot;, wenn man will).&lt;br /&gt;
&lt;br /&gt;
= Weitere Randbedingungen für die Entscheidung=&lt;br /&gt;
&lt;br /&gt;
Der wichtige Punkt, der oftmals auch vergessen wird: die Beschaffbarkeit. Wenn jemand einen Renesas M16C oder Fujitsu empfiehlt, dann sucht man erst mal und findet nur wenige vereinzelte die man privat kaufen kann.&lt;br /&gt;
&lt;br /&gt;
Oder auch die Unterstützung im Internet - ist bei einigen Exoten spärlich. Dieses Forum bietet die beste Hilfe für [[AVR]], PIC, [[STM32]] und [[MSP430]].&lt;br /&gt;
&lt;br /&gt;
Andere Prozessoren sind schon sehr alt, bzw. nicht mehr modern da deren Peripherie zum Teil doch recht eingeschränkte Funktionalität bietet. z.B. viele 8051 Typen oder PIC16 (oder auch dsPIC30). Die mögen für Mini-Anwenungen gut sein, aber wer will den schon gerne sich extra für eine Kleinanwendung mit einem kleinen µC auseinandersetzen, wenn er schon einen STM32 kennt, mit dem er alles machen kann (und sich bereits gute Funktionen geschrieben hat)?&lt;br /&gt;
&lt;br /&gt;
Daher mein Resümee: wer nicht gerade auf den Kopf gefallen ist, der kann getrost mit einem STM32 starten. Ein [http://www.st.com/web/en/catalog/tools/FM116/SC959/SS1532/PF252419?s_searchtype=keyword STM32F4DISCOVERY] Board kostet nur ca. 20 EUR - und mehr muss für den ersten Start nicht investiert werden - wenn es doch zu komplex sein sollte gibt es hier im Forum auch Hilfe oder man nimmt erst mal ein &amp;quot;Arduino&amp;quot;. Jedenfalls sind diese 20 EUR wirklich keine große Investition.&lt;br /&gt;
&lt;br /&gt;
= Weblinks, Foren, Communities, Tutorials =&lt;br /&gt;
* [[STM32]] Hauptartikel, [http://www.mikrocontroller.net/articles/STM32#Weblinks.2C_Foren.2C_Communities.2C_Tutorials dortige Linksammlung]&lt;br /&gt;
* [http://www.mikrocontroller.net/topic/319328 Diskussion zum Artikel]&lt;br /&gt;
* [[STM32 CooCox Installation]]&lt;br /&gt;
* [[STM32 Eclipse Installation]]&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>Frank m35</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=STM32_f%C3%BCr_Einsteiger&amp;diff=80341</id>
		<title>STM32 für Einsteiger</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=STM32_f%C3%BCr_Einsteiger&amp;diff=80341"/>
		<updated>2013-12-31T10:12:51Z</updated>

		<summary type="html">&lt;p&gt;Frank m35: /* Eigene Fähigkeiten und Wünsche */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Immer wiederkehrend hier im Forum &amp;quot;Mit welchem Mikrocontroller anfangen?&amp;quot;. Es gibt eine große Auswahl und eben so viele Empfehlungen. In diesem Artikel soll zu erst geholfen werden ob ein STM32-Prozessor mit Cortex-M3/M4 Kern überhaupt der Richtige für den Start ist.&lt;br /&gt;
Nicht für jeden ist der STM32 zu empfehlen, denn die Anforderungen und Wünsche die man realisieren möchte, sowie die eigenen Fähigkeiten sind verschieden.&lt;br /&gt;
&lt;br /&gt;
Es werden meist die Prozessoren AVR, PIC, Arduino, MSP430 und STM32 empfohlen. Seltener auch 8051, LPC und M16C. Alle haben Vorzüge und ebenso auch Nachteile.&lt;br /&gt;
&lt;br /&gt;
= Eigene Fähigkeiten und Wünsche =&lt;br /&gt;
&lt;br /&gt;
Dieser Artikel geht davon aus, dass bereits Elektronik Kenntnisse vorhanden sind. Wenn nicht dann sollte man erst einmal den Artikel &amp;quot;[[Absolute Beginner]]&amp;quot; durcharbeiten, sowie die anderen Artikel aus der Kategorie &amp;quot;[http://www.mikrocontroller.net/articles/Kategorie:Grundlagen Grundlagen]&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Zu erst einmal die Randbedingungen, mit der man sich selbst zu erst einmal einschätzen sollte:&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|- bgcolor=&amp;quot;#d0d0ff&amp;quot;&lt;br /&gt;
! Fähigkeit || Empfehlung [[STM32]] || Empfehlung [[AVR]] || Empfehlung PIC || Empfehlung [[MSP430]] || Empfehlung Arduino&lt;br /&gt;
|-&lt;br /&gt;
| Neueinsteiger, kaum Elektronikkenntnisse, noch nie programmiert || align=&amp;quot;center&amp;quot;|O || align=&amp;quot;center&amp;quot;|O [http://www.rn-wissen.de/index.php/AVR-Einstieg_leicht_gemacht] [http://www.avr-asm-tutorial.net/avr_de/] || align=&amp;quot;center&amp;quot;|O [http://www.sprut.de/] || align=&amp;quot;center&amp;quot;|O || align=&amp;quot;center&amp;quot;|x&lt;br /&gt;
|-&lt;br /&gt;
| Wunsch ist SD-Card oder Grafik-Display || align=&amp;quot;center&amp;quot;|x || align=&amp;quot;center&amp;quot;|x || align=&amp;quot;center&amp;quot;|x [http://www.microchip.com/stellent/idcplg?IdcService=SS_GET_PAGE&amp;amp;nodeId=2680&amp;amp;dDocName=en537999] [http://www.microchip.com/pagehandler/en-us/technology/graphics/] || align=&amp;quot;center&amp;quot;|x || align=&amp;quot;center&amp;quot;|x&lt;br /&gt;
|-&lt;br /&gt;
| Wunsch ist TCP/IP Netzwerk oder Kamera|| align=&amp;quot;center&amp;quot;|x || align=&amp;quot;center&amp;quot;|O || align=&amp;quot;center&amp;quot;|x [http://www.microchip.com/stellent/idcplg?IdcService=SS_GET_PAGE&amp;amp;nodeId=2505&amp;amp;param=en535724] || align=&amp;quot;center&amp;quot;|O || align=&amp;quot;center&amp;quot;|O&lt;br /&gt;
|-&lt;br /&gt;
| Möchte die Erkenntnisse beruflich nutzen|| align=&amp;quot;center&amp;quot;|x || align=&amp;quot;center&amp;quot;|x || align=&amp;quot;center&amp;quot;|x || align=&amp;quot;center&amp;quot;|x || align=&amp;quot;center&amp;quot;|-&lt;br /&gt;
|-&lt;br /&gt;
| Strom sparende Anwendungen|| align=&amp;quot;center&amp;quot;|- [http://www.st.com/web/en/catalog/mmc/FM141/SC1169/SS1295]&amp;lt;br&amp;gt; 300 nA Sleep&amp;lt;br&amp;gt;230 μA/MHz]|| align=&amp;quot;center&amp;quot;|- [http://www.atmel.com/technologies/lowpower/default.aspx] [http://www.futurlec.com/News/Atmel/PicoPower.shtml]&amp;lt;br&amp;gt;100 nA Sleep&amp;lt;br&amp;gt;340 μA/MHz|| align=&amp;quot;center&amp;quot;|x [http://ww1.microchip.com/downloads/en/DeviceDoc/39989A.pdf] [http://ww1.microchip.com/downloads/en/DeviceDoc/30009941F.pdf] &amp;lt;br&amp;gt; 9 nA Sleep&amp;lt;br&amp;gt;35 μA/MHz || align=&amp;quot;center&amp;quot;|x [http://www.ti.com/lit/wp/slay015/slay015.pdf] [http://www.ti.com/ww/mx/multimedia/webcasts/Aspectos_Generales_MSP430.pdf] &amp;lt;br&amp;gt; 100 nA Sleep&amp;lt;br&amp;gt;100 μA/MHz || align=&amp;quot;center&amp;quot;|-&lt;br /&gt;
|-&lt;br /&gt;
| Experimentieren mit Multithreading, RTOS, Schedulern || align=&amp;quot;center&amp;quot;|x || align=&amp;quot;center&amp;quot;|O [http://www.freertos.org/a00098.html] [http://www.femtoos.org/] || align=&amp;quot;center&amp;quot;|bedingt, PIC32 [http://www.microchip.com/stellent/idcplg?IdcService=SS_GET_PAGE&amp;amp;nodeId=1406&amp;amp;dDocName=en531543&amp;amp;redirects=rtos] || align=&amp;quot;center&amp;quot;|- || align=&amp;quot;center&amp;quot;|-&lt;br /&gt;
|-&lt;br /&gt;
| Besonders große, speicherintensive Programme&amp;lt;br&amp;gt;z.B. Grafiken, Fonts || align=&amp;quot;center&amp;quot;|bis 2MB Flash&amp;lt;br&amp;gt;bis 256kB SRAM || align=&amp;quot;center&amp;quot;|bis 256kB Flash&amp;lt;br&amp;gt;bis 16kB SRAM || align=&amp;quot;center&amp;quot;|bis 2MB Flash&amp;lt;br&amp;gt;bis 512kB SRAM || align=&amp;quot;center&amp;quot;|bis 512KB Flash&amp;lt;br&amp;gt;bis ? kB SRAM || align=&amp;quot;center&amp;quot;|bis 256kB Flash&amp;lt;br&amp;gt;bis 16kB SRAM&lt;br /&gt;
|-&lt;br /&gt;
| Sehr viel PWM mit komplexem Timing || align=&amp;quot;center&amp;quot;|x || align=&amp;quot;center&amp;quot;|bedingt, AT90Spwm || align=&amp;quot;center&amp;quot;|bedingt, dsPIC/PIC32 || align=&amp;quot;center&amp;quot;|O || align=&amp;quot;center&amp;quot;|-&lt;br /&gt;
|-&lt;br /&gt;
| Deutschsprachige Community || align=&amp;quot;center&amp;quot;|O || align=&amp;quot;center&amp;quot;|x || align=&amp;quot;center&amp;quot;|O || align=&amp;quot;center&amp;quot;|- || align=&amp;quot;center&amp;quot;|x&lt;br /&gt;
|-&lt;br /&gt;
| Anzahl möglicher HW-Breakpoints || align=&amp;quot;center&amp;quot;|4 bis 6 || align=&amp;quot;center&amp;quot;|2 || align=&amp;quot;center&amp;quot;| 1 bis 10 [http://www.microchip.com/stellent/groups/SiteComm_sg/documents/DeviceDoc/en556761.pdf] || align=&amp;quot;center&amp;quot;|2 || align=&amp;quot;center&amp;quot;|2&lt;br /&gt;
|}&lt;br /&gt;
* x = ja&lt;br /&gt;
* O = Teilweise, Einschränkungen&lt;br /&gt;
* - = nicht empfohlen&lt;br /&gt;
* ? = Bitte ergänzen&lt;br /&gt;
&lt;br /&gt;
Nur um nicht zu verwirren, auch wenn Teile &amp;quot;nicht empfohlen&amp;quot; sind, heißt dass nicht dass es mit dem Prozessor nicht geht, vielmehr dass es mehr Aufwand ist das zu realisieren oder mehr Einschränkungen hat.&lt;br /&gt;
&lt;br /&gt;
PIC: Die Spalte PIC zeigt die Eigenschaften der 8-Bit PIC12/16/18 (vergleichbar mit [[AVR]]), 16-Bit PIC24 (vergleichbar mit MSP430) und 32-Bit PIC32 (vergleichbar mit [[STM32]]). Ein Wechsel des Mikrocontrollers innerhalb der Familien ist Codetechnisch problemlos möglich. [http://www.elektor.nl/Uploads/Files/PIC24FIntro_5f082806.pdf] Hardwaretechnisch sind verschiedene Modelle gleicher Familie meist Pin-Kompatibel [http://ww1.microchip.com/downloads/en/DeviceDoc/00148m.pdf] sodass ohne Design-Änderung zwischen verschiedenen Modellen gewechselt werden kann.&lt;br /&gt;
Ein Wechsel zwischen den Familien ist Architekturbedingt aufwendiger, vor allem von 8-Bit auf 16/32-Bit. [http://ww1.microchip.com/downloads/en/DeviceDoc/39764a.pdf] Aufgrund gleichbleibender IDE (Mplab) sowie gleichbleibenden Libraries bei Verwendung einer Hochsprache (C) jedoch vor allem zwischen 16-Bit und 32-Bit ohne weitere Probleme möglich [http://www.embedded.com/design/mcus-processors-and-socs/4007683/Practical-migration-from-8-16-to-32-bit-PIC].&lt;br /&gt;
&lt;br /&gt;
= Unwichtige Randbedingungen =&lt;br /&gt;
&lt;br /&gt;
Oftmals werden fälschlicherweise Argumente für oder gegen eine µC-Familie ausgesprochen, die in der Praxis &#039;&#039;&#039;zum Einstieg&#039;&#039;&#039; (bei konkreten Anwendungen kann das anders aussehen) eher unwichtig sind.&lt;br /&gt;
&lt;br /&gt;
* Spannungsversorgung 3,3V / 5V&lt;br /&gt;
* 8 (z.B. [[AVR]]), 16 (z.B. [[MSP430]]) oder 32 (z.B. [[STM32]]) Bit&lt;br /&gt;
* Interrupt System mit mehr oder weniger Features&lt;br /&gt;
* Programmiersprache (Assembler, Basic, C, C++, Pascal)&lt;br /&gt;
* Assembler verstehen (Sollte nur theoretisch verstanden werden, ein Programm sollte in einer Hochsprache geschrieben sein)&lt;br /&gt;
* DIL Gehäuse - steckbretttauglich (STM32-Prozessoren gibt es auch fertig gelötet auf einem steckbretttauglichen Board zum fünffachen Preis vergleichbarer DIL Mikrocontroller)&lt;br /&gt;
* Programmieradapter&lt;br /&gt;
* zu 90% reicht doch ein kleiner Prozessor ([[AVR]]/PIC) - und für die restlichen kann man immer noch einen großen nehmen. Warum also nicht gleich einen großen nehmen?&lt;br /&gt;
&lt;br /&gt;
= Kosten =&lt;br /&gt;
&lt;br /&gt;
Grobe Abschätzung was das alles denn kosten wird. Hier sind nur einige Beispiele gezeigt (Einzelpreise bei Bezugsquellen in Deutschland).&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|- bgcolor=&amp;quot;#d0d0ff&amp;quot;&lt;br /&gt;
! Board || [[STM32]] || [[AVR]] || PIC18/24/32 || [[MSP430]] || Arduino&lt;br /&gt;
|-&lt;br /&gt;
| Demo-Board || align=&amp;quot;center&amp;quot;|[http://www.st.com/web/en/catalog/tools/FM116/SC959/SS1532/PF252419] 9..20€ (incl. Programmieradapter und Debugger) || align=&amp;quot;center&amp;quot;|5..500€, z.B. Arduino || align=&amp;quot;center&amp;quot;| [http://www.microchipdirect.com/ProductDetails.aspx?Catalog=BuyMicrochip&amp;amp;Category=Starter%20Kits&amp;amp;mid=1&amp;amp;lmid=610 durchschnittlich 18€ .. 50€] || align=&amp;quot;center&amp;quot;|[http://www.ti.com/tool/msp-exp430fr5739] ~35€ || align=&amp;quot;center&amp;quot;|20€&lt;br /&gt;
|-&lt;br /&gt;
| Steckbrettaugliches Board || align=&amp;quot;center&amp;quot;| s.o. oder [http://re.reworld.eu/de/produkte/s64dil-405/index.htm S64DIL-405] 30€ || align=&amp;quot;center&amp;quot;|0,6–5€ als einzelner DIP-IC || align=&amp;quot;center&amp;quot;|2-5€ als einzelner IC || align=&amp;quot;center&amp;quot;|?? || align=&amp;quot;center&amp;quot;|??&lt;br /&gt;
|-&lt;br /&gt;
| Programmieradapter || align=&amp;quot;center&amp;quot;|  || align=&amp;quot;center&amp;quot;| ab 4€ || align=&amp;quot;center&amp;quot;| || align=&amp;quot;center&amp;quot;| || align=&amp;quot;center&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Programmieradapter mit Debugger || align=&amp;quot;center&amp;quot;| s.o. oder z.B [http://www.segger.com/j-link-edu.html Segger J-LINK EDU] 50€ (sehr schnell und unterstützt viele Prozessoren) || align=&amp;quot;center&amp;quot;|?? || align=&amp;quot;center&amp;quot;|PICkit 3 30€ [http://www.microchipdirect.com/ProductSearch.aspx?keywords=PG164130] || align=&amp;quot;center&amp;quot;|z.B. Dragon 50€ || align=&amp;quot;center&amp;quot;|20€ (Man muss DebugWire aktivieren)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Das Demo-Board sollte ein Board sein, nicht zu teuer, um die ersten Erfahrungen zu sammeln. Wenn einem der Prozessor gefällt, so kann man später immer noch mit einem zweiten Demo-Board, z.B. mit Display aufrüsten.&lt;br /&gt;
&lt;br /&gt;
Wenn man gerne mit einem Steckbrett sich die Schaltung zusammen stecken möchte, so kann man entweder die benötigten Drähte am Demo-Board anlöten oder bei z.B. [[AVR]]/[[PIC]] Prozessoren gibt es Ausführungen im DIL Gehäuse, die direkt steckbar sind.&lt;br /&gt;
&lt;br /&gt;
Ein Programmieradapter sollte unbedingt auch einen Debugger beinhalten. Denn für den Start ist es ungemein hilfreich zu sehen was im Prozessor gerade geschieht. Die JTAG-Adapter für einen [[STM32]] Prozessor sind alle Debugger-Tauglich. Für einen [[AVR]] oder [[PIC]] Prozessor gibt es auch oft reine Programmer (oft Selbstbau-Lösungen über die serielle oder parallele Schnittstelle) welche den Mikrocontroller nur beschreiben können. Sinvoller sind hingegen Debugger (bspw. PIC Kit 3 [http://www.microchipdirect.com/ProductSearch.aspx?keywords=PG164130] kompatibel zu allen PIC Mikrocontrollern), die die Ausführung eines Mikrocontrollers anhalten können um die aktuelle Position im Programmcode, Variableninhalt, Register, ... auszulesen bzw. zur Laufzeit zu ändern.&lt;br /&gt;
&lt;br /&gt;
Der für den [[STM32]] empfohlene Segger J-LINK EDU ist zwar nicht der günstigste (z.B. auf einem STM32F4DISCOVERY Borad ist auch einer drauf den man für andere STM32 nutzen kann) aber eines der besten, mit sehr guten Software-Tools und nutzbar für alle Prozessoren mit ARM-Kern (ARM7/9/11/... Cortex-Mx). Niemals am Werkzeug sparen und man hat viel mehr Freude bei der Arbeit.&lt;br /&gt;
&lt;br /&gt;
Der &amp;quot;Arduino&amp;quot; ist kein eigenständiger Prozessor, sondern ein fertiges Board mit einer &amp;quot;Arduino&amp;quot; Programmierumgebung (und einem AVR Prozessor), extra geschaffen für Einsteiger. Allerdings ist da der Lerneffekt viel geringer da man den Prozessor mit der Arduino-Software programmiert und nicht direkt die Register.&lt;br /&gt;
&lt;br /&gt;
Ein [[PIC16]] ist ein älterer 8-Bit Mikrocontroller, der durch die [[PIC18]] Reihe abgelöst wurde. Werden komplexere Anforderungen in Zukunft an den Mikrocontroller gestellt (Audio, Grafik), so sollte zu den moderneren [[PIC24]] bzw. [[dsPIC]] (16-Bit) oder gar zu [[PIC32]] (32-Bit MIPS Prozessor) gegriffen werden, wobei letzterer von der Performance vergleichbar mit den STM32 ARM-basierten Mikrocontrollern ist.&lt;br /&gt;
&lt;br /&gt;
= Programmierumgebungen=&lt;br /&gt;
&lt;br /&gt;
Bei den Programmierumgebungen gibt es zu allen Prozessorfamilien kostenlose und Leistungsfähige Software&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|- bgcolor=&amp;quot;#d0d0ff&amp;quot;&lt;br /&gt;
! [[STM32]] || [[AVR]] || PIC || [[MSP430]] || Arduino&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot;|[http://www.coocox.org/CooCox_CoIDE.htm CooCox] || align=&amp;quot;center&amp;quot;|Atmel-Studio || align=&amp;quot;center&amp;quot;|[http://www.microchip.com/pagehandler/en-us/family/mplabx/ MPALB X] (IDE inklusive compiler) || align=&amp;quot;center&amp;quot;|?? || align=&amp;quot;center&amp;quot;|arduino 1.0.5&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
natürlich gibt es noch viele weitere (für STM32 siehe [[STM32#Programmierung]]), es sollte jedoch nur die einfachsten kostenlose (und ohne Codebegrenzung) für den ersten Einstieg gezeigt werden.&lt;br /&gt;
&lt;br /&gt;
* CooCox Anleitung wie man innerhalb einer Stunde die LED eines Nagel neuen STM32F4DISCOVERY Boards zum blinken bekommt, Artikel: [[STM32 CooCox Installation]]. Diese Anleitung ist eine Schritt-Für-Schritt Anleitung um den aller ersten Start zu vereinfachen.&lt;br /&gt;
&lt;br /&gt;
= Dokumentation=&lt;br /&gt;
&lt;br /&gt;
Bevor man sich für einen Prozessor entscheidet sollte man unbedingt deren Dokumentation mal zumindest überfliegen und auch deren Errata&#039;s lesen. Nicht dass man eine Anwendung erstellen möchte und stellt hinterher fest, dass genau dieser Teil so buggy ist das er nicht genutzt werden kann.&lt;br /&gt;
&lt;br /&gt;
Beim [[STM32]] hat die Dokumentation doch recht viele Seiten, viel mehr als bei einem [[AVR]] oder PIC. Dabei ist vieles eher knapp beschrieben, man muss mehr suchen als z.B. bei den AVR-Dokus, um die gewünschten Informationen zu finden. Außerdem gibt es durchaus einige Unklarheiten und Fehler/Widersprüche. Schlussendlich ist es Geschmackssache mit welcher Doku von welchem Hersteller man sich besser zurecht findet.&lt;br /&gt;
&lt;br /&gt;
Bei den PICs gibt es zu jedem Mikrocontroller ein Datenblatt das die wichtigsten Informationen für den alltäglichen Gebrauch enthält. Da bestimmte Peripherie (bspw. I2C, SPI, ... ) aber sehr komplex ist und innerhalb einer Familie (PIC16/18/24/32) sich identisch verhält, gibt es zu jeder Familie die sogenannten Family-Datasheets, welche alle Module im Detail beschreiben.&lt;br /&gt;
&lt;br /&gt;
Parallel zur Dokumentation sollte man sich auch die Demo-Beispiele der Hersteller anschauen, dann wird vieles gleich verständlicher.&lt;br /&gt;
&lt;br /&gt;
Eine Übersicht über die Funktionen gibt es im Artikel: [[STM32]]&lt;br /&gt;
&lt;br /&gt;
= Die Arbeit mit dem STM32=&lt;br /&gt;
&lt;br /&gt;
Zu erst einmal SOOO groß sind die Unterschiede zwischen den einzelnen Prozessoren nicht. Alle haben Ein-/Ausgänge und um mittels einem Port-Pin eine LED ansteuern zu können muss bei jedem Prozessor der Pin erst einmal parametriert werden, egal ob das jetzt ein STM32 oder ein AVR oder ein MSP430 ist. Nur hat man bei einem STM32 doch einige Funktionen mehr, z.B. zuschaltbarer Pull-Up oder Pull-Down Widerstand und spezielle Setz-Rücksetzregister, die andere Prozessoren nicht haben, jedoch das programmieren vereinfachen.&lt;br /&gt;
Der Haupt-Unterschied zu den anderen Prozessoren ist, dass der [[STM32]] so viele Peripherie-Module beherbergt, dass man die einzeln immer mit einem Clock aktivieren muss, denn damit lässt sich viel Strom sparen.&lt;br /&gt;
&lt;br /&gt;
Und mal ganz ehrlich die Diskussion welcher µc einfacher zu konfigurieren ist, ist doch absoluter Unsinn. Der Weg ist immer der Gleiche:&lt;br /&gt;
*1. Blick ins Datenblatt welche Register für diese Funktion benötigt werden.&lt;br /&gt;
*2. Werte ermitteln die in die Register eingetragen werden.&lt;br /&gt;
*3. Werte ins Register schreiben. Da machte es GAR KEINEN UNTERSCHIED ob es ein [[AVR]], 8051/2, ARM,...... ist.&lt;br /&gt;
&lt;br /&gt;
Stimmt schon es gibt Unterschiede. Die Register haben anderen Namen, andere Adressen, andere Bitbedeutungen,...&lt;br /&gt;
Aber es steht doch alles im Datenblatt. Und ob ich jetzt einen [[AVR]] oder einen ARM das erste mal vor mir liegen hab. Ich brauch in allen Fällen die oben beschriebenen Schritte.&lt;br /&gt;
&lt;br /&gt;
Das Interruptsystem ist bei einem STM32 zusätzlich priorisiert, damit kann man festlegen welcher Interrupt vorrangig bearbeitet wird. Die Prioritätenvergabe ist auch kein Hexenwerk.&lt;br /&gt;
&lt;br /&gt;
Zu allen Prozessoren liefern die jeweiligen Hersteller umfangreiche Demo-Codes und Libraries mit. Meist sind alle in C geschrieben, daher sollte auch die Programmiersprache C verwendet werden. Vor allem auch wenn man berufliche Absichten verfolgt.&lt;br /&gt;
&lt;br /&gt;
Und wenn man einen STM32 kann, dann ist ein Umstieg auf einen LPC17xx (NXP) oder andere Hersteller überhaupt kein Problem (*), denn die bieten ebenfalls Prozessoren mit Cortex-M3 Kern und man kann diese mit der gleichen Programmierumgebung programmieren. Somit ist man nicht zwingend Herstellerabhängig. (* jeder Hersteller verbaut seine eigene Peripherie, die andere Funktionalitäten haben.)&lt;br /&gt;
&lt;br /&gt;
Mit einem STM32 kann man als Hobby-Baster und Professionell nahezu alle Anwendungen realisieren. Der hat genügend RAM und FLASH Speicher und auch genügen Geschwindigkeit. Viele Gehäuse-Varianten um kleine bis hin zu größere Geräte zu erstellen. Viele Schnittstellen, sind im Artikel [[STM32]] beschrieben.&lt;br /&gt;
&lt;br /&gt;
Der einzige Nachteil beim STM32: man muss etwas mehr lesen, da eine Peripherie doch viel mehr Funktionalität hat. Ansonsten kenne ich nicht wirklich einen Grund warum man als Neueinsteiger keinen STM32 nehmen sollte.&lt;br /&gt;
&lt;br /&gt;
= Programmiersprachen =&lt;br /&gt;
* Wie bei vielen anderen Controllern wird beim STM32 auch hauptsächlich C und C++ verwendet. Kennen sollte man die Programmiersprache C schon, wenn man davon noch keine Ahnung hat dann sollte man erst mal mittels einem Tutorial auf einem PC ein Konsoleprogramm schreiben, sodass man es einigermaßen kennen lernt. Hier im Forum gibt es ebenfalls Artikel dazu. Zielt man auf die (spätere) Anwendung in der Industrie, sollte aufgrund der Verbreitung auf jeden Fall C (oder C++) gewählt werden; außerdem sind die meisten verfügbaren Libraries in C geschrieben.&lt;br /&gt;
* Assembler sollte man nur grob verstehen, Details wie ein Befehl arbeitet ist unwichtig. Selbst wenn man die Zyklen für einen Funktionsaufruf wissen will, so bietet der STM32 (Cortex-M3) einen Cycle-Counter den man auslesen kann; durch die komplexere Pipeline und Cache-Effekte sind die Laufzeiten allerdings nicht genau vorhersehbar. Wird zyklengenause Timing benötigt, sollten Timer verwendet werden - davon hat der STM32 genug.&lt;br /&gt;
&lt;br /&gt;
Der 32bit-Adressraum, der RAM, Flash, I/O-Register vereinheitlicht ansprechen kann (im Gegensatz zu z.B. AVR) ist ideal für eine Verwendung durch Hochsprachen; bei Pointern muss keine zusätzliche Information verwaltet werden, in welche Art Speicher sie zeigen. Die Adresse gibt dies eindeutig an (es gibt nur &#039;&#039;&#039;eine&#039;&#039;&#039; Adresse 42, und nicht 2 wie bei es für Harvard-Architekturen eigentlich typisch ist (Programmspeicher und Datenspeicher, also z.B. Flash und RAM/IO) und die Hardware spricht automatisch den richtigen Speicher an. Die Möglichkeiten zur Offset-Adressierung, der Barrel-Shifter, Divsions-Einheit, die FPU (bei STM32F4), Interrupt-Modell etc. begünstigen ebenfalls die Erzeugung effizienteren Codes. Außerdem haben die STM32 einfach mehr &amp;quot;rohe Leistung&amp;quot;, d.h. mehr Flash/RAM-Speicher und höhere Taktfrequenzen.&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Folgerung&#039;&#039;&#039;: Die Programmierung in Hochsprachen ist &#039;&#039;&#039;bequemer als bei 8-Bittern&#039;&#039;&#039;, denn man muss sich einfach weniger Gedanken machen, ob der Compiler ein Programm nun effizent umsetzen kann (kann man natürlich trotzdem machen, um noch mehr Leistung &amp;quot;herauszuquetschen&amp;quot;, wenn man will).&lt;br /&gt;
&lt;br /&gt;
= Weitere Randbedingungen für die Entscheidung=&lt;br /&gt;
&lt;br /&gt;
Der wichtige Punkt, der oftmals auch vergessen wird: die Beschaffbarkeit. Wenn jemand einen Renesas M16C oder Fujitsu empfiehlt, dann sucht man erst mal und findet nur wenige vereinzelte die man privat kaufen kann.&lt;br /&gt;
&lt;br /&gt;
Oder auch die Unterstützung im Internet - ist bei einigen Exoten spärlich. Dieses Forum bietet die beste Hilfe für [[AVR]], PIC, [[STM32]] und [[MSP430]].&lt;br /&gt;
&lt;br /&gt;
Andere Prozessoren sind schon sehr alt, bzw. nicht mehr modern da deren Peripherie zum Teil doch recht eingeschränkte Funktionalität bietet. z.B. viele 8051 Typen oder PIC16 (oder auch dsPIC30). Die mögen für Mini-Anwenungen gut sein, aber wer will den schon gerne sich extra für eine Kleinanwendung mit einem kleinen µC auseinandersetzen, wenn er schon einen STM32 kennt, mit dem er alles machen kann (und sich bereits gute Funktionen geschrieben hat)?&lt;br /&gt;
&lt;br /&gt;
Daher mein Resümee: wer nicht gerade auf den Kopf gefallen ist, der kann getrost mit einem STM32 starten. Ein [http://www.st.com/web/en/catalog/tools/FM116/SC959/SS1532/PF252419?s_searchtype=keyword STM32F4DISCOVERY] Board kostet nur ca. 20 EUR - und mehr muss für den ersten Start nicht investiert werden - wenn es doch zu komplex sein sollte gibt es hier im Forum auch Hilfe oder man nimmt erst mal ein &amp;quot;Arduino&amp;quot;. Jedenfalls sind diese 20 EUR wirklich keine große Investition.&lt;br /&gt;
&lt;br /&gt;
= Weblinks, Foren, Communities, Tutorials =&lt;br /&gt;
* [[STM32]] Hauptartikel, [http://www.mikrocontroller.net/articles/STM32#Weblinks.2C_Foren.2C_Communities.2C_Tutorials dortige Linksammlung]&lt;br /&gt;
* [http://www.mikrocontroller.net/topic/319328 Diskussion zum Artikel]&lt;br /&gt;
* [[STM32 CooCox Installation]]&lt;br /&gt;
* [[STM32 Eclipse Installation]]&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>Frank m35</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=STM32_f%C3%BCr_Einsteiger&amp;diff=80340</id>
		<title>STM32 für Einsteiger</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=STM32_f%C3%BCr_Einsteiger&amp;diff=80340"/>
		<updated>2013-12-31T09:54:32Z</updated>

		<summary type="html">&lt;p&gt;Frank m35: /* Eigene Fähigkeiten und Wünsche */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Immer wiederkehrend hier im Forum &amp;quot;Mit welchem Mikrocontroller anfangen?&amp;quot;. Es gibt eine große Auswahl und eben so viele Empfehlungen. In diesem Artikel soll zu erst geholfen werden ob ein STM32-Prozessor mit Cortex-M3/M4 Kern überhaupt der Richtige für den Start ist.&lt;br /&gt;
Nicht für jeden ist der STM32 zu empfehlen, denn die Anforderungen und Wünsche die man realisieren möchte, sowie die eigenen Fähigkeiten sind verschieden.&lt;br /&gt;
&lt;br /&gt;
Es werden meist die Prozessoren AVR, PIC, Arduino, MSP430 und STM32 empfohlen. Seltener auch 8051, LPC und M16C. Alle haben Vorzüge und ebenso auch Nachteile.&lt;br /&gt;
&lt;br /&gt;
= Eigene Fähigkeiten und Wünsche =&lt;br /&gt;
&lt;br /&gt;
Dieser Artikel geht davon aus, dass bereits Elektronik Kenntnisse vorhanden sind. Wenn nicht dann sollte man erst einmal den Artikel &amp;quot;[[Absolute Beginner]]&amp;quot; durcharbeiten, sowie die anderen Artikel aus der Kategorie &amp;quot;[http://www.mikrocontroller.net/articles/Kategorie:Grundlagen Grundlagen]&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Zu erst einmal die Randbedingungen, mit der man sich selbst zu erst einmal einschätzen sollte:&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|- bgcolor=&amp;quot;#d0d0ff&amp;quot;&lt;br /&gt;
! Fähigkeit || Empfehlung [[STM32]] || Empfehlung [[AVR]] || Empfehlung PIC || Empfehlung [[MSP430]] || Empfehlung Arduino&lt;br /&gt;
|-&lt;br /&gt;
| Neueinsteiger, kaum Elektronikkenntnisse, noch nie programmiert || align=&amp;quot;center&amp;quot;|O || align=&amp;quot;center&amp;quot;|O [http://www.rn-wissen.de/index.php/AVR-Einstieg_leicht_gemacht] [http://www.avr-asm-tutorial.net/avr_de/] || align=&amp;quot;center&amp;quot;|O [http://www.sprut.de/] || align=&amp;quot;center&amp;quot;|O || align=&amp;quot;center&amp;quot;|x&lt;br /&gt;
|-&lt;br /&gt;
| Wunsch ist SD-Card oder Grafik-Display || align=&amp;quot;center&amp;quot;|x || align=&amp;quot;center&amp;quot;|x || align=&amp;quot;center&amp;quot;|x [http://www.microchip.com/stellent/idcplg?IdcService=SS_GET_PAGE&amp;amp;nodeId=2680&amp;amp;dDocName=en537999] [http://www.microchip.com/pagehandler/en-us/technology/graphics/] || align=&amp;quot;center&amp;quot;|x || align=&amp;quot;center&amp;quot;|x&lt;br /&gt;
|-&lt;br /&gt;
| Wunsch ist TCP/IP Netzwerk oder Kamera|| align=&amp;quot;center&amp;quot;|x || align=&amp;quot;center&amp;quot;|O || align=&amp;quot;center&amp;quot;|x [http://www.microchip.com/stellent/idcplg?IdcService=SS_GET_PAGE&amp;amp;nodeId=2505&amp;amp;param=en535724] || align=&amp;quot;center&amp;quot;|O || align=&amp;quot;center&amp;quot;|O&lt;br /&gt;
|-&lt;br /&gt;
| Möchte die Erkenntnisse beruflich nutzen|| align=&amp;quot;center&amp;quot;|x || align=&amp;quot;center&amp;quot;|x || align=&amp;quot;center&amp;quot;|x || align=&amp;quot;center&amp;quot;|x || align=&amp;quot;center&amp;quot;|-&lt;br /&gt;
|-&lt;br /&gt;
| Strom sparende Anwendungen|| align=&amp;quot;center&amp;quot;|- [http://www.st.com/web/en/catalog/mmc/FM141/SC1169/SS1295]&amp;lt;br&amp;gt; 300 nA Sleep&amp;lt;br&amp;gt;230 μA/MHz]|| align=&amp;quot;center&amp;quot;|- [http://www.atmel.com/technologies/lowpower/default.aspx] [http://www.futurlec.com/News/Atmel/PicoPower.shtml]&amp;lt;br&amp;gt;100 nA Sleep&amp;lt;br&amp;gt;340 μA/MHz|| align=&amp;quot;center&amp;quot;|x [http://ww1.microchip.com/downloads/en/DeviceDoc/39989A.pdf] [http://ww1.microchip.com/downloads/en/DeviceDoc/30009941F.pdf] &amp;lt;br&amp;gt; 9 nA Sleep&amp;lt;br&amp;gt;35 μA/MHz || align=&amp;quot;center&amp;quot;|x [http://www.ti.com/lit/wp/slay015/slay015.pdf] [http://www.ti.com/ww/mx/multimedia/webcasts/Aspectos_Generales_MSP430.pdf] &amp;lt;br&amp;gt; 100 nA Sleep&amp;lt;br&amp;gt;100 μA/MHz || align=&amp;quot;center&amp;quot;|-&lt;br /&gt;
|-&lt;br /&gt;
| Experimentieren mit Multithreading, RTOS, Schedulern || align=&amp;quot;center&amp;quot;|x || align=&amp;quot;center&amp;quot;|O [http://www.freertos.org/a00098.html] [http://www.femtoos.org/] || align=&amp;quot;center&amp;quot;|bedingt, PIC32 [http://www.microchip.com/stellent/idcplg?IdcService=SS_GET_PAGE&amp;amp;nodeId=1406&amp;amp;dDocName=en531543&amp;amp;redirects=rtos] || align=&amp;quot;center&amp;quot;|- || align=&amp;quot;center&amp;quot;|-&lt;br /&gt;
|-&lt;br /&gt;
| Besonders große, speicherintensive Programme&amp;lt;br&amp;gt;z.B. Grafiken, Fonts || align=&amp;quot;center&amp;quot;|bis 2MB Flash&amp;lt;br&amp;gt;bis 256kB SRAM || align=&amp;quot;center&amp;quot;|bis 256kB Flash&amp;lt;br&amp;gt;bis 16kB SRAM || align=&amp;quot;center&amp;quot;|bis 2MB Flash&amp;lt;br&amp;gt;bis 512kB SRAM || align=&amp;quot;center&amp;quot;|bis 512KB Flash&amp;lt;br&amp;gt;bis ? kB SRAM || align=&amp;quot;center&amp;quot;|bis 256kB Flash&amp;lt;br&amp;gt;bis 16kB SRAM&lt;br /&gt;
|-&lt;br /&gt;
| Sehr viel PWM mit komplexem Timing || align=&amp;quot;center&amp;quot;|x || align=&amp;quot;center&amp;quot;|bedingt, AT90Spwm || align=&amp;quot;center&amp;quot;|bedingt, dsPIC/PIC32 || align=&amp;quot;center&amp;quot;|O || align=&amp;quot;center&amp;quot;|-&lt;br /&gt;
|-&lt;br /&gt;
| Deutschsprachige Community || align=&amp;quot;center&amp;quot;|O || align=&amp;quot;center&amp;quot;|x || align=&amp;quot;center&amp;quot;|O || align=&amp;quot;center&amp;quot;|- || align=&amp;quot;center&amp;quot;|x&lt;br /&gt;
|-&lt;br /&gt;
| Anzahl möglicher HW-Breakpoints || align=&amp;quot;center&amp;quot;|4 bis 6 || align=&amp;quot;center&amp;quot;|2 || align=&amp;quot;center&amp;quot;| 1 bis 10 [http://www.microchip.com/stellent/groups/SiteComm_sg/documents/DeviceDoc/en556761.pdf] || align=&amp;quot;center&amp;quot;|2 || align=&amp;quot;center&amp;quot;|2&lt;br /&gt;
|}&lt;br /&gt;
* x = ja&lt;br /&gt;
* O = Teilweise, Einschränkungen&lt;br /&gt;
* - = nicht empfohlen&lt;br /&gt;
* ? = Bitte ergänzen&lt;br /&gt;
&lt;br /&gt;
Nur um nicht zu verwirren, auch wenn Teile &amp;quot;nicht empfohlen&amp;quot; sind, heißt dass nicht dass es mit dem Prozessor nicht geht, vielmehr dass es mehr Aufwand ist das zu realisieren oder mehr Einschränkungen hat.&lt;br /&gt;
&lt;br /&gt;
PIC: Die Spalte PIC zeigt die Eigenschaften der Reihen PIC18 (vergleichbar mit [[AVR]]), PIC24 (vergleichbar mit MSP430) und PIC32 (vergleichbar mit [[STM32]]). Dabei sind die einzelnen Varianten (PIC18/24/32) untereinander nur wenig kompatibel, das einzige ist die gleiche Programmierumgebung &amp;quot;MPLab&amp;quot;. Wenn ein PIC18 zu klein wird und man einen PIC24 nutzen möchte, so ist der Aufwand in etwa vergleichbar wie ein Umstieg von AVR auf MSP430 (was die Peripheriefunktionen betrifft). Details dazu (Doku von Microchip) sind in der obigen Tabelle verlinkt.&lt;br /&gt;
&lt;br /&gt;
= Unwichtige Randbedingungen =&lt;br /&gt;
&lt;br /&gt;
Oftmals werden fälschlicherweise Argumente für oder gegen eine µC-Familie ausgesprochen, die in der Praxis &#039;&#039;&#039;zum Einstieg&#039;&#039;&#039; (bei konkreten Anwendungen kann das anders aussehen) eher unwichtig sind.&lt;br /&gt;
&lt;br /&gt;
* Spannungsversorgung 3,3V / 5V&lt;br /&gt;
* 8 (z.B. [[AVR]]), 16 (z.B. [[MSP430]]) oder 32 (z.B. [[STM32]]) Bit&lt;br /&gt;
* Interrupt System mit mehr oder weniger Features&lt;br /&gt;
* Programmiersprache (Assembler, Basic, C, C++, Pascal)&lt;br /&gt;
* Assembler verstehen (Sollte nur theoretisch verstanden werden, ein Programm sollte in einer Hochsprache geschrieben sein)&lt;br /&gt;
* DIL Gehäuse - steckbretttauglich (STM32-Prozessoren gibt es auch fertig gelötet auf einem steckbretttauglichen Board zum fünffachen Preis vergleichbarer DIL Mikrocontroller)&lt;br /&gt;
* Programmieradapter&lt;br /&gt;
* zu 90% reicht doch ein kleiner Prozessor ([[AVR]]/PIC) - und für die restlichen kann man immer noch einen großen nehmen. Warum also nicht gleich einen großen nehmen?&lt;br /&gt;
&lt;br /&gt;
= Kosten =&lt;br /&gt;
&lt;br /&gt;
Grobe Abschätzung was das alles denn kosten wird. Hier sind nur einige Beispiele gezeigt (Einzelpreise bei Bezugsquellen in Deutschland).&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|- bgcolor=&amp;quot;#d0d0ff&amp;quot;&lt;br /&gt;
! Board || [[STM32]] || [[AVR]] || PIC18/24/32 || [[MSP430]] || Arduino&lt;br /&gt;
|-&lt;br /&gt;
| Demo-Board || align=&amp;quot;center&amp;quot;|[http://www.st.com/web/en/catalog/tools/FM116/SC959/SS1532/PF252419] 9..20€ (incl. Programmieradapter und Debugger) || align=&amp;quot;center&amp;quot;|5..500€, z.B. Arduino || align=&amp;quot;center&amp;quot;| [http://www.microchipdirect.com/ProductDetails.aspx?Catalog=BuyMicrochip&amp;amp;Category=Starter%20Kits&amp;amp;mid=1&amp;amp;lmid=610 durchschnittlich 18€ .. 50€] || align=&amp;quot;center&amp;quot;|[http://www.ti.com/tool/msp-exp430fr5739] ~35€ || align=&amp;quot;center&amp;quot;|20€&lt;br /&gt;
|-&lt;br /&gt;
| Steckbrettaugliches Board || align=&amp;quot;center&amp;quot;| s.o. oder [http://re.reworld.eu/de/produkte/s64dil-405/index.htm S64DIL-405] 30€ || align=&amp;quot;center&amp;quot;|0,6–5€ als einzelner DIP-IC || align=&amp;quot;center&amp;quot;|2-5€ als einzelner IC || align=&amp;quot;center&amp;quot;|?? || align=&amp;quot;center&amp;quot;|??&lt;br /&gt;
|-&lt;br /&gt;
| Programmieradapter || align=&amp;quot;center&amp;quot;|  || align=&amp;quot;center&amp;quot;| ab 4€ || align=&amp;quot;center&amp;quot;| || align=&amp;quot;center&amp;quot;| || align=&amp;quot;center&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Programmieradapter mit Debugger || align=&amp;quot;center&amp;quot;| s.o. oder z.B [http://www.segger.com/j-link-edu.html Segger J-LINK EDU] 50€ (sehr schnell und unterstützt viele Prozessoren) || align=&amp;quot;center&amp;quot;|?? || align=&amp;quot;center&amp;quot;|PICkit 3 30€ [http://www.microchipdirect.com/ProductSearch.aspx?keywords=PG164130] || align=&amp;quot;center&amp;quot;|z.B. Dragon 50€ || align=&amp;quot;center&amp;quot;|20€ (Man muss DebugWire aktivieren)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Das Demo-Board sollte ein Board sein, nicht zu teuer, um die ersten Erfahrungen zu sammeln. Wenn einem der Prozessor gefällt, so kann man später immer noch mit einem zweiten Demo-Board, z.B. mit Display aufrüsten.&lt;br /&gt;
&lt;br /&gt;
Wenn man gerne mit einem Steckbrett sich die Schaltung zusammen stecken möchte, so kann man entweder die benötigten Drähte am Demo-Board anlöten oder bei z.B. [[AVR]]/[[PIC]] Prozessoren gibt es Ausführungen im DIL Gehäuse, die direkt steckbar sind.&lt;br /&gt;
&lt;br /&gt;
Ein Programmieradapter sollte unbedingt auch einen Debugger beinhalten. Denn für den Start ist es ungemein hilfreich zu sehen was im Prozessor gerade geschieht. Die JTAG-Adapter für einen [[STM32]] Prozessor sind alle Debugger-Tauglich. Für einen [[AVR]] oder [[PIC]] Prozessor gibt es auch oft reine Programmer (oft Selbstbau-Lösungen über die serielle oder parallele Schnittstelle) welche den Mikrocontroller nur beschreiben können. Sinvoller sind hingegen Debugger (bspw. PIC Kit 3 [http://www.microchipdirect.com/ProductSearch.aspx?keywords=PG164130] kompatibel zu allen PIC Mikrocontrollern), die die Ausführung eines Mikrocontrollers anhalten können um die aktuelle Position im Programmcode, Variableninhalt, Register, ... auszulesen bzw. zur Laufzeit zu ändern.&lt;br /&gt;
&lt;br /&gt;
Der für den [[STM32]] empfohlene Segger J-LINK EDU ist zwar nicht der günstigste (z.B. auf einem STM32F4DISCOVERY Borad ist auch einer drauf den man für andere STM32 nutzen kann) aber eines der besten, mit sehr guten Software-Tools und nutzbar für alle Prozessoren mit ARM-Kern (ARM7/9/11/... Cortex-Mx). Niemals am Werkzeug sparen und man hat viel mehr Freude bei der Arbeit.&lt;br /&gt;
&lt;br /&gt;
Der &amp;quot;Arduino&amp;quot; ist kein eigenständiger Prozessor, sondern ein fertiges Board mit einer &amp;quot;Arduino&amp;quot; Programmierumgebung (und einem AVR Prozessor), extra geschaffen für Einsteiger. Allerdings ist da der Lerneffekt viel geringer da man den Prozessor mit der Arduino-Software programmiert und nicht direkt die Register.&lt;br /&gt;
&lt;br /&gt;
Ein [[PIC16]] ist ein älterer 8-Bit Mikrocontroller, der durch die [[PIC18]] Reihe abgelöst wurde. Werden komplexere Anforderungen in Zukunft an den Mikrocontroller gestellt (Audio, Grafik), so sollte zu den moderneren [[PIC24]] bzw. [[dsPIC]] (16-Bit) oder gar zu [[PIC32]] (32-Bit MIPS Prozessor) gegriffen werden, wobei letzterer von der Performance vergleichbar mit den STM32 ARM-basierten Mikrocontrollern ist.&lt;br /&gt;
&lt;br /&gt;
= Programmierumgebungen=&lt;br /&gt;
&lt;br /&gt;
Bei den Programmierumgebungen gibt es zu allen Prozessorfamilien kostenlose und Leistungsfähige Software&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|- bgcolor=&amp;quot;#d0d0ff&amp;quot;&lt;br /&gt;
! [[STM32]] || [[AVR]] || PIC || [[MSP430]] || Arduino&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot;|[http://www.coocox.org/CooCox_CoIDE.htm CooCox] || align=&amp;quot;center&amp;quot;|Atmel-Studio || align=&amp;quot;center&amp;quot;|[http://www.microchip.com/pagehandler/en-us/family/mplabx/ MPALB X] (IDE inklusive compiler) || align=&amp;quot;center&amp;quot;|?? || align=&amp;quot;center&amp;quot;|arduino 1.0.5&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
natürlich gibt es noch viele weitere (für STM32 siehe [[STM32#Programmierung]]), es sollte jedoch nur die einfachsten kostenlose (und ohne Codebegrenzung) für den ersten Einstieg gezeigt werden.&lt;br /&gt;
&lt;br /&gt;
* CooCox Anleitung wie man innerhalb einer Stunde die LED eines Nagel neuen STM32F4DISCOVERY Boards zum blinken bekommt, Artikel: [[STM32 CooCox Installation]]. Diese Anleitung ist eine Schritt-Für-Schritt Anleitung um den aller ersten Start zu vereinfachen.&lt;br /&gt;
&lt;br /&gt;
= Dokumentation=&lt;br /&gt;
&lt;br /&gt;
Bevor man sich für einen Prozessor entscheidet sollte man unbedingt deren Dokumentation mal zumindest überfliegen und auch deren Errata&#039;s lesen. Nicht dass man eine Anwendung erstellen möchte und stellt hinterher fest, dass genau dieser Teil so buggy ist das er nicht genutzt werden kann.&lt;br /&gt;
&lt;br /&gt;
Beim [[STM32]] hat die Dokumentation doch recht viele Seiten, viel mehr als bei einem [[AVR]] oder PIC. Dabei ist vieles eher knapp beschrieben, man muss mehr suchen als z.B. bei den AVR-Dokus, um die gewünschten Informationen zu finden. Außerdem gibt es durchaus einige Unklarheiten und Fehler/Widersprüche. Schlussendlich ist es Geschmackssache mit welcher Doku von welchem Hersteller man sich besser zurecht findet.&lt;br /&gt;
&lt;br /&gt;
Bei den PICs gibt es zu jedem Mikrocontroller ein Datenblatt das die wichtigsten Informationen für den alltäglichen Gebrauch enthält. Da bestimmte Peripherie (bspw. I2C, SPI, ... ) aber sehr komplex ist und innerhalb einer Familie (PIC16/18/24/32) sich identisch verhält, gibt es zu jeder Familie die sogenannten Family-Datasheets, welche alle Module im Detail beschreiben.&lt;br /&gt;
&lt;br /&gt;
Parallel zur Dokumentation sollte man sich auch die Demo-Beispiele der Hersteller anschauen, dann wird vieles gleich verständlicher.&lt;br /&gt;
&lt;br /&gt;
Eine Übersicht über die Funktionen gibt es im Artikel: [[STM32]]&lt;br /&gt;
&lt;br /&gt;
= Die Arbeit mit dem STM32=&lt;br /&gt;
&lt;br /&gt;
Zu erst einmal SOOO groß sind die Unterschiede zwischen den einzelnen Prozessoren nicht. Alle haben Ein-/Ausgänge und um mittels einem Port-Pin eine LED ansteuern zu können muss bei jedem Prozessor der Pin erst einmal parametriert werden, egal ob das jetzt ein STM32 oder ein AVR oder ein MSP430 ist. Nur hat man bei einem STM32 doch einige Funktionen mehr, z.B. zuschaltbarer Pull-Up oder Pull-Down Widerstand und spezielle Setz-Rücksetzregister, die andere Prozessoren nicht haben, jedoch das programmieren vereinfachen.&lt;br /&gt;
Der Haupt-Unterschied zu den anderen Prozessoren ist, dass der [[STM32]] so viele Peripherie-Module beherbergt, dass man die einzeln immer mit einem Clock aktivieren muss, denn damit lässt sich viel Strom sparen.&lt;br /&gt;
&lt;br /&gt;
Und mal ganz ehrlich die Diskussion welcher µc einfacher zu konfigurieren ist, ist doch absoluter Unsinn. Der Weg ist immer der Gleiche:&lt;br /&gt;
*1. Blick ins Datenblatt welche Register für diese Funktion benötigt werden.&lt;br /&gt;
*2. Werte ermitteln die in die Register eingetragen werden.&lt;br /&gt;
*3. Werte ins Register schreiben. Da machte es GAR KEINEN UNTERSCHIED ob es ein [[AVR]], 8051/2, ARM,...... ist.&lt;br /&gt;
&lt;br /&gt;
Stimmt schon es gibt Unterschiede. Die Register haben anderen Namen, andere Adressen, andere Bitbedeutungen,...&lt;br /&gt;
Aber es steht doch alles im Datenblatt. Und ob ich jetzt einen [[AVR]] oder einen ARM das erste mal vor mir liegen hab. Ich brauch in allen Fällen die oben beschriebenen Schritte.&lt;br /&gt;
&lt;br /&gt;
Das Interruptsystem ist bei einem STM32 zusätzlich priorisiert, damit kann man festlegen welcher Interrupt vorrangig bearbeitet wird. Die Prioritätenvergabe ist auch kein Hexenwerk.&lt;br /&gt;
&lt;br /&gt;
Zu allen Prozessoren liefern die jeweiligen Hersteller umfangreiche Demo-Codes und Libraries mit. Meist sind alle in C geschrieben, daher sollte auch die Programmiersprache C verwendet werden. Vor allem auch wenn man berufliche Absichten verfolgt.&lt;br /&gt;
&lt;br /&gt;
Und wenn man einen STM32 kann, dann ist ein Umstieg auf einen LPC17xx (NXP) oder andere Hersteller überhaupt kein Problem (*), denn die bieten ebenfalls Prozessoren mit Cortex-M3 Kern und man kann diese mit der gleichen Programmierumgebung programmieren. Somit ist man nicht zwingend Herstellerabhängig. (* jeder Hersteller verbaut seine eigene Peripherie, die andere Funktionalitäten haben.)&lt;br /&gt;
&lt;br /&gt;
Mit einem STM32 kann man als Hobby-Baster und Professionell nahezu alle Anwendungen realisieren. Der hat genügend RAM und FLASH Speicher und auch genügen Geschwindigkeit. Viele Gehäuse-Varianten um kleine bis hin zu größere Geräte zu erstellen. Viele Schnittstellen, sind im Artikel [[STM32]] beschrieben.&lt;br /&gt;
&lt;br /&gt;
Der einzige Nachteil beim STM32: man muss etwas mehr lesen, da eine Peripherie doch viel mehr Funktionalität hat. Ansonsten kenne ich nicht wirklich einen Grund warum man als Neueinsteiger keinen STM32 nehmen sollte.&lt;br /&gt;
&lt;br /&gt;
= Programmiersprachen =&lt;br /&gt;
* Wie bei vielen anderen Controllern wird beim STM32 auch hauptsächlich C und C++ verwendet. Kennen sollte man die Programmiersprache C schon, wenn man davon noch keine Ahnung hat dann sollte man erst mal mittels einem Tutorial auf einem PC ein Konsoleprogramm schreiben, sodass man es einigermaßen kennen lernt. Hier im Forum gibt es ebenfalls Artikel dazu. Zielt man auf die (spätere) Anwendung in der Industrie, sollte aufgrund der Verbreitung auf jeden Fall C (oder C++) gewählt werden; außerdem sind die meisten verfügbaren Libraries in C geschrieben.&lt;br /&gt;
* Assembler sollte man nur grob verstehen, Details wie ein Befehl arbeitet ist unwichtig. Selbst wenn man die Zyklen für einen Funktionsaufruf wissen will, so bietet der STM32 (Cortex-M3) einen Cycle-Counter den man auslesen kann; durch die komplexere Pipeline und Cache-Effekte sind die Laufzeiten allerdings nicht genau vorhersehbar. Wird zyklengenause Timing benötigt, sollten Timer verwendet werden - davon hat der STM32 genug.&lt;br /&gt;
&lt;br /&gt;
Der 32bit-Adressraum, der RAM, Flash, I/O-Register vereinheitlicht ansprechen kann (im Gegensatz zu z.B. AVR) ist ideal für eine Verwendung durch Hochsprachen; bei Pointern muss keine zusätzliche Information verwaltet werden, in welche Art Speicher sie zeigen. Die Adresse gibt dies eindeutig an (es gibt nur &#039;&#039;&#039;eine&#039;&#039;&#039; Adresse 42, und nicht 2 wie bei es für Harvard-Architekturen eigentlich typisch ist (Programmspeicher und Datenspeicher, also z.B. Flash und RAM/IO) und die Hardware spricht automatisch den richtigen Speicher an. Die Möglichkeiten zur Offset-Adressierung, der Barrel-Shifter, Divsions-Einheit, die FPU (bei STM32F4), Interrupt-Modell etc. begünstigen ebenfalls die Erzeugung effizienteren Codes. Außerdem haben die STM32 einfach mehr &amp;quot;rohe Leistung&amp;quot;, d.h. mehr Flash/RAM-Speicher und höhere Taktfrequenzen.&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Folgerung&#039;&#039;&#039;: Die Programmierung in Hochsprachen ist &#039;&#039;&#039;bequemer als bei 8-Bittern&#039;&#039;&#039;, denn man muss sich einfach weniger Gedanken machen, ob der Compiler ein Programm nun effizent umsetzen kann (kann man natürlich trotzdem machen, um noch mehr Leistung &amp;quot;herauszuquetschen&amp;quot;, wenn man will).&lt;br /&gt;
&lt;br /&gt;
= Weitere Randbedingungen für die Entscheidung=&lt;br /&gt;
&lt;br /&gt;
Der wichtige Punkt, der oftmals auch vergessen wird: die Beschaffbarkeit. Wenn jemand einen Renesas M16C oder Fujitsu empfiehlt, dann sucht man erst mal und findet nur wenige vereinzelte die man privat kaufen kann.&lt;br /&gt;
&lt;br /&gt;
Oder auch die Unterstützung im Internet - ist bei einigen Exoten spärlich. Dieses Forum bietet die beste Hilfe für [[AVR]], PIC, [[STM32]] und [[MSP430]].&lt;br /&gt;
&lt;br /&gt;
Andere Prozessoren sind schon sehr alt, bzw. nicht mehr modern da deren Peripherie zum Teil doch recht eingeschränkte Funktionalität bietet. z.B. viele 8051 Typen oder PIC16 (oder auch dsPIC30). Die mögen für Mini-Anwenungen gut sein, aber wer will den schon gerne sich extra für eine Kleinanwendung mit einem kleinen µC auseinandersetzen, wenn er schon einen STM32 kennt, mit dem er alles machen kann (und sich bereits gute Funktionen geschrieben hat)?&lt;br /&gt;
&lt;br /&gt;
Daher mein Resümee: wer nicht gerade auf den Kopf gefallen ist, der kann getrost mit einem STM32 starten. Ein [http://www.st.com/web/en/catalog/tools/FM116/SC959/SS1532/PF252419?s_searchtype=keyword STM32F4DISCOVERY] Board kostet nur ca. 20 EUR - und mehr muss für den ersten Start nicht investiert werden - wenn es doch zu komplex sein sollte gibt es hier im Forum auch Hilfe oder man nimmt erst mal ein &amp;quot;Arduino&amp;quot;. Jedenfalls sind diese 20 EUR wirklich keine große Investition.&lt;br /&gt;
&lt;br /&gt;
= Weblinks, Foren, Communities, Tutorials =&lt;br /&gt;
* [[STM32]] Hauptartikel, [http://www.mikrocontroller.net/articles/STM32#Weblinks.2C_Foren.2C_Communities.2C_Tutorials dortige Linksammlung]&lt;br /&gt;
* [http://www.mikrocontroller.net/topic/319328 Diskussion zum Artikel]&lt;br /&gt;
* [[STM32 CooCox Installation]]&lt;br /&gt;
* [[STM32 Eclipse Installation]]&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>Frank m35</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=STM32_f%C3%BCr_Einsteiger&amp;diff=80339</id>
		<title>STM32 für Einsteiger</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=STM32_f%C3%BCr_Einsteiger&amp;diff=80339"/>
		<updated>2013-12-31T09:54:04Z</updated>

		<summary type="html">&lt;p&gt;Frank m35: /* Eigene Fähigkeiten und Wünsche */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Immer wiederkehrend hier im Forum &amp;quot;Mit welchem Mikrocontroller anfangen?&amp;quot;. Es gibt eine große Auswahl und eben so viele Empfehlungen. In diesem Artikel soll zu erst geholfen werden ob ein STM32-Prozessor mit Cortex-M3/M4 Kern überhaupt der Richtige für den Start ist.&lt;br /&gt;
Nicht für jeden ist der STM32 zu empfehlen, denn die Anforderungen und Wünsche die man realisieren möchte, sowie die eigenen Fähigkeiten sind verschieden.&lt;br /&gt;
&lt;br /&gt;
Es werden meist die Prozessoren AVR, PIC, Arduino, MSP430 und STM32 empfohlen. Seltener auch 8051, LPC und M16C. Alle haben Vorzüge und ebenso auch Nachteile.&lt;br /&gt;
&lt;br /&gt;
= Eigene Fähigkeiten und Wünsche =&lt;br /&gt;
&lt;br /&gt;
Dieser Artikel geht davon aus, dass bereits Elektronik Kenntnisse vorhanden sind. Wenn nicht dann sollte man erst einmal den Artikel &amp;quot;[[Absolute Beginner]]&amp;quot; durcharbeiten, sowie die anderen Artikel aus der Kategorie &amp;quot;[http://www.mikrocontroller.net/articles/Kategorie:Grundlagen Grundlagen]&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Zu erst einmal die Randbedingungen, mit der man sich selbst zu erst einmal einschätzen sollte:&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|- bgcolor=&amp;quot;#d0d0ff&amp;quot;&lt;br /&gt;
! Fähigkeit || Empfehlung [[STM32]] || Empfehlung [[AVR]] || Empfehlung PIC || Empfehlung [[MSP430]] || Empfehlung Arduino&lt;br /&gt;
|-&lt;br /&gt;
| Neueinsteiger, kaum Elektronikkenntnisse, noch nie programmiert || align=&amp;quot;center&amp;quot;|O || align=&amp;quot;center&amp;quot;|O [http://www.rn-wissen.de/index.php/AVR-Einstieg_leicht_gemacht] [http://www.avr-asm-tutorial.net/avr_de/] || align=&amp;quot;center&amp;quot;|O [http://www.sprut.de/] || align=&amp;quot;center&amp;quot;|O || align=&amp;quot;center&amp;quot;|x&lt;br /&gt;
|-&lt;br /&gt;
| Wunsch ist SD-Card oder Grafik-Display || align=&amp;quot;center&amp;quot;|x || align=&amp;quot;center&amp;quot;|x || align=&amp;quot;center&amp;quot;|x [http://www.microchip.com/stellent/idcplg?IdcService=SS_GET_PAGE&amp;amp;nodeId=2680&amp;amp;dDocName=en537999] [http://www.microchip.com/pagehandler/en-us/technology/graphics/] || align=&amp;quot;center&amp;quot;|x || align=&amp;quot;center&amp;quot;|x&lt;br /&gt;
|-&lt;br /&gt;
| Wunsch ist TCP/IP Netzwerk oder Kamera|| align=&amp;quot;center&amp;quot;|x || align=&amp;quot;center&amp;quot;|O || align=&amp;quot;center&amp;quot;|x [http://www.microchip.com/stellent/idcplg?IdcService=SS_GET_PAGE&amp;amp;nodeId=2505&amp;amp;param=en535724] || align=&amp;quot;center&amp;quot;|O || align=&amp;quot;center&amp;quot;|O&lt;br /&gt;
|-&lt;br /&gt;
| Möchte die Erkenntnisse beruflich nutzen|| align=&amp;quot;center&amp;quot;|x || align=&amp;quot;center&amp;quot;|x || align=&amp;quot;center&amp;quot;|x || align=&amp;quot;center&amp;quot;|x || align=&amp;quot;center&amp;quot;|-&lt;br /&gt;
|-&lt;br /&gt;
| Strom sparende Anwendungen|| align=&amp;quot;center&amp;quot;|- [http://www.st.com/web/en/catalog/mmc/FM141/SC1169/SS1295]&amp;lt;br&amp;gt; 300 nA Sleep&amp;lt;br&amp;gt;230 μA/MHz]|| align=&amp;quot;center&amp;quot;|- [http://www.atmel.com/technologies/lowpower/default.aspx] [http://www.futurlec.com/News/Atmel/PicoPower.shtml]&amp;lt;br&amp;gt;100 nA Sleep&amp;lt;br&amp;gt;340 μA/MHz|| align=&amp;quot;center&amp;quot;|x [http://ww1.microchip.com/downloads/en/DeviceDoc/39989A.pdf] [http://ww1.microchip.com/downloads/en/DeviceDoc/30009941F.pdf] &amp;lt;br&amp;gt; 9 nA Sleep&amp;lt;br&amp;gt;35 μA/MHz || align=&amp;quot;center&amp;quot;|x [http://www.ti.com/lit/wp/slay015/slay015.pdf] [http://www.ti.com/ww/mx/multimedia/webcasts/Aspectos_Generales_MSP430.pdf] &amp;lt;br&amp;gt; 100 nA Sleep&amp;lt;br&amp;gt;100 μA/MHz || align=&amp;quot;center&amp;quot;|-&lt;br /&gt;
|-&lt;br /&gt;
| Experimentieren mit Multithreading, RTOS, Schedulern || align=&amp;quot;center&amp;quot;|x || align=&amp;quot;center&amp;quot;|O [http://www.freertos.org/a00098.html] [http://www.femtoos.org/] || align=&amp;quot;center&amp;quot;|O [http://www.microchip.com/stellent/idcplg?IdcService=SS_GET_PAGE&amp;amp;nodeId=1406&amp;amp;dDocName=en531543&amp;amp;redirects=rtos] || align=&amp;quot;center&amp;quot;|- || align=&amp;quot;center&amp;quot;|-&lt;br /&gt;
|-&lt;br /&gt;
| Besonders große, speicherintensive Programme&amp;lt;br&amp;gt;z.B. Grafiken, Fonts || align=&amp;quot;center&amp;quot;|bis 2MB Flash&amp;lt;br&amp;gt;bis 256kB SRAM || align=&amp;quot;center&amp;quot;|bis 256kB Flash&amp;lt;br&amp;gt;bis 16kB SRAM || align=&amp;quot;center&amp;quot;|bis 2MB Flash&amp;lt;br&amp;gt;bis 512kB SRAM || align=&amp;quot;center&amp;quot;|bis 512KB Flash&amp;lt;br&amp;gt;bis ? kB SRAM || align=&amp;quot;center&amp;quot;|bis 256kB Flash&amp;lt;br&amp;gt;bis 16kB SRAM&lt;br /&gt;
|-&lt;br /&gt;
| Sehr viel PWM mit komplexem Timing || align=&amp;quot;center&amp;quot;|x || align=&amp;quot;center&amp;quot;|bedingt, AT90Spwm || align=&amp;quot;center&amp;quot;|bedingt, dsPIC/PIC32 || align=&amp;quot;center&amp;quot;|O || align=&amp;quot;center&amp;quot;|-&lt;br /&gt;
|-&lt;br /&gt;
| Deutschsprachige Community || align=&amp;quot;center&amp;quot;|O || align=&amp;quot;center&amp;quot;|x || align=&amp;quot;center&amp;quot;|O || align=&amp;quot;center&amp;quot;|- || align=&amp;quot;center&amp;quot;|x&lt;br /&gt;
|-&lt;br /&gt;
| Anzahl möglicher HW-Breakpoints || align=&amp;quot;center&amp;quot;|4 bis 6 || align=&amp;quot;center&amp;quot;|2 || align=&amp;quot;center&amp;quot;| 1 bis 10 [http://www.microchip.com/stellent/groups/SiteComm_sg/documents/DeviceDoc/en556761.pdf] || align=&amp;quot;center&amp;quot;|2 || align=&amp;quot;center&amp;quot;|2&lt;br /&gt;
|}&lt;br /&gt;
* x = ja&lt;br /&gt;
* O = Teilweise, Einschränkungen&lt;br /&gt;
* - = nicht empfohlen&lt;br /&gt;
* ? = Bitte ergänzen&lt;br /&gt;
&lt;br /&gt;
Nur um nicht zu verwirren, auch wenn Teile &amp;quot;nicht empfohlen&amp;quot; sind, heißt dass nicht dass es mit dem Prozessor nicht geht, vielmehr dass es mehr Aufwand ist das zu realisieren oder mehr Einschränkungen hat.&lt;br /&gt;
&lt;br /&gt;
PIC: Die Spalte PIC zeigt die Eigenschaften der Reihen PIC18 (vergleichbar mit [[AVR]]), PIC24 (vergleichbar mit MSP430) und PIC32 (vergleichbar mit [[STM32]]). Dabei sind die einzelnen Varianten (PIC18/24/32) untereinander nur wenig kompatibel, das einzige ist die gleiche Programmierumgebung &amp;quot;MPLab&amp;quot;. Wenn ein PIC18 zu klein wird und man einen PIC24 nutzen möchte, so ist der Aufwand in etwa vergleichbar wie ein Umstieg von AVR auf MSP430 (was die Peripheriefunktionen betrifft). Details dazu (Doku von Microchip) sind in der obigen Tabelle verlinkt.&lt;br /&gt;
&lt;br /&gt;
= Unwichtige Randbedingungen =&lt;br /&gt;
&lt;br /&gt;
Oftmals werden fälschlicherweise Argumente für oder gegen eine µC-Familie ausgesprochen, die in der Praxis &#039;&#039;&#039;zum Einstieg&#039;&#039;&#039; (bei konkreten Anwendungen kann das anders aussehen) eher unwichtig sind.&lt;br /&gt;
&lt;br /&gt;
* Spannungsversorgung 3,3V / 5V&lt;br /&gt;
* 8 (z.B. [[AVR]]), 16 (z.B. [[MSP430]]) oder 32 (z.B. [[STM32]]) Bit&lt;br /&gt;
* Interrupt System mit mehr oder weniger Features&lt;br /&gt;
* Programmiersprache (Assembler, Basic, C, C++, Pascal)&lt;br /&gt;
* Assembler verstehen (Sollte nur theoretisch verstanden werden, ein Programm sollte in einer Hochsprache geschrieben sein)&lt;br /&gt;
* DIL Gehäuse - steckbretttauglich (STM32-Prozessoren gibt es auch fertig gelötet auf einem steckbretttauglichen Board zum fünffachen Preis vergleichbarer DIL Mikrocontroller)&lt;br /&gt;
* Programmieradapter&lt;br /&gt;
* zu 90% reicht doch ein kleiner Prozessor ([[AVR]]/PIC) - und für die restlichen kann man immer noch einen großen nehmen. Warum also nicht gleich einen großen nehmen?&lt;br /&gt;
&lt;br /&gt;
= Kosten =&lt;br /&gt;
&lt;br /&gt;
Grobe Abschätzung was das alles denn kosten wird. Hier sind nur einige Beispiele gezeigt (Einzelpreise bei Bezugsquellen in Deutschland).&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|- bgcolor=&amp;quot;#d0d0ff&amp;quot;&lt;br /&gt;
! Board || [[STM32]] || [[AVR]] || PIC18/24/32 || [[MSP430]] || Arduino&lt;br /&gt;
|-&lt;br /&gt;
| Demo-Board || align=&amp;quot;center&amp;quot;|[http://www.st.com/web/en/catalog/tools/FM116/SC959/SS1532/PF252419] 9..20€ (incl. Programmieradapter und Debugger) || align=&amp;quot;center&amp;quot;|5..500€, z.B. Arduino || align=&amp;quot;center&amp;quot;| [http://www.microchipdirect.com/ProductDetails.aspx?Catalog=BuyMicrochip&amp;amp;Category=Starter%20Kits&amp;amp;mid=1&amp;amp;lmid=610 durchschnittlich 18€ .. 50€] || align=&amp;quot;center&amp;quot;|[http://www.ti.com/tool/msp-exp430fr5739] ~35€ || align=&amp;quot;center&amp;quot;|20€&lt;br /&gt;
|-&lt;br /&gt;
| Steckbrettaugliches Board || align=&amp;quot;center&amp;quot;| s.o. oder [http://re.reworld.eu/de/produkte/s64dil-405/index.htm S64DIL-405] 30€ || align=&amp;quot;center&amp;quot;|0,6–5€ als einzelner DIP-IC || align=&amp;quot;center&amp;quot;|2-5€ als einzelner IC || align=&amp;quot;center&amp;quot;|?? || align=&amp;quot;center&amp;quot;|??&lt;br /&gt;
|-&lt;br /&gt;
| Programmieradapter || align=&amp;quot;center&amp;quot;|  || align=&amp;quot;center&amp;quot;| ab 4€ || align=&amp;quot;center&amp;quot;| || align=&amp;quot;center&amp;quot;| || align=&amp;quot;center&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Programmieradapter mit Debugger || align=&amp;quot;center&amp;quot;| s.o. oder z.B [http://www.segger.com/j-link-edu.html Segger J-LINK EDU] 50€ (sehr schnell und unterstützt viele Prozessoren) || align=&amp;quot;center&amp;quot;|?? || align=&amp;quot;center&amp;quot;|PICkit 3 30€ [http://www.microchipdirect.com/ProductSearch.aspx?keywords=PG164130] || align=&amp;quot;center&amp;quot;|z.B. Dragon 50€ || align=&amp;quot;center&amp;quot;|20€ (Man muss DebugWire aktivieren)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Das Demo-Board sollte ein Board sein, nicht zu teuer, um die ersten Erfahrungen zu sammeln. Wenn einem der Prozessor gefällt, so kann man später immer noch mit einem zweiten Demo-Board, z.B. mit Display aufrüsten.&lt;br /&gt;
&lt;br /&gt;
Wenn man gerne mit einem Steckbrett sich die Schaltung zusammen stecken möchte, so kann man entweder die benötigten Drähte am Demo-Board anlöten oder bei z.B. [[AVR]]/[[PIC]] Prozessoren gibt es Ausführungen im DIL Gehäuse, die direkt steckbar sind.&lt;br /&gt;
&lt;br /&gt;
Ein Programmieradapter sollte unbedingt auch einen Debugger beinhalten. Denn für den Start ist es ungemein hilfreich zu sehen was im Prozessor gerade geschieht. Die JTAG-Adapter für einen [[STM32]] Prozessor sind alle Debugger-Tauglich. Für einen [[AVR]] oder [[PIC]] Prozessor gibt es auch oft reine Programmer (oft Selbstbau-Lösungen über die serielle oder parallele Schnittstelle) welche den Mikrocontroller nur beschreiben können. Sinvoller sind hingegen Debugger (bspw. PIC Kit 3 [http://www.microchipdirect.com/ProductSearch.aspx?keywords=PG164130] kompatibel zu allen PIC Mikrocontrollern), die die Ausführung eines Mikrocontrollers anhalten können um die aktuelle Position im Programmcode, Variableninhalt, Register, ... auszulesen bzw. zur Laufzeit zu ändern.&lt;br /&gt;
&lt;br /&gt;
Der für den [[STM32]] empfohlene Segger J-LINK EDU ist zwar nicht der günstigste (z.B. auf einem STM32F4DISCOVERY Borad ist auch einer drauf den man für andere STM32 nutzen kann) aber eines der besten, mit sehr guten Software-Tools und nutzbar für alle Prozessoren mit ARM-Kern (ARM7/9/11/... Cortex-Mx). Niemals am Werkzeug sparen und man hat viel mehr Freude bei der Arbeit.&lt;br /&gt;
&lt;br /&gt;
Der &amp;quot;Arduino&amp;quot; ist kein eigenständiger Prozessor, sondern ein fertiges Board mit einer &amp;quot;Arduino&amp;quot; Programmierumgebung (und einem AVR Prozessor), extra geschaffen für Einsteiger. Allerdings ist da der Lerneffekt viel geringer da man den Prozessor mit der Arduino-Software programmiert und nicht direkt die Register.&lt;br /&gt;
&lt;br /&gt;
Ein [[PIC16]] ist ein älterer 8-Bit Mikrocontroller, der durch die [[PIC18]] Reihe abgelöst wurde. Werden komplexere Anforderungen in Zukunft an den Mikrocontroller gestellt (Audio, Grafik), so sollte zu den moderneren [[PIC24]] bzw. [[dsPIC]] (16-Bit) oder gar zu [[PIC32]] (32-Bit MIPS Prozessor) gegriffen werden, wobei letzterer von der Performance vergleichbar mit den STM32 ARM-basierten Mikrocontrollern ist.&lt;br /&gt;
&lt;br /&gt;
= Programmierumgebungen=&lt;br /&gt;
&lt;br /&gt;
Bei den Programmierumgebungen gibt es zu allen Prozessorfamilien kostenlose und Leistungsfähige Software&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|- bgcolor=&amp;quot;#d0d0ff&amp;quot;&lt;br /&gt;
! [[STM32]] || [[AVR]] || PIC || [[MSP430]] || Arduino&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot;|[http://www.coocox.org/CooCox_CoIDE.htm CooCox] || align=&amp;quot;center&amp;quot;|Atmel-Studio || align=&amp;quot;center&amp;quot;|[http://www.microchip.com/pagehandler/en-us/family/mplabx/ MPALB X] (IDE inklusive compiler) || align=&amp;quot;center&amp;quot;|?? || align=&amp;quot;center&amp;quot;|arduino 1.0.5&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
natürlich gibt es noch viele weitere (für STM32 siehe [[STM32#Programmierung]]), es sollte jedoch nur die einfachsten kostenlose (und ohne Codebegrenzung) für den ersten Einstieg gezeigt werden.&lt;br /&gt;
&lt;br /&gt;
* CooCox Anleitung wie man innerhalb einer Stunde die LED eines Nagel neuen STM32F4DISCOVERY Boards zum blinken bekommt, Artikel: [[STM32 CooCox Installation]]. Diese Anleitung ist eine Schritt-Für-Schritt Anleitung um den aller ersten Start zu vereinfachen.&lt;br /&gt;
&lt;br /&gt;
= Dokumentation=&lt;br /&gt;
&lt;br /&gt;
Bevor man sich für einen Prozessor entscheidet sollte man unbedingt deren Dokumentation mal zumindest überfliegen und auch deren Errata&#039;s lesen. Nicht dass man eine Anwendung erstellen möchte und stellt hinterher fest, dass genau dieser Teil so buggy ist das er nicht genutzt werden kann.&lt;br /&gt;
&lt;br /&gt;
Beim [[STM32]] hat die Dokumentation doch recht viele Seiten, viel mehr als bei einem [[AVR]] oder PIC. Dabei ist vieles eher knapp beschrieben, man muss mehr suchen als z.B. bei den AVR-Dokus, um die gewünschten Informationen zu finden. Außerdem gibt es durchaus einige Unklarheiten und Fehler/Widersprüche. Schlussendlich ist es Geschmackssache mit welcher Doku von welchem Hersteller man sich besser zurecht findet.&lt;br /&gt;
&lt;br /&gt;
Bei den PICs gibt es zu jedem Mikrocontroller ein Datenblatt das die wichtigsten Informationen für den alltäglichen Gebrauch enthält. Da bestimmte Peripherie (bspw. I2C, SPI, ... ) aber sehr komplex ist und innerhalb einer Familie (PIC16/18/24/32) sich identisch verhält, gibt es zu jeder Familie die sogenannten Family-Datasheets, welche alle Module im Detail beschreiben.&lt;br /&gt;
&lt;br /&gt;
Parallel zur Dokumentation sollte man sich auch die Demo-Beispiele der Hersteller anschauen, dann wird vieles gleich verständlicher.&lt;br /&gt;
&lt;br /&gt;
Eine Übersicht über die Funktionen gibt es im Artikel: [[STM32]]&lt;br /&gt;
&lt;br /&gt;
= Die Arbeit mit dem STM32=&lt;br /&gt;
&lt;br /&gt;
Zu erst einmal SOOO groß sind die Unterschiede zwischen den einzelnen Prozessoren nicht. Alle haben Ein-/Ausgänge und um mittels einem Port-Pin eine LED ansteuern zu können muss bei jedem Prozessor der Pin erst einmal parametriert werden, egal ob das jetzt ein STM32 oder ein AVR oder ein MSP430 ist. Nur hat man bei einem STM32 doch einige Funktionen mehr, z.B. zuschaltbarer Pull-Up oder Pull-Down Widerstand und spezielle Setz-Rücksetzregister, die andere Prozessoren nicht haben, jedoch das programmieren vereinfachen.&lt;br /&gt;
Der Haupt-Unterschied zu den anderen Prozessoren ist, dass der [[STM32]] so viele Peripherie-Module beherbergt, dass man die einzeln immer mit einem Clock aktivieren muss, denn damit lässt sich viel Strom sparen.&lt;br /&gt;
&lt;br /&gt;
Und mal ganz ehrlich die Diskussion welcher µc einfacher zu konfigurieren ist, ist doch absoluter Unsinn. Der Weg ist immer der Gleiche:&lt;br /&gt;
*1. Blick ins Datenblatt welche Register für diese Funktion benötigt werden.&lt;br /&gt;
*2. Werte ermitteln die in die Register eingetragen werden.&lt;br /&gt;
*3. Werte ins Register schreiben. Da machte es GAR KEINEN UNTERSCHIED ob es ein [[AVR]], 8051/2, ARM,...... ist.&lt;br /&gt;
&lt;br /&gt;
Stimmt schon es gibt Unterschiede. Die Register haben anderen Namen, andere Adressen, andere Bitbedeutungen,...&lt;br /&gt;
Aber es steht doch alles im Datenblatt. Und ob ich jetzt einen [[AVR]] oder einen ARM das erste mal vor mir liegen hab. Ich brauch in allen Fällen die oben beschriebenen Schritte.&lt;br /&gt;
&lt;br /&gt;
Das Interruptsystem ist bei einem STM32 zusätzlich priorisiert, damit kann man festlegen welcher Interrupt vorrangig bearbeitet wird. Die Prioritätenvergabe ist auch kein Hexenwerk.&lt;br /&gt;
&lt;br /&gt;
Zu allen Prozessoren liefern die jeweiligen Hersteller umfangreiche Demo-Codes und Libraries mit. Meist sind alle in C geschrieben, daher sollte auch die Programmiersprache C verwendet werden. Vor allem auch wenn man berufliche Absichten verfolgt.&lt;br /&gt;
&lt;br /&gt;
Und wenn man einen STM32 kann, dann ist ein Umstieg auf einen LPC17xx (NXP) oder andere Hersteller überhaupt kein Problem (*), denn die bieten ebenfalls Prozessoren mit Cortex-M3 Kern und man kann diese mit der gleichen Programmierumgebung programmieren. Somit ist man nicht zwingend Herstellerabhängig. (* jeder Hersteller verbaut seine eigene Peripherie, die andere Funktionalitäten haben.)&lt;br /&gt;
&lt;br /&gt;
Mit einem STM32 kann man als Hobby-Baster und Professionell nahezu alle Anwendungen realisieren. Der hat genügend RAM und FLASH Speicher und auch genügen Geschwindigkeit. Viele Gehäuse-Varianten um kleine bis hin zu größere Geräte zu erstellen. Viele Schnittstellen, sind im Artikel [[STM32]] beschrieben.&lt;br /&gt;
&lt;br /&gt;
Der einzige Nachteil beim STM32: man muss etwas mehr lesen, da eine Peripherie doch viel mehr Funktionalität hat. Ansonsten kenne ich nicht wirklich einen Grund warum man als Neueinsteiger keinen STM32 nehmen sollte.&lt;br /&gt;
&lt;br /&gt;
= Programmiersprachen =&lt;br /&gt;
* Wie bei vielen anderen Controllern wird beim STM32 auch hauptsächlich C und C++ verwendet. Kennen sollte man die Programmiersprache C schon, wenn man davon noch keine Ahnung hat dann sollte man erst mal mittels einem Tutorial auf einem PC ein Konsoleprogramm schreiben, sodass man es einigermaßen kennen lernt. Hier im Forum gibt es ebenfalls Artikel dazu. Zielt man auf die (spätere) Anwendung in der Industrie, sollte aufgrund der Verbreitung auf jeden Fall C (oder C++) gewählt werden; außerdem sind die meisten verfügbaren Libraries in C geschrieben.&lt;br /&gt;
* Assembler sollte man nur grob verstehen, Details wie ein Befehl arbeitet ist unwichtig. Selbst wenn man die Zyklen für einen Funktionsaufruf wissen will, so bietet der STM32 (Cortex-M3) einen Cycle-Counter den man auslesen kann; durch die komplexere Pipeline und Cache-Effekte sind die Laufzeiten allerdings nicht genau vorhersehbar. Wird zyklengenause Timing benötigt, sollten Timer verwendet werden - davon hat der STM32 genug.&lt;br /&gt;
&lt;br /&gt;
Der 32bit-Adressraum, der RAM, Flash, I/O-Register vereinheitlicht ansprechen kann (im Gegensatz zu z.B. AVR) ist ideal für eine Verwendung durch Hochsprachen; bei Pointern muss keine zusätzliche Information verwaltet werden, in welche Art Speicher sie zeigen. Die Adresse gibt dies eindeutig an (es gibt nur &#039;&#039;&#039;eine&#039;&#039;&#039; Adresse 42, und nicht 2 wie bei es für Harvard-Architekturen eigentlich typisch ist (Programmspeicher und Datenspeicher, also z.B. Flash und RAM/IO) und die Hardware spricht automatisch den richtigen Speicher an. Die Möglichkeiten zur Offset-Adressierung, der Barrel-Shifter, Divsions-Einheit, die FPU (bei STM32F4), Interrupt-Modell etc. begünstigen ebenfalls die Erzeugung effizienteren Codes. Außerdem haben die STM32 einfach mehr &amp;quot;rohe Leistung&amp;quot;, d.h. mehr Flash/RAM-Speicher und höhere Taktfrequenzen.&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Folgerung&#039;&#039;&#039;: Die Programmierung in Hochsprachen ist &#039;&#039;&#039;bequemer als bei 8-Bittern&#039;&#039;&#039;, denn man muss sich einfach weniger Gedanken machen, ob der Compiler ein Programm nun effizent umsetzen kann (kann man natürlich trotzdem machen, um noch mehr Leistung &amp;quot;herauszuquetschen&amp;quot;, wenn man will).&lt;br /&gt;
&lt;br /&gt;
= Weitere Randbedingungen für die Entscheidung=&lt;br /&gt;
&lt;br /&gt;
Der wichtige Punkt, der oftmals auch vergessen wird: die Beschaffbarkeit. Wenn jemand einen Renesas M16C oder Fujitsu empfiehlt, dann sucht man erst mal und findet nur wenige vereinzelte die man privat kaufen kann.&lt;br /&gt;
&lt;br /&gt;
Oder auch die Unterstützung im Internet - ist bei einigen Exoten spärlich. Dieses Forum bietet die beste Hilfe für [[AVR]], PIC, [[STM32]] und [[MSP430]].&lt;br /&gt;
&lt;br /&gt;
Andere Prozessoren sind schon sehr alt, bzw. nicht mehr modern da deren Peripherie zum Teil doch recht eingeschränkte Funktionalität bietet. z.B. viele 8051 Typen oder PIC16 (oder auch dsPIC30). Die mögen für Mini-Anwenungen gut sein, aber wer will den schon gerne sich extra für eine Kleinanwendung mit einem kleinen µC auseinandersetzen, wenn er schon einen STM32 kennt, mit dem er alles machen kann (und sich bereits gute Funktionen geschrieben hat)?&lt;br /&gt;
&lt;br /&gt;
Daher mein Resümee: wer nicht gerade auf den Kopf gefallen ist, der kann getrost mit einem STM32 starten. Ein [http://www.st.com/web/en/catalog/tools/FM116/SC959/SS1532/PF252419?s_searchtype=keyword STM32F4DISCOVERY] Board kostet nur ca. 20 EUR - und mehr muss für den ersten Start nicht investiert werden - wenn es doch zu komplex sein sollte gibt es hier im Forum auch Hilfe oder man nimmt erst mal ein &amp;quot;Arduino&amp;quot;. Jedenfalls sind diese 20 EUR wirklich keine große Investition.&lt;br /&gt;
&lt;br /&gt;
= Weblinks, Foren, Communities, Tutorials =&lt;br /&gt;
* [[STM32]] Hauptartikel, [http://www.mikrocontroller.net/articles/STM32#Weblinks.2C_Foren.2C_Communities.2C_Tutorials dortige Linksammlung]&lt;br /&gt;
* [http://www.mikrocontroller.net/topic/319328 Diskussion zum Artikel]&lt;br /&gt;
* [[STM32 CooCox Installation]]&lt;br /&gt;
* [[STM32 Eclipse Installation]]&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>Frank m35</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=STM32_f%C3%BCr_Einsteiger&amp;diff=80338</id>
		<title>STM32 für Einsteiger</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=STM32_f%C3%BCr_Einsteiger&amp;diff=80338"/>
		<updated>2013-12-31T09:52:30Z</updated>

		<summary type="html">&lt;p&gt;Frank m35: /* Eigene Fähigkeiten und Wünsche */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Immer wiederkehrend hier im Forum &amp;quot;Mit welchem Mikrocontroller anfangen?&amp;quot;. Es gibt eine große Auswahl und eben so viele Empfehlungen. In diesem Artikel soll zu erst geholfen werden ob ein STM32-Prozessor mit Cortex-M3/M4 Kern überhaupt der Richtige für den Start ist.&lt;br /&gt;
Nicht für jeden ist der STM32 zu empfehlen, denn die Anforderungen und Wünsche die man realisieren möchte, sowie die eigenen Fähigkeiten sind verschieden.&lt;br /&gt;
&lt;br /&gt;
Es werden meist die Prozessoren AVR, PIC, Arduino, MSP430 und STM32 empfohlen. Seltener auch 8051, LPC und M16C. Alle haben Vorzüge und ebenso auch Nachteile.&lt;br /&gt;
&lt;br /&gt;
= Eigene Fähigkeiten und Wünsche =&lt;br /&gt;
&lt;br /&gt;
Dieser Artikel geht davon aus, dass bereits Elektronik Kenntnisse vorhanden sind. Wenn nicht dann sollte man erst einmal den Artikel &amp;quot;[[Absolute Beginner]]&amp;quot; durcharbeiten, sowie die anderen Artikel aus der Kategorie &amp;quot;[http://www.mikrocontroller.net/articles/Kategorie:Grundlagen Grundlagen]&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Zu erst einmal die Randbedingungen, mit der man sich selbst zu erst einmal einschätzen sollte:&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|- bgcolor=&amp;quot;#d0d0ff&amp;quot;&lt;br /&gt;
! Fähigkeit || Empfehlung [[STM32]] || Empfehlung [[AVR]] || Empfehlung PIC || Empfehlung [[MSP430]] || Empfehlung Arduino&lt;br /&gt;
|-&lt;br /&gt;
| Neueinsteiger, kaum Elektronikkenntnisse, noch nie programmiert || align=&amp;quot;center&amp;quot;|O || align=&amp;quot;center&amp;quot;|O [http://www.rn-wissen.de/index.php/AVR-Einstieg_leicht_gemacht] [http://www.avr-asm-tutorial.net/avr_de/] || align=&amp;quot;center&amp;quot;|O [http://www.sprut.de/] || align=&amp;quot;center&amp;quot;|O || align=&amp;quot;center&amp;quot;|x&lt;br /&gt;
|-&lt;br /&gt;
| Wunsch ist SD-Card oder Grafik-Display || align=&amp;quot;center&amp;quot;|x || align=&amp;quot;center&amp;quot;|x || align=&amp;quot;center&amp;quot;|x [http://www.microchip.com/stellent/idcplg?IdcService=SS_GET_PAGE&amp;amp;nodeId=2680&amp;amp;dDocName=en537999] [http://www.microchip.com/pagehandler/en-us/technology/graphics/] || align=&amp;quot;center&amp;quot;|x || align=&amp;quot;center&amp;quot;|x&lt;br /&gt;
|-&lt;br /&gt;
| Wunsch ist TCP/IP Netzwerk oder Kamera|| align=&amp;quot;center&amp;quot;|x || align=&amp;quot;center&amp;quot;|O || align=&amp;quot;center&amp;quot;|x [http://www.microchip.com/stellent/idcplg?IdcService=SS_GET_PAGE&amp;amp;nodeId=2505&amp;amp;param=en535724] || align=&amp;quot;center&amp;quot;|O || align=&amp;quot;center&amp;quot;|O&lt;br /&gt;
|-&lt;br /&gt;
| Möchte die Erkenntnisse beruflich nutzen|| align=&amp;quot;center&amp;quot;|x || align=&amp;quot;center&amp;quot;|x || align=&amp;quot;center&amp;quot;|x || align=&amp;quot;center&amp;quot;|x || align=&amp;quot;center&amp;quot;|-&lt;br /&gt;
|-&lt;br /&gt;
| Strom sparende Anwendungen|| align=&amp;quot;center&amp;quot;|- [http://www.st.com/web/en/catalog/mmc/FM141/SC1169/SS1295]&amp;lt;br&amp;gt; 300 nA Sleep&amp;lt;br&amp;gt;230 μA/MHz]|| align=&amp;quot;center&amp;quot;|- [http://www.atmel.com/technologies/lowpower/default.aspx] [http://www.futurlec.com/News/Atmel/PicoPower.shtml]&amp;lt;br&amp;gt;100 nA Sleep&amp;lt;br&amp;gt;340 μA/MHz|| align=&amp;quot;center&amp;quot;|x [http://ww1.microchip.com/downloads/en/DeviceDoc/39989A.pdf] [http://ww1.microchip.com/downloads/en/DeviceDoc/30009941F.pdf] &amp;lt;br&amp;gt; 9 nA Sleep&amp;lt;br&amp;gt;35 μA/MHz || align=&amp;quot;center&amp;quot;|x [http://www.ti.com/lit/wp/slay015/slay015.pdf] [http://www.ti.com/ww/mx/multimedia/webcasts/Aspectos_Generales_MSP430.pdf] &amp;lt;br&amp;gt; 100 nA Sleep&amp;lt;br&amp;gt;100 μA/MHz || align=&amp;quot;center&amp;quot;|-&lt;br /&gt;
|-&lt;br /&gt;
| Experimentieren mit Multithreading, RTOS, Schedulern || align=&amp;quot;center&amp;quot;|x || align=&amp;quot;center&amp;quot;|O [http://www.freertos.org/a00098.html] [http://www.femtoos.org/] || align=&amp;quot;center&amp;quot;|O [http://www.microchip.com/stellent/idcplg?IdcService=SS_GET_PAGE&amp;amp;nodeId=1406&amp;amp;dDocName=en531543&amp;amp;redirects=rtos] || align=&amp;quot;center&amp;quot;|- || align=&amp;quot;center&amp;quot;|-&lt;br /&gt;
|-&lt;br /&gt;
| Besonders große, speicherintensive Programme&amp;lt;br&amp;gt;z.B. Grafiken, Fonts || align=&amp;quot;center&amp;quot;|bis 2MB Flash&amp;lt;br&amp;gt;bis 256kB SRAM || align=&amp;quot;center&amp;quot;|bis 256kB Flash&amp;lt;br&amp;gt;bis 16kB SRAM || align=&amp;quot;center&amp;quot;|bis 2MB Flash&amp;lt;br&amp;gt;bis 512kB SRAM || align=&amp;quot;center&amp;quot;|bis 512KB Flash&amp;lt;br&amp;gt;bis ? kB SRAM || align=&amp;quot;center&amp;quot;|bis 256kB Flash&amp;lt;br&amp;gt;bis 16kB SRAM&lt;br /&gt;
|-&lt;br /&gt;
| Sehr viel PWM mit komplexem Timing || align=&amp;quot;center&amp;quot;|x || align=&amp;quot;center&amp;quot;|bedingt, AT90Spwm || align=&amp;quot;center&amp;quot;|O || align=&amp;quot;center&amp;quot;|O || align=&amp;quot;center&amp;quot;|-&lt;br /&gt;
|-&lt;br /&gt;
| Deutschsprachige Community || align=&amp;quot;center&amp;quot;|O || align=&amp;quot;center&amp;quot;|x || align=&amp;quot;center&amp;quot;|O || align=&amp;quot;center&amp;quot;|- || align=&amp;quot;center&amp;quot;|x&lt;br /&gt;
|-&lt;br /&gt;
| Anzahl möglicher HW-Breakpoints || align=&amp;quot;center&amp;quot;|4 bis 6 || align=&amp;quot;center&amp;quot;|2 || align=&amp;quot;center&amp;quot;| 1 bis 10 [http://www.microchip.com/stellent/groups/SiteComm_sg/documents/DeviceDoc/en556761.pdf] || align=&amp;quot;center&amp;quot;|2 || align=&amp;quot;center&amp;quot;|2&lt;br /&gt;
|}&lt;br /&gt;
* x = ja&lt;br /&gt;
* O = Teilweise, Einschränkungen&lt;br /&gt;
* - = nicht empfohlen&lt;br /&gt;
* ? = Bitte ergänzen&lt;br /&gt;
&lt;br /&gt;
Nur um nicht zu verwirren, auch wenn Teile &amp;quot;nicht empfohlen&amp;quot; sind, heißt dass nicht dass es mit dem Prozessor nicht geht, vielmehr dass es mehr Aufwand ist das zu realisieren oder mehr Einschränkungen hat.&lt;br /&gt;
&lt;br /&gt;
PIC: Die Spalte PIC zeigt die Eigenschaften der Reihen PIC18 (vergleichbar mit [[AVR]]), PIC24 (vergleichbar mit MSP430) und PIC32 (vergleichbar mit [[STM32]]). Dabei sind die einzelnen Varianten (PIC18/24/32) untereinander nur wenig kompatibel, das einzige ist die gleiche Programmierumgebung &amp;quot;MPLab&amp;quot;. Wenn ein PIC18 zu klein wird und man einen PIC24 nutzen möchte, so ist der Aufwand in etwa vergleichbar wie ein Umstieg von AVR auf MSP430 (was die Peripheriefunktionen betrifft). Details dazu (Doku von Microchip) sind in der obigen Tabelle verlinkt.&lt;br /&gt;
&lt;br /&gt;
= Unwichtige Randbedingungen =&lt;br /&gt;
&lt;br /&gt;
Oftmals werden fälschlicherweise Argumente für oder gegen eine µC-Familie ausgesprochen, die in der Praxis &#039;&#039;&#039;zum Einstieg&#039;&#039;&#039; (bei konkreten Anwendungen kann das anders aussehen) eher unwichtig sind.&lt;br /&gt;
&lt;br /&gt;
* Spannungsversorgung 3,3V / 5V&lt;br /&gt;
* 8 (z.B. [[AVR]]), 16 (z.B. [[MSP430]]) oder 32 (z.B. [[STM32]]) Bit&lt;br /&gt;
* Interrupt System mit mehr oder weniger Features&lt;br /&gt;
* Programmiersprache (Assembler, Basic, C, C++, Pascal)&lt;br /&gt;
* Assembler verstehen (Sollte nur theoretisch verstanden werden, ein Programm sollte in einer Hochsprache geschrieben sein)&lt;br /&gt;
* DIL Gehäuse - steckbretttauglich (STM32-Prozessoren gibt es auch fertig gelötet auf einem steckbretttauglichen Board zum fünffachen Preis vergleichbarer DIL Mikrocontroller)&lt;br /&gt;
* Programmieradapter&lt;br /&gt;
* zu 90% reicht doch ein kleiner Prozessor ([[AVR]]/PIC) - und für die restlichen kann man immer noch einen großen nehmen. Warum also nicht gleich einen großen nehmen?&lt;br /&gt;
&lt;br /&gt;
= Kosten =&lt;br /&gt;
&lt;br /&gt;
Grobe Abschätzung was das alles denn kosten wird. Hier sind nur einige Beispiele gezeigt (Einzelpreise bei Bezugsquellen in Deutschland).&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|- bgcolor=&amp;quot;#d0d0ff&amp;quot;&lt;br /&gt;
! Board || [[STM32]] || [[AVR]] || PIC18/24/32 || [[MSP430]] || Arduino&lt;br /&gt;
|-&lt;br /&gt;
| Demo-Board || align=&amp;quot;center&amp;quot;|[http://www.st.com/web/en/catalog/tools/FM116/SC959/SS1532/PF252419] 9..20€ (incl. Programmieradapter und Debugger) || align=&amp;quot;center&amp;quot;|5..500€, z.B. Arduino || align=&amp;quot;center&amp;quot;| [http://www.microchipdirect.com/ProductDetails.aspx?Catalog=BuyMicrochip&amp;amp;Category=Starter%20Kits&amp;amp;mid=1&amp;amp;lmid=610 durchschnittlich 18€ .. 50€] || align=&amp;quot;center&amp;quot;|[http://www.ti.com/tool/msp-exp430fr5739] ~35€ || align=&amp;quot;center&amp;quot;|20€&lt;br /&gt;
|-&lt;br /&gt;
| Steckbrettaugliches Board || align=&amp;quot;center&amp;quot;| s.o. oder [http://re.reworld.eu/de/produkte/s64dil-405/index.htm S64DIL-405] 30€ || align=&amp;quot;center&amp;quot;|0,6–5€ als einzelner DIP-IC || align=&amp;quot;center&amp;quot;|2-5€ als einzelner IC || align=&amp;quot;center&amp;quot;|?? || align=&amp;quot;center&amp;quot;|??&lt;br /&gt;
|-&lt;br /&gt;
| Programmieradapter || align=&amp;quot;center&amp;quot;|  || align=&amp;quot;center&amp;quot;| ab 4€ || align=&amp;quot;center&amp;quot;| || align=&amp;quot;center&amp;quot;| || align=&amp;quot;center&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Programmieradapter mit Debugger || align=&amp;quot;center&amp;quot;| s.o. oder z.B [http://www.segger.com/j-link-edu.html Segger J-LINK EDU] 50€ (sehr schnell und unterstützt viele Prozessoren) || align=&amp;quot;center&amp;quot;|?? || align=&amp;quot;center&amp;quot;|PICkit 3 30€ [http://www.microchipdirect.com/ProductSearch.aspx?keywords=PG164130] || align=&amp;quot;center&amp;quot;|z.B. Dragon 50€ || align=&amp;quot;center&amp;quot;|20€ (Man muss DebugWire aktivieren)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Das Demo-Board sollte ein Board sein, nicht zu teuer, um die ersten Erfahrungen zu sammeln. Wenn einem der Prozessor gefällt, so kann man später immer noch mit einem zweiten Demo-Board, z.B. mit Display aufrüsten.&lt;br /&gt;
&lt;br /&gt;
Wenn man gerne mit einem Steckbrett sich die Schaltung zusammen stecken möchte, so kann man entweder die benötigten Drähte am Demo-Board anlöten oder bei z.B. [[AVR]]/[[PIC]] Prozessoren gibt es Ausführungen im DIL Gehäuse, die direkt steckbar sind.&lt;br /&gt;
&lt;br /&gt;
Ein Programmieradapter sollte unbedingt auch einen Debugger beinhalten. Denn für den Start ist es ungemein hilfreich zu sehen was im Prozessor gerade geschieht. Die JTAG-Adapter für einen [[STM32]] Prozessor sind alle Debugger-Tauglich. Für einen [[AVR]] oder [[PIC]] Prozessor gibt es auch oft reine Programmer (oft Selbstbau-Lösungen über die serielle oder parallele Schnittstelle) welche den Mikrocontroller nur beschreiben können. Sinvoller sind hingegen Debugger (bspw. PIC Kit 3 [http://www.microchipdirect.com/ProductSearch.aspx?keywords=PG164130] kompatibel zu allen PIC Mikrocontrollern), die die Ausführung eines Mikrocontrollers anhalten können um die aktuelle Position im Programmcode, Variableninhalt, Register, ... auszulesen bzw. zur Laufzeit zu ändern.&lt;br /&gt;
&lt;br /&gt;
Der für den [[STM32]] empfohlene Segger J-LINK EDU ist zwar nicht der günstigste (z.B. auf einem STM32F4DISCOVERY Borad ist auch einer drauf den man für andere STM32 nutzen kann) aber eines der besten, mit sehr guten Software-Tools und nutzbar für alle Prozessoren mit ARM-Kern (ARM7/9/11/... Cortex-Mx). Niemals am Werkzeug sparen und man hat viel mehr Freude bei der Arbeit.&lt;br /&gt;
&lt;br /&gt;
Der &amp;quot;Arduino&amp;quot; ist kein eigenständiger Prozessor, sondern ein fertiges Board mit einer &amp;quot;Arduino&amp;quot; Programmierumgebung (und einem AVR Prozessor), extra geschaffen für Einsteiger. Allerdings ist da der Lerneffekt viel geringer da man den Prozessor mit der Arduino-Software programmiert und nicht direkt die Register.&lt;br /&gt;
&lt;br /&gt;
Ein [[PIC16]] ist ein älterer 8-Bit Mikrocontroller, der durch die [[PIC18]] Reihe abgelöst wurde. Werden komplexere Anforderungen in Zukunft an den Mikrocontroller gestellt (Audio, Grafik), so sollte zu den moderneren [[PIC24]] bzw. [[dsPIC]] (16-Bit) oder gar zu [[PIC32]] (32-Bit MIPS Prozessor) gegriffen werden, wobei letzterer von der Performance vergleichbar mit den STM32 ARM-basierten Mikrocontrollern ist.&lt;br /&gt;
&lt;br /&gt;
= Programmierumgebungen=&lt;br /&gt;
&lt;br /&gt;
Bei den Programmierumgebungen gibt es zu allen Prozessorfamilien kostenlose und Leistungsfähige Software&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|- bgcolor=&amp;quot;#d0d0ff&amp;quot;&lt;br /&gt;
! [[STM32]] || [[AVR]] || PIC || [[MSP430]] || Arduino&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot;|[http://www.coocox.org/CooCox_CoIDE.htm CooCox] || align=&amp;quot;center&amp;quot;|Atmel-Studio || align=&amp;quot;center&amp;quot;|[http://www.microchip.com/pagehandler/en-us/family/mplabx/ MPALB X] (IDE inklusive compiler) || align=&amp;quot;center&amp;quot;|?? || align=&amp;quot;center&amp;quot;|arduino 1.0.5&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
natürlich gibt es noch viele weitere (für STM32 siehe [[STM32#Programmierung]]), es sollte jedoch nur die einfachsten kostenlose (und ohne Codebegrenzung) für den ersten Einstieg gezeigt werden.&lt;br /&gt;
&lt;br /&gt;
* CooCox Anleitung wie man innerhalb einer Stunde die LED eines Nagel neuen STM32F4DISCOVERY Boards zum blinken bekommt, Artikel: [[STM32 CooCox Installation]]. Diese Anleitung ist eine Schritt-Für-Schritt Anleitung um den aller ersten Start zu vereinfachen.&lt;br /&gt;
&lt;br /&gt;
= Dokumentation=&lt;br /&gt;
&lt;br /&gt;
Bevor man sich für einen Prozessor entscheidet sollte man unbedingt deren Dokumentation mal zumindest überfliegen und auch deren Errata&#039;s lesen. Nicht dass man eine Anwendung erstellen möchte und stellt hinterher fest, dass genau dieser Teil so buggy ist das er nicht genutzt werden kann.&lt;br /&gt;
&lt;br /&gt;
Beim [[STM32]] hat die Dokumentation doch recht viele Seiten, viel mehr als bei einem [[AVR]] oder PIC. Dabei ist vieles eher knapp beschrieben, man muss mehr suchen als z.B. bei den AVR-Dokus, um die gewünschten Informationen zu finden. Außerdem gibt es durchaus einige Unklarheiten und Fehler/Widersprüche. Schlussendlich ist es Geschmackssache mit welcher Doku von welchem Hersteller man sich besser zurecht findet.&lt;br /&gt;
&lt;br /&gt;
Bei den PICs gibt es zu jedem Mikrocontroller ein Datenblatt das die wichtigsten Informationen für den alltäglichen Gebrauch enthält. Da bestimmte Peripherie (bspw. I2C, SPI, ... ) aber sehr komplex ist und innerhalb einer Familie (PIC16/18/24/32) sich identisch verhält, gibt es zu jeder Familie die sogenannten Family-Datasheets, welche alle Module im Detail beschreiben.&lt;br /&gt;
&lt;br /&gt;
Parallel zur Dokumentation sollte man sich auch die Demo-Beispiele der Hersteller anschauen, dann wird vieles gleich verständlicher.&lt;br /&gt;
&lt;br /&gt;
Eine Übersicht über die Funktionen gibt es im Artikel: [[STM32]]&lt;br /&gt;
&lt;br /&gt;
= Die Arbeit mit dem STM32=&lt;br /&gt;
&lt;br /&gt;
Zu erst einmal SOOO groß sind die Unterschiede zwischen den einzelnen Prozessoren nicht. Alle haben Ein-/Ausgänge und um mittels einem Port-Pin eine LED ansteuern zu können muss bei jedem Prozessor der Pin erst einmal parametriert werden, egal ob das jetzt ein STM32 oder ein AVR oder ein MSP430 ist. Nur hat man bei einem STM32 doch einige Funktionen mehr, z.B. zuschaltbarer Pull-Up oder Pull-Down Widerstand und spezielle Setz-Rücksetzregister, die andere Prozessoren nicht haben, jedoch das programmieren vereinfachen.&lt;br /&gt;
Der Haupt-Unterschied zu den anderen Prozessoren ist, dass der [[STM32]] so viele Peripherie-Module beherbergt, dass man die einzeln immer mit einem Clock aktivieren muss, denn damit lässt sich viel Strom sparen.&lt;br /&gt;
&lt;br /&gt;
Und mal ganz ehrlich die Diskussion welcher µc einfacher zu konfigurieren ist, ist doch absoluter Unsinn. Der Weg ist immer der Gleiche:&lt;br /&gt;
*1. Blick ins Datenblatt welche Register für diese Funktion benötigt werden.&lt;br /&gt;
*2. Werte ermitteln die in die Register eingetragen werden.&lt;br /&gt;
*3. Werte ins Register schreiben. Da machte es GAR KEINEN UNTERSCHIED ob es ein [[AVR]], 8051/2, ARM,...... ist.&lt;br /&gt;
&lt;br /&gt;
Stimmt schon es gibt Unterschiede. Die Register haben anderen Namen, andere Adressen, andere Bitbedeutungen,...&lt;br /&gt;
Aber es steht doch alles im Datenblatt. Und ob ich jetzt einen [[AVR]] oder einen ARM das erste mal vor mir liegen hab. Ich brauch in allen Fällen die oben beschriebenen Schritte.&lt;br /&gt;
&lt;br /&gt;
Das Interruptsystem ist bei einem STM32 zusätzlich priorisiert, damit kann man festlegen welcher Interrupt vorrangig bearbeitet wird. Die Prioritätenvergabe ist auch kein Hexenwerk.&lt;br /&gt;
&lt;br /&gt;
Zu allen Prozessoren liefern die jeweiligen Hersteller umfangreiche Demo-Codes und Libraries mit. Meist sind alle in C geschrieben, daher sollte auch die Programmiersprache C verwendet werden. Vor allem auch wenn man berufliche Absichten verfolgt.&lt;br /&gt;
&lt;br /&gt;
Und wenn man einen STM32 kann, dann ist ein Umstieg auf einen LPC17xx (NXP) oder andere Hersteller überhaupt kein Problem (*), denn die bieten ebenfalls Prozessoren mit Cortex-M3 Kern und man kann diese mit der gleichen Programmierumgebung programmieren. Somit ist man nicht zwingend Herstellerabhängig. (* jeder Hersteller verbaut seine eigene Peripherie, die andere Funktionalitäten haben.)&lt;br /&gt;
&lt;br /&gt;
Mit einem STM32 kann man als Hobby-Baster und Professionell nahezu alle Anwendungen realisieren. Der hat genügend RAM und FLASH Speicher und auch genügen Geschwindigkeit. Viele Gehäuse-Varianten um kleine bis hin zu größere Geräte zu erstellen. Viele Schnittstellen, sind im Artikel [[STM32]] beschrieben.&lt;br /&gt;
&lt;br /&gt;
Der einzige Nachteil beim STM32: man muss etwas mehr lesen, da eine Peripherie doch viel mehr Funktionalität hat. Ansonsten kenne ich nicht wirklich einen Grund warum man als Neueinsteiger keinen STM32 nehmen sollte.&lt;br /&gt;
&lt;br /&gt;
= Programmiersprachen =&lt;br /&gt;
* Wie bei vielen anderen Controllern wird beim STM32 auch hauptsächlich C und C++ verwendet. Kennen sollte man die Programmiersprache C schon, wenn man davon noch keine Ahnung hat dann sollte man erst mal mittels einem Tutorial auf einem PC ein Konsoleprogramm schreiben, sodass man es einigermaßen kennen lernt. Hier im Forum gibt es ebenfalls Artikel dazu. Zielt man auf die (spätere) Anwendung in der Industrie, sollte aufgrund der Verbreitung auf jeden Fall C (oder C++) gewählt werden; außerdem sind die meisten verfügbaren Libraries in C geschrieben.&lt;br /&gt;
* Assembler sollte man nur grob verstehen, Details wie ein Befehl arbeitet ist unwichtig. Selbst wenn man die Zyklen für einen Funktionsaufruf wissen will, so bietet der STM32 (Cortex-M3) einen Cycle-Counter den man auslesen kann; durch die komplexere Pipeline und Cache-Effekte sind die Laufzeiten allerdings nicht genau vorhersehbar. Wird zyklengenause Timing benötigt, sollten Timer verwendet werden - davon hat der STM32 genug.&lt;br /&gt;
&lt;br /&gt;
Der 32bit-Adressraum, der RAM, Flash, I/O-Register vereinheitlicht ansprechen kann (im Gegensatz zu z.B. AVR) ist ideal für eine Verwendung durch Hochsprachen; bei Pointern muss keine zusätzliche Information verwaltet werden, in welche Art Speicher sie zeigen. Die Adresse gibt dies eindeutig an (es gibt nur &#039;&#039;&#039;eine&#039;&#039;&#039; Adresse 42, und nicht 2 wie bei es für Harvard-Architekturen eigentlich typisch ist (Programmspeicher und Datenspeicher, also z.B. Flash und RAM/IO) und die Hardware spricht automatisch den richtigen Speicher an. Die Möglichkeiten zur Offset-Adressierung, der Barrel-Shifter, Divsions-Einheit, die FPU (bei STM32F4), Interrupt-Modell etc. begünstigen ebenfalls die Erzeugung effizienteren Codes. Außerdem haben die STM32 einfach mehr &amp;quot;rohe Leistung&amp;quot;, d.h. mehr Flash/RAM-Speicher und höhere Taktfrequenzen.&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Folgerung&#039;&#039;&#039;: Die Programmierung in Hochsprachen ist &#039;&#039;&#039;bequemer als bei 8-Bittern&#039;&#039;&#039;, denn man muss sich einfach weniger Gedanken machen, ob der Compiler ein Programm nun effizent umsetzen kann (kann man natürlich trotzdem machen, um noch mehr Leistung &amp;quot;herauszuquetschen&amp;quot;, wenn man will).&lt;br /&gt;
&lt;br /&gt;
= Weitere Randbedingungen für die Entscheidung=&lt;br /&gt;
&lt;br /&gt;
Der wichtige Punkt, der oftmals auch vergessen wird: die Beschaffbarkeit. Wenn jemand einen Renesas M16C oder Fujitsu empfiehlt, dann sucht man erst mal und findet nur wenige vereinzelte die man privat kaufen kann.&lt;br /&gt;
&lt;br /&gt;
Oder auch die Unterstützung im Internet - ist bei einigen Exoten spärlich. Dieses Forum bietet die beste Hilfe für [[AVR]], PIC, [[STM32]] und [[MSP430]].&lt;br /&gt;
&lt;br /&gt;
Andere Prozessoren sind schon sehr alt, bzw. nicht mehr modern da deren Peripherie zum Teil doch recht eingeschränkte Funktionalität bietet. z.B. viele 8051 Typen oder PIC16 (oder auch dsPIC30). Die mögen für Mini-Anwenungen gut sein, aber wer will den schon gerne sich extra für eine Kleinanwendung mit einem kleinen µC auseinandersetzen, wenn er schon einen STM32 kennt, mit dem er alles machen kann (und sich bereits gute Funktionen geschrieben hat)?&lt;br /&gt;
&lt;br /&gt;
Daher mein Resümee: wer nicht gerade auf den Kopf gefallen ist, der kann getrost mit einem STM32 starten. Ein [http://www.st.com/web/en/catalog/tools/FM116/SC959/SS1532/PF252419?s_searchtype=keyword STM32F4DISCOVERY] Board kostet nur ca. 20 EUR - und mehr muss für den ersten Start nicht investiert werden - wenn es doch zu komplex sein sollte gibt es hier im Forum auch Hilfe oder man nimmt erst mal ein &amp;quot;Arduino&amp;quot;. Jedenfalls sind diese 20 EUR wirklich keine große Investition.&lt;br /&gt;
&lt;br /&gt;
= Weblinks, Foren, Communities, Tutorials =&lt;br /&gt;
* [[STM32]] Hauptartikel, [http://www.mikrocontroller.net/articles/STM32#Weblinks.2C_Foren.2C_Communities.2C_Tutorials dortige Linksammlung]&lt;br /&gt;
* [http://www.mikrocontroller.net/topic/319328 Diskussion zum Artikel]&lt;br /&gt;
* [[STM32 CooCox Installation]]&lt;br /&gt;
* [[STM32 Eclipse Installation]]&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>Frank m35</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=STM32_f%C3%BCr_Einsteiger&amp;diff=80315</id>
		<title>STM32 für Einsteiger</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=STM32_f%C3%BCr_Einsteiger&amp;diff=80315"/>
		<updated>2013-12-30T21:17:13Z</updated>

		<summary type="html">&lt;p&gt;Frank m35: /* Eigene Fähigkeiten und Wünsche */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Immer wiederkehrend hier im Forum &amp;quot;Mit welchem Mikrocontroller anfangen?&amp;quot;. Es gibt eine große Auswahl und eben so viele Empfehlungen. In diesem Artikel soll zu erst geholfen werden ob ein STM32-Prozessor mit Cortex-M3/M4 Kern überhaupt der Richtige für den Start ist.&lt;br /&gt;
Nicht für jeden ist der STM32 zu empfehlen, denn die Anforderungen und Wünsche die man realisieren möchte, sowie die eigenen Fähigkeiten sind verschieden.&lt;br /&gt;
&lt;br /&gt;
Es werden meist die Prozessoren AVR, PIC, Arduino, MSP430 und STM32 empfohlen. Seltener auch 8051, LPC und M16C. Alle haben Vorzüge und ebenso auch Nachteile.&lt;br /&gt;
&lt;br /&gt;
= Eigene Fähigkeiten und Wünsche =&lt;br /&gt;
&lt;br /&gt;
Dieser Artikel geht davon aus, dass bereits Elektronik Kenntnisse vorhanden sind. Wenn nicht dann sollte man erst einmal den Artikel &amp;quot;[[Absolute Beginner]]&amp;quot; durcharbeiten, sowie die anderen Artikel aus der Kategorie &amp;quot;[http://www.mikrocontroller.net/articles/Kategorie:Grundlagen Grundlagen]&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Zu erst einmal die Randbedingungen, mit der man sich selbst zu erst einmal einschätzen sollte:&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|- bgcolor=&amp;quot;#d0d0ff&amp;quot;&lt;br /&gt;
! Fähigkeit || Empfehlung [[STM32]] || Empfehlung [[AVR]] || Empfehlung PIC || Empfehlung [[MSP430]] || Empfehlung Arduino&lt;br /&gt;
|-&lt;br /&gt;
| Neueinsteiger, kaum Elektronikkenntnisse, noch nie programmiert || align=&amp;quot;center&amp;quot;|O || align=&amp;quot;center&amp;quot;|O [http://www.rn-wissen.de/index.php/AVR-Einstieg_leicht_gemacht] [http://www.avr-asm-tutorial.net/avr_de/] || align=&amp;quot;center&amp;quot;|O [http://www.sprut.de/] || align=&amp;quot;center&amp;quot;|O || align=&amp;quot;center&amp;quot;|x&lt;br /&gt;
|-&lt;br /&gt;
| Wunsch ist SD-Card oder Grafik-Display || align=&amp;quot;center&amp;quot;|x || align=&amp;quot;center&amp;quot;|x || align=&amp;quot;center&amp;quot;|x [http://www.microchip.com/stellent/idcplg?IdcService=SS_GET_PAGE&amp;amp;nodeId=2680&amp;amp;dDocName=en537999] [http://www.microchip.com/pagehandler/en-us/technology/graphics/] || align=&amp;quot;center&amp;quot;|x || align=&amp;quot;center&amp;quot;|x&lt;br /&gt;
|-&lt;br /&gt;
| Wunsch ist TCP/IP Netzwerk oder Kamera|| align=&amp;quot;center&amp;quot;|x || align=&amp;quot;center&amp;quot;|O || align=&amp;quot;center&amp;quot;|x [http://www.microchip.com/stellent/idcplg?IdcService=SS_GET_PAGE&amp;amp;nodeId=2505&amp;amp;param=en535724] || align=&amp;quot;center&amp;quot;|O || align=&amp;quot;center&amp;quot;|O&lt;br /&gt;
|-&lt;br /&gt;
| Möchte die Erkenntnisse beruflich nutzen|| align=&amp;quot;center&amp;quot;|x || align=&amp;quot;center&amp;quot;|x || align=&amp;quot;center&amp;quot;|x || align=&amp;quot;center&amp;quot;|x || align=&amp;quot;center&amp;quot;|-&lt;br /&gt;
|-&lt;br /&gt;
| Strom sparende Anwendungen|| align=&amp;quot;center&amp;quot;|O || align=&amp;quot;center&amp;quot;|x [http://www.atmel.com/technologies/lowpower/default.aspx] || align=&amp;quot;center&amp;quot;|x [http://www.microchip.com/pagehandler/en-us/technology/xlp/] || align=&amp;quot;center&amp;quot;|x || align=&amp;quot;center&amp;quot;|-&lt;br /&gt;
|-&lt;br /&gt;
| Experimentieren mit Multithreading, RTOS, Schedulern || align=&amp;quot;center&amp;quot;|x || align=&amp;quot;center&amp;quot;|O [http://www.freertos.org/a00098.html] [http://www.femtoos.org/] || align=&amp;quot;center&amp;quot;|O [http://www.microchip.com/stellent/idcplg?IdcService=SS_GET_PAGE&amp;amp;nodeId=1406&amp;amp;dDocName=en531543&amp;amp;redirects=rtos] || align=&amp;quot;center&amp;quot;|- || align=&amp;quot;center&amp;quot;|-&lt;br /&gt;
|-&lt;br /&gt;
| Besonders große, speicherintensive Programme&amp;lt;br&amp;gt;z.B. Grafiken, Fonts || align=&amp;quot;center&amp;quot;|bis 2MB Flash&amp;lt;br&amp;gt;bis 256kB SRAM || align=&amp;quot;center&amp;quot;|bis 256kB Flash&amp;lt;br&amp;gt;bis 16kB SRAM || align=&amp;quot;center&amp;quot;|bis 2MB Flash&amp;lt;br&amp;gt;bis 512kB SRAM || align=&amp;quot;center&amp;quot;|bis 512KB Flash&amp;lt;br&amp;gt;bis ? kB SRAM || align=&amp;quot;center&amp;quot;|bis 256kB Flash&amp;lt;br&amp;gt;bis 16kB SRAM&lt;br /&gt;
|-&lt;br /&gt;
| Sehr viel PWM mit komplexem Timing || align=&amp;quot;center&amp;quot;|x || align=&amp;quot;center&amp;quot;|bedingt, AT90Spwm || align=&amp;quot;center&amp;quot;|O || align=&amp;quot;center&amp;quot;|O || align=&amp;quot;center&amp;quot;|-&lt;br /&gt;
|-&lt;br /&gt;
| Deutschsprachige Community || align=&amp;quot;center&amp;quot;|O || align=&amp;quot;center&amp;quot;|x || align=&amp;quot;center&amp;quot;|O || align=&amp;quot;center&amp;quot;|- || align=&amp;quot;center&amp;quot;|x&lt;br /&gt;
|-&lt;br /&gt;
| Anzahl möglicher HW-Breakpoints || align=&amp;quot;center&amp;quot;|4 bis 6 || align=&amp;quot;center&amp;quot;|2 || align=&amp;quot;center&amp;quot;| 1 bis 10 [http://www.microchip.com/stellent/groups/SiteComm_sg/documents/DeviceDoc/en556761.pdf] || align=&amp;quot;center&amp;quot;|2 || align=&amp;quot;center&amp;quot;|2&lt;br /&gt;
|}&lt;br /&gt;
* x = ja&lt;br /&gt;
* O = Teilweise, Einschränkungen&lt;br /&gt;
* - = nicht empfohlen&lt;br /&gt;
* ? = Bitte ergänzen&lt;br /&gt;
&lt;br /&gt;
Nur um nicht zu verwirren, auch wenn Teile &amp;quot;nicht empfohlen&amp;quot; sind, heißt dass nicht dass es mit dem Prozessor nicht geht, vielmehr dass es mehr Aufwand ist das zu realisieren oder mehr Einschränkungen hat.&lt;br /&gt;
&lt;br /&gt;
= Unwichtige Randbedingungen =&lt;br /&gt;
&lt;br /&gt;
Oftmals werden fälschlicherweise Argumente für oder gegen eine µC-Familie ausgesprochen, die in der Praxis &#039;&#039;&#039;zum Einstieg&#039;&#039;&#039; (bei konkreten Anwendungen kann das anders aussehen) eher unwichtig sind.&lt;br /&gt;
&lt;br /&gt;
* Spannungsversorgung 3,3V / 5V&lt;br /&gt;
* 8 (z.B. [[AVR]]), 16 (z.B. [[MSP430]]) oder 32 (z.B. [[STM32]]) Bit&lt;br /&gt;
* Interrupt System mit mehr oder weniger Features&lt;br /&gt;
* Programmiersprache (Assembler, Basic, C, C++, Pascal)&lt;br /&gt;
* Assembler verstehen (Sollte nur theoretisch verstanden werden, ein Programm sollte in einer Hochsprache geschrieben sein)&lt;br /&gt;
* DIL Gehäuse - steckbretttauglich (STM32-Prozessoren gibt es auch fertig gelötet auf einem steckbretttauglichen Board zum fünffachen Preis vergleichbarer DIL Mikrocontroller)&lt;br /&gt;
* Programmieradapter&lt;br /&gt;
* zu 90% reicht doch ein kleiner Prozessor ([[AVR]]/PIC) - und für die restlichen kann man immer noch einen großen nehmen. Warum also nicht gleich einen großen nehmen?&lt;br /&gt;
&lt;br /&gt;
= Kosten =&lt;br /&gt;
&lt;br /&gt;
Grobe Abschätzung was das alles denn kosten wird. Hier sind nur einige Beispiele gezeigt.&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|- bgcolor=&amp;quot;#d0d0ff&amp;quot;&lt;br /&gt;
! Board || [[STM32]] || [[AVR]] || PIC18/24/32 || [[MSP430]] || Arduino&lt;br /&gt;
|-&lt;br /&gt;
| Demo-Board || align=&amp;quot;center&amp;quot;|[http://www.st.com/web/en/catalog/tools/FM116/SC959/SS1532/PF252419] 9..20€ (incl. Programmieradapter und Debugger) || align=&amp;quot;center&amp;quot;|5..500€, z.B. Arduino || align=&amp;quot;center&amp;quot;| [http://www.microchipdirect.com/ProductDetails.aspx?Catalog=BuyMicrochip&amp;amp;Category=Starter%20Kits&amp;amp;mid=1&amp;amp;lmid=610 durchschnittlich 18€ .. 50€] || align=&amp;quot;center&amp;quot;|[http://www.ti.com/tool/msp-exp430fr5739] ~35€ || align=&amp;quot;center&amp;quot;|20€&lt;br /&gt;
|-&lt;br /&gt;
| Steckbrettaugliches Board || align=&amp;quot;center&amp;quot;| s.o. oder [http://re.reworld.eu/de/produkte/s64dil-405/index.htm S64DIL-405] 30€ || align=&amp;quot;center&amp;quot;|2-5€ als einzelner IC || align=&amp;quot;center&amp;quot;|2-5€ als einzelner IC || align=&amp;quot;center&amp;quot;|?? || align=&amp;quot;center&amp;quot;|??&lt;br /&gt;
|-&lt;br /&gt;
| Programmieradapter mit Debugger || align=&amp;quot;center&amp;quot;| s.o. oder z.B [http://www.segger.com/j-link-edu.html Segger J-LINK EDU] 50€ (sehr schnell und unterstützt viele Prozessoren) || align=&amp;quot;center&amp;quot;|?? || align=&amp;quot;center&amp;quot;|PICkit 3 30€ [http://www.microchipdirect.com/ProductSearch.aspx?keywords=PG164130] || align=&amp;quot;center&amp;quot;|z.B. Dragon 50€ || align=&amp;quot;center&amp;quot;|20€ (Man muss DebugWire aktivieren)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Das Demo-Board sollte ein Board sein, nicht zu teuer, um die ersten Erfahrungen zu sammeln. Wenn einem der Prozessor gefällt, so kann man später immer noch mit einem zweiten Demo-Board, z.B. mit Display aufrüsten.&lt;br /&gt;
&lt;br /&gt;
Wenn man gerne mit einem Steckbrett sich die Schaltung zusammen stecken möchte, so kann man entweder die benötigten Drähte am Demo-Board anlöten oder bei z.B. [[AVR]]/[[PIC]] Prozessoren gibt es Ausführungen im DIL Gehäuse, die direkt steckbar sind.&lt;br /&gt;
&lt;br /&gt;
Ein Programmieradapter sollte unbedingt auch einen Debugger beinhalten. Denn für den Start ist es ungemein hilfreich zu sehen was im Prozessor gerade geschieht. Die JTAG-Adapter für einen [[STM32]] Prozessor sind alle Debugger-Tauglich. Für einen [[AVR]] oder [[PIC]] Prozessor gibt es auch oft reine Programmer (oft Selbstbau-Lösungen über die serielle oder parallele Schnittstelle) welche den Mikrocontroller nur beschreiben können. Sinvoller sind hingegen Debugger (bspw. PIC Kit 3 [http://www.microchipdirect.com/ProductSearch.aspx?keywords=PG164130] kompatibel zu allen PIC Mikrocontrollern), die die Ausführung eines Mikrocontrollers anhalten können um die aktuelle Position im Programmcode, Variableninhalt, Register, ... auszulesen bzw. zur Laufzeit zu ändern.&lt;br /&gt;
&lt;br /&gt;
Der für den [[STM32]] empfohlene Segger J-LINK EDU ist zwar nicht der günstigste (z.B. auf einem STM32F4DISCOVERY Borad ist auch einer drauf den man für andere STM32 nutzen kann) aber eines der besten, mit sehr guten Software-Tools und nutzbar für alle Prozessoren mit ARM-Kern (ARM7/9/11/... Cortex-Mx). Niemals am Werkzeug sparen und man hat viel mehr Freude bei der Arbeit.&lt;br /&gt;
&lt;br /&gt;
Der &amp;quot;Arduino&amp;quot; ist kein eigenständiger Prozessor, sondern ein fertiges Board mit einer &amp;quot;Arduino&amp;quot; Programmierumgebung (und einem AVR Prozessor), extra geschaffen für Einsteiger. Allerdings ist da der Lerneffekt viel geringer da man den Prozessor mit der Arduino-Software programmiert und nicht direkt die Register.&lt;br /&gt;
&lt;br /&gt;
Ein [[PIC16]] ist ein älterer 8-Bit Mikrocontroller, der durch die [[PIC18]] Reihe abgelöst wurde. Werden komplexere Anforderungen in Zukunft an den Mikrocontroller gestellt (Audio, Grafik), so sollte zu den moderneren [[PIC24]] bzw. [[dsPIC]] (16-Bit) oder gar zu [[PIC32]] (32-Bit MIPS Prozessor) gegriffen werden, wobei letzterer von der Performance vergleichbar mit den STM32 ARM-basierten Mikrocontrollern ist.&lt;br /&gt;
&lt;br /&gt;
= Programmierumgebungen=&lt;br /&gt;
&lt;br /&gt;
Bei den Programmierumgebungen gibt es zu allen Prozessorfamilien kostenlose und Leistungsfähige Software&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|- bgcolor=&amp;quot;#d0d0ff&amp;quot;&lt;br /&gt;
! [[STM32]] || [[AVR]] || PIC || [[MSP430]] || Arduino&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot;|[http://www.coocox.org/CooCox_CoIDE.htm CooCox] || align=&amp;quot;center&amp;quot;|Atmel-Studio || align=&amp;quot;center&amp;quot;|[http://www.microchip.com/pagehandler/en-us/family/mplabx/ MPALB X] (IDE inklusive compiler) || align=&amp;quot;center&amp;quot;|?? || align=&amp;quot;center&amp;quot;|arduino 1.0.5&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
natürlich gibt es noch viele weitere (für STM32 siehe [[STM32#Programmierung]]), es sollte jedoch nur die einfachsten kostenlose (und ohne Codebegrenzung) für den ersten Einstieg gezeigt werden.&lt;br /&gt;
&lt;br /&gt;
* CooCox Anleitung wie man innerhalb einer Stunde die LED eines Nagel neuen STM32F4DISCOVERY Boards zum blinken bekommt, Artikel: [[STM32 CooCox Installation]]. Diese Anleitung ist eine Schritt-Für-Schritt Anleitung um den aller ersten Start zu vereinfachen.&lt;br /&gt;
&lt;br /&gt;
= Dokumentation=&lt;br /&gt;
&lt;br /&gt;
Bevor man sich für einen Prozessor entscheidet sollte man unbedingt deren Dokumentation mal zumindest überfliegen und auch deren Errata&#039;s lesen. Nicht dass man eine Anwendung erstellen möchte und stellt hinterher fest, dass genau dieser Teil so buggy ist das er nicht genutzt werden kann.&lt;br /&gt;
&lt;br /&gt;
Beim [[STM32]] hat die Dokumentation doch recht viele Seiten, viel mehr als bei einem [[AVR]] oder PIC. Dabei ist vieles eher knapp beschrieben, man muss mehr suchen als z.B. bei den AVR-Dokus, um die gewünschten Informationen zu finden. Außerdem gibt es durchaus einige Unklarheiten und Fehler/Widersprüche. Schlussendlich ist es Geschmackssache mit welcher Doku von welchem Hersteller man sich besser zurecht findet.&lt;br /&gt;
&lt;br /&gt;
Bei den PICs gibt es zu jedem Mikrocontroller ein Datenblatt das die wichtigsten Informationen für den alltäglichen Gebrauch enthält. Da bestimmte Peripherie (bspw. I2C, SPI, ... ) aber sehr komplex ist und innerhalb einer Familie (PIC16/18/24/32) sich identisch verhält, gibt es zu jeder Familie die sogenannten Family-Datasheets, welche alle Module im Detail beschreiben.&lt;br /&gt;
&lt;br /&gt;
Parallel zur Dokumentation sollte man sich auch die Demo-Beispiele der Hersteller anschauen, dann wird vieles gleich verständlicher.&lt;br /&gt;
&lt;br /&gt;
Eine Übersicht über die Funktionen gibt es im Artikel: [[STM32]]&lt;br /&gt;
&lt;br /&gt;
= Die Arbeit mit dem STM32=&lt;br /&gt;
&lt;br /&gt;
Zu erst einmal SOOO groß sind die Unterschiede zwischen den einzelnen Prozessoren nicht. Alle haben Ein-/Ausgänge und um mittels einem Port-Pin eine LED ansteuern zu können muss bei jedem Prozessor der Pin erst einmal parametriert werden, egal ob das jetzt ein STM32 oder ein AVR oder ein MSP430 ist. Nur hat man bei einem STM32 doch einige Funktionen mehr, z.B. zuschaltbarer Pull-Up oder Pull-Down Widerstand und spezielle Setz-Rücksetzregister, die andere Prozessoren nicht haben, jedoch das programmieren vereinfachen.&lt;br /&gt;
Der Haupt-Unterschied zu den anderen Prozessoren ist, dass der [[STM32]] so viele Peripherie-Module beherbergt, dass man die einzeln immer mit einem Clock aktivieren muss, denn damit lässt sich viel Strom sparen.&lt;br /&gt;
&lt;br /&gt;
Und mal ganz ehrlich die Diskussion welcher µc einfacher zu konfigurieren ist, ist doch absoluter Unsinn. Der Weg ist immer der Gleiche:&lt;br /&gt;
*1. Blick ins Datenblatt welche Register für diese Funktion benötigt werden.&lt;br /&gt;
*2. Werte ermitteln die in die Register eingetragen werden.&lt;br /&gt;
*3. Werte ins Register schreiben. Da machte es GAR KEINEN UNTERSCHIED ob es ein [[AVR]], 8051/2, ARM,...... ist.&lt;br /&gt;
&lt;br /&gt;
Stimmt schon es gibt Unterschiede. Die Register haben anderen Namen, andere Adressen, andere Bitbedeutungen,...&lt;br /&gt;
Aber es steht doch alles im Datenblatt. Und ob ich jetzt einen [[AVR]] oder einen ARM das erste mal vor mir liegen hab. Ich brauch in allen Fällen die oben beschriebenen Schritte.&lt;br /&gt;
&lt;br /&gt;
Das Interruptsystem ist bei einem STM32 zusätzlich priorisiert, damit kann man festlegen welcher Interrupt vorrangig bearbeitet wird. Die Prioritätenvergabe ist auch kein Hexenwerk.&lt;br /&gt;
&lt;br /&gt;
Zu allen Prozessoren liefern die jeweiligen Hersteller umfangreiche Demo-Codes und Libraries mit. Meist sind alle in C geschrieben, daher sollte auch die Programmiersprache C verwendet werden. Vor allem auch wenn man berufliche Absichten verfolgt.&lt;br /&gt;
&lt;br /&gt;
Und wenn man einen STM32 kann, dann ist ein Umstieg auf einen LPC17xx (NXP) oder andere Hersteller überhaupt kein Problem (*), denn die bieten ebenfalls Prozessoren mit Cortex-M3 Kern und man kann diese mit der gleichen Programmierumgebung programmieren. Somit ist man nicht zwingend Herstellerabhängig. (* jeder Hersteller verbaut seine eigene Peripherie, die andere Funktionalitäten haben.)&lt;br /&gt;
&lt;br /&gt;
Mit einem STM32 kann man als Hobby-Baster und Professionell nahezu alle Anwendungen realisieren. Der hat genügend RAM und FLASH Speicher und auch genügen Geschwindigkeit. Viele Gehäuse-Varianten um kleine bis hin zu größere Geräte zu erstellen. Viele Schnittstellen, sind im Artikel [[STM32]] beschrieben.&lt;br /&gt;
&lt;br /&gt;
Der einzige Nachteil beim STM32: man muss etwas mehr lesen, da eine Peripherie doch viel mehr Funktionalität hat. Ansonsten kenne ich nicht wirklich einen Grund warum man als Neueinsteiger keinen STM32 nehmen sollte.&lt;br /&gt;
&lt;br /&gt;
= Programmiersprachen =&lt;br /&gt;
* Wie bei vielen anderen Controllern wird beim STM32 auch hauptsächlich C und C++ verwendet. Kennen sollte man die Programmiersprache C schon, wenn man davon noch keine Ahnung hat dann sollte man erst mal mittels einem Tutorial auf einem PC ein Konsoleprogramm schreiben, sodass man es einigermaßen kennen lernt. Hier im Forum gibt es ebenfalls Artikel dazu. Zielt man auf die (spätere) Anwendung in der Industrie, sollte aufgrund der Verbreitung auf jeden Fall C (oder C++) gewählt werden; außerdem sind die meisten verfügbaren Libraries in C geschrieben.&lt;br /&gt;
* Assembler sollte man nur grob verstehen, Details wie ein Befehl arbeitet ist unwichtig. Selbst wenn man die Zyklen für einen Funktionsaufruf wissen will, so bietet der STM32 (Cortex-M3) einen Cycle-Counter den man auslesen kann; durch die komplexere Pipeline und Cache-Effekte sind die Laufzeiten allerdings nicht genau vorhersehbar. Wird zyklengenause Timing benötigt, sollten Timer verwendet werden - davon hat der STM32 genug.&lt;br /&gt;
&lt;br /&gt;
Der 32bit-Adressraum, der RAM, Flash, I/O-Register vereinheitlicht ansprechen kann (im Gegensatz zu z.B. AVR) ist ideal für eine Verwendung durch Hochsprachen; bei Pointern muss keine zusätzliche Information verwaltet werden, in welche Art Speicher sie zeigen. Die Adresse gibt dies eindeutig an (es gibt nur &#039;&#039;&#039;eine&#039;&#039;&#039; Adresse 42, und nicht 2 wie bei es für Harvard-Architekturen eigentlich typisch ist (Programmspeicher und Datenspeicher, also z.B. Flash und RAM/IO) und die Hardware spricht automatisch den richtigen Speicher an. Die Möglichkeiten zur Offset-Adressierung, der Barrel-Shifter, Divsions-Einheit, die FPU (bei STM32F4), Interrupt-Modell etc. begünstigen ebenfalls die Erzeugung effizienteren Codes. Außerdem haben die STM32 einfach mehr &amp;quot;rohe Leistung&amp;quot;, d.h. mehr Flash/RAM-Speicher und höhere Taktfrequenzen.&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Folgerung&#039;&#039;&#039;: Die Programmierung in Hochsprachen ist &#039;&#039;&#039;bequemer als bei 8-Bittern&#039;&#039;&#039;, denn man muss sich einfach weniger Gedanken machen, ob der Compiler ein Programm nun effizent umsetzen kann (kann man natürlich trotzdem machen, um noch mehr Leistung &amp;quot;herauszuquetschen&amp;quot;, wenn man will).&lt;br /&gt;
&lt;br /&gt;
= Weitere Randbedingungen für die Entscheidung=&lt;br /&gt;
&lt;br /&gt;
Der wichtige Punkt, der oftmals auch vergessen wird: die Beschaffbarkeit. Wenn jemand einen Renesas M16C oder Fujitsu empfiehlt, dann sucht man erst mal und findet nur wenige vereinzelte die man privat kaufen kann.&lt;br /&gt;
&lt;br /&gt;
Oder auch die Unterstützung im Internet - ist bei einigen Exoten spärlich. Dieses Forum bietet die beste Hilfe für [[AVR]], PIC, [[STM32]] und [[MSP430]].&lt;br /&gt;
&lt;br /&gt;
Andere Prozessoren sind schon sehr alt, bzw. nicht mehr modern da deren Peripherie zum Teil doch recht eingeschränkte Funktionalität bietet. z.B. viele 8051 Typen oder PIC16. Die mögen für Mini-Anwenungen gut sein, aber wer will den schon gerne sich extra für eine Kleinanwendung mit einem kleinen µC auseinandersetzen, wenn er schon einen STM32 kennt, mit dem er alles machen kann (und sich bereits gute Funktionen geschrieben hat)?&lt;br /&gt;
&lt;br /&gt;
Daher mein Resümee: wer nicht gerade auf den Kopf gefallen ist, der kann getrost mit einem STM32 starten. Ein [http://www.st.com/web/en/catalog/tools/FM116/SC959/SS1532/PF252419?s_searchtype=keyword STM32F4DISCOVERY] Board kostet nur ca. 20 EUR - und mehr muss für den ersten Start nicht investiert werden - wenn es doch zu komplex sein sollte gibt es hier im Forum auch Hilfe oder man nimmt erst mal ein &amp;quot;Arduino&amp;quot;. Jedenfalls sind diese 20 EUR wirklich keine große Investition.&lt;br /&gt;
&lt;br /&gt;
= Weblinks, Foren, Communities, Tutorials =&lt;br /&gt;
* [[STM32]] Hauptartikel, [http://www.mikrocontroller.net/articles/STM32#Weblinks.2C_Foren.2C_Communities.2C_Tutorials dortige Linksammlung]&lt;br /&gt;
* [http://www.mikrocontroller.net/topic/319328 Diskussion zum Artikel]&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>Frank m35</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=STM32_f%C3%BCr_Einsteiger&amp;diff=80314</id>
		<title>STM32 für Einsteiger</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=STM32_f%C3%BCr_Einsteiger&amp;diff=80314"/>
		<updated>2013-12-30T21:14:11Z</updated>

		<summary type="html">&lt;p&gt;Frank m35: /* Eigene Fähigkeiten und Wünsche */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Immer wiederkehrend hier im Forum &amp;quot;Mit welchem Mikrocontroller anfangen?&amp;quot;. Es gibt eine große Auswahl und eben so viele Empfehlungen. In diesem Artikel soll zu erst geholfen werden ob ein STM32-Prozessor mit Cortex-M3/M4 Kern überhaupt der Richtige für den Start ist.&lt;br /&gt;
Nicht für jeden ist der STM32 zu empfehlen, denn die Anforderungen und Wünsche die man realisieren möchte, sowie die eigenen Fähigkeiten sind verschieden.&lt;br /&gt;
&lt;br /&gt;
Es werden meist die Prozessoren AVR, PIC, Arduino, MSP430 und STM32 empfohlen. Seltener auch 8051, LPC und M16C. Alle haben Vorzüge und ebenso auch Nachteile.&lt;br /&gt;
&lt;br /&gt;
= Eigene Fähigkeiten und Wünsche =&lt;br /&gt;
&lt;br /&gt;
Dieser Artikel geht davon aus, dass bereits Elektronik Kenntnisse vorhanden sind. Wenn nicht dann sollte man erst einmal den Artikel &amp;quot;[[Absolute Beginner]]&amp;quot; durcharbeiten, sowie die anderen Artikel aus der Kategorie &amp;quot;[http://www.mikrocontroller.net/articles/Kategorie:Grundlagen Grundlagen]&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Zu erst einmal die Randbedingungen, mit der man sich selbst zu erst einmal einschätzen sollte:&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|- bgcolor=&amp;quot;#d0d0ff&amp;quot;&lt;br /&gt;
! Fähigkeit || Empfehlung [[STM32]] || Empfehlung [[AVR]] || Empfehlung PIC || Empfehlung [[MSP430]] || Empfehlung Arduino&lt;br /&gt;
|-&lt;br /&gt;
| Neueinsteiger, kaum Elektronikkenntnisse, noch nie programmiert || align=&amp;quot;center&amp;quot;|O || align=&amp;quot;center&amp;quot;|O [http://www.rn-wissen.de/index.php/AVR-Einstieg_leicht_gemacht] [http://www.avr-asm-tutorial.net/avr_de/] || align=&amp;quot;center&amp;quot;|O [http://www.sprut.de/] || align=&amp;quot;center&amp;quot;|O || align=&amp;quot;center&amp;quot;|x&lt;br /&gt;
|-&lt;br /&gt;
| Wunsch ist SD-Card oder Grafik-Display || align=&amp;quot;center&amp;quot;|x || align=&amp;quot;center&amp;quot;|x || align=&amp;quot;center&amp;quot;|x [http://www.microchip.com/stellent/idcplg?IdcService=SS_GET_PAGE&amp;amp;nodeId=2680&amp;amp;dDocName=en537999] [http://www.microchip.com/pagehandler/en-us/technology/graphics/] || align=&amp;quot;center&amp;quot;|x || align=&amp;quot;center&amp;quot;|x&lt;br /&gt;
|-&lt;br /&gt;
| Wunsch ist TCP/IP Netzwerk oder Kamera|| align=&amp;quot;center&amp;quot;|x || align=&amp;quot;center&amp;quot;|O || align=&amp;quot;center&amp;quot;|x [http://www.microchip.com/stellent/idcplg?IdcService=SS_GET_PAGE&amp;amp;nodeId=2505&amp;amp;param=en535724] || align=&amp;quot;center&amp;quot;|O || align=&amp;quot;center&amp;quot;|O&lt;br /&gt;
|-&lt;br /&gt;
| Möchte die Erkenntnisse beruflich nutzen|| align=&amp;quot;center&amp;quot;|x || align=&amp;quot;center&amp;quot;|x || align=&amp;quot;center&amp;quot;|x || align=&amp;quot;center&amp;quot;|x || align=&amp;quot;center&amp;quot;|-&lt;br /&gt;
|-&lt;br /&gt;
| Strom sparende Anwendungen|| align=&amp;quot;center&amp;quot;|O || align=&amp;quot;center&amp;quot;|x [http://www.atmel.com/technologies/lowpower/default.aspx] || align=&amp;quot;center&amp;quot;|x [http://www.microchip.com/pagehandler/en-us/technology/xlp/] || align=&amp;quot;center&amp;quot;|x || align=&amp;quot;center&amp;quot;|-&lt;br /&gt;
|-&lt;br /&gt;
| Experimentieren mit Multithreading, RTOS, Schedulern || align=&amp;quot;center&amp;quot;|x || align=&amp;quot;center&amp;quot;|O [http://www.freertos.org/a00098.html] [http://www.femtoos.org/] || align=&amp;quot;center&amp;quot;|O [http://www.microchip.com/stellent/idcplg?IdcService=SS_GET_PAGE&amp;amp;nodeId=1406&amp;amp;dDocName=en531543&amp;amp;redirects=rtos] || align=&amp;quot;center&amp;quot;|- || align=&amp;quot;center&amp;quot;|-&lt;br /&gt;
|-&lt;br /&gt;
| Besonders große, speicherintensive Programme&amp;lt;br&amp;gt;z.B. Grafiken, Fonts || align=&amp;quot;center&amp;quot;|bis 2MB Flash&amp;lt;br&amp;gt;bis 256kB SRAM || align=&amp;quot;center&amp;quot;|bis 256kB Flash&amp;lt;br&amp;gt;bis 16kB SRAM || align=&amp;quot;center&amp;quot;|bis 2MB Flash&amp;lt;br&amp;gt;bis ? kB SRAM || align=&amp;quot;center&amp;quot;|bis 512KB Flash&amp;lt;br&amp;gt;bis ? kB SRAM || align=&amp;quot;center&amp;quot;|bis 256kB Flash&amp;lt;br&amp;gt;bis 16kB SRAM&lt;br /&gt;
|-&lt;br /&gt;
| Sehr viel PWM mit komplexem Timing || align=&amp;quot;center&amp;quot;|x || align=&amp;quot;center&amp;quot;|bedingt, AT90Spwm || align=&amp;quot;center&amp;quot;|O || align=&amp;quot;center&amp;quot;|O || align=&amp;quot;center&amp;quot;|-&lt;br /&gt;
|-&lt;br /&gt;
| Deutschsprachige Community || align=&amp;quot;center&amp;quot;|O || align=&amp;quot;center&amp;quot;|x || align=&amp;quot;center&amp;quot;|O || align=&amp;quot;center&amp;quot;|- || align=&amp;quot;center&amp;quot;|x&lt;br /&gt;
|-&lt;br /&gt;
| Anzahl möglicher HW-Breakpoints || align=&amp;quot;center&amp;quot;|4 bis 6 || align=&amp;quot;center&amp;quot;|2 || align=&amp;quot;center&amp;quot;| 1 bis 10 [http://www.microchip.com/stellent/groups/SiteComm_sg/documents/DeviceDoc/en556761.pdf] || align=&amp;quot;center&amp;quot;|2 || align=&amp;quot;center&amp;quot;|2&lt;br /&gt;
|}&lt;br /&gt;
* x = ja&lt;br /&gt;
* O = Teilweise, Einschränkungen&lt;br /&gt;
* - = nicht empfohlen&lt;br /&gt;
* ? = Bitte ergänzen&lt;br /&gt;
&lt;br /&gt;
Nur um nicht zu verwirren, auch wenn Teile &amp;quot;nicht empfohlen&amp;quot; sind, heißt dass nicht dass es mit dem Prozessor nicht geht, vielmehr dass es mehr Aufwand ist das zu realisieren oder mehr Einschränkungen hat.&lt;br /&gt;
&lt;br /&gt;
= Unwichtige Randbedingungen =&lt;br /&gt;
&lt;br /&gt;
Oftmals werden fälschlicherweise Argumente für oder gegen eine µC-Familie ausgesprochen, die in der Praxis &#039;&#039;&#039;zum Einstieg&#039;&#039;&#039; (bei konkreten Anwendungen kann das anders aussehen) eher unwichtig sind.&lt;br /&gt;
&lt;br /&gt;
* Spannungsversorgung 3,3V / 5V&lt;br /&gt;
* 8 (z.B. [[AVR]]), 16 (z.B. [[MSP430]]) oder 32 (z.B. [[STM32]]) Bit&lt;br /&gt;
* Interrupt System mit mehr oder weniger Features&lt;br /&gt;
* Programmiersprache (Assembler, Basic, C, C++, Pascal)&lt;br /&gt;
* Assembler verstehen (Sollte nur theoretisch verstanden werden, ein Programm sollte in einer Hochsprache geschrieben sein)&lt;br /&gt;
* DIL Gehäuse - steckbretttauglich (STM32-Prozessoren gibt es auch fertig gelötet auf einem steckbretttauglichen Board zum fünffachen Preis vergleichbarer DIL Mikrocontroller)&lt;br /&gt;
* Programmieradapter&lt;br /&gt;
* zu 90% reicht doch ein kleiner Prozessor ([[AVR]]/PIC) - und für die restlichen kann man immer noch einen großen nehmen. Warum also nicht gleich einen großen nehmen?&lt;br /&gt;
&lt;br /&gt;
= Kosten =&lt;br /&gt;
&lt;br /&gt;
Grobe Abschätzung was das alles denn kosten wird. Hier sind nur einige Beispiele gezeigt.&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|- bgcolor=&amp;quot;#d0d0ff&amp;quot;&lt;br /&gt;
! Board || [[STM32]] || [[AVR]] || PIC18/24/32 || [[MSP430]] || Arduino&lt;br /&gt;
|-&lt;br /&gt;
| Demo-Board || align=&amp;quot;center&amp;quot;|[http://www.st.com/web/en/catalog/tools/FM116/SC959/SS1532/PF252419] 9..20€ (incl. Programmieradapter und Debugger) || align=&amp;quot;center&amp;quot;|5..500€, z.B. Arduino || align=&amp;quot;center&amp;quot;| [http://www.microchipdirect.com/ProductDetails.aspx?Catalog=BuyMicrochip&amp;amp;Category=Starter%20Kits&amp;amp;mid=1&amp;amp;lmid=610 durchschnittlich 18€ .. 50€] || align=&amp;quot;center&amp;quot;|[http://www.ti.com/tool/msp-exp430fr5739] ~35€ || align=&amp;quot;center&amp;quot;|20€&lt;br /&gt;
|-&lt;br /&gt;
| Steckbrettaugliches Board || align=&amp;quot;center&amp;quot;| s.o. oder [http://re.reworld.eu/de/produkte/s64dil-405/index.htm S64DIL-405] 30€ || align=&amp;quot;center&amp;quot;|2-5€ als einzelner IC || align=&amp;quot;center&amp;quot;|2-5€ als einzelner IC || align=&amp;quot;center&amp;quot;|?? || align=&amp;quot;center&amp;quot;|??&lt;br /&gt;
|-&lt;br /&gt;
| Programmieradapter mit Debugger || align=&amp;quot;center&amp;quot;| s.o. oder z.B [http://www.segger.com/j-link-edu.html Segger J-LINK EDU] 50€ (sehr schnell und unterstützt viele Prozessoren) || align=&amp;quot;center&amp;quot;|?? || align=&amp;quot;center&amp;quot;|PICkit 3 30€ [http://www.microchipdirect.com/ProductSearch.aspx?keywords=PG164130] || align=&amp;quot;center&amp;quot;|z.B. Dragon 50€ || align=&amp;quot;center&amp;quot;|20€ (Man muss DebugWire aktivieren)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Das Demo-Board sollte ein Board sein, nicht zu teuer, um die ersten Erfahrungen zu sammeln. Wenn einem der Prozessor gefällt, so kann man später immer noch mit einem zweiten Demo-Board, z.B. mit Display aufrüsten.&lt;br /&gt;
&lt;br /&gt;
Wenn man gerne mit einem Steckbrett sich die Schaltung zusammen stecken möchte, so kann man entweder die benötigten Drähte am Demo-Board anlöten oder bei z.B. [[AVR]]/[[PIC]] Prozessoren gibt es Ausführungen im DIL Gehäuse, die direkt steckbar sind.&lt;br /&gt;
&lt;br /&gt;
Ein Programmieradapter sollte unbedingt auch einen Debugger beinhalten. Denn für den Start ist es ungemein hilfreich zu sehen was im Prozessor gerade geschieht. Die JTAG-Adapter für einen [[STM32]] Prozessor sind alle Debugger-Tauglich. Für einen [[AVR]] oder [[PIC]] Prozessor gibt es auch oft reine Programmer (oft Selbstbau-Lösungen über die serielle oder parallele Schnittstelle) welche den Mikrocontroller nur beschreiben können. Sinvoller sind hingegen Debugger (bspw. PIC Kit 3 [http://www.microchipdirect.com/ProductSearch.aspx?keywords=PG164130] kompatibel zu allen PIC Mikrocontrollern), die die Ausführung eines Mikrocontrollers anhalten können um die aktuelle Position im Programmcode, Variableninhalt, Register, ... auszulesen bzw. zur Laufzeit zu ändern.&lt;br /&gt;
&lt;br /&gt;
Der für den [[STM32]] empfohlene Segger J-LINK EDU ist zwar nicht der günstigste (z.B. auf einem STM32F4DISCOVERY Borad ist auch einer drauf den man für andere STM32 nutzen kann) aber eines der besten, mit sehr guten Software-Tools und nutzbar für alle Prozessoren mit ARM-Kern (ARM7/9/11/... Cortex-Mx). Niemals am Werkzeug sparen und man hat viel mehr Freude bei der Arbeit.&lt;br /&gt;
&lt;br /&gt;
Der &amp;quot;Arduino&amp;quot; ist kein eigenständiger Prozessor, sondern ein fertiges Board mit einer &amp;quot;Arduino&amp;quot; Programmierumgebung (und einem AVR Prozessor), extra geschaffen für Einsteiger. Allerdings ist da der Lerneffekt viel geringer da man den Prozessor mit der Arduino-Software programmiert und nicht direkt die Register.&lt;br /&gt;
&lt;br /&gt;
Ein [[PIC16]] ist ein älterer 8-Bit Mikrocontroller, der durch die [[PIC18]] Reihe abgelöst wurde. Werden komplexere Anforderungen in Zukunft an den Mikrocontroller gestellt (Audio, Grafik), so sollte zu den moderneren [[PIC24]] bzw. [[dsPIC]] (16-Bit) oder gar zu [[PIC32]] (32-Bit MIPS Prozessor) gegriffen werden, wobei letzterer von der Performance vergleichbar mit den STM32 ARM-basierten Mikrocontrollern ist.&lt;br /&gt;
&lt;br /&gt;
= Programmierumgebungen=&lt;br /&gt;
&lt;br /&gt;
Bei den Programmierumgebungen gibt es zu allen Prozessorfamilien kostenlose und Leistungsfähige Software&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|- bgcolor=&amp;quot;#d0d0ff&amp;quot;&lt;br /&gt;
! [[STM32]] || [[AVR]] || PIC || [[MSP430]] || Arduino&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot;|[http://www.coocox.org/CooCox_CoIDE.htm CooCox] || align=&amp;quot;center&amp;quot;|Atmel-Studio || align=&amp;quot;center&amp;quot;|[http://www.microchip.com/pagehandler/en-us/family/mplabx/ MPALB X] (IDE inklusive compiler) || align=&amp;quot;center&amp;quot;|?? || align=&amp;quot;center&amp;quot;|arduino 1.0.5&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
natürlich gibt es noch viele weitere (für STM32 siehe [[STM32#Programmierung]]), es sollte jedoch nur die einfachsten kostenlose (und ohne Codebegrenzung) für den ersten Einstieg gezeigt werden.&lt;br /&gt;
&lt;br /&gt;
* CooCox Anleitung wie man innerhalb einer Stunde die LED eines Nagel neuen STM32F4DISCOVERY Boards zum blinken bekommt, Artikel: [[STM32 CooCox Installation]]. Diese Anleitung ist eine Schritt-Für-Schritt Anleitung um den aller ersten Start zu vereinfachen.&lt;br /&gt;
&lt;br /&gt;
= Dokumentation=&lt;br /&gt;
&lt;br /&gt;
Bevor man sich für einen Prozessor entscheidet sollte man unbedingt deren Dokumentation mal zumindest überfliegen und auch deren Errata&#039;s lesen. Nicht dass man eine Anwendung erstellen möchte und stellt hinterher fest, dass genau dieser Teil so buggy ist das er nicht genutzt werden kann.&lt;br /&gt;
&lt;br /&gt;
Beim [[STM32]] hat die Dokumentation doch recht viele Seiten, viel mehr als bei einem [[AVR]] oder PIC. Dabei ist vieles eher knapp beschrieben, man muss mehr suchen als z.B. bei den AVR-Dokus, um die gewünschten Informationen zu finden. Außerdem gibt es durchaus einige Unklarheiten und Fehler/Widersprüche. Schlussendlich ist es Geschmackssache mit welcher Doku von welchem Hersteller man sich besser zurecht findet.&lt;br /&gt;
&lt;br /&gt;
Bei den PICs gibt es zu jedem Mikrocontroller ein Datenblatt das die wichtigsten Informationen für den alltäglichen Gebrauch enthält. Da bestimmte Peripherie (bspw. I2C, SPI, ... ) aber sehr komplex ist und innerhalb einer Familie (PIC16/18/24/32) sich identisch verhält, gibt es zu jeder Familie die sogenannten Family-Datasheets, welche alle Module im Detail beschreiben.&lt;br /&gt;
&lt;br /&gt;
Parallel zur Dokumentation sollte man sich auch die Demo-Beispiele der Hersteller anschauen, dann wird vieles gleich verständlicher.&lt;br /&gt;
&lt;br /&gt;
Eine Übersicht über die Funktionen gibt es im Artikel: [[STM32]]&lt;br /&gt;
&lt;br /&gt;
= Die Arbeit mit dem STM32=&lt;br /&gt;
&lt;br /&gt;
Zu erst einmal SOOO groß sind die Unterschiede zwischen den einzelnen Prozessoren nicht. Alle haben Ein-/Ausgänge und um mittels einem Port-Pin eine LED ansteuern zu können muss bei jedem Prozessor der Pin erst einmal parametriert werden, egal ob das jetzt ein STM32 oder ein AVR oder ein MSP430 ist. Nur hat man bei einem STM32 doch einige Funktionen mehr, z.B. zuschaltbarer Pull-Up oder Pull-Down Widerstand und spezielle Setz-Rücksetzregister, die andere Prozessoren nicht haben, jedoch das programmieren vereinfachen.&lt;br /&gt;
Der Haupt-Unterschied zu den anderen Prozessoren ist, dass der [[STM32]] so viele Peripherie-Module beherbergt, dass man die einzeln immer mit einem Clock aktivieren muss, denn damit lässt sich viel Strom sparen.&lt;br /&gt;
&lt;br /&gt;
Und mal ganz ehrlich die Diskussion welcher µc einfacher zu konfigurieren ist, ist doch absoluter Unsinn. Der Weg ist immer der Gleiche:&lt;br /&gt;
*1. Blick ins Datenblatt welche Register für diese Funktion benötigt werden.&lt;br /&gt;
*2. Werte ermitteln die in die Register eingetragen werden.&lt;br /&gt;
*3. Werte ins Register schreiben. Da machte es GAR KEINEN UNTERSCHIED ob es ein [[AVR]], 8051/2, ARM,...... ist.&lt;br /&gt;
&lt;br /&gt;
Stimmt schon es gibt Unterschiede. Die Register haben anderen Namen, andere Adressen, andere Bitbedeutungen,...&lt;br /&gt;
Aber es steht doch alles im Datenblatt. Und ob ich jetzt einen [[AVR]] oder einen ARM das erste mal vor mir liegen hab. Ich brauch in allen Fällen die oben beschriebenen Schritte.&lt;br /&gt;
&lt;br /&gt;
Das Interruptsystem ist bei einem STM32 zusätzlich priorisiert, damit kann man festlegen welcher Interrupt vorrangig bearbeitet wird. Die Prioritätenvergabe ist auch kein Hexenwerk.&lt;br /&gt;
&lt;br /&gt;
Zu allen Prozessoren liefern die jeweiligen Hersteller umfangreiche Demo-Codes und Libraries mit. Meist sind alle in C geschrieben, daher sollte auch die Programmiersprache C verwendet werden. Vor allem auch wenn man berufliche Absichten verfolgt.&lt;br /&gt;
&lt;br /&gt;
Und wenn man einen STM32 kann, dann ist ein Umstieg auf einen LPC17xx (NXP) oder andere Hersteller überhaupt kein Problem (*), denn die bieten ebenfalls Prozessoren mit Cortex-M3 Kern und man kann diese mit der gleichen Programmierumgebung programmieren. Somit ist man nicht zwingend Herstellerabhängig. (* jeder Hersteller verbaut seine eigene Peripherie, die andere Funktionalitäten haben.)&lt;br /&gt;
&lt;br /&gt;
Mit einem STM32 kann man als Hobby-Baster und Professionell nahezu alle Anwendungen realisieren. Der hat genügend RAM und FLASH Speicher und auch genügen Geschwindigkeit. Viele Gehäuse-Varianten um kleine bis hin zu größere Geräte zu erstellen. Viele Schnittstellen, sind im Artikel [[STM32]] beschrieben.&lt;br /&gt;
&lt;br /&gt;
Der einzige Nachteil beim STM32: man muss etwas mehr lesen, da eine Peripherie doch viel mehr Funktionalität hat. Ansonsten kenne ich nicht wirklich einen Grund warum man als Neueinsteiger keinen STM32 nehmen sollte.&lt;br /&gt;
&lt;br /&gt;
= Programmiersprachen =&lt;br /&gt;
* Wie bei vielen anderen Controllern wird beim STM32 auch hauptsächlich C und C++ verwendet. Kennen sollte man die Programmiersprache C schon, wenn man davon noch keine Ahnung hat dann sollte man erst mal mittels einem Tutorial auf einem PC ein Konsoleprogramm schreiben, sodass man es einigermaßen kennen lernt. Hier im Forum gibt es ebenfalls Artikel dazu. Zielt man auf die (spätere) Anwendung in der Industrie, sollte aufgrund der Verbreitung auf jeden Fall C (oder C++) gewählt werden; außerdem sind die meisten verfügbaren Libraries in C geschrieben.&lt;br /&gt;
* Assembler sollte man nur grob verstehen, Details wie ein Befehl arbeitet ist unwichtig. Selbst wenn man die Zyklen für einen Funktionsaufruf wissen will, so bietet der STM32 (Cortex-M3) einen Cycle-Counter den man auslesen kann; durch die komplexere Pipeline und Cache-Effekte sind die Laufzeiten allerdings nicht genau vorhersehbar. Wird zyklengenause Timing benötigt, sollten Timer verwendet werden - davon hat der STM32 genug.&lt;br /&gt;
&lt;br /&gt;
Der 32bit-Adressraum, der RAM, Flash, I/O-Register vereinheitlicht ansprechen kann (im Gegensatz zu z.B. AVR) ist ideal für eine Verwendung durch Hochsprachen; bei Pointern muss keine zusätzliche Information verwaltet werden, in welche Art Speicher sie zeigen. Die Adresse gibt dies eindeutig an (es gibt nur &#039;&#039;&#039;eine&#039;&#039;&#039; Adresse 42, und nicht 2 wie bei es für Harvard-Architekturen eigentlich typisch ist (Programmspeicher und Datenspeicher, also z.B. Flash und RAM/IO) und die Hardware spricht automatisch den richtigen Speicher an. Die Möglichkeiten zur Offset-Adressierung, der Barrel-Shifter, Divsions-Einheit, die FPU (bei STM32F4), Interrupt-Modell etc. begünstigen ebenfalls die Erzeugung effizienteren Codes. Außerdem haben die STM32 einfach mehr &amp;quot;rohe Leistung&amp;quot;, d.h. mehr Flash/RAM-Speicher und höhere Taktfrequenzen.&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Folgerung&#039;&#039;&#039;: Die Programmierung in Hochsprachen ist &#039;&#039;&#039;bequemer als bei 8-Bittern&#039;&#039;&#039;, denn man muss sich einfach weniger Gedanken machen, ob der Compiler ein Programm nun effizent umsetzen kann (kann man natürlich trotzdem machen, um noch mehr Leistung &amp;quot;herauszuquetschen&amp;quot;, wenn man will).&lt;br /&gt;
&lt;br /&gt;
= Weitere Randbedingungen für die Entscheidung=&lt;br /&gt;
&lt;br /&gt;
Der wichtige Punkt, der oftmals auch vergessen wird: die Beschaffbarkeit. Wenn jemand einen Renesas M16C oder Fujitsu empfiehlt, dann sucht man erst mal und findet nur wenige vereinzelte die man privat kaufen kann.&lt;br /&gt;
&lt;br /&gt;
Oder auch die Unterstützung im Internet - ist bei einigen Exoten spärlich. Dieses Forum bietet die beste Hilfe für [[AVR]], PIC, [[STM32]] und [[MSP430]].&lt;br /&gt;
&lt;br /&gt;
Andere Prozessoren sind schon sehr alt, bzw. nicht mehr modern da deren Peripherie zum Teil doch recht eingeschränkte Funktionalität bietet. z.B. viele 8051 Typen oder PIC16. Die mögen für Mini-Anwenungen gut sein, aber wer will den schon gerne sich extra für eine Kleinanwendung mit einem kleinen µC auseinandersetzen, wenn er schon einen STM32 kennt, mit dem er alles machen kann (und sich bereits gute Funktionen geschrieben hat)?&lt;br /&gt;
&lt;br /&gt;
Daher mein Resümee: wer nicht gerade auf den Kopf gefallen ist, der kann getrost mit einem STM32 starten. Ein [http://www.st.com/web/en/catalog/tools/FM116/SC959/SS1532/PF252419?s_searchtype=keyword STM32F4DISCOVERY] Board kostet nur ca. 20 EUR - und mehr muss für den ersten Start nicht investiert werden - wenn es doch zu komplex sein sollte gibt es hier im Forum auch Hilfe oder man nimmt erst mal ein &amp;quot;Arduino&amp;quot;. Jedenfalls sind diese 20 EUR wirklich keine große Investition.&lt;br /&gt;
&lt;br /&gt;
= Weblinks, Foren, Communities, Tutorials =&lt;br /&gt;
* [[STM32]] Hauptartikel, [http://www.mikrocontroller.net/articles/STM32#Weblinks.2C_Foren.2C_Communities.2C_Tutorials dortige Linksammlung]&lt;br /&gt;
* [http://www.mikrocontroller.net/topic/319328 Diskussion zum Artikel]&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>Frank m35</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=STM32_f%C3%BCr_Einsteiger&amp;diff=80309</id>
		<title>STM32 für Einsteiger</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=STM32_f%C3%BCr_Einsteiger&amp;diff=80309"/>
		<updated>2013-12-30T20:59:22Z</updated>

		<summary type="html">&lt;p&gt;Frank m35: /* Eigene Fähigkeiten und Wünsche */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Immer wiederkehrend hier im Forum &amp;quot;Mit welchem Mikrocontroller anfangen?&amp;quot;. Es gibt eine große Auswahl und eben so viele Empfehlungen. In diesem Artikel soll zu erst geholfen werden ob ein STM32-Prozessor mit Cortex-M3/M4 Kern überhaupt der Richtige für den Start ist.&lt;br /&gt;
Nicht für jeden ist der STM32 zu empfehlen, denn die Anforderungen und Wünsche die man realisieren möchte, sowie die eigenen Fähigkeiten sind verschieden.&lt;br /&gt;
&lt;br /&gt;
Es werden meist die Prozessoren AVR, PIC, Arduino, MSP430 und STM32 empfohlen. Seltener auch 8051, LPC und M16C. Alle haben Vorzüge und ebenso auch Nachteile.&lt;br /&gt;
&lt;br /&gt;
= Eigene Fähigkeiten und Wünsche =&lt;br /&gt;
&lt;br /&gt;
Dieser Artikel geht davon aus, dass bereits Elektronik Kenntnisse vorhanden sind. Wenn nicht dann sollte man erst einmal den Artikel &amp;quot;[[Absolute Beginner]]&amp;quot; durcharbeiten, sowie die anderen Artikel aus der Kategorie &amp;quot;[http://www.mikrocontroller.net/articles/Kategorie:Grundlagen Grundlagen]&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Zu erst einmal die Randbedingungen, mit der man sich selbst zu erst einmal einschätzen sollte:&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|- bgcolor=&amp;quot;#d0d0ff&amp;quot;&lt;br /&gt;
! Fähigkeit || Empfehlung [[STM32]] || Empfehlung [[AVR]] || Empfehlung PIC || Empfehlung [[MSP430]] || Empfehlung Arduino&lt;br /&gt;
|-&lt;br /&gt;
| Neueinsteiger, kaum Elektronikkenntnisse, noch nie programmiert || align=&amp;quot;center&amp;quot;|O || align=&amp;quot;center&amp;quot;|O [http://www.rn-wissen.de/index.php/AVR-Einstieg_leicht_gemacht] [http://www.avr-asm-tutorial.net/avr_de/] || align=&amp;quot;center&amp;quot;|O [http://www.sprut.de/] || align=&amp;quot;center&amp;quot;|O || align=&amp;quot;center&amp;quot;|x&lt;br /&gt;
|-&lt;br /&gt;
| Wunsch ist SD-Card oder Grafik-Display || align=&amp;quot;center&amp;quot;|x || align=&amp;quot;center&amp;quot;|x || align=&amp;quot;center&amp;quot;|x [http://www.microchip.com/stellent/idcplg?IdcService=SS_GET_PAGE&amp;amp;nodeId=2680&amp;amp;dDocName=en537999] [http://www.microchip.com/pagehandler/en-us/technology/graphics/] || align=&amp;quot;center&amp;quot;|x || align=&amp;quot;center&amp;quot;|x&lt;br /&gt;
|-&lt;br /&gt;
| Wunsch ist TCP/IP Netzwerk oder Kamera|| align=&amp;quot;center&amp;quot;|x || align=&amp;quot;center&amp;quot;|O || align=&amp;quot;center&amp;quot;|x [http://www.microchip.com/stellent/idcplg?IdcService=SS_GET_PAGE&amp;amp;nodeId=2505&amp;amp;param=en535724] || align=&amp;quot;center&amp;quot;|O || align=&amp;quot;center&amp;quot;|O&lt;br /&gt;
|-&lt;br /&gt;
| Möchte die Erkenntnisse beruflich nutzen|| align=&amp;quot;center&amp;quot;|x || align=&amp;quot;center&amp;quot;|x || align=&amp;quot;center&amp;quot;|x || align=&amp;quot;center&amp;quot;|x || align=&amp;quot;center&amp;quot;|-&lt;br /&gt;
|-&lt;br /&gt;
| Strom sparende Anwendungen|| align=&amp;quot;center&amp;quot;|O || align=&amp;quot;center&amp;quot;|x [http://www.atmel.com/technologies/lowpower/default.aspx] || align=&amp;quot;center&amp;quot;|x [http://www.microchip.com/pagehandler/en-us/technology/xlp/] || align=&amp;quot;center&amp;quot;|x || align=&amp;quot;center&amp;quot;|-&lt;br /&gt;
|-&lt;br /&gt;
| Experimentieren mit Multithreading, RTOS, Schedulern || align=&amp;quot;center&amp;quot;|x || align=&amp;quot;center&amp;quot;|O [http://www.freertos.org/a00098.html] [http://www.femtoos.org/] || align=&amp;quot;center&amp;quot;|O [http://www.microchip.com/stellent/idcplg?IdcService=SS_GET_PAGE&amp;amp;nodeId=1406&amp;amp;dDocName=en531543&amp;amp;redirects=rtos] || align=&amp;quot;center&amp;quot;|- || align=&amp;quot;center&amp;quot;|-&lt;br /&gt;
|-&lt;br /&gt;
| Besonders große, speicherintensive Programme&amp;lt;br&amp;gt;z.B. Grafiken, Fonts || align=&amp;quot;center&amp;quot;|x&amp;lt;br&amp;gt;bis 2MB Flash || align=&amp;quot;center&amp;quot;|bedingt, z.B. XMega&amp;lt;br&amp;gt;bis ??KB FLASH || align=&amp;quot;center&amp;quot;|x&amp;lt;br&amp;gt;bis 2MB FLASH || align=&amp;quot;center&amp;quot;|O&amp;lt;br&amp;gt;bis 512KB FLASH || align=&amp;quot;center&amp;quot;|-&lt;br /&gt;
|-&lt;br /&gt;
| Sehr viel PWM mit komplexem Timing || align=&amp;quot;center&amp;quot;|x || align=&amp;quot;center&amp;quot;|bedingt, AT90Spwm || align=&amp;quot;center&amp;quot;|O || align=&amp;quot;center&amp;quot;|O || align=&amp;quot;center&amp;quot;|-&lt;br /&gt;
|-&lt;br /&gt;
| Deutschsprachige Community || align=&amp;quot;center&amp;quot;|O || align=&amp;quot;center&amp;quot;|x || align=&amp;quot;center&amp;quot;|O || align=&amp;quot;center&amp;quot;|- || align=&amp;quot;center&amp;quot;|x&lt;br /&gt;
|-&lt;br /&gt;
| Anzahl möglicher HW-Breakpoints || align=&amp;quot;center&amp;quot;|6 || align=&amp;quot;center&amp;quot;|2 || align=&amp;quot;center&amp;quot;| 1 bis 10 [http://www.microchip.com/stellent/groups/SiteComm_sg/documents/DeviceDoc/en556761.pdf] || align=&amp;quot;center&amp;quot;|2 || align=&amp;quot;center&amp;quot;|2&lt;br /&gt;
|}&lt;br /&gt;
* x = ja&lt;br /&gt;
* O = Teilweise, Einschränkungen&lt;br /&gt;
* - = nicht empfohlen&lt;br /&gt;
* ? = Bitte ergänzen&lt;br /&gt;
&lt;br /&gt;
Nur um nicht zu verwirren, auch wenn Teile &amp;quot;nicht empfohlen&amp;quot; sind, heißt dass nicht dass es mit dem Prozessor nicht geht, vielmehr dass es mehr Aufwand ist das zu realisieren oder mehr Einschränkungen hat.&lt;br /&gt;
&lt;br /&gt;
= Unwichtige Randbedingungen =&lt;br /&gt;
&lt;br /&gt;
Oftmals werden fälschlicherweise Argumente für oder gegen eine µC-Familie ausgesprochen, die in der Praxis &#039;&#039;&#039;zum Einstieg&#039;&#039;&#039; (bei konkreten Anwendungen kann das anders aussehen) eher unwichtig sind.&lt;br /&gt;
&lt;br /&gt;
* Spannungsversorgung 3,3V / 5V&lt;br /&gt;
* 8 (z.B. [[AVR]]), 16 (z.B. [[MSP430]]) oder 32 (z.B. [[STM32]]) Bit&lt;br /&gt;
* Interrupt System mit mehr oder weniger Features&lt;br /&gt;
* Programmiersprache (Assembler, Basic, C, C++, Pascal)&lt;br /&gt;
* Assembler verstehen (Sollte nur theoretisch verstanden werden, ein Programm sollte in einer Hochsprache geschrieben sein)&lt;br /&gt;
* DIL Gehäuse - steckbretttauglich (STM32-Prozessoren gibt es auch fertig gelötet auf einem steckbretttauglichen Board zum fünffachen Preis vergleichbarer DIL Mikrocontroller)&lt;br /&gt;
* Programmieradapter&lt;br /&gt;
* zu 90% reicht doch ein kleiner Prozessor ([[AVR]]/PIC) - und für die restlichen kann man immer noch einen großen nehmen. Warum also nicht gleich einen großen nehmen?&lt;br /&gt;
&lt;br /&gt;
= Kosten =&lt;br /&gt;
&lt;br /&gt;
Grobe Abschätzung was das alles denn kosten wird. Hier sind nur einige Beispiele gezeigt.&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|- bgcolor=&amp;quot;#d0d0ff&amp;quot;&lt;br /&gt;
! Board || [[STM32]] || [[AVR]] || PIC18/24/32 || [[MSP430]] || Arduino&lt;br /&gt;
|-&lt;br /&gt;
| Demo-Board || align=&amp;quot;center&amp;quot;|[http://www.st.com/web/en/catalog/tools/FM116/SC959/SS1532/PF252419] 9..20€ (incl. Programmieradapter und Debugger) || align=&amp;quot;center&amp;quot;|5..500€, z.B. Arduino || align=&amp;quot;center&amp;quot;| [http://www.microchipdirect.com/ProductDetails.aspx?Catalog=BuyMicrochip&amp;amp;Category=Starter%20Kits&amp;amp;mid=1&amp;amp;lmid=610 durchschnittlich 18€ .. 50€] || align=&amp;quot;center&amp;quot;|[http://www.ti.com/tool/msp-exp430fr5739] ~35€ || align=&amp;quot;center&amp;quot;|20€&lt;br /&gt;
|-&lt;br /&gt;
| Steckbrettaugliches Board || align=&amp;quot;center&amp;quot;| s.o. oder [http://re.reworld.eu/de/produkte/s64dil-405/index.htm S64DIL-405] 30€ || align=&amp;quot;center&amp;quot;|2-5€ als einzelner IC || align=&amp;quot;center&amp;quot;|2-5€ als einzelner IC || align=&amp;quot;center&amp;quot;|?? || align=&amp;quot;center&amp;quot;|??&lt;br /&gt;
|-&lt;br /&gt;
| Programmieradapter mit Debugger || align=&amp;quot;center&amp;quot;| s.o. oder z.B [http://www.segger.com/j-link-edu.html Segger J-LINK EDU] 50€ (sehr schnell und unterstützt viele Prozessoren) || align=&amp;quot;center&amp;quot;|?? || align=&amp;quot;center&amp;quot;|PICkit 3 30€ [http://www.microchipdirect.com/ProductSearch.aspx?keywords=PG164130] || align=&amp;quot;center&amp;quot;|z.B. Dragon 50€ || align=&amp;quot;center&amp;quot;|20€ (Man muss DebugWire aktivieren)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Das Demo-Board sollte ein Board sein, nicht zu teuer, um die ersten Erfahrungen zu sammeln. Wenn einem der Prozessor gefällt, so kann man später immer noch mit einem zweiten Demo-Board, z.B. mit Display aufrüsten.&lt;br /&gt;
&lt;br /&gt;
Wenn man gerne mit einem Steckbrett sich die Schaltung zusammen stecken möchte, so kann man entweder die benötigten Drähte am Demo-Board anlöten oder bei z.B. [[AVR]]/[[PIC]] Prozessoren gibt es Ausführungen im DIL Gehäuse, die direkt steckbar sind.&lt;br /&gt;
&lt;br /&gt;
Ein Programmieradapter sollte unbedingt auch einen Debugger beinhalten. Denn für den Start ist es ungemein hilfreich zu sehen was im Prozessor gerade geschieht. Die JTAG-Adapter für einen [[STM32]] Prozessor sind alle Debugger-Tauglich. Für einen [[AVR]] oder [[PIC]] Prozessor gibt es auch oft reine Programmer (oft Selbstbau-Lösungen über die serielle oder parallele Schnittstelle) welche den Mikrocontroller nur beschreiben können. Sinvoller sind hingegen Debugger (bspw. PIC Kit 3 [http://www.microchipdirect.com/ProductSearch.aspx?keywords=PG164130] kompatibel zu allen PIC Mikrocontrollern), die die Ausführung eines Mikrocontrollers anhalten können um die aktuelle Position im Programmcode, Variableninhalt, Register, ... auszulesen bzw. zur Laufzeit zu ändern.&lt;br /&gt;
&lt;br /&gt;
Der für den [[STM32]] empfohlene Segger J-LINK EDU ist zwar nicht der günstigste (z.B. auf einem STM32F4DISCOVERY Borad ist auch einer drauf den man für andere STM32 nutzen kann) aber eines der besten, mit sehr guten Software-Tools und nutzbar für alle Prozessoren mit ARM-Kern (ARM7/9/11/... Cortex-Mx). Niemals am Werkzeug sparen und man hat viel mehr Freude bei der Arbeit.&lt;br /&gt;
&lt;br /&gt;
Der &amp;quot;Arduino&amp;quot; ist kein eigenständiger Prozessor, sondern ein fertiges Board mit einer &amp;quot;Arduino&amp;quot; Programmierumgebung (und einem AVR Prozessor), extra geschaffen für Einsteiger. Allerdings ist da der Lerneffekt viel geringer da man den Prozessor mit der Arduino-Software programmiert und nicht direkt die Register.&lt;br /&gt;
&lt;br /&gt;
Ein [[PIC16]] ist ein älterer 8-Bit Mikrocontroller, der durch die [[PIC18]] Reihe abgelöst wurde. Werden komplexere Anforderungen in Zukunft an den Mikrocontroller gestellt (Audio, Grafik), so sollte zu den moderneren [[PIC24]] bzw. [[dsPIC]] (16-Bit) oder gar zu [[PIC32]] (32-Bit MIPS Prozessor) gegriffen werden, wobei letzterer von der Performance vergleichbar mit den STM32 ARM-basierten Mikrocontrollern ist.&lt;br /&gt;
&lt;br /&gt;
= Programmierumgebungen=&lt;br /&gt;
&lt;br /&gt;
Bei den Programmierumgebungen gibt es zu allen Prozessorfamilien kostenlose und Leistungsfähige Software&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|- bgcolor=&amp;quot;#d0d0ff&amp;quot;&lt;br /&gt;
! [[STM32]] || [[AVR]] || PIC || [[MSP430]] || Arduino&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot;|[http://www.coocox.org/CooCox_CoIDE.htm CooCox] || align=&amp;quot;center&amp;quot;|Atmel-Studio || align=&amp;quot;center&amp;quot;|[http://www.microchip.com/pagehandler/en-us/family/mplabx/ MPALB X] (IDE inklusive compiler) || align=&amp;quot;center&amp;quot;|?? || align=&amp;quot;center&amp;quot;|arduino 1.0.5&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
natürlich gibt es noch viele weitere (für STM32 siehe [[STM32#Programmierung]]), es sollte jedoch nur die einfachsten kostenlose (und ohne Codebegrenzung) für den ersten Einstieg gezeigt werden.&lt;br /&gt;
&lt;br /&gt;
* CooCox Anleitung wie man innerhalb einer Stunde die LED eines Nagel neuen STM32F4DISCOVERY Boards zum blinken bekommt, Artikel: [[STM32 CooCox Installation]]. Diese Anleitung ist eine Schritt-Für-Schritt Anleitung um den aller ersten Start zu vereinfachen.&lt;br /&gt;
&lt;br /&gt;
= Dokumentation=&lt;br /&gt;
&lt;br /&gt;
Bevor man sich für einen Prozessor entscheidet sollte man unbedingt deren Dokumentation mal zumindest überfliegen und auch deren Errata&#039;s lesen. Nicht dass man eine Anwendung erstellen möchte und stellt hinterher fest, dass genau dieser Teil so buggy ist das er nicht genutzt werden kann.&lt;br /&gt;
&lt;br /&gt;
Beim [[STM32]] hat die Dokumentation doch recht viele Seiten, viel mehr als bei einem [[AVR]] oder PIC. Dabei ist vieles eher knapp beschrieben, man muss mehr suchen als z.B. bei den AVR-Dokus, um die gewünschten Informationen zu finden. Außerdem gibt es durchaus einige Unklarheiten und Fehler/Widersprüche. Schlussendlich ist es Geschmackssache mit welcher Doku von welchem Hersteller man sich besser zurecht findet.&lt;br /&gt;
&lt;br /&gt;
Bei den PICs gibt es zu jedem Mikrocontroller ein Datenblatt das die wichtigsten Informationen für den alltäglichen Gebrauch enthält. Da bestimmte Peripherie (bspw. I2C, SPI, ... ) aber sehr komplex ist und innerhalb einer Familie (PIC16/18/24/32) sich identisch verhält, gibt es zu jeder Familie die sogenannten Family-Datasheets, welche alle Module im Detail beschreiben.&lt;br /&gt;
&lt;br /&gt;
Parallel zur Dokumentation sollte man sich auch die Demo-Beispiele der Hersteller anschauen, dann wird vieles gleich verständlicher.&lt;br /&gt;
&lt;br /&gt;
Eine Übersicht über die Funktionen gibt es im Artikel: [[STM32]]&lt;br /&gt;
&lt;br /&gt;
= Die Arbeit mit dem STM32=&lt;br /&gt;
&lt;br /&gt;
Zu erst einmal SOOO groß sind die Unterschiede zwischen den einzelnen Prozessoren nicht. Alle haben Ein-/Ausgänge und um mittels einem Port-Pin eine LED ansteuern zu können muss bei jedem Prozessor der Pin erst einmal parametriert werden, egal ob das jetzt ein STM32 oder ein AVR oder ein MSP430 ist. Nur hat man bei einem STM32 doch einige Funktionen mehr, z.B. zuschaltbarer Pull-Up oder Pull-Down Widerstand und spezielle Setz-Rücksetzregister, die andere Prozessoren nicht haben, jedoch das programmieren vereinfachen.&lt;br /&gt;
Der Haupt-Unterschied zu den anderen Prozessoren ist, dass der [[STM32]] so viele Peripherie-Module beherbergt, dass man die einzeln immer mit einem Clock aktivieren muss, denn damit lässt sich viel Strom sparen.&lt;br /&gt;
&lt;br /&gt;
Und mal ganz ehrlich die Diskussion welcher µc einfacher zu konfigurieren ist, ist doch absoluter Unsinn. Der Weg ist immer der Gleiche:&lt;br /&gt;
*1. Blick ins Datenblatt welche Register für diese Funktion benötigt werden.&lt;br /&gt;
*2. Werte ermitteln die in die Register eingetragen werden.&lt;br /&gt;
*3. Werte ins Register schreiben. Da machte es GAR KEINEN UNTERSCHIED ob es ein [[AVR]], 8051/2, ARM,...... ist.&lt;br /&gt;
&lt;br /&gt;
Stimmt schon es gibt Unterschiede. Die Register haben anderen Namen, andere Adressen, andere Bitbedeutungen,...&lt;br /&gt;
Aber es steht doch alles im Datenblatt. Und ob ich jetzt einen [[AVR]] oder einen ARM das erste mal vor mir liegen hab. Ich brauch in allen Fällen die oben beschriebenen Schritte.&lt;br /&gt;
&lt;br /&gt;
Das Interruptsystem ist bei einem STM32 zusätzlich priorisiert, damit kann man festlegen welcher Interrupt vorrangig bearbeitet wird. Die Prioritätenvergabe ist auch kein Hexenwerk.&lt;br /&gt;
&lt;br /&gt;
Zu allen Prozessoren liefern die jeweiligen Hersteller umfangreiche Demo-Codes und Libraries mit. Meist sind alle in C geschrieben, daher sollte auch die Programmiersprache C verwendet werden. Vor allem auch wenn man berufliche Absichten verfolgt.&lt;br /&gt;
&lt;br /&gt;
Und wenn man einen STM32 kann, dann ist ein Umstieg auf einen LPC17xx (NXP) oder andere Hersteller überhaupt kein Problem (*), denn die bieten ebenfalls Prozessoren mit Cortex-M3 Kern und man kann diese mit der gleichen Programmierumgebung programmieren. Somit ist man nicht zwingend Herstellerabhängig. (* jeder Hersteller verbaut seine eigene Peripherie, die andere Funktionalitäten haben.)&lt;br /&gt;
&lt;br /&gt;
Mit einem STM32 kann man als Hobby-Baster und Professionell nahezu alle Anwendungen realisieren. Der hat genügend RAM und FLASH Speicher und auch genügen Geschwindigkeit. Viele Gehäuse-Varianten um kleine bis hin zu größere Geräte zu erstellen. Viele Schnittstellen, sind im Artikel [[STM32]] beschrieben.&lt;br /&gt;
&lt;br /&gt;
Der einzige Nachteil beim STM32: man muss etwas mehr lesen, da eine Peripherie doch viel mehr Funktionalität hat. Ansonsten kenne ich nicht wirklich einen Grund warum man als Neueinsteiger keinen STM32 nehmen sollte.&lt;br /&gt;
&lt;br /&gt;
= Programmiersprachen =&lt;br /&gt;
* Wie bei vielen anderen Controllern wird beim STM32 auch hauptsächlich C und C++ verwendet. Kennen sollte man die Programmiersprache C schon, wenn man davon noch keine Ahnung hat dann sollte man erst mal mittels einem Tutorial auf einem PC ein Konsoleprogramm schreiben, sodass man es einigermaßen kennen lernt. Hier im Forum gibt es ebenfalls Artikel dazu. Zielt man auf die (spätere) Anwendung in der Industrie, sollte aufgrund der Verbreitung auf jeden Fall C (oder C++) gewählt werden; außerdem sind die meisten verfügbaren Libraries in C geschrieben.&lt;br /&gt;
* Assembler sollte man nur grob verstehen, Details wie ein Befehl arbeitet ist unwichtig. Selbst wenn man die Zyklen für einen Funktionsaufruf wissen will, so bietet der STM32 (Cortex-M3) einen Cycle-Counter den man auslesen kann; durch die komplexere Pipeline und Cache-Effekte sind die Laufzeiten allerdings nicht genau vorhersehbar. Wird zyklengenause Timing benötigt, sollten Timer verwendet werden - davon hat der STM32 genug.&lt;br /&gt;
&lt;br /&gt;
Der 32bit-Adressraum, der RAM, Flash, I/O-Register vereinheitlicht ansprechen kann (im Gegensatz zu z.B. AVR) ist ideal für eine Verwendung durch Hochsprachen; bei Pointern muss keine zusätzliche Information verwaltet werden, in welche Art Speicher sie zeigen. Die Adresse gibt dies eindeutig an (es gibt nur &#039;&#039;&#039;eine&#039;&#039;&#039; Adresse 42, und nicht 2 wie bei es für Harvard-Architekturen eigentlich typisch ist (Programmspeicher und Datenspeicher, also z.B. Flash und RAM/IO) und die Hardware spricht automatisch den richtigen Speicher an. Die Möglichkeiten zur Offset-Adressierung, der Barrel-Shifter, Divsions-Einheit, die FPU (bei STM32F4), Interrupt-Modell etc. begünstigen ebenfalls die Erzeugung effizienteren Codes. Außerdem haben die STM32 einfach mehr &amp;quot;rohe Leistung&amp;quot;, d.h. mehr Flash/RAM-Speicher und höhere Taktfrequenzen.&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Folgerung&#039;&#039;&#039;: Die Programmierung in Hochsprachen ist &#039;&#039;&#039;bequemer als bei 8-Bittern&#039;&#039;&#039;, denn man muss sich einfach weniger Gedanken machen, ob der Compiler ein Programm nun effizent umsetzen kann (kann man natürlich trotzdem machen, um noch mehr Leistung &amp;quot;herauszuquetschen&amp;quot;, wenn man will).&lt;br /&gt;
&lt;br /&gt;
= Weitere Randbedingungen für die Entscheidung=&lt;br /&gt;
&lt;br /&gt;
Der wichtige Punkt, der oftmals auch vergessen wird: die Beschaffbarkeit. Wenn jemand einen Renesas M16C oder Fujitsu empfiehlt, dann sucht man erst mal und findet nur wenige vereinzelte die man privat kaufen kann.&lt;br /&gt;
&lt;br /&gt;
Oder auch die Unterstützung im Internet - ist bei einigen Exoten spärlich. Dieses Forum bietet die beste Hilfe für [[AVR]], PIC, [[STM32]] und [[MSP430]].&lt;br /&gt;
&lt;br /&gt;
Andere Prozessoren sind schon sehr alt, bzw. nicht mehr modern da deren Peripherie zum Teil doch recht eingeschränkte Funktionalität bietet. z.B. viele 8051 Typen oder PIC16. Die mögen für Mini-Anwenungen gut sein, aber wer will den schon gerne sich extra für eine Kleinanwendung mit einem kleinen µC auseinandersetzen, wenn er schon einen STM32 kennt, mit dem er alles machen kann (und sich bereits gute Funktionen geschrieben hat)?&lt;br /&gt;
&lt;br /&gt;
Daher mein Resümee: wer nicht gerade auf den Kopf gefallen ist, der kann getrost mit einem STM32 starten. Ein [http://www.st.com/web/en/catalog/tools/FM116/SC959/SS1532/PF252419?s_searchtype=keyword STM32F4DISCOVERY] Board kostet nur ca. 20 EUR - und mehr muss für den ersten Start nicht investiert werden - wenn es doch zu komplex sein sollte gibt es hier im Forum auch Hilfe oder man nimmt erst mal ein &amp;quot;Arduino&amp;quot;. Jedenfalls sind diese 20 EUR wirklich keine große Investition.&lt;br /&gt;
&lt;br /&gt;
= Weblinks, Foren, Communities, Tutorials =&lt;br /&gt;
* [[STM32]] Hauptartikel, [http://www.mikrocontroller.net/articles/STM32#Weblinks.2C_Foren.2C_Communities.2C_Tutorials dortige Linksammlung]&lt;br /&gt;
* [http://www.mikrocontroller.net/topic/319328 Diskussion zum Artikel]&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>Frank m35</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=STM32_f%C3%BCr_Einsteiger&amp;diff=80306</id>
		<title>STM32 für Einsteiger</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=STM32_f%C3%BCr_Einsteiger&amp;diff=80306"/>
		<updated>2013-12-30T20:49:33Z</updated>

		<summary type="html">&lt;p&gt;Frank m35: /* Eigene Fähigkeiten und Wünsche */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Immer wiederkehrend hier im Forum &amp;quot;Mit welchem Mikrocontroller anfangen?&amp;quot;. Es gibt eine große Auswahl und eben so viele Empfehlungen. In diesem Artikel soll zu erst geholfen werden ob ein STM32-Prozessor mit Cortex-M3/M4 Kern überhaupt der Richtige für den Start ist.&lt;br /&gt;
Nicht für jeden ist der STM32 zu empfehlen, denn die Anforderungen und Wünsche die man realisieren möchte, sowie die eigenen Fähigkeiten sind verschieden.&lt;br /&gt;
&lt;br /&gt;
Es werden meist die Prozessoren AVR, PIC, Arduino, MSP430 und STM32 empfohlen. Seltener auch 8051, LPC und M16C. Alle haben Vorzüge und ebenso auch Nachteile.&lt;br /&gt;
&lt;br /&gt;
= Eigene Fähigkeiten und Wünsche =&lt;br /&gt;
&lt;br /&gt;
Dieser Artikel geht davon aus, dass bereits Elektronik Kenntnisse vorhanden sind. Wenn nicht dann sollte man erst einmal den Artikel &amp;quot;[[Absolute Beginner]]&amp;quot; durcharbeiten, sowie die anderen Artikel aus der Kategorie &amp;quot;[http://www.mikrocontroller.net/articles/Kategorie:Grundlagen Grundlagen]&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Zu erst einmal die Randbedingungen, mit der man sich selbst zu erst einmal einschätzen sollte:&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|- bgcolor=&amp;quot;#d0d0ff&amp;quot;&lt;br /&gt;
! Fähigkeit || Empfehlung [[STM32]] || Empfehlung [[AVR]] || Empfehlung PIC || Empfehlung [[MSP430]] || Empfehlung Arduino&lt;br /&gt;
|-&lt;br /&gt;
| Neueinsteiger, kaum Elektronikkenntnisse, noch nie programmiert || align=&amp;quot;center&amp;quot;|O || align=&amp;quot;center&amp;quot;|O [http://www.rn-wissen.de/index.php/AVR-Einstieg_leicht_gemacht] [http://www.avr-asm-tutorial.net/avr_de/] || align=&amp;quot;center&amp;quot;|O [http://www.sprut.de/] || align=&amp;quot;center&amp;quot;|O || align=&amp;quot;center&amp;quot;|x&lt;br /&gt;
|-&lt;br /&gt;
| Wunsch ist SD-Card oder Grafik-Display || align=&amp;quot;center&amp;quot;|x || align=&amp;quot;center&amp;quot;|x || align=&amp;quot;center&amp;quot;|x [http://www.microchip.com/stellent/idcplg?IdcService=SS_GET_PAGE&amp;amp;nodeId=2680&amp;amp;dDocName=en537999] [http://www.microchip.com/pagehandler/en-us/technology/graphics/] || align=&amp;quot;center&amp;quot;|x || align=&amp;quot;center&amp;quot;|x&lt;br /&gt;
|-&lt;br /&gt;
| Wunsch ist TCP/IP Netzwerk oder Kamera|| align=&amp;quot;center&amp;quot;|x || align=&amp;quot;center&amp;quot;|O || align=&amp;quot;center&amp;quot;|x [http://www.microchip.com/stellent/idcplg?IdcService=SS_GET_PAGE&amp;amp;nodeId=2505&amp;amp;param=en535724] || align=&amp;quot;center&amp;quot;|O || align=&amp;quot;center&amp;quot;|O&lt;br /&gt;
|-&lt;br /&gt;
| Möchte die Erkenntnisse beruflich nutzen|| align=&amp;quot;center&amp;quot;|x || align=&amp;quot;center&amp;quot;|x || align=&amp;quot;center&amp;quot;|x || align=&amp;quot;center&amp;quot;|x || align=&amp;quot;center&amp;quot;|-&lt;br /&gt;
|-&lt;br /&gt;
| Strom sparende Anwendungen|| align=&amp;quot;center&amp;quot;|O || align=&amp;quot;center&amp;quot;|x [http://www.atmel.com/technologies/lowpower/default.aspx] || align=&amp;quot;center&amp;quot;|x [http://www.microchip.com/pagehandler/en-us/technology/xlp/] || align=&amp;quot;center&amp;quot;|x || align=&amp;quot;center&amp;quot;|-&lt;br /&gt;
|-&lt;br /&gt;
| Experimentieren mit Multithreading, RTOS, Schedulern || align=&amp;quot;center&amp;quot;|x || align=&amp;quot;center&amp;quot;|O [http://www.freertos.org/a00098.html] [http://www.femtoos.org/] || align=&amp;quot;center&amp;quot;|O [http://www.microchip.com/stellent/idcplg?IdcService=SS_GET_PAGE&amp;amp;nodeId=1406&amp;amp;dDocName=en531543&amp;amp;redirects=rtos] || align=&amp;quot;center&amp;quot;|- || align=&amp;quot;center&amp;quot;|-&lt;br /&gt;
|-&lt;br /&gt;
| Besonders große, speicherintensive Programme&amp;lt;br&amp;gt;z.B. Grafiken, Fonts || align=&amp;quot;center&amp;quot;|x&amp;lt;br&amp;gt;bis 2MB Flash || align=&amp;quot;center&amp;quot;|bedingt, z.B. XMega&amp;lt;br&amp;gt;bis ??KB FLASH || align=&amp;quot;center&amp;quot;|x&amp;lt;br&amp;gt;bis 2MB FLASH || align=&amp;quot;center&amp;quot;|O&amp;lt;br&amp;gt;bis ??KB FLASH || align=&amp;quot;center&amp;quot;|-&lt;br /&gt;
|-&lt;br /&gt;
| Sehr viel PWM mit komplexem Timing || align=&amp;quot;center&amp;quot;|x || align=&amp;quot;center&amp;quot;|bedingt, AT90Spwm || align=&amp;quot;center&amp;quot;|O || align=&amp;quot;center&amp;quot;|O || align=&amp;quot;center&amp;quot;|-&lt;br /&gt;
|-&lt;br /&gt;
| Deutschsprachige Community || align=&amp;quot;center&amp;quot;|O || align=&amp;quot;center&amp;quot;|x || align=&amp;quot;center&amp;quot;|O || align=&amp;quot;center&amp;quot;|- || align=&amp;quot;center&amp;quot;|x&lt;br /&gt;
|-&lt;br /&gt;
| Anzahl möglicher HW-Breakpoints || align=&amp;quot;center&amp;quot;|6 || align=&amp;quot;center&amp;quot;|2 || align=&amp;quot;center&amp;quot;| 10 [http://www.microchip.com/stellent/groups/SiteComm_sg/documents/DeviceDoc/en556761.pdf] || align=&amp;quot;center&amp;quot;|2 || align=&amp;quot;center&amp;quot;|2&lt;br /&gt;
|}&lt;br /&gt;
* x = ja&lt;br /&gt;
* O = Teilweise, Einschränkungen&lt;br /&gt;
* - = nicht empfohlen&lt;br /&gt;
* ? = Bitte ergänzen&lt;br /&gt;
&lt;br /&gt;
Nur um nicht zu verwirren, auch wenn Teile &amp;quot;nicht empfohlen&amp;quot; sind, heißt dass nicht dass es mit dem Prozessor nicht geht, vielmehr dass es mehr Aufwand ist das zu realisieren oder mehr Einschränkungen hat.&lt;br /&gt;
&lt;br /&gt;
= Unwichtige Randbedingungen =&lt;br /&gt;
&lt;br /&gt;
Oftmals werden fälschlicherweise Argumente für oder gegen eine µC-Familie ausgesprochen, die in der Praxis &#039;&#039;&#039;zum Einstieg&#039;&#039;&#039; (bei konkreten Anwendungen kann das anders aussehen) eher unwichtig sind.&lt;br /&gt;
&lt;br /&gt;
* Spannungsversorgung 3,3V / 5V&lt;br /&gt;
* 8 (z.B. [[AVR]]), 16 (z.B. [[MSP430]]) oder 32 (z.B. [[STM32]]) Bit&lt;br /&gt;
* Interrupt System mit mehr oder weniger Features&lt;br /&gt;
* Programmiersprache (Assembler, Basic, C, C++, Pascal)&lt;br /&gt;
* Assembler verstehen (Sollte nur theoretisch verstanden werden, ein Programm sollte in einer Hochsprache geschrieben sein)&lt;br /&gt;
* DIL Gehäuse - steckbretttauglich (STM32-Prozessoren gibt es auch fertig gelötet auf einem steckbretttauglichen Board zum fünffachen Preis vergleichbarer DIL Mikrocontroller)&lt;br /&gt;
* Programmieradapter&lt;br /&gt;
* zu 90% reicht doch ein kleiner Prozessor ([[AVR]]/PIC) - und für die restlichen kann man immer noch einen großen nehmen. Warum also nicht gleich einen großen nehmen?&lt;br /&gt;
&lt;br /&gt;
= Kosten =&lt;br /&gt;
&lt;br /&gt;
Grobe Abschätzung was das alles denn kosten wird. Hier sind nur einige Beispiele gezeigt.&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|- bgcolor=&amp;quot;#d0d0ff&amp;quot;&lt;br /&gt;
! Board || [[STM32]] || [[AVR]] || PIC18/24/32 || [[MSP430]] || Arduino&lt;br /&gt;
|-&lt;br /&gt;
| Demo-Board || align=&amp;quot;center&amp;quot;|[http://www.st.com/web/en/catalog/tools/FM116/SC959/SS1532/PF252419] 9..20€ (incl. Programmieradapter und Debugger) || align=&amp;quot;center&amp;quot;|5..500€, z.B. Arduino || align=&amp;quot;center&amp;quot;| [http://www.microchipdirect.com/ProductDetails.aspx?Catalog=BuyMicrochip&amp;amp;Category=Starter%20Kits&amp;amp;mid=1&amp;amp;lmid=610 durchschnittlich 18€ .. 50€] || align=&amp;quot;center&amp;quot;|[http://www.ti.com/tool/msp-exp430fr5739] ~35€ || align=&amp;quot;center&amp;quot;|20€&lt;br /&gt;
|-&lt;br /&gt;
| Steckbrettaugliches Board || align=&amp;quot;center&amp;quot;| s.o. oder [http://re.reworld.eu/de/produkte/s64dil-405/index.htm S64DIL-405] 30€ || align=&amp;quot;center&amp;quot;|2-5€ als einzelner IC || align=&amp;quot;center&amp;quot;|2-5€ als einzelner IC || align=&amp;quot;center&amp;quot;|?? || align=&amp;quot;center&amp;quot;|??&lt;br /&gt;
|-&lt;br /&gt;
| Programmieradapter mit Debugger || align=&amp;quot;center&amp;quot;| s.o. oder z.B [http://www.segger.com/j-link-edu.html Segger J-LINK EDU] 50€ (sehr schnell und unterstützt viele Prozessoren) || align=&amp;quot;center&amp;quot;|?? || align=&amp;quot;center&amp;quot;|PICkit 3 30€ [http://www.microchipdirect.com/ProductSearch.aspx?keywords=PG164130] || align=&amp;quot;center&amp;quot;|z.B. Dragon 50€ || align=&amp;quot;center&amp;quot;|20€ (Man muss DebugWire aktivieren)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Das Demo-Board sollte ein Board sein, nicht zu teuer, um die ersten Erfahrungen zu sammeln. Wenn einem der Prozessor gefällt, so kann man später immer noch mit einem zweiten Demo-Board, z.B. mit Display aufrüsten.&lt;br /&gt;
&lt;br /&gt;
Wenn man gerne mit einem Steckbrett sich die Schaltung zusammen stecken möchte, so kann man entweder die benötigten Drähte am Demo-Board anlöten oder bei z.B. [[AVR]]/[[PIC]] Prozessoren gibt es Ausführungen im DIL Gehäuse, die direkt steckbar sind.&lt;br /&gt;
&lt;br /&gt;
Ein Programmieradapter sollte unbedingt auch einen Debugger beinhalten. Denn für den Start ist es ungemein hilfreich zu sehen was im Prozessor gerade geschieht. Die JTAG-Adapter für einen [[STM32]] Prozessor sind alle Debugger-Tauglich. Für einen [[AVR]] oder [[PIC]] Prozessor gibt es auch oft reine Programmer (oft Selbstbau-Lösungen über die serielle oder parallele Schnittstelle) welche den Mikrocontroller nur beschreiben können. Sinvoller sind hingegen Debugger (bspw. PIC Kit 3 [http://www.microchipdirect.com/ProductSearch.aspx?keywords=PG164130] kompatibel zu allen PIC Mikrocontrollern), die die Ausführung eines Mikrocontrollers anhalten können um die aktuelle Position im Programmcode, Variableninhalt, Register, ... auszulesen bzw. zur Laufzeit zu ändern.&lt;br /&gt;
&lt;br /&gt;
Der für den [[STM32]] empfohlene Segger J-LINK EDU ist zwar nicht der günstigste (z.B. auf einem STM32F4DISCOVERY Borad ist auch einer drauf den man für andere STM32 nutzen kann) aber eines der besten, mit sehr guten Software-Tools und nutzbar für alle Prozessoren mit ARM-Kern (ARM7/9/11/... Cortex-Mx). Niemals am Werkzeug sparen und man hat viel mehr Freude bei der Arbeit.&lt;br /&gt;
&lt;br /&gt;
Der &amp;quot;Arduino&amp;quot; ist kein eigenständiger Prozessor, sondern ein fertiges Board mit einer &amp;quot;Arduino&amp;quot; Programmierumgebung (und einem AVR Prozessor), extra geschaffen für Einsteiger. Allerdings ist da der Lerneffekt viel geringer da man den Prozessor mit der Arduino-Software programmiert und nicht direkt die Register.&lt;br /&gt;
&lt;br /&gt;
Ein [[PIC16]] ist ein älterer 8-Bit Mikrocontroller, der durch die [[PIC18]] Reihe abgelöst wurde. Werden komplexere Anforderungen in Zukunft an den Mikrocontroller gestellt (Audio, Grafik), so sollte zu den moderneren [[PIC24]] bzw. [[dsPIC]] (16-Bit) oder gar zu [[PIC32]] (32-Bit MIPS Prozessor) gegriffen werden, wobei letzterer von der Performance vergleichbar mit den STM32 ARM-basierten Mikrocontrollern ist.&lt;br /&gt;
&lt;br /&gt;
= Programmierumgebungen=&lt;br /&gt;
&lt;br /&gt;
Bei den Programmierumgebungen gibt es zu allen Prozessorfamilien kostenlose und Leistungsfähige Software&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|- bgcolor=&amp;quot;#d0d0ff&amp;quot;&lt;br /&gt;
! [[STM32]] || [[AVR]] || PIC || [[MSP430]] || Arduino&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot;|[http://www.coocox.org/CooCox_CoIDE.htm CooCox] || align=&amp;quot;center&amp;quot;|Atmel-Studio || align=&amp;quot;center&amp;quot;|[http://www.microchip.com/pagehandler/en-us/family/mplabx/ MPALB X] (IDE inklusive compiler) || align=&amp;quot;center&amp;quot;|?? || align=&amp;quot;center&amp;quot;|arduino 1.0.5&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
natürlich gibt es noch viele weitere (für STM32 siehe [[STM32#Programmierung]]), es sollte jedoch nur die einfachsten kostenlose (und ohne Codebegrenzung) für den ersten Einstieg gezeigt werden.&lt;br /&gt;
&lt;br /&gt;
* CooCox Anleitung wie man innerhalb einer Stunde die LED eines Nagel neuen STM32F4DISCOVERY Boards zum blinken bekommt, Artikel: [[STM32 CooCox Installation]]. Diese Anleitung ist eine Schritt-Für-Schritt Anleitung um den aller ersten Start zu vereinfachen.&lt;br /&gt;
&lt;br /&gt;
= Dokumentation=&lt;br /&gt;
&lt;br /&gt;
Bevor man sich für einen Prozessor entscheidet sollte man unbedingt deren Dokumentation mal zumindest überfliegen und auch deren Errata&#039;s lesen. Nicht dass man eine Anwendung erstellen möchte und stellt hinterher fest, dass genau dieser Teil so buggy ist das er nicht genutzt werden kann.&lt;br /&gt;
&lt;br /&gt;
Beim [[STM32]] hat die Dokumentation doch recht viele Seiten, viel mehr als bei einem [[AVR]] oder PIC. Dabei ist vieles eher knapp beschrieben, man muss mehr suchen als z.B. bei den AVR-Dokus, um die gewünschten Informationen zu finden. Außerdem gibt es durchaus einige Unklarheiten und Fehler/Widersprüche. Schlussendlich ist es Geschmackssache mit welcher Doku von welchem Hersteller man sich besser zurecht findet.&lt;br /&gt;
&lt;br /&gt;
Bei den PICs gibt es zu jedem Mikrocontroller ein Datenblatt das die wichtigsten Informationen für den alltäglichen Gebrauch enthält. Da bestimmte Peripherie (bspw. I2C, SPI, ... ) aber sehr komplex ist und innerhalb einer Familie (PIC16/18/24/32) sich identisch verhält, gibt es zu jeder Familie die sogenannten Family-Datasheets, welche alle Module im Detail beschreiben.&lt;br /&gt;
&lt;br /&gt;
Parallel zur Dokumentation sollte man sich auch die Demo-Beispiele der Hersteller anschauen, dann wird vieles gleich verständlicher.&lt;br /&gt;
&lt;br /&gt;
Eine Übersicht über die Funktionen gibt es im Artikel: [[STM32]]&lt;br /&gt;
&lt;br /&gt;
= Die Arbeit mit dem STM32=&lt;br /&gt;
&lt;br /&gt;
Zu erst einmal SOOO groß sind die Unterschiede zwischen den einzelnen Prozessoren nicht. Alle haben Ein-/Ausgänge und um mittels einem Port-Pin eine LED ansteuern zu können muss bei jedem Prozessor der Pin erst einmal parametriert werden, egal ob das jetzt ein STM32 oder ein AVR oder ein MSP430 ist. Nur hat man bei einem STM32 doch einige Funktionen mehr, z.B. zuschaltbarer Pull-Up oder Pull-Down Widerstand und spezielle Setz-Rücksetzregister, die andere Prozessoren nicht haben, jedoch das programmieren vereinfachen.&lt;br /&gt;
Der Haupt-Unterschied zu den anderen Prozessoren ist, dass der [[STM32]] so viele Peripherie-Module beherbergt, dass man die einzeln immer mit einem Clock aktivieren muss, denn damit lässt sich viel Strom sparen.&lt;br /&gt;
&lt;br /&gt;
Und mal ganz ehrlich die Diskussion welcher µc einfacher zu konfigurieren ist, ist doch absoluter Unsinn. Der Weg ist immer der Gleiche:&lt;br /&gt;
*1. Blick ins Datenblatt welche Register für diese Funktion benötigt werden.&lt;br /&gt;
*2. Werte ermitteln die in die Register eingetragen werden.&lt;br /&gt;
*3. Werte ins Register schreiben. Da machte es GAR KEINEN UNTERSCHIED ob es ein [[AVR]], 8051/2, ARM,...... ist.&lt;br /&gt;
&lt;br /&gt;
Stimmt schon es gibt Unterschiede. Die Register haben anderen Namen, andere Adressen, andere Bitbedeutungen,...&lt;br /&gt;
Aber es steht doch alles im Datenblatt. Und ob ich jetzt einen [[AVR]] oder einen ARM das erste mal vor mir liegen hab. Ich brauch in allen Fällen die oben beschriebenen Schritte.&lt;br /&gt;
&lt;br /&gt;
Das Interruptsystem ist bei einem STM32 zusätzlich priorisiert, damit kann man festlegen welcher Interrupt vorrangig bearbeitet wird. Die Prioritätenvergabe ist auch kein Hexenwerk.&lt;br /&gt;
&lt;br /&gt;
Zu allen Prozessoren liefern die jeweiligen Hersteller umfangreiche Demo-Codes und Libraries mit. Meist sind alle in C geschrieben, daher sollte auch die Programmiersprache C verwendet werden. Vor allem auch wenn man berufliche Absichten verfolgt.&lt;br /&gt;
&lt;br /&gt;
Und wenn man einen STM32 kann, dann ist ein Umstieg auf einen LPC17xx (NXP) oder andere Hersteller überhaupt kein Problem, denn die bieten ebenfalls Prozessoren mit Cortex-M3 Kern und man kann diese mit der gleichen Programmierumgebung programmieren. Somit ist man nicht zwingend Herstellerabhängig.&lt;br /&gt;
&lt;br /&gt;
Mit einem STM32 kann man als Hobby-Baster und Professionell nahezu alle Anwendungen realisieren. Der hat genügend RAM und FLASH Speicher und auch genügen Geschwindigkeit. Viele Gehäuse-Varianten um kleine bis hin zu größere Geräte zu erstellen. Viele Schnittstellen, sind im Artikel [[STM32]] beschrieben.&lt;br /&gt;
&lt;br /&gt;
Der einzige Nachteil beim STM32: man muss etwas mehr lesen, da eine Peripherie doch viel mehr Funktionalität hat. Ansonsten kenne ich nicht wirklich einen Grund warum man als Neueinsteiger keinen STM32 nehmen sollte.&lt;br /&gt;
&lt;br /&gt;
= Programmiersprachen =&lt;br /&gt;
* Wie bei vielen anderen Controllern wird beim STM32 auch hauptsächlich C und C++ verwendet. Kennen sollte man die Programmiersprache C schon, wenn man davon noch keine Ahnung hat dann sollte man erst mal mittels einem Tutorial auf einem PC ein Konsoleprogramm schreiben, sodass man es einigermaßen kennen lernt. Hier im Forum gibt es ebenfalls Artikel dazu. Zielt man auf die (spätere) Anwendung in der Industrie, sollte aufgrund der Verbreitung auf jeden Fall C (oder C++) gewählt werden; außerdem sind die meisten verfügbaren Libraries in C geschrieben.&lt;br /&gt;
* Assembler sollte man nur grob verstehen, Details wie ein Befehl arbeitet ist unwichtig. Selbst wenn man die Zyklen für einen Funktionsaufruf wissen will, so bietet der STM32 (Cortex-M3) einen Cycle-Counter den man auslesen kann; durch die komplexere Pipeline und Cache-Effekte sind die Laufzeiten allerdings nicht genau vorhersehbar. Wird zyklengenause Timing benötigt, sollten Timer verwendet werden - davon hat der STM32 genug.&lt;br /&gt;
&lt;br /&gt;
Der 32bit-Adressraum, der RAM, Flash, I/O-Register vereinheitlicht ansprechen kann (im Gegensatz zu z.B. AVR) ist ideal für eine Verwendung durch Hochsprachen; bei Pointern muss keine zusätzliche Information verwaltet werden, in welche Art Speicher sie zeigen. Die Adresse gibt dies eindeutig an (es gibt nur &#039;&#039;&#039;eine&#039;&#039;&#039; Adresse 42, und nicht 2 wie bei es für Harvard-Architekturen eigentlich typisch ist (Programmspeicher und Datenspeicher, also z.B. Flash und RAM/IO) und die Hardware spricht automatisch den richtigen Speicher an. Die Möglichkeiten zur Offset-Adressierung, der Barrel-Shifter, Divsions-Einheit, die FPU (bei STM32F4), Interrupt-Modell etc. begünstigen ebenfalls die Erzeugung effizienteren Codes. Außerdem haben die STM32 einfach mehr &amp;quot;rohe Leistung&amp;quot;, d.h. mehr Flash/RAM-Speicher und höhere Taktfrequenzen.&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Folgerung&#039;&#039;&#039;: Die Programmierung in Hochsprachen ist &#039;&#039;&#039;bequemer als bei 8-Bittern&#039;&#039;&#039;, denn man muss sich einfach weniger Gedanken machen, ob der Compiler ein Programm nun effizent umsetzen kann (kann man natürlich trotzdem machen, um noch mehr Leistung &amp;quot;herauszuquetschen&amp;quot;, wenn man will).&lt;br /&gt;
&lt;br /&gt;
= Weitere Randbedingungen für die Entscheidung=&lt;br /&gt;
&lt;br /&gt;
Der wichtige Punkt, der oftmals auch vergessen wird: die Beschaffbarkeit. Wenn jemand einen Renesas M16C oder Fujitsu empfiehlt, dann sucht man erst mal und findet nur wenige vereinzelte die man privat kaufen kann.&lt;br /&gt;
&lt;br /&gt;
Oder auch die Unterstützung im Internet - ist bei einigen Exoten spärlich. Dieses Forum bietet die beste Hilfe für [[AVR]], PIC, [[STM32]] und [[MSP430]].&lt;br /&gt;
&lt;br /&gt;
Andere Prozessoren sind schon sehr alt, bzw. nicht mehr modern da deren Peripherie zum Teil doch recht eingeschränkte Funktionalität bietet. z.B. viele 8051 Typen oder PIC16. Die mögen für Mini-Anwenungen gut sein, aber wer will den schon gerne sich extra für eine Kleinanwendung mit einem kleinen µC auseinandersetzen, wenn er schon einen STM32 kennt, mit dem er alles machen kann (und sich bereits gute Funktionen geschrieben hat)?&lt;br /&gt;
&lt;br /&gt;
Daher mein Resümee: wer nicht gerade auf den Kopf gefallen ist, der kann getrost mit einem STM32 starten. Ein [http://www.st.com/web/en/catalog/tools/FM116/SC959/SS1532/PF252419?s_searchtype=keyword STM32F4DISCOVERY] Board kostet nur ca. 20 EUR - und mehr muss für den ersten Start nicht investiert werden - wenn es doch zu komplex sein sollte gibt es hier im Forum auch Hilfe oder man nimmt erst mal ein &amp;quot;Arduino&amp;quot;. Jedenfalls sind diese 20 EUR wirklich keine große Investition.&lt;br /&gt;
&lt;br /&gt;
= Weblinks, Foren, Communities, Tutorials =&lt;br /&gt;
* [[STM32]] Hauptartikel, [http://www.mikrocontroller.net/articles/STM32#Weblinks.2C_Foren.2C_Communities.2C_Tutorials dortige Linksammlung]&lt;br /&gt;
* [http://www.mikrocontroller.net/topic/319328 Diskussion zum Artikel]&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>Frank m35</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=STM32_f%C3%BCr_Einsteiger&amp;diff=80305</id>
		<title>STM32 für Einsteiger</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=STM32_f%C3%BCr_Einsteiger&amp;diff=80305"/>
		<updated>2013-12-30T20:49:06Z</updated>

		<summary type="html">&lt;p&gt;Frank m35: /* Eigene Fähigkeiten und Wünsche */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Immer wiederkehrend hier im Forum &amp;quot;Mit welchem Mikrocontroller anfangen?&amp;quot;. Es gibt eine große Auswahl und eben so viele Empfehlungen. In diesem Artikel soll zu erst geholfen werden ob ein STM32-Prozessor mit Cortex-M3/M4 Kern überhaupt der Richtige für den Start ist.&lt;br /&gt;
Nicht für jeden ist der STM32 zu empfehlen, denn die Anforderungen und Wünsche die man realisieren möchte, sowie die eigenen Fähigkeiten sind verschieden.&lt;br /&gt;
&lt;br /&gt;
Es werden meist die Prozessoren AVR, PIC, Arduino, MSP430 und STM32 empfohlen. Seltener auch 8051, LPC und M16C. Alle haben Vorzüge und ebenso auch Nachteile.&lt;br /&gt;
&lt;br /&gt;
= Eigene Fähigkeiten und Wünsche =&lt;br /&gt;
&lt;br /&gt;
Dieser Artikel geht davon aus, dass bereits Elektronik Kenntnisse vorhanden sind. Wenn nicht dann sollte man erst einmal den Artikel &amp;quot;[[Absolute Beginner]]&amp;quot; durcharbeiten, sowie die anderen Artikel aus der Kategorie &amp;quot;[http://www.mikrocontroller.net/articles/Kategorie:Grundlagen Grundlagen]&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Zu erst einmal die Randbedingungen, mit der man sich selbst zu erst einmal einschätzen sollte:&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|- bgcolor=&amp;quot;#d0d0ff&amp;quot;&lt;br /&gt;
! Fähigkeit || Empfehlung [[STM32]] || Empfehlung [[AVR]] || Empfehlung PIC || Empfehlung [[MSP430]] || Empfehlung Arduino&lt;br /&gt;
|-&lt;br /&gt;
| Neueinsteiger, kaum Elektronikkenntnisse, noch nie programmiert || align=&amp;quot;center&amp;quot;|O || align=&amp;quot;center&amp;quot;|O [http://www.rn-wissen.de/index.php/AVR-Einstieg_leicht_gemacht] [http://www.avr-asm-tutorial.net/avr_de/] || align=&amp;quot;center&amp;quot;|O [http://www.sprut.de/] || align=&amp;quot;center&amp;quot;|O || align=&amp;quot;center&amp;quot;|x&lt;br /&gt;
|-&lt;br /&gt;
| Wunsch ist SD-Card oder Grafik-Display || align=&amp;quot;center&amp;quot;|x || align=&amp;quot;center&amp;quot;|x || align=&amp;quot;center&amp;quot;|x [http://www.microchip.com/stellent/idcplg?IdcService=SS_GET_PAGE&amp;amp;nodeId=2680&amp;amp;dDocName=en537999] [http://www.microchip.com/pagehandler/en-us/technology/graphics/] || align=&amp;quot;center&amp;quot;|x || align=&amp;quot;center&amp;quot;|x&lt;br /&gt;
|-&lt;br /&gt;
| Wunsch ist TCP/IP Netzwerk oder Kamera|| align=&amp;quot;center&amp;quot;|x || align=&amp;quot;center&amp;quot;|O || align=&amp;quot;center&amp;quot;|x [http://www.microchip.com/stellent/idcplg?IdcService=SS_GET_PAGE&amp;amp;nodeId=2505&amp;amp;param=en535724] || align=&amp;quot;center&amp;quot;|O || align=&amp;quot;center&amp;quot;|O&lt;br /&gt;
|-&lt;br /&gt;
| Möchte die Erkenntnisse beruflich nutzen|| align=&amp;quot;center&amp;quot;|x || align=&amp;quot;center&amp;quot;|x || align=&amp;quot;center&amp;quot;|x || align=&amp;quot;center&amp;quot;|x || align=&amp;quot;center&amp;quot;|-&lt;br /&gt;
|-&lt;br /&gt;
| Strom sparende Anwendungen|| align=&amp;quot;center&amp;quot;|O || align=&amp;quot;center&amp;quot;|x [http://www.atmel.com/technologies/lowpower/default.aspx] || align=&amp;quot;center&amp;quot;|x [http://www.microchip.com/pagehandler/en-us/technology/xlp/] || align=&amp;quot;center&amp;quot;|x || align=&amp;quot;center&amp;quot;|-&lt;br /&gt;
|-&lt;br /&gt;
| Experimentieren mit Multithreading, RTOS, Schedulern || align=&amp;quot;center&amp;quot;|x || align=&amp;quot;center&amp;quot;|O [http://www.freertos.org/a00098.html] [http://www.femtoos.org/] || align=&amp;quot;center&amp;quot;|O [http://www.microchip.com/stellent/idcplg?IdcService=SS_GET_PAGE&amp;amp;nodeId=1406&amp;amp;dDocName=en531543&amp;amp;redirects=rtos] || align=&amp;quot;center&amp;quot;|- || align=&amp;quot;center&amp;quot;|-&lt;br /&gt;
|-&lt;br /&gt;
| Besonders große, speicherintensive Programme&amp;lt;br&amp;gt;z.B. Grafiken, Fonts || align=&amp;quot;center&amp;quot;|x&amp;lt;br&amp;gt;bis 2MB Flash || align=&amp;quot;center&amp;quot;|bedingt, z.B. XMega&amp;lt;br&amp;gt;bis ??KB FLASH || align=&amp;quot;center&amp;quot;|O&amp;lt;br&amp;gt;bis 2MB FLASH || align=&amp;quot;center&amp;quot;|O&amp;lt;br&amp;gt;bis ??KB FLASH || align=&amp;quot;center&amp;quot;|-&lt;br /&gt;
|-&lt;br /&gt;
| Sehr viel PWM mit komplexem Timing || align=&amp;quot;center&amp;quot;|x || align=&amp;quot;center&amp;quot;|bedingt, AT90Spwm || align=&amp;quot;center&amp;quot;|O || align=&amp;quot;center&amp;quot;|O || align=&amp;quot;center&amp;quot;|-&lt;br /&gt;
|-&lt;br /&gt;
| Deutschsprachige Community || align=&amp;quot;center&amp;quot;|O || align=&amp;quot;center&amp;quot;|x || align=&amp;quot;center&amp;quot;|O || align=&amp;quot;center&amp;quot;|- || align=&amp;quot;center&amp;quot;|x&lt;br /&gt;
|-&lt;br /&gt;
| Anzahl möglicher HW-Breakpoints || align=&amp;quot;center&amp;quot;|6 || align=&amp;quot;center&amp;quot;|2 || align=&amp;quot;center&amp;quot;| 10 [http://www.microchip.com/stellent/groups/SiteComm_sg/documents/DeviceDoc/en556761.pdf] || align=&amp;quot;center&amp;quot;|2 || align=&amp;quot;center&amp;quot;|2&lt;br /&gt;
|}&lt;br /&gt;
* x = ja&lt;br /&gt;
* O = Teilweise, Einschränkungen&lt;br /&gt;
* - = nicht empfohlen&lt;br /&gt;
* ? = Bitte ergänzen&lt;br /&gt;
&lt;br /&gt;
Nur um nicht zu verwirren, auch wenn Teile &amp;quot;nicht empfohlen&amp;quot; sind, heißt dass nicht dass es mit dem Prozessor nicht geht, vielmehr dass es mehr Aufwand ist das zu realisieren oder mehr Einschränkungen hat.&lt;br /&gt;
&lt;br /&gt;
= Unwichtige Randbedingungen =&lt;br /&gt;
&lt;br /&gt;
Oftmals werden fälschlicherweise Argumente für oder gegen eine µC-Familie ausgesprochen, die in der Praxis &#039;&#039;&#039;zum Einstieg&#039;&#039;&#039; (bei konkreten Anwendungen kann das anders aussehen) eher unwichtig sind.&lt;br /&gt;
&lt;br /&gt;
* Spannungsversorgung 3,3V / 5V&lt;br /&gt;
* 8 (z.B. [[AVR]]), 16 (z.B. [[MSP430]]) oder 32 (z.B. [[STM32]]) Bit&lt;br /&gt;
* Interrupt System mit mehr oder weniger Features&lt;br /&gt;
* Programmiersprache (Assembler, Basic, C, C++, Pascal)&lt;br /&gt;
* Assembler verstehen (Sollte nur theoretisch verstanden werden, ein Programm sollte in einer Hochsprache geschrieben sein)&lt;br /&gt;
* DIL Gehäuse - steckbretttauglich (STM32-Prozessoren gibt es auch fertig gelötet auf einem steckbretttauglichen Board zum fünffachen Preis vergleichbarer DIL Mikrocontroller)&lt;br /&gt;
* Programmieradapter&lt;br /&gt;
* zu 90% reicht doch ein kleiner Prozessor ([[AVR]]/PIC) - und für die restlichen kann man immer noch einen großen nehmen. Warum also nicht gleich einen großen nehmen?&lt;br /&gt;
&lt;br /&gt;
= Kosten =&lt;br /&gt;
&lt;br /&gt;
Grobe Abschätzung was das alles denn kosten wird. Hier sind nur einige Beispiele gezeigt.&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|- bgcolor=&amp;quot;#d0d0ff&amp;quot;&lt;br /&gt;
! Board || [[STM32]] || [[AVR]] || PIC18/24/32 || [[MSP430]] || Arduino&lt;br /&gt;
|-&lt;br /&gt;
| Demo-Board || align=&amp;quot;center&amp;quot;|[http://www.st.com/web/en/catalog/tools/FM116/SC959/SS1532/PF252419] 9..20€ (incl. Programmieradapter und Debugger) || align=&amp;quot;center&amp;quot;|5..500€, z.B. Arduino || align=&amp;quot;center&amp;quot;| [http://www.microchipdirect.com/ProductDetails.aspx?Catalog=BuyMicrochip&amp;amp;Category=Starter%20Kits&amp;amp;mid=1&amp;amp;lmid=610 durchschnittlich 18€ .. 50€] || align=&amp;quot;center&amp;quot;|[http://www.ti.com/tool/msp-exp430fr5739] ~35€ || align=&amp;quot;center&amp;quot;|20€&lt;br /&gt;
|-&lt;br /&gt;
| Steckbrettaugliches Board || align=&amp;quot;center&amp;quot;| s.o. oder [http://re.reworld.eu/de/produkte/s64dil-405/index.htm S64DIL-405] 30€ || align=&amp;quot;center&amp;quot;|2-5€ als einzelner IC || align=&amp;quot;center&amp;quot;|2-5€ als einzelner IC || align=&amp;quot;center&amp;quot;|?? || align=&amp;quot;center&amp;quot;|??&lt;br /&gt;
|-&lt;br /&gt;
| Programmieradapter mit Debugger || align=&amp;quot;center&amp;quot;| s.o. oder z.B [http://www.segger.com/j-link-edu.html Segger J-LINK EDU] 50€ (sehr schnell und unterstützt viele Prozessoren) || align=&amp;quot;center&amp;quot;|?? || align=&amp;quot;center&amp;quot;|PICkit 3 30€ [http://www.microchipdirect.com/ProductSearch.aspx?keywords=PG164130] || align=&amp;quot;center&amp;quot;|z.B. Dragon 50€ || align=&amp;quot;center&amp;quot;|20€ (Man muss DebugWire aktivieren)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Das Demo-Board sollte ein Board sein, nicht zu teuer, um die ersten Erfahrungen zu sammeln. Wenn einem der Prozessor gefällt, so kann man später immer noch mit einem zweiten Demo-Board, z.B. mit Display aufrüsten.&lt;br /&gt;
&lt;br /&gt;
Wenn man gerne mit einem Steckbrett sich die Schaltung zusammen stecken möchte, so kann man entweder die benötigten Drähte am Demo-Board anlöten oder bei z.B. [[AVR]]/[[PIC]] Prozessoren gibt es Ausführungen im DIL Gehäuse, die direkt steckbar sind.&lt;br /&gt;
&lt;br /&gt;
Ein Programmieradapter sollte unbedingt auch einen Debugger beinhalten. Denn für den Start ist es ungemein hilfreich zu sehen was im Prozessor gerade geschieht. Die JTAG-Adapter für einen [[STM32]] Prozessor sind alle Debugger-Tauglich. Für einen [[AVR]] oder [[PIC]] Prozessor gibt es auch oft reine Programmer (oft Selbstbau-Lösungen über die serielle oder parallele Schnittstelle) welche den Mikrocontroller nur beschreiben können. Sinvoller sind hingegen Debugger (bspw. PIC Kit 3 [http://www.microchipdirect.com/ProductSearch.aspx?keywords=PG164130] kompatibel zu allen PIC Mikrocontrollern), die die Ausführung eines Mikrocontrollers anhalten können um die aktuelle Position im Programmcode, Variableninhalt, Register, ... auszulesen bzw. zur Laufzeit zu ändern.&lt;br /&gt;
&lt;br /&gt;
Der für den [[STM32]] empfohlene Segger J-LINK EDU ist zwar nicht der günstigste (z.B. auf einem STM32F4DISCOVERY Borad ist auch einer drauf den man für andere STM32 nutzen kann) aber eines der besten, mit sehr guten Software-Tools und nutzbar für alle Prozessoren mit ARM-Kern (ARM7/9/11/... Cortex-Mx). Niemals am Werkzeug sparen und man hat viel mehr Freude bei der Arbeit.&lt;br /&gt;
&lt;br /&gt;
Der &amp;quot;Arduino&amp;quot; ist kein eigenständiger Prozessor, sondern ein fertiges Board mit einer &amp;quot;Arduino&amp;quot; Programmierumgebung (und einem AVR Prozessor), extra geschaffen für Einsteiger. Allerdings ist da der Lerneffekt viel geringer da man den Prozessor mit der Arduino-Software programmiert und nicht direkt die Register.&lt;br /&gt;
&lt;br /&gt;
Ein [[PIC16]] ist ein älterer 8-Bit Mikrocontroller, der durch die [[PIC18]] Reihe abgelöst wurde. Werden komplexere Anforderungen in Zukunft an den Mikrocontroller gestellt (Audio, Grafik), so sollte zu den moderneren [[PIC24]] bzw. [[dsPIC]] (16-Bit) oder gar zu [[PIC32]] (32-Bit MIPS Prozessor) gegriffen werden, wobei letzterer von der Performance vergleichbar mit den STM32 ARM-basierten Mikrocontrollern ist.&lt;br /&gt;
&lt;br /&gt;
= Programmierumgebungen=&lt;br /&gt;
&lt;br /&gt;
Bei den Programmierumgebungen gibt es zu allen Prozessorfamilien kostenlose und Leistungsfähige Software&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|- bgcolor=&amp;quot;#d0d0ff&amp;quot;&lt;br /&gt;
! [[STM32]] || [[AVR]] || PIC || [[MSP430]] || Arduino&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot;|[http://www.coocox.org/CooCox_CoIDE.htm CooCox] || align=&amp;quot;center&amp;quot;|Atmel-Studio || align=&amp;quot;center&amp;quot;|[http://www.microchip.com/pagehandler/en-us/family/mplabx/ MPALB X] (IDE inklusive compiler) || align=&amp;quot;center&amp;quot;|?? || align=&amp;quot;center&amp;quot;|arduino 1.0.5&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
natürlich gibt es noch viele weitere (für STM32 siehe [[STM32#Programmierung]]), es sollte jedoch nur die einfachsten kostenlose (und ohne Codebegrenzung) für den ersten Einstieg gezeigt werden.&lt;br /&gt;
&lt;br /&gt;
* CooCox Anleitung wie man innerhalb einer Stunde die LED eines Nagel neuen STM32F4DISCOVERY Boards zum blinken bekommt, Artikel: [[STM32 CooCox Installation]]. Diese Anleitung ist eine Schritt-Für-Schritt Anleitung um den aller ersten Start zu vereinfachen.&lt;br /&gt;
&lt;br /&gt;
= Dokumentation=&lt;br /&gt;
&lt;br /&gt;
Bevor man sich für einen Prozessor entscheidet sollte man unbedingt deren Dokumentation mal zumindest überfliegen und auch deren Errata&#039;s lesen. Nicht dass man eine Anwendung erstellen möchte und stellt hinterher fest, dass genau dieser Teil so buggy ist das er nicht genutzt werden kann.&lt;br /&gt;
&lt;br /&gt;
Beim [[STM32]] hat die Dokumentation doch recht viele Seiten, viel mehr als bei einem [[AVR]] oder PIC. Dabei ist vieles eher knapp beschrieben, man muss mehr suchen als z.B. bei den AVR-Dokus, um die gewünschten Informationen zu finden. Außerdem gibt es durchaus einige Unklarheiten und Fehler/Widersprüche. Schlussendlich ist es Geschmackssache mit welcher Doku von welchem Hersteller man sich besser zurecht findet.&lt;br /&gt;
&lt;br /&gt;
Bei den PICs gibt es zu jedem Mikrocontroller ein Datenblatt das die wichtigsten Informationen für den alltäglichen Gebrauch enthält. Da bestimmte Peripherie (bspw. I2C, SPI, ... ) aber sehr komplex ist und innerhalb einer Familie (PIC16/18/24/32) sich identisch verhält, gibt es zu jeder Familie die sogenannten Family-Datasheets, welche alle Module im Detail beschreiben.&lt;br /&gt;
&lt;br /&gt;
Parallel zur Dokumentation sollte man sich auch die Demo-Beispiele der Hersteller anschauen, dann wird vieles gleich verständlicher.&lt;br /&gt;
&lt;br /&gt;
Eine Übersicht über die Funktionen gibt es im Artikel: [[STM32]]&lt;br /&gt;
&lt;br /&gt;
= Die Arbeit mit dem STM32=&lt;br /&gt;
&lt;br /&gt;
Zu erst einmal SOOO groß sind die Unterschiede zwischen den einzelnen Prozessoren nicht. Alle haben Ein-/Ausgänge und um mittels einem Port-Pin eine LED ansteuern zu können muss bei jedem Prozessor der Pin erst einmal parametriert werden, egal ob das jetzt ein STM32 oder ein AVR oder ein MSP430 ist. Nur hat man bei einem STM32 doch einige Funktionen mehr, z.B. zuschaltbarer Pull-Up oder Pull-Down Widerstand und spezielle Setz-Rücksetzregister, die andere Prozessoren nicht haben, jedoch das programmieren vereinfachen.&lt;br /&gt;
Der Haupt-Unterschied zu den anderen Prozessoren ist, dass der [[STM32]] so viele Peripherie-Module beherbergt, dass man die einzeln immer mit einem Clock aktivieren muss, denn damit lässt sich viel Strom sparen.&lt;br /&gt;
&lt;br /&gt;
Und mal ganz ehrlich die Diskussion welcher µc einfacher zu konfigurieren ist, ist doch absoluter Unsinn. Der Weg ist immer der Gleiche:&lt;br /&gt;
*1. Blick ins Datenblatt welche Register für diese Funktion benötigt werden.&lt;br /&gt;
*2. Werte ermitteln die in die Register eingetragen werden.&lt;br /&gt;
*3. Werte ins Register schreiben. Da machte es GAR KEINEN UNTERSCHIED ob es ein [[AVR]], 8051/2, ARM,...... ist.&lt;br /&gt;
&lt;br /&gt;
Stimmt schon es gibt Unterschiede. Die Register haben anderen Namen, andere Adressen, andere Bitbedeutungen,...&lt;br /&gt;
Aber es steht doch alles im Datenblatt. Und ob ich jetzt einen [[AVR]] oder einen ARM das erste mal vor mir liegen hab. Ich brauch in allen Fällen die oben beschriebenen Schritte.&lt;br /&gt;
&lt;br /&gt;
Das Interruptsystem ist bei einem STM32 zusätzlich priorisiert, damit kann man festlegen welcher Interrupt vorrangig bearbeitet wird. Die Prioritätenvergabe ist auch kein Hexenwerk.&lt;br /&gt;
&lt;br /&gt;
Zu allen Prozessoren liefern die jeweiligen Hersteller umfangreiche Demo-Codes und Libraries mit. Meist sind alle in C geschrieben, daher sollte auch die Programmiersprache C verwendet werden. Vor allem auch wenn man berufliche Absichten verfolgt.&lt;br /&gt;
&lt;br /&gt;
Und wenn man einen STM32 kann, dann ist ein Umstieg auf einen LPC17xx (NXP) oder andere Hersteller überhaupt kein Problem, denn die bieten ebenfalls Prozessoren mit Cortex-M3 Kern und man kann diese mit der gleichen Programmierumgebung programmieren. Somit ist man nicht zwingend Herstellerabhängig.&lt;br /&gt;
&lt;br /&gt;
Mit einem STM32 kann man als Hobby-Baster und Professionell nahezu alle Anwendungen realisieren. Der hat genügend RAM und FLASH Speicher und auch genügen Geschwindigkeit. Viele Gehäuse-Varianten um kleine bis hin zu größere Geräte zu erstellen. Viele Schnittstellen, sind im Artikel [[STM32]] beschrieben.&lt;br /&gt;
&lt;br /&gt;
Der einzige Nachteil beim STM32: man muss etwas mehr lesen, da eine Peripherie doch viel mehr Funktionalität hat. Ansonsten kenne ich nicht wirklich einen Grund warum man als Neueinsteiger keinen STM32 nehmen sollte.&lt;br /&gt;
&lt;br /&gt;
= Programmiersprachen =&lt;br /&gt;
* Wie bei vielen anderen Controllern wird beim STM32 auch hauptsächlich C und C++ verwendet. Kennen sollte man die Programmiersprache C schon, wenn man davon noch keine Ahnung hat dann sollte man erst mal mittels einem Tutorial auf einem PC ein Konsoleprogramm schreiben, sodass man es einigermaßen kennen lernt. Hier im Forum gibt es ebenfalls Artikel dazu. Zielt man auf die (spätere) Anwendung in der Industrie, sollte aufgrund der Verbreitung auf jeden Fall C (oder C++) gewählt werden; außerdem sind die meisten verfügbaren Libraries in C geschrieben.&lt;br /&gt;
* Assembler sollte man nur grob verstehen, Details wie ein Befehl arbeitet ist unwichtig. Selbst wenn man die Zyklen für einen Funktionsaufruf wissen will, so bietet der STM32 (Cortex-M3) einen Cycle-Counter den man auslesen kann; durch die komplexere Pipeline und Cache-Effekte sind die Laufzeiten allerdings nicht genau vorhersehbar. Wird zyklengenause Timing benötigt, sollten Timer verwendet werden - davon hat der STM32 genug.&lt;br /&gt;
&lt;br /&gt;
Der 32bit-Adressraum, der RAM, Flash, I/O-Register vereinheitlicht ansprechen kann (im Gegensatz zu z.B. AVR) ist ideal für eine Verwendung durch Hochsprachen; bei Pointern muss keine zusätzliche Information verwaltet werden, in welche Art Speicher sie zeigen. Die Adresse gibt dies eindeutig an (es gibt nur &#039;&#039;&#039;eine&#039;&#039;&#039; Adresse 42, und nicht 2 wie bei es für Harvard-Architekturen eigentlich typisch ist (Programmspeicher und Datenspeicher, also z.B. Flash und RAM/IO) und die Hardware spricht automatisch den richtigen Speicher an. Die Möglichkeiten zur Offset-Adressierung, der Barrel-Shifter, Divsions-Einheit, die FPU (bei STM32F4), Interrupt-Modell etc. begünstigen ebenfalls die Erzeugung effizienteren Codes. Außerdem haben die STM32 einfach mehr &amp;quot;rohe Leistung&amp;quot;, d.h. mehr Flash/RAM-Speicher und höhere Taktfrequenzen.&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Folgerung&#039;&#039;&#039;: Die Programmierung in Hochsprachen ist &#039;&#039;&#039;bequemer als bei 8-Bittern&#039;&#039;&#039;, denn man muss sich einfach weniger Gedanken machen, ob der Compiler ein Programm nun effizent umsetzen kann (kann man natürlich trotzdem machen, um noch mehr Leistung &amp;quot;herauszuquetschen&amp;quot;, wenn man will).&lt;br /&gt;
&lt;br /&gt;
= Weitere Randbedingungen für die Entscheidung=&lt;br /&gt;
&lt;br /&gt;
Der wichtige Punkt, der oftmals auch vergessen wird: die Beschaffbarkeit. Wenn jemand einen Renesas M16C oder Fujitsu empfiehlt, dann sucht man erst mal und findet nur wenige vereinzelte die man privat kaufen kann.&lt;br /&gt;
&lt;br /&gt;
Oder auch die Unterstützung im Internet - ist bei einigen Exoten spärlich. Dieses Forum bietet die beste Hilfe für [[AVR]], PIC, [[STM32]] und [[MSP430]].&lt;br /&gt;
&lt;br /&gt;
Andere Prozessoren sind schon sehr alt, bzw. nicht mehr modern da deren Peripherie zum Teil doch recht eingeschränkte Funktionalität bietet. z.B. viele 8051 Typen oder PIC16. Die mögen für Mini-Anwenungen gut sein, aber wer will den schon gerne sich extra für eine Kleinanwendung mit einem kleinen µC auseinandersetzen, wenn er schon einen STM32 kennt, mit dem er alles machen kann (und sich bereits gute Funktionen geschrieben hat)?&lt;br /&gt;
&lt;br /&gt;
Daher mein Resümee: wer nicht gerade auf den Kopf gefallen ist, der kann getrost mit einem STM32 starten. Ein [http://www.st.com/web/en/catalog/tools/FM116/SC959/SS1532/PF252419?s_searchtype=keyword STM32F4DISCOVERY] Board kostet nur ca. 20 EUR - und mehr muss für den ersten Start nicht investiert werden - wenn es doch zu komplex sein sollte gibt es hier im Forum auch Hilfe oder man nimmt erst mal ein &amp;quot;Arduino&amp;quot;. Jedenfalls sind diese 20 EUR wirklich keine große Investition.&lt;br /&gt;
&lt;br /&gt;
= Weblinks, Foren, Communities, Tutorials =&lt;br /&gt;
* [[STM32]] Hauptartikel, [http://www.mikrocontroller.net/articles/STM32#Weblinks.2C_Foren.2C_Communities.2C_Tutorials dortige Linksammlung]&lt;br /&gt;
* [http://www.mikrocontroller.net/topic/319328 Diskussion zum Artikel]&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>Frank m35</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=STM32_f%C3%BCr_Einsteiger&amp;diff=80304</id>
		<title>STM32 für Einsteiger</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=STM32_f%C3%BCr_Einsteiger&amp;diff=80304"/>
		<updated>2013-12-30T20:48:04Z</updated>

		<summary type="html">&lt;p&gt;Frank m35: /* Eigene Fähigkeiten und Wünsche */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Immer wiederkehrend hier im Forum &amp;quot;Mit welchem Mikrocontroller anfangen?&amp;quot;. Es gibt eine große Auswahl und eben so viele Empfehlungen. In diesem Artikel soll zu erst geholfen werden ob ein STM32-Prozessor mit Cortex-M3/M4 Kern überhaupt der Richtige für den Start ist.&lt;br /&gt;
Nicht für jeden ist der STM32 zu empfehlen, denn die Anforderungen und Wünsche die man realisieren möchte, sowie die eigenen Fähigkeiten sind verschieden.&lt;br /&gt;
&lt;br /&gt;
Es werden meist die Prozessoren AVR, PIC, Arduino, MSP430 und STM32 empfohlen. Seltener auch 8051, LPC und M16C. Alle haben Vorzüge und ebenso auch Nachteile.&lt;br /&gt;
&lt;br /&gt;
= Eigene Fähigkeiten und Wünsche =&lt;br /&gt;
&lt;br /&gt;
Dieser Artikel geht davon aus, dass bereits Elektronik Kenntnisse vorhanden sind. Wenn nicht dann sollte man erst einmal den Artikel &amp;quot;[[Absolute Beginner]]&amp;quot; durcharbeiten, sowie die anderen Artikel aus der Kategorie &amp;quot;[http://www.mikrocontroller.net/articles/Kategorie:Grundlagen Grundlagen]&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Zu erst einmal die Randbedingungen, mit der man sich selbst zu erst einmal einschätzen sollte:&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|- bgcolor=&amp;quot;#d0d0ff&amp;quot;&lt;br /&gt;
! Fähigkeit || Empfehlung [[STM32]] || Empfehlung [[AVR]] || Empfehlung PIC || Empfehlung [[MSP430]] || Empfehlung Arduino&lt;br /&gt;
|-&lt;br /&gt;
| Neueinsteiger, kaum Elektronikkenntnisse, noch nie programmiert || align=&amp;quot;center&amp;quot;|O || align=&amp;quot;center&amp;quot;|O [http://www.rn-wissen.de/index.php/AVR-Einstieg_leicht_gemacht] [http://www.avr-asm-tutorial.net/avr_de/] || align=&amp;quot;center&amp;quot;|O [http://www.sprut.de/] || align=&amp;quot;center&amp;quot;|O || align=&amp;quot;center&amp;quot;|x&lt;br /&gt;
|-&lt;br /&gt;
| Wunsch ist SD-Card oder Grafik-Display || align=&amp;quot;center&amp;quot;|x || align=&amp;quot;center&amp;quot;|x || align=&amp;quot;center&amp;quot;|x [http://www.microchip.com/stellent/idcplg?IdcService=SS_GET_PAGE&amp;amp;nodeId=2680&amp;amp;dDocName=en537999] [http://www.microchip.com/pagehandler/en-us/technology/graphics/] || align=&amp;quot;center&amp;quot;|x || align=&amp;quot;center&amp;quot;|x&lt;br /&gt;
|-&lt;br /&gt;
| Wunsch ist TCP/IP Netzwerk oder Kamera|| align=&amp;quot;center&amp;quot;|x || align=&amp;quot;center&amp;quot;|O || align=&amp;quot;center&amp;quot;|x [http://www.microchip.com/stellent/idcplg?IdcService=SS_GET_PAGE&amp;amp;nodeId=2505&amp;amp;param=en535724] || align=&amp;quot;center&amp;quot;|O || align=&amp;quot;center&amp;quot;|O&lt;br /&gt;
|-&lt;br /&gt;
| Möchte die Erkenntnisse beruflich nutzen|| align=&amp;quot;center&amp;quot;|x || align=&amp;quot;center&amp;quot;|x || align=&amp;quot;center&amp;quot;|x || align=&amp;quot;center&amp;quot;|x || align=&amp;quot;center&amp;quot;|-&lt;br /&gt;
|-&lt;br /&gt;
| Strom sparende Anwendungen|| align=&amp;quot;center&amp;quot;|O || align=&amp;quot;center&amp;quot;|x [http://www.atmel.com/technologies/lowpower/default.aspx] || align=&amp;quot;center&amp;quot;|x [http://www.microchip.com/pagehandler/en-us/technology/xlp/] || align=&amp;quot;center&amp;quot;|x || align=&amp;quot;center&amp;quot;|-&lt;br /&gt;
|-&lt;br /&gt;
| Experimentieren mit Multithreading, RTOS, Schedulern || align=&amp;quot;center&amp;quot;|x || align=&amp;quot;center&amp;quot;|O [http://www.freertos.org/a00098.html] [http://www.femtoos.org/] || align=&amp;quot;center&amp;quot;|O [http://www.microchip.com/stellent/idcplg?IdcService=SS_GET_PAGE&amp;amp;nodeId=1406&amp;amp;dDocName=en531543&amp;amp;redirects=rtos] || align=&amp;quot;center&amp;quot;|- || align=&amp;quot;center&amp;quot;|-&lt;br /&gt;
|-&lt;br /&gt;
| Besonders große, speicherintensive Programme&amp;lt;br&amp;gt;z.B. Grafiken, Fonts || align=&amp;quot;center&amp;quot;|x&amp;lt;br&amp;gt;bis 2MB Flash || align=&amp;quot;center&amp;quot;|bedingt, z.B. XMega&amp;lt;br&amp;gt;bis ??KB FLASH || align=&amp;quot;center&amp;quot;|O&amp;lt;br&amp;gt;bis ??KB FLASH || align=&amp;quot;center&amp;quot;|O&amp;lt;br&amp;gt;bis ??KB FLASH || align=&amp;quot;center&amp;quot;|-&lt;br /&gt;
|-&lt;br /&gt;
| Sehr viel PWM mit komplexem Timing || align=&amp;quot;center&amp;quot;|x || align=&amp;quot;center&amp;quot;|bedingt, AT90Spwm || align=&amp;quot;center&amp;quot;|O || align=&amp;quot;center&amp;quot;|O || align=&amp;quot;center&amp;quot;|-&lt;br /&gt;
|-&lt;br /&gt;
| Deutschsprachige Community || align=&amp;quot;center&amp;quot;|O || align=&amp;quot;center&amp;quot;|x || align=&amp;quot;center&amp;quot;|O || align=&amp;quot;center&amp;quot;|- || align=&amp;quot;center&amp;quot;|x&lt;br /&gt;
|-&lt;br /&gt;
| Anzahl möglicher HW-Breakpoints || align=&amp;quot;center&amp;quot;|6 || align=&amp;quot;center&amp;quot;|2 || align=&amp;quot;center&amp;quot;| 10 [http://www.microchip.com/stellent/groups/SiteComm_sg/documents/DeviceDoc/en556761.pdf] || align=&amp;quot;center&amp;quot;|2 || align=&amp;quot;center&amp;quot;|2&lt;br /&gt;
|}&lt;br /&gt;
* x = ja&lt;br /&gt;
* O = Teilweise, Einschränkungen&lt;br /&gt;
* - = nicht empfohlen&lt;br /&gt;
* ? = Bitte ergänzen&lt;br /&gt;
&lt;br /&gt;
Nur um nicht zu verwirren, auch wenn Teile &amp;quot;nicht empfohlen&amp;quot; sind, heißt dass nicht dass es mit dem Prozessor nicht geht, vielmehr dass es mehr Aufwand ist das zu realisieren oder mehr Einschränkungen hat.&lt;br /&gt;
&lt;br /&gt;
= Unwichtige Randbedingungen =&lt;br /&gt;
&lt;br /&gt;
Oftmals werden fälschlicherweise Argumente für oder gegen eine µC-Familie ausgesprochen, die in der Praxis &#039;&#039;&#039;zum Einstieg&#039;&#039;&#039; (bei konkreten Anwendungen kann das anders aussehen) eher unwichtig sind.&lt;br /&gt;
&lt;br /&gt;
* Spannungsversorgung 3,3V / 5V&lt;br /&gt;
* 8 (z.B. [[AVR]]), 16 (z.B. [[MSP430]]) oder 32 (z.B. [[STM32]]) Bit&lt;br /&gt;
* Interrupt System mit mehr oder weniger Features&lt;br /&gt;
* Programmiersprache (Assembler, Basic, C, C++, Pascal)&lt;br /&gt;
* Assembler verstehen (Sollte nur theoretisch verstanden werden, ein Programm sollte in einer Hochsprache geschrieben sein)&lt;br /&gt;
* DIL Gehäuse - steckbretttauglich (STM32-Prozessoren gibt es auch fertig gelötet auf einem steckbretttauglichen Board zum fünffachen Preis vergleichbarer DIL Mikrocontroller)&lt;br /&gt;
* Programmieradapter&lt;br /&gt;
* zu 90% reicht doch ein kleiner Prozessor ([[AVR]]/PIC) - und für die restlichen kann man immer noch einen großen nehmen. Warum also nicht gleich einen großen nehmen?&lt;br /&gt;
&lt;br /&gt;
= Kosten =&lt;br /&gt;
&lt;br /&gt;
Grobe Abschätzung was das alles denn kosten wird. Hier sind nur einige Beispiele gezeigt.&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|- bgcolor=&amp;quot;#d0d0ff&amp;quot;&lt;br /&gt;
! Board || [[STM32]] || [[AVR]] || PIC18/24/32 || [[MSP430]] || Arduino&lt;br /&gt;
|-&lt;br /&gt;
| Demo-Board || align=&amp;quot;center&amp;quot;|[http://www.st.com/web/en/catalog/tools/FM116/SC959/SS1532/PF252419] 9..20€ (incl. Programmieradapter und Debugger) || align=&amp;quot;center&amp;quot;|5..500€, z.B. Arduino || align=&amp;quot;center&amp;quot;| [http://www.microchipdirect.com/ProductDetails.aspx?Catalog=BuyMicrochip&amp;amp;Category=Starter%20Kits&amp;amp;mid=1&amp;amp;lmid=610 durchschnittlich 18€ .. 50€] || align=&amp;quot;center&amp;quot;|[http://www.ti.com/tool/msp-exp430fr5739] ~35€ || align=&amp;quot;center&amp;quot;|20€&lt;br /&gt;
|-&lt;br /&gt;
| Steckbrettaugliches Board || align=&amp;quot;center&amp;quot;| s.o. oder [http://re.reworld.eu/de/produkte/s64dil-405/index.htm S64DIL-405] 30€ || align=&amp;quot;center&amp;quot;|2-5€ als einzelner IC || align=&amp;quot;center&amp;quot;|2-5€ als einzelner IC || align=&amp;quot;center&amp;quot;|?? || align=&amp;quot;center&amp;quot;|??&lt;br /&gt;
|-&lt;br /&gt;
| Programmieradapter mit Debugger || align=&amp;quot;center&amp;quot;| s.o. oder z.B [http://www.segger.com/j-link-edu.html Segger J-LINK EDU] 50€ (sehr schnell und unterstützt viele Prozessoren) || align=&amp;quot;center&amp;quot;|?? || align=&amp;quot;center&amp;quot;|PICkit 3 30€ [http://www.microchipdirect.com/ProductSearch.aspx?keywords=PG164130] || align=&amp;quot;center&amp;quot;|z.B. Dragon 50€ || align=&amp;quot;center&amp;quot;|20€ (Man muss DebugWire aktivieren)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Das Demo-Board sollte ein Board sein, nicht zu teuer, um die ersten Erfahrungen zu sammeln. Wenn einem der Prozessor gefällt, so kann man später immer noch mit einem zweiten Demo-Board, z.B. mit Display aufrüsten.&lt;br /&gt;
&lt;br /&gt;
Wenn man gerne mit einem Steckbrett sich die Schaltung zusammen stecken möchte, so kann man entweder die benötigten Drähte am Demo-Board anlöten oder bei z.B. [[AVR]]/[[PIC]] Prozessoren gibt es Ausführungen im DIL Gehäuse, die direkt steckbar sind.&lt;br /&gt;
&lt;br /&gt;
Ein Programmieradapter sollte unbedingt auch einen Debugger beinhalten. Denn für den Start ist es ungemein hilfreich zu sehen was im Prozessor gerade geschieht. Die JTAG-Adapter für einen [[STM32]] Prozessor sind alle Debugger-Tauglich. Für einen [[AVR]] oder [[PIC]] Prozessor gibt es auch oft reine Programmer (oft Selbstbau-Lösungen über die serielle oder parallele Schnittstelle) welche den Mikrocontroller nur beschreiben können. Sinvoller sind hingegen Debugger (bspw. PIC Kit 3 [http://www.microchipdirect.com/ProductSearch.aspx?keywords=PG164130] kompatibel zu allen PIC Mikrocontrollern), die die Ausführung eines Mikrocontrollers anhalten können um die aktuelle Position im Programmcode, Variableninhalt, Register, ... auszulesen bzw. zur Laufzeit zu ändern.&lt;br /&gt;
&lt;br /&gt;
Der für den [[STM32]] empfohlene Segger J-LINK EDU ist zwar nicht der günstigste (z.B. auf einem STM32F4DISCOVERY Borad ist auch einer drauf den man für andere STM32 nutzen kann) aber eines der besten, mit sehr guten Software-Tools und nutzbar für alle Prozessoren mit ARM-Kern (ARM7/9/11/... Cortex-Mx). Niemals am Werkzeug sparen und man hat viel mehr Freude bei der Arbeit.&lt;br /&gt;
&lt;br /&gt;
Der &amp;quot;Arduino&amp;quot; ist kein eigenständiger Prozessor, sondern ein fertiges Board mit einer &amp;quot;Arduino&amp;quot; Programmierumgebung (und einem AVR Prozessor), extra geschaffen für Einsteiger. Allerdings ist da der Lerneffekt viel geringer da man den Prozessor mit der Arduino-Software programmiert und nicht direkt die Register.&lt;br /&gt;
&lt;br /&gt;
Ein [[PIC16]] ist ein älterer 8-Bit Mikrocontroller, der durch die [[PIC18]] Reihe abgelöst wurde. Werden komplexere Anforderungen in Zukunft an den Mikrocontroller gestellt (Audio, Grafik), so sollte zu den moderneren [[PIC24]] bzw. [[dsPIC]] (16-Bit) oder gar zu [[PIC32]] (32-Bit MIPS Prozessor) gegriffen werden, wobei letzterer von der Performance vergleichbar mit den STM32 ARM-basierten Mikrocontrollern ist.&lt;br /&gt;
&lt;br /&gt;
= Programmierumgebungen=&lt;br /&gt;
&lt;br /&gt;
Bei den Programmierumgebungen gibt es zu allen Prozessorfamilien kostenlose und Leistungsfähige Software&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|- bgcolor=&amp;quot;#d0d0ff&amp;quot;&lt;br /&gt;
! [[STM32]] || [[AVR]] || PIC || [[MSP430]] || Arduino&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot;|[http://www.coocox.org/CooCox_CoIDE.htm CooCox] || align=&amp;quot;center&amp;quot;|Atmel-Studio || align=&amp;quot;center&amp;quot;|[http://www.microchip.com/pagehandler/en-us/family/mplabx/ MPALB X] (IDE inklusive compiler) || align=&amp;quot;center&amp;quot;|?? || align=&amp;quot;center&amp;quot;|arduino 1.0.5&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
natürlich gibt es noch viele weitere (für STM32 siehe [[STM32#Programmierung]]), es sollte jedoch nur die einfachsten kostenlose (und ohne Codebegrenzung) für den ersten Einstieg gezeigt werden.&lt;br /&gt;
&lt;br /&gt;
* CooCox Anleitung wie man innerhalb einer Stunde die LED eines Nagel neuen STM32F4DISCOVERY Boards zum blinken bekommt, Artikel: [[STM32 CooCox Installation]]. Diese Anleitung ist eine Schritt-Für-Schritt Anleitung um den aller ersten Start zu vereinfachen.&lt;br /&gt;
&lt;br /&gt;
= Dokumentation=&lt;br /&gt;
&lt;br /&gt;
Bevor man sich für einen Prozessor entscheidet sollte man unbedingt deren Dokumentation mal zumindest überfliegen und auch deren Errata&#039;s lesen. Nicht dass man eine Anwendung erstellen möchte und stellt hinterher fest, dass genau dieser Teil so buggy ist das er nicht genutzt werden kann.&lt;br /&gt;
&lt;br /&gt;
Beim [[STM32]] hat die Dokumentation doch recht viele Seiten, viel mehr als bei einem [[AVR]] oder PIC. Dabei ist vieles eher knapp beschrieben, man muss mehr suchen als z.B. bei den AVR-Dokus, um die gewünschten Informationen zu finden. Außerdem gibt es durchaus einige Unklarheiten und Fehler/Widersprüche. Schlussendlich ist es Geschmackssache mit welcher Doku von welchem Hersteller man sich besser zurecht findet.&lt;br /&gt;
&lt;br /&gt;
Bei den PICs gibt es zu jedem Mikrocontroller ein Datenblatt das die wichtigsten Informationen für den alltäglichen Gebrauch enthält. Da bestimmte Peripherie (bspw. I2C, SPI, ... ) aber sehr komplex ist und innerhalb einer Familie (PIC16/18/24/32) sich identisch verhält, gibt es zu jeder Familie die sogenannten Family-Datasheets, welche alle Module im Detail beschreiben.&lt;br /&gt;
&lt;br /&gt;
Parallel zur Dokumentation sollte man sich auch die Demo-Beispiele der Hersteller anschauen, dann wird vieles gleich verständlicher.&lt;br /&gt;
&lt;br /&gt;
Eine Übersicht über die Funktionen gibt es im Artikel: [[STM32]]&lt;br /&gt;
&lt;br /&gt;
= Die Arbeit mit dem STM32=&lt;br /&gt;
&lt;br /&gt;
Zu erst einmal SOOO groß sind die Unterschiede zwischen den einzelnen Prozessoren nicht. Alle haben Ein-/Ausgänge und um mittels einem Port-Pin eine LED ansteuern zu können muss bei jedem Prozessor der Pin erst einmal parametriert werden, egal ob das jetzt ein STM32 oder ein AVR oder ein MSP430 ist. Nur hat man bei einem STM32 doch einige Funktionen mehr, z.B. zuschaltbarer Pull-Up oder Pull-Down Widerstand und spezielle Setz-Rücksetzregister, die andere Prozessoren nicht haben, jedoch das programmieren vereinfachen.&lt;br /&gt;
Der Haupt-Unterschied zu den anderen Prozessoren ist, dass der [[STM32]] so viele Peripherie-Module beherbergt, dass man die einzeln immer mit einem Clock aktivieren muss, denn damit lässt sich viel Strom sparen.&lt;br /&gt;
&lt;br /&gt;
Und mal ganz ehrlich die Diskussion welcher µc einfacher zu konfigurieren ist, ist doch absoluter Unsinn. Der Weg ist immer der Gleiche:&lt;br /&gt;
*1. Blick ins Datenblatt welche Register für diese Funktion benötigt werden.&lt;br /&gt;
*2. Werte ermitteln die in die Register eingetragen werden.&lt;br /&gt;
*3. Werte ins Register schreiben. Da machte es GAR KEINEN UNTERSCHIED ob es ein [[AVR]], 8051/2, ARM,...... ist.&lt;br /&gt;
&lt;br /&gt;
Stimmt schon es gibt Unterschiede. Die Register haben anderen Namen, andere Adressen, andere Bitbedeutungen,...&lt;br /&gt;
Aber es steht doch alles im Datenblatt. Und ob ich jetzt einen [[AVR]] oder einen ARM das erste mal vor mir liegen hab. Ich brauch in allen Fällen die oben beschriebenen Schritte.&lt;br /&gt;
&lt;br /&gt;
Das Interruptsystem ist bei einem STM32 zusätzlich priorisiert, damit kann man festlegen welcher Interrupt vorrangig bearbeitet wird. Die Prioritätenvergabe ist auch kein Hexenwerk.&lt;br /&gt;
&lt;br /&gt;
Zu allen Prozessoren liefern die jeweiligen Hersteller umfangreiche Demo-Codes und Libraries mit. Meist sind alle in C geschrieben, daher sollte auch die Programmiersprache C verwendet werden. Vor allem auch wenn man berufliche Absichten verfolgt.&lt;br /&gt;
&lt;br /&gt;
Und wenn man einen STM32 kann, dann ist ein Umstieg auf einen LPC17xx (NXP) oder andere Hersteller überhaupt kein Problem, denn die bieten ebenfalls Prozessoren mit Cortex-M3 Kern und man kann diese mit der gleichen Programmierumgebung programmieren. Somit ist man nicht zwingend Herstellerabhängig.&lt;br /&gt;
&lt;br /&gt;
Mit einem STM32 kann man als Hobby-Baster und Professionell nahezu alle Anwendungen realisieren. Der hat genügend RAM und FLASH Speicher und auch genügen Geschwindigkeit. Viele Gehäuse-Varianten um kleine bis hin zu größere Geräte zu erstellen. Viele Schnittstellen, sind im Artikel [[STM32]] beschrieben.&lt;br /&gt;
&lt;br /&gt;
Der einzige Nachteil beim STM32: man muss etwas mehr lesen, da eine Peripherie doch viel mehr Funktionalität hat. Ansonsten kenne ich nicht wirklich einen Grund warum man als Neueinsteiger keinen STM32 nehmen sollte.&lt;br /&gt;
&lt;br /&gt;
= Programmiersprachen =&lt;br /&gt;
* Wie bei vielen anderen Controllern wird beim STM32 auch hauptsächlich C und C++ verwendet. Kennen sollte man die Programmiersprache C schon, wenn man davon noch keine Ahnung hat dann sollte man erst mal mittels einem Tutorial auf einem PC ein Konsoleprogramm schreiben, sodass man es einigermaßen kennen lernt. Hier im Forum gibt es ebenfalls Artikel dazu. Zielt man auf die (spätere) Anwendung in der Industrie, sollte aufgrund der Verbreitung auf jeden Fall C (oder C++) gewählt werden; außerdem sind die meisten verfügbaren Libraries in C geschrieben.&lt;br /&gt;
* Assembler sollte man nur grob verstehen, Details wie ein Befehl arbeitet ist unwichtig. Selbst wenn man die Zyklen für einen Funktionsaufruf wissen will, so bietet der STM32 (Cortex-M3) einen Cycle-Counter den man auslesen kann; durch die komplexere Pipeline und Cache-Effekte sind die Laufzeiten allerdings nicht genau vorhersehbar. Wird zyklengenause Timing benötigt, sollten Timer verwendet werden - davon hat der STM32 genug.&lt;br /&gt;
&lt;br /&gt;
Der 32bit-Adressraum, der RAM, Flash, I/O-Register vereinheitlicht ansprechen kann (im Gegensatz zu z.B. AVR) ist ideal für eine Verwendung durch Hochsprachen; bei Pointern muss keine zusätzliche Information verwaltet werden, in welche Art Speicher sie zeigen. Die Adresse gibt dies eindeutig an (es gibt nur &#039;&#039;&#039;eine&#039;&#039;&#039; Adresse 42, und nicht 2 wie bei es für Harvard-Architekturen eigentlich typisch ist (Programmspeicher und Datenspeicher, also z.B. Flash und RAM/IO) und die Hardware spricht automatisch den richtigen Speicher an. Die Möglichkeiten zur Offset-Adressierung, der Barrel-Shifter, Divsions-Einheit, die FPU (bei STM32F4), Interrupt-Modell etc. begünstigen ebenfalls die Erzeugung effizienteren Codes. Außerdem haben die STM32 einfach mehr &amp;quot;rohe Leistung&amp;quot;, d.h. mehr Flash/RAM-Speicher und höhere Taktfrequenzen.&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Folgerung&#039;&#039;&#039;: Die Programmierung in Hochsprachen ist &#039;&#039;&#039;bequemer als bei 8-Bittern&#039;&#039;&#039;, denn man muss sich einfach weniger Gedanken machen, ob der Compiler ein Programm nun effizent umsetzen kann (kann man natürlich trotzdem machen, um noch mehr Leistung &amp;quot;herauszuquetschen&amp;quot;, wenn man will).&lt;br /&gt;
&lt;br /&gt;
= Weitere Randbedingungen für die Entscheidung=&lt;br /&gt;
&lt;br /&gt;
Der wichtige Punkt, der oftmals auch vergessen wird: die Beschaffbarkeit. Wenn jemand einen Renesas M16C oder Fujitsu empfiehlt, dann sucht man erst mal und findet nur wenige vereinzelte die man privat kaufen kann.&lt;br /&gt;
&lt;br /&gt;
Oder auch die Unterstützung im Internet - ist bei einigen Exoten spärlich. Dieses Forum bietet die beste Hilfe für [[AVR]], PIC, [[STM32]] und [[MSP430]].&lt;br /&gt;
&lt;br /&gt;
Andere Prozessoren sind schon sehr alt, bzw. nicht mehr modern da deren Peripherie zum Teil doch recht eingeschränkte Funktionalität bietet. z.B. viele 8051 Typen oder PIC16. Die mögen für Mini-Anwenungen gut sein, aber wer will den schon gerne sich extra für eine Kleinanwendung mit einem kleinen µC auseinandersetzen, wenn er schon einen STM32 kennt, mit dem er alles machen kann (und sich bereits gute Funktionen geschrieben hat)?&lt;br /&gt;
&lt;br /&gt;
Daher mein Resümee: wer nicht gerade auf den Kopf gefallen ist, der kann getrost mit einem STM32 starten. Ein [http://www.st.com/web/en/catalog/tools/FM116/SC959/SS1532/PF252419?s_searchtype=keyword STM32F4DISCOVERY] Board kostet nur ca. 20 EUR - und mehr muss für den ersten Start nicht investiert werden - wenn es doch zu komplex sein sollte gibt es hier im Forum auch Hilfe oder man nimmt erst mal ein &amp;quot;Arduino&amp;quot;. Jedenfalls sind diese 20 EUR wirklich keine große Investition.&lt;br /&gt;
&lt;br /&gt;
= Weblinks, Foren, Communities, Tutorials =&lt;br /&gt;
* [[STM32]] Hauptartikel, [http://www.mikrocontroller.net/articles/STM32#Weblinks.2C_Foren.2C_Communities.2C_Tutorials dortige Linksammlung]&lt;br /&gt;
* [http://www.mikrocontroller.net/topic/319328 Diskussion zum Artikel]&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>Frank m35</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=STM32_f%C3%BCr_Einsteiger&amp;diff=80303</id>
		<title>STM32 für Einsteiger</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=STM32_f%C3%BCr_Einsteiger&amp;diff=80303"/>
		<updated>2013-12-30T20:47:50Z</updated>

		<summary type="html">&lt;p&gt;Frank m35: /* Eigene Fähigkeiten und Wünsche */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Immer wiederkehrend hier im Forum &amp;quot;Mit welchem Mikrocontroller anfangen?&amp;quot;. Es gibt eine große Auswahl und eben so viele Empfehlungen. In diesem Artikel soll zu erst geholfen werden ob ein STM32-Prozessor mit Cortex-M3/M4 Kern überhaupt der Richtige für den Start ist.&lt;br /&gt;
Nicht für jeden ist der STM32 zu empfehlen, denn die Anforderungen und Wünsche die man realisieren möchte, sowie die eigenen Fähigkeiten sind verschieden.&lt;br /&gt;
&lt;br /&gt;
Es werden meist die Prozessoren AVR, PIC, Arduino, MSP430 und STM32 empfohlen. Seltener auch 8051, LPC und M16C. Alle haben Vorzüge und ebenso auch Nachteile.&lt;br /&gt;
&lt;br /&gt;
= Eigene Fähigkeiten und Wünsche =&lt;br /&gt;
&lt;br /&gt;
Dieser Artikel geht davon aus, dass bereits Elektronik Kenntnisse vorhanden sind. Wenn nicht dann sollte man erst einmal den Artikel &amp;quot;[[Absolute Beginner]]&amp;quot; durcharbeiten, sowie die anderen Artikel aus der Kategorie &amp;quot;[http://www.mikrocontroller.net/articles/Kategorie:Grundlagen Grundlagen]&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Zu erst einmal die Randbedingungen, mit der man sich selbst zu erst einmal einschätzen sollte:&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|- bgcolor=&amp;quot;#d0d0ff&amp;quot;&lt;br /&gt;
! Fähigkeit || Empfehlung [[STM32]] || Empfehlung [[AVR]] || Empfehlung PIC || Empfehlung [[MSP430]] || Empfehlung Arduino&lt;br /&gt;
|-&lt;br /&gt;
| Neueinsteiger, kaum Elektronikkenntnisse, noch nie programmiert || align=&amp;quot;center&amp;quot;|O || align=&amp;quot;center&amp;quot;|O [http://www.rn-wissen.de/index.php/AVR-Einstieg_leicht_gemacht] [http://www.avr-asm-tutorial.net/avr_de/] || align=&amp;quot;center&amp;quot;|O [http://www.sprut.de/] || align=&amp;quot;center&amp;quot;|O || align=&amp;quot;center&amp;quot;|x&lt;br /&gt;
|-&lt;br /&gt;
| Wunsch ist SD-Card oder Grafik-Display || align=&amp;quot;center&amp;quot;|x || align=&amp;quot;center&amp;quot;|x || align=&amp;quot;center&amp;quot;|x [http://www.microchip.com/stellent/idcplg?IdcService=SS_GET_PAGE&amp;amp;nodeId=2680&amp;amp;dDocName=en537999] [http://www.microchip.com/pagehandler/en-us/technology/graphics/] || align=&amp;quot;center&amp;quot;|x || align=&amp;quot;center&amp;quot;|x&lt;br /&gt;
|-&lt;br /&gt;
| Wunsch ist TCP/IP Netzwerk oder Kamera|| align=&amp;quot;center&amp;quot;|x || align=&amp;quot;center&amp;quot;|O || align=&amp;quot;center&amp;quot;|x [http://www.microchip.com/stellent/idcplg?IdcService=SS_GET_PAGE&amp;amp;nodeId=2505&amp;amp;param=en535724] || align=&amp;quot;center&amp;quot;|O || align=&amp;quot;center&amp;quot;|O&lt;br /&gt;
|-&lt;br /&gt;
| Möchte die Erkenntnisse beruflich nutzen|| align=&amp;quot;center&amp;quot;|x || align=&amp;quot;center&amp;quot;|x || align=&amp;quot;center&amp;quot;|x || align=&amp;quot;center&amp;quot;|x || align=&amp;quot;center&amp;quot;|-&lt;br /&gt;
|-&lt;br /&gt;
| Strom sparende Anwendungen|| align=&amp;quot;center&amp;quot;|O || align=&amp;quot;center&amp;quot;|x [http://www.atmel.com/technologies/lowpower/default.aspx] || align=&amp;quot;center&amp;quot;|x [http://www.microchip.com/pagehandler/en-us/technology/xlp/] || align=&amp;quot;center&amp;quot;|x || align=&amp;quot;center&amp;quot;|-&lt;br /&gt;
|-&lt;br /&gt;
| Experimentieren mit Multithreading, RTOS, Schedulern || align=&amp;quot;center&amp;quot;|x || align=&amp;quot;center&amp;quot;|O [http://www.freertos.org/a00098.html] [http://www.femtoos.org/] || align=&amp;quot;center&amp;quot;|O [http://www.microchip.com/stellent/idcplg?IdcService=SS_GET_PAGE&amp;amp;nodeId=1406&amp;amp;dDocName=en531543&amp;amp;redirects=rtos] || align=&amp;quot;center&amp;quot;|- || align=&amp;quot;center&amp;quot;|-&lt;br /&gt;
|-&lt;br /&gt;
| Besonders große, speicherintensive Programme&amp;lt;br&amp;gt;z.B. Grafiken, Fonts || align=&amp;quot;center&amp;quot;|x&amp;lt;br&amp;gt;bis 2MB Flash || align=&amp;quot;center&amp;quot;|bedingt, z.B. XMega&amp;lt;br&amp;gt;bis ??KB FLASH || align=&amp;quot;center&amp;quot;|O&amp;lt;br&amp;gt;bis ??KB FLASH || align=&amp;quot;center&amp;quot;|O&amp;lt;br&amp;gt;bis ??KB FLASH || align=&amp;quot;center&amp;quot;|-&lt;br /&gt;
|-&lt;br /&gt;
| Sehr viel PWM mit komplexem Timing || align=&amp;quot;center&amp;quot;|x || align=&amp;quot;center&amp;quot;|bedingt, AT90Spwm || align=&amp;quot;center&amp;quot;|O || align=&amp;quot;center&amp;quot;|O || align=&amp;quot;center&amp;quot;|-&lt;br /&gt;
|-&lt;br /&gt;
| Deutschsprachige Community || align=&amp;quot;center&amp;quot;|O || align=&amp;quot;center&amp;quot;|x || align=&amp;quot;center&amp;quot;|O || align=&amp;quot;center&amp;quot;|- || align=&amp;quot;center&amp;quot;|x&lt;br /&gt;
|-&lt;br /&gt;
| Anzahl möglicher HW-Breakpoints || align=&amp;quot;center&amp;quot;|6 || align=&amp;quot;center&amp;quot;|2 || align=&amp;quot;center&amp;quot;|1..10 [http://www.microchip.com/stellent/groups/SiteComm_sg/documents/DeviceDoc/en556761.pdf] || align=&amp;quot;center&amp;quot;|2 || align=&amp;quot;center&amp;quot;|2&lt;br /&gt;
|}&lt;br /&gt;
* x = ja&lt;br /&gt;
* O = Teilweise, Einschränkungen&lt;br /&gt;
* - = nicht empfohlen&lt;br /&gt;
* ? = Bitte ergänzen&lt;br /&gt;
&lt;br /&gt;
Nur um nicht zu verwirren, auch wenn Teile &amp;quot;nicht empfohlen&amp;quot; sind, heißt dass nicht dass es mit dem Prozessor nicht geht, vielmehr dass es mehr Aufwand ist das zu realisieren oder mehr Einschränkungen hat.&lt;br /&gt;
&lt;br /&gt;
= Unwichtige Randbedingungen =&lt;br /&gt;
&lt;br /&gt;
Oftmals werden fälschlicherweise Argumente für oder gegen eine µC-Familie ausgesprochen, die in der Praxis &#039;&#039;&#039;zum Einstieg&#039;&#039;&#039; (bei konkreten Anwendungen kann das anders aussehen) eher unwichtig sind.&lt;br /&gt;
&lt;br /&gt;
* Spannungsversorgung 3,3V / 5V&lt;br /&gt;
* 8 (z.B. [[AVR]]), 16 (z.B. [[MSP430]]) oder 32 (z.B. [[STM32]]) Bit&lt;br /&gt;
* Interrupt System mit mehr oder weniger Features&lt;br /&gt;
* Programmiersprache (Assembler, Basic, C, C++, Pascal)&lt;br /&gt;
* Assembler verstehen (Sollte nur theoretisch verstanden werden, ein Programm sollte in einer Hochsprache geschrieben sein)&lt;br /&gt;
* DIL Gehäuse - steckbretttauglich (STM32-Prozessoren gibt es auch fertig gelötet auf einem steckbretttauglichen Board zum fünffachen Preis vergleichbarer DIL Mikrocontroller)&lt;br /&gt;
* Programmieradapter&lt;br /&gt;
* zu 90% reicht doch ein kleiner Prozessor ([[AVR]]/PIC) - und für die restlichen kann man immer noch einen großen nehmen. Warum also nicht gleich einen großen nehmen?&lt;br /&gt;
&lt;br /&gt;
= Kosten =&lt;br /&gt;
&lt;br /&gt;
Grobe Abschätzung was das alles denn kosten wird. Hier sind nur einige Beispiele gezeigt.&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|- bgcolor=&amp;quot;#d0d0ff&amp;quot;&lt;br /&gt;
! Board || [[STM32]] || [[AVR]] || PIC18/24/32 || [[MSP430]] || Arduino&lt;br /&gt;
|-&lt;br /&gt;
| Demo-Board || align=&amp;quot;center&amp;quot;|[http://www.st.com/web/en/catalog/tools/FM116/SC959/SS1532/PF252419] 9..20€ (incl. Programmieradapter und Debugger) || align=&amp;quot;center&amp;quot;|5..500€, z.B. Arduino || align=&amp;quot;center&amp;quot;| [http://www.microchipdirect.com/ProductDetails.aspx?Catalog=BuyMicrochip&amp;amp;Category=Starter%20Kits&amp;amp;mid=1&amp;amp;lmid=610 durchschnittlich 18€ .. 50€] || align=&amp;quot;center&amp;quot;|[http://www.ti.com/tool/msp-exp430fr5739] ~35€ || align=&amp;quot;center&amp;quot;|20€&lt;br /&gt;
|-&lt;br /&gt;
| Steckbrettaugliches Board || align=&amp;quot;center&amp;quot;| s.o. oder [http://re.reworld.eu/de/produkte/s64dil-405/index.htm S64DIL-405] 30€ || align=&amp;quot;center&amp;quot;|2-5€ als einzelner IC || align=&amp;quot;center&amp;quot;|2-5€ als einzelner IC || align=&amp;quot;center&amp;quot;|?? || align=&amp;quot;center&amp;quot;|??&lt;br /&gt;
|-&lt;br /&gt;
| Programmieradapter mit Debugger || align=&amp;quot;center&amp;quot;| s.o. oder z.B [http://www.segger.com/j-link-edu.html Segger J-LINK EDU] 50€ (sehr schnell und unterstützt viele Prozessoren) || align=&amp;quot;center&amp;quot;|?? || align=&amp;quot;center&amp;quot;|PICkit 3 30€ [http://www.microchipdirect.com/ProductSearch.aspx?keywords=PG164130] || align=&amp;quot;center&amp;quot;|z.B. Dragon 50€ || align=&amp;quot;center&amp;quot;|20€ (Man muss DebugWire aktivieren)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Das Demo-Board sollte ein Board sein, nicht zu teuer, um die ersten Erfahrungen zu sammeln. Wenn einem der Prozessor gefällt, so kann man später immer noch mit einem zweiten Demo-Board, z.B. mit Display aufrüsten.&lt;br /&gt;
&lt;br /&gt;
Wenn man gerne mit einem Steckbrett sich die Schaltung zusammen stecken möchte, so kann man entweder die benötigten Drähte am Demo-Board anlöten oder bei z.B. [[AVR]]/[[PIC]] Prozessoren gibt es Ausführungen im DIL Gehäuse, die direkt steckbar sind.&lt;br /&gt;
&lt;br /&gt;
Ein Programmieradapter sollte unbedingt auch einen Debugger beinhalten. Denn für den Start ist es ungemein hilfreich zu sehen was im Prozessor gerade geschieht. Die JTAG-Adapter für einen [[STM32]] Prozessor sind alle Debugger-Tauglich. Für einen [[AVR]] oder [[PIC]] Prozessor gibt es auch oft reine Programmer (oft Selbstbau-Lösungen über die serielle oder parallele Schnittstelle) welche den Mikrocontroller nur beschreiben können. Sinvoller sind hingegen Debugger (bspw. PIC Kit 3 [http://www.microchipdirect.com/ProductSearch.aspx?keywords=PG164130] kompatibel zu allen PIC Mikrocontrollern), die die Ausführung eines Mikrocontrollers anhalten können um die aktuelle Position im Programmcode, Variableninhalt, Register, ... auszulesen bzw. zur Laufzeit zu ändern.&lt;br /&gt;
&lt;br /&gt;
Der für den [[STM32]] empfohlene Segger J-LINK EDU ist zwar nicht der günstigste (z.B. auf einem STM32F4DISCOVERY Borad ist auch einer drauf den man für andere STM32 nutzen kann) aber eines der besten, mit sehr guten Software-Tools und nutzbar für alle Prozessoren mit ARM-Kern (ARM7/9/11/... Cortex-Mx). Niemals am Werkzeug sparen und man hat viel mehr Freude bei der Arbeit.&lt;br /&gt;
&lt;br /&gt;
Der &amp;quot;Arduino&amp;quot; ist kein eigenständiger Prozessor, sondern ein fertiges Board mit einer &amp;quot;Arduino&amp;quot; Programmierumgebung (und einem AVR Prozessor), extra geschaffen für Einsteiger. Allerdings ist da der Lerneffekt viel geringer da man den Prozessor mit der Arduino-Software programmiert und nicht direkt die Register.&lt;br /&gt;
&lt;br /&gt;
Ein [[PIC16]] ist ein älterer 8-Bit Mikrocontroller, der durch die [[PIC18]] Reihe abgelöst wurde. Werden komplexere Anforderungen in Zukunft an den Mikrocontroller gestellt (Audio, Grafik), so sollte zu den moderneren [[PIC24]] bzw. [[dsPIC]] (16-Bit) oder gar zu [[PIC32]] (32-Bit MIPS Prozessor) gegriffen werden, wobei letzterer von der Performance vergleichbar mit den STM32 ARM-basierten Mikrocontrollern ist.&lt;br /&gt;
&lt;br /&gt;
= Programmierumgebungen=&lt;br /&gt;
&lt;br /&gt;
Bei den Programmierumgebungen gibt es zu allen Prozessorfamilien kostenlose und Leistungsfähige Software&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|- bgcolor=&amp;quot;#d0d0ff&amp;quot;&lt;br /&gt;
! [[STM32]] || [[AVR]] || PIC || [[MSP430]] || Arduino&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot;|[http://www.coocox.org/CooCox_CoIDE.htm CooCox] || align=&amp;quot;center&amp;quot;|Atmel-Studio || align=&amp;quot;center&amp;quot;|[http://www.microchip.com/pagehandler/en-us/family/mplabx/ MPALB X] (IDE inklusive compiler) || align=&amp;quot;center&amp;quot;|?? || align=&amp;quot;center&amp;quot;|arduino 1.0.5&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
natürlich gibt es noch viele weitere (für STM32 siehe [[STM32#Programmierung]]), es sollte jedoch nur die einfachsten kostenlose (und ohne Codebegrenzung) für den ersten Einstieg gezeigt werden.&lt;br /&gt;
&lt;br /&gt;
* CooCox Anleitung wie man innerhalb einer Stunde die LED eines Nagel neuen STM32F4DISCOVERY Boards zum blinken bekommt, Artikel: [[STM32 CooCox Installation]]. Diese Anleitung ist eine Schritt-Für-Schritt Anleitung um den aller ersten Start zu vereinfachen.&lt;br /&gt;
&lt;br /&gt;
= Dokumentation=&lt;br /&gt;
&lt;br /&gt;
Bevor man sich für einen Prozessor entscheidet sollte man unbedingt deren Dokumentation mal zumindest überfliegen und auch deren Errata&#039;s lesen. Nicht dass man eine Anwendung erstellen möchte und stellt hinterher fest, dass genau dieser Teil so buggy ist das er nicht genutzt werden kann.&lt;br /&gt;
&lt;br /&gt;
Beim [[STM32]] hat die Dokumentation doch recht viele Seiten, viel mehr als bei einem [[AVR]] oder PIC. Dabei ist vieles eher knapp beschrieben, man muss mehr suchen als z.B. bei den AVR-Dokus, um die gewünschten Informationen zu finden. Außerdem gibt es durchaus einige Unklarheiten und Fehler/Widersprüche. Schlussendlich ist es Geschmackssache mit welcher Doku von welchem Hersteller man sich besser zurecht findet.&lt;br /&gt;
&lt;br /&gt;
Bei den PICs gibt es zu jedem Mikrocontroller ein Datenblatt das die wichtigsten Informationen für den alltäglichen Gebrauch enthält. Da bestimmte Peripherie (bspw. I2C, SPI, ... ) aber sehr komplex ist und innerhalb einer Familie (PIC16/18/24/32) sich identisch verhält, gibt es zu jeder Familie die sogenannten Family-Datasheets, welche alle Module im Detail beschreiben.&lt;br /&gt;
&lt;br /&gt;
Parallel zur Dokumentation sollte man sich auch die Demo-Beispiele der Hersteller anschauen, dann wird vieles gleich verständlicher.&lt;br /&gt;
&lt;br /&gt;
Eine Übersicht über die Funktionen gibt es im Artikel: [[STM32]]&lt;br /&gt;
&lt;br /&gt;
= Die Arbeit mit dem STM32=&lt;br /&gt;
&lt;br /&gt;
Zu erst einmal SOOO groß sind die Unterschiede zwischen den einzelnen Prozessoren nicht. Alle haben Ein-/Ausgänge und um mittels einem Port-Pin eine LED ansteuern zu können muss bei jedem Prozessor der Pin erst einmal parametriert werden, egal ob das jetzt ein STM32 oder ein AVR oder ein MSP430 ist. Nur hat man bei einem STM32 doch einige Funktionen mehr, z.B. zuschaltbarer Pull-Up oder Pull-Down Widerstand und spezielle Setz-Rücksetzregister, die andere Prozessoren nicht haben, jedoch das programmieren vereinfachen.&lt;br /&gt;
Der Haupt-Unterschied zu den anderen Prozessoren ist, dass der [[STM32]] so viele Peripherie-Module beherbergt, dass man die einzeln immer mit einem Clock aktivieren muss, denn damit lässt sich viel Strom sparen.&lt;br /&gt;
&lt;br /&gt;
Und mal ganz ehrlich die Diskussion welcher µc einfacher zu konfigurieren ist, ist doch absoluter Unsinn. Der Weg ist immer der Gleiche:&lt;br /&gt;
*1. Blick ins Datenblatt welche Register für diese Funktion benötigt werden.&lt;br /&gt;
*2. Werte ermitteln die in die Register eingetragen werden.&lt;br /&gt;
*3. Werte ins Register schreiben. Da machte es GAR KEINEN UNTERSCHIED ob es ein [[AVR]], 8051/2, ARM,...... ist.&lt;br /&gt;
&lt;br /&gt;
Stimmt schon es gibt Unterschiede. Die Register haben anderen Namen, andere Adressen, andere Bitbedeutungen,...&lt;br /&gt;
Aber es steht doch alles im Datenblatt. Und ob ich jetzt einen [[AVR]] oder einen ARM das erste mal vor mir liegen hab. Ich brauch in allen Fällen die oben beschriebenen Schritte.&lt;br /&gt;
&lt;br /&gt;
Das Interruptsystem ist bei einem STM32 zusätzlich priorisiert, damit kann man festlegen welcher Interrupt vorrangig bearbeitet wird. Die Prioritätenvergabe ist auch kein Hexenwerk.&lt;br /&gt;
&lt;br /&gt;
Zu allen Prozessoren liefern die jeweiligen Hersteller umfangreiche Demo-Codes und Libraries mit. Meist sind alle in C geschrieben, daher sollte auch die Programmiersprache C verwendet werden. Vor allem auch wenn man berufliche Absichten verfolgt.&lt;br /&gt;
&lt;br /&gt;
Und wenn man einen STM32 kann, dann ist ein Umstieg auf einen LPC17xx (NXP) oder andere Hersteller überhaupt kein Problem, denn die bieten ebenfalls Prozessoren mit Cortex-M3 Kern und man kann diese mit der gleichen Programmierumgebung programmieren. Somit ist man nicht zwingend Herstellerabhängig.&lt;br /&gt;
&lt;br /&gt;
Mit einem STM32 kann man als Hobby-Baster und Professionell nahezu alle Anwendungen realisieren. Der hat genügend RAM und FLASH Speicher und auch genügen Geschwindigkeit. Viele Gehäuse-Varianten um kleine bis hin zu größere Geräte zu erstellen. Viele Schnittstellen, sind im Artikel [[STM32]] beschrieben.&lt;br /&gt;
&lt;br /&gt;
Der einzige Nachteil beim STM32: man muss etwas mehr lesen, da eine Peripherie doch viel mehr Funktionalität hat. Ansonsten kenne ich nicht wirklich einen Grund warum man als Neueinsteiger keinen STM32 nehmen sollte.&lt;br /&gt;
&lt;br /&gt;
= Programmiersprachen =&lt;br /&gt;
* Wie bei vielen anderen Controllern wird beim STM32 auch hauptsächlich C und C++ verwendet. Kennen sollte man die Programmiersprache C schon, wenn man davon noch keine Ahnung hat dann sollte man erst mal mittels einem Tutorial auf einem PC ein Konsoleprogramm schreiben, sodass man es einigermaßen kennen lernt. Hier im Forum gibt es ebenfalls Artikel dazu. Zielt man auf die (spätere) Anwendung in der Industrie, sollte aufgrund der Verbreitung auf jeden Fall C (oder C++) gewählt werden; außerdem sind die meisten verfügbaren Libraries in C geschrieben.&lt;br /&gt;
* Assembler sollte man nur grob verstehen, Details wie ein Befehl arbeitet ist unwichtig. Selbst wenn man die Zyklen für einen Funktionsaufruf wissen will, so bietet der STM32 (Cortex-M3) einen Cycle-Counter den man auslesen kann; durch die komplexere Pipeline und Cache-Effekte sind die Laufzeiten allerdings nicht genau vorhersehbar. Wird zyklengenause Timing benötigt, sollten Timer verwendet werden - davon hat der STM32 genug.&lt;br /&gt;
&lt;br /&gt;
Der 32bit-Adressraum, der RAM, Flash, I/O-Register vereinheitlicht ansprechen kann (im Gegensatz zu z.B. AVR) ist ideal für eine Verwendung durch Hochsprachen; bei Pointern muss keine zusätzliche Information verwaltet werden, in welche Art Speicher sie zeigen. Die Adresse gibt dies eindeutig an (es gibt nur &#039;&#039;&#039;eine&#039;&#039;&#039; Adresse 42, und nicht 2 wie bei es für Harvard-Architekturen eigentlich typisch ist (Programmspeicher und Datenspeicher, also z.B. Flash und RAM/IO) und die Hardware spricht automatisch den richtigen Speicher an. Die Möglichkeiten zur Offset-Adressierung, der Barrel-Shifter, Divsions-Einheit, die FPU (bei STM32F4), Interrupt-Modell etc. begünstigen ebenfalls die Erzeugung effizienteren Codes. Außerdem haben die STM32 einfach mehr &amp;quot;rohe Leistung&amp;quot;, d.h. mehr Flash/RAM-Speicher und höhere Taktfrequenzen.&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Folgerung&#039;&#039;&#039;: Die Programmierung in Hochsprachen ist &#039;&#039;&#039;bequemer als bei 8-Bittern&#039;&#039;&#039;, denn man muss sich einfach weniger Gedanken machen, ob der Compiler ein Programm nun effizent umsetzen kann (kann man natürlich trotzdem machen, um noch mehr Leistung &amp;quot;herauszuquetschen&amp;quot;, wenn man will).&lt;br /&gt;
&lt;br /&gt;
= Weitere Randbedingungen für die Entscheidung=&lt;br /&gt;
&lt;br /&gt;
Der wichtige Punkt, der oftmals auch vergessen wird: die Beschaffbarkeit. Wenn jemand einen Renesas M16C oder Fujitsu empfiehlt, dann sucht man erst mal und findet nur wenige vereinzelte die man privat kaufen kann.&lt;br /&gt;
&lt;br /&gt;
Oder auch die Unterstützung im Internet - ist bei einigen Exoten spärlich. Dieses Forum bietet die beste Hilfe für [[AVR]], PIC, [[STM32]] und [[MSP430]].&lt;br /&gt;
&lt;br /&gt;
Andere Prozessoren sind schon sehr alt, bzw. nicht mehr modern da deren Peripherie zum Teil doch recht eingeschränkte Funktionalität bietet. z.B. viele 8051 Typen oder PIC16. Die mögen für Mini-Anwenungen gut sein, aber wer will den schon gerne sich extra für eine Kleinanwendung mit einem kleinen µC auseinandersetzen, wenn er schon einen STM32 kennt, mit dem er alles machen kann (und sich bereits gute Funktionen geschrieben hat)?&lt;br /&gt;
&lt;br /&gt;
Daher mein Resümee: wer nicht gerade auf den Kopf gefallen ist, der kann getrost mit einem STM32 starten. Ein [http://www.st.com/web/en/catalog/tools/FM116/SC959/SS1532/PF252419?s_searchtype=keyword STM32F4DISCOVERY] Board kostet nur ca. 20 EUR - und mehr muss für den ersten Start nicht investiert werden - wenn es doch zu komplex sein sollte gibt es hier im Forum auch Hilfe oder man nimmt erst mal ein &amp;quot;Arduino&amp;quot;. Jedenfalls sind diese 20 EUR wirklich keine große Investition.&lt;br /&gt;
&lt;br /&gt;
= Weblinks, Foren, Communities, Tutorials =&lt;br /&gt;
* [[STM32]] Hauptartikel, [http://www.mikrocontroller.net/articles/STM32#Weblinks.2C_Foren.2C_Communities.2C_Tutorials dortige Linksammlung]&lt;br /&gt;
* [http://www.mikrocontroller.net/topic/319328 Diskussion zum Artikel]&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>Frank m35</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=STM32_f%C3%BCr_Einsteiger&amp;diff=80264</id>
		<title>STM32 für Einsteiger</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=STM32_f%C3%BCr_Einsteiger&amp;diff=80264"/>
		<updated>2013-12-30T13:34:09Z</updated>

		<summary type="html">&lt;p&gt;Frank m35: /* Eigene Fähigkeiten und Wünsche */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Immer wiederkehrend hier im Forum &amp;quot;Mit welchem Mikrocontroller anfangen?&amp;quot;. Es gibt eine große Auswahl und eben so viele Empfehlungen. In diesem Artikel soll zu erst geholfen werden ob ein STM32-Prozessor mit Cortex-M3/M4 Kern überhaupt der Richtige für den Start ist.&lt;br /&gt;
Nicht für jeden ist der STM32 zu empfehlen, denn die Anforderungen und Wünsche die man realisieren möchte, sowie die eigenen Fähigkeiten sind verschieden.&lt;br /&gt;
&lt;br /&gt;
Es werden meist die Prozessoren AVR, PIC, Arduino, MSP430 und STM32 empfohlen. Seltener auch 8051, LPC und M16C. Alle haben Vorzüge und ebenso auch Nachteile.&lt;br /&gt;
&lt;br /&gt;
= Eigene Fähigkeiten und Wünsche =&lt;br /&gt;
&lt;br /&gt;
Zu erst einmal die Randbedingungen, mit der man sich selbst zu erst einmal einschätzen sollte:&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|- bgcolor=&amp;quot;#d0d0ff&amp;quot;&lt;br /&gt;
! Fähigkeit || Empfehlung [[STM32]] || Empfehlung [[AVR]] || Empfehlung PIC || Empfehlung [[MSP430]] || Empfehlung Arduino&lt;br /&gt;
|-&lt;br /&gt;
| Neueinsteiger, kaum Elektronikkenntnisse, noch nie programmiert || align=&amp;quot;center&amp;quot;|O || align=&amp;quot;center&amp;quot;|O || align=&amp;quot;center&amp;quot;|O [http://www.sprut.de/] || align=&amp;quot;center&amp;quot;|- || align=&amp;quot;center&amp;quot;|x&lt;br /&gt;
|-&lt;br /&gt;
| Wunsch ist SD-Card oder Grafik-Display || align=&amp;quot;center&amp;quot;|x || align=&amp;quot;center&amp;quot;|x || align=&amp;quot;center&amp;quot;|x [http://www.microchip.com/stellent/idcplg?IdcService=SS_GET_PAGE&amp;amp;nodeId=2680&amp;amp;dDocName=en537999] [http://www.microchip.com/pagehandler/en-us/technology/graphics/] || align=&amp;quot;center&amp;quot;|x || align=&amp;quot;center&amp;quot;|x&lt;br /&gt;
|-&lt;br /&gt;
| Wunsch ist TCP/IP Netzwerk oder Kamera|| align=&amp;quot;center&amp;quot;|x || align=&amp;quot;center&amp;quot;|O || align=&amp;quot;center&amp;quot;|x [http://www.microchip.com/stellent/idcplg?IdcService=SS_GET_PAGE&amp;amp;nodeId=2505&amp;amp;param=en535724] || align=&amp;quot;center&amp;quot;|O || align=&amp;quot;center&amp;quot;|O&lt;br /&gt;
|-&lt;br /&gt;
| Möchte die Erkenntnisse beruflich nutzen|| align=&amp;quot;center&amp;quot;|x || align=&amp;quot;center&amp;quot;|x || align=&amp;quot;center&amp;quot;|x || align=&amp;quot;center&amp;quot;|x || align=&amp;quot;center&amp;quot;|-&lt;br /&gt;
|-&lt;br /&gt;
| Strom sparende Anwendungen|| align=&amp;quot;center&amp;quot;|O || align=&amp;quot;center&amp;quot;|x || align=&amp;quot;center&amp;quot;|x [http://www.microchip.com/pagehandler/en-us/technology/xlp/] || align=&amp;quot;center&amp;quot;|x || align=&amp;quot;center&amp;quot;|-&lt;br /&gt;
|-&lt;br /&gt;
| Experimentieren mit Multithreading, RTOS, Schedulern || align=&amp;quot;center&amp;quot;|x || align=&amp;quot;center&amp;quot;|- || align=&amp;quot;center&amp;quot;|O [http://www.microchip.com/stellent/idcplg?IdcService=SS_GET_PAGE&amp;amp;nodeId=1406&amp;amp;dDocName=en531543&amp;amp;redirects=rtos] || align=&amp;quot;center&amp;quot;|- || align=&amp;quot;center&amp;quot;|-&lt;br /&gt;
|-&lt;br /&gt;
| Große, komplex strukturierte Programme || align=&amp;quot;center&amp;quot;|x || align=&amp;quot;center&amp;quot;|- || align=&amp;quot;center&amp;quot;|O || align=&amp;quot;center&amp;quot;|O || align=&amp;quot;center&amp;quot;|-&lt;br /&gt;
|-&lt;br /&gt;
| Sehr viel PWM mit komplexem Timing || align=&amp;quot;center&amp;quot;|x || align=&amp;quot;center&amp;quot;|- || align=&amp;quot;center&amp;quot;|O || align=&amp;quot;center&amp;quot;|O || align=&amp;quot;center&amp;quot;|-&lt;br /&gt;
|-&lt;br /&gt;
| Deutschsprachige Community || align=&amp;quot;center&amp;quot;|O || align=&amp;quot;center&amp;quot;|x || align=&amp;quot;center&amp;quot;|O || align=&amp;quot;center&amp;quot;|- || align=&amp;quot;center&amp;quot;|x&lt;br /&gt;
|}&lt;br /&gt;
* x = ja&lt;br /&gt;
* O = Teilweise, Einschränkungen&lt;br /&gt;
* - = nicht empfohlen&lt;br /&gt;
* ? = Bitte ergänzen&lt;br /&gt;
&lt;br /&gt;
Nur um nicht zu verwirren, auch wenn Teile &amp;quot;nicht empfohlen&amp;quot; sind, heißt dass nicht dass es mit dem Prozessor nicht geht, vielmehr dass es mehr Aufwand ist das zu realisieren oder mehr Einschränkungen hat.&lt;br /&gt;
&lt;br /&gt;
= Unwichtige Randbedingungen =&lt;br /&gt;
&lt;br /&gt;
Oftmals werden fälschlicherweise Argumente für oder gegen eine µC-Familie ausgesprochen, die in der Praxis &#039;&#039;&#039;zum Einstieg&#039;&#039;&#039; (bei konkreten Anwendungen kann das anders aussehen) eher unwichtig sind.&lt;br /&gt;
&lt;br /&gt;
* Spannungsversorgung 3,3V / 5V&lt;br /&gt;
* 8 (z.B. [[AVR]]), 16 (z.B. [[MSP430]]) oder 32 (z.B. [[STM32]]) Bit&lt;br /&gt;
* Interrupt System mit mehr oder weniger Features&lt;br /&gt;
* Programmiersprache (Assembler, Basic, C, C++, Pascal)&lt;br /&gt;
* Assembler verstehen (Sollte nur theoretisch verstanden werden, ein Programm sollte in einer Hochsprache geschrieben sein)&lt;br /&gt;
* DIL Gehäuse - steckbretttauglich (STM32-Prozessoren gibt es auch fertig gelötet auf einem steckbretttauglichen Board zum zehnfachen Preis vergleichbarer DIL Mikrocontroller)&lt;br /&gt;
* Programmieradapter&lt;br /&gt;
* zu 90% reicht doch ein kleiner Prozessor ([[AVR]]/PIC) - und für die restlichen kann man immer noch einen großen nehmen. Warum also nicht gleich einen großen nehmen?&lt;br /&gt;
&lt;br /&gt;
= Kosten =&lt;br /&gt;
&lt;br /&gt;
Grobe Abschätzung was das alles denn kosten wird. Hier sind nur einige Beispiele gezeigt.&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|- bgcolor=&amp;quot;#d0d0ff&amp;quot;&lt;br /&gt;
! Board || [[STM32]] || [[AVR]] || PIC18/24/32 || [[MSP430]] || Arduino&lt;br /&gt;
|-&lt;br /&gt;
| Demo-Board || align=&amp;quot;center&amp;quot;|[http://www.st.com/web/en/catalog/tools/FM116/SC959/SS1532/PF252419] 9..20€ (incl. Programmieradapter und Debugger) || align=&amp;quot;center&amp;quot;|15€ || align=&amp;quot;center&amp;quot;| [http://www.microchipdirect.com/ProductDetails.aspx?Catalog=BuyMicrochip&amp;amp;Category=Starter%20Kits&amp;amp;mid=1&amp;amp;lmid=610 durchschnittlich 18€ .. 50€] || align=&amp;quot;center&amp;quot;|?? || align=&amp;quot;center&amp;quot;|20€&lt;br /&gt;
|-&lt;br /&gt;
| Steckbrettaugliches Board || align=&amp;quot;center&amp;quot;| s.o. oder [http://re.reworld.eu/de/produkte/s64dil-405/index.htm S64DIL-405] 30€ || align=&amp;quot;center&amp;quot;|2-5€ als einzelner IC || align=&amp;quot;center&amp;quot;|2-5€ als einzelner IC || align=&amp;quot;center&amp;quot;|?? || align=&amp;quot;center&amp;quot;|??&lt;br /&gt;
|-&lt;br /&gt;
| Programmieradapter mit Debugger || align=&amp;quot;center&amp;quot;| s.o. oder z.B [http://www.segger.com/j-link-edu.html Segger J-LINK EDU] 50€ (sehr schnell und unterstützt viele Prozessoren) || align=&amp;quot;center&amp;quot;|?? || align=&amp;quot;center&amp;quot;|PICkit 3 30€ [http://www.microchipdirect.com/ProductSearch.aspx?keywords=PG164130] || align=&amp;quot;center&amp;quot;|?? || align=&amp;quot;center&amp;quot;|20€ (Man muss DebugWire aktivieren)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Das Demo-Board sollte ein Board sein, nicht zu teuer, um die ersten Erfahrungen zu sammeln. Wenn einem der Prozessor gefällt, so kann man später immer noch mit einem zweiten Demo-Board, z.B. mit Display aufrüsten.&lt;br /&gt;
&lt;br /&gt;
Wenn man gerne mit einem Steckbrett sich die Schaltung zusammen stecken möchte, so kann man entweder die benötigten Drähte am Demo-Board anlöten oder bei z.B. [[AVR]]/[[PIC]] Prozessoren gibt es Ausführungen im DIL Gehäuse, die direkt steckbar sind.&lt;br /&gt;
&lt;br /&gt;
Ein Programmieradapter sollte unbedingt auch einen Debugger beinhalten. Denn für den Start ist es ungemein hilfreich zu sehen was im Prozessor gerade geschieht. Die JTAG-Adapter für einen [[STM32]] Prozessor sind alle Debugger-Tauglich. Für einen [[AVR]] oder [[PIC]] Prozessor gibt es auch oft reine Programmer (oft Selbstbau-Lösungen über die serielle oder parallele Schnittstelle) welche den Mikrocontroller nur beschreiben können. Sinvoller sind hingegen Debugger (bspw. PIC Kit 3 [http://www.microchipdirect.com/ProductSearch.aspx?keywords=PG164130] kompatibel zu allen PIC Mikrocontrollern), die die Ausführung eines Mikrocontrollers anhalten können um die aktuelle Position im Programmcode, Variableninhalt, Register, ... auszulesen bzw. zur Laufzeit zu ändern.&lt;br /&gt;
&lt;br /&gt;
Der für den [[STM32]] empfohlene Segger J-LINK EDU ist zwar nicht der günstigste (z.B. auf einem STM32F4DISCOVERY Borad ist auch einer drauf den man für andere STM32 nutzen kann) aber eines der besten, mit sehr guten Software-Tools und nutzbar für alle Prozessoren mit ARM-Kern (ARM7/9/11/... Cortex-Mx). Niemals am Werkzeug sparen und man hat viel mehr Freude bei der Arbeit.&lt;br /&gt;
&lt;br /&gt;
Der &amp;quot;Arduino&amp;quot; ist kein eigenständiger Prozessor, sondern ein fertiges Board mit einer &amp;quot;Arduino&amp;quot; Programmierumgebung (und einem AVR Prozessor), extra geschaffen für Einsteiger. Allerdings ist da der Lerneffekt viel geringer da man den Prozessor mit der Arduino-Software programmiert und nicht direkt die Register.&lt;br /&gt;
&lt;br /&gt;
Ein [[PIC16]] ist ein älterer 8-Bit Mikrocontroller, der durch die [[PIC18]] Reihe abgelöst wurde. Werden komplexere Anforderungen in Zukunft an den Mikrocontroller gestellt (Audio, Grafik), so sollte zu den moderneren [[PIC24]] bzw. [[dsPIC]] (16-Bit) oder gar zu [[PIC32]] (32-Bit MIPS Prozessor) gegriffen werden, wobei letzterer von der Performance vergleichbar mit den STM32 ARM-basierten Mikrocontrollern ist.&lt;br /&gt;
&lt;br /&gt;
= Programmierumgebungen=&lt;br /&gt;
&lt;br /&gt;
Bei den Programmierumgebungen gibt es zu allen Prozessorfamilien kostenlose und Leistungsfähige Software&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|- bgcolor=&amp;quot;#d0d0ff&amp;quot;&lt;br /&gt;
! [[STM32]] || [[AVR]] || PIC || [[MSP430]] || Arduino&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot;|[http://www.coocox.org/CooCox_CoIDE.htm CooCox] || align=&amp;quot;center&amp;quot;|Atmel-Studio || align=&amp;quot;center&amp;quot;|[http://www.microchip.com/pagehandler/en-us/family/mplabx/ MPALB X] (IDE inklusive compiler) || align=&amp;quot;center&amp;quot;|?? || align=&amp;quot;center&amp;quot;|arduino 1.0.5&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
natürlich gibt es noch viele weitere (für STM32 siehe [[STM32#Programmierung]]), es sollte jedoch nur die einfachsten kostenlose (und ohne Codebegrenzung) für den ersten Einstieg gezeigt werden.&lt;br /&gt;
&lt;br /&gt;
= Dokumentation=&lt;br /&gt;
&lt;br /&gt;
Bevor man sich für einen Prozessor entscheidet sollte man unbedingt deren Dokumentation mal zumindest überfliegen und auch deren Errata&#039;s lesen. Nicht dass man eine Anwendung erstellen möchte und stellt hinterher fest, dass genau dieser Teil so buggy ist das er nicht genutzt werden kann.&lt;br /&gt;
&lt;br /&gt;
Beim [[STM32]] hat die Dokumentation doch recht viele Seiten, viel mehr als bei einem [[AVR]] oder PIC. Dabei ist vieles eher knapp beschrieben, man muss mehr suchen als z.B. bei den AVR-Dokus, um die gewünschten Informationen zu finden. Außerdem gibt es durchaus einige Unklarheiten und Fehler/Widersprüche. Schlussendlich ist es Geschmackssache mit welcher Doku von welchem Hersteller man sich besser zurecht findet.&lt;br /&gt;
&lt;br /&gt;
Bei den PICs gibt es zu jedem Mikrocontroller ein Datenblatt das die wichtigsten Informationen für den alltäglichen Gebrauch enthält. Da bestimmte Peripherie (bspw. I2C, SPI, ... ) aber sehr komplex ist und innerhalb einer Familie (PIC16/18/24/32) sich identisch verhält, gibt es zu jeder Familie die sogenannten Family-Datasheets, welche alle Module im Detail beschreiben.&lt;br /&gt;
&lt;br /&gt;
Parallel zur Dokumentation sollte man sich auch die Demo-Beispiele der Hersteller anschauen, dann wird vieles gleich verständlicher.&lt;br /&gt;
&lt;br /&gt;
Eine Übersicht über die Funktionen gibt es im Artikel: [[STM32]]&lt;br /&gt;
&lt;br /&gt;
= Die Arbeit mit dem STM32=&lt;br /&gt;
&lt;br /&gt;
Zu erst einmal SOOO groß sind die Unterschiede zwischen den einzelnen Prozessoren nicht. Alle haben Ein-/Ausgänge und um mittels einem Port-Pin eine LED ansteuern zu können muss bei jedem Prozessor der Pin erst einmal parametriert werden, egal ob das jetzt ein STM32 oder ein AVR oder ein MSP430 ist. Nur hat man bei einem STM32 doch einige Funktionen mehr, z.B. zuschaltbarer Pull-Up oder Pull-Down Widerstand und spezielle Setz-Rücksetzregister, die andere Prozessoren nicht haben, jedoch das programmieren vereinfachen.&lt;br /&gt;
Der Haupt-Unterschied zu den anderen Prozessoren ist, dass der [[STM32]] so viele Peripherie-Module beherbergt, dass man die einzeln immer mit einem Clock aktivieren muss, denn damit lässt sich viel Strom sparen.&lt;br /&gt;
&lt;br /&gt;
Und mal ganz ehrlich die Diskussion welcher µc einfacher zu konfigurieren ist, ist doch absoluter Unsinn. Der Weg ist immer der Gleiche:&lt;br /&gt;
*1. Blick ins Datenblatt welche Register für diese Funktion benötigt werden.&lt;br /&gt;
*2. Werte ermitteln die in die Register eingetragen werden.&lt;br /&gt;
*3. Werte ins Register schreiben. Da machte es GAR KEINEN UNTERSCHIED ob es ein [[AVR]], 8051/2, ARM,...... ist.&lt;br /&gt;
&lt;br /&gt;
Stimmt schon es gibt Unterschiede. Die Register haben anderen Namen, andere Adressen, andere Bitbedeutungen,...&lt;br /&gt;
Aber es steht doch alles im Datenblatt. Und ob ich jetzt einen [[AVR]] oder einen ARM das erste mal vor mir liegen hab. Ich brauch in allen Fällen die oben beschriebenen Schritte.&lt;br /&gt;
&lt;br /&gt;
Das Interruptsystem ist bei einem STM32 zusätzlich priorisiert, damit kann man festlegen welcher Interrupt vorrangig bearbeitet wird. Die Prioritätenvergabe ist auch kein Hexenwerk.&lt;br /&gt;
&lt;br /&gt;
Zu allen Prozessoren liefern die jeweiligen Hersteller umfangreiche Demo-Codes und Libraries mit. Meist sind alle in C geschrieben, daher sollte auch die Programmiersprache C verwendet werden. Vor allem auch wenn man berufliche Absichten verfolgt.&lt;br /&gt;
&lt;br /&gt;
Und wenn man einen STM32 kann, dann ist ein Umstieg auf einen LPC17xx (NXP) oder andere Hersteller überhaupt kein Problem, denn die bieten ebenfalls Prozessoren mit Cortex-M3 Kern und man kann diese mit der gleichen Programmierumgebung programmieren. Somit ist man nicht zwingend Herstellerabhängig.&lt;br /&gt;
&lt;br /&gt;
Mit einem STM32 kann man als Hobby-Baster und Professionell nahezu alle Anwendungen realisieren. Der hat genügend RAM und FLASH Speicher und auch genügen Geschwindigkeit. Viele Gehäuse-Varianten um kleine bis hin zu größere Geräte zu erstellen. Viele Schnittstellen, sind im Artikel [[STM32]] beschrieben.&lt;br /&gt;
&lt;br /&gt;
Der einzige Nachteil beim STM32: man muss etwas mehr lesen, da eine Peripherie doch viel mehr Funktionalität hat. Ansonsten kenne ich nicht wirklich einen Grund warum man als Neueinsteiger keinen STM32 nehmen sollte.&lt;br /&gt;
&lt;br /&gt;
= Programmiersprachen =&lt;br /&gt;
* Wie bei vielen anderen Controllern wird beim STM32 auch hauptsächlich C und C++ verwendet. Kennen sollte man die Programmiersprache C schon, wenn man davon noch keine Ahnung hat dann sollte man erst mal mittels einem Tutorial auf einem PC ein Konsoleprogramm schreiben, sodass man es einigermaßen kennen lernt. Hier im Forum gibt es ebenfalls Artikel dazu. Zielt man auf die (spätere) Anwendung in der Industrie, sollte aufgrund der Verbreitung auf jeden Fall C (oder C++) gewählt werden; außerdem sind die meisten verfügbaren Libraries in C geschrieben.&lt;br /&gt;
* Assembler sollte man nur grob verstehen, Details wie ein Befehl arbeitet ist unwichtig. Selbst wenn man die Zyklen für einen Funktionsaufruf wissen will, so bietet der STM32 (Cortex-M3) einen Cycle-Counter den man auslesen kann; durch die komplexere Pipeline und Cache-Effekte sind die Laufzeiten allerdings nicht genau vorhersehbar. Wird zyklengenause Timing benötigt, sollten Timer verwendet werden - davon hat der STM32 genug.&lt;br /&gt;
&lt;br /&gt;
Der 32bit-Adressraum, der RAM, Flash, I/O-Register vereinheitlicht ansprechen kann (im Gegensatz zu z.B. AVR) ist ideal für eine Verwendung durch Hochsprachen; bei Pointern muss keine zusätzliche Information verwaltet werden, in welche Art Speicher sie zeigen. Die Adresse gibt dies eindeutig an (es gibt nur &#039;&#039;&#039;eine&#039;&#039;&#039; Adresse 42, und nicht 3 wie beim AVR (Flash, RAM, I/O)) und die Hardware spricht automatisch den richtigen Speicher an. Die Möglichkeiten zur Offset-Adressierung, der Barrel-Shifter, Divsions-Einheit, die FPU (bei STM32F4), Interrupt-Modell etc. begünstigen ebenfalls die Erzeugung effizienteren Codes. Außerdem haben die STM32 einfach mehr &amp;quot;rohe Leistung&amp;quot;, d.h. mehr Flash/RAM-Speicher und höhere Taktfrequenzen.&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Folgerung&#039;&#039;&#039;: Die Programmierung in Hochsprachen ist &#039;&#039;&#039;bequemer als bei 8-Bittern&#039;&#039;&#039;, denn man muss sich einfach weniger Gedanken machen, ob der Compiler ein Programm nun effizent umsetzen kann (kann man natürlich trotzdem machen, um noch mehr Leistung &amp;quot;herauszuquetschen&amp;quot;, wenn man will).&lt;br /&gt;
&lt;br /&gt;
= Weitere Randbedingungen für die Entscheidung=&lt;br /&gt;
&lt;br /&gt;
Der wichtige Punkt, der oftmals auch vergessen wird: die Beschaffbarkeit. Wenn jemand einen Renesas M16C oder Fujitsu empfiehlt, dann sucht man erst mal und findet nur wenige vereinzelte die man privat kaufen kann.&lt;br /&gt;
&lt;br /&gt;
Oder auch die Unterstützung im Internet - ist bei einigen Exoten spärlich. Dieses Forum bietet die beste Hilfe für [[AVR]], PIC, [[STM32]] und [[MSP430]].&lt;br /&gt;
&lt;br /&gt;
Andere Prozessoren sind schon sehr alt, bzw. nicht mehr modern da deren Peripherie zum Teil doch recht eingeschränkte Funktionalität bietet. z.B. viele 8051 Typen oder PIC16. Die mögen für Mini-Anwenungen gut sein, aber wer will den schon gerne sich extra für eine Kleinanwendung mit einem kleinen µC auseinandersetzen, wenn er schon einen STM32 kennt, mit dem er alles machen kann (und sich bereits gute Funktionen geschrieben hat)?&lt;br /&gt;
&lt;br /&gt;
Daher mein Resümee: wer nicht gerade auf den Kopf gefallen ist, der kann getrost mit einem STM32 starten. Ein [http://www.st.com/web/en/catalog/tools/FM116/SC959/SS1532/PF252419?s_searchtype=keyword STM32F4DISCOVERY] Board kostet nur ca. 20 EUR - und mehr muss für den ersten Start nicht investiert werden - wenn es doch zu komplex sein sollte gibt es hier im Forum auch Hilfe oder man nimmt erst mal ein &amp;quot;Arduino&amp;quot;. Jedenfalls sind diese 20 EUR wirklich keine große Investition.&lt;br /&gt;
&lt;br /&gt;
= Weblinks, Foren, Communities, Tutorials =&lt;br /&gt;
* [[STM32]] Hauptartikel, [http://www.mikrocontroller.net/articles/STM32#Weblinks.2C_Foren.2C_Communities.2C_Tutorials dortige Linksammlung]&lt;br /&gt;
* [http://www.mikrocontroller.net/topic/319328 Diskussion zum Artikel]&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>Frank m35</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=STM32_f%C3%BCr_Einsteiger&amp;diff=80260</id>
		<title>STM32 für Einsteiger</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=STM32_f%C3%BCr_Einsteiger&amp;diff=80260"/>
		<updated>2013-12-30T11:50:27Z</updated>

		<summary type="html">&lt;p&gt;Frank m35: /* Eigene Fähigkeiten und Wünsche */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Immer wiederkehrend hier im Forum &amp;quot;Mit welchem Mikrocontroller anfangen?&amp;quot;. Es gibt eine große Auswahl und eben so viele Empfehlungen. In diesem Artikel soll zu erst geholfen werden ob ein STM32-Prozessor mit Cortex-M3/M4 Kern überhaupt der Richtige für den Start ist.&lt;br /&gt;
Nicht für jeden ist der STM32 zu empfehlen, denn die Anforderungen und Wünsche die man realisieren möchte, sowie die eigenen Fähigkeiten sind verschieden.&lt;br /&gt;
&lt;br /&gt;
Es werden meist die Prozessoren AVR, PIC, Arduino, MSP430 und STM32 empfohlen. Seltener auch 8051, LPC und M16C. Alle haben Vorzüge und ebenso auch Nachteile.&lt;br /&gt;
&lt;br /&gt;
= Eigene Fähigkeiten und Wünsche =&lt;br /&gt;
&lt;br /&gt;
Zu erst einmal die Randbedingungen, mit der man sich selbst zu erst einmal einschätzen sollte:&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|- bgcolor=&amp;quot;#d0d0ff&amp;quot;&lt;br /&gt;
! Fähigkeit || Empfehlung [[STM32]] || Empfehlung [[AVR]] || Empfehlung PIC || Empfehlung [[MSP430]] || Empfehlung Arduino&lt;br /&gt;
|-&lt;br /&gt;
| Bereits in der Schule Mikrocontroller programmiert || align=&amp;quot;center&amp;quot;|x || align=&amp;quot;center&amp;quot;|x || align=&amp;quot;center&amp;quot;|x || align=&amp;quot;center&amp;quot;|x || align=&amp;quot;center&amp;quot;|-&lt;br /&gt;
|-&lt;br /&gt;
| Neueinsteiger, kaum Elektronikkenntnisse, noch nie programmiert || align=&amp;quot;center&amp;quot;|O || align=&amp;quot;center&amp;quot;|x || align=&amp;quot;center&amp;quot;|x [http://www.sprut.de/] || align=&amp;quot;center&amp;quot;|- || align=&amp;quot;center&amp;quot;|x&lt;br /&gt;
|-&lt;br /&gt;
| Wunsch ist SD-Card oder Grafik-Display || align=&amp;quot;center&amp;quot;|x || align=&amp;quot;center&amp;quot;|evt. Speicher zu klein || align=&amp;quot;center&amp;quot;|x [http://www.microchip.com/stellent/idcplg?IdcService=SS_GET_PAGE&amp;amp;nodeId=2680&amp;amp;dDocName=en537999] [http://www.microchip.com/pagehandler/en-us/technology/graphics/] || align=&amp;quot;center&amp;quot;|evt. Speicher zu klein || align=&amp;quot;center&amp;quot;|evt. Speicher zu klein&lt;br /&gt;
|-&lt;br /&gt;
| Wunsch ist TCP/IP Netzwerk oder Kamera|| align=&amp;quot;center&amp;quot;|x || align=&amp;quot;center&amp;quot;|- || align=&amp;quot;center&amp;quot;|x [http://www.microchip.com/stellent/idcplg?IdcService=SS_GET_PAGE&amp;amp;nodeId=2505&amp;amp;param=en535724] || align=&amp;quot;center&amp;quot;|- || align=&amp;quot;center&amp;quot;|-&lt;br /&gt;
|-&lt;br /&gt;
| Möchte die Erkenntnisse beruflich nutzen|| align=&amp;quot;center&amp;quot;|x || align=&amp;quot;center&amp;quot;|O || align=&amp;quot;center&amp;quot;|x || align=&amp;quot;center&amp;quot;|x || align=&amp;quot;center&amp;quot;|-&lt;br /&gt;
|-&lt;br /&gt;
| Extrem stromsparende Mini-Anwendung|| align=&amp;quot;center&amp;quot;|O || align=&amp;quot;center&amp;quot;|O || align=&amp;quot;center&amp;quot;|x [http://www.microchip.com/pagehandler/en-us/technology/xlp/] || align=&amp;quot;center&amp;quot;|x || align=&amp;quot;center&amp;quot;|-&lt;br /&gt;
|-&lt;br /&gt;
| Experimentieren mit Multithreading, RTOS, Schedulern || align=&amp;quot;center&amp;quot;|x || align=&amp;quot;center&amp;quot;|- || align=&amp;quot;center&amp;quot;|O [http://www.microchip.com/stellent/idcplg?IdcService=SS_GET_PAGE&amp;amp;nodeId=1406&amp;amp;dDocName=en531543&amp;amp;redirects=rtos] || align=&amp;quot;center&amp;quot;|- || align=&amp;quot;center&amp;quot;|-&lt;br /&gt;
|-&lt;br /&gt;
| Große, komplex strukturierte Programme || align=&amp;quot;center&amp;quot;|x || align=&amp;quot;center&amp;quot;|- || align=&amp;quot;center&amp;quot;|x || align=&amp;quot;center&amp;quot;|O || align=&amp;quot;center&amp;quot;|-&lt;br /&gt;
|-&lt;br /&gt;
| Viel I/O, PWM, komplexes Timing || align=&amp;quot;center&amp;quot;|x || align=&amp;quot;center&amp;quot;|O || align=&amp;quot;center&amp;quot;|x || align=&amp;quot;center&amp;quot;|? || align=&amp;quot;center&amp;quot;|-&lt;br /&gt;
|-&lt;br /&gt;
| Deutschsprachige Community || align=&amp;quot;center&amp;quot;|? || align=&amp;quot;center&amp;quot;|x || align=&amp;quot;center&amp;quot;|O || align=&amp;quot;center&amp;quot;|- || align=&amp;quot;center&amp;quot;|x&lt;br /&gt;
|}&lt;br /&gt;
* x = ja&lt;br /&gt;
* O = Teilweise, Einschränkungen&lt;br /&gt;
* - = nicht empfohlen&lt;br /&gt;
* ? = Bitte ergänzen&lt;br /&gt;
&lt;br /&gt;
Nur um nicht zu verwirren, auch wenn Teile &amp;quot;nicht empfohlen&amp;quot; sind, heißt dass nicht dass es mit dem Prozessor nicht geht, vielmehr dass es mehr Aufwand ist das zu realisieren oder mehr Einschränkungen hat.&lt;br /&gt;
&lt;br /&gt;
= Unwichtige Randbedingungen =&lt;br /&gt;
&lt;br /&gt;
Oftmals werden fälschlicherweise Argumente für oder gegen eine µC-Familie ausgesprochen, die in der Praxis &#039;&#039;&#039;zum Einstieg&#039;&#039;&#039; (bei konkreten Anwendungen kann das anders aussehen) eher unwichtig sind.&lt;br /&gt;
&lt;br /&gt;
* Spannungsversorgung 3,3V / 5V&lt;br /&gt;
* 8 (z.B. [[AVR]]), 16 (z.B. [[MSP430]]) oder 32 (z.B. [[STM32]]) Bit&lt;br /&gt;
* Interrupt System mit mehr oder weniger Features&lt;br /&gt;
* Programmiersprache (Assembler, Basic, C, C++, Pascal)&lt;br /&gt;
* Assembler verstehen (Sollte nur theoretisch verstanden werden, ein Programm sollte in einer Hochsprache geschrieben sein)&lt;br /&gt;
* DIL Gehäuse - steckbretttauglich (STM32-Prozessoren gibt es auch fertig gelötet auf einem steckbretttauglichen Board zum zehnfachen Preis vergleichbarer DIL Mikrocontroller)&lt;br /&gt;
* Programmieradapter&lt;br /&gt;
* zu 90% reicht doch ein kleiner Prozessor ([[AVR]]/PIC) - und für die restlichen kann man immer noch einen großen nehmen. Warum also nicht gleich einen großen nehmen?&lt;br /&gt;
&lt;br /&gt;
= Kosten =&lt;br /&gt;
&lt;br /&gt;
Grobe Abschätzung was das alles denn kosten wird. Hier sind nur einige Beispiele gezeigt.&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|- bgcolor=&amp;quot;#d0d0ff&amp;quot;&lt;br /&gt;
! Board || [[STM32]] || [[AVR]] || PIC18/24/32 || [[MSP430]] || Arduino&lt;br /&gt;
|-&lt;br /&gt;
| Demo-Board || align=&amp;quot;center&amp;quot;|[http://www.st.com/web/en/catalog/tools/FM116/SC959/SS1532/PF252419] 9..20€ (incl. Programmieradapter und Debugger) || align=&amp;quot;center&amp;quot;|15€ || align=&amp;quot;center&amp;quot;| [http://www.microchipdirect.com/ProductDetails.aspx?Catalog=BuyMicrochip&amp;amp;Category=Starter%20Kits&amp;amp;mid=1&amp;amp;lmid=610 durchschnittlich 18€ .. 50€] || align=&amp;quot;center&amp;quot;|?? || align=&amp;quot;center&amp;quot;|20€&lt;br /&gt;
|-&lt;br /&gt;
| Steckbrettaugliches Board || align=&amp;quot;center&amp;quot;| s.o. oder [http://re.reworld.eu/de/produkte/s64dil-405/index.htm S64DIL-405] 30€ || align=&amp;quot;center&amp;quot;|2-5€ als einzelner IC || align=&amp;quot;center&amp;quot;|2-5€ als einzelner IC || align=&amp;quot;center&amp;quot;|?? || align=&amp;quot;center&amp;quot;|??&lt;br /&gt;
|-&lt;br /&gt;
| Programmieradapter mit Debugger || align=&amp;quot;center&amp;quot;| s.o. oder z.B [http://www.segger.com/j-link-edu.html Segger J-LINK EDU] 50€ (sehr schnell und unterstützt viele Prozessoren) || align=&amp;quot;center&amp;quot;|?? || align=&amp;quot;center&amp;quot;|PICkit 3 30€ [http://www.microchipdirect.com/ProductSearch.aspx?keywords=PG164130] || align=&amp;quot;center&amp;quot;|?? || align=&amp;quot;center&amp;quot;|20€ (Man muss DebugWire aktivieren)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Das Demo-Board sollte ein Board sein, nicht zu teuer, um die ersten Erfahrungen zu sammeln. Wenn einem der Prozessor gefällt, so kann man später immer noch mit einem zweiten Demo-Board, z.B. mit Display aufrüsten.&lt;br /&gt;
&lt;br /&gt;
Wenn man gerne mit einem Steckbrett sich die Schaltung zusammen stecken möchte, so kann man entweder die benötigten Drähte am Demo-Board anlöten oder bei z.B. [[AVR]]/[[PIC]] Prozessoren gibt es Ausführungen im DIL Gehäuse, die direkt steckbar sind.&lt;br /&gt;
&lt;br /&gt;
Ein Programmieradapter sollte unbedingt auch einen Debugger beinhalten. Denn für den Start ist es ungemein hilfreich zu sehen was im Prozessor gerade geschieht. Die JTAG-Adapter für einen [[STM32]] Prozessor sind alle Debugger-Tauglich. Für einen [[AVR]] oder [[PIC]] Prozessor gibt es auch oft reine Programmer (oft Selbstbau-Lösungen über die serielle oder parallele Schnittstelle) welche den Mikrocontroller nur beschreiben können. Sinvoller sind hingegen Debugger (bspw. PIC Kit 3 [http://www.microchipdirect.com/ProductSearch.aspx?keywords=PG164130] kompatibel zu allen PIC Mikrocontrollern), die die Ausführung eines Mikrocontrollers anhalten können um die aktuelle Position im Programmcode, Variableninhalt, Register, ... auszulesen bzw. zur Laufzeit zu ändern.&lt;br /&gt;
&lt;br /&gt;
Der für den [[STM32]] empfohlene Segger J-LINK EDU ist zwar nicht der günstigste (z.B. auf einem STM32F4DISCOVERY Borad ist auch einer drauf den man für andere STM32 nutzen kann) aber eines der besten, mit sehr guten Software-Tools und nutzbar für alle Prozessoren mit ARM-Kern (ARM7/9/11/... Cortex-Mx). Niemals am Werkzeug sparen und man hat viel mehr Freude bei der Arbeit.&lt;br /&gt;
&lt;br /&gt;
Der &amp;quot;Arduino&amp;quot; ist kein eigenständiger Prozessor, sondern ein fertiges Board mit einer &amp;quot;Arduino&amp;quot; Programmierumgebung (und einem AVR Prozessor), extra geschaffen für Einsteiger. Allerdings ist da der Lerneffekt viel geringer da man den Prozessor mit der Arduino-Software programmiert und nicht direkt die Register.&lt;br /&gt;
&lt;br /&gt;
Ein [[PIC16]] ist ein älterer 8-Bit Mikrocontroller, der durch die [[PIC18]] Reihe abgelöst wurde. Werden komplexere Anforderungen in Zukunft an den Mikrocontroller gestellt (Audio, Grafik), so sollte zu den moderneren [[PIC24]] bzw. [[dsPIC]] (16-Bit) oder gar zu [[PIC32]] (32-Bit MIPS Prozessor) gegriffen werden, wobei letzterer von der Performance vergleichbar mit den STM32 ARM-basierten Mikrocontrollern ist.&lt;br /&gt;
&lt;br /&gt;
= Programmierumgebungen=&lt;br /&gt;
&lt;br /&gt;
Bei den Programmierumgebungen gibt es zu allen Prozessorfamilien kostenlose und Leistungsfähige Software&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|- bgcolor=&amp;quot;#d0d0ff&amp;quot;&lt;br /&gt;
! [[STM32]] || [[AVR]] || PIC || [[MSP430]] || Arduino&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot;|[http://www.coocox.org/CooCox_CoIDE.htm CooCox] || align=&amp;quot;center&amp;quot;|Atmel-Studio || align=&amp;quot;center&amp;quot;|[http://www.microchip.com/pagehandler/en-us/family/mplabx/ MPALB X] (IDE inklusive compiler) || align=&amp;quot;center&amp;quot;|?? || align=&amp;quot;center&amp;quot;|arduino 1.0.5&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
natürlich gibt es noch viele weitere (für STM32 siehe [[STM32#Programmierung]]), es sollte jedoch nur die einfachsten kostenlose (und ohne Codebegrenzung) für den ersten Einstieg gezeigt werden.&lt;br /&gt;
&lt;br /&gt;
= Dokumentation=&lt;br /&gt;
&lt;br /&gt;
Bevor man sich für einen Prozessor entscheidet sollte man unbedingt deren Dokumentation mal zumindest überfliegen und auch deren Errata&#039;s lesen. Nicht dass man eine Anwendung erstellen möchte und stellt hinterher fest, dass genau dieser Teil so buggy ist das er nicht genutzt werden kann.&lt;br /&gt;
&lt;br /&gt;
Beim [[STM32]] hat die Dokumentation doch recht viele Seiten, viel mehr als bei einem [[AVR]] oder PIC. Dabei ist vieles eher knapp beschrieben, man muss mehr suchen als z.B. bei den AVR-Dokus, um die gewünschten Informationen zu finden. Außerdem gibt es durchaus einige Unklarheiten und Fehler/Widersprüche. Schlussendlich ist es Geschmackssache mit welcher Doku von welchem Hersteller man sich besser zurecht findet.&lt;br /&gt;
&lt;br /&gt;
Bei den PICs gibt es zu jedem Mikrocontroller ein Datenblatt das die wichtigsten Informationen für den alltäglichen Gebrauch enthält. Da bestimmte Peripherie (bspw. I2C, SPI, ... ) aber sehr komplex ist und innerhalb einer Familie (PIC16/18/24/32) sich identisch verhält, gibt es zu jeder Familie die sogenannten Family-Datasheets, welche alle Module im Detail beschreiben.&lt;br /&gt;
&lt;br /&gt;
Parallel zur Dokumentation sollte man sich auch die Demo-Beispiele der Hersteller anschauen, dann wird vieles gleich verständlicher.&lt;br /&gt;
&lt;br /&gt;
Eine Übersicht über die Funktionen gibt es im Artikel: [[STM32]]&lt;br /&gt;
&lt;br /&gt;
= Die Arbeit mit dem STM32=&lt;br /&gt;
&lt;br /&gt;
Zu erst einmal SOOO groß sind die Unterschiede zwischen den einzelnen Prozessoren nicht. Alle haben Ein-/Ausgänge und um mittels einem Port-Pin eine LED ansteuern zu können muss bei jedem Prozessor der Pin erst einmal parametriert werden, egal ob das jetzt ein STM32 oder ein AVR oder ein MSP430 ist. Nur hat man bei einem STM32 doch einige Funktionen mehr, z.B. zuschaltbarer Pull-Up oder Pull-Down Widerstand und spezielle Setz-Rücksetzregister, die andere Prozessoren nicht haben, jedoch das programmieren vereinfachen.&lt;br /&gt;
Der Haupt-Unterschied zu den anderen Prozessoren ist, dass der [[STM32]] so viele Peripherie-Module beherbergt, dass man die einzeln immer mit einem Clock aktivieren muss, denn damit lässt sich viel Strom sparen.&lt;br /&gt;
&lt;br /&gt;
Und mal ganz ehrlich die Diskussion welcher µc einfacher zu konfigurieren ist, ist doch absoluter Unsinn. Der Weg ist immer der Gleiche:&lt;br /&gt;
*1. Blick ins Datenblatt welche Register für diese Funktion benötigt werden.&lt;br /&gt;
*2. Werte ermitteln die in die Register eingetragen werden.&lt;br /&gt;
*3. Werte ins Register schreiben. Da machte es GAR KEINEN UNTERSCHIED ob es ein [[AVR]], 8051/2, ARM,...... ist.&lt;br /&gt;
&lt;br /&gt;
Stimmt schon es gibt Unterschiede. Die Register haben anderen Namen, andere Adressen, andere Bitbedeutungen,...&lt;br /&gt;
Aber es steht doch alles im Datenblatt. Und ob ich jetzt einen [[AVR]] oder einen ARM das erste mal vor mir liegen hab. Ich brauch in allen Fällen die oben beschriebenen Schritte.&lt;br /&gt;
&lt;br /&gt;
Das Interruptsystem ist bei einem STM32 zusätzlich priorisiert, damit kann man festlegen welcher Interrupt vorrangig bearbeitet wird. Die Prioritätenvergabe ist auch kein Hexenwerk.&lt;br /&gt;
&lt;br /&gt;
Zu allen Prozessoren liefern die jeweiligen Hersteller umfangreiche Demo-Codes und Libraries mit. Meist sind alle in C geschrieben, daher sollte auch die Programmiersprache C verwendet werden. Vor allem auch wenn man berufliche Absichten verfolgt.&lt;br /&gt;
&lt;br /&gt;
Und wenn man einen STM32 kann, dann ist ein Umstieg auf einen LPC17xx (NXP) oder andere Hersteller überhaupt kein Problem, denn die bieten ebenfalls Prozessoren mit Cortex-M3 Kern und man kann diese mit der gleichen Programmierumgebung programmieren. Somit ist man nicht zwingend Herstellerabhängig.&lt;br /&gt;
&lt;br /&gt;
Mit einem STM32 kann man als Hobby-Baster und Professionell nahezu alle Anwendungen realisieren. Der hat genügend RAM und FLASH Speicher und auch genügen Geschwindigkeit. Viele Gehäuse-Varianten um kleine bis hin zu größere Geräte zu erstellen. Viele Schnittstellen, sind im Artikel [[STM32]] beschrieben.&lt;br /&gt;
&lt;br /&gt;
Der einzige Nachteil beim STM32: man muss etwas mehr lesen, da eine Peripherie doch viel mehr Funktionalität hat. Ansonsten kenne ich nicht wirklich einen Grund warum man als Neueinsteiger keinen STM32 nehmen sollte.&lt;br /&gt;
&lt;br /&gt;
= Programmiersprachen =&lt;br /&gt;
* Wie bei vielen anderen Controllern wird beim STM32 auch hauptsächlich C und C++ verwendet. Kennen sollte man die Programmiersprache C schon, wenn man davon noch keine Ahnung hat dann sollte man erst mal mittels einem Tutorial auf einem PC ein Konsoleprogramm schreiben, sodass man es einigermaßen kennen lernt. Hier im Forum gibt es ebenfalls Artikel dazu. Zielt man auf die (spätere) Anwendung in der Industrie, sollte aufgrund der Verbreitung auf jeden Fall C (oder C++) gewählt werden; außerdem sind die meisten verfügbaren Libraries in C geschrieben.&lt;br /&gt;
* Assembler sollte man nur grob verstehen, Details wie ein Befehl arbeitet ist unwichtig. Selbst wenn man die Zyklen für einen Funktionsaufruf wissen will, so bietet der STM32 (Cortex-M3) einen Cycle-Counter den man auslesen kann; durch die komplexere Pipeline und Cache-Effekte sind die Laufzeiten allerdings nicht genau vorhersehbar. Wird zyklengenause Timing benötigt, sollten Timer verwendet werden - davon hat der STM32 genug.&lt;br /&gt;
&lt;br /&gt;
Der 32bit-Adressraum, der RAM, Flash, I/O-Register vereinheitlicht ansprechen kann (im Gegensatz zu z.B. AVR) ist ideal für eine Verwendung durch Hochsprachen; bei Pointern muss keine zusätzliche Information verwaltet werden, in welche Art Speicher sie zeigen. Die Adresse gibt dies eindeutig an (es gibt nur &#039;&#039;&#039;eine&#039;&#039;&#039; Adresse 42, und nicht 3 wie beim AVR (Flash, RAM, I/O)) und die Hardware spricht automatisch den richtigen Speicher an. Die Möglichkeiten zur Offset-Adressierung, der Barrel-Shifter, Divsions-Einheit, die FPU (bei STM32F4), Interrupt-Modell etc. begünstigen ebenfalls die Erzeugung effizienteren Codes. Außerdem haben die STM32 einfach mehr &amp;quot;rohe Leistung&amp;quot;, d.h. mehr Flash/RAM-Speicher und höhere Taktfrequenzen.&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Folgerung&#039;&#039;&#039;: Die Programmierung in Hochsprachen ist &#039;&#039;&#039;bequemer als bei 8-Bittern&#039;&#039;&#039;, denn man muss sich einfach weniger Gedanken machen, ob der Compiler ein Programm nun effizent umsetzen kann (kann man natürlich trotzdem machen, um noch mehr Leistung &amp;quot;herauszuquetschen&amp;quot;, wenn man will).&lt;br /&gt;
&lt;br /&gt;
= Weitere Randbedingungen für die Entscheidung=&lt;br /&gt;
&lt;br /&gt;
Der wichtige Punkt, der oftmals auch vergessen wird: die Beschaffbarkeit. Wenn jemand einen Renesas M16C oder Fujitsu empfiehlt, dann sucht man erst mal und findet nur wenige vereinzelte die man privat kaufen kann.&lt;br /&gt;
&lt;br /&gt;
Oder auch die Unterstützung im Internet - ist bei einigen Exoten spärlich. Dieses Forum bietet die beste Hilfe für [[AVR]], PIC, [[STM32]] und [[MSP430]].&lt;br /&gt;
&lt;br /&gt;
Andere Prozessoren sind schon sehr alt, bzw. nicht mehr modern da deren Peripherie zum Teil doch recht eingeschränkte Funktionalität bietet. z.B. viele 8051 Typen oder PIC16. Die mögen für Mini-Anwenungen gut sein, aber wer will den schon gerne sich extra für eine Kleinanwendung mit einem kleinen µC auseinandersetzen, wenn er schon einen STM32 kennt, mit dem er alles machen kann (und sich bereits gute Funktionen geschrieben hat)?&lt;br /&gt;
&lt;br /&gt;
Daher mein Resümee: wer nicht gerade auf den Kopf gefallen ist, der kann getrost mit einem STM32 starten. Ein [http://www.st.com/web/en/catalog/tools/FM116/SC959/SS1532/PF252419?s_searchtype=keyword STM32F4DISCOVERY] Board kostet nur ca. 20 EUR - und mehr muss für den ersten Start nicht investiert werden - wenn es doch zu komplex sein sollte gibt es hier im Forum auch Hilfe oder man nimmt erst mal ein &amp;quot;Arduino&amp;quot;. Jedenfalls sind diese 20 EUR wirklich keine große Investition.&lt;br /&gt;
&lt;br /&gt;
= Weblinks, Foren, Communities, Tutorials =&lt;br /&gt;
* [[STM32]] Hauptartikel, [http://www.mikrocontroller.net/articles/STM32#Weblinks.2C_Foren.2C_Communities.2C_Tutorials dortige Linksammlung]&lt;br /&gt;
* [http://www.mikrocontroller.net/topic/319328 Diskussion zum Artikel]&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>Frank m35</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=STM32_f%C3%BCr_Einsteiger&amp;diff=80259</id>
		<title>STM32 für Einsteiger</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=STM32_f%C3%BCr_Einsteiger&amp;diff=80259"/>
		<updated>2013-12-30T11:47:54Z</updated>

		<summary type="html">&lt;p&gt;Frank m35: /* Eigene Fähigkeiten und Wünsche */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Immer wiederkehrend hier im Forum &amp;quot;Mit welchem Mikrocontroller anfangen?&amp;quot;. Es gibt eine große Auswahl und eben so viele Empfehlungen. In diesem Artikel soll zu erst geholfen werden ob ein STM32-Prozessor mit Cortex-M3/M4 Kern überhaupt der Richtige für den Start ist.&lt;br /&gt;
Nicht für jeden ist der STM32 zu empfehlen, denn die Anforderungen und Wünsche die man realisieren möchte, sowie die eigenen Fähigkeiten sind verschieden.&lt;br /&gt;
&lt;br /&gt;
Es werden meist die Prozessoren AVR, PIC, Arduino, MSP430 und STM32 empfohlen. Seltener auch 8051, LPC und M16C. Alle haben Vorzüge und ebenso auch Nachteile.&lt;br /&gt;
&lt;br /&gt;
= Eigene Fähigkeiten und Wünsche =&lt;br /&gt;
&lt;br /&gt;
Zu erst einmal die Randbedingungen, mit der man sich selbst zu erst einmal einschätzen sollte:&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|- bgcolor=&amp;quot;#d0d0ff&amp;quot;&lt;br /&gt;
! Fähigkeit || Empfehlung [[STM32]] || Empfehlung [[AVR]] || Empfehlung PIC || Empfehlung [[MSP430]] || Empfehlung Arduino&lt;br /&gt;
|-&lt;br /&gt;
| Bereits in der Schule Mikrocontroller programmiert || align=&amp;quot;center&amp;quot;|x || align=&amp;quot;center&amp;quot;|x || align=&amp;quot;center&amp;quot;|x || align=&amp;quot;center&amp;quot;|x || align=&amp;quot;center&amp;quot;|-&lt;br /&gt;
|-&lt;br /&gt;
| Neueinsteiger, kaum Elektronikkenntnisse, noch nie programmiert || align=&amp;quot;center&amp;quot;|O || align=&amp;quot;center&amp;quot;|x || align=&amp;quot;center&amp;quot;|x [http://www.sprut.de/] || align=&amp;quot;center&amp;quot;|- || align=&amp;quot;center&amp;quot;|x&lt;br /&gt;
|-&lt;br /&gt;
| Wunsch ist SD-Card oder Grafik-Display || align=&amp;quot;center&amp;quot;|x || align=&amp;quot;center&amp;quot;|evt. Speicher zu klein || align=&amp;quot;center&amp;quot;|x [http://www.microchip.com/stellent/idcplg?IdcService=SS_GET_PAGE&amp;amp;nodeId=2680&amp;amp;dDocName=en537999] [http://www.microchip.com/pagehandler/en-us/technology/graphics/] || align=&amp;quot;center&amp;quot;|evt. Speicher zu klein || align=&amp;quot;center&amp;quot;|evt. Speicher zu klein&lt;br /&gt;
|-&lt;br /&gt;
| Wunsch ist TCP/IP Netzwerk oder Kamera|| align=&amp;quot;center&amp;quot;|x || align=&amp;quot;center&amp;quot;|- || align=&amp;quot;center&amp;quot;|x [http://www.microchip.com/stellent/idcplg?IdcService=SS_GET_PAGE&amp;amp;nodeId=2505&amp;amp;param=en535724] || align=&amp;quot;center&amp;quot;|- || align=&amp;quot;center&amp;quot;|-&lt;br /&gt;
|-&lt;br /&gt;
| Möchte die Erkenntnisse beruflich nutzen|| align=&amp;quot;center&amp;quot;|x || align=&amp;quot;center&amp;quot;|O || align=&amp;quot;center&amp;quot;|x || align=&amp;quot;center&amp;quot;|x || align=&amp;quot;center&amp;quot;|-&lt;br /&gt;
|-&lt;br /&gt;
| Extrem stromsparende Mini-Anwendung|| align=&amp;quot;center&amp;quot;|O || align=&amp;quot;center&amp;quot;|O || align=&amp;quot;center&amp;quot;|x [http://www.microchip.com/pagehandler/en-us/technology/xlp/] || align=&amp;quot;center&amp;quot;|x || align=&amp;quot;center&amp;quot;|-&lt;br /&gt;
|-&lt;br /&gt;
| Experimentieren mit Multithreading, RTOS, Schedulern || align=&amp;quot;center&amp;quot;|x || align=&amp;quot;center&amp;quot;|- || align=&amp;quot;center&amp;quot;|O [http://www.microchip.com/stellent/idcplg?IdcService=SS_GET_PAGE&amp;amp;nodeId=1406&amp;amp;dDocName=en531543&amp;amp;redirects=rtos] || align=&amp;quot;center&amp;quot;|- || align=&amp;quot;center&amp;quot;|-&lt;br /&gt;
|-&lt;br /&gt;
| Große, komplex strukturierte Programme || align=&amp;quot;center&amp;quot;|x || align=&amp;quot;center&amp;quot;|- || align=&amp;quot;center&amp;quot;|x || align=&amp;quot;center&amp;quot;|O || align=&amp;quot;center&amp;quot;|-&lt;br /&gt;
|-&lt;br /&gt;
| Viel I/O, PWM, komplexes Timing || align=&amp;quot;center&amp;quot;|x || align=&amp;quot;center&amp;quot;|O || align=&amp;quot;center&amp;quot;|x || align=&amp;quot;center&amp;quot;|? || align=&amp;quot;center&amp;quot;|-&lt;br /&gt;
|-&lt;br /&gt;
| Deutschsprachige Community || align=&amp;quot;center&amp;quot;|? || align=&amp;quot;center&amp;quot;|x || align=&amp;quot;center&amp;quot;|O || align=&amp;quot;center&amp;quot;|? || align=&amp;quot;center&amp;quot;|x&lt;br /&gt;
|}&lt;br /&gt;
* x = ja&lt;br /&gt;
* O = Teilweise, Einschränkungen&lt;br /&gt;
* - = nicht empfohlen&lt;br /&gt;
* ? = Bitte ergänzen&lt;br /&gt;
&lt;br /&gt;
Nur um nicht zu verwirren, auch wenn Teile &amp;quot;nicht empfohlen&amp;quot; sind, heißt dass nicht dass es mit dem Prozessor nicht geht, vielmehr dass es mehr Aufwand ist das zu realisieren oder mehr Einschränkungen hat.&lt;br /&gt;
&lt;br /&gt;
= Unwichtige Randbedingungen =&lt;br /&gt;
&lt;br /&gt;
Oftmals werden fälschlicherweise Argumente für oder gegen eine µC-Familie ausgesprochen, die in der Praxis &#039;&#039;&#039;zum Einstieg&#039;&#039;&#039; (bei konkreten Anwendungen kann das anders aussehen) eher unwichtig sind.&lt;br /&gt;
&lt;br /&gt;
* Spannungsversorgung 3,3V / 5V&lt;br /&gt;
* 8 (z.B. [[AVR]]), 16 (z.B. [[MSP430]]) oder 32 (z.B. [[STM32]]) Bit&lt;br /&gt;
* Interrupt System mit mehr oder weniger Features&lt;br /&gt;
* Programmiersprache (Assembler, Basic, C, C++, Pascal)&lt;br /&gt;
* Assembler verstehen (Sollte nur theoretisch verstanden werden, ein Programm sollte in einer Hochsprache geschrieben sein)&lt;br /&gt;
* DIL Gehäuse - steckbretttauglich (STM32-Prozessoren gibt es auch fertig gelötet auf einem steckbretttauglichen Board zum zehnfachen Preis vergleichbarer DIL Mikrocontroller)&lt;br /&gt;
* Programmieradapter&lt;br /&gt;
* zu 90% reicht doch ein kleiner Prozessor ([[AVR]]/PIC) - und für die restlichen kann man immer noch einen großen nehmen. Warum also nicht gleich einen großen nehmen?&lt;br /&gt;
&lt;br /&gt;
= Kosten =&lt;br /&gt;
&lt;br /&gt;
Grobe Abschätzung was das alles denn kosten wird. Hier sind nur einige Beispiele gezeigt.&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|- bgcolor=&amp;quot;#d0d0ff&amp;quot;&lt;br /&gt;
! Board || [[STM32]] || [[AVR]] || PIC18/24/32 || [[MSP430]] || Arduino&lt;br /&gt;
|-&lt;br /&gt;
| Demo-Board || align=&amp;quot;center&amp;quot;|[http://www.st.com/web/en/catalog/tools/FM116/SC959/SS1532/PF252419] 9..20€ (incl. Programmieradapter und Debugger) || align=&amp;quot;center&amp;quot;|15€ || align=&amp;quot;center&amp;quot;| [http://www.microchipdirect.com/ProductDetails.aspx?Catalog=BuyMicrochip&amp;amp;Category=Starter%20Kits&amp;amp;mid=1&amp;amp;lmid=610 durchschnittlich 18€ .. 50€] || align=&amp;quot;center&amp;quot;|?? || align=&amp;quot;center&amp;quot;|20€&lt;br /&gt;
|-&lt;br /&gt;
| Steckbrettaugliches Board || align=&amp;quot;center&amp;quot;| s.o. oder [http://re.reworld.eu/de/produkte/s64dil-405/index.htm S64DIL-405] 30€ || align=&amp;quot;center&amp;quot;|2-5€ als einzelner IC || align=&amp;quot;center&amp;quot;|2-5€ als einzelner IC || align=&amp;quot;center&amp;quot;|?? || align=&amp;quot;center&amp;quot;|??&lt;br /&gt;
|-&lt;br /&gt;
| Programmieradapter mit Debugger || align=&amp;quot;center&amp;quot;| s.o. oder z.B [http://www.segger.com/j-link-edu.html Segger J-LINK EDU] 50€ (sehr schnell und unterstützt viele Prozessoren) || align=&amp;quot;center&amp;quot;|?? || align=&amp;quot;center&amp;quot;|PICkit 3 30€ [http://www.microchipdirect.com/ProductSearch.aspx?keywords=PG164130] || align=&amp;quot;center&amp;quot;|?? || align=&amp;quot;center&amp;quot;|20€ (Man muss DebugWire aktivieren)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Das Demo-Board sollte ein Board sein, nicht zu teuer, um die ersten Erfahrungen zu sammeln. Wenn einem der Prozessor gefällt, so kann man später immer noch mit einem zweiten Demo-Board, z.B. mit Display aufrüsten.&lt;br /&gt;
&lt;br /&gt;
Wenn man gerne mit einem Steckbrett sich die Schaltung zusammen stecken möchte, so kann man entweder die benötigten Drähte am Demo-Board anlöten oder bei z.B. [[AVR]]/[[PIC]] Prozessoren gibt es Ausführungen im DIL Gehäuse, die direkt steckbar sind.&lt;br /&gt;
&lt;br /&gt;
Ein Programmieradapter sollte unbedingt auch einen Debugger beinhalten. Denn für den Start ist es ungemein hilfreich zu sehen was im Prozessor gerade geschieht. Die JTAG-Adapter für einen [[STM32]] Prozessor sind alle Debugger-Tauglich. Für einen [[AVR]] oder [[PIC]] Prozessor gibt es auch oft reine Programmer (oft Selbstbau-Lösungen über die serielle oder parallele Schnittstelle) welche den Mikrocontroller nur beschreiben können. Sinvoller sind hingegen Debugger (bspw. PIC Kit 3 [http://www.microchipdirect.com/ProductSearch.aspx?keywords=PG164130] kompatibel zu allen PIC Mikrocontrollern), die die Ausführung eines Mikrocontrollers anhalten können um die aktuelle Position im Programmcode, Variableninhalt, Register, ... auszulesen bzw. zur Laufzeit zu ändern.&lt;br /&gt;
&lt;br /&gt;
Der für den [[STM32]] empfohlene Segger J-LINK EDU ist zwar nicht der günstigste (z.B. auf einem STM32F4DISCOVERY Borad ist auch einer drauf den man für andere STM32 nutzen kann) aber eines der besten, mit sehr guten Software-Tools und nutzbar für alle Prozessoren mit ARM-Kern (ARM7/9/11/... Cortex-Mx). Niemals am Werkzeug sparen und man hat viel mehr Freude bei der Arbeit.&lt;br /&gt;
&lt;br /&gt;
Der &amp;quot;Arduino&amp;quot; ist kein eigenständiger Prozessor, sondern ein fertiges Board mit einer &amp;quot;Arduino&amp;quot; Programmierumgebung (und einem AVR Prozessor), extra geschaffen für Einsteiger. Allerdings ist da der Lerneffekt viel geringer da man den Prozessor mit der Arduino-Software programmiert und nicht direkt die Register.&lt;br /&gt;
&lt;br /&gt;
Ein [[PIC16]] ist ein älterer 8-Bit Mikrocontroller, der durch die [[PIC18]] Reihe abgelöst wurde. Werden komplexere Anforderungen in Zukunft an den Mikrocontroller gestellt (Audio, Grafik), so sollte zu den moderneren [[PIC24]] bzw. [[dsPIC]] (16-Bit) oder gar zu [[PIC32]] (32-Bit MIPS Prozessor) gegriffen werden, wobei letzterer von der Performance vergleichbar mit den STM32 ARM-basierten Mikrocontrollern ist.&lt;br /&gt;
&lt;br /&gt;
= Programmierumgebungen=&lt;br /&gt;
&lt;br /&gt;
Bei den Programmierumgebungen gibt es zu allen Prozessorfamilien kostenlose und Leistungsfähige Software&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|- bgcolor=&amp;quot;#d0d0ff&amp;quot;&lt;br /&gt;
! [[STM32]] || [[AVR]] || PIC || [[MSP430]] || Arduino&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot;|[http://www.coocox.org/CooCox_CoIDE.htm CooCox] || align=&amp;quot;center&amp;quot;|Atmel-Studio || align=&amp;quot;center&amp;quot;|[http://www.microchip.com/pagehandler/en-us/family/mplabx/ MPALB X] (IDE inklusive compiler) || align=&amp;quot;center&amp;quot;|?? || align=&amp;quot;center&amp;quot;|arduino 1.0.5&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
natürlich gibt es noch viele weitere (für STM32 siehe [[STM32#Programmierung]]), es sollte jedoch nur die einfachsten kostenlose (und ohne Codebegrenzung) für den ersten Einstieg gezeigt werden.&lt;br /&gt;
&lt;br /&gt;
= Dokumentation=&lt;br /&gt;
&lt;br /&gt;
Bevor man sich für einen Prozessor entscheidet sollte man unbedingt deren Dokumentation mal zumindest überfliegen und auch deren Errata&#039;s lesen. Nicht dass man eine Anwendung erstellen möchte und stellt hinterher fest, dass genau dieser Teil so buggy ist das er nicht genutzt werden kann.&lt;br /&gt;
&lt;br /&gt;
Beim [[STM32]] hat die Dokumentation doch recht viele Seiten, viel mehr als bei einem [[AVR]] oder PIC. Dabei ist vieles eher knapp beschrieben, man muss mehr suchen als z.B. bei den AVR-Dokus, um die gewünschten Informationen zu finden. Außerdem gibt es durchaus einige Unklarheiten und Fehler/Widersprüche. Schlussendlich ist es Geschmackssache mit welcher Doku von welchem Hersteller man sich besser zurecht findet.&lt;br /&gt;
&lt;br /&gt;
Bei den PICs gibt es zu jedem Mikrocontroller ein Datenblatt das die wichtigsten Informationen für den alltäglichen Gebrauch enthält. Da bestimmte Peripherie (bspw. I2C, SPI, ... ) aber sehr komplex ist und innerhalb einer Familie (PIC16/18/24/32) sich identisch verhält, gibt es zu jeder Familie die sogenannten Family-Datasheets, welche alle Module im Detail beschreiben.&lt;br /&gt;
&lt;br /&gt;
Parallel zur Dokumentation sollte man sich auch die Demo-Beispiele der Hersteller anschauen, dann wird vieles gleich verständlicher.&lt;br /&gt;
&lt;br /&gt;
Eine Übersicht über die Funktionen gibt es im Artikel: [[STM32]]&lt;br /&gt;
&lt;br /&gt;
= Die Arbeit mit dem STM32=&lt;br /&gt;
&lt;br /&gt;
Zu erst einmal SOOO groß sind die Unterschiede zwischen den einzelnen Prozessoren nicht. Alle haben Ein-/Ausgänge und um mittels einem Port-Pin eine LED ansteuern zu können muss bei jedem Prozessor der Pin erst einmal parametriert werden, egal ob das jetzt ein STM32 oder ein AVR oder ein MSP430 ist. Nur hat man bei einem STM32 doch einige Funktionen mehr, z.B. zuschaltbarer Pull-Up oder Pull-Down Widerstand und spezielle Setz-Rücksetzregister, die andere Prozessoren nicht haben, jedoch das programmieren vereinfachen.&lt;br /&gt;
Der Haupt-Unterschied zu den anderen Prozessoren ist, dass der [[STM32]] so viele Peripherie-Module beherbergt, dass man die einzeln immer mit einem Clock aktivieren muss, denn damit lässt sich viel Strom sparen.&lt;br /&gt;
&lt;br /&gt;
Und mal ganz ehrlich die Diskussion welcher µc einfacher zu konfigurieren ist, ist doch absoluter Unsinn. Der Weg ist immer der Gleiche:&lt;br /&gt;
*1. Blick ins Datenblatt welche Register für diese Funktion benötigt werden.&lt;br /&gt;
*2. Werte ermitteln die in die Register eingetragen werden.&lt;br /&gt;
*3. Werte ins Register schreiben. Da machte es GAR KEINEN UNTERSCHIED ob es ein [[AVR]], 8051/2, ARM,...... ist.&lt;br /&gt;
&lt;br /&gt;
Stimmt schon es gibt Unterschiede. Die Register haben anderen Namen, andere Adressen, andere Bitbedeutungen,...&lt;br /&gt;
Aber es steht doch alles im Datenblatt. Und ob ich jetzt einen [[AVR]] oder einen ARM das erste mal vor mir liegen hab. Ich brauch in allen Fällen die oben beschriebenen Schritte.&lt;br /&gt;
&lt;br /&gt;
Das Interruptsystem ist bei einem STM32 zusätzlich priorisiert, damit kann man festlegen welcher Interrupt vorrangig bearbeitet wird. Die Prioritätenvergabe ist auch kein Hexenwerk.&lt;br /&gt;
&lt;br /&gt;
Zu allen Prozessoren liefern die jeweiligen Hersteller umfangreiche Demo-Codes und Libraries mit. Meist sind alle in C geschrieben, daher sollte auch die Programmiersprache C verwendet werden. Vor allem auch wenn man berufliche Absichten verfolgt.&lt;br /&gt;
&lt;br /&gt;
Und wenn man einen STM32 kann, dann ist ein Umstieg auf einen LPC17xx (NXP) oder andere Hersteller überhaupt kein Problem, denn die bieten ebenfalls Prozessoren mit Cortex-M3 Kern und man kann diese mit der gleichen Programmierumgebung programmieren. Somit ist man nicht zwingend Herstellerabhängig.&lt;br /&gt;
&lt;br /&gt;
Mit einem STM32 kann man als Hobby-Baster und Professionell nahezu alle Anwendungen realisieren. Der hat genügend RAM und FLASH Speicher und auch genügen Geschwindigkeit. Viele Gehäuse-Varianten um kleine bis hin zu größere Geräte zu erstellen. Viele Schnittstellen, sind im Artikel [[STM32]] beschrieben.&lt;br /&gt;
&lt;br /&gt;
Der einzige Nachteil beim STM32: man muss etwas mehr lesen, da eine Peripherie doch viel mehr Funktionalität hat. Ansonsten kenne ich nicht wirklich einen Grund warum man als Neueinsteiger keinen STM32 nehmen sollte.&lt;br /&gt;
&lt;br /&gt;
= Programmiersprachen =&lt;br /&gt;
* Wie bei vielen anderen Controllern wird beim STM32 auch hauptsächlich C und C++ verwendet. Kennen sollte man die Programmiersprache C schon, wenn man davon noch keine Ahnung hat dann sollte man erst mal mittels einem Tutorial auf einem PC ein Konsoleprogramm schreiben, sodass man es einigermaßen kennen lernt. Hier im Forum gibt es ebenfalls Artikel dazu. Zielt man auf die (spätere) Anwendung in der Industrie, sollte aufgrund der Verbreitung auf jeden Fall C (oder C++) gewählt werden; außerdem sind die meisten verfügbaren Libraries in C geschrieben.&lt;br /&gt;
* Assembler sollte man nur grob verstehen, Details wie ein Befehl arbeitet ist unwichtig. Selbst wenn man die Zyklen für einen Funktionsaufruf wissen will, so bietet der STM32 (Cortex-M3) einen Cycle-Counter den man auslesen kann; durch die komplexere Pipeline und Cache-Effekte sind die Laufzeiten allerdings nicht genau vorhersehbar. Wird zyklengenause Timing benötigt, sollten Timer verwendet werden - davon hat der STM32 genug.&lt;br /&gt;
&lt;br /&gt;
Der 32bit-Adressraum, der RAM, Flash, I/O-Register vereinheitlicht ansprechen kann (im Gegensatz zu z.B. AVR) ist ideal für eine Verwendung durch Hochsprachen; bei Pointern muss keine zusätzliche Information verwaltet werden, in welche Art Speicher sie zeigen. Die Adresse gibt dies eindeutig an (es gibt nur &#039;&#039;&#039;eine&#039;&#039;&#039; Adresse 42, und nicht 3 wie beim AVR (Flash, RAM, I/O)) und die Hardware spricht automatisch den richtigen Speicher an. Die Möglichkeiten zur Offset-Adressierung, der Barrel-Shifter, Divsions-Einheit, die FPU (bei STM32F4), Interrupt-Modell etc. begünstigen ebenfalls die Erzeugung effizienteren Codes. Außerdem haben die STM32 einfach mehr &amp;quot;rohe Leistung&amp;quot;, d.h. mehr Flash/RAM-Speicher und höhere Taktfrequenzen.&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Folgerung&#039;&#039;&#039;: Die Programmierung in Hochsprachen ist &#039;&#039;&#039;bequemer als bei 8-Bittern&#039;&#039;&#039;, denn man muss sich einfach weniger Gedanken machen, ob der Compiler ein Programm nun effizent umsetzen kann (kann man natürlich trotzdem machen, um noch mehr Leistung &amp;quot;herauszuquetschen&amp;quot;, wenn man will).&lt;br /&gt;
&lt;br /&gt;
= Weitere Randbedingungen für die Entscheidung=&lt;br /&gt;
&lt;br /&gt;
Der wichtige Punkt, der oftmals auch vergessen wird: die Beschaffbarkeit. Wenn jemand einen Renesas M16C oder Fujitsu empfiehlt, dann sucht man erst mal und findet nur wenige vereinzelte die man privat kaufen kann.&lt;br /&gt;
&lt;br /&gt;
Oder auch die Unterstützung im Internet - ist bei einigen Exoten spärlich. Dieses Forum bietet die beste Hilfe für [[AVR]], PIC, [[STM32]] und [[MSP430]].&lt;br /&gt;
&lt;br /&gt;
Andere Prozessoren sind schon sehr alt, bzw. nicht mehr modern da deren Peripherie zum Teil doch recht eingeschränkte Funktionalität bietet. z.B. viele 8051 Typen oder PIC16. Die mögen für Mini-Anwenungen gut sein, aber wer will den schon gerne sich extra für eine Kleinanwendung mit einem kleinen µC auseinandersetzen, wenn er schon einen STM32 kennt, mit dem er alles machen kann (und sich bereits gute Funktionen geschrieben hat)?&lt;br /&gt;
&lt;br /&gt;
Daher mein Resümee: wer nicht gerade auf den Kopf gefallen ist, der kann getrost mit einem STM32 starten. Ein [http://www.st.com/web/en/catalog/tools/FM116/SC959/SS1532/PF252419?s_searchtype=keyword STM32F4DISCOVERY] Board kostet nur ca. 20 EUR - und mehr muss für den ersten Start nicht investiert werden - wenn es doch zu komplex sein sollte gibt es hier im Forum auch Hilfe oder man nimmt erst mal ein &amp;quot;Arduino&amp;quot;. Jedenfalls sind diese 20 EUR wirklich keine große Investition.&lt;br /&gt;
&lt;br /&gt;
= Weblinks, Foren, Communities, Tutorials =&lt;br /&gt;
* [[STM32]] Hauptartikel, [http://www.mikrocontroller.net/articles/STM32#Weblinks.2C_Foren.2C_Communities.2C_Tutorials dortige Linksammlung]&lt;br /&gt;
* [http://www.mikrocontroller.net/topic/319328 Diskussion zum Artikel]&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>Frank m35</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=STM32_f%C3%BCr_Einsteiger&amp;diff=80258</id>
		<title>STM32 für Einsteiger</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=STM32_f%C3%BCr_Einsteiger&amp;diff=80258"/>
		<updated>2013-12-30T11:39:50Z</updated>

		<summary type="html">&lt;p&gt;Frank m35: /* Unwichtige Randbedingungen */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Immer wiederkehrend hier im Forum &amp;quot;Mit welchem Mikrocontroller anfangen?&amp;quot;. Es gibt eine große Auswahl und eben so viele Empfehlungen. In diesem Artikel soll zu erst geholfen werden ob ein STM32-Prozessor mit Cortex-M3/M4 Kern überhaupt der Richtige für den Start ist.&lt;br /&gt;
Nicht für jeden ist der STM32 zu empfehlen, denn die Anforderungen und Wünsche die man realisieren möchte, sowie die eigenen Fähigkeiten sind verschieden.&lt;br /&gt;
&lt;br /&gt;
Es werden meist die Prozessoren AVR, PIC, Arduino, MSP430 und STM32 empfohlen. Seltener auch 8051, LPC und M16C. Alle haben Vorzüge und ebenso auch Nachteile.&lt;br /&gt;
&lt;br /&gt;
= Eigene Fähigkeiten und Wünsche =&lt;br /&gt;
&lt;br /&gt;
Zu erst einmal die Randbedingungen, mit der man sich selbst zu erst einmal einschätzen sollte:&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|- bgcolor=&amp;quot;#d0d0ff&amp;quot;&lt;br /&gt;
! Fähigkeit || Empfehlung [[STM32]] || Empfehlung [[AVR]] || Empfehlung PIC || Empfehlung [[MSP430]] || Empfehlung Arduino&lt;br /&gt;
|-&lt;br /&gt;
| Bereits in der Schule Mikrocontroller programmiert || align=&amp;quot;center&amp;quot;|x || align=&amp;quot;center&amp;quot;|x || align=&amp;quot;center&amp;quot;|x || align=&amp;quot;center&amp;quot;|x || align=&amp;quot;center&amp;quot;|-&lt;br /&gt;
|-&lt;br /&gt;
| Neueinsteiger, kaum Elektronikkenntnisse, noch nie programmiert || align=&amp;quot;center&amp;quot;|O || align=&amp;quot;center&amp;quot;|x || align=&amp;quot;center&amp;quot;|x [http://www.sprut.de/] || align=&amp;quot;center&amp;quot;|- || align=&amp;quot;center&amp;quot;|x&lt;br /&gt;
|-&lt;br /&gt;
| Wunsch ist SD-Card oder Grafik-Display || align=&amp;quot;center&amp;quot;|x || align=&amp;quot;center&amp;quot;|evt. Speicher zu klein || align=&amp;quot;center&amp;quot;|x [http://www.microchip.com/stellent/idcplg?IdcService=SS_GET_PAGE&amp;amp;nodeId=2680&amp;amp;dDocName=en537999] [http://www.microchip.com/pagehandler/en-us/technology/graphics/] || align=&amp;quot;center&amp;quot;|evt. Speicher zu klein || align=&amp;quot;center&amp;quot;|evt. Speicher zu klein&lt;br /&gt;
|-&lt;br /&gt;
| Wunsch ist TCP/IP Netzwerk oder Kamera|| align=&amp;quot;center&amp;quot;|x || align=&amp;quot;center&amp;quot;|- || align=&amp;quot;center&amp;quot;|x [http://www.microchip.com/stellent/idcplg?IdcService=SS_GET_PAGE&amp;amp;nodeId=2505&amp;amp;param=en535724] || align=&amp;quot;center&amp;quot;|- || align=&amp;quot;center&amp;quot;|-&lt;br /&gt;
|-&lt;br /&gt;
| Möchte die Erkenntnisse beruflich nutzen|| align=&amp;quot;center&amp;quot;|x || align=&amp;quot;center&amp;quot;|O || align=&amp;quot;center&amp;quot;|x || align=&amp;quot;center&amp;quot;|x || align=&amp;quot;center&amp;quot;|-&lt;br /&gt;
|-&lt;br /&gt;
| Extrem stromsparende Mini-Anwendung|| align=&amp;quot;center&amp;quot;|O || align=&amp;quot;center&amp;quot;|O || align=&amp;quot;center&amp;quot;|x [http://www.microchip.com/pagehandler/en-us/technology/xlp/] || align=&amp;quot;center&amp;quot;|x || align=&amp;quot;center&amp;quot;|-&lt;br /&gt;
|-&lt;br /&gt;
| Experimentieren mit Multithreading, RTOS, Schedulern || align=&amp;quot;center&amp;quot;|x || align=&amp;quot;center&amp;quot;|- || align=&amp;quot;center&amp;quot;|O [http://www.microchip.com/stellent/idcplg?IdcService=SS_GET_PAGE&amp;amp;nodeId=1406&amp;amp;dDocName=en531543&amp;amp;redirects=rtos] || align=&amp;quot;center&amp;quot;|- || align=&amp;quot;center&amp;quot;|-&lt;br /&gt;
|-&lt;br /&gt;
| Große, komplex strukturierte Programme || align=&amp;quot;center&amp;quot;|x || align=&amp;quot;center&amp;quot;|- || align=&amp;quot;center&amp;quot;|x || align=&amp;quot;center&amp;quot;|O || align=&amp;quot;center&amp;quot;|-&lt;br /&gt;
|-&lt;br /&gt;
| Viel I/O, PWM, komplexes Timing || align=&amp;quot;center&amp;quot;|x || align=&amp;quot;center&amp;quot;|O || align=&amp;quot;center&amp;quot;|x || align=&amp;quot;center&amp;quot;|? || align=&amp;quot;center&amp;quot;|-&lt;br /&gt;
|}&lt;br /&gt;
* x = ja&lt;br /&gt;
* O = Teilweise, Einschränkungen&lt;br /&gt;
* - = nicht empfohlen&lt;br /&gt;
* ? = Bitte ergänzen&lt;br /&gt;
&lt;br /&gt;
Nur um nicht zu verwirren, auch wenn Teile &amp;quot;nicht empfohlen&amp;quot; sind, heißt dass nicht dass es mit dem Prozessor nicht geht, vielmehr dass es mehr Aufwand ist das zu realisieren oder mehr Einschränkungen hat.&lt;br /&gt;
&lt;br /&gt;
= Unwichtige Randbedingungen =&lt;br /&gt;
&lt;br /&gt;
Oftmals werden fälschlicherweise Argumente für oder gegen eine µC-Familie ausgesprochen, die in der Praxis &#039;&#039;&#039;zum Einstieg&#039;&#039;&#039; (bei konkreten Anwendungen kann das anders aussehen) eher unwichtig sind.&lt;br /&gt;
&lt;br /&gt;
* Spannungsversorgung 3,3V / 5V&lt;br /&gt;
* 8 (z.B. [[AVR]]), 16 (z.B. [[MSP430]]) oder 32 (z.B. [[STM32]]) Bit&lt;br /&gt;
* Interrupt System mit mehr oder weniger Features&lt;br /&gt;
* Programmiersprache (Assembler, Basic, C, C++, Pascal)&lt;br /&gt;
* Assembler verstehen (Sollte nur theoretisch verstanden werden, ein Programm sollte in einer Hochsprache geschrieben sein)&lt;br /&gt;
* DIL Gehäuse - steckbretttauglich (STM32-Prozessoren gibt es auch fertig gelötet auf einem steckbretttauglichen Board zum zehnfachen Preis vergleichbarer DIL Mikrocontroller)&lt;br /&gt;
* Programmieradapter&lt;br /&gt;
* zu 90% reicht doch ein kleiner Prozessor ([[AVR]]/PIC) - und für die restlichen kann man immer noch einen großen nehmen. Warum also nicht gleich einen großen nehmen?&lt;br /&gt;
&lt;br /&gt;
= Kosten =&lt;br /&gt;
&lt;br /&gt;
Grobe Abschätzung was das alles denn kosten wird. Hier sind nur einige Beispiele gezeigt.&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|- bgcolor=&amp;quot;#d0d0ff&amp;quot;&lt;br /&gt;
! Board || [[STM32]] || [[AVR]] || PIC18/24/32 || [[MSP430]] || Arduino&lt;br /&gt;
|-&lt;br /&gt;
| Demo-Board || align=&amp;quot;center&amp;quot;|[http://www.st.com/web/en/catalog/tools/FM116/SC959/SS1532/PF252419] 9..20€ (incl. Programmieradapter und Debugger) || align=&amp;quot;center&amp;quot;|15€ || align=&amp;quot;center&amp;quot;| [http://www.microchipdirect.com/ProductDetails.aspx?Catalog=BuyMicrochip&amp;amp;Category=Starter%20Kits&amp;amp;mid=1&amp;amp;lmid=610 durchschnittlich 18€ .. 50€] || align=&amp;quot;center&amp;quot;|?? || align=&amp;quot;center&amp;quot;|20€&lt;br /&gt;
|-&lt;br /&gt;
| Steckbrettaugliches Board || align=&amp;quot;center&amp;quot;| s.o. oder [http://re.reworld.eu/de/produkte/s64dil-405/index.htm S64DIL-405] 30€ || align=&amp;quot;center&amp;quot;|2-5€ als einzelner IC || align=&amp;quot;center&amp;quot;|2-5€ als einzelner IC || align=&amp;quot;center&amp;quot;|?? || align=&amp;quot;center&amp;quot;|??&lt;br /&gt;
|-&lt;br /&gt;
| Programmieradapter mit Debugger || align=&amp;quot;center&amp;quot;| s.o. oder z.B [http://www.segger.com/j-link-edu.html Segger J-LINK EDU] 50€ (sehr schnell und unterstützt viele Prozessoren) || align=&amp;quot;center&amp;quot;|?? || align=&amp;quot;center&amp;quot;|PICkit 3 30€ [http://www.microchipdirect.com/ProductSearch.aspx?keywords=PG164130] || align=&amp;quot;center&amp;quot;|?? || align=&amp;quot;center&amp;quot;|20€ (Man muss DebugWire aktivieren)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Das Demo-Board sollte ein Board sein, nicht zu teuer, um die ersten Erfahrungen zu sammeln. Wenn einem der Prozessor gefällt, so kann man später immer noch mit einem zweiten Demo-Board, z.B. mit Display aufrüsten.&lt;br /&gt;
&lt;br /&gt;
Wenn man gerne mit einem Steckbrett sich die Schaltung zusammen stecken möchte, so kann man entweder die benötigten Drähte am Demo-Board anlöten oder bei z.B. [[AVR]]/[[PIC]] Prozessoren gibt es Ausführungen im DIL Gehäuse, die direkt steckbar sind.&lt;br /&gt;
&lt;br /&gt;
Ein Programmieradapter sollte unbedingt auch einen Debugger beinhalten. Denn für den Start ist es ungemein hilfreich zu sehen was im Prozessor gerade geschieht. Die JTAG-Adapter für einen [[STM32]] Prozessor sind alle Debugger-Tauglich. Für einen [[AVR]] oder [[PIC]] Prozessor gibt es auch oft reine Programmer (oft Selbstbau-Lösungen über die serielle oder parallele Schnittstelle) welche den Mikrocontroller nur beschreiben können. Sinvoller sind hingegen Debugger (bspw. PIC Kit 3 [http://www.microchipdirect.com/ProductSearch.aspx?keywords=PG164130] kompatibel zu allen PIC Mikrocontrollern), die die Ausführung eines Mikrocontrollers anhalten können um die aktuelle Position im Programmcode, Variableninhalt, Register, ... auszulesen bzw. zur Laufzeit zu ändern.&lt;br /&gt;
&lt;br /&gt;
Der für den [[STM32]] empfohlene Segger J-LINK EDU ist zwar nicht der günstigste (z.B. auf einem STM32F4DISCOVERY Borad ist auch einer drauf den man für andere STM32 nutzen kann) aber eines der besten, mit sehr guten Software-Tools und nutzbar für alle Prozessoren mit ARM-Kern (ARM7/9/11/... Cortex-Mx). Niemals am Werkzeug sparen und man hat viel mehr Freude bei der Arbeit.&lt;br /&gt;
&lt;br /&gt;
Der &amp;quot;Arduino&amp;quot; ist kein eigenständiger Prozessor, sondern ein fertiges Board mit einer &amp;quot;Arduino&amp;quot; Programmierumgebung (und einem AVR Prozessor), extra geschaffen für Einsteiger. Allerdings ist da der Lerneffekt viel geringer da man den Prozessor mit der Arduino-Software programmiert und nicht direkt die Register.&lt;br /&gt;
&lt;br /&gt;
Ein [[PIC16]] ist ein älterer 8-Bit Mikrocontroller, der durch die [[PIC18]] Reihe abgelöst wurde. Werden komplexere Anforderungen in Zukunft an den Mikrocontroller gestellt (Audio, Grafik), so sollte zu den moderneren [[PIC24]] bzw. [[dsPIC]] (16-Bit) oder gar zu [[PIC32]] (32-Bit MIPS Prozessor) gegriffen werden, wobei letzterer von der Performance vergleichbar mit den STM32 ARM-basierten Mikrocontrollern ist.&lt;br /&gt;
&lt;br /&gt;
= Programmierumgebungen=&lt;br /&gt;
&lt;br /&gt;
Bei den Programmierumgebungen gibt es zu allen Prozessorfamilien kostenlose und Leistungsfähige Software&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|- bgcolor=&amp;quot;#d0d0ff&amp;quot;&lt;br /&gt;
! [[STM32]] || [[AVR]] || PIC || [[MSP430]] || Arduino&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot;|[http://www.coocox.org/CooCox_CoIDE.htm CooCox] || align=&amp;quot;center&amp;quot;|Atmel-Studio || align=&amp;quot;center&amp;quot;|[http://www.microchip.com/pagehandler/en-us/family/mplabx/ MPALB X] (IDE inklusive compiler) || align=&amp;quot;center&amp;quot;|?? || align=&amp;quot;center&amp;quot;|arduino 1.0.5&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
natürlich gibt es noch viele weitere (für STM32 siehe [[STM32#Programmierung]]), es sollte jedoch nur die einfachsten kostenlose (und ohne Codebegrenzung) für den ersten Einstieg gezeigt werden.&lt;br /&gt;
&lt;br /&gt;
= Dokumentation=&lt;br /&gt;
&lt;br /&gt;
Bevor man sich für einen Prozessor entscheidet sollte man unbedingt deren Dokumentation mal zumindest überfliegen und auch deren Errata&#039;s lesen. Nicht dass man eine Anwendung erstellen möchte und stellt hinterher fest, dass genau dieser Teil so buggy ist das er nicht genutzt werden kann.&lt;br /&gt;
&lt;br /&gt;
Beim [[STM32]] hat die Dokumentation doch recht viele Seiten, viel mehr als bei einem [[AVR]] oder PIC. Dabei ist vieles eher knapp beschrieben, man muss mehr suchen als z.B. bei den AVR-Dokus, um die gewünschten Informationen zu finden. Außerdem gibt es durchaus einige Unklarheiten und Fehler/Widersprüche. Schlussendlich ist es Geschmackssache mit welcher Doku von welchem Hersteller man sich besser zurecht findet.&lt;br /&gt;
&lt;br /&gt;
Bei den PICs gibt es zu jedem Mikrocontroller ein Datenblatt das die wichtigsten Informationen für den alltäglichen Gebrauch enthält. Da bestimmte Peripherie (bspw. I2C, SPI, ... ) aber sehr komplex ist und innerhalb einer Familie (PIC16/18/24/32) sich identisch verhält, gibt es zu jeder Familie die sogenannten Family-Datasheets, welche alle Module im Detail beschreiben.&lt;br /&gt;
&lt;br /&gt;
Parallel zur Dokumentation sollte man sich auch die Demo-Beispiele der Hersteller anschauen, dann wird vieles gleich verständlicher.&lt;br /&gt;
&lt;br /&gt;
Eine Übersicht über die Funktionen gibt es im Artikel: [[STM32]]&lt;br /&gt;
&lt;br /&gt;
= Die Arbeit mit dem STM32=&lt;br /&gt;
&lt;br /&gt;
Zu erst einmal SOOO groß sind die Unterschiede zwischen den einzelnen Prozessoren nicht. Alle haben Ein-/Ausgänge und um mittels einem Port-Pin eine LED ansteuern zu können muss bei jedem Prozessor der Pin erst einmal parametriert werden, egal ob das jetzt ein STM32 oder ein AVR oder ein MSP430 ist. Nur hat man bei einem STM32 doch einige Funktionen mehr, z.B. zuschaltbarer Pull-Up oder Pull-Down Widerstand und spezielle Setz-Rücksetzregister, die andere Prozessoren nicht haben, jedoch das programmieren vereinfachen.&lt;br /&gt;
Der Haupt-Unterschied zu den anderen Prozessoren ist, dass der [[STM32]] so viele Peripherie-Module beherbergt, dass man die einzeln immer mit einem Clock aktivieren muss, denn damit lässt sich viel Strom sparen.&lt;br /&gt;
&lt;br /&gt;
Und mal ganz ehrlich die Diskussion welcher µc einfacher zu konfigurieren ist, ist doch absoluter Unsinn. Der Weg ist immer der Gleiche:&lt;br /&gt;
*1. Blick ins Datenblatt welche Register für diese Funktion benötigt werden.&lt;br /&gt;
*2. Werte ermitteln die in die Register eingetragen werden.&lt;br /&gt;
*3. Werte ins Register schreiben. Da machte es GAR KEINEN UNTERSCHIED ob es ein [[AVR]], 8051/2, ARM,...... ist.&lt;br /&gt;
&lt;br /&gt;
Stimmt schon es gibt Unterschiede. Die Register haben anderen Namen, andere Adressen, andere Bitbedeutungen,...&lt;br /&gt;
Aber es steht doch alles im Datenblatt. Und ob ich jetzt einen [[AVR]] oder einen ARM das erste mal vor mir liegen hab. Ich brauch in allen Fällen die oben beschriebenen Schritte.&lt;br /&gt;
&lt;br /&gt;
Das Interruptsystem ist bei einem STM32 zusätzlich priorisiert, damit kann man festlegen welcher Interrupt vorrangig bearbeitet wird. Die Prioritätenvergabe ist auch kein Hexenwerk.&lt;br /&gt;
&lt;br /&gt;
Zu allen Prozessoren liefern die jeweiligen Hersteller umfangreiche Demo-Codes und Libraries mit. Meist sind alle in C geschrieben, daher sollte auch die Programmiersprache C verwendet werden. Vor allem auch wenn man berufliche Absichten verfolgt.&lt;br /&gt;
&lt;br /&gt;
Und wenn man einen STM32 kann, dann ist ein Umstieg auf einen LPC17xx (NXP) oder andere Hersteller überhaupt kein Problem, denn die bieten ebenfalls Prozessoren mit Cortex-M3 Kern und man kann diese mit der gleichen Programmierumgebung programmieren. Somit ist man nicht zwingend Herstellerabhängig.&lt;br /&gt;
&lt;br /&gt;
Mit einem STM32 kann man als Hobby-Baster und Professionell nahezu alle Anwendungen realisieren. Der hat genügend RAM und FLASH Speicher und auch genügen Geschwindigkeit. Viele Gehäuse-Varianten um kleine bis hin zu größere Geräte zu erstellen. Viele Schnittstellen, sind im Artikel [[STM32]] beschrieben.&lt;br /&gt;
&lt;br /&gt;
Der einzige Nachteil beim STM32: man muss etwas mehr lesen, da eine Peripherie doch viel mehr Funktionalität hat. Ansonsten kenne ich nicht wirklich einen Grund warum man als Neueinsteiger keinen STM32 nehmen sollte.&lt;br /&gt;
&lt;br /&gt;
= Programmiersprachen =&lt;br /&gt;
* Wie bei vielen anderen Controllern wird beim STM32 auch hauptsächlich C und C++ verwendet. Kennen sollte man die Programmiersprache C schon, wenn man davon noch keine Ahnung hat dann sollte man erst mal mittels einem Tutorial auf einem PC ein Konsoleprogramm schreiben, sodass man es einigermaßen kennen lernt. Hier im Forum gibt es ebenfalls Artikel dazu. Zielt man auf die (spätere) Anwendung in der Industrie, sollte aufgrund der Verbreitung auf jeden Fall C (oder C++) gewählt werden; außerdem sind die meisten verfügbaren Libraries in C geschrieben.&lt;br /&gt;
* Assembler sollte man nur grob verstehen, Details wie ein Befehl arbeitet ist unwichtig. Selbst wenn man die Zyklen für einen Funktionsaufruf wissen will, so bietet der STM32 (Cortex-M3) einen Cycle-Counter den man auslesen kann; durch die komplexere Pipeline und Cache-Effekte sind die Laufzeiten allerdings nicht genau vorhersehbar. Wird zyklengenause Timing benötigt, sollten Timer verwendet werden - davon hat der STM32 genug.&lt;br /&gt;
&lt;br /&gt;
Der 32bit-Adressraum, der RAM, Flash, I/O-Register vereinheitlicht ansprechen kann (im Gegensatz zu z.B. AVR) ist ideal für eine Verwendung durch Hochsprachen; bei Pointern muss keine zusätzliche Information verwaltet werden, in welche Art Speicher sie zeigen. Die Adresse gibt dies eindeutig an (es gibt nur &#039;&#039;&#039;eine&#039;&#039;&#039; Adresse 42, und nicht 3 wie beim AVR (Flash, RAM, I/O)) und die Hardware spricht automatisch den richtigen Speicher an. Die Möglichkeiten zur Offset-Adressierung, der Barrel-Shifter, Divsions-Einheit, die FPU (bei STM32F4), Interrupt-Modell etc. begünstigen ebenfalls die Erzeugung effizienteren Codes. Außerdem haben die STM32 einfach mehr &amp;quot;rohe Leistung&amp;quot;, d.h. mehr Flash/RAM-Speicher und höhere Taktfrequenzen.&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Folgerung&#039;&#039;&#039;: Die Programmierung in Hochsprachen ist &#039;&#039;&#039;bequemer als bei 8-Bittern&#039;&#039;&#039;, denn man muss sich einfach weniger Gedanken machen, ob der Compiler ein Programm nun effizent umsetzen kann (kann man natürlich trotzdem machen, um noch mehr Leistung &amp;quot;herauszuquetschen&amp;quot;, wenn man will).&lt;br /&gt;
&lt;br /&gt;
= Weitere Randbedingungen für die Entscheidung=&lt;br /&gt;
&lt;br /&gt;
Der wichtige Punkt, der oftmals auch vergessen wird: die Beschaffbarkeit. Wenn jemand einen Renesas M16C oder Fujitsu empfiehlt, dann sucht man erst mal und findet nur wenige vereinzelte die man privat kaufen kann.&lt;br /&gt;
&lt;br /&gt;
Oder auch die Unterstützung im Internet - ist bei einigen Exoten spärlich. Dieses Forum bietet die beste Hilfe für [[AVR]], PIC, [[STM32]] und [[MSP430]].&lt;br /&gt;
&lt;br /&gt;
Andere Prozessoren sind schon sehr alt, bzw. nicht mehr modern da deren Peripherie zum Teil doch recht eingeschränkte Funktionalität bietet. z.B. viele 8051 Typen oder PIC16. Die mögen für Mini-Anwenungen gut sein, aber wer will den schon gerne sich extra für eine Kleinanwendung mit einem kleinen µC auseinandersetzen, wenn er schon einen STM32 kennt, mit dem er alles machen kann (und sich bereits gute Funktionen geschrieben hat)?&lt;br /&gt;
&lt;br /&gt;
Daher mein Resümee: wer nicht gerade auf den Kopf gefallen ist, der kann getrost mit einem STM32 starten. Ein [http://www.st.com/web/en/catalog/tools/FM116/SC959/SS1532/PF252419?s_searchtype=keyword STM32F4DISCOVERY] Board kostet nur ca. 20 EUR - und mehr muss für den ersten Start nicht investiert werden - wenn es doch zu komplex sein sollte gibt es hier im Forum auch Hilfe oder man nimmt erst mal ein &amp;quot;Arduino&amp;quot;. Jedenfalls sind diese 20 EUR wirklich keine große Investition.&lt;br /&gt;
&lt;br /&gt;
= Weblinks, Foren, Communities, Tutorials =&lt;br /&gt;
* [[STM32]] Hauptartikel, [http://www.mikrocontroller.net/articles/STM32#Weblinks.2C_Foren.2C_Communities.2C_Tutorials dortige Linksammlung]&lt;br /&gt;
* [http://www.mikrocontroller.net/topic/319328 Diskussion zum Artikel]&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>Frank m35</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=STM32_f%C3%BCr_Einsteiger&amp;diff=80257</id>
		<title>STM32 für Einsteiger</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=STM32_f%C3%BCr_Einsteiger&amp;diff=80257"/>
		<updated>2013-12-30T11:38:58Z</updated>

		<summary type="html">&lt;p&gt;Frank m35: /* Eigene Fähigkeiten und Wünsche */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Immer wiederkehrend hier im Forum &amp;quot;Mit welchem Mikrocontroller anfangen?&amp;quot;. Es gibt eine große Auswahl und eben so viele Empfehlungen. In diesem Artikel soll zu erst geholfen werden ob ein STM32-Prozessor mit Cortex-M3/M4 Kern überhaupt der Richtige für den Start ist.&lt;br /&gt;
Nicht für jeden ist der STM32 zu empfehlen, denn die Anforderungen und Wünsche die man realisieren möchte, sowie die eigenen Fähigkeiten sind verschieden.&lt;br /&gt;
&lt;br /&gt;
Es werden meist die Prozessoren AVR, PIC, Arduino, MSP430 und STM32 empfohlen. Seltener auch 8051, LPC und M16C. Alle haben Vorzüge und ebenso auch Nachteile.&lt;br /&gt;
&lt;br /&gt;
= Eigene Fähigkeiten und Wünsche =&lt;br /&gt;
&lt;br /&gt;
Zu erst einmal die Randbedingungen, mit der man sich selbst zu erst einmal einschätzen sollte:&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|- bgcolor=&amp;quot;#d0d0ff&amp;quot;&lt;br /&gt;
! Fähigkeit || Empfehlung [[STM32]] || Empfehlung [[AVR]] || Empfehlung PIC || Empfehlung [[MSP430]] || Empfehlung Arduino&lt;br /&gt;
|-&lt;br /&gt;
| Bereits in der Schule Mikrocontroller programmiert || align=&amp;quot;center&amp;quot;|x || align=&amp;quot;center&amp;quot;|x || align=&amp;quot;center&amp;quot;|x || align=&amp;quot;center&amp;quot;|x || align=&amp;quot;center&amp;quot;|-&lt;br /&gt;
|-&lt;br /&gt;
| Neueinsteiger, kaum Elektronikkenntnisse, noch nie programmiert || align=&amp;quot;center&amp;quot;|O || align=&amp;quot;center&amp;quot;|x || align=&amp;quot;center&amp;quot;|x [http://www.sprut.de/] || align=&amp;quot;center&amp;quot;|- || align=&amp;quot;center&amp;quot;|x&lt;br /&gt;
|-&lt;br /&gt;
| Wunsch ist SD-Card oder Grafik-Display || align=&amp;quot;center&amp;quot;|x || align=&amp;quot;center&amp;quot;|evt. Speicher zu klein || align=&amp;quot;center&amp;quot;|x [http://www.microchip.com/stellent/idcplg?IdcService=SS_GET_PAGE&amp;amp;nodeId=2680&amp;amp;dDocName=en537999] [http://www.microchip.com/pagehandler/en-us/technology/graphics/] || align=&amp;quot;center&amp;quot;|evt. Speicher zu klein || align=&amp;quot;center&amp;quot;|evt. Speicher zu klein&lt;br /&gt;
|-&lt;br /&gt;
| Wunsch ist TCP/IP Netzwerk oder Kamera|| align=&amp;quot;center&amp;quot;|x || align=&amp;quot;center&amp;quot;|- || align=&amp;quot;center&amp;quot;|x [http://www.microchip.com/stellent/idcplg?IdcService=SS_GET_PAGE&amp;amp;nodeId=2505&amp;amp;param=en535724] || align=&amp;quot;center&amp;quot;|- || align=&amp;quot;center&amp;quot;|-&lt;br /&gt;
|-&lt;br /&gt;
| Möchte die Erkenntnisse beruflich nutzen|| align=&amp;quot;center&amp;quot;|x || align=&amp;quot;center&amp;quot;|O || align=&amp;quot;center&amp;quot;|x || align=&amp;quot;center&amp;quot;|x || align=&amp;quot;center&amp;quot;|-&lt;br /&gt;
|-&lt;br /&gt;
| Extrem stromsparende Mini-Anwendung|| align=&amp;quot;center&amp;quot;|O || align=&amp;quot;center&amp;quot;|O || align=&amp;quot;center&amp;quot;|x [http://www.microchip.com/pagehandler/en-us/technology/xlp/] || align=&amp;quot;center&amp;quot;|x || align=&amp;quot;center&amp;quot;|-&lt;br /&gt;
|-&lt;br /&gt;
| Experimentieren mit Multithreading, RTOS, Schedulern || align=&amp;quot;center&amp;quot;|x || align=&amp;quot;center&amp;quot;|- || align=&amp;quot;center&amp;quot;|O [http://www.microchip.com/stellent/idcplg?IdcService=SS_GET_PAGE&amp;amp;nodeId=1406&amp;amp;dDocName=en531543&amp;amp;redirects=rtos] || align=&amp;quot;center&amp;quot;|- || align=&amp;quot;center&amp;quot;|-&lt;br /&gt;
|-&lt;br /&gt;
| Große, komplex strukturierte Programme || align=&amp;quot;center&amp;quot;|x || align=&amp;quot;center&amp;quot;|- || align=&amp;quot;center&amp;quot;|x || align=&amp;quot;center&amp;quot;|O || align=&amp;quot;center&amp;quot;|-&lt;br /&gt;
|-&lt;br /&gt;
| Viel I/O, PWM, komplexes Timing || align=&amp;quot;center&amp;quot;|x || align=&amp;quot;center&amp;quot;|O || align=&amp;quot;center&amp;quot;|x || align=&amp;quot;center&amp;quot;|? || align=&amp;quot;center&amp;quot;|-&lt;br /&gt;
|}&lt;br /&gt;
* x = ja&lt;br /&gt;
* O = Teilweise, Einschränkungen&lt;br /&gt;
* - = nicht empfohlen&lt;br /&gt;
* ? = Bitte ergänzen&lt;br /&gt;
&lt;br /&gt;
Nur um nicht zu verwirren, auch wenn Teile &amp;quot;nicht empfohlen&amp;quot; sind, heißt dass nicht dass es mit dem Prozessor nicht geht, vielmehr dass es mehr Aufwand ist das zu realisieren oder mehr Einschränkungen hat.&lt;br /&gt;
&lt;br /&gt;
= Unwichtige Randbedingungen =&lt;br /&gt;
&lt;br /&gt;
Oftmals werden fälschlicherweise Argumente für oder gegen eine µC-Familie ausgesprochen, die in der Praxis &#039;&#039;&#039;zum Einstieg&#039;&#039;&#039; (bei konkreten Anwendungen kann das anders aussehen) eher unwichtig sind.&lt;br /&gt;
&lt;br /&gt;
* Spannungsversorgung 3,3V / 5V&lt;br /&gt;
* 8 (z.B. [[AVR]]), 16 (z.B. [[MSP430]]) oder 32 (z.B. [[STM32]]) Bit&lt;br /&gt;
* Interrupt System mit mehr oder weniger Features&lt;br /&gt;
* Programmiersprache (Assembler, Basic, C, C++, Pascal)&lt;br /&gt;
* Assembler verstehen (Sollte nur theoretisch verstanden werden, ein Programm sollte in einer Hochsprache geschrieben sein)&lt;br /&gt;
* DIL Gehäuse - steckbretttauglich (STM32-Prozessoren gibt es auch fertig gelötet auf einem steckbretttauglichen Board)&lt;br /&gt;
* Programmieradapter&lt;br /&gt;
* zu 90% reicht doch ein kleiner Prozessor ([[AVR]]/PIC) - und für die restlichen kann man immer noch einen großen nehmen. Warum also nicht gleich einen großen nehmen?&lt;br /&gt;
&lt;br /&gt;
= Kosten =&lt;br /&gt;
&lt;br /&gt;
Grobe Abschätzung was das alles denn kosten wird. Hier sind nur einige Beispiele gezeigt.&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|- bgcolor=&amp;quot;#d0d0ff&amp;quot;&lt;br /&gt;
! Board || [[STM32]] || [[AVR]] || PIC18/24/32 || [[MSP430]] || Arduino&lt;br /&gt;
|-&lt;br /&gt;
| Demo-Board || align=&amp;quot;center&amp;quot;|[http://www.st.com/web/en/catalog/tools/FM116/SC959/SS1532/PF252419] 9..20€ (incl. Programmieradapter und Debugger) || align=&amp;quot;center&amp;quot;|15€ || align=&amp;quot;center&amp;quot;| [http://www.microchipdirect.com/ProductDetails.aspx?Catalog=BuyMicrochip&amp;amp;Category=Starter%20Kits&amp;amp;mid=1&amp;amp;lmid=610 durchschnittlich 18€ .. 50€] || align=&amp;quot;center&amp;quot;|?? || align=&amp;quot;center&amp;quot;|20€&lt;br /&gt;
|-&lt;br /&gt;
| Steckbrettaugliches Board || align=&amp;quot;center&amp;quot;| s.o. oder [http://re.reworld.eu/de/produkte/s64dil-405/index.htm S64DIL-405] 30€ || align=&amp;quot;center&amp;quot;|2-5€ als einzelner IC || align=&amp;quot;center&amp;quot;|2-5€ als einzelner IC || align=&amp;quot;center&amp;quot;|?? || align=&amp;quot;center&amp;quot;|??&lt;br /&gt;
|-&lt;br /&gt;
| Programmieradapter mit Debugger || align=&amp;quot;center&amp;quot;| s.o. oder z.B [http://www.segger.com/j-link-edu.html Segger J-LINK EDU] 50€ (sehr schnell und unterstützt viele Prozessoren) || align=&amp;quot;center&amp;quot;|?? || align=&amp;quot;center&amp;quot;|PICkit 3 30€ [http://www.microchipdirect.com/ProductSearch.aspx?keywords=PG164130] || align=&amp;quot;center&amp;quot;|?? || align=&amp;quot;center&amp;quot;|20€ (Man muss DebugWire aktivieren)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Das Demo-Board sollte ein Board sein, nicht zu teuer, um die ersten Erfahrungen zu sammeln. Wenn einem der Prozessor gefällt, so kann man später immer noch mit einem zweiten Demo-Board, z.B. mit Display aufrüsten.&lt;br /&gt;
&lt;br /&gt;
Wenn man gerne mit einem Steckbrett sich die Schaltung zusammen stecken möchte, so kann man entweder die benötigten Drähte am Demo-Board anlöten oder bei z.B. [[AVR]]/[[PIC]] Prozessoren gibt es Ausführungen im DIL Gehäuse, die direkt steckbar sind.&lt;br /&gt;
&lt;br /&gt;
Ein Programmieradapter sollte unbedingt auch einen Debugger beinhalten. Denn für den Start ist es ungemein hilfreich zu sehen was im Prozessor gerade geschieht. Die JTAG-Adapter für einen [[STM32]] Prozessor sind alle Debugger-Tauglich. Für einen [[AVR]] oder [[PIC]] Prozessor gibt es auch oft reine Programmer (oft Selbstbau-Lösungen über die serielle oder parallele Schnittstelle) welche den Mikrocontroller nur beschreiben können. Sinvoller sind hingegen Debugger (bspw. PIC Kit 3 [http://www.microchipdirect.com/ProductSearch.aspx?keywords=PG164130] kompatibel zu allen PIC Mikrocontrollern), die die Ausführung eines Mikrocontrollers anhalten können um die aktuelle Position im Programmcode, Variableninhalt, Register, ... auszulesen bzw. zur Laufzeit zu ändern.&lt;br /&gt;
&lt;br /&gt;
Der für den [[STM32]] empfohlene Segger J-LINK EDU ist zwar nicht der günstigste (z.B. auf einem STM32F4DISCOVERY Borad ist auch einer drauf den man für andere STM32 nutzen kann) aber eines der besten, mit sehr guten Software-Tools und nutzbar für alle Prozessoren mit ARM-Kern (ARM7/9/11/... Cortex-Mx). Niemals am Werkzeug sparen und man hat viel mehr Freude bei der Arbeit.&lt;br /&gt;
&lt;br /&gt;
Der &amp;quot;Arduino&amp;quot; ist kein eigenständiger Prozessor, sondern ein fertiges Board mit einer &amp;quot;Arduino&amp;quot; Programmierumgebung (und einem AVR Prozessor), extra geschaffen für Einsteiger. Allerdings ist da der Lerneffekt viel geringer da man den Prozessor mit der Arduino-Software programmiert und nicht direkt die Register.&lt;br /&gt;
&lt;br /&gt;
Ein [[PIC16]] ist ein älterer 8-Bit Mikrocontroller, der durch die [[PIC18]] Reihe abgelöst wurde. Werden komplexere Anforderungen in Zukunft an den Mikrocontroller gestellt (Audio, Grafik), so sollte zu den moderneren [[PIC24]] bzw. [[dsPIC]] (16-Bit) oder gar zu [[PIC32]] (32-Bit MIPS Prozessor) gegriffen werden, wobei letzterer von der Performance vergleichbar mit den STM32 ARM-basierten Mikrocontrollern ist.&lt;br /&gt;
&lt;br /&gt;
= Programmierumgebungen=&lt;br /&gt;
&lt;br /&gt;
Bei den Programmierumgebungen gibt es zu allen Prozessorfamilien kostenlose und Leistungsfähige Software&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|- bgcolor=&amp;quot;#d0d0ff&amp;quot;&lt;br /&gt;
! [[STM32]] || [[AVR]] || PIC || [[MSP430]] || Arduino&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot;|[http://www.coocox.org/CooCox_CoIDE.htm CooCox] || align=&amp;quot;center&amp;quot;|Atmel-Studio || align=&amp;quot;center&amp;quot;|[http://www.microchip.com/pagehandler/en-us/family/mplabx/ MPALB X] (IDE inklusive compiler) || align=&amp;quot;center&amp;quot;|?? || align=&amp;quot;center&amp;quot;|arduino 1.0.5&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
natürlich gibt es noch viele weitere (für STM32 siehe [[STM32#Programmierung]]), es sollte jedoch nur die einfachsten kostenlose (und ohne Codebegrenzung) für den ersten Einstieg gezeigt werden.&lt;br /&gt;
&lt;br /&gt;
= Dokumentation=&lt;br /&gt;
&lt;br /&gt;
Bevor man sich für einen Prozessor entscheidet sollte man unbedingt deren Dokumentation mal zumindest überfliegen und auch deren Errata&#039;s lesen. Nicht dass man eine Anwendung erstellen möchte und stellt hinterher fest, dass genau dieser Teil so buggy ist das er nicht genutzt werden kann.&lt;br /&gt;
&lt;br /&gt;
Beim [[STM32]] hat die Dokumentation doch recht viele Seiten, viel mehr als bei einem [[AVR]] oder PIC. Dabei ist vieles eher knapp beschrieben, man muss mehr suchen als z.B. bei den AVR-Dokus, um die gewünschten Informationen zu finden. Außerdem gibt es durchaus einige Unklarheiten und Fehler/Widersprüche. Schlussendlich ist es Geschmackssache mit welcher Doku von welchem Hersteller man sich besser zurecht findet.&lt;br /&gt;
&lt;br /&gt;
Bei den PICs gibt es zu jedem Mikrocontroller ein Datenblatt das die wichtigsten Informationen für den alltäglichen Gebrauch enthält. Da bestimmte Peripherie (bspw. I2C, SPI, ... ) aber sehr komplex ist und innerhalb einer Familie (PIC16/18/24/32) sich identisch verhält, gibt es zu jeder Familie die sogenannten Family-Datasheets, welche alle Module im Detail beschreiben.&lt;br /&gt;
&lt;br /&gt;
Parallel zur Dokumentation sollte man sich auch die Demo-Beispiele der Hersteller anschauen, dann wird vieles gleich verständlicher.&lt;br /&gt;
&lt;br /&gt;
Eine Übersicht über die Funktionen gibt es im Artikel: [[STM32]]&lt;br /&gt;
&lt;br /&gt;
= Die Arbeit mit dem STM32=&lt;br /&gt;
&lt;br /&gt;
Zu erst einmal SOOO groß sind die Unterschiede zwischen den einzelnen Prozessoren nicht. Alle haben Ein-/Ausgänge und um mittels einem Port-Pin eine LED ansteuern zu können muss bei jedem Prozessor der Pin erst einmal parametriert werden, egal ob das jetzt ein STM32 oder ein AVR oder ein MSP430 ist. Nur hat man bei einem STM32 doch einige Funktionen mehr, z.B. zuschaltbarer Pull-Up oder Pull-Down Widerstand und spezielle Setz-Rücksetzregister, die andere Prozessoren nicht haben, jedoch das programmieren vereinfachen.&lt;br /&gt;
Der Haupt-Unterschied zu den anderen Prozessoren ist, dass der [[STM32]] so viele Peripherie-Module beherbergt, dass man die einzeln immer mit einem Clock aktivieren muss, denn damit lässt sich viel Strom sparen.&lt;br /&gt;
&lt;br /&gt;
Und mal ganz ehrlich die Diskussion welcher µc einfacher zu konfigurieren ist, ist doch absoluter Unsinn. Der Weg ist immer der Gleiche:&lt;br /&gt;
*1. Blick ins Datenblatt welche Register für diese Funktion benötigt werden.&lt;br /&gt;
*2. Werte ermitteln die in die Register eingetragen werden.&lt;br /&gt;
*3. Werte ins Register schreiben. Da machte es GAR KEINEN UNTERSCHIED ob es ein [[AVR]], 8051/2, ARM,...... ist.&lt;br /&gt;
&lt;br /&gt;
Stimmt schon es gibt Unterschiede. Die Register haben anderen Namen, andere Adressen, andere Bitbedeutungen,...&lt;br /&gt;
Aber es steht doch alles im Datenblatt. Und ob ich jetzt einen [[AVR]] oder einen ARM das erste mal vor mir liegen hab. Ich brauch in allen Fällen die oben beschriebenen Schritte.&lt;br /&gt;
&lt;br /&gt;
Das Interruptsystem ist bei einem STM32 zusätzlich priorisiert, damit kann man festlegen welcher Interrupt vorrangig bearbeitet wird. Die Prioritätenvergabe ist auch kein Hexenwerk.&lt;br /&gt;
&lt;br /&gt;
Zu allen Prozessoren liefern die jeweiligen Hersteller umfangreiche Demo-Codes und Libraries mit. Meist sind alle in C geschrieben, daher sollte auch die Programmiersprache C verwendet werden. Vor allem auch wenn man berufliche Absichten verfolgt.&lt;br /&gt;
&lt;br /&gt;
Und wenn man einen STM32 kann, dann ist ein Umstieg auf einen LPC17xx (NXP) oder andere Hersteller überhaupt kein Problem, denn die bieten ebenfalls Prozessoren mit Cortex-M3 Kern und man kann diese mit der gleichen Programmierumgebung programmieren. Somit ist man nicht zwingend Herstellerabhängig.&lt;br /&gt;
&lt;br /&gt;
Mit einem STM32 kann man als Hobby-Baster und Professionell nahezu alle Anwendungen realisieren. Der hat genügend RAM und FLASH Speicher und auch genügen Geschwindigkeit. Viele Gehäuse-Varianten um kleine bis hin zu größere Geräte zu erstellen. Viele Schnittstellen, sind im Artikel [[STM32]] beschrieben.&lt;br /&gt;
&lt;br /&gt;
Der einzige Nachteil beim STM32: man muss etwas mehr lesen, da eine Peripherie doch viel mehr Funktionalität hat. Ansonsten kenne ich nicht wirklich einen Grund warum man als Neueinsteiger keinen STM32 nehmen sollte.&lt;br /&gt;
&lt;br /&gt;
= Programmiersprachen =&lt;br /&gt;
* Wie bei vielen anderen Controllern wird beim STM32 auch hauptsächlich C und C++ verwendet. Kennen sollte man die Programmiersprache C schon, wenn man davon noch keine Ahnung hat dann sollte man erst mal mittels einem Tutorial auf einem PC ein Konsoleprogramm schreiben, sodass man es einigermaßen kennen lernt. Hier im Forum gibt es ebenfalls Artikel dazu. Zielt man auf die (spätere) Anwendung in der Industrie, sollte aufgrund der Verbreitung auf jeden Fall C (oder C++) gewählt werden; außerdem sind die meisten verfügbaren Libraries in C geschrieben.&lt;br /&gt;
* Assembler sollte man nur grob verstehen, Details wie ein Befehl arbeitet ist unwichtig. Selbst wenn man die Zyklen für einen Funktionsaufruf wissen will, so bietet der STM32 (Cortex-M3) einen Cycle-Counter den man auslesen kann; durch die komplexere Pipeline und Cache-Effekte sind die Laufzeiten allerdings nicht genau vorhersehbar. Wird zyklengenause Timing benötigt, sollten Timer verwendet werden - davon hat der STM32 genug.&lt;br /&gt;
&lt;br /&gt;
Der 32bit-Adressraum, der RAM, Flash, I/O-Register vereinheitlicht ansprechen kann (im Gegensatz zu z.B. AVR) ist ideal für eine Verwendung durch Hochsprachen; bei Pointern muss keine zusätzliche Information verwaltet werden, in welche Art Speicher sie zeigen. Die Adresse gibt dies eindeutig an (es gibt nur &#039;&#039;&#039;eine&#039;&#039;&#039; Adresse 42, und nicht 3 wie beim AVR (Flash, RAM, I/O)) und die Hardware spricht automatisch den richtigen Speicher an. Die Möglichkeiten zur Offset-Adressierung, der Barrel-Shifter, Divsions-Einheit, die FPU (bei STM32F4), Interrupt-Modell etc. begünstigen ebenfalls die Erzeugung effizienteren Codes. Außerdem haben die STM32 einfach mehr &amp;quot;rohe Leistung&amp;quot;, d.h. mehr Flash/RAM-Speicher und höhere Taktfrequenzen.&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Folgerung&#039;&#039;&#039;: Die Programmierung in Hochsprachen ist &#039;&#039;&#039;bequemer als bei 8-Bittern&#039;&#039;&#039;, denn man muss sich einfach weniger Gedanken machen, ob der Compiler ein Programm nun effizent umsetzen kann (kann man natürlich trotzdem machen, um noch mehr Leistung &amp;quot;herauszuquetschen&amp;quot;, wenn man will).&lt;br /&gt;
&lt;br /&gt;
= Weitere Randbedingungen für die Entscheidung=&lt;br /&gt;
&lt;br /&gt;
Der wichtige Punkt, der oftmals auch vergessen wird: die Beschaffbarkeit. Wenn jemand einen Renesas M16C oder Fujitsu empfiehlt, dann sucht man erst mal und findet nur wenige vereinzelte die man privat kaufen kann.&lt;br /&gt;
&lt;br /&gt;
Oder auch die Unterstützung im Internet - ist bei einigen Exoten spärlich. Dieses Forum bietet die beste Hilfe für [[AVR]], PIC, [[STM32]] und [[MSP430]].&lt;br /&gt;
&lt;br /&gt;
Andere Prozessoren sind schon sehr alt, bzw. nicht mehr modern da deren Peripherie zum Teil doch recht eingeschränkte Funktionalität bietet. z.B. viele 8051 Typen oder PIC16. Die mögen für Mini-Anwenungen gut sein, aber wer will den schon gerne sich extra für eine Kleinanwendung mit einem kleinen µC auseinandersetzen, wenn er schon einen STM32 kennt, mit dem er alles machen kann (und sich bereits gute Funktionen geschrieben hat)?&lt;br /&gt;
&lt;br /&gt;
Daher mein Resümee: wer nicht gerade auf den Kopf gefallen ist, der kann getrost mit einem STM32 starten. Ein [http://www.st.com/web/en/catalog/tools/FM116/SC959/SS1532/PF252419?s_searchtype=keyword STM32F4DISCOVERY] Board kostet nur ca. 20 EUR - und mehr muss für den ersten Start nicht investiert werden - wenn es doch zu komplex sein sollte gibt es hier im Forum auch Hilfe oder man nimmt erst mal ein &amp;quot;Arduino&amp;quot;. Jedenfalls sind diese 20 EUR wirklich keine große Investition.&lt;br /&gt;
&lt;br /&gt;
= Weblinks, Foren, Communities, Tutorials =&lt;br /&gt;
* [[STM32]] Hauptartikel, [http://www.mikrocontroller.net/articles/STM32#Weblinks.2C_Foren.2C_Communities.2C_Tutorials dortige Linksammlung]&lt;br /&gt;
* [http://www.mikrocontroller.net/topic/319328 Diskussion zum Artikel]&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>Frank m35</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=STM32_f%C3%BCr_Einsteiger&amp;diff=80256</id>
		<title>STM32 für Einsteiger</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=STM32_f%C3%BCr_Einsteiger&amp;diff=80256"/>
		<updated>2013-12-30T11:38:45Z</updated>

		<summary type="html">&lt;p&gt;Frank m35: /* Eigene Fähigkeiten und Wünsche */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Immer wiederkehrend hier im Forum &amp;quot;Mit welchem Mikrocontroller anfangen?&amp;quot;. Es gibt eine große Auswahl und eben so viele Empfehlungen. In diesem Artikel soll zu erst geholfen werden ob ein STM32-Prozessor mit Cortex-M3/M4 Kern überhaupt der Richtige für den Start ist.&lt;br /&gt;
Nicht für jeden ist der STM32 zu empfehlen, denn die Anforderungen und Wünsche die man realisieren möchte, sowie die eigenen Fähigkeiten sind verschieden.&lt;br /&gt;
&lt;br /&gt;
Es werden meist die Prozessoren AVR, PIC, Arduino, MSP430 und STM32 empfohlen. Seltener auch 8051, LPC und M16C. Alle haben Vorzüge und ebenso auch Nachteile.&lt;br /&gt;
&lt;br /&gt;
= Eigene Fähigkeiten und Wünsche =&lt;br /&gt;
&lt;br /&gt;
Zu erst einmal die Randbedingungen, mit der man sich selbst zu erst einmal einschätzen sollte:&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|- bgcolor=&amp;quot;#d0d0ff&amp;quot;&lt;br /&gt;
! Fähigkeit || Empfehlung [[STM32]] || Empfehlung [[AVR]] || Empfehlung PIC || Empfehlung [[MSP430]] || Empfehlung Arduino&lt;br /&gt;
|-&lt;br /&gt;
| Bereits in der Schule Mikrocontroller programmiert || align=&amp;quot;center&amp;quot;|x || align=&amp;quot;center&amp;quot;|x || align=&amp;quot;center&amp;quot;|x || align=&amp;quot;center&amp;quot;|x || align=&amp;quot;center&amp;quot;|-&lt;br /&gt;
|-&lt;br /&gt;
| Neueinsteiger, kaum Elektronikkenntnisse, noch nie programmiert || align=&amp;quot;center&amp;quot;|O || align=&amp;quot;center&amp;quot;|x || align=&amp;quot;center&amp;quot;|x [http://www.sprut.de/] || align=&amp;quot;center&amp;quot;|- || align=&amp;quot;center&amp;quot;|x&lt;br /&gt;
|-&lt;br /&gt;
| Wunsch ist SD-Card oder Grafik-Display || align=&amp;quot;center&amp;quot;|x || align=&amp;quot;center&amp;quot;|evt. Speicher zu klein || align=&amp;quot;center&amp;quot;|x [http://www.microchip.com/stellent/idcplg?IdcService=SS_GET_PAGE&amp;amp;nodeId=2680&amp;amp;dDocName=en537999] [http://www.microchip.com/pagehandler/en-us/technology/graphics/] || align=&amp;quot;center&amp;quot;|evt. Speicher zu klein || align=&amp;quot;center&amp;quot;|evt. Speicher zu klein&lt;br /&gt;
|-&lt;br /&gt;
| Wunsch ist TCP/IP Netzwerk oder Kamera|| align=&amp;quot;center&amp;quot;|x || align=&amp;quot;center&amp;quot;|- || align=&amp;quot;center&amp;quot;|x [http://www.microchip.com/stellent/idcplg?IdcService=SS_GET_PAGE&amp;amp;nodeId=2505&amp;amp;param=en535724] || align=&amp;quot;center&amp;quot;|- || align=&amp;quot;center&amp;quot;|-&lt;br /&gt;
|-&lt;br /&gt;
| Möchte die Erkenntnisse beruflich nutzen|| align=&amp;quot;center&amp;quot;|x || align=&amp;quot;center&amp;quot;|O || align=&amp;quot;center&amp;quot;|x || align=&amp;quot;center&amp;quot;|x || align=&amp;quot;center&amp;quot;|-&lt;br /&gt;
|-&lt;br /&gt;
| Extrem stromsparende Mini-Anwendung|| align=&amp;quot;center&amp;quot;|O || align=&amp;quot;center&amp;quot;|O || align=&amp;quot;center&amp;quot;|x [http://www.microchip.com/pagehandler/en-us/technology/xlp/] || align=&amp;quot;center&amp;quot;|x || align=&amp;quot;center&amp;quot;|-&lt;br /&gt;
|-&lt;br /&gt;
| Experimentieren mit Multithreading, RTOS, Schedulern || align=&amp;quot;center&amp;quot;|x || align=&amp;quot;center&amp;quot;|- || align=&amp;quot;center&amp;quot;|o [http://www.microchip.com/stellent/idcplg?IdcService=SS_GET_PAGE&amp;amp;nodeId=1406&amp;amp;dDocName=en531543&amp;amp;redirects=rtos] || align=&amp;quot;center&amp;quot;|- || align=&amp;quot;center&amp;quot;|-&lt;br /&gt;
|-&lt;br /&gt;
| Große, komplex strukturierte Programme || align=&amp;quot;center&amp;quot;|x || align=&amp;quot;center&amp;quot;|- || align=&amp;quot;center&amp;quot;|x || align=&amp;quot;center&amp;quot;|O || align=&amp;quot;center&amp;quot;|-&lt;br /&gt;
|-&lt;br /&gt;
| Viel I/O, PWM, komplexes Timing || align=&amp;quot;center&amp;quot;|x || align=&amp;quot;center&amp;quot;|O || align=&amp;quot;center&amp;quot;|x || align=&amp;quot;center&amp;quot;|? || align=&amp;quot;center&amp;quot;|-&lt;br /&gt;
|}&lt;br /&gt;
* x = ja&lt;br /&gt;
* O = Teilweise, Einschränkungen&lt;br /&gt;
* - = nicht empfohlen&lt;br /&gt;
* ? = Bitte ergänzen&lt;br /&gt;
&lt;br /&gt;
Nur um nicht zu verwirren, auch wenn Teile &amp;quot;nicht empfohlen&amp;quot; sind, heißt dass nicht dass es mit dem Prozessor nicht geht, vielmehr dass es mehr Aufwand ist das zu realisieren oder mehr Einschränkungen hat.&lt;br /&gt;
&lt;br /&gt;
= Unwichtige Randbedingungen =&lt;br /&gt;
&lt;br /&gt;
Oftmals werden fälschlicherweise Argumente für oder gegen eine µC-Familie ausgesprochen, die in der Praxis &#039;&#039;&#039;zum Einstieg&#039;&#039;&#039; (bei konkreten Anwendungen kann das anders aussehen) eher unwichtig sind.&lt;br /&gt;
&lt;br /&gt;
* Spannungsversorgung 3,3V / 5V&lt;br /&gt;
* 8 (z.B. [[AVR]]), 16 (z.B. [[MSP430]]) oder 32 (z.B. [[STM32]]) Bit&lt;br /&gt;
* Interrupt System mit mehr oder weniger Features&lt;br /&gt;
* Programmiersprache (Assembler, Basic, C, C++, Pascal)&lt;br /&gt;
* Assembler verstehen (Sollte nur theoretisch verstanden werden, ein Programm sollte in einer Hochsprache geschrieben sein)&lt;br /&gt;
* DIL Gehäuse - steckbretttauglich (STM32-Prozessoren gibt es auch fertig gelötet auf einem steckbretttauglichen Board)&lt;br /&gt;
* Programmieradapter&lt;br /&gt;
* zu 90% reicht doch ein kleiner Prozessor ([[AVR]]/PIC) - und für die restlichen kann man immer noch einen großen nehmen. Warum also nicht gleich einen großen nehmen?&lt;br /&gt;
&lt;br /&gt;
= Kosten =&lt;br /&gt;
&lt;br /&gt;
Grobe Abschätzung was das alles denn kosten wird. Hier sind nur einige Beispiele gezeigt.&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|- bgcolor=&amp;quot;#d0d0ff&amp;quot;&lt;br /&gt;
! Board || [[STM32]] || [[AVR]] || PIC18/24/32 || [[MSP430]] || Arduino&lt;br /&gt;
|-&lt;br /&gt;
| Demo-Board || align=&amp;quot;center&amp;quot;|[http://www.st.com/web/en/catalog/tools/FM116/SC959/SS1532/PF252419] 9..20€ (incl. Programmieradapter und Debugger) || align=&amp;quot;center&amp;quot;|15€ || align=&amp;quot;center&amp;quot;| [http://www.microchipdirect.com/ProductDetails.aspx?Catalog=BuyMicrochip&amp;amp;Category=Starter%20Kits&amp;amp;mid=1&amp;amp;lmid=610 durchschnittlich 18€ .. 50€] || align=&amp;quot;center&amp;quot;|?? || align=&amp;quot;center&amp;quot;|20€&lt;br /&gt;
|-&lt;br /&gt;
| Steckbrettaugliches Board || align=&amp;quot;center&amp;quot;| s.o. oder [http://re.reworld.eu/de/produkte/s64dil-405/index.htm S64DIL-405] 30€ || align=&amp;quot;center&amp;quot;|2-5€ als einzelner IC || align=&amp;quot;center&amp;quot;|2-5€ als einzelner IC || align=&amp;quot;center&amp;quot;|?? || align=&amp;quot;center&amp;quot;|??&lt;br /&gt;
|-&lt;br /&gt;
| Programmieradapter mit Debugger || align=&amp;quot;center&amp;quot;| s.o. oder z.B [http://www.segger.com/j-link-edu.html Segger J-LINK EDU] 50€ (sehr schnell und unterstützt viele Prozessoren) || align=&amp;quot;center&amp;quot;|?? || align=&amp;quot;center&amp;quot;|PICkit 3 30€ [http://www.microchipdirect.com/ProductSearch.aspx?keywords=PG164130] || align=&amp;quot;center&amp;quot;|?? || align=&amp;quot;center&amp;quot;|20€ (Man muss DebugWire aktivieren)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Das Demo-Board sollte ein Board sein, nicht zu teuer, um die ersten Erfahrungen zu sammeln. Wenn einem der Prozessor gefällt, so kann man später immer noch mit einem zweiten Demo-Board, z.B. mit Display aufrüsten.&lt;br /&gt;
&lt;br /&gt;
Wenn man gerne mit einem Steckbrett sich die Schaltung zusammen stecken möchte, so kann man entweder die benötigten Drähte am Demo-Board anlöten oder bei z.B. [[AVR]]/[[PIC]] Prozessoren gibt es Ausführungen im DIL Gehäuse, die direkt steckbar sind.&lt;br /&gt;
&lt;br /&gt;
Ein Programmieradapter sollte unbedingt auch einen Debugger beinhalten. Denn für den Start ist es ungemein hilfreich zu sehen was im Prozessor gerade geschieht. Die JTAG-Adapter für einen [[STM32]] Prozessor sind alle Debugger-Tauglich. Für einen [[AVR]] oder [[PIC]] Prozessor gibt es auch oft reine Programmer (oft Selbstbau-Lösungen über die serielle oder parallele Schnittstelle) welche den Mikrocontroller nur beschreiben können. Sinvoller sind hingegen Debugger (bspw. PIC Kit 3 [http://www.microchipdirect.com/ProductSearch.aspx?keywords=PG164130] kompatibel zu allen PIC Mikrocontrollern), die die Ausführung eines Mikrocontrollers anhalten können um die aktuelle Position im Programmcode, Variableninhalt, Register, ... auszulesen bzw. zur Laufzeit zu ändern.&lt;br /&gt;
&lt;br /&gt;
Der für den [[STM32]] empfohlene Segger J-LINK EDU ist zwar nicht der günstigste (z.B. auf einem STM32F4DISCOVERY Borad ist auch einer drauf den man für andere STM32 nutzen kann) aber eines der besten, mit sehr guten Software-Tools und nutzbar für alle Prozessoren mit ARM-Kern (ARM7/9/11/... Cortex-Mx). Niemals am Werkzeug sparen und man hat viel mehr Freude bei der Arbeit.&lt;br /&gt;
&lt;br /&gt;
Der &amp;quot;Arduino&amp;quot; ist kein eigenständiger Prozessor, sondern ein fertiges Board mit einer &amp;quot;Arduino&amp;quot; Programmierumgebung (und einem AVR Prozessor), extra geschaffen für Einsteiger. Allerdings ist da der Lerneffekt viel geringer da man den Prozessor mit der Arduino-Software programmiert und nicht direkt die Register.&lt;br /&gt;
&lt;br /&gt;
Ein [[PIC16]] ist ein älterer 8-Bit Mikrocontroller, der durch die [[PIC18]] Reihe abgelöst wurde. Werden komplexere Anforderungen in Zukunft an den Mikrocontroller gestellt (Audio, Grafik), so sollte zu den moderneren [[PIC24]] bzw. [[dsPIC]] (16-Bit) oder gar zu [[PIC32]] (32-Bit MIPS Prozessor) gegriffen werden, wobei letzterer von der Performance vergleichbar mit den STM32 ARM-basierten Mikrocontrollern ist.&lt;br /&gt;
&lt;br /&gt;
= Programmierumgebungen=&lt;br /&gt;
&lt;br /&gt;
Bei den Programmierumgebungen gibt es zu allen Prozessorfamilien kostenlose und Leistungsfähige Software&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|- bgcolor=&amp;quot;#d0d0ff&amp;quot;&lt;br /&gt;
! [[STM32]] || [[AVR]] || PIC || [[MSP430]] || Arduino&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot;|[http://www.coocox.org/CooCox_CoIDE.htm CooCox] || align=&amp;quot;center&amp;quot;|Atmel-Studio || align=&amp;quot;center&amp;quot;|[http://www.microchip.com/pagehandler/en-us/family/mplabx/ MPALB X] (IDE inklusive compiler) || align=&amp;quot;center&amp;quot;|?? || align=&amp;quot;center&amp;quot;|arduino 1.0.5&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
natürlich gibt es noch viele weitere (für STM32 siehe [[STM32#Programmierung]]), es sollte jedoch nur die einfachsten kostenlose (und ohne Codebegrenzung) für den ersten Einstieg gezeigt werden.&lt;br /&gt;
&lt;br /&gt;
= Dokumentation=&lt;br /&gt;
&lt;br /&gt;
Bevor man sich für einen Prozessor entscheidet sollte man unbedingt deren Dokumentation mal zumindest überfliegen und auch deren Errata&#039;s lesen. Nicht dass man eine Anwendung erstellen möchte und stellt hinterher fest, dass genau dieser Teil so buggy ist das er nicht genutzt werden kann.&lt;br /&gt;
&lt;br /&gt;
Beim [[STM32]] hat die Dokumentation doch recht viele Seiten, viel mehr als bei einem [[AVR]] oder PIC. Dabei ist vieles eher knapp beschrieben, man muss mehr suchen als z.B. bei den AVR-Dokus, um die gewünschten Informationen zu finden. Außerdem gibt es durchaus einige Unklarheiten und Fehler/Widersprüche. Schlussendlich ist es Geschmackssache mit welcher Doku von welchem Hersteller man sich besser zurecht findet.&lt;br /&gt;
&lt;br /&gt;
Bei den PICs gibt es zu jedem Mikrocontroller ein Datenblatt das die wichtigsten Informationen für den alltäglichen Gebrauch enthält. Da bestimmte Peripherie (bspw. I2C, SPI, ... ) aber sehr komplex ist und innerhalb einer Familie (PIC16/18/24/32) sich identisch verhält, gibt es zu jeder Familie die sogenannten Family-Datasheets, welche alle Module im Detail beschreiben.&lt;br /&gt;
&lt;br /&gt;
Parallel zur Dokumentation sollte man sich auch die Demo-Beispiele der Hersteller anschauen, dann wird vieles gleich verständlicher.&lt;br /&gt;
&lt;br /&gt;
Eine Übersicht über die Funktionen gibt es im Artikel: [[STM32]]&lt;br /&gt;
&lt;br /&gt;
= Die Arbeit mit dem STM32=&lt;br /&gt;
&lt;br /&gt;
Zu erst einmal SOOO groß sind die Unterschiede zwischen den einzelnen Prozessoren nicht. Alle haben Ein-/Ausgänge und um mittels einem Port-Pin eine LED ansteuern zu können muss bei jedem Prozessor der Pin erst einmal parametriert werden, egal ob das jetzt ein STM32 oder ein AVR oder ein MSP430 ist. Nur hat man bei einem STM32 doch einige Funktionen mehr, z.B. zuschaltbarer Pull-Up oder Pull-Down Widerstand und spezielle Setz-Rücksetzregister, die andere Prozessoren nicht haben, jedoch das programmieren vereinfachen.&lt;br /&gt;
Der Haupt-Unterschied zu den anderen Prozessoren ist, dass der [[STM32]] so viele Peripherie-Module beherbergt, dass man die einzeln immer mit einem Clock aktivieren muss, denn damit lässt sich viel Strom sparen.&lt;br /&gt;
&lt;br /&gt;
Und mal ganz ehrlich die Diskussion welcher µc einfacher zu konfigurieren ist, ist doch absoluter Unsinn. Der Weg ist immer der Gleiche:&lt;br /&gt;
*1. Blick ins Datenblatt welche Register für diese Funktion benötigt werden.&lt;br /&gt;
*2. Werte ermitteln die in die Register eingetragen werden.&lt;br /&gt;
*3. Werte ins Register schreiben. Da machte es GAR KEINEN UNTERSCHIED ob es ein [[AVR]], 8051/2, ARM,...... ist.&lt;br /&gt;
&lt;br /&gt;
Stimmt schon es gibt Unterschiede. Die Register haben anderen Namen, andere Adressen, andere Bitbedeutungen,...&lt;br /&gt;
Aber es steht doch alles im Datenblatt. Und ob ich jetzt einen [[AVR]] oder einen ARM das erste mal vor mir liegen hab. Ich brauch in allen Fällen die oben beschriebenen Schritte.&lt;br /&gt;
&lt;br /&gt;
Das Interruptsystem ist bei einem STM32 zusätzlich priorisiert, damit kann man festlegen welcher Interrupt vorrangig bearbeitet wird. Die Prioritätenvergabe ist auch kein Hexenwerk.&lt;br /&gt;
&lt;br /&gt;
Zu allen Prozessoren liefern die jeweiligen Hersteller umfangreiche Demo-Codes und Libraries mit. Meist sind alle in C geschrieben, daher sollte auch die Programmiersprache C verwendet werden. Vor allem auch wenn man berufliche Absichten verfolgt.&lt;br /&gt;
&lt;br /&gt;
Und wenn man einen STM32 kann, dann ist ein Umstieg auf einen LPC17xx (NXP) oder andere Hersteller überhaupt kein Problem, denn die bieten ebenfalls Prozessoren mit Cortex-M3 Kern und man kann diese mit der gleichen Programmierumgebung programmieren. Somit ist man nicht zwingend Herstellerabhängig.&lt;br /&gt;
&lt;br /&gt;
Mit einem STM32 kann man als Hobby-Baster und Professionell nahezu alle Anwendungen realisieren. Der hat genügend RAM und FLASH Speicher und auch genügen Geschwindigkeit. Viele Gehäuse-Varianten um kleine bis hin zu größere Geräte zu erstellen. Viele Schnittstellen, sind im Artikel [[STM32]] beschrieben.&lt;br /&gt;
&lt;br /&gt;
Der einzige Nachteil beim STM32: man muss etwas mehr lesen, da eine Peripherie doch viel mehr Funktionalität hat. Ansonsten kenne ich nicht wirklich einen Grund warum man als Neueinsteiger keinen STM32 nehmen sollte.&lt;br /&gt;
&lt;br /&gt;
= Programmiersprachen =&lt;br /&gt;
* Wie bei vielen anderen Controllern wird beim STM32 auch hauptsächlich C und C++ verwendet. Kennen sollte man die Programmiersprache C schon, wenn man davon noch keine Ahnung hat dann sollte man erst mal mittels einem Tutorial auf einem PC ein Konsoleprogramm schreiben, sodass man es einigermaßen kennen lernt. Hier im Forum gibt es ebenfalls Artikel dazu. Zielt man auf die (spätere) Anwendung in der Industrie, sollte aufgrund der Verbreitung auf jeden Fall C (oder C++) gewählt werden; außerdem sind die meisten verfügbaren Libraries in C geschrieben.&lt;br /&gt;
* Assembler sollte man nur grob verstehen, Details wie ein Befehl arbeitet ist unwichtig. Selbst wenn man die Zyklen für einen Funktionsaufruf wissen will, so bietet der STM32 (Cortex-M3) einen Cycle-Counter den man auslesen kann; durch die komplexere Pipeline und Cache-Effekte sind die Laufzeiten allerdings nicht genau vorhersehbar. Wird zyklengenause Timing benötigt, sollten Timer verwendet werden - davon hat der STM32 genug.&lt;br /&gt;
&lt;br /&gt;
Der 32bit-Adressraum, der RAM, Flash, I/O-Register vereinheitlicht ansprechen kann (im Gegensatz zu z.B. AVR) ist ideal für eine Verwendung durch Hochsprachen; bei Pointern muss keine zusätzliche Information verwaltet werden, in welche Art Speicher sie zeigen. Die Adresse gibt dies eindeutig an (es gibt nur &#039;&#039;&#039;eine&#039;&#039;&#039; Adresse 42, und nicht 3 wie beim AVR (Flash, RAM, I/O)) und die Hardware spricht automatisch den richtigen Speicher an. Die Möglichkeiten zur Offset-Adressierung, der Barrel-Shifter, Divsions-Einheit, die FPU (bei STM32F4), Interrupt-Modell etc. begünstigen ebenfalls die Erzeugung effizienteren Codes. Außerdem haben die STM32 einfach mehr &amp;quot;rohe Leistung&amp;quot;, d.h. mehr Flash/RAM-Speicher und höhere Taktfrequenzen.&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Folgerung&#039;&#039;&#039;: Die Programmierung in Hochsprachen ist &#039;&#039;&#039;bequemer als bei 8-Bittern&#039;&#039;&#039;, denn man muss sich einfach weniger Gedanken machen, ob der Compiler ein Programm nun effizent umsetzen kann (kann man natürlich trotzdem machen, um noch mehr Leistung &amp;quot;herauszuquetschen&amp;quot;, wenn man will).&lt;br /&gt;
&lt;br /&gt;
= Weitere Randbedingungen für die Entscheidung=&lt;br /&gt;
&lt;br /&gt;
Der wichtige Punkt, der oftmals auch vergessen wird: die Beschaffbarkeit. Wenn jemand einen Renesas M16C oder Fujitsu empfiehlt, dann sucht man erst mal und findet nur wenige vereinzelte die man privat kaufen kann.&lt;br /&gt;
&lt;br /&gt;
Oder auch die Unterstützung im Internet - ist bei einigen Exoten spärlich. Dieses Forum bietet die beste Hilfe für [[AVR]], PIC, [[STM32]] und [[MSP430]].&lt;br /&gt;
&lt;br /&gt;
Andere Prozessoren sind schon sehr alt, bzw. nicht mehr modern da deren Peripherie zum Teil doch recht eingeschränkte Funktionalität bietet. z.B. viele 8051 Typen oder PIC16. Die mögen für Mini-Anwenungen gut sein, aber wer will den schon gerne sich extra für eine Kleinanwendung mit einem kleinen µC auseinandersetzen, wenn er schon einen STM32 kennt, mit dem er alles machen kann (und sich bereits gute Funktionen geschrieben hat)?&lt;br /&gt;
&lt;br /&gt;
Daher mein Resümee: wer nicht gerade auf den Kopf gefallen ist, der kann getrost mit einem STM32 starten. Ein [http://www.st.com/web/en/catalog/tools/FM116/SC959/SS1532/PF252419?s_searchtype=keyword STM32F4DISCOVERY] Board kostet nur ca. 20 EUR - und mehr muss für den ersten Start nicht investiert werden - wenn es doch zu komplex sein sollte gibt es hier im Forum auch Hilfe oder man nimmt erst mal ein &amp;quot;Arduino&amp;quot;. Jedenfalls sind diese 20 EUR wirklich keine große Investition.&lt;br /&gt;
&lt;br /&gt;
= Weblinks, Foren, Communities, Tutorials =&lt;br /&gt;
* [[STM32]] Hauptartikel, [http://www.mikrocontroller.net/articles/STM32#Weblinks.2C_Foren.2C_Communities.2C_Tutorials dortige Linksammlung]&lt;br /&gt;
* [http://www.mikrocontroller.net/topic/319328 Diskussion zum Artikel]&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>Frank m35</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=STM32_f%C3%BCr_Einsteiger&amp;diff=80255</id>
		<title>STM32 für Einsteiger</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=STM32_f%C3%BCr_Einsteiger&amp;diff=80255"/>
		<updated>2013-12-30T11:38:30Z</updated>

		<summary type="html">&lt;p&gt;Frank m35: /* Eigene Fähigkeiten und Wünsche */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Immer wiederkehrend hier im Forum &amp;quot;Mit welchem Mikrocontroller anfangen?&amp;quot;. Es gibt eine große Auswahl und eben so viele Empfehlungen. In diesem Artikel soll zu erst geholfen werden ob ein STM32-Prozessor mit Cortex-M3/M4 Kern überhaupt der Richtige für den Start ist.&lt;br /&gt;
Nicht für jeden ist der STM32 zu empfehlen, denn die Anforderungen und Wünsche die man realisieren möchte, sowie die eigenen Fähigkeiten sind verschieden.&lt;br /&gt;
&lt;br /&gt;
Es werden meist die Prozessoren AVR, PIC, Arduino, MSP430 und STM32 empfohlen. Seltener auch 8051, LPC und M16C. Alle haben Vorzüge und ebenso auch Nachteile.&lt;br /&gt;
&lt;br /&gt;
= Eigene Fähigkeiten und Wünsche =&lt;br /&gt;
&lt;br /&gt;
Zu erst einmal die Randbedingungen, mit der man sich selbst zu erst einmal einschätzen sollte:&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|- bgcolor=&amp;quot;#d0d0ff&amp;quot;&lt;br /&gt;
! Fähigkeit || Empfehlung [[STM32]] || Empfehlung [[AVR]] || PIC || Empfehlung [[MSP430]] || Empfehlung Arduino&lt;br /&gt;
|-&lt;br /&gt;
| Bereits in der Schule Mikrocontroller programmiert || align=&amp;quot;center&amp;quot;|x || align=&amp;quot;center&amp;quot;|x || align=&amp;quot;center&amp;quot;|x || align=&amp;quot;center&amp;quot;|x || align=&amp;quot;center&amp;quot;|-&lt;br /&gt;
|-&lt;br /&gt;
| Neueinsteiger, kaum Elektronikkenntnisse, noch nie programmiert || align=&amp;quot;center&amp;quot;|O || align=&amp;quot;center&amp;quot;|x || align=&amp;quot;center&amp;quot;|x [http://www.sprut.de/] || align=&amp;quot;center&amp;quot;|- || align=&amp;quot;center&amp;quot;|x&lt;br /&gt;
|-&lt;br /&gt;
| Wunsch ist SD-Card oder Grafik-Display || align=&amp;quot;center&amp;quot;|x || align=&amp;quot;center&amp;quot;|evt. Speicher zu klein || align=&amp;quot;center&amp;quot;|x [http://www.microchip.com/stellent/idcplg?IdcService=SS_GET_PAGE&amp;amp;nodeId=2680&amp;amp;dDocName=en537999] [http://www.microchip.com/pagehandler/en-us/technology/graphics/] || align=&amp;quot;center&amp;quot;|evt. Speicher zu klein || align=&amp;quot;center&amp;quot;|evt. Speicher zu klein&lt;br /&gt;
|-&lt;br /&gt;
| Wunsch ist TCP/IP Netzwerk oder Kamera|| align=&amp;quot;center&amp;quot;|x || align=&amp;quot;center&amp;quot;|- || align=&amp;quot;center&amp;quot;|x [http://www.microchip.com/stellent/idcplg?IdcService=SS_GET_PAGE&amp;amp;nodeId=2505&amp;amp;param=en535724] || align=&amp;quot;center&amp;quot;|- || align=&amp;quot;center&amp;quot;|-&lt;br /&gt;
|-&lt;br /&gt;
| Möchte die Erkenntnisse beruflich nutzen|| align=&amp;quot;center&amp;quot;|x || align=&amp;quot;center&amp;quot;|O || align=&amp;quot;center&amp;quot;|x || align=&amp;quot;center&amp;quot;|x || align=&amp;quot;center&amp;quot;|-&lt;br /&gt;
|-&lt;br /&gt;
| Extrem stromsparende Mini-Anwendung|| align=&amp;quot;center&amp;quot;|O || align=&amp;quot;center&amp;quot;|O || align=&amp;quot;center&amp;quot;|x [http://www.microchip.com/pagehandler/en-us/technology/xlp/] || align=&amp;quot;center&amp;quot;|x || align=&amp;quot;center&amp;quot;|-&lt;br /&gt;
|-&lt;br /&gt;
| Experimentieren mit Multithreading, RTOS, Schedulern || align=&amp;quot;center&amp;quot;|x || align=&amp;quot;center&amp;quot;|- || align=&amp;quot;center&amp;quot;|o [http://www.microchip.com/stellent/idcplg?IdcService=SS_GET_PAGE&amp;amp;nodeId=1406&amp;amp;dDocName=en531543&amp;amp;redirects=rtos] || align=&amp;quot;center&amp;quot;|- || align=&amp;quot;center&amp;quot;|-&lt;br /&gt;
|-&lt;br /&gt;
| Große, komplex strukturierte Programme || align=&amp;quot;center&amp;quot;|x || align=&amp;quot;center&amp;quot;|- || align=&amp;quot;center&amp;quot;|x || align=&amp;quot;center&amp;quot;|O || align=&amp;quot;center&amp;quot;|-&lt;br /&gt;
|-&lt;br /&gt;
| Viel I/O, PWM, komplexes Timing || align=&amp;quot;center&amp;quot;|x || align=&amp;quot;center&amp;quot;|O || align=&amp;quot;center&amp;quot;|x || align=&amp;quot;center&amp;quot;|? || align=&amp;quot;center&amp;quot;|-&lt;br /&gt;
|}&lt;br /&gt;
* x = ja&lt;br /&gt;
* O = Teilweise, Einschränkungen&lt;br /&gt;
* - = nicht empfohlen&lt;br /&gt;
* ? = Bitte ergänzen&lt;br /&gt;
&lt;br /&gt;
Nur um nicht zu verwirren, auch wenn Teile &amp;quot;nicht empfohlen&amp;quot; sind, heißt dass nicht dass es mit dem Prozessor nicht geht, vielmehr dass es mehr Aufwand ist das zu realisieren oder mehr Einschränkungen hat.&lt;br /&gt;
&lt;br /&gt;
= Unwichtige Randbedingungen =&lt;br /&gt;
&lt;br /&gt;
Oftmals werden fälschlicherweise Argumente für oder gegen eine µC-Familie ausgesprochen, die in der Praxis &#039;&#039;&#039;zum Einstieg&#039;&#039;&#039; (bei konkreten Anwendungen kann das anders aussehen) eher unwichtig sind.&lt;br /&gt;
&lt;br /&gt;
* Spannungsversorgung 3,3V / 5V&lt;br /&gt;
* 8 (z.B. [[AVR]]), 16 (z.B. [[MSP430]]) oder 32 (z.B. [[STM32]]) Bit&lt;br /&gt;
* Interrupt System mit mehr oder weniger Features&lt;br /&gt;
* Programmiersprache (Assembler, Basic, C, C++, Pascal)&lt;br /&gt;
* Assembler verstehen (Sollte nur theoretisch verstanden werden, ein Programm sollte in einer Hochsprache geschrieben sein)&lt;br /&gt;
* DIL Gehäuse - steckbretttauglich (STM32-Prozessoren gibt es auch fertig gelötet auf einem steckbretttauglichen Board)&lt;br /&gt;
* Programmieradapter&lt;br /&gt;
* zu 90% reicht doch ein kleiner Prozessor ([[AVR]]/PIC) - und für die restlichen kann man immer noch einen großen nehmen. Warum also nicht gleich einen großen nehmen?&lt;br /&gt;
&lt;br /&gt;
= Kosten =&lt;br /&gt;
&lt;br /&gt;
Grobe Abschätzung was das alles denn kosten wird. Hier sind nur einige Beispiele gezeigt.&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|- bgcolor=&amp;quot;#d0d0ff&amp;quot;&lt;br /&gt;
! Board || [[STM32]] || [[AVR]] || PIC18/24/32 || [[MSP430]] || Arduino&lt;br /&gt;
|-&lt;br /&gt;
| Demo-Board || align=&amp;quot;center&amp;quot;|[http://www.st.com/web/en/catalog/tools/FM116/SC959/SS1532/PF252419] 9..20€ (incl. Programmieradapter und Debugger) || align=&amp;quot;center&amp;quot;|15€ || align=&amp;quot;center&amp;quot;| [http://www.microchipdirect.com/ProductDetails.aspx?Catalog=BuyMicrochip&amp;amp;Category=Starter%20Kits&amp;amp;mid=1&amp;amp;lmid=610 durchschnittlich 18€ .. 50€] || align=&amp;quot;center&amp;quot;|?? || align=&amp;quot;center&amp;quot;|20€&lt;br /&gt;
|-&lt;br /&gt;
| Steckbrettaugliches Board || align=&amp;quot;center&amp;quot;| s.o. oder [http://re.reworld.eu/de/produkte/s64dil-405/index.htm S64DIL-405] 30€ || align=&amp;quot;center&amp;quot;|2-5€ als einzelner IC || align=&amp;quot;center&amp;quot;|2-5€ als einzelner IC || align=&amp;quot;center&amp;quot;|?? || align=&amp;quot;center&amp;quot;|??&lt;br /&gt;
|-&lt;br /&gt;
| Programmieradapter mit Debugger || align=&amp;quot;center&amp;quot;| s.o. oder z.B [http://www.segger.com/j-link-edu.html Segger J-LINK EDU] 50€ (sehr schnell und unterstützt viele Prozessoren) || align=&amp;quot;center&amp;quot;|?? || align=&amp;quot;center&amp;quot;|PICkit 3 30€ [http://www.microchipdirect.com/ProductSearch.aspx?keywords=PG164130] || align=&amp;quot;center&amp;quot;|?? || align=&amp;quot;center&amp;quot;|20€ (Man muss DebugWire aktivieren)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Das Demo-Board sollte ein Board sein, nicht zu teuer, um die ersten Erfahrungen zu sammeln. Wenn einem der Prozessor gefällt, so kann man später immer noch mit einem zweiten Demo-Board, z.B. mit Display aufrüsten.&lt;br /&gt;
&lt;br /&gt;
Wenn man gerne mit einem Steckbrett sich die Schaltung zusammen stecken möchte, so kann man entweder die benötigten Drähte am Demo-Board anlöten oder bei z.B. [[AVR]]/[[PIC]] Prozessoren gibt es Ausführungen im DIL Gehäuse, die direkt steckbar sind.&lt;br /&gt;
&lt;br /&gt;
Ein Programmieradapter sollte unbedingt auch einen Debugger beinhalten. Denn für den Start ist es ungemein hilfreich zu sehen was im Prozessor gerade geschieht. Die JTAG-Adapter für einen [[STM32]] Prozessor sind alle Debugger-Tauglich. Für einen [[AVR]] oder [[PIC]] Prozessor gibt es auch oft reine Programmer (oft Selbstbau-Lösungen über die serielle oder parallele Schnittstelle) welche den Mikrocontroller nur beschreiben können. Sinvoller sind hingegen Debugger (bspw. PIC Kit 3 [http://www.microchipdirect.com/ProductSearch.aspx?keywords=PG164130] kompatibel zu allen PIC Mikrocontrollern), die die Ausführung eines Mikrocontrollers anhalten können um die aktuelle Position im Programmcode, Variableninhalt, Register, ... auszulesen bzw. zur Laufzeit zu ändern.&lt;br /&gt;
&lt;br /&gt;
Der für den [[STM32]] empfohlene Segger J-LINK EDU ist zwar nicht der günstigste (z.B. auf einem STM32F4DISCOVERY Borad ist auch einer drauf den man für andere STM32 nutzen kann) aber eines der besten, mit sehr guten Software-Tools und nutzbar für alle Prozessoren mit ARM-Kern (ARM7/9/11/... Cortex-Mx). Niemals am Werkzeug sparen und man hat viel mehr Freude bei der Arbeit.&lt;br /&gt;
&lt;br /&gt;
Der &amp;quot;Arduino&amp;quot; ist kein eigenständiger Prozessor, sondern ein fertiges Board mit einer &amp;quot;Arduino&amp;quot; Programmierumgebung (und einem AVR Prozessor), extra geschaffen für Einsteiger. Allerdings ist da der Lerneffekt viel geringer da man den Prozessor mit der Arduino-Software programmiert und nicht direkt die Register.&lt;br /&gt;
&lt;br /&gt;
Ein [[PIC16]] ist ein älterer 8-Bit Mikrocontroller, der durch die [[PIC18]] Reihe abgelöst wurde. Werden komplexere Anforderungen in Zukunft an den Mikrocontroller gestellt (Audio, Grafik), so sollte zu den moderneren [[PIC24]] bzw. [[dsPIC]] (16-Bit) oder gar zu [[PIC32]] (32-Bit MIPS Prozessor) gegriffen werden, wobei letzterer von der Performance vergleichbar mit den STM32 ARM-basierten Mikrocontrollern ist.&lt;br /&gt;
&lt;br /&gt;
= Programmierumgebungen=&lt;br /&gt;
&lt;br /&gt;
Bei den Programmierumgebungen gibt es zu allen Prozessorfamilien kostenlose und Leistungsfähige Software&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|- bgcolor=&amp;quot;#d0d0ff&amp;quot;&lt;br /&gt;
! [[STM32]] || [[AVR]] || PIC || [[MSP430]] || Arduino&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot;|[http://www.coocox.org/CooCox_CoIDE.htm CooCox] || align=&amp;quot;center&amp;quot;|Atmel-Studio || align=&amp;quot;center&amp;quot;|[http://www.microchip.com/pagehandler/en-us/family/mplabx/ MPALB X] (IDE inklusive compiler) || align=&amp;quot;center&amp;quot;|?? || align=&amp;quot;center&amp;quot;|arduino 1.0.5&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
natürlich gibt es noch viele weitere (für STM32 siehe [[STM32#Programmierung]]), es sollte jedoch nur die einfachsten kostenlose (und ohne Codebegrenzung) für den ersten Einstieg gezeigt werden.&lt;br /&gt;
&lt;br /&gt;
= Dokumentation=&lt;br /&gt;
&lt;br /&gt;
Bevor man sich für einen Prozessor entscheidet sollte man unbedingt deren Dokumentation mal zumindest überfliegen und auch deren Errata&#039;s lesen. Nicht dass man eine Anwendung erstellen möchte und stellt hinterher fest, dass genau dieser Teil so buggy ist das er nicht genutzt werden kann.&lt;br /&gt;
&lt;br /&gt;
Beim [[STM32]] hat die Dokumentation doch recht viele Seiten, viel mehr als bei einem [[AVR]] oder PIC. Dabei ist vieles eher knapp beschrieben, man muss mehr suchen als z.B. bei den AVR-Dokus, um die gewünschten Informationen zu finden. Außerdem gibt es durchaus einige Unklarheiten und Fehler/Widersprüche. Schlussendlich ist es Geschmackssache mit welcher Doku von welchem Hersteller man sich besser zurecht findet.&lt;br /&gt;
&lt;br /&gt;
Bei den PICs gibt es zu jedem Mikrocontroller ein Datenblatt das die wichtigsten Informationen für den alltäglichen Gebrauch enthält. Da bestimmte Peripherie (bspw. I2C, SPI, ... ) aber sehr komplex ist und innerhalb einer Familie (PIC16/18/24/32) sich identisch verhält, gibt es zu jeder Familie die sogenannten Family-Datasheets, welche alle Module im Detail beschreiben.&lt;br /&gt;
&lt;br /&gt;
Parallel zur Dokumentation sollte man sich auch die Demo-Beispiele der Hersteller anschauen, dann wird vieles gleich verständlicher.&lt;br /&gt;
&lt;br /&gt;
Eine Übersicht über die Funktionen gibt es im Artikel: [[STM32]]&lt;br /&gt;
&lt;br /&gt;
= Die Arbeit mit dem STM32=&lt;br /&gt;
&lt;br /&gt;
Zu erst einmal SOOO groß sind die Unterschiede zwischen den einzelnen Prozessoren nicht. Alle haben Ein-/Ausgänge und um mittels einem Port-Pin eine LED ansteuern zu können muss bei jedem Prozessor der Pin erst einmal parametriert werden, egal ob das jetzt ein STM32 oder ein AVR oder ein MSP430 ist. Nur hat man bei einem STM32 doch einige Funktionen mehr, z.B. zuschaltbarer Pull-Up oder Pull-Down Widerstand und spezielle Setz-Rücksetzregister, die andere Prozessoren nicht haben, jedoch das programmieren vereinfachen.&lt;br /&gt;
Der Haupt-Unterschied zu den anderen Prozessoren ist, dass der [[STM32]] so viele Peripherie-Module beherbergt, dass man die einzeln immer mit einem Clock aktivieren muss, denn damit lässt sich viel Strom sparen.&lt;br /&gt;
&lt;br /&gt;
Und mal ganz ehrlich die Diskussion welcher µc einfacher zu konfigurieren ist, ist doch absoluter Unsinn. Der Weg ist immer der Gleiche:&lt;br /&gt;
*1. Blick ins Datenblatt welche Register für diese Funktion benötigt werden.&lt;br /&gt;
*2. Werte ermitteln die in die Register eingetragen werden.&lt;br /&gt;
*3. Werte ins Register schreiben. Da machte es GAR KEINEN UNTERSCHIED ob es ein [[AVR]], 8051/2, ARM,...... ist.&lt;br /&gt;
&lt;br /&gt;
Stimmt schon es gibt Unterschiede. Die Register haben anderen Namen, andere Adressen, andere Bitbedeutungen,...&lt;br /&gt;
Aber es steht doch alles im Datenblatt. Und ob ich jetzt einen [[AVR]] oder einen ARM das erste mal vor mir liegen hab. Ich brauch in allen Fällen die oben beschriebenen Schritte.&lt;br /&gt;
&lt;br /&gt;
Das Interruptsystem ist bei einem STM32 zusätzlich priorisiert, damit kann man festlegen welcher Interrupt vorrangig bearbeitet wird. Die Prioritätenvergabe ist auch kein Hexenwerk.&lt;br /&gt;
&lt;br /&gt;
Zu allen Prozessoren liefern die jeweiligen Hersteller umfangreiche Demo-Codes und Libraries mit. Meist sind alle in C geschrieben, daher sollte auch die Programmiersprache C verwendet werden. Vor allem auch wenn man berufliche Absichten verfolgt.&lt;br /&gt;
&lt;br /&gt;
Und wenn man einen STM32 kann, dann ist ein Umstieg auf einen LPC17xx (NXP) oder andere Hersteller überhaupt kein Problem, denn die bieten ebenfalls Prozessoren mit Cortex-M3 Kern und man kann diese mit der gleichen Programmierumgebung programmieren. Somit ist man nicht zwingend Herstellerabhängig.&lt;br /&gt;
&lt;br /&gt;
Mit einem STM32 kann man als Hobby-Baster und Professionell nahezu alle Anwendungen realisieren. Der hat genügend RAM und FLASH Speicher und auch genügen Geschwindigkeit. Viele Gehäuse-Varianten um kleine bis hin zu größere Geräte zu erstellen. Viele Schnittstellen, sind im Artikel [[STM32]] beschrieben.&lt;br /&gt;
&lt;br /&gt;
Der einzige Nachteil beim STM32: man muss etwas mehr lesen, da eine Peripherie doch viel mehr Funktionalität hat. Ansonsten kenne ich nicht wirklich einen Grund warum man als Neueinsteiger keinen STM32 nehmen sollte.&lt;br /&gt;
&lt;br /&gt;
= Programmiersprachen =&lt;br /&gt;
* Wie bei vielen anderen Controllern wird beim STM32 auch hauptsächlich C und C++ verwendet. Kennen sollte man die Programmiersprache C schon, wenn man davon noch keine Ahnung hat dann sollte man erst mal mittels einem Tutorial auf einem PC ein Konsoleprogramm schreiben, sodass man es einigermaßen kennen lernt. Hier im Forum gibt es ebenfalls Artikel dazu. Zielt man auf die (spätere) Anwendung in der Industrie, sollte aufgrund der Verbreitung auf jeden Fall C (oder C++) gewählt werden; außerdem sind die meisten verfügbaren Libraries in C geschrieben.&lt;br /&gt;
* Assembler sollte man nur grob verstehen, Details wie ein Befehl arbeitet ist unwichtig. Selbst wenn man die Zyklen für einen Funktionsaufruf wissen will, so bietet der STM32 (Cortex-M3) einen Cycle-Counter den man auslesen kann; durch die komplexere Pipeline und Cache-Effekte sind die Laufzeiten allerdings nicht genau vorhersehbar. Wird zyklengenause Timing benötigt, sollten Timer verwendet werden - davon hat der STM32 genug.&lt;br /&gt;
&lt;br /&gt;
Der 32bit-Adressraum, der RAM, Flash, I/O-Register vereinheitlicht ansprechen kann (im Gegensatz zu z.B. AVR) ist ideal für eine Verwendung durch Hochsprachen; bei Pointern muss keine zusätzliche Information verwaltet werden, in welche Art Speicher sie zeigen. Die Adresse gibt dies eindeutig an (es gibt nur &#039;&#039;&#039;eine&#039;&#039;&#039; Adresse 42, und nicht 3 wie beim AVR (Flash, RAM, I/O)) und die Hardware spricht automatisch den richtigen Speicher an. Die Möglichkeiten zur Offset-Adressierung, der Barrel-Shifter, Divsions-Einheit, die FPU (bei STM32F4), Interrupt-Modell etc. begünstigen ebenfalls die Erzeugung effizienteren Codes. Außerdem haben die STM32 einfach mehr &amp;quot;rohe Leistung&amp;quot;, d.h. mehr Flash/RAM-Speicher und höhere Taktfrequenzen.&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Folgerung&#039;&#039;&#039;: Die Programmierung in Hochsprachen ist &#039;&#039;&#039;bequemer als bei 8-Bittern&#039;&#039;&#039;, denn man muss sich einfach weniger Gedanken machen, ob der Compiler ein Programm nun effizent umsetzen kann (kann man natürlich trotzdem machen, um noch mehr Leistung &amp;quot;herauszuquetschen&amp;quot;, wenn man will).&lt;br /&gt;
&lt;br /&gt;
= Weitere Randbedingungen für die Entscheidung=&lt;br /&gt;
&lt;br /&gt;
Der wichtige Punkt, der oftmals auch vergessen wird: die Beschaffbarkeit. Wenn jemand einen Renesas M16C oder Fujitsu empfiehlt, dann sucht man erst mal und findet nur wenige vereinzelte die man privat kaufen kann.&lt;br /&gt;
&lt;br /&gt;
Oder auch die Unterstützung im Internet - ist bei einigen Exoten spärlich. Dieses Forum bietet die beste Hilfe für [[AVR]], PIC, [[STM32]] und [[MSP430]].&lt;br /&gt;
&lt;br /&gt;
Andere Prozessoren sind schon sehr alt, bzw. nicht mehr modern da deren Peripherie zum Teil doch recht eingeschränkte Funktionalität bietet. z.B. viele 8051 Typen oder PIC16. Die mögen für Mini-Anwenungen gut sein, aber wer will den schon gerne sich extra für eine Kleinanwendung mit einem kleinen µC auseinandersetzen, wenn er schon einen STM32 kennt, mit dem er alles machen kann (und sich bereits gute Funktionen geschrieben hat)?&lt;br /&gt;
&lt;br /&gt;
Daher mein Resümee: wer nicht gerade auf den Kopf gefallen ist, der kann getrost mit einem STM32 starten. Ein [http://www.st.com/web/en/catalog/tools/FM116/SC959/SS1532/PF252419?s_searchtype=keyword STM32F4DISCOVERY] Board kostet nur ca. 20 EUR - und mehr muss für den ersten Start nicht investiert werden - wenn es doch zu komplex sein sollte gibt es hier im Forum auch Hilfe oder man nimmt erst mal ein &amp;quot;Arduino&amp;quot;. Jedenfalls sind diese 20 EUR wirklich keine große Investition.&lt;br /&gt;
&lt;br /&gt;
= Weblinks, Foren, Communities, Tutorials =&lt;br /&gt;
* [[STM32]] Hauptartikel, [http://www.mikrocontroller.net/articles/STM32#Weblinks.2C_Foren.2C_Communities.2C_Tutorials dortige Linksammlung]&lt;br /&gt;
* [http://www.mikrocontroller.net/topic/319328 Diskussion zum Artikel]&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>Frank m35</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=STM32_f%C3%BCr_Einsteiger&amp;diff=80254</id>
		<title>STM32 für Einsteiger</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=STM32_f%C3%BCr_Einsteiger&amp;diff=80254"/>
		<updated>2013-12-30T11:29:43Z</updated>

		<summary type="html">&lt;p&gt;Frank m35: /* Programmierumgebungen */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Immer wiederkehrend hier im Forum &amp;quot;Mit welchem Mikrocontroller anfangen?&amp;quot;. Es gibt eine große Auswahl und eben so viele Empfehlungen. In diesem Artikel soll zu erst geholfen werden ob ein STM32-Prozessor mit Cortex-M3/M4 Kern überhaupt der Richtige für den Start ist.&lt;br /&gt;
Nicht für jeden ist der STM32 zu empfehlen, denn die Anforderungen und Wünsche die man realisieren möchte, sowie die eigenen Fähigkeiten sind verschieden.&lt;br /&gt;
&lt;br /&gt;
Es werden meist die Prozessoren AVR, PIC, Arduino, MSP430 und STM32 empfohlen. Seltener auch 8051, LPC und M16C. Alle haben Vorzüge und ebenso auch Nachteile.&lt;br /&gt;
&lt;br /&gt;
= Eigene Fähigkeiten und Wünsche =&lt;br /&gt;
&lt;br /&gt;
Zu erst einmal die Randbedingungen, mit der man sich selbst zu erst einmal einschätzen sollte:&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|- bgcolor=&amp;quot;#d0d0ff&amp;quot;&lt;br /&gt;
! Fähigkeit || Empfehlung [[STM32]] || Empfehlung [[AVR]]/PIC || Empfehlung [[MSP430]] || Empfehlung Arduino&lt;br /&gt;
|-&lt;br /&gt;
| Bereits in der Schule Mikrocontroller programmiert || align=&amp;quot;center&amp;quot;|x || align=&amp;quot;center&amp;quot;|x || align=&amp;quot;center&amp;quot;|x || align=&amp;quot;center&amp;quot;|-&lt;br /&gt;
|-&lt;br /&gt;
| Neueinsteiger, kaum Elektronikkenntnisse, noch nie programmiert || align=&amp;quot;center&amp;quot;|O || align=&amp;quot;center&amp;quot;|x || align=&amp;quot;center&amp;quot;|- || align=&amp;quot;center&amp;quot;|x&lt;br /&gt;
|-&lt;br /&gt;
| Wunsch ist SD-Card oder Grafik-Display || align=&amp;quot;center&amp;quot;|x || align=&amp;quot;center&amp;quot;|evt. Speicher zu klein || align=&amp;quot;center&amp;quot;|evt. Speicher zu klein || align=&amp;quot;center&amp;quot;|evt. Speicher zu klein&lt;br /&gt;
|-&lt;br /&gt;
| Wunsch ist TCP/IP Netzwerk oder Kamera|| align=&amp;quot;center&amp;quot;|x || align=&amp;quot;center&amp;quot;|- || align=&amp;quot;center&amp;quot;|- || align=&amp;quot;center&amp;quot;|-&lt;br /&gt;
|-&lt;br /&gt;
| Möchte die Erkenntnisse beruflich nutzen|| align=&amp;quot;center&amp;quot;|x || align=&amp;quot;center&amp;quot;|O || align=&amp;quot;center&amp;quot;|x || align=&amp;quot;center&amp;quot;|-&lt;br /&gt;
|-&lt;br /&gt;
| Extrem stromsparende Mini-Anwendung|| align=&amp;quot;center&amp;quot;|O || align=&amp;quot;center&amp;quot;|O || align=&amp;quot;center&amp;quot;|x || align=&amp;quot;center&amp;quot;|-&lt;br /&gt;
|-&lt;br /&gt;
| Experimentieren mit Multithreading, RTOS, Schedulern || align=&amp;quot;center&amp;quot;|x || align=&amp;quot;center&amp;quot;|- || align=&amp;quot;center&amp;quot;|- || align=&amp;quot;center&amp;quot;|-&lt;br /&gt;
|-&lt;br /&gt;
| Große, komplex strukturierte Programme || align=&amp;quot;center&amp;quot;|x || align=&amp;quot;center&amp;quot;|- || align=&amp;quot;center&amp;quot;|O || align=&amp;quot;center&amp;quot;|-&lt;br /&gt;
|-&lt;br /&gt;
| Viel I/O, PWM, komplexes Timing || align=&amp;quot;center&amp;quot;|x || align=&amp;quot;center&amp;quot;|O || align=&amp;quot;center&amp;quot;|? || align=&amp;quot;center&amp;quot;|-&lt;br /&gt;
|}&lt;br /&gt;
* x = ja&lt;br /&gt;
* O = Teilweise, Einschränkungen&lt;br /&gt;
* - = nicht empfohlen&lt;br /&gt;
* ? = Bitte ergänzen&lt;br /&gt;
&lt;br /&gt;
Nur um nicht zu verwirren, auch wenn Teile &amp;quot;nicht empfohlen&amp;quot; sind, heißt dass nicht dass es mit dem Prozessor nicht geht, vielmehr dass es mehr Aufwand ist das zu realisieren oder mehr Einschränkungen hat.&lt;br /&gt;
&lt;br /&gt;
= Unwichtige Randbedingungen =&lt;br /&gt;
&lt;br /&gt;
Oftmals werden fälschlicherweise Argumente für oder gegen eine µC-Familie ausgesprochen, die in der Praxis &#039;&#039;&#039;zum Einstieg&#039;&#039;&#039; (bei konkreten Anwendungen kann das anders aussehen) eher unwichtig sind.&lt;br /&gt;
&lt;br /&gt;
* Spannungsversorgung 3,3V / 5V&lt;br /&gt;
* 8 (z.B. [[AVR]]), 16 (z.B. [[MSP430]]) oder 32 (z.B. [[STM32]]) Bit&lt;br /&gt;
* Interrupt System mit mehr oder weniger Features&lt;br /&gt;
* Programmiersprache (Assembler, Basic, C, C++, Pascal)&lt;br /&gt;
* Assembler verstehen (Sollte nur theoretisch verstanden werden, ein Programm sollte in einer Hochsprache geschrieben sein)&lt;br /&gt;
* DIL Gehäuse - steckbretttauglich (STM32-Prozessoren gibt es auch fertig gelötet auf einem steckbretttauglichen Board)&lt;br /&gt;
* Programmieradapter&lt;br /&gt;
* zu 90% reicht doch ein kleiner Prozessor ([[AVR]]/PIC) - und für die restlichen kann man immer noch einen großen nehmen. Warum also nicht gleich einen großen nehmen?&lt;br /&gt;
&lt;br /&gt;
= Kosten =&lt;br /&gt;
&lt;br /&gt;
Grobe Abschätzung was das alles denn kosten wird. Hier sind nur einige Beispiele gezeigt.&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|- bgcolor=&amp;quot;#d0d0ff&amp;quot;&lt;br /&gt;
! Board || [[STM32]] || [[AVR]] || PIC18/24/32 || [[MSP430]] || Arduino&lt;br /&gt;
|-&lt;br /&gt;
| Demo-Board || align=&amp;quot;center&amp;quot;|[http://www.st.com/web/en/catalog/tools/FM116/SC959/SS1532/PF252419] 9..20€ (incl. Programmieradapter und Debugger) || align=&amp;quot;center&amp;quot;|15€ || align=&amp;quot;center&amp;quot;| [http://www.microchipdirect.com/ProductDetails.aspx?Catalog=BuyMicrochip&amp;amp;Category=Starter%20Kits&amp;amp;mid=1&amp;amp;lmid=610 durchschnittlich 18€ .. 50€] || align=&amp;quot;center&amp;quot;|?? || align=&amp;quot;center&amp;quot;|20€&lt;br /&gt;
|-&lt;br /&gt;
| Steckbrettaugliches Board || align=&amp;quot;center&amp;quot;| s.o. oder [http://re.reworld.eu/de/produkte/s64dil-405/index.htm S64DIL-405] 30€ || align=&amp;quot;center&amp;quot;|2-5€ als einzelner IC || align=&amp;quot;center&amp;quot;|2-5€ als einzelner IC || align=&amp;quot;center&amp;quot;|?? || align=&amp;quot;center&amp;quot;|??&lt;br /&gt;
|-&lt;br /&gt;
| Programmieradapter mit Debugger || align=&amp;quot;center&amp;quot;| s.o. oder z.B [http://www.segger.com/j-link-edu.html Segger J-LINK EDU] 50€ (sehr schnell und unterstützt viele Prozessoren) || align=&amp;quot;center&amp;quot;|?? || align=&amp;quot;center&amp;quot;|PICkit 3 30€ [http://www.microchipdirect.com/ProductSearch.aspx?keywords=PG164130] || align=&amp;quot;center&amp;quot;|?? || align=&amp;quot;center&amp;quot;|20€ (Man muss DebugWire aktivieren)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Das Demo-Board sollte ein Board sein, nicht zu teuer, um die ersten Erfahrungen zu sammeln. Wenn einem der Prozessor gefällt, so kann man später immer noch mit einem zweiten Demo-Board, z.B. mit Display aufrüsten.&lt;br /&gt;
&lt;br /&gt;
Wenn man gerne mit einem Steckbrett sich die Schaltung zusammen stecken möchte, so kann man entweder die benötigten Drähte am Demo-Board anlöten oder bei z.B. [[AVR]]/[[PIC]] Prozessoren gibt es Ausführungen im DIL Gehäuse, die direkt steckbar sind.&lt;br /&gt;
&lt;br /&gt;
Ein Programmieradapter sollte unbedingt auch einen Debugger beinhalten. Denn für den Start ist es ungemein hilfreich zu sehen was im Prozessor gerade geschieht. Die JTAG-Adapter für einen [[STM32]] Prozessor sind alle Debugger-Tauglich. Für einen [[AVR]] oder [[PIC]] Prozessor gibt es auch oft reine Programmer (oft Selbstbau-Lösungen über die serielle oder parallele Schnittstelle) welche den Mikrocontroller nur beschreiben können. Sinvoller sind hingegen Debugger (bspw. PIC Kit 3 [http://www.microchipdirect.com/ProductSearch.aspx?keywords=PG164130] kompatibel zu allen PIC Mikrocontrollern), die die Ausführung eines Mikrocontrollers anhalten können um die aktuelle Position im Programmcode, Variableninhalt, Register, ... auszulesen bzw. zur Laufzeit zu ändern.&lt;br /&gt;
&lt;br /&gt;
Der für den [[STM32]] empfohlene Segger J-LINK EDU ist zwar nicht der günstigste (z.B. auf einem STM32F4DISCOVERY Borad ist auch einer drauf den man für andere STM32 nutzen kann) aber eines der besten, mit sehr guten Software-Tools und nutzbar für alle Prozessoren mit ARM-Kern (ARM7/9/11/... Cortex-Mx). Niemals am Werkzeug sparen und man hat viel mehr Freude bei der Arbeit.&lt;br /&gt;
&lt;br /&gt;
Der &amp;quot;Arduino&amp;quot; ist kein eigenständiger Prozessor, sondern ein fertiges Board mit einer &amp;quot;Arduino&amp;quot; Programmierumgebung (und einem AVR Prozessor), extra geschaffen für Einsteiger. Allerdings ist da der Lerneffekt viel geringer da man den Prozessor mit der Arduino-Software programmiert und nicht direkt die Register.&lt;br /&gt;
&lt;br /&gt;
Ein [[PIC16]] ist ein älterer 8-Bit Mikrocontroller, der durch die [[PIC18]] Reihe abgelöst wurde. Werden komplexere Anforderungen in Zukunft an den Mikrocontroller gestellt (Audio, Grafik), so sollte zu den moderneren [[PIC24]] bzw. [[dsPIC]] (16-Bit) oder gar zu [[PIC32]] (32-Bit MIPS Prozessor) gegriffen werden, wobei letzterer von der Performance vergleichbar mit den STM32 ARM-basierten Mikrocontrollern ist.&lt;br /&gt;
&lt;br /&gt;
= Programmierumgebungen=&lt;br /&gt;
&lt;br /&gt;
Bei den Programmierumgebungen gibt es zu allen Prozessorfamilien kostenlose und Leistungsfähige Software&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|- bgcolor=&amp;quot;#d0d0ff&amp;quot;&lt;br /&gt;
! [[STM32]] || [[AVR]] || PIC || [[MSP430]] || Arduino&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot;|[http://www.coocox.org/CooCox_CoIDE.htm CooCox] || align=&amp;quot;center&amp;quot;|Atmel-Studio || align=&amp;quot;center&amp;quot;|[http://www.microchip.com/pagehandler/en-us/family/mplabx/ MPALB X] (IDE inklusive compiler) || align=&amp;quot;center&amp;quot;|?? || align=&amp;quot;center&amp;quot;|arduino 1.0.5&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
natürlich gibt es noch viele weitere (für STM32 siehe [[STM32#Programmierung]]), es sollte jedoch nur die einfachsten kostenlose (und ohne Codebegrenzung) für den ersten Einstieg gezeigt werden.&lt;br /&gt;
&lt;br /&gt;
= Dokumentation=&lt;br /&gt;
&lt;br /&gt;
Bevor man sich für einen Prozessor entscheidet sollte man unbedingt deren Dokumentation mal zumindest überfliegen und auch deren Errata&#039;s lesen. Nicht dass man eine Anwendung erstellen möchte und stellt hinterher fest, dass genau dieser Teil so buggy ist das er nicht genutzt werden kann.&lt;br /&gt;
&lt;br /&gt;
Beim [[STM32]] hat die Dokumentation doch recht viele Seiten, viel mehr als bei einem [[AVR]] oder PIC. Dabei ist vieles eher knapp beschrieben, man muss mehr suchen als z.B. bei den AVR-Dokus, um die gewünschten Informationen zu finden. Außerdem gibt es durchaus einige Unklarheiten und Fehler/Widersprüche. Schlussendlich ist es Geschmackssache mit welcher Doku von welchem Hersteller man sich besser zurecht findet.&lt;br /&gt;
&lt;br /&gt;
Bei den PICs gibt es zu jedem Mikrocontroller ein Datenblatt das die wichtigsten Informationen für den alltäglichen Gebrauch enthält. Da bestimmte Peripherie (bspw. I2C, SPI, ... ) aber sehr komplex ist und innerhalb einer Familie (PIC16/18/24/32) sich identisch verhält, gibt es zu jeder Familie die sogenannten Family-Datasheets, welche alle Module im Detail beschreiben.&lt;br /&gt;
&lt;br /&gt;
Parallel zur Dokumentation sollte man sich auch die Demo-Beispiele der Hersteller anschauen, dann wird vieles gleich verständlicher.&lt;br /&gt;
&lt;br /&gt;
Eine Übersicht über die Funktionen gibt es im Artikel: [[STM32]]&lt;br /&gt;
&lt;br /&gt;
= Die Arbeit mit dem STM32=&lt;br /&gt;
&lt;br /&gt;
Zu erst einmal SOOO groß sind die Unterschiede zwischen den einzelnen Prozessoren nicht. Alle haben Ein-/Ausgänge und um mittels einem Port-Pin eine LED ansteuern zu können muss bei jedem Prozessor der Pin erst einmal parametriert werden, egal ob das jetzt ein STM32 oder ein AVR oder ein MSP430 ist. Nur hat man bei einem STM32 doch einige Funktionen mehr, z.B. zuschaltbarer Pull-Up oder Pull-Down Widerstand und spezielle Setz-Rücksetzregister, die andere Prozessoren nicht haben, jedoch das programmieren vereinfachen.&lt;br /&gt;
Der Haupt-Unterschied zu den anderen Prozessoren ist, dass der [[STM32]] so viele Peripherie-Module beherbergt, dass man die einzeln immer mit einem Clock aktivieren muss, denn damit lässt sich viel Strom sparen.&lt;br /&gt;
&lt;br /&gt;
Und mal ganz ehrlich die Diskussion welcher µc einfacher zu konfigurieren ist, ist doch absoluter Unsinn. Der Weg ist immer der Gleiche:&lt;br /&gt;
*1. Blick ins Datenblatt welche Register für diese Funktion benötigt werden.&lt;br /&gt;
*2. Werte ermitteln die in die Register eingetragen werden.&lt;br /&gt;
*3. Werte ins Register schreiben. Da machte es GAR KEINEN UNTERSCHIED ob es ein [[AVR]], 8051/2, ARM,...... ist.&lt;br /&gt;
&lt;br /&gt;
Stimmt schon es gibt Unterschiede. Die Register haben anderen Namen, andere Adressen, andere Bitbedeutungen,...&lt;br /&gt;
Aber es steht doch alles im Datenblatt. Und ob ich jetzt einen [[AVR]] oder einen ARM das erste mal vor mir liegen hab. Ich brauch in allen Fällen die oben beschriebenen Schritte.&lt;br /&gt;
&lt;br /&gt;
Das Interruptsystem ist bei einem STM32 zusätzlich priorisiert, damit kann man festlegen welcher Interrupt vorrangig bearbeitet wird. Die Prioritätenvergabe ist auch kein Hexenwerk.&lt;br /&gt;
&lt;br /&gt;
Zu allen Prozessoren liefern die jeweiligen Hersteller umfangreiche Demo-Codes und Libraries mit. Meist sind alle in C geschrieben, daher sollte auch die Programmiersprache C verwendet werden. Vor allem auch wenn man berufliche Absichten verfolgt.&lt;br /&gt;
&lt;br /&gt;
Und wenn man einen STM32 kann, dann ist ein Umstieg auf einen LPC17xx (NXP) oder andere Hersteller überhaupt kein Problem, denn die bieten ebenfalls Prozessoren mit Cortex-M3 Kern und man kann diese mit der gleichen Programmierumgebung programmieren. Somit ist man nicht zwingend Herstellerabhängig.&lt;br /&gt;
&lt;br /&gt;
Mit einem STM32 kann man als Hobby-Baster und Professionell nahezu alle Anwendungen realisieren. Der hat genügend RAM und FLASH Speicher und auch genügen Geschwindigkeit. Viele Gehäuse-Varianten um kleine bis hin zu größere Geräte zu erstellen. Viele Schnittstellen, sind im Artikel [[STM32]] beschrieben.&lt;br /&gt;
&lt;br /&gt;
Der einzige Nachteil beim STM32: man muss etwas mehr lesen, da eine Peripherie doch viel mehr Funktionalität hat. Ansonsten kenne ich nicht wirklich einen Grund warum man als Neueinsteiger keinen STM32 nehmen sollte.&lt;br /&gt;
&lt;br /&gt;
= Programmiersprachen =&lt;br /&gt;
* Wie bei vielen anderen Controllern wird beim STM32 auch hauptsächlich C und C++ verwendet. Kennen sollte man die Programmiersprache C schon, wenn man davon noch keine Ahnung hat dann sollte man erst mal mittels einem Tutorial auf einem PC ein Konsoleprogramm schreiben, sodass man es einigermaßen kennen lernt. Hier im Forum gibt es ebenfalls Artikel dazu. Zielt man auf die (spätere) Anwendung in der Industrie, sollte aufgrund der Verbreitung auf jeden Fall C (oder C++) gewählt werden; außerdem sind die meisten verfügbaren Libraries in C geschrieben.&lt;br /&gt;
* Assembler sollte man nur grob verstehen, Details wie ein Befehl arbeitet ist unwichtig. Selbst wenn man die Zyklen für einen Funktionsaufruf wissen will, so bietet der STM32 (Cortex-M3) einen Cycle-Counter den man auslesen kann; durch die komplexere Pipeline und Cache-Effekte sind die Laufzeiten allerdings nicht genau vorhersehbar. Wird zyklengenause Timing benötigt, sollten Timer verwendet werden - davon hat der STM32 genug.&lt;br /&gt;
&lt;br /&gt;
Der 32bit-Adressraum, der RAM, Flash, I/O-Register vereinheitlicht ansprechen kann (im Gegensatz zu z.B. AVR) ist ideal für eine Verwendung durch Hochsprachen; bei Pointern muss keine zusätzliche Information verwaltet werden, in welche Art Speicher sie zeigen. Die Adresse gibt dies eindeutig an (es gibt nur &#039;&#039;&#039;eine&#039;&#039;&#039; Adresse 42, und nicht 3 wie beim AVR (Flash, RAM, I/O)) und die Hardware spricht automatisch den richtigen Speicher an. Die Möglichkeiten zur Offset-Adressierung, der Barrel-Shifter, Divsions-Einheit, die FPU (bei STM32F4), Interrupt-Modell etc. begünstigen ebenfalls die Erzeugung effizienteren Codes. Außerdem haben die STM32 einfach mehr &amp;quot;rohe Leistung&amp;quot;, d.h. mehr Flash/RAM-Speicher und höhere Taktfrequenzen.&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Folgerung&#039;&#039;&#039;: Die Programmierung in Hochsprachen ist &#039;&#039;&#039;bequemer als bei 8-Bittern&#039;&#039;&#039;, denn man muss sich einfach weniger Gedanken machen, ob der Compiler ein Programm nun effizent umsetzen kann (kann man natürlich trotzdem machen, um noch mehr Leistung &amp;quot;herauszuquetschen&amp;quot;, wenn man will).&lt;br /&gt;
&lt;br /&gt;
= Weitere Randbedingungen für die Entscheidung=&lt;br /&gt;
&lt;br /&gt;
Der wichtige Punkt, der oftmals auch vergessen wird: die Beschaffbarkeit. Wenn jemand einen Renesas M16C oder Fujitsu empfiehlt, dann sucht man erst mal und findet nur wenige vereinzelte die man privat kaufen kann.&lt;br /&gt;
&lt;br /&gt;
Oder auch die Unterstützung im Internet - ist bei einigen Exoten spärlich. Dieses Forum bietet die beste Hilfe für [[AVR]], PIC, [[STM32]] und [[MSP430]].&lt;br /&gt;
&lt;br /&gt;
Andere Prozessoren sind schon sehr alt, bzw. nicht mehr modern da deren Peripherie zum Teil doch recht eingeschränkte Funktionalität bietet. z.B. viele 8051 Typen oder PIC16. Die mögen für Mini-Anwenungen gut sein, aber wer will den schon gerne sich extra für eine Kleinanwendung mit einem kleinen µC auseinandersetzen, wenn er schon einen STM32 kennt, mit dem er alles machen kann (und sich bereits gute Funktionen geschrieben hat)?&lt;br /&gt;
&lt;br /&gt;
Daher mein Resümee: wer nicht gerade auf den Kopf gefallen ist, der kann getrost mit einem STM32 starten. Ein [http://www.st.com/web/en/catalog/tools/FM116/SC959/SS1532/PF252419?s_searchtype=keyword STM32F4DISCOVERY] Board kostet nur ca. 20 EUR - und mehr muss für den ersten Start nicht investiert werden - wenn es doch zu komplex sein sollte gibt es hier im Forum auch Hilfe oder man nimmt erst mal ein &amp;quot;Arduino&amp;quot;. Jedenfalls sind diese 20 EUR wirklich keine große Investition.&lt;br /&gt;
&lt;br /&gt;
= Weblinks, Foren, Communities, Tutorials =&lt;br /&gt;
* [[STM32]] Hauptartikel, [http://www.mikrocontroller.net/articles/STM32#Weblinks.2C_Foren.2C_Communities.2C_Tutorials dortige Linksammlung]&lt;br /&gt;
* [http://www.mikrocontroller.net/topic/319328 Diskussion zum Artikel]&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>Frank m35</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=STM32_f%C3%BCr_Einsteiger&amp;diff=80253</id>
		<title>STM32 für Einsteiger</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=STM32_f%C3%BCr_Einsteiger&amp;diff=80253"/>
		<updated>2013-12-30T11:27:00Z</updated>

		<summary type="html">&lt;p&gt;Frank m35: /* Dokumentation */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Immer wiederkehrend hier im Forum &amp;quot;Mit welchem Mikrocontroller anfangen?&amp;quot;. Es gibt eine große Auswahl und eben so viele Empfehlungen. In diesem Artikel soll zu erst geholfen werden ob ein STM32-Prozessor mit Cortex-M3/M4 Kern überhaupt der Richtige für den Start ist.&lt;br /&gt;
Nicht für jeden ist der STM32 zu empfehlen, denn die Anforderungen und Wünsche die man realisieren möchte, sowie die eigenen Fähigkeiten sind verschieden.&lt;br /&gt;
&lt;br /&gt;
Es werden meist die Prozessoren AVR, PIC, Arduino, MSP430 und STM32 empfohlen. Seltener auch 8051, LPC und M16C. Alle haben Vorzüge und ebenso auch Nachteile.&lt;br /&gt;
&lt;br /&gt;
= Eigene Fähigkeiten und Wünsche =&lt;br /&gt;
&lt;br /&gt;
Zu erst einmal die Randbedingungen, mit der man sich selbst zu erst einmal einschätzen sollte:&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|- bgcolor=&amp;quot;#d0d0ff&amp;quot;&lt;br /&gt;
! Fähigkeit || Empfehlung [[STM32]] || Empfehlung [[AVR]]/PIC || Empfehlung [[MSP430]] || Empfehlung Arduino&lt;br /&gt;
|-&lt;br /&gt;
| Bereits in der Schule Mikrocontroller programmiert || align=&amp;quot;center&amp;quot;|x || align=&amp;quot;center&amp;quot;|x || align=&amp;quot;center&amp;quot;|x || align=&amp;quot;center&amp;quot;|-&lt;br /&gt;
|-&lt;br /&gt;
| Neueinsteiger, kaum Elektronikkenntnisse, noch nie programmiert || align=&amp;quot;center&amp;quot;|O || align=&amp;quot;center&amp;quot;|x || align=&amp;quot;center&amp;quot;|- || align=&amp;quot;center&amp;quot;|x&lt;br /&gt;
|-&lt;br /&gt;
| Wunsch ist SD-Card oder Grafik-Display || align=&amp;quot;center&amp;quot;|x || align=&amp;quot;center&amp;quot;|evt. Speicher zu klein || align=&amp;quot;center&amp;quot;|evt. Speicher zu klein || align=&amp;quot;center&amp;quot;|evt. Speicher zu klein&lt;br /&gt;
|-&lt;br /&gt;
| Wunsch ist TCP/IP Netzwerk oder Kamera|| align=&amp;quot;center&amp;quot;|x || align=&amp;quot;center&amp;quot;|- || align=&amp;quot;center&amp;quot;|- || align=&amp;quot;center&amp;quot;|-&lt;br /&gt;
|-&lt;br /&gt;
| Möchte die Erkenntnisse beruflich nutzen|| align=&amp;quot;center&amp;quot;|x || align=&amp;quot;center&amp;quot;|O || align=&amp;quot;center&amp;quot;|x || align=&amp;quot;center&amp;quot;|-&lt;br /&gt;
|-&lt;br /&gt;
| Extrem stromsparende Mini-Anwendung|| align=&amp;quot;center&amp;quot;|O || align=&amp;quot;center&amp;quot;|O || align=&amp;quot;center&amp;quot;|x || align=&amp;quot;center&amp;quot;|-&lt;br /&gt;
|-&lt;br /&gt;
| Experimentieren mit Multithreading, RTOS, Schedulern || align=&amp;quot;center&amp;quot;|x || align=&amp;quot;center&amp;quot;|- || align=&amp;quot;center&amp;quot;|- || align=&amp;quot;center&amp;quot;|-&lt;br /&gt;
|-&lt;br /&gt;
| Große, komplex strukturierte Programme || align=&amp;quot;center&amp;quot;|x || align=&amp;quot;center&amp;quot;|- || align=&amp;quot;center&amp;quot;|O || align=&amp;quot;center&amp;quot;|-&lt;br /&gt;
|-&lt;br /&gt;
| Viel I/O, PWM, komplexes Timing || align=&amp;quot;center&amp;quot;|x || align=&amp;quot;center&amp;quot;|O || align=&amp;quot;center&amp;quot;|? || align=&amp;quot;center&amp;quot;|-&lt;br /&gt;
|}&lt;br /&gt;
* x = ja&lt;br /&gt;
* O = Teilweise, Einschränkungen&lt;br /&gt;
* - = nicht empfohlen&lt;br /&gt;
* ? = Bitte ergänzen&lt;br /&gt;
&lt;br /&gt;
Nur um nicht zu verwirren, auch wenn Teile &amp;quot;nicht empfohlen&amp;quot; sind, heißt dass nicht dass es mit dem Prozessor nicht geht, vielmehr dass es mehr Aufwand ist das zu realisieren oder mehr Einschränkungen hat.&lt;br /&gt;
&lt;br /&gt;
= Unwichtige Randbedingungen =&lt;br /&gt;
&lt;br /&gt;
Oftmals werden fälschlicherweise Argumente für oder gegen eine µC-Familie ausgesprochen, die in der Praxis &#039;&#039;&#039;zum Einstieg&#039;&#039;&#039; (bei konkreten Anwendungen kann das anders aussehen) eher unwichtig sind.&lt;br /&gt;
&lt;br /&gt;
* Spannungsversorgung 3,3V / 5V&lt;br /&gt;
* 8 (z.B. [[AVR]]), 16 (z.B. [[MSP430]]) oder 32 (z.B. [[STM32]]) Bit&lt;br /&gt;
* Interrupt System mit mehr oder weniger Features&lt;br /&gt;
* Programmiersprache (Assembler, Basic, C, C++, Pascal)&lt;br /&gt;
* Assembler verstehen (Sollte nur theoretisch verstanden werden, ein Programm sollte in einer Hochsprache geschrieben sein)&lt;br /&gt;
* DIL Gehäuse - steckbretttauglich (STM32-Prozessoren gibt es auch fertig gelötet auf einem steckbretttauglichen Board)&lt;br /&gt;
* Programmieradapter&lt;br /&gt;
* zu 90% reicht doch ein kleiner Prozessor ([[AVR]]/PIC) - und für die restlichen kann man immer noch einen großen nehmen. Warum also nicht gleich einen großen nehmen?&lt;br /&gt;
&lt;br /&gt;
= Kosten =&lt;br /&gt;
&lt;br /&gt;
Grobe Abschätzung was das alles denn kosten wird. Hier sind nur einige Beispiele gezeigt.&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|- bgcolor=&amp;quot;#d0d0ff&amp;quot;&lt;br /&gt;
! Board || [[STM32]] || [[AVR]] || PIC18/24/32 || [[MSP430]] || Arduino&lt;br /&gt;
|-&lt;br /&gt;
| Demo-Board || align=&amp;quot;center&amp;quot;|[http://www.st.com/web/en/catalog/tools/FM116/SC959/SS1532/PF252419] 9..20€ (incl. Programmieradapter und Debugger) || align=&amp;quot;center&amp;quot;|15€ || align=&amp;quot;center&amp;quot;| [http://www.microchipdirect.com/ProductDetails.aspx?Catalog=BuyMicrochip&amp;amp;Category=Starter%20Kits&amp;amp;mid=1&amp;amp;lmid=610 durchschnittlich 18€ .. 50€] || align=&amp;quot;center&amp;quot;|?? || align=&amp;quot;center&amp;quot;|20€&lt;br /&gt;
|-&lt;br /&gt;
| Steckbrettaugliches Board || align=&amp;quot;center&amp;quot;| s.o. oder [http://re.reworld.eu/de/produkte/s64dil-405/index.htm S64DIL-405] 30€ || align=&amp;quot;center&amp;quot;|2-5€ als einzelner IC || align=&amp;quot;center&amp;quot;|2-5€ als einzelner IC || align=&amp;quot;center&amp;quot;|?? || align=&amp;quot;center&amp;quot;|??&lt;br /&gt;
|-&lt;br /&gt;
| Programmieradapter mit Debugger || align=&amp;quot;center&amp;quot;| s.o. oder z.B [http://www.segger.com/j-link-edu.html Segger J-LINK EDU] 50€ (sehr schnell und unterstützt viele Prozessoren) || align=&amp;quot;center&amp;quot;|?? || align=&amp;quot;center&amp;quot;|PICkit 3 30€ [http://www.microchipdirect.com/ProductSearch.aspx?keywords=PG164130] || align=&amp;quot;center&amp;quot;|?? || align=&amp;quot;center&amp;quot;|20€ (Man muss DebugWire aktivieren)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Das Demo-Board sollte ein Board sein, nicht zu teuer, um die ersten Erfahrungen zu sammeln. Wenn einem der Prozessor gefällt, so kann man später immer noch mit einem zweiten Demo-Board, z.B. mit Display aufrüsten.&lt;br /&gt;
&lt;br /&gt;
Wenn man gerne mit einem Steckbrett sich die Schaltung zusammen stecken möchte, so kann man entweder die benötigten Drähte am Demo-Board anlöten oder bei z.B. [[AVR]]/[[PIC]] Prozessoren gibt es Ausführungen im DIL Gehäuse, die direkt steckbar sind.&lt;br /&gt;
&lt;br /&gt;
Ein Programmieradapter sollte unbedingt auch einen Debugger beinhalten. Denn für den Start ist es ungemein hilfreich zu sehen was im Prozessor gerade geschieht. Die JTAG-Adapter für einen [[STM32]] Prozessor sind alle Debugger-Tauglich. Für einen [[AVR]] oder [[PIC]] Prozessor gibt es auch oft reine Programmer (oft Selbstbau-Lösungen über die serielle oder parallele Schnittstelle) welche den Mikrocontroller nur beschreiben können. Sinvoller sind hingegen Debugger (bspw. PIC Kit 3 [http://www.microchipdirect.com/ProductSearch.aspx?keywords=PG164130] kompatibel zu allen PIC Mikrocontrollern), die die Ausführung eines Mikrocontrollers anhalten können um die aktuelle Position im Programmcode, Variableninhalt, Register, ... auszulesen bzw. zur Laufzeit zu ändern.&lt;br /&gt;
&lt;br /&gt;
Der für den [[STM32]] empfohlene Segger J-LINK EDU ist zwar nicht der günstigste (z.B. auf einem STM32F4DISCOVERY Borad ist auch einer drauf den man für andere STM32 nutzen kann) aber eines der besten, mit sehr guten Software-Tools und nutzbar für alle Prozessoren mit ARM-Kern (ARM7/9/11/... Cortex-Mx). Niemals am Werkzeug sparen und man hat viel mehr Freude bei der Arbeit.&lt;br /&gt;
&lt;br /&gt;
Der &amp;quot;Arduino&amp;quot; ist kein eigenständiger Prozessor, sondern ein fertiges Board mit einer &amp;quot;Arduino&amp;quot; Programmierumgebung (und einem AVR Prozessor), extra geschaffen für Einsteiger. Allerdings ist da der Lerneffekt viel geringer da man den Prozessor mit der Arduino-Software programmiert und nicht direkt die Register.&lt;br /&gt;
&lt;br /&gt;
Ein [[PIC16]] ist ein älterer 8-Bit Mikrocontroller, der durch die [[PIC18]] Reihe abgelöst wurde. Werden komplexere Anforderungen in Zukunft an den Mikrocontroller gestellt (Audio, Grafik), so sollte zu den moderneren [[PIC24]] bzw. [[dsPIC]] (16-Bit) oder gar zu [[PIC32]] (32-Bit MIPS Prozessor) gegriffen werden, wobei letzterer von der Performance vergleichbar mit den STM32 ARM-basierten Mikrocontrollern ist.&lt;br /&gt;
&lt;br /&gt;
= Programmierumgebungen=&lt;br /&gt;
&lt;br /&gt;
Bei den Programmierumgebungen gibt es zu allen Prozessorfamilien kostenlose und Leistungsfähige Software&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|- bgcolor=&amp;quot;#d0d0ff&amp;quot;&lt;br /&gt;
! [[STM32]] || [[AVR]] || PIC || [[MSP430]] || Arduino&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot;|[http://www.coocox.org/CooCox_CoIDE.htm CooCox] || align=&amp;quot;center&amp;quot;|Atmel-Studio || align=&amp;quot;center&amp;quot;|MPLab || align=&amp;quot;center&amp;quot;|?? || align=&amp;quot;center&amp;quot;|arduino 1.0.5&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
natürlich gibt es noch viele weitere (für STM32 siehe [[STM32#Programmierung]]), es sollte jedoch nur die einfachsten kostenlose (und ohne Codebegrenzung) für den ersten Einstieg gezeigt werden.&lt;br /&gt;
&lt;br /&gt;
= Dokumentation=&lt;br /&gt;
&lt;br /&gt;
Bevor man sich für einen Prozessor entscheidet sollte man unbedingt deren Dokumentation mal zumindest überfliegen und auch deren Errata&#039;s lesen. Nicht dass man eine Anwendung erstellen möchte und stellt hinterher fest, dass genau dieser Teil so buggy ist das er nicht genutzt werden kann.&lt;br /&gt;
&lt;br /&gt;
Beim [[STM32]] hat die Dokumentation doch recht viele Seiten, viel mehr als bei einem [[AVR]] oder PIC. Dabei ist vieles eher knapp beschrieben, man muss mehr suchen als z.B. bei den AVR-Dokus, um die gewünschten Informationen zu finden. Außerdem gibt es durchaus einige Unklarheiten und Fehler/Widersprüche. Schlussendlich ist es Geschmackssache mit welcher Doku von welchem Hersteller man sich besser zurecht findet.&lt;br /&gt;
&lt;br /&gt;
Bei den PICs gibt es zu jedem Mikrocontroller ein Datenblatt das die wichtigsten Informationen für den alltäglichen Gebrauch enthält. Da bestimmte Peripherie (bspw. I2C, SPI, ... ) aber sehr komplex ist und innerhalb einer Familie (PIC16/18/24/32) sich identisch verhält, gibt es zu jeder Familie die sogenannten Family-Datasheets, welche alle Module im Detail beschreiben.&lt;br /&gt;
&lt;br /&gt;
Parallel zur Dokumentation sollte man sich auch die Demo-Beispiele der Hersteller anschauen, dann wird vieles gleich verständlicher.&lt;br /&gt;
&lt;br /&gt;
Eine Übersicht über die Funktionen gibt es im Artikel: [[STM32]]&lt;br /&gt;
&lt;br /&gt;
= Die Arbeit mit dem STM32=&lt;br /&gt;
&lt;br /&gt;
Zu erst einmal SOOO groß sind die Unterschiede zwischen den einzelnen Prozessoren nicht. Alle haben Ein-/Ausgänge und um mittels einem Port-Pin eine LED ansteuern zu können muss bei jedem Prozessor der Pin erst einmal parametriert werden, egal ob das jetzt ein STM32 oder ein AVR oder ein MSP430 ist. Nur hat man bei einem STM32 doch einige Funktionen mehr, z.B. zuschaltbarer Pull-Up oder Pull-Down Widerstand und spezielle Setz-Rücksetzregister, die andere Prozessoren nicht haben, jedoch das programmieren vereinfachen.&lt;br /&gt;
Der Haupt-Unterschied zu den anderen Prozessoren ist, dass der [[STM32]] so viele Peripherie-Module beherbergt, dass man die einzeln immer mit einem Clock aktivieren muss, denn damit lässt sich viel Strom sparen.&lt;br /&gt;
&lt;br /&gt;
Und mal ganz ehrlich die Diskussion welcher µc einfacher zu konfigurieren ist, ist doch absoluter Unsinn. Der Weg ist immer der Gleiche:&lt;br /&gt;
*1. Blick ins Datenblatt welche Register für diese Funktion benötigt werden.&lt;br /&gt;
*2. Werte ermitteln die in die Register eingetragen werden.&lt;br /&gt;
*3. Werte ins Register schreiben. Da machte es GAR KEINEN UNTERSCHIED ob es ein [[AVR]], 8051/2, ARM,...... ist.&lt;br /&gt;
&lt;br /&gt;
Stimmt schon es gibt Unterschiede. Die Register haben anderen Namen, andere Adressen, andere Bitbedeutungen,...&lt;br /&gt;
Aber es steht doch alles im Datenblatt. Und ob ich jetzt einen [[AVR]] oder einen ARM das erste mal vor mir liegen hab. Ich brauch in allen Fällen die oben beschriebenen Schritte.&lt;br /&gt;
&lt;br /&gt;
Das Interruptsystem ist bei einem STM32 zusätzlich priorisiert, damit kann man festlegen welcher Interrupt vorrangig bearbeitet wird. Die Prioritätenvergabe ist auch kein Hexenwerk.&lt;br /&gt;
&lt;br /&gt;
Zu allen Prozessoren liefern die jeweiligen Hersteller umfangreiche Demo-Codes und Libraries mit. Meist sind alle in C geschrieben, daher sollte auch die Programmiersprache C verwendet werden. Vor allem auch wenn man berufliche Absichten verfolgt.&lt;br /&gt;
&lt;br /&gt;
Und wenn man einen STM32 kann, dann ist ein Umstieg auf einen LPC17xx (NXP) oder andere Hersteller überhaupt kein Problem, denn die bieten ebenfalls Prozessoren mit Cortex-M3 Kern und man kann diese mit der gleichen Programmierumgebung programmieren. Somit ist man nicht zwingend Herstellerabhängig.&lt;br /&gt;
&lt;br /&gt;
Mit einem STM32 kann man als Hobby-Baster und Professionell nahezu alle Anwendungen realisieren. Der hat genügend RAM und FLASH Speicher und auch genügen Geschwindigkeit. Viele Gehäuse-Varianten um kleine bis hin zu größere Geräte zu erstellen. Viele Schnittstellen, sind im Artikel [[STM32]] beschrieben.&lt;br /&gt;
&lt;br /&gt;
Der einzige Nachteil beim STM32: man muss etwas mehr lesen, da eine Peripherie doch viel mehr Funktionalität hat. Ansonsten kenne ich nicht wirklich einen Grund warum man als Neueinsteiger keinen STM32 nehmen sollte.&lt;br /&gt;
&lt;br /&gt;
= Programmiersprachen =&lt;br /&gt;
* Wie bei vielen anderen Controllern wird beim STM32 auch hauptsächlich C und C++ verwendet. Kennen sollte man die Programmiersprache C schon, wenn man davon noch keine Ahnung hat dann sollte man erst mal mittels einem Tutorial auf einem PC ein Konsoleprogramm schreiben, sodass man es einigermaßen kennen lernt. Hier im Forum gibt es ebenfalls Artikel dazu. Zielt man auf die (spätere) Anwendung in der Industrie, sollte aufgrund der Verbreitung auf jeden Fall C (oder C++) gewählt werden; außerdem sind die meisten verfügbaren Libraries in C geschrieben.&lt;br /&gt;
* Assembler sollte man nur grob verstehen, Details wie ein Befehl arbeitet ist unwichtig. Selbst wenn man die Zyklen für einen Funktionsaufruf wissen will, so bietet der STM32 (Cortex-M3) einen Cycle-Counter den man auslesen kann; durch die komplexere Pipeline und Cache-Effekte sind die Laufzeiten allerdings nicht genau vorhersehbar. Wird zyklengenause Timing benötigt, sollten Timer verwendet werden - davon hat der STM32 genug.&lt;br /&gt;
&lt;br /&gt;
Der 32bit-Adressraum, der RAM, Flash, I/O-Register vereinheitlicht ansprechen kann (im Gegensatz zu z.B. AVR) ist ideal für eine Verwendung durch Hochsprachen; bei Pointern muss keine zusätzliche Information verwaltet werden, in welche Art Speicher sie zeigen. Die Adresse gibt dies eindeutig an (es gibt nur &#039;&#039;&#039;eine&#039;&#039;&#039; Adresse 42, und nicht 3 wie beim AVR (Flash, RAM, I/O)) und die Hardware spricht automatisch den richtigen Speicher an. Die Möglichkeiten zur Offset-Adressierung, der Barrel-Shifter, Divsions-Einheit, die FPU (bei STM32F4), Interrupt-Modell etc. begünstigen ebenfalls die Erzeugung effizienteren Codes. Außerdem haben die STM32 einfach mehr &amp;quot;rohe Leistung&amp;quot;, d.h. mehr Flash/RAM-Speicher und höhere Taktfrequenzen.&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Folgerung&#039;&#039;&#039;: Die Programmierung in Hochsprachen ist &#039;&#039;&#039;bequemer als bei 8-Bittern&#039;&#039;&#039;, denn man muss sich einfach weniger Gedanken machen, ob der Compiler ein Programm nun effizent umsetzen kann (kann man natürlich trotzdem machen, um noch mehr Leistung &amp;quot;herauszuquetschen&amp;quot;, wenn man will).&lt;br /&gt;
&lt;br /&gt;
= Weitere Randbedingungen für die Entscheidung=&lt;br /&gt;
&lt;br /&gt;
Der wichtige Punkt, der oftmals auch vergessen wird: die Beschaffbarkeit. Wenn jemand einen Renesas M16C oder Fujitsu empfiehlt, dann sucht man erst mal und findet nur wenige vereinzelte die man privat kaufen kann.&lt;br /&gt;
&lt;br /&gt;
Oder auch die Unterstützung im Internet - ist bei einigen Exoten spärlich. Dieses Forum bietet die beste Hilfe für [[AVR]], PIC, [[STM32]] und [[MSP430]].&lt;br /&gt;
&lt;br /&gt;
Andere Prozessoren sind schon sehr alt, bzw. nicht mehr modern da deren Peripherie zum Teil doch recht eingeschränkte Funktionalität bietet. z.B. viele 8051 Typen oder PIC16. Die mögen für Mini-Anwenungen gut sein, aber wer will den schon gerne sich extra für eine Kleinanwendung mit einem kleinen µC auseinandersetzen, wenn er schon einen STM32 kennt, mit dem er alles machen kann (und sich bereits gute Funktionen geschrieben hat)?&lt;br /&gt;
&lt;br /&gt;
Daher mein Resümee: wer nicht gerade auf den Kopf gefallen ist, der kann getrost mit einem STM32 starten. Ein [http://www.st.com/web/en/catalog/tools/FM116/SC959/SS1532/PF252419?s_searchtype=keyword STM32F4DISCOVERY] Board kostet nur ca. 20 EUR - und mehr muss für den ersten Start nicht investiert werden - wenn es doch zu komplex sein sollte gibt es hier im Forum auch Hilfe oder man nimmt erst mal ein &amp;quot;Arduino&amp;quot;. Jedenfalls sind diese 20 EUR wirklich keine große Investition.&lt;br /&gt;
&lt;br /&gt;
= Weblinks, Foren, Communities, Tutorials =&lt;br /&gt;
* [[STM32]] Hauptartikel, [http://www.mikrocontroller.net/articles/STM32#Weblinks.2C_Foren.2C_Communities.2C_Tutorials dortige Linksammlung]&lt;br /&gt;
* [http://www.mikrocontroller.net/topic/319328 Diskussion zum Artikel]&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>Frank m35</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=STM32_f%C3%BCr_Einsteiger&amp;diff=80252</id>
		<title>STM32 für Einsteiger</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=STM32_f%C3%BCr_Einsteiger&amp;diff=80252"/>
		<updated>2013-12-30T11:25:51Z</updated>

		<summary type="html">&lt;p&gt;Frank m35: /* Dokumentation */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Immer wiederkehrend hier im Forum &amp;quot;Mit welchem Mikrocontroller anfangen?&amp;quot;. Es gibt eine große Auswahl und eben so viele Empfehlungen. In diesem Artikel soll zu erst geholfen werden ob ein STM32-Prozessor mit Cortex-M3/M4 Kern überhaupt der Richtige für den Start ist.&lt;br /&gt;
Nicht für jeden ist der STM32 zu empfehlen, denn die Anforderungen und Wünsche die man realisieren möchte, sowie die eigenen Fähigkeiten sind verschieden.&lt;br /&gt;
&lt;br /&gt;
Es werden meist die Prozessoren AVR, PIC, Arduino, MSP430 und STM32 empfohlen. Seltener auch 8051, LPC und M16C. Alle haben Vorzüge und ebenso auch Nachteile.&lt;br /&gt;
&lt;br /&gt;
= Eigene Fähigkeiten und Wünsche =&lt;br /&gt;
&lt;br /&gt;
Zu erst einmal die Randbedingungen, mit der man sich selbst zu erst einmal einschätzen sollte:&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|- bgcolor=&amp;quot;#d0d0ff&amp;quot;&lt;br /&gt;
! Fähigkeit || Empfehlung [[STM32]] || Empfehlung [[AVR]]/PIC || Empfehlung [[MSP430]] || Empfehlung Arduino&lt;br /&gt;
|-&lt;br /&gt;
| Bereits in der Schule Mikrocontroller programmiert || align=&amp;quot;center&amp;quot;|x || align=&amp;quot;center&amp;quot;|x || align=&amp;quot;center&amp;quot;|x || align=&amp;quot;center&amp;quot;|-&lt;br /&gt;
|-&lt;br /&gt;
| Neueinsteiger, kaum Elektronikkenntnisse, noch nie programmiert || align=&amp;quot;center&amp;quot;|O || align=&amp;quot;center&amp;quot;|x || align=&amp;quot;center&amp;quot;|- || align=&amp;quot;center&amp;quot;|x&lt;br /&gt;
|-&lt;br /&gt;
| Wunsch ist SD-Card oder Grafik-Display || align=&amp;quot;center&amp;quot;|x || align=&amp;quot;center&amp;quot;|evt. Speicher zu klein || align=&amp;quot;center&amp;quot;|evt. Speicher zu klein || align=&amp;quot;center&amp;quot;|evt. Speicher zu klein&lt;br /&gt;
|-&lt;br /&gt;
| Wunsch ist TCP/IP Netzwerk oder Kamera|| align=&amp;quot;center&amp;quot;|x || align=&amp;quot;center&amp;quot;|- || align=&amp;quot;center&amp;quot;|- || align=&amp;quot;center&amp;quot;|-&lt;br /&gt;
|-&lt;br /&gt;
| Möchte die Erkenntnisse beruflich nutzen|| align=&amp;quot;center&amp;quot;|x || align=&amp;quot;center&amp;quot;|O || align=&amp;quot;center&amp;quot;|x || align=&amp;quot;center&amp;quot;|-&lt;br /&gt;
|-&lt;br /&gt;
| Extrem stromsparende Mini-Anwendung|| align=&amp;quot;center&amp;quot;|O || align=&amp;quot;center&amp;quot;|O || align=&amp;quot;center&amp;quot;|x || align=&amp;quot;center&amp;quot;|-&lt;br /&gt;
|-&lt;br /&gt;
| Experimentieren mit Multithreading, RTOS, Schedulern || align=&amp;quot;center&amp;quot;|x || align=&amp;quot;center&amp;quot;|- || align=&amp;quot;center&amp;quot;|- || align=&amp;quot;center&amp;quot;|-&lt;br /&gt;
|-&lt;br /&gt;
| Große, komplex strukturierte Programme || align=&amp;quot;center&amp;quot;|x || align=&amp;quot;center&amp;quot;|- || align=&amp;quot;center&amp;quot;|O || align=&amp;quot;center&amp;quot;|-&lt;br /&gt;
|-&lt;br /&gt;
| Viel I/O, PWM, komplexes Timing || align=&amp;quot;center&amp;quot;|x || align=&amp;quot;center&amp;quot;|O || align=&amp;quot;center&amp;quot;|? || align=&amp;quot;center&amp;quot;|-&lt;br /&gt;
|}&lt;br /&gt;
* x = ja&lt;br /&gt;
* O = Teilweise, Einschränkungen&lt;br /&gt;
* - = nicht empfohlen&lt;br /&gt;
* ? = Bitte ergänzen&lt;br /&gt;
&lt;br /&gt;
Nur um nicht zu verwirren, auch wenn Teile &amp;quot;nicht empfohlen&amp;quot; sind, heißt dass nicht dass es mit dem Prozessor nicht geht, vielmehr dass es mehr Aufwand ist das zu realisieren oder mehr Einschränkungen hat.&lt;br /&gt;
&lt;br /&gt;
= Unwichtige Randbedingungen =&lt;br /&gt;
&lt;br /&gt;
Oftmals werden fälschlicherweise Argumente für oder gegen eine µC-Familie ausgesprochen, die in der Praxis &#039;&#039;&#039;zum Einstieg&#039;&#039;&#039; (bei konkreten Anwendungen kann das anders aussehen) eher unwichtig sind.&lt;br /&gt;
&lt;br /&gt;
* Spannungsversorgung 3,3V / 5V&lt;br /&gt;
* 8 (z.B. [[AVR]]), 16 (z.B. [[MSP430]]) oder 32 (z.B. [[STM32]]) Bit&lt;br /&gt;
* Interrupt System mit mehr oder weniger Features&lt;br /&gt;
* Programmiersprache (Assembler, Basic, C, C++, Pascal)&lt;br /&gt;
* Assembler verstehen (Sollte nur theoretisch verstanden werden, ein Programm sollte in einer Hochsprache geschrieben sein)&lt;br /&gt;
* DIL Gehäuse - steckbretttauglich (STM32-Prozessoren gibt es auch fertig gelötet auf einem steckbretttauglichen Board)&lt;br /&gt;
* Programmieradapter&lt;br /&gt;
* zu 90% reicht doch ein kleiner Prozessor ([[AVR]]/PIC) - und für die restlichen kann man immer noch einen großen nehmen. Warum also nicht gleich einen großen nehmen?&lt;br /&gt;
&lt;br /&gt;
= Kosten =&lt;br /&gt;
&lt;br /&gt;
Grobe Abschätzung was das alles denn kosten wird. Hier sind nur einige Beispiele gezeigt.&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|- bgcolor=&amp;quot;#d0d0ff&amp;quot;&lt;br /&gt;
! Board || [[STM32]] || [[AVR]] || PIC18/24/32 || [[MSP430]] || Arduino&lt;br /&gt;
|-&lt;br /&gt;
| Demo-Board || align=&amp;quot;center&amp;quot;|[http://www.st.com/web/en/catalog/tools/FM116/SC959/SS1532/PF252419] 9..20€ (incl. Programmieradapter und Debugger) || align=&amp;quot;center&amp;quot;|15€ || align=&amp;quot;center&amp;quot;| [http://www.microchipdirect.com/ProductDetails.aspx?Catalog=BuyMicrochip&amp;amp;Category=Starter%20Kits&amp;amp;mid=1&amp;amp;lmid=610 durchschnittlich 18€ .. 50€] || align=&amp;quot;center&amp;quot;|?? || align=&amp;quot;center&amp;quot;|20€&lt;br /&gt;
|-&lt;br /&gt;
| Steckbrettaugliches Board || align=&amp;quot;center&amp;quot;| s.o. oder [http://re.reworld.eu/de/produkte/s64dil-405/index.htm S64DIL-405] 30€ || align=&amp;quot;center&amp;quot;|2-5€ als einzelner IC || align=&amp;quot;center&amp;quot;|2-5€ als einzelner IC || align=&amp;quot;center&amp;quot;|?? || align=&amp;quot;center&amp;quot;|??&lt;br /&gt;
|-&lt;br /&gt;
| Programmieradapter mit Debugger || align=&amp;quot;center&amp;quot;| s.o. oder z.B [http://www.segger.com/j-link-edu.html Segger J-LINK EDU] 50€ (sehr schnell und unterstützt viele Prozessoren) || align=&amp;quot;center&amp;quot;|?? || align=&amp;quot;center&amp;quot;|PICkit 3 30€ [http://www.microchipdirect.com/ProductSearch.aspx?keywords=PG164130] || align=&amp;quot;center&amp;quot;|?? || align=&amp;quot;center&amp;quot;|20€ (Man muss DebugWire aktivieren)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Das Demo-Board sollte ein Board sein, nicht zu teuer, um die ersten Erfahrungen zu sammeln. Wenn einem der Prozessor gefällt, so kann man später immer noch mit einem zweiten Demo-Board, z.B. mit Display aufrüsten.&lt;br /&gt;
&lt;br /&gt;
Wenn man gerne mit einem Steckbrett sich die Schaltung zusammen stecken möchte, so kann man entweder die benötigten Drähte am Demo-Board anlöten oder bei z.B. [[AVR]]/[[PIC]] Prozessoren gibt es Ausführungen im DIL Gehäuse, die direkt steckbar sind.&lt;br /&gt;
&lt;br /&gt;
Ein Programmieradapter sollte unbedingt auch einen Debugger beinhalten. Denn für den Start ist es ungemein hilfreich zu sehen was im Prozessor gerade geschieht. Die JTAG-Adapter für einen [[STM32]] Prozessor sind alle Debugger-Tauglich. Für einen [[AVR]] oder [[PIC]] Prozessor gibt es auch oft reine Programmer (oft Selbstbau-Lösungen über die serielle oder parallele Schnittstelle) welche den Mikrocontroller nur beschreiben können. Sinvoller sind hingegen Debugger (bspw. PIC Kit 3 [http://www.microchipdirect.com/ProductSearch.aspx?keywords=PG164130] kompatibel zu allen PIC Mikrocontrollern), die die Ausführung eines Mikrocontrollers anhalten können um die aktuelle Position im Programmcode, Variableninhalt, Register, ... auszulesen bzw. zur Laufzeit zu ändern.&lt;br /&gt;
&lt;br /&gt;
Der für den [[STM32]] empfohlene Segger J-LINK EDU ist zwar nicht der günstigste (z.B. auf einem STM32F4DISCOVERY Borad ist auch einer drauf den man für andere STM32 nutzen kann) aber eines der besten, mit sehr guten Software-Tools und nutzbar für alle Prozessoren mit ARM-Kern (ARM7/9/11/... Cortex-Mx). Niemals am Werkzeug sparen und man hat viel mehr Freude bei der Arbeit.&lt;br /&gt;
&lt;br /&gt;
Der &amp;quot;Arduino&amp;quot; ist kein eigenständiger Prozessor, sondern ein fertiges Board mit einer &amp;quot;Arduino&amp;quot; Programmierumgebung (und einem AVR Prozessor), extra geschaffen für Einsteiger. Allerdings ist da der Lerneffekt viel geringer da man den Prozessor mit der Arduino-Software programmiert und nicht direkt die Register.&lt;br /&gt;
&lt;br /&gt;
Ein [[PIC16]] ist ein älterer 8-Bit Mikrocontroller, der durch die [[PIC18]] Reihe abgelöst wurde. Werden komplexere Anforderungen in Zukunft an den Mikrocontroller gestellt (Audio, Grafik), so sollte zu den moderneren [[PIC24]] bzw. [[dsPIC]] (16-Bit) oder gar zu [[PIC32]] (32-Bit MIPS Prozessor) gegriffen werden, wobei letzterer von der Performance vergleichbar mit den STM32 ARM-basierten Mikrocontrollern ist.&lt;br /&gt;
&lt;br /&gt;
= Programmierumgebungen=&lt;br /&gt;
&lt;br /&gt;
Bei den Programmierumgebungen gibt es zu allen Prozessorfamilien kostenlose und Leistungsfähige Software&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|- bgcolor=&amp;quot;#d0d0ff&amp;quot;&lt;br /&gt;
! [[STM32]] || [[AVR]] || PIC || [[MSP430]] || Arduino&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot;|[http://www.coocox.org/CooCox_CoIDE.htm CooCox] || align=&amp;quot;center&amp;quot;|Atmel-Studio || align=&amp;quot;center&amp;quot;|MPLab || align=&amp;quot;center&amp;quot;|?? || align=&amp;quot;center&amp;quot;|arduino 1.0.5&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
natürlich gibt es noch viele weitere (für STM32 siehe [[STM32#Programmierung]]), es sollte jedoch nur die einfachsten kostenlose (und ohne Codebegrenzung) für den ersten Einstieg gezeigt werden.&lt;br /&gt;
&lt;br /&gt;
= Dokumentation=&lt;br /&gt;
&lt;br /&gt;
Bevor man sich für einen Prozessor entscheidet sollte man unbedingt deren Dokumentation mal zumindest überfliegen und auch deren Errata&#039;s lesen. Nicht dass man eine Anwendung erstellen möchte und stellt hinterher fest, dass genau dieser Teil so buggy ist das er nicht genutzt werden kann.&lt;br /&gt;
&lt;br /&gt;
Beim [[STM32]] hat die Dokumentation doch recht viele Seiten, viel mehr als bei einem [[AVR]] oder PIC. Das liegt hauptsächlich daran, dass der [[STM32]] viel mehr Features und Möglichkeiten bietet. Dabei ist vieles eher knapp beschrieben, man muss mehr suchen als z.B. bei den AVR-Dokus, um die gewünschten Informationen zu finden. Außerdem gibt es durchaus einige Unklarheiten und Fehler/Widersprüche. Schlussendlich ist es Geschmackssache mit welcher Doku von welchem Hersteller man sich besser zurecht findet.&lt;br /&gt;
&lt;br /&gt;
Bei den PICs gibt es zu jedem Mikrocontroller ein Datenblatt das die wichtigsten Informationen für den alltäglichen Gebrauch enthält. Da bestimmte Peripherie (bspw. I2C, SPI, ... ) aber sehr komplex ist und innerhalb einer Familie (PIC16/18/24/32) sich identisch verhält, gibt es zu jeder Familie die sogenannten Family-Datasheets, welche alle Module im Detail beschreiben.&lt;br /&gt;
&lt;br /&gt;
Parallel zur Dokumentation sollte man sich auch die Demo-Beispiele der Hersteller anschauen, dann wird vieles gleich verständlicher.&lt;br /&gt;
&lt;br /&gt;
Eine Übersicht über die Funktionen gibt es im Artikel: [[STM32]]&lt;br /&gt;
&lt;br /&gt;
= Die Arbeit mit dem STM32=&lt;br /&gt;
&lt;br /&gt;
Zu erst einmal SOOO groß sind die Unterschiede zwischen den einzelnen Prozessoren nicht. Alle haben Ein-/Ausgänge und um mittels einem Port-Pin eine LED ansteuern zu können muss bei jedem Prozessor der Pin erst einmal parametriert werden, egal ob das jetzt ein STM32 oder ein AVR oder ein MSP430 ist. Nur hat man bei einem STM32 doch einige Funktionen mehr, z.B. zuschaltbarer Pull-Up oder Pull-Down Widerstand und spezielle Setz-Rücksetzregister, die andere Prozessoren nicht haben, jedoch das programmieren vereinfachen.&lt;br /&gt;
Der Haupt-Unterschied zu den anderen Prozessoren ist, dass der [[STM32]] so viele Peripherie-Module beherbergt, dass man die einzeln immer mit einem Clock aktivieren muss, denn damit lässt sich viel Strom sparen.&lt;br /&gt;
&lt;br /&gt;
Und mal ganz ehrlich die Diskussion welcher µc einfacher zu konfigurieren ist, ist doch absoluter Unsinn. Der Weg ist immer der Gleiche:&lt;br /&gt;
*1. Blick ins Datenblatt welche Register für diese Funktion benötigt werden.&lt;br /&gt;
*2. Werte ermitteln die in die Register eingetragen werden.&lt;br /&gt;
*3. Werte ins Register schreiben. Da machte es GAR KEINEN UNTERSCHIED ob es ein [[AVR]], 8051/2, ARM,...... ist.&lt;br /&gt;
&lt;br /&gt;
Stimmt schon es gibt Unterschiede. Die Register haben anderen Namen, andere Adressen, andere Bitbedeutungen,...&lt;br /&gt;
Aber es steht doch alles im Datenblatt. Und ob ich jetzt einen [[AVR]] oder einen ARM das erste mal vor mir liegen hab. Ich brauch in allen Fällen die oben beschriebenen Schritte.&lt;br /&gt;
&lt;br /&gt;
Das Interruptsystem ist bei einem STM32 zusätzlich priorisiert, damit kann man festlegen welcher Interrupt vorrangig bearbeitet wird. Die Prioritätenvergabe ist auch kein Hexenwerk.&lt;br /&gt;
&lt;br /&gt;
Zu allen Prozessoren liefern die jeweiligen Hersteller umfangreiche Demo-Codes und Libraries mit. Meist sind alle in C geschrieben, daher sollte auch die Programmiersprache C verwendet werden. Vor allem auch wenn man berufliche Absichten verfolgt.&lt;br /&gt;
&lt;br /&gt;
Und wenn man einen STM32 kann, dann ist ein Umstieg auf einen LPC17xx (NXP) oder andere Hersteller überhaupt kein Problem, denn die bieten ebenfalls Prozessoren mit Cortex-M3 Kern und man kann diese mit der gleichen Programmierumgebung programmieren. Somit ist man nicht zwingend Herstellerabhängig.&lt;br /&gt;
&lt;br /&gt;
Mit einem STM32 kann man als Hobby-Baster und Professionell nahezu alle Anwendungen realisieren. Der hat genügend RAM und FLASH Speicher und auch genügen Geschwindigkeit. Viele Gehäuse-Varianten um kleine bis hin zu größere Geräte zu erstellen. Viele Schnittstellen, sind im Artikel [[STM32]] beschrieben.&lt;br /&gt;
&lt;br /&gt;
Der einzige Nachteil beim STM32: man muss etwas mehr lesen, da eine Peripherie doch viel mehr Funktionalität hat. Ansonsten kenne ich nicht wirklich einen Grund warum man als Neueinsteiger keinen STM32 nehmen sollte.&lt;br /&gt;
&lt;br /&gt;
= Programmiersprachen =&lt;br /&gt;
* Wie bei vielen anderen Controllern wird beim STM32 auch hauptsächlich C und C++ verwendet. Kennen sollte man die Programmiersprache C schon, wenn man davon noch keine Ahnung hat dann sollte man erst mal mittels einem Tutorial auf einem PC ein Konsoleprogramm schreiben, sodass man es einigermaßen kennen lernt. Hier im Forum gibt es ebenfalls Artikel dazu. Zielt man auf die (spätere) Anwendung in der Industrie, sollte aufgrund der Verbreitung auf jeden Fall C (oder C++) gewählt werden; außerdem sind die meisten verfügbaren Libraries in C geschrieben.&lt;br /&gt;
* Assembler sollte man nur grob verstehen, Details wie ein Befehl arbeitet ist unwichtig. Selbst wenn man die Zyklen für einen Funktionsaufruf wissen will, so bietet der STM32 (Cortex-M3) einen Cycle-Counter den man auslesen kann; durch die komplexere Pipeline und Cache-Effekte sind die Laufzeiten allerdings nicht genau vorhersehbar. Wird zyklengenause Timing benötigt, sollten Timer verwendet werden - davon hat der STM32 genug.&lt;br /&gt;
&lt;br /&gt;
Der 32bit-Adressraum, der RAM, Flash, I/O-Register vereinheitlicht ansprechen kann (im Gegensatz zu z.B. AVR) ist ideal für eine Verwendung durch Hochsprachen; bei Pointern muss keine zusätzliche Information verwaltet werden, in welche Art Speicher sie zeigen. Die Adresse gibt dies eindeutig an (es gibt nur &#039;&#039;&#039;eine&#039;&#039;&#039; Adresse 42, und nicht 3 wie beim AVR (Flash, RAM, I/O)) und die Hardware spricht automatisch den richtigen Speicher an. Die Möglichkeiten zur Offset-Adressierung, der Barrel-Shifter, Divsions-Einheit, die FPU (bei STM32F4), Interrupt-Modell etc. begünstigen ebenfalls die Erzeugung effizienteren Codes. Außerdem haben die STM32 einfach mehr &amp;quot;rohe Leistung&amp;quot;, d.h. mehr Flash/RAM-Speicher und höhere Taktfrequenzen.&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Folgerung&#039;&#039;&#039;: Die Programmierung in Hochsprachen ist &#039;&#039;&#039;bequemer als bei 8-Bittern&#039;&#039;&#039;, denn man muss sich einfach weniger Gedanken machen, ob der Compiler ein Programm nun effizent umsetzen kann (kann man natürlich trotzdem machen, um noch mehr Leistung &amp;quot;herauszuquetschen&amp;quot;, wenn man will).&lt;br /&gt;
&lt;br /&gt;
= Weitere Randbedingungen für die Entscheidung=&lt;br /&gt;
&lt;br /&gt;
Der wichtige Punkt, der oftmals auch vergessen wird: die Beschaffbarkeit. Wenn jemand einen Renesas M16C oder Fujitsu empfiehlt, dann sucht man erst mal und findet nur wenige vereinzelte die man privat kaufen kann.&lt;br /&gt;
&lt;br /&gt;
Oder auch die Unterstützung im Internet - ist bei einigen Exoten spärlich. Dieses Forum bietet die beste Hilfe für [[AVR]], PIC, [[STM32]] und [[MSP430]].&lt;br /&gt;
&lt;br /&gt;
Andere Prozessoren sind schon sehr alt, bzw. nicht mehr modern da deren Peripherie zum Teil doch recht eingeschränkte Funktionalität bietet. z.B. viele 8051 Typen oder PIC16. Die mögen für Mini-Anwenungen gut sein, aber wer will den schon gerne sich extra für eine Kleinanwendung mit einem kleinen µC auseinandersetzen, wenn er schon einen STM32 kennt, mit dem er alles machen kann (und sich bereits gute Funktionen geschrieben hat)?&lt;br /&gt;
&lt;br /&gt;
Daher mein Resümee: wer nicht gerade auf den Kopf gefallen ist, der kann getrost mit einem STM32 starten. Ein [http://www.st.com/web/en/catalog/tools/FM116/SC959/SS1532/PF252419?s_searchtype=keyword STM32F4DISCOVERY] Board kostet nur ca. 20 EUR - und mehr muss für den ersten Start nicht investiert werden - wenn es doch zu komplex sein sollte gibt es hier im Forum auch Hilfe oder man nimmt erst mal ein &amp;quot;Arduino&amp;quot;. Jedenfalls sind diese 20 EUR wirklich keine große Investition.&lt;br /&gt;
&lt;br /&gt;
= Weblinks, Foren, Communities, Tutorials =&lt;br /&gt;
* [[STM32]] Hauptartikel, [http://www.mikrocontroller.net/articles/STM32#Weblinks.2C_Foren.2C_Communities.2C_Tutorials dortige Linksammlung]&lt;br /&gt;
* [http://www.mikrocontroller.net/topic/319328 Diskussion zum Artikel]&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>Frank m35</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=STM32_f%C3%BCr_Einsteiger&amp;diff=80251</id>
		<title>STM32 für Einsteiger</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=STM32_f%C3%BCr_Einsteiger&amp;diff=80251"/>
		<updated>2013-12-30T11:18:06Z</updated>

		<summary type="html">&lt;p&gt;Frank m35: /* Kosten */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Immer wiederkehrend hier im Forum &amp;quot;Mit welchem Mikrocontroller anfangen?&amp;quot;. Es gibt eine große Auswahl und eben so viele Empfehlungen. In diesem Artikel soll zu erst geholfen werden ob ein STM32-Prozessor mit Cortex-M3/M4 Kern überhaupt der Richtige für den Start ist.&lt;br /&gt;
Nicht für jeden ist der STM32 zu empfehlen, denn die Anforderungen und Wünsche die man realisieren möchte, sowie die eigenen Fähigkeiten sind verschieden.&lt;br /&gt;
&lt;br /&gt;
Es werden meist die Prozessoren AVR, PIC, Arduino, MSP430 und STM32 empfohlen. Seltener auch 8051, LPC und M16C. Alle haben Vorzüge und ebenso auch Nachteile.&lt;br /&gt;
&lt;br /&gt;
= Eigene Fähigkeiten und Wünsche =&lt;br /&gt;
&lt;br /&gt;
Zu erst einmal die Randbedingungen, mit der man sich selbst zu erst einmal einschätzen sollte:&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|- bgcolor=&amp;quot;#d0d0ff&amp;quot;&lt;br /&gt;
! Fähigkeit || Empfehlung [[STM32]] || Empfehlung [[AVR]]/PIC || Empfehlung [[MSP430]] || Empfehlung Arduino&lt;br /&gt;
|-&lt;br /&gt;
| Bereits in der Schule Mikrocontroller programmiert || align=&amp;quot;center&amp;quot;|x || align=&amp;quot;center&amp;quot;|x || align=&amp;quot;center&amp;quot;|x || align=&amp;quot;center&amp;quot;|-&lt;br /&gt;
|-&lt;br /&gt;
| Neueinsteiger, kaum Elektronikkenntnisse, noch nie programmiert || align=&amp;quot;center&amp;quot;|O || align=&amp;quot;center&amp;quot;|x || align=&amp;quot;center&amp;quot;|- || align=&amp;quot;center&amp;quot;|x&lt;br /&gt;
|-&lt;br /&gt;
| Wunsch ist SD-Card oder Grafik-Display || align=&amp;quot;center&amp;quot;|x || align=&amp;quot;center&amp;quot;|evt. Speicher zu klein || align=&amp;quot;center&amp;quot;|evt. Speicher zu klein || align=&amp;quot;center&amp;quot;|evt. Speicher zu klein&lt;br /&gt;
|-&lt;br /&gt;
| Wunsch ist TCP/IP Netzwerk oder Kamera|| align=&amp;quot;center&amp;quot;|x || align=&amp;quot;center&amp;quot;|- || align=&amp;quot;center&amp;quot;|- || align=&amp;quot;center&amp;quot;|-&lt;br /&gt;
|-&lt;br /&gt;
| Möchte die Erkenntnisse beruflich nutzen|| align=&amp;quot;center&amp;quot;|x || align=&amp;quot;center&amp;quot;|O || align=&amp;quot;center&amp;quot;|x || align=&amp;quot;center&amp;quot;|-&lt;br /&gt;
|-&lt;br /&gt;
| Extrem stromsparende Mini-Anwendung|| align=&amp;quot;center&amp;quot;|O || align=&amp;quot;center&amp;quot;|O || align=&amp;quot;center&amp;quot;|x || align=&amp;quot;center&amp;quot;|-&lt;br /&gt;
|-&lt;br /&gt;
| Experimentieren mit Multithreading, RTOS, Schedulern || align=&amp;quot;center&amp;quot;|x || align=&amp;quot;center&amp;quot;|- || align=&amp;quot;center&amp;quot;|- || align=&amp;quot;center&amp;quot;|-&lt;br /&gt;
|-&lt;br /&gt;
| Große, komplex strukturierte Programme || align=&amp;quot;center&amp;quot;|x || align=&amp;quot;center&amp;quot;|- || align=&amp;quot;center&amp;quot;|O || align=&amp;quot;center&amp;quot;|-&lt;br /&gt;
|-&lt;br /&gt;
| Viel I/O, PWM, komplexes Timing || align=&amp;quot;center&amp;quot;|x || align=&amp;quot;center&amp;quot;|O || align=&amp;quot;center&amp;quot;|? || align=&amp;quot;center&amp;quot;|-&lt;br /&gt;
|}&lt;br /&gt;
* x = ja&lt;br /&gt;
* O = Teilweise, Einschränkungen&lt;br /&gt;
* - = nicht empfohlen&lt;br /&gt;
* ? = Bitte ergänzen&lt;br /&gt;
&lt;br /&gt;
Nur um nicht zu verwirren, auch wenn Teile &amp;quot;nicht empfohlen&amp;quot; sind, heißt dass nicht dass es mit dem Prozessor nicht geht, vielmehr dass es mehr Aufwand ist das zu realisieren oder mehr Einschränkungen hat.&lt;br /&gt;
&lt;br /&gt;
= Unwichtige Randbedingungen =&lt;br /&gt;
&lt;br /&gt;
Oftmals werden fälschlicherweise Argumente für oder gegen eine µC-Familie ausgesprochen, die in der Praxis &#039;&#039;&#039;zum Einstieg&#039;&#039;&#039; (bei konkreten Anwendungen kann das anders aussehen) eher unwichtig sind.&lt;br /&gt;
&lt;br /&gt;
* Spannungsversorgung 3,3V / 5V&lt;br /&gt;
* 8 (z.B. [[AVR]]), 16 (z.B. [[MSP430]]) oder 32 (z.B. [[STM32]]) Bit&lt;br /&gt;
* Interrupt System mit mehr oder weniger Features&lt;br /&gt;
* Programmiersprache (Assembler, Basic, C, C++, Pascal)&lt;br /&gt;
* Assembler verstehen (Sollte nur theoretisch verstanden werden, ein Programm sollte in einer Hochsprache geschrieben sein)&lt;br /&gt;
* DIL Gehäuse - steckbretttauglich (STM32-Prozessoren gibt es auch fertig gelötet auf einem steckbretttauglichen Board)&lt;br /&gt;
* Programmieradapter&lt;br /&gt;
* zu 90% reicht doch ein kleiner Prozessor ([[AVR]]/PIC) - und für die restlichen kann man immer noch einen großen nehmen. Warum also nicht gleich einen großen nehmen?&lt;br /&gt;
&lt;br /&gt;
= Kosten =&lt;br /&gt;
&lt;br /&gt;
Grobe Abschätzung was das alles denn kosten wird. Hier sind nur einige Beispiele gezeigt.&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|- bgcolor=&amp;quot;#d0d0ff&amp;quot;&lt;br /&gt;
! Board || [[STM32]] || [[AVR]] || PIC18/24/32 || [[MSP430]] || Arduino&lt;br /&gt;
|-&lt;br /&gt;
| Demo-Board || align=&amp;quot;center&amp;quot;|[http://www.st.com/web/en/catalog/tools/FM116/SC959/SS1532/PF252419] 9..20€ (incl. Programmieradapter und Debugger) || align=&amp;quot;center&amp;quot;|15€ || align=&amp;quot;center&amp;quot;| [http://www.microchipdirect.com/ProductDetails.aspx?Catalog=BuyMicrochip&amp;amp;Category=Starter%20Kits&amp;amp;mid=1&amp;amp;lmid=610 durchschnittlich 18€ .. 50€] || align=&amp;quot;center&amp;quot;|?? || align=&amp;quot;center&amp;quot;|20€&lt;br /&gt;
|-&lt;br /&gt;
| Steckbrettaugliches Board || align=&amp;quot;center&amp;quot;| s.o. oder [http://re.reworld.eu/de/produkte/s64dil-405/index.htm S64DIL-405] 30€ || align=&amp;quot;center&amp;quot;|2-5€ als einzelner IC || align=&amp;quot;center&amp;quot;|2-5€ als einzelner IC || align=&amp;quot;center&amp;quot;|?? || align=&amp;quot;center&amp;quot;|??&lt;br /&gt;
|-&lt;br /&gt;
| Programmieradapter mit Debugger || align=&amp;quot;center&amp;quot;| s.o. oder z.B [http://www.segger.com/j-link-edu.html Segger J-LINK EDU] 50€ (sehr schnell und unterstützt viele Prozessoren) || align=&amp;quot;center&amp;quot;|?? || align=&amp;quot;center&amp;quot;|PICkit 3 30€ [http://www.microchipdirect.com/ProductSearch.aspx?keywords=PG164130] || align=&amp;quot;center&amp;quot;|?? || align=&amp;quot;center&amp;quot;|20€ (Man muss DebugWire aktivieren)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Das Demo-Board sollte ein Board sein, nicht zu teuer, um die ersten Erfahrungen zu sammeln. Wenn einem der Prozessor gefällt, so kann man später immer noch mit einem zweiten Demo-Board, z.B. mit Display aufrüsten.&lt;br /&gt;
&lt;br /&gt;
Wenn man gerne mit einem Steckbrett sich die Schaltung zusammen stecken möchte, so kann man entweder die benötigten Drähte am Demo-Board anlöten oder bei z.B. [[AVR]]/[[PIC]] Prozessoren gibt es Ausführungen im DIL Gehäuse, die direkt steckbar sind.&lt;br /&gt;
&lt;br /&gt;
Ein Programmieradapter sollte unbedingt auch einen Debugger beinhalten. Denn für den Start ist es ungemein hilfreich zu sehen was im Prozessor gerade geschieht. Die JTAG-Adapter für einen [[STM32]] Prozessor sind alle Debugger-Tauglich. Für einen [[AVR]] oder [[PIC]] Prozessor gibt es auch oft reine Programmer (oft Selbstbau-Lösungen über die serielle oder parallele Schnittstelle) welche den Mikrocontroller nur beschreiben können. Sinvoller sind hingegen Debugger (bspw. PIC Kit 3 [http://www.microchipdirect.com/ProductSearch.aspx?keywords=PG164130] kompatibel zu allen PIC Mikrocontrollern), die die Ausführung eines Mikrocontrollers anhalten können um die aktuelle Position im Programmcode, Variableninhalt, Register, ... auszulesen bzw. zur Laufzeit zu ändern.&lt;br /&gt;
&lt;br /&gt;
Der für den [[STM32]] empfohlene Segger J-LINK EDU ist zwar nicht der günstigste (z.B. auf einem STM32F4DISCOVERY Borad ist auch einer drauf den man für andere STM32 nutzen kann) aber eines der besten, mit sehr guten Software-Tools und nutzbar für alle Prozessoren mit ARM-Kern (ARM7/9/11/... Cortex-Mx). Niemals am Werkzeug sparen und man hat viel mehr Freude bei der Arbeit.&lt;br /&gt;
&lt;br /&gt;
Der &amp;quot;Arduino&amp;quot; ist kein eigenständiger Prozessor, sondern ein fertiges Board mit einer &amp;quot;Arduino&amp;quot; Programmierumgebung (und einem AVR Prozessor), extra geschaffen für Einsteiger. Allerdings ist da der Lerneffekt viel geringer da man den Prozessor mit der Arduino-Software programmiert und nicht direkt die Register.&lt;br /&gt;
&lt;br /&gt;
Ein [[PIC16]] ist ein älterer 8-Bit Mikrocontroller, der durch die [[PIC18]] Reihe abgelöst wurde. Werden komplexere Anforderungen in Zukunft an den Mikrocontroller gestellt (Audio, Grafik), so sollte zu den moderneren [[PIC24]] bzw. [[dsPIC]] (16-Bit) oder gar zu [[PIC32]] (32-Bit MIPS Prozessor) gegriffen werden, wobei letzterer von der Performance vergleichbar mit den STM32 ARM-basierten Mikrocontrollern ist.&lt;br /&gt;
&lt;br /&gt;
= Programmierumgebungen=&lt;br /&gt;
&lt;br /&gt;
Bei den Programmierumgebungen gibt es zu allen Prozessorfamilien kostenlose und Leistungsfähige Software&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|- bgcolor=&amp;quot;#d0d0ff&amp;quot;&lt;br /&gt;
! [[STM32]] || [[AVR]] || PIC || [[MSP430]] || Arduino&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot;|[http://www.coocox.org/CooCox_CoIDE.htm CooCox] || align=&amp;quot;center&amp;quot;|Atmel-Studio || align=&amp;quot;center&amp;quot;|MPLab || align=&amp;quot;center&amp;quot;|?? || align=&amp;quot;center&amp;quot;|arduino 1.0.5&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
natürlich gibt es noch viele weitere (für STM32 siehe [[STM32#Programmierung]]), es sollte jedoch nur die einfachsten kostenlose (und ohne Codebegrenzung) für den ersten Einstieg gezeigt werden.&lt;br /&gt;
&lt;br /&gt;
= Dokumentation=&lt;br /&gt;
&lt;br /&gt;
Bevor man sich für einen Prozessor entscheidet sollte man unbedingt deren Dokumentation mal zumindest überfliegen und auch deren Errata&#039;s lesen. Nicht dass man eine Anwendung erstellen möchte und stellt hinterher fest, dass genau dieser Teil so buggy ist das er nicht genutzt werden kann.&lt;br /&gt;
&lt;br /&gt;
Beim [[STM32]] hat die Dokumentation doch recht viele Seiten, viel mehr als bei einem [[AVR]] oder PIC. Das liegt hauptsächlich daran, dass der [[STM32]] viel mehr Features und Möglichkeiten bietet. Dabei ist vieles eher knapp beschrieben, man muss mehr suchen als z.B. bei den AVR-Dokus, um die gewünschten Informationen zu finden. Außerdem gibt es durchaus einige Unklarheiten und Fehler/Widersprüche. Schlussendlich ist es Geschmackssache mit welcher Doku von welchem Hersteller man sich besser zurecht findet. Aber Vorsicht: bei den PIC&#039;s gibt es viel mehr Dokus, verschiedenen Family-Datasheets und noch zum jeweiligen Prozessor, die man jeweils alle beachten muss!&lt;br /&gt;
&lt;br /&gt;
Parallel zur Dokumentation sollte man sich auch die Demo-Beispiele der Hersteller anschauen, dann wird vieles gleich verständlicher.&lt;br /&gt;
&lt;br /&gt;
Eine Übersicht über die Funktionen gibt es im Artikel: [[STM32]]&lt;br /&gt;
&lt;br /&gt;
= Die Arbeit mit dem STM32=&lt;br /&gt;
&lt;br /&gt;
Zu erst einmal SOOO groß sind die Unterschiede zwischen den einzelnen Prozessoren nicht. Alle haben Ein-/Ausgänge und um mittels einem Port-Pin eine LED ansteuern zu können muss bei jedem Prozessor der Pin erst einmal parametriert werden, egal ob das jetzt ein STM32 oder ein AVR oder ein MSP430 ist. Nur hat man bei einem STM32 doch einige Funktionen mehr, z.B. zuschaltbarer Pull-Up oder Pull-Down Widerstand und spezielle Setz-Rücksetzregister, die andere Prozessoren nicht haben, jedoch das programmieren vereinfachen.&lt;br /&gt;
Der Haupt-Unterschied zu den anderen Prozessoren ist, dass der [[STM32]] so viele Peripherie-Module beherbergt, dass man die einzeln immer mit einem Clock aktivieren muss, denn damit lässt sich viel Strom sparen.&lt;br /&gt;
&lt;br /&gt;
Und mal ganz ehrlich die Diskussion welcher µc einfacher zu konfigurieren ist, ist doch absoluter Unsinn. Der Weg ist immer der Gleiche:&lt;br /&gt;
*1. Blick ins Datenblatt welche Register für diese Funktion benötigt werden.&lt;br /&gt;
*2. Werte ermitteln die in die Register eingetragen werden.&lt;br /&gt;
*3. Werte ins Register schreiben. Da machte es GAR KEINEN UNTERSCHIED ob es ein [[AVR]], 8051/2, ARM,...... ist.&lt;br /&gt;
&lt;br /&gt;
Stimmt schon es gibt Unterschiede. Die Register haben anderen Namen, andere Adressen, andere Bitbedeutungen,...&lt;br /&gt;
Aber es steht doch alles im Datenblatt. Und ob ich jetzt einen [[AVR]] oder einen ARM das erste mal vor mir liegen hab. Ich brauch in allen Fällen die oben beschriebenen Schritte.&lt;br /&gt;
&lt;br /&gt;
Das Interruptsystem ist bei einem STM32 zusätzlich priorisiert, damit kann man festlegen welcher Interrupt vorrangig bearbeitet wird. Die Prioritätenvergabe ist auch kein Hexenwerk.&lt;br /&gt;
&lt;br /&gt;
Zu allen Prozessoren liefern die jeweiligen Hersteller umfangreiche Demo-Codes und Libraries mit. Meist sind alle in C geschrieben, daher sollte auch die Programmiersprache C verwendet werden. Vor allem auch wenn man berufliche Absichten verfolgt.&lt;br /&gt;
&lt;br /&gt;
Und wenn man einen STM32 kann, dann ist ein Umstieg auf einen LPC17xx (NXP) oder andere Hersteller überhaupt kein Problem, denn die bieten ebenfalls Prozessoren mit Cortex-M3 Kern und man kann diese mit der gleichen Programmierumgebung programmieren. Somit ist man nicht zwingend Herstellerabhängig.&lt;br /&gt;
&lt;br /&gt;
Mit einem STM32 kann man als Hobby-Baster und Professionell nahezu alle Anwendungen realisieren. Der hat genügend RAM und FLASH Speicher und auch genügen Geschwindigkeit. Viele Gehäuse-Varianten um kleine bis hin zu größere Geräte zu erstellen. Viele Schnittstellen, sind im Artikel [[STM32]] beschrieben.&lt;br /&gt;
&lt;br /&gt;
Der einzige Nachteil beim STM32: man muss etwas mehr lesen, da eine Peripherie doch viel mehr Funktionalität hat. Ansonsten kenne ich nicht wirklich einen Grund warum man als Neueinsteiger keinen STM32 nehmen sollte.&lt;br /&gt;
&lt;br /&gt;
= Programmiersprachen =&lt;br /&gt;
* Wie bei vielen anderen Controllern wird beim STM32 auch hauptsächlich C und C++ verwendet. Kennen sollte man die Programmiersprache C schon, wenn man davon noch keine Ahnung hat dann sollte man erst mal mittels einem Tutorial auf einem PC ein Konsoleprogramm schreiben, sodass man es einigermaßen kennen lernt. Hier im Forum gibt es ebenfalls Artikel dazu. Zielt man auf die (spätere) Anwendung in der Industrie, sollte aufgrund der Verbreitung auf jeden Fall C (oder C++) gewählt werden; außerdem sind die meisten verfügbaren Libraries in C geschrieben.&lt;br /&gt;
* Assembler sollte man nur grob verstehen, Details wie ein Befehl arbeitet ist unwichtig. Selbst wenn man die Zyklen für einen Funktionsaufruf wissen will, so bietet der STM32 (Cortex-M3) einen Cycle-Counter den man auslesen kann; durch die komplexere Pipeline und Cache-Effekte sind die Laufzeiten allerdings nicht genau vorhersehbar. Wird zyklengenause Timing benötigt, sollten Timer verwendet werden - davon hat der STM32 genug.&lt;br /&gt;
&lt;br /&gt;
Der 32bit-Adressraum, der RAM, Flash, I/O-Register vereinheitlicht ansprechen kann (im Gegensatz zu z.B. AVR) ist ideal für eine Verwendung durch Hochsprachen; bei Pointern muss keine zusätzliche Information verwaltet werden, in welche Art Speicher sie zeigen. Die Adresse gibt dies eindeutig an (es gibt nur &#039;&#039;&#039;eine&#039;&#039;&#039; Adresse 42, und nicht 3 wie beim AVR (Flash, RAM, I/O)) und die Hardware spricht automatisch den richtigen Speicher an. Die Möglichkeiten zur Offset-Adressierung, der Barrel-Shifter, Divsions-Einheit, die FPU (bei STM32F4), Interrupt-Modell etc. begünstigen ebenfalls die Erzeugung effizienteren Codes. Außerdem haben die STM32 einfach mehr &amp;quot;rohe Leistung&amp;quot;, d.h. mehr Flash/RAM-Speicher und höhere Taktfrequenzen.&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Folgerung&#039;&#039;&#039;: Die Programmierung in Hochsprachen ist &#039;&#039;&#039;bequemer als bei 8-Bittern&#039;&#039;&#039;, denn man muss sich einfach weniger Gedanken machen, ob der Compiler ein Programm nun effizent umsetzen kann (kann man natürlich trotzdem machen, um noch mehr Leistung &amp;quot;herauszuquetschen&amp;quot;, wenn man will).&lt;br /&gt;
&lt;br /&gt;
= Weitere Randbedingungen für die Entscheidung=&lt;br /&gt;
&lt;br /&gt;
Der wichtige Punkt, der oftmals auch vergessen wird: die Beschaffbarkeit. Wenn jemand einen Renesas M16C oder Fujitsu empfiehlt, dann sucht man erst mal und findet nur wenige vereinzelte die man privat kaufen kann.&lt;br /&gt;
&lt;br /&gt;
Oder auch die Unterstützung im Internet - ist bei einigen Exoten spärlich. Dieses Forum bietet die beste Hilfe für [[AVR]], PIC, [[STM32]] und [[MSP430]].&lt;br /&gt;
&lt;br /&gt;
Andere Prozessoren sind schon sehr alt, bzw. nicht mehr modern da deren Peripherie zum Teil doch recht eingeschränkte Funktionalität bietet. z.B. viele 8051 Typen oder PIC16. Die mögen für Mini-Anwenungen gut sein, aber wer will den schon gerne sich extra für eine Kleinanwendung mit einem kleinen µC auseinandersetzen, wenn er schon einen STM32 kennt, mit dem er alles machen kann (und sich bereits gute Funktionen geschrieben hat)?&lt;br /&gt;
&lt;br /&gt;
Daher mein Resümee: wer nicht gerade auf den Kopf gefallen ist, der kann getrost mit einem STM32 starten. Ein [http://www.st.com/web/en/catalog/tools/FM116/SC959/SS1532/PF252419?s_searchtype=keyword STM32F4DISCOVERY] Board kostet nur ca. 20 EUR - und mehr muss für den ersten Start nicht investiert werden - wenn es doch zu komplex sein sollte gibt es hier im Forum auch Hilfe oder man nimmt erst mal ein &amp;quot;Arduino&amp;quot;. Jedenfalls sind diese 20 EUR wirklich keine große Investition.&lt;br /&gt;
&lt;br /&gt;
= Weblinks, Foren, Communities, Tutorials =&lt;br /&gt;
* [[STM32]] Hauptartikel, [http://www.mikrocontroller.net/articles/STM32#Weblinks.2C_Foren.2C_Communities.2C_Tutorials dortige Linksammlung]&lt;br /&gt;
* [http://www.mikrocontroller.net/topic/319328 Diskussion zum Artikel]&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>Frank m35</name></author>
	</entry>
</feed>