<?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=Promeus</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=Promeus"/>
	<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/articles/Spezial:Beitr%C3%A4ge/Promeus"/>
	<updated>2026-04-11T13:34:25Z</updated>
	<subtitle>Benutzerbeiträge</subtitle>
	<generator>MediaWiki 1.39.7</generator>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=K%C3%BChlk%C3%B6rper&amp;diff=92447</id>
		<title>Kühlkörper</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=K%C3%BChlk%C3%B6rper&amp;diff=92447"/>
		<updated>2016-03-17T08:49:52Z</updated>

		<summary type="html">&lt;p&gt;Promeus: Vandalismus&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Dieser Artikel versteht sich als Unterpunkt zum Artikel [[Leistungselektronik]].&lt;br /&gt;
&lt;br /&gt;
== Einleitung ==&lt;br /&gt;
&lt;br /&gt;
Ein Kühlkörper (engl. &#039;&#039;heat sink&#039;&#039;) dient der Begrenzung der Betriebstemperatur elektronischer Bauteile. Er wird immer dann benötigt, wenn die Verlustleistung so hoch ist, dass die sich aufgrund der herrschenden Randbedingungen wie Wärmeleitfähigkeit, Luftkonvektion und Umgebungstemperatur einstellende Bauteiltemperatur den  höchst zulässigen Wert übersteigen würde. Der Kühlkörper hat dabei die Aufgabe, die entstehende Wärme möglichst gut auf eine große Fläche zu verteilen, um sie besser an die Umgebung abgeben zu können. Damit wird der Unterschied zwischen Lufttemperatur und Bauteiltemperatur gesenkt. Technisch spricht man hierbei von einer Verringerung des Temperaturwiderstandes.&lt;br /&gt;
&lt;br /&gt;
[[bild: Rippenkuehlkoerper.png | thumb | 300px| Rippenkühlkörper, Schnittdarstellung]]&lt;br /&gt;
&lt;br /&gt;
Das grundlegende Prinzip sieht man an jedem Rippenkühlkörper. An der Stelle, wo das Kühlobjekt angeschraubt/gepresst ist (rotes Viereck), ist ein dicker &amp;quot;Klumpen&amp;quot; Material, der erstmal die Wärme auf eine etwas größere Fläche verteilen soll. Bei CPU-Lüftern ist dort teilweise Kupfer eingepresst, weil das noch besser als Aluminium Wärme leitet (engl. heat spreader, Wärmespreizer). Danach folgen viele, nach aussen dünner werdende Rippen. In der Mitte noch dick, dort muss die Wärme ja verlustarm durchgeleitet werden, aussen dünn, dort ist fast alle Wärme schon abgegeben. Ein guter Kühlkörper hat eine möglichst große Oberfläche bei möglichst kleiner Masse. Zudem sind sie so gefertigt und platziert, dass die Luftkonvektion unterstützt wird. Viele Kühlkörper werden aus preiswerten [http://de.wikipedia.org/wiki/Strangpressen Strangpressprofilen] hergestellt.&lt;br /&gt;
&lt;br /&gt;
== Wärmewiderstand ==&lt;br /&gt;
&lt;br /&gt;
Die wichtigste Kennzahl eines Kühlkörpers ist der Wärmewiderstand. Er gibt an, um wie viel Kelvin sich die Temperatur zwischen Wärmequelle und Umgebung unterscheidet, wenn eine bestimmte Wärmeleistung abgeführt werden muss. Die Einheit ist K/W, Kelvin pro Watt. (Hinweis: Oft wird die Einheit °C/W angegeben, das ist allerdings nicht ganz korrekt. Temperaturdifferenzen werden in Kelvin angegeben). Je niedriger der Wärmewiderstand, umso besser der Kühlkörper, weil er die gleiche Wärmeleistung mit einem kleineren Temperaturunterschied abführen kann. Dadurch bleibt das Bauteil kühler, was der Lebensdauer und Funktionssicherheit zu Gute kommt.&lt;br /&gt;
&lt;br /&gt;
Allgemein gilt die Formel&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;\Delta T = P_{\theta} \cdot R_{\theta}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*&amp;lt;math&amp;gt;\Delta T&amp;lt;/math&amp;gt; - Temperaturdifferenz zwischen Wärmequelle und Umgebung in K&lt;br /&gt;
*&amp;lt;math&amp;gt;P_{\theta}&amp;lt;/math&amp;gt; - Wärmeleistung in W&lt;br /&gt;
*&amp;lt;math&amp;gt;R_{\theta}&amp;lt;/math&amp;gt; - Wärmewiderstand in K/W&lt;br /&gt;
&lt;br /&gt;
Der griechische Buchstabe Theta wird als Symbol für Wärmekenngrößen verwendet, denn es geht bei diesen Rechnungen um Wärmewiderstände und Wärmeleistungen, keine elektrischen Widerstände und elektrische Leistungen.&lt;br /&gt;
&lt;br /&gt;
== Berechnung des Wärmewiderstands ==&lt;br /&gt;
&lt;br /&gt;
Für einen Kühlkörper ist der Wärmewiderstand im Datenblatt angegeben. Diesen rein aus dem Aufbau zu berechnen ist sehr schwierig, auch das Messen ist nicht so einfach. Was man jedoch berechnen kann und muss ist der Wärmewiderstand eines Gesamtaufbaus, d.h. Bauteil + Kühlkörper. Dazu muss man im Wesentlichen zwei Fälle unterscheiden.&lt;br /&gt;
&lt;br /&gt;
=== Bauteil ohne Kühlkörper ===&lt;br /&gt;
&lt;br /&gt;
Ohne Kühlkörper kann ein Bauteil seine Wärme über zwei Wege abgeben. Über das Gehäuse direkt an die Luft (Abstrahlung und Konvektion) oder über die Anschlüsse auf die Platine (Wärmeleitung). Dies alles findet parallel statt, aber je nach Gehäusetyp und Platinengestaltung ist die Verteilung auf die Kühlwege verschieden. Transistoren im Metallgehäuse (z.&amp;amp;nbsp;B. TO-3) oder mit Metallfahne (z.&amp;amp;nbsp;B. TO220) können recht viel Wärme über das Gehäuse abgeben (Konvektion). Effektive Abstrahlung braucht immer recht hohe Temperaturdifferenzen von 100K und mehr, wie sie meist nur von Leistungswiderständen und Elektronenröhren erreicht werden. Leistungsdioden im Plastikgehäuse hingegen können den Großteil der Wärme nur über die Anschlüsse abgeben. Deshalb sollten diese möglichst kurz sein, und auf der Platine an dicke Leiterbahnen oder gar Kupferflächen angeschlossen werden. Ähnliches gilt für leistungsverstärkte DIL- oder SOIC-[[IC-Gehäuseformen | Gehäuse]], welche oft für [[H-Brücken_Übersicht | Leistungstreiber]] oder [[FET | MOSFETs]] verwendet werden. In diesen Fällen sollten die Pins direkt an Kupferflächen &#039;&#039;&#039;ohne&#039;&#039;&#039; Wärmefallen ([https://de.wikipedia.org/wiki/Thermal_Pad Thermal Pad]) angeschlossen werden, auch wenn dadurch das [[Löten]] erschwert wird. &lt;br /&gt;
&lt;br /&gt;
Für die meisten Bauteile ist im Datenblatt der Wärmewiderstand zwischen dem eigentlichen Chip und der Umgebung angegeben.&lt;br /&gt;
&lt;br /&gt;
*&amp;lt;math&amp;gt;R_{\theta JA}&amp;lt;/math&amp;gt; - Wärmewiderstand (griechisches Zeichen [https://de.wikipedia.org/wiki/Theta Groß-Theta]) zwischen Sperrschicht und Umgebung ohne zusätzlichen Kühlkörper in K/W&lt;br /&gt;
&lt;br /&gt;
Damit kann man direkt in die oben genannte Formel gehen und die Temperaturdifferenz ausrechnen. Die Temperatur der Sperrschicht errechnet sich einfach aus der maximalen Umgebungstemperatur (meist Luft) und dem errechneten Temperaturunterschied.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;T_J = T_A + \Delta T &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*&amp;lt;math&amp;gt;T_J&amp;lt;/math&amp;gt; - Temperatur der Sperrschicht in °C (engl. &amp;quot;&#039;&#039;&#039;j&#039;&#039;&#039;unction&amp;quot;)&lt;br /&gt;
*&amp;lt;math&amp;gt;T_A&amp;lt;/math&amp;gt; - Temperatur der Umgebung in °C (engl. &amp;quot;&#039;&#039;&#039;a&#039;&#039;&#039;mbient&amp;quot;)&lt;br /&gt;
*&amp;lt;math&amp;gt;\Delta T&amp;lt;/math&amp;gt; - Temperaturdifferenz zwischen Wärmequelle und Umgebung in K&lt;br /&gt;
&lt;br /&gt;
=== Bauteil mit Kühlkörper ===&lt;br /&gt;
&lt;br /&gt;
Will man mit einem IC größere Verlustleistungen umsetzen (Linearer Spannungsregler, [[Transistor]], etc.] muss meist ein Kühlkörper her. Die jeweiligen Gehäuse besitzen dazu meist eine Kühlfahne, an die man den Kühlkörper anschrauben kann. Bei anderen gibt es Klemmen, die den Kühlkörper fest klemmen. Hier gibt es einiges zu beachten. Der Kühlkörper darf nicht zu schwach angeschraubt werden, sonst ist der Wärmewiderstand zwischen Gehäuse und Kühlkörper zu gross. Er darf aber auch nicht zu stark angeschraubt/angepresst werden, um das Gehäuse nicht zu deformieren. Wichtig ist der Übergang zwischen IC und Kühlkörper. Hier muss bei größeren Leistungen (&amp;gt;5W) Wärmeleitpaste verwendet werden. Ihre Aufgabe ist es, die Luft zwischen den Oberflächen zu verdrängen, welche sich in den mikroskopischen Unebenheiten befindet und den Wärmewiderstand &#039;&#039;&#039;deutlich&#039;&#039;&#039; erhöht. Dabei sollte die Schicht sehr dünn sein, denn die Wärmeleitpaste ist im Vergleich zu Aluminium oder Kupfer ein schlechter Wärmeleiter, allerdings deutlich besser als Luft. Das oft verwendete TO220 Gehäuse hat ca. 1cm^2 Kühlfläche. Wird ein Kühlkörper ohne Wärmeleitpaste aufgeschraubt und entsteht dabei ein angenommener Luftspalt von 10µm, hat dieser einen Wärmewiderstand von ca. 4K/W! Mit Wärmeleitpaste sind es rein rechnerisch nur 1/150tel, also etwa 0,026 K/W. Real muss man jedoch eher mit 0,5-1K/W rechnen.&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;
! Material || Wärmeleitfähigkeit&amp;lt;br/&amp;gt;[W/(m*K)]&lt;br /&gt;
|-&lt;br /&gt;
| Luft            || 0,026&lt;br /&gt;
|-&lt;br /&gt;
| Wärmeleitpaste  ||   4 -  10&lt;br /&gt;
|-&lt;br /&gt;
| Aluminium       || 221*&lt;br /&gt;
|-&lt;br /&gt;
| ALMg3           || 140 - 160&lt;br /&gt;
|-&lt;br /&gt;
| ALMg4,5Mn       || 120 - 140&lt;br /&gt;
|-&lt;br /&gt;
| ALMgSi1         || 170 - 220&lt;br /&gt;
|-&lt;br /&gt;
| ALCuMg1         || 160 - 200&lt;br /&gt;
|-&lt;br /&gt;
| ALCu6,5Mn0,3    ||   95 - 130&lt;br /&gt;
|-&lt;br /&gt;
| Kupfer          || 370*&lt;br /&gt;
|-&lt;br /&gt;
| Messing MS60    ||   90 - 113&lt;br /&gt;
|- &lt;br /&gt;
| Cu Be 2         ||   92 - 125&lt;br /&gt;
|-&lt;br /&gt;
| Cu Co 2 Be      || 192 - 239&lt;br /&gt;
|-&lt;br /&gt;
| Cu Cr 1 Zr      || 167 - 320&lt;br /&gt;
|-&lt;br /&gt;
| Cu Ni 2 Si      ||   67 - 120&lt;br /&gt;
|-&lt;br /&gt;
| Stahl 0,2%C     ||   50&lt;br /&gt;
|-&lt;br /&gt;
| Stahl 8%Cr      ||   21&lt;br /&gt;
|-&lt;br /&gt;
| Zinn            ||   65&lt;br /&gt;
|-&lt;br /&gt;
| Blei            ||   35&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
*Werte DIN V 4108-4, Achtung: bei den verfügbaren Legierungen sind weit geringere Wärmeleitfähigkeiten zu erwarten!&lt;br /&gt;
&lt;br /&gt;
Für die Berechnung des gesamten Wärmewiderstandes müssen hier drei Widerstände in Reihe betrachtet werden. Der Erste ist im Datenblatt zwischen Chip und Gehäuse angeben (engl. junction to case). Danach kommt der Übergang Gehäuse-Kühlkörper. Dieser ist von der Oberflächengüte und der Wärmeleitpaste abhängig und ist bei einigen Leistungsbauteilen im Datenblatt angegeben, manchmal kann er nur abgeschätzt werden. Ein TO220 Gehäuse mit dünner Schicht Wärmeleitpaste hat hier ca. 0,5-1K/W. Zum Schluss muss noch der Wärmewiderstand des Kühlkörpers addiert werden, dieser ist im Datenblatt angegeben. Vorsicht, bei größeren Kühlkörpern mit großen Rippen ist die Einbaulage wichtig, damit der Luftstrom frei strömen und gut kühlen kann (freie Konvektion, warme Luft strömt nach oben und kalte strömt unten nach). Die drei Wärmewiderstände werden addiert und über die oben angegebene Formel der Gesamtwärmewiderstand und damit die Temperaturerhöhung der Sperrschicht berechnet.&lt;br /&gt;
Dabei muss man aufpassen, dass man nicht aus Versehen den Wärmewiderstand ohne Kühlkörper (&amp;lt;math&amp;gt;R_{\theta JA}&amp;lt;/math&amp;gt;) in die Formel einsetzt!&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;R_{\theta} = R_{\theta JC} + R_{\theta CS} + R_{\theta S}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*&amp;lt;math&amp;gt;R_{\theta}&amp;lt;/math&amp;gt; - Gesamtwärmewiderstand in K/W&lt;br /&gt;
*&amp;lt;math&amp;gt;R_{\theta JC}&amp;lt;/math&amp;gt; - Wärmewiderstand zwischen Sperrschicht und Gehäuse (engl. &#039;&#039;&#039;j&#039;&#039;&#039;unction - &#039;&#039;&#039;c&#039;&#039;&#039;ase)&lt;br /&gt;
*&amp;lt;math&amp;gt;R_{\theta CS}&amp;lt;/math&amp;gt; - Wärmewiderstand zwischen Gehäuse und Kühlkörper (engl. &#039;&#039;&#039;c&#039;&#039;&#039;ase - heat &#039;&#039;&#039;s&#039;&#039;&#039;ink)&lt;br /&gt;
*&amp;lt;math&amp;gt;R_{\theta S}&amp;lt;/math&amp;gt; - Wärmewiderstand des Kühlkörpers (engl. heat &#039;&#039;&#039;s&#039;&#039;&#039;ink)&lt;br /&gt;
&lt;br /&gt;
Wird eine Schaltung in einem Gehäuse eingesetzt, muss man dafür sorgen dass die warme Luft abgeführt wird, vor allem in Kunststoffgehäusen. Ansonsten gibt es einen Wärmestau und die Temperatur steigt deutlich!&lt;br /&gt;
&lt;br /&gt;
==== Beispiel ====&lt;br /&gt;
&lt;br /&gt;
Gesucht:&lt;br /&gt;
&lt;br /&gt;
*&amp;lt;math&amp;gt;R_{\theta S}&amp;lt;/math&amp;gt; - max. Wärmewiderstand des Kühlkörpers&lt;br /&gt;
&lt;br /&gt;
Gegeben:&lt;br /&gt;
&lt;br /&gt;
*&amp;lt;math&amp;gt;P_{\theta}&amp;lt;/math&amp;gt; : 10 W&lt;br /&gt;
*&amp;lt;math&amp;gt;R_{\theta JC}&amp;lt;/math&amp;gt; : 3 K/W&lt;br /&gt;
*&amp;lt;math&amp;gt;R_{\theta CS}&amp;lt;/math&amp;gt; : 0,5 K/W&lt;br /&gt;
*&amp;lt;math&amp;gt;T_J&amp;lt;/math&amp;gt; : 130 °C&lt;br /&gt;
*&amp;lt;math&amp;gt;T_A&amp;lt;/math&amp;gt; : 40 °C&lt;br /&gt;
&lt;br /&gt;
Rechnung:&lt;br /&gt;
&lt;br /&gt;
Um die Berechnung durchführen zu können, müssen wir zuerst die maximal zulässige  Temperaturdifferenz zwischen Sperrschicht und Umgebung festlegen. Je größer man diesen Wert wählt, umso kleiner kann der Kühlkörper sein, aber umso heißer wird auch das Bauteil im Inneren betrieben.&lt;br /&gt;
Eine Angabe dazu findet man manchmal im Datenblatt (Operating junction temperature). Achtung, manchmal wird nur die zulässige Umgebungstemperatur genannt (Operationg temperature)! Wenn nicht, kann man sich an folgenden Angaben orientieren&lt;br /&gt;
* Leistungsbauteile wie [[Transistor]]en, [[TRIAC]]s etc. sind meist bis 150°C Sperrschichttemperatur ausgelegt, teilweise auch bis 200°C&lt;br /&gt;
* Leistungs-LEDs verkraften dauerhaft nur um die 80°C&lt;br /&gt;
* Man sollte die maximalen Betriebstemperaturen nicht ausreizen, wenn man eine hohe Lebensdauer und Funktionssicherheit anstrebt und 10-30K unter den Maximalwerten bleiben&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;\Delta T = T_J - T_A = 130 ^\circ C - 40 ^\circ C = 90 K&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;R_{\theta} = \frac { \Delta T}{P_{\theta}}  = \frac {90K}{10W} = 9 K/W  &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;R_{\theta S} = R_{\theta} - R_{\theta JC} - R_{\theta CS} = 9 K/W - 3 K/W - 0,5K/W = 5,5 K/W&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ergebnis:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;R_{\theta S} \leqq 5,5 K/W&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Der Kühlkörper darf einen maximalen Wärmewiderstand von 5,5 K/W haben, wenn die oben genannten Bedingungen eingehalten werden sollen. Ein Kühlkörper mit einem kleineren Wärmewiderstand hält das Bauteil kühler.&lt;br /&gt;
&lt;br /&gt;
=== Zwangskühlung  ===&lt;br /&gt;
&lt;br /&gt;
Natürlich muss der Kühlkörper die Wärme auch abführen können. Was aber, wenn der für den Wärmeabtransport benötigte Kühlkörper mechanisch nicht ins Gehäuse paßt oder die entstehende Eigenkonvektion zu gering ist?&lt;br /&gt;
&lt;br /&gt;
Hier kommen die Lüfter zum Einsatz, das Ganze nennt sich dann Zwangskühlung. Der Effekt beruht darauf, dass wesentlich mehr Luft am Kühlkörper vorbeiströmen kann und damit (bei gleicher Temperaturerhöhung des Luftvolumenelementes) insgesamt mehr Wärme abgegeben werden kann.&lt;br /&gt;
&lt;br /&gt;
Durch den Einsatz eines Lüfters lässt sich der effektive Wärmewiderstand eines Kühlkörpers etwa um mehrere Faktoren verbessern, bzw. der Kühlkörper kann in der Größe entsprechend reduziert werden. Dabei sind je nach Einbausituation des Kühlers und des Lüfters Faktoren zwischen 3-10 möglich. Ein typischer Wert, der sich bei durchschnittlich dimensionierten Kühlkörpern ergibt, ist ein Faktor 4-5. Die Temperaturüberhöhung schrumpft dabei z.B. von 80 Grad auf 20 Grad zusammen. Dies sind jedoch nur Richtwerte für den ersten Entwurf, eine Prüfung durch Messung ist unbedingt erforderlich. &lt;br /&gt;
&lt;br /&gt;
Beim Einsatz eines Lüfters ist auch daran zu denken, daß sowohl die Ansaugöffnung als auch der Kühlkörper verschmutzen und regelmäßig gereinigt werden müssen. Weiterhin erzeugt ein Lüfter natürlich auch Lärm. Je kleiner der Lüfter und je größer die benötigte Luftlieferleistung, umso lauter wird der Lüfter. Umgekehrt kann man aber mit einem großen, eher langsam laufenden Lüfter den Geräuschpegel stark absenken. Letztendlich kann ein Lüfter auch kaputt gehen, womit die Kühlung deutlich verschlechtert wird und das Bauteil überhitzt. Hier empfiehlt sich bei wertvolleren Objekten eine Lüfterüberwachung, wie sie seit längerem bei PCs eingesetzt wird oder das Verbauen mehrerer Lüfter, sodass der Ausfall eines einzigen nicht sofort zu einem Geräteausfall führt.&lt;br /&gt;
&lt;br /&gt;
==== Physikalischer Hintergrund der Zwangskühlung mit Luft ====&lt;br /&gt;
&lt;br /&gt;
Luft hat eine Wärmekapazität von ungefähr 1kJ/kg/K was bedeutet, daß für die Erwärmung von 1kg Luft um 1K eine Energiemenge von 1kJ = 1000Ws erforderlich ist. D.h. für den kontinuierlichen Abtransport von 100W Wärme werden mindestens 100g Luft pro Sekunde benötigt, wenn man diese nur um 1K erwärmen will. &lt;br /&gt;
Um also 100W von einem Kühlkörper abzuführen, der sich hier im Beispiel um 8K erwärmen darf, sind  100W / 8K  = 12,5g Luft pro Sekunde erforderlich. Ein Gramm Luft hat ein Volumen von etwa 0,77l, d.h. bei 12,5 g muss der Lüfter 9,6 l/s bzw. 34,5 m³/h liefern, die dann auch durch den gesamten Kühlkörper geblasen werden müssen.&lt;br /&gt;
&lt;br /&gt;
Diese Werte sind jedoch nur theoretisch von Interesse, da die Praxis gezeigt hat, dass die effektive Kühlwirkung sehr stark von den sich einstellenden Mikroturbulenzen am Bauteil abhängt. Diese sind für den Wärmegradienten zwischen Kühleroberfläche und Umgebungsluft verantwortlich. Durch eine stark laminare = gleichförmig strömende Luft wird ein Bauteil eher schlecht gekühlt. Bestimmte Bauformen von Bauelementen und Kühlern begünstigen die Turbulenzbildung, behindern damit zwar den Luftstrom, da der Widerstand steigt, kühlen aber letztlich besser. So ist es zu erklären, dass manche Bauteile ohne Kühlung auskommen, da sie die Eigenkonvektion fördern und günstig im Luftstrom sitzen und von einem Kühler weniger profitieren, als andere Problembauteile.&lt;br /&gt;
&lt;br /&gt;
Generell kann man sagen, dass flache, breite Bauteile zunehmend schlechter selbstkühlend sind, je größer sie werden und damit eher einen KK brauchen. FPGAs und Grafikchips sind solche Kandidaten. Hier empfehlen sich teilweise eigene Chipkühler. Auch RAM-Riegel mit sehr flachen Chips können so sehr effektiv kühl gehalten werden.&lt;br /&gt;
&lt;br /&gt;
== Die Platine als Kühlkörper ==&lt;br /&gt;
&lt;br /&gt;
Bei kleineren Leistungen (&amp;lt; 5W) kann man auch die Platine als Kühlkörper benutzten. Dabei muss jedoch die Wärme vom Bauteil möglichst schnell auf eine größere Fläche verteilt werden. Dazu nutzt man große Kupferflächen direkt am Bauteil. Diese werden teilweise beidseitig angebracht. Die Wärme muss man dann jedoch mit vielen Vias von der einen Seite, auf der das Bauteil sitzt, auf die andere geleitet werden. Diese Vias heißen thermische Vias, da sie nicht als elektrische Verbindung sondern als Wärmeleiter dienen. Das funktioniert deshalb so gut, weil die Vias innen mit Kupfer beschichtet sind, welches die Wärme wesentlich besser leitet als das Material der Leiterplatte (FR2, FR4).&lt;br /&gt;
Verfügt ein SMD-Bauteil über eine sogenannte &amp;quot;heat slug&amp;quot; oder thermal pad auf der Unterseite, muss dieses zur Wärmeableitung unbedingt angelötet werden. Dies ist mit einem normalen Lötkolben möglich, wenn die Platine an dieser Stelle mehrere Durchkontaktierungen mit einem Durchmesser von ca. 1,5mm aufweist. Durch diese Durchkontaktierungen kann genug Lötzinn auf die andere Seite fließen um diese Fläche mit der Platine zu verlöten. &lt;br /&gt;
&lt;br /&gt;
Mit modernen Technologien ist es auch möglich, deutlich größere Wärmeleistungen von der Platine abzuführen. Dazu werden z.&amp;amp;nbsp;B. Platinen mit Aluminium- oder Kupferkern  oder auf einen Metallträger laminierte PCBs benutzt (IMS = &#039;&#039;&#039;I&#039;&#039;&#039;nsulated &#039;&#039;&#039;M&#039;&#039;&#039;etal &#039;&#039;&#039;S&#039;&#039;&#039;ubstrat). Diese kommen z.&amp;amp;nbsp;B. bei Hochleistungs-[[LED]]s zum Einsatz. Für Hobbyzwecke sind sie aber noch wesentlich zu teuer, vor allem bei Einzelstücken.&lt;br /&gt;
&lt;br /&gt;
== Peltierelement ==&lt;br /&gt;
&lt;br /&gt;
Ein [http://de.wikipedia.org/wiki/Peltier-Element Peltierelement] arbeitet nach dem [http://de.wikipedia.org/wiki/Thermoelektrizit%C3%A4t#Peltier-Effekt Peltier-Effekt]. Dabei wird in einem Halbleiter durch Stromfluss eine Seite des Elements kalt, die andere heiß. Damit kann man ein kleines Objekt beliebig kühlen oder heizen. Allerdings sind Peltierelemente nur in eher kleinen Abmessungen und Leistung verfügbar (bis einige Dutzend Watt) und deren Effizienz ist auch nicht sonderlich hoch. Die allgemeine Auffassung, die könnten Wärme einfach verschwinden lassen ist falsch. Denn die heiße Seite muss klassisch gekühlt werden, je nach Temperaturunterschied mit mehr als der doppelten Kühlleistung als auf der kalten Seite an Wärme abgeführt wird.&lt;br /&gt;
&lt;br /&gt;
== Heat pipe ==&lt;br /&gt;
&lt;br /&gt;
Eine [http://de.wikipedia.org/wiki/Heatpipe Heat pipe],auf deutsch Wärmerohr genannt, ist ein Rohr, welches mit einer leicht verdampfenden Flüssigkeit gefüllt ist. Wird ein Ende erhitzt, verdampft die Flüssigkeit und nimmt dabei sehr viel Wärme auf. Der Dampf steigt im Rohr ans andere Ende, kondensiert dort und gibt dabei seine Wärme wieder ab.&lt;br /&gt;
&lt;br /&gt;
Heat pipes werden auch als Wärmesuperleiter bezeichnet, weil sie Wärme 100-10.000 mal besser leiten als ein massiver Kupferstab mit gleichen Abmessungen.&lt;br /&gt;
&lt;br /&gt;
Auch hier muss gesagt werden, dass eine Heat pipe allein &#039;&#039;&#039;kein&#039;&#039;&#039; Kühlsystem ist, denn die Seite, auf der das Wärmetransportmedium wieder kondensiert, muss auch wieder klassisch gekühlt werden. Der grosse Vorteil ist die Abführung großer Wärmemengen auf engstem Raum, wie z.&amp;amp;nbsp;B. bei CPUs in Laptops.&lt;br /&gt;
&lt;br /&gt;
== Flüssigkühlung ==&lt;br /&gt;
&lt;br /&gt;
Im PC-Bereich ist es unter einigen Enthusiasten verbreitet, den Rechner entweder zu übertakten, um eine höhere Leistung zu erzielen oder super leise zu machen, um angenehmer arbeiten oder spielen zu können. In beiden Fällen muss eine große Wärmemenge abgeführt werden. Dabei wird die sehr hohe Wärmekapazität von Wasser genutzt, um auf kleinem Raum die Wärme von CPU, GPU, Festplatten etc. abzuführen. Aber auch hier ist zu beachten, dass am Ende einer Flüssigkühlung praktisch immer ein klassischer Wärmetauscher steht, welcher die Wärme an die Umgebungsluft abgibt. Dieser kann sich aber deutlich weiter entfernt vom zu kühlenden Objekt befinden als ein einfacher, direkt montierter Kühlkörper. &lt;br /&gt;
&lt;br /&gt;
Bei der Verwendung von Wasser statt Luft als Kühlmedium reduziert sich die Durchflußmasse in etwa um den Faktor 4,2, da die Wärmekapazität von Wasser bei ca. 4,182 kJ/kg/K liegt. Da Wasser aber auch eine deutlich höhere Dichte als Luft besitzt (Wasser = 1g/cm³; Luft = 1,3mg/cm³) kommt noch der Faktor von ~770 dazu, woraus sich ein Gesamtfaktor für das Durchflußvolumen von ~3230 ergibt.&lt;br /&gt;
&lt;br /&gt;
D.h. die Durchflußmenge in unserem oben genannten Beispiel (100W) sinkt auf ca. 2,9 ml/s bzw. 10,7 l/h.&lt;br /&gt;
&lt;br /&gt;
Vorteile&lt;br /&gt;
*Abtransport großer Wärmemengen auf kleinstem Raum&lt;br /&gt;
*nahezu lautlos&lt;br /&gt;
&lt;br /&gt;
Nachteile&lt;br /&gt;
*höherer Aufwand und Kosten&lt;br /&gt;
*Gefahr durch auslaufendes Kühlmittel&lt;br /&gt;
&lt;br /&gt;
Im Bereich der Leistungselektronik wird Flüssigkühlung eingesetzt, im Hobbybereich nahezu nicht.&lt;br /&gt;
&lt;br /&gt;
== Bauteilmontage auf dem Kühlkörper ==&lt;br /&gt;
&lt;br /&gt;
Die Montage der klassischen Halbleitergehäuse nach TO220 und ähnlichen gestaltet sich augenscheinlich simpel: Die Kühlfahne hat ein Loch. Da ist es doch sehr verlockend, das Bauteil mit einer Schraube durch ebendieses Loch auf dem Kühlkörper zu befestigen...&lt;br /&gt;
&lt;br /&gt;
Bei fachgerechter Ausführung spricht auch wenig gegen diese Montageweise. Dazu gehört dann auch das richtige Anzugsmoment für die Schraube. Zu lose angezogen und zwischen Bauteilgehäuse und wärmeabführender Oberfläche entsteht ein Luftspalt. Ein Wärmeleitpad oder Wärmeleitpaste schaffen zwar Abhilfe, aber die Wärmeleitfähigkeit dieser Stoffe liegt um Größenordnungen unter der von Aluminium (Kühlkörper) und Kupfer (Kühlfahne). Ein vorhandenes Wärmeleitpad wird mitunter auch nicht weit genug zusammengedrückt, sodass auch noch Optimierung möglich wäre. Nämlich durch festeres Anziehen der Schraube.&lt;br /&gt;
Zu fest angezogen und die Kühlfahne wölbt sich minimal. Dabei hebt der Bauteilkörper von der Oberfläche des Kühlkörpers ab und es entsteht wieder ein Spalt. Ungünstigerweise liegt aber genau dort der Usprung des Wärmeflusses (Silizium-Chip). Bei Conrad gibt es [http://www.conrad.de/ce/de/overview/0205045/Transistor-Halteklammern-Haltefedern Klammern] zur Befestigung von Transistoren von [http://www.fischerelektronik.de/web_fischer/de_DE/K%C3%BChlk%C3%B6rper/A06/Transistorhaltefedern/$search_result_naviActualPage/1/$search_result_naviLinesPerPage/100/search.xhtml;jsessionid=2C868850DA0202334B26912FF6948496#search_result_naviPoint Fischer].&lt;br /&gt;
&lt;br /&gt;
[[Datei: kuehlkoerper-montage.jpeg | thumb | 300px | Montagebeispiel]] Weitaus einfacher zu handhaben ist folgende Montageweise: Die Bauteile werden, ungeachtet der Montagebohrung, lose auf den Kühlkörper gelegt. Falls notwending natürlich mit Isolierstoff dazwischen und in jedem Fall hauchdünn mit einem Wärmeleitmittel bestrichen. Über die Bauteile wird dann ein Aluminiumprofil gelegt und erst dieses wird, weiterhin mit einer Schraube pro Bauteil, auf den Kühlkörper gespannt. Abgesehen davon, dass so auch SMD-Bauteile (IPAK!) auf einem Kühlkörper Platz finden, entsteht Druck genau über dem Hot Spot.&lt;br /&gt;
&lt;br /&gt;
{{clear}}&lt;br /&gt;
&lt;br /&gt;
== Weitere Hinweise ==&lt;br /&gt;
&lt;br /&gt;
*Große Hochlastwiderstände mit Keramikgehäuse werden im Normalbetrieb recht heiß (200-350°C). Diese Temperaturen sollten nicht auf die Platine kommen, denn das macht das Material nicht lange mit. Hier muss genau das Gegenteil von dem gemacht werden, was weiter oben für Bauteile ohne Kühlkörper empfohlen wurde. Die Anschlüsse müssen möglichst lang sein, damit wenig Wärme über sie abgegeben werden kann. Die Kühlung erfolgt nahezu nur über den Keramikkörper durch Wärmestrahlung und Konvektion.&lt;br /&gt;
* Ein TO220 Gehäuse kann ca. 1W ohne Kühlkörper abgeben.&lt;br /&gt;
* Bei der Dimensionierung des Kühlkörpers sollte man sich nicht an der maximal zulässigen Sperrschichttemperatur orientieren, sondern möglichst um 10..50K kühler bleiben. Das verbessert die Funktionssicherheit und vor allem die Lebensdauer erheblich!&lt;br /&gt;
* Merksatz über den dicken Daumen: Pro 10 Grad Temperaturerhöhung halbiert sich die Lebenserwartung eines Bauteils. (Arrheniusgesetz, RGT-Regel, 10-Grad-Gesetz)&lt;br /&gt;
* Temperaturzyklen verkürzen die Lebensdauer von Schaltungen erheblich&lt;br /&gt;
* Meist sind mehrere kleine Kühlkkörper deutlich kleiner und billiger als ein Großer.&lt;br /&gt;
&lt;br /&gt;
== Links ==&lt;br /&gt;
&lt;br /&gt;
* [[Leistungselektronik]]&lt;br /&gt;
*[http://www.mikrocontroller.net/topic/84303 Forumsbeitrag]: Beispielrechnung&lt;br /&gt;
*[http://www.mikrocontroller.net/topic/308826?goto=3325027#3325027 Forumsbeitrag]: Wärmewiderstand und Sperrschichttemperatur messen&lt;br /&gt;
* [http://www.mikrocontroller.net/topic/351187#3905083 Forumsbeitrag]: Dicker MOSFET, dünnes Anschlusspin?&lt;br /&gt;
* [https://www.mikrocontroller.net/topic/205307#4091697 Forumsbeitrag]: Wärmewiderstand einfacher Bleche&lt;br /&gt;
&lt;br /&gt;
== Weblinks ==&lt;br /&gt;
&lt;br /&gt;
* [http://sound.westhost.com/heatsinks.htm The Design of Heat sinks]. Eine ausführliche Seite zum Thema Kühlkörper, englisch&lt;br /&gt;
* [http://ludens.cl/Electron/Thermal.html Thermal Design], englisch&lt;br /&gt;
* [http://wiki.oliverbetz.de/owiki.php/FormelSammlung Universelle Formelsammlung], mit kurzen Erklärungen&lt;br /&gt;
* [http://www.thermoconsult.de/01_TechInfo/Physik.pdf Grundlagen zur Kühlung], inhaltlich gut, Formatierung eher mies&lt;br /&gt;
* [http://tangentsoft.net/elec/diy-hs.html DIY Heat Sinks]&lt;br /&gt;
* [http://www.fischerelektronik.de/ Kühlkörper] bei Fischer Elektronik&lt;br /&gt;
* [http://www.leiton.de/leiterplatten_teaser_alu.html Leiterplatten mit Alukern] bei Leiton&lt;br /&gt;
*[http://www.shop.display3000.com/mikrocontrollerloesungen/uc-mit-21-tft/d074-mikrocontroller-atmega-tft-farbdisplay-212.html Berechnung in der Praxis]: Unter Downloads das Handbuch laden, dann Seite 14&lt;br /&gt;
* [http://www.zabex.de/site/kurios.html#wafeila Ungewöhnliche Hochlastwiderstände im Eigenbau]&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Bauteile]]&lt;br /&gt;
[[Kategorie:Leistungselektronik]]&lt;br /&gt;
[[Category:Grundlagen]]&lt;/div&gt;</summary>
		<author><name>Promeus</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=Labornetzger%C3%A4te&amp;diff=92446</id>
		<title>Labornetzgeräte</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=Labornetzger%C3%A4te&amp;diff=92446"/>
		<updated>2016-03-17T08:49:06Z</updated>

		<summary type="html">&lt;p&gt;Promeus: Änderung 92444 von 46.101.104.227 (Diskussion) rückgängig gemacht.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Ein Labornetzgerät wird dazu verwendet, Schaltungen oder einzelne Bauteile mit einer definierten Spannung oder einem definierten Strom zu versorgen.&lt;br /&gt;
&lt;br /&gt;
== Funktionen ==&lt;br /&gt;
&lt;br /&gt;
Labornetzgeräte sind im Gegensatz zu einfachen Festspannungs-Netzteilen sehr flexibel einsetzbar und haben üblicherweise mindestens folgende Einstellmöglichkeiten und Funktionen:&lt;br /&gt;
&lt;br /&gt;
=== Einfache Labornetzteile ===&lt;br /&gt;
&lt;br /&gt;
Einfache Labornetzgeräte haben eine einstellbare Ausgangsspannung, die normalerweise von 0 bis zu einem bestimmten Maximalwert eingestellt werden kann. Zusätzlich bieten diese Geräte eine einstellbare Strombegrenzung, die auch von 0 aus bis zum Nennstrom des Geräts eingestellt werden kann.&lt;br /&gt;
&lt;br /&gt;
Labornetzgeräte haben außerdem noch eine Anzeige für Ausgangsspannung und Strom. Dafür sind entweder analoge oder digitale Instrumente eingebaut. Bei digitalen Anzeigen werden üblicherweise 3 Stellen angezeigt, die Genauigkeit der Anzeige liegt üblicherweise im Bereich 1%.&lt;br /&gt;
&lt;br /&gt;
Der Ausgang sollte kurzschlussfest sein, was allerdings nicht bei allen Labornetzgeräten der Fall ist. Manche Geräte sind nur kurzzeitig kurzschlussfest (für einige Sekunden), normalerweise sind Labornetzgeräte dauerhaft kurzschlussfest.&lt;br /&gt;
&lt;br /&gt;
=== Labornetzteile mit erweiterten Funktionen ===&lt;br /&gt;
&lt;br /&gt;
Die Labornetzgeräte der gehobenen Preisklasse haben zusätzlich zu den Grundfunktionen noch weitere Funktionen, wie z.B.:&lt;br /&gt;
&lt;br /&gt;
* Abschaltbarer Ausgang&lt;br /&gt;
* Getrennte Anzeige von Soll- und Ist-Werten&lt;br /&gt;
* Höhere Messgenauigkeit der Istwerte als bei einfachen Geräten&lt;br /&gt;
* Einstellbare Grenzwerte für Strom, Spannung, Leistung&lt;br /&gt;
* Alarm/Abschaltung bei Überschreitung von einstellbaren Schwellwerten&lt;br /&gt;
* Programmierbare Spannungs-/Stromverläufe&lt;br /&gt;
* Master-Slave-Funktion für Reihen-/Parallelschaltung von mehreren Geräten&lt;br /&gt;
* Analoge Schnittstelle für Soll- und Istwerte&lt;br /&gt;
* PC-Schnittstelle&lt;br /&gt;
&lt;br /&gt;
== Wichtige Eigenschaften ==&lt;br /&gt;
&lt;br /&gt;
=== Lineare Netzgeräte vs. Schaltnetzgeräte ===&lt;br /&gt;
&lt;br /&gt;
Es gibt bei Labornetzgeräten sowohl linear geregelte als auch Schaltnetzteile.&lt;br /&gt;
&lt;br /&gt;
Lineare Netzgeräte haben den Vorteil, dass die Regelung üblicherweise schneller und genauer ist. Die Ausgangskapazität ist bei linearen Netzgeräten relativ klein, dadurch kann die Strombegrenzung sehr schnell ansprechen.&lt;br /&gt;
&lt;br /&gt;
Schaltnetzgeräte haben dagegen einen besseren Wirkungsgrad, erzeugen also weniger Abwärme und sind kleiner und leichter als lineare Netzgeräte gleicher Leistung. Deshalb sind vor allem Labornetzgeräte mit hoher Leistung bevorzugt als Schaltnetzteil aufgebaut.&lt;br /&gt;
&lt;br /&gt;
Wenn bei Schaltnetzgeräten eine sehr kleine Ausgangs-Spannung eingestellt wird, wird diese oft nicht sauber ausgeregelt. Meistens brauchen solche Geräte eine bestimmte Mindestspannung am Ausgang.&lt;br /&gt;
&lt;br /&gt;
Weiterhin besteht bei Schaltnetzteilen die Gefahr, dass am Ausgang Störungen sichtbar sind, die durch die interne PWM erzeugt werden.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Weiterhin gibt es auch Geräte, bei denen ein Schaltnetzteil und eine lineare Regelung kombiniert sind. Dadurch werden die Vorteile von beiden Verfahren kombiniert, es ergeben sich dadurch aber auch einige Probleme:&lt;br /&gt;
&lt;br /&gt;
* Bei schnellen Laständerungen kann es passieren, dass das Schaltnetzteil nicht schnell genug nachregelt. Dadurch ändert sich das Regelverhalten und die Ausgangsspannung bzw. Strom sind dann nicht mehr so stabil wie bei einem richtigen linear geregelten Netzgerät. &lt;br /&gt;
&lt;br /&gt;
* Bei schnellen periodischen Laständerungen kann es zusätzlich passieren, dass die Verlustleistung im Linearregler sehr viel höher wird als im Betrieb mit konstanter Ausgangsleistung. Da die lineare Endstufe meistens nicht dafür dimensioniert ist, kann es hier thermische Probleme geben.&lt;br /&gt;
&lt;br /&gt;
=== Verlustleistung und Kühlung === &lt;br /&gt;
&lt;br /&gt;
Das ist vor allem bei linear geregelten Geräten ein sehr wichtiges Kapitel, da eine gute Kühlung relativ viel Geld kostet und die Gerätehersteller hier gerne sparen. Folgende Punkte sollten hier beachtet werden:&lt;br /&gt;
&lt;br /&gt;
==== Passive Kühlung oder Kühlung mit Lüfter ====&lt;br /&gt;
Geräte mit passiver Kühlung erzeugen keine Geräusche, was ein großer Vorteil ist. Passive Kühlung ist aber nur bei Geräten mit relativ geringer Leistung üblich. Bei Lüfter-gekühlen Geräten sollte darauf geachtet werden, dass der Lüfter relativ ruhig läuft.&lt;br /&gt;
&lt;br /&gt;
==== Außenliegender Kühlkörper ====&lt;br /&gt;
Bei passiv gekühlten Geräten kann der Kühler ziemlich warm werden. Wenn der Kühler außen am Gehäuse montiert ist, besteht die Gefahr, dass man ihn versehentlich berührt und sich verbrennt oder dass wärmeempfindliche Gegenstände (z.B. kunststoff-isolierte Leitungen) bei Berührung beschädigt werden. Deshalb sollte man Geräte bevorzugen, bei denen der Kühler innerhalb des Gehäuses montiert ist.&lt;br /&gt;
&lt;br /&gt;
==== Lüftungsschlitze ====&lt;br /&gt;
Bei Geräten, die Lüftungsschlitze auf der Oberseite haben, besteht die Gefahr, dass Gegenstände reinfallen können, wodurch das Gerät beschädigt werden kann. Weiterhin kann es passieren, dass der Luftstrom durch die Schlitze behindert wird, wenn man etwas auf dem Gerät ablegt oder mehrere Geräte aufeinander stapelt.&lt;br /&gt;
Je nach dem, wo das Gerät aufgestellt werden soll, können deshalb seitliche Lüftungsschlitze vorteilhaft sein. Allerdings sind seitliche Lüftungsöffnungen meistens mit einem aktiven Lüfter kombiniert.&lt;br /&gt;
&lt;br /&gt;
==== Dimensionierung der Kühlkörper und Leistungstransistoren ====&lt;br /&gt;
Bei vielen billigen Netzgeräten ist die Kühlung zu knapp dimensioniert. Das kann man relativ einfach testen, indem man den Ausgangsspannung und Strom jeweils auf Maximalwerte einstellt und dann den Ausgang kurzschließt.&lt;br /&gt;
&lt;br /&gt;
In diesem Zustand sollte das Gerät längere Zeit (einige Stunden) betrieben werden, bis alles thermisch eingeschwungen ist. Dann muss bei allen Leistungsbauteilen die Temperatur gemessen werden, am einfachsten geht das mit einer Wärmebildkamera. Es sollten nach Möglichkeit keine Temperaturen oberhalb von 100°C auftreten. Wärme-empfindliche Bauteile (z.B. Elkos) sollten nicht wärmer als 70°C sein.&lt;br /&gt;
&lt;br /&gt;
Besonders kritisch sind hier:&lt;br /&gt;
* Netztrafo&lt;br /&gt;
* Gleichrichter&lt;br /&gt;
* Leistungstransistoren und Kühlkörper&lt;br /&gt;
&lt;br /&gt;
=== Stabilität und Genauigkeit ===&lt;br /&gt;
&lt;br /&gt;
Wichtige Eigenschaften bei Labornetzgeräten ist die Stabilität und die Genauigkeit.&lt;br /&gt;
&lt;br /&gt;
==== Stabilität ====&lt;br /&gt;
&lt;br /&gt;
Damit wird angegeben, wie konstant ein eingestellter Wert über einen längeren Zeitraum gehalten wird. Hier ist wichtig, dass das Gerät einen kleinen Temperaturkoeffizient hat, so dass die Ausgangsspannung auch bei Temperaturschwankungen möglichst stabil bleibt.&lt;br /&gt;
&lt;br /&gt;
==== Genauigkeit ====&lt;br /&gt;
&lt;br /&gt;
Hier muss unterschieden werden zwischen der Anzeigegenauigkeit und der Einstellgenauigkeit.&lt;br /&gt;
&lt;br /&gt;
Die Genauigkeit der Anzeige gibt an, wie genau die angezeigte Ausgangsspannung oder Strom mit der tatsächlichen Spannung übereinstimmt (siehe dazu auch  Artikel [[Auflösung und Genauigkeit]]).&lt;br /&gt;
&lt;br /&gt;
Die Einstellgenauigkeit gibt an, wie genau ein bestimmter Sollwert eingestellt werden kann und wie gut die tatsächlichen Werte mit den Sollwerten übereinstimmen. Bei Geräten mit digitaler Sollwertvorgabe muss hier die kleinste Schrittweite beachtet werden.&lt;br /&gt;
&lt;br /&gt;
== Weitere Funktionen ==&lt;br /&gt;
&lt;br /&gt;
=== Schnittstelle ===&lt;br /&gt;
&lt;br /&gt;
Einige Labornetzgeräte bieten eine Schnittstelle zum PC, damit können sie als per Software steuerbares Netzgerät verwendet werden. Will man das Netzgerät per Mikrocontroller steuern, so sind Typen mit [[RS232]] Anschluß den Typen mit [[USB]] vorzuziehen.&lt;br /&gt;
&lt;br /&gt;
=== Beleuchtung ===&lt;br /&gt;
&lt;br /&gt;
Folgende Display-Arten sind bei Labornetzgeräten üblich:&lt;br /&gt;
* Analoginstrument (unbeleuchtet oder beleuchtet)&lt;br /&gt;
* LCD 7-Segment Anzeige (unbeleuchtet oder beleuchtet)&lt;br /&gt;
* LCD Punktmatrix-Anzeige (in der Regel beleuchtet)&lt;br /&gt;
* LED 7-Segment Anzeige (selbstleuchtend)&lt;br /&gt;
* OLED-Anzeigen (selbstleuchtend)&lt;br /&gt;
* VFD-Anzeigen (selbstleuchtend)&lt;br /&gt;
&lt;br /&gt;
Anzeigen mit Beleuchtung bzw. selbstleuchtende Anzeigen sind wesentlich besser ablesbar als unbeleuchtete LCD-Anzeigen. Da Labornetzgeräte immer am Netz betrieben werden, ist der Stromverbrauch der Beleuchtung nicht relevant.&lt;br /&gt;
&lt;br /&gt;
Unbeleuchtete LCD-Anzeigen sind bei schlechter Beleuchtung oder ungünstigem Blickwinkel manchmal schlecht ablesbar, bei 7-Segment LED-Anzeigen ist die Ablesbarkeit wesentlich besser. &lt;br /&gt;
&lt;br /&gt;
Mit 7-Segment Anzeigen lassen sich allerdings nur Ziffern und einige wenige Buchstaben darstellen. Für Geräte mit komplexen Einstellungen und Menu-Führung werden deshalb häufig Punkt-Matrix LCD-Anzeigen verwendet.&lt;br /&gt;
&lt;br /&gt;
Mit VFD-Anzeigen [http://de.wikipedia.org/wiki/Fluoreszenzanzeige], die ebenfalls sehr gut ablesbar sind, könnnen auch komplexe Menüs dargestellt werden. Diese haben einen sehr weiten Blickwinkel und sehr scharfe und klare Zeichen. Allerdings sind diese Anzeigen relativ teuer, weshalb sie vor allem in eher teueren Geräten eingesetzt werden.&lt;br /&gt;
&lt;br /&gt;
== Vergleichstabelle Labornetzgeräte ==&lt;br /&gt;
&lt;br /&gt;
In den folgende Tabellen werden wichtige technischen Daten einiger aktueller Labornetzgeräte zusammengestellt. Um die Übersichtlichkeit zu erhöhen, werden die Geräte eingeteilt in einfache Geräte und Geräte mit Zusatzfunktionen&lt;br /&gt;
&lt;br /&gt;
Die Einteilung geschieht aufgrund der Funktionen, die die Geräte bieten. Das ist also keine Aussage über die Qualität der Geräte.&lt;br /&gt;
&lt;br /&gt;
=== Einfache lineare Labornetzgeräte ===&lt;br /&gt;
&lt;br /&gt;
Hier werden Geräte aufgelistet, welche neben den Grundfunktionen (Strom- und Spannungseinstellung, Anzeige der Istwerte) keine weiteren Funktionen besitzen.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; class=&amp;quot;wikitable sortable&amp;quot; id=&amp;quot;einfache&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!Hersteller&lt;br /&gt;
!Bezeichnung&lt;br /&gt;
!Preis [EUR]&lt;br /&gt;
!Spannung [V]&lt;br /&gt;
!Strom [A]&lt;br /&gt;
!Kanäle&lt;br /&gt;
|-&lt;br /&gt;
|Agilent&lt;br /&gt;
|E3616A&lt;br /&gt;
|620&lt;br /&gt;
|35&lt;br /&gt;
|1.7&lt;br /&gt;
|1&lt;br /&gt;
|-&lt;br /&gt;
|Hameg&lt;br /&gt;
|HM8040-3(Benötigt HM8001)&lt;br /&gt;
|280&lt;br /&gt;
|20 + 20 + 5&lt;br /&gt;
|0.5 + 0.5 + 1&lt;br /&gt;
|3&lt;br /&gt;
|-&lt;br /&gt;
|Peaktech&lt;br /&gt;
|6080&lt;br /&gt;
|50&lt;br /&gt;
|15&lt;br /&gt;
|3&lt;br /&gt;
|1&lt;br /&gt;
|-&lt;br /&gt;
|McVoice&lt;br /&gt;
|WNT0-15-2000&lt;br /&gt;
|38&lt;br /&gt;
|15&lt;br /&gt;
|2&lt;br /&gt;
|1&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|Statron&lt;br /&gt;
|2223.1&lt;br /&gt;
|150&lt;br /&gt;
|30&lt;br /&gt;
|2.5&lt;br /&gt;
|1&lt;br /&gt;
|-&lt;br /&gt;
|Statron&lt;br /&gt;
|2250.0&lt;br /&gt;
|225&lt;br /&gt;
|40&lt;br /&gt;
|5&lt;br /&gt;
|1&lt;br /&gt;
|-&lt;br /&gt;
|Statron&lt;br /&gt;
|2229.2&lt;br /&gt;
|260&lt;br /&gt;
|40 + 40&lt;br /&gt;
|2.5 + 2.5&lt;br /&gt;
|2&lt;br /&gt;
|-&lt;br /&gt;
|Statron&lt;br /&gt;
|2229.5&lt;br /&gt;
|340&lt;br /&gt;
|32 + 32 + 5&lt;br /&gt;
|3 + 3 + 3&lt;br /&gt;
|3&lt;br /&gt;
|-&lt;br /&gt;
|Statron&lt;br /&gt;
|2225.6&lt;br /&gt;
|310&lt;br /&gt;
|30 + 30&lt;br /&gt;
|5 + 5&lt;br /&gt;
|2&lt;br /&gt;
|-&lt;br /&gt;
|Voltcraft&lt;br /&gt;
|PS-1302 D&lt;br /&gt;
|95&lt;br /&gt;
|30&lt;br /&gt;
|2&lt;br /&gt;
|1&lt;br /&gt;
|-&lt;br /&gt;
|Voltcraft&lt;br /&gt;
|VLP 1303pro&lt;br /&gt;
|180&lt;br /&gt;
|30 + 6&lt;br /&gt;
|3 + 2&lt;br /&gt;
|2&lt;br /&gt;
|-&lt;br /&gt;
|Voltcraft&lt;br /&gt;
|VSP 2403&lt;br /&gt;
|345&lt;br /&gt;
|40 + 40 + 6&lt;br /&gt;
|3 + 3 + 1.5&lt;br /&gt;
|3&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Einfache Schaltnetzgeräte ===&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; class=&amp;quot;wikitable sortable&amp;quot; id=&amp;quot;einfache&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!Hersteller&lt;br /&gt;
!Bezeichnung&lt;br /&gt;
!Preis [EUR]&lt;br /&gt;
!Spannung [V]&lt;br /&gt;
!Strom [A]&lt;br /&gt;
!Kanäle&lt;br /&gt;
|-&lt;br /&gt;
|Delta Elektronika&lt;br /&gt;
|ES 030-5&lt;br /&gt;
|624&lt;br /&gt;
|30&lt;br /&gt;
|5&lt;br /&gt;
|1&lt;br /&gt;
|-&lt;br /&gt;
|Quatpower&lt;br /&gt;
|LN-3003&lt;br /&gt;
|40&lt;br /&gt;
|30&lt;br /&gt;
|3&lt;br /&gt;
|1&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Netzgeräte mit Zusatzfunktionen ===&lt;br /&gt;
&lt;br /&gt;
Diese Geräte haben mindestens folgende Funktionen:&lt;br /&gt;
* abschaltbare Ausgänge&lt;br /&gt;
* Anzeige der Sollwerte für Strom und Spannung&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; class=&amp;quot;wikitable sortable&amp;quot; id=&amp;quot;hochwertige&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!Hersteller&lt;br /&gt;
!Bezeichnung&lt;br /&gt;
!Preis [EUR]&lt;br /&gt;
!Spannung [V]&lt;br /&gt;
!Strom [A]&lt;br /&gt;
!Kanäle&lt;br /&gt;
!linear/getaktet&lt;br /&gt;
|-&lt;br /&gt;
|Agilent&lt;br /&gt;
|U8001A&lt;br /&gt;
|290&lt;br /&gt;
|30&lt;br /&gt;
|3&lt;br /&gt;
|1&lt;br /&gt;
|linear&lt;br /&gt;
|-&lt;br /&gt;
|Agilent&lt;br /&gt;
|E3616A&lt;br /&gt;
|620&lt;br /&gt;
|35&lt;br /&gt;
|1.7&lt;br /&gt;
|1&lt;br /&gt;
|linear&lt;br /&gt;
|-&lt;br /&gt;
|Agilent&lt;br /&gt;
|E3643A&lt;br /&gt;
|690&lt;br /&gt;
|35 / 60 (umschaltbar)&lt;br /&gt;
|1.4 / 0.8&lt;br /&gt;
|1&lt;br /&gt;
|linear&lt;br /&gt;
|-&lt;br /&gt;
|Agilent&lt;br /&gt;
|E3632A&lt;br /&gt;
|990&lt;br /&gt;
|15 / 30 (umschaltbar)&lt;br /&gt;
|7 / 4&lt;br /&gt;
|1&lt;br /&gt;
|linear&lt;br /&gt;
|-&lt;br /&gt;
|BK Precision&lt;br /&gt;
|BK 1786&lt;br /&gt;
|490&lt;br /&gt;
|32&lt;br /&gt;
|3&lt;br /&gt;
|1&lt;br /&gt;
|linear&lt;br /&gt;
|-&lt;br /&gt;
|BK Precision&lt;br /&gt;
|BK 1788&lt;br /&gt;
|615&lt;br /&gt;
|32&lt;br /&gt;
|6&lt;br /&gt;
|1&lt;br /&gt;
|linear&lt;br /&gt;
|-&lt;br /&gt;
|BK Precision&lt;br /&gt;
|BK 9130&lt;br /&gt;
|685&lt;br /&gt;
|30 + 30 + 5&lt;br /&gt;
|3 + 3 + 3&lt;br /&gt;
|3&lt;br /&gt;
|linear&lt;br /&gt;
|-&lt;br /&gt;
|EA Elektro-Automatik&lt;br /&gt;
|PSI 6032-03&lt;br /&gt;
|425&lt;br /&gt;
|32&lt;br /&gt;
|3&lt;br /&gt;
|1&lt;br /&gt;
|linear&lt;br /&gt;
|-&lt;br /&gt;
|EA Elektro-Automatik&lt;br /&gt;
|EA-PS 2042-06B&lt;br /&gt;
|235&lt;br /&gt;
|42&lt;br /&gt;
|6&lt;br /&gt;
|1&lt;br /&gt;
|getaktet&lt;br /&gt;
|-&lt;br /&gt;
|EA Elektro-Automatik&lt;br /&gt;
|EA-PS 2342-06B&lt;br /&gt;
|580&lt;br /&gt;
|42 + 42 + 6&lt;br /&gt;
|6 + 6 + 4&lt;br /&gt;
|3&lt;br /&gt;
|getaktet&lt;br /&gt;
|-&lt;br /&gt;
|EA Elektro-Automatik&lt;br /&gt;
|EA-PS 3032-05B&lt;br /&gt;
|355&lt;br /&gt;
|32&lt;br /&gt;
|5&lt;br /&gt;
|1&lt;br /&gt;
|linear&lt;br /&gt;
|-&lt;br /&gt;
|EA Elektro-Automatik&lt;br /&gt;
|EA-PS 8032-10 DT&lt;br /&gt;
|940&lt;br /&gt;
|32&lt;br /&gt;
|10&lt;br /&gt;
|1&lt;br /&gt;
|getaktet&lt;br /&gt;
|-&lt;br /&gt;
|ELV&lt;br /&gt;
|PPS 5330&lt;br /&gt;
|120&lt;br /&gt;
|30&lt;br /&gt;
|3&lt;br /&gt;
|1&lt;br /&gt;
|linear&lt;br /&gt;
|-&lt;br /&gt;
|ELV&lt;br /&gt;
|SPS 5630&lt;br /&gt;
|200&lt;br /&gt;
|30&lt;br /&gt;
|6 (max. 75W)&lt;br /&gt;
|1&lt;br /&gt;
|getaktet&lt;br /&gt;
|-&lt;br /&gt;
|Hameg&lt;br /&gt;
|HM7042-5&lt;br /&gt;
|685&lt;br /&gt;
|32 + 32 + 5,5&lt;br /&gt;
|2 + 2 + 5&lt;br /&gt;
|3&lt;br /&gt;
|linear&lt;br /&gt;
|-&lt;br /&gt;
|Hameg&lt;br /&gt;
|HMP2020&lt;br /&gt;
|1190&lt;br /&gt;
|32 + 32&lt;br /&gt;
|10 + 5&lt;br /&gt;
|2&lt;br /&gt;
|getaktet + linear&lt;br /&gt;
|-&lt;br /&gt;
|Hameg&lt;br /&gt;
|HMP2030&lt;br /&gt;
|1500&lt;br /&gt;
|32 + 32 + 32&lt;br /&gt;
|5 + 5 + 5&lt;br /&gt;
|3&lt;br /&gt;
|getaktet + linear&lt;br /&gt;
|-&lt;br /&gt;
|Rigol&lt;br /&gt;
|DP832 **)&lt;br /&gt;
|362&lt;br /&gt;
|30 + 30 + 5&lt;br /&gt;
|3 + 3 + 3&lt;br /&gt;
|3&lt;br /&gt;
|linear&lt;br /&gt;
|-&lt;br /&gt;
|Voltcraft&lt;br /&gt;
|VLP 1405pro&lt;br /&gt;
|1190&lt;br /&gt;
|40 + 6&lt;br /&gt;
|5 + 2&lt;br /&gt;
|2&lt;br /&gt;
|linear&lt;br /&gt;
|-&lt;br /&gt;
|PeakTech&lt;br /&gt;
|1885&lt;br /&gt;
|270&lt;br /&gt;
|40&lt;br /&gt;
|5&lt;br /&gt;
|1&lt;br /&gt;
|getaktet&lt;br /&gt;
|-&lt;br /&gt;
|Voltcraft&lt;br /&gt;
|VLP 2403pro&lt;br /&gt;
|320&lt;br /&gt;
|40 + 40 + 6&lt;br /&gt;
|3 + 3 + 2&lt;br /&gt;
|3&lt;br /&gt;
|linear&lt;br /&gt;
|-&lt;br /&gt;
|Voltcraft&lt;br /&gt;
|VSP 2410&lt;br /&gt;
|470&lt;br /&gt;
|40 + 40 + 6&lt;br /&gt;
|10 + 10 + 1.5&lt;br /&gt;
|3&lt;br /&gt;
|getaktet&lt;br /&gt;
|-&lt;br /&gt;
|TTI&lt;br /&gt;
|EX355R&lt;br /&gt;
|330&lt;br /&gt;
|35&lt;br /&gt;
|5&lt;br /&gt;
|1&lt;br /&gt;
|Mixed-mode (getaktet + linear)&lt;br /&gt;
|-&lt;br /&gt;
|TTI&lt;br /&gt;
|EX354RD&lt;br /&gt;
|480&lt;br /&gt;
|35 + 35&lt;br /&gt;
|4 + 4&lt;br /&gt;
|2&lt;br /&gt;
|Mixed-mode (getaktet + linear)&lt;br /&gt;
|-&lt;br /&gt;
|TTI&lt;br /&gt;
|EX354RT&lt;br /&gt;
|540&lt;br /&gt;
|35 + 35 + (1,5-5)&lt;br /&gt;
|4 + 4 + 5&lt;br /&gt;
|3&lt;br /&gt;
|Mixed-mode (getaktet + linear)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
 **) Das Rigol DP832(A) schaltet die Ausgänge nicht physisch/galvanisch ab. Die Power-MOSFETs der Ausgangsstufe werden lediglich auf Soll-NULL gesetzt. Dies kann bei Drift auch durchaus ungleich 0,00 Volt bedeuten!&lt;br /&gt;
&lt;br /&gt;
== Siehe auch ==&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Grundlagen]]&lt;br /&gt;
[[Kategorie:Spannungsversorgung_und_Energiequellen]]&lt;/div&gt;</summary>
		<author><name>Promeus</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=Scheduler_mit_Erweiterung_zum_Mini-Betriebssystem&amp;diff=92438</id>
		<title>Scheduler mit Erweiterung zum Mini-Betriebssystem</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=Scheduler_mit_Erweiterung_zum_Mini-Betriebssystem&amp;diff=92438"/>
		<updated>2016-03-17T06:52:36Z</updated>

		<summary type="html">&lt;p&gt;Promeus: Änderung 92429 von 37.139.16.18 (Diskussion) rückgängig gemacht.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;big&amp;gt; &amp;lt;u&amp;gt;&#039;&#039;&#039;Vorwort&#039;&#039;&#039;&amp;lt;/u&amp;gt;&amp;lt;/big&amp;gt;:&amp;lt;br /&amp;gt;&lt;br /&gt;
Dieser Artikel behandelt die Erstellung eines Schedulers, der zu einem Mini-OS erweitert wird. Ziel ist es, das Verständnis sowie die Funktion eines OS besser verstehen zu können. Wie so manch ein anderer habe auch ich mich gefragt, wie ein Betriebssystem eigentlich funktioniert, und - weil Nachbauen eine der besten Möglichkeit ist etwas zu verstehen - habe mir mein eigenes kleines System geschrieben. Es geht nicht darum ein „Suppa-Duppa“ OS zu schreiben, sondern zu verstehen wie größere (RTOS-&amp;gt;Linux-&amp;gt;Windows) funktionieren. &amp;lt;br /&amp;gt;&lt;br /&gt;
Von: Sebastian Balz &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{Warnung |&lt;br /&gt;
&#039;&#039;&#039;Warnung&#039;&#039;&#039;  &lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
Es werden gute Kenntnisse in C und Assembler, sowie gute Kenntnisse der CPU benötigt. Des Weiteren ersetzt ein selbst geschriebenes OS keinesfalls ein herkömmliches OS (RTOS …), da diese zuverlässiger und effizienter laufen und mehr Funktionen haben.&lt;br /&gt;
&lt;br /&gt;
}}&amp;lt;br /&amp;gt;&lt;br /&gt;
Alle Beispiele beziehen sich auf einen ARM-Cortex-M4 (SAM4SD32C), sollten jedoch auf alle gängigen µC portiert werden können. Um den Kontext-Switch zu vereinfachen werden keine Gleitkomma Berechnungen unterstützt.  &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
= Voraussetzungen =&lt;br /&gt;
 &amp;lt;br /&amp;gt;&lt;br /&gt;
* Gute C und Assembler Kenntnisse &lt;br /&gt;
* Gute Kenntnisse des UC‘s&lt;br /&gt;
* Viel Zeit und Motivation :)&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Zielsetzung= &lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
Das beschriebene System soll in der Lage sein:&lt;br /&gt;
* Zwischen verschiedenen Aufgaben (Tasks) zu wechseln(Context-Switch). D.h. jeder Task hat das Gefühl, dass der UC ihm gehört. &lt;br /&gt;
* Fähigkeit der Task’s sich selber zu beenden oder zu pausieren, um so CPU-Ressourcen zu sparen. &lt;br /&gt;
* Keinerlei Auswirkung aufs Interrupt Handling.&lt;br /&gt;
* Ein Zeit Management&lt;br /&gt;
* Tasks und Threads mit Return-Wert und Kill&lt;br /&gt;
* Kommunikation zwischen den Tasks mit Schreib-Kontrolle &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Grundlagen = &lt;br /&gt;
&lt;br /&gt;
Die Hauptaufgabe des Systems ist es, zwischen den verschiedenen Tasks wechseln zu können. &lt;br /&gt;
Um dies realisieren zu können, muss man erst einmal verstehen, wie überhaupt ein Kontext ausschaut.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Register== &lt;br /&gt;
Register sind die Speicherzellen, die direkt mit der CPU verbunden sind. Sie haben die besten Lese- und Schreibraten, sind jedoch „teuer“, weshalb in einer CPU nur relativ wenige Register vorhanden sind. &lt;br /&gt;
In der ARM-Cortex-M4 Serie sind es 12 sog. „General-Purpose Register“ und ein paar Spezial-Register. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Datei:Register Balz.PNG|900px]]&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Quelle: Datenblatt Register&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Stack == &lt;br /&gt;
&lt;br /&gt;
Der Stack ist ein LIFO (Last in, First out), d.h. der zuletzt hinzugefügte Wert wird als erstes wieder ausgelesen. Über Push (Speicher) und POP (Laden) kann man Register-Inhalte auf den Stack speichern und laden.&lt;br /&gt;
Des Weiteren gibt es einen Stack-Pointer. Dieser zeigt immer auf die letzte Adresse im Stack. &lt;br /&gt;
Der Stack baut sich von einer Speicherzelle aus nach unten auf. D.h., wenn ein Wert auf den Stack geschrieben wird, verringert sich die Stack-Adresse. &lt;br /&gt;
&lt;br /&gt;
Jedes Programm schreibt und erstellt seine lokalen Variablen auf dem Stack (RAM). Bei einem Funktionsaufruf werden Übergabeparameter und die Rücksprungadresse im Stack hinterlegt. &lt;br /&gt;
Die aufgerufene Funktion des Speichers (Push) hat also so viele Register auf dem Stack, wie sie selber Register benötigt, damit beim „Return“ wieder die Start-Register vom Stack geholt (POP) werden können und damit der „vor-Funktion-Zustand“ wieder hergestellt ist. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Exception Call ==&lt;br /&gt;
Wird eine Funktion durch einen Interrupt unterbrochen, werden R0-R3,R12, LR, PC und xPSR (eine Verbindung aus “Interrupt Program Status Register“, “Application Program Status Register“, „Program Status Register“ und „Execution Program Status Register“) auf den Stack gepusht.&lt;br /&gt;
[[Datei:Stack Balz.PNG]]&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Quelle Datenblatt: Interrupt Stack &amp;lt;br /&amp;gt;&lt;br /&gt;
Der µC schreibt beim “Interrupt entry“ eine EXC_Return_Value ins Link um zu signalisieren, dass gerade eine Interrupt-Routine aktiv ist.   &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Datei:EXC Return Balz.PNG |700px]]&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Quelle: Datenblatt Exc_Return &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
Beim Verlassen des ISRs müssen nun nur noch die Register R0-R3, LR,SP und die Status-Register wieder hergestellt werden.   &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Context-Switch =&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Theorie==&lt;br /&gt;
Um nun den aktuellen Kontext zu wechseln, müssen in einem Interrupt sämtliche Register gespeichert werden (PUSH R0-R12) und der Stack-Pointer auf den Stack des neuen Task‘s verschoben werden. Nun können die Register wieder hergestellt werden (POP R0-R12). Das Link-Register kann hier außer Acht gelassen werden, da es immer den Wert 0xFFFFFF9 (Return to Thread mode without floating point calculation) hat. &lt;br /&gt;
Wenn man nun das ISR von außen betrachtet, darf man keinen Unterschied zum letzten Speicherzeitpunkt feststellen.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
[[Datei:Move Stack Balz.jpg]]&lt;br /&gt;
&lt;br /&gt;
== Praxis ==&lt;br /&gt;
=== Speicher ===&lt;br /&gt;
Die Praxis ist leider etwas komplizierter: Zunächst einmal muss der Task-Stack im Speicher reserviert werden. Hierfür kann entweder malloc() verwendet werden - um dynamisch zur Laufzeit den Speicher zu reservieren - oder man „belegt“ den Speicher über Arrays. Da ein Stack-Overflow mit, dass Schlimmste ist, was unserem System passieren kann (Überschreibung der anderen Stacks/globalen Variablen), sollte die Größe des Stacks eher großzügig definiert sein.&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Stackerzeugen=== &lt;br /&gt;
Da ein Stack sich von oben nach unten (aus Sicht des Speichers) aufbaut, muss der Stack-Pointer auf die Speicheradresse des letzten Array-Elementes zeigen.&lt;br /&gt;
Da beim Kontext-Switch der letzte Zustand wiederhergestellt wird, muss nun der Stack befüllt werden: &lt;br /&gt;
&lt;br /&gt;
* Programm Counter: hier wird die Startadresse des Task‘s eingetragen &lt;br /&gt;
* Link–Register: Da die Task-Ansicht keine Funktion ist und im Normalfall nicht irgendwann verlassen wird, kann dieses Feld freigelassen werden. Alternativ kann auch auf die Adresse eines Dummy-Handlers verwiesen werden, der sich dann um die Beendigung des Tasks kümmert.&lt;br /&gt;
* Program Status Register: Im Status Register (xPSR) wird der Wert hinterlegt, der der CPU signalisiert, dass der aktuelle Programmabschnitt sich gerade in einem Interrupt befindet.&lt;br /&gt;
* Register 0-3,12 sind die Register, die vor einem Interrupt gesichert und nach dem Interrupt wieder hergestellt werden. Da der Task noch keine Registerwerte verwendet hat, können diese Zellen frei bleiben. &lt;br /&gt;
&lt;br /&gt;
Wenn nun ein Kontext-Switch ausführt wird, wird man relativ schnell feststellen, dass etwas noch nicht passt. &lt;br /&gt;
Die Interrupt-Routine hat selber auch Variablen, die auf dem „alten“ Stack gespeichert und nach Verlassen des Stacks wieder vom Stack „gelöscht“ werden müssen. Diese müssen in dem neuen Stack berücksichtigt werden. Leider kann man hier keinen pauschalen Wert nennen, was dazu führt, dass jede Veränderung an der Interrupt-Routine Folgen haben kann. So muss z.B. bei dem neuem Stack die Anzahl der lokalen Register einbezogen werden. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Kontext wechseln ===&lt;br /&gt;
Nun, da der Speicher reserviert und der Stack aufgebaut worden ist, kann man den Kontext wechseln. &lt;br /&gt;
Hierfür müssen alle General-Purpose-Register auf den Stack gespeichert werden. &lt;br /&gt;
Da zu einem späteren Zeitpunkt der Stack wieder zurück gewechselt werden soll, muss nun der aktuelle Stack-Pointer gesichert werden, z.B. in der Task_List (siehe Task_Liste).&lt;br /&gt;
Der „alte“ Kontext ist nun gesichert, und so kann der „Neue“ geladen werden. Zunächst muss der Stack-Pointer umgezogen werden.&lt;br /&gt;
Um sicher zu stellen, dass der µC nun den neuen Stack auch verwendet, muss ein „Pipeline flush“ getätigt werden. Hierfür ist im TUMB2-Befehlssatz der Befehl „ISB“ (Instruction Synchronization Barrier) vorhanden, der direkt nach dem Stack-Pointer-Tausch ausgeführt werden sollte. &lt;br /&gt;
Nun können die Register 0-12 wieder hergestellt werden. Das Linkregister verändert sich nicht, da das Exc_return Value immer gleich ist.&lt;br /&gt;
&lt;br /&gt;
Wird nun die Interrupt Routine verlassen, werden die lokalen Variablen vom Stack gelöscht und die ISR-Inhalte gePOP’t. Der Prozessor springt dann „zurück“ in den neuen Task.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== BSP1 ==== &lt;br /&gt;
Im folgenden Bild kann man gut sehen, wie zwei Tasks (weiße Kästen: PWM) abwechselnd aufgerufen werden. Dargestellt ist die Aktivität der Tasks als Funktion der Zeit; alle 50 ms wird in diesem Beispiel der Task gewechselt: &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Datei:Context Switch.JPG | 900px]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Task-Liste==&lt;br /&gt;
Damit das System weiß, wie viele und welche Tasks gerade ausgeführt werden, muss eine Liste erstellt werden, in der die jeweiligen IDs der Tasks enthalten sind, sowie:&lt;br /&gt;
* Stack-Pointer&lt;br /&gt;
* Stack Start Adresse&lt;br /&gt;
* Stack-Size&lt;br /&gt;
Optional kann in dieser Liste auch noch: &lt;br /&gt;
* Task Status/Message&lt;br /&gt;
* Thread Return_Value&lt;br /&gt;
enthalten sein.&lt;br /&gt;
=== Stack Pointer === &lt;br /&gt;
Um bei einem Kontext Switch den alten Task wieder herzustellen, muss bekannt sein, an welcher Stelle im Speicher der Stack liegt. &lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
=== Stack Start Adresse === &lt;br /&gt;
Ist relevant, wenn überprüft werden soll, ob es einen Stack Overflow gab. Sollte es ein Stack-Overflow geben muss dies gemeldet und das System wieder auf den Ursprungszustand gesetzt werden.&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Stack-Size === &lt;br /&gt;
Wird in Verbindung mit der Stack_Start Adresse für die Overflow-Erkennung benötigt.&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
=== Task Status === &lt;br /&gt;
Hier kann ein Task seinen Status mitteilen&lt;br /&gt;
* IDLE&lt;br /&gt;
* Started(läuft der Task gerade?)&lt;br /&gt;
* Oder soll der Stack des Task‘s aufgebaut werden&lt;br /&gt;
* Lese Fehler (siehe Speicher Management)&lt;br /&gt;
&lt;br /&gt;
=== Return Value === &lt;br /&gt;
wird ein Thread auf geplante Weise verlassen – (d.h. er beendet sich selber) –kann dieser auch ein Return_Value als Ergebnis hinterlegen. Hat der Thread z.B. die Aufgabe, eine Nutzereingabe zu erkennen und zu analysieren, so kann der erstellende Task (der die ID kennt) über das Ergebnis informiert werden.  &lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
== Zeitmanagement ==&lt;br /&gt;
&lt;br /&gt;
=== System-Zeit ===&lt;br /&gt;
Oftmals kommt es vor, dass ein Task eine Tätigkeit alle x ms ausführen soll. Da jedoch die Tasks möglichst unabhängig sein sollen (sie wissen also nicht mit welcher Taktrate der Prozessor läuft), ist es sinnvoll, über eine RTT oder einen Timer/Counter die Zeit mitzuzählen und diese über eine Funktion allen Tasks und Threads zur Verfügung zu stellen. &lt;br /&gt;
Auch ist es sinnvoll, eine Funktion bereit zu stellen, die überprüft ob eine bestimmt Zeit vergangen ist; unter Berücksichtigung, dass die System-Zeit irgendwann wieder bei 0 anfängt. &lt;br /&gt;
Eine solche Funktion könnte wie folgt aussehen:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
int vergangene_zeit(int os_lasttime, int soll_time){&lt;br /&gt;
	int time_know = get_os_time(); // hole die aktuelle Systhem Zeit&lt;br /&gt;
	int delta;&lt;br /&gt;
	if (zeit-lasttime &amp;lt;0) // hat ein System-Zeit Wraparound stattgefunden &lt;br /&gt;
	{&lt;br /&gt;
		zeit += os_max_time; // addiere Max SysthemZeit drauf&lt;br /&gt;
	}&lt;br /&gt;
	delta = zeit-lasttime; &lt;br /&gt;
	return delta &amp;gt;= sollzeit;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
So kann ein Task einfach in einer  &amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt; while(!(vergangene_zeit(lasttime,soll_time))){}&amp;lt;/syntaxhighlight&amp;gt; darauf warten, dass die Soll Zeit abgelaufen ist. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
=== Kontext-Switch ===&lt;br /&gt;
Natürlich ist es auch wichtig, dass der Kontext-Switch zentral gesteuert wird. Hier ist es empfehlenswert, den Real-Time-Timer oder einen Timer/Counter zu verwenden, der die Systemzeit managt. Über ein Static counter kann/soll eine bestimmte Anzahl an Zyklen bestimmt werden, bei denen der Kontext-Switch getriggert wird. &lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== IDLE ===&lt;br /&gt;
Hat man mehrere Tasks die darauf warten, dass Zeit vergeht, wird viel Rechenleistung verbraucht, da die Tasks mit Nichtstun beschäftigt sind, während andere Tasks diese Rechenzeit gut brauchen könnten. &lt;br /&gt;
Um diesem Problem zu entgehen, sollte ein Task in der Lage sein, sich als inaktiv zu deklarieren. Dies könnte über einen Status-Bit geschehen, welches der Time_manager bei jedem Erhöhen der Systemzeit überprüft und den Kontext-Switch triggert.&lt;br /&gt;
Eine bessere Lösung wäre jedoch, zusätzlich zur IDLE Funktion einen Software Interrupt auszulösen, welcher den TC_Handler oder RTT_Handler des Zeitmanagements triggert. &lt;br /&gt;
So kann im Zeitmanagement geprüft werden, ob ein Task IDLE ist, oder ob der Interrupt auf herkömmliche Weise generiert worden ist. &lt;br /&gt;
Sollten ein Großteil oder alle Task IDLE sein, sollte die CPU in ein LOW-Power-Mode wechseln. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Beispiel 1====&lt;br /&gt;
&lt;br /&gt;
Im folgenden Beispiel kann gut erkannt werden, wie sich Task1 zur Hälfte der möglichen Laufzeit als IDLE deklariert und einen Kontext-Switch triggert. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
[[Datei:Task IDLE.JPG|900px]]&lt;br /&gt;
Saleae Logic Analyser: Task IDLE &lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Tasks und Threads zur Laufzeit erstellen und beenden =&lt;br /&gt;
&lt;br /&gt;
Eine weite Stärke eines solchen Systems ist es, dass dann ohne großen Aufwand einfach ein neuer Task oder Thread hinzugefügt werden kann.&lt;br /&gt;
Ein Thread hat eine feste Aufgabe die er erfüllen soll. Ist diese erfüllt, können weitere Ereignisse getriggert werden, oder der Thread kann beendet werden. &lt;br /&gt;
 &lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Starten ===&lt;br /&gt;
Hierfür muss lediglich ein neuer Stack mit Linkregister, Einsprung-Adresse etc. hinzugefügt werden und über die Task_Liste dem Zeitmanagement mitgeteilt werden, sodass es einen neuen Taskeintrag gibt, der gestartet werden soll. &lt;br /&gt;
==== Beispiel 2 ====&lt;br /&gt;
&lt;br /&gt;
Hier kann gut erkannt werden, wie Thread 1 während der Laufzeit erstellt wird und von nun an vom Scheduler aufgerufen wird. Hierdurch werden jedoch Task1 und Task2 seltener aufgerufen.&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
[[Datei:Thread start.JPG |900px]]&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Beenden ===&lt;br /&gt;
Ein Thread kann auf zwei Arten beendet werden. Die reguläre Art ist, dass er sich selber schließt. Hierfür kann eine Funktion geschrieben werden, die der Task_Liste mitteilt, dass der Task beim nächsten Kontext-Switch nicht mehr aufgerufen werden soll. Optional kann in der Task_List ein Return Value hinterlegt werden, damit der Ersteller des Tasks z. B. ein Ergebnis erhält. Hierbei ist wichtig, zuerst den Return_value zu setzen bevor der Task als beendet definiert wird, da ansonsten ein ungünstiges Timing mit dem Kontext-Switch das Schreiben des Return_Values verhindert. Nachdem Return_value und der Task als beendet definiert worden sind, sollte der Task einen Task_IDLE an den Zeitmanager senden, um so den Task direkt zu verlassen und keine Rechenzeit zu vergeuden.&lt;br /&gt;
Auch ist es nötig, dass der Ersteller des Threads die ID des Threads in der Task_Liste erhält, da hinter der ID des Threads auch der Return_Value gespeichert wird. &lt;br /&gt;
Eine andere Art ein Thread zu beenden ist, ihn zu killen. Wenn z. B. die Ausführung des Threads nicht mehr relevant ist, weil das Ergebnis zu spät kommen würde (Real-Time-OS), oder die Ausführung des Threads nicht mehr benötigt wird, kann man einen Thread auch über die Task-Liste von außen beenden. Hierbei muss nur das Task_Active-Bit gelöscht werden.&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Beispiel 3 ====&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
[[Datei:Thread closing.JPG|900px]]&lt;br /&gt;
&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
Hier kann gut erkannt werden, wie Thread1 wieder geschlossen wird. Dadurch werden Task 1 und Task 2 wieder öfter aufgerufen.  &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Interrupte =&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
Eigentlich sollte es keinerlei Probleme bereiten, einen Interrupt auszuführen, da dieser den aktuellen Task nicht berührt. &lt;br /&gt;
Es muss lediglich auf zwei Punkte Rücksicht genommen werden:&lt;br /&gt;
* Der Zeitmanager muss in der niedrigsten Priorität laufen. Würde er mit einer höheren Priorität laufen während gerade ein anderer Interrupt aktiv ist, würden die gespeicherten Register in den falschen Stack abgelegt. Die wieder herzustellenden Register kämen aus einem Stack, in dem keine Register gesichert worden sind. Dieser Vorgang würde beide Stacks zerstören.&lt;br /&gt;
* Während des Kontext Switches dürfen keine anderen Interrupts aktiv werden, da es auch hier zu Problemen mit den Stacks kommen könnte.&lt;br /&gt;
Deshalb ist es empfehlenswert, den Zeitmanager in der niedrigsten Priorität laufen zu lassen und während der Ausführung andere Interrupts zu unterbinden. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Erweiterung zum OS =&lt;br /&gt;
Von nun an sind die Übergänge zu einem Betriebssystem fließend. &lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
== Priorisierung ==&lt;br /&gt;
in Arbeit!&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Speicher Management == &lt;br /&gt;
Der erste Schritt in Richtung Betriebssystem ist ein Speicher-Management, welches in der Lage ist, Speicher zu reservieren und gegebenenfalls auch zu blockieren, sowie freizugeben. Hier kommt wieder – wie beim Stack-Aufbau - malloc() oder ein Array zum Einsatz. Der Einfachheit halber werden die einzelnen Speicher über ID’s angesprochen. Auch muss zentral geregelt werden, ob die jeweilige ID bereits in Verwendung ist. &lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
=== Erstellen ===&lt;br /&gt;
Möchte ein Task oder Thread einen solchen Speicher erstellen, muss zunächst überprüft werden, ob noch Speicherplätze frei sind. In diesem Fall kann die ID der Speicherzelle zurückgegeben werden (return-Wert). Andernfalls sollte ein Error_Value zurück geliefert werden.&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
=== Freigeben ===&lt;br /&gt;
Um Speicher zu sparen, müssen Task und Threads in der Lage sein, den Speicher wieder frei zu geben. Sollte ein Task der beim Speicher durch einen Kontext –Switch unterbrochen worden ist, auf denselben Speicher zugreifen, sollte vor dem Freigeben überprüft werden, ob und warum der Speicher gesperrt worden ist. &lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Speichern ===&lt;br /&gt;
Um ein ungünstiges Timing zu verhindern (z. B. ein Prozess beschreibt eine Speicherzelle und wird während des Schreibvorganges durch einen Kontext-Switch unterbrochen), sollte nun der Speicher durch einen anderen Task wieder freigegeben werden. Hierzu muss vor dem Schreibvorgang signalisiert werden, dass die jeweilige Zelle blockiert ist. Als Return kann hier dann entweder ein Error_value oder ein Success_Value übertragen werden.  &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Lesen === &lt;br /&gt;
Zum Lesen muss lediglich überprüft werden, ob der Speicher der angegebenen ID reserviert ist. Als Return kann hier dann entweder der gespeicherte Wert oder ein Error_Value verwendet werden. Um zu erkennen ob es sich hier um einen Fehler handelt oder um einen gespeicherten Wert, kann über die Task_Liste (ID sollte bekannt sein!) ein Statusbit gesetzt werden.  &amp;lt;br /&amp;gt;&lt;br /&gt;
 &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Kommunikation mit anderen Task‘s ==&lt;br /&gt;
Oftmals ist es notwendig, dass die Tasks in der Lage sind, miteinander zu kommunizieren und so Ergebnisse auszutauschen. Hierfür kann ein weiterer Eintrag in der Task-Liste weiterhelfen, der einen anderen Task darüber informiert unter welcher Speicher-ID neue Informationen verfügbar sind. Die jeweiligen Tasks müssen dazu jedoch über die ID der jeweils anderen Task Bescheid wissen. &lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Realtime == &lt;br /&gt;
Je nach Anwendungsfall kann es wichtig sein, dass manche Threads innerhalb einer bestimmten Zeit ausgeführt werden müssen. Hierzu werden für die Threads Prioritäten vergeben, welche gewährleisten, dass die Threads länger oder häufiger ausgeführt werden (je nach Definition). Möglicherweise ergibt die Ausführung/Beendigung eines Threads auch nach einem bestimmten Zeitpunkt keinen Sinn mehr.&lt;br /&gt;
Beispiel: Ein Sensor soll alle 10 ms ausgelesen werden. Der Sensor liefert immer das aktuelle Messergebnis. Wird nun der Thread (der alle 10 ms getriggert wird um einen Sensor auszulesen) von einem wichtigeren Ereignis unterbrochen und so z. B. über 50ms verzögert, so warten dann 5 getriggerte Threads darauf, CPU Zeit zugewiesen zu bekommen. Da aber immer nur der aktuelle Sensorwert ausgegeben werden kann, liefern alle 5 Threads dasselbe Ergebnis. Um nun Ressourcen zu sparen, muss erkannt werden, ob die Ausführung dieses Threads noch sinnvoll ist. Andernfalls sollten die Threads beendet werden und es kann eine Fehlermeldung generiert werden. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Fehlersuche und Kontrolle =&lt;br /&gt;
== Register Kontrolle ==&lt;br /&gt;
Zunächst ist es wichtig zu überprüfen, ob alle Variablen und Register denselben Wert wie nach einem Kontext Switch haben. Hier ist es empfehlenswert, beim Erstellen des Tasks lokale Variablen mit eindeutigen Werten zu erstellen und anschließend in einer while(1)-Schleife laufen zu lassen. &lt;br /&gt;
Die einfachste Überprüfung ist hier: Mit dem Debugger einen Breakpoint in der while(1)-Schleife des Programms zu setzen und nach dem Kontext-Switch anzuhalten, um auf diese Weise die Variablen zu überprüfen.&lt;br /&gt;
&lt;br /&gt;
Mögliche Fehlerquellen: &lt;br /&gt;
* Stack Pointer zeigt auf die falsche Adresse&lt;br /&gt;
* Zuviele oder nicht ausreichend lokale Variablen -der ISR-  nach Verlassen der ISR gelöscht&lt;br /&gt;
* Register in falscher Reihenfolge wiederhergestellt&lt;br /&gt;
&#039;&#039;&#039;Beispiel&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
Void Test_Task1(){&lt;br /&gt;
Start_task();&lt;br /&gt;
int a = 3; &lt;br /&gt;
	int b = 1;&lt;br /&gt;
	int c = 2; &lt;br /&gt;
	int d = 3; &lt;br /&gt;
	int e = 4;&lt;br /&gt;
	int f = 5;&lt;br /&gt;
	int g = 6;&lt;br /&gt;
	int h = 7;&lt;br /&gt;
while(1){&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Rechenoperationen  ==&lt;br /&gt;
Wenn sichergestellt wurde, dass die Register und Variablen nach einem Kontext Switch unverändert bestehen, kann mit einer einfachen Rechenoperation, die je nach Ausgangswert ein anderes Ergebnis liefert, überprüft werden, ob die Wiedereinsprungsadresse stimmt. &lt;br /&gt;
Da lokale Variablen zerstört werden können, sollten globale Variablen hierfür verwendet werden, da diese eben nicht im Stack gespeichert werden. Zusätzlich sollte ein Fehlercounter inkrementiert werden.&lt;br /&gt;
&lt;br /&gt;
Mögliche Fehlerquellen: &lt;br /&gt;
* Falsches Link Register &lt;br /&gt;
* Falscher PC &lt;br /&gt;
* Fehlerhafte Register und/oder Variablen&lt;br /&gt;
&#039;&#039;&#039;Beispiel&#039;&#039;&#039;&lt;br /&gt;
Hier eignet sich die Berechnung der ersten Fibonacci-Zahlen, da hier jedes weitere Ergebnis vom Vorherigen abhängt.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
Int error;&lt;br /&gt;
Void Test_Task2(){&lt;br /&gt;
Start_Task();&lt;br /&gt;
int a = 1;&lt;br /&gt;
	int b = 1;&lt;br /&gt;
	int c;&lt;br /&gt;
int counter = 0;&lt;br /&gt;
while(1){&lt;br /&gt;
		c = a;&lt;br /&gt;
		a = b+a;&lt;br /&gt;
		b = c;	&lt;br /&gt;
switch(counter){&lt;br /&gt;
		case 0:if(!(b==1)){&lt;br /&gt;
				error++;&lt;br /&gt;
				}break;&lt;br /&gt;
		case 1:if(!(b==2)){&lt;br /&gt;
				error++;}break;&lt;br /&gt;
		case 2:if(!(b==3)){&lt;br /&gt;
				error++;}break;&lt;br /&gt;
		case 3:if(!(b==5)){&lt;br /&gt;
		                error++;}break;&lt;br /&gt;
&lt;br /&gt;
        ...&lt;br /&gt;
        ...&lt;br /&gt;
        ...&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
                default:counter = -1; b = 1; a = 1;break;&lt;br /&gt;
             }&lt;br /&gt;
          counter ++;&lt;br /&gt;
     }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Funktionskaskade == &lt;br /&gt;
Um zu überprüfen, ob Linkregister und Programmcounter richtig gesichert wurden, kann man via Funktionkaskaden überprüfen, ob alle Funktionen in der richtigen Reihenfolge aufgerufen werden, und ob sie auch wieder richtig verlassen werden. Auch wichtig sind Übergabeparameter und return values. &lt;br /&gt;
Sollte es hier zu einem Fehler kommen, kann es sein, dass nur die lokalen Variablen verloren gehen. Es kann jedoch auch passieren, dass nach dem Verlassen der Funktion zu viel oder zu wenig vom Stack geladen wird, wodurch eine falsche Rücksprungadresse geladen wird. Mit etwas Glück erkennt der µC dies und springt dann in einen Fault-Handler.&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Möglichen Fehler Quellen: &lt;br /&gt;
* Link Register hatt die Falsche Adresse&lt;br /&gt;
* Fehlerhafte Register  und/oder Variablen&lt;br /&gt;
* Falscher Programcounter&lt;br /&gt;
* Register 7 (kann von UC, Compiler oder IDE unterschiedlich sein) bei einem Funktions Call wird in einem Register der alte Stackpointer hinterlegt, ob zu zeigen, wie viele Lokale Variablen nach Verlassen der aktuellen Funktion auf dem Stack nicht mehr benötigt werden. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Beispiel&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
int tester;&lt;br /&gt;
int error;&lt;br /&gt;
void Task_test3(){&lt;br /&gt;
	while(1){&lt;br /&gt;
		tester = 1;&lt;br /&gt;
		int dummy = test1(5,6);&lt;br /&gt;
		&lt;br /&gt;
		if(dummy != 9 || tester != 4){&lt;br /&gt;
			error ++;&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
	&lt;br /&gt;
	&lt;br /&gt;
int test1(int a, int b){&lt;br /&gt;
		if(tester != 1){&lt;br /&gt;
			error++;&lt;br /&gt;
		}&lt;br /&gt;
		tester = 2;&lt;br /&gt;
		int dummy = test2(7);&lt;br /&gt;
		if(a != 5 || b != 6 || dummy != 8 || tester != 3){&lt;br /&gt;
			error++;&lt;br /&gt;
		}&lt;br /&gt;
		tester = 4;&lt;br /&gt;
		return 9;&lt;br /&gt;
	}&lt;br /&gt;
	&lt;br /&gt;
int test2(int a)&lt;br /&gt;
{&lt;br /&gt;
		if(a != 7 || tester != 2){&lt;br /&gt;
			error ++;&lt;br /&gt;
		}&lt;br /&gt;
		tester = 3;&lt;br /&gt;
		return 8;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight &amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Kein Kontext Switch mehr ==&lt;br /&gt;
Sollten plötzlich keine Kontext-Switche mehr stattfinden(ein Task wird nicht mehr verlassen) sollten man im Interrupt_Manager –„ Nested Vectored Interrupt Controller“ (NVIC) -  nachschauen, ob das Interrupt_Active_Bit gesetzt ist. Sollte dies der Fall sein, wurde der Kontext-Switch nicht richtig verlassen und der Prozessor glaubt, er würde noch immer den Interrupt ausführen. Viele Prozessoren - unter anderem ARM - erlauben kein Repending(doppeltes Ausführen) eines Interruptes.&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
Mögliche Fehlerquellen: &lt;br /&gt;
* Linkregister: Bei einem Interrupt Aufruf wird das Link Register mit einem Exp_return_Value beschreiben. Dieser sagt aus, auf welche Art und ob nach Verlassen der Funktion das Interrupt abgeschlossen wurde. So weiss der UC, ob z.B. noch ein Interrupt mit einer niedrigeren Priorität unterbrochen wurde.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Lektüre = &lt;br /&gt;
*	µC/OS-III: The Real-Time Kernel https://www.micrium.com/books/ucosiii/ &lt;br /&gt;
*	http://infocenter.arm.com  &lt;br /&gt;
*	Datenblatt&lt;br /&gt;
*       &#039;&#039;&#039;Grundlagen:&#039;&#039;&#039; https://www.mikrocontroller.net/articles/Multitasking&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Quellen =&lt;br /&gt;
*	µC/OS-III: The Real-Time Kernel&lt;br /&gt;
*	SAM4S-Datenblatt  http://www.atmel.com/Images/Atmel-11100-32-bit%20Cortex-M4-Microcontroller-SAM4S_Datasheet.pdf &lt;br /&gt;
&lt;br /&gt;
= Link Sammlung = &lt;br /&gt;
* https://www.mikrocontroller.net/topic/381051&lt;br /&gt;
* https://www.mikrocontroller.net/topic/389195?goto=4457089#4457089&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Autor = &lt;br /&gt;
Sebastian Balz&lt;br /&gt;
[[Kategorie:ARM]]&lt;br /&gt;
[[Kategorie:Betriebssysteme]]&lt;/div&gt;</summary>
		<author><name>Promeus</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=Lehrvideos&amp;diff=92437</id>
		<title>Lehrvideos</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=Lehrvideos&amp;diff=92437"/>
		<updated>2016-03-17T06:51:30Z</updated>

		<summary type="html">&lt;p&gt;Promeus: Änderung 92428 von 37.139.16.18 (Diskussion) rückgängig gemacht.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Lehrvideos zu FPGA, VHDL, Verilog und Digital Design=&lt;br /&gt;
Hier ensteht eine Linkliste von Lehrvideos und Demos, die den Einstieg und Meisterschaft(?) im Design von digitalen Systemen erleichtern sollen. Die Videos sollen zeigen, wie man mit den Tools arbeitet. &lt;br /&gt;
&lt;br /&gt;
Eine kurze Durchsicht bei youtube zeigt auf, dass nur ein kleiner Teil der Videos als Lehrvideo taugt, der Großteil sind Promotion-Videos, die hier nicht gelistet werden.&lt;br /&gt;
&lt;br /&gt;
== VHDL and Xilinx Spartan FPGA 1/2 ==&lt;br /&gt;
&lt;br /&gt;
* [http://www.youtube.com/watch?v=Bg_4nqSs2OY| VHDL and Xilinx Spartan FPGA 1/2] (Video privat, nicht einsehbar)&lt;br /&gt;
* [http://www.youtube.com/watch?v=SRsISGjRj-4| VHDL and Xilinx Spartan FPGA 2/2] (Video privat, nicht einsehbar)&lt;br /&gt;
&lt;br /&gt;
Auf englisch kommentierte Demo die zeigt, wie man zu einem zugehörigen Blockbild den VHDL-Code schreibt und diesen synthetisiert. Gezeigt werden die Xilinxtools ISE, RTL-View, Core Generator.&lt;br /&gt;
&lt;br /&gt;
== Einstieg mit Altera DE1 Board ==&lt;br /&gt;
*FPGA Tutorial 1. Blinking LEDs on DE1 Altera Board &lt;br /&gt;
[http://www.youtube.com/watch?v=T9VbBI3foGQ|Youtube-Video &amp;quot;FPGA Tutorial 1. Blinking LEDs on DE1 Altera Board&amp;quot;]&lt;br /&gt;
*FPGA Tutorial 2. Functions and procedures in VHDL on DE1 Altera Board &lt;br /&gt;
[http://www.youtube.com/watch?v=j2lAPIjpF1w|Youtube-Video &amp;quot;FPGA Tutorial 2. Functions and procedures in VHDL on DE1 Altera Board&amp;quot;]&lt;br /&gt;
*FPGA Tutorial 3. UART in VHDL on Altera DE1 Board &lt;br /&gt;
[http://www.youtube.com/watch?v=fMmcSpgOtJ4|Youtube-Video &amp;quot;FPGA Tutorial 3. UART in VHDL on Altera DE1 Board&amp;quot;]&lt;br /&gt;
*FPGA Tutorial 4: VGA interface in VHDL on DE1 Altera Board &lt;br /&gt;
[http://www.youtube.com/watch?v=mS0VZwnZssA|Youtube-Video &amp;quot;FPGA Tutorial 4: VGA interface in VHDL on DE1 Altera Board.&amp;quot;]&lt;br /&gt;
&lt;br /&gt;
== Introductory tutorial on Verilog  ==&lt;br /&gt;
* [http://www.youtube.com/watch?NR=1&amp;amp;v=jkiHUaNIAKg| Introductory tutorial on Verilog] PowerPoint Vorlesung, einschläfernde Stimme, aber im Inhalt solide. &lt;br /&gt;
Erklärt werden die Beschreibungsformen (gatter, Verhalten, Prozeduraler Ansatz) und die Grundelemente register,wire,module.&lt;br /&gt;
&lt;br /&gt;
== How to Setup Simulation in ModelSim ==&lt;br /&gt;
*[http://www.youtube.com/watch?v=VTMelKXXmho| Modelsim]&lt;br /&gt;
Dieser Englischsprachiger Screencast erklärt vornehmlich die GUI-basierte Bedienung des modelsim-Simulators, auf die script-steuerung wird kurz hingewiesen. Erklärt werden compile, compile-Order, Filestruktur, Fenstergruppierung. Leider wird kaum auf die Bedienung des wave-Fensters eingegangen.&lt;br /&gt;
&lt;br /&gt;
==Statische Timing-Analyse==&lt;br /&gt;
*[http://www.youtube.com/watch?v=pEj6LR-C84Y| Lec-33 static timing analysis.wmv]&lt;br /&gt;
*[http://www.youtube.com/watch?v=mrY0MzCBgAo| Lec-34 static timing analysis]&lt;br /&gt;
Über zwei Stunden feinstes Indian English von Hold/Set-time zu clock-constrainst, false pathes und SDF. Hochschulvortrag mit handgezeichnetet Folien.&lt;br /&gt;
&lt;br /&gt;
==Timing constraints - Xilinx==&lt;br /&gt;
*[http://www.youtube.com/watch?v=dRM0HVdqvZo&amp;amp;| Kapitel eins - Definition und Zweck von Timing constraints]&lt;br /&gt;
*[http://www.youtube.com/watch?v=38Px7CmGczo| Kapitel zwei - period, jitter, Offset]&lt;br /&gt;
*[http://www.youtube.com/watch?v=P3rQssXEFm8| Kapitel drei - Optionen, Eingabemöglichkeiten]&lt;br /&gt;
Offizielles Xilinx-Lehrmodul zu timing-constraints als PowerPoint-Vortrag. Das Video folgt der klassichen Lehrmethodik: Präsentation neues Wissens and anschliessende Vertiefung durch Beispiele und Frage/Antwort &lt;br /&gt;
Da die Basics der Timing-Constraints (kritischer Pfad, jitter, ...) für alle FPGA-Familien gleich sind, lohnt sich mindestens das erste Kapitel auch für Nutzer von Altera, Actel und andere.&lt;br /&gt;
&lt;br /&gt;
== Programming/Bitstream download with Xilinx Impact ==&lt;br /&gt;
*[http://www.youtube.com/watch?v=gnSiwBn0djQ| Intro to FPGAs for Software Engineers - Part 5 - Programming, JTAG, PROMs, &amp;amp; iMPACT]&lt;br /&gt;
Dieser Screencast zeigt die Klicks und Eingaben um ein Board (FPGA,PROMS) mit JTAG-Schnittstelle über das Impact-tool der Xilinx-ISE zu programmieren. Perfekt lesbar an einem 1080 Monitor.&lt;br /&gt;
&lt;br /&gt;
== How to use KCPSM3 in VHDL FPGA based project ==&lt;br /&gt;
* [http://www.youtube.com/watch?v=An3x5tKL5Js| How to use KCPSM3 in VHDL FPGA based project ]&lt;br /&gt;
Der KCPSM3 ist der Vorläufer der 8-Bit Soft-CPU Picoblaze von Xilinx. Das unkommentierte, aber mit Musik unterlegte Video zeigt wie im ISE Editor der VHDL-Code (Component-Instanziierung) hierfür erstellt wird. Einzelne Clicks in der Tooliste sind grafisch hervorgehoben. Der Text ist nicht sonderlich gut lesbar.&lt;br /&gt;
&lt;br /&gt;
== Noch ohne abschliessende Bewertung ==&lt;br /&gt;
&lt;br /&gt;
* [http://www.youtube.com/watch?v=Ob7B6x5g6tw FPGA Xilinx VHDL Video Tutorial]: Zeigt das Aufsetzen eines Projektes in der Xilinx-ISE.&lt;br /&gt;
&lt;br /&gt;
* [http://www.youtube.com/watch?v=FxF0M3DA68Y Basic Schematic Input Tutorial] Xilinx-ISE, project from the scratch, fürchterlicher Ton&lt;br /&gt;
&lt;br /&gt;
* [http://www.eejournal.com/design/fpga/on-demand] EEJournal Webcasts und Videos zum Thema FPGA and Programmable Logic Design&lt;br /&gt;
&lt;br /&gt;
=== Vorlesungen  Prof.S.Srinivasan , Madras, Indien ===&lt;br /&gt;
bspw.:&lt;br /&gt;
*[http://www.youtube.com/watch?v=RZQTTfU9TNA| Lecture 30 Encoders and Decoders]&lt;br /&gt;
Vorlesungsvideo, stark akzentgefärbtes Englisch, erklärt werden die Grundlagen des Digitaldesigns, EDA-Tools werden vorgestellt.&lt;br /&gt;
&lt;br /&gt;
==Nicht empfohlen==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:FPGA und Co]]&lt;/div&gt;</summary>
		<author><name>Promeus</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=Labornetzger%C3%A4te&amp;diff=92436</id>
		<title>Labornetzgeräte</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=Labornetzger%C3%A4te&amp;diff=92436"/>
		<updated>2016-03-17T06:50:53Z</updated>

		<summary type="html">&lt;p&gt;Promeus: Änderung 92427 von 37.139.16.18 (Diskussion) rückgängig gemacht.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Ein Labornetzgerät wird dazu verwendet, Schaltungen oder einzelne Bauteile mit einer definierten Spannung oder einem definierten Strom zu versorgen.&lt;br /&gt;
&lt;br /&gt;
== Funktionen ==&lt;br /&gt;
&lt;br /&gt;
Labornetzgeräte sind im Gegensatz zu einfachen Festspannungs-Netzteilen sehr flexibel einsetzbar und haben üblicherweise mindestens folgende Einstellmöglichkeiten und Funktionen:&lt;br /&gt;
&lt;br /&gt;
=== Einfache Labornetzteile ===&lt;br /&gt;
&lt;br /&gt;
Einfache Labornetzgeräte haben eine einstellbare Ausgangsspannung, die normalerweise von 0 bis zu einem bestimmten Maximalwert eingestellt werden kann. Zusätzlich bieten diese Geräte eine einstellbare Strombegrenzung, die auch von 0 aus bis zum Nennstrom des Geräts eingestellt werden kann.&lt;br /&gt;
&lt;br /&gt;
Labornetzgeräte haben außerdem noch eine Anzeige für Ausgangsspannung und Strom. Dafür sind entweder analoge oder digitale Instrumente eingebaut. Bei digitalen Anzeigen werden üblicherweise 3 Stellen angezeigt, die Genauigkeit der Anzeige liegt üblicherweise im Bereich 1%.&lt;br /&gt;
&lt;br /&gt;
Der Ausgang sollte kurzschlussfest sein, was allerdings nicht bei allen Labornetzgeräten der Fall ist. Manche Geräte sind nur kurzzeitig kurzschlussfest (für einige Sekunden), normalerweise sind Labornetzgeräte dauerhaft kurzschlussfest.&lt;br /&gt;
&lt;br /&gt;
=== Labornetzteile mit erweiterten Funktionen ===&lt;br /&gt;
&lt;br /&gt;
Die Labornetzgeräte der gehobenen Preisklasse haben zusätzlich zu den Grundfunktionen noch weitere Funktionen, wie z.B.:&lt;br /&gt;
&lt;br /&gt;
* Abschaltbarer Ausgang&lt;br /&gt;
* Getrennte Anzeige von Soll- und Ist-Werten&lt;br /&gt;
* Höhere Messgenauigkeit der Istwerte als bei einfachen Geräten&lt;br /&gt;
* Einstellbare Grenzwerte für Strom, Spannung, Leistung&lt;br /&gt;
* Alarm/Abschaltung bei Überschreitung von einstellbaren Schwellwerten&lt;br /&gt;
* Programmierbare Spannungs-/Stromverläufe&lt;br /&gt;
* Master-Slave-Funktion für Reihen-/Parallelschaltung von mehreren Geräten&lt;br /&gt;
* Analoge Schnittstelle für Soll- und Istwerte&lt;br /&gt;
* PC-Schnittstelle&lt;br /&gt;
&lt;br /&gt;
== Wichtige Eigenschaften ==&lt;br /&gt;
&lt;br /&gt;
=== Lineare Netzgeräte vs. Schaltnetzgeräte ===&lt;br /&gt;
&lt;br /&gt;
Es gibt bei Labornetzgeräten sowohl linear geregelte als auch Schaltnetzteile.&lt;br /&gt;
&lt;br /&gt;
Lineare Netzgeräte haben den Vorteil, dass die Regelung üblicherweise schneller und genauer ist. Die Ausgangskapazität ist bei linearen Netzgeräten relativ klein, dadurch kann die Strombegrenzung sehr schnell ansprechen.&lt;br /&gt;
&lt;br /&gt;
Schaltnetzgeräte haben dagegen einen besseren Wirkungsgrad, erzeugen also weniger Abwärme und sind kleiner und leichter als lineare Netzgeräte gleicher Leistung. Deshalb sind vor allem Labornetzgeräte mit hoher Leistung bevorzugt als Schaltnetzteil aufgebaut.&lt;br /&gt;
&lt;br /&gt;
Wenn bei Schaltnetzgeräten eine sehr kleine Ausgangs-Spannung eingestellt wird, wird diese oft nicht sauber ausgeregelt. Meistens brauchen solche Geräte eine bestimmte Mindestspannung am Ausgang.&lt;br /&gt;
&lt;br /&gt;
Weiterhin besteht bei Schaltnetzteilen die Gefahr, dass am Ausgang Störungen sichtbar sind, die durch die interne PWM erzeugt werden.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Weiterhin gibt es auch Geräte, bei denen ein Schaltnetzteil und eine lineare Regelung kombiniert sind. Dadurch werden die Vorteile von beiden Verfahren kombiniert, es ergeben sich dadurch aber auch einige Probleme:&lt;br /&gt;
&lt;br /&gt;
* Bei schnellen Laständerungen kann es passieren, dass das Schaltnetzteil nicht schnell genug nachregelt. Dadurch ändert sich das Regelverhalten und die Ausgangsspannung bzw. Strom sind dann nicht mehr so stabil wie bei einem richtigen linear geregelten Netzgerät. &lt;br /&gt;
&lt;br /&gt;
* Bei schnellen periodischen Laständerungen kann es zusätzlich passieren, dass die Verlustleistung im Linearregler sehr viel höher wird als im Betrieb mit konstanter Ausgangsleistung. Da die lineare Endstufe meistens nicht dafür dimensioniert ist, kann es hier thermische Probleme geben.&lt;br /&gt;
&lt;br /&gt;
=== Verlustleistung und Kühlung === &lt;br /&gt;
&lt;br /&gt;
Das ist vor allem bei linear geregelten Geräten ein sehr wichtiges Kapitel, da eine gute Kühlung relativ viel Geld kostet und die Gerätehersteller hier gerne sparen. Folgende Punkte sollten hier beachtet werden:&lt;br /&gt;
&lt;br /&gt;
==== Passive Kühlung oder Kühlung mit Lüfter ====&lt;br /&gt;
Geräte mit passiver Kühlung erzeugen keine Geräusche, was ein großer Vorteil ist. Passive Kühlung ist aber nur bei Geräten mit relativ geringer Leistung üblich. Bei Lüfter-gekühlen Geräten sollte darauf geachtet werden, dass der Lüfter relativ ruhig läuft.&lt;br /&gt;
&lt;br /&gt;
==== Außenliegender Kühlkörper ====&lt;br /&gt;
Bei passiv gekühlten Geräten kann der Kühler ziemlich warm werden. Wenn der Kühler außen am Gehäuse montiert ist, besteht die Gefahr, dass man ihn versehentlich berührt und sich verbrennt oder dass wärmeempfindliche Gegenstände (z.B. kunststoff-isolierte Leitungen) bei Berührung beschädigt werden. Deshalb sollte man Geräte bevorzugen, bei denen der Kühler innerhalb des Gehäuses montiert ist.&lt;br /&gt;
&lt;br /&gt;
==== Lüftungsschlitze ====&lt;br /&gt;
Bei Geräten, die Lüftungsschlitze auf der Oberseite haben, besteht die Gefahr, dass Gegenstände reinfallen können, wodurch das Gerät beschädigt werden kann. Weiterhin kann es passieren, dass der Luftstrom durch die Schlitze behindert wird, wenn man etwas auf dem Gerät ablegt oder mehrere Geräte aufeinander stapelt.&lt;br /&gt;
Je nach dem, wo das Gerät aufgestellt werden soll, können deshalb seitliche Lüftungsschlitze vorteilhaft sein. Allerdings sind seitliche Lüftungsöffnungen meistens mit einem aktiven Lüfter kombiniert.&lt;br /&gt;
&lt;br /&gt;
==== Dimensionierung der Kühlkörper und Leistungstransistoren ====&lt;br /&gt;
Bei vielen billigen Netzgeräten ist die Kühlung zu knapp dimensioniert. Das kann man relativ einfach testen, indem man den Ausgangsspannung und Strom jeweils auf Maximalwerte einstellt und dann den Ausgang kurzschließt.&lt;br /&gt;
&lt;br /&gt;
In diesem Zustand sollte das Gerät längere Zeit (einige Stunden) betrieben werden, bis alles thermisch eingeschwungen ist. Dann muss bei allen Leistungsbauteilen die Temperatur gemessen werden, am einfachsten geht das mit einer Wärmebildkamera. Es sollten nach Möglichkeit keine Temperaturen oberhalb von 100°C auftreten. Wärme-empfindliche Bauteile (z.B. Elkos) sollten nicht wärmer als 70°C sein.&lt;br /&gt;
&lt;br /&gt;
Besonders kritisch sind hier:&lt;br /&gt;
* Netztrafo&lt;br /&gt;
* Gleichrichter&lt;br /&gt;
* Leistungstransistoren und Kühlkörper&lt;br /&gt;
&lt;br /&gt;
=== Stabilität und Genauigkeit ===&lt;br /&gt;
&lt;br /&gt;
Wichtige Eigenschaften bei Labornetzgeräten ist die Stabilität und die Genauigkeit.&lt;br /&gt;
&lt;br /&gt;
==== Stabilität ====&lt;br /&gt;
&lt;br /&gt;
Damit wird angegeben, wie konstant ein eingestellter Wert über einen längeren Zeitraum gehalten wird. Hier ist wichtig, dass das Gerät einen kleinen Temperaturkoeffizient hat, so dass die Ausgangsspannung auch bei Temperaturschwankungen möglichst stabil bleibt.&lt;br /&gt;
&lt;br /&gt;
==== Genauigkeit ====&lt;br /&gt;
&lt;br /&gt;
Hier muss unterschieden werden zwischen der Anzeigegenauigkeit und der Einstellgenauigkeit.&lt;br /&gt;
&lt;br /&gt;
Die Genauigkeit der Anzeige gibt an, wie genau die angezeigte Ausgangsspannung oder Strom mit der tatsächlichen Spannung übereinstimmt (siehe dazu auch  Artikel [[Auflösung und Genauigkeit]]).&lt;br /&gt;
&lt;br /&gt;
Die Einstellgenauigkeit gibt an, wie genau ein bestimmter Sollwert eingestellt werden kann und wie gut die tatsächlichen Werte mit den Sollwerten übereinstimmen. Bei Geräten mit digitaler Sollwertvorgabe muss hier die kleinste Schrittweite beachtet werden.&lt;br /&gt;
&lt;br /&gt;
== Weitere Funktionen ==&lt;br /&gt;
&lt;br /&gt;
=== Schnittstelle ===&lt;br /&gt;
&lt;br /&gt;
Einige Labornetzgeräte bieten eine Schnittstelle zum PC, damit können sie als per Software steuerbares Netzgerät verwendet werden. Will man das Netzgerät per Mikrocontroller steuern, so sind Typen mit [[RS232]] Anschluß den Typen mit [[USB]] vorzuziehen.&lt;br /&gt;
&lt;br /&gt;
=== Beleuchtung ===&lt;br /&gt;
&lt;br /&gt;
Folgende Display-Arten sind bei Labornetzgeräten üblich:&lt;br /&gt;
* Analoginstrument (unbeleuchtet oder beleuchtet)&lt;br /&gt;
* LCD 7-Segment Anzeige (unbeleuchtet oder beleuchtet)&lt;br /&gt;
* LCD Punktmatrix-Anzeige (in der Regel beleuchtet)&lt;br /&gt;
* LED 7-Segment Anzeige (selbstleuchtend)&lt;br /&gt;
* OLED-Anzeigen (selbstleuchtend)&lt;br /&gt;
* VFD-Anzeigen (selbstleuchtend)&lt;br /&gt;
&lt;br /&gt;
Anzeigen mit Beleuchtung bzw. selbstleuchtende Anzeigen sind wesentlich besser ablesbar als unbeleuchtete LCD-Anzeigen. Da Labornetzgeräte immer am Netz betrieben werden, ist der Stromverbrauch der Beleuchtung nicht relevant.&lt;br /&gt;
&lt;br /&gt;
Unbeleuchtete LCD-Anzeigen sind bei schlechter Beleuchtung oder ungünstigem Blickwinkel manchmal schlecht ablesbar, bei 7-Segment LED-Anzeigen ist die Ablesbarkeit wesentlich besser. &lt;br /&gt;
&lt;br /&gt;
Mit 7-Segment Anzeigen lassen sich allerdings nur Ziffern und einige wenige Buchstaben darstellen. Für Geräte mit komplexen Einstellungen und Menu-Führung werden deshalb häufig Punkt-Matrix LCD-Anzeigen verwendet.&lt;br /&gt;
&lt;br /&gt;
Mit VFD-Anzeigen [http://de.wikipedia.org/wiki/Fluoreszenzanzeige], die ebenfalls sehr gut ablesbar sind, könnnen auch komplexe Menüs dargestellt werden. Diese haben einen sehr weiten Blickwinkel und sehr scharfe und klare Zeichen. Allerdings sind diese Anzeigen relativ teuer, weshalb sie vor allem in eher teueren Geräten eingesetzt werden.&lt;br /&gt;
&lt;br /&gt;
== Vergleichstabelle Labornetzgeräte ==&lt;br /&gt;
&lt;br /&gt;
In den folgende Tabellen werden wichtige technischen Daten einiger aktueller Labornetzgeräte zusammengestellt. Um die Übersichtlichkeit zu erhöhen, werden die Geräte eingeteilt in einfache Geräte und Geräte mit Zusatzfunktionen&lt;br /&gt;
&lt;br /&gt;
Die Einteilung geschieht aufgrund der Funktionen, die die Geräte bieten. Das ist also keine Aussage über die Qualität der Geräte.&lt;br /&gt;
&lt;br /&gt;
=== Einfache lineare Labornetzgeräte ===&lt;br /&gt;
&lt;br /&gt;
Hier werden Geräte aufgelistet, welche neben den Grundfunktionen (Strom- und Spannungseinstellung, Anzeige der Istwerte) keine weiteren Funktionen besitzen.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; class=&amp;quot;wikitable sortable&amp;quot; id=&amp;quot;einfache&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!Hersteller&lt;br /&gt;
!Bezeichnung&lt;br /&gt;
!Preis [EUR]&lt;br /&gt;
!Spannung [V]&lt;br /&gt;
!Strom [A]&lt;br /&gt;
!Kanäle&lt;br /&gt;
|-&lt;br /&gt;
|Agilent&lt;br /&gt;
|E3616A&lt;br /&gt;
|620&lt;br /&gt;
|35&lt;br /&gt;
|1.7&lt;br /&gt;
|1&lt;br /&gt;
|-&lt;br /&gt;
|Hameg&lt;br /&gt;
|HM8040-3(Benötigt HM8001)&lt;br /&gt;
|280&lt;br /&gt;
|20 + 20 + 5&lt;br /&gt;
|0.5 + 0.5 + 1&lt;br /&gt;
|3&lt;br /&gt;
|-&lt;br /&gt;
|Peaktech&lt;br /&gt;
|6080&lt;br /&gt;
|50&lt;br /&gt;
|15&lt;br /&gt;
|3&lt;br /&gt;
|1&lt;br /&gt;
|-&lt;br /&gt;
|McVoice&lt;br /&gt;
|WNT0-15-2000&lt;br /&gt;
|38&lt;br /&gt;
|15&lt;br /&gt;
|2&lt;br /&gt;
|1&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|Statron&lt;br /&gt;
|2223.1&lt;br /&gt;
|150&lt;br /&gt;
|30&lt;br /&gt;
|2.5&lt;br /&gt;
|1&lt;br /&gt;
|-&lt;br /&gt;
|Statron&lt;br /&gt;
|2250.0&lt;br /&gt;
|225&lt;br /&gt;
|40&lt;br /&gt;
|5&lt;br /&gt;
|1&lt;br /&gt;
|-&lt;br /&gt;
|Statron&lt;br /&gt;
|2229.2&lt;br /&gt;
|260&lt;br /&gt;
|40 + 40&lt;br /&gt;
|2.5 + 2.5&lt;br /&gt;
|2&lt;br /&gt;
|-&lt;br /&gt;
|Statron&lt;br /&gt;
|2229.5&lt;br /&gt;
|340&lt;br /&gt;
|32 + 32 + 5&lt;br /&gt;
|3 + 3 + 3&lt;br /&gt;
|3&lt;br /&gt;
|-&lt;br /&gt;
|Statron&lt;br /&gt;
|2225.6&lt;br /&gt;
|310&lt;br /&gt;
|30 + 30&lt;br /&gt;
|5 + 5&lt;br /&gt;
|2&lt;br /&gt;
|-&lt;br /&gt;
|Voltcraft&lt;br /&gt;
|PS-1302 D&lt;br /&gt;
|95&lt;br /&gt;
|30&lt;br /&gt;
|2&lt;br /&gt;
|1&lt;br /&gt;
|-&lt;br /&gt;
|Voltcraft&lt;br /&gt;
|VLP 1303pro&lt;br /&gt;
|180&lt;br /&gt;
|30 + 6&lt;br /&gt;
|3 + 2&lt;br /&gt;
|2&lt;br /&gt;
|-&lt;br /&gt;
|Voltcraft&lt;br /&gt;
|VSP 2403&lt;br /&gt;
|345&lt;br /&gt;
|40 + 40 + 6&lt;br /&gt;
|3 + 3 + 1.5&lt;br /&gt;
|3&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Einfache Schaltnetzgeräte ===&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; class=&amp;quot;wikitable sortable&amp;quot; id=&amp;quot;einfache&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!Hersteller&lt;br /&gt;
!Bezeichnung&lt;br /&gt;
!Preis [EUR]&lt;br /&gt;
!Spannung [V]&lt;br /&gt;
!Strom [A]&lt;br /&gt;
!Kanäle&lt;br /&gt;
|-&lt;br /&gt;
|Delta Elektronika&lt;br /&gt;
|ES 030-5&lt;br /&gt;
|624&lt;br /&gt;
|30&lt;br /&gt;
|5&lt;br /&gt;
|1&lt;br /&gt;
|-&lt;br /&gt;
|Quatpower&lt;br /&gt;
|LN-3003&lt;br /&gt;
|40&lt;br /&gt;
|30&lt;br /&gt;
|3&lt;br /&gt;
|1&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Netzgeräte mit Zusatzfunktionen ===&lt;br /&gt;
&lt;br /&gt;
Diese Geräte haben mindestens folgende Funktionen:&lt;br /&gt;
* abschaltbare Ausgänge&lt;br /&gt;
* Anzeige der Sollwerte für Strom und Spannung&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; class=&amp;quot;wikitable sortable&amp;quot; id=&amp;quot;hochwertige&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!Hersteller&lt;br /&gt;
!Bezeichnung&lt;br /&gt;
!Preis [EUR]&lt;br /&gt;
!Spannung [V]&lt;br /&gt;
!Strom [A]&lt;br /&gt;
!Kanäle&lt;br /&gt;
!linear/getaktet&lt;br /&gt;
|-&lt;br /&gt;
|Agilent&lt;br /&gt;
|U8001A&lt;br /&gt;
|290&lt;br /&gt;
|30&lt;br /&gt;
|3&lt;br /&gt;
|1&lt;br /&gt;
|linear&lt;br /&gt;
|-&lt;br /&gt;
|Agilent&lt;br /&gt;
|E3616A&lt;br /&gt;
|620&lt;br /&gt;
|35&lt;br /&gt;
|1.7&lt;br /&gt;
|1&lt;br /&gt;
|linear&lt;br /&gt;
|-&lt;br /&gt;
|Agilent&lt;br /&gt;
|E3643A&lt;br /&gt;
|690&lt;br /&gt;
|35 / 60 (umschaltbar)&lt;br /&gt;
|1.4 / 0.8&lt;br /&gt;
|1&lt;br /&gt;
|linear&lt;br /&gt;
|-&lt;br /&gt;
|Agilent&lt;br /&gt;
|E3632A&lt;br /&gt;
|990&lt;br /&gt;
|15 / 30 (umschaltbar)&lt;br /&gt;
|7 / 4&lt;br /&gt;
|1&lt;br /&gt;
|linear&lt;br /&gt;
|-&lt;br /&gt;
|BK Precision&lt;br /&gt;
|BK 1786&lt;br /&gt;
|490&lt;br /&gt;
|32&lt;br /&gt;
|3&lt;br /&gt;
|1&lt;br /&gt;
|linear&lt;br /&gt;
|-&lt;br /&gt;
|BK Precision&lt;br /&gt;
|BK 1788&lt;br /&gt;
|615&lt;br /&gt;
|32&lt;br /&gt;
|6&lt;br /&gt;
|1&lt;br /&gt;
|linear&lt;br /&gt;
|-&lt;br /&gt;
|BK Precision&lt;br /&gt;
|BK 9130&lt;br /&gt;
|685&lt;br /&gt;
|30 + 30 + 5&lt;br /&gt;
|3 + 3 + 3&lt;br /&gt;
|3&lt;br /&gt;
|linear&lt;br /&gt;
|-&lt;br /&gt;
|EA Elektro-Automatik&lt;br /&gt;
|PSI 6032-03&lt;br /&gt;
|425&lt;br /&gt;
|32&lt;br /&gt;
|3&lt;br /&gt;
|1&lt;br /&gt;
|linear&lt;br /&gt;
|-&lt;br /&gt;
|EA Elektro-Automatik&lt;br /&gt;
|EA-PS 2042-06B&lt;br /&gt;
|235&lt;br /&gt;
|42&lt;br /&gt;
|6&lt;br /&gt;
|1&lt;br /&gt;
|getaktet&lt;br /&gt;
|-&lt;br /&gt;
|EA Elektro-Automatik&lt;br /&gt;
|EA-PS 2342-06B&lt;br /&gt;
|580&lt;br /&gt;
|42 + 42 + 6&lt;br /&gt;
|6 + 6 + 4&lt;br /&gt;
|3&lt;br /&gt;
|getaktet&lt;br /&gt;
|-&lt;br /&gt;
|EA Elektro-Automatik&lt;br /&gt;
|EA-PS 3032-05B&lt;br /&gt;
|355&lt;br /&gt;
|32&lt;br /&gt;
|5&lt;br /&gt;
|1&lt;br /&gt;
|linear&lt;br /&gt;
|-&lt;br /&gt;
|EA Elektro-Automatik&lt;br /&gt;
|EA-PS 8032-10 DT&lt;br /&gt;
|940&lt;br /&gt;
|32&lt;br /&gt;
|10&lt;br /&gt;
|1&lt;br /&gt;
|getaktet&lt;br /&gt;
|-&lt;br /&gt;
|ELV&lt;br /&gt;
|PPS 5330&lt;br /&gt;
|120&lt;br /&gt;
|30&lt;br /&gt;
|3&lt;br /&gt;
|1&lt;br /&gt;
|linear&lt;br /&gt;
|-&lt;br /&gt;
|ELV&lt;br /&gt;
|SPS 5630&lt;br /&gt;
|200&lt;br /&gt;
|30&lt;br /&gt;
|6 (max. 75W)&lt;br /&gt;
|1&lt;br /&gt;
|getaktet&lt;br /&gt;
|-&lt;br /&gt;
|Hameg&lt;br /&gt;
|HM7042-5&lt;br /&gt;
|685&lt;br /&gt;
|32 + 32 + 5,5&lt;br /&gt;
|2 + 2 + 5&lt;br /&gt;
|3&lt;br /&gt;
|linear&lt;br /&gt;
|-&lt;br /&gt;
|Hameg&lt;br /&gt;
|HMP2020&lt;br /&gt;
|1190&lt;br /&gt;
|32 + 32&lt;br /&gt;
|10 + 5&lt;br /&gt;
|2&lt;br /&gt;
|getaktet + linear&lt;br /&gt;
|-&lt;br /&gt;
|Hameg&lt;br /&gt;
|HMP2030&lt;br /&gt;
|1500&lt;br /&gt;
|32 + 32 + 32&lt;br /&gt;
|5 + 5 + 5&lt;br /&gt;
|3&lt;br /&gt;
|getaktet + linear&lt;br /&gt;
|-&lt;br /&gt;
|Rigol&lt;br /&gt;
|DP832 **)&lt;br /&gt;
|362&lt;br /&gt;
|30 + 30 + 5&lt;br /&gt;
|3 + 3 + 3&lt;br /&gt;
|3&lt;br /&gt;
|linear&lt;br /&gt;
|-&lt;br /&gt;
|Voltcraft&lt;br /&gt;
|VLP 1405pro&lt;br /&gt;
|1190&lt;br /&gt;
|40 + 6&lt;br /&gt;
|5 + 2&lt;br /&gt;
|2&lt;br /&gt;
|linear&lt;br /&gt;
|-&lt;br /&gt;
|PeakTech&lt;br /&gt;
|1885&lt;br /&gt;
|270&lt;br /&gt;
|40&lt;br /&gt;
|5&lt;br /&gt;
|1&lt;br /&gt;
|getaktet&lt;br /&gt;
|-&lt;br /&gt;
|Voltcraft&lt;br /&gt;
|VLP 2403pro&lt;br /&gt;
|320&lt;br /&gt;
|40 + 40 + 6&lt;br /&gt;
|3 + 3 + 2&lt;br /&gt;
|3&lt;br /&gt;
|linear&lt;br /&gt;
|-&lt;br /&gt;
|Voltcraft&lt;br /&gt;
|VSP 2410&lt;br /&gt;
|470&lt;br /&gt;
|40 + 40 + 6&lt;br /&gt;
|10 + 10 + 1.5&lt;br /&gt;
|3&lt;br /&gt;
|getaktet&lt;br /&gt;
|-&lt;br /&gt;
|TTI&lt;br /&gt;
|EX355R&lt;br /&gt;
|330&lt;br /&gt;
|35&lt;br /&gt;
|5&lt;br /&gt;
|1&lt;br /&gt;
|Mixed-mode (getaktet + linear)&lt;br /&gt;
|-&lt;br /&gt;
|TTI&lt;br /&gt;
|EX354RD&lt;br /&gt;
|480&lt;br /&gt;
|35 + 35&lt;br /&gt;
|4 + 4&lt;br /&gt;
|2&lt;br /&gt;
|Mixed-mode (getaktet + linear)&lt;br /&gt;
|-&lt;br /&gt;
|TTI&lt;br /&gt;
|EX354RT&lt;br /&gt;
|540&lt;br /&gt;
|35 + 35 + (1,5-5)&lt;br /&gt;
|4 + 4 + 5&lt;br /&gt;
|3&lt;br /&gt;
|Mixed-mode (getaktet + linear)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
 **) Das Rigol DP832(A) schaltet die Ausgänge nicht physisch/galvanisch ab. Die Power-MOSFETs der Ausgangsstufe werden lediglich auf Soll-NULL gesetzt. Dies kann bei Drift auch durchaus ungleich 0,00 Volt bedeuten!&lt;br /&gt;
&lt;br /&gt;
== Siehe auch ==&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Grundlagen]]&lt;br /&gt;
[[Kategorie:Spannungsversorgung_und_Energiequellen]]&lt;/div&gt;</summary>
		<author><name>Promeus</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=Lehrvideos&amp;diff=92432</id>
		<title>Lehrvideos</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=Lehrvideos&amp;diff=92432"/>
		<updated>2016-03-17T06:23:52Z</updated>

		<summary type="html">&lt;p&gt;Promeus: Änderung 92412 von 65.39.193.20 (Diskussion) rückgängig gemacht.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Lehrvideos zu FPGA, VHDL, Verilog und Digital Design=&lt;br /&gt;
Hier ensteht eine Linkliste von Lehrvideos und Demos, die den Einstieg und Meisterschaft(?) im Design von digitalen Systemen erleichtern sollen. Die Videos sollen zeigen, wie man mit den Tools arbeitet. &lt;br /&gt;
&lt;br /&gt;
Eine kurze Durchsicht bei youtube zeigt auf, dass nur ein kleiner Teil der Videos als Lehrvideo taugt, der Großteil sind Promotion-Videos, die hier nicht gelistet werden.&lt;br /&gt;
&lt;br /&gt;
== VHDL and Xilinx Spartan FPGA 1/2 ==&lt;br /&gt;
&lt;br /&gt;
* [http://www.youtube.com/watch?v=Bg_4nqSs2OY| VHDL and Xilinx Spartan FPGA 1/2] (Video privat, nicht einsehbar)&lt;br /&gt;
* [http://www.youtube.com/watch?v=SRsISGjRj-4| VHDL and Xilinx Spartan FPGA 2/2] (Video privat, nicht einsehbar)&lt;br /&gt;
&lt;br /&gt;
Auf englisch kommentierte Demo die zeigt, wie man zu einem zugehörigen Blockbild den VHDL-Code schreibt und diesen synthetisiert. Gezeigt werden die Xilinxtools ISE, RTL-View, Core Generator.&lt;br /&gt;
&lt;br /&gt;
== Einstieg mit Altera DE1 Board ==&lt;br /&gt;
*FPGA Tutorial 1. Blinking LEDs on DE1 Altera Board &lt;br /&gt;
[http://www.youtube.com/watch?v=T9VbBI3foGQ|Youtube-Video &amp;quot;FPGA Tutorial 1. Blinking LEDs on DE1 Altera Board&amp;quot;]&lt;br /&gt;
*FPGA Tutorial 2. Functions and procedures in VHDL on DE1 Altera Board &lt;br /&gt;
[http://www.youtube.com/watch?v=j2lAPIjpF1w|Youtube-Video &amp;quot;FPGA Tutorial 2. Functions and procedures in VHDL on DE1 Altera Board&amp;quot;]&lt;br /&gt;
*FPGA Tutorial 3. UART in VHDL on Altera DE1 Board &lt;br /&gt;
[http://www.youtube.com/watch?v=fMmcSpgOtJ4|Youtube-Video &amp;quot;FPGA Tutorial 3. UART in VHDL on Altera DE1 Board&amp;quot;]&lt;br /&gt;
*FPGA Tutorial 4: VGA interface in VHDL on DE1 Altera Board &lt;br /&gt;
[http://www.youtube.com/watch?v=mS0VZwnZssA|Youtube-Video &amp;quot;FPGA Tutorial 4: VGA interface in VHDL on DE1 Altera Board.&amp;quot;]&lt;br /&gt;
&lt;br /&gt;
== Introductory tutorial on Verilog  ==&lt;br /&gt;
* [http://www.youtube.com/watch?NR=1&amp;amp;v=jkiHUaNIAKg| Introductory tutorial on Verilog] PowerPoint Vorlesung, einschläfernde Stimme, aber im Inhalt solide. &lt;br /&gt;
Erklärt werden die Beschreibungsformen (gatter, Verhalten, Prozeduraler Ansatz) und die Grundelemente register,wire,module.&lt;br /&gt;
&lt;br /&gt;
== How to Setup Simulation in ModelSim ==&lt;br /&gt;
*[http://www.youtube.com/watch?v=VTMelKXXmho| Modelsim]&lt;br /&gt;
Dieser Englischsprachiger Screencast erklärt vornehmlich die GUI-basierte Bedienung des modelsim-Simulators, auf die script-steuerung wird kurz hingewiesen. Erklärt werden compile, compile-Order, Filestruktur, Fenstergruppierung. Leider wird kaum auf die Bedienung des wave-Fensters eingegangen.&lt;br /&gt;
&lt;br /&gt;
==Statische Timing-Analyse==&lt;br /&gt;
*[http://www.youtube.com/watch?v=pEj6LR-C84Y| Lec-33 static timing analysis.wmv]&lt;br /&gt;
*[http://www.youtube.com/watch?v=mrY0MzCBgAo| Lec-34 static timing analysis]&lt;br /&gt;
Über zwei Stunden feinstes Indian English von Hold/Set-time zu clock-constrainst, false pathes und SDF. Hochschulvortrag mit handgezeichnetet Folien.&lt;br /&gt;
&lt;br /&gt;
==Timing constraints - Xilinx==&lt;br /&gt;
*[http://www.youtube.com/watch?v=dRM0HVdqvZo&amp;amp;| Kapitel eins - Definition und Zweck von Timing constraints]&lt;br /&gt;
*[http://www.youtube.com/watch?v=38Px7CmGczo| Kapitel zwei - period, jitter, Offset]&lt;br /&gt;
*[http://www.youtube.com/watch?v=P3rQssXEFm8| Kapitel drei - Optionen, Eingabemöglichkeiten]&lt;br /&gt;
Offizielles Xilinx-Lehrmodul zu timing-constraints als PowerPoint-Vortrag. Das Video folgt der klassichen Lehrmethodik: Präsentation neues Wissens and anschliessende Vertiefung durch Beispiele und Frage/Antwort &lt;br /&gt;
Da die Basics der Timing-Constraints (kritischer Pfad, jitter, ...) für alle FPGA-Familien gleich sind, lohnt sich mindestens das erste Kapitel auch für Nutzer von Altera, Actel und andere.&lt;br /&gt;
&lt;br /&gt;
== Programming/Bitstream download with Xilinx Impact ==&lt;br /&gt;
*[http://www.youtube.com/watch?v=gnSiwBn0djQ| Intro to FPGAs for Software Engineers - Part 5 - Programming, JTAG, PROMs, &amp;amp; iMPACT]&lt;br /&gt;
Dieser Screencast zeigt die Klicks und Eingaben um ein Board (FPGA,PROMS) mit JTAG-Schnittstelle über das Impact-tool der Xilinx-ISE zu programmieren. Perfekt lesbar an einem 1080 Monitor.&lt;br /&gt;
&lt;br /&gt;
== How to use KCPSM3 in VHDL FPGA based project ==&lt;br /&gt;
* [http://www.youtube.com/watch?v=An3x5tKL5Js| How to use KCPSM3 in VHDL FPGA based project ]&lt;br /&gt;
Der KCPSM3 ist der Vorläufer der 8-Bit Soft-CPU Picoblaze von Xilinx. Das unkommentierte, aber mit Musik unterlegte Video zeigt wie im ISE Editor der VHDL-Code (Component-Instanziierung) hierfür erstellt wird. Einzelne Clicks in der Tooliste sind grafisch hervorgehoben. Der Text ist nicht sonderlich gut lesbar.&lt;br /&gt;
&lt;br /&gt;
== Noch ohne abschliessende Bewertung ==&lt;br /&gt;
&lt;br /&gt;
* [http://www.youtube.com/watch?v=Ob7B6x5g6tw FPGA Xilinx VHDL Video Tutorial]: Zeigt das Aufsetzen eines Projektes in der Xilinx-ISE.&lt;br /&gt;
&lt;br /&gt;
* [http://www.youtube.com/watch?v=FxF0M3DA68Y Basic Schematic Input Tutorial] Xilinx-ISE, project from the scratch, fürchterlicher Ton&lt;br /&gt;
&lt;br /&gt;
* [http://www.eejournal.com/design/fpga/on-demand] EEJournal Webcasts und Videos zum Thema FPGA and Programmable Logic Design&lt;br /&gt;
&lt;br /&gt;
=== Vorlesungen  Prof.S.Srinivasan , Madras, Indien ===&lt;br /&gt;
bspw.:&lt;br /&gt;
*[http://www.youtube.com/watch?v=RZQTTfU9TNA| Lecture 30 Encoders and Decoders]&lt;br /&gt;
Vorlesungsvideo, stark akzentgefärbtes Englisch, erklärt werden die Grundlagen des Digitaldesigns, EDA-Tools werden vorgestellt.&lt;br /&gt;
&lt;br /&gt;
==Nicht empfohlen==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:FPGA und Co]]&lt;/div&gt;</summary>
		<author><name>Promeus</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=K%C3%BChlk%C3%B6rper&amp;diff=92431</id>
		<title>Kühlkörper</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=K%C3%BChlk%C3%B6rper&amp;diff=92431"/>
		<updated>2016-03-17T06:23:11Z</updated>

		<summary type="html">&lt;p&gt;Promeus: Änderung 92414 von 65.39.193.20 (Diskussion) rückgängig gemacht.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Dieser Artikel versteht sich als Unterpunkt zum Artikel [[Leistungselektronik]].&lt;br /&gt;
&lt;br /&gt;
== Einleitung ==&lt;br /&gt;
&lt;br /&gt;
Ein Kühlkörper (engl. &#039;&#039;heat sink&#039;&#039;) dient der Begrenzung der Betriebstemperatur elektronischer Bauteile. Er wird immer dann benötigt, wenn die Verlustleistung so hoch ist, dass die sich aufgrund der herrschenden Randbedingungen wie Wärmeleitfähigkeit, Luftkonvektion und Umgebungstemperatur einstellende Bauteiltemperatur den  höchst zulässigen Wert übersteigen würde. Der Kühlkörper hat dabei die Aufgabe, die entstehende Wärme möglichst gut auf eine große Fläche zu verteilen, um sie besser an die Umgebung abgeben zu können. Damit wird der Unterschied zwischen Lufttemperatur und Bauteiltemperatur gesenkt. Technisch spricht man hierbei von einer Verringerung des Temperaturwiderstandes.&lt;br /&gt;
&lt;br /&gt;
[[bild: Rippenkuehlkoerper.png | thumb | 300px| Rippenkühlkörper, Schnittdarstellung]]&lt;br /&gt;
&lt;br /&gt;
Das grundlegende Prinzip sieht man an jedem Rippenkühlkörper. An der Stelle, wo das Kühlobjekt angeschraubt/gepresst ist (rotes Viereck), ist ein dicker &amp;quot;Klumpen&amp;quot; Material, der erstmal die Wärme auf eine etwas größere Fläche verteilen soll. Bei CPU-Lüftern ist dort teilweise Kupfer eingepresst, weil das noch besser als Aluminium Wärme leitet (engl. heat spreader, Wärmespreizer). Danach folgen viele, nach aussen dünner werdende Rippen. In der Mitte noch dick, dort muss die Wärme ja verlustarm durchgeleitet werden, aussen dünn, dort ist fast alle Wärme schon abgegeben. Ein guter Kühlkörper hat eine möglichst große Oberfläche bei möglichst kleiner Masse. Zudem sind sie so gefertigt und platziert, dass die Luftkonvektion unterstützt wird. Viele Kühlkörper werden aus preiswerten [http://de.wikipedia.org/wiki/Strangpressen Strangpressprofilen] hergestellt.&lt;br /&gt;
&lt;br /&gt;
== Wärmewiderstand ==&lt;br /&gt;
&lt;br /&gt;
Die wichtigste Kennzahl eines Kühlkörpers ist der Wärmewiderstand. Er gibt an, um wie viel Kelvin sich die Temperatur zwischen Wärmequelle und Umgebung unterscheidet, wenn eine bestimmte Wärmeleistung abgeführt werden muss. Die Einheit ist K/W, Kelvin pro Watt. (Hinweis: Oft wird die Einheit °C/W angegeben, das ist allerdings nicht ganz korrekt. Temperaturdifferenzen werden in Kelvin angegeben). Je niedriger der Wärmewiderstand, umso besser der Kühlkörper, weil er die gleiche Wärmeleistung mit einem kleineren Temperaturunterschied abführen kann. Dadurch bleibt das Bauteil kühler, was der Lebensdauer und Funktionssicherheit zu Gute kommt.&lt;br /&gt;
&lt;br /&gt;
Allgemein gilt die Formel&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;\Delta T = P_{\theta} \cdot R_{\theta}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*&amp;lt;math&amp;gt;\Delta T&amp;lt;/math&amp;gt; - Temperaturdifferenz zwischen Wärmequelle und Umgebung in K&lt;br /&gt;
*&amp;lt;math&amp;gt;P_{\theta}&amp;lt;/math&amp;gt; - Wärmeleistung in W&lt;br /&gt;
*&amp;lt;math&amp;gt;R_{\theta}&amp;lt;/math&amp;gt; - Wärmewiderstand in K/W&lt;br /&gt;
&lt;br /&gt;
Der griechische Buchstabe Theta wird als Symbol für Wärmekenngrößen verwendet, denn es geht bei diesen Rechnungen um Wärmewiderstände und Wärmeleistungen, keine elektrischen Widerstände und elektrische Leistungen.&lt;br /&gt;
&lt;br /&gt;
== Berechnung des Wärmewiderstands ==&lt;br /&gt;
&lt;br /&gt;
Für einen Kühlkörper ist der Wärmewiderstand im Datenblatt angegeben. Diesen rein aus dem Aufbau zu berechnen ist sehr schwierig, auch das Messen ist nicht so einfach. Was man jedoch berechnen kann und muss ist der Wärmewiderstand eines Gesamtaufbaus, d.h. Bauteil + Kühlkörper. Dazu muss man im Wesentlichen zwei Fälle unterscheiden.&lt;br /&gt;
&lt;br /&gt;
=== Bauteil ohne Kühlkörper ===&lt;br /&gt;
&lt;br /&gt;
Ohne Kühlkörper kann ein Bauteil seine Wärme über zwei Wege abgeben. Über das Gehäuse direkt an die Luft (Abstrahlung und Konvektion) oder über die Anschlüsse auf die Platine (Wärmeleitung). Dies alles findet parallel statt, aber je nach Gehäusetyp und Platinengestaltung ist die Verteilung auf die Kühlwege verschieden. Transistoren im Metallgehäuse (z.&amp;amp;nbsp;B. TO-3) oder mit Metallfahne (z.&amp;amp;nbsp;B. TO220) können recht viel Wärme über das Gehäuse abgeben (Konvektion). Effektive Abstrahlung braucht immer recht hohe Temperaturdifferenzen von 100K und mehr, wie sie meist nur von Leistungswiderständen und Elektronenröhren erreicht werden. Leistungsdioden im Plastikgehäuse hingegen können den Großteil der Wärme nur über die Anschlüsse abgeben. Deshalb sollten diese möglichst kurz sein, und auf der Platine an dicke Leiterbahnen oder gar Kupferflächen angeschlossen werden. Ähnliches gilt für leistungsverstärkte DIL- oder SOIC-[[IC-Gehäuseformen | Gehäuse]], welche oft für [[H-Brücken_Übersicht | Leistungstreiber]] oder [[FET | MOSFETs]] verwendet werden. In diesen Fällen sollten die Pins direkt an Kupferflächen &#039;&#039;&#039;ohne&#039;&#039;&#039; Wärmefallen ([https://de.wikipedia.org/wiki/Thermal_Pad Thermal Pad]) angeschlossen werden, auch wenn dadurch das [[Löten]] erschwert wird. &lt;br /&gt;
&lt;br /&gt;
Für die meisten Bauteile ist im Datenblatt der Wärmewiderstand zwischen dem eigentlichen Chip und der Umgebung angegeben.&lt;br /&gt;
&lt;br /&gt;
*&amp;lt;math&amp;gt;R_{\theta JA}&amp;lt;/math&amp;gt; - Wärmewiderstand (griechisches Zeichen [https://de.wikipedia.org/wiki/Theta Groß-Theta]) zwischen Sperrschicht und Umgebung ohne zusätzlichen Kühlkörper in K/W&lt;br /&gt;
&lt;br /&gt;
Damit kann man direkt in die oben genannte Formel gehen und die Temperaturdifferenz ausrechnen. Die Temperatur der Sperrschicht errechnet sich einfach aus der maximalen Umgebungstemperatur (meist Luft) und dem errechneten Temperaturunterschied.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;T_J = T_A + \Delta T &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*&amp;lt;math&amp;gt;T_J&amp;lt;/math&amp;gt; - Temperatur der Sperrschicht in °C (engl. &amp;quot;&#039;&#039;&#039;j&#039;&#039;&#039;unction&amp;quot;)&lt;br /&gt;
*&amp;lt;math&amp;gt;T_A&amp;lt;/math&amp;gt; - Temperatur der Umgebung in °C (engl. &amp;quot;&#039;&#039;&#039;a&#039;&#039;&#039;mbient&amp;quot;)&lt;br /&gt;
*&amp;lt;math&amp;gt;\Delta T&amp;lt;/math&amp;gt; - Temperaturdifferenz zwischen Wärmequelle und Umgebung in K&lt;br /&gt;
&lt;br /&gt;
=== Bauteil mit Kühlkörper ===&lt;br /&gt;
&lt;br /&gt;
Will man mit einem IC größere Verlustleistungen umsetzen (Linearer Spannungsregler, [[Transistor]], etc.] muss meist ein Kühlkörper her. Die jeweiligen Gehäuse besitzen dazu meist eine Kühlfahne, an die man den Kühlkörper anschrauben kann. Bei anderen gibt es Klemmen, die den Kühlkörper fest klemmen. Hier gibt es einiges zu beachten. Der Kühlkörper darf nicht zu schwach angeschraubt werden, sonst ist der Wärmewiderstand zwischen Gehäuse und Kühlkörper zu gross. Er darf aber auch nicht zu stark angeschraubt/angepresst werden, um das Gehäuse nicht zu deformieren. Wichtig ist der Übergang zwischen IC und Kühlkörper. Hier muss bei größeren Leistungen (&amp;gt;5W) Wärmeleitpaste verwendet werden. Ihre Aufgabe ist es, die Luft zwischen den Oberflächen zu verdrängen, welche sich in den mikroskopischen Unebenheiten befindet und den Wärmewiderstand &#039;&#039;&#039;deutlich&#039;&#039;&#039; erhöht. Dabei sollte die Schicht sehr dünn sein, denn die Wärmeleitpaste ist im Vergleich zu Aluminium oder Kupfer ein schlechter Wärmeleiter, allerdings deutlich besser als Luft. Das oft verwendete TO220 Gehäuse hat ca. 1cm^2 Kühlfläche. Wird ein Kühlkörper ohne Wärmeleitpaste aufgeschraubt und entsteht dabei ein angenommener Luftspalt von 10µm, hat dieser einen Wärmewiderstand von ca. 4K/W! Mit Wärmeleitpaste sind es rein rechnerisch nur 1/150tel, also etwa 0,026 K/W. Real muss man jedoch eher mit 0,5-1K/W rechnen.&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;
! Material || Wärmeleitfähigkeit&amp;lt;br/&amp;gt;[W/(m*K)]&lt;br /&gt;
|-&lt;br /&gt;
| Luft            || 0,026&lt;br /&gt;
|-&lt;br /&gt;
| Wärmeleitpaste  ||   4 -  10&lt;br /&gt;
|-&lt;br /&gt;
| Aluminium       || 221*&lt;br /&gt;
|-&lt;br /&gt;
| ALMg3           || 140 - 160&lt;br /&gt;
|-&lt;br /&gt;
| ALMg4,5Mn       || 120 - 140&lt;br /&gt;
|-&lt;br /&gt;
| ALMgSi1         || 170 - 220&lt;br /&gt;
|-&lt;br /&gt;
| ALCuMg1         || 160 - 200&lt;br /&gt;
|-&lt;br /&gt;
| ALCu6,5Mn0,3    ||   95 - 130&lt;br /&gt;
|-&lt;br /&gt;
| Kupfer          || 370*&lt;br /&gt;
|-&lt;br /&gt;
| Messing MS60    ||   90 - 113&lt;br /&gt;
|- &lt;br /&gt;
| Cu Be 2         ||   92 - 125&lt;br /&gt;
|-&lt;br /&gt;
| Cu Co 2 Be      || 192 - 239&lt;br /&gt;
|-&lt;br /&gt;
| Cu Cr 1 Zr      || 167 - 320&lt;br /&gt;
|-&lt;br /&gt;
| Cu Ni 2 Si      ||   67 - 120&lt;br /&gt;
|-&lt;br /&gt;
| Stahl 0,2%C     ||   50&lt;br /&gt;
|-&lt;br /&gt;
| Stahl 8%Cr      ||   21&lt;br /&gt;
|-&lt;br /&gt;
| Zinn            ||   65&lt;br /&gt;
|-&lt;br /&gt;
| Blei            ||   35&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
*Werte DIN V 4108-4, Achtung: bei den verfügbaren Legierungen sind weit geringere Wärmeleitfähigkeiten zu erwarten!&lt;br /&gt;
&lt;br /&gt;
Für die Berechnung des gesamten Wärmewiderstandes müssen hier drei Widerstände in Reihe betrachtet werden. Der Erste ist im Datenblatt zwischen Chip und Gehäuse angeben (engl. junction to case). Danach kommt der Übergang Gehäuse-Kühlkörper. Dieser ist von der Oberflächengüte und der Wärmeleitpaste abhängig und ist bei einigen Leistungsbauteilen im Datenblatt angegeben, manchmal kann er nur abgeschätzt werden. Ein TO220 Gehäuse mit dünner Schicht Wärmeleitpaste hat hier ca. 0,5-1K/W. Zum Schluss muss noch der Wärmewiderstand des Kühlkörpers addiert werden, dieser ist im Datenblatt angegeben. Vorsicht, bei größeren Kühlkörpern mit großen Rippen ist die Einbaulage wichtig, damit der Luftstrom frei strömen und gut kühlen kann (freie Konvektion, warme Luft strömt nach oben und kalte strömt unten nach). Die drei Wärmewiderstände werden addiert und über die oben angegebene Formel der Gesamtwärmewiderstand und damit die Temperaturerhöhung der Sperrschicht berechnet.&lt;br /&gt;
Dabei muss man aufpassen, dass man nicht aus Versehen den Wärmewiderstand ohne Kühlkörper (&amp;lt;math&amp;gt;R_{\theta JA}&amp;lt;/math&amp;gt;) in die Formel einsetzt!&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;R_{\theta} = R_{\theta JC} + R_{\theta CS} + R_{\theta S}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*&amp;lt;math&amp;gt;R_{\theta}&amp;lt;/math&amp;gt; - Gesamtwärmewiderstand in K/W&lt;br /&gt;
*&amp;lt;math&amp;gt;R_{\theta JC}&amp;lt;/math&amp;gt; - Wärmewiderstand zwischen Sperrschicht und Gehäuse (engl. &#039;&#039;&#039;j&#039;&#039;&#039;unction - &#039;&#039;&#039;c&#039;&#039;&#039;ase)&lt;br /&gt;
*&amp;lt;math&amp;gt;R_{\theta CS}&amp;lt;/math&amp;gt; - Wärmewiderstand zwischen Gehäuse und Kühlkörper (engl. &#039;&#039;&#039;c&#039;&#039;&#039;ase - heat &#039;&#039;&#039;s&#039;&#039;&#039;ink)&lt;br /&gt;
*&amp;lt;math&amp;gt;R_{\theta S}&amp;lt;/math&amp;gt; - Wärmewiderstand des Kühlkörpers (engl. heat &#039;&#039;&#039;s&#039;&#039;&#039;ink)&lt;br /&gt;
&lt;br /&gt;
Wird eine Schaltung in einem Gehäuse eingesetzt, muss man dafür sorgen dass die warme Luft abgeführt wird, vor allem in Kunststoffgehäusen. Ansonsten gibt es einen Wärmestau und die Temperatur steigt deutlich!&lt;br /&gt;
&lt;br /&gt;
==== Beispiel ====&lt;br /&gt;
&lt;br /&gt;
Gesucht:&lt;br /&gt;
&lt;br /&gt;
*&amp;lt;math&amp;gt;R_{\theta S}&amp;lt;/math&amp;gt; - max. Wärmewiderstand des Kühlkörpers&lt;br /&gt;
&lt;br /&gt;
Gegeben:&lt;br /&gt;
&lt;br /&gt;
*&amp;lt;math&amp;gt;P_{\theta}&amp;lt;/math&amp;gt; : 10 W&lt;br /&gt;
*&amp;lt;math&amp;gt;R_{\theta JC}&amp;lt;/math&amp;gt; : 3 K/W&lt;br /&gt;
*&amp;lt;math&amp;gt;R_{\theta CS}&amp;lt;/math&amp;gt; : 0,5 K/W&lt;br /&gt;
*&amp;lt;math&amp;gt;T_J&amp;lt;/math&amp;gt; : 130 °C&lt;br /&gt;
*&amp;lt;math&amp;gt;T_A&amp;lt;/math&amp;gt; : 40 °C&lt;br /&gt;
&lt;br /&gt;
Rechnung:&lt;br /&gt;
&lt;br /&gt;
Um die Berechnung durchführen zu können, müssen wir zuerst die maximal zulässige  Temperaturdifferenz zwischen Sperrschicht und Umgebung festlegen. Je größer man diesen Wert wählt, umso kleiner kann der Kühlkörper sein, aber umso heißer wird auch das Bauteil im Inneren betrieben.&lt;br /&gt;
Eine Angabe dazu findet man manchmal im Datenblatt (Operating junction temperature). Achtung, manchmal wird nur die zulässige Umgebungstemperatur genannt (Operationg temperature)! Wenn nicht, kann man sich an folgenden Angaben orientieren&lt;br /&gt;
* Leistungsbauteile wie [[Transistor]]en, [[TRIAC]]s etc. sind meist bis 150°C Sperrschichttemperatur ausgelegt, teilweise auch bis 200°C&lt;br /&gt;
* Leistungs-LEDs verkraften dauerhaft nur um die 80°C&lt;br /&gt;
* Man sollte die maximalen Betriebstemperaturen nicht ausreizen, wenn man eine hohe Lebensdauer und Funktionssicherheit anstrebt und 10-30K unter den Maximalwerten bleiben&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;\Delta T = T_J - T_A = 130 ^\circ C - 40 ^\circ C = 90 K&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;R_{\theta} = \frac { \Delta T}{P_{\theta}}  = \frac {90K}{10W} = 9 K/W  &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;R_{\theta S} = R_{\theta} - R_{\theta JC} - R_{\theta CS} = 9 K/W - 3 K/W - 0,5K/W = 5,5 K/W&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ergebnis:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;R_{\theta S} \leqq 5,5 K/W&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Der Kühlkörper darf einen maximalen Wärmewiderstand von 5,5 K/W haben, wenn die oben genannten Bedingungen eingehalten werden sollen. Ein Kühlkörper mit einem kleineren Wärmewiderstand hält das Bauteil kühler.&lt;br /&gt;
&lt;br /&gt;
=== Zwangskühlung  ===&lt;br /&gt;
&lt;br /&gt;
Natürlich muss der Kühlkörper die Wärme auch abführen können. Was aber, wenn der für den Wärmeabtransport benötigte Kühlkörper mechanisch nicht ins Gehäuse paßt oder die entstehende Eigenkonvektion zu gering ist?&lt;br /&gt;
&lt;br /&gt;
Hier kommen die Lüfter zum Einsatz, das Ganze nennt sich dann Zwangskühlung. Der Effekt beruht darauf, dass wesentlich mehr Luft am Kühlkörper vorbeiströmen kann und damit (bei gleicher Temperaturerhöhung des Luftvolumenelementes) insgesamt mehr Wärme abgegeben werden kann.&lt;br /&gt;
&lt;br /&gt;
Durch den Einsatz eines Lüfters lässt sich der effektive Wärmewiderstand eines Kühlkörpers etwa um mehrere Faktoren verbessern, bzw. der Kühlkörper kann in der Größe entsprechend reduziert werden. Dabei sind je nach Einbausituation des Kühlers und des Lüfters Faktoren zwischen 3-10 möglich. Ein typischer Wert, der sich bei durchschnittlich dimensionierten Kühlkörpern ergibt, ist ein Faktor 4-5. Die Temperaturüberhöhung schrumpft dabei z.B. von 80 Grad auf 20 Grad zusammen. Dies sind jedoch nur Richtwerte für den ersten Entwurf, eine Prüfung durch Messung ist unbedingt erforderlich. &lt;br /&gt;
&lt;br /&gt;
Beim Einsatz eines Lüfters ist auch daran zu denken, daß sowohl die Ansaugöffnung als auch der Kühlkörper verschmutzen und regelmäßig gereinigt werden müssen. Weiterhin erzeugt ein Lüfter natürlich auch Lärm. Je kleiner der Lüfter und je größer die benötigte Luftlieferleistung, umso lauter wird der Lüfter. Umgekehrt kann man aber mit einem großen, eher langsam laufenden Lüfter den Geräuschpegel stark absenken. Letztendlich kann ein Lüfter auch kaputt gehen, womit die Kühlung deutlich verschlechtert wird und das Bauteil überhitzt. Hier empfiehlt sich bei wertvolleren Objekten eine Lüfterüberwachung, wie sie seit längerem bei PCs eingesetzt wird oder das Verbauen mehrerer Lüfter, sodass der Ausfall eines einzigen nicht sofort zu einem Geräteausfall führt.&lt;br /&gt;
&lt;br /&gt;
==== Physikalischer Hintergrund der Zwangskühlung mit Luft ====&lt;br /&gt;
&lt;br /&gt;
Luft hat eine Wärmekapazität von ungefähr 1kJ/kg/K was bedeutet, daß für die Erwärmung von 1kg Luft um 1K eine Energiemenge von 1kJ = 1000Ws erforderlich ist. D.h. für den kontinuierlichen Abtransport von 100W Wärme werden mindestens 100g Luft pro Sekunde benötigt, wenn man diese nur um 1K erwärmen will. &lt;br /&gt;
Um also 100W von einem Kühlkörper abzuführen, der sich hier im Beispiel um 8K erwärmen darf, sind  100W / 8K  = 12,5g Luft pro Sekunde erforderlich. Ein Gramm Luft hat ein Volumen von etwa 0,77l, d.h. bei 12,5 g muss der Lüfter 9,6 l/s bzw. 34,5 m³/h liefern, die dann auch durch den gesamten Kühlkörper geblasen werden müssen.&lt;br /&gt;
&lt;br /&gt;
Diese Werte sind jedoch nur theoretisch von Interesse, da die Praxis gezeigt hat, dass die effektive Kühlwirkung sehr stark von den sich einstellenden Mikroturbulenzen am Bauteil abhängt. Diese sind für den Wärmegradienten zwischen Kühleroberfläche und Umgebungsluft verantwortlich. Durch eine stark laminare = gleichförmig strömende Luft wird ein Bauteil eher schlecht gekühlt. Bestimmte Bauformen von Bauelementen und Kühlern begünstigen die Turbulenzbildung, behindern damit zwar den Luftstrom, da der Widerstand steigt, kühlen aber letztlich besser. So ist es zu erklären, dass manche Bauteile ohne Kühlung auskommen, da sie die Eigenkonvektion fördern und günstig im Luftstrom sitzen und von einem Kühler weniger profitieren, als andere Problembauteile.&lt;br /&gt;
&lt;br /&gt;
Generell kann man sagen, dass flache, breite Bauteile zunehmend schlechter selbstkühlend sind, je größer sie werden und damit eher einen KK brauchen. FPGAs und Grafikchips sind solche Kandidaten. Hier empfehlen sich teilweise eigene Chipkühler. Auch RAM-Riegel mit sehr flachen Chips können so sehr effektiv kühl gehalten werden.&lt;br /&gt;
&lt;br /&gt;
== Die Platine als Kühlkörper ==&lt;br /&gt;
&lt;br /&gt;
Bei kleineren Leistungen (&amp;lt; 5W) kann man auch die Platine als Kühlkörper benutzten. Dabei muss jedoch die Wärme vom Bauteil möglichst schnell auf eine größere Fläche verteilt werden. Dazu nutzt man große Kupferflächen direkt am Bauteil. Diese werden teilweise beidseitig angebracht. Die Wärme muss man dann jedoch mit vielen Vias von der einen Seite, auf der das Bauteil sitzt, auf die andere geleitet werden. Diese Vias heißen thermische Vias, da sie nicht als elektrische Verbindung sondern als Wärmeleiter dienen. Das funktioniert deshalb so gut, weil die Vias innen mit Kupfer beschichtet sind, welches die Wärme wesentlich besser leitet als das Material der Leiterplatte (FR2, FR4).&lt;br /&gt;
Verfügt ein SMD-Bauteil über eine sogenannte &amp;quot;heat slug&amp;quot; oder thermal pad auf der Unterseite, muss dieses zur Wärmeableitung unbedingt angelötet werden. Dies ist mit einem normalen Lötkolben möglich, wenn die Platine an dieser Stelle mehrere Durchkontaktierungen mit einem Durchmesser von ca. 1,5mm aufweist. Durch diese Durchkontaktierungen kann genug Lötzinn auf die andere Seite fließen um diese Fläche mit der Platine zu verlöten. &lt;br /&gt;
&lt;br /&gt;
Mit modernen Technologien ist es auch möglich, deutlich größere Wärmeleistungen von der Platine abzuführen. Dazu werden z.&amp;amp;nbsp;B. Platinen mit Aluminium- oder Kupferkern  oder auf einen Metallträger laminierte PCBs benutzt (IMS = &#039;&#039;&#039;I&#039;&#039;&#039;nsulated &#039;&#039;&#039;M&#039;&#039;&#039;etal &#039;&#039;&#039;S&#039;&#039;&#039;ubstrat). Diese kommen z.&amp;amp;nbsp;B. bei Hochleistungs-[[LED]]s zum Einsatz. Für Hobbyzwecke sind sie aber noch wesentlich zu teuer, vor allem bei Einzelstücken.&lt;br /&gt;
&lt;br /&gt;
== Peltierelement ==&lt;br /&gt;
&lt;br /&gt;
Ein [http://de.wikipedia.org/wiki/Peltier-Element Peltierelement] arbeitet nach dem [http://de.wikipedia.org/wiki/Thermoelektrizit%C3%A4t#Peltier-Effekt Peltier-Effekt]. Dabei wird in einem Halbleiter durch Stromfluss eine Seite des Elements kalt, die andere heiß. Damit kann man ein kleines Objekt beliebig kühlen oder heizen. Allerdings sind Peltierelemente nur in eher kleinen Abmessungen und Leistung verfügbar (bis einige Dutzend Watt) und deren Effizienz ist auch nicht sonderlich hoch. Die allgemeine Auffassung, die könnten Wärme einfach verschwinden lassen ist falsch. Denn die heiße Seite muss klassisch gekühlt werden, je nach Temperaturunterschied mit mehr als der doppelten Kühlleistung als auf der kalten Seite an Wärme abgeführt wird.&lt;br /&gt;
&lt;br /&gt;
== Heat pipe ==&lt;br /&gt;
&lt;br /&gt;
Eine [http://de.wikipedia.org/wiki/Heatpipe Heat pipe],auf deutsch Wärmerohr genannt, ist ein Rohr, welches mit einer leicht verdampfenden Flüssigkeit gefüllt ist. Wird ein Ende erhitzt, verdampft die Flüssigkeit und nimmt dabei sehr viel Wärme auf. Der Dampf steigt im Rohr ans andere Ende, kondensiert dort und gibt dabei seine Wärme wieder ab.&lt;br /&gt;
&lt;br /&gt;
Heat pipes werden auch als Wärmesuperleiter bezeichnet, weil sie Wärme 100-10.000 mal besser leiten als ein massiver Kupferstab mit gleichen Abmessungen.&lt;br /&gt;
&lt;br /&gt;
Auch hier muss gesagt werden, dass eine Heat pipe allein &#039;&#039;&#039;kein&#039;&#039;&#039; Kühlsystem ist, denn die Seite, auf der das Wärmetransportmedium wieder kondensiert, muss auch wieder klassisch gekühlt werden. Der grosse Vorteil ist die Abführung großer Wärmemengen auf engstem Raum, wie z.&amp;amp;nbsp;B. bei CPUs in Laptops.&lt;br /&gt;
&lt;br /&gt;
== Flüssigkühlung ==&lt;br /&gt;
&lt;br /&gt;
Im PC-Bereich ist es unter einigen Enthusiasten verbreitet, den Rechner entweder zu übertakten, um eine höhere Leistung zu erzielen oder super leise zu machen, um angenehmer arbeiten oder spielen zu können. In beiden Fällen muss eine große Wärmemenge abgeführt werden. Dabei wird die sehr hohe Wärmekapazität von Wasser genutzt, um auf kleinem Raum die Wärme von CPU, GPU, Festplatten etc. abzuführen. Aber auch hier ist zu beachten, dass am Ende einer Flüssigkühlung praktisch immer ein klassischer Wärmetauscher steht, welcher die Wärme an die Umgebungsluft abgibt. Dieser kann sich aber deutlich weiter entfernt vom zu kühlenden Objekt befinden als ein einfacher, direkt montierter Kühlkörper. &lt;br /&gt;
&lt;br /&gt;
Bei der Verwendung von Wasser statt Luft als Kühlmedium reduziert sich die Durchflußmasse in etwa um den Faktor 4,2, da die Wärmekapazität von Wasser bei ca. 4,182 kJ/kg/K liegt. Da Wasser aber auch eine deutlich höhere Dichte als Luft besitzt (Wasser = 1g/cm³; Luft = 1,3mg/cm³) kommt noch der Faktor von ~770 dazu, woraus sich ein Gesamtfaktor für das Durchflußvolumen von ~3230 ergibt.&lt;br /&gt;
&lt;br /&gt;
D.h. die Durchflußmenge in unserem oben genannten Beispiel (100W) sinkt auf ca. 2,9 ml/s bzw. 10,7 l/h.&lt;br /&gt;
&lt;br /&gt;
Vorteile&lt;br /&gt;
*Abtransport großer Wärmemengen auf kleinstem Raum&lt;br /&gt;
*nahezu lautlos&lt;br /&gt;
&lt;br /&gt;
Nachteile&lt;br /&gt;
*höherer Aufwand und Kosten&lt;br /&gt;
*Gefahr durch auslaufendes Kühlmittel&lt;br /&gt;
&lt;br /&gt;
Im Bereich der Leistungselektronik wird Flüssigkühlung eingesetzt, im Hobbybereich nahezu nicht.&lt;br /&gt;
&lt;br /&gt;
== Bauteilmontage auf dem Kühlkörper ==&lt;br /&gt;
&lt;br /&gt;
Die Montage der klassischen Halbleitergehäuse nach TO220 und ähnlichen gestaltet sich augenscheinlich simpel: Die Kühlfahne hat ein Loch. Da ist es doch sehr verlockend, das Bauteil mit einer Schraube durch ebendieses Loch auf dem Kühlkörper zu befestigen...&lt;br /&gt;
&lt;br /&gt;
Bei fachgerechter Ausführung spricht auch wenig gegen diese Montageweise. Dazu gehört dann auch das richtige Anzugsmoment für die Schraube. Zu lose angezogen und zwischen Bauteilgehäuse und wärmeabführender Oberfläche entsteht ein Luftspalt. Ein Wärmeleitpad oder Wärmeleitpaste schaffen zwar Abhilfe, aber die Wärmeleitfähigkeit dieser Stoffe liegt um Größenordnungen unter der von Aluminium (Kühlkörper) und Kupfer (Kühlfahne). Ein vorhandenes Wärmeleitpad wird mitunter auch nicht weit genug zusammengedrückt, sodass auch noch Optimierung möglich wäre. Nämlich durch festeres Anziehen der Schraube.&lt;br /&gt;
Zu fest angezogen und die Kühlfahne wölbt sich minimal. Dabei hebt der Bauteilkörper von der Oberfläche des Kühlkörpers ab und es entsteht wieder ein Spalt. Ungünstigerweise liegt aber genau dort der Usprung des Wärmeflusses (Silizium-Chip). Bei Conrad gibt es [http://www.conrad.de/ce/de/overview/0205045/Transistor-Halteklammern-Haltefedern Klammern] zur Befestigung von Transistoren von [http://www.fischerelektronik.de/web_fischer/de_DE/K%C3%BChlk%C3%B6rper/A06/Transistorhaltefedern/$search_result_naviActualPage/1/$search_result_naviLinesPerPage/100/search.xhtml;jsessionid=2C868850DA0202334B26912FF6948496#search_result_naviPoint Fischer].&lt;br /&gt;
&lt;br /&gt;
[[Datei: kuehlkoerper-montage.jpeg | thumb | 300px | Montagebeispiel]] Weitaus einfacher zu handhaben ist folgende Montageweise: Die Bauteile werden, ungeachtet der Montagebohrung, lose auf den Kühlkörper gelegt. Falls notwending natürlich mit Isolierstoff dazwischen und in jedem Fall hauchdünn mit einem Wärmeleitmittel bestrichen. Über die Bauteile wird dann ein Aluminiumprofil gelegt und erst dieses wird, weiterhin mit einer Schraube pro Bauteil, auf den Kühlkörper gespannt. Abgesehen davon, dass so auch SMD-Bauteile (IPAK!) auf einem Kühlkörper Platz finden, entsteht Druck genau über dem Hot Spot.&lt;br /&gt;
&lt;br /&gt;
{{clear}}&lt;br /&gt;
&lt;br /&gt;
== Weitere Hinweise ==&lt;br /&gt;
&lt;br /&gt;
*Große Hochlastwiderstände mit Keramikgehäuse werden im Normalbetrieb recht heiß (200-350°C). Diese Temperaturen sollten nicht auf die Platine kommen, denn das macht das Material nicht lange mit. Hier muss genau das Gegenteil von dem gemacht werden, was weiter oben für Bauteile ohne Kühlkörper empfohlen wurde. Die Anschlüsse müssen möglichst lang sein, damit wenig Wärme über sie abgegeben werden kann. Die Kühlung erfolgt nahezu nur über den Keramikkörper durch Wärmestrahlung und Konvektion.&lt;br /&gt;
* Ein TO220 Gehäuse kann ca. 1W ohne Kühlkörper abgeben.&lt;br /&gt;
* Bei der Dimensionierung des Kühlkörpers sollte man sich nicht an der maximal zulässigen Sperrschichttemperatur orientieren, sondern möglichst um 10..50K kühler bleiben. Das verbessert die Funktionssicherheit und vor allem die Lebensdauer erheblich!&lt;br /&gt;
* Merksatz über den dicken Daumen: Pro 10 Grad Temperaturerhöhung halbiert sich die Lebenserwartung eines Bauteils. (Arrheniusgesetz, RGT-Regel, 10-Grad-Gesetz)&lt;br /&gt;
* Temperaturzyklen verkürzen die Lebensdauer von Schaltungen erheblich&lt;br /&gt;
* Meist sind mehrere kleine Kühlkkörper deutlich kleiner und billiger als ein Großer.&lt;br /&gt;
&lt;br /&gt;
== Links ==&lt;br /&gt;
&lt;br /&gt;
* [[Leistungselektronik]]&lt;br /&gt;
*[http://www.mikrocontroller.net/topic/84303 Forumsbeitrag]: Beispielrechnung&lt;br /&gt;
*[http://www.mikrocontroller.net/topic/308826?goto=3325027#3325027 Forumsbeitrag]: Wärmewiderstand und Sperrschichttemperatur messen&lt;br /&gt;
* [http://www.mikrocontroller.net/topic/351187#3905083 Forumsbeitrag]: Dicker MOSFET, dünnes Anschlusspin?&lt;br /&gt;
* [https://www.mikrocontroller.net/topic/205307#4091697 Forumsbeitrag]: Wärmewiderstand einfacher Bleche&lt;br /&gt;
&lt;br /&gt;
== Weblinks ==&lt;br /&gt;
&lt;br /&gt;
* [http://sound.westhost.com/heatsinks.htm The Design of Heat sinks]. Eine ausführliche Seite zum Thema Kühlkörper, englisch&lt;br /&gt;
* [http://ludens.cl/Electron/Thermal.html Thermal Design], englisch&lt;br /&gt;
* [http://wiki.oliverbetz.de/owiki.php/FormelSammlung Universelle Formelsammlung], mit kurzen Erklärungen&lt;br /&gt;
* [http://www.thermoconsult.de/01_TechInfo/Physik.pdf Grundlagen zur Kühlung], inhaltlich gut, Formatierung eher mies&lt;br /&gt;
* [http://tangentsoft.net/elec/diy-hs.html DIY Heat Sinks]&lt;br /&gt;
* [http://www.fischerelektronik.de/ Kühlkörper] bei Fischer Elektronik&lt;br /&gt;
* [http://www.leiton.de/leiterplatten_teaser_alu.html Leiterplatten mit Alukern] bei Leiton&lt;br /&gt;
*[http://www.shop.display3000.com/mikrocontrollerloesungen/uc-mit-21-tft/d074-mikrocontroller-atmega-tft-farbdisplay-212.html Berechnung in der Praxis]: Unter Downloads das Handbuch laden, dann Seite 14&lt;br /&gt;
* [http://www.zabex.de/site/kurios.html#wafeila Ungewöhnliche Hochlastwiderstände im Eigenbau]&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Bauteile]]&lt;br /&gt;
[[Kategorie:Leistungselektronik]]&lt;br /&gt;
[[Category:Grundlagen]]&lt;/div&gt;</summary>
		<author><name>Promeus</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=GPIB-RS232-Schnittstelle&amp;diff=92386</id>
		<title>GPIB-RS232-Schnittstelle</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=GPIB-RS232-Schnittstelle&amp;diff=92386"/>
		<updated>2016-03-16T12:40:50Z</updated>

		<summary type="html">&lt;p&gt;Promeus: Vandalismus&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Achtung, Baustelle.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;von Sven Pauli&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Einfacher GPIB-Controller mit serieller Schnittstelle (RS232).&lt;br /&gt;
&lt;br /&gt;
== Einleitung ==&lt;br /&gt;
[[Datei:gpib-rs232.jpeg|miniatur|GPIB-RS232-Schnittstelle]]&lt;br /&gt;
Viele Messgeräte sind (auch heute immer noch) mit einer GPIB-Schnittstelle ausgerüstet. Zwar handelt es sich hierbei zwar um einen eher antiquierten, parallelen Datenbus, den Hewlett-Packard vor nunmehr vierzig Jahren in die Welt gesetzt hat, dennoch sind es vor allem die [http://www.ni.com/white-paper/3509/en/#vergleichsweise geringen Übertragungslatenzen], welche die GPIB-Schnittstelle auch weiterhin für zeitkritische Aufgaben prädestinieren.&lt;br /&gt;
Mittlerweile wurde die GPIB-Schnittstelle vielfach genormt - unter anderem unter der Bezeichnung IEEE488 und IEC-625, daher auch die gängige Bezeichnung als &#039;&#039;IEC-BUS&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Der Bus ist acht Bit breit und beinhaltet neben einer Reihe von Steuerleitungen ein Drei-Leitungs-Handshake. Dieses ist in Wired-And-Methodik ausgeführt, d.h. der Bus wird terminiert und mit Pull-up versehen, welchen die Busteilnehmer dann aktiv nach Masse ziehen können. Das Handshake gewährleistet, dass der Bus nur so schnell betrieben wird, wie das langsamste Gerät am Bus Daten aufnehmen kann. Der genaue Ablauf des Bustransfers ist in [http://www.interfacebus.com/Design_Connector_GPIB.html#d dieser Grafik] recht anschaulich beschrieben.&lt;br /&gt;
&lt;br /&gt;
Funktionen:&lt;br /&gt;
* GPIB-Controller, also SH, AH, C,&lt;br /&gt;
* HP Universal Language Interface auf der seriellen,&lt;br /&gt;
* Zustandsanzeige über Blinkmuster...,&lt;br /&gt;
* Vernünftige Pegelwandler und keine Spannungsteiler,&lt;br /&gt;
* umfangreiche End-of-string-Behandlung.&lt;br /&gt;
&lt;br /&gt;
== Terminologie ==&lt;br /&gt;
Sämtliche Signale auf dem Bus sind Low-aktiv.&lt;br /&gt;
&lt;br /&gt;
Der Bus besteht aus den acht Datenleitungen des &#039;&#039;Datenbus&#039;&#039;, die das Datenbyte aufnehmen (invertiert, da Low-aktiv). Ein Byte kann &#039;&#039;auf den Bus gelegt&#039;&#039; werden, indem die Treiber eingeschaltet werden und die Datenleitungen entsprechend gesetzt werden. Um das Byte wieder &#039;&#039;vom Bus zu &#039;&#039;&#039;nehmen&#039;&#039;&#039;&#039;&#039;, werden die Treiber wieder abgeschaltet. Das ist etwas anderes, als ein Byte &#039;&#039;vom Bus zu &#039;&#039;&#039;lesen&#039;&#039;&#039;&#039;&#039;!&lt;br /&gt;
&lt;br /&gt;
Dazu kommt der &#039;&#039;Übergabebus&#039;&#039; mit den drei Handshakeleitungen DAV (data available), NDAC (no data accepted) und NRFD (not ready for data). Schließlich bilden ein paar Steuerleitungen den &#039;&#039;Steuerbus&#039;&#039;; die wichtigsten wären&lt;br /&gt;
* ATN (attention),&lt;br /&gt;
* REN (remote enable) und&lt;br /&gt;
* EOI (end or identify).&lt;br /&gt;
&lt;br /&gt;
Man spricht beim GPIB eigentlich immer von irgendwelchen &#039;&#039;Botschaften&#039;&#039;, die abgesetzt oder zurückgezogen werden. Es kann sich dabei um Bytes handeln, die über den Bus gehen, oder auch schlicht um eine der Steuer- oder Handshakeleitungen, die einen bestimmten Pegel annimmt. Da der Bus Low-aktiv arbeitet, sind insbesondere die Steuerleitungen &#039;&#039;aktiv&#039;&#039;, wenn sie einen niedrigen Spannungspegel annehmen. Die entsprechende Botschaft ist dann &#039;&#039;gesendet&#039;&#039; (oder &#039;&#039;abgesetzt&#039;&#039;). Wegen Wired-and können auch mehrere Busteilnehmer eine Botschaft zugleich absetzen. Sie bleibt dann solange abgesetzt, bis sämtliche Teilnehmer sie wieder &#039;&#039;zurückgezogen&#039;&#039; haben.&lt;br /&gt;
&lt;br /&gt;
Mit der DAV-Botschaft (data valid) wird signalisiert, dass der Datenbus gültige Daten enthält, die nun gelesen werden können. Wird die EOI-Botschaft (end or identify) zusammen mit einem Byte übertragen, so handelt es sich um das letzte Byte einer längeren Nachricht. Die ATN-Botschaft (attention) fordert alle Busteilnehmer auf, sämtliche Bustätigkeit zu unterbrechen und den Datenbus freizugeben (etwaige Talker nehmen ihr Byte vom Bus).&lt;br /&gt;
&lt;br /&gt;
== Hardware ==&lt;br /&gt;
Die Schnittstelle wurde vollständig in bedrahteter Technologie auf einer einseitigen Platine aufgebaut. Für die serielle Schnittstelle kommt der MAX232 zum Einsatz, die Busankopplung nehmen die klassichen SN75160 (Daten) und SN75162 (Steuerleitungen). Zusammengehalten wird beides von einem ATmega16 oder pinkompatiblen. Die Bustreiber sind eigentlich typisch; den -160 bekommt man bei Reichelt. Den zweiten gibt es dort noch als -161; dem fehlen allerdings zwei wichtige Signale, es muss also der -162 sein.&lt;br /&gt;
&lt;br /&gt;
Notfalls lassen sich die Treiber auch aus alten GPIB-Karten ausschlachten...&lt;br /&gt;
&lt;br /&gt;
Zuletzt habe ich noch ein geregeltes Netzteil (7805) spendiert, um die Karte über Hohlstecker zu versorgen. Man halte sich dabei die vergleichsweise große Verlustleistung der Bustreiber vor Augen, wenn man mit dem Gedanken spielt, die Karte über USB zu versorgen: Im Leerlauf insgesamt etwa 150mA.&lt;br /&gt;
&lt;br /&gt;
Zum Bus hin habe ich den typischen Centronics-Stecker (&#039;&#039;micro ribbon connector&#039;&#039;) verbaut. Da ist etwas Vorsicht geboten, denn die gibt es auch in gespiegelter Bauform. Der Stecker ist trapezförmig; die normale Bauform hat das schmale Ende unten (Richtung Platine), die gespiegelte Version nach oben. Ich habe die normale Version gewählt.&lt;br /&gt;
&lt;br /&gt;
Es gibt auf der Platine keine diskrete Logik für die ATN-Leitung. Das mag mancheinem vielleicht schon aufgefallen sein, der alte GPIB-PCI-Steckkarten gesehen hat -- die glichen anfangs einem TTL-Grab. Hintergrund ist, dass in der Spezifikation ein recht zeitkritisches Verhalten als Antwort auf die ATN-Botschaft vereinbart ist. Nämlich haben alle Busteilnehmer bei Empfang der ATN-Botschaft ihren Busbetrieb binnen 200ns einzustellen und die Treiber zu deaktivieren.&lt;br /&gt;
&lt;br /&gt;
Das Zeitfenster von 200ns ist recht sportlich, um es mit einem Interrupt aufzufangen, gerade bei den alten Mikroprozessors, die auf den Steckkarten verbaut wurden, und auch für den AVR. Daher hat man diese Spezifikation (und noch ein paar weitere) mit diskreter Logik erschlagen. Diese hat sich dann schnell um die Bustreiber gekümmert und einfach ein Flipflop gesetzt. Dieses hat der Mikroprozessor dann bei nächster Gelegenheit abgeholt und hatte damit wieder genug Zeit, zu reagieren.&lt;br /&gt;
&lt;br /&gt;
== Software ==&lt;br /&gt;
Die Software ist in C für avr-gcc geschrieben.&lt;br /&gt;
&lt;br /&gt;
=== Controller-Betrieb ===&lt;br /&gt;
Die fehlende diskrete Logik hat zur Konsequenz, dass die Schnittstelle eigentlich nur als Controller standardkonform funktioniert. Denn nur dann kümmert sie sich selbst um die ATN-Botschaft und muss demnach nicht auf fremde ATN-Botschaften reagieren, was sie ja aus Zeitgründen nicht innerhalb des spezifizierten Zeitfensters kann. Würde man die Schnittstelle &#039;&#039;nur&#039;&#039; als &#039;&#039;Sprecher&#039;&#039; (Talker) betreiben, könnte der momentane Controller die ATN-Botschaft versenden und gleich darauf ein paar Daten auf den Bus legen. Tut er das so schnell wie möglich, also nach 200ns, hätte die Schnittstelle keine Chance, etwaige Daten vom Bus zu nehmen, denn mit zwei Prozessorzyklen des AVR (bei 8MHz) wären die 200ns schon beim Sprung in den Interrupt verstrichen (rjmp mit zwei Zyklen = 250ns). Und da sind noch nicht die vier Takte drin, die bis zum Interruptvektor vergehen, denn es muss ja noch der Programmzähler auf den Stack gelegt werden.&lt;br /&gt;
&lt;br /&gt;
Praktisch ist der Bus in Wired-and ausgeführt, d.h. es entstehen zumindest keine Kurzschlüsse, wenn zwei gleichzeitig reden, weil die Treiber nicht schnell genug abgeschaltet werden. Es können aber Daten kaputt gehen, wenn andere Teilnehmer die Daten früher vom Bus lesen, als jemand anderes seine Treiber abschaltet. Und zwar nach folgendem Szenario:&lt;br /&gt;
* Wir legen ein Byte auf den Bus und&lt;br /&gt;
* signalisieren das mit der DAV-Botschaft.&lt;br /&gt;
* Ein paar Hörer lesen das Byte vom Bus.&lt;br /&gt;
* Der Controller setzt die ATN-Botschaft ab,&lt;br /&gt;
* er wartet die 200ns und&lt;br /&gt;
* legt seinerseits ein Byte auf den Bus (dieses kollidiert mit unserem) und&lt;br /&gt;
* signalisiert das mit der DAV-Botschaft. Die DAV-Botschaft bleibt also bestehen (Wired-and).&lt;br /&gt;
* Ein paar andere Hörer lesen das (&#039;&#039;&#039;kaputte&#039;&#039;&#039;) Byte vom Bus.&lt;br /&gt;
* Wir bemerken die ATN-Botschaft und ziehen Byte und ATN-Botschaft zurück.&lt;br /&gt;
* Wegen Wired-and ist die DAV-Botschaft noch immer aktiv.&lt;br /&gt;
* ...&lt;br /&gt;
&lt;br /&gt;
Der Betrieb als Hörer leidet am gleichen Problem, hier ist allerdings das Lesen vom Bus kritisch. Ein Sprecher könnte ein Datenbyte auf den Bus legen und dies mit der DAV-Botschaft signalisieren. Das bemerken wir und beginnen mit dem Lesevorgang (Interrupt betreten und so weiter). Indes unterbricht ein Controller die Übertragung mit der ATN-Botschaft der Bus enthält dann ungültige Daten. Und wir fahren munter mit dem begonnenen Lesevorgang fort...&lt;br /&gt;
&lt;br /&gt;
Unterm Strich: Meistens funktioniert es.&lt;br /&gt;
&lt;br /&gt;
=== Protokoll ===&lt;br /&gt;
Für das Protokoll über die serielle Schnittstelle habe ich mich vom &#039;&#039;Universal Language Interface&#039;&#039; (ULI) von Hewlett-Packard inspirieren lassen. Das Heftchen von 1993 fiel mir zufällig in die Hände und ich fand das ganz passend.&lt;br /&gt;
&lt;br /&gt;
Das Prinzip dahinter ist recht einfach. Früher hat man eine GPIB-Karte in den Computer gesteckt und bekam einen Treiber für ein recht bekanntes Betriebssystem seiner Zeit. Dazu kamen ein paar Bibliotheken für BASIC, C, Pascal und so weiter, die entsprechende Funktionen boten. Dazu gehörten Lese- und Schreibbefehle &#039;&#039;ibrd()&#039;&#039; und &#039;&#039;ibwr()&#039;&#039;, Funktionen zur Adressiereung und allerlei Zubehör. Je nach Hersteller waren diese Funktionen dann mehr oder weniger ähnlich und/oder inkompatibel.&lt;br /&gt;
&lt;br /&gt;
Beim ULI dagegen erzeugte der Treiber quasi eine Gerätedatei, die man in der jeweiligen Programmiersprache dann mit Standard-E/A öffnen konnte. Das entspricht in etwa dem, was sich unter *nix schon länger bewährt hat. Eine Bibliothek gibt es nicht mehr, stattdessen werden Befehle zeilenweise in dieses Gerät geschrieben und Antworten kommen zeilenweise wieder heraus. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Zeilenweise&#039;&#039; ist in diesem Zusammenhang schwierig. Einerseits könnten Zeilenendzeichen (Wagenrücklauf CR, Zeilenvorschub LF) auch im Nutzdatenstrom vorkommen, andererseits konstruierte sich anfangs jeder Hersteller von GPIB-Messgeräten ein eigenes Bild vom Zeilenende. Manche wollten nur ein CR oder LF, manche CRLF, ein Semikolon oder die EOI-Botschaft (die EOI-Steuerleitung kann zusammen mit dem letzten übertragenen Byte gesetzt werden und signalisiert dann das Zeilenende). Glücklicherweise waren und sind die meisten Geräte recht tolerant und akzeptieren eine Vielzahl dieser Möglichkeiten, wenn man mit ihnen spricht. Tragischerweise antworten sie aber auch mit einer Vielzahl dieser Möglichkeiten, wenn sie umgekehrt mit uns sprechen...&lt;br /&gt;
&lt;br /&gt;
=== Architektur ===&lt;br /&gt;
Die Firmware ist mehrschichtig konstruiert. Ganz unten liegen zwei Ringpuffer, einer für die serielle Schnittstelle und einer für den GPIB. Diese Puffer kümmern sich um die Handshakes (Dreileitung für GPIB und RTS/CTS für die serielle).&lt;br /&gt;
&lt;br /&gt;
Darüber liegt eine Strom-Schicht (Strom von Datenstrom), die aus den eingehenden Datenströmen der Ringpuffer die Zeilenenden herausfischt und die Zeilenenden in den ausgehenden Strömen erzeugt. Von da an sind beide Schnittstellen an die C-Laufzeitbibliothek angeschlossen, sodass die Kommunikation in weiten Teilen wie gewohnt mit puts()/printf()/... abläuft. Die Zeilenenden in den Eingangsströmen werden dabei als End-of-file (EOF) dargestellt. Da man allerdings kein EOF in den Ausgangsströmen erzeugen kann (könnte man schon, mit fclose(); diese Funktion ist aber schon anderweitig vergeben), werden die Zeilenenden mit einem &#039;&#039;flush&#039;&#039; ausgelöst. Blöderweise ist auch fflush() schon vergeben, daher zwei spezifische Routinen.&lt;br /&gt;
&lt;br /&gt;
Obenauf liegt ein Terminal und verbindet die beiden Schnittstellen über das ULI.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Beispiel ===&lt;br /&gt;
Eine Sitzung mit dem Universalzähler &#039;&#039;PM6652&#039;&#039; und dem Generator &#039;&#039;PM5192&#039;&#039; könnte etwa so aussehen:&lt;br /&gt;
&lt;br /&gt;
Die Baudrate wird automatisch am ersten empfangenen Zeilenvorschub ermittelt:&lt;br /&gt;
 $ echo &amp;gt; ttyUSB1&lt;br /&gt;
Schnittstelle einschalten und den Zähler (Adresse 14) parametrisieren:&lt;br /&gt;
 $ echo &amp;quot;ONLINE&amp;quot; &amp;gt; ttyUSB1&lt;br /&gt;
 $ echo &amp;quot;REMOTE 14&amp;quot; &amp;gt; ttyUSB1&lt;br /&gt;
 $ echo &amp;quot;OUTPUT 14;D&amp;quot; &amp;gt; ttyUSB1&lt;br /&gt;
 $ echo &amp;quot;OUTPUT;F1TE1G0SM5&amp;quot; &amp;gt; ttyUSB1&lt;br /&gt;
Zähler auf 1337Hz einstellen:&lt;br /&gt;
 $ echo &amp;quot;REMOTE 15&amp;quot; &amp;gt; ttyUSB1&lt;br /&gt;
 $ echo &amp;quot;OUTPUT 15;OUT 15;WSLA4F1337&amp;quot; &amp;gt; ttyUSB1&lt;br /&gt;
Messung durchführen und Ergebnis abholen:&lt;br /&gt;
 $ echo &amp;quot;TRIGGER 14&amp;quot; &amp;gt; ttyUSB1&lt;br /&gt;
 $ echo &amp;quot;ENTER 14&amp;quot; &amp;gt; ttyUSB1&lt;br /&gt;
 $ line &amp;lt; ttyUSB1&lt;br /&gt;
 FA 001.3370011E+3&lt;br /&gt;
&lt;br /&gt;
Die Anführungszeichen sind nötig, damit die Shell das Semikolon nicht als Befehlsende interpretiert.&lt;br /&gt;
&lt;br /&gt;
== Schaltung ==&lt;br /&gt;
[[Datei:gpib-rs232-sch.png|miniatur|Schaltplan]]&lt;br /&gt;
[[Datei:gpib-rs232-brd.png|miniatur|Board]]&lt;br /&gt;
Die Schaltung ist in EAGLE realisiert; Maßstab des Board ist 1:2, also nicht wundern... Das ganze hat mit drei Drahtbrücken einseitig funktioniert. Die Drahtbrücke oben links verbindet die Schirmung mit Masse.&lt;br /&gt;
&lt;br /&gt;
Schaltplan und Board stelle ich vorerst unter der aktuellen [http://creativecommons.org/licenses/by-nc-sa/3.0/de/ CC-BY-NC-SA] zur Verfügung.&lt;br /&gt;
&lt;br /&gt;
== Downloads ==&lt;br /&gt;
Die jeweils aktuelle Version hängt am jüngsten Beitrag im [http://www.mikrocontroller.net/topic/256475 Thread zum Artikel].&lt;br /&gt;
&lt;br /&gt;
== Siehe auch ==&lt;br /&gt;
* [http://www.mikrocontroller.net/topic/256475 Thread zum Artikel]&lt;br /&gt;
* http://www.interfacebus.com/Design_Connector_GPIB.html GPIB Bus &amp;lt;small&amp;gt;Ja ich weiß, GPIB Bus ist wie LCD-Display, aber die Seite heißt nunmal so...&amp;lt;/small&amp;gt;&lt;br /&gt;
* http://linux-gpib.sourceforge.net/doc_html/index.html Typischer Satz von Bibliotheksfunktionen&lt;br /&gt;
* http://www.ni.com/pdf/manuals/370915a.pdf Universal Language Interface&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:AVR-Projekte]]&lt;br /&gt;
[[Kategorie:UART und RS232]]&lt;/div&gt;</summary>
		<author><name>Promeus</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=Lehrvideos&amp;diff=92385</id>
		<title>Lehrvideos</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=Lehrvideos&amp;diff=92385"/>
		<updated>2016-03-16T12:40:21Z</updated>

		<summary type="html">&lt;p&gt;Promeus: Änderung 92383 von 178.33.188.248 (Diskussion) rückgängig gemacht.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Lehrvideos zu FPGA, VHDL, Verilog und Digital Design=&lt;br /&gt;
Hier ensteht eine Linkliste von Lehrvideos und Demos, die den Einstieg und Meisterschaft(?) im Design von digitalen Systemen erleichtern sollen. Die Videos sollen zeigen, wie man mit den Tools arbeitet. &lt;br /&gt;
&lt;br /&gt;
Eine kurze Durchsicht bei youtube zeigt auf, dass nur ein kleiner Teil der Videos als Lehrvideo taugt, der Großteil sind Promotion-Videos, die hier nicht gelistet werden.&lt;br /&gt;
&lt;br /&gt;
== VHDL and Xilinx Spartan FPGA 1/2 ==&lt;br /&gt;
&lt;br /&gt;
* [http://www.youtube.com/watch?v=Bg_4nqSs2OY| VHDL and Xilinx Spartan FPGA 1/2] (Video privat, nicht einsehbar)&lt;br /&gt;
* [http://www.youtube.com/watch?v=SRsISGjRj-4| VHDL and Xilinx Spartan FPGA 2/2] (Video privat, nicht einsehbar)&lt;br /&gt;
&lt;br /&gt;
Auf englisch kommentierte Demo die zeigt, wie man zu einem zugehörigen Blockbild den VHDL-Code schreibt und diesen synthetisiert. Gezeigt werden die Xilinxtools ISE, RTL-View, Core Generator.&lt;br /&gt;
&lt;br /&gt;
== Einstieg mit Altera DE1 Board ==&lt;br /&gt;
*FPGA Tutorial 1. Blinking LEDs on DE1 Altera Board &lt;br /&gt;
[http://www.youtube.com/watch?v=T9VbBI3foGQ|Youtube-Video &amp;quot;FPGA Tutorial 1. Blinking LEDs on DE1 Altera Board&amp;quot;]&lt;br /&gt;
*FPGA Tutorial 2. Functions and procedures in VHDL on DE1 Altera Board &lt;br /&gt;
[http://www.youtube.com/watch?v=j2lAPIjpF1w|Youtube-Video &amp;quot;FPGA Tutorial 2. Functions and procedures in VHDL on DE1 Altera Board&amp;quot;]&lt;br /&gt;
*FPGA Tutorial 3. UART in VHDL on Altera DE1 Board &lt;br /&gt;
[http://www.youtube.com/watch?v=fMmcSpgOtJ4|Youtube-Video &amp;quot;FPGA Tutorial 3. UART in VHDL on Altera DE1 Board&amp;quot;]&lt;br /&gt;
*FPGA Tutorial 4: VGA interface in VHDL on DE1 Altera Board &lt;br /&gt;
[http://www.youtube.com/watch?v=mS0VZwnZssA|Youtube-Video &amp;quot;FPGA Tutorial 4: VGA interface in VHDL on DE1 Altera Board.&amp;quot;]&lt;br /&gt;
&lt;br /&gt;
== Introductory tutorial on Verilog  ==&lt;br /&gt;
* [http://www.youtube.com/watch?NR=1&amp;amp;v=jkiHUaNIAKg| Introductory tutorial on Verilog] PowerPoint Vorlesung, einschläfernde Stimme, aber im Inhalt solide. &lt;br /&gt;
Erklärt werden die Beschreibungsformen (gatter, Verhalten, Prozeduraler Ansatz) und die Grundelemente register,wire,module.&lt;br /&gt;
&lt;br /&gt;
== How to Setup Simulation in ModelSim ==&lt;br /&gt;
*[http://www.youtube.com/watch?v=VTMelKXXmho| Modelsim]&lt;br /&gt;
Dieser Englischsprachiger Screencast erklärt vornehmlich die GUI-basierte Bedienung des modelsim-Simulators, auf die script-steuerung wird kurz hingewiesen. Erklärt werden compile, compile-Order, Filestruktur, Fenstergruppierung. Leider wird kaum auf die Bedienung des wave-Fensters eingegangen.&lt;br /&gt;
&lt;br /&gt;
==Statische Timing-Analyse==&lt;br /&gt;
*[http://www.youtube.com/watch?v=pEj6LR-C84Y| Lec-33 static timing analysis.wmv]&lt;br /&gt;
*[http://www.youtube.com/watch?v=mrY0MzCBgAo| Lec-34 static timing analysis]&lt;br /&gt;
Über zwei Stunden feinstes Indian English von Hold/Set-time zu clock-constrainst, false pathes und SDF. Hochschulvortrag mit handgezeichnetet Folien.&lt;br /&gt;
&lt;br /&gt;
==Timing constraints - Xilinx==&lt;br /&gt;
*[http://www.youtube.com/watch?v=dRM0HVdqvZo&amp;amp;| Kapitel eins - Definition und Zweck von Timing constraints]&lt;br /&gt;
*[http://www.youtube.com/watch?v=38Px7CmGczo| Kapitel zwei - period, jitter, Offset]&lt;br /&gt;
*[http://www.youtube.com/watch?v=P3rQssXEFm8| Kapitel drei - Optionen, Eingabemöglichkeiten]&lt;br /&gt;
Offizielles Xilinx-Lehrmodul zu timing-constraints als PowerPoint-Vortrag. Das Video folgt der klassichen Lehrmethodik: Präsentation neues Wissens and anschliessende Vertiefung durch Beispiele und Frage/Antwort &lt;br /&gt;
Da die Basics der Timing-Constraints (kritischer Pfad, jitter, ...) für alle FPGA-Familien gleich sind, lohnt sich mindestens das erste Kapitel auch für Nutzer von Altera, Actel und andere.&lt;br /&gt;
&lt;br /&gt;
== Programming/Bitstream download with Xilinx Impact ==&lt;br /&gt;
*[http://www.youtube.com/watch?v=gnSiwBn0djQ| Intro to FPGAs for Software Engineers - Part 5 - Programming, JTAG, PROMs, &amp;amp; iMPACT]&lt;br /&gt;
Dieser Screencast zeigt die Klicks und Eingaben um ein Board (FPGA,PROMS) mit JTAG-Schnittstelle über das Impact-tool der Xilinx-ISE zu programmieren. Perfekt lesbar an einem 1080 Monitor.&lt;br /&gt;
&lt;br /&gt;
== How to use KCPSM3 in VHDL FPGA based project ==&lt;br /&gt;
* [http://www.youtube.com/watch?v=An3x5tKL5Js| How to use KCPSM3 in VHDL FPGA based project ]&lt;br /&gt;
Der KCPSM3 ist der Vorläufer der 8-Bit Soft-CPU Picoblaze von Xilinx. Das unkommentierte, aber mit Musik unterlegte Video zeigt wie im ISE Editor der VHDL-Code (Component-Instanziierung) hierfür erstellt wird. Einzelne Clicks in der Tooliste sind grafisch hervorgehoben. Der Text ist nicht sonderlich gut lesbar.&lt;br /&gt;
&lt;br /&gt;
== Noch ohne abschliessende Bewertung ==&lt;br /&gt;
&lt;br /&gt;
* [http://www.youtube.com/watch?v=Ob7B6x5g6tw FPGA Xilinx VHDL Video Tutorial]: Zeigt das Aufsetzen eines Projektes in der Xilinx-ISE.&lt;br /&gt;
&lt;br /&gt;
* [http://www.youtube.com/watch?v=FxF0M3DA68Y Basic Schematic Input Tutorial] Xilinx-ISE, project from the scratch, fürchterlicher Ton&lt;br /&gt;
&lt;br /&gt;
* [http://www.eejournal.com/design/fpga/on-demand] EEJournal Webcasts und Videos zum Thema FPGA and Programmable Logic Design&lt;br /&gt;
&lt;br /&gt;
=== Vorlesungen  Prof.S.Srinivasan , Madras, Indien ===&lt;br /&gt;
bspw.:&lt;br /&gt;
*[http://www.youtube.com/watch?v=RZQTTfU9TNA| Lecture 30 Encoders and Decoders]&lt;br /&gt;
Vorlesungsvideo, stark akzentgefärbtes Englisch, erklärt werden die Grundlagen des Digitaldesigns, EDA-Tools werden vorgestellt.&lt;br /&gt;
&lt;br /&gt;
==Nicht empfohlen==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:FPGA und Co]]&lt;/div&gt;</summary>
		<author><name>Promeus</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=Nachttischlampe&amp;diff=92337</id>
		<title>Nachttischlampe</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=Nachttischlampe&amp;diff=92337"/>
		<updated>2016-03-13T10:12:04Z</updated>

		<summary type="html">&lt;p&gt;Promeus: Schrott weg...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;von [http://www.mikrocontroller.net/user/show/mclausen Martin Clausen]&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Einleitung ==&lt;br /&gt;
Ausgehend von den von den Unzulänglichkeiten meiner bisherigen Nachttischlampe und der mich nicht überzeugenden Funktion einer Beleuchtung für den Schlafraum eines niederländischen Herstellers, entstand die Idee zu diesem Projekt.&lt;br /&gt;
Im Ergebnis ergeben sich ein angenehmeres Aufstehen, mehr Komfort und die Möglichkeit bei einem von zwei Personen bewohntem Schlafzimmer einander weniger zu stören.&lt;br /&gt;
=== Features für den Nutzer ===&lt;br /&gt;
* Zwei separate Beleuchtungskanäle&lt;br /&gt;
** Hintergrundbeleuchtung&lt;br /&gt;
** Leselicht&lt;br /&gt;
* Intuitive Bedienung über einen Drehencoder mit Tastfunktion&lt;br /&gt;
** Dynamische Schrittweitenanpassung für die schnelle und genaue Einstellung der Helligkeit und anderer Werte&lt;br /&gt;
* Anzeige mit 16x2 hintergrundbeleuchtetem LCD&lt;br /&gt;
* Anpassung der Helligkeitssteuerung an die Empfindlichkeitskurve des menschlichen Auges&lt;br /&gt;
* Anpassung der Helligkeit an das Umgebungslicht&lt;br /&gt;
* Fernbedienbar&lt;br /&gt;
* Vernetzbar innerhalb eines Raumes&lt;br /&gt;
** Synchronlauf der Helligkeiten von Lampen aktivierbar&lt;br /&gt;
** Alarmfunktion kann andere Lampen aktivieren&lt;br /&gt;
* Weck-Funktion&lt;br /&gt;
** Bis zu 7 wochentagsabhängige oder - unabhängige Alarme&lt;br /&gt;
** Alarme überspringbar&lt;br /&gt;
** Alarmsignal durch&lt;br /&gt;
*** separat in Zeit und Helligkeit einstellbares Eindimmen von Hintergrund- und Leselicht&lt;br /&gt;
*** angenehmes akustisches Signal mit einstellbarer Verzögerung zum Alarmstart und ansteigender Lautstärke&lt;br /&gt;
&lt;br /&gt;
=== Technische Eigenschaften ===&lt;br /&gt;
* LEDs&lt;br /&gt;
** Nichia NS6W183 auf Star-Platine&lt;br /&gt;
** 4 Stück warmweis für die Hintergrundbeleuchtung&lt;br /&gt;
** 2 Stück kaltweiss für das Leselicht&lt;br /&gt;
** andere LED Bestückungen bis 5 LED je Strang bei 24V Eingangsspannung möglich&lt;br /&gt;
* LED-Treiber&lt;br /&gt;
** Zwei unabhängige PWM-gesteuerte Kanäle&lt;br /&gt;
** Nachführung der PWM-Frequenz zur Vergrößerung des dynamischen Bereiches der LED-Treiber ohne Flackern der Beleuchtung&lt;br /&gt;
** Zwei verschiedene Treiber möglich:&lt;br /&gt;
*** Diodes ZXLD1362&lt;br /&gt;
*** Diodes ZXLD1374&lt;br /&gt;
** Hysteric Step-Down-LED-Driver&lt;br /&gt;
** maximal 60V, 1A bzw. 1,5A; 24V, 500mA in diesem Projekt&lt;br /&gt;
* Step-Down Regler für Steuer-Modul&lt;br /&gt;
** Zwei verschieden Schaltregler möglich&lt;br /&gt;
*** LM2674 ADJ auf 3,3V eingestellt, maximale Eingangsspannung 40V&lt;br /&gt;
*** LT1676 auf 3,3V eingestellt, maximale Eingangsspannung 60V&lt;br /&gt;
* MCU &lt;br /&gt;
** NXP 89LPC936, 8051 mit 2-Takt Kern&lt;br /&gt;
** 16k Byte Flash (ca. 10k Byte belegt), 768 Byte RAM, 512 Byte EEPROM, ISP&lt;br /&gt;
** 3,3 Volt, niedriger Stromverbrauch&lt;br /&gt;
** 6 MHz Takt mittels Resonator, 18 MHz maximal&lt;br /&gt;
** 8 Bit DAC und ADC&lt;br /&gt;
** 16 Bit CCU mit PLL und 4 Kanälen&lt;br /&gt;
* LCD&lt;br /&gt;
** Electronic Assembly DOGM162W-A mit amber-farbener Hintergrundbeleuchtung&lt;br /&gt;
** Hintergrundbeleuchtung mit PWM-Ansteuerung&lt;br /&gt;
** Anschluss an MCU via SPI&lt;br /&gt;
* RTC RV 3029-C2 mit integriertem Quarz&lt;br /&gt;
* Erzeugung des akustischen Signals&lt;br /&gt;
** DDS zur Erzeugung eines sauberen und angenehmen Sinussignals&lt;br /&gt;
** Alternativ: Hardware vorbereitet für das Abspielen von unkomprimierten Audiodaten aus 4M Byte Flash&lt;br /&gt;
** Ausgabe über DAC im MCU&lt;br /&gt;
** Tiefpassfilter 3. Ordnung, 8,6kHz Frequenz , mit 3/4 MCP6404&lt;br /&gt;
** Einstellung der Lautstärke in 4 Stufen mit CMOS-Schalter 1/2 74HC4052&lt;br /&gt;
** Lautsprecheransteuerung durch Brückenverstärker LM4861&lt;br /&gt;
* Messung der Umgebungshelligkeit&lt;br /&gt;
** Linearer I-U Wandler mit 1/4 MCP6404&lt;br /&gt;
** Widerstand über CMOS-Schalter 1/2 74HC4052 1:1000 umschaltbar in 4 Stufen&lt;br /&gt;
** 8-Bit ADC der MCU&lt;br /&gt;
** Gesamtdynamikbereich von 1:256000&lt;br /&gt;
** Moving-Average-Filter mit 64 Datenpunkten&lt;br /&gt;
* Kommunikation&lt;br /&gt;
** Empfängt und sendet IR-Signale gemäß RC5-Protokoll&lt;br /&gt;
* Stromversorgung&lt;br /&gt;
** Phihong, PSAA 30R-240 (30W, 24V)&lt;br /&gt;
** Niedrige Standby-Leistung von 300mW&lt;br /&gt;
** Ausreichend für zwei Lampen&lt;br /&gt;
** Messung der Leistungsaufnahme von der 24V Versorgung am Prototypen mit LM2674 und 2x ZXLD1362:&lt;br /&gt;
*** Standby: 170mW&lt;br /&gt;
*** Volllast: 11,5W&lt;br /&gt;
** Messung der Leistungsaufnahme von der 230V Versorgung an einem Netzteil mit zwei Prototypen mit LM2674 und 2x ZXLD1362:&lt;br /&gt;
*** Standby: 0,5W&lt;br /&gt;
*** Volllast: 26W&lt;br /&gt;
** Messung der Leistungsaufnahme von der 24V Versorgung am Prototypen mit LT1676 und 2x ZXLD1374:&lt;br /&gt;
*** Standby: 72mW&lt;br /&gt;
&lt;br /&gt;
* Struktur&lt;br /&gt;
** Steuerplatine 36x100mm², doppelseitig&lt;br /&gt;
** Leistungsplatine 80x100mm², einseitig&lt;br /&gt;
** Verbindung über einzelnes 10 pol. Flachbandkabel&lt;br /&gt;
** Stromversorgung über Steckernetzteil&lt;br /&gt;
&lt;br /&gt;
* Mechanik&lt;br /&gt;
** Konstruktion aus eloxierten Aluminium Profilen von Item&lt;br /&gt;
&lt;br /&gt;
* Software&lt;br /&gt;
** Open Source C für SDCC 3.2&lt;br /&gt;
** Verwendet Stromsparmodi der MCU&lt;br /&gt;
** State-Machines für Drehencoder und RC5-Dekodierung&lt;br /&gt;
&lt;br /&gt;
== Bilder ==&lt;br /&gt;
&lt;br /&gt;
=== Design ===&lt;br /&gt;
* Symmetrisches Pärchen, Vorder- und Rückseite&lt;br /&gt;
[[Bild:Symmetrisches Pärchen.jpg|200px]]&lt;br /&gt;
[[Bild:Symmetrisches Pärchen Rückseite.jpg|200px]]&lt;br /&gt;
* Detail Ansteuerung, Vorder- und Rückseite&lt;br /&gt;
[[Bild:Detail Ansteuerung.jpg|200px]]&lt;br /&gt;
[[Bild:Detail Ansteuerung Rückseite.jpg|200px]]&lt;br /&gt;
* Detail Leselicht&lt;br /&gt;
[[Bild:Detail Leselicht.jpg|200px]]&lt;br /&gt;
&lt;br /&gt;
=== Lichtwirkung ===&lt;br /&gt;
* Leselicht allein mit 10% Helligkeit&lt;br /&gt;
[[Bild:Leselicht 10%.jpg|300px]]&lt;br /&gt;
* Leselicht allein mit 100% Helligkeit&lt;br /&gt;
[[Bild:Leselicht 100%.jpg|300px]]&lt;br /&gt;
* Hintergrundlicht allein mit 10% Helligkeit&lt;br /&gt;
[[Bild:Hintergrundlicht 10%.jpg|300px]]&lt;br /&gt;
* Lese- und Hintergrundlicht zusammen mit 100% Helligkeit&lt;br /&gt;
[[Bild:Lese- und Hintergrundlicht 100%.jpg|300px]]&lt;br /&gt;
&lt;br /&gt;
Die Bilder wurden alle bei den gleichen fixen Kamera-Einstellungen aufgenommen. Der effektive dimmbare Bereich liegt zwischen 3 und 100%. Zur PWM-Ansteuerung der LEDs wird der quadrierte Wert verwendet.&lt;br /&gt;
&lt;br /&gt;
== Beschreibung ==&lt;br /&gt;
&lt;br /&gt;
=== Software ===&lt;br /&gt;
&lt;br /&gt;
Die Software besteht aus folgenden Teilen:&lt;br /&gt;
* Hauptschleife&lt;br /&gt;
&lt;br /&gt;
* Interrupt-Routinen&lt;br /&gt;
** RC5 Decoder, ausgelöst durch Timer 0&lt;br /&gt;
** Update der Zeit, jede Minute durch RTC ausgelöst&lt;br /&gt;
** Drehencoder, ausgelöst durch Timer 1 bei 366Hz&lt;br /&gt;
** Update PWM-Werte und einlesen der Tasten, ausgelöst durch Timer aus RTC der MCU bei 25Hz&lt;br /&gt;
&lt;br /&gt;
* Ansteuerung des Display via SPI&lt;br /&gt;
&lt;br /&gt;
* Initialisierung der MCU&lt;br /&gt;
** Core Funktionen, hauptsächliche Stromsparfunktionen&lt;br /&gt;
** I/O Pins&lt;br /&gt;
** SPI auf Master mit 1,5MHz Takt, MSB first&lt;br /&gt;
** I2C auf 375kHz&lt;br /&gt;
** ADC fixed channel, single conversion mode für ADC0 bei 3MHz&lt;br /&gt;
** DAC&lt;br /&gt;
** Interne RTC als 25Hz Taktgeber: 6*10^6/128/25=1875 reload&lt;br /&gt;
** Watchdog wird abgeschaltet&lt;br /&gt;
** CCU output compare: non-inverted PWM, PLL: auf Lock-in abwarten&lt;br /&gt;
** Interrupts freischalten&lt;br /&gt;
&lt;br /&gt;
* Auswertung Drehencoder&lt;br /&gt;
&lt;br /&gt;
* Helligkeitsmessung&lt;br /&gt;
&lt;br /&gt;
* I2C und RTC&lt;br /&gt;
Die Funktionen stellen einerseits die Kommunikation via I2C sicher und sind anderseits in der Lage, die RTC nach einem Batteriewechsel automatisch zu konfigurieren, die Zeit zu lesen und zu schreiben.&lt;br /&gt;
Die Kommunikation via I2C nutzt bisher nicht den zugehörigen Interrupt und ist nicht fehlertolerant.&lt;br /&gt;
&lt;br /&gt;
* RC5 Decoder und Sender&lt;br /&gt;
Der RC5 Decoder beruht auf einer State-Machine, die schrittweise die einzelnen Bits erkennt und dann in Adresse und Daten zerlegt. Nach der Erkennung eines kompletten Komandos wird steht rCounter auf dem Wert 12 und das Hauptprogramm beginnt mit der Decodierung (Aufruf &amp;quot;DecodeRemote()&amp;quot;).&lt;br /&gt;
Der Sender ist mittels Bit-Banging realisiert. Aufgrund des strikten Timings werden alle Interrupts abgeschaltet. Die Adresse für die Fernbedienung kann vom Benutzer eingestellt werden oder angelernt werden. Die Adressen für die Kommunikation der Lampen untereinander lauten 27, 28, 29.&lt;br /&gt;
&lt;br /&gt;
* Optionsmenü&lt;br /&gt;
&lt;br /&gt;
* Setzen der Helligkeit&lt;br /&gt;
&lt;br /&gt;
* Auswertung Tasten&lt;br /&gt;
Es werden die Tasten entprellt und die Dauer des Tastendrucks wird festgestellt.&lt;br /&gt;
&lt;br /&gt;
* Erzeugung des akustischen Signals in &amp;quot;AcusticDDSAlarm()&amp;quot;&lt;br /&gt;
Das Sinussignal wird mittels direkter digitaler Signalsynthese erzeugt. Dazu erzeugt ein in einer Schleife laufender Akkumulator mit Hilfe einer Tabelle von Sinuswerten einen Datenstrom der dem DAC zugeführt wird. Frequenz und Dauer der einzelnen Töne wird in einem zweidimensionalen Array in Code abgelegt.&lt;br /&gt;
Aufgrund des strikten Timings werden alle Interrupts abgeschaltet. Die Helligkeitsmessung wird auch unterbrochen, da die gleichen Pins die Lautstärke steuern.&lt;br /&gt;
Parallel werden nur die Tasten überwacht.&lt;br /&gt;
&lt;br /&gt;
[[Bild:Menüstruktur V2.svg|400px]]&lt;br /&gt;
&lt;br /&gt;
=== Elektronik ===&lt;br /&gt;
Die Elektronik gliedert sich in zwei Teile:&lt;br /&gt;
* Leistungsteil&lt;br /&gt;
* Steuerung&lt;br /&gt;
&lt;br /&gt;
Der Leistungsteil entspricht im wesentlichen den Applikationsvorschlägen der Hersteller. Um Wechselwirkungen zwischen den Schaltreglern zu reduzieren wurden in den Stromzuführungen PI-Filter mit Feriten und Keramikkondensatoren eingesetzt und die gemeinsame Versorgung über einen größeren schaltfesten Elko abgeblockt.&lt;br /&gt;
Zur Erhöhung der Betriebssicherheit sind ferner eine Suppressor-Diode und ein Verpolschutz vorgesehen.&lt;br /&gt;
&lt;br /&gt;
Variante für ZXLD1362&lt;br /&gt;
Die einseitige Leiterplatte kann weitestgehend in SMD aufgebaut werden. Wo möglich wurde die Bauform 1206 verwendet, damit auch selbst gefertigte Platinen verwendbar sind. Große Masseflächen dienen auch zur Verteilung der Wärme. Die Anschlussklemmen und der Elko sind so platziert, dass sie im Inneren des Aluminium-Profils Platz finden.&lt;br /&gt;
&lt;br /&gt;
Variante für ZXLD1374&lt;br /&gt;
Gegenüber dem Entwurf mit ZXLD1362 wurde ein sparsamer Schaltregler (LT1676) für die Versorgung der Steuerung verwendet. Mit diesem Chip erhöht sich, wenn Kondensatoren und Suppressordiode angepasst werden auch die maximale zulässige Eingangsspannung.&lt;br /&gt;
Der LED-Treiber lässt sich deutlich besser kühlen und bietet eine bessere Dynamik in der PWM-Ansteuerung bei gleichzeitig höherer Wiederhohlrate. Letzteres reduziert den Stroboskop-Effekt beim Dimmen. Das Gehäuse erfordert jedoch eine doppelseitige Platine mit Durchkontaktierung.&lt;br /&gt;
&lt;br /&gt;
Die Steuerung gruppiert sich um eine MCU von NXP der 8051 Serie. Praktisch ist die 4-kanalige 16-bit CCU mit PLL, die sowohl die beiden LED-Stränge als auch die Hintergrundbeleuchtung des LCD steuern. Das kärgliche On-Chip der klassischen 8051 hat NXP um 512 Byte aufgebessert, was die Programmierung mit dem SDCC erleichtert. Die Einstellungen vom Benutzers werden im internen EEPROM abgelegt. Ein Resonator sorgt für einen genaueren Takt als der interne RC-Oszilator und eine &amp;quot;bequeme, glatte&amp;quot; Frequenz von 6MHz.&lt;br /&gt;
Als RTC kommt ein externer Baustein mit integriertem Quarz, Temperaturkompensation und Batterieumschaltung zum Einsatz. Damit lässt sich eine sehr gute Frequenzkonstanz erreichen. Die Lithiumbatterie sollte eine Zeit von 220mAh/1µA = 220kh = 25a erreichen. Die Stützbatterie wird durch einen Reihenwiderstand vor Defekten in der Schaltung die zu einem Stromfluss in die Batterie führen könnten geschützt. Der Anschluss der RTC zum Datenaustausch erfolgt über die I2C-Hardware des MCU. Die interne RTC des MCU wird als Timer verwendet.&lt;br /&gt;
Als Display kommt eine moderne Variante des klassischen 16x2 Zeichen LCD zum Einsatz. Die Modernisierungen betreffen die digitale Kontrast-Einstellung, 3,3V-Betrieb und das SPI mit passend zur MCU geringer Pin-Anzahl.&lt;br /&gt;
Die Kommunikation per IR erfordert nur das entsprechende Empfangsmodul und einen kleinen MOSFET zur Ansteuerung der Sendediode. Es sind zwei positionen auf der Platine vorgesehen, damit die Richtung der Abstrahlung gewählt werden kann. Falls beide Sendedioden bestückt werden, sollten die Vorwiderstände auf je 10 Ohm verdoppelt werden. Um das den 3,3V Schaltregler und den MOSFET nicht zu überfordern wird die Sendediode nur mit 300mA bei 25% Duty-Cycle betrieben. Ferner sind großzügige keramische Stützkondensatoren vorgesehen. Die Empfänger können parallel betrieben werden, um der Schaltung eine Rund-um-Sicht zu ermöglichen.&lt;br /&gt;
Recht aufwändig sind dagegen die Messung der Umgebungshelligkeit und die Erzeugung des akustischen Signales geraten. Zu nächst zur Helligkeitsmessung: Für diese Aufgabenstellung gibt es spezialisierte IC, die jedoch schwer erhältlich sind. Deshalb wurde ein Transimpedanzverstärker mit umschaltbarem Rückkoppelwiderstand aufgebaut. Die MCU ist zwar mit einem ADC ausgestattet, jedoch ist deren Dynamikbereich allein nicht ausreichend. Zusammen wird jedoch ein Bereich von 1:255000 entsprechend 108dB abgedeckt. In Software wird das Signal noch gefiltert und die Messwerte, zu die von der Hintergrundbeleuchtung des LCDs oder der IR-Sendediode beeinflusst worden sein könnten, übersprungen.&lt;br /&gt;
Die das akustische Signal sollte einen möglichst angenehmen Klang haben. Daher läuft auf der MCU eine DDS mit ca. 20kHz zur Erzeugung eines Sinussignals, welches über den ADC ausgegeben wird. Dann folgt zu nächst ein Buffer und eine Pegelanpassung, die ein Übersteuern der OPVs im folgenden Tiefpass mit ca. 7kHz verhindern. Über einen CMOS Schalter lässt sich das Signal in drei 10dB Stufen abgeschwächt dem ausgangsseitigen Brückenverstärker zuführen. Dieser wird zur Reduktion des Stromverbrauches von der MCU nur bei Bedarf aktiviert. Er ist auch auf eine Bandbreite von 8kHz begrenzt, um die Oberwellen weiter zu reduzieren.&lt;br /&gt;
Die beiden letztgenannten Schaltungsteile profitieren besonders von einem PI-Filter mit einer 4,7µH Drossel und größeren keramischen Kondensatoren. So werden Störungen aus Schaltreglern und der PWM-Ansteuerung der Hintergrundbeleuchtung ferngehalten.&lt;br /&gt;
RC-Glieder schützen die MCu vor Störeinstrahlung- und leitung durch die Kabel zu Drehencoder und Leistungsteil.&lt;br /&gt;
Die recht hohe Packungsdichte, der enge Pin-Abstand von MCU, OPV und RTC und die notwendigen Masseflächen erfordern eine professionelle doppelseitige Platine. Die Masseflächen wurden durch eine Vielzahl von vergrößerten und verteilten Vias verbunden. Die Entstörkondensatoren an den Halbleitern sind mit 1µF recht groß gewählt. Ob die Störfestigkeit unter der gegenüber 100nF reduzierten Resonanzfrequenz der Kondensatoren geringer ist, wurde nicht untersucht. (Es funktioniert.) Ein keramischer 1nF Kondensator hält Störungen vom Reset-Pin der MCU fern.&lt;br /&gt;
&lt;br /&gt;
Die Steuerplatine trägt zwei 5*2 polige Pfostenleisten. Die äußere dient primär zur Programmierung der MCU, kann aber auch für Erweiterungen mit I2C-Anschluss verwendet werden. Die innere stellt die Anschlüsse für Drehencoder und Leistungsteil zur Verfügung. Dazu muss somit ein Flachbandkabel mit drei Enden gepresst werden: 5*2 polig (Steuerung), offen (Drehencoder), 3*2 polig (Leistungsteil)&lt;br /&gt;
&lt;br /&gt;
Die MCU wird mit der kostenlosen Software [http://www.flashmagictool.com/ FlashMagic] und einer [http://www.keil.com/mcb900/mcb900-schematics.pdf Schaltung von Keil] über RS232 geflasht. Bei der Inbetriebnahme müssen folgende Punkte beachtet werden:&lt;br /&gt;
* Die Kondensatoren auf der Steuerungsplatine müssen schnell genug entladen werden können, damit die MCU beim Start in den Programmiermodus gebracht werden kann. Eine zusätzliche Last von z.B. 100 Ohm über die Betriebsspannung hilft.&lt;br /&gt;
* Es muss keine &amp;quot;echte&amp;quot; RS232 Schnittstelle sein. Ein USB-RS232 Adapter mit FTDI-Chip funktioniert bei mir auch.&lt;br /&gt;
* Einstellungen Flash Magic:&lt;br /&gt;
** Select: 89LPC936&lt;br /&gt;
** Baud Rate: 7200&lt;br /&gt;
** Interface: None (ISP)&lt;br /&gt;
** Oscillator (MHz): 7,373&lt;br /&gt;
** Erase block used by Hex File&lt;br /&gt;
* Unter ISP, Device Configuration wird die MCU konfiguriert:&lt;br /&gt;
** Statt des internen Oszillators muss ein externer High-Speed Oszillator gewählt werden. Die in FlashMagic einzustellende Frequenz ändert sich dann von 7.373 MHz auf 6 MHz&lt;br /&gt;
** Der Reset-Pin muss ausgeschaltet werden.&lt;br /&gt;
&lt;br /&gt;
Das Netzteil ist so ausgelegt, dass zwei Lampen mittels eines Y-Kabels versorgt werden können. Dadurch entfallen die Leerlaufverluste, Kosten und Platzbedarf des zweiten Netzteils.&lt;br /&gt;
&lt;br /&gt;
Kosten der Steuerplatine (Teile: Reichelt, MCU: Ebay, 5 Platinen von PCB-Pool): ca. 56€ je Stück&lt;br /&gt;
&lt;br /&gt;
=== Optoelektronik ===&lt;br /&gt;
&lt;br /&gt;
Die Auswahl der LEDs wird primär von den Wünschen nach der Lichtwirkung bestimmt. Hier ist nur ein Vorschlag angegeben. Daneben gibt es noch die Schnittstellen zur Mechanik und zur Elektronik.&lt;br /&gt;
Die Ansteuerung kann bei Versorgung mit 24V 1 bis 5 LEDs je Strang bedienen. Der Strom ist auf 500mA eingestellt, auch wenn der ZXLD1362 auch größere Ströme verkraften sollte. Beim SOT23-5 Gehäuse hatte ich jedoch dann in einem anderen Projekt insbesondere bei höheren Spannungen Probleme mit der Wärmeabführung. Mittlerweile können auch andere Gehäuseformen mit geringerem Wärmewiderstand bzw. leistungsfähigere Chips wie der ZXLD1374 eingesetzt werden. Der ZXLD1374 kann auch kürzere PWM-Impulse noch sauber in Stromimpulse für die LEDs umsetzen, womit ein größerer dimbarer Bereich erzielt wird. Jedoch muss der PWM-Pin von einem Push-Pull- statt einem Open-Drain-Ausgang angesteuert werden, da der interne Pull-Up des LED-Treibers sehr schwach ist und der Chip dann nur bei relativ langen Pulsen aus dem Standby aufwacht. Zum ZXLD1374 ist ein zusätzlicher Schaltplan mit Layout im Repository abgelegt. Der LM267X musste bei diesem Entwurf einem sparsameren und spannungsfesteren LT1676 weichen.&lt;br /&gt;
Sollen mehr als 5 LEDs je Strang angesteuert werden, muss die Supressor-Diode am Stromversorgungseingang angepasst und der LT1676 zur Versorgung der Steuerplatine verwendet werden. Die ZXLD1362 vertragen bis zu 60V, sollten jedoch mit mindestens 17V versorgt werden, damit der Schalt-MOSFET voll durchschaltet.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ &#039;&#039;&#039;Teile von Leds.de&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
! Anzahl || Artikel-Nr. || Bezeichnung || Kommentar&lt;br /&gt;
|-&lt;br /&gt;
| 4  || 65659 || Nichia NS6L183BT, warmweiß, CRI 80, mit Platine (Star) || bessere Farbwiedergabe bei schlechterer Effizienz: austauschbar gegen NS6L183AT-H3 (CRI 85) oder NS6L183AT-H1 (CRI 90+)&lt;br /&gt;
|-&lt;br /&gt;
| 2  || 65656 || Nichia NS6W183BT, weiß, CRI 80, mit Platine (Star) ||&lt;br /&gt;
|-&lt;br /&gt;
| 2  || 60354 || Carclo Linse für Luxon Rebel, frosted wide || passt auch für Nichia NS6_183T&lt;br /&gt;
|-&lt;br /&gt;
| 2  || 60456 || Linsenhalter rund für Luxon Rebel, transparent || muss deutlich mit Säge und Feile angepasst werden&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Kosten ca. 27€&lt;br /&gt;
&lt;br /&gt;
=== Mechanik ===&lt;br /&gt;
Bei einer Nachttischlampe ist natürlich auch das Design eine wichtiges Merkmal. Ich bevorzuge ein klares einfaches Design und Materialien wie Glas und eloxiertes Aluminium. Die verwendeten Profile (Item, Profil X 8, leicht) ermöglichen es die Kabel und die Leistungselektronik im Inneren zu verstecken.&lt;br /&gt;
Es haben aber auch einige Kunststoffteile Verwendung gefunden, da sie mir den Verschluss der Aluminiumprofile ohne sichtbare Schrauben ermöglichen.&lt;br /&gt;
&lt;br /&gt;
Der sichere Stand wird durch die Füllung des Profil X 8 80x80 mit kleinen Kieseln für Aquarien gewährleistet. Die Oberen 1 bis 2cm bleiben frei und dienen dem Lautsprecher als Resonanzraum.&lt;br /&gt;
&lt;br /&gt;
Die Frontplatte wird laut Zeichnung von der Schaeffer AG (Datei bei Downloads) gefertigt. Sie &amp;quot;schwebt&amp;quot; auf vier Distanzhülsen über der Steuerungselektronik. Dadurch bleibt umlaufend ein Spalt von 12mm Höhe, durch den die Steuerung per RC5 kommuniziert, die Umgebungshelligkeit gemessen wird und der Schall vom Lautsprecher abgestrahlt wird.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ &#039;&#039;&#039;Teile von Item&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
! Anzahl || Länge || Art.-Nr. || Bezeichnung&lt;br /&gt;
|-&lt;br /&gt;
| 1 || 160mm || 0.0.493.04 || Profil X 8 80x80 8N leicht&lt;br /&gt;
|-&lt;br /&gt;
| 1 || 160mm || 0.0.492.88 || Profil X 8 40x40 4N leicht&lt;br /&gt;
|-&lt;br /&gt;
| 1 || 480mm || 0.0.492.88 || Profil X 8 40x40 4N leicht&lt;br /&gt;
|-&lt;br /&gt;
| 1 || - || 0.0.601.13 || Gelenk X 8 40x40 mit Klemmhebel&lt;br /&gt;
|-&lt;br /&gt;
| 4 || - || 0.0.026.07 || Standard-Verbindungssatz 8&lt;br /&gt;
|-&lt;br /&gt;
| 1 || - || 0.0.489.98 || Abdeckkappe X 8 80x80 grau&lt;br /&gt;
|-&lt;br /&gt;
| 1 || - || 0.0.489.61 || Abdeckkappe X 8 80x40 grau&lt;br /&gt;
|-&lt;br /&gt;
| 1 || - || 0.0.489.60 || Abdeckkappe X 8 40x40 grau&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Kosten: Item ca. 90€, Schaeffer AG ca. 25€&lt;br /&gt;
&lt;br /&gt;
Der Klemmhebel kann bei ästhetischen Bedenken auch gegen eine Schraube getauscht werden. Von zwei Standard-Verbindungssätzen wird nur die Schraube zur Befestigung des Gelenks verwendet.&lt;br /&gt;
&lt;br /&gt;
Die Bohr- und Fräsarbeiten habe ich durch [http://dw-metall.de/ Daniel Wulfänger] durchführen lassen.&lt;br /&gt;
&lt;br /&gt;
Ein 3D-Model für FreeCAD befindet sich im SVN-Repository (s.u.).&lt;br /&gt;
&lt;br /&gt;
2D-Zeichnungen auf Anfrage per PM bei [http://www.mikrocontroller.net/user/show/mclausen Martin Clausen]&lt;br /&gt;
&lt;br /&gt;
== Montage ==&lt;br /&gt;
&lt;br /&gt;
Wenn alle Teile laut Zeichnung bearbeitet worden sind, werden zunächst die Standard-Verbinder für die Verbindung von Arm und Fuß eingeschraubt. Da aus optischen Gründen kein Loch zum Festziehen der Schrauben vorhanden ist, werden die Standardverbinder vorsichtig angezogen, so dass der Arm beim Aufschieben beginnt zu klemmen. Dann wir die Fläche zwischen Arm und Fuß mit Alkohol geschmiert und der Arm mit einigen Hammerschlägen montiert. Dabei sollte eine Unterlage (z.B. ein Stück Holz) verwendet werden.&lt;br /&gt;
&lt;br /&gt;
Nun wird der Drehencoder verdrahtet und in die große Abdeckkappe geschraubt und mit Heißkleber versiegelt.&lt;br /&gt;
&lt;br /&gt;
[[Bild:Drehencoder mit Kabel.jpg|300px]]&lt;br /&gt;
&lt;br /&gt;
Im folgenden wird die Stromversorgungsbuchse in die 80x40 Abdeckkappe geschraubt und diese in den Fuß gepresst.&lt;br /&gt;
&lt;br /&gt;
[[Bild:Durchführung Kabel.jpg|200px]]&lt;br /&gt;
&lt;br /&gt;
Dann werden die LEDs mit etwas Wärmeleitpaste und einer Isolierscheibe unter jeder Schraube montiert. Kabel werden in das Profil gefädelt und an gelötet. Ein fester Draht kann dabei nützlich sein. Dann wird die Leistungselektronik im Fuß platziert. Für die Positionierung sorgen 10 und 12 mm Distanzbuchsen jeweils mit und ohne Außengewinde.&lt;br /&gt;
Jetzt bietet sich ein kurzer Funktionstest an.&lt;br /&gt;
&lt;br /&gt;
[[Bild:Montage LEDs.jpg|300px]]&lt;br /&gt;
&lt;br /&gt;
Für die Front-LEDs werden nun die Halter modifiziert und aufgeklemmt. Dann werden die Linsen eingerastet.&lt;br /&gt;
&lt;br /&gt;
Nun wird grober Aquarien-Kies gewaschen, gründlich getrocknet und in den Fuß gefüllt. Dabei muss ausreichend Raum für die Halter der großen Abdeckkappe gelassen werden. Diese wird nun aufgepresst. Dann wird der Fuß weiter verfüllt.&lt;br /&gt;
&lt;br /&gt;
[[Bild:Verfüllung Fuß.jpg|200px]]&lt;br /&gt;
&lt;br /&gt;
Jetzt werden noch Steuerelektronik mit 5mm Distanzbuchsen und M3x10 Schrauben montiert. Zum Schluss wird die Frontplatte mit M3x20 Edelstahl Senk-Inbusschrauben und 12mm Distanzbuchsen befestigt.&lt;br /&gt;
&lt;br /&gt;
== Downloads ==&lt;br /&gt;
&lt;br /&gt;
* [https://github.com/martinclausen2/Nachttischlampe.git Link zum Repository für Software, Schaltpläne, Platinen und Mechanik]&lt;br /&gt;
* [[Datei:Hex-File Nachttischlampe.zip|Hex-File jeweils für ZXLD1374 ZXLD1362 V5]]&lt;br /&gt;
&lt;br /&gt;
== Siehe auch ==&lt;br /&gt;
&lt;br /&gt;
* [[Wake-Up Light]]&lt;br /&gt;
* [[LED-Pendellampe]]&lt;br /&gt;
* [[LED]]&lt;br /&gt;
* Diskussion zu diesem Projekt: http://www.mikrocontroller.net/topic/297859#3182303&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Projekte]]&lt;br /&gt;
[[Kategorie:8051]]&lt;br /&gt;
[[Kategorie:Timer und Uhren]]&lt;/div&gt;</summary>
		<author><name>Promeus</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=ESP8266&amp;diff=92301</id>
		<title>ESP8266</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=ESP8266&amp;diff=92301"/>
		<updated>2016-03-11T13:58:18Z</updated>

		<summary type="html">&lt;p&gt;Promeus: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Datei:ESP8266.jpg|thumb|300px|ESP8266, Funkmodul]]&lt;br /&gt;
Das [[ESP8266]] von dem Hersteller Espressif ist ein programmierbarer WLAN-SoC mit [[UART]]- und [[SPI]]-Schnittstelle. &#039;&#039;&#039;WLAN&#039;&#039;&#039;-Funkmodule mit ESP8266 sind ab 3€ verfügbar. Die UART-Schnitttstelle ermöglicht eine einfache Integration in Mikrocontrollerprojekte.&lt;br /&gt;
&lt;br /&gt;
== Spezifikation ==&lt;br /&gt;
Laut Hersteller &amp;lt;ref&amp;gt;[http://espressif.com/en/products/esp8266 &#039;&#039;Herstellerseite -  unter Details&#039;&#039;] Abgerufen am 26. August 2014.&amp;lt;/ref&amp;gt;. :&lt;br /&gt;
* 802.11 b/g/n&lt;br /&gt;
* Wi-Fi Direct (P2P), soft-AP&lt;br /&gt;
* Integrated TCP/IP protocol stack&lt;br /&gt;
* Integrated TR switch, balun, LNA, power amplifier and matching network&lt;br /&gt;
* Integrated PLLs, regulators, DCXO and power management units&lt;br /&gt;
* +19.5dBm output power in 802.11b mode&lt;br /&gt;
* Power down leakage current of &amp;lt;10uA&lt;br /&gt;
* Integrated low power 32-bit CPU could be used as application processor&lt;br /&gt;
* SDIO 1.1/2.0, SPI, UART&lt;br /&gt;
* STBC, 1×1 MIMO, 2×1 MIMO&lt;br /&gt;
* A-MPDU &amp;amp; A-MSDU aggregation &amp;amp; 0.4ms guard interval&lt;br /&gt;
* Wake up and transmit packets in &amp;lt; 2ms&lt;br /&gt;
* Standby power consumption of &amp;lt; 1.0mW (DTIM3)&lt;br /&gt;
* VCC: 3,3V (Achtung: Eingänge sind &#039;&#039;&#039;NICHT 5V TOLERANT&#039;&#039;&#039;!)&lt;br /&gt;
Weiterhin:&lt;br /&gt;
* GPIOs, ADC&lt;br /&gt;
&lt;br /&gt;
=== Datendurchsatz/Performanz ===&lt;br /&gt;
[https://www.mikrocontroller.net/topic/342240?page=single#3857630 Beitrag im Forum mit Tests: TCP: bis zu 7 MBit/s]&amp;lt;br/&amp;gt;&lt;br /&gt;
[http://bbs.espressif.com/viewtopic.php?f=7&amp;amp;t=24 Beitrag Espressif-Form: UART loopback: 4.5 Mbps]&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
Bei den chinesischen Modulen mit Firmware 0.9.1 werden Ping Befehle unabhängig von der Paketgröße typischerweise in 30-150ms beantwortet. Datenpakete, die man vom PC aus an das Modul sendet werden unabhängig von der Paketgröße typischerweise nach 100-200ms quittiert.&lt;br /&gt;
&lt;br /&gt;
=== Power-/Sleep-Modes ===&lt;br /&gt;
Der Stromverbrauch des ESP8266 ist abhängig von vielen Faktoren, er läßt sich aber durch geschickte Programmierung durchaus deutlich senken.&amp;lt;br/&amp;gt;&lt;br /&gt;
So ist es nicht notwendig, dass das WIFI-Modem oder der Mikrocontroller ständig läuft um z.B. eine WLAN-Türklingel zu realisieren. Im &amp;quot;Deep-Sleep&amp;quot; würde der ESP8266 dann nur 10uA verbrauchen, bis er über einen GPI-Interrupt geweckt wird und die Meldung absetzt.&amp;lt;br/&amp;gt;&lt;br /&gt;
Zu beachten ist, dass in diesem Moment die WLAN und Netzwerkanmeldung neu startet und hierfür eine gewisse Zeit benötigt wird.&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[http://bbs.espressif.com/viewtopic.php?f=6&amp;amp;t=133 detailierte Übersicht der verschieden Modi und deren Stromverbrauch von Espressif]&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== WLAN-Module mit ESP8266 ==&lt;br /&gt;
Es existieren ca. 11 Varianten von chinesischen Herstellern. Beispielsweise mit PCB- oder Keramik-Antenne oder mit u.fl.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Die Firmware 0.9.1 unterstützt bis zu vier gleichzeitige TCP oder UDP Verbindungen. Sie kann sich in vorhandene WLAN Netze einbuchen, aber auch selbst Access-Point mit DHCP Server sein. Der Access-Point ist zu Android kompatibel (mit 4.1.2 getestet).&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
Die Firmware enthält jedoch keinen Router. Mehrere Computer, die mit dem Modul als Access-Point verbunden sind, können keine Verbindung zueinander aufbauen.&lt;br /&gt;
Das Feature nennt sich AP Isolation.&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
#Produktbeschreibung: [[http://playground.boxtec.ch/doku.php/wireless/esp8266]]&lt;br /&gt;
&lt;br /&gt;
=== Pinbelegung einiger ESP8266-Module ===&lt;br /&gt;
====ESP8266-01====&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
Datei:ESP8266-PinBelegung1.jpg|Pinbelegung - Groß mit PCB-Antenne&lt;br /&gt;
Datei:ESP8266-PinBelegung2.jpg|Pinbelegung - Klein mit Keramik-Antenne&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
Quelle &amp;lt;ref&amp;gt;[http://pan.baidu.com/share/link?shareid=727869034&amp;amp;uk=1900861665 &#039;&#039;Seller Information&#039;&#039;] Abgerufen am 26. August 2014.&amp;lt;/ref&amp;gt;.&lt;br /&gt;
====ESP8266-07====&lt;br /&gt;
Achtung, beim ESP8266-07 Modul sind einige mit vertauschten Beschriftungen von GPIO4 und GPIO5 unterwegs!!.&lt;br /&gt;
&lt;br /&gt;
== Möglichkeiten der Nutzung und Programmierung ==&lt;br /&gt;
===== Benutzung einer Firmware =====&lt;br /&gt;
Verschiedene Projekte betreiben die Entwicklung einer Firmware. Man kann die Firmware &amp;quot;einfach nur&amp;quot; flashen und benutzen oder sich auch aktiv an der Entwicklung beteiligen. Es gibt unter anderem folgende Projekte:&lt;br /&gt;
* AT-Befehle: Firmware, mit welcher das Modul über UART angesprochen wird.&lt;br /&gt;
* Micropython: Firmware, die das Ablaufen von Python Scripts ermöglicht&lt;br /&gt;
* NodeMCU: Firmware, die das Ablaufen von Lua-Scripts ermöglicht ([https://github.com/nodemcu/nodemcu-firmware Github])&lt;br /&gt;
* smartJS: Firmware, die das Ausführen von JavaScript erlaubt ([https://github.com/cesanta/smart.js Github])&lt;br /&gt;
* Arduino core for ESP8266 WiFi chip: Programmierumgebung &amp;amp; Firmware, die das Ausführen von C Programmen ermöglicht, im Stil der bekannten Arduino Plattform. [https://github.com/esp8266/Arduino Github - ink. Anleitung]&lt;br /&gt;
* ESP8266 Basic: Firmware, die das Ausführen von Basic Programmen und das Editieren über WLAN erlaubt [http://www.esp8266basic.com/]&lt;br /&gt;
&lt;br /&gt;
===== Erstellen (Kompilieren) einer Firmware =====&lt;br /&gt;
Für die Erstellung einer individuellen Firmware gibt es zwei Möglichkeiten:&lt;br /&gt;
* Software Development Kit (SDK): Erstellen einer Firmware mit einer GCC-Toolchain&lt;br /&gt;
* Arduino IDE: Erstellen einer Firmware mit einer Arduino IDE&lt;br /&gt;
Projekte, die eine Firmware für das ESP8266 entwickeln (siehe vorheriger Abschnitt), benutzen eine dieser beiden Möglichkeiten.&lt;br /&gt;
&lt;br /&gt;
=== Firmware flashen/updaten ===&lt;br /&gt;
Typischerweise wird eine kompilierte Firmware per UART-Bootloader des ESP8266-SoC auf einen Flash-Chip eines ESP8266-Moduls geladen. Von dort startet der ESP8266-SoC anschließend die Firmware.&lt;br /&gt;
&lt;br /&gt;
[http://bbs.espressif.com/viewtopic.php?f=5&amp;amp;t=433 Flash Download Tool vom Hersteller] &amp;lt;br&amp;gt;&lt;br /&gt;
[http://github.com/themadinventor/esptool Python Tool zum Flashen (von Fredrik Ahlberg)] &amp;lt;br&amp;gt;&lt;br /&gt;
[http://github.com/3s1d/esp_prog Extension zum Tool von Fredrik Ahlberg] &amp;lt;br&amp;gt;&lt;br /&gt;
[http://www.mikrocontroller.net/topic/342240?page=2#3857075 Tool zum Flashen (von Christian Klippel)] &amp;lt;br&amp;gt;&lt;br /&gt;
[http://defcon-cc.dyndns.org/wiki/ESP8266#Update Anleitung, extern] &amp;lt;br&amp;gt;&lt;br /&gt;
[http://www.mikrocontroller.net/topic/342240?page=3#3810559 Anleitung, Forum]&lt;br /&gt;
&lt;br /&gt;
Der Hersteller veröffentlich regelmässig [http://bbs.espressif.com/viewforum.php?f=5 Firmwareupdates] als Bestandteil des esp_iot_sdk. Die Firmware-Dateien befinden sich im Verzeichnis bin. Das Update wird beispielweise für Firmware 0.9.5 folgendermaßen durchgeführt: &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
python esptool.py --baud 9600 --port com6 write_flash 0x00000 boot_v1.2.bin 0x01000 at/user1.512.new.bin 0x3e000 blank.bin 0x7e000 blank.bin&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Abhängig von der Flashgröße muß man die Firmware ab Version 1.0.1 selbst compilieren. Siehe Diskussion [http://www.esp8266.com/viewtopic.php?p=16515 hier] und [http://bbs.espressif.com/viewtopic.php?f=16&amp;amp;t=400 hier].&lt;br /&gt;
&lt;br /&gt;
== AT-Befehle für eine Firmware auf Basis des SDK-Beispiels &amp;quot;AT&amp;quot;==&lt;br /&gt;
&lt;br /&gt;
Einstellen des Moduls als AP&lt;br /&gt;
&lt;br /&gt;
Da wir nicht wissen, in welchem Modus sich das Modul gerade befindet, fragen wir diesen ab mit dem &lt;br /&gt;
Befehl AT+CWMODE?  Das Modul antwortet mit &lt;br /&gt;
&lt;br /&gt;
    AT+CWMODE?&amp;lt;\r&amp;gt;&amp;lt;\r&amp;gt;&amp;lt;\n&amp;gt;+CWMODE:1&amp;lt;\r&amp;gt;&amp;lt;\n&amp;gt;&lt;br /&gt;
    &amp;lt;\r&amp;gt;&amp;lt;\n&amp;gt;&lt;br /&gt;
    OK&amp;lt;\r&amp;gt;&amp;lt;\n&amp;gt;&lt;br /&gt;
In diesem Fall ist das Modul aktuell im Modus 1 ( Station) eingestellt. Also ändern wir den Modus auf 2 ( AP)&lt;br /&gt;
mit dem Befehl AT+CWMODE=2. Nach diesem Befehl ist ein Reset des Moduls erforderlich, damit die Änderung &lt;br /&gt;
sichtbar wird. Mit dem Befehl AT+RST führen wir diesen durch. Das Modul startet neu und die Stromaufnahme&lt;br /&gt;
steigt auf ca 80 mA. Das Modul ist jetzt als WLAN AP im Wireless Lan sichtbar. &lt;br /&gt;
&lt;br /&gt;
Jetzt müssen wir noch einstellen, dass wir mehrere Verbindungen gleichzeitig haben wollen und den TCP Server starten und einstellen. Mit dem Befehl AT+CIPMUX=1 sagen wir dem Modul, dass wir mehrere Verbindungen haben wollen. Und mit dem Befehl AT+CIPSERVER=1,2526 starten wir den TCP Server und lassen ihn auf Port 2526 laufen. Sobald sich ein Client verbindet, sendet das Modul &#039;Link&#039; + LF + CR. Beim Trennen einer Verbindung vom Client kommt &#039;Unlink&#039; + LF + CR.&lt;br /&gt;
&lt;br /&gt;
Ab hier können wir uns über einen TCP Socket auf Port 2526 mit dem Modul verbinden und Daten austauschen. Empfangene Daten werden folgendermaßen angezeigt. Gesendet wurde  &amp;quot;Hallo Leute&amp;quot; + LF + CR.&lt;br /&gt;
&lt;br /&gt;
     &amp;lt;\r&amp;gt;&amp;lt;\n&amp;gt;&lt;br /&gt;
     +IPD,0,11:Hallo Leute&amp;lt;\r&amp;gt;&amp;lt;\n&amp;gt;&lt;br /&gt;
     OK&amp;lt;\r&amp;gt;&amp;lt;\n&amp;gt;&lt;br /&gt;
&lt;br /&gt;
+IPD kommt immer, 0 ist die erste Verbindung. Wenn 2 Geräte gleichzeitig eine Verbindung aufgebaut haben, steht dort eine 1. 11 Zeichen wurden empfangen, dann kommen die Daten.&lt;br /&gt;
&lt;br /&gt;
Zum Senden von Daten vom Modul zum Client geht man folgenderweise vor. Erstmal sagen wir dem Modul, wieviele Daten wir an welche Verbindung schicken wollen. Mit dem Befehl AT+CIPSEND=0,5 z. B. sagen wir dem Modul wir möchten 5 Bytes an Verbindung 0 senden. Nach diesem Befehl werden die nächsten 5 Zeichen direkt an die Verbindung weitergereicht.&lt;br /&gt;
Sollte keine aktive Verbindung bestehen, sendet das Modul &lt;br /&gt;
     AT+CIPSEND=0,5&amp;lt;\r&amp;gt;&amp;lt;\r&amp;gt;&amp;lt;\n&amp;gt;link is not&amp;lt;\r&amp;gt;&amp;lt;\n&amp;gt;&lt;br /&gt;
ansonsten kommt &lt;br /&gt;
     &amp;lt;\r&amp;gt;&amp;lt;\n&amp;gt; &amp;gt;&lt;br /&gt;
und man kann Daten senden. Nach dem absenden der Daten &#039;Leute&#039; + LF + CR sendet das Modul &lt;br /&gt;
    Leute&amp;lt;\r&amp;gt;&amp;lt;\r&amp;gt;&amp;lt;\n&amp;gt;busy&amp;lt;\r&amp;gt;&amp;lt;\n&amp;gt;&lt;br /&gt;
    &amp;lt;\r&amp;gt;&amp;lt;\n&amp;gt;&lt;br /&gt;
    busy&amp;lt;\r&amp;gt;&amp;lt;\n&amp;gt;&lt;br /&gt;
    &amp;lt;\r&amp;gt;&amp;lt;\n&amp;gt;&lt;br /&gt;
    SEND OK&amp;lt;\r&amp;gt;&amp;lt;\n&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Einstellen des Moduls als Station&lt;br /&gt;
&lt;br /&gt;
== Software Development Kit (SDK) ==&lt;br /&gt;
Mit dem SDK können eigene Applikationen programmiert und die im SDK vorhandenen Beispiele &amp;quot;AT&amp;quot; und &amp;quot;IoT&amp;quot; verändert werden. Das SDK wird vom Hersteller zur Verfügung gestellt (Stand 25.10.2014). Passend zum SDK existiert eine virtuelle Maschine mit eingerichtetem gcc zum Kompilieren. Insbesondere der nun verfügbare gcc basiert auf einer Community-Entwicklung.&lt;br /&gt;
&lt;br /&gt;
[http://bbs.espressif.com/viewforum.php?f=5&amp;amp;sid=3cf7540ab17805367e6a45d2c4682fc9 SDK0.9.2 + virtuelle Linuxmaschine mit eingerichtetem gcc]&lt;br /&gt;
&lt;br /&gt;
[https://drive.google.com/folderview?id=0B5bwBE9A5dBXaExvdDExVFNrUXM&amp;amp;usp=sharing Alternativlink für die virtuelle Maschine + Anleitung/HOWTO für das Setup sowie für das Kompilieren]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Anmerkung ===&lt;br /&gt;
Mit dem SDK wird der Mikrocontroller progammiert, der sich direkt auf dem ESP8266-SoC-Chip befindet. Dies ist nicht zu verwechseln mit Programmieranleitungen zur UART-Ansteuerung des ESP8266-SoC (meist mit AT-Firmware) mit einem anderen Mikrocontroller.&lt;br /&gt;
&lt;br /&gt;
==Checkliste bei Problemen mit dem Modul/Compiler/SDK==&lt;br /&gt;
Bitte berücksichtige bei der Frage nach Hilfestellung zu Deinem Problem die folgende Checkliste.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Bei Problemen mit der AT-Firmware/UART-Ansteuerung mit Mikrocontroller&#039;&#039;&#039;&lt;br /&gt;
# Was nutzt Du für die Stromversorgung?&amp;lt;br/&amp;gt;(Ganz knapp benennen, so dass Rückschlüsse auf Spannung und Stromstärke möglich sind)&lt;br /&gt;
# Welche Firmware-Version verwendest Du und von woher hast Du sie?&lt;br /&gt;
# Welchen Mikrocontroller verwendest Du?&lt;br /&gt;
# Welche Baudrate verwendest Du?&lt;br /&gt;
# &amp;quot;Sieht&amp;quot; das Modul den AP, &amp;quot;sieht&amp;quot; der PC das Modul?&lt;br /&gt;
# Funktioniert ein Connect?&lt;br /&gt;
# Welche AT-Befehlssequenz verwendest Du und was antwortet das Modul?&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Bei Problemen mit dem SDK/Compiler&#039;&#039;&#039;&lt;br /&gt;
# Benutzt Du die neuste, offizielle VM?&amp;lt;br/&amp;gt;(Diese ist ausgelegt für das neueste SDK)&lt;br /&gt;
# Benutzt Du das neueste, offizielle SDK? Welche Version benutzt Du?&amp;lt;br/&amp;gt;(Es werden regelmäßig Bugfixes und Erweiterungen eingepflegt)&lt;br /&gt;
# Kannst Du die SDK-Beispiele (IoT,AT) entsprechend der offiziellen Anleitung kompilieren, flashen und läuft es?&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Links ==&lt;br /&gt;
[https://en.wikipedia.org/wiki/ESP8266 ESP8266-Eintrag auf en.wikipedia.org]&amp;lt;br/&amp;gt;&lt;br /&gt;
[http://www.esp8266.com/ ESP8266 Community Forum]&amp;lt;br/&amp;gt;&lt;br /&gt;
[http://github.com/esp8266 ESP8266 Github mit Wiki und Source-Code Samples]&amp;lt;br/&amp;gt;&lt;br /&gt;
[https://hackaday.com/tag/esp8266/ Hackaday Posts zu ESP8266]&amp;lt;br/&amp;gt;&lt;br /&gt;
[http://espressif.com/en/products/esp8266/ ESP8266-Seite des Herstellers]&amp;lt;br/&amp;gt;&lt;br /&gt;
[http://bbs.espressif.com/ ESP8266-Forum des Herstellers]&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[http://www.mikrocontroller.net/topic/348772 Topic neu im mikrocontroller.net-Forum]&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[http://www.mikrocontroller.net/topic/342240 Topic alt im mikrocontroller.net-Forum]&amp;lt;br/&amp;gt;&lt;br /&gt;
[http://www.mikrocontroller.net/topic/342878 Sammelbestellungen im mikrocontroller.net-Forum]&lt;br /&gt;
&lt;br /&gt;
[http://blog.thomasheldt.de/ Viele Projekte und Informationen zum ESP8266]&lt;br /&gt;
&lt;br /&gt;
=== Dokumente === &lt;br /&gt;
[http://neilkolban.com/tech/esp8266/ Kolban’s book on the ESP8266] Sehr empfehlenswert!&amp;lt;br/&amp;gt;&lt;br /&gt;
[https://drive.google.com/folderview?id=0B5bwBE9A5dBXaExvdDExVFNrUXM&amp;amp;usp=sharing Anleitung/HOWTO für das Setup der virtuellen Maschine (SDK) sowie für das Kompilieren]&amp;lt;br/&amp;gt;&lt;br /&gt;
[https://nurdspace.nl/ESP8266 Übersetztes Datenblatt]&amp;lt;br /&amp;gt;&lt;br /&gt;
[http://www.electrodragon.com/w/Wi07c AT Instructions Set (English)] und [http://www.electrodragon.com/w/Wi07c#First_time_use_guide Anleitung zum Betrieb an einem Arduino (inkl. Code)]&amp;lt;br/&amp;gt;&lt;br /&gt;
[http://thomaspfeifer.net/esp8266_wlan_seriell_modul_at_kommandos.htm Beschreibung der AT-Kommandos mit Beispielen]&amp;lt;br/&amp;gt;&lt;br /&gt;
[http://www.mikrocontroller.net/attachment/229016/Espressif_IoT_AT____v0.1.5.906.pdf Espressif AT Instruction Set(Chinese)]&amp;lt;br/&amp;gt;&lt;br /&gt;
[http://www.seeedstudio.com/document/pdf/ESP8266%20Specifications(Chinese).pdf ESP8266 Specifications(Chinese)]&amp;lt;br/&amp;gt;&lt;br /&gt;
[http://nodemcu.readthedocs.org/en/dev/ NodeMCU Documentation]&amp;lt;br&amp;gt;&lt;br /&gt;
[https://cknodemcu.wordpress.com/2015/11/24/building-an-iot-node-for-less-than-15/ Building an IoT Node for less than 15$] (Paper, Kindle via Amazon)&lt;br /&gt;
&lt;br /&gt;
===Daten===&lt;br /&gt;
[http://bbs.espressif.com/viewforum.php?f=5&amp;amp;sid=3cf7540ab17805367e6a45d2c4682fc9 SDK0.9.2 + virtuelle Linuxmaschine mit eingerichtetem gcc]&amp;lt;br&amp;gt;&lt;br /&gt;
[https://drive.google.com/folderview?id=0B5bwBE9A5dBXaExvdDExVFNrUXM&amp;amp;usp=sharing Alternativlink für die virtuelle Maschine]&amp;lt;br/&amp;gt;&lt;br /&gt;
[https://onedrive.live.com/#cid=C4DDF72E6EEA3826&amp;amp;id=C4DDF72E6EEA3826%21631 Dateien (Xplorer+SDK+PDF+etc.)]&amp;lt;br/&amp;gt;&lt;br /&gt;
[http://www.mikrocontroller.net/attachment/230185/esp8266_config_v050.exe Config-Tool] &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Bezugsquellen ===&lt;br /&gt;
[http://espressif.com/en/espressif-systems/contact-us/ Offizieller Espressif Vertriebskanal] (Sample Purchase)&amp;lt;br/&amp;gt;&lt;br /&gt;
[http://www.aliexpress.com/wholesale?SearchText=ESP8266 aliexpress.com] ~ 2€&amp;lt;br/&amp;gt;&lt;br /&gt;
[http://www.banggood.com/?zf=283997 banggood.com] ~ 3.50€&amp;lt;br/&amp;gt;&lt;br /&gt;
[http://www.ebay.de/ Ebay]&lt;br /&gt;
ab 3€ inkl. Versand, Einzelstückpreis: ESP-01/02/03/04/05&amp;lt;br/&amp;gt;&lt;br /&gt;
(Suchbegriff: ESP8266, Option Artikelstandort: &amp;quot;Weltweit&amp;quot;)&amp;lt;br/&amp;gt;&lt;br /&gt;
(10 Stück ab 27 EUR inkl. Versand; Suchbegriff: 10pcs ESP8266)&amp;lt;br/&amp;gt;&lt;br /&gt;
ab 3.20€ inkl. Versand, Einzelstückpreis: ESP-07/08/09/11&amp;lt;br/&amp;gt;&lt;br /&gt;
[http://www.electrodragon.com/?s=esp8266&amp;amp;post_type=product electrodragon.com] ~ 3.50€ (zzgl. Versand)&amp;lt;br/&amp;gt;&lt;br /&gt;
[https://ex-store.de/advanced_search_result.php?keywords=esp8266&amp;amp;x=0&amp;amp;y=0 eX-store.de] (ESP-01/02/03/05/07/12/13) ab 3.35€ (zzgl. Versand)&amp;lt;br/&amp;gt;&lt;br /&gt;
[https://www.it-wns.de/themes/suche/index.php?suchekategorie=&amp;amp;sucheallgemein=esp8266 IT-WNS.de] (ESP-01/02/03/06/07/12E) je 3.99€ (zzgl. Versand)&amp;lt;br/&amp;gt;&lt;br /&gt;
[http://www.seeedstudio.com/depot/WiFi-Serial-Transceiver-Module-w-ESP8266-p-1994.html seeedstudio.com] ~ 5.50€&amp;lt;br/&amp;gt;&lt;br /&gt;
[http://shop.in-circuit.de/index.php?cPath=21 In-Circuit.de] ESP-ADC DIL Modul mit ESP8266EX 9.90€ Einzelpreis&amp;lt;br/&amp;gt;&lt;br /&gt;
[http://www.watterott.com/index.php?page=search&amp;amp;desc=off&amp;amp;sdesc=off&amp;amp;keywords=ESP8266 watterott.com] ab ~ 4€ (zzgl. Versand)&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Anderes==&lt;br /&gt;
*[http://www.mikrocontroller.net/articles/ESP8266-CPCB PCB für Community-Modul (Vorschlag)]&lt;br /&gt;
*[http://fkainka.de/esp8266-in-der-arduino-ide/ ESP8266 mit Arduino IDE programmieren]&lt;br /&gt;
*[http://www.arduinesp.com Arduino IDE Integration (ab 1.6.x)]&lt;br /&gt;
*[https://cknodemcu.wordpress.com/ NodeMCU (Lua) Anwendungen]&lt;br /&gt;
&lt;br /&gt;
== Einzelnachweise ==&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
--von [[axhieb]]&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Bauteile]]&lt;br /&gt;
[[Kategorie:Funk]]&lt;br /&gt;
[[Kategorie:Wlan]]&lt;/div&gt;</summary>
		<author><name>Promeus</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=STM32&amp;diff=92295</id>
		<title>STM32</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=STM32&amp;diff=92295"/>
		<updated>2016-03-10T16:19:45Z</updated>

		<summary type="html">&lt;p&gt;Promeus: Typo&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;STM32 ist eine Mikrocontroller-Familie von [http://www.st.com/mcu/inchtml-pages-stm32.html ST] mit einer 32-Bit [[ARM]] Cortex-M0/M3/M4 CPU. Diese Architektur ist speziell für den Einsatz in Mikrocontrollern neu entwickelt und löst damit die bisherigen ARM7-basierten Controller weitestgehend ab. Den STM32 gibt es von ST in unzähligen Varianten mit variabler Peripherie und verschiedenen Gehäusegrößen und -formen. Durch die geringe Chipfläche des Cores ist es ST möglich, eine 32 Bit-CPU für weniger als 1&amp;amp;nbsp;€ anzubieten.&lt;br /&gt;
&lt;br /&gt;
[[Bild:stm32F103xc.png|thumb|right|340px|Blockdiagramm STM32F103xC/D/E]]&lt;br /&gt;
&lt;br /&gt;
== STM32-Familien ==&lt;br /&gt;
&lt;br /&gt;
Bisher gibt es elf STM32-Familien:&lt;br /&gt;
* [http://www.st.com/internet/mcu/subclass/1588.jsp STM32F0]&lt;br /&gt;
** Cortex M0&lt;br /&gt;
** Mikrocontroller zum Einstieg&lt;br /&gt;
** Bis 48MHz (38 DMIPS)&lt;br /&gt;
* [http://www.st.com/internet/mcu/subclass/1169.jsp STM32F1]&lt;br /&gt;
** Cortex M3&lt;br /&gt;
** Bis 72MHz (61 DMIPS)&lt;br /&gt;
**Verschiedene Unterfamilien:&lt;br /&gt;
*** Connectivity line&lt;br /&gt;
*** Performance line&lt;br /&gt;
*** USB Access line&lt;br /&gt;
*** Access Line&lt;br /&gt;
*** Value line&lt;br /&gt;
* [http://www.st.com/web/en/catalog/mmc/FM141/SC1169/SS1575 STM32F2]&lt;br /&gt;
** Cortex M3&lt;br /&gt;
** Bis 120MHz (150 DMIPS)&lt;br /&gt;
** Wie die STM32F1 Serie, Camera-Interface, 32-Bit Timer, Crypto-Engine...&lt;br /&gt;
* [http://www.st.com/internet/mcu/subclass/1605.jsp STM32F3]&lt;br /&gt;
** Cortex M4F&lt;br /&gt;
** DSP und FPU&lt;br /&gt;
** Bis 72MHz (90 DMIPS)&lt;br /&gt;
** Fast 12-bit 5 MSPS and precise 16-bit sigma-delta ADCs&lt;br /&gt;
** Touch sensing controller (TSC)&lt;br /&gt;
* [http://www.st.com/internet/mcu/subclass/1521.jsp STM32F4]&lt;br /&gt;
** Cortex M4F&lt;br /&gt;
** DSP und FPU&lt;br /&gt;
** Bis 180MHz (225 DMIPS)&lt;br /&gt;
** Bis zu 2MB Flash&lt;br /&gt;
* [http://www.st.com/web/en/catalog/mmc/SC1169/SS1858 STM32F7]&lt;br /&gt;
** Cortex M7&lt;br /&gt;
** DSP und FPU&lt;br /&gt;
** Bis 200MHz (428 DMIPS)&lt;br /&gt;
** Mehr Peripherie: SPDIF-IN/OUT, SAI, HDMI-CEC, Dual Quad SPI&lt;br /&gt;
** DMA&#039;s auch für Ethernet, USB und Chrom-ART&lt;br /&gt;
* [http://www.st.com/web/en/catalog/mmc/FM141/SC1169/SS1817 STM32L0]&lt;br /&gt;
** Cortex M0+&lt;br /&gt;
** Low Power &lt;br /&gt;
** mit LCD Treiber&lt;br /&gt;
** Bis 32MHz (26 DMIPS)&lt;br /&gt;
* [http://www.st.com/web/en/catalog/mmc/FM141/SC1169/SS1295 STM32L1]&lt;br /&gt;
** Cortex M3&lt;br /&gt;
** Low Power &lt;br /&gt;
** mit LCD Treiber&lt;br /&gt;
** Bis 32MHz (33 DMIPS)&lt;br /&gt;
* [http://www.st.com/web/en/web/catalog/mmc/FM141/SC1169/SS1580 STM32L4]&lt;br /&gt;
** Cortex M4F&lt;br /&gt;
** DSP und FPU&lt;br /&gt;
** Ultra Low Power (bis zu 30nA mit I/O Wake-Up)&lt;br /&gt;
** Bis 80MHz (100 DMIPS)&lt;br /&gt;
** 256KB...1MB Flash, 128KB SRAM&lt;br /&gt;
** mit Segment-LCD Treiber&lt;br /&gt;
** Digital-Filter für ΣΔ-Modulatoren&lt;br /&gt;
* [http://http://www.st.com/web/en/catalog/mmc/FM141/SC1169/SS1582 STM32T]&lt;br /&gt;
** Cortex M3&lt;br /&gt;
** 72MHz&lt;br /&gt;
** Touch Sensing&lt;br /&gt;
* [http://www.st.com/web/en/catalog/mmc/FM141/SC1169/SS1581 STM32W]&lt;br /&gt;
** Cortex M3&lt;br /&gt;
** BIS 24MHz&lt;br /&gt;
** RF-MCU &lt;br /&gt;
[http://www.st.com/web/en/catalog/mmc/FM141/SC1169 Hier eine Übersicht zum Auswählen eines STM32Fxxx]&lt;br /&gt;
&lt;br /&gt;
===Features===&lt;br /&gt;
* Cortex-M0 / Cortex-M3 / Cortex-M4F / Cortex-M7 Kern (mit FPU)&lt;br /&gt;
* 16KB ... 2MB  [[Flash-ROM]]&lt;br /&gt;
* 4KB ... 256KB [[Speicher#SRAM|SRAM]]&lt;br /&gt;
* 2KB ... 16KB [[Speicher#EEPROM|EEPROM]] (STM32L)&lt;br /&gt;
* SDRAM-Controller bei den [http://www.st.com/web/en/catalog/mmc/FM141/SC1169/SS1577/LN1806 STM32F42xxx und STM32F43xxx], bis 512 MByte externer SDRAM addressierbar&lt;br /&gt;
* 512 one-time programmable Bytes(STM32F2/4)&lt;br /&gt;
* [[IC-Gehäuseformen | Gehäuse]] 20 ... 216 Pins als LCSP, TSSOP, QFN, LQFP und BGA&lt;br /&gt;
* Derzeit sind über &#039;&#039;&#039;500&#039;&#039;&#039; [http://www.st.com/web/en/catalog/mmc/FM141/SC1169 STM32 Derivate/Varianten verfügbar]&lt;br /&gt;
* Bis 72MHz CPU-Takt, bis 120MHz beim STM32F2xx, bis 168/180 MHz beim STM32F4xx, wobei eine spezielle prefetch-hardware bis 120/168 MHz eine Geschwindigkeit erzielen soll, die 0 Wait-States entspricht. Der CPU-Takt wird über einen Multiplikator aus dem internen RC-Takt oder einem externen Quarz-Takt abgeleitet. Bis 216MHz CPU-Takt bei STM32F7xx.&lt;br /&gt;
* Externes Businterface (nur bei Gehäusen ab 100 Pin und nur bei STM32F4, STM32F2 und STM32F1 Performance line)&lt;br /&gt;
* LCD Treiber für 8x40 Punkte (nicht beim STM32F2xx)&lt;br /&gt;
* TFT Treiber bei STM32F429 / STM32F439&lt;br /&gt;
* Spannungsbereich 1,65 ... 3,6V, nur eine Betriebsspannung nötig&lt;br /&gt;
* Temperaturbereich bis 125 °C&lt;br /&gt;
* Bis zu 168 IOs, viele davon [[Pegelwandler|5V-tolerant]]&lt;br /&gt;
* Interner, kalibrierter RC-Oszillator mit 8MHz (16MHz bei STM32F2/F4xx)&lt;br /&gt;
* Externer Quarz&lt;br /&gt;
* Real Time Clock mit eigenem Quarz und separater Stromversorgung&lt;br /&gt;
* Bis zu 16 [[Timer]], je Timer bis zu 4 IC/OC/PWM Ausgänge. Davon 2x Motion Control Timer (bei STM32F103xF/G), (bis zu 32 PWM Ausgänge)&lt;br /&gt;
* Systick Counter&lt;br /&gt;
* Bis zu 3 12-Bit [[AD-Wandler]] mit insgesamt 24 AD-Eingängen, integrierter [[Temperatursensor]], Referenzspannung Vrefint und VBatt Spannungsmessung (STM32F4xx)&lt;br /&gt;
* Bis zu 2 12-Bit [[DA-Wandler]] (bis zu 3 beim STM32F3xx)&lt;br /&gt;
* Bis zu 2 [[DMA]] Controller mit bis zu 12 Kanälen (16 beim STM32F2/4xx)&lt;br /&gt;
* Bis zu 2x [[I2C|I²C]]&lt;br /&gt;
* Bis zu 5x [[UART|USART]] mit LIN, IrDA und Modem Control (bis zu 8 beim STM32F2/F4xx)&lt;br /&gt;
* Bis zu 3x [[SPI]] (bis zu 6 beim STM32F4xx)&lt;br /&gt;
* Bis zu 2x [[I2S|I²S]]&lt;br /&gt;
* Bis zu 2x [[CAN#STMicroelectronics STM32 (Cortex M3/M4)|CAN]]&lt;br /&gt;
* Hardware [[CRC]] Unit, bei der STM32F3xx Serie mit einem einstellbaren Polynom &lt;br /&gt;
* Unique device ID register (96 Bits)&lt;br /&gt;
* RNG - Random Number Generator (STM32F2/4xx)&lt;br /&gt;
* Cryptographic Processor (CRYP) (STM32F2/4xx)&lt;br /&gt;
* Hash Processor (HASH) (STM32F2/4xx)&lt;br /&gt;
* Kamera-Interface (DCMI) (STM32F2/4xx)&lt;br /&gt;
* [[USB]] 2.0 Full Speed / OTG&lt;br /&gt;
* [[USB]] 2.0 Hi Speed OTG mit extra PHY-Chip (STM32F2/4xx)&lt;br /&gt;
* SDIO Interface (z.B. SD-Card Reader)&lt;br /&gt;
* Ethernet&lt;br /&gt;
* Watchdog mit Window-Mode&lt;br /&gt;
* Jedes Peripheriemodul ist separat einschaltbar, wodurch sich erheblich [[Ultra low power|Strom sparen]] lässt&lt;br /&gt;
* [[JTAG]] und SWD (Serial Wire Debug) Interface&lt;br /&gt;
* Bis zu 6 Hardware-Breakpoints für Debuggen&lt;br /&gt;
* und vieles mehr ...&lt;br /&gt;
&lt;br /&gt;
== Struktur der Dokumentation ==&lt;br /&gt;
Die Dokumentation der STM32 ist im Vergleich zur [[AVR]]-Familie umfangreicher und komplexer. Sie teilt sich in mehrere Dokumente auf.&lt;br /&gt;
Als Beispiel der Dokumentation soll stellvertretend der [http://www.st.com/web/en/catalog/mmc/FM141/SC1169/SS1031/LN1565/PF164486 STM32F103RC] genannt werden. Die Seite von ST beinhaltet alle nötigen Informationen passend zu diesem Prozessor.&lt;br /&gt;
&lt;br /&gt;
Diese Dokumente von ST beschreiben den Controller:&lt;br /&gt;
&lt;br /&gt;
* Im [http://www.st.com/st-web-ui/static/active/en/resource/technical/document/datasheet/CD00191185.pdf STM32F103xC/D/E Datasheet] sind die speziellen Eigenschaften einer bestimmten Modellreihe beschrieben und die exakten Daten und Pinouts aufgeführt, sowie die Zuordnung Chipname - Flash/RAM-Größe. Die Peripheriemodule werden nur aufgeführt, nicht detailliert beschrieben.&lt;br /&gt;
* Im [http://www.st.com/st-web-ui/static/active/en/resource/technical/document/reference_manual/CD00171190.pdf Reference Manual (RM0008)] sind alle Peripheriemodule der jeweiligen STM32-Controllerfamilie im Detail beschrieben.&lt;br /&gt;
* Das [http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.ddi0403c/index.html ARMv7M Architecture Reference Manual] beschreibt detailliert den Prozessorkern, wie das Exception Model, die CPU Instruktionen inklusive Encoding, etc.&lt;br /&gt;
* Das [http://www.st.com/st-web-ui/static/active/en/resource/technical/document/programming_manual/CD00228163.pdf STM32 Cortex-M3 Programming Manual] ist eine Zusammenfassung des ARMv7M Architecture Reference Manual bezogen auf die STM32.&lt;br /&gt;
* Wer nicht die ST Firmware-Library verwendet, der benötigt zusätzlich das [http://www.st.com/st-web-ui/static/active/en/resource/technical/document/programming_manual/CD00283419.pdf Flash Programming Manual] für die Betriebsart des Flash-ROMs, d.h. die frequenzabhängige Konfiguration der Waitstates.&lt;br /&gt;
&lt;br /&gt;
Zusätzlich sollten auch die [http://www.st.com/st-web-ui/static/active/en/resource/technical/document/errata_sheet/CD00197763.pdf Errata Sheets] beachtet werden. Empfohlen sei auch die Appnote &amp;quot;[http://www.st.com/web/en/resource/technical/document/application_note/CD00164185.pdf AN2586 Getting started with STM32F10xxx hardware development]&amp;quot;.&lt;br /&gt;
Die jeweiligen Dokumentations-PDFs sind auf der Produktseite von ST eines jeden Mikrocontrollers verlinkt.&lt;br /&gt;
&lt;br /&gt;
== Hardware Zugriffs-Libraries ==&lt;br /&gt;
=== CMSIS ===&lt;br /&gt;
&lt;br /&gt;
Die CMSIS (ARM® &#039;&#039;&#039;C&#039;&#039;&#039;ortex™ &#039;&#039;&#039;M&#039;&#039;&#039;icrocontroller &#039;&#039;&#039;S&#039;&#039;&#039;oftware &#039;&#039;&#039;I&#039;&#039;&#039;nterface &#039;&#039;&#039;S&#039;&#039;&#039;tandard) ist eine Library von ARM für den Zugriff auf die herstellerübergreifenden Funktionen des ARM-Cores. Hierzu gehört bei den Cortex-M4F-Cores auch die DSP und Floating-Point Funktionalität. Weiterhin existieren eine Zahl von Helferfunktionen für den NVIC, den Sys-Tick-Counter, sowie eine SystemInit-Funktion, welche sich um die PLL kümmert. &lt;br /&gt;
&lt;br /&gt;
Im Rahmen des CMSIS-Standards ([http://www.onARM.com www.onARM.com]) wurden die Headerdateien standardisiert, der Zugriff auf die Register erfolgt per &#039;&#039;&#039;Peripheral-&amp;gt;Register&#039;&#039;&#039;. Die CMSIS C-Dateien bzw. Header enthalten auch Anpassungen für die verschiedenen Compiler. Die Portierung eines Real-Time-Betriebsystems sollte unter Verwendung der CMSIS, für Chips der verschiedenen Hersteller, stark vereinfacht möglich sein (z.B. einheitliche Adressen für Core-Hardware/Sys-Tick-Counter).&lt;br /&gt;
&lt;br /&gt;
Die CMSIS ist im Download der ‎STM32 Standard Peripheral Library enthalten. Die Compiler-Hersteller liefern eine jeweils zur ihrer Tool-Version passende bzw. geprüfte Library (incl. CMSIS) aus. Diese Libs können, gegenüber den Downloads beim Chip-Hersteller, auch ältere Version beinhalten.&lt;br /&gt;
&lt;br /&gt;
=== ‎STM32 Standard Peripheral Library ===&lt;br /&gt;
&lt;br /&gt;
ST bietet für jede Controller-Familie eine umfangreiche zur CMSIS passende Peripherie-Bibliothek. Alle Funktionen um die Peripherie zu benutzen sind gekapselt in einfache Strukturen und Funktionsaufrufe. Somit muss man sich nicht selbst um die Peripherie-Register kümmern. Diese Library und ihre Dokumentation setzen das grundlegende Verständnis der Funktion des jeweiligen Peripheriemoduls voraus, wie es die o.a. Referenz und diverse Appnotes vermitteln. Die Library beinhaltet außerdem für fast jede Peripherie mehrere Beispiele.&lt;br /&gt;
Für die USB Schnittstelle gibt es noch eine extra Library, genauso wie für Ethernet.&lt;br /&gt;
&lt;br /&gt;
Auf der &amp;quot;Design Resources&amp;quot; Seite der Produktseite von ST eines jeden STM32 Mikrocontrollers kann die Library für den jeweiligen Controller heruntergeladen werden, z.B. [http://www.st.com/web/en/catalog/tools/PF257890 hier für den o.g. STM32F103RC].&lt;br /&gt;
&lt;br /&gt;
Library für STM32F4xx: [http://www.st.com/web/en/catalog/tools/PF257901# STSW-STM32065 STM32F4 DSP and standard peripherals library]&lt;br /&gt;
&lt;br /&gt;
=== ‎STM32Cube / HAL ===&lt;br /&gt;
&lt;br /&gt;
Wird in Zukunft die Standard Library ablösen.&lt;br /&gt;
* http://www.st.com/web/catalog/tools/FM147/CL1794/SC961/SS1743/LN1897&lt;br /&gt;
&lt;br /&gt;
== Programmierung ==&lt;br /&gt;
Zur Programmierung der STM32 gibt es verschiedene Möglichkeiten, sowohl kommerzielle proprietäre als auch mit Freier Software.&lt;br /&gt;
&lt;br /&gt;
Der GCC (in seinen verschiedenen Binärdistributionen) ist der einzige ARM Compiler der [http://de.wikipedia.org/wiki/C%2B%2B11 C++11] unterstützt.&lt;br /&gt;
&lt;br /&gt;
=== Freie Software/Freeware ===&lt;br /&gt;
==== Selber zusammenstellen ====&lt;br /&gt;
Man nehme...:&lt;br /&gt;
* Eine Entwicklungsumgebung nach Wahl:&lt;br /&gt;
** [http://www.eclipse.org Eclipse] mit [http://www.eclipse.org/cdt/ C/C++ Development Tooling] und [http://gnuarmeclipse.livius.net/blog/ GNU ARM Plug-in] (Bei Verwendung vom GCC-ARM-Embedded als Toolchain &amp;quot;Sourcery G++ Lite&amp;quot; auswählen, dieser sieht für eclipse gleich aus) (Linux, Windows)&lt;br /&gt;
** [http://netbeans.org/ Netbeans] mit [http://plugins.netbeans.org/plugin/37426/gdbserver GDBserver-Plugin] (Linux, Windows)&lt;br /&gt;
** [http://www.kdevelop.org/ KDevelop] (Linux)&lt;br /&gt;
** [http://www.geany.org/ Geany] (Linux, Windows)&lt;br /&gt;
** Oder ein einfacher Texteditor&lt;br /&gt;
* Einen C,C++ Compiler:&lt;br /&gt;
** Eine der [[ARM_GCC#GCC_Bin.C3.A4rdistributionen|GCC-Binärdistributionen]], siehe auch [[#GCC|GCC]] (je nach Distribution Linux, Windows)&lt;br /&gt;
* Programmiersoftware zum Flashen des Target:&lt;br /&gt;
** [http://openocd.sourceforge.net/ OpenOCD] unterstützt viele Debug/Programmier-Adapter (Linux, Windows)&lt;br /&gt;
** [https://github.com/texane/stlink Texane stlink] funktioniert gut mit den ST-Link Adaptern wie sie zB. auf den STM32 Discovery Boards zu finden sind (Linux)&lt;br /&gt;
** Turtelizer2 oder andere JTAG Programmieradapter&lt;br /&gt;
** Bei Verwendung eines Segger J-Link, den [http://www.segger.com/admin/uploads/productDocs/UM08005_JLinkGDBServer.pdf Segger GDB-Server] in Verbindung mit dem beim GCC mitgelieferten GDB (Linux, Windows).&lt;br /&gt;
&lt;br /&gt;
==== Komplette IDE&#039;s ====&lt;br /&gt;
* [https://developer.mbed.org/platforms ARM mbed Developer Site] ist der ultimative Compiler für denjenigen, der nur mal schnüffeln will. Doppelklick auf das gewünschte Board, Beispielprogramm (rechts am Rand auswählen), kompilieren und über USB hochladen. Schon blinkt es! Wermutstropfen: mbed läuft nicht lokal, nur im WWW.&lt;br /&gt;
* [http://www.codesourcery.com/sgpp/lite_edition.html Codesourcery Lite Edition] Mit dieser Umgebung muss man sich anfreunden können, was mir bisher nicht gelungen ist. Es sind nur wenig Beispielprojekte verfügbar. Nicht mehr kostenlos verfügbar.&lt;br /&gt;
* [http://www.coocox.org/ Coocox Eclipse IDE] kostenlose IDE für STM32F0/F1/F2/F3/F4. Basiert auf der ARM-GCC Toolchain und es gibt eine breite Unterstützung. Es ist sogar ein freies RTOS verfügbar. Beim Start der IDE muss man geduldig sein, was jedoch für alle Eclipse basierten IDE&#039;s gilt. Eine gute Wahl ohne Limits mit breiter Debugger-Unterstützung. Hilfreiche Infos gibt es im [http://www.mikrocontroller.net/topic/214719?goto=new#2228482 hier] und [http://www.mikrocontroller.net/topic/214719?goto=new#2229943 hier] Forum, Artikel: [[STM32 CooCox Installation]] &lt;br /&gt;
* [http://emide.org/ emIDE] kostenlose IDE von Segger. Die emIDE basiert auf Code::Blocks. Sie ist auf ARM-GCC aufgebaut und unterstützt eine große Zahl an unterschiedlichen JTAG/SWD Debugger - natürlich auch den J-Link aus gleichem Hause.  &lt;br /&gt;
* [http://www.emblocks.org EmBlocks] kostenlose IDE, Code::Blocks basiert, unterstützt STM32 L1/F0/F1/F2/F3/F4/W, integrierter Compiler (ARM-GCC), integrierter GDB-Debugger, Jlink/ST-Link, System view (Peripherie Register anzeigen) beim Debuggen, Project Wizard (Eigene Wizards können mit Squirrel geschrieben werden), Basiert auf Code::Blocks und gefällt mir recht gut da man ihn fast so gut nutzen kann wie die µVision von Keil, jedoch ohne deren Limit, http://www.mikrocontroller.net/articles/STM32_-_Einstieg_mit_Em::Blocks STM32 - Einstieg mit Em::Blocks]&lt;br /&gt;
** heisst jetzt EmBitz beta 0.42 -&amp;gt; http://www.emblocks.org/web/downloads-main&lt;br /&gt;
* [http://cms.seng.de/service-support/downloads/ Entwicklungsumgebung GNU/Linux] für STM32F1 mit OpenOCD und Olimex ARM-USB-OCD-H, Bedienung über Eclipse IDE oder Kommandozeile.&lt;br /&gt;
* [http://www.openstm32.org/blog1-System-Workbench-for-STM32 System Workbench for STM32] (SW4STM32) ist eine uneingeschränkte und kostenlose IDE. Sie wird von [http://www.st.com/web/en/catalog/tools/FM147/CL1794/SC961/SS1533/PF261797 ST] offiziell unterstützt. Die Entwicklungsumgebung ist in der Version 1.0 seit 5.2.2015 erhältlich. Seit Februar 2016 ist eine Version für Linux verfügbar.&lt;br /&gt;
&lt;br /&gt;
==== Andere Programmiersprachen ====&lt;br /&gt;
&lt;br /&gt;
* [http://mecrisp.sourceforge.net Mecrisp-Stellaris], eine native Forth-Implementation für ARM Cortex M0/M3/M4. Es werden bereits mehrere STM32 Targets unterstützt und neue Portierungen sind herzlich willkommen. Auch Chips von TI, NXP und Freescale sind im aktuellen Paket enthalten.&lt;br /&gt;
&lt;br /&gt;
=== Kommerzielle Umgebungen ===&lt;br /&gt;
&lt;br /&gt;
* [http://www.keil.com/arm/mdk.asp Keil µVision] (Demo max. 32KB Code/Free für STM32F0/STM32L0): Die sehr komfortable µVison IDE ist neben dem ARM Compiler per Menue auch für einen beliebigen GNU-Compiler konfigurierbar. Damit besteht das 32k-Limit nur noch für den integrierten Debugger / Simulator. In Verbindung mit einem ULINK2 ist die Umgebung schon sehr einfach zu bedienen - leider ist der Compiler mit großen Abstand der langsamste den ich je nutzte da er keine parallel Option wie der GNU-CC besitzt. Mit der µVision lässt sich kein fremdes File in den Controller in den Flashspeicher des Controllers schreiben. Für den Anfänger eine gute Wahl. Der Preis ist jedoch ein guter Grund auf andere freie IDE&#039;s zu wechseln. µVison selbst kann kostenlos mit dem MDK-Evaluationkit heruntergeladen werden. [https://www.keil.com/arm/demo/eval/arm.htm#DOWNLOAD download] Wer sich nur auf STM32 Cortex M0/L0 beschränkt kann die Keil MDK auch ohne 32K Begrenzung frei nutzen. [http://www2.keil.com/stmicroelectronics-stm32/mdk download]&lt;br /&gt;
* [http://www.iar.com/en/Products/IAR-Embedded-Workbench/ IAR-Embedded-Workbench] (Demo max. 32KB Code) [http://supp.iar.com/Download/SW/?item=EWARM-EVAL download]&lt;br /&gt;
* [http://www.isystem.com/download/winideaopen winIDEAOpen] Keine Code Limitierung, GCC und Testwerkzeug beinhaltet. Läuft mit dem iTag50 Adapter, Segger J-Link und dem ST-Link&lt;br /&gt;
* [http://www.raisonance.com Raisonance Ride7] (GCC Compiler, kostenlose Version auf Debugging von max. 32KB Code limitiert, keine Limitierung beim Complilieren)&lt;br /&gt;
* [http://www.atollic.com Atollic] (Lite Version (bis V2.3.0) ohne Code-Limit, auf GCC basierend. Die neueste Version ab V3 hat fast keine Beschränkungen mehr außer jetzt einen Code-Limit von 32kB. Außerdem werden jetzt die meisten ARM Familien unterstützt. )&lt;br /&gt;
* [http://www.rowley.co.uk/arm/ Rowley Crossworks] (Demo 30 Tage unbeschränkt, 150$ für nichtkommerzielle Nutzung, auf GCC basierend). Mir ist nicht klar warum man für diese IDE Geld bezahlen soll. Der GNU-Compiler ist frei und die Entwicklungsumgebungen die auf Eclipse basieren, ebenfalls. Allerdings ist diese Einstellungsarbeit schon was für den etwas erfahrenen Entwickler.&lt;br /&gt;
* [http://www.code-red-tech.com Code Red] (GCC basierend)&lt;br /&gt;
* [http://www.sisy.de/index.php?id=17&amp;amp;no_cache=1 SiSy ARM oder SiSy Micrcontroller++] (Demo verfügbar keine Gößenbegrenzung, basiert auf GNU-Compiler, grafische Programmierung mit UML möglich, integrierter Debugger)&lt;br /&gt;
* [http://www.comsytec.eu/epsdebugger.php EPS Debugger Plugin, für STM32 Development mit Code::Blocks]&lt;br /&gt;
* [http://www.mikroe.com MikroE bietet neben Pascal und Basic auch C mit kompletter Oberfläche mit Compiler etc. pp relativ günstig]&lt;br /&gt;
&lt;br /&gt;
=== STM32CubeMX ===&lt;br /&gt;
Dies ist eine Software von ST selbst, die die Auswahl und Konfiguration von STM32-Mikrocontrollern vereinfacht:&lt;br /&gt;
* Auswahl der Controller oder Entwicklungsboards mit einer parametrischen Suche&lt;br /&gt;
* grafische Konfiguration der Pins und Alternate Functions (inkl. Überprüfung auf Kollisionen - bei Entwicklungsboards sind gewisse Pins schon vorkonfiguriert und werden angezeigt)&lt;br /&gt;
* grafische Konfiguration des Clock-Trees&lt;br /&gt;
* Generierung von C-Code entsprechend der grafischen Konfiguration. Dieser funktioniert nur mit den neuen STM32CubeFx Libraries, nicht mit den alten Standard Peripheral Libraries.&lt;br /&gt;
* Simulation des Strom-Verbrauchs unter Auswahl verschiedenster Stromquellen und Batterien&lt;br /&gt;
Die Software kann [http://www.st.com/web/catalog/tools/FM147/CL1794/SC961/SS1743/PF259242 bei ST heruntergeladen] werden. Sie wird im Windows Executable Format angeboten und erweckt daher den Eindruck, ausschließlich für Windows geeignet zu sein, ist aber tatsächlich Java-basiert und daher betriebssystem-unabhängig.&lt;br /&gt;
==== STM32CubeMX unter Linux ====&lt;br /&gt;
Ab der Version 4.13 liegt jetzt ein Linux-Installer mit bei.&lt;br /&gt;
&lt;br /&gt;
Unter Linux kann STM32CubeMX installiert werden, indem man das heruntergeladene .zip-Archiv entpackt, und den enthaltenen Installer per Java über ein Terminal startet:&lt;br /&gt;
&amp;lt;pre&amp;gt;java -jar SetupSTM32CubeMX-4.5.0.exe&amp;lt;/pre&amp;gt;&lt;br /&gt;
Das Anlegen der Desktop/Startmenü-Shortcuts funktioniert unter Linux nicht richtig und kann daher deaktiviert werden. Um STM32CubeMX nach der Installation zu starten, wechselt man im Terminal in den Installationsort und gibt ein:&lt;br /&gt;
&amp;lt;pre&amp;gt;java -jar STM32CubeMX.exe&amp;lt;/pre&amp;gt;&lt;br /&gt;
Damit das funktioniert, muss die Oracle Java Runtime Environment 1.8 installiert sein (Siehe z.B. [http://wiki.ubuntuusers.de/Java/Installation/Oracle_Java/Java_8#Java-8-JRE hier] für Ubuntu). Nicht benötigt wird wine.&lt;br /&gt;
&lt;br /&gt;
=== Tutorials für diverse Tool-Kombinationen ===&lt;br /&gt;
* [[STM32 Eclipse Installation|Windows,Linux, Eclipse + Yagarto/CodeSourcery + OpenOCD/ST-Link]]&lt;br /&gt;
* [[STM32 Eclipse JLink Linux/Windows|Windows,Linux, Eclipse + GCC-ARM-Embedded + JLink]]&lt;br /&gt;
* [[Linux auf STM32|Linux auf STM32 (ucLinux)]]&lt;br /&gt;
&lt;br /&gt;
* Windows&lt;br /&gt;
** Eclipse&lt;br /&gt;
*** [http://www.mikrocontroller.net/topic/216554 Windows, Eclipse, codesourcery, st-link ]&lt;br /&gt;
*** [http://www.firefly-power.de/ARM/debugging.html Eclipse Plugin &amp;quot;GDB Hardware Debugging&amp;quot; mit OpenOCD]&lt;br /&gt;
** Code::Blocks&lt;br /&gt;
*** [http://www.mikrocontroller.net/topic/265600 Windows, Code::Blocks, STM32F4]&lt;br /&gt;
** STM32 mit EmBlocks&lt;br /&gt;
*** [http://www.emblocks.org/web/downloads-main Download EmBlocks]&lt;br /&gt;
*** [https://www.youtube.com/watch?v=coHPJylnzC8 Video STM32 Project Wizzard in EmBlocks]&lt;br /&gt;
** Atollic TrueSTUDIO&lt;br /&gt;
*** [[STM32 LEDBlinken AtollicTrueStudio|Atollic TrueSTUDIO Installation + Demo]]&lt;br /&gt;
** MDK-ARM Lite mit Einstellungen für STM32F0/F4-Discovery Board&lt;br /&gt;
*** [https://www.keil.com/demo/eval/arm.htm KEIL MDK-ARM Download]&lt;br /&gt;
*** [https://www.youtube.com/watch?v=RXOOxby5nns&amp;amp;list=PL6-W3FoUyb48WFI5PQv3SDJj2G1t2FonV&amp;amp;index=1 Installations Video STM32F4 Discovery Board]&lt;br /&gt;
*** [https://www.youtube.com/watch?annotation_id=annotation_203294&amp;amp;feature=iv&amp;amp;index=4&amp;amp;list=PL6-W3FoUyb48WFI5PQv3SDJj2G1t2FonV&amp;amp;src_vid=sN4gDZ7H8gw&amp;amp;v=BeZcQjXxk9A Einstellungen STM32F0 Discovery Board Video]&lt;br /&gt;
** SiSy ARM, STM32&lt;br /&gt;
*** Download: [http://www.sisy.de/index.php?id=59 SiSy DEMO] kein Begrenzung der Codegröße&lt;br /&gt;
*** [http://www.youtube.com/watch?v=84Y3jYLWYpo Videobeispiel]&lt;br /&gt;
** Microsoft Visual Studio&lt;br /&gt;
*** [http://visualgdb.com/tutorials/arm/stm32/f4_discovery/ &amp;quot;STM32F4-Discovery tutorial with Visual Studio&amp;quot;]&lt;br /&gt;
* Ubuntu&lt;br /&gt;
** [http://cms.seng.de/service-support/downloads/ Installing a toolchain for Cortex-M3/STM32 on GNU/Linux] - How-to manual, für STM32F1 unter GNU/Linux mit OpenOCD und Olimex ARM-USB-OCD-H. Integrierte Make files, Linker Skripte, Startup-Code, diverse Tools und Demo-Projekt/Programm. Einbindung in Eclipse IDE oder Bedienung über Kommandozeile.&lt;br /&gt;
** [http://fun-tech.se/stm32/index.php Ubuntu, Selbstcompilierter GCC, STM32/Cortex-M3]&lt;br /&gt;
** [http://thetoolchain.com The ToolChain] - Automatisch installierende Entwicklungsumgebung mit eigenen und externen Treibern, Unterstützt QtCreator als IDE, Flexibel erweiterbar über Shellskripte&lt;br /&gt;
&lt;br /&gt;
* [http://www.mikrocontroller.net/topic/214719 Tipps für Installation mit Eclipse]&lt;br /&gt;
&lt;br /&gt;
===Programmieradapter===&lt;br /&gt;
* [http://www.segger.com/jlink-model-overview.html SEGGER J-LINK / J-TRACE] für u.a. alle ARM7/9/11, Cortex-M0/M1/M3/M4/A5/A8/A9/R4 als [http://www.segger.com/cms/j-link-edu.html Non-Commercial] J-LINK-EDU für ca. 50,- zu haben, läuft in µVision, IAR, GDB (Linux &amp;amp; Windows über einen eigenen [http://www.segger.com/admin/uploads/productDocs/UM08005_JLinkGDBServer.pdf GDB-Server]), Keil, ... Der J-Link ist mit Abstand der schnellste Debugger den ich bisher testen konnte. Wer es beim Debuggen eilig hat, ist mit dem J-Link von Segger auf den besten Seite.&lt;br /&gt;
* Keil [http://www.keil.com/ulinkme/ ULINK-ME], [http://www.keil.com/arm/ulink2/ ULINK2], [http://www.keil.com/arm/ulinkpro/ ULINK pro] Wenn man die die µVision IDE nicht verlassen mag, kann man sich mit diesen Adaptern anfreunden denn sie arbeiten nur mit dieser IDE zusammen. Sie benötigen keine USB-Treiber denn sie nutzen geschickt das HID-Device des Betriebssystems. Es lässt sich kein fremdes Binary oder Hex-File flashen. Der ULINK2 kostet genau soviel wie ein Segger J-Link Basic bei gleichem Funktionsumfang. Dieser lässt sich aber auch in Verbindung mit anderen IDE&#039;s  (GDB, usw) einsetzten. &lt;br /&gt;
* [http://www.st.com/internet/evalboard/product/219866.jsp ST-LINK],  [http://www.st.com/internet/evalboard/product/251168.jsp ST-LINK/V2]&lt;br /&gt;
* Jedes STM32 Discovery board hat einen ST-Link für Programmierung/Debugging per SWD on-board, welcher auch für eigene STM32 Target Hardware benutzt werden kann (ca. 12,- bis 19,-€, je nach Typ). Diese ist jedoch mit 1.8Mhz Takt ein sehr langsamer Vertreter seiner Art. Mit ihm lässt sich jedoch sowohl Debuggen als auch Flashen von fremden Hex- und Binary-Files. Er unterstützt aber nur MCU&#039;s von ST. NXP, Atmel oder TI lassen sich damit nicht programmieren. Der Discovery-JTAG beherrscht nur SWD, kein JTAG und hat keine Treiber, die den Programmierprozessor vom Zielsystem elektrisch entkoppelt. Der ST-Link in der Adapterversion hat diese Nachteile nicht und kostet auch nur um 20 €.&lt;br /&gt;
* [http://www.raisonance.com/~rlink-debugger-programmer__microcontrollers__tool~tool__T018:4cn9ziz4bnx6.html Raisonance RLink]&lt;br /&gt;
* [http://www.amontec.com Amontec] (Achtung: keine Reaktion auf Bestellung, Telefon, Email...)&lt;br /&gt;
* [http://www.hjtag.com H-JTAG] Personal Edition für ca. 60,- zu haben, läuft mit ADS, SDT, IAR, Vision und RVDS &lt;br /&gt;
* [http://www.isystem.com/products/itag iTag] für 50.- bei Amazon zu bestellen, oder als Eigenbau version (offenes Design) läuft mit der freien winIDEAiTag version (siehe oben)&lt;br /&gt;
&lt;br /&gt;
In der Regel haben die [[JTAG]] Adapter einen 20-Poligen Stecker, den man direkt auf die Demo-Boards, die auch einen 20-Poligen [[JTAG]]-Anschluss haben, einstecken kann. Die Pinbelegung ist genormt, siehe Artikel [[JTAG]]. Die Discovery-Boards haben keinen separaten JTAG-Stecker, aber zumindest für das STM32F4 Discovery kann man sich leicht einen Adapter Pinheader-&amp;gt;JTAG Stecker selber bauen.&lt;br /&gt;
&lt;br /&gt;
Andere [[JTAG]] Adapter wie z.B. der ULink2 von Keil funktionieren nur mit dem Keil Compiler. Leider kann dieser auch kein fremdes Binary oder Hex-File in den Controller schreiben.&lt;br /&gt;
&lt;br /&gt;
===Programmieradapter Open-Source===&lt;br /&gt;
&lt;br /&gt;
* [https://www.olimex.com/Products/ARM/JTAG/ARM-JTAG-COOCOX/ ARM-JTAG-COOCOX], CoLinkEX Nachbau von Olimex, unterstützt JTAG sowie SWD&lt;br /&gt;
** [http://www.coocox.org/colinkEx.htm unterstützte uC]&lt;br /&gt;
** unterstütze IDEs: [http://www.keil.com/arm/mdk.asp Keil MDK-ARM 4.03] oder neuer, [http://www.iar.com/en/Products/IAR-Embedded-Workbench/ IAR Embedded Workbench 5.xx] oder neuer sowie die [http://www.coocox.org/CooCox_CoIDE.htm CooCox CoIDE]&lt;br /&gt;
* [https://www.olimex.com/Products/ARM/JTAG/ Olimex] ARM-USB-OCD (ca. 60.-, hat zusätzlich einen Spannungsausgen und einen COM Port)&lt;br /&gt;
* [http://www.oocdlink.com/ OOCDLink]  [_Link ist derzeit nicht verfügbar_]&lt;br /&gt;
* [https://github.com/texane/stlink Stlink]&lt;br /&gt;
* [http://www.randomprojects.org/wiki/Floss-JTAG FLOSS-JTAG]&lt;br /&gt;
* [http://capitanio.org/mlink/ Linux Demo Code für die Discovery&#039;s ST-Link Programmierung]&lt;br /&gt;
&lt;br /&gt;
Der Controller hat auch einen fest eingebauten Boot-Lader. Damit läßt er sich auch über eine gewöhnliche serielle Schnittstelle programmieren, ohne dass man einen JTAG-Adapter benötigt. Dies erfordert ggf. entsprechende Konfiguration über die BOOTx-Pins und/oder die Option-Bytes, und ein Programm wie [https://code.google.com/p/stm32flash/ stm32flash].&lt;br /&gt;
&lt;br /&gt;
=== Demo-Projekte ===&lt;br /&gt;
&lt;br /&gt;
* Einführung in die GPIO Programmierung der STM32F10x und STM32F30x Prozessoren am Beispiel des STM32F3 Discovery Boards und Vergleich zur AVR IO Registerstruktur [http://www.mikrocontroller.net/topic/300472#new]&lt;br /&gt;
* [[prog_bsp_timer_1_timer2|Programmbeispiel für die Verwendung von Timer2 zusammen mit dem Interrupt]]&lt;br /&gt;
* [http://www.firefly-power.de/ARM/printf.html Printf() debugging mit minimalem Aufwand]&lt;br /&gt;
* [[STM32_BLDC_Control_with_HALL_Sensor|Programmbeispiel für BLDC Motoransteuerung (Timer 1) mit HALLSensor (Timer 3)]]&lt;br /&gt;
* [[Cortex_M3_OCM3U]]&lt;br /&gt;
* Martin Thomas hat ein umfangreiches Projekt erstellt, in der die Eclipse Einstellungen enthalten sind:&lt;br /&gt;
** [http://www.siwawi.arubi.uni-kl.de/avr_projects/arm_projects/arm_memcards/index.html &amp;quot;ChaN&#039;s FAT-Module with STM32 SPI&amp;quot;]&lt;br /&gt;
* [[STM32 USB-FS-Device Lib]]&lt;br /&gt;
* Modellbau-Sender auf STM32-Basis mit vielen Treibern [http://www.rcos.eu www.rcos.eu]&lt;br /&gt;
* Ausführliches [https://github.com/jkerdels/stm32edu Einstiegs-Tutorial] in Codeform für das [http://www.st.com/internet/evalboard/product/252419.jsp STM32F4 discovery board]&lt;br /&gt;
* [http://www.redacom.ch/keillab/ Schweizer Gondelbahnsteuerung über Webserver auf ETT STM32F ARM KIT Board in Keil RTOS] mit Webcam&lt;br /&gt;
* Die [http://ethernut.svn.sourceforge.net/viewvc/ethernut/trunk/ Ethernut SVN Version] unterstützt inzwischen viele STM32 Typen, viele Devices und einige STM32 Demoboards&lt;br /&gt;
* [http://mikrocontroller.bplaced.net/wordpress/?page_id=744 Uwe Becker&#039;s Libraries für den STM32F4]&lt;br /&gt;
* [http://mikrocontroller.bplaced.net/wordpress/?page_id=3290 Uwe Becker&#039;s STM32F429 Discovery Board Oszilloskop], hier der [http://www.mikrocontroller.net/topic/319831#new Thread]&lt;br /&gt;
* [http://mikrocontroller.bplaced.net/wordpress/?page_id=3424 Uwe Becker&#039;s STM32F429 Discovery Board ZX-Spectrum Emulator]&lt;br /&gt;
&lt;br /&gt;
== Debug- und Trace-Interface (CoreSight™ Debug and Trace Technologie)==&lt;br /&gt;
&lt;br /&gt;
Übersicht über beide Funktionalitäten und den Schnittstellen:&lt;br /&gt;
http://www.keil.com/support/man/docs/ulink2/ulink2_cs_core_sight.htm&lt;br /&gt;
&lt;br /&gt;
Die Coresight-Debug-Architektur ermöglicht ein nicht-invasives Debugging, d.h. es können während des Betriebes (meistens) ohne Beeinflussung des Prozessors Daten vom Speicher gelesen und in selbigen geschrieben werden.&lt;br /&gt;
&lt;br /&gt;
=== Debugger Funktionen ===&lt;br /&gt;
&lt;br /&gt;
Der Debugger-Teil besitzt drei Funktionen:&lt;br /&gt;
* Run Control: z.B. Programm-Start, Stopp und Einzel-Schritte.&lt;br /&gt;
* (Program) Break Points: Ein Programm hält an, wenn der Programm Counter eine bestimmte Programm-Adresse erreicht.&lt;br /&gt;
** Die maximale Anzahl der gleichzeitig möglichen Break Points ist begrenzt (z.B. 6 bei einem STM32).&lt;br /&gt;
** Die Anzahl der Break Points ist nahezu unbegrenzt, wenn ein Debugger über den Memory Access (s.u.) sogenannte Flash Break Points unterstützt. Dabei wird ein geladenes Programm im Flash umprogrammiert, um den Debugger anzuhalten. Diese Funktionalität ist meistens ein kostenpflichtiges Zusatz-Feature des Debugger-Herstellers. &lt;br /&gt;
** Beinhaltet keine Data Watch Funktionalität, welche im Trace-Teil (DWT) realisiert wird.&lt;br /&gt;
* Memory Access: Lesen und Schreiben von Speicheradressen. &lt;br /&gt;
** Diese Funktionalität beinhaltet keine direkte Flash-Programmierung. Der Programmiervorgang für einen Flash ist herstellerspezifisch und muss von dem verwendeten Debugger unterstützt werden.&lt;br /&gt;
&lt;br /&gt;
=== Trace Funktionen ===&lt;br /&gt;
Die Trace-Funktionalität wird in drei Funktionen aufgeteilt:&lt;br /&gt;
* ETM (Embedded Trace Macrocell): Optional, nicht jede CPU besitzt diese Hardware (Kostenfaktor, Ausstattung).&lt;br /&gt;
* ITM (Instrumentation Trace Macrocell): Über diesen Kanal kann ein vereinfachtes Trace des Core ermöglicht werden, sowie &amp;quot;printf-ähnlich&amp;quot; Daten über den ITM Channel 0 geschickt und im Debugger ausgegeben werden.&lt;br /&gt;
* DWT (Data Watchpoint &amp;amp; Trace Unit): &lt;br /&gt;
** Data Watch: 4 Access-Break-Points ( z.B. der Debugger bleibt stehen, wenn das Programm auf einen Speicher zugreift oder der Wert einer Variablen einen bestimmten Wert annimmt). &lt;br /&gt;
** Trace Unit: Programmverlauf (durch Lesen des Program Counters) und Interrupt Aufrufe verfolgen, sowie Zeitmessungen.&lt;br /&gt;
&lt;br /&gt;
Einige der Trace-Funktionalitäten können über die JTAG-Schnittstelle angesprochen werden. Die schnelle Trace-Funktionalität (mit 4 bit Parallel-Port) steht nur mit der erweiterten DEBUG + ETM Schnittstelle zur Verfügung. Im Gegensatz zum Debugger-Teil (Run Control, Break Points und Memory Access) werden Trace-Funktionen nicht von allen Debuggern unterstützt. Debugger mit der vollen Trace-Funktionalität kosten deutlich mehr.&lt;br /&gt;
&lt;br /&gt;
* Beispiele für Trace-Port-Aktivierungen für verschiedene Hersteller: http://www.keil.com/support/man/docs/jlink/jlink_capture_tracedata.htm&lt;br /&gt;
&lt;br /&gt;
Die Aktivierung des parallelen Trace-Ports erfordert, je nach CPU Hersteller, zusätzliche Debugger-Makros für die Aktivierung und Port-Freischaltung. Zusätzlich sind die Schnittstellenauswahl und Einstellung (Frequenzen) im Entwicklungs-Tool (IDE) wichtig, um erfolgreich den Programm-Verlauf &amp;quot;tracen&amp;quot; zu können.&lt;br /&gt;
&lt;br /&gt;
=== Debug und Trace-Schnittstellen ===&lt;br /&gt;
Als Debug Interface stehen zwei Varianten zur Auswahl:&lt;br /&gt;
* [[JTAG]]: Dafür sind mindestens 6 Steuerleitungen nötig. Unterstützt Device Chaining: Mehrere verbundene Geräte können mit einem Debugger/Programmer gleichzeitig angesteuert werden.&lt;br /&gt;
* SWD (Serial Wire Debug): Hier mindestens 2  Steuerleitungen (3 mit SWO, zzgl GND und 3,3V). Die SWD Schnittstelle ist in der Regel schneller und kann auch Funktionen aus dem Trace-Teil beinhalten (z.B. ITM, dafür wird der SWO-Pin benötigt). Device Chaining ist mit dieser Schnittstelle nicht möglich.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Standard-JTAG Steckerbelegungen: &lt;br /&gt;
http://www.keil.com/support/man/docs/ulink2/ulink2_hw_connectors.htm&lt;br /&gt;
&lt;br /&gt;
=== Der 10polige JTAG-Stecker von mmvisual ===&lt;br /&gt;
mmvisual hat mit dieser Steckerbelegung die Standard JTAG Schnittstelle erweitert:&lt;br /&gt;
&lt;br /&gt;
Ich habe diesen Part in den Artikel [http://www.mikrocontroller.net/articles/JTAG#Der_10-polige_JTAG_Stecker_von_mmvisual JTAG] verschoben.&lt;br /&gt;
Hinzu gekommen ist die Adapterplatine 10-Polig auf Standard JTAG 20 Polig mit TTL/V24 Wandler. [http://www.mikrocontroller.net/articles/JTAG#Die_Adapterplatine Siehe hier.]&lt;br /&gt;
&lt;br /&gt;
== Hardware-Beschaltung ==&lt;br /&gt;
&lt;br /&gt;
Der STM32 benötigt für den Betrieb nur (Minimalbeschaltung):&lt;br /&gt;
&lt;br /&gt;
* VCC 2..3,3V (je nach Typ)&lt;br /&gt;
* AVCC 2..3,3V (sehr wichtig, der STM32 lässt sich ohne diese Spannung nicht programmieren)&lt;br /&gt;
* GND&lt;br /&gt;
* Reset Pin 100nF nach GND (ein Pull-Up Widerstand von ca. 40k ist intern vorhanden)&lt;br /&gt;
* [[#Bootmodi|Boot-Pins]]&lt;br /&gt;
&lt;br /&gt;
ansonsten nur ein paar einzelne Cs 100nF an VCC/GND.&lt;br /&gt;
&lt;br /&gt;
Um Programmieren zu können wird entweder noch die serielle Schnittstelle (Programmieren über den vorprogrammierten Bootloader) oder JTAG oder die SWD Schnittstelle benötigt.&lt;br /&gt;
&lt;br /&gt;
=== Bootmodi ===&lt;br /&gt;
Unterschiedliche Bootmodi lassen sich mittels der PINs BOOT0 und BOOT1 auswählen . Siehe Application Note [https://my.st.com/public/STe2ecommunities/mcu/Lists/cortex_mx_stm32/Attachments/18225/AN2606.pdf AN2606]. Außer F1 besitzen neuere Familien ein SYSCFG_MEMR Register. In dieses Register kann man die gewünschten Boot0/1 Werte schreiben und nach einem Core-Reset (!= System_Reset) startet der Prozessor im gewünschten Mode. Eine Neu- bzw. Deinitialisierung der Peripherie empfiehlt sich! &lt;br /&gt;
&lt;br /&gt;
==== Boot from FLASH ====&lt;br /&gt;
Startadresse wird von 0x08000004 geladen&lt;br /&gt;
 BOOT0 Lo&lt;br /&gt;
 BOOT1 X &lt;br /&gt;
&lt;br /&gt;
==== Boot from SRAM ====&lt;br /&gt;
PC Startadresse wird an 0x200001E0 direkt angesprungen.&lt;br /&gt;
 BOOT0 Hi&lt;br /&gt;
 BOOT1 Hi&lt;br /&gt;
Da der interne FLASH der stm32f1x laut Datenblatt nur für 1000 Schreibvorgänge ausgelegt ist, kann mittels BOOT0 (High) und BOOT1 (High) auch aus dem zuvor mit dem Debugger (JTAG/SWD) beschriebenen SRAM booten. &lt;br /&gt;
Hierbei gilt zu beachten:&lt;br /&gt;
 VTOR auf die NVIC Tabelle im SRAM vor dem auslösen des ersten Interrupts remappen.&lt;br /&gt;
&lt;br /&gt;
 Um ein vergleichbares Startverhalten zum FLASH zu erreichen, empfiehlt es sich,&lt;br /&gt;
 0xF1E0F85F an 0x200001E0 zu schreiben. Diese implizite Ausführung von &amp;quot;ldr.w pc,&lt;br /&gt;
 [pc, #-0x01E0]&amp;quot; beim Start erzwingt ein laden der Startadresse von 0x20000004.&lt;br /&gt;
&lt;br /&gt;
==== Boot from SYSMEM (RS232, CAN und USB) ====&lt;br /&gt;
PC Startadresse wird von 0x1FFFF004 geladen&lt;br /&gt;
 BOOT0 Hi&lt;br /&gt;
 BOOT1 Lo&lt;br /&gt;
&lt;br /&gt;
Ab F2 gibt es auch ein SYSCFG_MEMRMR Register. Schreibt man hier den Wert für &amp;quot;System Flash&amp;quot; und macht einen Corereset (keinen Systemreset), so landet man auch im Bootloader, unabhängig vom Wert der Boot Pins.&lt;br /&gt;
&lt;br /&gt;
Auch ohne JTAG lässt sich ein STM32 programmieren (Bootloader-Aktivierung). Dabei stehen, je nach CPU-Typ, verschiedene Möglichkeiten zur Verfügung:&lt;br /&gt;
* RS-232 (bisher alle STMs)&lt;br /&gt;
* USB (alle USB fähigen CPUs &amp;gt; F103)&lt;br /&gt;
* CAN (wie USB nur in bestimmten MCUs)&lt;br /&gt;
&lt;br /&gt;
3 zusätzliche Verbindungen müssen auf dem Board gepatcht werden. Für einen Test geht es auch mit Tastern für RESET und BOOT0.&amp;lt;br&amp;gt;&lt;br /&gt;
RESET=RTS (L-aktiv)&amp;lt;br&amp;gt;&lt;br /&gt;
BOOT0=DTR (H-aktiv)&amp;lt;br&amp;gt;&lt;br /&gt;
BOOT1=LOW&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Details sind hier im Forum: [http://www.mikrocontroller.net/topic/141711 STM32 Programmiertool]&lt;br /&gt;
&lt;br /&gt;
Tools für den Download über den STM32-Bootloader:&lt;br /&gt;
* [http://www.st.com/web/en/catalog/tools/PF257525 STSW-MCU005 STM32 and STM8 Flash loader demonstrator]&lt;br /&gt;
* [https://code.google.com/p/stm32flash/ stm32flash] - Open source flash program (RS-232)&lt;br /&gt;
* [http://dfu-util.sourceforge.net/ dfu-util] - Open source flash program (USB)&lt;br /&gt;
&lt;br /&gt;
== Bewertung ==&lt;br /&gt;
=== Vorteile ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Vorteile gegenüber ARM7:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Interrupt-Controller jetzt Teil des Prozessors (als Core Peripheral), die Vector Table ist jetzt eine echte Vektortabelle, keine Sprungliste wie bei ARM7. Durch Automatismen zwischen Core und NVIC (auto register save r0..r3, lr, sp, pc) bei Interrupt Entry wird eine deutlich schnellere Ausführungszeit bei Interrupts erreicht. Der Interrupt Code muss sich nicht mehr selbst um die Sicherung der o.g. Register kümmern und eine besondere Konfiguration der Handler im Compiler entfällt. Sind vor Beendigung einer ISR (d.h. Rücksprung zum User Code) weitere Interrupts pending, so werden diese ausgeführt, ohne dass eine komplette pop-push-sequenz der Register notwendig ist. Schön beschrieben ist es hier im [http://www.hitex.com/fileadmin/pdf/insiders-guides/stm32/isg-stm32-v18d-scr.pdf Insider&#039;s Guide] unter 2.4.5 / Seite 20.&lt;br /&gt;
* Thumb-2 Befehlssatz, deutlich schneller als Thumb-1 und ebenso kompakt&lt;br /&gt;
* Weniger Pins für Debugging benötigt durch SWD&lt;br /&gt;
* Mehr Hardware Breakpoints machen debuggen einfacher&lt;br /&gt;
* Software ist einfacher weil die Umschaltung zwischen ARM Mode und Thumb Mode wegfällt&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Vorteile gegenüber LPC1700 und LPC1300:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Flexiblere Gehäuseformen mit mehr Peripherie bei kleinen Gehäusen&lt;br /&gt;
* FW-Lib für alle STM32 gleich, alle AppNotes/Demos beziehen sich auf diese eine FW-Lib was die Entwicklung der eigenen Applikation sehr beschleunigt.&lt;br /&gt;
* Genauerer und flexiblerer ADC, insbesondere gegenüber LPC1300&lt;br /&gt;
* Flexiblere Varianten der Peripherie &amp;gt;&amp;gt; bei weniger einen deutlichen Preisvorteil&lt;br /&gt;
* ab 0,85 EUR (Stand 2010) Allerdings gibts den LPC1100 mit Cortex-M0 schon ab 0,65 $!&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Vorteile gegenüber SAM3/4:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Fast alle Pins sind 5-Volt tolerant.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Vorteile gegenüber anderen &amp;quot;Kleinen&amp;quot; wie z.B. PIC, Atmel usw.&#039;&#039;&#039;&lt;br /&gt;
* nahezu gleicher Preis bei Hobby Anwendungen&lt;br /&gt;
* 32 Bit ohne Umwege in Assembler rechenbar&lt;br /&gt;
* Schnelle direkte Offset-Adressierung ermöglicht effizienten Zugriff auf Stack-Variablen, lokal gespeicherte Flash-Konstanten, struct/Array-Elemente&lt;br /&gt;
* Einfache einheitliche Adressierung des gesamten Adressraums, d.h. Pointer auf Peripherieregister, RAM &amp;amp; Flash können exakt gleich behandelt werden, keinerlei Banking/Umschalt-Mechanismen erforderlich auch bei großem Flash/RAM&lt;br /&gt;
* Interrupt-Prioritäten und Prioritätsgruppen&lt;br /&gt;
* Effiziente Pointerarithmetik da Registerbreite=Adressbreite&lt;br /&gt;
* bessere Peripherie wie USB, Ethernet, Vielzahl an Timern&lt;br /&gt;
* der ARM-Core hat eine höhere Taktfrequenz und kann gleichzeitig mehr in weniger Takten berechnen&lt;br /&gt;
* Hardware-Division, bei einigen FPU zur effizienten float-Berechnung&lt;br /&gt;
* Mit größerem Flash/RAM verfügbar&lt;br /&gt;
* Code kann direkt aus dem RAM ausgeführt werden, Speicherschutz und privilegierter Ausführungsmodus können &amp;quot;Kernel&amp;quot;- vor &amp;quot;Anwendungs&amp;quot;-Code schützen, somit wird das dynamische Nachladen von Anwendungen aus externem Speicher effizient &amp;amp; sicher möglich&lt;br /&gt;
* ... und weitere 1000 Punkte ...&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Links&#039;&#039;&#039;&lt;br /&gt;
* [http://www.arm.com/files/pdf/ARM_Microcontroller_Code_Size_%28full%29.pdf Code Size Analyse zwischen verschiedenen µC]&lt;br /&gt;
&lt;br /&gt;
=== Nachteile ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Nachteil gegenüber LPC1700:&#039;&#039;&#039;&lt;br /&gt;
* STM32F1xx: nur 72 MHz statt 100 MHz (LPC1759: 120 MHz) Taktfrequenz; STM32F2xx hat diesen Nachteil nicht (ebenfalls 120MHz, STM32F4xx mit 180MHz)&lt;br /&gt;
* Der LPC1700 besitzt deutlich mehr Mechanismen, um die Auswirkung der Waitstates des Flash-ROMs auf Code- und Datenzugriffe zu reduzieren und das bedeutet mehr Performance bei gleicher Taktfrequenz. Beim STM32F2 entfällt dieser Nachteil wohl aufgrund des ART Accelerators. &lt;br /&gt;
* Alle LPC1xxx haben 32 Bit Timer. Bei den STM32 haben das nur die STM32F2xx und STM32F4xx (2 Stück)&lt;br /&gt;
* I2S Einheit von ST hat keinen FIFO und im 24/32Bit Modus müssen 2x16Bit Halbwörter übertragen werden. Wobei allgemein bei neuen ARM Prozessoren die vorhandenen DMA-Kanäle (basierend auf eigenen BUS-Kanälen und Speicherzugriffen) FIFO in beliebiger Größe bedeutet. (Gilt nicht bei bestimmten STM32F4xx)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Nachteil für Hobby-Anwender&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Nicht direkt &amp;quot;Steckbrettauglich&amp;quot;, da kein DIL Gehäuse verfügbar. Der ebay-Shop dipmicro führt jedoch sehr günstige Lötadapter für Umsetzung von LQFP48 auf DIP48. QFP64 in 0.5mm Pinabstand und nicht 0.8mm wie AVR. Von NXP gibt es Cortex-M0 µC im DIL Gehäuse.&lt;br /&gt;
&lt;br /&gt;
* Viel Peripherie, Clocks müssen alle richtig eingestellt werden, ggf. Anpassung des Startup Codes usw.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Errata, Tipps und Tricks ==&lt;br /&gt;
=== Hardware ===&lt;br /&gt;
* AD-Wandler PA0: Im Errata steht, dass hier Fehler in der Wandlung entstehen könnten, also einen anderen Pin verwenden.&lt;br /&gt;
* CAN-Bus PD0/PD1: Remap geht erst ab der 100-Pin-Version. Steht im RM0008 unter 9.3.3.: &amp;quot;CAN1 alternate function remapping&amp;quot;. Alle Infos von RM0008 9.3.x sind interessant&lt;br /&gt;
* CAN und USB sind bei der F1 Serie nur bei der &amp;quot;◦Connectivity-Line&amp;quot; gleichzeitig nutzbar. Siehe Datenblätter.&lt;br /&gt;
* Mit internem RC-Oszillator kann die CPU mit maximal 64MHz betrieben werden. Mit einem externen Quarz sind dann 72MHz möglich.&lt;br /&gt;
* Für USB Betrieb muss die CPU mit 48MHz oder 72MHz betrieben werden (bei STM32F1xx).&lt;br /&gt;
* Der Idle Interrupt vom Usart wird zwar ausgelöst, aber nicht vom entsprechenden Statusflag angezeigt&lt;br /&gt;
* Der DMA fängt beim aktivieren immer von vorn an zu zählen, auch wenn er nur kurz angehalten wurde&lt;br /&gt;
* STM32F2xx hat kein Flash Size Register, bei STM32F4xx ist zwar ein flash Size Register beschrieben, kollidiert aber in der Adresse mit einem anderen Register&lt;br /&gt;
* Derivate mit internem EEPROM und nur einer Speicherbank haben das &amp;quot;Feature&amp;quot; bei write/erase des Data-Flashes (EEPROM) einen kompletten stall der code execution zu verursachen (inkl. ISR&#039;s, DMA). Desgleichen bei write/erase des internen Flash (ISP-routinen, EEPROM-Emulation).&lt;br /&gt;
* Der I2C hat diverse Fehler, welche im Errata des jeweiligen Modells (z.B. [http://www.st.com/st-web-ui/static/active/en/resource/technical/document/errata_sheet/CD00238166.pdf STM32F105xx and STM32F107xx Errata sheet] ) zu finden sind. Workarounds hierzu finden sich in der Application Note [http://www.st.com/st-web-ui/static/active/en/resource/technical/document/application_note/CD00209826.pdf AN2824]. Am Besten benutzt man jedoch die I2C Communication peripheral application library (CPAL) von ST ([http://www.st.com/web/catalog/tools/FM147/CL1794/SC961/SS1743/PF258336 STSW-STM32127])&lt;br /&gt;
* [http://blog.frankvh.com/category/stm32/ weitere undokumentierte Features]&lt;br /&gt;
* Interrupt-Flags in Statusregistern der diversen Peripherals wie der Timer müssen zu &#039;&#039;&#039;Beginn&#039;&#039;&#039; (bzw. möglichst weit vor dem Return) der ISR zurückgesetzt werden, da die ISR sonst eventuell 2x ausgeführt wird (Siehe [https://my.st.com/public/Faq/Lists/faqlst/DispForm.aspx?ID=143&amp;amp;level=1&amp;amp;objectid=141 STM32 FAQ] und [http://www.mikrocontroller.net/topic/312393#new Forum]).&lt;br /&gt;
&lt;br /&gt;
=== Software ===&lt;br /&gt;
==== GCC ====&lt;br /&gt;
Um den GCC direkt zu verwenden (zB. mit selbstgebautem makefile), falls man das nicht von einer Entwicklungsumgebung machen lässt, siehe zunächst [[ARM GCC]]. STM32-spezifisches ist:&lt;br /&gt;
* Wird die [[#.E2.80.8ESTM32_Standard_Peripheral_Library|STM32 Standard Peripheral Library]] und ein Quarz verwendet, so muss noch per Präprozessor-Definition die Frequenz des Quarzes angegeben werden mittels z.B. -DHSE_VALUE=8000000 für 8MHz (wie auf dem STM32F4 Discovery).&lt;br /&gt;
&lt;br /&gt;
===== Startupcode &amp;amp; Linkerscript =====&lt;br /&gt;
* Damit der compilierte Code an den richtigen Stellen im Controller landet (d.h. dem Flash) muss man dem Linker ein Linkerscript mitgeben. Dies geht per &amp;quot;-T &#039;&#039;pfad_zum_linkerscript.ld&#039;&#039;&amp;quot; an den Linker-Befehl. Im Archiv der [[#.E2.80.8ESTM32_Standard_Peripheral_Library|STM32 Standard Peripheral Library]] befindet sich ein Beispiel-Linkerscript für die Atollic TrueSTUDIO IDE, dieses kann direkt mit dem GCC verwendet werden. Beispielsweise für den STM32F4 befindet sich das Script im Pfad &amp;quot;/STM32F4xx_DSP_StdPeriph_Lib_V1.1.0/Project/STM32F4xx_StdPeriph_Templates/TrueSTUDIO/STM324x7I_EVAL/stm32_flash.ld&amp;quot; des Archives.&lt;br /&gt;
* Damit beim Starten die richtigen Initialisierungen vorgenommen werden (wie globale Variablen und bei C++ Konstruktoren globaler Objekt-Instanzen) muss als erstes ein Startupcode laufen, der dann die main()-Funktion aufruft. Der Startupcode ist meistens in Assembler geschrieben, C-Code ist aber auch möglich. Im Archiv der [[#.E2.80.8ESTM32_Standard_Peripheral_Library|STM32 Standard Peripheral Library]] befindet sich ein Beispiel-Startupcode für die Atollic TrueSTUDIO IDE, dieser kann direkt mit dem GCC verwendet werden. Beispielsweise für den STM32F4 befindet sich der Code in Assemblerform im Pfad &amp;quot;/STM32F4xx_DSP_StdPeriph_Lib_V1.1.0/Libraries/CMSIS/Device/ST/STM32F4xx/Source/Templates/TrueSTUDIO/startup_stm32f40xx.s&amp;quot; des Archives. Der Assemblercode kann per arm-none-eabi-as (Flags s.o.) assembliert werden, die resultierende .o -Datei normal mitgelinkt.&lt;br /&gt;
&lt;br /&gt;
Zusammen bieten die beiden Dateien der Anwendung ein Standard-C-Interface, d.h. man kann wie gewohnt globale Variablen verwenden und seinen Code in die main()-Funktion schreiben.&lt;br /&gt;
&lt;br /&gt;
=== Tipps für Umsteiger von Atmel/PIC/8051 ===&lt;br /&gt;
* Prozessortakt hat unterschiedliche Taktquellen und eine PLL.&lt;br /&gt;
* Alle Peripheriemodule haben einen extra Clock, den man aktivieren muss.&lt;br /&gt;
* Wenn man z.B. einen UART benutzen möchte, so muss man den Clock vom UART, Alternate Function IO (AFIO) und dem GPIO-Port aktivieren.&lt;br /&gt;
* Ansonsten hat man nahezu doppelt so viele Möglichkeiten in den Peripheriemodulen.&lt;br /&gt;
* Interrupt-Flags müssen in der ISR selber gelöscht werden&lt;br /&gt;
* Forum zu [http://www.mikrocontroller.net/topic/175888 Interrupts vs. Events]&lt;br /&gt;
&lt;br /&gt;
=== Errata vom STM32F4xx die nicht im Errata von ST stehen ===&lt;br /&gt;
* [http://www.mikrocontroller.net/topic/267439#2788478 Aktivieren von DMA], wenn mehr als 3 DMA Kanäle aktiviert werden, kann es sein dass die nicht alle korrekt bedient werden. Auch klappt der DMA mit dem FSMC nicht immer zuverlässig. [https://my.st.com/public/STe2ecommunities/mcu/Lists/cortex_mx_stm32/Flat.aspx?RootFolder=%2Fpublic%2FSTe2ecommunities%2Fmcu%2FLists%2Fcortex_mx_stm32%2FWarning%20limit%20simultaneous%20DMAs%20to%202&amp;amp;FolderCTID=0x01200200770978C69A1141439FE559EB459D7580009C4E14902C3CDE46A77F0FFD06506F5B&amp;amp;currentviews=811 siehe hier] [http://blog.frankvh.com/2012/01/13/stm32f2xx-stm32f4xx-dma-maximum-transactions/ und hier]&lt;br /&gt;
* [http://www.mikrocontroller.net/topic/260637#2700761 Nerviger Bug in &amp;quot;stm32f4xx.h&amp;quot;] Änderung Struktur GPIO_TypeDef&lt;br /&gt;
* [http://www.mikrocontroller.net/topic/261690#2714754 Batterie wird leer gezogen], nur bei manchen Chips mit Rev. A&lt;br /&gt;
* [http://www.efton.sk/STM32/STM32F4xx_doc_errors.txt Liste von Dokumentations-Fehlern]&lt;br /&gt;
&lt;br /&gt;
== Bezugsquellen ==&lt;br /&gt;
&lt;br /&gt;
=== Controller ===&lt;br /&gt;
&lt;br /&gt;
Versand Europaweit im endasmedia.ch Shop&lt;br /&gt;
* STM32F105 Controller für 2.50€ [http://shop.endasmedia.ch/index.php?id_product=8&amp;amp;controller=product&amp;amp;id_lang=1 shop.endasmedia.ch]&lt;br /&gt;
&lt;br /&gt;
Versandhäuser für Privatpersonen&lt;br /&gt;
* [http://www.reichelt.de/STM-Controller/2/index.html?;ACTION=2;LA=2;GROUPID=2950; Reichelt]&lt;br /&gt;
* [http://darisusgmbh.de/shop/index.php?cat=c2692_ARM-Cortex.html Darisus]&lt;br /&gt;
* [http://www.hbe-shop.de HBE (Farnell Programm für Private)] &lt;br /&gt;
* [http://www.sander-electronic.de/be00069.html Sander]&lt;br /&gt;
* [http://www.tme.eu/de/katalog/index.phtml#cleanParameters%3D1%26search%3DSTM32F10%26bf_szukaj%3D+ TME] &lt;br /&gt;
* [http://teske-electronics.de/index.php?cPath=3_9_53 Teske electronics]&lt;br /&gt;
* [http://de.rs-online.com/web/c/halbleiter/prozessoren-und-mikrocontroller/mikrocontroller/?sort-by=default&amp;amp;sort-order=default&amp;amp;applied-dimensions=4294417325&amp;amp;lastAttributeSelectedBlock=4294425895 RS-Online]&lt;br /&gt;
&lt;br /&gt;
Gewerblich liefern natürlich viele wie EBV, [http://de.futureelectronics.com Future Electronics], Mouser, Farnell, Digikey usw...&lt;br /&gt;
&lt;br /&gt;
=== Evaluation Boards ===&lt;br /&gt;
* Siehe [[:Kategorie:ARM-Boards]]&lt;br /&gt;
* [http://shop.embedded-projects.net/index.php?module=artikel&amp;amp;action=gruppe&amp;amp;id=14 Im Shop von Embedded Projects]&lt;br /&gt;
* [http://www.watterott.com/de/Boards-Kits/ARM/ARM-Cortex-M3 Cortex M3 bei Watterott]&lt;br /&gt;
* [http://www.raisonance.com/~primer-starter-kits__microcontrollers__tool~tool__T018:4enfvamuxbtp.html Primer und Primer2 von Raisonance]&lt;br /&gt;
* [http://www.sander-electronic.de/es0028.html Sander Electronic]&lt;br /&gt;
* [http://www.mikrocontroller.net/articles/MP32F103-Stick:_Ein_Mini-Mikrocontroller-Board_mit_USB_und_bis_zu_4MB_Datenspeicher Artikel im Wiki, ARM mit USB und 4MB Speicher]&lt;br /&gt;
* [http://www.futurlec.com/STM32_Development_Board.shtml Futurlec Evalboard, ebenso Header-Board]&lt;br /&gt;
* [http://www.propox.com/products/t_174.html Propox, Header-Boards für 103R und 103V sowie Trägerplatine dafür]&lt;br /&gt;
* [http://www.mikrocontroller.net/articles/Cortex_M3_OCM3U Cortex M3 Artikel im Wiki]&lt;br /&gt;
* [http://olimex.com/dev/index.html STM32 bei Olimex]&lt;br /&gt;
* [http://de.farnell.com/jsp/displayProduct.jsp?sku=1824325&amp;amp;action=view&amp;amp;CMP=GRHS-1000962 STM32Discovery bei Farnell] Mikrocontroller Board (STM32F100RBT6B) mit onboard USB-Programming Interface für ca. 12,50€&lt;br /&gt;
* [http://www.de.rs-online.com/web/p/products/7458434/ STM32Discovery bei RS-Components] 12,65 € +MwSt.&lt;br /&gt;
* [http://www.segor.de/#Q=STM32 VL DISCOVERY] STM32 Discovery bei Segor&lt;br /&gt;
* [http://www.watterott.com/de/STM32F4Discovery STM32F4DISCOVERY] STM32F4 Cortex M4 Controller mit JTAG-Debugger auf der Platine bei Watterott für 16,66EUR.&lt;br /&gt;
* [http://www.conrad.de/ce/de/product/443910/ STM32F4 Discovery Kit bei Conrad] 17,11 €&lt;br /&gt;
* [http://www.ST.com/stm32l152c-discovery STM32 L1 Discovery] mit kleiner LCD-Anzeige; [http://www.ST.com/web/en/catalog/tools/PF250990 Weitere Informationen dazu]&lt;br /&gt;
* [http://www.mcu-raisonance.com/~open4-development-platform__microcontrollers__tool~tool__T018:g65gu6ghg2n.html/ Open 4 oder auch genannt Evo-Primer]&lt;br /&gt;
* [http://www.wayengineer.com/index.php?main_page=index&amp;amp;cPath=50_66&amp;amp;page=1&amp;amp;sort=3a WayEngineer]&lt;br /&gt;
* [http://thinkembedded.ch/ST-STMicroelectronics:::24.html Im Thinkembedded Shop] in der Schweiz / DiscoveryF4, div. ETT und Olimex Boarde ab 20,18 CHF / 16,15 EUR (inkl. MwSt.) zzgl. Versandkosten&lt;br /&gt;
* [http://shop.myavr.de/ARM-Produktlinie/STM32F4-Discovery.htm?sp=article.sp.php&amp;amp;artID=200072 Im myAVR Shop] DiscoveryF4 mit möglichem Zubehör 16,45 EUR (inkl. MwSt.) zzgl. Versandkosten&lt;br /&gt;
* [http://www.keil.com/boards/cortexm.asp Keil/ARM Demoboards]&lt;br /&gt;
* [http://www.phytec.de Phytec]&lt;br /&gt;
* [http://shop.myavr.de/index.php?sp=artlist_kat.sp.php&amp;amp;katID=37 verschiedene ARM Produkte und Erweiterungen bei myAVR]&lt;br /&gt;
* [http://re.reworld.eu/de/produkte/s64dil-405/index.htm S64DIL-405 STM32Fxxx ARM Cortex M3 Mikrocontrollermodul mit USB-Schnittstelle, Steckbretttauglich] (Leerplatine eignet sich auch für STM32F1xx Prozessoren.)&lt;br /&gt;
* [http://www.amazon.de/STM32F4-DISCOVERY-STM32F429-Cortex-M4-Development/dp/B00HGG0KHY STM32F429 DISCOVERY Cortex M4 mit 2,4&amp;quot; Touch-TFT, 3-Achs Sensor, 64 MBit SDRAM ab ~25 EUR bei Amazon, Ebay u.a.]&lt;br /&gt;
&lt;br /&gt;
== Weblinks, Foren, Communities, Tutorials ==&lt;br /&gt;
* [http://www.mikrocontroller.net/articles/STM32_-_Einstieg_mit_Em::Blocks STM32 - Einstieg mit Em::Blocks Tutorial]&lt;br /&gt;
* [http://www.mikrocontroller.net/topic/173753 Diskussion zum Artikel]&lt;br /&gt;
* [http://www.mikrocontroller.net/forum/mikrocontroller-elektronik?filter=ARM*+STM32*+Cortex* Suche im Forum]&lt;br /&gt;
* [[STM32 für Einsteiger]]&lt;br /&gt;
* [[STM32 CooCox Installation]]&lt;br /&gt;
* [https://my.st.com/public/STe2ecommunities/mcu/Lists/ARM%20CortexM3%20STM32/AllItems.aspx Forum auf der ST Homepage] &lt;br /&gt;
* [http://www.stm32circle.com/hom/index.php STM32 Community] &lt;br /&gt;
*[http://joe-c.de/pages/posts/einstieg_mikrocontroller_stm32f103_101.php Einstieg:  STM32board mit Kamera (deutsch)] &lt;br /&gt;
* [http://www.ebv.com/fileadmin/products/Press_Print/Brochures/Product_Brochures/EBV_Cortex%20Collection_V2.pdf Übersicht der Cortex Prozessoren und deren Hersteller (nicht nur ST, von EBV)]&lt;br /&gt;
* [http://www.mikrocontroller.net/topic/258652 Tutorial]&lt;br /&gt;
* [http://diller-technologies.de/stm32_wide.html STM32 Tutorial in Deutsch von Diller Technologies]&lt;br /&gt;
* [http://mySTM32.de STM32 C und C++ Tutorial in Deutsch ]&lt;br /&gt;
* [http://mikrocontroller.bplaced.net STM32F4 Quellcode-Librarys und CooCox-Projekte in Deutsch ]&lt;br /&gt;
* [http://myugl.de Tutorial für Grafik-Librarys und SiSy-Projekte in Deutsch ]&lt;br /&gt;
* [http://www.st.com/web/en/catalog/tools/FM147/CL1794/SC961/SS1533/PF251717 MicroXplorer MCU graphical configuration tool ]&lt;br /&gt;
* [http://www.harerod.de/CoreMark_STM32.pdf Testbericht über CoreMark 1.0 auf Cortex-M3/M4 mit verschiedenen Compiler- und MCU-Einstellungen]&lt;br /&gt;
* [http://klaus4.blogspot.com/2014/05/stm32f4-discovery-mit-opensource.html STM32-Toolchain mit Eclipse CDT 4.3, GnuArmEclipse, OpenOCD 0.8.0, Gnu Arm GCC 4.8, STM32CubeMX]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;br /&gt;
[[Kategorie:ARM]]&lt;br /&gt;
[[Kategorie:STM32]]&lt;br /&gt;
[[Kategorie:Mikrocontroller]]&lt;/div&gt;</summary>
		<author><name>Promeus</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=PIC&amp;diff=92259</id>
		<title>PIC</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=PIC&amp;diff=92259"/>
		<updated>2016-03-07T20:11:27Z</updated>

		<summary type="html">&lt;p&gt;Promeus: Na&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Ein PIC ist ein [[Mikrocontroller]] der Firma Microchip. Zu aller erst möchte ich die Aufteilung der PICs veranschaulichen. Die PIC-Familien werden fast immer wie folgt bezeichnet: als Beispiel „PIC18“ oder „18er PIC“ bedeutet, es handelt sich um ein PIC18Fxxxx Microcontroller. Alle PICs haben die [[Harvard-Architektur]]. Es können auch alle PICs mittels dem ICSP-Adapter programmiert werden. ICSP steht für In-Ciruit-Serial-Programmer, also ist mittels diesem Anschluss ein brennen möglich, wenn der PIC schon in der Schaltung eingebaut ist. Zudem haben alle PICs, wie auch Microcontroller anderer Hersteller, interne Module. Ein Modul übernimmt eine spezielle Aufgabe, die von der Software nur konfiguriert und nicht zusätzlich ausgeführt wird. Ein Beispiel ist das PWM-Modul. Man kann eine PWM mit der Software generieren (SoftPWM), aber einfacher geht es mit dem Modul, dass nur konfiguriert werden muss. Die Ausgabe der PWM erfolgt anschließend allein durch das Modul und nicht der Software. Da die PICs aber sonst sehr unterschiedlich sind, sollten sie getrennt aufgeführt werden. Grob unterteilt werden sie anhand ihrer Datenbreite.&lt;br /&gt;
&lt;br /&gt;
== 8 Bit ==&lt;br /&gt;
&lt;br /&gt;
Die 8 Bit Microcontroller-Familien sind &#039;&#039;&#039;PIC10, PIC12, PIC16 und PIC18&#039;&#039;&#039;. Bei den 8-bittigen PICs gibt es einmal den Buchstaben „F“ hinter der Familienbezeichnung und den Buchstaben „C“. Die mit einem „F“ in der Bezeichnung haben einen [http://www.mikrocontroller.net/articles/Flash-ROM Flash]-Programmspeicher, dieser ist somit mehrmals beschreibbar. Das „C“ bedeutet, dass der Programmspeicher entweder ein [http://www.mikrocontroller.net/articles/OTP-ROM OTP]-Speicher (One-Time-Programable – Nur ein mal beschreibbar), oder aber ein [[EPROM]]-Speicher ist, den man nur mit Hilfe von UV-Licht löschen kann. Aus diesem Grund sind die „C“-Varianten uninteressant für Hobby-Elektroniker, zudem sind die C-Varianten ziemlich alt und sogut wie alle PICs sind ausschließlich mit Flash-Speicher verfügbar. Die Typen der Familien haben unterschiedliche Ausstattung, dennoch kann man sagen, je höher die Zahl, desto Leistungsfähiger ist der PIC. Jedoch: Ein Typ der PIC10 Familie mag zwar deutlich schwächer sein, als ein PIC18, dafür gibt es den PIC10 in einem SOT23-Gehäuse, wohingegen der kleinste PIC18 ein SOIC18 ist. Zudem ist der PIC10 billiger, als ein PIC18. Es kommt also immer auf den Anwendungsfall an.&lt;br /&gt;
&lt;br /&gt;
8 Bit PICs können folgendes beinhalten:&lt;br /&gt;
* bis zu 128k [[Byte]] ROM&lt;br /&gt;
* bis zu 4k [[Byte]] [[RAM]]&lt;br /&gt;
* bis zu 1024 [[Byte]] [[EEPROM]]&lt;br /&gt;
* 6 bis 100 Pins / 4 bis 70 IOs&lt;br /&gt;
* Internen Oscillator&lt;br /&gt;
* 8/10/12-bit [[ADC]]&lt;br /&gt;
* 5/8-bit [[DAC]]&lt;br /&gt;
* [[SPI]]&lt;br /&gt;
* [http://www.mikrocontroller.net/articles/I2C I²C]&lt;br /&gt;
* [[UART]]&lt;br /&gt;
* [[CAN]]&lt;br /&gt;
* [[USB]]&lt;br /&gt;
* [[PWM]]&lt;br /&gt;
* [[Komparator]]&lt;br /&gt;
* [[Opamp]]&lt;br /&gt;
* 8x8 Hardware Multiplier&lt;br /&gt;
* CTMU (Charge Time Measurement Unit, für Cap-Touch-Anwendungen)&lt;br /&gt;
* [http://de.wikipedia.org/wiki/Ethernet Ethernet]&lt;br /&gt;
&lt;br /&gt;
Eine Sonderform der 8 Bit Microcontroller ist der rfPIC12F675. Dieser ist extra für RF, also Funkanwendungen ausgelegt und besitzt einen internen [http://de.wikipedia.org/wiki/Dezimeterwelle UHF] [http://de.wikipedia.org/wiki/Amplitude_Shift_Keying ASK]/[http://de.wikipedia.org/wiki/Frequenzumtastung FSK] Transmitter. Eine weitere Sonderform ist der PIC16HV785, der kompatibel zum PIC16F785 ist. Allerdings geht der Spannungsbereich von 2V bis hin zu 15V. Somit kann man diesen auch direkt in ein 12V-System stecken und spart sich ggf. Levelshifter und Spannungsregler. Eine detailiertere Übersicht findet man auf der [http://www.microchip.com/en_US/family/8bit/architecture/ Microchip-Seite] und eine Liste aller Typen ist für jede Familie verfügbar: [http://www.microchip.com/ParamChartSearch/chart.aspx?branchID=1009&amp;amp;mid=10&amp;amp;lang=en&amp;amp;pageId=74 PIC10], [http://www.microchip.com/ParamChartSearch/chart.aspx?branchID=1001&amp;amp;mid=10&amp;amp;lang=en&amp;amp;pageId=74 PIC12], [http://www.microchip.com/ParamChartSearch/chart.aspx?branchID=1002&amp;amp;mid=10&amp;amp;lang=en&amp;amp;pageId=74 PIC16], [http://www.microchip.com/ParamChartSearch/chart.aspx?branchID=1004&amp;amp;mid=10&amp;amp;lang=en&amp;amp;pageId=74 PIC18].&lt;br /&gt;
&lt;br /&gt;
== 16 Bit ==&lt;br /&gt;
Die Vertreter der 16 Bit Microcontroller sind &#039;&#039;&#039;PIC24E, PIC24F, PIC24H, dsPIC30F, dsPIC33E, dsPIC33F&#039;&#039;&#039;. Trotz dessen nicht überall ein „F“ in der Bezeichnung ist, haben diese Familien dennoch einen Flash-Speicher. Die dsPICs haben, wie der Name schon vermuten lässt, eine zusätzliche [[DSP]]-Einheit, die extra für komplexere Berechnungen wie [http://de.wikipedia.org/wiki/Schnelle_Fourier-Transformation FFT] oder [http://de.wikipedia.org/wiki/Digitales_Filter Digital-Filter] benutzt werden können. &lt;br /&gt;
&lt;br /&gt;
16 Bit PICs können folgendes beinhalten:&lt;br /&gt;
* bis zu 70 [[MIPS]]&lt;br /&gt;
* bis zu 536k [[Byte]] Rom&lt;br /&gt;
* bis zu 96k [[Byte]] Ram&lt;br /&gt;
* bis zu 4k [[Byte]] [[EEPROM]]&lt;br /&gt;
* 14 bis 144 Pins / 12 bis 122 IOs&lt;br /&gt;
* “Single Cycle” Multiplikation 16x16 und 32/16 sowie 16/16 Division&lt;br /&gt;
* bis zu 32 Channel 10/12-bit [[ADC]]&lt;br /&gt;
* 10/16-bit [[DAC]]&lt;br /&gt;
* Digital Power, Motor Control und Audio Peripherals&lt;br /&gt;
* [http://www.mikrocontroller.net/articles/I2C I²C]&lt;br /&gt;
* [[SPI]]&lt;br /&gt;
* [[CAN]]&lt;br /&gt;
* [[PWM]]&lt;br /&gt;
* PMP (Parallel Master Port)&lt;br /&gt;
* [[USB]]-OTG&lt;br /&gt;
* CTMU&lt;br /&gt;
* [http://de.wikipedia.org/wiki/Echtzeituhr RTCC] (Real Time Clock&amp;amp;Calendar)&lt;br /&gt;
* [[DMA]] Channels für schnelleren Datentransfer&lt;br /&gt;
&lt;br /&gt;
Die Übersicht ist wieder unter der [http://www.microchip.com/en_US/family/16bit/architecture/ Microchip-Seite] zu finden und auch hier gibt es die Typenlisten für die Familien [http://www.microchip.com/ParamChartSearch/chart.aspx?branchID=8187&amp;amp;mid=14&amp;amp;lang=en PIC24E], [http://www.microchip.com/ParamChartSearch/chart.aspx?branchID=8181&amp;amp;mid=14&amp;amp;lang=en&amp;amp;pageId=75 PIC24F]&lt;br /&gt;
[http://www.microchip.com/ParamChartSearch/chart.aspx?branchID=8186&amp;amp;mid=14&amp;amp;lang=en&amp;amp;pageId=75 PIC24H], [http://www.microchip.com/ParamChartSearch/chart.aspx?branchID=8182&amp;amp;mid=14&amp;amp;lang=en&amp;amp;pageId=75 dsPIC30F], [http://www.microchip.com/ParamChartSearch/chart.aspx?branchID=8188&amp;amp;mid=14&amp;amp;lang=en dsPIC33E], [http://www.microchip.com/ParamChartSearch/chart.aspx?branchID=8183&amp;amp;mid=14&amp;amp;lang=en&amp;amp;pageId=75 dsPIC33F].&lt;br /&gt;
&lt;br /&gt;
== 32 Bit ==&lt;br /&gt;
Der 32 Bit Microcontroller hat nicht mehr viel mit den anfänglichen PICs gemeinsam. Er besitzt einen „MIPS M4K“-Kern aber ist trotzdem Pin-Kompatibel zu den 16 Bit PICs. Die Typen der PIC32-Familie unterstützen zusätzlich das [[JTAG]]-Interface. Es wurde außerdem auf PIC32-Basis eine [http://de.wikipedia.org/wiki/Arduino-Plattform Arduino]-Alternative entwickelt, die dadurch deutlich leistungsfähiger ist. Genannt wurde dies „chipKIT“ und ist im Moment in 2 Varianten verfügbar. Die Entwicklungsumgebung für die chipKITs basiert auf der Arduino-Software und somit sollen auch alle für den Arduino programmierten Progamme auf dem chipKIT laufen. Es gibt auch PIC32er im DIP-Gehäuse. Somit kann man auch den 32bit Microcontroller von Microchip auf z.B. eine Lochrasterkarte bringen und hat nicht soviele (evtl sogar überflüssige) Pins, wie in den kleinen TQFP/N- oder BGA-Gehäusen.&lt;br /&gt;
&lt;br /&gt;
32 Bit PICs können folgendes beinhalten:&lt;br /&gt;
* 80 MHz, 1.56 DMIPS/MHz&lt;br /&gt;
* bis zu 512k [[Byte]] Rom&lt;br /&gt;
* bis zu 128k [[Byte]] Ram&lt;br /&gt;
* Full-speed [[USB]] Host/Device/OTG&lt;br /&gt;
* 10/100 [http://de.wikipedia.org/wiki/Ethernet Ethernet] MAC mit MII/RMII Interfaces&lt;br /&gt;
* [[CAN]] 2.0B&lt;br /&gt;
* [[UART]]&lt;br /&gt;
* [http://www.mikrocontroller.net/articles/I2C I²C]&lt;br /&gt;
* [[SPI]]&lt;br /&gt;
* bis zu 8 Channel [[DMA]]&lt;br /&gt;
* Analoger [[Komparator]]&lt;br /&gt;
* [[PWM]]&lt;br /&gt;
* 16-Channel 10bit [[ADC]]&lt;br /&gt;
* [http://de.wikipedia.org/wiki/Echtzeituhr RTCC]&lt;br /&gt;
&lt;br /&gt;
Die Übersicht ist wieder unter der [http://www.microchip.com/en_US/family/32bit/architecture/ Microchip-Seite] zu finden und auch hier gibt es eine Typenliste für die Familie: [http://www.microchip.com/ParamChartSearch/chart.aspx?branchID=211&amp;amp;mid=10&amp;amp;lang=en&amp;amp;pageId=74 PIC32MX].&lt;br /&gt;
&lt;br /&gt;
Neu hinzugekommen ist die Serie PIC32MZXXX mit u. a. folgenden wichtigen Neuerungen zu den bestehenden&lt;br /&gt;
PIC32MX:&lt;br /&gt;
* 200 MHz / 330DMIPS&lt;br /&gt;
* teilweise mit FPU (FloatingPointUnit)&lt;br /&gt;
* bis zu 2MB Flash&lt;br /&gt;
* bis zu 512K RAM&lt;br /&gt;
* EBI (External Bus Interface)&lt;br /&gt;
* SQI (Serial Quad Interface)&lt;br /&gt;
* crypto engine&lt;br /&gt;
&lt;br /&gt;
== Dokumentation ==&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;
== Compiler und IDE ==&lt;br /&gt;
=== MPLAB ===&lt;br /&gt;
&lt;br /&gt;
MPLAB ist die freie [http://de.wikipedia.org/wiki/Integrierte_Entwicklungsumgebung IDE] von Microchip und unterstützt von vornherein alle Brenner, Debugger, Emulatoren von Microchip. Zudem kann das Programm in der IDE per Software emuliert werden. Um Programme in [[C]] zu schreiben, können [[C]]-[[Compiler]], sofern die Software das unterstützt, in die [http://de.wikipedia.org/wiki/Integrierte_Entwicklungsumgebung IDE] eingebettet werden, wie z.B. der HI-TECH C-Compiler. Genaueres kann man auf der [http://www.microchip.com/stellent/idcplg?IdcService=SS_GET_PAGE&amp;amp;nodeId=1406&amp;amp;dDocName=en019469 Microchip-Seite] anschauen.&lt;br /&gt;
&lt;br /&gt;
=== MPLAB X ===&lt;br /&gt;
MPLAB X ist ist eine Weiterentwicklung von MPLAB. Es beinhaltet alle Funktionen von MPLAB (v8). Jedoch wurde die Software komplett neu gestaltet. Vom Simulator bis zum Projektmanagement ist alles modernisiert worden. MPLAB X ist für alle gängigen Betriebssysteme erhältlich (Windows, Linux und OS X).&lt;br /&gt;
Weitere Informationen findet man auf der [http://www.microchip.com/pagehandler/en-us/family/mplabx/ Produktseite von MPLAB X].&lt;br /&gt;
&lt;br /&gt;
=== C-Compiler ===&lt;br /&gt;
Microchip bietet direkt [[C]]-[[Compiler]] an. Diese wären C18 (für PIC18 Typen), C30 (für 16bit Typen) und C32 (für 32bit Typen). Diese [[Compiler]] können als nicht-kommerzielle Freeware-Version heruntergeladen werden. Dabei wird nach einer gewissen Zeit die Optimierung eingeschränkt. Diese ist für Hobby-Bastler allerdings nicht unbedingt kritisch. Da die [[C]]-[[Compiler]] C30 und C32 von Microchip auf Open-Source aufbauen, sollte der Sourcecode direkt von deren Seite heruntergeladen und die Aufhebung entfernt werden können (sofern man die Möglichkeit hat, die Software danach wieder zu kompilieren).&lt;br /&gt;
Es gibt auch andere [[Compiler]], wie z.B. der [[C]]-[[Compiler]] von HI-TECH.&lt;br /&gt;
Andere wären noch CC5X oder Compiler der Firma mikroElektronika. Letzterer unterstützt nicht nur alle PICs, sondern ist auch für [[AVR]]s, [[8051]]er und [[ARM]] Microcontroller, sowie jeweils auch in [[Basic]] und [http://de.wikipedia.org/wiki/Pascal_%28Programmiersprache%29 Pascal] erhältlich. MikroE-Compiler, sowie der CC5X sind in der Freeware-Version allerdings Codegrößenbegrenzt, was gerade bei 16bit oder 32bit PICs schnell eng werden kann.&lt;br /&gt;
&lt;br /&gt;
Mit der Einführung von MPLAB X wurden auch die neuen [http://www.microchip.com/pagehandler/en_us/promo/mplabxc/ XC] Compiler von Microchip veröffentlicht. XC8 für 8Bit PICs, XC16 für [[PIC24]] und [[dsPIC]]s und XC32 für [[PIC32]] Mikrocontroller. Auch hier sind Free-Versionen erhältlich.&lt;br /&gt;
&lt;br /&gt;
Ein Vergleich einiger C-Compiler ist in diesem Artikel zu sehen:&lt;br /&gt;
[[PIC C-Compilervergleich]]&lt;br /&gt;
&lt;br /&gt;
== Programmiergeräte ==&lt;br /&gt;
Um das Programm auf einen PIC zu bekommen, muss dieses per Gerät auf den PIC „gebrannt“ werden. Microchip bietet dazu das PICKIT2 und PICKIT3 an. Das PICKIT3 ist das aktuellere, was bedeutet, dass Firmwareupdates hauptsächlich für diese Version entwickelt werden. Spürbar ist das jetzt schon bei den PIC32MX, die nur vom PICKIT3 unterstützt werden. Wenn man aber kein PIC32 benutzen möchte, kann man bis jetzt aber auch noch zum PICKIT2 greifen, das zusätzlich noch als kleiner Logik-Analyzer dienen kann. Das nächst bessere, was Microchip bietet, ist ein ICD (In-Circuit-Debugger), das eine erweiterte Debuggermöglichkeit bietet. Das „Flagschiff“ ist der REAL-ICE (In-Circuit-Emulator), der zusätzlich noch in der Hardware emulieren kann. Eine Übersicht ist [http://www.microchip.com/stellent/idcplg?IdcService=SS_GET_PAGE&amp;amp;nodeId=2519&amp;amp;param=en534451&amp;amp;page=wwwdevMPLABEmulatorDebuggers hier] zu sehen.&lt;br /&gt;
&lt;br /&gt;
Wie für andere Microcontroller, gibt es auch für den PIC Selbstbaubrenner. Der wohl Bekannteste ist der [http://sprut.de/electronic/pic/brenner/ Brenner8] von der [http://sprut.de Sprut-Seite]. Doch allgemein gilt für Third-Party-Brenner: Es werden neue Microcontroller-Typen, wenn überhaupt, erst später unterstützt, als bei einem originalen Brenner und es führt zu zusätzlichen, möglichen Fehlerquellen durch den Bau. Denn wer kommt schon auf die Idee den Fehler im Brenner zu suchen und nicht in der Schaltung. Hier im Forum sind schon mehrere solcher Fälle vorgekommen. Außerdem bekommt man das &amp;quot;Henne oder Ei&amp;quot;-Problem zu spüren, denn für den Brenner8 muss man einen PIC18 brennen, d.h. man muss sich irgendwo seinen PIC brennen lassen, bevor man es selbst tun kann. Zudem wird nicht jeder bzw. kaum ein Selbst-Bau-Brenner von der IDE unterstützt, was bedeutet, dass man mindestens 2 Programme braucht - Eine zum brennen und eine zum programmieren. Der Brenner8 unterstützt auch kein Debugging, wie es das PICKIT3 jedoch tut. Die Hilfestellung bei einem verbreitetem Programmiergerät ist selbstverständlich besser als bei einem opensource Selbsbau-Brenner. Zudem wird so ein Brenner und die Software meist von einer Einzelperson gepflegt. Dies bedeutet aber auch, dass die Updates usw von dieser Person abhängig ist. Fällt dieser aus (Krankheit oder persönliche Gründe), geht erstmal nichts weiter voran. Es muss also jeder selbst abwägen, ob einem das die ca. 10€ weniger Wert ist. Wenn es jemanden darum geht, den Brenner selbst zu bauen, der kann auch das PICKIT2 nachbauen, denn [http://ww1.microchip.com/downloads/en/DeviceDoc/51553E.pdf Schaltplan] (Seite 77+78) und [http://ww1.microchip.com/downloads/en/DeviceDoc/PK2V023200.zip Firmware] sind offen auf der Herstellerseite verfügbar. Hier ist zwar immer noch die mögliche Fehlerquelle beim Zusammenbau vorhanden, jedoch hat man damit einen besseren Brenner. Wenn einem der originale Brenner zu teuer ist, kann man sich bei Ebay auch nach einem Clone vom PICKIT2 oder PICKIT3 umsehen. Diese kosten im Moment zwischen 15€ und 25€.&lt;br /&gt;
&lt;br /&gt;
== Missverständnisse und Eigenheiten ==&lt;br /&gt;
Es gibt einiges, was einen PIC-Neuling abschrecken oder verwirren könnte. Manchmal hört man z.B. dass kaum oder schlechte Peripherie verbaut wurde, wobei dies meist, wenn überhaupt zutreffend, für sehr alte PICs gilt (90er Jahre). Neue PICs habe oft mehr/bessere Peripherie als ATmegas. Es wird auch oft bemängelt, dass der Quarz-Takt bei 8bit PICs durch 4 und bei 16bit PICs durch 2 geteilt wird. Dafür werden so gut wie alle Befehle in einem System-Takt ausgeführt, wo andere mehr brauchen. 8bit PICs gibt es mit bis zu 64MHz (16 MIPS).&lt;br /&gt;
Fallen für Neulinge gibt es nur wenige und unkritische (im Vergleich zum „verfusen“ eines [[AVR]]s). Es muss zum Beispiel bedacht werden, dass, um auf manche Register zugreifen zu können, die Bank gewechselt werden muss - dies macht ein [[C]]-[[Compiler]] aber automatisch. Außerdem muss die geplante Vierteilung von oben bedacht werden, um Zeitschleifen zu berechnen. Verwirrend kann gerade für Leute, die den [[AVR]] gewohnt sind sein, dass das Register zum Konfigurieren der IOs eine 1 für einen Eingang braucht, und keine 0. Doch merken kann man sich, dass die 1 wie ein großes I aussieht und für Input -&amp;gt; Eingang steht. Andersrum steht die 0 für ein großes O wie Output -&amp;gt; Ausgang.&lt;br /&gt;
&lt;br /&gt;
Wer sich hier im Forum schon mal rumgetrieben hat, kann eventuell auch den „kleinen Krieg“ zwischen [[AVR]] und PIC mitbekommen haben. Dazu will ich auch nur sagen, dass an sich jeder Microcontroller seine Daseinsberechtigung hat. Ob PIC oder [[AVR]], ob 8 Bit oder 32 Bit. Deswegen sollte man einfach die Microcontroller ausprobieren und selbst entscheiden. Wenn jemand sich einen, meiner Meinung nach guten Vergleich zwischen [[AVR]] und PIC angucken will, kann sich das -&amp;gt;[http://www.youtube.com/watch?v=DBftApUQ8QI EEVBlog #63]&amp;lt;- Video auf Youtube angucken. Da wird auch erläutert, warum es keinen Grund gibt, einen der beiden Microcontroller zu meiden. Zudem ist es auch etwas unprofessionell, ohne selbst eigene Erfahrung gesammelt zu haben, eine Familie oder sogar einen ganzen Hersteller abzuschreiben.&lt;br /&gt;
&lt;br /&gt;
== Alte und neue PICs ==&lt;br /&gt;
Microchip stellt schon seit Anfang der 90er Microcontroller her. Damals war die Technik logischerweise noch nicht auf dem Stand wie heute. Es wird immer kleiner und dennoch schneller und stromsparender. Doch da manche wohl einfach nicht von den alten PICs loskommen, werden diese Heutzutage auch noch teilweilse eingesetzt. Außerdem gibt es mehrere (oft alte) fertige Projekte, die eben so einen alten PIC verwenden und da viele die Projekte nachbauen und nichts neu programmieren (wollen), sind diese PICs immer wieder oft zu finden. Die neuen PICs sind nicht nur Stromsparender und haben mehr Platz, sondern sind auch noch billiger. Ich hab mal zwei alte/ältere und oft zu findende PICs rausgesucht (PIC16F84A und PIC16F887) und einfach mal mit neuen PICs der selben Pinzahl und Bauform(DIP) verglichen:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ &#039;&#039;&#039;PIC16F84A vs. PIC16F1827&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
! || PIC16F84A || PIC16F1827&lt;br /&gt;
|-&lt;br /&gt;
| ROM/Flash || 1k Word || 4k Word&lt;br /&gt;
|-&lt;br /&gt;
| SRAM || 68 Byte || 384 Byte&lt;br /&gt;
|-&lt;br /&gt;
| EEPROM || 64 Byte || 256 Byte&lt;br /&gt;
|-&lt;br /&gt;
| Pins/IOs || 18/13 || 18/16&lt;br /&gt;
|-&lt;br /&gt;
| Max. Frequenz || 20MHz || 32MHz&lt;br /&gt;
|-&lt;br /&gt;
| Internal Oscillator || - || 32MHz, 32kHz&lt;br /&gt;
|-&lt;br /&gt;
| Comparators || 0 || 2&lt;br /&gt;
|-&lt;br /&gt;
| ADC-Channels || 0 || 12&lt;br /&gt;
|-&lt;br /&gt;
| Communication || - || 1xUART, 2xI²C/SPI&lt;br /&gt;
|-&lt;br /&gt;
| CCP || - || 2xECCP, 2xCCP&lt;br /&gt;
|-&lt;br /&gt;
| Timer || 1x8bit || 4x8bit, 1x16bit&lt;br /&gt;
|-&lt;br /&gt;
| Preis Reichelt (30.03.2012) || 3,15€ || 1,60€&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ &#039;&#039;&#039;PIC16F887 vs. PIC16F1939&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
! || PIC16F887 || PIC16F1939&lt;br /&gt;
|-&lt;br /&gt;
| ROM/Flash || 8k Word || 16k Word&lt;br /&gt;
|-&lt;br /&gt;
| SRAM || 368 Byte || 1024 Byte&lt;br /&gt;
|-&lt;br /&gt;
| EEPROM || 256 Byte || 256 Byte&lt;br /&gt;
|-&lt;br /&gt;
| Pins/IOs || 40/36 || 40/36&lt;br /&gt;
|-&lt;br /&gt;
| Max. Frequenz || 20MHz || 32MHz&lt;br /&gt;
|-&lt;br /&gt;
| Internal Oscillator || 8MHz, 32kHz || 32MHz, 32kHz&lt;br /&gt;
|-&lt;br /&gt;
| Comparators || 2 || 2&lt;br /&gt;
|-&lt;br /&gt;
| ADC-Channels || 14 || 14&lt;br /&gt;
|-&lt;br /&gt;
| Communication || 1xUART, 1xI²C/SPI || 1xUART, 1xI²C/SPI&lt;br /&gt;
|-&lt;br /&gt;
| CCP || 1xECCP, 1xCCP || 3xECCP, 2xCCP&lt;br /&gt;
|-&lt;br /&gt;
| Timer || 2x8bit, 1x16bit || 4x8bit, 1x16bit&lt;br /&gt;
|-&lt;br /&gt;
| Preis Reichelt (30.03.2012)|| 2,65€ || 2,15€&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Hier sieht man gerade bei dem verbreitetem PIC16F84A, dass dieser aus heutiger Sicht total klein, schlecht und dafür überteuert ist und man für das gleiche Geld 2 bessere bekommt. Der einzige Grund, der für ältere PICs spricht, ist der, dass man eine vorhandene Software benutzen und nicht umschreiben will. Sollte es aber ein neues, eigenes Projekt werden, tut euch einen Gefallen, spart Geld und kauf neue PICs ;)&lt;br /&gt;
&lt;br /&gt;
== Bezugsquellen ==&lt;br /&gt;
&lt;br /&gt;
=== Controller ===&lt;br /&gt;
&lt;br /&gt;
Versandhäuser für Privatpersonen&lt;br /&gt;
* [http://reichelt.de/PIC-Microcontroller/2/index.html?;ACTION=2;LA=2;GROUPID=2961;SHOW=1; Reichelt]&lt;br /&gt;
* [http://de.rs-online.com/web/c/?sra=oss&amp;amp;searchTerm=pic&amp;amp;x=0&amp;amp;y=0 RS-Online]&lt;br /&gt;
* [https://www.distrelec.de/ishopWebFront/search/luceneSearch.do?dispatch=show&amp;amp;fromCatalog=true&amp;amp;filterHierarchyNodeId=178072&amp;amp;filterHierarchyLevel=5&amp;amp;hierarchyDepth=0&amp;amp;autoAttributeEnabled=false Distrelec]&lt;br /&gt;
&lt;br /&gt;
=== Evaluation Boards ===&lt;br /&gt;
&lt;br /&gt;
* [http://de.farnell.com/jsp/search/browse.jsp?N=2008+202682&amp;amp;Ntk=gensearch&amp;amp;Ntt=pic&amp;amp;Ntx=mode+matchallpartial Farnell] Microchip Boarde&lt;br /&gt;
* [http://thinkembedded.ch/PIC:::12.html Thinkembedded Webshop] Olimex Boarde&lt;br /&gt;
* [http://www.futurlec.com/Boards.shtml Futurelec]&lt;br /&gt;
* [http://pic-projekte.de/wordpress/?p=653 StartPIC18]&lt;br /&gt;
&lt;br /&gt;
== Links und Literatur ==&lt;br /&gt;
* [http://www.microchip.com/ Microchip Homepage]&lt;br /&gt;
* [http://www.htsoft.com/ Hi-TECH Homepage]&lt;br /&gt;
* [http://www.bknd.com/cc5x/ CC5X Homepage]&lt;br /&gt;
* [http://www.mikroe.com/eng/home/index MikroElektronika Homepage]&lt;br /&gt;
* [http://pic-projekte.de/phpBB3/ PIC-Forum (deutsch)]&lt;br /&gt;
* [http://sprut.de/ Sprut Homepage]&lt;br /&gt;
* [http://pic-projekte.de/ Tutorials (PIC/C) und PIC-Forum]&lt;br /&gt;
* [http://sprut.de/electronic/pic/projekte/brenner8/index.htm Brenner8 Projektseite]&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Mikrocontroller]]&lt;br /&gt;
[[Kategorie:PIC| ]]&lt;/div&gt;</summary>
		<author><name>Promeus</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=Word_Clock_Variante_1_-_getrennte_Steuerplatine&amp;diff=92159</id>
		<title>Word Clock Variante 1 - getrennte Steuerplatine</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=Word_Clock_Variante_1_-_getrennte_Steuerplatine&amp;diff=92159"/>
		<updated>2016-03-01T14:44:09Z</updated>

		<summary type="html">&lt;p&gt;Promeus: /* Anschluss eines DCF77-Moduls */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Überblick =&lt;br /&gt;
&lt;br /&gt;
[[Datei:wordclock-frontplatte-v2.png| |WordClock]]&lt;br /&gt;
&lt;br /&gt;
Diese Seite dient nur noch der Referenz für die ältere Variante mit getrennter Steuer- und Anzeigeplatine.&lt;br /&gt;
Themen, die beide Varianten gemeinsam betreffen werden im Hauptartikel [1] gepflegt.&lt;br /&gt;
&lt;br /&gt;
Links zum Hauptartikel [1], zur Variante 2 [2] zum langen Thread [3] mit dem hier alles angefangen hat und zum Original [4], das alle hier inspiriert hat.&lt;br /&gt;
&lt;br /&gt;
[1] [[Word Clock]]&amp;lt;br&amp;gt;&lt;br /&gt;
[2] [[Word Clock Variante 2]]&amp;lt;br&amp;gt;&lt;br /&gt;
[3] [http://www.mikrocontroller.net/topic/156661 Beitrag: Brauche Hilfe beim Bau einer Uhr]&amp;lt;br&amp;gt;&lt;br /&gt;
[4] [http://www.clocktwo.com http://www.clocktwo.com]&amp;lt;br&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
= WordClock FAQ =&lt;br /&gt;
Häufig tauchen im Forum Fragen zum WordClock Projekt auf (was brauche ich..., wie mache ich...), die schon mehrmals beantwortet wurden. Hier Für die Variante 1 eine Zusammenfassung der wichtigsten Fragen:&lt;br /&gt;
&lt;br /&gt;
  Q: Was brauche ich alles, um die WordClock (Variante 1) zu bauen?&lt;br /&gt;
  A: - Die Steuerplatine mit der Elektronik&lt;br /&gt;
     - Eine Frontblende (das &amp;quot;Ziffernblatt&amp;quot;)&lt;br /&gt;
     - Leuchtdioden und Platinen für die Anzeige&lt;br /&gt;
     - Eine Zwischenplatte um das Licht zwischen den einzelnen Buchstaben zu trennen&lt;br /&gt;
     - Eine Spannungsversorgung&lt;br /&gt;
     - etwas handwerkliches Geschick&lt;br /&gt;
&lt;br /&gt;
  Q: Kann ich Bauteile der WordClock über Sammelbestellungen billiger bekommen?&lt;br /&gt;
  A: Es wurden in der Vergangenheit (seit Dez.2009) mehrere Sammelbestellungen angeboten. Im einzelnen waren das:&lt;br /&gt;
     - Die [http://www.mikrocontroller.net/articles/Word_Clock_Variante_1#Sammelbestellung_der_Platine Leiterplatte] für die Steuerelektronik (von ukw)&lt;br /&gt;
     - [http://www.mikrocontroller.net/articles/Word_Clock_Variante_1#Sammelbestellung Leuchtdioden mit Streifenplatinen] für die Anzeige (von wawibu / matsch)&lt;br /&gt;
     - Eine Frontblende (Buchstabenmatrix)&lt;br /&gt;
        - aus [http://www.mikrocontroller.net/articles/Word_Clock#Sammelbestellung_.28Plexiglas.29 Plexiglas], schwarz (von ukw)&lt;br /&gt;
        - aus [http://www.mikrocontroller.net/articles/Word_Clock#Sammelbestellung_.28Edelstahl.29 Edelstahl] (von andreasp)&lt;br /&gt;
     - Eine [http://www.mikrocontroller.net/articles/Word_Clock#Zwischenplatte Zwischenplatte] (von wawibu / matsch)&lt;br /&gt;
&lt;br /&gt;
  Q: Kann ich eine fertige Uhr kaufen?&lt;br /&gt;
  A: Ja, beim [http://www.qlocktwo.com/ Hersteller] der Vorlage ;-). Hier im uC.net Forum gibt es nur Tipps und Hilfe zum Selberbauen.&lt;br /&gt;
     Eine komplette WordClock kann man hier NICHT bekommen.&lt;br /&gt;
     ...und etwas einlesen wird auch keinem abgenommen ;-)&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
= Aufbau einer Wordclock =&lt;br /&gt;
Hier gibt es ein von bomibob äußerst kunstvolles Video zum Bau einer Word Clock:&lt;br /&gt;
http://www.youtube.com/watch?v=OYhtc-8StXA&lt;br /&gt;
(zugehöriger Post → http://www.mikrocontroller.net/topic/goto_post/2328168)&lt;br /&gt;
&lt;br /&gt;
Details zu den einzelnen Komponenten sind den entsprechenden Unterpunkten, oder dem Hauptartikel zu entnehmen.&lt;br /&gt;
&lt;br /&gt;
= Elektronik =&lt;br /&gt;
* Atmega168&lt;br /&gt;
* 8Mhz (interner Osc.)&lt;br /&gt;
* 24-Bit-Schieberegister an SPI für 24 Wörter&lt;br /&gt;
* 4 Output-Pins für Minutenanzeige&lt;br /&gt;
* 4 weitere GPOS - für allgemeine Zwecke&lt;br /&gt;
* RGB-Steuerung über PWM gegen GND, d.h. 32x3-Matrix&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
= Schaltung =&lt;br /&gt;
&lt;br /&gt;
[[Datei:wordclock-schmal-schaltung.png|miniatur|Schaltbild V1.0]]&lt;br /&gt;
[[Datei:wordclock-schmal-schaltung-2.0.png|miniatur|Schaltbild V2.0]]&lt;br /&gt;
[[Datei:TSOP-wordclock-1.1.png|miniatur|TSOP17xx in V1.1]]&lt;br /&gt;
[[Datei:RXTX-wordclock-1.1.png|miniatur|Rx/Tx in V1.1 und V2.0]]&lt;br /&gt;
[[Datei:K10-wordclock-2.0.png|miniatur|K10 als I2C in V2.0]]&lt;br /&gt;
[[Datei:K11-wordclock-2.0.png|miniatur|K11 als SPI in V2.0]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Änderungen der Platinen-Version 1.0 gegenüber dem Prototypen:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Pullup-Widerstand R7 am DCF-Anschluss entfällt&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Änderungen der Platinen-Version 1.1 gegenüber 1.0:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Die Tiefpass-Schaltung für den TSOP17xx ist nun korrekt geschaltet. Die Abweichung sieht man rechts im Zusatzschaltbild.&lt;br /&gt;
* Der Verbinder K9 (UART-Anschluss für Debug-Zwecke) hat zwei zusätzliche Pins erhalten, siehe Zusatzschaltbild rechts.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Änderungen der Platinen-Version 2.0 gegenüber 1.1:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Diode D1 entfällt.&lt;br /&gt;
* 6-poliger ISP-Wannenstecker ersetzt 10-poligen Wannenstecker, Vcc nun angeschlossen&lt;br /&gt;
* Neu: Stiftleiste K10 als Anschlüsse für externe I2C-Module, auf der Platine oberhalb der RTC zu finden&lt;br /&gt;
* Neu: Stiftleiste K11 als Anschlüsse für externe SPI-Module, auf der Platine ganz links&lt;br /&gt;
&lt;br /&gt;
Siehe auch untenstehende Zusatzschaltbilder rechts. Die neuen Stiftleisten sind optional, müssen also nicht unbedingt bestückt werden.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Zugehörige Schaltung als PDF&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
* Version 1.0: &#039;&#039;&#039;[[Media:wordclock-schmal.pdf|wordclock-schmal.pdf]]&#039;&#039;&#039;&lt;br /&gt;
* Version 2.0: &#039;&#039;&#039;[[Media:wordclock-schmal-schaltung-2.0.pdf|wordclock-schmal-schaltung-2.0]]&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Sammelbestellung der Platine ==&lt;br /&gt;
&lt;br /&gt;
Stand Dezember 2015:&lt;br /&gt;
&lt;br /&gt;
Ich habe wegen einiger Nachfragen noch Steuerplatinen in begrenzter Stückzahl nachbestellt. Wenn jemand daran interessiert ist, kann er sich bei mir (Benutzer [http://www.mikrocontroller.net/user/show/ukw &#039;&#039;&#039;ukw&#039;&#039;&#039;]) per PN melden.&lt;br /&gt;
&lt;br /&gt;
Kosten pro Platine: 15 EUR zzgl. Versand von 2,00 EUR bei bis zu 4 Stück. Bei mehr als 4 Stück beträgt der Versand 3,00 EUR.&lt;br /&gt;
&lt;br /&gt;
Beispiele:&lt;br /&gt;
&lt;br /&gt;
* 1 Platine: 15 EUR + 2,00 Versand: 17,00 EUR&lt;br /&gt;
* 2 Platinen: 30 EUR + 2,00 Versand: 32,00 EUR&lt;br /&gt;
* ...&lt;br /&gt;
* 5 Platinen: 75 EUR + 3,00 Versand: 78,00 EUR&lt;br /&gt;
&lt;br /&gt;
Parallel zu dieser Sammelbestellung gibt es noch eine neue (kleinere) Sammelbestellung für passende Frontplatten, siehe auch:&lt;br /&gt;
&lt;br /&gt;
[http://www.mikrocontroller.net/articles/Word_Clock#Sammelbestellung_.28Plexiglas.29 Sammelbestellung Frontplatten]&lt;br /&gt;
&lt;br /&gt;
Beim Versand zusammen mit den Frontplatten entfallen natürlich die Versandkosten für die Platinen.&lt;br /&gt;
&lt;br /&gt;
Maße: 146mm x 35,6mm.&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== Reichelt Warenkorb Mono-Variante ==&lt;br /&gt;
Da selbst bei der Mono-Variante der ATmega 88 langsam mehr als eng wird, wurde dieser Warenkorb auch auf den ATmega 168 umgestellt.&lt;br /&gt;
&lt;br /&gt;
Eine vollständige Liste zur Bestellung der nötigen Bauteile ist bei Reichelt abgelegt: &#039;&#039;&#039;[http://www.reichelt.de/?ACTION=20;AWKID=580204;PROVID=2084 Warenkorb-Mono]&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== Reichelt Warenkorb RGB-Variante ==&lt;br /&gt;
Für die RBG-Version wird der ATmega 168 benötigt. Ein angepasster &#039;&#039;&#039;[http://www.reichelt.de/?ACTION=20;AWKID=580197;PROVID=2084 WARENKORB]&#039;&#039;&#039; ist bei Reichelt hinterlegt.&lt;br /&gt;
&lt;br /&gt;
Im Warenkorb befindet sich nun auch der Nachfolger TSOP 31238 des nicht mehr lieferbaren TSOP17xx. ( 15.11.2011 ).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;quot;Beginner-Tipp&amp;quot;: &lt;br /&gt;
&lt;br /&gt;
Der Warenkorb ist eine tolle Vereinfachung der Bestellung. Bevor Ihr jedoch das DCF-77-Modul automatisch mitbestellt, lest bitte mit Hilfe der Suchfunktion das Forum zu diesem Thema durch. Das DCF-77-Modul ist, wie es im Forum so nett formuliert wurde, &amp;quot;ein Sensibelchen&amp;quot;. Es gäbe eine Alternative von C* (siehe Forum). Und um es ganz deutlich zu formulieren: Die Uhr funktioniert auch ohne DCF-77-Modul ganz prima. Sie kann mit der IR-Fernbedienung ganz einfach gestellt werden. Man braucht das Modul nicht wirklich.&lt;br /&gt;
Es befindet sich kein Flachbandkabel im Warenkorb.&lt;br /&gt;
----&lt;br /&gt;
== Reichelt Warenkorb LED Single Board ==&lt;br /&gt;
&lt;br /&gt;
Für das neue SingleBoard (Paket 1) werden zusätzliche Bauteile benötigt. Diese sind in einem eigenen &#039;&#039;&#039;[http://www.reichelt.de/?ACTION=20;AWKID=847662;PROVID=2084 WARENKORB]&#039;&#039;&#039; bei Reichelt hinterlegt.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== Reichelt Warenkorb Pollin DCF Stabilisierungsplatine ==&lt;br /&gt;
&lt;br /&gt;
Teil des Single Boards ist eine Stabilisierungsschaltung für den Pollin DCF Empfänger. Bei Verwendung des Pollin DCF Empfängers wird folgender &#039;&#039;&#039;[http://www.reichelt.de/?ACTION=20;AWKID=986833;PROVID=2084 WARENKORB]&#039;&#039;&#039; zusätzlich benötigt.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;[http://www.pollin.de/shop/dt/NTQ5OTgxOTk-/Bausaetze_Module/Module/DCF_Empfangsmodul_DCF1.html Link]&#039;&#039;&#039; zum DCF-Empfänger bei Pollin.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== Bestückung ==&lt;br /&gt;
&lt;br /&gt;
Hier eine kurze Beschreibung zur Bestückung:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Version 1.0 (schmale Ausführung):&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
[[Datei:Wordclock-schmal.png|miniatur|Bestückte Platine (Version 1.0)]]&lt;br /&gt;
[[Datei:Wordclock-schmal-1.1.png|miniatur|Bestückte Platine (Version 1.1)]]&lt;br /&gt;
[[Datei:Wordclock-schmal-2.0.png|miniatur|Bestückte Platine (Version 2.0)]]&lt;br /&gt;
&lt;br /&gt;
* Oben Mitte: Anschluss für stehende Lithium-Knopfbatterie CR2032 (die drei abgebildeten Stifte sind natürlich nicht notwendig, die Batterie wird direkt eingelötet)&lt;br /&gt;
* Unten 3-polige Stiftleiste: Anschluss für DCF77-Modul&lt;br /&gt;
* Unten 2-polige Stiftleiste: RX &amp;amp; TX (für Testzwecke)&lt;br /&gt;
* Unten rechts: TSOP17XX/SFH5110 für Infrarot-Empfang&lt;br /&gt;
* Darüber: 2-polige Stiftleiste für LDR (Helligkeitsmessung)&lt;br /&gt;
* Oben links und rechts: Wannenstecker für insg. 32 Ausgabekanäle: OUT0-OUT23 (für die Wörter), OUTL1-OUTL4 (für die Minuten) und OUTG1-OUTG4 (für General-Purpose-Ausgabezwecke)&lt;br /&gt;
* Rechts: Anschlussklemmen für Versorgungsspannung 7-20V und die drei PWM-Kanäle Rot, Grün und Blau.&lt;br /&gt;
* Für Atmel Programmer muss der ISP VTG Anschluss (Pin 2) direkt mit der 5V Spannungsversorgung verbunden werden (z.Bsp. Plus Pol von C9).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Version 1.1 (schmale Ausführung):&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Wie 1.0, jedoch hat der Verbinder K9 (UART-Anschlüsse Rx/Tx für Debug-Zwecke) zwei zusätzliche Pins erhalten, siehe abweichendes Bestückungsbild rechts. Belegung von links nach rechts: Vcc / GND / RX / TX&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Version 2.0 (schmale Ausführung):&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Änderungen gegenüber 1.1:&lt;br /&gt;
&lt;br /&gt;
* Diode D1 entfällt&lt;br /&gt;
* 6-poliger statt 10-poliger ISP-Stecker&lt;br /&gt;
* Am ISP-Stecker ist auch Vcc angeschlossen&lt;br /&gt;
* Anschlussmöglichkeit für weitere I2C-Module&lt;br /&gt;
* Anschlussmöglichkeit für weitere Schieberegister über SPI&lt;br /&gt;
&lt;br /&gt;
[[Datei:RXTX-platine-wordclock-1.1.png|miniatur|Rx/Tx in V1.1 und V2.0]]&lt;br /&gt;
&lt;br /&gt;
Der IR-Empfänger TSOP17XX/SFH5110 muss hinter einem nicht benutzten Buchstaben angebracht werden. Deshalb braucht man ihn nicht unbedingt auf die Platine löten, sondern kann ihn auch über ein 3-poliges Kabel mit der Platine verbinden. In diesem Fall sollte der Kondensator C2 nicht auf die Platine, sondern direkt am TSOP17XX/SFH5110 (C2 Minus an Pin 1, C2 Plus an Pin 2) angelötet werden. Bei Verwendung eines SFH5110 Pinbelegung beachten!&lt;br /&gt;
&lt;br /&gt;
Je nach Ort des LDRs (hinter Buchstaben bzw. mit/ohne Dffusor) kann die automatische Helligkeitsregelung unterschiedlich ausfallen. Hier muss man eventuell den Widerstand R6 variieren, wenn das Ergebnis nicht optimal sein sollte.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Bestückung und Anschlüsse&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
[[Datei:Wordclock-schmal-bestueckungsdruck.png|miniatur|Bestückungsaufdruck der Version 1.0]]&lt;br /&gt;
&lt;br /&gt;
[[Datei:Wordclock-schmal-bestueckungsdruck-1.1.png|miniatur|Bestückungsaufdruck der Version 1.1]]&lt;br /&gt;
&lt;br /&gt;
[[Datei:Wordclock-schmal-bestueckungsdruck-2.0.png|miniatur|Bestückungsaufdruck der Version 2.0]]&lt;br /&gt;
&lt;br /&gt;
[[Datei:Wordclock-schmal-bestueckt.jpg|miniatur|Bestückung: Orientierung der IRLUs beachten!]]&lt;br /&gt;
&lt;br /&gt;
[[Datei:Wordclock-schmal-anschluesse.png|miniatur|Anschlüsse V1.0]]&lt;br /&gt;
[[Datei:Wordclock-schmal-anschluesse-1.1.png|miniatur|Anschlüsse V1.1]]&lt;br /&gt;
[[Datei:Wordclock-schmal-anschluesse-2.0.png|miniatur|Anschlüsse V2.0]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;WICHTIG (für 1.x und 2.x):&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Der oberste IRLU2905 muss anders herum eingelötet werden (Metall Richtung Spannungsregler) als die beiden unteren (Metall Richtung Schraubklemme). Siehe auch Foto rechts.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Möchte man einfarbige LEDs verwenden und auf die RGB-Steuerung verzichten, schließt man einfach zwei der drei RGB-PWM-Kanäle nicht an und verwendet stattdessen nur PWMR zur PWM-Steuerung. Die 2 zu PWMG und PWMB gehörenden IRLUs und die angeschlossenen 4 Widerstände am Gate der IRLUs kann man dann auch weglassen.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Bestückungsliste:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 Name                Wert&lt;br /&gt;
 C1,C3,C4,C6,C8,C9   100NF&lt;br /&gt;
 C10,C11,C12,C13     100NF&lt;br /&gt;
 C2                  4,7µF&lt;br /&gt;
 C5,C7               47µF&lt;br /&gt;
 D1                  1N4001&lt;br /&gt;
 IC1                 ATMEGA88&lt;br /&gt;
 IC2                 7805&lt;br /&gt;
 IC3                 TSOP1738 oder TSOP31238 oder SFH5110 (andere Pinbelegung!)&lt;br /&gt;
 IC4,IC5,IC6         74HCT595N&lt;br /&gt;
 IC7                 DS1307&lt;br /&gt;
 IC8,IC9,IC10,IC11   UDN2981A&lt;br /&gt;
 K4                  Wannenstecker 10-polig&lt;br /&gt;
 K7,K8               Wannenstecker 16-polig&lt;br /&gt;
 K6                  LDR&lt;br /&gt;
 KL1                 KLEMME5POL&lt;br /&gt;
 Q1                  32,768KHz&lt;br /&gt;
 R1,R6,R8,R10,R12    10K&lt;br /&gt;
 R7                  10K, entfällt!&lt;br /&gt;
 R2                  100&lt;br /&gt;
 R3,R4               4K7&lt;br /&gt;
 R5,R9,R11           82&lt;br /&gt;
 T1,T2,T3            IRLU2905&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Davon abweichend für 2.0:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 Name                Wert&lt;br /&gt;
 K4                  Wannenstecker 6-polig (statt 10-polig)&lt;br /&gt;
 K10                 I2C (neu, optional)&lt;br /&gt;
 K11                 SPI (neu, optional)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Anmerkung zu C2 und R2:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
C2 und R2 bilden zusammen einen Tiefpass. Hier gilt: Soll der TSOPxxxx/SFH5110 über ein längeres Kabel entfernt von der Platine angebracht werden, sollte man den Kondensator C2 nicht in die Platine löten, sondern direkt am Empfänger anbringen (Achtung: TSOP17XX und SFH5110 haben unterschiedliche Pinbelegung).&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== FAQ zur Bestückung ==&lt;br /&gt;
&lt;br /&gt;
[[Datei:Wordclock-schmal-bestueckt.jpg|miniatur|Bestückung: Orientierung der IRLUs (ganz rechts) beachten!]]&lt;br /&gt;
&lt;br /&gt;
 Q: Wie herum müssen die IRLUs eingelötet werden?&lt;br /&gt;
 A: Der oberste kommt mit der Metallseite nach links (Richtung&lt;br /&gt;
    Spannungsregler), Pin 1 ist hier der untere. Die anderen beiden IRLUs&lt;br /&gt;
    werden mit der Metallseite Richtung Schraubklemme eingelötet, siehe auch&lt;br /&gt;
    Foto rechts. Hier ist jeweils Pin 1 der obere.&lt;br /&gt;
&lt;br /&gt;
 Q: Welche ICs sollte ich sockeln?&lt;br /&gt;
 A: Wenn durch einen versehentlichen Kurzschluss bei der Freiluftverdrahtung der&lt;br /&gt;
    LEDs ein UDN2981 abfackelt, ist das ägerlich. Daher sollte man zumindest&lt;br /&gt;
    die UDNs und den ATMega sockeln. Besser ist es natürlich, alle zu sockeln.&lt;br /&gt;
&lt;br /&gt;
 Q: Bei dem ATMega und der RTC ist nicht ersichtlich, wie herum sie eingebaut&lt;br /&gt;
    werden müssen?&lt;br /&gt;
 A: Doch, kann man sehen: Der Lötpunkt von Pin1 ist immer rechteckig, die&lt;br /&gt;
    anderen sind oval. Das gilt übrigens für fast alle Bauteile, auch die Wannen.&lt;br /&gt;
&lt;br /&gt;
 Q: Ich möchte oben statt der abgebildeten zwei 2x8-poligen Stiftleisten 16-polige&lt;br /&gt;
    Wannenstecker nehmen. Wie herum kommen dann die oberen Wannen drauf?&lt;br /&gt;
 A: Mit der Kerbe nach unten, sieht man auch am rechteckigen Lötpunkt - und&lt;br /&gt;
    auch auf dem Foto rechts.&lt;br /&gt;
&lt;br /&gt;
 Q: Kann ich auf die Batterie verzichten, weil ich DCF77 einsetze bzw. nach&lt;br /&gt;
    einem Stromausfall die Uhr per Fernbedienung selbst neu stellen möchte?&lt;br /&gt;
 A: Wenn man keine Batterie einsetzt, sollte man VBat der RTC DS1307 mit GND&lt;br /&gt;
    verbinden. Das geht am einfachsten an den auf der Platine vorgesehenen&lt;br /&gt;
    Batterieanschlüssen: einfach K1 (Bat+) und K3 (Bat-) mit einem Stück Draht&lt;br /&gt;
    überbrücken. Übrigens: die Batterie hält lt. Datenblatt des DS1307&lt;br /&gt;
    10 Jahre, es ist also durchaus sinnvoll, diese auch zu bestücken.&lt;br /&gt;
&lt;br /&gt;
 Q: Der Infrarot-Empfänger TSOP17XX ist abgekündigt. Gibt es dazu eine Alternative?&lt;br /&gt;
 A: Als Ersatz kann man den [http://www.reichelt.de/?ARTICLE=107210 TSOP31238] nehmen. Er ist pinkompatibel.&lt;br /&gt;
&lt;br /&gt;
 Q: Kann ich (aus Kostengründen) auch einfarbige LEDs verwenden?&lt;br /&gt;
 A: Ja, einfach zwei der drei RGB-PWM-Kanäle nicht anschließen und nur PWMR (für Rot) benutzen.&lt;br /&gt;
    Die 2 zu PWMG und PWMB gehörenden IRLUs und die angeschlossenen 4 Widerstände am Gate der IRLUs&lt;br /&gt;
    kann man dann auch weglassen.&lt;br /&gt;
&lt;br /&gt;
&amp;quot;Beginner-Tipp&amp;quot;:&lt;br /&gt;
&lt;br /&gt;
[[Datei:Testmodul-Schaltplatine.JPG|miniatur]]&lt;br /&gt;
&lt;br /&gt;
Beim Zusammenbau der Word Clock gibt es eine Reihe von Fehlerquellen (Programmierung, Aufbau der Steuerplatine, Lötfehler auf den LED-Streifen, Verkabelung etc.). Für die Fehlersuche aber auch für das erste Erfolgserlebnis nach dem Zusammenbau der Schaltplatine kann man sich relativ einfach mit Hilfe von Vorwiderständen und Standard-LEDs eine &amp;quot;Test-Umgebung&amp;quot; aufbauen. Die ausgedruckte Tabelle mit der Zuordnung der Ausgänge/LEDs zu den entsprechenden Wörtern erleichtert die Interpretation. Achtung: auf die richtige &amp;quot;Default&amp;quot;-Sprachvariante achten. Wenn die LEDs dann wie erwartet leuchten = erstes Erfolgserlebnis. &lt;br /&gt;
&lt;br /&gt;
Eine BestückungsInfo für die Version V1.1 gibt es als PDF Download: &#039;&#039;&#039;[[Media:WordClockSteuerplatineV1.1Bestueckung.pdf]]&#039;&#039;&#039;&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
= Anschluss der LEDs =&lt;br /&gt;
&lt;br /&gt;
=== Zuordnung der Kanäle ===&lt;br /&gt;
&lt;br /&gt;
[[Datei:Wannen.png|400px|Anschlüsse der Wannenstecker]]&lt;br /&gt;
&lt;br /&gt;
Folgende Tabelle enthält die Zuordnung der Wörter zu den Pins der Wannenstecker.&lt;br /&gt;
Die Bezeichnungen der Pins entsprechen dem Schaltplan. Zu beachten ist, dass die Reihenfolge der Wörter nichts mit der Anordnung auf der Frontplatte zu tun hat.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; id=&amp;quot;pinbelegungen&amp;quot;&lt;br /&gt;
|+ &#039;&#039;&#039;Zuordnung Pins&#039;&#039;&#039;&lt;br /&gt;
|-                    &lt;br /&gt;
! Anschluss || Pin || [[#Deutsch (2-sprachig) |Frontplatte deutsch 2-sprachig]]  || [[#Deutsch (3-sprachig) |Frontplatte deutsch 3-sprachig]]  || [[#Englisch|Frontplatte Englisch]]&lt;br /&gt;
|-                                                         &lt;br /&gt;
|  OUT0 || K7-08 || ES IST               ||  ZW                         || IT IS&lt;br /&gt;
|-                                                        &lt;br /&gt;
|  OUT1 || K7-07 || FÜNF  (Minuten)      ||  EI                         || FIVE   (Minuten) &lt;br /&gt;
|-                                                        &lt;br /&gt;
|  OUT2 || K7-06 || ZEHN  (Minuten)      ||  N                          || TEN    (Minuten) &lt;br /&gt;
|-                                                        &lt;br /&gt;
|  OUT3 || K7-05 || VOR   (Minuten)      ||  S                          || QUARTER &lt;br /&gt;
|-                                                        &lt;br /&gt;
|  OUT4 || K7-04 || DREI  (Minuten)      ||  IEBEN                      || TWENTY (Minuten) &lt;br /&gt;
|-                                                        &lt;br /&gt;
|  OUT5 || K7-03 || VIERTEL              ||  DREI                       || HALF &lt;br /&gt;
|-                                                        &lt;br /&gt;
|  OUT6 || K7-02 || NACH                 ||  VIER                       || TO &lt;br /&gt;
|-                                                        &lt;br /&gt;
|  OUT7 || K7-01 || VOR                  ||  FÜNF                       || PAST &lt;br /&gt;
|-                                                        &lt;br /&gt;
|  OUT8 || K7-16 || HALB                 ||  SECHS                      || ONE &lt;br /&gt;
|-                                                        &lt;br /&gt;
|  OUT9 || K7-15 || S                    ||  ACHT                       || TWO &lt;br /&gt;
|-                                                        &lt;br /&gt;
|  OUT10 || K7-14 || EIN                 ||  NEUN                       || THREE &lt;br /&gt;
|-                                                        &lt;br /&gt;
|  OUT11 || K7-13 || ZWEI                ||  ZEHN                       || FOUR &lt;br /&gt;
|-                                                        &lt;br /&gt;
|  OUT12 || K7-12 || DREI                ||  ELF                        || FIVE &lt;br /&gt;
|-                                                        &lt;br /&gt;
|  OUT13 || K7-11 || VIER                ||  ZWÖLF                      || SIX &lt;br /&gt;
|-                                                        &lt;br /&gt;
|  OUT14 || K7-10 || FÜNF                ||  ES IST                     || SEVEN &lt;br /&gt;
|-                                                        &lt;br /&gt;
|  OUT15 || K7-09 || SECHS               ||  UHR                        || EIGHT &lt;br /&gt;
|-                                                        &lt;br /&gt;
|  OUT16 || K8-08 || SIEBEN              ||  FÜNF (Minuten)             || NINE &lt;br /&gt;
|-                                                        &lt;br /&gt;
|  OUT17 || K8-07 || ACHT                ||  ZEHN (Minuten)             || TEN &lt;br /&gt;
|-                                                        &lt;br /&gt;
|  OUT18 || K8-06 || NEUN                ||  ZWANZIG (Minuten)      || ELEVEN &lt;br /&gt;
|-                                                        &lt;br /&gt;
|  OUT19 || K8-05 || ZEHN                ||  DREI (Minuten)             || TWELVE &lt;br /&gt;
|-                                                        &lt;br /&gt;
|  OUT20 || K8-04 || ELF                 ||  VIERTEL (Minuten)          || O CLOCK  &lt;br /&gt;
|-                                                        &lt;br /&gt;
|  OUT21 || K8-03 || ZWÖLF               ||  NACH                       || unverbunden&lt;br /&gt;
|-                                                        &lt;br /&gt;
|  OUT22 || K8-02 || UHR                 ||  VOR                        || unverbunden&lt;br /&gt;
|-                                                        &lt;br /&gt;
|  OUT23 || K8-01 || unverbunden         ||  HALB                       || unverbunden&lt;br /&gt;
|-                                                        &lt;br /&gt;
|  OUTL1 || K8-09 || min1                ||  min1                       || min1&lt;br /&gt;
|-                                                        &lt;br /&gt;
|  OUTL2 || K8-10 || min2                ||  min2                       || min2&lt;br /&gt;
|-                                                        &lt;br /&gt;
|  OUTL3 || K8-11 || min3                ||  min3                       || min3&lt;br /&gt;
|-                                                        &lt;br /&gt;
|  OUTL4 || K8-12 || min4                ||  min4                       || min4&lt;br /&gt;
|-                                                        &lt;br /&gt;
|  OUTG1 || K8-13 || Ambilight (opt.)           ||  Ambilight (opt.)                  || Ambilight (opt.)           &lt;br /&gt;
|-                                                        &lt;br /&gt;
|  OUTG2 || K8-14 || unverbunden         ||  unverbunden                || unverbunden&lt;br /&gt;
|-                                                        &lt;br /&gt;
|  OUTG3 || K8-15 || unverbunden         ||  unverbunden                || unverbunden&lt;br /&gt;
|-                                                        &lt;br /&gt;
|  OUTG4 || K8-16 || dcf Empfang         ||  dcf Empfang                || dcf Empfang             &lt;br /&gt;
|}&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
=== Beschaltungsvarianten der LEDs ===&lt;br /&gt;
&lt;br /&gt;
Da die Schaltung genügend Power hat, um eine Unmenge an RGB-LEDs zu treiben, gibt es folgende Möglichkeiten, die auch mixbar sind:&lt;br /&gt;
&lt;br /&gt;
1. Pro Wort für jeden Buchstaben eine RGB-LED (mit gemeinsamer Anode) in&lt;br /&gt;
Parallelschaltung (natürlich mit geeignetem Vorwiderstand pro LED)&lt;br /&gt;
&lt;br /&gt;
Prinzip (am Beispiel des Wortes &amp;quot;VIER&amp;quot;):&lt;br /&gt;
&lt;br /&gt;
         /---|&amp;gt;|----| R1R |---- PWMR&lt;br /&gt;
      +--|---|&amp;gt;|----| R1G |---- PWMG     &amp;quot;V&amp;quot;&lt;br /&gt;
      |  \---|&amp;gt;|----| R1B |---- PWMB&lt;br /&gt;
      |&lt;br /&gt;
      |  /---|&amp;gt;|----| R2R |---- PWMR&lt;br /&gt;
      +--|---|&amp;gt;|----| R2G |---- PWMG     &amp;quot;I&amp;quot;&lt;br /&gt;
      |  \---|&amp;gt;|----| R2B |---- PWMB&lt;br /&gt;
 OUTx-+&lt;br /&gt;
      |  /---|&amp;gt;|----| R3R |---- PWMR&lt;br /&gt;
      +--|---|&amp;gt;|----| R3G |---- PWMG     &amp;quot;E&amp;quot;&lt;br /&gt;
      |  \---|&amp;gt;|----| R3B |---- PWMB&lt;br /&gt;
      |&lt;br /&gt;
      |  /---|&amp;gt;|----| R4R |---- PWMR&lt;br /&gt;
      +--|---|&amp;gt;|----| R4G |---- PWMG     &amp;quot;R&amp;quot;&lt;br /&gt;
         \---|&amp;gt;|----| R4B |---- PWMB&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
2. Pro Wort für jeden Buchstaben eine RGB-LED in Reihenschaltung (mit&lt;br /&gt;
nur 1 Vorwiderstand für die ganze Reihe, bzw. 3 wegen RGB). Das geht&lt;br /&gt;
aber nur, wenn die RGB-LEDs unabhängige Anoden und Kathoden haben (ja,&lt;br /&gt;
die gibt es).&lt;br /&gt;
&lt;br /&gt;
Prinzip:&lt;br /&gt;
                         &amp;quot;V&amp;quot;    &amp;quot;I&amp;quot;    &amp;quot;E&amp;quot;    &amp;quot;R&amp;quot;&lt;br /&gt;
         /----| R1R |----|&amp;gt;|----|&amp;gt;|----|&amp;gt;|----|&amp;gt;|---- PWMR&lt;br /&gt;
 OUTx --+-----| R1G |----|&amp;gt;|----|&amp;gt;|----|&amp;gt;|----|&amp;gt;|---- PWMG&lt;br /&gt;
         \----| R1B |----|&amp;gt;|----|&amp;gt;|----|&amp;gt;|----|&amp;gt;|---- PWMB&lt;br /&gt;
&lt;br /&gt;
Theoretisch könnte man solche Streifen als Platine herstellen, welche man dann immer auf die gewünschte Länge kürzt, als 1, 2, 3 ... 7 Buchstaben.&lt;br /&gt;
&lt;br /&gt;
Bei Verwendung von einfarbigen LEDs vereinfachen sich die Prinzip-Schaltungen wie folgt:&lt;br /&gt;
&lt;br /&gt;
1. Parallelschaltung, eine LED pro Buchstabe im Wort:&lt;br /&gt;
&lt;br /&gt;
       /----|&amp;gt;|----| R1 |---- PWMR     &amp;quot;V&amp;quot;&lt;br /&gt;
      +-----|&amp;gt;|----| R2 |---- PWMR     &amp;quot;I&amp;quot;&lt;br /&gt;
 OUTx-+&lt;br /&gt;
      +-----|&amp;gt;|----| R3 |---- PWMR     &amp;quot;E&amp;quot;&lt;br /&gt;
       \----|&amp;gt;|----| R4 |---- PWMR     &amp;quot;R&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
2. Reihenschaltung, eine LED pro Buchstabe im Wort:&lt;br /&gt;
&lt;br /&gt;
                    &amp;quot;V&amp;quot;    &amp;quot;I&amp;quot;    &amp;quot;E&amp;quot;    &amp;quot;R&amp;quot;&lt;br /&gt;
 OUTx ----| R1 |----|&amp;gt;|----|&amp;gt;|----|&amp;gt;|----|&amp;gt;|---- PWMR&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Zum Berechnen der Vorwiderstände kann z.&amp;amp;nbsp;B. dieser Rechner&lt;br /&gt;
verwendet werden: &#039;&#039;&#039;[http://www.elektronik-kompendium.de/sites/bau/1109111.htm Vorwiderstands-Rechner]&#039;&#039;&#039; oder &#039;&#039;&#039;[http://www.modding-faq.de/index.php?artid=506 Vorwiderstands-Rechner mit Unterstützung für Reihenschaltung]&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Damit die LEDs selbst nicht sichtbar sind, benötigt man hinter den transparenten Buchstaben einen Diffusor. Im einfachsten Fall kann das eine weiße Schicht Farbe sein.&lt;br /&gt;
&lt;br /&gt;
&amp;quot;Beginner-Tipp&amp;quot;:&lt;br /&gt;
&lt;br /&gt;
In der Sammelbestellung wurden die Vorwiderstände für die Reihenschaltung berechnet. &lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
=== LEDs &amp;amp; Platinen ===&lt;br /&gt;
==== Single-LED-Platine ====&lt;br /&gt;
Ende 2013 wurde eine neue Platine für die LEDs entworfen. Diese reduziert die notwendigen Löt- und Verdrahtungsarbeiten auf ein minimum.&amp;lt;br&amp;gt;&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
| Top Seite des Single Boards: || Bottom Seite des Single Boards:&lt;br /&gt;
|-&lt;br /&gt;
| [[Datei:Single_Board_v4_TOP.jpg|350px|Singel LED Platine - LED Seite]]&lt;br /&gt;
 || [[Datei:Single_Board_v4_BOTTOM.jpg|350px|Singel LED Platine - Widerstand Seite]]&lt;br /&gt;
|}&lt;br /&gt;
Das Board ist wie folgt konzipiert:&lt;br /&gt;
* von der TOP Seite betrachtet, befinden sich rechts die 4 Platinen für die Minuten-LEDs&lt;br /&gt;
* von der TOP Seite betrachtet, befindet sich oben rechts eine kleine Zusatzplatine, welche zur Stabilisierung des Pollin DCF Empfängers konstruiert wurde - DANKE an Thomas K.! &amp;lt;br&amp;gt;Anbei der Schaltplan und der Bestückungsplan:&amp;lt;br&amp;gt;[[Datei:Single_Board_v4_DCF77-Schaltplan.png|200px]] [[Datei:Single-Board-v4-DCF-Bestueckung.JPG|300px]]&amp;lt;br&amp;gt;IC1 und C3 sind auf der Rückseite zu bestücken.&lt;br /&gt;
&amp;lt;br&amp;gt;Die notwendigen Bauteile sind als [http://www.reichelt.de/?ACTION=20;AWKID=986833;PROVID=2084 Warenkorb bei Reichelt] hinterlegt.&lt;br /&gt;
* es besteht die Möglichkeit 2 zusätzliche PLCC-6 LEDs zu bestücken (D1 und D2 - links und rechts von SECHS) um so bis zu 6 Status-Anzeigen nach vorne zu führen (derzeit nicht in der SW gesondert verwendet). So kann zB die DCF77 Empfangsanzeige nach vorne ausgeführt werden. In der aktuellen Version sind diese wie folgt vorverdrahtet:&lt;br /&gt;
** D1 ROT -&amp;gt; Out G4 (DCF Empfangskontrolle)&lt;br /&gt;
** D1 GRÜN -&amp;gt; n/a - ausgeführt als Pin zur Verbindungsseite&lt;br /&gt;
** D1 BLAU -&amp;gt; n/a - ausgeführt als Pin zur Verbindungsseite&lt;br /&gt;
** D2 ROT -&amp;gt; Out G1 (Ambilight)&lt;br /&gt;
** D2 GRÜN -&amp;gt; Out G2 - derzeit nicht in der SW verwendet&lt;br /&gt;
** D2 BLAU -&amp;gt; Out G3 - derzeit nicht in der SW verwendet&lt;br /&gt;
* möchte man zB nur die DCF77 Empfangskontrolle haben, so reicht es den ROT-Kanal von D1 mit einer PLCC-2 LED und den dazu gehörigen Widerstand zu bestücken&lt;br /&gt;
* TSOP mit Stabilisierungskondensator und LDR werden direkt auf dem Single Board bestückt&lt;br /&gt;
* das Single Board wird wie folgt mit der Hauptplatine verbunden:&lt;br /&gt;
** 2 16polige Flachbandkabeln für K7 und K8&lt;br /&gt;
** 4 Adern für PWMR / PMWG / PMWB / GND&lt;br /&gt;
** 2 Drähten für den LDR&lt;br /&gt;
** 3 Drähte für den TSOP&lt;br /&gt;
* die Verbindungen zu den Minuten- / Ambilightplatinen erfolgt über die Kontakte an den jeweiligen Ecken / Seiten&lt;br /&gt;
* für die weiter Verwendung sind die Minutenanschlüsse M1-M4 an der zentralen Verbinderseite ausgeführt&lt;br /&gt;
* für die weiter Verwendung sind die OUT G1-G4 an der zentralen Verbinderseite ausgeführt&lt;br /&gt;
* auf der BOTTOM Seite ist Platz für eine PLCC-2 LED als DCF77 Empfangskontroll LED vorgesehen&lt;br /&gt;
&lt;br /&gt;
Die für die DCF77 Empfangskontrolle, D1 und D2 benötigten Bauteile sind &#039;&#039;&#039;nicht Bestandteil&#039;&#039;&#039; eines angebotenen Paketes.&lt;br /&gt;
&lt;br /&gt;
Die Minuten-LEDs werden an den Ecken der Platine über kleine Drahtbrücken angeschlossen: (Bild ist noch vom Prototyp)&lt;br /&gt;
[[Datei:WordClock_Singel_LED_PCB_Minuten.jpg|400px|Anschluß Minuten LED]]&lt;br /&gt;
&lt;br /&gt;
Die Verbindung zwischen der LED-Platine und der Hauptplatine erfolgt mittels kurzem Flachbandkabel.&amp;lt;br&amp;gt;&lt;br /&gt;
[[Datei:WordClock_Singel_LED_PCB_Anschluß.jpg|400px|Anschluß an die Hauptplatine]]&lt;br /&gt;
&lt;br /&gt;
Auf dem Prototyp waren die Buchsen für K7 und K8 verdreht. Daher mussten die Flachbandkabel beim verbinden verdreht werden. Dieses wird in der finalen Version korrigiert. Es erfolgt dann ein Austausch des Bildes.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Bitte beachtet, dass für das SingleBoard zusätzliche Bauteile benötigt werden. Diese sind in einem eigenen Warenkorb bei Reichelt hinterlegt.&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
Diese sind in einem eigenen &#039;&#039;&#039;[http://www.reichelt.de/?ACTION=20;AWKID=847662;PROVID=2084 WARENKORB]&#039;&#039;&#039; bei Reichelt hinterlegt.&amp;lt;br&amp;gt;&lt;br /&gt;
Die Bauteile für das DCF77 Stabilisierungsboard sind ebenfalls in einem eigenen &#039;&#039;&#039;[http://www.reichelt.de/?ACTION=20;AWKID=885799;PROVID=2084 WARENKROB]&#039;&#039;&#039; bei Reichelt hinterlegt.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
==== Streifenplatinen ====&lt;br /&gt;
Die Platine hat ein Maß von 314 x 12 mm und ist auf die Word-Clock-Front-Varianten A und B (also 450mm x 450mm) ausgelegt.&lt;br /&gt;
&lt;br /&gt;
Der Abstand der einzelnen LEDs beträgt 28.1mm&lt;br /&gt;
&lt;br /&gt;
Die Streifenplatine wird so ausschauen: (Version 8 vom 06.März 2010)&lt;br /&gt;
&lt;br /&gt;
[[Datei:LED_Streifen_V6_1.png|750px|Streifenplatine für SMD RGB LEDs Version 8]]&lt;br /&gt;
&lt;br /&gt;
[[Datei:LED_Streifen_V6_1_bestueckt.jpg|750px|Erster Streifen bestückt]]&lt;br /&gt;
&lt;br /&gt;
Erste Streifenplatine bestückt.&amp;lt;br&amp;gt;&lt;br /&gt;
Weitere Beispiel-Photos der bestückten Streifenplatinen sind [http://www.mikrocontroller.net/topic/156661#1780198 hier] zu finden.&lt;br /&gt;
&lt;br /&gt;
Ausschnitt vergrößert dargestellt:&lt;br /&gt;
&lt;br /&gt;
[[Datei:LED_Streifen_V6_1_schnitt.png|500px|Aussschnitt]]&lt;br /&gt;
&lt;br /&gt;
Datenblatt der LED mit Bestückungsinfos: [[Datei:SMD RGB PLCC-6 datasheet3.pdf]]&lt;br /&gt;
&lt;br /&gt;
Hier ist die Bestückung aller Streifen schematisch detailliert gezeigt: &amp;lt;br&amp;gt; [http://www.mikrocontroller.net/topic/156661?goto=1671369#1671369 Beitrag] &amp;lt;br&amp;gt;&lt;br /&gt;
Bestückungstabelle: [[Datei:2012WordClockLEDMatrix.pdf]] &amp;lt;br&amp;gt;&lt;br /&gt;
Bestückungsgrafik: [[Datei:2012WordClockLEDMatrix_wiring_v22.pdf]]&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
==== Technische Daten der SMD RGB PLCC-6 LEDs ====&lt;br /&gt;
Spezifikation&lt;br /&gt;
* Source Material: InGaN&lt;br /&gt;
* Emitting Colour: SMD SMT 5050 RGB&lt;br /&gt;
* LENS Type: Water clear&lt;br /&gt;
* Reverse Voltage: 5.0 V&lt;br /&gt;
* Viewing Angle: 140 degree&lt;br /&gt;
* Lead Soldering Temp: 260°C for 5 seconds&lt;br /&gt;
&lt;br /&gt;
Absolute Maximum Rating (Ta = 250C)&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! PARAMETER || Symbol || RED || GREEN || BLUE || UNITS&lt;br /&gt;
|-&lt;br /&gt;
| Power Dissipation || PO || align=&amp;quot;right&amp;quot; | 80 || align=&amp;quot;right&amp;quot; | 95 || align=&amp;quot;right&amp;quot; | 85 || mW&lt;br /&gt;
|-&lt;br /&gt;
| DC Current || IF || align=&amp;quot;right&amp;quot; | 20 || align=&amp;quot;right&amp;quot; | 20 || align=&amp;quot;right&amp;quot; | 20 || mA&lt;br /&gt;
|-&lt;br /&gt;
| Peak Forward Current || IFP || align=&amp;quot;right&amp;quot; | 100 || align=&amp;quot;right&amp;quot; | 100 || align=&amp;quot;right&amp;quot; | 100 || mA&lt;br /&gt;
|-&lt;br /&gt;
| Reverse Voltage || VR || align=&amp;quot;right&amp;quot; | 5 || align=&amp;quot;right&amp;quot; | 5 || align=&amp;quot;right&amp;quot; | 5 || V&lt;br /&gt;
|-&lt;br /&gt;
| Operating Temperature || Topr || colspan=&amp;quot;3&amp;quot; align=&amp;quot;center&amp;quot; | -25 to +85 || °C&lt;br /&gt;
|-&lt;br /&gt;
| Storage Temperature || Tstg ||  colspan=&amp;quot;3&amp;quot; align=&amp;quot;center&amp;quot; | -40 to +85 || °C&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Electro-optical Characteristics (Ta = 250C)&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! PARAMETER || SYMBOL || CONDITIONS || MIN. || TYP. || MAX. || UNIT&lt;br /&gt;
|-&lt;br /&gt;
| Forward Voltage (B) || VF || IF = 20mA || align=&amp;quot;right&amp;quot; | 3.4 || align=&amp;quot;right&amp;quot; | 3.6 || align=&amp;quot;right&amp;quot; | 3.8 || V&lt;br /&gt;
|-&lt;br /&gt;
| Forward Voltage (G) || VF || IF = 20mA || align=&amp;quot;right&amp;quot; | 3.4 || align=&amp;quot;right&amp;quot; | 3.6 || align=&amp;quot;right&amp;quot; | 3.8 || V&lt;br /&gt;
|-&lt;br /&gt;
| Forward Voltage (R) || VF || IF = 20mA || align=&amp;quot;right&amp;quot; | 1.9 || align=&amp;quot;right&amp;quot; | 2.1 || align=&amp;quot;right&amp;quot; | 2.5 || V&lt;br /&gt;
|-&lt;br /&gt;
| Dominant Wavelength (B) || lD || IF = 20mA || align=&amp;quot;right&amp;quot; | 465 || align=&amp;quot;right&amp;quot; | 470 || align=&amp;quot;right&amp;quot; | 475 || nm&lt;br /&gt;
|-&lt;br /&gt;
| Dominant Wavelength (G) || lD || IF = 20mA || align=&amp;quot;right&amp;quot; | 515 || align=&amp;quot;right&amp;quot; | 520 || align=&amp;quot;right&amp;quot; | 525 || nm&lt;br /&gt;
|-&lt;br /&gt;
| Dominant Wavelength (R) || lD || IF = 20mA || align=&amp;quot;right&amp;quot; | 625 || align=&amp;quot;right&amp;quot; | 630 || align=&amp;quot;right&amp;quot; | 635 || nm&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Pin / Farbzuordnung:&lt;br /&gt;
* R: Pin 1 - 6&lt;br /&gt;
* G: Pin 2 - 5&lt;br /&gt;
* B: Pin 3 - 4&lt;br /&gt;
&lt;br /&gt;
[[Datei:plcc6_smd_RGB.JPG]]&lt;br /&gt;
----&lt;br /&gt;
==== Widerstandswerte für die LED Streifen ====&lt;br /&gt;
&lt;br /&gt;
Berechnet sind die Widerstände für eine Spannungsversorgung von 15V - abzgl. 1,4V durch den Spannungsabfall an den UDN2981. Ein solches Netzteil gibt es zB bei [http://www.pollin.de/shop/dt/MjU5OTQ2OTk-/Stromversorgung/Netzgeraete/Regelbare_Netzgeraete/EcoFriendly_Universal_Schaltnetzteil_MW_3H36GS.html Pollin] oder auch bei [http://www.reichelt.de/?ACTION=3;ARTICLE=89789;PROVID=2402 Reichelt]. &lt;br /&gt;
&lt;br /&gt;
&amp;quot;Beginner-Tipp&amp;quot;:&lt;br /&gt;
&lt;br /&gt;
Bitte lest zum Stichwort &amp;quot;Netzteil&amp;quot; im Forum nach. Es gibt hierzu einige Bemerkungen und Empfehlungen. So z. B. auch der Hinweis auf ein weiteres Netzteil von C*: [http://www.conrad.de/ce/de/product/512696/HN-POWER-HNP18-150-STECKER-NETZT-18W Netzteil_15V_1.2A]&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;
! colspan=&amp;quot;3&amp;quot; | |||| colspan=&amp;quot;3&amp;quot; | ....Widerstände E12.... |||| colspan=&amp;quot;3&amp;quot; | ....Widerstände E24.... ||&lt;br /&gt;
|- &lt;br /&gt;
! Streifen  || Wort  || LEDs |||| style=&amp;quot;color:red;&amp;quot; | Rot || style=&amp;quot;color:green;&amp;quot; | Grün || style=&amp;quot;color:blue;&amp;quot; | Blau |||| style=&amp;quot;color:red;&amp;quot; | Rot || style=&amp;quot;color:green;&amp;quot; | Grün || style=&amp;quot;color:blue;&amp;quot; | Blau || Anschluss&lt;br /&gt;
|- &lt;br /&gt;
| 1 ||  ES ||  2 ||||  560 ||  470 ||  470 ||||  510 ||  360 ||  360 || OUT14&lt;br /&gt;
|- &lt;br /&gt;
| {{H16}} | 1 || {{H16}} | K ||  ||||  ||  ||  ||||  ||  ||  ||&lt;br /&gt;
|- &lt;br /&gt;
| 1 || IST || 3 |||| 470 || 220 || 220 |||| 390 || 200 || 200 || OUT14&lt;br /&gt;
|- &lt;br /&gt;
| {{H16}} | 1 || {{H16}} | L ||  ||||  ||  ||  ||||  ||  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| 1 || FÜNF || 4 |||| 330 || 33 || 33 |||| 300 || 27 || 33 || OUT16&lt;br /&gt;
|-{{H12}}&lt;br /&gt;
| 2 || ZEHN || 4 |||| 330 || 33 || 33 |||| 300 || 27 || 33 || OUT17&lt;br /&gt;
|-{{H12}}&lt;br /&gt;
| 2 || ZWAN || 4 |||| 330 || 33 || 33 |||| 300 || 27 || 33 || OUT18&lt;br /&gt;
|-{{H12}}&lt;br /&gt;
| 2 || ZIG || 3 |||| 470 || 220 || 220 |||| 390 || 200 || 200 || OUT18&lt;br /&gt;
|-&lt;br /&gt;
| 3 || DREI || 4 |||| 330 || 33 || 33 |||| 300 || 27 || 33 || OUT19&lt;br /&gt;
|-&lt;br /&gt;
| 3 || VIER || 4 |||| 330 || 33 || 33 |||| 300 || 27 || 33 || OUT20&lt;br /&gt;
|-&lt;br /&gt;
| 3 || TEL || 3 |||| 470 || 220 || 220 |||| 390 || 200 || 200 || OUT20&lt;br /&gt;
|-{{H12}}&lt;br /&gt;
| {{H16}} | 4 || {{H16}} | TG ||  ||||  ||  ||  ||||  ||  ||  ||&lt;br /&gt;
|-{{H12}}&lt;br /&gt;
| 4 || NACH || 4 |||| 330 || 33 || 33 |||| 300 || 27 || 33 || OUT21&lt;br /&gt;
|-{{H12}}&lt;br /&gt;
| 4 || VOR || 3 |||| 470 || 220 || 220 |||| 390 || 200 || 200 || OUT22&lt;br /&gt;
|- {{H12}}&lt;br /&gt;
| {{H16}} | 4 || {{H16}} | JM ||  ||||  ||  ||  ||||  ||  ||  ||  &lt;br /&gt;
|-&lt;br /&gt;
| 5 || HALB || 4 |||| 330 || 33 || 33 |||| 300 || 27 || 33 || OUT23&lt;br /&gt;
|- &lt;br /&gt;
| {{H16}} | 5 || {{H16}} | Q ||  ||||  ||  ||  ||||  ||  ||  || &lt;br /&gt;
|-&lt;br /&gt;
| 5 || ZWÖ || 3 |||| 470 || 220 || 220 |||| 390 || 200 || 200 || OUT13&lt;br /&gt;
|-&lt;br /&gt;
| 5 || LF || 2 |||| 560 || 470 || 470 |||| 510 || 360 || 360 || OUT13&lt;br /&gt;
|- &lt;br /&gt;
| {{H16}} | 5 || {{H16}} | P ||  ||||  ||  ||  ||||  ||  ||  ||&lt;br /&gt;
|-{{H12}}&lt;br /&gt;
| 6 || ZW || 2 |||| 560 || 470 || 470 |||| 510 || 360 || 360 || OUT0&lt;br /&gt;
|-{{H12}}&lt;br /&gt;
| 6 || EI || 2 |||| 560 || 470 || 470 |||| 510 || 360 || 360 || OUT1&lt;br /&gt;
|-{{H12}}&lt;br /&gt;
| 6 || N || 1 |||| 680 || 560 || 560 |||| 620 || 560 || 560 || OUT2&lt;br /&gt;
|-{{H12}}&lt;br /&gt;
| 6 || S || 1 |||| 680 || 560 || 560 |||| 620 || 560 || 560 || OUT3&lt;br /&gt;
|-{{H12}}&lt;br /&gt;
| 6 || IEB || 3 |||| 470 || 220 || 220 |||| 390 || 200 || 200 || OUT4&lt;br /&gt;
|-{{H12}}&lt;br /&gt;
| 6 || EN || 2 |||| 560 || 470 || 470 |||| 510 || 360 || 360 || OUT4&lt;br /&gt;
|- &lt;br /&gt;
| {{H16}} | 7 || {{H16}} | K ||  ||||  ||  ||  ||||  ||  ||  ||  &lt;br /&gt;
|-&lt;br /&gt;
| 7 || DREI || 4 |||| 330 || 33 || 33 |||| 300 || 27 || 33 || OUT5&lt;br /&gt;
|- &lt;br /&gt;
| {{H16}} | 7 || {{H16}} | RH ||  ||||  ||  ||  ||||  ||  ||  || &lt;br /&gt;
|-&lt;br /&gt;
| 7 || FÜNF || 4 |||| 330 || 33 || 33 |||| 300 || 27 || 33 || OUT7&lt;br /&gt;
|-{{H12}}&lt;br /&gt;
| 8 || ELF || 3 |||| 470 || 220 || 220 |||| 390 || 200 || 200 || OUT12&lt;br /&gt;
|-{{H12}}&lt;br /&gt;
| 8 || NEUN || 4 |||| 330 || 33 || 33 |||| 300 || 27 || 33 || OUT10&lt;br /&gt;
|-{{H12}}&lt;br /&gt;
| 8 || VIER || 4 |||| 330 || 33 || 33 |||| 300 || 27 || 33 || OUT6&lt;br /&gt;
|- &lt;br /&gt;
| {{H16}} | 9 || {{H16}} | W ||  ||||  ||  ||  ||||  ||  ||  ||  &lt;br /&gt;
|-&lt;br /&gt;
| 9 || ACHT || 4 |||| 330 || 33 || 33 |||| 300 || 27 || 33 || OUT9&lt;br /&gt;
|-&lt;br /&gt;
| 9 || ZEHN || 4 |||| 330 || 33 || 33 |||| 300 || 27 || 33 || OUT11&lt;br /&gt;
|- &lt;br /&gt;
| {{H16}} | 9 || {{H16}} | RS ||  ||||  ||  ||  ||||  ||  ||  ||  &lt;br /&gt;
|-{{H12}}&lt;br /&gt;
| {{H16}} | 10 || {{H16}} | B ||  ||||  ||  ||  ||||  ||  ||  ||  &lt;br /&gt;
|-{{H12}}&lt;br /&gt;
| 10 || SEC || 3 |||| 470 || 220 || 220 |||| 390 || 200 || 200 || OUT8&lt;br /&gt;
|-{{H12}}&lt;br /&gt;
| 10 || HS || 2 |||| 560 || 470 || 470 |||| 510 || 360 || 360 || OUT8&lt;br /&gt;
|-{{H12}}&lt;br /&gt;
| {{H16}} | 10 || {{H16}} | FM ||  ||||  ||  ||  ||||  ||  ||  ||  &lt;br /&gt;
|-{{H12}}&lt;br /&gt;
| 10 || UHR || 3 |||| 470 || 220 || 220 |||| 390 || 200 || 200 || OUT15&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Es werden somit folgende Widerstände aus der E24 Reihe benötigt:&lt;br /&gt;
&lt;br /&gt;
* 13x 27Ω&lt;br /&gt;
* 13x 33Ω&lt;br /&gt;
* 18x 200Ω&lt;br /&gt;
* 13x 300Ω&lt;br /&gt;
* 12x 360Ω&lt;br /&gt;
* 9x 390Ω&lt;br /&gt;
* 6x 510Ω&lt;br /&gt;
* 4x 560Ω&lt;br /&gt;
* 2x 620Ω&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
==== Ambilight-/LED-Streifenplatine bestücken ====&lt;br /&gt;
&lt;br /&gt;
&amp;quot;Beginner-Tipps&amp;quot;:&lt;br /&gt;
&lt;br /&gt;
Die Beschreibung zum Thema Ambilight ist im Forum etwas unübersichtlich. &lt;br /&gt;
&lt;br /&gt;
Sehr hilfreich zum Verständnis sind die Bilder von [http://www.mikrocontroller.net/topic/156661#1780198 Matthias]. Wichtig zum Verständnis ist auch der Hinweis auf die Drahtbrücken auf der Platinenunterseite vor der ersten LED eines Wortes. Es hat mir sehr geholfen, das Platinen-Layout-Schema und das Foto übereinander zu montieren.&lt;br /&gt;
&lt;br /&gt;
[[Datei:LED-Platine.jpg|miniatur]]&lt;br /&gt;
&lt;br /&gt;
Anhand der [http://www.mikrocontroller.net/articles/Word_Clock_Variante_1#Widerstandswerte_f.C3.BCr_die_LED_Streifen Tabelle] kann man erkennen, dass die Widerstände im Ambilight-Paket (300 Ohm = rot, 27 Ohm = grün, 33 Ohm = blau) für 2 x 4 LEDs in Serie ausgelegt sind. &lt;br /&gt;
&lt;br /&gt;
Man kann also 2 x 4 LEDs hinter einander löten oder die Variante von Christian aufgreifen der die LEDs physikalisch in 2er Gruppen angeordnet hat. Durch Drahtbrücken werden diese 2er Gruppen aber dann elektrisch zu zwei 4er Gruppen: LED-LED-Bügel-LED-LED-frei-LED-LED-Bügel-LED-LED, so dass auch für diese Version die Widerstände passen.&lt;br /&gt;
&lt;br /&gt;
Update Jan 2014: ich habe für die Amiblight-Platinen nach dem Muster LED-LED-Bügel-LED-LED-frei-LED-LED-Bügel-LED-LED diese Schemazeichnung mit Lötpunkten und ganz kurzen Drahtbrücken angefertigt:&lt;br /&gt;
&lt;br /&gt;
[[Datei:Ambilight-wiring-2x2x2x2-Leds-KHK.png|miniatur]]&lt;br /&gt;
&lt;br /&gt;
Persönlicher Kommentar KHK: &lt;br /&gt;
Ich habe inzwischen die zweite Wordclock fertig gestellt. Beim ersten Mal habe ich die LED-Streifenplatinen/Ambilight-Streifen ohne sie zu trennen bestückt. Das war schön übersichtlich und einfach zu löten. Das Trennen der fertig gelöteten Streifen war aber sehr schwierig. Bei der zweiten Wordclock habe ich die LED-Streifen vor der Bestückung mit einer Hebelschere getrennt. Das ging super einfach und hat mir viel Mühe gespart. Fazit: Trennt bitte die LED-Streifen vor der Bestückung ab! Ihr spart Euch viel Mühe und Stress.&lt;br /&gt;
&lt;br /&gt;
Beginner-Tipp: Das Ambilight wird mit OUTG2 angesteuert (Steuerplatine Version 1.1).&lt;br /&gt;
&lt;br /&gt;
==== LED-Streifen: Logik ====&lt;br /&gt;
&lt;br /&gt;
* Das Signal für die R/G/B PWM wird für jede Streifenplatine seitlich zugeführt (&amp;quot;R/G/B-Ausgangssignal&amp;quot;). Wichtig: nicht alle Platinen hintereinanderschalten, sondern die einzelnen Streifen parallel schalten (sonst werden die Leiterbahnen der ersten Platinen immer mit dem vollen Strom belastet). &lt;br /&gt;
&lt;br /&gt;
* Das &amp;quot;R/G/B-Ausgangssignal&amp;quot; wird vor jedem Wort auf den Vorwiderstand geführt. Dazu ist es notwendig das &amp;quot;R/G/B-Ausgangssignal&amp;quot; von den gemeinsamen Leiterbahnen (R,G,B) mit Draht- (R und G) bzw. einer Lötbrücke (B) auf die Vorwiderstände zu legen. &lt;br /&gt;
&lt;br /&gt;
* Innerhalb eines Wortes werden die vier Signale (PWM R/G/B + COM) über Lötbrücken von einem Buchstaben zum anderen weitergeführt. &lt;br /&gt;
&lt;br /&gt;
* Am Ende eines Wortes werden die Ausgänge 1, 2 und 3 der LED mit Lötbrücken zusammengeführt und gehen auf COM. &lt;br /&gt;
&lt;br /&gt;
* Eine Besonderheit ergibt sich bei &amp;quot;Leerzeichen&amp;quot; - wie z. B. beim Ambilight oder bei &amp;quot;Es(leer)ist&amp;quot;: &lt;br /&gt;
** Die COM Leitung wird durch zwei Lötbrücken links und rechts des zu überbrückenden Segments weitergeleitet. &lt;br /&gt;
** Das &amp;quot;R/G/B-Ausgangssignal&amp;quot; für den ersten Buchstaben nach dem &amp;quot;Leerzeichen&amp;quot; wird wieder mit den Draht-/Lötbrücken zugeführt, die auch vor Wörtern verwenden werden.&lt;br /&gt;
&lt;br /&gt;
Für jedes Wort wird (irgendwo) COM vom den Ausgängen OUTx zugeleitet.&lt;br /&gt;
&lt;br /&gt;
==== LED-Streifen: Zusammenfassung Löten ====&lt;br /&gt;
&lt;br /&gt;
* Widerstände sind immer am Anfang eines Wortes. Individuelle Werte für R/G/B je nach Länge des Wortes.&lt;br /&gt;
* Lötzinnbrücken sind&lt;br /&gt;
** am Anfang eines Wortes bei B&lt;br /&gt;
** am Anfang einer Streifenplatine bei B (hier sind keine Drahtbrücken nötig)&lt;br /&gt;
** am Ende eines Wortes von LED1/LED2/LED3 auf COM&lt;br /&gt;
** in der Mitte eines Wortes vor allen LED (außer der Ersten) zum Ersatz des Vorwiderstandes&lt;br /&gt;
** Zusätzlich zum Überbrücken von &amp;quot;Leerstellen&amp;quot; nur bei COM vor und nach dem Segment (da, wo zwischen zwei Zeichen sonst alle 4 Lötbrücken gesetzt werden)&lt;br /&gt;
* Drahtbrücken an der Platinenunterseite gibt es:&lt;br /&gt;
** vor einem neuen Wort zu R und G&lt;br /&gt;
** nach einer &amp;quot;Leerstelle&amp;quot; zu R und G (= identisch zu 1)&lt;br /&gt;
* Für jedes Wort wird (irgendwo) COM vom den Ausgängen OUTx zugeleitet.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
=== Sammelbestellung LED-Platinen ===&lt;br /&gt;
Es werden folgende 3 Pakete angeboten:&lt;br /&gt;
* Paket 1 (Uhr) - 66,20Eur : 1 Single-LED-Platine, 100 RGB-PLCC6-LEDs und 155 SMD-Widerstände&lt;br /&gt;
* Paket 2 (Ambilight) - 17,00Eur : 4 Streifenplatinen, 32 RGB-PLCC6-LEDs und 45 SMD-Widerstände&lt;br /&gt;
* Paket 3 (Uhr - alte Version) - 52,20Eur : 11 Streifenplatinen, 100 RGB-PLCC6-LEDs und 155 SMD-Widerstände&lt;br /&gt;
&lt;br /&gt;
Für das neue SingleBoard (Paket 1) werden zusätzliche Bauteile benötigt. Diese sind in einem eigenen Reichelt Warenkorb zusammen gestellt:&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;gt;&amp;gt; http://www.reichelt.de/?ACTION=20;AWKID=847662;PROVID=2084&lt;br /&gt;
&lt;br /&gt;
Und folgende Einzelpositionen:&lt;br /&gt;
* RGB-PLCC6-LED einzeln - 0,35Eur&lt;br /&gt;
* Streifenplatine einzeln - 1,00Eur&lt;br /&gt;
* Single-LED-Platine einzeln - 25,00Eur&lt;br /&gt;
* Zwischenboden mit Ambilightausfräsung (MDF 19mm gefräst) - 37,50Eur&lt;br /&gt;
* Zwischenboden ohne Ambilightausfräsung (MDF 19mm gefräst) - 37,50Er&lt;br /&gt;
* programmierter ATMega168 - 3,55Eur&lt;br /&gt;
&lt;br /&gt;
Der Versand erfolgt bei nur LEDs / Widerständen / ATMega als MaxiBrief mit Einschreiben.&lt;br /&gt;
* innerhalb BRD (ohne Inseln) - 4,00Eur&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Der Versand mit Streifenplatinen erfolgt als kleines Paket:&lt;br /&gt;
* innerhalb BRD (ohne Inseln) - 5,20Eur&lt;br /&gt;
* Österreich und Schweiz - 9,00Eur&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Der Versand mit Zwischenboden (max 8 Böden pro Paket) oder Single-LED-Platine wird als Paket versendet:&amp;lt;br&amp;gt;&lt;br /&gt;
* innerhalb BRD (ohne Inseln) - 6,50Eur&amp;lt;br&amp;gt;&lt;br /&gt;
* Österreich - 16,00Eur&amp;lt;br&amp;gt;&lt;br /&gt;
* Schweiz - 27,50Eur&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Es fallen jeweils nur die höheren Versandkosten an.&lt;br /&gt;
&lt;br /&gt;
Werden mehrere Pakete bestellt, können die tatsächlichen Versandkosten von den hier gezeigten Versandkosten abweichen. Diese ist dann von der bestellten Menge und dem Gewicht abhängig.&lt;br /&gt;
&lt;br /&gt;
Bei Interesse bitte per PN melden (Benutzer [http://www.mikrocontroller.net/user/show/wawibu wawibu])&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Zeitplanung&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;table border=1&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;Datum&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Aktion&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;bis 15.Februar 2015&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Sammeln der Bestellungen&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;17.Februar 2015&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Bestellung geht raus&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;~06.März 2015&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Anlieferung bei mir&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;ab 13.März 2015&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Versand&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Als Alternative können die Pakete 1, 2 und 3 auch ohne Widerstände bei mir bestellt werden. Es werden dann folgende Warenkörbe benötigt:&lt;br /&gt;
&lt;br /&gt;
Widerstands-Warenkörbe bei Reichelt:&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;pro WordClock&#039;&#039;&#039;: https://secure.reichelt.de/?;ACTION=20;LA=5010;AWKID=292199;PROVID=2084&lt;br /&gt;
&amp;lt;br&amp;gt;&#039;&#039;&#039;zusätzlich fürs Ambilight&#039;&#039;&#039;: https://secure.reichelt.de/?;ACTION=20;LA=5010;AWKID=292202;PROVID=2084&lt;br /&gt;
&amp;lt;br&amp;gt;&#039;&#039;&#039;LEDs&#039;&#039;&#039; gibt es zB bei LED-Tech: http://www.led-tech.de/de/Leuchtdioden/SMD-LEDs/PLCC6-Superbright-RGB-SMD--5.0x5.0mm--LT-1178_1_2.html&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;Die LEDs von LED-Tech haben in der Zwischenzeit eine andere PinBelegung und sind somit nicht 1:1 nutzbar. Der R und B Kanal sind dort anders als bei den LEDs aus der Sammelbestellung. Werden die LEDs von LED-Tech verwendet, muss darauf geachtet werden, das diese beiden Kanäle vertauscht sind!&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== Anschluss eines DCF77-Moduls ==&lt;br /&gt;
&lt;br /&gt;
Der Anschluss eines DCF77-Moduls ist optional. Wird ein DCF77-Modul angeschlossen, kann mittels einer LED der DCF77-Empfang angezeigt werden. Die LED blinkt dann im Sekundenrhytmus und zeigt direkt die empfangenen DCF77-Impulse. Der Empfang wird kurze Zeit nach dem Einschalten aktiviert bzw. jede Stunde wiederholt. &lt;br /&gt;
&lt;br /&gt;
Die DCF77-LED kann folgendermaßen angeschlossen werden:&lt;br /&gt;
&lt;br /&gt;
[[Bild:LED-DCF77.PNG]]&lt;br /&gt;
&lt;br /&gt;
Wobei der Pullup (R3) zwischen 1k und 10k gewählt werden kann.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Bei Anschluss des DCF77-Moduls von Reichelt ist folgendes zu beachten:&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
*Es sollte direkt auf den Lötaugen des Reichelt-DCF77-Moduls ein Abblock-Kondensator von 100nF zwischen den Pins +UB und GND aufgelötet werden&lt;br /&gt;
&lt;br /&gt;
*Der Eingang PON muss offen bleiben - entgegen den (falschen) Angaben im Reichelt Datenblatt!&lt;br /&gt;
&lt;br /&gt;
*Das DCF77-Modul von Reichelt braucht eine Synchronisierungszeit von mindestens 10 Sekunden. Erst dann arbeitet der Empfänger.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Beim Anschluss des Conrad-Moduls ArtNr. 641138 ist folgendes zu beachten:&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
*Es muss der nicht-invertierte Open-Collector-Ausgang Pin 3 als Signal an die WordClock angeschlossen werden.&lt;br /&gt;
&lt;br /&gt;
Ein Max232 der zur Kontrolle angeschlossen ist, kann den DCF Empfang stören. Ohne Max232 verbessert sich der Empfang deutlich.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Da einige berichtet haben, dass der DCF-Empfang bei den Reichelt-Modulen oftmals gestört ist, hier ein Tipp von Carsten Wille, wie man den Empfang durch Hinzufügen weniger Bauteile wesentlich verbessern kann:&#039;&#039;&#039; [http://www.mikrocontroller.net/topic/156661?goto=1929382#1929382 Beitrag: Brauche Hilfe beim Bau einer Uhr]&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Für Nutzer eines Pollin DCF77 Moduls ist aufgrund des nicht belastbaren Ausgangs eine kleine Hilfsplatine empfehlenswert. Siehe dazu auch [http://www.mikrocontroller.net/topic/156661?goto=3465678#3465682 Beitrag: Brauche Hilfe beim Bau einer Uhr] Platinen sind vom Beitragsautor beziehbar&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Software =&lt;br /&gt;
Da die Software für die neuere Variante mit der gemeinsamen LED/Steuerplatine die gleiche ist, bitte da nachschauen, was Software, Downloads und Bugs angeht um.&lt;br /&gt;
https://www.mikrocontroller.net/articles/Word_Clock_Variante_1#Software&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Download ==&lt;br /&gt;
&lt;br /&gt;
Siehe voriger Abschnitt.&lt;br /&gt;
&lt;br /&gt;
https://www.mikrocontroller.net/articles/Word_Clock_Variante_1#Download&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
= Mechanik =&lt;br /&gt;
&lt;br /&gt;
Folgende Anleitung gilt für die Frontplatte aus Plexiglas und die Word Clock mit Ambilight, d. h. die Wandmontage erfolgt ohne Rahmen/Bilderrahmen.&lt;br /&gt;
Beim Bau meiner Word Clock habe ich definitiv mehr Zeit über mechanische Lösungen nachgedacht, als über die Elektronik/Programmierung. Vor allem die Recherche geeigneter Bezugsquellen hat Zeit gekostet und die Lieferzeit hat den Bau der Uhr sehr verzögert. Ich hoffe, dass diese Anleitung hilft, etwas Zeit zu sparen.&lt;br /&gt;
&lt;br /&gt;
== Vorbereiten der Zwischenplatte == &lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
Datei:1-mdf-spachtel.jpeg&lt;br /&gt;
Datei:2-gespachtelte-kante.jpeg|Die Seitenfläche nach den Auftragen der Spachtelmasse.&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Damit die Zwischenplatte optisch gut zur Frontplatte passt, muss diese lackiert werden. Im vorliegenden Vorschlag wurde die Zwischenplatte an den Seiten mit wasserbasiertem Acryllack schwarz lackiert. &lt;br /&gt;
&lt;br /&gt;
Die MDF Platte kann grundiert oder gespachtelt werden. In diesem Beispiel wurde die Platte mit  &amp;quot;Holz und MDF Spachtel” (z. B. Decotric, siehe Amazon) vorbehandelt. Eine geeignete Grundierung wäre z. B. “MDF Grundierung Grund Vorbehandlung” von Molto. Die Grundierung ist leichter zu verarbeiten. Mit der Spachtelmasse kann man allerdings unerwünschte Löcher verschließen. Die Masse muss einige Stunden aushärten, bevor sie geschliffen werden kann. Am besten beginnt man daher den Bau mit der Word Clock mit dieser Vorarbeit. In der Wartezeit kann die Elektronik zusammengelötet werden. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
Datei:3-Kante-sw-gestrichen.jpeg|Die Zwischenplatte sollte vor der Montage der Elektronik vorbereitet werden. Der Mülleimer ist ein perfekter und stabiler Halter während des Streichen: einfach zu drehen, man macht sich die Finger nicht voll Farbe und man kann alle Seiten auf einmal streichen.&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nach dem Aushärten wurde die Oberfläche mit Schmirgelpapier geschliffen (P240) und anschließend dreimal lackiert. Die erste und zweite Lackschicht wurde jeweils mit P400 Schmirgelpapier geglättet. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
Datei:4-platine-fertig-in-hand.jpeg|&lt;br /&gt;
Datei:5-platine-fertig-in-zwischenplatte.jpeg|&lt;br /&gt;
Datei:6-platine-fertig-in-zwischenplatte-ohne-fraesung.jpeg|&lt;br /&gt;
Datei:7-platine-fertign-in-zwischenplatten-mit-fraesung.jpeg|&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Leider ist mir beim Einlöten der Komponenten nicht aufgefallen, dass die Batterie und IC2 (7805) sehr hoch sind. Da ich die Beinchen der Batterie schon zu kurz abgeschnitten hatte, konnte ich die Batterie nicht mehr einfach umbiegen, so dass dieses Problem nur noch durch angelötete Kabel zu lösen war. Die Batterie wird nun einfach neben die Steuerplatine gelegt. Den 7805 konnte ich durch Umbiegen etwas in seiner Höhe reduzieren. Der Platz für den umgebogenen 7805 wurde mit einer Fräse im Multitool/Dremel geschaffen.&lt;br /&gt;
&lt;br /&gt;
Im Nachhinein betrachtet hätte ich mir diese Mühe sparen können, da durch die Befestigung mit dem Spiegelbefestigungsset (siehe unten) die Höhe kein Problem mehr ist. Ebenfalls etwas zu spät habe ich im Forum Bilder einer Lösung gesehen, bei der die Ausfräsung für Batterie und 7805 in Richtung des äußeren Randes und nicht wie bei mir in Richtung der LEDs gelöst worden war. Im äußeren Rahmen ist genug Platz für eine Ausfräsung, die es erlaubt, die Batterie und den 7805 horizontal einzulöten.&lt;br /&gt;
&lt;br /&gt;
== Befestigung der Frontplatte (“Plexiglasvariante”) an der Zwischenplatte ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
Datei:8-holzbohrer-8mm-mit-tiefenmarkierung.jpeg|8 mm Holzbohrer mit improvisierter Tiefenmarkierung.&lt;br /&gt;
Datei:9-bohrung-fuer-magnet-1.jpeg|Fertige Bohrung. An der Kante unter dem Loch sieht man die Spachtelmasse. Während die Spachtelmasse noch trocknet, können bereits die Magnete montiert werden.&lt;br /&gt;
Datei:10-bohrung-fuer-magnet-2.jpeg|Zentral wird eine 2 mm Bohrung ergänzt, damit der Magnet bei Fehlpositionierung wieder ausgestossen werden könnte.&lt;br /&gt;
Datei:11-bohrung-fuer-magnet-3.jpeg|Zur Veranschaulichung: der Magnet könnte mit dem 2 mm Bohrer ausgestossen werden. &lt;br /&gt;
Datei:12-magnet-1.jpeg|&lt;br /&gt;
Datei:13-magnet-mit-werkzeug.jpeg|Die Magnete habe eine ganz gute Presspassung. Mit Hilfe eines Zwischenhölzchens zum Schutz des Magneten können sie in das Loch gehämmert werden.&lt;br /&gt;
Datei:14-magnet-2.jpeg|&lt;br /&gt;
Datei:15-magnet-3.jpeg|&lt;br /&gt;
Datei:16-magnet-4.jpeg|&lt;br /&gt;
Datei:17-magent-mit-kleinem-magnet-1.jpeg|Der 8 mm x 4 mm Magnet wird 0.5 mm unter die Oberfläche der Zwischenplatte gepresst, damit auch der 8 mm x 0.5 mm Magnet flächenbündig befestigt werden kann.&lt;br /&gt;
Datei:18-magent-mit-kleinem-magnet-2.jpeg|Hier ist der 8 mm x 0.5 mm Magnet in der Bohrung. Damit sich der 8 mm x 0.5 mm Magnet durch Verschieben von dem 8 mm x 4 mm Magneten lösen lässt, muss die Kante der Bohrung abgeschrägt werden.&lt;br /&gt;
Datei:19-anschraegung-fuer-kleinen-magnet.jpeg|Durch die Abschrägung am Rand der Bohrung (Universalmesser, Taschenmesser oder Dremel-Fräse) gleitet der 8 mm x 0.5 mm Magnet leicht aus der Befestigung und läßt sich so mit wenig Kraft vom 8 mm x 4 mm Magnet lösen.&lt;br /&gt;
Datei:20-alu-isolation-magnet-vor-klebung.jpeg|Vor dem Kleben wird die Holzoberfläche und der 8 mm x 4 mm Magnet mit Hilfe einer dünnen Folie (fixiert durch den 8 mm x 0.5 mm Magnet) isoliert (hier: Haushalts-Alu-Folie). Der Kleber wird sehr dünn aufgetragen, um Überschüsse zu vermeiden.&lt;br /&gt;
Datei:21-fertig-geklebt-magnete-frontplatte.jpeg|Rückseite der Frontplatte nach der Klebebefestigung der vier 8 mm x 0.5 mm Magneten. Alle vier Magnete wurden in einem Arbeitsgang geklebt. Die Ausrichtung der Plexiglasscheibe erfolgte von Hand. Die Oberfläche wurde mit einem alten Handtuch geschützt und mit Gewicht beschwert, während der Kleber auspolymerisierte.&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Für die Befestigung der Frontplatte an der Zwischenplatte wurden im Forum schon einige Lösungen besprochen.&lt;br /&gt;
&lt;br /&gt;
Man kann die Frontplatte z. B. mit Magneten befestigen oder direkt auf die Zwischenplatte kleben.&lt;br /&gt;
&lt;br /&gt;
Als Kleber wird meist ein Zweikomponentenkleber auf Epoxidharzbasis verwendet (z. B. Uhu Plus Sofortfest, Uhu Plus schnellfest, Uhu Plus Endfest 300...), da dieser keine Lösungsmittel enthält, die Plexiglas oder die Tinte des Frontplattendrucks anlösen. Im Forum wird bemerkt, dass der Kleber dünn aber vollflächig aufgetragen wurde. &lt;br /&gt;
&lt;br /&gt;
Im Folgenden wird eine einfache Methode beschrieben, die Frontplatte mit Magneten zu befestigen.  Diese Methode hat den Vorteil, dass man die empfindliche Frontplatte abnehmen kann, wenn man an der Word Clock arbeitet. Die Magnete können ohne aufwendige Werkzeuge befestigt werden. &lt;br /&gt;
&lt;br /&gt;
Ich habe mich für runde Magnete entschieden, weil man diese mit einer einfachen Bohrung befestigen kann. Die Haftkraft von vier 8 mm x 4 mm Magneten reicht aus, die Plexiglas-Frontplatte sicher zu tragen. Ich habe die Haftkraft bewusst nicht überdimensioniert, da ich Bedenken habe, dass starke Magnete beim Abnehmen der Frontplatte die Farbschicht von der Plexiglasplatte beschädigen könnten. &lt;br /&gt;
&lt;br /&gt;
Ich verwende zwei Magnete. Der dickere Magnet wird in der Zwischenplatte versenkt. Der dünnere Magnet wird an die Frontplatte geklebt. Der dünnere Magnet hat den gleichen Durchmesser wie der dickere Magnet, er ist jedoch nur 0.5 mm dick. &lt;br /&gt;
&lt;br /&gt;
Ein wesentliches Argument für die Verwendung von zwei Magneten anstelle der im Forum beschriebenen Lösung “1 Magnet und eine angeklebte Beilagscheibe” ist die Positioniergenauigkeit. Bei meinen Versuchen mit der Kombination Metall + Magnet hatte ich immer das Problem, dass der Magnet leicht seitlich verschoben werden konnte. Dies ist bei der Kombination Magnet + Magnet nicht möglich. Der flache Magnet wurde ebenfalls bewusst ausgewählt. Der Grund ist, dass zwei aneinander haftende Magnete nur schwer in axialer Richtung getrennt werden können. Es ist dagegen relativ einfach, die beiden Magneten durch seitliche Verschiebung zu trennen. Um die Plexiglasscheibe mit angeklebten Magneten seitlich verschieben zu können, dürfen die Magnete, die auf das Plexiglas geklebt werden, nicht zu hoch sein. Da die Plexiglasplatte ohne Luftspalt bündig auf der Zwischenplatte aufliegen soll, muss der Platz für den 0.5 mm Magnet auf der Seite der Zwischenplatte geschaffen werden. &lt;br /&gt;
&lt;br /&gt;
Theoretisch müsste man für beide Magneten in die Zwischenplatte ein 8 mm Loch mit einer Tiefe von 0.5 mm + 4.0 mm = 4.5 mm bohren. Damit der 0.5 mm dicke Magnet durch Verschieben entfernt werden kann, wird der Rand der Bohrung so angeschrägt, dass der Magnet seitlich verschoben werden kann. &lt;br /&gt;
&lt;br /&gt;
Da ich keine Bohrständer habe, wurde die Bohrungen freihändig mit einem 8 mm Holzbohrer im Akkuschrauber ausgeführt. Mit Hilfe eines Klebestreifens wurde die ungefähre Bohrtiefe festgelegt. &lt;br /&gt;
Im Zentrum der 8 mm Sacklochbohrung wurde zusätzlich eine 2 mm Bohrung durch die Zwischenplatte angefertigt. In diese kann man von der Unterseite mit den 2 mm Bohrer stecken und bei Bedarf den Magneten wieder ausstoßen. Ursprünglich dachte ich, den 8 mm x 4 mm Magneten festkleben zu müssen. Die Passgenauigkeit war jedoch so gut, dass ich den 8 mm x 4 mm Magneten einfach in die Bohrung pressen konnten (mit Hilfe eines kleinen Hölzchens und eines kleinen Hammers). &lt;br /&gt;
&lt;br /&gt;
Der 8 mm x 0.5 mm Magnet wird gemeinsam mit dem 8 mm x 4 mm Magnet so in die Bohrung gepresst, dass seine Oberfläche mit der Zwischenplatte bündig abschließt. Anschließend wird der kleine Magnet mit einem spitzen Gegenstand (z. B. Taschenmesser) entfernt und der Rand abgeschrägt (Dremel und Schleifsteinchen bzw. Fräser). &lt;br /&gt;
&lt;br /&gt;
Vor der Klebebefestigung an der Plexiglasscheibe wird das Holz und der 8 mm x 4 mm Magnet mit einer dünnen Folie vor Kleberüberschuss geschützt. In meinem Fall habe ich Haushalts-Alu-Folie verwendet. Für die Klebung werden die 8 mm x 0.5 mm Magneten an dem fest gepressten 8 mm x 4 mm Magneten fixiert. Der Kleber wird dünn auf die Oberfläche des 8 mm x 0.5 mm Magneten aufgetragen, die Plexiglasscheibe korrekt positioniert und mit Hilfe von Gewichten während der Aushärtphase fixiert. Ich habe alle Magnete auf einmal geklebt. &lt;br /&gt;
&lt;br /&gt;
Die einzelnen Arbeitsschritte sind auf den Bildern zu erkennen.&lt;br /&gt;
&lt;br /&gt;
=== Bezugsquelle der Magnete ===&lt;br /&gt;
&lt;br /&gt;
Neotexx, Herweghstr. 11, 12487	Berlin ( http://www.neomagnete.com )&lt;br /&gt;
&lt;br /&gt;
Folgende Magnete wurden verwendet:&lt;br /&gt;
&lt;br /&gt;
* Cylinder 8x0.5 mm, Dimension: D8x0.5mm, NdFeB Magnet in N48 (1.42 Tesla), Magnetized Direction: through 0.5mm (axial), Coating: Nickel, item # Z-008-000.5-N &lt;br /&gt;
* Cylinder 8x4 mm, Dimension: D8x4mm, NdFeB Magnet in N48 (1.42 Tesla), Magnetized Direction: through 4mm, Coating: Nickel, item # Z-008-004-N&lt;br /&gt;
&lt;br /&gt;
Wer den Mindestbestellwert (10€) und die vergleichsweise hohen Versandkosten (5,50€) scheut, kann mir (User [http://www.mikrocontroller.net/user/show/Stoerte Stoerte]) eine PN-Schicken. Ich habe etwas großzügiger bestellt und würde die übrigen Magnete zu folgenden Paketen (Paket 2 für den Fall, dass man eine zweite Frontplatte zum Wechseln bestücken will) abgeben:&lt;br /&gt;
&lt;br /&gt;
* Paket 1: 4x D8x4mm + 4x D8x0.5mm = 4,50€ + 1,50€ Versand&lt;br /&gt;
* Paket 2: 4x D8x4mm + 8x D8x0.5mm = 6,00€ + 1,50€ Versand&lt;br /&gt;
&lt;br /&gt;
== Befestigung der Platinen ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
Datei:22-bueroklammer-pin.jpeg|Befestigungspin aus Büroklammerdraht.&lt;br /&gt;
Datei:23-led-streifen-mit-pins.jpeg|Die Pins werden in der Ausfräsung verkeilt und fixieren die LED-Streifenplatinen, können aber jederzeit wieder leicht gelöst werden.&lt;br /&gt;
Datei:24-min-platine-mit-pin.jpeg|Auch die Kabel und Minuten-LED-Platinen können mit Pins fixiert werden.&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
An der Zwischenplatte müssen folgende Komponenten befestigt werden:&lt;br /&gt;
&lt;br /&gt;
* Steuerelektronik&lt;br /&gt;
* LED-Platinen Word Clock&lt;br /&gt;
* LED-Platinen Ambilight&lt;br /&gt;
* Netzteil&lt;br /&gt;
* DCF77-Modul&lt;br /&gt;
* Kabel&lt;br /&gt;
&lt;br /&gt;
Die einfachste Lösung ist die Klebebefestigung mit Heißkleber oder einem anderen geeigneten Kleber. Die Klebemethode hat jedoch den Nachteil, dass die Klebung nicht so leicht wieder gelöst werden kann. Aus diesem Grund wurde eine reversible Alternative gesucht. &lt;br /&gt;
&lt;br /&gt;
Die vorgeschlagene Methode wirkt zwar auf den ersten Blick nicht sehr professionell, funktioniert aber sehr gut. So musste ich einige Male Korrekturen an den LED Platinen vornehmen, weil sich z. B. bei meinen „Manipulationen“ Kabel gelöst haben. &lt;br /&gt;
&lt;br /&gt;
Die Lösung ist relativ einfach. Ein harter Draht (in meinem Fall 0,8 mm dicker Federdraht, wird z. B. bei Kieferorthopäden verwendet, als Alternative kann man aber auch Büroklammerdraht verwenden) wird etwas länger abgezwickt, als die Ausfräsung für die Platine oder die Kabel ist. Der Draht kann in die relativ weiche MDF Platte so verkeilt werden, dass die Platine oder Kabel gut halten. Es ist sinnvoll, den Draht an beiden Enden abzuzwicken. Dadurch entstehen zwei scharfe Enden, die sich leichter im MDF verankern lassen. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
Datei:25-dcf-77-geklebt.jpeg|DCF-77 Modul und Ferritantenne. Befestigung mit Heisskleber.&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Als Befestigung für die Ambilight-LED Streifen sowie  das DCF-77 Modul habe ich leider keine bessere Lösung gefunden, als die Befestigung mit Heißkleber. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
Datei:26-netzteil.jpeg|&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die Steuerplatine wird durch die angeschlossenen Kabel sicher in ihrer Position gehalten. &lt;br /&gt;
&lt;br /&gt;
Das modifizierte Conrad-Netzteil hält durch Klemmpassung in der Aussparung. Achtung: an der Unterseite der Platine liegen die 220 V Anschlüsse frei. Das ist kein Problem, sobald die Uhr an der Wand befestigt ist. Um sicherzustellen, dass niemand aus Versehen die Platine von der Seite berühren kann, wurde das Oberteil des Gehäuses als Berührschutz belassen. Beachten Sie dies bitte bei der Montage. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
Datei:27-uhr-wand-mit-ambilight.jpeg|&lt;br /&gt;
Datei:28-uhr-wand-ohne-ambilight.jpeg|&lt;br /&gt;
Datei:29-uhr-wand-schraeg-1.jpeg|&lt;br /&gt;
Datei:30-uhr-wand-schraeg-2.jpeg|&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Diese Lösung ist nur von Relevanz, wenn die Stromversorgung direkt hinter der Uhr möglich ist. Dann sieht die Lösung allerdings sehr elegant aus:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
Datei:31-netzteil-1.jpeg|&lt;br /&gt;
Datei:32-netzteil-2.jpeg|&lt;br /&gt;
Datei:33-netzteil-3.jpeg|&lt;br /&gt;
Datei:34-netzteil-4.jpeg|&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Als Vorbereitung musste das Netzteilgehäuse geöffnet werden. Folgende Bilder zeigen den Innenaufbau und sollen so das Öffnen des Gehäuses erleichtern helfen. Das Gehäuse ist fest verklebt. Der Kleber kann nicht aufgesprengt werden (vielleicht würde es gehen, wenn man den Kleber mit einer Heißluftpistole ausreichend erwärmen würde ?). Ich habe mich für die Lösung entschieden, das Gehäuse entlang der Klebenaht mit einer Puk-Metallsäge aufzusägen, da ich noch nicht wusste, wie das Netzteil aufgebaut ist. Heute würde ich nur noch die Steckerpins absägen. Als Alternative zu dieser brachialen Methode habe ich geprüft, ob man ein Netzteil selbst bauen könnte. Ich bin aber zu den Schluss gekommen, dass es nicht wirklich möglich ist, ein eigenes Netzteil so preiswert und auch so klein wie das Conrad-Netzteil zu bauen.&lt;br /&gt;
&lt;br /&gt;
== Verkabelung ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
Datei:35-starre-draehte.jpeg|Für den ersten Versuch hatte ich Einzelader-Schaltdraht direkt auf die LED-Streifen gelötet. Leider neigte der Schaltdraht dazu, an den ungünstigsten Stellen zu brechen, wenn ich die Platinen bewegte, was allein schon zum Löten erforderlich war. &lt;br /&gt;
Datei:36-fliegender-aufbau.jpeg|Fliegender Aufbau... für den ersten Systemtest.&lt;br /&gt;
Datei:37-stecker-an-led-platine.jpeg|Erst die Verwendung von abgewinkelten Steckverbindern (Stiftleiste RM 2,54, gewinkelt Rastermaß: 2.54 mm, in Kombination mit der passenden Buchsenleiste RM 2,54 Rastermaß: 2.54 mm, Alternative: Stiftleiste RM 2,54, gewinkelt Rastermaß: 2.54 mm Polzahl: 3, 72645 BKL Electronic) vereinfachte die Montage der RGB-Verbindungen drastisch. &lt;br /&gt;
Datei:38-verkabelung-1.jpeg|Zusätzlich zu den Steckverbindern wurden keine starren Einzelkabel mehr verwendet, sondern flexible Drähte (bei mir: recycelte IDE-Festplattenkabel, alternativ: Flachbandkabel, RM 1,27; Polzahl: 50, 0.09 mm², Grau Sterner Kabel, ich werde beim nächsten Mal dieses Kabel testen: Flachbandkabel 3 x 0.14 mm², Gelb, Rot, Grün,  Sterner Kabel, Conrad Best.-Nr.: 605819 - 62).&lt;br /&gt;
&lt;br /&gt;
Auch für die Anschlüsse der Kabel von den Buchsensteckern K7 und K8 an die LED-Streifenplatinen waren die Steckverbinder sehr hilfreich. Die Einzelstecker habe ich, weil ich keine Alternativen hatte/kannte, von Buchsenleisten abgetrennt, was doch recht aufwendig war. Kennt jemand eine professionellere Lösung (Name, Bezugsquelle?)&lt;br /&gt;
Datei:39-verkabelung-2.jpeg|Sobald die Funktion erfolgreich getestet wurde, können die Kabel eingekürzt und schöner verlegt werden. Eigentlich wollte ich das Klebeband durch Heisskleber ersetzen. Aber nichts ist bekanntlich beständiger als ein Provisorium.&lt;br /&gt;
Datei:40-ir-und-ldr.jpeg|Der LDR und der Infrarot-Empfänger werden an der Unterseite der Word Clock auf leeren Plätzen der Amibilight-Platine befestigt. Für den IR-Empfänger reicht doppelseitiges Klebeband, der LDR kann mit einfachem Klebeband an den Beinchen fixiert werden. &lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
P.N. (http://www.mikrocontroller.net/topic/156661#2511143) hat eine elegante Lösung zur Befestigung des LDR und TSOP vorgeschlagen:&lt;br /&gt;
&lt;br /&gt;
&amp;quot;- Der TSOP sitzt bei mir hinter dem &amp;quot;S&amp;quot; (&amp;quot;WACHTZEHNRS&amp;quot;) und ist direkt&lt;br /&gt;
auf diese Streifenplatine eingelötet. Davor habe ich natürlich die&lt;br /&gt;
PWM-Leiterbahnen des letzten Feldes durchtrennt und die 3 Beinchen auf&lt;br /&gt;
Stiftleisten am Ende der Platine geroutet. Geht bei dem Layout ganz gut.&lt;br /&gt;
Der IR-Empfang ist auch durch die Frontplatte einwandfrei&lt;br /&gt;
&lt;br /&gt;
- Der LDR sitzt hinter dem &amp;quot;M&amp;quot; (&amp;quot;TGNACHVORJM&amp;quot;) und wurde ebenso an der&lt;br /&gt;
Steifenplatine befestigt und auf eine Stiftleiste gelegt. Zusätzlich hat&lt;br /&gt;
er noch einen &amp;quot;Schirm&amp;quot; aus einer Lochrasterplatine gegen Streulicht von&lt;br /&gt;
angrenzenden Buchstaben erhalten&amp;quot;&lt;br /&gt;
&lt;br /&gt;
== Wandbefestigung der Uhr ==&lt;br /&gt;
&lt;br /&gt;
[[Datei:41-spiegelblech-1.jpeg|miniatur|Minimal Montageset: Exzenterscheiben (oben), Spiegel-Haftmagnet (links und rechts aussen), Haftblech mit Kieme]]&lt;br /&gt;
[[Datei:42-spiegelblech-2.jpeg|miniatur|Das Haftblech mit Kieme wird mit der Metallsäge getrennt und Bohrungen zur Befestigung mit Schrauben werden ergänzt (rechts Original, links Modifikation)]]&lt;br /&gt;
[[Datei:43-spiegelhalterung-montiert.jpeg|miniatur|Fertig montierte Haftbleche]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Die Word Clock kann wie jedes Bild an der Wand befestigt werden. Eine elegante, bewährte und gut funktionierende Variante stellt die Befestigung mit einer sog. Spiegelbefestigung mit Haftmagneten dar. Die Komplettsets sind meist ziemlich teuer und die Befestigungsbleche sind für die Word Clock viel zu groß. &lt;br /&gt;
&lt;br /&gt;
Eine preisgünstige Lösung findet man bei:&lt;br /&gt;
&lt;br /&gt;
Leha-Technik&amp;lt;br/&amp;gt;&lt;br /&gt;
Burger Straße 63 A&amp;lt;br/&amp;gt;&lt;br /&gt;
42859 Remscheid&amp;lt;br/&amp;gt;&lt;br /&gt;
[http://www.leha.de www.leha.de]&lt;br /&gt;
&lt;br /&gt;
Hier kann man die Einzelkomponenten kaufen. Wichtig sind nur die Exzenterscheiben (2 Stück), die Haftmagneten (2 Stück) und die Haftbleche mit Kieme (2 Stück). Die Schrauben und Dübel sollten sich in der Bastelkiste finden (ich habe 6er Dübel, mit 4 x 50 mm Schrauben verwendet). Die Exzenterscheiben haben einen entscheidenden Vorteil. Wenn der Bohrer etwas verläuft oder wenn schon die Messung ungenau ist, kann man die Befestigung mit der Exzenterscheibe immer noch schön waagerecht ausrichten. &lt;br /&gt;
&lt;br /&gt;
Theoretisch könnte man auf die Magneten verzichten. In meinem Fall war jedoch hinter der Uhr eine Stromversorgung und die Kabel waren etwas steifer als gewünscht. Das hatte zur Folge, dass die Uhr von den Kabeln von der Wand abgehoben wurde und somit leicht schräg stand. Die Magneten haben dieses Problem sehr elegant gelöst. &lt;br /&gt;
&lt;br /&gt;
Das Haftblech mit Kieme wurde mit einer Eisensäge geteilt. Der Teil mit der Kieme ist mit 2.5 cm breit genauso breit, wie der Steg für die Befestigung. Da ich im Zusammenhang mit MDF kein Vertrauen zu dem Kleber hatte, wurden zwei Bohrungen ergänzt (3,5 mm Metallbohrer, improvisiertes Versenken der Schrauben mit einem 6 mm Metallbohrer, ich habe keinen speziellen Versenkbohrer). Das Blech wurde dann geklebt und mit 3 x 20 mm Spax-Schrauben befestigt. Die MDF Platte wurde vorher mit einem 2 mm Bohrer vor gebohrt. &lt;br /&gt;
&lt;br /&gt;
Der untere, abgetrennte Teil des Haftbleches wurde für den Magneten verwendet. Seine Breite passte ebenfalls perfekt zu den Befestigungsstegen. Auch diese Bleche wurden zusätzlich mit Schrauben befestigt.&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
! Anzahl x VPE !! Artikel !! Art.Nr.&lt;br /&gt;
|-&lt;br /&gt;
| 2 x Stück || Haftblech, mit Kieme - 70 x 70 mm (selbstklebend) 3 kg || 5208608&lt;br /&gt;
|-&lt;br /&gt;
| 2 x Stück || Spiegel-Haftmagnet || 5208601&lt;br /&gt;
|-&lt;br /&gt;
| 2 x Stück || Exzenterscheibe || 5208602&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
= Das erste Mal einschalten =&lt;br /&gt;
&lt;br /&gt;
=== LED-Streifen ===&lt;br /&gt;
&lt;br /&gt;
Nach dem Verlöten aller Bauteile der LED-Streifen sollten diese vor dem endgültigen Verbau noch geprüft werden:&lt;br /&gt;
&lt;br /&gt;
# Prüfung der drei PWM-Kanäle und der Steuerleitungen auf gegenseitige Kurzschlüsse&lt;br /&gt;
# Funktionsprüfung der LED-Streifen mittels direkter Versorgung durch ein Netzteil (PWM R/G/B an GND, OUT an 13.6V): Hierbei nacheinander die einzelnen Farben der jeweiligen Wörter anschließen und ggf. nacharbeiten, falls es &#039;mal dunkel bleiben sollte&lt;br /&gt;
&lt;br /&gt;
-&amp;gt; &amp;quot;Beginner-Tipp&amp;quot;: Die mangelhaften Lötstellen findet man am besten, wenn man mit dem Diodentest des Multimeters die Lötpunkte der angrenzenden LEDs berührt&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Steuerplatine ===&lt;br /&gt;
&lt;br /&gt;
Wenn alle Bauteile verlötet sind, sollten zur ersten Prüfung alle Sockel noch leer bleiben. Wer ein entsprechendes Netzteil hat, sollte den Strom auf ca. 50mA begrenzen. Wer dies nicht kann, sollte wenigstens ein (im Regelfall auf 200mA) abgesichertes Netzteil dazwischen schalten. Zum Bestücken der einzelnen Bauteile sollte stets die Spannungsversorgung unterbrochen werden.&lt;br /&gt;
&lt;br /&gt;
# Prüfen der Spannungsversorgung auf Kurzschluss&lt;br /&gt;
# Anlegen der Versorgungsspannung (15V), am Spannungsregler sollten nun 5V anliegen. Tipp: Minus ist ganz außen, Plus ist die zweite Befestigung von außen. Kann man anhand der Unterseite der Platine kontrollieren. Im Schaltplan ist das bei der Belegung von KL1 nicht eindeutig zu erkennen!&lt;br /&gt;
# µC bestücken, die Stromaufnahme sollte nun knapp 20mA betragen&lt;br /&gt;
# Erst Fuses programmieren, dann Software flashen&lt;br /&gt;
# RTC, Schieberegister (74HCT595) und Treiber (ULN) einsetzen&lt;br /&gt;
# LED-Streifen anschließen&lt;br /&gt;
# Wenn alles funktioniert, dann blinken die 4 Minuten-LEDs nach dem Einschalten rund 5-6 mal gleichzeitig auf. Zu der Zeit fängt die RealTimeClock an zu ticken&lt;br /&gt;
# Während des Blinkens kann nun auch eine (beliebige) Taste auf der Fernbedienung gedrückt werden, und deren Anlernprozess gestartet werden (-&amp;gt; s. Manual). Für den Funktionstest muss keine dauerhafte Tastenbelegung gewählt werden, dies kann jederzeit nachgeholt werden.&lt;br /&gt;
# Wenn die FB angelernt ist, dann gibt es eine Taste, mit der alle Ausgänge (das heißt alle Wörter) nacheinander geschaltet werden (&amp;quot;Demo-Modus&amp;quot;). Den Demo-Modus kann man verlassen, in dem ein anderer Modus aktiviert wird. Drückt einfach im Anschluss an den Demo-Modus die Taste &amp;quot;Einfarb-/Modus/Farbprofile aktivieren&amp;quot;.&lt;br /&gt;
# Mit der Fernbedienung und der Uhr spielen ... :o)&lt;br /&gt;
# Nun kann das DCF-Modul angeschlossen werden (wenn möglich, per UART den DCF-Status loggen). Nach einiger Zeit (mehrere Minuten!) sollte die Uhr die aktuelle Zeit anzeigen, sofern auf der DCF-Seite alles klappt.&lt;br /&gt;
&lt;br /&gt;
Wenn eine Fernbedienung angelernt werden soll, dann muss man, während alle 4 Minuten-LEDs blinken, irgendeine Taste auf der Fernbedienung drücken. Wird die FB erkannt, dann hört das Blinken auf und die &amp;quot;eins&amp;quot; leuchtet. Jetzt musst man die Taste drücken, die zum Ein-/Ausschalten der Uhr verwendet werden soll. Als nächstes leuchtet die &amp;quot;zwei&amp;quot; usw..... --&amp;gt; Mehr dazu siehe Handbuch&lt;br /&gt;
&lt;br /&gt;
Sollte nach dem &amp;quot;Neustart&amp;quot; der Uhr keine LED mehr leuchten, KEINE PANIK... es kann sein, dass einfach die &amp;quot;Helligkeit&amp;quot; der LEDs so gering ist, dass Ihr sie einfach nicht seht.&lt;br /&gt;
&lt;br /&gt;
Tipp fürs erste Anlernen der FB: Einfach alle Tasten stur der Reihe nach durchdrücken. Dann kann man durch Zählen und Vergleichen mit der Tabelle im Handbuch solange &amp;quot;überleben&amp;quot;, bis man die Muse hatte, eine sinnvolle Belegung zu überlegen und auch zu dokumentieren!&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
= Abstimmungen =&lt;br /&gt;
Eine Stimme ist ein Strich. Nach 5 Strichen bitte ein Leerzeichen einfügen.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== offen: ==&lt;br /&gt;
IR-FB Anlernphase deaktivierbar (Default / keine FB angelernt: anlernen aktiv): | &amp;lt;br&amp;gt;&lt;br /&gt;
ethernet ntp client: ||||| ||||| ||||| || &amp;lt;br&amp;gt;&lt;br /&gt;
Bewegungsmelder: ||||| ||||| ||||| ||||| ||||| ||||| ||||&amp;lt;br&amp;gt;|&lt;br /&gt;
IR zum PC für Kommunikation/Bootloader |&amp;lt;br&amp;gt;&lt;br /&gt;
RFM12 für Kommunikation/Bootloader |||&amp;lt;br&amp;gt;&lt;br /&gt;
NTP Server (um eine genaue Zeit ins Netzwerk zu verteilen) |||&amp;lt;br&amp;gt;&lt;br /&gt;
Beim Start, alle LEDs einmal der Reihe nach Durchlaufen lassen zum Funktionstest (statt &amp;quot;Volldampfmodus&amp;quot;): ||||| ||||| ||||| || &amp;lt;br&amp;gt;&lt;br /&gt;
Ton zur vollen Stunde (Beep/Piezo): ||||| ||&amp;lt;br /&amp;gt;&lt;br /&gt;
ZBus (Ethersex) zum einstellen der Uhr über das Netzwerk, evt holen der Zeitdaten über ZBus von einem Zeitserver: || &amp;lt;br /&amp;gt;&lt;br /&gt;
zeitgesteuert Dunkelschalten wochentagsweise: ||||| ||||&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== bereits umgesetzt: ==&lt;br /&gt;
DCF: ||||| ||||| ||||| ||||| ||||| ||||| ||||| ||||| |||| &amp;lt;br&amp;gt;&lt;br /&gt;
IR für Fernbedienung: ||||| ||||| ||||| || &amp;lt;br&amp;gt;&lt;br /&gt;
Ambilight: ||||| ||||| ||||| ||||| |||| &amp;lt;br&amp;gt;&lt;br /&gt;
zeitgesteuert Dunkelschalten (z.&amp;amp;nbsp;B. nachts &amp;quot;Aus&amp;quot;): ||||| ||||| ||||| &amp;lt;br&amp;gt;&lt;br /&gt;
Bluetooth: || (Posting: [http://www.mikrocontroller.net/topic/156661?goto=1710183#1710183 Bluetooth mit Debug, Bootloader und Autoreset])&amp;lt;br&amp;gt;&lt;br /&gt;
Möglichkeit, Zeiteinstellmodus bei &amp;quot;0 Minuten&amp;quot; von Normalmodus zu unterscheiden z.B. blinkendes &amp;quot;UHR&amp;quot; |||||&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;quot;ES IST&amp;quot; soll man ein- oder ausschalten können: ||||| |&amp;lt;br&amp;gt;&lt;br /&gt;
Bluetooth per FB ein-/ausschalten: ||&amp;lt;br&amp;gt;&lt;br /&gt;
Taste &amp;quot;Speichern&amp;quot; auf FB statt automatisch |||(On Off speichert)&amp;lt;br&amp;gt;&lt;br /&gt;
kurzzeitiger &amp;quot;Volldampf-Modus&amp;quot; (alle Wörter an für bspw. 30sek): ||||| |||  - als Submodus des Demomodus, multiplexing, jeweils ein Kanal an jedem Treiber aktiv&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== An/Ausschalt-Logik ==&lt;br /&gt;
A: Manuell ausgeschaltete Uhr bleibt aus bei Erreichen der Einschaltzeit - hier könnte natürlich gleich der Stecker gezogen werden, sofern die Uhr nicht festeingebaut ist&lt;br /&gt;
&lt;br /&gt;
B: Manuell ausgeschaltete Uhr geht wieder an bei Erreichen der Einschaltzeit&lt;br /&gt;
&lt;br /&gt;
C: Es gibt eine OFF-Taste und eine STANDBY-Taste. Bei STANDBY schaltet sich die Uhr bei Erreichen der Einschaltzeit wieder ein, bei OFF bleibt sie aus.&lt;br /&gt;
&lt;br /&gt;
D: Die Variante A oder B lässt sich vor dem Kompilieren der Software als define individuell nach eigenem Gutdünken festlegen. (Viele andere Werte sind bereits heute so einstellbar in der SW)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A Strichliste: |&lt;br /&gt;
&lt;br /&gt;
B Strichliste: |||  &lt;br /&gt;
&lt;br /&gt;
C Strichliste: |||||  ||||| |||||&lt;br /&gt;
&lt;br /&gt;
D Strichliste: ||||&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&#039;&#039;&#039;Zurück zum Hauptartikel: [[Word Clock]]&#039;&#039;&#039;&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Timer und Uhren]]&lt;br /&gt;
[[Kategorie:AVR-Projekte]]&lt;br /&gt;
[[Kategorie:DCF77]]&lt;/div&gt;</summary>
		<author><name>Promeus</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=Datei:LED-DCF77.PNG&amp;diff=92122</id>
		<title>Datei:LED-DCF77.PNG</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=Datei:LED-DCF77.PNG&amp;diff=92122"/>
		<updated>2016-02-28T15:32:58Z</updated>

		<summary type="html">&lt;p&gt;Promeus: Promeus lud eine neue Version von Datei:LED-DCF77.PNG hoch&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Promeus</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=Word_Clock_Variante_1_-_getrennte_Steuerplatine&amp;diff=92121</id>
		<title>Word Clock Variante 1 - getrennte Steuerplatine</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=Word_Clock_Variante_1_-_getrennte_Steuerplatine&amp;diff=92121"/>
		<updated>2016-02-28T13:53:45Z</updated>

		<summary type="html">&lt;p&gt;Promeus: /* Anschluss eines DCF77-Moduls */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Überblick =&lt;br /&gt;
&lt;br /&gt;
[[Datei:wordclock-frontplatte-v2.png| |WordClock]]&lt;br /&gt;
&lt;br /&gt;
Diese Seite dient nur noch der Referenz für die ältere Variante mit getrennter Steuer- und Anzeigeplatine.&lt;br /&gt;
Themen, die beide Varianten gemeinsam betreffen werden im Hauptartikel [1] gepflegt.&lt;br /&gt;
&lt;br /&gt;
Links zum Hauptartikel [1], zur Variante 2 [2] zum langen Thread [3] mit dem hier alles angefangen hat und zum Original [4], das alle hier inspiriert hat.&lt;br /&gt;
&lt;br /&gt;
[1] [[Word Clock]]&amp;lt;br&amp;gt;&lt;br /&gt;
[2] [[Word Clock Variante 2]]&amp;lt;br&amp;gt;&lt;br /&gt;
[3] [http://www.mikrocontroller.net/topic/156661 Beitrag: Brauche Hilfe beim Bau einer Uhr]&amp;lt;br&amp;gt;&lt;br /&gt;
[4] [http://www.clocktwo.com http://www.clocktwo.com]&amp;lt;br&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
= WordClock FAQ =&lt;br /&gt;
Häufig tauchen im Forum Fragen zum WordClock Projekt auf (was brauche ich..., wie mache ich...), die schon mehrmals beantwortet wurden. Hier Für die Variante 1 eine Zusammenfassung der wichtigsten Fragen:&lt;br /&gt;
&lt;br /&gt;
  Q: Was brauche ich alles, um die WordClock (Variante 1) zu bauen?&lt;br /&gt;
  A: - Die Steuerplatine mit der Elektronik&lt;br /&gt;
     - Eine Frontblende (das &amp;quot;Ziffernblatt&amp;quot;)&lt;br /&gt;
     - Leuchtdioden und Platinen für die Anzeige&lt;br /&gt;
     - Eine Zwischenplatte um das Licht zwischen den einzelnen Buchstaben zu trennen&lt;br /&gt;
     - Eine Spannungsversorgung&lt;br /&gt;
     - etwas handwerkliches Geschick&lt;br /&gt;
&lt;br /&gt;
  Q: Kann ich Bauteile der WordClock über Sammelbestellungen billiger bekommen?&lt;br /&gt;
  A: Es wurden in der Vergangenheit (seit Dez.2009) mehrere Sammelbestellungen angeboten. Im einzelnen waren das:&lt;br /&gt;
     - Die [http://www.mikrocontroller.net/articles/Word_Clock_Variante_1#Sammelbestellung_der_Platine Leiterplatte] für die Steuerelektronik (von ukw)&lt;br /&gt;
     - [http://www.mikrocontroller.net/articles/Word_Clock_Variante_1#Sammelbestellung Leuchtdioden mit Streifenplatinen] für die Anzeige (von wawibu / matsch)&lt;br /&gt;
     - Eine Frontblende (Buchstabenmatrix)&lt;br /&gt;
        - aus [http://www.mikrocontroller.net/articles/Word_Clock#Sammelbestellung_.28Plexiglas.29 Plexiglas], schwarz (von ukw)&lt;br /&gt;
        - aus [http://www.mikrocontroller.net/articles/Word_Clock#Sammelbestellung_.28Edelstahl.29 Edelstahl] (von andreasp)&lt;br /&gt;
     - Eine [http://www.mikrocontroller.net/articles/Word_Clock#Zwischenplatte Zwischenplatte] (von wawibu / matsch)&lt;br /&gt;
&lt;br /&gt;
  Q: Kann ich eine fertige Uhr kaufen?&lt;br /&gt;
  A: Ja, beim [http://www.qlocktwo.com/ Hersteller] der Vorlage ;-). Hier im uC.net Forum gibt es nur Tipps und Hilfe zum Selberbauen.&lt;br /&gt;
     Eine komplette WordClock kann man hier NICHT bekommen.&lt;br /&gt;
     ...und etwas einlesen wird auch keinem abgenommen ;-)&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
= Aufbau einer Wordclock =&lt;br /&gt;
Hier gibt es ein von bomibob äußerst kunstvolles Video zum Bau einer Word Clock:&lt;br /&gt;
http://www.youtube.com/watch?v=OYhtc-8StXA&lt;br /&gt;
(zugehöriger Post → http://www.mikrocontroller.net/topic/goto_post/2328168)&lt;br /&gt;
&lt;br /&gt;
Details zu den einzelnen Komponenten sind den entsprechenden Unterpunkten, oder dem Hauptartikel zu entnehmen.&lt;br /&gt;
&lt;br /&gt;
= Elektronik =&lt;br /&gt;
* Atmega168&lt;br /&gt;
* 8Mhz (interner Osc.)&lt;br /&gt;
* 24-Bit-Schieberegister an SPI für 24 Wörter&lt;br /&gt;
* 4 Output-Pins für Minutenanzeige&lt;br /&gt;
* 4 weitere GPOS - für allgemeine Zwecke&lt;br /&gt;
* RGB-Steuerung über PWM gegen GND, d.h. 32x3-Matrix&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
= Schaltung =&lt;br /&gt;
&lt;br /&gt;
[[Datei:wordclock-schmal-schaltung.png|miniatur|Schaltbild V1.0]]&lt;br /&gt;
[[Datei:wordclock-schmal-schaltung-2.0.png|miniatur|Schaltbild V2.0]]&lt;br /&gt;
[[Datei:TSOP-wordclock-1.1.png|miniatur|TSOP17xx in V1.1]]&lt;br /&gt;
[[Datei:RXTX-wordclock-1.1.png|miniatur|Rx/Tx in V1.1 und V2.0]]&lt;br /&gt;
[[Datei:K10-wordclock-2.0.png|miniatur|K10 als I2C in V2.0]]&lt;br /&gt;
[[Datei:K11-wordclock-2.0.png|miniatur|K11 als SPI in V2.0]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Änderungen der Platinen-Version 1.0 gegenüber dem Prototypen:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Pullup-Widerstand R7 am DCF-Anschluss entfällt&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Änderungen der Platinen-Version 1.1 gegenüber 1.0:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Die Tiefpass-Schaltung für den TSOP17xx ist nun korrekt geschaltet. Die Abweichung sieht man rechts im Zusatzschaltbild.&lt;br /&gt;
* Der Verbinder K9 (UART-Anschluss für Debug-Zwecke) hat zwei zusätzliche Pins erhalten, siehe Zusatzschaltbild rechts.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Änderungen der Platinen-Version 2.0 gegenüber 1.1:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Diode D1 entfällt.&lt;br /&gt;
* 6-poliger ISP-Wannenstecker ersetzt 10-poligen Wannenstecker, Vcc nun angeschlossen&lt;br /&gt;
* Neu: Stiftleiste K10 als Anschlüsse für externe I2C-Module, auf der Platine oberhalb der RTC zu finden&lt;br /&gt;
* Neu: Stiftleiste K11 als Anschlüsse für externe SPI-Module, auf der Platine ganz links&lt;br /&gt;
&lt;br /&gt;
Siehe auch untenstehende Zusatzschaltbilder rechts. Die neuen Stiftleisten sind optional, müssen also nicht unbedingt bestückt werden.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Zugehörige Schaltung als PDF&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
* Version 1.0: &#039;&#039;&#039;[[Media:wordclock-schmal.pdf|wordclock-schmal.pdf]]&#039;&#039;&#039;&lt;br /&gt;
* Version 2.0: &#039;&#039;&#039;[[Media:wordclock-schmal-schaltung-2.0.pdf|wordclock-schmal-schaltung-2.0]]&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Sammelbestellung der Platine ==&lt;br /&gt;
&lt;br /&gt;
Stand Dezember 2015:&lt;br /&gt;
&lt;br /&gt;
Ich habe wegen einiger Nachfragen noch Steuerplatinen in begrenzter Stückzahl nachbestellt. Wenn jemand daran interessiert ist, kann er sich bei mir (Benutzer [http://www.mikrocontroller.net/user/show/ukw &#039;&#039;&#039;ukw&#039;&#039;&#039;]) per PN melden.&lt;br /&gt;
&lt;br /&gt;
Kosten pro Platine: 15 EUR zzgl. Versand von 2,00 EUR bei bis zu 4 Stück. Bei mehr als 4 Stück beträgt der Versand 3,00 EUR.&lt;br /&gt;
&lt;br /&gt;
Beispiele:&lt;br /&gt;
&lt;br /&gt;
* 1 Platine: 15 EUR + 2,00 Versand: 17,00 EUR&lt;br /&gt;
* 2 Platinen: 30 EUR + 2,00 Versand: 32,00 EUR&lt;br /&gt;
* ...&lt;br /&gt;
* 5 Platinen: 75 EUR + 3,00 Versand: 78,00 EUR&lt;br /&gt;
&lt;br /&gt;
Parallel zu dieser Sammelbestellung gibt es noch eine neue (kleinere) Sammelbestellung für passende Frontplatten, siehe auch:&lt;br /&gt;
&lt;br /&gt;
[http://www.mikrocontroller.net/articles/Word_Clock#Sammelbestellung_.28Plexiglas.29 Sammelbestellung Frontplatten]&lt;br /&gt;
&lt;br /&gt;
Beim Versand zusammen mit den Frontplatten entfallen natürlich die Versandkosten für die Platinen.&lt;br /&gt;
&lt;br /&gt;
Maße: 146mm x 35,6mm.&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== Reichelt Warenkorb Mono-Variante ==&lt;br /&gt;
Da selbst bei der Mono-Variante der ATmega 88 langsam mehr als eng wird, wurde dieser Warenkorb auch auf den ATmega 168 umgestellt.&lt;br /&gt;
&lt;br /&gt;
Eine vollständige Liste zur Bestellung der nötigen Bauteile ist bei Reichelt abgelegt: &#039;&#039;&#039;[http://www.reichelt.de/?ACTION=20;AWKID=580204;PROVID=2084 Warenkorb-Mono]&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== Reichelt Warenkorb RGB-Variante ==&lt;br /&gt;
Für die RBG-Version wird der ATmega 168 benötigt. Ein angepasster &#039;&#039;&#039;[http://www.reichelt.de/?ACTION=20;AWKID=580197;PROVID=2084 WARENKORB]&#039;&#039;&#039; ist bei Reichelt hinterlegt.&lt;br /&gt;
&lt;br /&gt;
Im Warenkorb befindet sich nun auch der Nachfolger TSOP 31238 des nicht mehr lieferbaren TSOP17xx. ( 15.11.2011 ).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;quot;Beginner-Tipp&amp;quot;: &lt;br /&gt;
&lt;br /&gt;
Der Warenkorb ist eine tolle Vereinfachung der Bestellung. Bevor Ihr jedoch das DCF-77-Modul automatisch mitbestellt, lest bitte mit Hilfe der Suchfunktion das Forum zu diesem Thema durch. Das DCF-77-Modul ist, wie es im Forum so nett formuliert wurde, &amp;quot;ein Sensibelchen&amp;quot;. Es gäbe eine Alternative von C* (siehe Forum). Und um es ganz deutlich zu formulieren: Die Uhr funktioniert auch ohne DCF-77-Modul ganz prima. Sie kann mit der IR-Fernbedienung ganz einfach gestellt werden. Man braucht das Modul nicht wirklich.&lt;br /&gt;
Es befindet sich kein Flachbandkabel im Warenkorb.&lt;br /&gt;
----&lt;br /&gt;
== Reichelt Warenkorb LED Single Board ==&lt;br /&gt;
&lt;br /&gt;
Für das neue SingleBoard (Paket 1) werden zusätzliche Bauteile benötigt. Diese sind in einem eigenen &#039;&#039;&#039;[http://www.reichelt.de/?ACTION=20;AWKID=847662;PROVID=2084 WARENKORB]&#039;&#039;&#039; bei Reichelt hinterlegt.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== Reichelt Warenkorb Pollin DCF Stabilisierungsplatine ==&lt;br /&gt;
&lt;br /&gt;
Teil des Single Boards ist eine Stabilisierungsschaltung für den Pollin DCF Empfänger. Bei Verwendung des Pollin DCF Empfängers wird folgender &#039;&#039;&#039;[http://www.reichelt.de/?ACTION=20;AWKID=986833;PROVID=2084 WARENKORB]&#039;&#039;&#039; zusätzlich benötigt.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;[http://www.pollin.de/shop/dt/NTQ5OTgxOTk-/Bausaetze_Module/Module/DCF_Empfangsmodul_DCF1.html Link]&#039;&#039;&#039; zum DCF-Empfänger bei Pollin.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== Bestückung ==&lt;br /&gt;
&lt;br /&gt;
Hier eine kurze Beschreibung zur Bestückung:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Version 1.0 (schmale Ausführung):&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
[[Datei:Wordclock-schmal.png|miniatur|Bestückte Platine (Version 1.0)]]&lt;br /&gt;
[[Datei:Wordclock-schmal-1.1.png|miniatur|Bestückte Platine (Version 1.1)]]&lt;br /&gt;
[[Datei:Wordclock-schmal-2.0.png|miniatur|Bestückte Platine (Version 2.0)]]&lt;br /&gt;
&lt;br /&gt;
* Oben Mitte: Anschluss für stehende Lithium-Knopfbatterie CR2032 (die drei abgebildeten Stifte sind natürlich nicht notwendig, die Batterie wird direkt eingelötet)&lt;br /&gt;
* Unten 3-polige Stiftleiste: Anschluss für DCF77-Modul&lt;br /&gt;
* Unten 2-polige Stiftleiste: RX &amp;amp; TX (für Testzwecke)&lt;br /&gt;
* Unten rechts: TSOP17XX/SFH5110 für Infrarot-Empfang&lt;br /&gt;
* Darüber: 2-polige Stiftleiste für LDR (Helligkeitsmessung)&lt;br /&gt;
* Oben links und rechts: Wannenstecker für insg. 32 Ausgabekanäle: OUT0-OUT23 (für die Wörter), OUTL1-OUTL4 (für die Minuten) und OUTG1-OUTG4 (für General-Purpose-Ausgabezwecke)&lt;br /&gt;
* Rechts: Anschlussklemmen für Versorgungsspannung 7-20V und die drei PWM-Kanäle Rot, Grün und Blau.&lt;br /&gt;
* Für Atmel Programmer muss der ISP VTG Anschluss (Pin 2) direkt mit der 5V Spannungsversorgung verbunden werden (z.Bsp. Plus Pol von C9).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Version 1.1 (schmale Ausführung):&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Wie 1.0, jedoch hat der Verbinder K9 (UART-Anschlüsse Rx/Tx für Debug-Zwecke) zwei zusätzliche Pins erhalten, siehe abweichendes Bestückungsbild rechts. Belegung von links nach rechts: Vcc / GND / RX / TX&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Version 2.0 (schmale Ausführung):&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Änderungen gegenüber 1.1:&lt;br /&gt;
&lt;br /&gt;
* Diode D1 entfällt&lt;br /&gt;
* 6-poliger statt 10-poliger ISP-Stecker&lt;br /&gt;
* Am ISP-Stecker ist auch Vcc angeschlossen&lt;br /&gt;
* Anschlussmöglichkeit für weitere I2C-Module&lt;br /&gt;
* Anschlussmöglichkeit für weitere Schieberegister über SPI&lt;br /&gt;
&lt;br /&gt;
[[Datei:RXTX-platine-wordclock-1.1.png|miniatur|Rx/Tx in V1.1 und V2.0]]&lt;br /&gt;
&lt;br /&gt;
Der IR-Empfänger TSOP17XX/SFH5110 muss hinter einem nicht benutzten Buchstaben angebracht werden. Deshalb braucht man ihn nicht unbedingt auf die Platine löten, sondern kann ihn auch über ein 3-poliges Kabel mit der Platine verbinden. In diesem Fall sollte der Kondensator C2 nicht auf die Platine, sondern direkt am TSOP17XX/SFH5110 (C2 Minus an Pin 1, C2 Plus an Pin 2) angelötet werden. Bei Verwendung eines SFH5110 Pinbelegung beachten!&lt;br /&gt;
&lt;br /&gt;
Je nach Ort des LDRs (hinter Buchstaben bzw. mit/ohne Dffusor) kann die automatische Helligkeitsregelung unterschiedlich ausfallen. Hier muss man eventuell den Widerstand R6 variieren, wenn das Ergebnis nicht optimal sein sollte.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Bestückung und Anschlüsse&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
[[Datei:Wordclock-schmal-bestueckungsdruck.png|miniatur|Bestückungsaufdruck der Version 1.0]]&lt;br /&gt;
&lt;br /&gt;
[[Datei:Wordclock-schmal-bestueckungsdruck-1.1.png|miniatur|Bestückungsaufdruck der Version 1.1]]&lt;br /&gt;
&lt;br /&gt;
[[Datei:Wordclock-schmal-bestueckungsdruck-2.0.png|miniatur|Bestückungsaufdruck der Version 2.0]]&lt;br /&gt;
&lt;br /&gt;
[[Datei:Wordclock-schmal-bestueckt.jpg|miniatur|Bestückung: Orientierung der IRLUs beachten!]]&lt;br /&gt;
&lt;br /&gt;
[[Datei:Wordclock-schmal-anschluesse.png|miniatur|Anschlüsse V1.0]]&lt;br /&gt;
[[Datei:Wordclock-schmal-anschluesse-1.1.png|miniatur|Anschlüsse V1.1]]&lt;br /&gt;
[[Datei:Wordclock-schmal-anschluesse-2.0.png|miniatur|Anschlüsse V2.0]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;WICHTIG (für 1.x und 2.x):&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Der oberste IRLU2905 muss anders herum eingelötet werden (Metall Richtung Spannungsregler) als die beiden unteren (Metall Richtung Schraubklemme). Siehe auch Foto rechts.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Möchte man einfarbige LEDs verwenden und auf die RGB-Steuerung verzichten, schließt man einfach zwei der drei RGB-PWM-Kanäle nicht an und verwendet stattdessen nur PWMR zur PWM-Steuerung. Die 2 zu PWMG und PWMB gehörenden IRLUs und die angeschlossenen 4 Widerstände am Gate der IRLUs kann man dann auch weglassen.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Bestückungsliste:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 Name                Wert&lt;br /&gt;
 C1,C3,C4,C6,C8,C9   100NF&lt;br /&gt;
 C10,C11,C12,C13     100NF&lt;br /&gt;
 C2                  4,7µF&lt;br /&gt;
 C5,C7               47µF&lt;br /&gt;
 D1                  1N4001&lt;br /&gt;
 IC1                 ATMEGA88&lt;br /&gt;
 IC2                 7805&lt;br /&gt;
 IC3                 TSOP1738 oder TSOP31238 oder SFH5110 (andere Pinbelegung!)&lt;br /&gt;
 IC4,IC5,IC6         74HCT595N&lt;br /&gt;
 IC7                 DS1307&lt;br /&gt;
 IC8,IC9,IC10,IC11   UDN2981A&lt;br /&gt;
 K4                  Wannenstecker 10-polig&lt;br /&gt;
 K7,K8               Wannenstecker 16-polig&lt;br /&gt;
 K6                  LDR&lt;br /&gt;
 KL1                 KLEMME5POL&lt;br /&gt;
 Q1                  32,768KHz&lt;br /&gt;
 R1,R6,R8,R10,R12    10K&lt;br /&gt;
 R7                  10K, entfällt!&lt;br /&gt;
 R2                  100&lt;br /&gt;
 R3,R4               4K7&lt;br /&gt;
 R5,R9,R11           82&lt;br /&gt;
 T1,T2,T3            IRLU2905&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Davon abweichend für 2.0:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 Name                Wert&lt;br /&gt;
 K4                  Wannenstecker 6-polig (statt 10-polig)&lt;br /&gt;
 K10                 I2C (neu, optional)&lt;br /&gt;
 K11                 SPI (neu, optional)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Anmerkung zu C2 und R2:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
C2 und R2 bilden zusammen einen Tiefpass. Hier gilt: Soll der TSOPxxxx/SFH5110 über ein längeres Kabel entfernt von der Platine angebracht werden, sollte man den Kondensator C2 nicht in die Platine löten, sondern direkt am Empfänger anbringen (Achtung: TSOP17XX und SFH5110 haben unterschiedliche Pinbelegung).&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== FAQ zur Bestückung ==&lt;br /&gt;
&lt;br /&gt;
[[Datei:Wordclock-schmal-bestueckt.jpg|miniatur|Bestückung: Orientierung der IRLUs (ganz rechts) beachten!]]&lt;br /&gt;
&lt;br /&gt;
 Q: Wie herum müssen die IRLUs eingelötet werden?&lt;br /&gt;
 A: Der oberste kommt mit der Metallseite nach links (Richtung&lt;br /&gt;
    Spannungsregler), Pin 1 ist hier der untere. Die anderen beiden IRLUs&lt;br /&gt;
    werden mit der Metallseite Richtung Schraubklemme eingelötet, siehe auch&lt;br /&gt;
    Foto rechts. Hier ist jeweils Pin 1 der obere.&lt;br /&gt;
&lt;br /&gt;
 Q: Welche ICs sollte ich sockeln?&lt;br /&gt;
 A: Wenn durch einen versehentlichen Kurzschluss bei der Freiluftverdrahtung der&lt;br /&gt;
    LEDs ein UDN2981 abfackelt, ist das ägerlich. Daher sollte man zumindest&lt;br /&gt;
    die UDNs und den ATMega sockeln. Besser ist es natürlich, alle zu sockeln.&lt;br /&gt;
&lt;br /&gt;
 Q: Bei dem ATMega und der RTC ist nicht ersichtlich, wie herum sie eingebaut&lt;br /&gt;
    werden müssen?&lt;br /&gt;
 A: Doch, kann man sehen: Der Lötpunkt von Pin1 ist immer rechteckig, die&lt;br /&gt;
    anderen sind oval. Das gilt übrigens für fast alle Bauteile, auch die Wannen.&lt;br /&gt;
&lt;br /&gt;
 Q: Ich möchte oben statt der abgebildeten zwei 2x8-poligen Stiftleisten 16-polige&lt;br /&gt;
    Wannenstecker nehmen. Wie herum kommen dann die oberen Wannen drauf?&lt;br /&gt;
 A: Mit der Kerbe nach unten, sieht man auch am rechteckigen Lötpunkt - und&lt;br /&gt;
    auch auf dem Foto rechts.&lt;br /&gt;
&lt;br /&gt;
 Q: Kann ich auf die Batterie verzichten, weil ich DCF77 einsetze bzw. nach&lt;br /&gt;
    einem Stromausfall die Uhr per Fernbedienung selbst neu stellen möchte?&lt;br /&gt;
 A: Wenn man keine Batterie einsetzt, sollte man VBat der RTC DS1307 mit GND&lt;br /&gt;
    verbinden. Das geht am einfachsten an den auf der Platine vorgesehenen&lt;br /&gt;
    Batterieanschlüssen: einfach K1 (Bat+) und K3 (Bat-) mit einem Stück Draht&lt;br /&gt;
    überbrücken. Übrigens: die Batterie hält lt. Datenblatt des DS1307&lt;br /&gt;
    10 Jahre, es ist also durchaus sinnvoll, diese auch zu bestücken.&lt;br /&gt;
&lt;br /&gt;
 Q: Der Infrarot-Empfänger TSOP17XX ist abgekündigt. Gibt es dazu eine Alternative?&lt;br /&gt;
 A: Als Ersatz kann man den [http://www.reichelt.de/?ARTICLE=107210 TSOP31238] nehmen. Er ist pinkompatibel.&lt;br /&gt;
&lt;br /&gt;
 Q: Kann ich (aus Kostengründen) auch einfarbige LEDs verwenden?&lt;br /&gt;
 A: Ja, einfach zwei der drei RGB-PWM-Kanäle nicht anschließen und nur PWMR (für Rot) benutzen.&lt;br /&gt;
    Die 2 zu PWMG und PWMB gehörenden IRLUs und die angeschlossenen 4 Widerstände am Gate der IRLUs&lt;br /&gt;
    kann man dann auch weglassen.&lt;br /&gt;
&lt;br /&gt;
&amp;quot;Beginner-Tipp&amp;quot;:&lt;br /&gt;
&lt;br /&gt;
[[Datei:Testmodul-Schaltplatine.JPG|miniatur]]&lt;br /&gt;
&lt;br /&gt;
Beim Zusammenbau der Word Clock gibt es eine Reihe von Fehlerquellen (Programmierung, Aufbau der Steuerplatine, Lötfehler auf den LED-Streifen, Verkabelung etc.). Für die Fehlersuche aber auch für das erste Erfolgserlebnis nach dem Zusammenbau der Schaltplatine kann man sich relativ einfach mit Hilfe von Vorwiderständen und Standard-LEDs eine &amp;quot;Test-Umgebung&amp;quot; aufbauen. Die ausgedruckte Tabelle mit der Zuordnung der Ausgänge/LEDs zu den entsprechenden Wörtern erleichtert die Interpretation. Achtung: auf die richtige &amp;quot;Default&amp;quot;-Sprachvariante achten. Wenn die LEDs dann wie erwartet leuchten = erstes Erfolgserlebnis. &lt;br /&gt;
&lt;br /&gt;
Eine BestückungsInfo für die Version V1.1 gibt es als PDF Download: &#039;&#039;&#039;[[Media:WordClockSteuerplatineV1.1Bestueckung.pdf]]&#039;&#039;&#039;&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
= Anschluss der LEDs =&lt;br /&gt;
&lt;br /&gt;
=== Zuordnung der Kanäle ===&lt;br /&gt;
&lt;br /&gt;
[[Datei:Wannen.png|400px|Anschlüsse der Wannenstecker]]&lt;br /&gt;
&lt;br /&gt;
Folgende Tabelle enthält die Zuordnung der Wörter zu den Pins der Wannenstecker.&lt;br /&gt;
Die Bezeichnungen der Pins entsprechen dem Schaltplan. Zu beachten ist, dass die Reihenfolge der Wörter nichts mit der Anordnung auf der Frontplatte zu tun hat.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; id=&amp;quot;pinbelegungen&amp;quot;&lt;br /&gt;
|+ &#039;&#039;&#039;Zuordnung Pins&#039;&#039;&#039;&lt;br /&gt;
|-                    &lt;br /&gt;
! Anschluss || Pin || [[#Deutsch (2-sprachig) |Frontplatte deutsch 2-sprachig]]  || [[#Deutsch (3-sprachig) |Frontplatte deutsch 3-sprachig]]  || [[#Englisch|Frontplatte Englisch]]&lt;br /&gt;
|-                                                         &lt;br /&gt;
|  OUT0 || K7-08 || ES IST               ||  ZW                         || IT IS&lt;br /&gt;
|-                                                        &lt;br /&gt;
|  OUT1 || K7-07 || FÜNF  (Minuten)      ||  EI                         || FIVE   (Minuten) &lt;br /&gt;
|-                                                        &lt;br /&gt;
|  OUT2 || K7-06 || ZEHN  (Minuten)      ||  N                          || TEN    (Minuten) &lt;br /&gt;
|-                                                        &lt;br /&gt;
|  OUT3 || K7-05 || VOR   (Minuten)      ||  S                          || QUARTER &lt;br /&gt;
|-                                                        &lt;br /&gt;
|  OUT4 || K7-04 || DREI  (Minuten)      ||  IEBEN                      || TWENTY (Minuten) &lt;br /&gt;
|-                                                        &lt;br /&gt;
|  OUT5 || K7-03 || VIERTEL              ||  DREI                       || HALF &lt;br /&gt;
|-                                                        &lt;br /&gt;
|  OUT6 || K7-02 || NACH                 ||  VIER                       || TO &lt;br /&gt;
|-                                                        &lt;br /&gt;
|  OUT7 || K7-01 || VOR                  ||  FÜNF                       || PAST &lt;br /&gt;
|-                                                        &lt;br /&gt;
|  OUT8 || K7-16 || HALB                 ||  SECHS                      || ONE &lt;br /&gt;
|-                                                        &lt;br /&gt;
|  OUT9 || K7-15 || S                    ||  ACHT                       || TWO &lt;br /&gt;
|-                                                        &lt;br /&gt;
|  OUT10 || K7-14 || EIN                 ||  NEUN                       || THREE &lt;br /&gt;
|-                                                        &lt;br /&gt;
|  OUT11 || K7-13 || ZWEI                ||  ZEHN                       || FOUR &lt;br /&gt;
|-                                                        &lt;br /&gt;
|  OUT12 || K7-12 || DREI                ||  ELF                        || FIVE &lt;br /&gt;
|-                                                        &lt;br /&gt;
|  OUT13 || K7-11 || VIER                ||  ZWÖLF                      || SIX &lt;br /&gt;
|-                                                        &lt;br /&gt;
|  OUT14 || K7-10 || FÜNF                ||  ES IST                     || SEVEN &lt;br /&gt;
|-                                                        &lt;br /&gt;
|  OUT15 || K7-09 || SECHS               ||  UHR                        || EIGHT &lt;br /&gt;
|-                                                        &lt;br /&gt;
|  OUT16 || K8-08 || SIEBEN              ||  FÜNF (Minuten)             || NINE &lt;br /&gt;
|-                                                        &lt;br /&gt;
|  OUT17 || K8-07 || ACHT                ||  ZEHN (Minuten)             || TEN &lt;br /&gt;
|-                                                        &lt;br /&gt;
|  OUT18 || K8-06 || NEUN                ||  ZWANZIG (Minuten)      || ELEVEN &lt;br /&gt;
|-                                                        &lt;br /&gt;
|  OUT19 || K8-05 || ZEHN                ||  DREI (Minuten)             || TWELVE &lt;br /&gt;
|-                                                        &lt;br /&gt;
|  OUT20 || K8-04 || ELF                 ||  VIERTEL (Minuten)          || O CLOCK  &lt;br /&gt;
|-                                                        &lt;br /&gt;
|  OUT21 || K8-03 || ZWÖLF               ||  NACH                       || unverbunden&lt;br /&gt;
|-                                                        &lt;br /&gt;
|  OUT22 || K8-02 || UHR                 ||  VOR                        || unverbunden&lt;br /&gt;
|-                                                        &lt;br /&gt;
|  OUT23 || K8-01 || unverbunden         ||  HALB                       || unverbunden&lt;br /&gt;
|-                                                        &lt;br /&gt;
|  OUTL1 || K8-09 || min1                ||  min1                       || min1&lt;br /&gt;
|-                                                        &lt;br /&gt;
|  OUTL2 || K8-10 || min2                ||  min2                       || min2&lt;br /&gt;
|-                                                        &lt;br /&gt;
|  OUTL3 || K8-11 || min3                ||  min3                       || min3&lt;br /&gt;
|-                                                        &lt;br /&gt;
|  OUTL4 || K8-12 || min4                ||  min4                       || min4&lt;br /&gt;
|-                                                        &lt;br /&gt;
|  OUTG1 || K8-13 || Ambilight (opt.)           ||  Ambilight (opt.)                  || Ambilight (opt.)           &lt;br /&gt;
|-                                                        &lt;br /&gt;
|  OUTG2 || K8-14 || unverbunden         ||  unverbunden                || unverbunden&lt;br /&gt;
|-                                                        &lt;br /&gt;
|  OUTG3 || K8-15 || unverbunden         ||  unverbunden                || unverbunden&lt;br /&gt;
|-                                                        &lt;br /&gt;
|  OUTG4 || K8-16 || dcf Empfang         ||  dcf Empfang                || dcf Empfang             &lt;br /&gt;
|}&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
=== Beschaltungsvarianten der LEDs ===&lt;br /&gt;
&lt;br /&gt;
Da die Schaltung genügend Power hat, um eine Unmenge an RGB-LEDs zu treiben, gibt es folgende Möglichkeiten, die auch mixbar sind:&lt;br /&gt;
&lt;br /&gt;
1. Pro Wort für jeden Buchstaben eine RGB-LED (mit gemeinsamer Anode) in&lt;br /&gt;
Parallelschaltung (natürlich mit geeignetem Vorwiderstand pro LED)&lt;br /&gt;
&lt;br /&gt;
Prinzip (am Beispiel des Wortes &amp;quot;VIER&amp;quot;):&lt;br /&gt;
&lt;br /&gt;
         /---|&amp;gt;|----| R1R |---- PWMR&lt;br /&gt;
      +--|---|&amp;gt;|----| R1G |---- PWMG     &amp;quot;V&amp;quot;&lt;br /&gt;
      |  \---|&amp;gt;|----| R1B |---- PWMB&lt;br /&gt;
      |&lt;br /&gt;
      |  /---|&amp;gt;|----| R2R |---- PWMR&lt;br /&gt;
      +--|---|&amp;gt;|----| R2G |---- PWMG     &amp;quot;I&amp;quot;&lt;br /&gt;
      |  \---|&amp;gt;|----| R2B |---- PWMB&lt;br /&gt;
 OUTx-+&lt;br /&gt;
      |  /---|&amp;gt;|----| R3R |---- PWMR&lt;br /&gt;
      +--|---|&amp;gt;|----| R3G |---- PWMG     &amp;quot;E&amp;quot;&lt;br /&gt;
      |  \---|&amp;gt;|----| R3B |---- PWMB&lt;br /&gt;
      |&lt;br /&gt;
      |  /---|&amp;gt;|----| R4R |---- PWMR&lt;br /&gt;
      +--|---|&amp;gt;|----| R4G |---- PWMG     &amp;quot;R&amp;quot;&lt;br /&gt;
         \---|&amp;gt;|----| R4B |---- PWMB&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
2. Pro Wort für jeden Buchstaben eine RGB-LED in Reihenschaltung (mit&lt;br /&gt;
nur 1 Vorwiderstand für die ganze Reihe, bzw. 3 wegen RGB). Das geht&lt;br /&gt;
aber nur, wenn die RGB-LEDs unabhängige Anoden und Kathoden haben (ja,&lt;br /&gt;
die gibt es).&lt;br /&gt;
&lt;br /&gt;
Prinzip:&lt;br /&gt;
                         &amp;quot;V&amp;quot;    &amp;quot;I&amp;quot;    &amp;quot;E&amp;quot;    &amp;quot;R&amp;quot;&lt;br /&gt;
         /----| R1R |----|&amp;gt;|----|&amp;gt;|----|&amp;gt;|----|&amp;gt;|---- PWMR&lt;br /&gt;
 OUTx --+-----| R1G |----|&amp;gt;|----|&amp;gt;|----|&amp;gt;|----|&amp;gt;|---- PWMG&lt;br /&gt;
         \----| R1B |----|&amp;gt;|----|&amp;gt;|----|&amp;gt;|----|&amp;gt;|---- PWMB&lt;br /&gt;
&lt;br /&gt;
Theoretisch könnte man solche Streifen als Platine herstellen, welche man dann immer auf die gewünschte Länge kürzt, als 1, 2, 3 ... 7 Buchstaben.&lt;br /&gt;
&lt;br /&gt;
Bei Verwendung von einfarbigen LEDs vereinfachen sich die Prinzip-Schaltungen wie folgt:&lt;br /&gt;
&lt;br /&gt;
1. Parallelschaltung, eine LED pro Buchstabe im Wort:&lt;br /&gt;
&lt;br /&gt;
       /----|&amp;gt;|----| R1 |---- PWMR     &amp;quot;V&amp;quot;&lt;br /&gt;
      +-----|&amp;gt;|----| R2 |---- PWMR     &amp;quot;I&amp;quot;&lt;br /&gt;
 OUTx-+&lt;br /&gt;
      +-----|&amp;gt;|----| R3 |---- PWMR     &amp;quot;E&amp;quot;&lt;br /&gt;
       \----|&amp;gt;|----| R4 |---- PWMR     &amp;quot;R&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
2. Reihenschaltung, eine LED pro Buchstabe im Wort:&lt;br /&gt;
&lt;br /&gt;
                    &amp;quot;V&amp;quot;    &amp;quot;I&amp;quot;    &amp;quot;E&amp;quot;    &amp;quot;R&amp;quot;&lt;br /&gt;
 OUTx ----| R1 |----|&amp;gt;|----|&amp;gt;|----|&amp;gt;|----|&amp;gt;|---- PWMR&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Zum Berechnen der Vorwiderstände kann z.&amp;amp;nbsp;B. dieser Rechner&lt;br /&gt;
verwendet werden: &#039;&#039;&#039;[http://www.elektronik-kompendium.de/sites/bau/1109111.htm Vorwiderstands-Rechner]&#039;&#039;&#039; oder &#039;&#039;&#039;[http://www.modding-faq.de/index.php?artid=506 Vorwiderstands-Rechner mit Unterstützung für Reihenschaltung]&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Damit die LEDs selbst nicht sichtbar sind, benötigt man hinter den transparenten Buchstaben einen Diffusor. Im einfachsten Fall kann das eine weiße Schicht Farbe sein.&lt;br /&gt;
&lt;br /&gt;
&amp;quot;Beginner-Tipp&amp;quot;:&lt;br /&gt;
&lt;br /&gt;
In der Sammelbestellung wurden die Vorwiderstände für die Reihenschaltung berechnet. &lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
=== LEDs &amp;amp; Platinen ===&lt;br /&gt;
==== Single-LED-Platine ====&lt;br /&gt;
Ende 2013 wurde eine neue Platine für die LEDs entworfen. Diese reduziert die notwendigen Löt- und Verdrahtungsarbeiten auf ein minimum.&amp;lt;br&amp;gt;&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
| Top Seite des Single Boards: || Bottom Seite des Single Boards:&lt;br /&gt;
|-&lt;br /&gt;
| [[Datei:Single_Board_v4_TOP.jpg|350px|Singel LED Platine - LED Seite]]&lt;br /&gt;
 || [[Datei:Single_Board_v4_BOTTOM.jpg|350px|Singel LED Platine - Widerstand Seite]]&lt;br /&gt;
|}&lt;br /&gt;
Das Board ist wie folgt konzipiert:&lt;br /&gt;
* von der TOP Seite betrachtet, befinden sich rechts die 4 Platinen für die Minuten-LEDs&lt;br /&gt;
* von der TOP Seite betrachtet, befindet sich oben rechts eine kleine Zusatzplatine, welche zur Stabilisierung des Pollin DCF Empfängers konstruiert wurde - DANKE an Thomas K.! &amp;lt;br&amp;gt;Anbei der Schaltplan und der Bestückungsplan:&amp;lt;br&amp;gt;[[Datei:Single_Board_v4_DCF77-Schaltplan.png|200px]] [[Datei:Single-Board-v4-DCF-Bestueckung.JPG|300px]]&amp;lt;br&amp;gt;IC1 und C3 sind auf der Rückseite zu bestücken.&lt;br /&gt;
&amp;lt;br&amp;gt;Die notwendigen Bauteile sind als [http://www.reichelt.de/?ACTION=20;AWKID=986833;PROVID=2084 Warenkorb bei Reichelt] hinterlegt.&lt;br /&gt;
* es besteht die Möglichkeit 2 zusätzliche PLCC-6 LEDs zu bestücken (D1 und D2 - links und rechts von SECHS) um so bis zu 6 Status-Anzeigen nach vorne zu führen (derzeit nicht in der SW gesondert verwendet). So kann zB die DCF77 Empfangsanzeige nach vorne ausgeführt werden. In der aktuellen Version sind diese wie folgt vorverdrahtet:&lt;br /&gt;
** D1 ROT -&amp;gt; Out G4 (DCF Empfangskontrolle)&lt;br /&gt;
** D1 GRÜN -&amp;gt; n/a - ausgeführt als Pin zur Verbindungsseite&lt;br /&gt;
** D1 BLAU -&amp;gt; n/a - ausgeführt als Pin zur Verbindungsseite&lt;br /&gt;
** D2 ROT -&amp;gt; Out G1 (Ambilight)&lt;br /&gt;
** D2 GRÜN -&amp;gt; Out G2 - derzeit nicht in der SW verwendet&lt;br /&gt;
** D2 BLAU -&amp;gt; Out G3 - derzeit nicht in der SW verwendet&lt;br /&gt;
* möchte man zB nur die DCF77 Empfangskontrolle haben, so reicht es den ROT-Kanal von D1 mit einer PLCC-2 LED und den dazu gehörigen Widerstand zu bestücken&lt;br /&gt;
* TSOP mit Stabilisierungskondensator und LDR werden direkt auf dem Single Board bestückt&lt;br /&gt;
* das Single Board wird wie folgt mit der Hauptplatine verbunden:&lt;br /&gt;
** 2 16polige Flachbandkabeln für K7 und K8&lt;br /&gt;
** 4 Adern für PWMR / PMWG / PMWB / GND&lt;br /&gt;
** 2 Drähten für den LDR&lt;br /&gt;
** 3 Drähte für den TSOP&lt;br /&gt;
* die Verbindungen zu den Minuten- / Ambilightplatinen erfolgt über die Kontakte an den jeweiligen Ecken / Seiten&lt;br /&gt;
* für die weiter Verwendung sind die Minutenanschlüsse M1-M4 an der zentralen Verbinderseite ausgeführt&lt;br /&gt;
* für die weiter Verwendung sind die OUT G1-G4 an der zentralen Verbinderseite ausgeführt&lt;br /&gt;
* auf der BOTTOM Seite ist Platz für eine PLCC-2 LED als DCF77 Empfangskontroll LED vorgesehen&lt;br /&gt;
&lt;br /&gt;
Die für die DCF77 Empfangskontrolle, D1 und D2 benötigten Bauteile sind &#039;&#039;&#039;nicht Bestandteil&#039;&#039;&#039; eines angebotenen Paketes.&lt;br /&gt;
&lt;br /&gt;
Die Minuten-LEDs werden an den Ecken der Platine über kleine Drahtbrücken angeschlossen: (Bild ist noch vom Prototyp)&lt;br /&gt;
[[Datei:WordClock_Singel_LED_PCB_Minuten.jpg|400px|Anschluß Minuten LED]]&lt;br /&gt;
&lt;br /&gt;
Die Verbindung zwischen der LED-Platine und der Hauptplatine erfolgt mittels kurzem Flachbandkabel.&amp;lt;br&amp;gt;&lt;br /&gt;
[[Datei:WordClock_Singel_LED_PCB_Anschluß.jpg|400px|Anschluß an die Hauptplatine]]&lt;br /&gt;
&lt;br /&gt;
Auf dem Prototyp waren die Buchsen für K7 und K8 verdreht. Daher mussten die Flachbandkabel beim verbinden verdreht werden. Dieses wird in der finalen Version korrigiert. Es erfolgt dann ein Austausch des Bildes.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Bitte beachtet, dass für das SingleBoard zusätzliche Bauteile benötigt werden. Diese sind in einem eigenen Warenkorb bei Reichelt hinterlegt.&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
Diese sind in einem eigenen &#039;&#039;&#039;[http://www.reichelt.de/?ACTION=20;AWKID=847662;PROVID=2084 WARENKORB]&#039;&#039;&#039; bei Reichelt hinterlegt.&amp;lt;br&amp;gt;&lt;br /&gt;
Die Bauteile für das DCF77 Stabilisierungsboard sind ebenfalls in einem eigenen &#039;&#039;&#039;[http://www.reichelt.de/?ACTION=20;AWKID=885799;PROVID=2084 WARENKROB]&#039;&#039;&#039; bei Reichelt hinterlegt.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
==== Streifenplatinen ====&lt;br /&gt;
Die Platine hat ein Maß von 314 x 12 mm und ist auf die Word-Clock-Front-Varianten A und B (also 450mm x 450mm) ausgelegt.&lt;br /&gt;
&lt;br /&gt;
Der Abstand der einzelnen LEDs beträgt 28.1mm&lt;br /&gt;
&lt;br /&gt;
Die Streifenplatine wird so ausschauen: (Version 8 vom 06.März 2010)&lt;br /&gt;
&lt;br /&gt;
[[Datei:LED_Streifen_V6_1.png|750px|Streifenplatine für SMD RGB LEDs Version 8]]&lt;br /&gt;
&lt;br /&gt;
[[Datei:LED_Streifen_V6_1_bestueckt.jpg|750px|Erster Streifen bestückt]]&lt;br /&gt;
&lt;br /&gt;
Erste Streifenplatine bestückt.&amp;lt;br&amp;gt;&lt;br /&gt;
Weitere Beispiel-Photos der bestückten Streifenplatinen sind [http://www.mikrocontroller.net/topic/156661#1780198 hier] zu finden.&lt;br /&gt;
&lt;br /&gt;
Ausschnitt vergrößert dargestellt:&lt;br /&gt;
&lt;br /&gt;
[[Datei:LED_Streifen_V6_1_schnitt.png|500px|Aussschnitt]]&lt;br /&gt;
&lt;br /&gt;
Datenblatt der LED mit Bestückungsinfos: [[Datei:SMD RGB PLCC-6 datasheet3.pdf]]&lt;br /&gt;
&lt;br /&gt;
Hier ist die Bestückung aller Streifen schematisch detailliert gezeigt: &amp;lt;br&amp;gt; [http://www.mikrocontroller.net/topic/156661?goto=1671369#1671369 Beitrag] &amp;lt;br&amp;gt;&lt;br /&gt;
Bestückungstabelle: [[Datei:2012WordClockLEDMatrix.pdf]] &amp;lt;br&amp;gt;&lt;br /&gt;
Bestückungsgrafik: [[Datei:2012WordClockLEDMatrix_wiring_v22.pdf]]&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
==== Technische Daten der SMD RGB PLCC-6 LEDs ====&lt;br /&gt;
Spezifikation&lt;br /&gt;
* Source Material: InGaN&lt;br /&gt;
* Emitting Colour: SMD SMT 5050 RGB&lt;br /&gt;
* LENS Type: Water clear&lt;br /&gt;
* Reverse Voltage: 5.0 V&lt;br /&gt;
* Viewing Angle: 140 degree&lt;br /&gt;
* Lead Soldering Temp: 260°C for 5 seconds&lt;br /&gt;
&lt;br /&gt;
Absolute Maximum Rating (Ta = 250C)&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! PARAMETER || Symbol || RED || GREEN || BLUE || UNITS&lt;br /&gt;
|-&lt;br /&gt;
| Power Dissipation || PO || align=&amp;quot;right&amp;quot; | 80 || align=&amp;quot;right&amp;quot; | 95 || align=&amp;quot;right&amp;quot; | 85 || mW&lt;br /&gt;
|-&lt;br /&gt;
| DC Current || IF || align=&amp;quot;right&amp;quot; | 20 || align=&amp;quot;right&amp;quot; | 20 || align=&amp;quot;right&amp;quot; | 20 || mA&lt;br /&gt;
|-&lt;br /&gt;
| Peak Forward Current || IFP || align=&amp;quot;right&amp;quot; | 100 || align=&amp;quot;right&amp;quot; | 100 || align=&amp;quot;right&amp;quot; | 100 || mA&lt;br /&gt;
|-&lt;br /&gt;
| Reverse Voltage || VR || align=&amp;quot;right&amp;quot; | 5 || align=&amp;quot;right&amp;quot; | 5 || align=&amp;quot;right&amp;quot; | 5 || V&lt;br /&gt;
|-&lt;br /&gt;
| Operating Temperature || Topr || colspan=&amp;quot;3&amp;quot; align=&amp;quot;center&amp;quot; | -25 to +85 || °C&lt;br /&gt;
|-&lt;br /&gt;
| Storage Temperature || Tstg ||  colspan=&amp;quot;3&amp;quot; align=&amp;quot;center&amp;quot; | -40 to +85 || °C&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Electro-optical Characteristics (Ta = 250C)&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! PARAMETER || SYMBOL || CONDITIONS || MIN. || TYP. || MAX. || UNIT&lt;br /&gt;
|-&lt;br /&gt;
| Forward Voltage (B) || VF || IF = 20mA || align=&amp;quot;right&amp;quot; | 3.4 || align=&amp;quot;right&amp;quot; | 3.6 || align=&amp;quot;right&amp;quot; | 3.8 || V&lt;br /&gt;
|-&lt;br /&gt;
| Forward Voltage (G) || VF || IF = 20mA || align=&amp;quot;right&amp;quot; | 3.4 || align=&amp;quot;right&amp;quot; | 3.6 || align=&amp;quot;right&amp;quot; | 3.8 || V&lt;br /&gt;
|-&lt;br /&gt;
| Forward Voltage (R) || VF || IF = 20mA || align=&amp;quot;right&amp;quot; | 1.9 || align=&amp;quot;right&amp;quot; | 2.1 || align=&amp;quot;right&amp;quot; | 2.5 || V&lt;br /&gt;
|-&lt;br /&gt;
| Dominant Wavelength (B) || lD || IF = 20mA || align=&amp;quot;right&amp;quot; | 465 || align=&amp;quot;right&amp;quot; | 470 || align=&amp;quot;right&amp;quot; | 475 || nm&lt;br /&gt;
|-&lt;br /&gt;
| Dominant Wavelength (G) || lD || IF = 20mA || align=&amp;quot;right&amp;quot; | 515 || align=&amp;quot;right&amp;quot; | 520 || align=&amp;quot;right&amp;quot; | 525 || nm&lt;br /&gt;
|-&lt;br /&gt;
| Dominant Wavelength (R) || lD || IF = 20mA || align=&amp;quot;right&amp;quot; | 625 || align=&amp;quot;right&amp;quot; | 630 || align=&amp;quot;right&amp;quot; | 635 || nm&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Pin / Farbzuordnung:&lt;br /&gt;
* R: Pin 1 - 6&lt;br /&gt;
* G: Pin 2 - 5&lt;br /&gt;
* B: Pin 3 - 4&lt;br /&gt;
&lt;br /&gt;
[[Datei:plcc6_smd_RGB.JPG]]&lt;br /&gt;
----&lt;br /&gt;
==== Widerstandswerte für die LED Streifen ====&lt;br /&gt;
&lt;br /&gt;
Berechnet sind die Widerstände für eine Spannungsversorgung von 15V - abzgl. 1,4V durch den Spannungsabfall an den UDN2981. Ein solches Netzteil gibt es zB bei [http://www.pollin.de/shop/dt/MjU5OTQ2OTk-/Stromversorgung/Netzgeraete/Regelbare_Netzgeraete/EcoFriendly_Universal_Schaltnetzteil_MW_3H36GS.html Pollin] oder auch bei [http://www.reichelt.de/?ACTION=3;ARTICLE=89789;PROVID=2402 Reichelt]. &lt;br /&gt;
&lt;br /&gt;
&amp;quot;Beginner-Tipp&amp;quot;:&lt;br /&gt;
&lt;br /&gt;
Bitte lest zum Stichwort &amp;quot;Netzteil&amp;quot; im Forum nach. Es gibt hierzu einige Bemerkungen und Empfehlungen. So z. B. auch der Hinweis auf ein weiteres Netzteil von C*: [http://www.conrad.de/ce/de/product/512696/HN-POWER-HNP18-150-STECKER-NETZT-18W Netzteil_15V_1.2A]&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;
! colspan=&amp;quot;3&amp;quot; | |||| colspan=&amp;quot;3&amp;quot; | ....Widerstände E12.... |||| colspan=&amp;quot;3&amp;quot; | ....Widerstände E24.... ||&lt;br /&gt;
|- &lt;br /&gt;
! Streifen  || Wort  || LEDs |||| style=&amp;quot;color:red;&amp;quot; | Rot || style=&amp;quot;color:green;&amp;quot; | Grün || style=&amp;quot;color:blue;&amp;quot; | Blau |||| style=&amp;quot;color:red;&amp;quot; | Rot || style=&amp;quot;color:green;&amp;quot; | Grün || style=&amp;quot;color:blue;&amp;quot; | Blau || Anschluss&lt;br /&gt;
|- &lt;br /&gt;
| 1 ||  ES ||  2 ||||  560 ||  470 ||  470 ||||  510 ||  360 ||  360 || OUT14&lt;br /&gt;
|- &lt;br /&gt;
| {{H16}} | 1 || {{H16}} | K ||  ||||  ||  ||  ||||  ||  ||  ||&lt;br /&gt;
|- &lt;br /&gt;
| 1 || IST || 3 |||| 470 || 220 || 220 |||| 390 || 200 || 200 || OUT14&lt;br /&gt;
|- &lt;br /&gt;
| {{H16}} | 1 || {{H16}} | L ||  ||||  ||  ||  ||||  ||  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| 1 || FÜNF || 4 |||| 330 || 33 || 33 |||| 300 || 27 || 33 || OUT16&lt;br /&gt;
|-{{H12}}&lt;br /&gt;
| 2 || ZEHN || 4 |||| 330 || 33 || 33 |||| 300 || 27 || 33 || OUT17&lt;br /&gt;
|-{{H12}}&lt;br /&gt;
| 2 || ZWAN || 4 |||| 330 || 33 || 33 |||| 300 || 27 || 33 || OUT18&lt;br /&gt;
|-{{H12}}&lt;br /&gt;
| 2 || ZIG || 3 |||| 470 || 220 || 220 |||| 390 || 200 || 200 || OUT18&lt;br /&gt;
|-&lt;br /&gt;
| 3 || DREI || 4 |||| 330 || 33 || 33 |||| 300 || 27 || 33 || OUT19&lt;br /&gt;
|-&lt;br /&gt;
| 3 || VIER || 4 |||| 330 || 33 || 33 |||| 300 || 27 || 33 || OUT20&lt;br /&gt;
|-&lt;br /&gt;
| 3 || TEL || 3 |||| 470 || 220 || 220 |||| 390 || 200 || 200 || OUT20&lt;br /&gt;
|-{{H12}}&lt;br /&gt;
| {{H16}} | 4 || {{H16}} | TG ||  ||||  ||  ||  ||||  ||  ||  ||&lt;br /&gt;
|-{{H12}}&lt;br /&gt;
| 4 || NACH || 4 |||| 330 || 33 || 33 |||| 300 || 27 || 33 || OUT21&lt;br /&gt;
|-{{H12}}&lt;br /&gt;
| 4 || VOR || 3 |||| 470 || 220 || 220 |||| 390 || 200 || 200 || OUT22&lt;br /&gt;
|- {{H12}}&lt;br /&gt;
| {{H16}} | 4 || {{H16}} | JM ||  ||||  ||  ||  ||||  ||  ||  ||  &lt;br /&gt;
|-&lt;br /&gt;
| 5 || HALB || 4 |||| 330 || 33 || 33 |||| 300 || 27 || 33 || OUT23&lt;br /&gt;
|- &lt;br /&gt;
| {{H16}} | 5 || {{H16}} | Q ||  ||||  ||  ||  ||||  ||  ||  || &lt;br /&gt;
|-&lt;br /&gt;
| 5 || ZWÖ || 3 |||| 470 || 220 || 220 |||| 390 || 200 || 200 || OUT13&lt;br /&gt;
|-&lt;br /&gt;
| 5 || LF || 2 |||| 560 || 470 || 470 |||| 510 || 360 || 360 || OUT13&lt;br /&gt;
|- &lt;br /&gt;
| {{H16}} | 5 || {{H16}} | P ||  ||||  ||  ||  ||||  ||  ||  ||&lt;br /&gt;
|-{{H12}}&lt;br /&gt;
| 6 || ZW || 2 |||| 560 || 470 || 470 |||| 510 || 360 || 360 || OUT0&lt;br /&gt;
|-{{H12}}&lt;br /&gt;
| 6 || EI || 2 |||| 560 || 470 || 470 |||| 510 || 360 || 360 || OUT1&lt;br /&gt;
|-{{H12}}&lt;br /&gt;
| 6 || N || 1 |||| 680 || 560 || 560 |||| 620 || 560 || 560 || OUT2&lt;br /&gt;
|-{{H12}}&lt;br /&gt;
| 6 || S || 1 |||| 680 || 560 || 560 |||| 620 || 560 || 560 || OUT3&lt;br /&gt;
|-{{H12}}&lt;br /&gt;
| 6 || IEB || 3 |||| 470 || 220 || 220 |||| 390 || 200 || 200 || OUT4&lt;br /&gt;
|-{{H12}}&lt;br /&gt;
| 6 || EN || 2 |||| 560 || 470 || 470 |||| 510 || 360 || 360 || OUT4&lt;br /&gt;
|- &lt;br /&gt;
| {{H16}} | 7 || {{H16}} | K ||  ||||  ||  ||  ||||  ||  ||  ||  &lt;br /&gt;
|-&lt;br /&gt;
| 7 || DREI || 4 |||| 330 || 33 || 33 |||| 300 || 27 || 33 || OUT5&lt;br /&gt;
|- &lt;br /&gt;
| {{H16}} | 7 || {{H16}} | RH ||  ||||  ||  ||  ||||  ||  ||  || &lt;br /&gt;
|-&lt;br /&gt;
| 7 || FÜNF || 4 |||| 330 || 33 || 33 |||| 300 || 27 || 33 || OUT7&lt;br /&gt;
|-{{H12}}&lt;br /&gt;
| 8 || ELF || 3 |||| 470 || 220 || 220 |||| 390 || 200 || 200 || OUT12&lt;br /&gt;
|-{{H12}}&lt;br /&gt;
| 8 || NEUN || 4 |||| 330 || 33 || 33 |||| 300 || 27 || 33 || OUT10&lt;br /&gt;
|-{{H12}}&lt;br /&gt;
| 8 || VIER || 4 |||| 330 || 33 || 33 |||| 300 || 27 || 33 || OUT6&lt;br /&gt;
|- &lt;br /&gt;
| {{H16}} | 9 || {{H16}} | W ||  ||||  ||  ||  ||||  ||  ||  ||  &lt;br /&gt;
|-&lt;br /&gt;
| 9 || ACHT || 4 |||| 330 || 33 || 33 |||| 300 || 27 || 33 || OUT9&lt;br /&gt;
|-&lt;br /&gt;
| 9 || ZEHN || 4 |||| 330 || 33 || 33 |||| 300 || 27 || 33 || OUT11&lt;br /&gt;
|- &lt;br /&gt;
| {{H16}} | 9 || {{H16}} | RS ||  ||||  ||  ||  ||||  ||  ||  ||  &lt;br /&gt;
|-{{H12}}&lt;br /&gt;
| {{H16}} | 10 || {{H16}} | B ||  ||||  ||  ||  ||||  ||  ||  ||  &lt;br /&gt;
|-{{H12}}&lt;br /&gt;
| 10 || SEC || 3 |||| 470 || 220 || 220 |||| 390 || 200 || 200 || OUT8&lt;br /&gt;
|-{{H12}}&lt;br /&gt;
| 10 || HS || 2 |||| 560 || 470 || 470 |||| 510 || 360 || 360 || OUT8&lt;br /&gt;
|-{{H12}}&lt;br /&gt;
| {{H16}} | 10 || {{H16}} | FM ||  ||||  ||  ||  ||||  ||  ||  ||  &lt;br /&gt;
|-{{H12}}&lt;br /&gt;
| 10 || UHR || 3 |||| 470 || 220 || 220 |||| 390 || 200 || 200 || OUT15&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Es werden somit folgende Widerstände aus der E24 Reihe benötigt:&lt;br /&gt;
&lt;br /&gt;
* 13x 27Ω&lt;br /&gt;
* 13x 33Ω&lt;br /&gt;
* 18x 200Ω&lt;br /&gt;
* 13x 300Ω&lt;br /&gt;
* 12x 360Ω&lt;br /&gt;
* 9x 390Ω&lt;br /&gt;
* 6x 510Ω&lt;br /&gt;
* 4x 560Ω&lt;br /&gt;
* 2x 620Ω&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
==== Ambilight-/LED-Streifenplatine bestücken ====&lt;br /&gt;
&lt;br /&gt;
&amp;quot;Beginner-Tipps&amp;quot;:&lt;br /&gt;
&lt;br /&gt;
Die Beschreibung zum Thema Ambilight ist im Forum etwas unübersichtlich. &lt;br /&gt;
&lt;br /&gt;
Sehr hilfreich zum Verständnis sind die Bilder von [http://www.mikrocontroller.net/topic/156661#1780198 Matthias]. Wichtig zum Verständnis ist auch der Hinweis auf die Drahtbrücken auf der Platinenunterseite vor der ersten LED eines Wortes. Es hat mir sehr geholfen, das Platinen-Layout-Schema und das Foto übereinander zu montieren.&lt;br /&gt;
&lt;br /&gt;
[[Datei:LED-Platine.jpg|miniatur]]&lt;br /&gt;
&lt;br /&gt;
Anhand der [http://www.mikrocontroller.net/articles/Word_Clock_Variante_1#Widerstandswerte_f.C3.BCr_die_LED_Streifen Tabelle] kann man erkennen, dass die Widerstände im Ambilight-Paket (300 Ohm = rot, 27 Ohm = grün, 33 Ohm = blau) für 2 x 4 LEDs in Serie ausgelegt sind. &lt;br /&gt;
&lt;br /&gt;
Man kann also 2 x 4 LEDs hinter einander löten oder die Variante von Christian aufgreifen der die LEDs physikalisch in 2er Gruppen angeordnet hat. Durch Drahtbrücken werden diese 2er Gruppen aber dann elektrisch zu zwei 4er Gruppen: LED-LED-Bügel-LED-LED-frei-LED-LED-Bügel-LED-LED, so dass auch für diese Version die Widerstände passen.&lt;br /&gt;
&lt;br /&gt;
Update Jan 2014: ich habe für die Amiblight-Platinen nach dem Muster LED-LED-Bügel-LED-LED-frei-LED-LED-Bügel-LED-LED diese Schemazeichnung mit Lötpunkten und ganz kurzen Drahtbrücken angefertigt:&lt;br /&gt;
&lt;br /&gt;
[[Datei:Ambilight-wiring-2x2x2x2-Leds-KHK.png|miniatur]]&lt;br /&gt;
&lt;br /&gt;
Persönlicher Kommentar KHK: &lt;br /&gt;
Ich habe inzwischen die zweite Wordclock fertig gestellt. Beim ersten Mal habe ich die LED-Streifenplatinen/Ambilight-Streifen ohne sie zu trennen bestückt. Das war schön übersichtlich und einfach zu löten. Das Trennen der fertig gelöteten Streifen war aber sehr schwierig. Bei der zweiten Wordclock habe ich die LED-Streifen vor der Bestückung mit einer Hebelschere getrennt. Das ging super einfach und hat mir viel Mühe gespart. Fazit: Trennt bitte die LED-Streifen vor der Bestückung ab! Ihr spart Euch viel Mühe und Stress.&lt;br /&gt;
&lt;br /&gt;
Beginner-Tipp: Das Ambilight wird mit OUTG2 angesteuert (Steuerplatine Version 1.1).&lt;br /&gt;
&lt;br /&gt;
==== LED-Streifen: Logik ====&lt;br /&gt;
&lt;br /&gt;
* Das Signal für die R/G/B PWM wird für jede Streifenplatine seitlich zugeführt (&amp;quot;R/G/B-Ausgangssignal&amp;quot;). Wichtig: nicht alle Platinen hintereinanderschalten, sondern die einzelnen Streifen parallel schalten (sonst werden die Leiterbahnen der ersten Platinen immer mit dem vollen Strom belastet). &lt;br /&gt;
&lt;br /&gt;
* Das &amp;quot;R/G/B-Ausgangssignal&amp;quot; wird vor jedem Wort auf den Vorwiderstand geführt. Dazu ist es notwendig das &amp;quot;R/G/B-Ausgangssignal&amp;quot; von den gemeinsamen Leiterbahnen (R,G,B) mit Draht- (R und G) bzw. einer Lötbrücke (B) auf die Vorwiderstände zu legen. &lt;br /&gt;
&lt;br /&gt;
* Innerhalb eines Wortes werden die vier Signale (PWM R/G/B + COM) über Lötbrücken von einem Buchstaben zum anderen weitergeführt. &lt;br /&gt;
&lt;br /&gt;
* Am Ende eines Wortes werden die Ausgänge 1, 2 und 3 der LED mit Lötbrücken zusammengeführt und gehen auf COM. &lt;br /&gt;
&lt;br /&gt;
* Eine Besonderheit ergibt sich bei &amp;quot;Leerzeichen&amp;quot; - wie z. B. beim Ambilight oder bei &amp;quot;Es(leer)ist&amp;quot;: &lt;br /&gt;
** Die COM Leitung wird durch zwei Lötbrücken links und rechts des zu überbrückenden Segments weitergeleitet. &lt;br /&gt;
** Das &amp;quot;R/G/B-Ausgangssignal&amp;quot; für den ersten Buchstaben nach dem &amp;quot;Leerzeichen&amp;quot; wird wieder mit den Draht-/Lötbrücken zugeführt, die auch vor Wörtern verwenden werden.&lt;br /&gt;
&lt;br /&gt;
Für jedes Wort wird (irgendwo) COM vom den Ausgängen OUTx zugeleitet.&lt;br /&gt;
&lt;br /&gt;
==== LED-Streifen: Zusammenfassung Löten ====&lt;br /&gt;
&lt;br /&gt;
* Widerstände sind immer am Anfang eines Wortes. Individuelle Werte für R/G/B je nach Länge des Wortes.&lt;br /&gt;
* Lötzinnbrücken sind&lt;br /&gt;
** am Anfang eines Wortes bei B&lt;br /&gt;
** am Anfang einer Streifenplatine bei B (hier sind keine Drahtbrücken nötig)&lt;br /&gt;
** am Ende eines Wortes von LED1/LED2/LED3 auf COM&lt;br /&gt;
** in der Mitte eines Wortes vor allen LED (außer der Ersten) zum Ersatz des Vorwiderstandes&lt;br /&gt;
** Zusätzlich zum Überbrücken von &amp;quot;Leerstellen&amp;quot; nur bei COM vor und nach dem Segment (da, wo zwischen zwei Zeichen sonst alle 4 Lötbrücken gesetzt werden)&lt;br /&gt;
* Drahtbrücken an der Platinenunterseite gibt es:&lt;br /&gt;
** vor einem neuen Wort zu R und G&lt;br /&gt;
** nach einer &amp;quot;Leerstelle&amp;quot; zu R und G (= identisch zu 1)&lt;br /&gt;
* Für jedes Wort wird (irgendwo) COM vom den Ausgängen OUTx zugeleitet.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
=== Sammelbestellung LED-Platinen ===&lt;br /&gt;
Es werden folgende 3 Pakete angeboten:&lt;br /&gt;
* Paket 1 (Uhr) - 66,20Eur : 1 Single-LED-Platine, 100 RGB-PLCC6-LEDs und 155 SMD-Widerstände&lt;br /&gt;
* Paket 2 (Ambilight) - 17,00Eur : 4 Streifenplatinen, 32 RGB-PLCC6-LEDs und 45 SMD-Widerstände&lt;br /&gt;
* Paket 3 (Uhr - alte Version) - 52,20Eur : 11 Streifenplatinen, 100 RGB-PLCC6-LEDs und 155 SMD-Widerstände&lt;br /&gt;
&lt;br /&gt;
Für das neue SingleBoard (Paket 1) werden zusätzliche Bauteile benötigt. Diese sind in einem eigenen Reichelt Warenkorb zusammen gestellt:&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;gt;&amp;gt; http://www.reichelt.de/?ACTION=20;AWKID=847662;PROVID=2084&lt;br /&gt;
&lt;br /&gt;
Und folgende Einzelpositionen:&lt;br /&gt;
* RGB-PLCC6-LED einzeln - 0,35Eur&lt;br /&gt;
* Streifenplatine einzeln - 1,00Eur&lt;br /&gt;
* Single-LED-Platine einzeln - 25,00Eur&lt;br /&gt;
* Zwischenboden mit Ambilightausfräsung (MDF 19mm gefräst) - 37,50Eur&lt;br /&gt;
* Zwischenboden ohne Ambilightausfräsung (MDF 19mm gefräst) - 37,50Er&lt;br /&gt;
* programmierter ATMega168 - 3,55Eur&lt;br /&gt;
&lt;br /&gt;
Der Versand erfolgt bei nur LEDs / Widerständen / ATMega als MaxiBrief mit Einschreiben.&lt;br /&gt;
* innerhalb BRD (ohne Inseln) - 4,00Eur&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Der Versand mit Streifenplatinen erfolgt als kleines Paket:&lt;br /&gt;
* innerhalb BRD (ohne Inseln) - 5,20Eur&lt;br /&gt;
* Österreich und Schweiz - 9,00Eur&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Der Versand mit Zwischenboden (max 8 Böden pro Paket) oder Single-LED-Platine wird als Paket versendet:&amp;lt;br&amp;gt;&lt;br /&gt;
* innerhalb BRD (ohne Inseln) - 6,50Eur&amp;lt;br&amp;gt;&lt;br /&gt;
* Österreich - 16,00Eur&amp;lt;br&amp;gt;&lt;br /&gt;
* Schweiz - 27,50Eur&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Es fallen jeweils nur die höheren Versandkosten an.&lt;br /&gt;
&lt;br /&gt;
Werden mehrere Pakete bestellt, können die tatsächlichen Versandkosten von den hier gezeigten Versandkosten abweichen. Diese ist dann von der bestellten Menge und dem Gewicht abhängig.&lt;br /&gt;
&lt;br /&gt;
Bei Interesse bitte per PN melden (Benutzer [http://www.mikrocontroller.net/user/show/wawibu wawibu])&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Zeitplanung&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;table border=1&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;Datum&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Aktion&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;bis 15.Februar 2015&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Sammeln der Bestellungen&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;17.Februar 2015&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Bestellung geht raus&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;~06.März 2015&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Anlieferung bei mir&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;ab 13.März 2015&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Versand&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Als Alternative können die Pakete 1, 2 und 3 auch ohne Widerstände bei mir bestellt werden. Es werden dann folgende Warenkörbe benötigt:&lt;br /&gt;
&lt;br /&gt;
Widerstands-Warenkörbe bei Reichelt:&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;pro WordClock&#039;&#039;&#039;: https://secure.reichelt.de/?;ACTION=20;LA=5010;AWKID=292199;PROVID=2084&lt;br /&gt;
&amp;lt;br&amp;gt;&#039;&#039;&#039;zusätzlich fürs Ambilight&#039;&#039;&#039;: https://secure.reichelt.de/?;ACTION=20;LA=5010;AWKID=292202;PROVID=2084&lt;br /&gt;
&amp;lt;br&amp;gt;&#039;&#039;&#039;LEDs&#039;&#039;&#039; gibt es zB bei LED-Tech: http://www.led-tech.de/de/Leuchtdioden/SMD-LEDs/PLCC6-Superbright-RGB-SMD--5.0x5.0mm--LT-1178_1_2.html&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;Die LEDs von LED-Tech haben in der Zwischenzeit eine andere PinBelegung und sind somit nicht 1:1 nutzbar. Der R und B Kanal sind dort anders als bei den LEDs aus der Sammelbestellung. Werden die LEDs von LED-Tech verwendet, muss darauf geachtet werden, das diese beiden Kanäle vertauscht sind!&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== Anschluss eines DCF77-Moduls ==&lt;br /&gt;
&lt;br /&gt;
Der Anschluss eines DCF77-Moduls ist optional. Wird ein DCF77-Modul angeschlossen, kann mittels einer LED der DCF77-Empfang angezeigt werden. Die LED blinkt dann im Sekundenrhytmus und zeigt direkt die empfangenen DCF77-Impulse. Der Empfang wird kurze Zeit nach dem Einschalten aktiviert bzw. jede Stunde wiederholt. &lt;br /&gt;
&lt;br /&gt;
Die DCF77-LED kann folgendermaßen angeschlossen werden:&lt;br /&gt;
&lt;br /&gt;
[[Bild:LED-DCF77.PNG]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Bei Anschluss des DCF77-Moduls von Reichelt ist folgendes zu beachten:&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
*Es sollte direkt auf den Lötaugen des Reichelt-DCF77-Moduls ein Abblock-Kondensator von 100nF zwischen den Pins +UB und GND aufgelötet werden&lt;br /&gt;
&lt;br /&gt;
*Der Eingang PON muss offen bleiben - entgegen den (falschen) Angaben im Reichelt Datenblatt!&lt;br /&gt;
&lt;br /&gt;
*Das DCF77-Modul von Reichelt braucht eine Synchronisierungszeit von mindestens 10 Sekunden. Erst dann arbeitet der Empfänger.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Beim Anschluss des Conrad-Moduls ArtNr. 641138 ist folgendes zu beachten:&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
*Es muss der nicht-invertierte Open-Collector-Ausgang Pin 3 als Signal an die WordClock angeschlossen werden.&lt;br /&gt;
&lt;br /&gt;
Ein Max232 der zur Kontrolle angeschlossen ist, kann den DCF Empfang stören. Ohne Max232 verbessert sich der Empfang deutlich.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Da einige berichtet haben, dass der DCF-Empfang bei den Reichelt-Modulen oftmals gestört ist, hier ein Tipp von Carsten Wille, wie man den Empfang durch Hinzufügen weniger Bauteile wesentlich verbessern kann:&#039;&#039;&#039; [http://www.mikrocontroller.net/topic/156661?goto=1929382#1929382 Beitrag: Brauche Hilfe beim Bau einer Uhr]&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Für Nutzer eines Pollin DCF77 Moduls ist aufgrund des nicht belastbaren Ausgangs eine kleine Hilfsplatine empfehlenswert. Siehe dazu auch [http://www.mikrocontroller.net/topic/156661?goto=3465678#3465682 Beitrag: Brauche Hilfe beim Bau einer Uhr] Platinen sind vom Beitragsautor beziehbar&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Software =&lt;br /&gt;
Da die Software für die neuere Variante mit der gemeinsamen LED/Steuerplatine die gleiche ist, bitte da nachschauen, was Software, Downloads und Bugs angeht um.&lt;br /&gt;
https://www.mikrocontroller.net/articles/Word_Clock_Variante_1#Software&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Download ==&lt;br /&gt;
&lt;br /&gt;
Siehe voriger Abschnitt.&lt;br /&gt;
&lt;br /&gt;
https://www.mikrocontroller.net/articles/Word_Clock_Variante_1#Download&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
= Mechanik =&lt;br /&gt;
&lt;br /&gt;
Folgende Anleitung gilt für die Frontplatte aus Plexiglas und die Word Clock mit Ambilight, d. h. die Wandmontage erfolgt ohne Rahmen/Bilderrahmen.&lt;br /&gt;
Beim Bau meiner Word Clock habe ich definitiv mehr Zeit über mechanische Lösungen nachgedacht, als über die Elektronik/Programmierung. Vor allem die Recherche geeigneter Bezugsquellen hat Zeit gekostet und die Lieferzeit hat den Bau der Uhr sehr verzögert. Ich hoffe, dass diese Anleitung hilft, etwas Zeit zu sparen.&lt;br /&gt;
&lt;br /&gt;
== Vorbereiten der Zwischenplatte == &lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
Datei:1-mdf-spachtel.jpeg&lt;br /&gt;
Datei:2-gespachtelte-kante.jpeg|Die Seitenfläche nach den Auftragen der Spachtelmasse.&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Damit die Zwischenplatte optisch gut zur Frontplatte passt, muss diese lackiert werden. Im vorliegenden Vorschlag wurde die Zwischenplatte an den Seiten mit wasserbasiertem Acryllack schwarz lackiert. &lt;br /&gt;
&lt;br /&gt;
Die MDF Platte kann grundiert oder gespachtelt werden. In diesem Beispiel wurde die Platte mit  &amp;quot;Holz und MDF Spachtel” (z. B. Decotric, siehe Amazon) vorbehandelt. Eine geeignete Grundierung wäre z. B. “MDF Grundierung Grund Vorbehandlung” von Molto. Die Grundierung ist leichter zu verarbeiten. Mit der Spachtelmasse kann man allerdings unerwünschte Löcher verschließen. Die Masse muss einige Stunden aushärten, bevor sie geschliffen werden kann. Am besten beginnt man daher den Bau mit der Word Clock mit dieser Vorarbeit. In der Wartezeit kann die Elektronik zusammengelötet werden. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
Datei:3-Kante-sw-gestrichen.jpeg|Die Zwischenplatte sollte vor der Montage der Elektronik vorbereitet werden. Der Mülleimer ist ein perfekter und stabiler Halter während des Streichen: einfach zu drehen, man macht sich die Finger nicht voll Farbe und man kann alle Seiten auf einmal streichen.&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nach dem Aushärten wurde die Oberfläche mit Schmirgelpapier geschliffen (P240) und anschließend dreimal lackiert. Die erste und zweite Lackschicht wurde jeweils mit P400 Schmirgelpapier geglättet. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
Datei:4-platine-fertig-in-hand.jpeg|&lt;br /&gt;
Datei:5-platine-fertig-in-zwischenplatte.jpeg|&lt;br /&gt;
Datei:6-platine-fertig-in-zwischenplatte-ohne-fraesung.jpeg|&lt;br /&gt;
Datei:7-platine-fertign-in-zwischenplatten-mit-fraesung.jpeg|&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Leider ist mir beim Einlöten der Komponenten nicht aufgefallen, dass die Batterie und IC2 (7805) sehr hoch sind. Da ich die Beinchen der Batterie schon zu kurz abgeschnitten hatte, konnte ich die Batterie nicht mehr einfach umbiegen, so dass dieses Problem nur noch durch angelötete Kabel zu lösen war. Die Batterie wird nun einfach neben die Steuerplatine gelegt. Den 7805 konnte ich durch Umbiegen etwas in seiner Höhe reduzieren. Der Platz für den umgebogenen 7805 wurde mit einer Fräse im Multitool/Dremel geschaffen.&lt;br /&gt;
&lt;br /&gt;
Im Nachhinein betrachtet hätte ich mir diese Mühe sparen können, da durch die Befestigung mit dem Spiegelbefestigungsset (siehe unten) die Höhe kein Problem mehr ist. Ebenfalls etwas zu spät habe ich im Forum Bilder einer Lösung gesehen, bei der die Ausfräsung für Batterie und 7805 in Richtung des äußeren Randes und nicht wie bei mir in Richtung der LEDs gelöst worden war. Im äußeren Rahmen ist genug Platz für eine Ausfräsung, die es erlaubt, die Batterie und den 7805 horizontal einzulöten.&lt;br /&gt;
&lt;br /&gt;
== Befestigung der Frontplatte (“Plexiglasvariante”) an der Zwischenplatte ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
Datei:8-holzbohrer-8mm-mit-tiefenmarkierung.jpeg|8 mm Holzbohrer mit improvisierter Tiefenmarkierung.&lt;br /&gt;
Datei:9-bohrung-fuer-magnet-1.jpeg|Fertige Bohrung. An der Kante unter dem Loch sieht man die Spachtelmasse. Während die Spachtelmasse noch trocknet, können bereits die Magnete montiert werden.&lt;br /&gt;
Datei:10-bohrung-fuer-magnet-2.jpeg|Zentral wird eine 2 mm Bohrung ergänzt, damit der Magnet bei Fehlpositionierung wieder ausgestossen werden könnte.&lt;br /&gt;
Datei:11-bohrung-fuer-magnet-3.jpeg|Zur Veranschaulichung: der Magnet könnte mit dem 2 mm Bohrer ausgestossen werden. &lt;br /&gt;
Datei:12-magnet-1.jpeg|&lt;br /&gt;
Datei:13-magnet-mit-werkzeug.jpeg|Die Magnete habe eine ganz gute Presspassung. Mit Hilfe eines Zwischenhölzchens zum Schutz des Magneten können sie in das Loch gehämmert werden.&lt;br /&gt;
Datei:14-magnet-2.jpeg|&lt;br /&gt;
Datei:15-magnet-3.jpeg|&lt;br /&gt;
Datei:16-magnet-4.jpeg|&lt;br /&gt;
Datei:17-magent-mit-kleinem-magnet-1.jpeg|Der 8 mm x 4 mm Magnet wird 0.5 mm unter die Oberfläche der Zwischenplatte gepresst, damit auch der 8 mm x 0.5 mm Magnet flächenbündig befestigt werden kann.&lt;br /&gt;
Datei:18-magent-mit-kleinem-magnet-2.jpeg|Hier ist der 8 mm x 0.5 mm Magnet in der Bohrung. Damit sich der 8 mm x 0.5 mm Magnet durch Verschieben von dem 8 mm x 4 mm Magneten lösen lässt, muss die Kante der Bohrung abgeschrägt werden.&lt;br /&gt;
Datei:19-anschraegung-fuer-kleinen-magnet.jpeg|Durch die Abschrägung am Rand der Bohrung (Universalmesser, Taschenmesser oder Dremel-Fräse) gleitet der 8 mm x 0.5 mm Magnet leicht aus der Befestigung und läßt sich so mit wenig Kraft vom 8 mm x 4 mm Magnet lösen.&lt;br /&gt;
Datei:20-alu-isolation-magnet-vor-klebung.jpeg|Vor dem Kleben wird die Holzoberfläche und der 8 mm x 4 mm Magnet mit Hilfe einer dünnen Folie (fixiert durch den 8 mm x 0.5 mm Magnet) isoliert (hier: Haushalts-Alu-Folie). Der Kleber wird sehr dünn aufgetragen, um Überschüsse zu vermeiden.&lt;br /&gt;
Datei:21-fertig-geklebt-magnete-frontplatte.jpeg|Rückseite der Frontplatte nach der Klebebefestigung der vier 8 mm x 0.5 mm Magneten. Alle vier Magnete wurden in einem Arbeitsgang geklebt. Die Ausrichtung der Plexiglasscheibe erfolgte von Hand. Die Oberfläche wurde mit einem alten Handtuch geschützt und mit Gewicht beschwert, während der Kleber auspolymerisierte.&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Für die Befestigung der Frontplatte an der Zwischenplatte wurden im Forum schon einige Lösungen besprochen.&lt;br /&gt;
&lt;br /&gt;
Man kann die Frontplatte z. B. mit Magneten befestigen oder direkt auf die Zwischenplatte kleben.&lt;br /&gt;
&lt;br /&gt;
Als Kleber wird meist ein Zweikomponentenkleber auf Epoxidharzbasis verwendet (z. B. Uhu Plus Sofortfest, Uhu Plus schnellfest, Uhu Plus Endfest 300...), da dieser keine Lösungsmittel enthält, die Plexiglas oder die Tinte des Frontplattendrucks anlösen. Im Forum wird bemerkt, dass der Kleber dünn aber vollflächig aufgetragen wurde. &lt;br /&gt;
&lt;br /&gt;
Im Folgenden wird eine einfache Methode beschrieben, die Frontplatte mit Magneten zu befestigen.  Diese Methode hat den Vorteil, dass man die empfindliche Frontplatte abnehmen kann, wenn man an der Word Clock arbeitet. Die Magnete können ohne aufwendige Werkzeuge befestigt werden. &lt;br /&gt;
&lt;br /&gt;
Ich habe mich für runde Magnete entschieden, weil man diese mit einer einfachen Bohrung befestigen kann. Die Haftkraft von vier 8 mm x 4 mm Magneten reicht aus, die Plexiglas-Frontplatte sicher zu tragen. Ich habe die Haftkraft bewusst nicht überdimensioniert, da ich Bedenken habe, dass starke Magnete beim Abnehmen der Frontplatte die Farbschicht von der Plexiglasplatte beschädigen könnten. &lt;br /&gt;
&lt;br /&gt;
Ich verwende zwei Magnete. Der dickere Magnet wird in der Zwischenplatte versenkt. Der dünnere Magnet wird an die Frontplatte geklebt. Der dünnere Magnet hat den gleichen Durchmesser wie der dickere Magnet, er ist jedoch nur 0.5 mm dick. &lt;br /&gt;
&lt;br /&gt;
Ein wesentliches Argument für die Verwendung von zwei Magneten anstelle der im Forum beschriebenen Lösung “1 Magnet und eine angeklebte Beilagscheibe” ist die Positioniergenauigkeit. Bei meinen Versuchen mit der Kombination Metall + Magnet hatte ich immer das Problem, dass der Magnet leicht seitlich verschoben werden konnte. Dies ist bei der Kombination Magnet + Magnet nicht möglich. Der flache Magnet wurde ebenfalls bewusst ausgewählt. Der Grund ist, dass zwei aneinander haftende Magnete nur schwer in axialer Richtung getrennt werden können. Es ist dagegen relativ einfach, die beiden Magneten durch seitliche Verschiebung zu trennen. Um die Plexiglasscheibe mit angeklebten Magneten seitlich verschieben zu können, dürfen die Magnete, die auf das Plexiglas geklebt werden, nicht zu hoch sein. Da die Plexiglasplatte ohne Luftspalt bündig auf der Zwischenplatte aufliegen soll, muss der Platz für den 0.5 mm Magnet auf der Seite der Zwischenplatte geschaffen werden. &lt;br /&gt;
&lt;br /&gt;
Theoretisch müsste man für beide Magneten in die Zwischenplatte ein 8 mm Loch mit einer Tiefe von 0.5 mm + 4.0 mm = 4.5 mm bohren. Damit der 0.5 mm dicke Magnet durch Verschieben entfernt werden kann, wird der Rand der Bohrung so angeschrägt, dass der Magnet seitlich verschoben werden kann. &lt;br /&gt;
&lt;br /&gt;
Da ich keine Bohrständer habe, wurde die Bohrungen freihändig mit einem 8 mm Holzbohrer im Akkuschrauber ausgeführt. Mit Hilfe eines Klebestreifens wurde die ungefähre Bohrtiefe festgelegt. &lt;br /&gt;
Im Zentrum der 8 mm Sacklochbohrung wurde zusätzlich eine 2 mm Bohrung durch die Zwischenplatte angefertigt. In diese kann man von der Unterseite mit den 2 mm Bohrer stecken und bei Bedarf den Magneten wieder ausstoßen. Ursprünglich dachte ich, den 8 mm x 4 mm Magneten festkleben zu müssen. Die Passgenauigkeit war jedoch so gut, dass ich den 8 mm x 4 mm Magneten einfach in die Bohrung pressen konnten (mit Hilfe eines kleinen Hölzchens und eines kleinen Hammers). &lt;br /&gt;
&lt;br /&gt;
Der 8 mm x 0.5 mm Magnet wird gemeinsam mit dem 8 mm x 4 mm Magnet so in die Bohrung gepresst, dass seine Oberfläche mit der Zwischenplatte bündig abschließt. Anschließend wird der kleine Magnet mit einem spitzen Gegenstand (z. B. Taschenmesser) entfernt und der Rand abgeschrägt (Dremel und Schleifsteinchen bzw. Fräser). &lt;br /&gt;
&lt;br /&gt;
Vor der Klebebefestigung an der Plexiglasscheibe wird das Holz und der 8 mm x 4 mm Magnet mit einer dünnen Folie vor Kleberüberschuss geschützt. In meinem Fall habe ich Haushalts-Alu-Folie verwendet. Für die Klebung werden die 8 mm x 0.5 mm Magneten an dem fest gepressten 8 mm x 4 mm Magneten fixiert. Der Kleber wird dünn auf die Oberfläche des 8 mm x 0.5 mm Magneten aufgetragen, die Plexiglasscheibe korrekt positioniert und mit Hilfe von Gewichten während der Aushärtphase fixiert. Ich habe alle Magnete auf einmal geklebt. &lt;br /&gt;
&lt;br /&gt;
Die einzelnen Arbeitsschritte sind auf den Bildern zu erkennen.&lt;br /&gt;
&lt;br /&gt;
=== Bezugsquelle der Magnete ===&lt;br /&gt;
&lt;br /&gt;
Neotexx, Herweghstr. 11, 12487	Berlin ( http://www.neomagnete.com )&lt;br /&gt;
&lt;br /&gt;
Folgende Magnete wurden verwendet:&lt;br /&gt;
&lt;br /&gt;
* Cylinder 8x0.5 mm, Dimension: D8x0.5mm, NdFeB Magnet in N48 (1.42 Tesla), Magnetized Direction: through 0.5mm (axial), Coating: Nickel, item # Z-008-000.5-N &lt;br /&gt;
* Cylinder 8x4 mm, Dimension: D8x4mm, NdFeB Magnet in N48 (1.42 Tesla), Magnetized Direction: through 4mm, Coating: Nickel, item # Z-008-004-N&lt;br /&gt;
&lt;br /&gt;
Wer den Mindestbestellwert (10€) und die vergleichsweise hohen Versandkosten (5,50€) scheut, kann mir (User [http://www.mikrocontroller.net/user/show/Stoerte Stoerte]) eine PN-Schicken. Ich habe etwas großzügiger bestellt und würde die übrigen Magnete zu folgenden Paketen (Paket 2 für den Fall, dass man eine zweite Frontplatte zum Wechseln bestücken will) abgeben:&lt;br /&gt;
&lt;br /&gt;
* Paket 1: 4x D8x4mm + 4x D8x0.5mm = 4,50€ + 1,50€ Versand&lt;br /&gt;
* Paket 2: 4x D8x4mm + 8x D8x0.5mm = 6,00€ + 1,50€ Versand&lt;br /&gt;
&lt;br /&gt;
== Befestigung der Platinen ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
Datei:22-bueroklammer-pin.jpeg|Befestigungspin aus Büroklammerdraht.&lt;br /&gt;
Datei:23-led-streifen-mit-pins.jpeg|Die Pins werden in der Ausfräsung verkeilt und fixieren die LED-Streifenplatinen, können aber jederzeit wieder leicht gelöst werden.&lt;br /&gt;
Datei:24-min-platine-mit-pin.jpeg|Auch die Kabel und Minuten-LED-Platinen können mit Pins fixiert werden.&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
An der Zwischenplatte müssen folgende Komponenten befestigt werden:&lt;br /&gt;
&lt;br /&gt;
* Steuerelektronik&lt;br /&gt;
* LED-Platinen Word Clock&lt;br /&gt;
* LED-Platinen Ambilight&lt;br /&gt;
* Netzteil&lt;br /&gt;
* DCF77-Modul&lt;br /&gt;
* Kabel&lt;br /&gt;
&lt;br /&gt;
Die einfachste Lösung ist die Klebebefestigung mit Heißkleber oder einem anderen geeigneten Kleber. Die Klebemethode hat jedoch den Nachteil, dass die Klebung nicht so leicht wieder gelöst werden kann. Aus diesem Grund wurde eine reversible Alternative gesucht. &lt;br /&gt;
&lt;br /&gt;
Die vorgeschlagene Methode wirkt zwar auf den ersten Blick nicht sehr professionell, funktioniert aber sehr gut. So musste ich einige Male Korrekturen an den LED Platinen vornehmen, weil sich z. B. bei meinen „Manipulationen“ Kabel gelöst haben. &lt;br /&gt;
&lt;br /&gt;
Die Lösung ist relativ einfach. Ein harter Draht (in meinem Fall 0,8 mm dicker Federdraht, wird z. B. bei Kieferorthopäden verwendet, als Alternative kann man aber auch Büroklammerdraht verwenden) wird etwas länger abgezwickt, als die Ausfräsung für die Platine oder die Kabel ist. Der Draht kann in die relativ weiche MDF Platte so verkeilt werden, dass die Platine oder Kabel gut halten. Es ist sinnvoll, den Draht an beiden Enden abzuzwicken. Dadurch entstehen zwei scharfe Enden, die sich leichter im MDF verankern lassen. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
Datei:25-dcf-77-geklebt.jpeg|DCF-77 Modul und Ferritantenne. Befestigung mit Heisskleber.&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Als Befestigung für die Ambilight-LED Streifen sowie  das DCF-77 Modul habe ich leider keine bessere Lösung gefunden, als die Befestigung mit Heißkleber. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
Datei:26-netzteil.jpeg|&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die Steuerplatine wird durch die angeschlossenen Kabel sicher in ihrer Position gehalten. &lt;br /&gt;
&lt;br /&gt;
Das modifizierte Conrad-Netzteil hält durch Klemmpassung in der Aussparung. Achtung: an der Unterseite der Platine liegen die 220 V Anschlüsse frei. Das ist kein Problem, sobald die Uhr an der Wand befestigt ist. Um sicherzustellen, dass niemand aus Versehen die Platine von der Seite berühren kann, wurde das Oberteil des Gehäuses als Berührschutz belassen. Beachten Sie dies bitte bei der Montage. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
Datei:27-uhr-wand-mit-ambilight.jpeg|&lt;br /&gt;
Datei:28-uhr-wand-ohne-ambilight.jpeg|&lt;br /&gt;
Datei:29-uhr-wand-schraeg-1.jpeg|&lt;br /&gt;
Datei:30-uhr-wand-schraeg-2.jpeg|&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Diese Lösung ist nur von Relevanz, wenn die Stromversorgung direkt hinter der Uhr möglich ist. Dann sieht die Lösung allerdings sehr elegant aus:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
Datei:31-netzteil-1.jpeg|&lt;br /&gt;
Datei:32-netzteil-2.jpeg|&lt;br /&gt;
Datei:33-netzteil-3.jpeg|&lt;br /&gt;
Datei:34-netzteil-4.jpeg|&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Als Vorbereitung musste das Netzteilgehäuse geöffnet werden. Folgende Bilder zeigen den Innenaufbau und sollen so das Öffnen des Gehäuses erleichtern helfen. Das Gehäuse ist fest verklebt. Der Kleber kann nicht aufgesprengt werden (vielleicht würde es gehen, wenn man den Kleber mit einer Heißluftpistole ausreichend erwärmen würde ?). Ich habe mich für die Lösung entschieden, das Gehäuse entlang der Klebenaht mit einer Puk-Metallsäge aufzusägen, da ich noch nicht wusste, wie das Netzteil aufgebaut ist. Heute würde ich nur noch die Steckerpins absägen. Als Alternative zu dieser brachialen Methode habe ich geprüft, ob man ein Netzteil selbst bauen könnte. Ich bin aber zu den Schluss gekommen, dass es nicht wirklich möglich ist, ein eigenes Netzteil so preiswert und auch so klein wie das Conrad-Netzteil zu bauen.&lt;br /&gt;
&lt;br /&gt;
== Verkabelung ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
Datei:35-starre-draehte.jpeg|Für den ersten Versuch hatte ich Einzelader-Schaltdraht direkt auf die LED-Streifen gelötet. Leider neigte der Schaltdraht dazu, an den ungünstigsten Stellen zu brechen, wenn ich die Platinen bewegte, was allein schon zum Löten erforderlich war. &lt;br /&gt;
Datei:36-fliegender-aufbau.jpeg|Fliegender Aufbau... für den ersten Systemtest.&lt;br /&gt;
Datei:37-stecker-an-led-platine.jpeg|Erst die Verwendung von abgewinkelten Steckverbindern (Stiftleiste RM 2,54, gewinkelt Rastermaß: 2.54 mm, in Kombination mit der passenden Buchsenleiste RM 2,54 Rastermaß: 2.54 mm, Alternative: Stiftleiste RM 2,54, gewinkelt Rastermaß: 2.54 mm Polzahl: 3, 72645 BKL Electronic) vereinfachte die Montage der RGB-Verbindungen drastisch. &lt;br /&gt;
Datei:38-verkabelung-1.jpeg|Zusätzlich zu den Steckverbindern wurden keine starren Einzelkabel mehr verwendet, sondern flexible Drähte (bei mir: recycelte IDE-Festplattenkabel, alternativ: Flachbandkabel, RM 1,27; Polzahl: 50, 0.09 mm², Grau Sterner Kabel, ich werde beim nächsten Mal dieses Kabel testen: Flachbandkabel 3 x 0.14 mm², Gelb, Rot, Grün,  Sterner Kabel, Conrad Best.-Nr.: 605819 - 62).&lt;br /&gt;
&lt;br /&gt;
Auch für die Anschlüsse der Kabel von den Buchsensteckern K7 und K8 an die LED-Streifenplatinen waren die Steckverbinder sehr hilfreich. Die Einzelstecker habe ich, weil ich keine Alternativen hatte/kannte, von Buchsenleisten abgetrennt, was doch recht aufwendig war. Kennt jemand eine professionellere Lösung (Name, Bezugsquelle?)&lt;br /&gt;
Datei:39-verkabelung-2.jpeg|Sobald die Funktion erfolgreich getestet wurde, können die Kabel eingekürzt und schöner verlegt werden. Eigentlich wollte ich das Klebeband durch Heisskleber ersetzen. Aber nichts ist bekanntlich beständiger als ein Provisorium.&lt;br /&gt;
Datei:40-ir-und-ldr.jpeg|Der LDR und der Infrarot-Empfänger werden an der Unterseite der Word Clock auf leeren Plätzen der Amibilight-Platine befestigt. Für den IR-Empfänger reicht doppelseitiges Klebeband, der LDR kann mit einfachem Klebeband an den Beinchen fixiert werden. &lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
P.N. (http://www.mikrocontroller.net/topic/156661#2511143) hat eine elegante Lösung zur Befestigung des LDR und TSOP vorgeschlagen:&lt;br /&gt;
&lt;br /&gt;
&amp;quot;- Der TSOP sitzt bei mir hinter dem &amp;quot;S&amp;quot; (&amp;quot;WACHTZEHNRS&amp;quot;) und ist direkt&lt;br /&gt;
auf diese Streifenplatine eingelötet. Davor habe ich natürlich die&lt;br /&gt;
PWM-Leiterbahnen des letzten Feldes durchtrennt und die 3 Beinchen auf&lt;br /&gt;
Stiftleisten am Ende der Platine geroutet. Geht bei dem Layout ganz gut.&lt;br /&gt;
Der IR-Empfang ist auch durch die Frontplatte einwandfrei&lt;br /&gt;
&lt;br /&gt;
- Der LDR sitzt hinter dem &amp;quot;M&amp;quot; (&amp;quot;TGNACHVORJM&amp;quot;) und wurde ebenso an der&lt;br /&gt;
Steifenplatine befestigt und auf eine Stiftleiste gelegt. Zusätzlich hat&lt;br /&gt;
er noch einen &amp;quot;Schirm&amp;quot; aus einer Lochrasterplatine gegen Streulicht von&lt;br /&gt;
angrenzenden Buchstaben erhalten&amp;quot;&lt;br /&gt;
&lt;br /&gt;
== Wandbefestigung der Uhr ==&lt;br /&gt;
&lt;br /&gt;
[[Datei:41-spiegelblech-1.jpeg|miniatur|Minimal Montageset: Exzenterscheiben (oben), Spiegel-Haftmagnet (links und rechts aussen), Haftblech mit Kieme]]&lt;br /&gt;
[[Datei:42-spiegelblech-2.jpeg|miniatur|Das Haftblech mit Kieme wird mit der Metallsäge getrennt und Bohrungen zur Befestigung mit Schrauben werden ergänzt (rechts Original, links Modifikation)]]&lt;br /&gt;
[[Datei:43-spiegelhalterung-montiert.jpeg|miniatur|Fertig montierte Haftbleche]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Die Word Clock kann wie jedes Bild an der Wand befestigt werden. Eine elegante, bewährte und gut funktionierende Variante stellt die Befestigung mit einer sog. Spiegelbefestigung mit Haftmagneten dar. Die Komplettsets sind meist ziemlich teuer und die Befestigungsbleche sind für die Word Clock viel zu groß. &lt;br /&gt;
&lt;br /&gt;
Eine preisgünstige Lösung findet man bei:&lt;br /&gt;
&lt;br /&gt;
Leha-Technik&amp;lt;br/&amp;gt;&lt;br /&gt;
Burger Straße 63 A&amp;lt;br/&amp;gt;&lt;br /&gt;
42859 Remscheid&amp;lt;br/&amp;gt;&lt;br /&gt;
[http://www.leha.de www.leha.de]&lt;br /&gt;
&lt;br /&gt;
Hier kann man die Einzelkomponenten kaufen. Wichtig sind nur die Exzenterscheiben (2 Stück), die Haftmagneten (2 Stück) und die Haftbleche mit Kieme (2 Stück). Die Schrauben und Dübel sollten sich in der Bastelkiste finden (ich habe 6er Dübel, mit 4 x 50 mm Schrauben verwendet). Die Exzenterscheiben haben einen entscheidenden Vorteil. Wenn der Bohrer etwas verläuft oder wenn schon die Messung ungenau ist, kann man die Befestigung mit der Exzenterscheibe immer noch schön waagerecht ausrichten. &lt;br /&gt;
&lt;br /&gt;
Theoretisch könnte man auf die Magneten verzichten. In meinem Fall war jedoch hinter der Uhr eine Stromversorgung und die Kabel waren etwas steifer als gewünscht. Das hatte zur Folge, dass die Uhr von den Kabeln von der Wand abgehoben wurde und somit leicht schräg stand. Die Magneten haben dieses Problem sehr elegant gelöst. &lt;br /&gt;
&lt;br /&gt;
Das Haftblech mit Kieme wurde mit einer Eisensäge geteilt. Der Teil mit der Kieme ist mit 2.5 cm breit genauso breit, wie der Steg für die Befestigung. Da ich im Zusammenhang mit MDF kein Vertrauen zu dem Kleber hatte, wurden zwei Bohrungen ergänzt (3,5 mm Metallbohrer, improvisiertes Versenken der Schrauben mit einem 6 mm Metallbohrer, ich habe keinen speziellen Versenkbohrer). Das Blech wurde dann geklebt und mit 3 x 20 mm Spax-Schrauben befestigt. Die MDF Platte wurde vorher mit einem 2 mm Bohrer vor gebohrt. &lt;br /&gt;
&lt;br /&gt;
Der untere, abgetrennte Teil des Haftbleches wurde für den Magneten verwendet. Seine Breite passte ebenfalls perfekt zu den Befestigungsstegen. Auch diese Bleche wurden zusätzlich mit Schrauben befestigt.&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
! Anzahl x VPE !! Artikel !! Art.Nr.&lt;br /&gt;
|-&lt;br /&gt;
| 2 x Stück || Haftblech, mit Kieme - 70 x 70 mm (selbstklebend) 3 kg || 5208608&lt;br /&gt;
|-&lt;br /&gt;
| 2 x Stück || Spiegel-Haftmagnet || 5208601&lt;br /&gt;
|-&lt;br /&gt;
| 2 x Stück || Exzenterscheibe || 5208602&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
= Das erste Mal einschalten =&lt;br /&gt;
&lt;br /&gt;
=== LED-Streifen ===&lt;br /&gt;
&lt;br /&gt;
Nach dem Verlöten aller Bauteile der LED-Streifen sollten diese vor dem endgültigen Verbau noch geprüft werden:&lt;br /&gt;
&lt;br /&gt;
# Prüfung der drei PWM-Kanäle und der Steuerleitungen auf gegenseitige Kurzschlüsse&lt;br /&gt;
# Funktionsprüfung der LED-Streifen mittels direkter Versorgung durch ein Netzteil (PWM R/G/B an GND, OUT an 13.6V): Hierbei nacheinander die einzelnen Farben der jeweiligen Wörter anschließen und ggf. nacharbeiten, falls es &#039;mal dunkel bleiben sollte&lt;br /&gt;
&lt;br /&gt;
-&amp;gt; &amp;quot;Beginner-Tipp&amp;quot;: Die mangelhaften Lötstellen findet man am besten, wenn man mit dem Diodentest des Multimeters die Lötpunkte der angrenzenden LEDs berührt&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Steuerplatine ===&lt;br /&gt;
&lt;br /&gt;
Wenn alle Bauteile verlötet sind, sollten zur ersten Prüfung alle Sockel noch leer bleiben. Wer ein entsprechendes Netzteil hat, sollte den Strom auf ca. 50mA begrenzen. Wer dies nicht kann, sollte wenigstens ein (im Regelfall auf 200mA) abgesichertes Netzteil dazwischen schalten. Zum Bestücken der einzelnen Bauteile sollte stets die Spannungsversorgung unterbrochen werden.&lt;br /&gt;
&lt;br /&gt;
# Prüfen der Spannungsversorgung auf Kurzschluss&lt;br /&gt;
# Anlegen der Versorgungsspannung (15V), am Spannungsregler sollten nun 5V anliegen. Tipp: Minus ist ganz außen, Plus ist die zweite Befestigung von außen. Kann man anhand der Unterseite der Platine kontrollieren. Im Schaltplan ist das bei der Belegung von KL1 nicht eindeutig zu erkennen!&lt;br /&gt;
# µC bestücken, die Stromaufnahme sollte nun knapp 20mA betragen&lt;br /&gt;
# Erst Fuses programmieren, dann Software flashen&lt;br /&gt;
# RTC, Schieberegister (74HCT595) und Treiber (ULN) einsetzen&lt;br /&gt;
# LED-Streifen anschließen&lt;br /&gt;
# Wenn alles funktioniert, dann blinken die 4 Minuten-LEDs nach dem Einschalten rund 5-6 mal gleichzeitig auf. Zu der Zeit fängt die RealTimeClock an zu ticken&lt;br /&gt;
# Während des Blinkens kann nun auch eine (beliebige) Taste auf der Fernbedienung gedrückt werden, und deren Anlernprozess gestartet werden (-&amp;gt; s. Manual). Für den Funktionstest muss keine dauerhafte Tastenbelegung gewählt werden, dies kann jederzeit nachgeholt werden.&lt;br /&gt;
# Wenn die FB angelernt ist, dann gibt es eine Taste, mit der alle Ausgänge (das heißt alle Wörter) nacheinander geschaltet werden (&amp;quot;Demo-Modus&amp;quot;). Den Demo-Modus kann man verlassen, in dem ein anderer Modus aktiviert wird. Drückt einfach im Anschluss an den Demo-Modus die Taste &amp;quot;Einfarb-/Modus/Farbprofile aktivieren&amp;quot;.&lt;br /&gt;
# Mit der Fernbedienung und der Uhr spielen ... :o)&lt;br /&gt;
# Nun kann das DCF-Modul angeschlossen werden (wenn möglich, per UART den DCF-Status loggen). Nach einiger Zeit (mehrere Minuten!) sollte die Uhr die aktuelle Zeit anzeigen, sofern auf der DCF-Seite alles klappt.&lt;br /&gt;
&lt;br /&gt;
Wenn eine Fernbedienung angelernt werden soll, dann muss man, während alle 4 Minuten-LEDs blinken, irgendeine Taste auf der Fernbedienung drücken. Wird die FB erkannt, dann hört das Blinken auf und die &amp;quot;eins&amp;quot; leuchtet. Jetzt musst man die Taste drücken, die zum Ein-/Ausschalten der Uhr verwendet werden soll. Als nächstes leuchtet die &amp;quot;zwei&amp;quot; usw..... --&amp;gt; Mehr dazu siehe Handbuch&lt;br /&gt;
&lt;br /&gt;
Sollte nach dem &amp;quot;Neustart&amp;quot; der Uhr keine LED mehr leuchten, KEINE PANIK... es kann sein, dass einfach die &amp;quot;Helligkeit&amp;quot; der LEDs so gering ist, dass Ihr sie einfach nicht seht.&lt;br /&gt;
&lt;br /&gt;
Tipp fürs erste Anlernen der FB: Einfach alle Tasten stur der Reihe nach durchdrücken. Dann kann man durch Zählen und Vergleichen mit der Tabelle im Handbuch solange &amp;quot;überleben&amp;quot;, bis man die Muse hatte, eine sinnvolle Belegung zu überlegen und auch zu dokumentieren!&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
= Abstimmungen =&lt;br /&gt;
Eine Stimme ist ein Strich. Nach 5 Strichen bitte ein Leerzeichen einfügen.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== offen: ==&lt;br /&gt;
IR-FB Anlernphase deaktivierbar (Default / keine FB angelernt: anlernen aktiv): | &amp;lt;br&amp;gt;&lt;br /&gt;
ethernet ntp client: ||||| ||||| ||||| || &amp;lt;br&amp;gt;&lt;br /&gt;
Bewegungsmelder: ||||| ||||| ||||| ||||| ||||| ||||| ||||&amp;lt;br&amp;gt;|&lt;br /&gt;
IR zum PC für Kommunikation/Bootloader |&amp;lt;br&amp;gt;&lt;br /&gt;
RFM12 für Kommunikation/Bootloader |||&amp;lt;br&amp;gt;&lt;br /&gt;
NTP Server (um eine genaue Zeit ins Netzwerk zu verteilen) |||&amp;lt;br&amp;gt;&lt;br /&gt;
Beim Start, alle LEDs einmal der Reihe nach Durchlaufen lassen zum Funktionstest (statt &amp;quot;Volldampfmodus&amp;quot;): ||||| ||||| ||||| || &amp;lt;br&amp;gt;&lt;br /&gt;
Ton zur vollen Stunde (Beep/Piezo): ||||| ||&amp;lt;br /&amp;gt;&lt;br /&gt;
ZBus (Ethersex) zum einstellen der Uhr über das Netzwerk, evt holen der Zeitdaten über ZBus von einem Zeitserver: || &amp;lt;br /&amp;gt;&lt;br /&gt;
zeitgesteuert Dunkelschalten wochentagsweise: ||||| ||||&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== bereits umgesetzt: ==&lt;br /&gt;
DCF: ||||| ||||| ||||| ||||| ||||| ||||| ||||| ||||| |||| &amp;lt;br&amp;gt;&lt;br /&gt;
IR für Fernbedienung: ||||| ||||| ||||| || &amp;lt;br&amp;gt;&lt;br /&gt;
Ambilight: ||||| ||||| ||||| ||||| |||| &amp;lt;br&amp;gt;&lt;br /&gt;
zeitgesteuert Dunkelschalten (z.&amp;amp;nbsp;B. nachts &amp;quot;Aus&amp;quot;): ||||| ||||| ||||| &amp;lt;br&amp;gt;&lt;br /&gt;
Bluetooth: || (Posting: [http://www.mikrocontroller.net/topic/156661?goto=1710183#1710183 Bluetooth mit Debug, Bootloader und Autoreset])&amp;lt;br&amp;gt;&lt;br /&gt;
Möglichkeit, Zeiteinstellmodus bei &amp;quot;0 Minuten&amp;quot; von Normalmodus zu unterscheiden z.B. blinkendes &amp;quot;UHR&amp;quot; |||||&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;quot;ES IST&amp;quot; soll man ein- oder ausschalten können: ||||| |&amp;lt;br&amp;gt;&lt;br /&gt;
Bluetooth per FB ein-/ausschalten: ||&amp;lt;br&amp;gt;&lt;br /&gt;
Taste &amp;quot;Speichern&amp;quot; auf FB statt automatisch |||(On Off speichert)&amp;lt;br&amp;gt;&lt;br /&gt;
kurzzeitiger &amp;quot;Volldampf-Modus&amp;quot; (alle Wörter an für bspw. 30sek): ||||| |||  - als Submodus des Demomodus, multiplexing, jeweils ein Kanal an jedem Treiber aktiv&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== An/Ausschalt-Logik ==&lt;br /&gt;
A: Manuell ausgeschaltete Uhr bleibt aus bei Erreichen der Einschaltzeit - hier könnte natürlich gleich der Stecker gezogen werden, sofern die Uhr nicht festeingebaut ist&lt;br /&gt;
&lt;br /&gt;
B: Manuell ausgeschaltete Uhr geht wieder an bei Erreichen der Einschaltzeit&lt;br /&gt;
&lt;br /&gt;
C: Es gibt eine OFF-Taste und eine STANDBY-Taste. Bei STANDBY schaltet sich die Uhr bei Erreichen der Einschaltzeit wieder ein, bei OFF bleibt sie aus.&lt;br /&gt;
&lt;br /&gt;
D: Die Variante A oder B lässt sich vor dem Kompilieren der Software als define individuell nach eigenem Gutdünken festlegen. (Viele andere Werte sind bereits heute so einstellbar in der SW)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A Strichliste: |&lt;br /&gt;
&lt;br /&gt;
B Strichliste: |||  &lt;br /&gt;
&lt;br /&gt;
C Strichliste: |||||  ||||| |||||&lt;br /&gt;
&lt;br /&gt;
D Strichliste: ||||&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&#039;&#039;&#039;Zurück zum Hauptartikel: [[Word Clock]]&#039;&#039;&#039;&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Timer und Uhren]]&lt;br /&gt;
[[Kategorie:AVR-Projekte]]&lt;br /&gt;
[[Kategorie:DCF77]]&lt;/div&gt;</summary>
		<author><name>Promeus</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=Datei:LED-DCF77.PNG&amp;diff=92120</id>
		<title>Datei:LED-DCF77.PNG</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=Datei:LED-DCF77.PNG&amp;diff=92120"/>
		<updated>2016-02-28T13:53:05Z</updated>

		<summary type="html">&lt;p&gt;Promeus: Promeus lud eine neue Version von Datei:LED-DCF77.PNG hoch&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Promeus</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=Datei:LED-DCF77.PNG&amp;diff=92119</id>
		<title>Datei:LED-DCF77.PNG</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=Datei:LED-DCF77.PNG&amp;diff=92119"/>
		<updated>2016-02-28T13:49:42Z</updated>

		<summary type="html">&lt;p&gt;Promeus: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Promeus</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=AVR-Tutorial:_ADC&amp;diff=92066</id>
		<title>AVR-Tutorial: ADC</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=AVR-Tutorial:_ADC&amp;diff=92066"/>
		<updated>2016-02-26T19:41:48Z</updated>

		<summary type="html">&lt;p&gt;Promeus: Änderung 92062 von 94.134.64.69 (Diskussion) rückgängig gemacht.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Was macht der ADC? ==&lt;br /&gt;
&lt;br /&gt;
Wenn es darum geht, Spannungen zu messen, wird der Analog-/Digital-Wandler (kurz: A/D-Wandler) oder englisch [[ADC | &#039;&#039;&#039;A&#039;&#039;&#039;nalog &#039;&#039;&#039;D&#039;&#039;&#039;igital &#039;&#039;&#039;C&#039;&#039;&#039;onverter]] (ADC) benutzt. Er konvertiert eine elektrische Spannung in eine Digitalzahl. Prinzipiell wird dabei die Messspannung mit einer Referenzspannung verglichen. Die Zahl drückt daher das Verhältnis der Messspannung zu dieser Referenzspannung aus. Sie kann in gewohnter Weise von einem [[Mikrocontroller]] weiterverarbeitet werden.&lt;br /&gt;
&lt;br /&gt;
== Elektronische Grundlagen ==&lt;br /&gt;
&lt;br /&gt;
Die ADC-Versorgungsspannung (AVCC) darf maximal um +/-0,3V von der Versorgung des Digitalteils (VCC) abweichen, jedoch nicht 5,5V überschreiten. Die externe Referenzspannung VREF darf nicht kleiner als die im Datenblatt unter ADC Characteristics als VREFmin angegebene Spannung (z.&amp;amp;nbsp;B. ATmega8: 2V, ATmega644P: 1V) und nicht größer als AVCC sein. Die Spannungen an den Wandlereingängen müssen im Intervall GND &amp;amp;le; VIN &amp;amp;le; VREF liegen.&lt;br /&gt;
&lt;br /&gt;
Im Extremfall bedeutet dies: Sei VCC = 5,5V, folgt AVCC_max = VREF_max = VIN_max = 5,5V.&lt;br /&gt;
&lt;br /&gt;
Der Eingangswiderstand des ADC liegt in der Größenordnung von einigen Megaohm, so dass der ADC die Signalquelle praktisch nicht belastet. Desweiteren enthält der Mikrocontroller eine sog. &#039;&#039;&#039;Sample&amp;amp;Hold&#039;&#039;&#039; Schaltung. Dies ist wichtig, wenn sich während des Wandlungsvorgangs die Eingangsspannung verändert, da die AD-Wandlung eine bestimmte Zeit dauert. Die Sample&amp;amp;Hold-Stufe speichert zum Beginn der Wandlung die anliegende Spannung und hält sie während des Wandlungsvorgangs konstant.&lt;br /&gt;
&lt;br /&gt;
=== Beschaltung des ADC-Eingangs ===&lt;br /&gt;
&lt;br /&gt;
Um den ADC im Folgenden zu testen wird eine einfache Schaltung an den PC0-Pin des ATmega8 angeschlossen. Dies ist der ADC-Kanal 0. Bei anderen AVR-Typen liegt der entsprechende Eingang auf einem andern Pin, hier ist ein Blick ins Datenblatt angesagt.&lt;br /&gt;
&lt;br /&gt;
[[Bild:Tut_ADC_01.gif|framed|center|Testschaltung]]&lt;br /&gt;
&lt;br /&gt;
Der Wert des [[Potentiometer]]s ist Dank des hohen Eingangswiderstandes des ADC ziemlich unkritisch. Es kann jedes Potentiometer von 1k&amp;amp;Omega; bis 1M&amp;amp;Omega; benutzt werden.&lt;br /&gt;
&lt;br /&gt;
Wenn andere Messgrößen gemessen werden sollen, so bedient man sich oft und gern des Prinzips des [[Spannungsteiler]]s. Der [http://www.mikrocontroller.net/articles/Kategorie:Sensorik Sensor] ist ein veränderlicher Widerstand. Zusammen mit einem zweiten, konstanten Widerstand bekannter Größe wird ein Spannungsteiler aufgebaut. Aus der Variation der durch den variablen Spannungsteiler entstehenden Spannung kann auf den Messwert zurückgerechnet werden.&lt;br /&gt;
&lt;br /&gt;
      Vcc ----------+                Vcc ---------+&lt;br /&gt;
                    |                             |&lt;br /&gt;
                   ---                         Sensor,&lt;br /&gt;
                   | |                     der seinen Widerstand&lt;br /&gt;
                   | |                     in Abhängigkeit der&lt;br /&gt;
                   ---                     Messgröße ändert&lt;br /&gt;
                    |                             |&lt;br /&gt;
                    +------- PC0                  +-------- PC0&lt;br /&gt;
                    |                             |&lt;br /&gt;
                Sensor,                          ---&lt;br /&gt;
           der seinen Widerstand                 | |&lt;br /&gt;
           in Abhängigkeit der                   | |&lt;br /&gt;
           Messgröße ändert                      ---&lt;br /&gt;
                    |                             |&lt;br /&gt;
       GND ---------+                 GND --------+&lt;br /&gt;
&lt;br /&gt;
Die Größe des zweiten Widerstandes im Spannungsteiler richtet sich nach dem Wertebereich, in welchem der Sensor seinen Wert ändert. Als Daumenregel kann man sagen, dass der Widerstand so gross sein sollte wie der Widerstand des Sensors in der Mitte des Messbereichs.&lt;br /&gt;
&lt;br /&gt;
Beispiel: Wenn ein [[Temperatursensor]] seinen Widerstand von 0..100 Grad von 2k&amp;amp;Omega; auf 5k&amp;amp;Omega; ändert, sollte der zweite Widerstand eine Grösse von etwa (2+5)/2 = 3,5k&amp;amp;Omega; haben.&lt;br /&gt;
&lt;br /&gt;
Aber egal wie immer man das auch macht, der entscheidende Punkt besteht darin, dass man seine Messgröße in eine veränderliche Spannung &#039;übersetzt&#039; und mit dem ADC des Mega8 die Höhe dieser Spannung misst. Aus der Höhe der Spannung kann dann wieder in der Umkehrung auf die Messgröße zurückgerechnet werden.&lt;br /&gt;
&lt;br /&gt;
===Referenzspannung AREF===&lt;br /&gt;
[[bild:adc_connection.png|thumb|right|300px|Beschaltung von A&amp;lt;sub&amp;gt;REF&amp;lt;/sub&amp;gt;]]&lt;br /&gt;
Der ADC benötigt für seine Arbeit eine Referenzspannung. Dabei gibt es 2 Möglichkeiten:&lt;br /&gt;
* interne Referenzspannung&lt;br /&gt;
* externe Referenzspannung&lt;br /&gt;
&lt;br /&gt;
Bei der Umstellung der Referenzspannung sind Wartezeiten zu beachten, bis die ADC-Hardware einsatzfähig ist (Datenblatt und  [http://www.mikrocontroller.net/topic/165513]).&lt;br /&gt;
&lt;br /&gt;
==== Interne Referenzspannung ====&lt;br /&gt;
&lt;br /&gt;
Mittels Konfigurationsregister können beim ATmega8 verschiedene Referenzspannungen eingestellt werden. Dies umfasst die Versorgungsspannung AVcc sowie eine vom AVR bereitgestellte Spannung von 2,56V (bzw. bei den neueren AVRs 1,1V, wie z.&amp;amp;nbsp;B. beim ATtiny13, ATmega48, 88, 168, ...). In beiden Fällen wird an den AREF-Pin des Prozessors ein Kondensator von 100nF als Minimalbeschaltung nach Masse angeschlossen, um die Spannung zu puffern/glätten. Es ist jedoch zu beachten, dass die interne Referenzspannung ca. +/-10% vom Nominalwert abweichen kann, vgl. dazu das Datenblatt Abschnitt ADC Characteristics VINT (z.&amp;amp;nbsp;B. ATmega8: 2,3-2,9V, ATmega324P: 2,33-2,79V bzw. 1,0-1,2V &amp;quot;Values are guidelines only.&amp;quot;). Die typische Abweichung der internen Referenzspannung vom Sollwert bei einigen AVR-Controllern wird in [http://www.schramm-software.de/tipps/adc-referenzspannung/ dieser Testschaltung] exemplarisch untersucht.&lt;br /&gt;
&lt;br /&gt;
==== Externe Referenzspannung ====&lt;br /&gt;
&lt;br /&gt;
Wird eine externe Referenz verwendet, so wird diese an AREF angeschlossen. Aber aufgepasst! Wenn eine Referenz in Höhe der Versorgungsspannung benutzt werden soll, so ist es besser, dies über die interne Referenz zu tun. Außer bei anderen Spannungen als 5V bzw. 2,56V gibt es eigentlich keinen Grund, an AREF eine Spannungsquelle anzuschließen. In Standardanwendungen fährt man immer besser, wenn die interne Referenzspannung mit einem Kondensator an AREF benutzt wird. Die 10µH-Spule L1 kann man meist auch durch einen 47Ω-Widerstand ersetzen.&lt;br /&gt;
&lt;br /&gt;
== Ein paar ADC-Grundlagen ==&lt;br /&gt;
&lt;br /&gt;
Der ADC ist ein 10-Bit ADC, d.h. er liefert Messwerte im Bereich 0 bis 1023. Liegt am Eingangskanal 0V an, so liefert der ADC einen Wert von 0. Hat die Spannung am Eingangskanal die Referenzspannung erreicht (stimmt nicht ganz), so liefert der ADC einen Wert von 1023. Unterschreitet oder überschreitet die zu messende Spannung diese Grenzen, so liefert der ADC 0 bzw. 1023. Wird die Auflösung von 10 Bit nicht benötigt, so ist es möglich die Ausgabe durch ein Konfigurationsregister so einzuschränken, dass ein leichter Zugriff auf die 8 höchstwertigen Bits möglich ist.&lt;br /&gt;
&lt;br /&gt;
Wie bei vielen analogen Schaltungen, unterliegt auch der ADC einem Rauschen. Das bedeutet, dass man nicht davon ausgehen sollte, dass der ADC bei konstanter Eingangsspannung auch immer denselben konstanten Wert ausgibt. Ein &amp;quot;Zittern&amp;quot; der niederwertigsten 2 Bits ist durchaus nicht ungewöhnlich. Besonders hervorgehoben werden soll an dieser Stelle nochmals die Qualität der Referenzspannung. Diese Qualität geht in erheblichem Maße in die Qualität der Wandlergebnisse ein. Die Beschaltung von AREF mit einem Kondensator ist die absolut notwendige Mindestbeschaltung, um eine einigermaßen akzeptable Referenzspannung zu erhalten. Reicht dies nicht aus, so kann die Qualität einer Messung durch &amp;lt;i&amp;gt;Oversampling&amp;lt;/i&amp;gt; erhöht werden. Dazu werden mehrere Messungen gemacht und deren Mittelwert gebildet.&lt;br /&gt;
&lt;br /&gt;
[[Bild:Tut_ADC_03.gif|right|framed]]&lt;br /&gt;
Oft interessiert auch der absolute Spannungspegel nicht. Im Beschaltungsbeispiel oben ist man normalerweise nicht direkt an der am Poti entstehenden Spannung interessiert. Viel mehr ist diese Spannung nur ein notwendiges Übel, um die Stellung des Potis zu bestimmen. In solchen Fällen kann die Poti-Beschaltung wie folgt abgewandelt werden:&lt;br /&gt;
&lt;br /&gt;
Hier wird AREF (bei interner Referenz) als vom µC gelieferte Spannung benutzt und vom Spannungsteiler bearbeitet wieder an den µC zur Messung zurückgegeben. Dies hat den Vorteil, dass der Spannungsteiler automatisch Spannungen bis zur Höhe der Referenzspannung ausgibt, ohne dass eine externe Spannung mit AREF abgeglichen werden müsste. Selbst Schwankungen in AREF wirken sich hier nicht mehr aus, da ja das Verhältnis der Spannungsteilerspannung zu AREF immer konstant bleibt (ratiometrische Messung). Und im Grunde bestimmt der ADC ja nur dieses Verhältnis. Wird diese Variante gewählt, so muss berücksichtigt werden, dass die Ausgangsspannung an AREF nicht allzusehr belastet wird. Der Spannungsteiler muss einen Gesamtwiderstand von deutlich über 10k&amp;amp;Omega; besitzen. Werte von 100k&amp;amp;Omega; oder höher sind anzustreben. Verwendet man anstatt AREF AVCC und schaltet auch die Referenzspannung auf AVCC um, ist die Belastung durch den Poti unkritisch, weil hier die Stromversorgung direkt zur Speisung verwendet wird.&lt;br /&gt;
&lt;br /&gt;
Ist hingegen die absolute Spannung von Interesse, so muss man darauf achten, dass ein ADC in [[Digital | digitalen]] Bereichen arbeitet ([[Quantisierung]]). An einem einfacheren Beispiel soll demonstriert werden was damit gemeint ist.&lt;br /&gt;
&lt;br /&gt;
Angenommen der ADC würde nur 5 Stufen auflösen können und AREF sei 5V:&lt;br /&gt;
&lt;br /&gt;
      Volt    Wert vom ADC&lt;br /&gt;
&lt;br /&gt;
       0 -+&lt;br /&gt;
          |         0&lt;br /&gt;
       1 -+&lt;br /&gt;
          |         1&lt;br /&gt;
       2 -+&lt;br /&gt;
          |         2&lt;br /&gt;
       3 -+&lt;br /&gt;
          |         3&lt;br /&gt;
       4 -+&lt;br /&gt;
          |         4&lt;br /&gt;
       5 -+&lt;br /&gt;
&lt;br /&gt;
Ein ADC Wert von 0 bedeutet also keineswegs, dass die zu messende Spannung exakt den Wert 0 hat. Es bedeutet lediglich, dass die Messspannung irgendwo im Bereich von 0V bis 1V liegt. Sinngemäß bedeutet daher auch das Auftreten des Maximalwertes nicht, dass die Spannung exakt AREF beträgt, sondern lediglich, dass die Messspannung sich irgendwo im Bereich der letzten Stufe (also von 4V bis 5V) bewegt.&lt;br /&gt;
&lt;br /&gt;
== Umrechnung des ADC Wertes in eine Spannung ==&lt;br /&gt;
&lt;br /&gt;
Die Größe eines &amp;quot;Bereiches&amp;quot; bestimmt sich also zu&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
   Bereichsbreite = \frac {Referenzspannung}{Maximalwert+1}&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Der Messwert vom ADC rechnet sich dann wie folgt in eine Spannung um:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
  Spannung = ADCwert \cdot \frac {Referenzspannung} {Maximalwert}&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Wird der ADC also mit 10 Bit an 5 V betrieben, so lauten die Umrechnungen:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
   Bereichsbreite = \frac{5~\text{V}}{1024} = 0,004883~\text{V} = 4,883~\text{mV}&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
   Spannung = ADCwert \cdot 4,883~\text{mV}&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Wenn man genau hinsieht stellt man fest, dass sowohl die Referenzspannung als auch der Maximalwert Konstanten sind. D.h. der Quotient aus Referenzspannung und Maximalwert ist konstant. Somit muss nicht immer eine Addition und Division ausgeführt werden, sondern nur eine Multiplikation! Das spart viel Aufwand und Rechenzeit! Dabei kann sinnvollerweise [[Festkommaarithmetik]] zum Einsatz kommen.&lt;br /&gt;
&lt;br /&gt;
== Kalibrierung ==&lt;br /&gt;
Hat man eine externe, genaue Referenzspannung zur Hand, dann kann ein Korrekturfaktor berechnet werden, mit dem die Werte des ADCs im Nachhinein korrigiert werden können. Dies geschieht normalerweise über eine sogenannte gain offset Korrektur an einer Geraden oder einer Parabel. In erster Näherung kann man auch die interne Referenzspannung um das Inverse des ermittelten Korrekturwertes verstellen, um einen genaueren bereits digitalisierten Wert zu bekommen.&lt;br /&gt;
&lt;br /&gt;
== Die Steuerregister des ADC ==&lt;br /&gt;
&lt;br /&gt;
=== ADMUX ===&lt;br /&gt;
&lt;br /&gt;
{{Byte|ADMUX| REFS1 | REFS0 | ADLAR |       |  MUX3 |  MUX2 |  MUX1 |  MUX0}}&lt;br /&gt;
&lt;br /&gt;
* Referenzspannung &amp;lt;i&amp;gt;REFS1, REFS0&amp;lt;/i&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#ffddcc&amp;quot;&lt;br /&gt;
!REFS1||REFS0||Referenz&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;center&amp;quot;|0&lt;br /&gt;
|align=&amp;quot;center&amp;quot;|0&lt;br /&gt;
||externe Referenz&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;center&amp;quot;|0&lt;br /&gt;
|align=&amp;quot;center&amp;quot;|1&lt;br /&gt;
|interne Referenz: Avcc&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;center&amp;quot;|1&lt;br /&gt;
|align=&amp;quot;center&amp;quot;|0&lt;br /&gt;
||wird beim Mega8 nicht benutzt&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;center&amp;quot;|1&lt;br /&gt;
|align=&amp;quot;center&amp;quot;|1&lt;br /&gt;
||interne Referenz: 2.56 Volt&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
* Ausrichtung &amp;lt;i&amp;gt;ADLAR&amp;lt;/i&amp;gt;&lt;br /&gt;
&amp;lt;table border=&amp;quot;0&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;th align=&amp;quot;left&amp;quot;&amp;gt;ADLAR&amp;lt;/th&amp;gt;&amp;lt;th align=&amp;quot;left&amp;quot;&amp;gt;&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;0&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Das Ergebnis wird in den Registern ADCH/ADCL rechtsbündig ausgerichtet. Die 8 niederwertigsten Bits des Ergebnisses werden in ADCL abgelegt. Die verbleibenden 2 Bits des Ergebnisses werden im Register ADCH in den Bits 0 und 1 abgelegt.&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;1&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Das Ergebnis wird in den Registern ADCH/ADCL linksbündig ausgerichtet. Die 8 höchstwertigen Bits des Ergebnisses werden in ADCH abgelegt. Die verbleibenden 2 niederwertigen Bits werden im Register ADCL in den Bits 6 und 7 abgelegt.&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Kanalwahl &amp;lt;i&amp;gt;MUX3, MUX2, MUX1, MUX0&amp;lt;/i&amp;gt;&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#ffddcc&amp;quot;&lt;br /&gt;
!MUX3||MUX2||MUX1||MUX0||Kanal&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;center&amp;quot;|0&lt;br /&gt;
|align=&amp;quot;center&amp;quot;|0&lt;br /&gt;
|align=&amp;quot;center&amp;quot;|0&lt;br /&gt;
|align=&amp;quot;center&amp;quot;|0&lt;br /&gt;
||Kanal 0, Pin PC0&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;center&amp;quot;|0&lt;br /&gt;
|align=&amp;quot;center&amp;quot;|0&lt;br /&gt;
|align=&amp;quot;center&amp;quot;|0&lt;br /&gt;
|align=&amp;quot;center&amp;quot;|1&lt;br /&gt;
||Kanal 1, Pin PC1&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;center&amp;quot;|0&lt;br /&gt;
|align=&amp;quot;center&amp;quot;|0&lt;br /&gt;
|align=&amp;quot;center&amp;quot;|1&lt;br /&gt;
|align=&amp;quot;center&amp;quot;|0&lt;br /&gt;
||Kanal 2, Pin PC2&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;center&amp;quot;|0&lt;br /&gt;
|align=&amp;quot;center&amp;quot;|0&lt;br /&gt;
|align=&amp;quot;center&amp;quot;|1&lt;br /&gt;
|align=&amp;quot;center&amp;quot;|1&lt;br /&gt;
||Kanal 3, Pin PC3&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;center&amp;quot;|0&lt;br /&gt;
|align=&amp;quot;center&amp;quot;|1&lt;br /&gt;
|align=&amp;quot;center&amp;quot;|0&lt;br /&gt;
|align=&amp;quot;center&amp;quot;|0&lt;br /&gt;
||Kanal 4, Pin PC4&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;center&amp;quot;|0&lt;br /&gt;
|align=&amp;quot;center&amp;quot;|1&lt;br /&gt;
|align=&amp;quot;center&amp;quot;|0&lt;br /&gt;
|align=&amp;quot;center&amp;quot;|1&lt;br /&gt;
||Kanal 5, Pin PC5&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;center&amp;quot;|0&lt;br /&gt;
|align=&amp;quot;center&amp;quot;|1&lt;br /&gt;
|align=&amp;quot;center&amp;quot;|1&lt;br /&gt;
|align=&amp;quot;center&amp;quot;|0&lt;br /&gt;
||Kanal 6 (*)&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;center&amp;quot;|0&lt;br /&gt;
|align=&amp;quot;center&amp;quot;|1&lt;br /&gt;
|align=&amp;quot;center&amp;quot;|1&lt;br /&gt;
|align=&amp;quot;center&amp;quot;|1&lt;br /&gt;
||Kanal 7 (*)&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;center&amp;quot;|1&lt;br /&gt;
|align=&amp;quot;center&amp;quot;|1&lt;br /&gt;
|align=&amp;quot;center&amp;quot;|1&lt;br /&gt;
|align=&amp;quot;center&amp;quot;|0&lt;br /&gt;
||1.23V, Vbg&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;center&amp;quot;|1&lt;br /&gt;
|align=&amp;quot;center&amp;quot;|1&lt;br /&gt;
|align=&amp;quot;center&amp;quot;|1&lt;br /&gt;
|align=&amp;quot;center&amp;quot;|1&lt;br /&gt;
||0V, GND&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
(*) Bei Atmega8 nur in der Gehäusebauform TQFP und MLF verfügbar, nicht in PDIP&lt;br /&gt;
&lt;br /&gt;
===ADCSRA===&lt;br /&gt;
{{Byte|ADCSRA|  ADEN |  ADSC |  ADFR |  ADIF |  ADIE | ADPS2 | ADPS1 | ADPS0}}&lt;br /&gt;
&lt;br /&gt;
;ADEN: &amp;quot;ADC Enable&amp;quot;: Mittels ADEN wird der ADC ein und ausgeschaltet. Eine 1 an dieser Bitposition schaltet den ADC ein.&lt;br /&gt;
; ADSC: &amp;quot;ADC Start Conversion&amp;quot;: Wird eine 1 an diese Bitposition geschrieben, so beginnt der ADC mit der Wandlung. Das Bit bleibt auf 1, solange die Wandlung im Gange ist. Wenn die Wandlung beendet ist, wird dieses Bit von der ADC Hardware wieder auf 0 gesetzt.&lt;br /&gt;
; ADFR: &amp;quot;ADC Free Running&amp;quot;: Wird eine 1 an ADFR geschrieben, so wird der ADC im Free Running Modus betrieben. Dabei startet der ADC nach dem Abschluss einer Messung automatisch die nächste Messung. Die erste Messung wird ganz normal über das Setzen des ADSC-Bits gestartet.&lt;br /&gt;
; ADIF: &amp;quot;ADC Interrupt Flag&amp;quot;: Wenn eine Messung abgeschlossen ist, wird das ADIF Bit gesetzt. Ist zusätzlich noch das &amp;lt;i&amp;gt;ADIE&amp;lt;/i&amp;gt; Bit gesetzt, so wird ein Interrupt ausgelöst und der entsprechende Interrupt Handler angesprungen.&lt;br /&gt;
; ADIE: &amp;quot;ADC Interrupt Enable&amp;quot;: Wird eine 1 an ADIE geschrieben, so löst der ADC nach Beendigung einer Messung einen Interrupt aus.&lt;br /&gt;
; ADPS2, ADPS1, ADPS0: &amp;quot;ADC Prescaler&amp;quot;: Mit dem Prescaler kann die ADC-Frequenz gewählt werden. Laut Datenblatt sollte diese für die optimale Auflösung zwischen 50kHz und 200kHz liegen. Ist die Wandlerfrequenz langsamer eingestellt, kann es passieren dass die eingebaute Sample &amp;amp; Hold Schaltung die Eingangsspannung nicht lange genug konstant halten kann. Ist die Frequenz aber zu schnell eingestellt, dann kann es passieren dass sich die Sample &amp;amp; Hold Schaltung nicht schnell genug an die Eingangsspannung anpassen kann.&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#ffddcc&amp;quot;&lt;br /&gt;
!ADPS2||ADPS1||ADPS0||Vorteiler&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;center&amp;quot;|0&lt;br /&gt;
|align=&amp;quot;center&amp;quot;|0&lt;br /&gt;
|align=&amp;quot;center&amp;quot;|0&lt;br /&gt;
|align=&amp;quot;center&amp;quot;|2&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;center&amp;quot;|0&lt;br /&gt;
|align=&amp;quot;center&amp;quot;|0&lt;br /&gt;
|align=&amp;quot;center&amp;quot;|1&lt;br /&gt;
|align=&amp;quot;center&amp;quot;|2&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;center&amp;quot;|0&lt;br /&gt;
|align=&amp;quot;center&amp;quot;|1&lt;br /&gt;
|align=&amp;quot;center&amp;quot;|0&lt;br /&gt;
|align=&amp;quot;center&amp;quot;|4&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;center&amp;quot;|0&lt;br /&gt;
|align=&amp;quot;center&amp;quot;|1&lt;br /&gt;
|align=&amp;quot;center&amp;quot;|1&lt;br /&gt;
|align=&amp;quot;center&amp;quot;|8&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;center&amp;quot;|1&lt;br /&gt;
|align=&amp;quot;center&amp;quot;|0&lt;br /&gt;
|align=&amp;quot;center&amp;quot;|0&lt;br /&gt;
|align=&amp;quot;center&amp;quot;|16&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;center&amp;quot;|1&lt;br /&gt;
|align=&amp;quot;center&amp;quot;|0&lt;br /&gt;
|align=&amp;quot;center&amp;quot;|1&lt;br /&gt;
|align=&amp;quot;center&amp;quot;|32&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;center&amp;quot;|1&lt;br /&gt;
|align=&amp;quot;center&amp;quot;|1&lt;br /&gt;
|align=&amp;quot;center&amp;quot;|0&lt;br /&gt;
|align=&amp;quot;center&amp;quot;|64&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;center&amp;quot;|1&lt;br /&gt;
|align=&amp;quot;center&amp;quot;|1&lt;br /&gt;
|align=&amp;quot;center&amp;quot;|1&lt;br /&gt;
|align=&amp;quot;center&amp;quot;|128&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
;Beispiel: 8 MHz Prozessortakt: 8.000.000Hz / 200.000Hz = 40&lt;br /&gt;
Da mit 200kHz gerechnet wurde(Maximale Frequenz), nimmt man den nächst höheren Wert, also 64.&lt;br /&gt;
&lt;br /&gt;
8.000.000 Hz / 64 = 125.000Hz = 125kHz&lt;br /&gt;
So erhält man bei 8 MHz einen Prescaler von 64 und eine Frequenz von 125kHz.&lt;br /&gt;
&lt;br /&gt;
== Die Ergebnisregister ADCL und ADCH ==&lt;br /&gt;
&lt;br /&gt;
Da das Ergebnis des ADC ein 10 Bit Wert ist, passt dieser Wert naturgemäß nicht in ein einzelnes Register, das ja bekanntlich nur 8 Bit breit ist. Daher wird das Ergebnis in 2 Register &#039;&#039;&#039;ADCL&#039;&#039;&#039; und &#039;&#039;&#039;ADCH&#039;&#039;&#039; abgelegt. Standardmäßig (d.h. &#039;&#039;&#039;ADLAR&#039;&#039;&#039; = 0) werden von den 10 Ergebnisbits die niederwertigsten 8 im Register &#039;&#039;&#039;ADCL&#039;&#039;&#039; abgelegt und die noch fehlenden 2 Bits im Register &#039;&#039;&#039;ADCH&#039;&#039;&#039; an den niederwertigsten Bitpositionen gespeichert.&lt;br /&gt;
&lt;br /&gt;
              ADCH                                   ADCL&lt;br /&gt;
   +---+---+---+---+---+---+---+---+   +---+---+---+---+---+---+---+---+&lt;br /&gt;
   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |&lt;br /&gt;
   +---+---+---+---+---+---+---+---+   +---+---+---+---+---+---+---+---+&lt;br /&gt;
                             9   8       7   6   5   4   3   2   1   0&lt;br /&gt;
Ist keine 10-bit Genauigkeit gefragt, kann diese Zuordnung aber auch geändert werden: Durch Setzen des &#039;&#039;&#039;ADLAR&#039;&#039;&#039; Bits im &#039;&#039;&#039;ADMUX&#039;&#039;&#039; Register wird die Ausgabe geändert zu:&lt;br /&gt;
&lt;br /&gt;
              ADCH                                   ADCL&lt;br /&gt;
   +---+---+---+---+---+---+---+---+   +---+---+---+---+---+---+---+---+&lt;br /&gt;
   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |&lt;br /&gt;
   +---+---+---+---+---+---+---+---+   +---+---+---+---+---+---+---+---+&lt;br /&gt;
     9   8   7   6   5   4   3   2       1   0&lt;br /&gt;
&lt;br /&gt;
Auf diese Weise kann das ADC Ergebnis direkt als 8 Bit Zahl weiterverarbeitet werden: Die 8 höchstwertigen Bits stehen bereits verarbeitungsfertig im Register &#039;&#039;&#039;ADCH&#039;&#039;&#039; zur Verfügung.&lt;br /&gt;
&lt;br /&gt;
Beim Auslesen der ADC-Register ist zu beachten:&lt;br /&gt;
Immer zuerst &#039;&#039;&#039;ADCL&#039;&#039;&#039; und erst dann &#039;&#039;&#039;ADCH&#039;&#039;&#039; auslesen. Beim Zugriff auf &#039;&#039;&#039;ADCL&#039;&#039;&#039; wird das &#039;&#039;&#039;ADCH&#039;&#039;&#039; Register gegenüber Veränderungen vom &#039;&#039;&#039;ADC&#039;&#039;&#039; gesperrt. Erst beim nächsten Auslesen des &#039;&#039;&#039;ADCH&#039;&#039;&#039;-Registers wird diese Sperre wieder aufgehoben. Dadurch ist sichergestellt, daß die Inhalte von &#039;&#039;&#039;ADCL&#039;&#039;&#039; und &#039;&#039;&#039;ADCH&#039;&#039;&#039; immer aus demselben Wandlungsergebnis stammen, selbst wenn der &#039;&#039;&#039;ADC&#039;&#039;&#039; im Hintergrund selbsttätig weiterwandelt. Das &#039;&#039;&#039;ADCH&#039;&#039;&#039; Register &#039;&#039;&#039;muss&#039;&#039;&#039; ausgelesen werden!&lt;br /&gt;
&lt;br /&gt;
== Beispiele ==&lt;br /&gt;
&lt;br /&gt;
=== Ausgabe als ADC-Wert ===&lt;br /&gt;
&lt;br /&gt;
Das folgende Programm liest in einer Schleife ständig den ADC aus und verschickt das Ergebnis im Klartext (ASCII) über die [[AVR-Tutorial: UART|UART]]. Zur Verringerung des unvermeidlichen Rauschens werden 256 Messwerte herangezogen und deren Mittelwert als endgültiges Messergebnis gewertet. Dazu werden die einzelnen Messungen in den Registern temp2, temp3, temp4 als 24 Bit Zahl aufaddiert. Die Division durch 256 erfolgt dann ganz einfach dadurch, dass das Register temp2 verworfen wird und die Register temp3 und temp4 als 16 Bit Zahl aufgefasst werden. Eine Besonderheit ist noch, dass je nach dem Wert in temp2 die 16 Bit Zahl in temp3 und temp4 noch aufgerundet wird: Enthält temp2 einen Wert größer als 128, dann wird zur 16 Bit Zahl in temp3/temp4 noch 1 dazu addiert.&lt;br /&gt;
&lt;br /&gt;
In diesem Programm findet man oft die Konstruktion&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;avrasm&amp;quot;&amp;gt; &lt;br /&gt;
    subi    temp3, low(-1)      ; addieren von 1&lt;br /&gt;
    sbci    temp4, high(-1)     ; addieren des Carry&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dabei handelt es sich um einen kleinen Trick. Um eine Konstante zu einem Register direkt addieren zu können bräuchte man einen Befehl ala addi (Add Immediate, Addiere Konstante), den der AVR aber nicht hat. Ebenso gibt es kein adci (Add with carry Immediate, Addiere Konstante mit Carry Flag). Man müsste also erst eine Konstante in ein Register laden und addieren. Das kostet aber Programmspeicher, Rechenzeit und man muss ein Register zusätzlich frei haben.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;avrasm&amp;quot;&amp;gt; &lt;br /&gt;
; 16 Bit Addition mit Konstante, ohne Cleverness&lt;br /&gt;
    ldi     temp5, low(1)&lt;br /&gt;
    add     temp3, temp5        ; addieren von 1&lt;br /&gt;
    ldi     temp5, high(1)&lt;br /&gt;
    adc     temp3, temp5        ; addieren des Carry&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Hier greift man einfach zu dem Trick, dass eine Addition gleich der Subtraktion der negativen Werts ist. Also &amp;quot;addiere +1&amp;quot; ist gleich &amp;quot;subtrahiere -1&amp;quot;. Dafür hat der AVR zwei Befehle, subi (Substract Immediate, Subtrahiere Konstante) und sbci (Substract Immediate with carry, Subtrahiere Konstante mit Carry Flag).&lt;br /&gt;
&lt;br /&gt;
Das folgende Programm ist für den &#039;&#039;&#039;ATmega8&#039;&#039;&#039; geschrieben. Für moderne Nachfolgetypen wie den ATmega88 muss der Code angepasst werden ([http://www.mikrocontroller.net/topic/204069#2011175], [http://www.atmel.com/dyn/resources/prod_documents/doc2553.pdf AVR094: Replacing ATmega8 by ATmega88 (PDF)]).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;avrasm&amp;quot;&amp;gt; &lt;br /&gt;
.include &amp;quot;m8def.inc&amp;quot;&lt;br /&gt;
&lt;br /&gt;
.def temp1     = r16         ; allgemeines temp Register, zur kurzfristigen Verwendung&lt;br /&gt;
.def temp2     = r17         ; Register für 24 Bit Addition, Lowest Byte&lt;br /&gt;
.def temp3     = r18         ; Register für 24 Bit Addition, Middle Byte&lt;br /&gt;
.def temp4     = r19         ; Register für 24 Bit Addition, Highest Byte&lt;br /&gt;
.def adlow     = r20         ; Ergebnis vom ADC / Mittelwert der 256 Messungen&lt;br /&gt;
.def adhigh    = r21         ; Ergebnis vom ADC / Mittelwert der 256 Messungen&lt;br /&gt;
.def messungen = r22         ; Schleifenzähler für die Messungen&lt;br /&gt;
.def ztausend  = r23         ; Zehntausenderstelle des ADC Wertes&lt;br /&gt;
.def tausend   = r24         ; Tausenderstelle des ADC Wertes&lt;br /&gt;
.def hundert   = r25         ; Hunderterstelle des ADC Wertes&lt;br /&gt;
.def zehner    = r26         ; Zehnerstelle des ADC Wertes&lt;br /&gt;
.def zeichen   = r27         ; Zeichen zur Ausgabe auf den UART&lt;br /&gt;
&lt;br /&gt;
.equ F_CPU = 4000000                            ; Systemtakt in Hz&lt;br /&gt;
.equ BAUD  = 9600                               ; Baudrate&lt;br /&gt;
&lt;br /&gt;
; Berechnungen&lt;br /&gt;
.equ UBRR_VAL   = ((F_CPU+BAUD*8)/(BAUD*16)-1)  ; clever runden&lt;br /&gt;
.equ BAUD_REAL  = (F_CPU/(16*(UBRR_VAL+1)))     ; Reale Baudrate&lt;br /&gt;
.equ BAUD_ERROR = ((BAUD_REAL*1000)/BAUD-1000)  ; Fehler in Promille&lt;br /&gt;
&lt;br /&gt;
.if ((BAUD_ERROR&amp;gt;10) || (BAUD_ERROR&amp;lt;-10))       ; max. +/-10 Promille Fehler&lt;br /&gt;
  .error &amp;quot;Systematischer Fehler der Baudrate grösser 1 Prozent und damit zu hoch!&amp;quot;&lt;br /&gt;
.endif&lt;br /&gt;
 &lt;br /&gt;
; hier geht das Programm los&lt;br /&gt;
 &lt;br /&gt;
    ldi     temp1, LOW(RAMEND)                  ; Stackpointer initialisieren&lt;br /&gt;
    out     SPL, temp1&lt;br /&gt;
    ldi     temp1, HIGH(RAMEND)&lt;br /&gt;
    out     SPH, temp1&lt;br /&gt;
 &lt;br /&gt;
;UART Initalisierung&lt;br /&gt;
 &lt;br /&gt;
    ldi     temp1, LOW(UBRR_VAL)                    ; Baudrate einstellen&lt;br /&gt;
    out     UBRRL, temp1&lt;br /&gt;
    ldi     temp1, HIGH(UBRR_VAL)&lt;br /&gt;
    out     UBRRH, temp1&lt;br /&gt;
&lt;br /&gt;
    sbi     UCSRB, TXEN                         ; TX einschalten&lt;br /&gt;
 &lt;br /&gt;
; ADC initialisieren: ADC0, Vcc als Referenz, Single Conversion, Vorteiler 128&lt;br /&gt;
&lt;br /&gt;
    ldi     temp1, (1&amp;lt;&amp;lt;REFS0)                   ; Kanal 0, interne Referenzspannung 5V&lt;br /&gt;
    out     ADMUX, temp1&lt;br /&gt;
    ldi     temp1, (1&amp;lt;&amp;lt;ADEN) | (1&amp;lt;&amp;lt;ADPS2) | (1&amp;lt;&amp;lt;ADPS1) | (1&amp;lt;&amp;lt;ADPS0)&lt;br /&gt;
    out     ADCSRA, temp1&lt;br /&gt;
 &lt;br /&gt;
Main:&lt;br /&gt;
    clr     temp1&lt;br /&gt;
    clr     temp2&lt;br /&gt;
    clr     temp3&lt;br /&gt;
    clr     temp4&lt;br /&gt;
&lt;br /&gt;
    ldi     messungen, 0        ; 256 Schleifendurchläufe&lt;br /&gt;
 &lt;br /&gt;
; neuen ADC-Wert lesen  (Schleife - 256 mal)&lt;br /&gt;
&lt;br /&gt;
sample_adc:&lt;br /&gt;
    sbi     ADCSRA, ADSC        ; den ADC starten&lt;br /&gt;
 &lt;br /&gt;
wait_adc:&lt;br /&gt;
    sbic    ADCSRA, ADSC        ; wenn der ADC fertig ist, wird dieses Bit gelöscht&lt;br /&gt;
    rjmp    wait_adc&lt;br /&gt;
 &lt;br /&gt;
; ADC einlesen:&lt;br /&gt;
&lt;br /&gt;
    in      adlow, ADCL         ; immer zuerst LOW Byte lesen&lt;br /&gt;
    in      adhigh, ADCH        ; danach das mittlerweile gesperrte High Byte&lt;br /&gt;
 &lt;br /&gt;
; alle 256 ADC-Werte addieren&lt;br /&gt;
; dazu wird mit den Registern temp4, temp3 und temp2 ein&lt;br /&gt;
; 24-Bit breites Akkumulationsregister gebildet, in dem&lt;br /&gt;
; die 10 Bit Werte aus adhigh, adlow aufsummiert werden&lt;br /&gt;
&lt;br /&gt;
    add     temp2, adlow        ; addieren&lt;br /&gt;
    adc     temp3, adhigh       ; addieren über Carry&lt;br /&gt;
    adc     temp4, temp1        ; addieren über Carry, temp1 enthält 0&lt;br /&gt;
    dec     messungen           ; Schleifenzähler MINUS 1&lt;br /&gt;
    brne    sample_adc          ; wenn noch keine 256 ADC Werte -&amp;gt; nächsten Wert einlesen&lt;br /&gt;
 &lt;br /&gt;
; Aus den 256 Werten den Mittelwert berechnen&lt;br /&gt;
; Mathematisch eine Division durch 256&lt;br /&gt;
; Da aber 2^8 = 256 ist ist da einfach durch das weglassen des niederwertigsten Bytes&lt;br /&gt;
; erreicht werden&lt;br /&gt;
;&lt;br /&gt;
; allerdings wird der Wert noch gerundet&lt;br /&gt;
&lt;br /&gt;
    cpi     temp2,128           ; &amp;quot;Kommastelle&amp;quot; kleiner als 128 ?&lt;br /&gt;
    brlo    no_round            ; ist kleiner ==&amp;gt; Sprung&lt;br /&gt;
 &lt;br /&gt;
; Aufrunden&lt;br /&gt;
    subi    temp3, low(-1)      ; addieren von 1&lt;br /&gt;
    sbci    temp4, high(-1)     ; addieren des Carry&lt;br /&gt;
 &lt;br /&gt;
no_round:&lt;br /&gt;
&lt;br /&gt;
;   Ergebnis nach adlow und adhigh kopieren&lt;br /&gt;
;   damit die temp Register frei werden&lt;br /&gt;
&lt;br /&gt;
    mov     adlow, temp3&lt;br /&gt;
    mov     adhigh, temp4&lt;br /&gt;
 &lt;br /&gt;
;in ASCII umwandeln&lt;br /&gt;
; Division durch mehrfache Subtraktion&lt;br /&gt;
&lt;br /&gt;
    ldi     ztausend, &#039;0&#039;-1     ; Ziffernzähler direkt als ASCII Code&lt;br /&gt;
    ; bzgl. &#039;0&#039;-1 siehe http://www.mikrocontroller.net/topic/198681&lt;br /&gt;
Z_ztausend:&lt;br /&gt;
    inc     ztausend&lt;br /&gt;
    subi    adlow, low(10000)   ; -10,000&lt;br /&gt;
    sbci    adhigh, high(10000) ; 16 Bit&lt;br /&gt;
    brcc    Z_ztausend&lt;br /&gt;
                                    &lt;br /&gt;
    subi    adlow, low(-10000)  ; nach Unterlauf wieder einmal addieren&lt;br /&gt;
    sbci    adhigh, high(-10000); +10,000&lt;br /&gt;
 &lt;br /&gt;
    ldi     tausend, &#039;0&#039;-1      ; Ziffernzähler direkt als ASCII Code&lt;br /&gt;
Z_tausend:&lt;br /&gt;
    inc     tausend&lt;br /&gt;
    subi    adlow, low(1000)    ; -1,000&lt;br /&gt;
    sbci    adhigh, high(1000)  ; 16 Bit&lt;br /&gt;
    brcc    Z_tausend&lt;br /&gt;
                                    &lt;br /&gt;
    subi    adlow, low(-1000)   ; nach Unterlauf wieder einmal addieren&lt;br /&gt;
    sbci    adhigh, high(-1000) ; +1,000&lt;br /&gt;
 &lt;br /&gt;
    ldi     hundert, &#039;0&#039;-1      ; Ziffernzähler direkt als ASCII Code&lt;br /&gt;
Z_hundert:&lt;br /&gt;
    inc     hundert&lt;br /&gt;
    subi    adlow, low(100)     ; -100&lt;br /&gt;
    sbci    adhigh, high(100)   ; 16 Bit&lt;br /&gt;
    brcc    Z_hundert&lt;br /&gt;
                                    &lt;br /&gt;
    subi    adlow, low(-100)    ; nach Unterlauf wieder einmal addieren&lt;br /&gt;
    sbci    adhigh, high(-100)  ; +100&lt;br /&gt;
 &lt;br /&gt;
    ldi     zehner, &#039;0&#039;-1       ; Ziffernzähler direkt als ASCII Code&lt;br /&gt;
Z_zehner:&lt;br /&gt;
    inc     zehner&lt;br /&gt;
    subi    adlow, low(10)      ; -10&lt;br /&gt;
    sbci    adhigh, high(10)    ; 16 Bit&lt;br /&gt;
    brcc    Z_zehner&lt;br /&gt;
                                    &lt;br /&gt;
    subi    adlow, low(-10)     ; nach Unterlauf wieder einmal addieren&lt;br /&gt;
    sbci    adhigh, high(-10)   ; +10&lt;br /&gt;
&lt;br /&gt;
    subi    adlow, -&#039;0&#039;         ; adlow enthält die Einer, Umwandlung in ASCII&lt;br /&gt;
 &lt;br /&gt;
;an UART Senden&lt;br /&gt;
&lt;br /&gt;
    mov     zeichen, ztausend   ; Zehntausender Stelle&lt;br /&gt;
    rcall   transmit&lt;br /&gt;
    mov     zeichen, tausend    ; Tausender Stelle ausgeben&lt;br /&gt;
    rcall   transmit    &lt;br /&gt;
    mov     zeichen, hundert    ; Hunderter Stelle ausgeben&lt;br /&gt;
    rcall   transmit&lt;br /&gt;
    mov     zeichen, zehner     ; Zehner Stelle ausgeben&lt;br /&gt;
    rcall   transmit&lt;br /&gt;
    mov     zeichen, adlow      ; Einer Stelle ausgeben&lt;br /&gt;
    rcall   transmit&lt;br /&gt;
    ldi     zeichen, 13         ; CR, Carrige Return (Wagenrücklauf)&lt;br /&gt;
    rcall   transmit&lt;br /&gt;
    ldi     zeichen, 10         ; LF, Line Feed (Neue Zeile)&lt;br /&gt;
    rcall   transmit&lt;br /&gt;
 &lt;br /&gt;
    rjmp    Main&lt;br /&gt;
 &lt;br /&gt;
transmit:&lt;br /&gt;
    sbis    UCSRA,UDRE          ; Warten, bis UDR bereit ist ...&lt;br /&gt;
    rjmp    transmit&lt;br /&gt;
    out     UDR, zeichen        ; und Zeichen ausgeben&lt;br /&gt;
    ret&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Ausgabe als Spannungswert ===&lt;br /&gt;
&lt;br /&gt;
Das zweite Beispiel ist schon um einiges größer. Hier wird der gemittelte ADC-Wert in eine Spannung umgerechnet. Dazu wird [[Festkommaarithmetik]] verwendet. Die Daten sind in diesem Fall&lt;br /&gt;
&lt;br /&gt;
* Referenzspannung : 5V&lt;br /&gt;
* alte Auflösung   : 5V / 1024 = 4,8828125mV&lt;br /&gt;
* neue Auflösung   : 1mV&lt;br /&gt;
&lt;br /&gt;
-&amp;gt; Faktor = 4,8828125mV / 1mV = 4,8828125&lt;br /&gt;
&lt;br /&gt;
Der Faktor wird dreimal mit 10 multipliziert und das Ergebnis auf 4883 gerundet. Die neue Auflösung wird dreimal durch 10 dividiert und beträgt 1&amp;amp;mu;V. Der relative Fehler beträgt&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt; F_r = \frac {4883}{4882,8125}-1 = 0,00384% = \frac {1}{26042}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dieser Fehler ist absolut vernachlässigbar. Nach der Multiplikation des ADC-Wertes mit 4883 liegt die gemessene Spannung in der Einheit &amp;amp;mu;V vor. Vorsicht! Das ist &#039;&#039;&#039;nicht&#039;&#039;&#039; die reale [[Auflösung und Genauigkeit]], nur rein mathematisch bedingt. Für maximale Genauigkeit sollte man die Versorgungsspannung AVCC, welche hier gleichzeitig als Referenzspannung dient, exakt messen, die Rechnung nachvollziehen und den Wert im Quelltext eintragen. Damit führt man eine einfach Einpunktkalibrierung durch.&lt;br /&gt;
&lt;br /&gt;
Da das Programm schon um einiges größer und komplexer ist, wurde es im Vergleich zur Vorgängerversion geändert. Die Multiplikation sowie die Umwandung der Zahl in einen ASCII-String sind als Unterprogramme geschrieben, dadurch erhält man wesentlich mehr Überblick im Hauptprogramm und die Wiederverwendung in anderen Programmen vereinfacht sich. Ausserdem wird der String im RAM gespeichert und nicht mehr in CPU-Registern. Die Berechung der einzelnen Ziffern erfolgt über ein Schleife, das ist kompakter und übersichtlicher.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;avrasm&amp;quot;&amp;gt; &lt;br /&gt;
.include &amp;quot;m8def.inc&amp;quot;&lt;br /&gt;
&lt;br /&gt;
.def z0        = r1          ; Zahl für Integer -&amp;gt; ASCII Umwandlung&lt;br /&gt;
.def z1        = r2&lt;br /&gt;
.def z2        = r3&lt;br /&gt;
.def z3        = r4&lt;br /&gt;
.def temp1     = r16         ; allgemeines Register, zur kurzfristigen Verwendung&lt;br /&gt;
.def temp2     = r17         ; Register für 24 Bit Addition, niederwertigstes Byte (LSB)&lt;br /&gt;
.def temp3     = r18         ; Register für 24 Bit Addition, mittlerers Byte&lt;br /&gt;
.def temp4     = r19         ; Register für 24 Bit Addition, höchstwertigstes Byte (MSB)&lt;br /&gt;
.def adlow     = r20         ; Ergebnis vom ADC-Mittelwert der 256 Messungen&lt;br /&gt;
.def adhigh    = r21         ; Ergebnis vom ADC-Mittelwert der 256 Messungen&lt;br /&gt;
.def messungen = r22         ; Schleifenzähler für die Messungen&lt;br /&gt;
.def zeichen   = r23         ; Zeichen zur Ausgabe auf den UART&lt;br /&gt;
.def temp5     = r24&lt;br /&gt;
.def temp6     = r25&lt;br /&gt;
&lt;br /&gt;
; Faktor für Umrechung des ADC-Wertes in Spannung&lt;br /&gt;
; = (Referenzspannung / 1024 ) * 100000&lt;br /&gt;
; = 5V / 1024 * 1.000.000&lt;br /&gt;
.equ Faktor = 4883&lt;br /&gt;
&lt;br /&gt;
.equ F_CPU = 4000000                            ; Systemtakt in Hz&lt;br /&gt;
.equ BAUD  = 9600                               ; Baudrate&lt;br /&gt;
&lt;br /&gt;
; Berechnungen&lt;br /&gt;
.equ UBRR_VAL   = ((F_CPU+BAUD*8)/(BAUD*16)-1)  ; clever runden&lt;br /&gt;
.equ BAUD_REAL  = (F_CPU/(16*(UBRR_VAL+1)))     ; Reale Baudrate&lt;br /&gt;
.equ BAUD_ERROR = ((BAUD_REAL*1000)/BAUD-1000)  ; Fehler in Promille&lt;br /&gt;
&lt;br /&gt;
.if ((BAUD_ERROR&amp;gt;10) || (BAUD_ERROR&amp;lt;-10))       ; max. +/-10 Promille Fehler&lt;br /&gt;
  .error &amp;quot;Systematischer Fehler der Baudrate grösser 1 Prozent und damit zu hoch!&amp;quot;&lt;br /&gt;
.endif&lt;br /&gt;
&lt;br /&gt;
; RAM&lt;br /&gt;
.dseg&lt;br /&gt;
.org 0x60&lt;br /&gt;
Puffer: .byte 10&lt;br /&gt;
&lt;br /&gt;
; hier geht das Programm los&lt;br /&gt;
.cseg&lt;br /&gt;
.org 0&lt;br /&gt;
 &lt;br /&gt;
    ldi     temp1, LOW(RAMEND)                  ; Stackpointer initialisieren&lt;br /&gt;
    out     SPL, temp1&lt;br /&gt;
    ldi     temp1, HIGH(RAMEND)&lt;br /&gt;
    out     SPH, temp1&lt;br /&gt;
 &lt;br /&gt;
;UART Initalisierung&lt;br /&gt;
 &lt;br /&gt;
    ldi     temp1, LOW(UBRR_VAL)                ; Baudrate einstellen&lt;br /&gt;
    out     UBRRL, temp1&lt;br /&gt;
    ldi     temp1, HIGH(UBRR_VAL)&lt;br /&gt;
    out     UBRRH, temp1&lt;br /&gt;
&lt;br /&gt;
    sbi     UCSRB, TXEN                         ; TX einschalten&lt;br /&gt;
 &lt;br /&gt;
; ADC initialisieren: Single Conversion, Vorteiler 128&lt;br /&gt;
; Kanal 0, interne Referenzspannung AVCC&lt;br /&gt;
&lt;br /&gt;
    ldi     temp1, (1&amp;lt;&amp;lt;REFS0)                   &lt;br /&gt;
    out     ADMUX, temp1&lt;br /&gt;
    ldi     temp1, (1&amp;lt;&amp;lt;ADEN) | (1&amp;lt;&amp;lt;ADPS2) | (1&amp;lt;&amp;lt;ADPS1) | (1&amp;lt;&amp;lt;ADPS0)&lt;br /&gt;
    out     ADCSRA, temp1&lt;br /&gt;
 &lt;br /&gt;
Hauptschleife:&lt;br /&gt;
    clr     temp1&lt;br /&gt;
    clr     temp2&lt;br /&gt;
    clr     temp3&lt;br /&gt;
    clr     temp4&lt;br /&gt;
&lt;br /&gt;
    ldi     messungen, 0        ; 256 Schleifendurchläufe&lt;br /&gt;
 &lt;br /&gt;
; neuen ADC-Wert lesen  (Schleife - 256 mal)&lt;br /&gt;
&lt;br /&gt;
adc_messung:&lt;br /&gt;
    sbi     ADCSRA, ADSC        ; den ADC starten&lt;br /&gt;
 &lt;br /&gt;
adc_warten:&lt;br /&gt;
    sbic    ADCSRA, ADSC        ; wenn der ADC fertig ist, wird dieses Bit gelöscht&lt;br /&gt;
    rjmp    adc_warten&lt;br /&gt;
 &lt;br /&gt;
; ADC einlesen:&lt;br /&gt;
&lt;br /&gt;
    in      adlow, ADCL         ; immer zuerst LOW Byte lesen&lt;br /&gt;
    in      adhigh, ADCH        ; danach das mittlerweile gesperrte High Byte&lt;br /&gt;
 &lt;br /&gt;
; alle 256 ADC-Werte addieren&lt;br /&gt;
; dazu wird mit den Registern temp4, temp3 und temp2 ein&lt;br /&gt;
; 24-Bit breites Akkumulationsregister gebildet, in dem&lt;br /&gt;
; die 10 Bit Werte aus adhigh, adlow aufsummiert werden&lt;br /&gt;
&lt;br /&gt;
    add     temp2, adlow        ; addieren&lt;br /&gt;
    adc     temp3, adhigh       ; addieren über Carry&lt;br /&gt;
    adc     temp4, temp1        ; addieren über Carry, temp1 enthält 0&lt;br /&gt;
    dec     messungen           ; Schleifenzähler MINUS 1&lt;br /&gt;
    brne    adc_messung         ; wenn noch keine 256 ADC Werte -&amp;gt; nächsten Wert einlesen&lt;br /&gt;
 &lt;br /&gt;
; Aus den 256 Werten den Mittelwert berechnen&lt;br /&gt;
; Bei 256 Werten ist das ganz einfach: Das niederwertigste Byte&lt;br /&gt;
; (im Register temp2) fällt einfach weg&lt;br /&gt;
;&lt;br /&gt;
; allerdings wird der Wert noch gerundet&lt;br /&gt;
&lt;br /&gt;
    cpi     temp2,128           ; &amp;quot;Kommastelle&amp;quot; kleiner als 128 ?&lt;br /&gt;
    brlo    nicht_runden        ; ist kleiner ==&amp;gt; Sprung&lt;br /&gt;
 &lt;br /&gt;
; Aufrunden&lt;br /&gt;
    subi    temp3, low(-1)      ; addieren von 1&lt;br /&gt;
    sbci    temp4, high(-1)     ; addieren des Carry&lt;br /&gt;
 &lt;br /&gt;
nicht_runden:&lt;br /&gt;
&lt;br /&gt;
;   Ergebnis nach adlow und adhigh kopieren&lt;br /&gt;
;   damit die temp Register frei werden&lt;br /&gt;
&lt;br /&gt;
    mov     adlow, temp3&lt;br /&gt;
    mov     adhigh, temp4&lt;br /&gt;
&lt;br /&gt;
; in Spannung umrechnen&lt;br /&gt;
&lt;br /&gt;
    ldi     temp5,low(Faktor)&lt;br /&gt;
    ldi     temp6,high(Faktor)&lt;br /&gt;
    rcall   mul_16x16&lt;br /&gt;
&lt;br /&gt;
; in ASCII umwandeln&lt;br /&gt;
&lt;br /&gt;
    ldi     XL, low(Puffer)&lt;br /&gt;
    ldi     XH, high(Puffer)&lt;br /&gt;
    rcall   Int_to_ASCII&lt;br /&gt;
 &lt;br /&gt;
;an UART Senden&lt;br /&gt;
&lt;br /&gt;
    ldi     ZL, low(Puffer+3)&lt;br /&gt;
    ldi     ZH, high(Puffer+3)&lt;br /&gt;
    ldi     temp1, 1&lt;br /&gt;
    rcall   sende_zeichen       ; eine Vorkommastelle ausgeben&lt;br /&gt;
&lt;br /&gt;
    ldi     zeichen, &#039;,&#039;        ; Komma ausgeben&lt;br /&gt;
    rcall   sende_einzelzeichen&lt;br /&gt;
&lt;br /&gt;
    ldi     temp1, 3            ; Drei Nachkommastellen ausgeben&lt;br /&gt;
    rcall   sende_zeichen&lt;br /&gt;
&lt;br /&gt;
    ldi     zeichen, &#039;V&#039;        ; Volt Zeichen ausgeben&lt;br /&gt;
    rcall   sende_einzelzeichen&lt;br /&gt;
&lt;br /&gt;
    ldi     zeichen, 10         ; New Line Steuerzeichen&lt;br /&gt;
    rcall   sende_einzelzeichen&lt;br /&gt;
&lt;br /&gt;
    ldi     zeichen, 13         ; Carrige Return Steuerzeichen&lt;br /&gt;
    rcall   sende_einzelzeichen&lt;br /&gt;
&lt;br /&gt;
    rjmp    Hauptschleife&lt;br /&gt;
&lt;br /&gt;
; Ende des Hauptprogramms&lt;br /&gt;
&lt;br /&gt;
; Unterprogramme&lt;br /&gt;
 &lt;br /&gt;
 ; ein Zeichen per UART senden&lt;br /&gt;
&lt;br /&gt;
sende_einzelzeichen:&lt;br /&gt;
    sbis    UCSRA,UDRE          ; Warten, bis UDR bereit ist ...&lt;br /&gt;
    rjmp    sende_einzelzeichen&lt;br /&gt;
    out     UDR, zeichen        ; und Zeichen ausgeben&lt;br /&gt;
    ret&lt;br /&gt;
&lt;br /&gt;
; mehrere Zeichen ausgeben, welche durch Z adressiert werden&lt;br /&gt;
; Anzahl in temp1&lt;br /&gt;
&lt;br /&gt;
sende_zeichen:&lt;br /&gt;
    sbis    UCSRA,UDRE          ; Warten, bis UDR bereit ist ...&lt;br /&gt;
    rjmp    sende_zeichen&lt;br /&gt;
    ld      zeichen, Z+         ; Zeichen laden&lt;br /&gt;
    out     UDR, zeichen        ; und Zeichen ausgeben&lt;br /&gt;
    dec     temp1&lt;br /&gt;
    brne    sende_zeichen&lt;br /&gt;
    ret&lt;br /&gt;
&lt;br /&gt;
; 32 Bit Zahl in ASCII umwandeln&lt;br /&gt;
; Zahl liegt in temp1..4&lt;br /&gt;
; Ergebnis ist ein 10stelliger ASCII String, welcher im SRAM abgelegt wird&lt;br /&gt;
; Adressierung über X Pointer&lt;br /&gt;
; mehrfache Subtraktion wird als Ersatz für eine Division durchgeführt.&lt;br /&gt;
&lt;br /&gt;
Int_to_ASCII:&lt;br /&gt;
    &lt;br /&gt;
    push    ZL                      ; Register sichern&lt;br /&gt;
    push    ZH&lt;br /&gt;
    push    temp5&lt;br /&gt;
    push    temp6&lt;br /&gt;
&lt;br /&gt;
    ldi     ZL,low(Tabelle*2)       ; Zeiger auf Tabelle&lt;br /&gt;
    ldi     ZH,high(Tabelle*2)&lt;br /&gt;
    ldi     temp5, 10               ; Schleifenzähler&lt;br /&gt;
&lt;br /&gt;
Int_to_ASCII_schleife:&lt;br /&gt;
    ldi     temp6, -1+&#039;0&#039;           ; Ziffernzähler zählt direkt im ASCII Code &lt;br /&gt;
    lpm     z0,Z+                   ; Nächste Zahl laden&lt;br /&gt;
    lpm     z1,Z+&lt;br /&gt;
    lpm     z2,Z+&lt;br /&gt;
    lpm     z3,Z+&lt;br /&gt;
&lt;br /&gt;
Int_to_ASCII_ziffer:&lt;br /&gt;
    inc     temp6                   ; Ziffer erhöhen&lt;br /&gt;
    sub     temp1, z0               ; Zahl subrahieren&lt;br /&gt;
    sbc     temp2, z1               ; 32 Bit&lt;br /&gt;
    sbc     temp3, z2&lt;br /&gt;
    sbc     temp4, z3&lt;br /&gt;
    brge    Int_to_ASCII_ziffer     ; noch kein Unterlauf, nochmal&lt;br /&gt;
&lt;br /&gt;
    add     temp1, z0               ; Unterlauf, eimal wieder addieren&lt;br /&gt;
    adc     temp2, z1               ; 32 Bit&lt;br /&gt;
    adc     temp3, z2&lt;br /&gt;
    adc     temp4, z3                                            &lt;br /&gt;
    st      X+,temp6                ; Ziffer speichern&lt;br /&gt;
    dec     temp5&lt;br /&gt;
    brne    Int_to_ASCII_schleife   ; noch eine Ziffer?&lt;br /&gt;
&lt;br /&gt;
    pop     temp6&lt;br /&gt;
    pop     temp5&lt;br /&gt;
    pop     ZH&lt;br /&gt;
    pop     ZL                      ; Register wieder herstellen&lt;br /&gt;
    ret&lt;br /&gt;
&lt;br /&gt;
; Tabelle mit Zahlen für die Berechung der Ziffern&lt;br /&gt;
; 1 Milliarde bis 1&lt;br /&gt;
Tabelle:&lt;br /&gt;
.dd 1000000000, 100000000, 10000000, 1000000, 100000, 10000, 1000, 100, 10, 1&lt;br /&gt;
&lt;br /&gt;
; 16 Bit Wert in Spannung umrechnen&lt;br /&gt;
;&lt;br /&gt;
; = 16Bitx16Bit=32 Bit Multiplikation&lt;br /&gt;
; = vier 8x8 Bit Multiplikationen&lt;br /&gt;
;&lt;br /&gt;
; adlow/adhigh * temp5/temp6&lt;br /&gt;
&lt;br /&gt;
mul_16x16:&lt;br /&gt;
    push    zeichen&lt;br /&gt;
    clr     temp1                   ; 32 Bit Akku löschen&lt;br /&gt;
    clr     temp2&lt;br /&gt;
    clr     temp3&lt;br /&gt;
    clr     temp4&lt;br /&gt;
    clr     zeichen                 ; Null, für Carry-Addition&lt;br /&gt;
&lt;br /&gt;
    mul     adlow, temp5            ; erste Multiplikation&lt;br /&gt;
    add     temp1, r0               ; und akkumulieren&lt;br /&gt;
    adc     temp2, r1&lt;br /&gt;
&lt;br /&gt;
    mul     adhigh, temp5           ; zweite Multiplikation&lt;br /&gt;
    add     temp2, r0               ; und gewichtet akkumlieren&lt;br /&gt;
    adc     temp3, r1&lt;br /&gt;
&lt;br /&gt;
    mul     adlow, temp6            ; dritte Multiplikation&lt;br /&gt;
    add     temp2, r0               ; und gewichtet akkumlieren&lt;br /&gt;
    adc     temp3, r1&lt;br /&gt;
    adc     temp4, zeichen          ; carry addieren&lt;br /&gt;
&lt;br /&gt;
    mul     adhigh, temp6           ; vierte Multiplikation&lt;br /&gt;
    add     temp3, r0               ; und gewichtet akkumlieren&lt;br /&gt;
    adc     temp4, r1&lt;br /&gt;
&lt;br /&gt;
    pop     zeichen&lt;br /&gt;
    ret&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Für alle, die es besonders eilig haben gibt es hier eine geschwindigkeitsoptimierte Version der Integer in ASCII Umwandlung. Zunächst wird keine Schleife verwendet sondern alle Stufen der Schleife direkt hingeschrieben. Das braucht zwar mehr Programmspeicher, ist aber schneller. Ausserdem wird abwechselnd subtrahiert und addiert, dadurch entfällt das immer wieder notwendige addieren nach dem Unterlauf. Zu guter Letzt werden die Berechnungen nur mit der minimal notwenigen Wortbreite durchgeführt. Am Anfang mit 32 Bit, dann nur noch mit 16 bzw. 8 Bit.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;avrasm&amp;quot;&amp;gt; &lt;br /&gt;
; 32 Bit Zahl in ASCII umwandeln&lt;br /&gt;
; geschwindigkeitsoptimierte Version&lt;br /&gt;
; Zahl liegt in temp1..4&lt;br /&gt;
; Ergebnis ist ein 10stelliger ASCII String, welcher im SRAM abgelegt wird&lt;br /&gt;
; Adressierung über X Pointer&lt;br /&gt;
&lt;br /&gt;
Int_to_ASCII:&lt;br /&gt;
    ldi     temp5, -1 + &#039;0&#039;&lt;br /&gt;
_a1ser:&lt;br /&gt;
    inc     temp5&lt;br /&gt;
    subi    temp1,BYTE1(1000000000) ; - 1.000.000.000&lt;br /&gt;
    sbci    temp2,BYTE2(1000000000)&lt;br /&gt;
    sbci    temp3,BYTE3(1000000000)&lt;br /&gt;
    sbci    temp4,BYTE4(1000000000)&lt;br /&gt;
    brcc    _a1ser&lt;br /&gt;
&lt;br /&gt;
    st      X+,temp5                ; im Puffer speichern&lt;br /&gt;
    ldi     temp5, 10 + &#039;0&#039;&lt;br /&gt;
_a2ser:&lt;br /&gt;
    dec     temp5&lt;br /&gt;
    subi    temp1,BYTE1(-100000000) ; + 100.000.000&lt;br /&gt;
    sbci    temp2,BYTE2(-100000000)&lt;br /&gt;
    sbci    temp3,BYTE3(-100000000)&lt;br /&gt;
    sbci    temp4,BYTE4(-100000000)&lt;br /&gt;
    brcs    _a2ser&lt;br /&gt;
&lt;br /&gt;
    st      X+,temp5                ; im Puffer speichern&lt;br /&gt;
    ldi     temp5, -1 + &#039;0&#039;&lt;br /&gt;
_a3ser:&lt;br /&gt;
    inc     temp5&lt;br /&gt;
    subi    temp1,low(10000000)     ; - 10.000.000&lt;br /&gt;
    sbci    temp2,high(10000000)&lt;br /&gt;
    sbci    temp3,BYTE3(10000000)&lt;br /&gt;
    sbci    temp4,BYTE4(10000000)&lt;br /&gt;
    brcc    _a3ser&lt;br /&gt;
&lt;br /&gt;
    st      X+,temp5                ; im Puffer speichern&lt;br /&gt;
    ldi     temp5, 10 + &#039;0&#039;&lt;br /&gt;
_a4ser:&lt;br /&gt;
    dec     temp5&lt;br /&gt;
    subi    temp1,low(-1000000)     ; + 1.000.000&lt;br /&gt;
    sbci    temp2,high(-1000000)&lt;br /&gt;
    sbci    temp3,BYTE3(-1000000)&lt;br /&gt;
    sbci    temp4,BYTE4(-1000000)&lt;br /&gt;
    brcs    _a4ser&lt;br /&gt;
&lt;br /&gt;
    st      X+,temp5                ; im Puffer speichern&lt;br /&gt;
    ldi     temp5, -1 + &#039;0&#039;&lt;br /&gt;
_a5ser:&lt;br /&gt;
    inc     temp5&lt;br /&gt;
    subi    temp1,low(100000)       ; -100.000&lt;br /&gt;
    sbci    temp2,high(100000)&lt;br /&gt;
    sbci    temp3,BYTE3(100000)&lt;br /&gt;
    brcc    _a5ser&lt;br /&gt;
&lt;br /&gt;
    st      X+,temp5                ; im Puffer speichern&lt;br /&gt;
    ldi     temp5, 10 + &#039;0&#039;&lt;br /&gt;
_a6ser:&lt;br /&gt;
    dec     temp5&lt;br /&gt;
    subi    temp1,low(-10000)       ; +10,000&lt;br /&gt;
    sbci    temp2,high(-10000)&lt;br /&gt;
    sbci    temp3,BYTE3(-10000)&lt;br /&gt;
    brcs    _a6ser&lt;br /&gt;
&lt;br /&gt;
    st      X+,temp5                ; im Puffer speichern &lt;br /&gt;
    ldi     temp5, -1 + &#039;0&#039;&lt;br /&gt;
_a7ser:&lt;br /&gt;
    inc     temp5&lt;br /&gt;
    subi    temp1,low(1000)         ; -1000&lt;br /&gt;
    sbci    temp2,high(1000)&lt;br /&gt;
    brcc    _a7ser&lt;br /&gt;
 &lt;br /&gt;
    st      X+,temp5                ; im Puffer speichern&lt;br /&gt;
    ldi     temp5, 10 + &#039;0&#039;&lt;br /&gt;
_a8ser:&lt;br /&gt;
    dec     temp5&lt;br /&gt;
    subi    temp1,low(-100)         ; +100&lt;br /&gt;
    sbci    temp2,high(-100)&lt;br /&gt;
    brcs    _a8ser&lt;br /&gt;
 &lt;br /&gt;
    st      X+,temp5                ; im Puffer speichern&lt;br /&gt;
    ldi     temp5, -1 + &#039;0&#039;&lt;br /&gt;
_a9ser:&lt;br /&gt;
    inc     temp5&lt;br /&gt;
    subi    temp1, 10               ; -10&lt;br /&gt;
    brcc    _a9ser&lt;br /&gt;
    &lt;br /&gt;
    st      X+,temp5                ; im Puffer speichern&lt;br /&gt;
    ldi     temp5, 10 + &#039;0&#039;&lt;br /&gt;
_a10ser:&lt;br /&gt;
    dec     temp5&lt;br /&gt;
    subi    temp1, -1               ; +1&lt;br /&gt;
    brcs    _a10ser&lt;br /&gt;
&lt;br /&gt;
    st      X+,temp5                ; im Puffer speichern&lt;br /&gt;
    ret&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
{{Navigation_zurückhochvor|&lt;br /&gt;
zurücktext=Uhr|&lt;br /&gt;
zurücklink=AVR-Tutorial: Uhr|&lt;br /&gt;
hochtext=Inhaltsverzeichnis|&lt;br /&gt;
hochlink=AVR-Tutorial|&lt;br /&gt;
vortext=Tasten|&lt;br /&gt;
vorlink=AVR-Tutorial: Tasten}}&lt;br /&gt;
&lt;br /&gt;
[[Category:AVR-Tutorial|ADC]]&lt;/div&gt;</summary>
		<author><name>Promeus</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=AVR-GCC-Tutorial&amp;diff=91963</id>
		<title>AVR-GCC-Tutorial</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=AVR-GCC-Tutorial&amp;diff=91963"/>
		<updated>2016-02-19T16:39:09Z</updated>

		<summary type="html">&lt;p&gt;Promeus: /* Jenseits von __flash */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Dieses Tutorial soll den Einstieg in die Programmierung von Atmel [[AVR]]-Mikrocontrollern in der Programmiersprache [[C]] mit dem freien C-Compiler [[avr-gcc]] aus der [http://gcc.gnu.org/ GNU Compiler Collection] (GCC) erleichtern.&lt;br /&gt;
&lt;br /&gt;
Vorausgesetzt werden Grundkenntnisse der Programmiersprache C. Diese Kenntnisse kann man sich online erarbeiten, z. B. mit dem [http://www.schellong.de/c.htm C Tutorial von Helmut Schellong] ([[C|Liste von C-Tutorials]]). Nicht erforderlich sind Vorkenntnisse in der Programmierung von Mikrocontrollern.&lt;br /&gt;
&lt;br /&gt;
= Vorwort =&lt;br /&gt;
&lt;br /&gt;
In diesem Text wird häufig auf die Standardbibliothek avr-libc verwiesen, für die es eine [http://www.nongnu.org/avr-libc/user-manual/index.html Online-Dokumentation] gibt, in der sich auch viele nützliche Informationen zum Compiler und zur Programmierung von AVR-Controllern finden. Beim Paket [[WinAVR]] gehört die avr-libc Dokumentation zum Lieferumfang und wird mitinstalliert.&lt;br /&gt;
&lt;br /&gt;
Der Compiler und die Standardbibliothek avr-libc werden ständig weiterentwickelt. Einige Unterschiede, die sich im Verlauf der Entwicklung ergeben haben, werden hier und im Artikel [[AVR-GCC-Tutorial/Alte Quellen|Alte Quellen]] zwar angesprochen, Anfängern und Umsteigern sei jedoch empfohlen, eine aktuelle Versionen zu nutzen.&lt;br /&gt;
&lt;br /&gt;
Das ursprüngliche Tutorial stammt von Christian Schifferle, viele neue Abschnitte und aktuelle Anpassungen von Martin Thomas.&lt;br /&gt;
&lt;br /&gt;
Dieses Tutorial ist in [[Media:AVR-GCC-Tutorial.pdf|PDF-Form]] erhältlich (zur Zeit nur eine sehr veraltete Version).&lt;br /&gt;
&lt;br /&gt;
== Weiterführende Kapitel ==&lt;br /&gt;
&lt;br /&gt;
Um dieses riesige Tutorial etwas überschaubarer zu gestalten, wurden einige Kapitel ausgelagert, die nicht unmittelbar mit den Grundlagen von avr-gcc in Verbindung stehen. All diese Seiten gehören zur [[:Kategorie:avr-gcc Tutorial]].&lt;br /&gt;
&lt;br /&gt;
;UART: → Hauptartikel: &#039;&#039;[[AVR-GCC-Tutorial/Der UART|Der UART]]&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
;ADC: → Hauptartikel: &#039;&#039;[[AVR-GCC-Tutorial/Analoge Ein- und Ausgabe|Analoge Ein- und Ausgabe (ADC)]]&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
;Timer: → Hauptartikel: &#039;&#039;[[AVR-GCC-Tutorial/Die Timer und Zähler des AVR|Die Timer und Zähler des AVR]]&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
;LCD: → Hauptartikel: &#039;&#039;[[AVR-GCC-Tutorial/LCD-Ansteuerung|LCD-Ansteuerung]]&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
;Watchdog: → Hauptartikel: &#039;&#039;[[AVR-GCC-Tutorial/Der Watchdog|Der Watchdog]]&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
;Assembler: → Hauptartikel: &#039;&#039;[[AVR-GCC-Tutorial/Assembler und Inline-Assembler|Assembler und Inline-Assembler]]&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
;alte Quellen anpassen: → Hauptartikel: &#039;&#039;[[AVR-GCC-Tutorial/Alte Quellen|Alte Quellen anpassen]]&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
;Makefiles: → Hauptartikel: &#039;&#039;[[AVR-GCC-Tutorial/Exkurs Makefiles|Exkurs Makefiles]]&#039;&#039; sowie als Alternative für sehr kleine Projekte → Hauptartikel: &#039;&#039;[[C ohne Makefile]]&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
= Benötigte Werkzeuge =&lt;br /&gt;
&lt;br /&gt;
Um eigene Programme für AVRs mittels einer AVR-Toolchain zu erstellen wird folgende Hard- und Software benötigt:&lt;br /&gt;
&lt;br /&gt;
* Eine AVR-Toolchain bestehend aus avr-gcc, den avr-Binutils (Assembler, Linker, etc) und einer Standard-C Bibliothek.  Üblich ist die AVR-LibC, die auch quasi in allen avr-gcc Distributionen enthalten ist.&lt;br /&gt;
&lt;br /&gt;
Hardware wird keine benötigt – bis auf einen PC natürlich, auf dem der Compiler ablaufen kann.  Selbst ohne AVR-Hardware kann man also bereits C-Programme für AVRs schreiben, compiliern und sich das Look-and-Feel von avr-gcc sowie von IDEs wie [[Atmel Studio]], Eclipse oder leichtgewichtigeren Entwicklungsumbgebungen anschauen. Selbst das Debuggen und Simulieren ist mithilfe entsprechender Tools wie Debugger und Simulator in gewissen Grenzen möglich.&lt;br /&gt;
&lt;br /&gt;
Um Programme für AVRs mittels einer AVR-Toolchain zu testen, wird folgende Hard- und Software benötigt:&lt;br /&gt;
&lt;br /&gt;
* Platine oder Versuchsaufbau für die Aufnahme eines AVR-Controllers, der vom avr-gcc Compiler unterstützt wird.&amp;lt;ref&amp;gt;Für eine Liste der unterstützten COntroller siehe die Dokumentation des Compilers oder [http://www.nongnu.org/avr-libc/user-manual/index.html#supported_devices AVR-Libc: Supported Devices].&amp;lt;/ref&amp;gt; Dieses Testboard kann durchaus auch selbst gelötet oder auf einem Steckbrett aufgebaut werden. Einige Registerbeschreibungen dieses Tutorials beziehen sich auf den inzwischen veralteten AT90S2313. Der weitaus größte Teil des Textes ist aber für alle Controller der AVR-Familie gültig. &lt;br /&gt;
&lt;br /&gt;
:Brauchbare Testplattformen sind auch das [[STK500]] und der [[AVR Butterfly]] von Atmel. Weitere Infos findet man in den Artikeln [[AVR#Starterkits|AVR Starterkits]] und [[AVR-Tutorial: Equipment]].&lt;br /&gt;
&lt;br /&gt;
* Programmiersoftware und -[[AVR In System Programmer |hardware]] z. B. PonyProg (siehe auch: [[Pony-Prog Tutorial]]) oder [[AVRDUDE]] mit [[STK200]]-Dongle oder die von Atmel verfügbare Hard- und Software ([[STK500]], Atmel AVRISP, [[AVR-Studio]]).&lt;br /&gt;
&lt;br /&gt;
* Nicht unbedingt erforderlich, aber zur Simulation und zum Debuggen unter MS-Windows recht nützlich: [[AVR-Studio]].&lt;br /&gt;
&lt;br /&gt;
* Wer unter Windows und Linux gleichermassen entwickeln will, der sollte sich die [http://www.eclipse.org/ IDE Eclipse for C/C++ Developers] und das [http://avr-eclipse.sourceforge.net/wiki/index.php/The_AVR_Eclipse_Plugin AVR-Eclipse Plugin] ansehen. Beide sind unter Windows und Linux einfach zu installieren, siehe auch [[AVR Eclipse]]. Ebenfalls unter Linux und Windows verfügbar ist die Entwicklungsumgebung [http://www.codeblocks.org/ Code::Blocks]&amp;lt;ref&amp;gt;Aktuelle, stabile Versionen sind als Nightly Builds regelmäßig im [http://forums.codeblocks.org/ Forum] verfügbar.&amp;lt;/ref&amp;gt;. Innerhalb dieser Entwicklungsumgebung können ohne die Installation zusätzlicher Plugins &amp;quot;AVR-Projekte&amp;quot; angelegt werden. Für Linux gibt es auch noch das [http://www.roboternetz.de/phpBB2/zeigebeitrag.php?t=25220 KontrollerLab].&lt;br /&gt;
&lt;br /&gt;
= Was tun, wenn&#039;s nicht klappt? =&lt;br /&gt;
&lt;br /&gt;
* Herausfinden, ob es tatsächlich ein avr(-gcc) spezifisches Problem ist oder nur die eigenen C-Kenntnisse einer Auffrischung bedürfen. Allgemeine C-Fragen kann man eventuell &amp;quot;beim freundlichen Programmierer zwei Büro-, Zimmer- oder Haustüren weiter&amp;quot; loswerden. Ansonsten: [[C]]-Buch (gibt&#039;s auch &amp;quot;gratis&amp;quot; online) lesen.&lt;br /&gt;
&lt;br /&gt;
* Die [[AVR Checkliste]] durcharbeiten.&lt;br /&gt;
&lt;br /&gt;
* Die &#039;&#039;&#039;[http://www.nongnu.org/avr-libc/user-manual/index.html Dokumentation der avr-libc]&#039;&#039;&#039; lesen, vor allem (aber nicht nur) den Abschnitt Related Pages/&#039;&#039;&#039;Frequently Asked Questions&#039;&#039;&#039; = Oft gestellte Fragen (und Antworten dazu). Z.Zt leider nur in englischer Sprache verfügbar.&lt;br /&gt;
&lt;br /&gt;
* Den Artikel [[AVR-GCC]] in diesem Wiki lesen.&lt;br /&gt;
&lt;br /&gt;
* Das [http://www.mikrocontroller.net/forum/gcc GCC-Forum auf  www.mikrocontroller.net] nach vergleichbaren Problemen absuchen.&lt;br /&gt;
&lt;br /&gt;
* Das avr-gcc-Forum bei [http://www.avrfreaks.net AVRfreaks] nach vergleichbaren Problemen absuchen.&lt;br /&gt;
&lt;br /&gt;
* Das [http://lists.gnu.org/archive/html/avr-gcc-list/ Archiv der avr-gcc Mailing-Liste] nach vergleichbaren Problemen absuchen.&lt;br /&gt;
&lt;br /&gt;
* Nach Beispielcode suchen. Vor allem im &#039;&#039;Projects&#039;&#039;-Bereich von [http://www.avrfreaks.net AVRfreaks] (anmelden).&lt;br /&gt;
&lt;br /&gt;
* Google oder yahoo befragen schadet nie.&lt;br /&gt;
&lt;br /&gt;
* Bei Problemen mit der Ansteuerung interner AVR-Funktionen mit C-Code: das Datenblatt des Controllers lesen (ganz und am Besten zweimal). Datenblätter sind  auf den [http://www.atmel.com Atmel Webseiten] als pdf-Dateien verfügbar. Das komplette Datenblatt (complete) und nicht die Kurzfassung (summary) verwenden.&lt;br /&gt;
&lt;br /&gt;
* Die Beispielprogramme im [[AVR-Tutorial]] sind zwar in AVR-Assembler verfasst, Erläuterungen und Vorgehensweisen sind aber auch auf C-Programme übertragbar.&lt;br /&gt;
&lt;br /&gt;
* Einen Beitrag in eines der Foren oder eine Mail an die Mailing-Liste schreiben. Dabei möglichst viel Information geben: Controller, Compilerversion, genutzte Bibliotheken, Ausschnitte aus dem Quellcode oder besser ein [http://www.mikrocontroller.net/topic/72767#598986 Testprojekt] mit allen notwendigen Dateien, um das Problem nachzuvollziehen, sowie genaue Fehlermeldungen bzw. Beschreibung des Fehlverhaltens. Bei Ansteuerung externer Geräte die Beschaltung beschreiben oder skizzieren (z. B. mit [http://www.tech-chat.de/ Andys ASCII Circuit]). Siehe dazu auch: &#039;&#039;&#039;[http://www.tty1.net/smart-questions_de.html &amp;quot;Wie man Fragen richtig stellt&amp;quot;]&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
= Erzeugen von Maschinencode =&lt;br /&gt;
&lt;br /&gt;
Aus dem C-Quellcode erzeugt der avr-gcc Compiler (zusammen mit Hilfsprogrammen wie z.&amp;amp;nbsp;B. Präprozessor, Assembler und Linker) Maschinencode für den AVR-Controller. Üblicherweise liegt dieser Code dann im Intel Hex-Format vor (&amp;quot;Hex-Datei&amp;quot;). Die Programmiersoftware (z.&amp;amp;nbsp;B. [[AVRDUDE]], PonyProg oder AVRStudio/STK500-plugin) liest diese Datei ein und überträgt die enthaltene Information (den Maschinencode) in den Speicher des Controllers. Im Prinzip sind also &amp;quot;nur&amp;quot; der avr-gcc-Compiler (und wenige Hilfsprogramme) mit den &amp;quot;richtigen&amp;quot; Optionen aufzurufen, um aus C-Code eine &amp;quot;Hex-Datei&amp;quot; zu erzeugen. Grundsätzlich stehen dazu drei verschiedene Ansätze zur Verfügung:&lt;br /&gt;
&lt;br /&gt;
* Die Verwendung einer integrierten Entwicklungsumgebung (IDE = &#039;&#039;&#039;I&#039;&#039;&#039;ntegrated &#039;&#039;&#039;D&#039;&#039;&#039;evelopment &#039;&#039;&#039;E&#039;&#039;&#039;nvironment), bei der alle Einstellungen z.&amp;amp;nbsp;B. in Dialogboxen durchgeführt werden können. Unter Anderem kann AVRStudio ab Version 4.12 (kostenlos auf [http://www.atmel.com/ atmel.com]) zusammen mit WinAVR als integrierte Entwicklungsumgebung für den Compiler avr-gcc genutzt werden (dazu müssen AVRStudio und WinAVR auf dem Rechner installiert sein). Weitere IDEs (ohne Anspruch auf Vollständigkeit): [http://www.eclipse.org/ Eclipse for C/C++ Developers] (d.h. inkl. CDT) und das [http://avr-eclipse.sourceforge.net/wiki/index.php/The_AVR_Eclipse_Plugin AVR-Eclipse Plugin] (für diverse Plattformen, u.a. Linux und MS Windows, IDE und Plugin kostenlos), [http://sourceforge.net/projects/kontrollerlab KontrollerLab] (Linux/KDE, kostenlos). [http://www.atmanecl.com/EnglishSite/SoftwareEnglish.htm AtmanAvr] (MS Windows, relativ günstig), KamAVR (MS-Windows, kostenlos, wird augenscheinlich nicht mehr weiterentwickelt), [http://www.amctools.com/vmlab.htm VMLab] (MS Windows, ab Version 3.12 ebenfalls kostenlos). Integrierte Entwicklungsumgebungen unterscheiden sich stark in Ihrer Bedienung und stehen auch nicht für alle Plattformen zur Verfügung, auf denen der Compiler  ausführbar ist (z.&amp;amp;nbsp;B. AVRStudio nur für MS-Windows). Zur Anwendung des avr-gcc Compilers mit IDEs sei hier auf deren Dokumentation verwiesen. &lt;br /&gt;
&lt;br /&gt;
* Die Nutzung des Programms make mit passenden Makefiles. In den folgenden Abschnitten wird die Generierung von Maschinencode für einen AVR (&amp;quot;hex-Datei&amp;quot;) aus C-Quellcode (&amp;quot;c-Dateien&amp;quot;) anhand von &amp;quot;make&amp;quot; und den &amp;quot;Makefiles&amp;quot; näher erläutert. Viele der darin beschriebenen Optionen findet man auch im Konfigurationsdialog des avr-gcc-Plugins von AVRStudio (AVRStudio generiert ein makefile in einem Unterverzeichnis des Projektverzeichnisses). &lt;br /&gt;
&lt;br /&gt;
* Das Generieren des Programms ohne IDE und ohne Makefile. In diesem Fall muss die Quellcodedatei durch eine vorgefertigte Kommandofolge an den Compiler übergeben werden. Der Artikel [[C ohne Makefile]] zeigt, wie das funktioniert. Diese Vorgehensweise empfiehlt sich jedoch nur für kleine Programme, die nicht auf verschiedene Quellcodedateien verteilt sind.&lt;br /&gt;
&lt;br /&gt;
Beim Wechsel vom makefile-Ansatz nach WinAVR-Vorlage zu AVRStudio ist darauf zu achten, dass AVRStudio (Stand: AVRStudio Version 4.13) bei einem neuen Projekt die Optimierungsoption (vgl. Artikel [[AVR-GCC-Tutorial/Exkurs_Makefiles|AVR-GCC-Tutorial/Exkurs: Makefiles]], typisch: -Os) nicht einstellt und die mathematische Bibliothek der avr-libc (libm.a, Linker-Option -lm) nicht einbindet. (Hinweis: Bei Version 4.16 wird beides bereits gesetzt). Beides ist Standard bei Verwendung von makefiles nach WinAVR-Vorlage und sollte daher auch im Konfigurationsdialog des avr-gcc-Plugins von AVRStudio &amp;quot;manuell&amp;quot; eingestellt werden, um auch mit AVRStudio kompakten Code zu erzeugen.&lt;br /&gt;
&lt;br /&gt;
= Einführungsbeispiel =&lt;br /&gt;
&lt;br /&gt;
Zum Einstieg ein kleines Beispiel, an dem die Nutzung des Compilers und der Hilfsprogramme (der sogenannten &#039;&#039;Toolchain&#039;&#039;) demonstriert wird. Detaillierte Erläuterungen folgen in den weiteren Abschnitten dieses Tutorials.&lt;br /&gt;
&lt;br /&gt;
Das Programm soll auf einem AVR Mikrocontroller einige Ausgänge ein- und andere ausschalten. Das Beispiel ist für einen ATmega16 programmiert ([http://www.atmel.com/dyn/resources/prod_documents/doc2466.pdf Datenblatt]), kann aber sinngemäß für andere Controller der AVR-Familie modifiziert werden. &lt;br /&gt;
&lt;br /&gt;
Ein kurzes Wort zur Hardware: Bei diesem Programm werden alle Pins von PORTB auf Ausgang gesetzt, und einige davon werden auf HIGH andere auf LOW gesetzt. Das kann je nach angeschlossener Hardware an diesen Pins kritisch sein. Am ungefährlichsten ist es, wenn nichts an den Pins angeschlossen ist und man die Funktion des Programmes durch eine Spannungsmessung mit einem Multimeter kontrolliert. Die Spannung wird dabei zwischen GND-Pin und den einzelnen Pins von PORTB gemessen.&lt;br /&gt;
&lt;br /&gt;
Zunächst der Quellcode der Anwendung, der in einer Text-Datei mit dem Namen &#039;&#039;main.c&#039;&#039; abgespeichert wird.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
/* Alle Zeichen zwischen Schrägstrich-Stern &lt;br /&gt;
   und Stern-Schrägstrich sind Kommentare */&lt;br /&gt;
&lt;br /&gt;
// Zeilenkommentare sind ebenfalls möglich&lt;br /&gt;
// alle auf die beiden Schrägstriche folgenden&lt;br /&gt;
// Zeichen einer Zeile sind Kommentar&lt;br /&gt;
&lt;br /&gt;
#include &amp;lt;avr/io.h&amp;gt;          // (1)&lt;br /&gt;
&lt;br /&gt;
int main (void) {            // (2)&lt;br /&gt;
&lt;br /&gt;
   DDRB  = 0xFF;             // (3)&lt;br /&gt;
   PORTB = 0x03;             // (4)&lt;br /&gt;
&lt;br /&gt;
   while(1) {                // (5)&lt;br /&gt;
     /* &amp;quot;leere&amp;quot; Schleife*/   // (6)&lt;br /&gt;
   }                         // (7)&lt;br /&gt;
&lt;br /&gt;
   /* wird nie erreicht */&lt;br /&gt;
   return 0;                 // (8)&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
# In dieser Zeile wird eine sogenannte Header-Datei eingebunden. In &amp;lt;code&amp;gt;avr/io.h&amp;lt;/code&amp;gt; sind die Registernamen definiert, die im späteren Verlauf genutzt werden. Auch unter Windows wird ein&amp;amp;nbsp;&amp;lt;code&amp;gt;/&amp;lt;/code&amp;gt; zur Kennzeichnung von Unterverzeichnissen in Include-Dateinamen verwendet und kein&amp;amp;nbsp;&amp;lt;code&amp;gt;\&amp;lt;/code&amp;gt;.&lt;br /&gt;
# Hier beginnt das eigentliche Programm. Jedes C-Programm beginnt mit den Anweisungen in der Funktion &amp;lt;code&amp;gt;main&amp;lt;/code&amp;gt;.&lt;br /&gt;
# Die Anschlüsse eines AVR (Pins) werden zu Blöcken zusammengefasst, einen solchen Block bezeichnet man als Port. Beim ATmega16 hat jeder Port 8 Anschlüsse, bei kleineren AVRs können einem Port auch weniger als 8 Anschlüsse zugeordnet sein. Da per Definition (Datenblatt) alle gesetzten Bits in einem Datenrichtungsregister den entsprechenden Anschluss auf Ausgang schalten, werden mit DDRB=0xff alle Anschlüsse des Ports B als Ausgänge eingestellt.&lt;br /&gt;
# Die den ersten beiden Bits des Ports zugeordneten Anschlüsse (PB0 und PB1) werden 1, alle anderen Anschlüsse des Ports B (PB2-PB7) zu 0. Aktivierte Ausgänge (logisch 1 oder &amp;quot;high&amp;quot;) liegen auf Betriebsspannung (VCC, meist 5 Volt), nicht aktivierte Ausgänge führen 0 Volt (GND, Bezugspotential). Es ist sinnvoll, sich möglichst frühzeitig eine alternative Schreibweise beizubringen, die wegen der leichteren Überprüfbarkeit und Portierbarkeit oft im weiteren Tutorial und in Forenbeiträgen benutzt wird. Die Zuordnung sieht in diesem Fall so aus, Näheres dazu im Artikel [[Bitmanipulation]]:&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;PORTB = (1&amp;lt;&amp;lt;PB1) | (1&amp;lt;&amp;lt;PB0);&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
# ist der Beginn der sogenannte &#039;&#039;Hauptschleife&#039;&#039; (main-loop). Dies ist eine Endlosschleife, welche kontinuierlich wiederkehrende Befehle enthält.&lt;br /&gt;
# In diesem Beispiel ist die Hauptschleife leer. Der Controller durchläuft die Schleife immer wieder, ohne dass etwas passiert. Eine solche Schleife ist notwendig, da es auf dem Controller kein Betriebssystem gibt, das nach Beendigung des Programmes die Kontrolle übernehmen könnte. Ohne diese Schleife kehrt das Programm aus &amp;lt;code&amp;gt;main&amp;lt;/code&amp;gt; zurück, alle Interrupts werden deaktiviert und eine Endlosschleife betreten.&lt;br /&gt;
# Ende der Hauptschleife und Sprung zur passenden, öffnenden Klammer, also zu 5.&lt;br /&gt;
# ist das Programmende. Die Zeile ist nur aus Gründen der C-Kompatibilität enthalten: &amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;int main(void)&amp;lt;/syntaxhighlight&amp;gt; besagt, dass die Funktion einen int-Wert zurückgibt. Die Anweisung wird aber nicht erreicht, da das Programm die Hauptschleife nie verlässt.&lt;br /&gt;
&lt;br /&gt;
Um diesen Quellcode in ein lauffähiges Programm zu übersetzen, wird hier ein Makefile genutzt. Das verwendete Makefile findet sich auf der Seite [[Beispiel Makefile]] und basiert auf der Vorlage, die in WinAVR mitgeliefert wird und wurde bereits angepasst (Controllertyp ATmega16). Man kann das Makefile bearbeiten und an andere Controller anpassen oder sich mit dem Programm MFile menügesteuert ein Makefile &amp;quot;zusammenklicken&amp;quot;. Das Makefile speichert man unter dem Namen &amp;lt;code&amp;gt;Makefile&amp;lt;/code&amp;gt; (ohne Endung) im selben Verzeichnis, in dem auch die Datei &amp;lt;code&amp;gt;main.c&amp;lt;/code&amp;gt; mit dem Programmcode abgelegt ist. Detailliertere Erklärungen zur Funktion von Makefiles finden sich im Artikel [[AVR-GCC-Tutorial/Exkurs_Makefiles|Exkurs: Makefiles]].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
D:\beispiel&amp;gt;dir&lt;br /&gt;
&lt;br /&gt;
 Verzeichnis von D:\beispiel&lt;br /&gt;
&lt;br /&gt;
28.11.2006  22:53    &amp;lt;DIR&amp;gt;          .&lt;br /&gt;
28.11.2006  22:53    &amp;lt;DIR&amp;gt;          ..&lt;br /&gt;
28.11.2006  20:06               118 main.c&lt;br /&gt;
28.11.2006  20:03            16.810 Makefile&lt;br /&gt;
               2 Datei(en)         16.928 Bytes&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nun gibt man &#039;&#039;make all&#039;&#039; ein. Falls das mit WinAVR installierte Programmers Notepad genutzt wird, gibt es dazu einen Menüpunkt im Tools Menü. Sind alle Einstellungen korrekt, entsteht eine Datei &amp;lt;code&amp;gt;main.hex&amp;lt;/code&amp;gt;, in welcher der Code für den AVR enthalten ist. &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
D:\beispiel&amp;gt;make all&lt;br /&gt;
&lt;br /&gt;
-------- begin --------&lt;br /&gt;
avr-gcc (GCC) 3.4.6&lt;br /&gt;
Copyright (C) 2006 Free Software Foundation, Inc.&lt;br /&gt;
This is free software; see the source for copying conditions.  There is NO&lt;br /&gt;
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.&lt;br /&gt;
&lt;br /&gt;
Compiling C: main.c&lt;br /&gt;
avr-gcc -c -mmcu=atmega16 -I. -gdwarf-2 -DF_CPU=1000000UL -Os -funsigned-char -f&lt;br /&gt;
unsigned-bitfields -fpack-struct -fshort-enums -Wall -Wstrict-prototypes -Wundef&lt;br /&gt;
 -Wa,-adhlns=obj/main.lst  -std=gnu99 -Wundef -MD -MP -MF .dep/main.o.d main.c -&lt;br /&gt;
o obj/main.o&lt;br /&gt;
&lt;br /&gt;
Linking: main.elf&lt;br /&gt;
avr-gcc -mmcu=atmega16 -I. -gdwarf-2 -DF_CPU=1000000UL -Os -funsigned-char -funs&lt;br /&gt;
igned-bitfields -fpack-struct -fshort-enums -Wall -Wstrict-prototypes -Wundef -W&lt;br /&gt;
a,-adhlns=obj/main.o  -std=gnu99 -Wundef -MD -MP -MF .dep/main.elf.d obj/main.o&lt;br /&gt;
--output main.elf -Wl,-Map=main.map,--cref    -lm&lt;br /&gt;
&lt;br /&gt;
Creating load file for Flash: main.hex&lt;br /&gt;
avr-objcopy -O ihex -R .eeprom main.elf main.hex&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Der Inhalt der hex-Datei kann nun zum Controller übertragen werden. Dies kann z.&amp;amp;nbsp;B. über In-System-Programming ([[ISP]]) erfolgen, das im [[AVR-Tutorial: Equipment]] beschrieben ist. Makefiles nach der WinAVR/MFile-Vorlage sind für die Nutzung des Programms [[AVRDUDE]] vorbereitet. Wenn man den Typ und Anschluss des Programmiergerätes richtig eingestellt hat, kann mit &#039;&#039;make program&#039;&#039; die Übertragung mittels AVRDUDE gestartet werden. Jede andere Software, die hex-Dateien lesen und zu einem AVR übertragen kann&amp;lt;ref&amp;gt;z.&amp;amp;nbsp;B. [[Pony-Prog_Tutorial|Ponyprog]], yapp, AVRStudio&amp;lt;/ref&amp;gt;, kann natürlich ebenfalls genutzt werden.&lt;br /&gt;
&lt;br /&gt;
Startet man nun den Controller (Reset-Taster oder Stromzufuhr aus/an), werden vom Programm die Anschlüsse PB0 und PB1 auf 1 gesetzt. Man kann mit einem Messgerät nun an diesem Anschluss die Betriebsspannung messen oder eine [[LED]] leuchten lassen (Anode an den Pin, Vorwiderstand nicht vergessen). An den Anschlüssen PB2-PB7 misst man 0 Volt. Eine mit der Anode mit einem dieser Anschlüsse verbundene LED leuchtet nicht.&lt;br /&gt;
&lt;br /&gt;
= Ganzzahlige Datentypen (Integer) =&lt;br /&gt;
&lt;br /&gt;
Bei der Programmierung von Mikrokontrollern ist die Definition einiger ganzzahliger Datentypen sinnvoll, an denen eindeutig die Bit-Länge abgelesen werden kann.&lt;br /&gt;
&lt;br /&gt;
Standardisierte Datentypen werden in der Header-Datei &amp;lt;code&amp;gt;stdint.h&amp;lt;/code&amp;gt; definiert, die folgendermaßen eingebunden werden kann:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;#include &amp;lt;stdint.h&amp;gt;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|+ &#039;&#039;&#039;int-Typen aus &amp;lt;code&amp;gt;stdint.h&amp;lt;/code&amp;gt; (C99)&#039;&#039;&#039;&amp;lt;br/&amp;gt;&amp;amp;nbsp;&lt;br /&gt;
|- bgcolor=&amp;quot;#d0d0ff&amp;quot;&lt;br /&gt;
!colspan=&amp;quot;5&amp;quot;| Vorzeichenbehaftete int-Typen&lt;br /&gt;
|- bgcolor=&amp;quot;#e8e8ff&amp;quot;&lt;br /&gt;
! Typname || Bit-Breite ||colspan=&amp;quot;2&amp;quot;| Wertebereich&lt;br /&gt;
|align=&amp;quot;center| &#039;&#039;&#039;C-Entsprechung&#039;&#039;&#039; (avr-gcc)&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;int8_t&amp;lt;/code&amp;gt; ||align=&amp;quot;right&amp;quot;| 8 || −128 ⋯ 127 || −2&amp;lt;sup&amp;gt;7&amp;lt;/sup&amp;gt; ⋯ 2&amp;lt;sup&amp;gt;7&amp;lt;/sup&amp;gt;−1 || &amp;lt;code&amp;gt;signed char&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;int16_t&amp;lt;/code&amp;gt; ||align=&amp;quot;right&amp;quot;| 16 || −32768 ⋯ 32767 || −2&amp;lt;sup&amp;gt;15&amp;lt;/sup&amp;gt; ⋯ 2&amp;lt;sup&amp;gt;15&amp;lt;/sup&amp;gt;−1 || &amp;lt;code&amp;gt;signed short&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;signed int&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;int32_t&amp;lt;/code&amp;gt; ||align=&amp;quot;right&amp;quot;| 32 || −2147483648 ⋯ 2147483647 || −2&amp;lt;sup&amp;gt;31&amp;lt;/sup&amp;gt; ⋯ 2&amp;lt;sup&amp;gt;31&amp;lt;/sup&amp;gt;−1 || &amp;lt;code&amp;gt;signed long&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;int64_t&amp;lt;/code&amp;gt; ||align=&amp;quot;right&amp;quot;| 64 || −9223372036854775808 ⋯ 9223372036854775807 || −2&amp;lt;sup&amp;gt;63&amp;lt;/sup&amp;gt; ⋯ 2&amp;lt;sup&amp;gt;63&amp;lt;/sup&amp;gt;−1 || &amp;lt;code&amp;gt;signed long long&amp;lt;/code&amp;gt;&lt;br /&gt;
|- bgcolor=&amp;quot;#d0d0ff&amp;quot;&lt;br /&gt;
!colspan=&amp;quot;5&amp;quot;| Vorzeichenlose int-Typen&lt;br /&gt;
|- bgcolor=&amp;quot;#e8e8ff&amp;quot;&lt;br /&gt;
! Typname || Bit-Breite ||colspan=&amp;quot;2&amp;quot;| Wertebereich&lt;br /&gt;
|align=&amp;quot;center| &#039;&#039;&#039;C-Entsprechung&#039;&#039;&#039; (avr-gcc)&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;uint8_t&amp;lt;/code&amp;gt; ||align=&amp;quot;right&amp;quot;| 8 || 0 ⋯ 255 || 0 ⋯ 2&amp;lt;sup&amp;gt;8&amp;lt;/sup&amp;gt;−1 || &amp;lt;code&amp;gt;unsigned char&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;uint16_t&amp;lt;/code&amp;gt; ||align=&amp;quot;right&amp;quot;| 16 || 0 ⋯ 65535 || 0 ⋯ 2&amp;lt;sup&amp;gt;16&amp;lt;/sup&amp;gt;−1 || &amp;lt;code&amp;gt;unsigned short&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;unsigned int&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;uint32_t&amp;lt;/code&amp;gt; ||align=&amp;quot;right&amp;quot;| 32 || 0 ⋯ 4294967295 || 0 ⋯ 2&amp;lt;sup&amp;gt;32&amp;lt;/sup&amp;gt;−1 || &amp;lt;code&amp;gt;unsigned long&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;uint64_t&amp;lt;/code&amp;gt; ||align=&amp;quot;right&amp;quot;| 64 || 0 ⋯ 18446744073709551615 || 0 ⋯ 2&amp;lt;sup&amp;gt;64&amp;lt;/sup&amp;gt;−1 || &amp;lt;code&amp;gt;unsigned long long&amp;lt;/code&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Neben den Typen gibt es auch Makros für die Bereichsgrenzen wie &amp;lt;code&amp;gt;INT8_MIN&amp;lt;/code&amp;gt; oder &amp;lt;code&amp;gt;UINT16_MAX&amp;lt;/code&amp;gt;. Siehe dazu auch: [http://www.nongnu.org/avr-libc/user-manual/group__avr__stdint.html Dokumentation der avr-libc: Standard Integer Types].&lt;br /&gt;
&lt;br /&gt;
= Grundsätzlicher Programmaufbau eines µC-Programms =&lt;br /&gt;
&lt;br /&gt;
Wir unterscheiden zwischen 2 verschiedenen Methoden, um ein&lt;br /&gt;
Mikrocontroller-Programm zu schreiben, und zwar völlig unabhängig davon, in&lt;br /&gt;
welcher Programmiersprache das Programm geschrieben wird.&lt;br /&gt;
&lt;br /&gt;
== Sequentieller Programmablauf ==&lt;br /&gt;
&lt;br /&gt;
[[Image:Sequentielle Programme.gif|left]]&lt;br /&gt;
Bei dieser Programmiertechnik wird eine Endlosschleife programmiert, welche im&lt;br /&gt;
Wesentlichen immer den gleichen Aufbau hat. Es wird hier nach dem sogenannten EVA-Prinzip gehandelt. EVA steht für &amp;quot;Eingabe, Verarbeitung, Ausgabe&amp;quot;.&lt;br /&gt;
{{Absatz}}&lt;br /&gt;
&lt;br /&gt;
== Interruptgesteuerter Programmablauf ==&lt;br /&gt;
&lt;br /&gt;
[[Image:Interrupt Programme.gif|left]]&lt;br /&gt;
Bei dieser Methode werden beim Programmstart zuerst die gewünschten Interruptquellen aktiviert und dann in eine Endlosschleife gegangen, in welcher Dinge erledigt werden können, welche nicht zeitkritisch sind. Wenn ein Interrupt ausgelöst wird, so wird automatisch die zugeordnete Interruptfunktion ausgeführt.&lt;br /&gt;
{{Absatz}}&lt;br /&gt;
&lt;br /&gt;
= Zugriff auf Register =&lt;br /&gt;
&lt;br /&gt;
Die AVR-Controller verfügen über eine Vielzahl von Registern. Die meisten&lt;br /&gt;
davon sind sogenannte Schreib-/Leseregister. Das heißt, das Programm kann die&lt;br /&gt;
Inhalte der Register sowohl auslesen als auch beschreiben.&lt;br /&gt;
&lt;br /&gt;
Register haben einen besonderen Stellenwert bei den AVR Controllern. Sie dienen dem Zugriff auf die Ports und die Schnittstellen des Controllers. Wir unterscheiden zwischen 8-Bit und 16-Bit Registern. Vorerst behandeln wir die 8-Bit Register.&lt;br /&gt;
&lt;br /&gt;
Einzelne Register sind bei allen AVRs vorhanden, andere wiederum nur bei bestimmten Typen. So sind beispielsweise die Register, welche für den Zugriff auf den UART notwendig sind, selbstverständlich nur bei denjenigen Modellen vorhanden, welche über einen integrierten Hardware UART bzw. USART verfügen.&lt;br /&gt;
&lt;br /&gt;
Die Namen der Register sind in den Headerdateien zu den entsprechenden AVR-Typen definiert. Dazu muss man den Namen der controllerspezifischen Headerdatei nicht kennen. Es reicht aus, die allgemeine Headerdatei &#039;&#039;avr/io.h&#039;&#039; einzubinden:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
#include &amp;lt;avr/io.h&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ist im Makefile der MCU-Typ z.&amp;amp;nbsp;B. mit dem Inhalt atmega8 definiert (und wird somit per -mmcu=atmega8 an den Compiler übergeben), wird beim Einlesen der io.h-Datei implizit (&amp;quot;automatisch&amp;quot;) auch die iom8.h-Datei mit den Register-Definitionen für den ATmega8 eingelesen.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Wohl besser als Anhang - spaeter... --&amp;gt;&lt;br /&gt;
Intern wird diese &amp;quot;Automatik&amp;quot; wie folgt realisiert: Der Controllertyp wird dem Compiler als Parameter übergeben (vgl. &#039;&#039;avr-gcc -c -mmcu=atmega16 [...]&#039;&#039; im Einführungsbeispiel). Wird ein Makefile nach der WinAVR/mfile-Vorlage verwendet, setzt man die Variable &#039;&#039;MCU&#039;&#039;, der Inhalt dieser Variable wird dann an passender Stelle für die Compilerparameter verwendet. Der Compiler definiert intern eine dem mmcu-Parameter zugeordnete &amp;quot;Variable&amp;quot; (genauer: ein Makro) mit dem Namen des Controllers, vorangestelltem &#039;&#039;__AVR_&#039;&#039; und angehängten Unterstrichen (z.&amp;amp;nbsp;B. wird bei &#039;&#039;-mmcu=atmega16&#039;&#039; das Makro &#039;&#039;__AVR_ATmega16__&#039;&#039; definiert). Beim Einbinden der Header-Datei &#039;&#039;avr/io.h&#039;&#039; wird geprüft, ob das jeweilige Makro definiert ist und die zum Controller passende Definitionsdatei eingelesen. Zur Veranschaulichung einige Ausschnitte aus einem Makefile:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[...]&lt;br /&gt;
# MCU Type (&amp;quot;name&amp;quot;) setzen:&lt;br /&gt;
MCU = atmega16&lt;br /&gt;
[...]&lt;br /&gt;
&lt;br /&gt;
[...]&lt;br /&gt;
## Verwendung des Inhalts von MCU (hier atmega16) fuer die &lt;br /&gt;
## Compiler- und Assembler-Parameter&lt;br /&gt;
ALL_CFLAGS = -mmcu=$(MCU) -I. $(CFLAGS) $(GENDEPFLAGS)&lt;br /&gt;
ALL_CPPFLAGS = -mmcu=$(MCU) -I. -x c++ $(CPPFLAGS) $(GENDEPFLAGS)&lt;br /&gt;
ALL_ASFLAGS = -mmcu=$(MCU) -I. -x assembler-with-cpp $(ASFLAGS)&lt;br /&gt;
[...]&lt;br /&gt;
&lt;br /&gt;
[...]&lt;br /&gt;
## Aufruf des Compilers:&lt;br /&gt;
## mit den Parametern ($(ALL_CFLAGS) ist -mmcu=$(MCU)[...] = -mmcu=atmega16[...]&lt;br /&gt;
$(OBJDIR)/%.o : %.c&lt;br /&gt;
	@echo&lt;br /&gt;
	@echo $(MSG_COMPILING) $&amp;lt;&lt;br /&gt;
	$(CC) -c $(ALL_CFLAGS) $&amp;lt; -o $@ &lt;br /&gt;
[...]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Da --mmcu=atmega16 übergeben wurde, wird __AVR_ATmega16__ definiert und kann in avr/io.h zur Fallunterscheidung genutzt werden:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
// avr/io.h &lt;br /&gt;
// (bei WinAVR-Standardinstallation in C:\WinAVR\avr\include\avr)&lt;br /&gt;
[...]&lt;br /&gt;
#if defined (__AVR_AT94K__)&lt;br /&gt;
#  include &amp;lt;avr/ioat94k.h&amp;gt;&lt;br /&gt;
// [...]&lt;br /&gt;
#elif defined (__AVR_ATmega16__)&lt;br /&gt;
// da __AVR_ATmega16__ definiert ist, wird avr/iom16.h eingebunden:&lt;br /&gt;
#  include &amp;lt;avr/iom16.h&amp;gt;&lt;br /&gt;
// [...]&lt;br /&gt;
#else&lt;br /&gt;
#  if !defined(__COMPILING_AVR_LIBC__)&lt;br /&gt;
#    warning &amp;quot;device type not defined&amp;quot;&lt;br /&gt;
#  endif&lt;br /&gt;
#endif&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die Beispiele in den folgenden Abschnitten demonstrieren den Zugriff auf Register anhand der Register für I/O-Ports (PORTx, DDRx, PINx), die Vorgehensweise ist jedoch für alle Register (z.&amp;amp;nbsp;B. die des UART, ADC, SPI) analog.&lt;br /&gt;
&lt;br /&gt;
== Schreiben in Register ==&lt;br /&gt;
&lt;br /&gt;
Zum Schreiben kann man Register einfach wie eine Variable setzen.&amp;lt;ref&amp;gt;In Quellcodes, die für ältere Versionen des avr-gcc/der avr-libc entwickelt wurden, erfolgt der Schreibzugriff über die Funktion outp(). Aktuelle Versionen des Compilers unterstützen den Zugriff nun direkt, outp() ist nicht mehr erforderlich.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Beispiel:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
#include &amp;lt;avr/io.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
int main()&lt;br /&gt;
{&lt;br /&gt;
    /* Setzt das Richtungsregister des Ports A auf 0xff &lt;br /&gt;
       (alle Pins als Ausgang, vgl. Abschnitt Zugriff auf Ports): */&lt;br /&gt;
    DDRA = 0xff;    &lt;br /&gt;
&lt;br /&gt;
    /* Setzt PortA auf 0x03, Bit 0 und 1 &amp;quot;high&amp;quot;, restliche &amp;quot;low&amp;quot;: */&lt;br /&gt;
    PORTA = 0x03;   &lt;br /&gt;
&lt;br /&gt;
    // Setzen der Bits 0,1,2,3 und 4&lt;br /&gt;
    // Binär 00011111 = Hexadezimal 1F&lt;br /&gt;
    DDRB = 0x1F;    /* direkte Zuweisung - unübersichtlich */&lt;br /&gt;
&lt;br /&gt;
    /* Ausführliche Schreibweise: identische Funktionalität, mehr Tipparbeit&lt;br /&gt;
       aber übersichtlicher und selbsterklärend: */&lt;br /&gt;
    DDRB = (1 &amp;lt;&amp;lt; DDB0) | (1 &amp;lt;&amp;lt; DDB1) | (1 &amp;lt;&amp;lt; DDB2) | (1 &amp;lt;&amp;lt; DDB3) | (1 &amp;lt;&amp;lt; DDB4);&lt;br /&gt;
&lt;br /&gt;
    while (1);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die ausführliche Schreibweise sollte bevorzugt verwendet werden, da dadurch die Zuweisungen selbsterklärend sind und somit der Code leichter nachvollzogen werden kann. Atmel verwendet sie auch bei Beispielen in Datenblätten und in den allermeisten Quellcodes zu Application-Notes. Mehr zu der Schreibweise mit &amp;quot;|&amp;quot; und &amp;quot;&amp;lt;&amp;lt;&amp;quot; findet man unter [[Bitmanipulation]].&lt;br /&gt;
&lt;br /&gt;
Der gcc C-Compiler unterstützt ab Version 4.3.0 Konstanten im Binärformat, z.&amp;amp;nbsp;B. DDRB&amp;amp;nbsp;=&amp;amp;nbsp;0b00011111. Diese Schreibweise ist jedoch nur in GNU-C verfügbar und nicht in ISO-C definiert. Man sollte sie daher nicht verwenden, wenn Code mit anderen ausgetauscht oder mit anderen Compilern bzw. älteren Versionen des gcc genutzt werden soll.&lt;br /&gt;
&lt;br /&gt;
== Verändern von Registerinhalten ==&lt;br /&gt;
&lt;br /&gt;
Einzelne Bits setzt und löscht man &amp;quot;Standard-C-konform&amp;quot; mittels logischer (Bit-) Operationen. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
 x |= (1 &amp;lt;&amp;lt; Bitnummer);  // Hiermit wird ein Bit in x gesetzt&lt;br /&gt;
 x &amp;amp;= ~(1 &amp;lt;&amp;lt; Bitnummer); // Hiermit wird ein Bit in x geloescht&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Es wird jeweils nur der Zustand des angegebenen Bits geändert, der vorherige Zustand der anderen Bits bleibt erhalten. &lt;br /&gt;
&lt;br /&gt;
Beispiel:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
#include &amp;lt;avr/io.h&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
#define MEINBIT 2&lt;br /&gt;
...&lt;br /&gt;
PORTA |= (1 &amp;lt;&amp;lt; MEINBIT);    /* setzt Bit 2 an PortA auf 1 */&lt;br /&gt;
PORTA &amp;amp;= ~(1 &amp;lt;&amp;lt; MEINBIT);   /* loescht Bit 2 an PortA */&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Mit dieser Methode lassen sich auch mehrere Bits eines Registers gleichzeitig setzen und löschen.&lt;br /&gt;
&lt;br /&gt;
Beispiel:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
#include &amp;lt;avr/io.h&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
DDRA &amp;amp;= ~( (1&amp;lt;&amp;lt;PA0) | (1&amp;lt;&amp;lt;PA3) );  /* PA0 und PA3 als Eingaenge */&lt;br /&gt;
PORTA |= ( (1&amp;lt;&amp;lt;PA0) | (1&amp;lt;&amp;lt;PA3) );  /* Interne Pull-Up fuer beide einschalten */&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Bei bestimmten AVR Registern mit Bits, die durch Beschreiben mit einer logischen 1 gelöscht werden, muss eine absolute Zuweisung benutzt werden. Ein ODER löscht in diesen Registern ALLE gesetzten Bits!&lt;br /&gt;
&lt;br /&gt;
Beispiel:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
#include &amp;lt;avr/io.h&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
TIFR2 = (1&amp;lt;&amp;lt;OCF2A); // Nur Bit OCF2A löschen&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In Quellcodes, die für ältere Version den des avr-gcc/der avr-libc entwickelt wurden, werden einzelne Bits mittels der Funktionen sbi und cbi gesetzt bzw. gelöscht. Beide Funktionen sind nicht mehr erforderlich.&lt;br /&gt;
&lt;br /&gt;
Siehe auch:&lt;br /&gt;
* [[Bitmanipulation]]&lt;br /&gt;
* [http://www.nongnu.org/avr-libc/user-manual/index.html Dokumentation der avr-libc] Abschnitt Modules/Special Function Registers&lt;br /&gt;
&lt;br /&gt;
== Lesen aus Registern ==&lt;br /&gt;
&lt;br /&gt;
Zum Lesen kann man auf Register einfach wie auf eine Variable zugreifen. In Quellcodes, die für ältere Versionen des avr-gcc/der avr-libc entwickelt wurden, erfolgt der Lesezugriff über die Funktion inp(). Aktuelle Versionen des Compilers unterstützen den Zugriff nun direkt und inp() ist nicht mehr erforderlich.&lt;br /&gt;
&lt;br /&gt;
Beispiel:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
#include &amp;lt;avr/io.h&amp;gt;&lt;br /&gt;
#include &amp;lt;stdint.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
uint8_t foo;&lt;br /&gt;
&lt;br /&gt;
//...&lt;br /&gt;
&lt;br /&gt;
int main(void)&lt;br /&gt;
{&lt;br /&gt;
    /* kopiert den Status der Eingabepins an PortB &lt;br /&gt;
       in die Variable foo: */&lt;br /&gt;
    foo = PINB;    &lt;br /&gt;
    //...&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die Abfrage der Zustände von Bits erfolgt durch Einlesen des gesamten Registerinhalts und ausblenden der Bits deren Zustand nicht von Interesse ist. Einige Beispiele zum Prüfen ob Bits gesetzt oder gelöscht sind:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
#define MEINBIT0 0 &lt;br /&gt;
#define MEINBIT2 2&lt;br /&gt;
&lt;br /&gt;
uint8_t i;&lt;br /&gt;
&lt;br /&gt;
extern test1();&lt;br /&gt;
&lt;br /&gt;
// Funkion test1 aufrufen, wenn Bit 0 in Register PINA gesetzt (1) ist&lt;br /&gt;
i = PINA;         // Inhalt in Arbeitsvariable&lt;br /&gt;
i = i &amp;amp; 0x01;     // alle Bits bis auf Bit 0 ausblenden (bitweise und)&lt;br /&gt;
                  // falls das Bit gesetzt war, hat i den Inhalt 1&lt;br /&gt;
if ( i != 0 ) {   // Ergebnis ungleich 0 (wahr)? &lt;br /&gt;
  test1();         // dann muss Bit 0 in i gesetzt sein -&amp;gt; Funktion aufrufen&lt;br /&gt;
}&lt;br /&gt;
// verkürzt:&lt;br /&gt;
if ( ( PINA &amp;amp; 0x01 ) != 0 ) {&lt;br /&gt;
  test1();&lt;br /&gt;
}&lt;br /&gt;
// nochmals verkürzt:&lt;br /&gt;
if ( PINA &amp;amp; 0x01 ) {&lt;br /&gt;
  test1();&lt;br /&gt;
}&lt;br /&gt;
// mit definierter Bitnummer:&lt;br /&gt;
if ( PINA &amp;amp; ( 1 &amp;lt;&amp;lt; MEINBIT0 ) ) {&lt;br /&gt;
  test1();&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// Funktion aufrufen, wenn Bit 0 und/oder Bit 2 gesetzt ist. (Bit 0 und 2 also Wert 5) &lt;br /&gt;
// (Bedenke: Bit 0 hat Wert 1, Bit 1 hat Wert 2 und Bit 2 hat Wert 4)&lt;br /&gt;
if ( PINA &amp;amp; 0x05 ) {&lt;br /&gt;
  test1();  // Vergleich &amp;lt;&amp;gt; 0 (wahr), also mindestens eines der Bits gesetzt&lt;br /&gt;
}&lt;br /&gt;
// mit definierten Bitnummern:&lt;br /&gt;
if ( PINA &amp;amp; ( ( 1 &amp;lt;&amp;lt; MEINBIT0 ) | ( 1 &amp;lt;&amp;lt; MEINBIT2 ) ) ) {&lt;br /&gt;
  test1();&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// Funktion aufrufen, wenn Bit 0 und Bit 2 gesetzt sind&lt;br /&gt;
if ( ( PINA &amp;amp; 0x05 ) == 0x05 ) {  // nur wahr, wenn beide Bits gesetzt&lt;br /&gt;
  test1();&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// Funktion test2() aufrufen, wenn Bit 0 gelöscht (0) ist&lt;br /&gt;
i = PINA;        // einlesen in temporäre Variable&lt;br /&gt;
i = i &amp;amp; 0x01;    // maskieren von Bit 0&lt;br /&gt;
if ( i == 0 ) {  // Vergleich ist wahr, wenn Bit 0 nicht gesetzt ist&lt;br /&gt;
  test2();&lt;br /&gt;
}&lt;br /&gt;
// analog mit not-Operator&lt;br /&gt;
if ( !i ) {&lt;br /&gt;
  test2();&lt;br /&gt;
}&lt;br /&gt;
// nochmals verkürzt:&lt;br /&gt;
if ( !( PINA &amp;amp; 0x01 ) ) {&lt;br /&gt;
  test2();&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Warten auf einen bestimmten Zustand ==&lt;br /&gt;
&lt;br /&gt;
Es gibt in der Bibliothek avr-libc Funktionen, die warten, bis ein bestimmter Zustand eines Bits erreicht ist. Es ist allerdings normalerweise eine eher unschöne Programmiertechnik, da in diesen Funktionen &amp;quot;blockierend&amp;quot; gewartet wird. Der Programmablauf bleibt also an dieser Stelle stehen, bis das maskierte Ereignis erfolgt ist. Setzt man den [[Watchdog]] ein, muss man darauf achten, dass dieser auch noch getriggert wird (Zurücksetzen des Watchdogtimers). &lt;br /&gt;
&lt;br /&gt;
Die Funktion &#039;&#039;&#039;loop_until_bit_is_set&#039;&#039;&#039; wartet in einer Schleife, bis das definierte Bit gesetzt ist. Wenn das Bit beim Aufruf der Funktion bereits gesetzt ist, wird die Funktion sofort wieder verlassen. Das niederwertigste Bit hat die Bitnummer 0. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
#include &amp;lt;avr/io.h&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
/* Warten bis Bit Nr. 2 (das dritte Bit) in Register PINA gesetzt (1) ist */&lt;br /&gt;
&lt;br /&gt;
#define WARTEPIN PINA&lt;br /&gt;
#define WARTEBIT PA2&lt;br /&gt;
&lt;br /&gt;
// mit der avr-libc Funktion:&lt;br /&gt;
loop_until_bit_is_set(WARTEPIN, WARTEBIT);&lt;br /&gt;
&lt;br /&gt;
// dito in &amp;quot;C-Standard&amp;quot;:&lt;br /&gt;
// Durchlaufe die (leere) Schleife solange das WARTEBIT in Register WARTEPIN&lt;br /&gt;
// _nicht_ ungleich 0 (also 0) ist.&lt;br /&gt;
while ( !(WARTEPIN &amp;amp; (1 &amp;lt;&amp;lt; WARTEBIT)) ) {}&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Die Funktion &#039;&#039;&#039;loop_until_bit_is_clear&#039;&#039;&#039; wartet in einer Schleife, bis das definierte Bit gelöscht ist. Wenn das Bit beim Aufruf der Funktion bereits gelöscht ist, wird die Funktion sofort wieder verlassen.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
#include &amp;lt;avr/io.h&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
/* Warten bis Bit Nr. 4 (das fuenfte Bit) in Register PINB geloescht (0) ist */&lt;br /&gt;
#define WARTEPIN PINB&lt;br /&gt;
#define WARTEBIT PB4&lt;br /&gt;
&lt;br /&gt;
// avr-libc-Funktion:&lt;br /&gt;
loop_until_bit_is_clear(WARTEPIN, WARTEBIT);&lt;br /&gt;
&lt;br /&gt;
// dito in &amp;quot;C-Standard&amp;quot;:&lt;br /&gt;
// Durchlaufe die (leere) Schleife solange das WARTEBIT in Register WARTEPIN&lt;br /&gt;
// gesetzt (1) ist &lt;br /&gt;
while ( WARTEPIN &amp;amp; (1&amp;lt;&amp;lt;WARTEBIT) ) {}&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Universeller und auch auf andere Plattformen besser übertragbar ist die Verwendung von C-Standardoperationen.&lt;br /&gt;
&lt;br /&gt;
Siehe auch: &lt;br /&gt;
* [http://www.nongnu.org/avr-libc/user-manual/index.html Dokumentation der avr-libc] Abschnitt Modules/Special Function Registers&lt;br /&gt;
* [[Bitmanipulation]]&lt;br /&gt;
&lt;br /&gt;
== 16-Bit Register (ADC, ICR1, OCR1x, TCNT1, UBRR) ==&lt;br /&gt;
&lt;br /&gt;
Einige der Portregister in den AVR-Controllern sind 16 Bit breit. Im Datenblatt sind diese Register üblicherweise mit dem Suffix &amp;quot;L&amp;quot; (Low-Byte) und &amp;quot;H&amp;quot; (High-Byte) versehen. Die avr-libc definiert zusätzlich die meisten dieser Variablen die Bezeichnung ohne &amp;quot;L&amp;quot; oder &amp;quot;H&amp;quot;. Auf diese Register kann dann direkt zugegriffen werden. Dies ist zum Beispiel der Fall für Register wie ADC oder TCNT1.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
#include &amp;lt;avr/io.h&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
    uint16_t foo;&lt;br /&gt;
&lt;br /&gt;
    /* setzt die Wort-Variable foo auf den Wert der letzten AD-Wandlung */&lt;br /&gt;
    foo = ADC; &lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Bei anderen Registern, wie zum Beispiel Baudraten-Register, liegen High- und Low-Teil nicht direkt nebeneinander im SFR-Bereich, so dass ein 16-Bit Zugriff nicht möglich ist und der Zugriff zusammengebastelt werden muss:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
#include &amp;lt;avr/io.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
#ifndef F_CPU&lt;br /&gt;
#define F_CPU 3686400&lt;br /&gt;
#endif&lt;br /&gt;
#define UART_BAUD_RATE 9600&lt;br /&gt;
&lt;br /&gt;
...&lt;br /&gt;
   uint16_t baud = F_CPU / (UART_BAUD_RATE * 16L) -1;&lt;br /&gt;
&lt;br /&gt;
   UBRRH = (uint8_t) (baud &amp;gt;&amp;gt; 8);&lt;br /&gt;
   UBRRL = (uint8_t) baud;&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Bei einigen AVR-Typen wie ATmega8 oder ATmega16 teilen sich UBRRH und UCSRC die gleiche Speicher-Adresse. Damit der AVR trotzdem zwischen den beiden Registern unterscheiden kann, bestimmt das Bit7 (URSEL), welches Register tatsächlich beschrieben werden soll. &#039;&#039;1000 0011&#039;&#039; (0x83) adressiert demnach UCSRC und übergibt den Wert &#039;&#039;3&#039;&#039;. Und &#039;&#039;0000 0011&#039;&#039; (0x3) adressiert UBRRH und übergibt ebenfalls den Wert &#039;&#039;3&#039;&#039;. &lt;br /&gt;
&lt;br /&gt;
Speziell bei den 16-Bit-Timern und auch beim ADC ist es bei allen Zugriffen auf Datenregister erforderlich, dass diese Daten synchronisiert sind. Wenn z.&amp;amp;nbsp;B. bei einem 16-Bit-Timer das High-Byte des Zählregisters gelesen wurde und vor dem Lesezugriff auf das Low-Byte ein Überlauf des Low-Bytes stattfindet, erhält man einen völlig unsinnigen Wert. Auch die Compare-Register müssen synchron geschrieben werden, da es ansonsten zu unerwünschten Compare-Ereignissen kommen kann. &lt;br /&gt;
&lt;br /&gt;
Beim ADC besteht das Problem darin, dass zwischen den Zugriffen auf die beiden Teilregister eine Wandlung beendet werden kann und der ADC ein neues Ergebnis in ADCL und ADCH schreiben will, wodurch High- und Low-Byte nicht zusammenpassen.&lt;br /&gt;
&lt;br /&gt;
Um diese Datenmüllproduktion zu verhindern, gibt es in beiden Fällen eine Synchronisation, die jeweils durch den Zugriff auf das Low-Byte ausgelöst wird:&lt;br /&gt;
* Bei den Timer-Registern (das gilt für alle TCNT-, OCR- und ICR-Register bei den 16-Bit-Timern) wird bei einem &#039;&#039;Lesezugriff&#039;&#039; auf das Low-Byte automatisch das High-Byte in ein temporäres Register, das ansonsten nach außen nicht sichtbar ist, geschoben. Greift man nun &#039;&#039;anschließend&#039;&#039; auf das High-Byte zu, dann wird eben dieses temporäre Register gelesen.&lt;br /&gt;
* Bei einem &#039;&#039;Schreibzugriff&#039;&#039; auf eines der genannten Register wird das High-Byte in besagtem temporären Register zwischengespeichert und erst beim Schreiben des Low-Bytes werden &#039;&#039;beide&#039;&#039; gleichzeitig in das eigentliche Register übernommen.&lt;br /&gt;
&lt;br /&gt;
Das bedeutet für die Reihenfolge:&lt;br /&gt;
* Lesezugriff: Erst Low-Byte, dann High-Byte&lt;br /&gt;
* Schreibzugriff: Erst High-Byte, dann Low-Byte&lt;br /&gt;
&lt;br /&gt;
Des weiteren ist zu beachten, dass es für all diese 16-Bit-Register nur ein einziges temporäres Register gibt, so dass das Auftreten eines Interrupts, in dessen Handler ein solches Register manipuliert wird, bei einem durch ihn unterbrochenen Zugriff i.d.R. zu Datenmüll führt. 16-Bit-Zugriffe sind generell nicht atomar! Wenn mit Interrupts gearbeitet wird, kann es erforderlich sein, vor einem solchen Zugriff auf ein 16-Bit-Register die Interrupt-Bearbeitung zu deaktivieren.&lt;br /&gt;
&lt;br /&gt;
Beim ADC-Datenregister ADCH/ADCL ist die Synchronisierung anders gelöst. Hier wird beim Lesezugriff (ADCH/ADCL sind logischerweise read-only) auf das Low-Byte ADCL beide Teilregister für Zugriffe seitens des ADC so lange gesperrt, bis das High-Byte ADCH ausgelesen wurde. Dadurch kann der ADC nach einem Zugriff auf ADCL keinen neuen Wert in ADCH/ADCL ablegen, bis ADCH gelesen wurde. Ergebnisse von Wandlungen, die zwischen einem Zugriff auf ADCL und ADCH beendet werden, gehen verloren!&lt;br /&gt;
&lt;br /&gt;
Nach einem Zugriff auf ADCL muss grundsätzlich ADCH gelesen werden!&lt;br /&gt;
&lt;br /&gt;
In beiden Fällen – also sowohl bei den Timern als auch beim ADC – werden vom C-Compiler 16-Bit Pseudo-Register zur Verfügung gestellt (z.&amp;amp;nbsp;B. TCNT1H/TCNT1L → TCNT1, ADCH/ADCL → ADC bzw. ADCW), bei deren Verwendung der Compiler automatisch die richtige Zugriffsreihenfolge regelt. In C-Programmen sollten grundsätzlich diese 16-Bit-Register verwendet werden! Sollte trotzdem ein Zugriff auf ein Teilregister erforderlich sein, sind obige Angaben zu berücksichtigen.&lt;br /&gt;
&lt;br /&gt;
Es ist darauf zu achten, dass auch ein Zugriff auf die 16-Bit-Register vom Compiler in zwei 8-Bit-Zugriffe aufgeteilt wird und dementsprechend genauso nicht-atomar ist wie die Einzelzugriffe. Auch hier gilt, dass u.U. die Interrupt-Bearbeitung gesperrt werden muss, um Datenmüll zu vermeiden.&lt;br /&gt;
&lt;br /&gt;
Beim ADC gibt es für den Fall, dass eine Auflösung von 8 Bit ausreicht, die Möglichkeit, das Ergebnis &amp;quot;linksbündig&amp;quot; in ADCH/ADCL auszurichten, so dass die relevanten 8 MSB in ADCH stehen. In diesem Fall muss bzw. sollte nur ADCH ausgelesen werden.&lt;br /&gt;
&lt;br /&gt;
ADC und ADCW sind unterschiedliche Bezeichner für das selbe Registerpaar. Üblicherweise kann man in C-Programmen ADC verwenden, was analog zu den anderen 16-Bit-Registern benannt ist. ADCW (ADC Word) existiert nur deshalb, weil die Headerdateien auch für Assembler vorgesehen sind und es bereits einen Assembler-Befehl namens &#039;&#039;adc&#039;&#039; gibt. &lt;br /&gt;
&lt;br /&gt;
Im Umgang mit 16-Bit Registern siehe auch:&lt;br /&gt;
* [http://www.nongnu.org/avr-libc/user-manual/index.html Dokumentation der avr-libc] Abschnitt Related Pages/Frequently Asked Questions/Nr. 8&lt;br /&gt;
* Datenblatt Abschnitt &#039;&#039;Accessing 16-bit Registers&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== IO-Register als Parameter und Variablen ==&lt;br /&gt;
&lt;br /&gt;
Um Register als Parameter für eigene Funktionen übergeben zu können, muss man sie als einen volatile uint8_t Pointer übergeben. Zum Beispiel:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
#include &amp;lt;avr/io.h&amp;gt;&lt;br /&gt;
#include &amp;lt;util/delay.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
uint8_t key_pressed (volatile uint8_t *inputreg, uint8_t inputbit)&lt;br /&gt;
{&lt;br /&gt;
  static uint8_t last_state = 0;&lt;br /&gt;
 &lt;br /&gt;
  if (last_state == (*inputreg &amp;amp; (1&amp;lt;&amp;lt;inputbit)))&lt;br /&gt;
     return 0; /* keine Änderung */&lt;br /&gt;
 &lt;br /&gt;
  /* Wenn doch, warten bis etwaiges Prellen vorbei ist: */&lt;br /&gt;
  _delay_ms(20);&lt;br /&gt;
&lt;br /&gt;
  /* Zustand für nächsten Aufruf merken: */&lt;br /&gt;
  last_state = *inputreg &amp;amp; (1&amp;lt;&amp;lt;inputbit);&lt;br /&gt;
 &lt;br /&gt;
  /* und den entprellten Tastendruck zurückgeben: */&lt;br /&gt;
  return *inputreg &amp;amp; (1&amp;lt;&amp;lt;inputbit);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Beispiel für einen Funktionsaufruf: */&lt;br /&gt;
&lt;br /&gt;
void foo (void)&lt;br /&gt;
{&lt;br /&gt;
   uint8_t i = key_pressed (&amp;amp;PINB, PB1);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ein Aufruf der Funktion mit call by value würde Folgendes bewirken: Beim Funktionseintritt wird nur eine Kopie des momentanen Portzustandes angefertigt, die sich unabhängig vom tatsächlichen Zustand das Ports nicht mehr ändert, womit die Funktion wirkungslos wäre. Die Übergabe eines Zeigers wäre die Lösung, wenn der Compiler nicht optimieren würde. Denn dadurch wird im Programm nicht von der Hardware gelesen, sondern wieder nur von einem Abbild im Speicher. Das Ergebnis wäre das gleiche wie oben. Mit dem Schlüsselwort volatile sagt man nun dem Compiler, dass die entsprechende Variable entweder durch andere Softwareroutinen (Interrupts) oder durch die Hardware verändert werden kann.&lt;br /&gt;
&lt;br /&gt;
Siehe auch: [http://www.nongnu.org/avr-libc/user-manual/FAQ.html#faq_port_pass avr-libc FAQ: &amp;quot;How do I pass an IO port as a parameter to a function?&amp;quot;]&lt;br /&gt;
&lt;br /&gt;
= Zugriff auf IO-Ports =&lt;br /&gt;
&lt;br /&gt;
Jeder AVR implementiert eine unterschiedliche Menge an GPIO-Registern&lt;br /&gt;
(GPIO - General Purpose Input/Output). Diese Register dienen dazu:&lt;br /&gt;
* einzustellen welche der Anschlüsse (&amp;quot;Beinchen&amp;quot;) des Controllers als Ein- oder Ausgänge dienen&lt;br /&gt;
* bei Ausgängen deren Zustand festzulegen&lt;br /&gt;
* bei Eingängen deren Zustand zu erfassen&lt;br /&gt;
&lt;br /&gt;
Mittels GPIO werden digitale Zustände gesetzt und erfasst, d.h. die Spannung an einem Ausgang wird ein- oder ausgeschaltet und an einem Eingang wird erfasst, ob die anliegende Spannung über oder unter einem bestimmten Schwellwert liegt. Im Datenblatt Abschnitt Electrical Characteristics/DC Characteristics finden sich die Spannungswerte (V_OL, V_OH für Ausgänge, V_IL, V_IH für Eingänge).&lt;br /&gt;
&lt;br /&gt;
Die Verarbeitung von analogen Eingangswerten und die Ausgabe von Analogwerten wird in Kapitel [[AVR-GCC-Tutorial#Analoge_Ein-_und_Ausgabe|Analoge Ein- und Ausgabe]] behandelt.&lt;br /&gt;
&lt;br /&gt;
Die physischen Ein- und Ausgänge werden bei AVR-Controllern zu logischen Ports gruppiert.&lt;br /&gt;
&lt;br /&gt;
Alle Ports werden über Register gesteuert. Dazu sind jedem Port 3 Register zugeordnet:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|- &lt;br /&gt;
! DDRx&lt;br /&gt;
| Datenrichtungsregister für Port&#039;&#039;&#039;x&#039;&#039;&#039;. &lt;br /&gt;
&#039;&#039;&#039;x&#039;&#039;&#039; entspricht &#039;&#039;&#039;A&#039;&#039;&#039;, &#039;&#039;&#039;B&#039;&#039;&#039;, &#039;&#039;&#039; C&#039;&#039;&#039;, &#039;&#039;&#039;D&#039;&#039;&#039; usw. (abhängig von der Anzahl der Ports des verwendeten AVR). Bit im Register gesetzt (1) für Ausgang, Bit gelöscht (0) für Eingang.&lt;br /&gt;
|- &lt;br /&gt;
! PINx&lt;br /&gt;
| Eingangsadresse für Port&#039;&#039;&#039;x&#039;&#039;&#039;. &lt;br /&gt;
Zustand des Ports. Die Bits in PINx entsprechen dem Zustand der als Eingang definierten Portpins. Bit 1 wenn Pin &amp;quot;high&amp;quot;, Bit 0 wenn Portpin low.&lt;br /&gt;
|-&lt;br /&gt;
! PORTx&lt;br /&gt;
| Datenregister für Port&#039;&#039;&#039;x&#039;&#039;&#039;. &lt;br /&gt;
Dieses Register wird verwendet, um die Ausgänge eines Ports anzusteuern. Bei Pins, die mittels DDRx auf Eingang geschaltet wurden, können über PORTx&lt;br /&gt;
die internen Pull-Up Widerstände aktiviert oder deaktiviert werden (1 = aktiv).&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Die folgenden Beispiele gehen von einem AVR aus, der sowohl Port A als auch Port B besitzt. Sie müssen für andere AVRs (zum Beispiel ATmega8/48/88/168) entsprechend angepasst werden.&lt;br /&gt;
&lt;br /&gt;
== Datenrichtung bestimmen ==&lt;br /&gt;
&lt;br /&gt;
Zuerst muss die Datenrichtung der verwendeten Pins bestimmt werden. Um dies zu erreichen, wird das Datenrichtungsregister des entsprechenden Ports beschrieben.&lt;br /&gt;
&lt;br /&gt;
Für jeden Pin, der als Ausgang verwendet werden soll, muss dabei das&lt;br /&gt;
entsprechende Bit auf dem Port gesetzt werden. Soll der Pin als Eingang&lt;br /&gt;
verwendet werden, muss das entsprechende Bit gelöscht sein.&lt;br /&gt;
&lt;br /&gt;
Beispiel:&lt;br /&gt;
Angenommen am Port B sollen die Pins 0 bis 4 als Ausgänge definiert werden, die noch verbleibenden Pins 5 bis 7 sollen als Eingänge fungieren. Dazu ist es daher notwendig, im für das Port B zuständigen Datenrichtungsregister DDRB folgende Bitkonfiguration einzutragen&lt;br /&gt;
&lt;br /&gt;
   +---+---+---+---+---+---+---+---+&lt;br /&gt;
   | 0 | 0 | 0 | 1 | 1 | 1 | 1 | 1 |&lt;br /&gt;
   +---+---+---+---+---+---+---+---+&lt;br /&gt;
   | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |&lt;br /&gt;
&lt;br /&gt;
In C liest sich das dann so:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
// in io.h wird u.a. DDRB definiert:&lt;br /&gt;
#include &amp;lt;avr/io.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
int main()&lt;br /&gt;
{&lt;br /&gt;
  // Setzen der Bits 0,1,2,3 und 4&lt;br /&gt;
  // Binär 00011111 = Hexadezimal 1F&lt;br /&gt;
  // direkte Zuweisung - standardkonform */&lt;br /&gt;
  DDRB = 0x1F;    /* &lt;br /&gt;
&lt;br /&gt;
  // übersichtliche Alternative - Binärschreibweise, aber kein ISO-C&lt;br /&gt;
  DDRB = 0b00011111;&lt;br /&gt;
&lt;br /&gt;
  // Ausführliche Schreibweise: identische Funktionalität, mehr Tipparbeit&lt;br /&gt;
  // aber übersichtlicher und selbsterklärend:&lt;br /&gt;
  DDRB |= (1 &amp;lt;&amp;lt; DDB0) | (1 &amp;lt;&amp;lt; DDB1) | (1 &amp;lt;&amp;lt; DDB2) | (1 &amp;lt;&amp;lt; DDB3) | (1 &amp;lt;&amp;lt; DDB4); &lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die Pins 5 bis 7 werden (da 0) als Eingänge geschaltet. Weitere Beispiele:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
  // Alle Pins des Ports B als Ausgang definieren:&lt;br /&gt;
  DDRB = 0xff; &lt;br /&gt;
  // Pin0 wieder auf Eingang und andere im ursprünglichen Zustand belassen:&lt;br /&gt;
  DDRB &amp;amp;= ~(1 &amp;lt;&amp;lt; DDB0);&lt;br /&gt;
  // Pin 3 und 4 auf Eingang und andere im ursprünglichen Zustand belassen:&lt;br /&gt;
  DDRB &amp;amp;= ~((1 &amp;lt;&amp;lt; DDB3) | (1 &amp;lt;&amp;lt; DDB4));&lt;br /&gt;
  // Pin 0 und 3 wieder auf Ausgang und andere im ursprünglichen Zustand belassen:&lt;br /&gt;
  DDRB |= (1 &amp;lt;&amp;lt; DDB0) | (1 &amp;lt;&amp;lt; DDB3);&lt;br /&gt;
  // Alle Pins auf Eingang:&lt;br /&gt;
  DDRB = 0x00;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Vordefinierte Bitnummern für I/O-Register ==&lt;br /&gt;
&lt;br /&gt;
Die Bitnummern (z.&amp;amp;nbsp;B. PCx, PINCx und DDCx für den Port C) sind in den io*.h-Dateien der avr-libc definiert und dienen lediglich der besseren Lesbarkeit. Man muss diese Definitionen nicht verwenden oder kann auch einfach &amp;quot;immer&amp;quot; PAx, PBx, PCx usw. nutzen, auch wenn der Zugriff auf Bits in DDRx- oder PINx-Registern erfolgt. Für den Compiler sind die Ausdrücke (1&amp;lt;&amp;lt;PC7), (1&amp;lt;&amp;lt;DDC7) und (1&amp;lt;&amp;lt;PINC7) identisch zu (1&amp;lt;&amp;lt;7) (genauer: der Präprozessor ersetzt die Ausdrücke (1&amp;lt;&amp;lt;PC7),... zu (1&amp;lt;&amp;lt;7)). Ein Ausschnitt der Definitionen für Port C eines ATmega32 aus der iom32.h-Datei zur Verdeutlichung (analog für die weiteren Ports):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
/* PORTC */&lt;br /&gt;
#define PC7     7&lt;br /&gt;
#define PC6     6&lt;br /&gt;
#define PC5     5&lt;br /&gt;
#define PC4     4&lt;br /&gt;
#define PC3     3&lt;br /&gt;
#define PC2     2&lt;br /&gt;
#define PC1     1&lt;br /&gt;
#define PC0     0&lt;br /&gt;
&lt;br /&gt;
/* DDRC */&lt;br /&gt;
#define DDC7    7&lt;br /&gt;
#define DDC6    6&lt;br /&gt;
#define DDC5    5&lt;br /&gt;
#define DDC4    4&lt;br /&gt;
#define DDC3    3&lt;br /&gt;
#define DDC2    2&lt;br /&gt;
#define DDC1    1&lt;br /&gt;
#define DDC0    0&lt;br /&gt;
&lt;br /&gt;
/* PINC */&lt;br /&gt;
#define PINC7   7&lt;br /&gt;
#define PINC6   6&lt;br /&gt;
#define PINC5   5&lt;br /&gt;
#define PINC4   4&lt;br /&gt;
#define PINC3   3&lt;br /&gt;
#define PINC2   2&lt;br /&gt;
#define PINC1   1&lt;br /&gt;
#define PINC0   0&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Digitale Signale ==&lt;br /&gt;
&lt;br /&gt;
Am einfachsten ist es, digitale Signale mit dem Mikrocontroller zu erfassen bzw. auszugeben.&lt;br /&gt;
&lt;br /&gt;
== Ausgänge ==&lt;br /&gt;
Will man als Ausgang definierte Pins (entsprechende DDRx-Bits = 1) auf Logisch 1 setzen, setzt man die  entsprechenden Bits im Portregister.&lt;br /&gt;
&lt;br /&gt;
Mit dem Befehl&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
#include &amp;lt;avr/io.h&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
    PORTB = 0x04; /* besser PORTB=(1&amp;lt;&amp;lt;PB2) */&lt;br /&gt;
&lt;br /&gt;
    // übersichtliche Alternative - Binärschreibweise&lt;br /&gt;
    PORTB = 0b00000100;    /* direkte Zuweisung - übersichtlich */&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
wird also der Ausgang an Pin PB2 gesetzt (Beachte, dass die Bits immer &#039;&#039;von 0 an&#039;&#039; gezählt werden, das niederwertigste Bit ist also Bitnummer 0 und nicht etwa Bitnummer 1).&lt;br /&gt;
&lt;br /&gt;
Man beachte, dass bei der Zuweisung mittels &#039;&#039;&#039;=&#039;&#039;&#039; immer alle Pins gleichzeitig angegeben werden. Man sollte also, wenn nur bestimmte Ausgänge geschaltet werden sollen, zuerst den aktuellen Wert des Ports einlesen und das Bit des gewünschten Ports in diesen Wert einfließen lassen. Will man also nur den dritten Pin (Bit Nr. 2) an Port B auf &amp;quot;high&amp;quot; setzen und den Status der anderen Ausgänge unverändert lassen, nutze man diese Form:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
#include &amp;lt;avr/io.h&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
    PORTB = PORTB | 0x04; /* besser: PORTB = PORTB | ( 1&amp;lt;&amp;lt;PB2 ) */&lt;br /&gt;
    /* vereinfacht durch Nutzung des |= Operators : */&lt;br /&gt;
    PORTB |= (1&amp;lt;&amp;lt;PB2);&lt;br /&gt;
&lt;br /&gt;
    /* auch mehrere &amp;quot;gleichzeitig&amp;quot;: */&lt;br /&gt;
    PORTB |= (1&amp;lt;&amp;lt;PB4) | (1&amp;lt;&amp;lt;PB5); /* Pins PB4 und PB5 &amp;quot;high&amp;quot; */&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;quot;Ausschalten&amp;quot;, also  Ausgänge auf &amp;quot;low&amp;quot; setzen, erfolgt analog:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
#include &amp;lt;avr/io.h&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
    PORTB &amp;amp;= ~(1&amp;lt;&amp;lt;PB2); /* löscht Bit 2 in PORTB und setzt damit Pin PB2 auf low */ &lt;br /&gt;
    PORTB &amp;amp;= ~( (1&amp;lt;&amp;lt;PB4) | (1&amp;lt;&amp;lt;PB5) ); /* Pin PB4 und Pin PB5 &amp;quot;low&amp;quot; */&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Siehe auch [[Bitmanipulation]]&lt;br /&gt;
&lt;br /&gt;
In Quellcodes, die für ältere Version den des avr-gcc/der avr-libc entwickelt wurden, werden einzelne Bits mittels der Funktionen sbi und cbi gesetzt bzw. gelöscht. Beide Funktionen sind in aktuellen Versionen der avr-libc nicht mehr enthalten und auch nicht mehr erforderlich.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Falls der Anfangszustand von Ausgängen kritisch ist, muss die Reihenfolge beachtet werden, mit der die Datenrichtung (DDRx) eingestellt und der Ausgabewert (PORTx) gesetzt wird:&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Für Ausgangspins, die mit Anfangswert &amp;quot;high&amp;quot; initialisiert werden sollen:&lt;br /&gt;
* zuerst die Bits im PORTx-Register setzen&lt;br /&gt;
* anschließend die Datenrichtung auf Ausgang stellen&lt;br /&gt;
&lt;br /&gt;
Daraus ergibt sich die Abfolge für einen Pin, der bisher als Eingang mit abgeschaltetem Pull-Up konfiguriert war:&lt;br /&gt;
* setze PORTx: interner Pull-Up aktiv&lt;br /&gt;
* setze DDRx: Ausgang (&amp;quot;high&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
Bei der Reihenfolge erst DDRx und dann PORTx kann es zu einem kurzen &amp;quot;low-Puls&amp;quot; kommen, der auch externe Pull-Up-Widerstände &amp;quot;überstimmt&amp;quot;. Die (ungünstige) Abfolge: Eingang -&amp;gt; setze DDRx: Ausgang (auf &amp;quot;low&amp;quot;, da PORTx nach Reset 0) -&amp;gt; setze PORTx: Ausgang auf high. Vergleiche dazu auch das Datenblatt Abschnitt &#039;&#039;Configuring the Pin&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
== Eingänge (Wie kommen Signale in den &amp;amp;micro;C) ==&lt;br /&gt;
&lt;br /&gt;
Die digitalen Eingangssignale können auf verschiedene Arten zu unserer Logik gelangen.&lt;br /&gt;
&lt;br /&gt;
=== Signalkopplung ===&lt;br /&gt;
&lt;br /&gt;
Am einfachsten ist es, wenn die Signale direkt aus einer anderen digitalen Schaltung übernommen werden können. Hat der Ausgang der entsprechenden Schaltung TTL-Pegel dann können wir sogar direkt den Ausgang der Schaltung mit einem Eingangspin von unserem Controller verbinden.&lt;br /&gt;
&lt;br /&gt;
Hat der Ausgang der anderen Schaltung keinen TTL-Pegel so müssen wir den Pegel über entsprechende Hardware (z.&amp;amp;nbsp;B. Optokoppler, [[Widerstand#Spannungsteiler|Spannungsteiler]], &amp;quot;Levelshifter&amp;quot; aka [[Pegelwandler]]) anpassen.&lt;br /&gt;
&lt;br /&gt;
Die Masse der beiden Schaltungen muss selbstverständlich miteinander verbunden werden. Der Software selber ist es natürlich letztendlich egal, wie das Signal eingespeist wird. Wir können ja ohnehin lediglich prüfen, ob an einem Pin unseres Controllers eine logische 1 (Spannung größer ca. 0,7*Vcc) oder eine logische 0 (Spannung kleiner ca. 0,2*Vcc) anliegt. Detaillierte Informationen darüber, ab welcher Spannung ein Eingang als 0 (&amp;quot;low&amp;quot;) bzw. 1 (&amp;quot;high&amp;quot;) erkannt wird, liefert die Tabelle DC Characteristics im Datenblatt des genutzten Controllers.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align:center&amp;quot;&lt;br /&gt;
|+ &#039;&#039;&#039;Spannungstabelle&#039;&#039;&#039; &amp;lt;br /&amp;gt; &amp;lt;small&amp;gt;(ca. Grenzwerte)&amp;lt;/small&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
! Low || High&lt;br /&gt;
|-&lt;br /&gt;
! bei 5 V&lt;br /&gt;
| 1 V || 3,5 V&lt;br /&gt;
|-&lt;br /&gt;
! bei 3,3 V&lt;br /&gt;
| 0,66 V || 2,31 V&lt;br /&gt;
|-&lt;br /&gt;
! bei 1,8 V&lt;br /&gt;
| 0,36 V || 1,26 V&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Die Abfrage der Zustände der Portpins erfolgt direkt über den Registernamen.&lt;br /&gt;
&lt;br /&gt;
{{Warnung|Dabei ist wichtig, zur Abfrage der Eingänge &#039;&#039;nicht&#039;&#039; etwa Portregister &#039;&#039;&#039;PORTx&#039;&#039;&#039; zu verwenden, sondern Eingangsregister &#039;&#039;&#039;PINx&#039;&#039;&#039;. Ansonsten liest man nicht den Zustand der Eingänge, sondern den Status der internen Pull-Up-Widerstände. Die Abfrage der Pinzustände über PORTx statt PINx ist ein häufiger Fehler beim AVR-&amp;quot;Erstkontakt&amp;quot;.}}&lt;br /&gt;
&lt;br /&gt;
Will man also die aktuellen Signalzustände von Port D abfragen und in eine Variable namens bPortD abspeichern, schreibt man folgende Befehlszeilen:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
#include &amp;lt;avr/io.h&amp;gt;&lt;br /&gt;
#include &amp;lt;stdint.h&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
uint8_t bPortD;&lt;br /&gt;
...&lt;br /&gt;
bPortD = PIND;&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Mit den C-Bitoperationen kann man den Status der Bits abfragen.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
#include &amp;lt;avr/io.h&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
/* Fuehre Aktion aus, wenn Bit Nr. 1 (das &amp;quot;zweite&amp;quot; Bit) in PINC gesetzt (1) ist */&lt;br /&gt;
if ( PINC &amp;amp; (1&amp;lt;&amp;lt;PINC1) ) {&lt;br /&gt;
  /* Aktion */&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Fuehre Aktion aus, wenn Bit Nr. 2 (das &amp;quot;dritte&amp;quot; Bit) in PINB geloescht (0) ist */&lt;br /&gt;
if ( !(PINB &amp;amp; (1&amp;lt;&amp;lt;PINB2)) ) {&lt;br /&gt;
  /* Aktion */&lt;br /&gt;
}&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Siehe auch [[Bitmanipulation#Bits_prüfen]]&lt;br /&gt;
&lt;br /&gt;
=== Interne Pull-Up Widerstände ===&lt;br /&gt;
&lt;br /&gt;
Portpins für Ein- und Ausgänge (GPIO) eines AVR verfügen über zuschaltbare interne Pull-Up Widerstände (nominal mehrere 10kOhm, z.&amp;amp;nbsp;B. ATmega16 20-50kOhm). Diese können in vielen Fällen statt externer Widerstände genutzt werden.&lt;br /&gt;
&lt;br /&gt;
Die internen Pull-Up Widerstände von Vcc zu den einzelnen Portpins werden über das Register &#039;&#039;&#039; PORTx&#039;&#039;&#039; aktiviert bzw. deaktiviert, wenn ein Pin als &#039;&#039;&#039; Eingang&#039;&#039;&#039; geschaltet ist.&lt;br /&gt;
&lt;br /&gt;
Wird der Wert des entsprechenden Portpins auf 1 gesetzt, so ist der Pull-Up Widerstand aktiviert. Bei einem Wert von 0 ist der Pull-Up Widerstand nicht aktiv. Man sollte jeweils entweder den internen oder einen externen Pull-Up Widerstand verwenden, aber nicht beide zusammen.&lt;br /&gt;
&lt;br /&gt;
Im Beispiel werden alle Pins des Ports D als Eingänge geschaltet und alle Pull-Up Widerstände aktiviert. Weiterhin wird Pin PC7 als Eingang geschaltet und dessen interner Pull-Up Widerstand aktiviert, ohne die Einstellungen für die anderen Portpins (PC0-PC6) zu verändern.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
#include &amp;lt;avr/io.h&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
DDRD  = 0x00; /* alle Pins von Port D als Eingang */&lt;br /&gt;
PORTD = 0xff; /* interne Pull-Ups an allen Port-Pins aktivieren */&lt;br /&gt;
...&lt;br /&gt;
DDRC  &amp;amp;= ~(1&amp;lt;&amp;lt;PC7);  /* Pin PC7 als Eingang */&lt;br /&gt;
PORTC |= (1&amp;lt;&amp;lt;PC7);    /* internen Pull-Up an PC7 aktivieren */&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Taster und Schalter ===&lt;br /&gt;
&lt;br /&gt;
Der Anschluss mechanischer Kontakte an den Mikrocontroller, ist zwischen zwei unterschiedliche Methoden zu unterscheiden: &#039;&#039;Active Low&#039;&#039; und &#039;&#039;Active High&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery widths=&amp;quot;300&amp;quot; heights=&amp;quot;300&amp;quot; caption=&amp;quot;Anschluss mechanischer Kontakte an einen µC&amp;quot;&amp;gt;&lt;br /&gt;
Image:Active Low.gif|&#039;&#039;&#039;Active Low:&#039;&#039;&#039; Bei dieser Methode wird der Kontakt zwischen den Eingangspin des Controllers und Masse geschaltet. Damit bei offenem Schalter der Controller kein undefiniertes Signal bekommt, wird zwischen die Versorgungsspannung und den Eingangspin ein sogenannter &#039;&#039;&#039;Pull-Up&#039;&#039;&#039; Widerstand geschaltet. Dieser dient dazu, den Pegel bei geöffnetem Schalter auf logisch 1 zu ziehen.&lt;br /&gt;
Image:Active High.gif|&#039;&#039;&#039;Active High:&#039;&#039;&#039; Hier wird der Kontakt zwischen die Versorgungsspannung und den Eingangspin geschaltet. Damit bei offener Schalterstellung kein undefiniertes Signal am Controller ansteht, wird zwischen den Eingangspin und die Masse ein &#039;&#039;&#039;Pull-Down&#039;&#039;&#039; Widerstand geschaltet. Dieser dient dazu, den Pegel bei geöffneter Schalterstellung auf logisch 0 zu halten. &lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Der Widerstandswert von Pull-Up- und Pull-Down-Widerständen ist an sich nicht kritisch. Wird er allerdings zu hoch gewählt, ist die Wirkung eventuell nicht gegeben. Als üblicher Wert haben sich 10 kOhm eingebürgert. Die AVRs verfügen an den meisten Pins über zuschaltbare interne Pull-Up Widerstände (vgl. Abschnitt [[AVR-GCC-Tutorial#Interne Pull-Up Widerstände|Interne Pull-Up Widerstände]]), welche insbesondere wie hier bei Tastern und ähnlichen Bauteilen (z.&amp;amp;nbsp;B. Drehgebern) statt externer Bauteile verwendet werden können. Interne Pull-Down-Widerstand sind nicht verfügbar und müssen daher in Form zusätzlicher Bauteile in die Schaltung eingefügt werden.&lt;br /&gt;
&lt;br /&gt;
==== Taster entprellen ====&lt;br /&gt;
&lt;br /&gt;
Siehe: &#039;&#039;[[Entprellung#Warteschleifen-Verfahren|Entprellung: Warteschleifen-Verfahren]]&lt;br /&gt;
&lt;br /&gt;
= Warteschleifen (delay.h) =&lt;br /&gt;
&lt;br /&gt;
Der Programmablauf kann verschiedene Arten von Wartefunktionen erfordern:&lt;br /&gt;
&lt;br /&gt;
* Warten im Sinn von Zeitvertrödeln&lt;br /&gt;
* Warten auf einen bestimmten Zustand an den I/O-Pins&lt;br /&gt;
* Warten auf einen bestimmten Zeitpunkt (siehe Timer)&lt;br /&gt;
* Warten auf einen bestimmten Zählerstand (siehe Counter)&lt;br /&gt;
&lt;br /&gt;
Der einfachste Fall, das Zeitvertrödeln, kann in vielen Fällen und mit großer Genauigkeit anhand der avr-libc Bibliotheksfunktionen _delay_ms() und _delay_us() erledigt werden. Die Bibliotheksfunktionen sind einfachen Zählschleifen (Warteschleifen) vorzuziehen, da leere Zählschleifen ohne besondere Vorkehrungen sonst bei eingeschalteter Optimierung vom avr-gcc-Compiler wegoptimiert werden. Weiterhin sind die Bibliotheksfunktionen bereits darauf vorbereitet, die in F_CPU definierte Taktfrequenz zu verwenden. Außerdem sind die Funktionen der Bibliothek wirklich getestet.&lt;br /&gt;
&lt;br /&gt;
Einfach!? Schon, aber während gewartet wird, macht der µC nichts anderes mehr (abgesehen von möglicherweise auftretenden Interrupts, falls welche aktiviert sind). Die Wartefunktion blockiert den Programmablauf. Möchte man einerseits warten, um z.&amp;amp;nbsp;B. eine LED blinken zu lassen und gleichzeitig andere Aktionen ausführen z.&amp;amp;nbsp;B. weitere LED bedienen, sollten die Timer/Counter des AVR verwendet werden.&lt;br /&gt;
&lt;br /&gt;
Die Bibliotheksfunktionen funktionieren allerdings nur dann korrekt, wenn sie mit zur Übersetzungszeit (beim Compilieren) bekannten konstanten Werten aufgerufen werden. Der Quellcode muss mit eingeschalteter Optimierung übersetzt werden, sonst wird sehr viel Maschinencode erzeugt, und die Wartezeiten stimmen nicht mehr mit dem Parameter überein.&lt;br /&gt;
&lt;br /&gt;
Eine weitere Einschränkung liegt darin, daß sie möglicherweise länger warten, als erwartet, nämlich in dem Fall, daß Interrupts auftreten und die _delay...()-Funktion unterbrechen. Genau genommen warten diese nämlich nicht eine bestimmte Zeit, sondern verbrauchen eine bestimmte Anzahl von Prozessortakten. Die wiederum ist so bemessen, daß ohne Unterbrechung durch Interrupts die gewünschte Wartezeit erreicht wird.&lt;br /&gt;
Wird das Warten aber durch eine oder mehrere ISR unterbrochen, die zusammen 1% Prozessorzeit verbrauchen, dann dauert das Warten etwa 1% länger. Bei 50% Last durch die ISR dauert das Warten doppelt solange wie gewünscht, bei 90% zehnmal solange...&lt;br /&gt;
&lt;br /&gt;
Abhängig von der Version der Bibliothek verhalten sich die Bibliotheksfunktionen etwas unterschiedlich.&lt;br /&gt;
&lt;br /&gt;
== avr-libc Versionen bis 1.6 ==&lt;br /&gt;
&lt;br /&gt;
Die Wartezeit der Funktion _delay_ms() ist auf 262,14ms/F_CPU (in MHz) begrenzt, d.h. bei 20 MHz kann man nur max. 13,1ms warten. Die Wartezeit der Funktion _delay_us() ist auf 768us/F_CPU (in MHz) begrenzt, d.h. bei 20 MHz kann man nur max. 38,4µs warten. Längere Wartezeiten müssen dann über einen mehrfachen Aufruf in einer Schleife gelöst werden.&lt;br /&gt;
&lt;br /&gt;
Beispiel: Blinken einer LED an PORTB Pin PB0 im ca. 1s Rhythmus&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
#include &amp;lt;avr/io.h&amp;gt;&lt;br /&gt;
#ifndef F_CPU&lt;br /&gt;
/* Definiere F_CPU, wenn F_CPU nicht bereits vorher definiert &lt;br /&gt;
   (z.&amp;amp;nbsp;B. durch Übergabe als Parameter zum Compiler innerhalb &lt;br /&gt;
   des Makefiles). Zusätzlich Ausgabe einer Warnung, die auf die&lt;br /&gt;
   &amp;quot;nachträgliche&amp;quot; Definition hinweist */&lt;br /&gt;
#warning &amp;quot;F_CPU war noch nicht definiert, wird nun mit 3686400 definiert&amp;quot;&lt;br /&gt;
#define F_CPU 3686400UL     /* Quarz mit 3.6864 Mhz */&lt;br /&gt;
#endif&lt;br /&gt;
#include &amp;lt;util/delay.h&amp;gt;     /* in älteren avr-libc Versionen &amp;lt;avr/delay.h&amp;gt; */ &lt;br /&gt;
&lt;br /&gt;
/*&lt;br /&gt;
 lange, variable Verzögerungszeit, Einheit in Millisekunden&lt;br /&gt;
&lt;br /&gt;
Die maximale Zeit pro Funktionsaufruf ist begrenzt auf &lt;br /&gt;
262.14 ms / F_CPU in MHz (im Beispiel: &lt;br /&gt;
262.1 / 3.6864 = max. 71 ms) &lt;br /&gt;
&lt;br /&gt;
Daher wird die kleine Warteschleife mehrfach aufgerufen,&lt;br /&gt;
um auf eine längere Wartezeit zu kommen. Die zusätzliche &lt;br /&gt;
Prüfung der Schleifenbedingung lässt die Wartezeit geringfügig&lt;br /&gt;
ungenau werden (macht hier vielleicht 2-3ms aus).&lt;br /&gt;
*/&lt;br /&gt;
&lt;br /&gt;
void long_delay(uint16_t ms)&lt;br /&gt;
{&lt;br /&gt;
    for(; ms&amp;gt;0; ms--) _delay_ms(1);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
int main( void )&lt;br /&gt;
{&lt;br /&gt;
    DDRB = ( 1 &amp;lt;&amp;lt; PB0 );        // PB0 an PORTB als Ausgang setzen&lt;br /&gt;
&lt;br /&gt;
    while( 1 )                  // Endlosschleife&lt;br /&gt;
    {                &lt;br /&gt;
        PORTB ^= ( 1 &amp;lt;&amp;lt; PB0 );  // Toggle PB0 z.&amp;amp;nbsp;B. angeschlossene LED&lt;br /&gt;
        long_delay(1000);       // Eine Sekunde warten...&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    return 0;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== avr-libc Versionen ab 1.7 ==&lt;br /&gt;
&lt;br /&gt;
_delay_ms() kann mit einem Argument bis 6553,5 ms (= 6,5535 Sekunden) benutzt werden. Es ist nicht möglich, eine Variable als Argument zu übergeben. Wird die früher gültige Grenze von 262,14 ms/F_CPU (in MHz) überschritten, so arbeitet _delay_ms() einfach etwas ungenauer und zählt nur noch mit einer Auflösung von 1/10 ms. Eine Verzögerung von 1000,10 ms ließe sich nicht mehr von einer von 1000,19 ms unterscheiden. Ein Verlust, der sich im Allgemeinen verschmerzen lässt. Dem Programmierer wird keine Rückmeldung gegeben, dass die Funktion ggf. gröber arbeitet, d.h. wenn es darauf ankommt, bitte den Parameter wie bisher geschickt wählen.&lt;br /&gt;
&lt;br /&gt;
Die Funktion _delay_us() wurde ebenfalls erweitert. Wenn deren maximal als genau behandelbares Argument überschritten wird, benutzt diese intern _delay_ms(). Damit gelten in diesem Fall die _delay_ms() Einschränkungen.&lt;br /&gt;
&lt;br /&gt;
Beispiel: Blinken einer LED an PORTB Pin PB0 im ca. 1s Rhythmus, avr-libc ab Version 1.6&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
#include &amp;lt;avr/io.h&amp;gt;&lt;br /&gt;
#ifndef F_CPU&lt;br /&gt;
/* Definiere F_CPU, wenn F_CPU nicht bereits vorher definiert &lt;br /&gt;
   (z.B. durch Übergabe als Parameter zum Compiler innerhalb &lt;br /&gt;
   des Makefiles). Zusätzlich Ausgabe einer Warnung, die auf die&lt;br /&gt;
   &amp;quot;nachträgliche&amp;quot; Definition hinweist */&lt;br /&gt;
#warning &amp;quot;F_CPU war noch nicht definiert, wird nun mit 3686400 definiert&amp;quot;&lt;br /&gt;
#define F_CPU 3686400UL     /* Quarz mit 3.6864 Mhz */&lt;br /&gt;
#endif&lt;br /&gt;
#include &amp;lt;util/delay.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
int main( void )&lt;br /&gt;
{&lt;br /&gt;
    DDRB = ( 1 &amp;lt;&amp;lt; PB0 );        // PB0 an PORTB als Ausgang setzen&lt;br /&gt;
&lt;br /&gt;
    while( 1 ) {                // Endlosschleife&lt;br /&gt;
        PORTB ^= ( 1 &amp;lt;&amp;lt; PB0 );  // Toggle PB0 z.B. angeschlossene LED&lt;br /&gt;
        _delay_ms(1000);        // Eine Sekunde +/-1/10000 Sekunde warten...&lt;br /&gt;
                                // funktioniert nicht mit Bibliotheken vor 1.6&lt;br /&gt;
&lt;br /&gt;
    }&lt;br /&gt;
    return 0;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Trick zur Übergabe einer Variablen an _delay_ms():&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
#include &amp;lt;avr/io.h&amp;gt;&lt;br /&gt;
#ifndef F_CPU&lt;br /&gt;
#warning &amp;quot;F_CPU war noch nicht definiert, wird nun mit 3686400 definiert&amp;quot;&lt;br /&gt;
#define F_CPU 3686400UL     /* Quarz mit 3.6864 Mhz */&lt;br /&gt;
#endif&lt;br /&gt;
#include &amp;lt;util/delay.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
void sleep ( uint8_t ms )&lt;br /&gt;
{&lt;br /&gt;
    for(; ms &amp;gt; 0; ms--) _delay_ms(1);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
int main( void )&lt;br /&gt;
{&lt;br /&gt;
    int x = 0;                  // Variable als Wartezeit erstellen&lt;br /&gt;
    DDRB = ( 1 &amp;lt;&amp;lt; PB0 );        // PB0 an PORTB als Ausgang setzen&lt;br /&gt;
&lt;br /&gt;
    while( 1 ) {                // Endlosschleife&lt;br /&gt;
        PORTB ^= ( 1 &amp;lt;&amp;lt; PB0 );  // Toggle PB0 z.B. angeschlossene LED&lt;br /&gt;
        sleep(x); &lt;br /&gt;
        x++;       &lt;br /&gt;
    }&lt;br /&gt;
    return 0;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Die _delay_ms() und die _delay_us aus &#039;&#039;&#039;avr-libc 1.7.0&#039;&#039;&#039; sind fehlerhaft. _delay_ms () läuft 4x schneller als erwartet. Abhilfe ist eine korrigierte Includedatei: [http://www.mikrocontroller.net/topic/196738#1943039]&lt;br /&gt;
&lt;br /&gt;
= Programmieren mit Interrupts =&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;float:right; margin:2em;&amp;quot;&amp;gt;&lt;br /&gt;
[[Image:Interrupt Programme.gif]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
Nachdem wir nun alles Wissenswerte für die serielle Programmerstellung&lt;br /&gt;
gelernt haben nehmen wir jetzt ein völlig anderes Thema in Angriff, nämlich&lt;br /&gt;
die Programmierung unter Zuhilfenahme der Interrupts des AVR.&lt;br /&gt;
&lt;br /&gt;
Tritt ein Interrupt auf, unterbricht (engl. interrupts) der Controller die Verarbeitung des Hauptprogramms und verzweigt zu einer Interruptroutine. Das Hauptprogramm wird also beim Eintreffen eines Interrupts unterbrochen, die Interruptroutine ausgeführt und danach erst wieder das Hauptprogramm an der Unterbrechungsstelle fortgesetzt (vgl. die Abbildung).&lt;br /&gt;
&lt;br /&gt;
Um Interrupts verarbeiten zu können, ist folgendes zu beachten:&lt;br /&gt;
&lt;br /&gt;
* Für jede aktivierte Interruptquelle ist eine Funktion zu programmieren, in der die beim Auftreten des jeweiligen Interrupts erforderlichen Verarbeitungsschritte enthalten sind. Für diese Funktion existieren verschiedene Bezeichnungen. Üblich sind die englischen Begriffe Interrupt-Handler oder Interrupt-Service-Routinen (ISR), man findet aber auch die Bezeichnungen Interruptverarbeitungs- oder -behandlungsroutine oder auch kurz Interruptroutine. Zum Beispiel wird üblicherweise in der ISR zur Verarbeitung des Empfangsinterrupts eines UARTs (UART-RX Interrupt) das empfangene Zeichen in einen Zwischenspeicher (FIFO-Buffer) kopiert, dessen Inhalt später von anderen Programmteilen geleert wird. Sofern der Zwischenspeicher ausreichend groß ist, geht also kein Zeichen verloren, auch wenn im Hauptprogramm zeitintensive Operationen durchgeführt werden.&lt;br /&gt;
* Die benötigten Interrupts sind in den jeweiligen Funktionsbausteinen einzuschalten. Dies erfolgt über das jeweilige Aktivierungsbit (Interrupt Enable) in einem der Hardwareregister (z.B. RX(Complete)Interrupt Enable eines UARTs)&lt;br /&gt;
* Sämtliche Interrupts werden über einen weiteren globalen Schalter aktiviert und deaktiviert. Zur Verarbeitung der Interrupts ist dieser Schalter zu aktivieren (sei(), siehe unten).&lt;br /&gt;
 &lt;br /&gt;
Alle Punkte sind zu beachten. Fehlt z.B. die globale Aktivierung, werden Interruptroutinen auch dann nicht aufgerufen, wenn sie im Funktionsbaustein eingeschaltet sind und eine Behandlungsroutine verhanden ist.&lt;br /&gt;
&lt;br /&gt;
Siehe auch&lt;br /&gt;
&lt;br /&gt;
* [http://www.mikrocontroller.net/forum/read-1-235092.html#new Ausführlicher Thread im Forum]&lt;br /&gt;
* Artikel [[Interrupt]]&lt;br /&gt;
* Artikel [[Multitasking]]&lt;br /&gt;
{{Clear}}&lt;br /&gt;
&lt;br /&gt;
== Anforderungen an Interrupt-Routinen ==&lt;br /&gt;
&lt;br /&gt;
Um unliebsamen Überraschungen vorzubeugen, sollten einige Grundregeln bei der Implementierung der Interruptroutinen beachtet werden. Interruptroutinen sollten möglichst kurz und schnell abarbeitbar sein, daraus folgt:&lt;br /&gt;
&lt;br /&gt;
* Keine umfangreichen Berechnungen innerhalb der Interruptroutine. (*)&lt;br /&gt;
* Keine langen Programmschleifen.&lt;br /&gt;
* Obwohl es möglich ist, während der Abarbeitung einer Interruptroutine andere oder sogar den gleichen Interrupt wieder zuzulassen, wird davon ohne genaue Kenntnis der internen Abläufe dringend abgeraten.&lt;br /&gt;
&lt;br /&gt;
Interruptroutinen (ISRs) sollten also möglichst kurz sein und keine Schleifen mit vielen Durchläufen enthalten. Längere Operationen können meist in einen &amp;quot;Interrupt-Teil&amp;quot; in einer ISR und einen &amp;quot;Arbeitsteil&amp;quot; im Hauptprogramm aufgetrennt werden. Z.B. Speichern des Zustands aller Eingänge im EEPROM in bestimmten Zeitabständen: ISR-Teil: Zeitvergleich (Timer,RTC) mit Logzeit/-intervall. Bei Übereinstimmung ein globales Flag setzen (volatile bei Flag-Deklaration nicht vergessen, s.u.). Dann im Hauptprogramm prüfen, ob das Flag gesetzt ist. Wenn ja: die Daten im EEPROM ablegen und Flag löschen.&lt;br /&gt;
&lt;br /&gt;
(*)&lt;br /&gt;
Hinweis: &lt;br /&gt;
Es gibt allerdings die seltene Situation, dass man gerade eingelesene&lt;br /&gt;
ADC-Werte sofort verarbeiten muss. Besonders dann, wenn man mehrere Werte sehr&lt;br /&gt;
schnell hintereinander bekommt. Dann bleibt einem nichts anderes übrig, als die&lt;br /&gt;
Werte noch in der ISR zu verarbeiten. Kommt aber sehr selten vor und sollte&lt;br /&gt;
durch geeignete Wahl des Systemtaktes bzw. Auswahl des Controllers vermieden werden!&lt;br /&gt;
&lt;br /&gt;
== Interrupt-Quellen ==&lt;br /&gt;
&lt;br /&gt;
Die folgenden Ereignisse können einen Interrupt auf einem AVR AT90S2313 auslösen, wobei die Reihenfolge der Auflistung auch die Priorität der Interrupts aufzeigt.&lt;br /&gt;
&lt;br /&gt;
* Reset&lt;br /&gt;
* Externer Interrupt 0&lt;br /&gt;
* Externer Interrupt 1&lt;br /&gt;
* Timer/Counter 1 Capture Ereignis&lt;br /&gt;
* Timer/Counter 1 Compare Match&lt;br /&gt;
* Timer/Counter 1 Überlauf&lt;br /&gt;
* Timer/Counter 0 Überlauf&lt;br /&gt;
* UART Zeichen empfangen&lt;br /&gt;
* UART Datenregister leer&lt;br /&gt;
* UART Zeichen gesendet&lt;br /&gt;
* Analoger Komparator&lt;br /&gt;
&lt;br /&gt;
Die Anzahl der möglichen Interruptquellen variiert zwischen den verschiedenen Microcontroller-Typen. Im Zweifel hilft ein Blick ins Datenblatt (&amp;quot;Interrupt Vectors&amp;quot;).&lt;br /&gt;
&lt;br /&gt;
== Register ==&lt;br /&gt;
&lt;br /&gt;
Der AT90S2313 verfügt über 2 Register die mit den&lt;br /&gt;
Interrupts zusammenhängen.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|- &lt;br /&gt;
| &#039;&#039;&#039;GIMSK&#039;&#039;&#039;&lt;br /&gt;
| &#039;&#039;&#039;G&#039;&#039;&#039;eneral &#039;&#039;&#039;I&#039;&#039;&#039;nterrupt &#039;&#039;&#039;M&#039;&#039;&#039;a&#039;&#039;&#039;sk&#039;&#039;&#039; Register.&amp;lt;br /&amp;gt;&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;
! Bit &lt;br /&gt;
| 7 || 6|| 5 || 4 || 3 || 2 || 1 || 0&lt;br /&gt;
|- &lt;br /&gt;
! Name&lt;br /&gt;
| &#039;&#039;&#039;INT1&#039;&#039;&#039; || &#039;&#039;&#039;INT0&#039;&#039;&#039; || &#039;&#039;&#039;-&#039;&#039;&#039; || &#039;&#039;&#039;-&#039;&#039;&#039; || &#039;&#039;&#039;-&#039;&#039;&#039; || &#039;&#039;&#039;-&#039;&#039;&#039; || &#039;&#039;&#039;-&#039;&#039;&#039; || &#039;&#039;&#039;-&#039;&#039;&#039;&lt;br /&gt;
|- &lt;br /&gt;
! R/W&lt;br /&gt;
| R/W || R/W || R || R || R || R || R || R&lt;br /&gt;
|- &lt;br /&gt;
! Initialwert&lt;br /&gt;
| 0 || 0 || 0 || 0 || 0 || 0 || 0 || 0&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;INT1&#039;&#039;&#039; (External &#039;&#039;&#039;Int&#039;&#039;&#039;errupt Request &#039;&#039;&#039;1&#039;&#039;&#039; Enable)&lt;br /&gt;
:Wenn dieses Bit gesetzt ist, wird ein Interrupt ausgelöst, wenn am &#039;&#039;&#039;INT1&#039;&#039;&#039;-Pin eine steigende oder fallende (je nach Konfiguration im &#039;&#039;&#039;MCUCR&#039;&#039;&#039;) Flanke erkannt wird.&lt;br /&gt;
:Das Global Enable Interrupt Flag muss selbstverständlich auch gesetzt sein.&lt;br /&gt;
:Der Interrupt wird auch ausgelöst, wenn der Pin als Ausgang geschaltet ist. Auf diese Weise bietet sich die Möglichkeit, Software-Interrupts zu realisieren.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;INT0&#039;&#039;&#039; (External &#039;&#039;&#039;Int&#039;&#039;&#039;errupt Request &#039;&#039;&#039;0&#039;&#039;&#039; Enable)&lt;br /&gt;
:Wenn dieses Bit gesetzt ist, wird ein Interrupt ausgelöst, wenn am &#039;&#039;&#039;INT0&#039;&#039;&#039;-Pin eine steigende oder fallende (je nach Konfiguration im &#039;&#039;&#039;MCUCR&#039;&#039;&#039;) Flanke erkannt wird.&lt;br /&gt;
:Das Global Enable Interrupt Flag muss selbstverständlich auch gesetzt sein.&lt;br /&gt;
:Der Interrupt wird auch ausgelöst, wenn der Pin als Ausgang geschaltet ist. Auf diese Weise bietet sich die Möglichkeit, Software-Interrupts zu realisieren.&lt;br /&gt;
&lt;br /&gt;
|- &lt;br /&gt;
| &#039;&#039;&#039;GIFR&#039;&#039;&#039;&lt;br /&gt;
| &#039;&#039;&#039;G&#039;&#039;&#039;eneral &#039;&#039;&#039;I&#039;&#039;&#039;nterrupt &#039;&#039;&#039;F&#039;&#039;&#039;lag &#039;&#039;&#039;R&#039;&#039;&#039;egister.&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;
! Bit&lt;br /&gt;
| 7 || 6 || 5 || 4 || 3 || 2 || 1 || 0&lt;br /&gt;
|- &lt;br /&gt;
! Name&lt;br /&gt;
| &#039;&#039;&#039;INTF1&#039;&#039;&#039; || &#039;&#039;&#039;INTF0&#039;&#039;&#039; || &#039;&#039;&#039;-&#039;&#039;&#039; || &#039;&#039;&#039;-&#039;&#039;&#039; || &#039;&#039;&#039;-&#039;&#039;&#039; || &#039;&#039;&#039;-&#039;&#039;&#039; || &#039;&#039;&#039;-&#039;&#039;&#039; || &#039;&#039;&#039;-&#039;&#039;&#039;&lt;br /&gt;
|- &lt;br /&gt;
! R/W&lt;br /&gt;
| R/W || R/W || R || R || R || R || R || R&lt;br /&gt;
|- &lt;br /&gt;
! Initialwert&lt;br /&gt;
| 0 || 0 || 0 || 0 || 0 || 0 || 0 || 0&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;INTF1&#039;&#039;&#039; (External &#039;&#039;&#039;Int&#039;&#039;&#039;errupt Flag &#039;&#039;&#039;1&#039;&#039;&#039;)&lt;br /&gt;
:Dieses Bit wird gesetzt, wenn am &#039;&#039;&#039;INT1&#039;&#039;&#039;-Pin eine Interrupt-Bedingung, entsprechend der Konfiguration, als eingetreten erkannt wird. Wenn das Global Enable Interrupt Flag gesetzt ist, wird die Interruptroutine angesprungen.&lt;br /&gt;
:Das Flag wird automatisch gelöscht, wenn die Interruptroutine beendet ist. Alternativ kann das Flag gelöscht werden, indem der Wert &#039;&#039;&#039;1(!)&#039;&#039;&#039; eingeschrieben wird.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;INTF0&#039;&#039;&#039; (External &#039;&#039;&#039;Int&#039;&#039;&#039;errupt Flag &#039;&#039;&#039;0&#039;&#039;&#039;)&lt;br /&gt;
:Dieses Bit wird gesetzt, wenn am &#039;&#039;&#039;INT0&#039;&#039;&#039;-Pin eine Interrupt-Bedingung, entsprechend der Konfiguration, als eingetreten erkannt wird. Wenn das Global Enable Interrupt Flag gesetzt ist, wird die Interruptroutine angesprungen.&lt;br /&gt;
:Das Flag wird automatisch gelöscht, wenn die Interruptroutine beendet ist. Alternativ kann das Flag gelöscht werden, indem der Wert &#039;&#039;&#039;1(!)&#039;&#039;&#039; eingeschrieben wird.&lt;br /&gt;
|- &lt;br /&gt;
| &#039;&#039;&#039;MCUCR&#039;&#039;&#039;&lt;br /&gt;
| &#039;&#039;&#039;MCU&#039;&#039;&#039; &#039;&#039;&#039;C&#039;&#039;&#039;ontrol &#039;&#039;&#039;R&#039;&#039;&#039;egister.&lt;br /&gt;
&lt;br /&gt;
Das MCU Control Register enthält Kontrollbits für allgemeine MCU-Funktionen.&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;
! Bit&lt;br /&gt;
| 7 || 6 || 5 || 4 || 3 || 2 || 1 || 0&lt;br /&gt;
|- &lt;br /&gt;
! Name&lt;br /&gt;
| &#039;&#039;&#039;-&#039;&#039;&#039;|| &#039;&#039;&#039;-&#039;&#039;&#039;|| &#039;&#039;&#039;SE&#039;&#039;&#039;|| &#039;&#039;&#039;SM&#039;&#039;&#039;|| &#039;&#039;&#039;ISC11&#039;&#039;&#039;|| &#039;&#039;&#039;ISC10&#039;&#039;&#039;|| &#039;&#039;&#039;ISC01&#039;&#039;&#039;|| &#039;&#039;&#039;ISC00&#039;&#039;&#039;&lt;br /&gt;
|- &lt;br /&gt;
! R/W&lt;br /&gt;
| R || R || R/W || R/W || R/W || R/W || R/W || R/W&lt;br /&gt;
|- &lt;br /&gt;
! Initialwert&lt;br /&gt;
| 0 || 0 || 0 || 0 || 0 || 0 || 0 || 0&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;SE&#039;&#039;&#039; (&#039;&#039;&#039;S&#039;&#039;&#039;leep &#039;&#039;&#039;E&#039;&#039;&#039;nable)&lt;br /&gt;
:Dieses Bit muss gesetzt sein, um den Controller mit dem &#039;&#039;&#039;SLEEP&#039;&#039;&#039;-Befehl in den Schlafzustand versetzen zu können.&lt;br /&gt;
:Um den Schlafmodus nicht irrtümlich einzuschalten, wird empfohlen, das Bit erst unmittelbar vor Ausführung des &#039;&#039;&#039;SLEEP&#039;&#039;&#039;-Befehls zu setzen.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;SM&#039;&#039;&#039; (&#039;&#039;&#039;S&#039;&#039;&#039;leep &#039;&#039;&#039;M&#039;&#039;&#039;ode)&lt;br /&gt;
:Dieses Bit bestimmt über den Schlafmodus.&lt;br /&gt;
:Ist das Bit gelöscht, so wird der &#039;&#039;&#039;Idle&#039;&#039;&#039;-Modus ausgeführt. Ist das Bit gesetzt, so wird der &#039;&#039;&#039;Power-Down&#039;&#039;&#039;-Modus ausgeführt. (für andere AVR Controller siehe Abschnitt &amp;quot;Sleep-Mode&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;ISC11&#039;&#039;&#039;, &#039;&#039;&#039;ISC10&#039;&#039;&#039; (&#039;&#039;&#039;I&#039;&#039;&#039;nterrupt &#039;&#039;&#039;S&#039;&#039;&#039;ense &#039;&#039;&#039;C&#039;&#039;&#039;ontrol &#039;&#039;&#039;1&#039;&#039;&#039; Bits)&lt;br /&gt;
:Diese beiden Bits bestimmen, ob die steigende oder die fallende Flanke für die Interrupterkennung am &#039;&#039;&#039;INT1&#039;&#039;&#039;-Pin ausgewertet wird.&lt;br /&gt;
&lt;br /&gt;
:{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|- &lt;br /&gt;
! ISC11 || ISC10 || Bedeutung&lt;br /&gt;
|- &lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 0&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 0&lt;br /&gt;
| Low Level an &#039;&#039;&#039;INT1&#039;&#039;&#039; erzeugt einen Interrupt.&lt;br /&gt;
&lt;br /&gt;
Der Interrupt wird getriggert, solange der Pin auf 0 bleibt.&lt;br /&gt;
|- &lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 0&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 1&lt;br /&gt;
| Reserviert&lt;br /&gt;
|- &lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 1&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 0&lt;br /&gt;
| Die fallende Flanke an &#039;&#039;&#039;INT1&#039;&#039;&#039; erzeugt einen Interrupt.&lt;br /&gt;
|- &lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 1&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 1&lt;br /&gt;
| Die steigende Flanke an &#039;&#039;&#039;INT1&#039;&#039;&#039; erzeugt einen Interrupt.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;ISC01&#039;&#039;&#039;, &#039;&#039;&#039;ISC00&#039;&#039;&#039; (&#039;&#039;&#039;I&#039;&#039;&#039;nterrupt &#039;&#039;&#039;S&#039;&#039;&#039;ense &#039;&#039;&#039;C&#039;&#039;&#039;ontrol &#039;&#039;&#039;0&#039;&#039;&#039; Bits)&lt;br /&gt;
:Diese beiden Bits bestimmen, ob die steigende oder die fallende Flanke für die Interrupterkennung am &#039;&#039;&#039;INT0&#039;&#039;&#039;-Pin ausgewertet wird.&lt;br /&gt;
&lt;br /&gt;
:{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|- &lt;br /&gt;
! ISC01 || ISC00 || Bedeutung&lt;br /&gt;
|- &lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 0&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 0&lt;br /&gt;
| Low Level an &#039;&#039;&#039;INT0&#039;&#039;&#039; erzeugt einen Interrupt.&lt;br /&gt;
&lt;br /&gt;
Der Interrupt wird getriggert, solange der Pin auf 0 bleibt.&lt;br /&gt;
|- &lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 0&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 1&lt;br /&gt;
| Reserviert&lt;br /&gt;
|- &lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 1&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 0&lt;br /&gt;
| Die fallende Flanke an &#039;&#039;&#039;INT0&#039;&#039;&#039; erzeugt einen Interrupt.&lt;br /&gt;
|- &lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 1&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 1&lt;br /&gt;
| Die steigende Flanke an &#039;&#039;&#039;INT0&#039;&#039;&#039; erzeugt einen Interrupt.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Allgemeines über die Interrupt-Abarbeitung ==&lt;br /&gt;
&lt;br /&gt;
Wenn ein Interrupt eintrifft, wird automatisch das &#039;&#039;&#039;Global Interrupt Enable&#039;&#039;&#039; Bit im Status Register &#039;&#039;&#039;SREG&#039;&#039;&#039; gelöscht und alle weiteren Interrupts unterbunden. Dieses wird automatisch wieder gesetzt, wenn die Interruptroutine beendet wird. Wenn in der Zwischenzeit weitere Interrupts eintreffen, werden die zugehörigen Interrupt-Bits gesetzt und die Interrupts bei Beendigung der laufenden Interrupt-Routine in der Reihenfolge ihrer Priorität ausgeführt. Dies kann&lt;br /&gt;
eigentlich nur dann zu Problemen führen, wenn ein hoch priorisierter Interrupt ständig und in kurzer Folge auftritt. Dieser sperrt dann möglicherweise alle anderen Interrupts mit niedrigerer Priorität. Dies ist einer der Gründe, weshalb die Interrupt-Routinen sehr kurz gehalten werden sollen.  Es ist möglich das GIE-Bit in der ISR zu setzen und so schon wieder weitere Interrupts zuzulassen - allerdings sollte man damit vorsichtig sein und genau wissen was man damit macht. Kritisch wird es vor allem wenn der gleiche Interrupt noch einmal kommt, bevor die ISR abgearbeitet ist. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- === Das Status-Register ===&lt;br /&gt;
&lt;br /&gt;
Es gilt auch zu beachten, dass das Status-Register während der Abarbeitung einer Interruptroutine nicht automatisch gesichert wird. Falls notwendig, muss dies vom Programmierer selber vorgesehen werden. --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Interrupts mit avr-gcc ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- &#039;&#039;Anmerkung eines Nutzers: Ich habe mir das Thema hier angearbeitet und hatte am Anfang starke Probleme: Jeder Interrupt muss nochmals einzeln aktiviert werden. Es reicht nicht nur per &#039;&#039;sei()&#039;&#039; die Interrupts global zu aktiveren.&#039;&#039; - mthomas: Hoffentlich duch die modifizerte Einleitung etwas offensichtlicher erläutert. Ansonsten bitte per Eintrag auf die Diskussionseite nochmals melden) --&amp;gt; &lt;br /&gt;
&amp;lt;!-- Selbstverständlich können alle interruptspezifischen Registerzugriffe wie gewohnt über I/O-Adressierung vorgenommen werden. Etwas einfacher geht es jedoch, wenn wir die vom Compiler zur Verfügung gestellten Mittel einsetzen.--&amp;gt;&lt;br /&gt;
Funktionen zur Interrupt-Verarbeitung werden in den Includedateien &#039;&#039;interrupt.h&#039;&#039;  der avr-libc zur Verfügung gestellt (bei älterem Quellcode zusätzlich &#039;&#039;signal.h&#039;&#039;).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
// fuer sei(), cli() und ISR():&lt;br /&gt;
#include &amp;lt;avr/interrupt.h&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Das Makro &#039;&#039;&#039;sei()&#039;&#039;&#039; schaltet die Interrupts ein. Eigentlich wird nichts anderes gemacht, als das &#039;&#039;&#039;Global Interrupt Enable&#039;&#039;&#039; Bit im Status Register gesetzt.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
    sei();&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Das Makro &#039;&#039;&#039;cli()&#039;&#039;&#039; schaltet die Interrupts aus, oder anders gesagt, das &#039;&#039;&#039;Global Interrupt Enable&#039;&#039;&#039; Bit im Status Register wird gelöscht.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
    cli();&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Oft steht man vor der Aufgabe, dass eine Codesequenz nicht unterbrochen werden darf. Es liegt dann nahe, zu Beginn dieser Sequenz ein cli() und am Ende ein sei() einzufügen. Dies ist jedoch ungünstig, wenn die Interrupts vor Aufruf der Sequenz deaktiviert waren und danach auch weiterhin deaktiviert bleiben sollen. Ein sei() würde ungeachtet des vorherigen  Zustands die Interrupts aktivieren, was zu unerwünschten Seiteneffekten führen kann. Die aus dem folgenden Beispiel ersichtliche Vorgehensweise ist in solchen Fällen vorzuziehen:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
#include &amp;lt;avr/io.h&amp;gt;&lt;br /&gt;
#include &amp;lt;avr/interrupt.h&amp;gt;&lt;br /&gt;
#include &amp;lt;inttypes.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
//...&lt;br /&gt;
&lt;br /&gt;
void NichtUnterbrechenBitte(void)&lt;br /&gt;
{&lt;br /&gt;
   uint8_t tmp_sreg;  // temporaerer Speicher fuer das Statusregister&lt;br /&gt;
&lt;br /&gt;
   tmp_sreg = SREG;   // Statusregister (also auch das I-Flag darin) sichern&lt;br /&gt;
   cli();             // Interrupts global deaktivieren&lt;br /&gt;
&lt;br /&gt;
   /* hier &amp;quot;unterbrechnungsfreier&amp;quot; Code */&lt;br /&gt;
&lt;br /&gt;
   /* Beispiel Anfang&lt;br /&gt;
     JTAG-Interface eines ATmega16 per Software deaktivieren &lt;br /&gt;
     und damit die JTAG-Pins an PORTC für &amp;quot;general I/O&amp;quot; nutzbar machen&lt;br /&gt;
     ohne die JTAG-Fuse-Bit zu aendern. Dazu ist eine &amp;quot;timed sequence&amp;quot;&lt;br /&gt;
     einzuhalten (vgl Datenblatt ATmega16, Stand 10/04, S. 229): &lt;br /&gt;
     Das JTD-Bit muss zweimal innerhalb von 4 Taktzyklen geschrieben &lt;br /&gt;
     werden. Ein Interrupt zwischen den beiden Schreibzugriffen wuerde &lt;br /&gt;
     die erforderliche Sequenz &amp;quot;brechen&amp;quot;, das JTAG-Interface bliebe&lt;br /&gt;
     weiterhin aktiv und die IO-Pins weiterhin für JTAG reserviert. */&lt;br /&gt;
&lt;br /&gt;
   MCUCSR |= (1&amp;lt;&amp;lt;JTD);&lt;br /&gt;
   MCUCSR |= (1&amp;lt;&amp;lt;JTD); // 2 mal in Folge ,vgl. Datenblatt fuer mehr Information&lt;br /&gt;
&lt;br /&gt;
   /* Beispiel Ende */&lt;br /&gt;
  &lt;br /&gt;
   SREG = tmp_sreg;     // Status-Register wieder herstellen &lt;br /&gt;
                      // somit auch das I-Flag auf gesicherten Zustand setzen&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void NichtSoGut(void)&lt;br /&gt;
{&lt;br /&gt;
   cli();&lt;br /&gt;
   &lt;br /&gt;
   /* hier &amp;quot;unterbrechnungsfreier&amp;quot; Code */&lt;br /&gt;
   &lt;br /&gt;
   sei();&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
int main(void)&lt;br /&gt;
{&lt;br /&gt;
   //...&lt;br /&gt;
&lt;br /&gt;
   cli();  &lt;br /&gt;
   // Interrupts global deaktiviert &lt;br /&gt;
&lt;br /&gt;
   NichtUnterbrechenBitte();&lt;br /&gt;
   // auch nach Aufruf der Funktion deaktiviert&lt;br /&gt;
&lt;br /&gt;
   sei();&lt;br /&gt;
   // Interrupts global aktiviert &lt;br /&gt;
&lt;br /&gt;
   NichtUnterbrechenBitte();&lt;br /&gt;
   // weiterhin aktiviert&lt;br /&gt;
   //...&lt;br /&gt;
&lt;br /&gt;
   /* Verdeutlichung der unguenstigen Vorgehensweise mit cli/sei: */&lt;br /&gt;
   cli();  &lt;br /&gt;
   // Interrupts jetzt global deaktiviert &lt;br /&gt;
&lt;br /&gt;
   NichtSoGut();&lt;br /&gt;
   // nach Aufruf der Funktion sind Interrupts global aktiviert &lt;br /&gt;
   // dies ist mglw. ungewollt!&lt;br /&gt;
   //...&lt;br /&gt;
   &lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- mt: besser so nicht(?), lieber &amp;quot;datenblattkonform&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;font face=&amp;quot;Courier New&amp;quot;&amp;gt;&#039;&#039;&#039;timer_enable_int (unsigned char ints);&amp;lt;br /&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;&amp;lt;/font&amp;gt;Schaltet Timerbezogene Interrupts ein bzw. aus.&amp;lt;br /&amp;gt;&lt;br /&gt;
Wenn als Argument &#039;&#039;&#039;ints&#039;&#039;&#039; der Wert 0 übergeben wird so werden alle&lt;br /&gt;
Timerinterrupts ausgeschaltet, ansonsten muss in &#039;&#039;&#039;ints&#039;&#039;&#039; angegeben werden,&lt;br /&gt;
welche Interrupts zu aktivieren sind. Dabei müssen einfach die entsprechend zu&lt;br /&gt;
setzenden Bits definiert werden.&amp;lt;br /&amp;gt;&lt;br /&gt;
Beispiel: &#039;&#039;&#039;&amp;lt;font face=&amp;quot;Courier New&amp;quot;&amp;gt;timer_enable_int (1 &amp;lt;&amp;lt; TOIE1));&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;/font&amp;gt;&#039;&#039;&#039;Achtung: Wenn ein Timerinterrupt eingeschaltet wird während ein&lt;br /&gt;
anderer Timerinterrupt bereits läuft, dann müssen beide Bits angegeben werden&lt;br /&gt;
sonst wird der andere Timerinterrupt versehentlich ausgeschaltet.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;font face=&amp;quot;Courier New&amp;quot;&amp;gt;&#039;&#039;&#039;enable_external_int (unsigned char ints);&amp;lt;br /&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;&amp;lt;/font&amp;gt;Schaltet die externen Interrupts ein bzw. aus.&amp;lt;br /&amp;gt;&lt;br /&gt;
Wenn als Argument &#039;&#039;&#039;ints&#039;&#039;&#039; der Wert 0 übergeben wird so werden alle externen&lt;br /&gt;
Interrrups ausgeschaltet, ansonsten muss in &#039;&#039;&#039;ints&#039;&#039;&#039; angegeben werden, welche&lt;br /&gt;
Interrupts zu aktivieren sind. Dabei müssen einfach die entsprechend zu&lt;br /&gt;
setzenden Bits definiert werden.&amp;lt;br /&amp;gt;&lt;br /&gt;
Beispiel: &#039;&#039;&#039;&amp;lt;font face=&amp;quot;Courier New&amp;quot;&amp;gt;enable_external_int ((1&amp;lt;&lt;br /&gt;
&amp;lt;/font&amp;gt;&#039;&#039;&#039;Schaltet die externen Interrupts 0 und 1 ein.&lt;br /&gt;
&lt;br /&gt;
Nachdem nun die Interrupts aktiviert sind, braucht es selbstverständlich noch den auszuführenden Code, der ablaufen soll, wenn ein Interrupt eintrifft.&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
Zu den aktivierten Interrupts ist eine Funktion zu programmieren, deren Code aufgerufen wird, wenn der betreffende Interrupt auftritt (Interrupt-Handler, Interrupt-Service-Routine). Dazu existiert die Definition (ein Makro) &#039;&#039;&#039;ISR&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
=== ISR ===&lt;br /&gt;
&lt;br /&gt;
(&#039;&#039;ISR()&#039;&#039; ersetzt bei neueren Versionen der avr-libc &#039;&#039;SIGNAL()&#039;&#039;. SIGNAL sollte nicht mehr genutzt werden, zur Portierung von SIGNAL nach ISR siehe den [[AVR-GCC-Tutorial#Anhang|Anhang]].)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
#include &amp;lt;avr/interrupt.h&amp;gt;&lt;br /&gt;
//...&lt;br /&gt;
ISR(Vectorname) /* vormals: SIGNAL(siglabel) dabei Vectorname != siglabel ! */&lt;br /&gt;
{&lt;br /&gt;
    /* Interrupt Code */&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Mit &#039;&#039;ISR&#039;&#039; wird eine Funktion für die Bearbeitung eines Interrupts eingeleitet. Als Argument muss dabei die Benennung des entsprechenden Interruptvektors angegeben werden. Diese sind in den jeweiligen Includedateien IOxxxx.h zu finden. Die Bezeichnung entspricht dem Namen aus dem Datenblatt, bei dem die Leerzeichen durch Unterstriche ersetzt sind und ein &#039;&#039;_vect&#039;&#039; angehängt ist.&lt;br /&gt;
&lt;br /&gt;
Als Beispiel ein Ausschnitt aus der Datei für den ATmega8 (bei WinAVR Standardinstallation in C:\WinAVR\avr\include\avr\iom8.h) in der neben den aktuellen Namen für &#039;&#039;ISR&#039;&#039; (*_vect) noch die Bezeichnungen für das inzwischen nicht mehr aktuelle &#039;&#039;SIGNAL&#039;&#039; (SIG_*) enthalten sind.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
//...&lt;br /&gt;
/* $Id: iom8.h,v 1.13 2005/10/30 22:11:23 joerg_wunsch Exp $ */&lt;br /&gt;
&lt;br /&gt;
/* avr/iom8.h  - definitions for ATmega8 */&lt;br /&gt;
//...&lt;br /&gt;
&lt;br /&gt;
/* Interrupt vectors */&lt;br /&gt;
&lt;br /&gt;
/* External Interrupt Request 0 */&lt;br /&gt;
#define INT0_vect                       _VECTOR(1)&lt;br /&gt;
#define SIG_INTERRUPT0                  _VECTOR(1)&lt;br /&gt;
&lt;br /&gt;
/* External Interrupt Request 1 */&lt;br /&gt;
#define INT1_vect                       _VECTOR(2)&lt;br /&gt;
#define SIG_INTERRUPT1                  _VECTOR(2)&lt;br /&gt;
&lt;br /&gt;
/* Timer/Counter2 Compare Match */&lt;br /&gt;
#define TIMER2_COMP_vect                _VECTOR(3)&lt;br /&gt;
#define SIG_OUTPUT_COMPARE2             _VECTOR(3)&lt;br /&gt;
&lt;br /&gt;
/* Timer/Counter2 Overflow */&lt;br /&gt;
#define TIMER2_OVF_vect                 _VECTOR(4)&lt;br /&gt;
#define SIG_OVERFLOW2                   _VECTOR(4)&lt;br /&gt;
&lt;br /&gt;
/* Timer/Counter1 Capture Event */&lt;br /&gt;
#define TIMER1_CAPT_vect                _VECTOR(5)&lt;br /&gt;
#define SIG_INPUT_CAPTURE1              _VECTOR(5)&lt;br /&gt;
&lt;br /&gt;
/* Timer/Counter1 Compare Match A */&lt;br /&gt;
#define TIMER1_COMPA_vect               _VECTOR(6)&lt;br /&gt;
#define SIG_OUTPUT_COMPARE1A            _VECTOR(6)&lt;br /&gt;
&lt;br /&gt;
/* Timer/Counter1 Compare Match B */&lt;br /&gt;
#define TIMER1_COMPB_vect               _VECTOR(7)&lt;br /&gt;
#define SIG_OUTPUT_COMPARE1B            _VECTOR(7)&lt;br /&gt;
&lt;br /&gt;
//...&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--Vor Nutzung von SIGNAL muss ebenfalls die Header-Datei signal.h eingebunden werden.--&amp;gt; &lt;br /&gt;
Mögliche Funktionsrümpfe für Interruptfunktionen sind zum Beispiel:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
#include &amp;lt;avr/interrupt.h&amp;gt;&lt;br /&gt;
/* veraltet: #include &amp;lt;avr/signal.h&amp;gt; */&lt;br /&gt;
&lt;br /&gt;
ISR(INT0_vect)       /* veraltet: SIGNAL(SIG_INTERRUPT0) */&lt;br /&gt;
{&lt;br /&gt;
    /* Interrupt Code */&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
ISR(TIMER0_OVF_vect) /* veraltet: SIGNAL(SIG_OVERFLOW0) */&lt;br /&gt;
{&lt;br /&gt;
    /* Interrupt Code */&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
ISR(USART_RXC_vect) /* veraltet: SIGNAL(SIG_UART_RECV) */&lt;br /&gt;
{&lt;br /&gt;
    /* Interrupt Code */&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// und so weiter und so fort...&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Auf die korrekte Schreibweise der Vektorbezeichnung ist zu achten. Der gcc-Compiler prüft erst ab Version 4.x, ob ein Signal/Interrupt der angegebenen Bezeichnung tatsächlich in der Includedatei definiert ist und gibt andernfalls eine Warnung aus. Bei WinAVR (ab 2/2005) wurde die Überprüfung auch in den mitgelieferten Compiler der Version 3.x integriert. Aus dem gcc-Quellcode Version 3.x selbst erstellte Compiler enthalten die Prüfung nicht (vgl. [[AVR-GCC]]). &lt;br /&gt;
&lt;br /&gt;
Während der Ausführung der Funktion sind alle weiteren Interrupts automatisch gesperrt. Beim Verlassen der Funktion werden die Interrupts wieder zugelassen.&lt;br /&gt;
&lt;br /&gt;
Sollte während der Abarbeitung der Interruptroutine ein weiterer Interrupt (gleiche oder andere Interruptquelle) auftreten, so wird das entsprechende Bit im zugeordneten Interrupt Flag Register gesetzt und die entsprechende Interruptroutine automatisch nach dem Beenden der aktuellen Funktion aufgerufen.&lt;br /&gt;
&lt;br /&gt;
Ein Problem ergibt sich eigentlich nur dann, wenn während der Abarbeitung der aktuellen Interruptroutine mehrere gleichartige Interrupts auftreten. Die entsprechende Interruptroutine wird im Nachhinein zwar aufgerufen jedoch wissen wir nicht, ob nun der entsprechende Interrupt einmal, zweimal oder gar noch öfter aufgetreten ist. Deshalb soll hier noch einmal betont werden, dass Interruptroutinen so schnell wie nur irgend möglich wieder verlassen werden sollten.&lt;br /&gt;
&lt;br /&gt;
=== Unterbrechbare Interruptroutinen ===&lt;br /&gt;
&lt;br /&gt;
&amp;quot;Faustregel&amp;quot;: im Zweifel &#039;&#039;&#039;ISR&#039;&#039;&#039;. Die nachfolgend beschriebene Methode nur dann verwenden, wenn man sich über die unterschiedliche Funktionsweise im Klaren ist.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
#include &amp;lt;avr/interrupt.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
ISR(XXX,ISR_NOBLOCK) /* veraltet: INTERRUPT(SIG_OVERFLOW0) */&lt;br /&gt;
{&lt;br /&gt;
    /* Interrupt-Code */&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Hierbei steht XXX für den oben beschriebenen Namen des Vektors (also z.&amp;amp;nbsp;B. &#039;&#039;TIMER0_OVF_vect&#039;&#039;). Der Unterschied im Vergleich zu einer herkömmlichen ISR ist, dass hier beim Aufrufen der Funktion das &#039;&#039;&#039;Global Enable Interrupt&#039;&#039;&#039; Bit durch Einfügen einer SEI-Anweisung direkt wieder gesetzt und somit alle Interrupts zugelassen werden &amp;amp;ndash; auch XXX-Interrupts. &lt;br /&gt;
&lt;br /&gt;
Bei unsachgemässer Handhabung kann dies zu erheblichen Problemen durch Rekursion wie einem Stack-Overflow oder anderen unerwarteten Effekten führen und sollte wirklich nur dann eingesetzt werden, wenn man sich sicher ist, das Ganze auch im Griff zu haben.&lt;br /&gt;
&lt;br /&gt;
Insbesondere sollte möglichst am ISR-Anfang die auslösende IRQ-Quelle deaktiviert und erst am Ende der ISR wieder aktiviert werden. Robuster als die Verwendung einer NOBLOCK-ISR ist daher folgender ISR-Aufbau:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
#include &amp;lt;avr/interrupt.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
ISR (XXX) &lt;br /&gt;
{&lt;br /&gt;
    // Implementiere die ISR ohne zunaechst weitere IRQs zuzulassen&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;&amp;lt;Deaktiviere die XXX-IRQ&amp;gt;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    // Erlaube alle Interrupts (ausser XXX)&lt;br /&gt;
    sei();&lt;br /&gt;
&lt;br /&gt;
    //... Code ...&lt;br /&gt;
&lt;br /&gt;
    // IRQs global deaktivieren um die XXX-IRQ wieder gefahrlos &lt;br /&gt;
    // aktivieren zu koennen&lt;br /&gt;
    cli();&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;&amp;lt;Aktiviere die XXX-IRQ&amp;gt;&amp;gt;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Auf diese Weise kann sich die XXX-IRQ nicht selbst unterbrechen, was zu einer Art Endlosschleife führen würde.&lt;br /&gt;
&lt;br /&gt;
Siehe auch: Hinweise in [[AVR-GCC]]&lt;br /&gt;
&lt;br /&gt;
siehe dazu: http://www.nongnu.org/avr-libc/user-manual/group__avr__interrupts.html&lt;br /&gt;
&lt;br /&gt;
== Datenaustausch mit Interrupt-Routinen ==&lt;br /&gt;
&lt;br /&gt;
Variablen, die sowohl in Interrupt-Routinen (ISR = Interrupt Service Routine(s)) als auch vom übrigen Programmcode geschrieben oder gelesen werden, müssen mit einem &#039;&#039;&#039;volatile&#039;&#039;&#039; deklariert werden. Damit wird dem Compiler mitgeteilt, dass der Inhalt der Variablen vor jedem Lesezugriff aus dem Speicher gelesen und nach jedem Schreibzugriff in den Speicher geschrieben wird. Ansonsten könnte der Compiler den Code so optimieren, dass der Wert der Variablen nur in Prozessorregistern zwischengespeichert wird, die nichts von der Änderung woanders mitbekommen.&lt;br /&gt;
&lt;br /&gt;
Zur Veranschaulichung ein Codefragment für eine Tastenentprellung mit Erkennung einer &amp;quot;lange gedrückten&amp;quot; Taste.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
#include &amp;lt;avr/io.h&amp;gt;&lt;br /&gt;
#include &amp;lt;avr/interrupt.h&amp;gt;&lt;br /&gt;
#include &amp;lt;stdint.h&amp;gt;&lt;br /&gt;
//...&lt;br /&gt;
&lt;br /&gt;
// Schwellwerte&lt;br /&gt;
// Entprellung: &lt;br /&gt;
#define CNTDEBOUNCE 10&lt;br /&gt;
// &amp;quot;lange gedrueckt:&amp;quot;&lt;br /&gt;
#define CNTREPEAT 200&lt;br /&gt;
&lt;br /&gt;
// hier z.&amp;amp;nbsp;B. Taste an Pin2 PortA &amp;quot;active low&amp;quot; = 0 wenn gedrueckt&lt;br /&gt;
#define KEY_PIN  PINA&lt;br /&gt;
#define KEY_PINNO PA2&lt;br /&gt;
&lt;br /&gt;
// beachte: volatile! &lt;br /&gt;
volatile uint8_t gKeyCounter;&lt;br /&gt;
&lt;br /&gt;
// Timer-Compare Interrupt ISR, wird z.B. alle 10ms ausgefuehrt&lt;br /&gt;
ISR(TIMER1_COMPA_vect)&lt;br /&gt;
{&lt;br /&gt;
   // hier wird gKeyCounter veraendert. Die übrigen&lt;br /&gt;
   // Programmteile müssen diese Aenderung &amp;quot;sehen&amp;quot;:&lt;br /&gt;
   // volatile -&amp;gt; aktuellen Wert immer in den Speicher schreiben&lt;br /&gt;
   if ( !(KEY_PIN &amp;amp; (1&amp;lt;&amp;lt;KEY_PINNO)) ) {&lt;br /&gt;
      if (gKeyCounter &amp;lt; CNTREPEAT) gKeyCounter++;&lt;br /&gt;
   }&lt;br /&gt;
   else {&lt;br /&gt;
      gKeyCounter = 0;&lt;br /&gt;
   }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
//...&lt;br /&gt;
&lt;br /&gt;
int main(void)&lt;br /&gt;
{&lt;br /&gt;
//...&lt;br /&gt;
    /* hier: Initialisierung der Ports und des Timer-Interrupts */&lt;br /&gt;
//... &lt;br /&gt;
   // hier wird auf gKeyCounter zugegriffen. Dazu muss der in der&lt;br /&gt;
   // ISR geschriebene Wert bekannt sein:&lt;br /&gt;
   // volatile -&amp;gt; aktuellen Wert immer aus dem Speicher lesen&lt;br /&gt;
   if ( gKeyCounter &amp;gt; CNTDEBOUNCE ) { // Taste mind. 10*10 ms &amp;quot;prellfrei&amp;quot;&lt;br /&gt;
       if (gKeyCounter == CNTREPEAT) {&lt;br /&gt;
          /* hier: Code fuer &amp;quot;Taste lange gedrueckt&amp;quot; */&lt;br /&gt;
       }&lt;br /&gt;
       else {&lt;br /&gt;
          /* hier: Code fuer &amp;quot;Taste kurz gedrueckt&amp;quot; */&lt;br /&gt;
       }&lt;br /&gt;
   }&lt;br /&gt;
//...&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Wird innerhalb einer ISR mehrfach auf eine mit volatile deklarierte Variable zugegriffen, wirkt sich dies ungünstig auf die Verarbeitungsgeschwindigkeit aus, da bei jedem Zugriff mit dem Speicherinhalt abgeglichen wird. Da bei AVR-Controllern &#039;&#039;innerhalb&#039;&#039; einer ISR keine Unterbrechungen zu erwarten sind, bietet es sich an, einen Zwischenspeicher in Form einer lokalen Variable zu verwenden, deren Inhalt zu Beginn und am Ende mit dem der volatile Variable synchronisiert wird. Lokale Variable werden bei eingeschalteter Optimierung mit hoher Wahrscheinlichkeit in Prozessorregistern verwaltet und der Zugriff darauf ist daher nur mit wenigen internen Operationen verbunden. Die ISR aus dem vorherigen Beispiel lässt sich so optimieren:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
//...&lt;br /&gt;
ISR(TIMER1_COMPA_vect)&lt;br /&gt;
{&lt;br /&gt;
   uint8_t tmp_kc;&lt;br /&gt;
&lt;br /&gt;
   tmp_kc = gKeyCounter; // Uebernahme in lokale Arbeitsvariable&lt;br /&gt;
&lt;br /&gt;
   if ( !(KEY_PIN &amp;amp; (1&amp;lt;&amp;lt;KEY_PINNO)) ) {&lt;br /&gt;
      if (tmp_kc &amp;lt; CNTREPEAT) {&lt;br /&gt;
         tmp_kc++;&lt;br /&gt;
      }&lt;br /&gt;
   }&lt;br /&gt;
   else {&lt;br /&gt;
      tmp_kc = 0;&lt;br /&gt;
   }&lt;br /&gt;
&lt;br /&gt;
   gKeyCounter = tmp_kc; // Zurueckschreiben&lt;br /&gt;
}&lt;br /&gt;
//...&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Zum Vergleich die Disassemblies (Ausschnitte der &amp;quot;lss-Dateien&amp;quot;, compiliert für ATmega162) im Anschluss. Man erkennt den viermaligen Zugriff auf die Speicheraddresse von &#039;&#039;gKeyCounter&#039;&#039; (hier 0x032A) in der ISR ohne &amp;quot;Cache&amp;quot;-Variable und den zweimaligen Zugriff in der Variante mit Zwischenspeicher. Im Beispiel ist der Vorteil gering, bei komplexeren Routinen kann die Zwischenspeicherung in lokalen Variablen jedoch zu deutlicheren Verbesserungen führen.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ISR(TIMER1_COMPA_vect)&lt;br /&gt;
{&lt;br /&gt;
     86a:	1f 92       	push	r1&lt;br /&gt;
     86c:	0f 92       	push	r0&lt;br /&gt;
     86e:	0f b6       	in	r0, 0x3f	; 63&lt;br /&gt;
     870:	0f 92       	push	r0&lt;br /&gt;
     872:	11 24       	eor	r1, r1&lt;br /&gt;
     874:	8f 93       	push	r24&lt;br /&gt;
    if ( !(KEY_PIN &amp;amp; (1&amp;lt;&amp;lt;KEY_PINNO)) ) {&lt;br /&gt;
     876:	ca 99       	sbic	0x19, 2	; 25&lt;br /&gt;
     878:	0a c0       	rjmp	.+20     	; 0x88e &amp;lt;__vector_13+0x24&amp;gt;&lt;br /&gt;
      if (gKeyCounter &amp;lt; CNTREPEAT) gKeyCounter++;&lt;br /&gt;
     87a:	80 91 2a 03 	lds	r24, 0x032A&lt;br /&gt;
     87e:	88 3c       	cpi	r24, 0xC8	; 200 &lt;br /&gt;
     880:	40 f4       	brcc	.+16     	; 0x892 &amp;lt;__vector_13+0x28&amp;gt;&lt;br /&gt;
     882:	80 91 2a 03 	lds	r24, 0x032A&lt;br /&gt;
     886:	8f 5f       	subi	r24, 0xFF	; 255&lt;br /&gt;
     888:	80 93 2a 03 	sts	0x032A, r24&lt;br /&gt;
     88c:	02 c0       	rjmp	.+4      	; 0x892 &amp;lt;__vector_13+0x28&amp;gt;&lt;br /&gt;
   }&lt;br /&gt;
   else {&lt;br /&gt;
      gKeyCounter = 0;&lt;br /&gt;
     88e:	10 92 2a 03 	sts	0x032A, r1&lt;br /&gt;
     892:	8f 91       	pop	r24&lt;br /&gt;
     894:	0f 90       	pop	r0&lt;br /&gt;
     896:	0f be       	out	0x3f, r0	; 63&lt;br /&gt;
     898:	0f 90       	pop	r0&lt;br /&gt;
     89a:	1f 90       	pop	r1&lt;br /&gt;
     89c:	18 95       	reti&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ISR(TIMER1_COMPA_vect)&lt;br /&gt;
{&lt;br /&gt;
     86a:	1f 92       	push	r1&lt;br /&gt;
     86c:	0f 92       	push	r0&lt;br /&gt;
     86e:	0f b6       	in	r0, 0x3f	; 63&lt;br /&gt;
     870:	0f 92       	push	r0&lt;br /&gt;
     872:	11 24       	eor	r1, r1&lt;br /&gt;
     874:	8f 93       	push	r24&lt;br /&gt;
   uint8_t tmp_kc;&lt;br /&gt;
 &lt;br /&gt;
   tmp_kc = gKeyCounter;&lt;br /&gt;
     876:	80 91 2a 03 	lds	r24, 0x032A&lt;br /&gt;
 &lt;br /&gt;
   if ( !(KEY_PIN &amp;amp; (1&amp;lt;&amp;lt;KEY_PINNO)) ) {&lt;br /&gt;
     87a:	ca 9b       	sbis	0x19, 2	; 25&lt;br /&gt;
     87c:	02 c0       	rjmp	.+4      	; 0x882 &amp;lt;__vector_13+0x18&amp;gt;&lt;br /&gt;
     87e:	80 e0       	ldi	r24, 0x00	; 0&lt;br /&gt;
     880:	03 c0       	rjmp	.+6      	; 0x888 &amp;lt;__vector_13+0x1e&amp;gt;&lt;br /&gt;
      if (tmp_kc &amp;lt; CNTREPEAT) {&lt;br /&gt;
     882:	88 3c       	cpi	r24, 0xC8	; 200&lt;br /&gt;
     884:	08 f4       	brcc	.+2      	; 0x888 &amp;lt;__vector_13+0x1e&amp;gt;&lt;br /&gt;
         tmp_kc++;&lt;br /&gt;
     886:	8f 5f       	subi	r24, 0xFF	; 255&lt;br /&gt;
      }&lt;br /&gt;
   }&lt;br /&gt;
   else {&lt;br /&gt;
      tmp_kc = 0;&lt;br /&gt;
   }&lt;br /&gt;
 &lt;br /&gt;
   gKeyCounter = tmp_kc;&lt;br /&gt;
     888:	80 93 2a 03 	sts	0x032A, r24&lt;br /&gt;
     88c:	8f 91       	pop	r24&lt;br /&gt;
     88e:	0f 90       	pop	r0&lt;br /&gt;
     890:	0f be       	out	0x3f, r0	; 63&lt;br /&gt;
     892:	0f 90       	pop	r0&lt;br /&gt;
     894:	1f 90       	pop	r1&lt;br /&gt;
     896:	18 95       	reti&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== volatile und Pointer ===&lt;br /&gt;
&lt;br /&gt;
Bei &#039;&#039;&#039;volatile&#039;&#039;&#039; in Verbindung mit Pointern ist zu beachten, ob der Pointer selbst oder die Variable, auf die der Pointer zeigt, &#039;&#039;&#039;volatile&#039;&#039;&#039; ist.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
volatile uint8_t *a;   // das Ziel von a ist volatile&lt;br /&gt;
&lt;br /&gt;
uint8_t *volatile a;   // a selbst ist volatile&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Falls der Pointer volatile ist (zweiter Fall im Beispiel), ist zu beachten, dass der Wert des Pointers, also eine Speicheradresse, intern in mehr als einem Byte verwaltet wird. Lese- und Schreibzugriffe im Hauptprogramm (außerhalb von Interrupt-Routinen) sind daher so zu implementieren, dass alle Teilbytes der Adresse konsistent bleiben, vgl. dazu den folgenden Abschnitt.&lt;br /&gt;
&lt;br /&gt;
=== Variablen größer 1 Byte ===&lt;br /&gt;
&lt;br /&gt;
Bei Variablen größer ein Byte, auf die in Interrupt-Routinen und im Hauptprogramm zugegriffen wird, muss darauf geachtet werden, dass die Zugriffe auf die einzelnen Bytes außerhalb der ISR nicht durch einen Interrupt unterbrochen werden. (Allgemeinplatz: AVRs sind 8-bit Controller). Zur Veranschaulichung ein Codefragment:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
//...&lt;br /&gt;
volatile uint16_t gMyCounter16bit;&lt;br /&gt;
//...&lt;br /&gt;
ISR(...)&lt;br /&gt;
{&lt;br /&gt;
//...&lt;br /&gt;
   gMyCounter16Bit++;&lt;br /&gt;
//...&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
int main(void)&lt;br /&gt;
{&lt;br /&gt;
   uint16_t tmpCnt;&lt;br /&gt;
//...&lt;br /&gt;
   // nicht gut: Mglw. hier ein Fehler, wenn ein Byte von MyCounter &lt;br /&gt;
   // schon in tmpCnt kopiert ist aber vor dem Kopieren des zweiten Bytes &lt;br /&gt;
   // ein Interrupt auftritt, der den Inhalt von MyCounter verändert.&lt;br /&gt;
   tmpCnt = gMyCounter16bit; &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   // besser: Änderungen &amp;quot;außerhalb&amp;quot; verhindern -&amp;gt; alle &amp;quot;Teilbytes&amp;quot;&lt;br /&gt;
   // bleiben konsistent&lt;br /&gt;
   cli();  // Interrupts deaktivieren&lt;br /&gt;
   tmpCnt = gMyCounter16Bit;&lt;br /&gt;
   sei();  // wieder aktivieren&lt;br /&gt;
&lt;br /&gt;
   // oder: vorheriger Status des globalen Interrupt-Flags bleibt erhalten&lt;br /&gt;
   uint8_t sreg_tmp;&lt;br /&gt;
   sreg_tmp = SREG;    /* Sichern */&lt;br /&gt;
   cli()&lt;br /&gt;
   tmpCnt = gMyCounter16Bit;&lt;br /&gt;
   SREG = sreg_tmp;    /* Wiederherstellen */&lt;br /&gt;
&lt;br /&gt;
   // oder: mehrfach lesen, bis man konsistente Daten hat&lt;br /&gt;
   uint16_t count1 = gMyCounter16Bit;&lt;br /&gt;
   uint16_t count2 = gMyCounter16Bit;&lt;br /&gt;
   while (count1 != count2) {&lt;br /&gt;
       count1 = count2;&lt;br /&gt;
       count2 = gMyCounter16Bit;&lt;br /&gt;
   }&lt;br /&gt;
   tmpCnt = count1;&lt;br /&gt;
//...&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die avr-libc bietet ab Version 1.6.0(?) einige Hilfsfunktionen/Makros, mit der im Beispiel oben gezeigten Funktionalität, die zusätzlich auch sogenannte [http://en.wikipedia.org/wiki/Memory_barrier memory barriers] beinhalten. Diese stehen nach #include &amp;lt;util/atomic.h&amp;gt; zur Verfügung.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
//...&lt;br /&gt;
#include &amp;lt;util/atomic.h&amp;gt;&lt;br /&gt;
//...&lt;br /&gt;
&lt;br /&gt;
    // analog zu cli, Zugriff, sei:&lt;br /&gt;
    ATOMIC_BLOCK(ATOMIC_FORCEON) {&lt;br /&gt;
        tmpCnt = gMyCounter16Bit;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
// oder:&lt;br /&gt;
&lt;br /&gt;
    // analog zu Sicherung des SREG, cli, Zugriff und Zurückschreiben des SREG:&lt;br /&gt;
    ATOMIC_BLOCK(ATOMIC_RESTORESTATE) {&lt;br /&gt;
        tmpCnt = gMyCounter16Bit;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
//...&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* siehe auch [http://www.nongnu.org/avr-libc/user-manual/group__util__atomic.html Dokumentation der avr-libc zu atomic.h]&lt;br /&gt;
&lt;br /&gt;
== Interrupt-Routinen und Registerzugriffe ==&lt;br /&gt;
&lt;br /&gt;
Falls Register sowohl im Hauptprogramm als auch in Interrupt-Routinen verändert werden, ist darauf zu achten, dass diese Zugriffe sich nicht überlappen. Nur wenige Anweisungen lassen sich in sogenannte &amp;quot;atomare&amp;quot; Zugriffe übersetzen, die nicht von Interrupt-Routinen unterbrochen werden können. &lt;br /&gt;
&lt;br /&gt;
Zur Veranschaulichung eine Anweisung, bei der ein Bit und im Anschluss drei Bits in einem Register gesetzt werden:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
#include &amp;lt;avr/io.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
int main(void)&lt;br /&gt;
{&lt;br /&gt;
//...&lt;br /&gt;
	PORTA |= (1&amp;lt;&amp;lt;PA0);&lt;br /&gt;
	&lt;br /&gt;
	PORTA |= (1&amp;lt;&amp;lt;PA2)|(1&amp;lt;&amp;lt;PA3)|(1&amp;lt;&amp;lt;PA4);&lt;br /&gt;
//...&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Der Compiler übersetzt diese Anweisungen für einen ATmega128 bei Optimierungsstufe &amp;quot;S&amp;quot; nach:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;code&amp;quot;&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
        PORTA |= (1&amp;lt;&amp;lt;PA0);&lt;br /&gt;
  d2:	d8 9a       	sbi	0x1b, 0	; 27 (a)&lt;br /&gt;
	&lt;br /&gt;
        PORTA |= (1&amp;lt;&amp;lt;PA2)|(1&amp;lt;&amp;lt;PA3)|(1&amp;lt;&amp;lt;PA4);&lt;br /&gt;
  d4:	8b b3       	in	r24, 0x1b	; 27 (b)&lt;br /&gt;
  d6:	8c 61       	ori	r24, 0x1C	; 28 (c)&lt;br /&gt;
  d8:	8b bb       	out	0x1b, r24	; 27 (d)&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Das Setzen des einzelnen Bits wird bei eingeschalteter Optimierung für Register im unteren Speicherbereich in eine einzige Assembler-Anweisung (sbi) übersetzt und ist nicht anfällig für Unterbrechungen durch Interrupts. Die Anweisung zum Setzen von drei Bits wird jedoch in drei abhängige Assembler-Anweisungen übersetzt und bietet damit zwei &amp;quot;Angriffspunkte&amp;quot; für Unterbrechungen. Eine Interrupt-Routine könnte nach dem Laden des Ausgangszustands in den Zwischenspeicher (hier Register 24) den Wert des Registers ändern, z.&amp;amp;nbsp;B. ein Bit löschen. Damit würde der Zwischenspeicher nicht mehr mit dem tatsächlichen Zustand übereinstimmen aber dennoch nach der Bitoperation (hier ori) in das Register zurückgeschrieben. &lt;br /&gt;
&lt;br /&gt;
Beispiel: PORTA sei anfangs 0b00000000. Die erste Anweisung (a) setzt Bit 0 auf &#039;&#039;&#039;1&#039;&#039;&#039;, PORTA ist danach 0b0000000&#039;&#039;&#039;1&#039;&#039;&#039;. Nun wird im ersten Teil der zweiten Anweisung der Portzustand in ein Register eingelesen (b). Unmittelbar darauf (vor (c)) &amp;quot;feuert&amp;quot; ein Interrupt, in dessen Interrupt-Routine Bit 0 von PORTA gelöscht wird. Nach Verlassen der Interrupt-Routine hat PORTA den Wert 0b00000000. In den beiden noch folgenden Anweisungen des Hauptprogramms wird nun der zwischengespeicherte &amp;quot;alte&amp;quot; Zustand 0b00000001 mit 0b00011100 logisch-&#039;&#039;&#039;ODER&#039;&#039;&#039;-verknüft (c) und das Ergebnis 0b00011101 in PortA geschrieben (d). Obwohl zwischenzeitlich Bit 0 gelöscht wurde, ist es nach (d) wieder gesetzt. &lt;br /&gt;
&lt;br /&gt;
Lösungsmöglichkeiten:&lt;br /&gt;
* Register ohne besondere Vorkehrungen nicht in Interruptroutinen &#039;&#039;und&#039;&#039; im Hauptprogramm verändern.&lt;br /&gt;
* Interrupts vor Veränderungen in Registern, die auch in ISRs verändert werden, deaktivieren (&amp;quot;cli&amp;quot;).&lt;br /&gt;
* Bits einzeln löschen oder setzen. sbi und cbi können nicht unterbrochen werden. Vorsicht: nur Register im unteren Speicherbereich sind mittels sbi/cbi ansprechbar. Der Compiler kann nur für diese sbi/cbi-Anweisungen generieren. Für Register außerhalb dieses Adressbereichs (&amp;quot;Memory-Mapped&amp;quot;-Register) werden auch zur Manipulation einzelner Bits abhängige Anweisungen erzeugt (lds,...,sts).&lt;br /&gt;
&lt;br /&gt;
* siehe auch: [http://www.nongnu.org/avr-libc/user-manual/index.html Dokumentation der avr-libc] Frequently asked Questions/Fragen Nr. 1 und 8. (Stand: avr-libc Vers. 1.0.4)&lt;br /&gt;
&lt;br /&gt;
== Interruptflags löschen ==&lt;br /&gt;
&lt;br /&gt;
Beim Löschen von Interruptflags haben AVRs eine Besonderheit, die auch im Datenblatt beschrieben ist: Es wird zum Löschen eine 1 in das betreffende Bit geschrieben. &lt;br /&gt;
&lt;br /&gt;
Hinweis:&amp;lt;br /&amp;gt;&lt;br /&gt;
Bei Registern mit mehreren Interrupt-Flag-Bits (wie die Timer Interrupt Flag Register)  &#039;&#039;&#039;nicht&#039;&#039;&#039;  die übliche bitweise VerODERung nehmen, sondern eine direkte Zuweisung machen. Da sonst weitere Flags, als nur das gewünschte, ebenfalls gelöscht werden könnten.&amp;lt;br /&amp;gt;&lt;br /&gt;
([http://www.mikrocontroller.net/topic/171148#1640133 Erklärung]).&lt;br /&gt;
&lt;br /&gt;
== Was macht das Hauptprogramm? ==&lt;br /&gt;
&lt;br /&gt;
Im einfachsten (Ausnahme-)Fall gar nichts mehr. Es ist also durchaus denkbar, ein Programm zu schreiben, welches in der main-Funktion lediglich noch die Interrupts aktiviert und dann in einer Endlosschleife verharrt. Sämtliche Funktionen werden dann in den ISRs abgearbeitet. Diese Vorgehensweise ist jedoch bei den meisten Anwendungen schlecht: man verschenkt eine Verarbeitungsebene und hat außerdem möglicherweise Probleme durch Interruptroutinen, die zu viel Verarbeitungszeit benötigen.&lt;br /&gt;
&lt;br /&gt;
Normalerweise wird man in den Interruptroutinen nur die bei Auftreten des jeweiligen Interruptereignisses unbedingt notwendigen Operationen ausführen lassen. Alle weniger kritischen Aufgaben werden dann im Hauptprogramm abgearbeitet.&lt;br /&gt;
&lt;br /&gt;
* siehe auch: [http://www.nongnu.org/avr-libc/user-manual/index.html Dokumentation der avr-libc] Abschnitt Modules/Interrupts and Signals&lt;br /&gt;
&lt;br /&gt;
= Sleep-Modes =&lt;br /&gt;
&lt;br /&gt;
AVR Controller verfügen über eine Reihe von sogenannten [[Sleep Mode |&#039;&#039;Sleep-Modes&#039;&#039;]] (&amp;quot;Schlaf-Modi&amp;quot;). Diese ermöglichen es, Teile des Controllers abzuschalten. Zum Einen kann damit besonders bei Batteriebetrieb Strom gespart werden, zum Anderen können Komponenten des Controllers deaktiviert werden, die die Genauigkeit des Analog-Digital-Wandlers bzw. des Analog-Comparators negativ beeinflussen. Der Controller wird durch Interrupts aus dem Schlaf geweckt. Welche Interrupts den jeweiligen Schlafmodus beenden, ist einer Tabelle im Datenblatt des jeweiligen Controllers zu entnehmen.&lt;br /&gt;
Die Funktionen (eigentlich Makros) der avr-libc stehen nach Einbinden der header-Datei &#039;&#039;sleep.h&#039;&#039; zur Verfügung.&lt;br /&gt;
&lt;br /&gt;
;set_sleep_mode (uint8_t mode): Setzt den Schlafmodus, der bei Aufruf von sleep() aktiviert wird. In sleep.h sind einige Konstanten definiert (z.&amp;amp;nbsp;B. SLEEP_MODE_PWR_DOWN). Die definierten Modi werden jedoch nicht alle von sämtlichten AVR-Controllern unterstützt.&lt;br /&gt;
;sleep_enable(): Aktiviert den gesetzten Schlafmodus, versetzt den Controller aber noch nicht in den Schlafmodus&lt;br /&gt;
;sleep_cpu(): Versetzt den Controller in den Schlafmodus .sleep_cpu wird im Prinzip durch die Assembler-Anweisung &#039;&#039;sleep&#039;&#039; ersetzt.&lt;br /&gt;
;sleep_disable(): Deaktiviert den gesetzten Schlafmodus&lt;br /&gt;
;sleep_mode(): Versetzt den Controller in den mit set_sleep_mode gewählten Schlafmodus. Das Makro entspricht sleep_enable()+sleep_cpu()+sleep_disable(), beinhaltet also nicht die Aktivierung von Interrupts (besser nicht benutzen).&lt;br /&gt;
&lt;br /&gt;
Bei Anwendung von sleep_cpu() müssen Interrupts also bereits freigeben sein (sei()), da der Controller sonst nicht mehr &amp;quot;aufwachen&amp;quot; kann. sleep_mode() ist nicht geeignet für die Verwendung in ISR Interrupt-Service-Routinen, da bei deren Abarbeitung Interrupts global deaktiviert sind und somit auch die möglichen &amp;quot;Aufwachinterrupts&amp;quot;. Abhilfe: stattdessen sleep_enable(), sei(), sleep_cpu(), sleep_disable() und evtl. cli() verwenden (vgl. Dokumentation der avr-libc).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
#include &amp;lt;avr/io.h&amp;gt;&lt;br /&gt;
#include &amp;lt;avr/sleep.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
int main(void)&lt;br /&gt;
{&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
   while (1) {&lt;br /&gt;
...&lt;br /&gt;
      set_sleep_mode(SLEEP_MODE_PWR_DOWN);&lt;br /&gt;
      sleep_mode();&lt;br /&gt;
   &lt;br /&gt;
      // Code hier wird erst nach Auftreten eines entsprechenden&lt;br /&gt;
      // &amp;quot;Aufwach-Interrupts&amp;quot; verarbeitet&lt;br /&gt;
...&lt;br /&gt;
   }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In älteren Versionenen der avr-libc wurden nicht alle AVR-Controller durch die sleep-Funktionen richtig angesteuert. Mit avr-libc 1.2.0 wurde die Anzahl der unterstützten Typen jedoch deutlich erweitert. Bei nicht-unterstützten Typen erreicht man die gewünschte Funktionalität durch direkte &amp;quot;[[Bitmanipulation]]&amp;quot; der entsprechenden Register (vgl. Datenblatt) und Aufruf des Sleep-Befehls via Inline-Assembler oder sleep_cpu():&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
#include &amp;lt;avr/io.h&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
   // Sleep-Mode &amp;quot;Power-Save&amp;quot; beim ATmega169 &amp;quot;manuell&amp;quot; aktivieren&lt;br /&gt;
   SMCR = (3&amp;lt;&amp;lt;SM0) | (1&amp;lt;&amp;lt;SE);&lt;br /&gt;
   asm volatile (&amp;quot;sleep&amp;quot;::); // alternativ sleep_cpu() aus sleep.h&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Sleep Modi ==&lt;br /&gt;
Zu beachten ist, dass unterschiedliche Prozessoren aus der AVR Familie unterschiedliche Sleep-Modi unterstützen oder nicht unterstützen. Auskunft über die tatsächlichen Gegebenheiten gibt, wie immer, das zum Prozessor gehörende Datenblatt. Die unterschiedlichen Modi unterscheiden sich dadurch, welche Bereiche des Prozessors abgeschaltet werden. Damit korrespondiert unmittelbar welche Möglichkeiten es gibt, den Prozessor aus den jeweiligen Sleep Modus wieder aufzuwecken.&lt;br /&gt;
&lt;br /&gt;
;Idle Mode (SLEEP_MODE_IDLE): Die CPU kann durch SPI, USART, Analog Comperator, ADC, TWI, Timer, Watchdog und irgendeinen anderen Interrupt wieder aufgeweckt werden.&lt;br /&gt;
&lt;br /&gt;
;ADC Noise Reduction Mode (SLEEP_MODE_ADC): In diesem Modus liegt das Hauptaugenmerk darauf, die CPU soweit stillzulegen, dass der ADC möglichst keine Störungen aus dem inneren der CPU auffangen kann. Aufwachen aus diesem Modus kann ausgelöst werden durch den ADC, externe Interrupts, TWI, Timer und Watchdog.&lt;br /&gt;
&lt;br /&gt;
;Power-Down Mode (SLEEP_MODE_PWR_DOWN): In diesem Modus wird ein externer Oszillator (Quarz, Quarzoszillator) gestoppt. Geweckt werden kann die CPU durch einen externen Level Interrupt, TWI, Watchdog, Brown-Out-Reset&lt;br /&gt;
&lt;br /&gt;
;Power-Save-Mode (SLEEP_MODE_PWR_SAVE): Power-Save ist identisch zu Power-Down mit einer Ausnahme: Ist der Timer 2 auf die Verwendung eines externen Taktes konfiguriert, so läuft dieser Timer auch im Power-Save weiter und kann die CPU mit einem Interrupt aufwecken.&lt;br /&gt;
&lt;br /&gt;
;Standby-Mode (SLEEP_MODE_STANDBY, SLEEP_MODE_EXT_STANDBY): Voraussetzung für den Standby-Modus ist die Verwendung eines Quarzes oder eines Quarzoszillators (also einer externen Taktquelle). Ansonsten ist dieser Modus identisch zum Power-Down Modus. Vorteil dieses Modus ist eine kürzere Aufwachzeit.&lt;br /&gt;
&lt;br /&gt;
Siehe auch:&lt;br /&gt;
* [http://www.nongnu.org/avr-libc/user-manual/index.html Dokumentation der avr-libc] Abschnitt Modules/Power Management and Sleep-Modes&lt;br /&gt;
* [http://www.mikrocontroller.net/topic/96369#832712 Forenbeitrag] zur &amp;quot;Nichtverwendung&amp;quot; von sleep_mode in ISRs.&lt;br /&gt;
&lt;br /&gt;
= Zeiger =&lt;br /&gt;
Zeiger (engl. &#039;&#039;Pointer&#039;&#039;) sind Variablen, die die Adresse von Daten oder Funktionen enthalten und belegen 16 Bits. Die Größe hängt mit dem adressierbaren Speicherbereich zusammen und der GCC reserviert dann den entsprechenden Platz.&lt;br /&gt;
Ggf. ist es also günstiger, Indizes auf Arrays (Listen) zu verwenden, so dass der GCC für die Zeigerarithmetik den erforderlichen RAM nur temporär benötigt.&lt;br /&gt;
&lt;br /&gt;
Siehe auch: [[Zeiger]]&lt;br /&gt;
&lt;br /&gt;
= Speicherzugriffe =&lt;br /&gt;
&lt;br /&gt;
Atmel AVR-Controller verfügen typisch über drei Speicher:&lt;br /&gt;
&lt;br /&gt;
* [[RAM]]: Im RAM (genauer statisches RAM/SRAM) wird vom gcc-Compiler Platz für Variablen reserviert. Auch der Stack befindet sich im RAM. Dieser Speicher ist &amp;quot;flüchtig&amp;quot;, d.h. der Inhalt der Variablen geht beim Ausschalten oder einem Zusammenbruch der Spannungsversorgung verloren.&lt;br /&gt;
&lt;br /&gt;
* Programmspeicher: Ausgeführt als FLASH-Speicher, seitenweise wiederbeschreibbar. Darin ist das Anwendungsprogramm abgelegt.&lt;br /&gt;
&lt;br /&gt;
* [[EEPROM]]: Nichtflüchtiger Speicher, d.h. der einmal geschriebene Inhalt bleibt auch ohne Stromversorgung erhalten. Byte-weise schreib/lesbar. Im EEPROM werden typischerweise gerätespezifische Werte wie z.&amp;amp;nbsp;B. Kalibrierungswerte von Sensoren abgelegt.&lt;br /&gt;
&lt;br /&gt;
Einige AVRs besitzen keinen RAM-Speicher, lediglich die Register können als &amp;quot;Arbeitsvariablen&amp;quot;&lt;br /&gt;
genutzt werden. Da die Anwendung des avr-gcc auf solch &amp;quot;kleinen&amp;quot; Controllern ohnehin selten sinnvoll ist und auch nur bei einigen RAM-losen Typen nach [http://lightner.net/avr/ATtinyAvrGcc.html &amp;quot;Bastelarbeiten&amp;quot;] möglich ist, werden diese Controller hier nicht weiter berücksichtigt. Auch EEPROM-Speicher ist nicht auf allen Typen verfügbar. Generell sollten die nachfolgenden Erläuterungen auf alle ATmega-Controller und die größeren AT90-Typen übertragbar sein. Für die Typen ATtiny2313, ATtiny26 und viele weitere der &amp;quot;ATtiny-Reihe&amp;quot; gelten die Ausführungen ebenfalls.&lt;br /&gt;
&lt;br /&gt;
Siehe auch:&lt;br /&gt;
* [[Binäre Daten zum Programm hinzufügen]]&lt;br /&gt;
== RAM ==&lt;br /&gt;
&lt;br /&gt;
Die Verwaltung des RAM-Speichers erfolgt durch den Compiler, im Regelfall ist beim Zugriff auf Variablen im RAM nichts Besonderes zu beachten. Die Erläuterungen in jedem brauchbaren C-Buch gelten auch für den vom avr-gcc-Compiler erzeugten Code.&lt;br /&gt;
&lt;br /&gt;
Um Speicher dynamisch (während der Laufzeit) zu reservieren, kann &#039;&#039;&#039;malloc()&#039;&#039;&#039; verwendet werden. malloc(size) &amp;quot;alloziert&amp;quot; (~reserviert) einen gewissen Speicherblock mit &#039;&#039;&#039;size&#039;&#039;&#039; Bytes. Ist kein Platz für den neuen Block, wird NULL (0) zurückgegeben.&lt;br /&gt;
&lt;br /&gt;
Wird der angelegte Block zu klein (groß), kann die Größe mit realloc() verändert werden. Den allozierten Speicherbereich kann man mit free() wieder freigeben. Wenn das Freigeben eines Blocks vergessen wird spricht man von einem &amp;quot;Speicherleck&amp;quot; (memory leak).&lt;br /&gt;
&lt;br /&gt;
malloc() legt Speicherblöcke im &#039;&#039;&#039;Heap&#039;&#039;&#039; an, belegt man zuviel Platz, dann wächst der Heap zu weit nach oben und überschreibt den Stack, und der Controller kommt in Teufels Küche. Das kann leider nicht nur passieren wenn man insgesamt zu viel Speicher anfordert, sondern auch wenn man Blöcke unterschiedlicher Größe in ungünstiger Reihenfolge alloziert/freigibt (siehe Artikel [[Heap-Fragmentierung]]). Aus diesem Grund sollte man malloc() auf Mikrocontrollern sehr sparsam (am besten gar nicht) verwenden.&lt;br /&gt;
&lt;br /&gt;
Beispiel zur Verwendung von malloc():&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
#include &amp;lt;stdlib.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
void foo(void) {&lt;br /&gt;
  // neuen speicherbereich anlegen,&lt;br /&gt;
  // platz für 10 uint16&lt;br /&gt;
  uint16_t* pBuffer = malloc(10 * sizeof(uint16_t));&lt;br /&gt;
&lt;br /&gt;
  // darauf zugreifen, als wärs ein gewohnter Buffer&lt;br /&gt;
  pBuffer[2] = 5;&lt;br /&gt;
&lt;br /&gt;
  // Speicher (unbedingt!) wieder freigeben&lt;br /&gt;
  free(pBuffer);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Wenn (wie in obigem Beispiel) dynamischer Speicher nur für die Dauer einer Funktion benötigt und am Ende wieder freigegeben wird, bietet es sich an, statt malloc() &#039;&#039;&#039;alloca()&#039;&#039;&#039; zu verwenden. Der Unterschied zu malloc() ist, dass der Speicher auf dem Stack reserviert wird, und beim Verlassen der Funktion automatisch wieder freigegeben wird. Es kann somit kein Speicherleck und keine Fragmentierung entstehen.&lt;br /&gt;
&lt;br /&gt;
siehe auch:&lt;br /&gt;
* http://www.nongnu.org/avr-libc/user-manual/malloc.html&lt;br /&gt;
&lt;br /&gt;
== Flash mit PROGMEM und pgm_read ==&lt;br /&gt;
&lt;br /&gt;
→ [http://nongnu.org/avr-libc/user-manual/group__avr__pgmspace.html avr-libc: Doku zu avr/pgmspace.h]&lt;br /&gt;
&lt;br /&gt;
Ein Zugriff auf Konstanten im Programmspeicher ist mittels avr-gcc erst ab Version 4.7 &amp;quot;transparent&amp;quot; möglich. Um Daten aus dem Flash zu lesen, muss die AVR-Instruktion LPM (&#039;&#039;Load from Program Memory&#039;&#039;) erzeugt werden, bei Controllern mit mehr als 64kiB Flash auch ELMP.&lt;br /&gt;
&lt;br /&gt;
Dazu gibt es das AVR-spezifische GCC-Attribut &amp;lt;tt&amp;gt;progmem&amp;lt;/tt&amp;gt;, mit dem eine Variablendeklaration im &#039;&#039;static storage&#039;&#039;&amp;lt;ref&amp;gt;Variablen der Speicherklasse &#039;&#039;static storage&#039;&#039; haben eine unbegrenzte Lebensdauer.  Beispiel für solche Variablen sind globale Variablen, aber auch static-Variablen innerhalb einer Funktion gehören dazu.  Beispiele für Variablen, die nicht &#039;&#039;static storage&#039;&#039; sind: auto-Variablen (&amp;quot;normale&amp;quot; lokale Variablen), register-Variablen, durch malloc geschaffene Objekte, etc.&amp;lt;/ref&amp;gt; markiert werden kann:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
const int value __attribute__((progmem)) = 1;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Effekt ist, dass die so markierte Variable nicht im RAM sondern im Flash angelegt wird.  Wird durch &amp;quot;normalen&amp;quot; C-Code auf solch eine Variable zugegriffen, wird jedoch aus dem RAM gelesen und nicht aus dem Flash!&lt;br /&gt;
&lt;br /&gt;
Zum Lesen aus dem Flash stellt die avr-libc daher zahlreiche Makros zur Verfügung.  Zudem wird das Makro &amp;lt;tt&amp;gt;PROGMEM&amp;lt;/tt&amp;gt; definiert, das etwas Tipparbeit spart:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
#include &amp;lt;avr/pgmspace.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
const int value PROGMEM = 1;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;progmem&amp;lt;/tt&amp;gt; funktioniert im Wesentlichen wie ein Section-Attribut, das die Daten in der Section &amp;lt;tt&amp;gt;.progmem.data&amp;lt;/tt&amp;gt; ablegt.  Im Gegensatz zum Section-Attribut werden jedoch noch weitere Prüfungen unternommen, ab avr-gcc 4.6 etwa muss die entsprechende Variable &amp;lt;tt&amp;gt;const&amp;lt;/tt&amp;gt; sein.&lt;br /&gt;
&lt;br /&gt;
=== Integer und float ===&lt;br /&gt;
&lt;br /&gt;
Zum Lesen von Skalaren stellt die avr-libc folgende Makros zu Verfügung, die jeweils ein Argument erhalten: Die 16-Bit Adresse des zu lesenden Wertes&amp;lt;ref&amp;gt;Damit ist der mögliche Speicherbereich für Flash-Konstanten auf 64kiB begrenzt. Einige pgmspace-Funktionen ermöglichen den Lesezugriff auf den gesamten Flash-Speicher, intern via Assembler-Anweisung ELPM. Die Initialisierungswerte des Speicherinhalts jenseits der 64kiB-Marke müssen dann jedoch auf anderem Weg angelegt werden, d.h. nicht per PROGMEM. Evtl. eigene Section und Linker-Optionen. Alt und nicht ganz korrekt: Die avr-libc pgmspace-Funktionen unterstützen nur die unteren 64kiB Flash bei Controllern mit mehr als 64kiB.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:{| {{Tabelle}}&lt;br /&gt;
|+ Übersicht der &amp;lt;tt&amp;gt;pgm_read&amp;lt;/tt&amp;gt; Funktionen aus&amp;lt;br/&amp;gt;dem Header &amp;lt;tt&amp;gt;avr/pgmspace.h&amp;lt;/tt&amp;gt; der avr-libc&lt;br /&gt;
|-&lt;br /&gt;
! Gelesener Wert || &amp;lt;tt&amp;gt;pgm_read_xxx&amp;lt;/tt&amp;gt; || Anzahl Bytes&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;tt&amp;gt;uint8_t&amp;lt;/tt&amp;gt; || &amp;lt;tt&amp;gt;pgm_read_byte&amp;lt;/tt&amp;gt; || 1&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;tt&amp;gt;uint16_t&amp;lt;/tt&amp;gt; || &amp;lt;tt&amp;gt;pgm_read_word&amp;lt;/tt&amp;gt; || 2&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;tt&amp;gt;uint32_t&amp;lt;/tt&amp;gt; || &amp;lt;tt&amp;gt;pgm_read_dword&amp;lt;/tt&amp;gt; || 4&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;tt&amp;gt;float&amp;lt;/tt&amp;gt; || &amp;lt;tt&amp;gt;pgm_read_float&amp;lt;/tt&amp;gt;&amp;lt;ref&amp;gt;ab avr-libc 1.7.0&amp;lt;/ref&amp;gt; || 4&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Soll ein Zeiger gelesen werden, so verwendet man &amp;lt;tt&amp;gt;pgm_read_word&amp;lt;/tt&amp;gt; und castet das Ergebnis zum gewünschten Zeiger-Typ.&lt;br /&gt;
&lt;br /&gt;
;Beispiele:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
#include &amp;lt;avr/pgmspace.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
/* Byte */&lt;br /&gt;
const uint8_t aByte PROGMEM = 123;&lt;br /&gt;
&lt;br /&gt;
/* int-Array */&lt;br /&gt;
const int anArray[] PROGMEM = { 18, 3 ,70 };&lt;br /&gt;
&lt;br /&gt;
void foo (void)&lt;br /&gt;
{&lt;br /&gt;
  /* Zeiger */&lt;br /&gt;
  static const uint8_t* const aPointer PROGMEM = &amp;amp;aByte;&lt;br /&gt;
&lt;br /&gt;
  uint8_t a        = pgm_read_byte (&amp;amp;aByte);&lt;br /&gt;
  int a2           = (int) pgm_read_word (&amp;amp;anArray[2]);&lt;br /&gt;
  const uint8_t* p = (const uint8_t*) pgm_read_word (&amp;amp;aPointer);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Blöcke ===&lt;br /&gt;
&lt;br /&gt;
In den Flash-Funktionen der avr-libc sind keine der pgm_read_xxxx Nomenklatur folgenden Funktionen, die Speicherblöcke auslesen oder vergleichen. Die enstprechende Funktionen sind Varianten von &amp;lt;tt&amp;gt;memcpy&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;memcmp&amp;lt;/tt&amp;gt; und heißt &amp;lt;tt&amp;gt;memcpy_P&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;memcmp_P&amp;lt;/tt&amp;gt;, usw.  Für weitere Funktionen und deren Prototypen siehe die Dokumentation der avr-libc.&lt;br /&gt;
&lt;br /&gt;
=== Strings ===&lt;br /&gt;
&lt;br /&gt;
Strings sind in C nichts anderes als eine Abfolge von Zeichen und einem &amp;lt;tt&amp;gt;&#039;\0&#039;&amp;lt;/tt&amp;gt; als Stringende. Der prinzipielle Weg ist daher identisch zum  Lesen von Bytes, wobei auf die [[FAQ#Wie funktioniert String-Verarbeitung in C?|Besonderheiten von Strings]] wie 0-Terminierung geachtet werden muss.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
#include &amp;lt;avr/pgmspace.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
size_t my_string_length (const char* addr)&lt;br /&gt;
{&lt;br /&gt;
    size_t length = 0;&lt;br /&gt;
&lt;br /&gt;
    while (pgm_read_byte (addr++))&lt;br /&gt;
    {&lt;br /&gt;
        len++;&lt;br /&gt;
    }&lt;br /&gt;
    return length;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Zur Unterstützung des Programmierers steht das Repertoire der str-Funktionen auch in jeweils eine Variante zur Verfügung, die mit dem Flash-Speicher arbeiten kann. Die Funktionsnamen tragen den Suffix &amp;lt;tt&amp;gt;_P&amp;lt;/tt&amp;gt;. Darüber hinaus gibt es das Makro &amp;lt;tt&amp;gt;PSTR&amp;lt;/tt&amp;gt;, das ein String-Literal im Flash-Speicher ablegt und die Adresse des Strings liefert:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
#include &amp;lt;avr/pgmspace.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
/* Liefert true zurück, wenn string_im_ram gleich &amp;quot;Hallo Welt&amp;quot; ist. */&lt;br /&gt;
int foo (const char* string_im_ram)&lt;br /&gt;
{&lt;br /&gt;
    return strcmp_P (string_im_ram, PSTR (&amp;quot;Hallo Welt&amp;quot;));&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Zu beachten ist, dass &amp;lt;tt&amp;gt;PSTR&amp;lt;/tt&amp;gt; nur innerhalb von Funktionen verwendet werden kann.&lt;br /&gt;
&lt;br /&gt;
; Array aus Strings:&lt;br /&gt;
&lt;br /&gt;
Arrays aus Strings im Flash-Speicher werden in zwei Schritten angelegt:&lt;br /&gt;
&lt;br /&gt;
# Zuerst die einzelnen Elemente des Arrays und&lt;br /&gt;
# im Anschluss ein Array, in dem die Startaddressen der Strings abgelegt werden.&lt;br /&gt;
&lt;br /&gt;
Zum Auslesen wird zuerst die Adresse des gewünschten Elements aus dem Array im Flash-Speicher gelesen, die im Anschluss dazu genutzt wird, um auf das Element (den String) selbst zuzugreifen.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
#include &amp;lt;avr/pgmspace.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
static const char str1[] PROGMEM = &amp;quot;Hund&amp;quot;;&lt;br /&gt;
static const char str2[] PROGMEM = &amp;quot;Katze&amp;quot;;&lt;br /&gt;
static const char str3[] PROGMEM = &amp;quot;Maus&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
const char * const array[] PROGMEM = &lt;br /&gt;
{&lt;br /&gt;
   str1, str2, str3&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
// Liest den i-ten String von array[] und kopiert ihn ins RAM nach buf[]&lt;br /&gt;
void read_string (char* buf, size_t i)&lt;br /&gt;
{&lt;br /&gt;
    // Lese die Adresse des i-ten Strings aus array[]&lt;br /&gt;
    const char *parray = (const char*) pgm_read_word (&amp;amp;array[i]);&lt;br /&gt;
&lt;br /&gt;
    // Kopiere den Inhalt der Zeichenkette vom Flash ins RAM&lt;br /&gt;
    strcpy_P (buf, parray);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Eine weitere Möglichkeit ist, die Strings in einem 2-dimensionalen char-Array abzulegen anstatt deren Adresse in einem 1-dimensionalen Adress-Array zu speichern.&lt;br /&gt;
&lt;br /&gt;
Vorteil ist, dass der Code einfacher wird.  Nachteil ist, dass bei unterschiedlich langen Strings Speicherplatz verschwendet wird, weil sich die Array-Dimension and der Länge des längsten Strings orientieret.  Bei in etwa gleich langen Strings kann es aber sogar Speicherplatz sparen, denn es die Adressen der einzelnen Strings müssen nicht abgespeichert werden.&amp;lt;ref&amp;gt;In unserem Hund-Katze-Maus Beispiel belegt die erste Variante 22 Bytes Daten und 18 Bytes Code, die zweite Variante mit 2-dimensionalem Array belegt 18 Bytes Daten und 20 Bytes Code. Gemessen wurde mit avr-gcc 4.8 -Os für ATmega8.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
#include &amp;lt;avr/pgmspace.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
// Die &amp;quot;6&amp;quot; ist 1 plus die Länge des längsten Strings (&amp;quot;Katze&amp;quot;)&lt;br /&gt;
const char array[][6] PROGMEM = &lt;br /&gt;
{&lt;br /&gt;
   &amp;quot;Hund&amp;quot;, &amp;quot;Katze&amp;quot;, &amp;quot;Maus&amp;quot;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
// Liest den i-ten String von array[] und kopiert ihn ins RAM nach buf[]&lt;br /&gt;
void read_string (char* buf, size_t i)&lt;br /&gt;
{&lt;br /&gt;
    // Kopiere den Inhalt der i-ten Zeichenkette vom Flash ins RAM&lt;br /&gt;
    strcpy_P (buf, array[i]);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Siehe dazu auch die avr-libc FAQ: [http://www.nongnu.org/avr-libc/user-manual/FAQ.html#faq_rom_array How do I put an array of strings completely in ROM?]&lt;br /&gt;
&lt;br /&gt;
=== Warum so kompliziert? ===&lt;br /&gt;
&lt;br /&gt;
Zu dem Thema, warum die Verabeitung von Werten aus dem Flash-Speicher so kompliziert ist, sei hier nur kurz erläutert: Die Harvard-Architektur des AVR weist getrennte Adressräume für Programm (Flash) und Datenspeicher (RAM) auf. Der C-Standard sieht keine unterschiedlichen Adressräume vor.&lt;br /&gt;
&lt;br /&gt;
Hat man zum Beispiel eine Funktion string_an_uart (const char* s) und übergibt an diese Funktion die Adresse einer Zeichenkette, dann weiß die Funktion nicht, ob die Adresse in den Flash-Speicher oder das RAM zeigt. Weder aus dem Pointer-Wert, also dem Zahlenwert, noch aus dem &amp;quot;const&amp;quot; kann auf den Ort der Ablage geschlossen werden.&lt;br /&gt;
&lt;br /&gt;
Einige AVR-Compiler bilden die Harvard-Architektur ab, indem sie in einen Pointer nicht nur die Adresse speichern, sondern auch den Ablageort wie &#039;&#039;Flash&#039;&#039; oder &#039;&#039;RAM&#039;&#039;. In einem Aufruf einer Funktion wird dann bei Pointer-Parametern neben der Adresse auch der Speicherbereich, auf den der Pointer zeigt, übergeben.&lt;br /&gt;
&lt;br /&gt;
Dies hat jedoch auch Nachteile, denn bei jedem Zugriff über einen Zeiger muss zur &#039;&#039;Laufzeit&#039;&#039; entschieden werden, wie der Zugriff auszuführen ist und entsprechend länglicher und langsamer wird der erzeugte Code.&lt;br /&gt;
&lt;br /&gt;
Siehe auch:&lt;br /&gt;
* [http://www.nongnu.org/avr-libc/user-manual/index.html Dokumentation der avr-libc] Abschnitte Modules/Program Space String Utilities und Abschnitt Modules/Bootloader Support Utilities&lt;br /&gt;
&lt;br /&gt;
=== Variablenzugriff &amp;gt;64kB ===&lt;br /&gt;
&lt;br /&gt;
Die Zeiger beim avr-gcc sind nur 16 Bit breit, können somit also nur 64kiB Datenspeicher adressieren. Als Funktionspointer können sie beim AVR bis zu 128 kiB Programmspeicher adressieren, weil Funktionsadressen immer 16-Bit Worte adressieren und nicht Bytes. Um Flashzugriff jenseits von 64KiB zu bewerkstelligen gibt es mehrere Möglichkeiten:&lt;br /&gt;
&lt;br /&gt;
* Address-Spaces wie &amp;lt;tt&amp;gt;__flash1&amp;lt;/tt&amp;gt; oder &amp;lt;tt&amp;gt;__memx&amp;lt;/tt&amp;gt;, siehe Abschnitt &amp;quot;[[#Jenseits von flash|Jenseits von __flash]]&amp;quot;.&lt;br /&gt;
* Die Funktionen bzw. Makros &amp;lt;tt&amp;gt;pgm_read_xxx_far&amp;lt;/tt&amp;gt; der AVR-Libc, wie im folgenden beschrieben.&lt;br /&gt;
&lt;br /&gt;
Unverständlicherweise gibt es in der AVR-Libc keine Funktion, um 32-Bit Pointer zu erhalten. Hier schafft ein eigenes GNU-C99 Makro Abhilfe:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
#include &amp;lt;avr/io.h&amp;gt;&lt;br /&gt;
#include &amp;lt;avr/pgmspace.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
//====================================================================&lt;br /&gt;
// Macro to access strings defined in PROGMEM above 64kB&lt;br /&gt;
//--------------------------------------------------------------------&lt;br /&gt;
#define FAR(var)                     \&lt;br /&gt;
({ uint_farptr_t tmp;                \&lt;br /&gt;
   __asm__ (                         \&lt;br /&gt;
       &amp;quot;ldi    %A0, lo8(%1)&amp;quot;  &amp;quot;\n\t&amp;quot; \&lt;br /&gt;
       &amp;quot;ldi    %B0, hi8(%1)&amp;quot;  &amp;quot;\n\t&amp;quot; \&lt;br /&gt;
       &amp;quot;ldi    %C0, hh8(%1)&amp;quot;         \&lt;br /&gt;
       : &amp;quot;=d&amp;quot; (tmp)                  \&lt;br /&gt;
       : &amp;quot;i&amp;quot;  (&amp;amp;(var)));             \&lt;br /&gt;
   tmp;                              \&lt;br /&gt;
})&lt;br /&gt;
//-------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
//===================================================================&lt;br /&gt;
// Define a section above 64kiB (FAR_SECTION)&lt;br /&gt;
// and add the required linker argument below&lt;br /&gt;
// -Wl,--section-start=.far_section=0x10000&lt;br /&gt;
//--------------------------------------------------------------------&lt;br /&gt;
#define FAR_SECTION   __attribute__((__section__(&amp;quot;.far_section&amp;quot;)))&lt;br /&gt;
//--------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
//====================================================================&lt;br /&gt;
// Just a Sample&lt;br /&gt;
//--------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
const char MyString[] FAR_SECTION = &amp;quot;Hier liegt mein FAR-Teststring!&amp;quot;;&lt;br /&gt;
const char MyBmp64[]  FAR_SECTION = {0xAA,0xBB,0xCC,0xDD,0xEE,0xFF,0x00};&lt;br /&gt;
&lt;br /&gt;
int main(void)&lt;br /&gt;
{&lt;br /&gt;
  char MyChar;&lt;br /&gt;
  DDRC = 0xFF;&lt;br /&gt;
  do&lt;br /&gt;
  {&lt;br /&gt;
    MyChar = pgm_read_byte_far(FAR(MyBmp64));&lt;br /&gt;
    PORTC  = MyChar;&lt;br /&gt;
  }&lt;br /&gt;
  while(MyChar);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
D.h. man muss&lt;br /&gt;
* Das Makro &amp;lt;tt&amp;gt;FAR&amp;lt;/tt&amp;gt; im Quellcode einfügen&lt;br /&gt;
* Die Definition der neuen Section &amp;lt;tt&amp;gt;FAR_SECTION&amp;lt;/tt&amp;gt; einfügen&lt;br /&gt;
* Die Variablen mit dieser Section kennzeichnen&lt;br /&gt;
* Dem Linker mittels Kommandozeilenoption die Startadrese dieser Section mitteilen&lt;br /&gt;
&lt;br /&gt;
Der Zugriff auf diese Variablen kann nur mittels direkter Pointerarithmetik erfolgen, eine Indizierung von Arrays mit variablem Index ist nicht möglich.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
int n=3;&lt;br /&gt;
MyChar = pgm_read_byte_far(FAR(MyBmp64)+n);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Flash mit __flash und Embedded-C ==&lt;br /&gt;
&lt;br /&gt;
Ab Version 4.7 unterstützt avr-gcc &#039;&#039;Adress-Spaces&#039;&#039; gemäß dem Embedded-C Dokument ISO/IEC TR18037.  Der geläufigste Adress-Space ist &amp;lt;tt&amp;gt;__flash&amp;lt;/tt&amp;gt;, der im Gegensatz zu &amp;lt;tt&amp;gt;progmem&amp;lt;/tt&amp;gt; kein GCC-Attribut ist, sondern ein Qualifier und damit syntaktisch ähnlich verwendet wird wie &amp;lt;tt&amp;gt;const&amp;lt;/tt&amp;gt; oder &amp;lt;tt&amp;gt;volatile&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
GCC kennt keine eigene Option zum Aktivieren von Embedded-C, es wird als GNU-C Erweiterung behandelt. Daher müssen C-Module, die Address-Spaces verwenden, mit &amp;lt;tt&amp;gt;-std=gnu99&amp;lt;/tt&amp;gt; o.ä. compiliert werden.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
static const __flash int value = 10;&lt;br /&gt;
&lt;br /&gt;
int get_value (void)&lt;br /&gt;
{&lt;br /&gt;
  return value;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
# Im Gegensatz zu &amp;lt;tt&amp;gt;progmem&amp;lt;/tt&amp;gt; sind keine speziellen Bibliotheksfunktionen oder -makros für den Zugriff mehr notwendig: Der Code zum Lesen der Variable ist &amp;quot;normales&amp;quot; C.&lt;br /&gt;
# Die Variable wird im richtigen Speicherbereich (Flash) angelegt.&lt;br /&gt;
# &amp;lt;tt&amp;gt;__flash&amp;lt;/tt&amp;gt; ist nur zusammen mit read-only Objekten oder Zeigern, d.h. nur zusammen mit &amp;lt;tt&amp;gt;const&amp;lt;/tt&amp;gt;, erlaubt.&lt;br /&gt;
# Zugriffe wie im obigen Beispiel können (weg)optimiert werden.  Das Beispiel entspricht einem &amp;quot;&amp;lt;tt&amp;gt;return 10&amp;lt;/tt&amp;gt;&amp;quot;.  Es besteht keine Notwendigkeit, für &amp;lt;tt&amp;gt;value&amp;lt;/tt&amp;gt; überhaupt Flash-Speicher zu reservieren.&lt;br /&gt;
&lt;br /&gt;
Auch Zeiger-Indirektionen sind problemlos möglich.  Zu beachten ist, dass &amp;lt;tt&amp;gt;__flash&amp;lt;/tt&amp;gt; auf der richtigen Seite des &amp;quot;&amp;lt;tt&amp;gt;*&amp;lt;/tt&amp;gt;&amp;quot; in der Zeigerdeklaration bzw. -definition steht:&lt;br /&gt;
* &#039;&#039;&#039;Rechts vom &amp;lt;tt&amp;gt;*&amp;lt;/tt&amp;gt;:&#039;&#039;&#039; Der Zeiger selbst liegt im Flash&lt;br /&gt;
* &#039;&#039;&#039;Links vom &amp;lt;tt&amp;gt;*&amp;lt;/tt&amp;gt;:&#039;&#039;&#039; Der Zeiger enthält eine Flash-Adresse&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
// val ist eine Variable im Flash&lt;br /&gt;
const __flash int val = 42;&lt;br /&gt;
&lt;br /&gt;
// pval liegt auch im Flash und enthält die Adresse von val&lt;br /&gt;
const __flash int* const __flash pval = &amp;amp;val;&lt;br /&gt;
&lt;br /&gt;
char get_val (void)&lt;br /&gt;
{&lt;br /&gt;
  // liest den Wert von val über die in pval abgelegte Adresse&lt;br /&gt;
  return *pval;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Blöcke ===&lt;br /&gt;
&lt;br /&gt;
Um Speicherbereiche vom Flash in den RAM zu kopieren, gibt es zwei Möglichkeiten: Zum einen können wie bei &amp;lt;tt&amp;gt;progmem&amp;lt;/tt&amp;gt; beschreiben die Funktionen der avr-libc wie &amp;lt;tt&amp;gt;memcpy_P&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;memcmp_P&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;movmem_P&amp;lt;/tt&amp;gt;, etc. verwendet werden:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
#include &amp;lt;avr/pgmspace.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
// Eine Datenstruktur&lt;br /&gt;
typedef struct&lt;br /&gt;
{&lt;br /&gt;
    int id;&lt;br /&gt;
    char buf[10];&lt;br /&gt;
} data_t;&lt;br /&gt;
&lt;br /&gt;
extern void uart_send (const void*, size_t);&lt;br /&gt;
&lt;br /&gt;
void send_data (const __flash data_t *pdata)&lt;br /&gt;
{&lt;br /&gt;
    // buf wird auf dem Stack angelegt&lt;br /&gt;
    data_t buf;&lt;br /&gt;
    &lt;br /&gt;
    // Kopiere Daten vom Flash nach buf ins RAM&lt;br /&gt;
    memcpy_P (&amp;amp;buf, pdata, sizeof (data_t));&lt;br /&gt;
 &lt;br /&gt;
    // Sende die Daten in buf&lt;br /&gt;
    uart_send (&amp;amp;buf, sizeof (data_t));&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Zum anderen kann eine Struktur auch über direktes Kopieren ins RAM geladen werden:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
#include &amp;lt;stdlib.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
// Eine Datenstruktur&lt;br /&gt;
typedef struct&lt;br /&gt;
{&lt;br /&gt;
    int id;&lt;br /&gt;
    char buf[10];&lt;br /&gt;
} data_t;&lt;br /&gt;
&lt;br /&gt;
extern void uart_send (const void*, size_t);&lt;br /&gt;
&lt;br /&gt;
void send_data (const __flash data_t *pdata)&lt;br /&gt;
{&lt;br /&gt;
    // Kopiere Daten ins RAM.  buf wird auf dem Stack angelegt&lt;br /&gt;
    const data_t buf = *pdata;&lt;br /&gt;
    &lt;br /&gt;
    // Verwendet die Daten in buf&lt;br /&gt;
    uart_send (&amp;amp;buf, sizeof (data_t));&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Strings ===&lt;br /&gt;
&lt;br /&gt;
Natürlich können auch Strings im Flash abgelegt werden und auch mit Funktionen wie &amp;lt;tt&amp;gt;strcpy_P&amp;lt;/tt&amp;gt; aus der avr-libc verarbeitet werden.  Zudem ist es möglich, Flash-Zeiger mit der Adresse eines String-Literals zu initialisieren:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
#include &amp;lt;avr/pgmspace.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
#define FSTR(X) ((const __flash char[]) { X } )&lt;br /&gt;
&lt;br /&gt;
const __flash char * const __flash array[] = &lt;br /&gt;
{&lt;br /&gt;
    FSTR (&amp;quot;Hund&amp;quot;), FSTR (&amp;quot;Katze&amp;quot;), FSTR (&amp;quot;Maus&amp;quot;)&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
size_t get_len (uint8_t tier)&lt;br /&gt;
{&lt;br /&gt;
    return strlen_P (array[tier]);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Leider sieht der Embedded-C Draft nicht vor, String-Literale direkt in einem anderen Adress-Space als &#039;&#039;generic&#039;&#039; anzulegen, so dass hier der Umweg über &amp;lt;tt&amp;gt;FSTR&amp;lt;/tt&amp;gt; genommen werden muss.  Dieses Konstrukt ist nur ausserhalb von Funktionen möglich und kann daher nicht als Ersatz für &amp;lt;tt&amp;gt;PSTR&amp;lt;/tt&amp;gt; aus der avr-libc dienen.&lt;br /&gt;
&lt;br /&gt;
Soll &amp;lt;tt&amp;gt;array&amp;lt;/tt&amp;gt; ein 2-dimensonales Array sein anstatt ein 1-dimensionales Array von Zeigern, dann geht das ohne große Verrenkungen:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
// Die 6 ergibt sich aus 1 plus der Länge des längsten Strings &amp;quot;Katze&amp;quot;&lt;br /&gt;
const __flash char array[][6] = &lt;br /&gt;
{&lt;br /&gt;
    &amp;quot;Hund&amp;quot;, &amp;quot;Katze&amp;quot;, &amp;quot;Maus&amp;quot;&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Weiters besteht die Möglichkeit, &amp;lt;tt&amp;gt;array&amp;lt;/tt&amp;gt; analog anzulegen, wie man es mit &amp;lt;tt&amp;gt;PROGMEM&amp;lt;/tt&amp;gt; machen würde:  Jeder String wird explizit angelegt und seine Adresse bei der Initialisierung von &amp;lt;tt&amp;gt;array&amp;lt;/tt&amp;gt; verwendet.  Dies entspricht dem ersten Beispiel eines 1-dimensionalen Zeigerarrays:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
static const __flash char strHund[]  = &amp;quot;Hund&amp;quot;;&lt;br /&gt;
static const __flash char strKatze[] = &amp;quot;Katze&amp;quot;;&lt;br /&gt;
static const __flash char strMaus[]  = &amp;quot;Maus&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
const __flash char * const __flash array[] = &lt;br /&gt;
{&lt;br /&gt;
    strHund, strKatze, strMaus&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Casts ===&lt;br /&gt;
&lt;br /&gt;
Embedded C fordert, dass zwei Adress-Spaces entweder disjunkt sind – d.h. sie enthalten keine gemeinsamen Adressen – oder aber ein Space komplett im anderen enthalten ist, also eine Teilmengen-Beziehung besteht.  Die Adress-Spaces von avr-gcc sind so implementiert, dass jeder Space Teilmenge jedes anderes ist.  Zwar haben Spaces wie RAM und Flash physikalisch keinen Speicherbereich gemein, allerdings ermöglicht diese Implementierung das Casten von Zeigern zu unterschiedlichen Adress-Spaces&amp;lt;ref&amp;gt;Im Gegensatz zu einem Attribute wie &amp;lt;tt&amp;gt;progmem&amp;lt;/tt&amp;gt; ist ein (Adress Space) Qualifier Teil des Zeiger-Typs.&amp;lt;/ref&amp;gt;:  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
#include &amp;lt;stdbool.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
char read_char (const char *address, bool data_in_flash)&lt;br /&gt;
{&lt;br /&gt;
    if (data_in_flash)&lt;br /&gt;
        return *(const __flash char*) address;&lt;br /&gt;
    else&lt;br /&gt;
        return *address;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Der Cast selbst erzeugt keinen zusätzlichen Code, da eine RAM-Adresse und eine Flash-Adresse die gleiche Binärdarstellung haben.  Allerdings wird über den nach &amp;lt;tt&amp;gt;__flash&amp;lt;/tt&amp;gt; gecasteten Zeiger anders zugegriffen, nämlich per LPM.&lt;br /&gt;
&lt;br /&gt;
=== Jenseits von __flash ===&lt;br /&gt;
&lt;br /&gt;
Ausser &amp;lt;tt&amp;gt;__flash&amp;lt;/tt&amp;gt; gibt es auch folgende Address-Spaces:&lt;br /&gt;
&lt;br /&gt;
; &amp;lt;tt&amp;gt;__flash&amp;lt;/tt&amp;gt;&#039;&#039;N&#039;&#039;: Mit &#039;&#039;N&#039;&#039; = 1..5 sind fünf weitere Spaces, die analog zu &amp;lt;tt&amp;gt;__flash&amp;lt;/tt&amp;gt; funktionieren und deren Zeiger ebenfalls 16 Bit breit sind.  avr-gcc erwartet, dass die zugehörigen Daten, welche in die Section &amp;lt;tt&amp;gt;.progmem&amp;lt;/tt&amp;gt;&#039;&#039;N&#039;&#039;&amp;lt;tt&amp;gt;.data&amp;lt;/tt&amp;gt; abgelegt werden, so lokatiert sind, dass das high-Byte der Adresse (Bits 16..23) gerade &#039;&#039;N&#039;&#039; ist.  Dies wird in Binutils noch nicht unterstützt&amp;lt;ref&amp;gt;[http://sourceware.org/PR14406 Binutils PR14406]: Support .progmem&amp;lt;N&amp;gt;.data sections to work with GCC&#039;s [http://gcc.gnu.org/PR49868 PR49868].&amp;lt;/ref&amp;gt; (Stand Binutils 2.24) Die Unterstützung kann durch ein eigenes Linker-Skript erreicht werden, welches diese Sections wie vom Compiler erwartet lokatiert.&lt;br /&gt;
; &amp;lt;tt&amp;gt;__memx&amp;lt;/tt&amp;gt;: Dieser Address-Space implementiert 3-Byte Zeiger und unterstützt Lesen über 64KiB-Segmentgrenzen hinweg.  Das MSB (Bit 23) gibt dabei an, ob der &amp;lt;tt&amp;gt;__memx&amp;lt;/tt&amp;gt;-Zeiger eine Flash-Adresse enthält (Bit23 = 0) oder eine RAM-Adresse (Bit23 = 1), was folgenden Code erlaubt:&lt;br /&gt;
&amp;lt;!-- Bitte die Tabelle belassen, damit der Code richtig eingerückt wird! --&amp;gt;&lt;br /&gt;
:{|&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
const __memx int a_flash = 42;&lt;br /&gt;
const        int a_ram   = 100;&lt;br /&gt;
&lt;br /&gt;
static int get_a (const __memx int* pa)&lt;br /&gt;
{&lt;br /&gt;
    return *pa;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
int main (void)&lt;br /&gt;
{&lt;br /&gt;
    return get_a (&amp;amp;a_flash) + get_a (&amp;amp;a_ram);&lt;br /&gt;
}&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
|}Dies bedeutet, dass erst zur &#039;&#039;Laufzeit&#039;&#039; entschieden werden kann, ob aus dem RAM oder aus dem Flash gelesen werden soll, was &amp;lt;tt&amp;gt;__memx&amp;lt;/tt&amp;gt; im Vergleich zu den anderen Address-Spaces langsamer macht. Ausserdem ist zu beachten, dass &amp;lt;tt&amp;gt;__memx&amp;lt;/tt&amp;gt;-Zeiger zwar 24-Bit Zeiger sind, die zugrundeliegende Adress-Arithmetik jedoch gemäß dem C-Standard erfolgt, also als 16-Bit Arithmetik. Bestehende Funktion der avr libc wie z.B. printf_P funktionieren damit ebensowenig wie printf! Wenn man __memx verwenden will, braucht man dafür eigene Funktionen.&lt;br /&gt;
&lt;br /&gt;
=== __flash, progmem und Portierbarkeit ===&lt;br /&gt;
&lt;br /&gt;
Da ab er aktuellen Compilerversion 4.7 sowohl &amp;lt;tt&amp;gt;__flash&amp;lt;/tt&amp;gt; als auch &amp;lt;tt&amp;gt;PROGMEM&amp;lt;/tt&amp;gt; und die &amp;lt;tt&amp;gt;pgm_read&amp;lt;/tt&amp;gt;-Funktionen zur Verfügung stehen, ergibt sich die Frage, welche Variante &amp;quot;besser&amp;quot; ist und wie zwischen ihnen hin- und her zu portieren ist.&lt;br /&gt;
&lt;br /&gt;
Zunächst sei erwähnt, dass &amp;lt;tt&amp;gt;__flash&amp;lt;/tt&amp;gt; kein Ersatz für &amp;lt;tt&amp;gt;PROGMEM&amp;lt;/tt&amp;gt; ist, sondern lediglich eine Alternative dazu.  Das &amp;quot;alte&amp;quot; progmem wird weiterhin mir gleicher Semantik unterstützt, so dass alter Code ohne Änderungen mit den neueren Compilerversionen übersetzbar bleibt.&lt;br /&gt;
&lt;br /&gt;
Von der Codegüte her dürften sich keine großen Unterschiede ergeben.  Es ist nicht zu erwarten, dass die eine oder die andere Variante wesentlich besseren oder schlechteren Code erzeugt — von einer Ausnahme abgesehen:  Der Wert beim Zugriff ist zur Compilezeit bekannt und kann daher eliminiert werden.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
static const __flash char x[] = { &#039;A&#039;, &#039;V&#039;, &#039;R&#039; };&lt;br /&gt;
&lt;br /&gt;
char foo (void)&lt;br /&gt;
{&lt;br /&gt;
    return x[2];&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Dies wird übersetzt wie &amp;quot;&amp;lt;tt&amp;gt;return &#039;R&#039;;&amp;lt;/tt&amp;gt;&amp;quot;, und das Array &amp;lt;tt&amp;gt;x[]&amp;lt;/tt&amp;gt; kann komplett wegoptimiert werden und entfallen.&lt;br /&gt;
&lt;br /&gt;
==== progmem → __flash ====&lt;br /&gt;
&lt;br /&gt;
Portierung in diese Richtung bedeutet, alten Code anzupassen.  Zwingend ist die Portierung nicht, da &amp;lt;tt&amp;gt;progmem&amp;lt;/tt&amp;gt; weiterhin unterstützt wird.&lt;br /&gt;
Allerdings ist eine Quelle mit &amp;lt;tt&amp;gt;__flash&amp;lt;/tt&amp;gt; besser lesbar, denn der Code wird von den &amp;lt;tt&amp;gt;pgm_read&amp;lt;/tt&amp;gt;-Funktionen befreit, die vor allem bei Mehrfach-Indirektion den Code ziemlich verunstalten und unleserlich machen können.&lt;br /&gt;
Weiterer Vorteil von &amp;lt;tt&amp;gt;_flash&amp;lt;/tt&amp;gt; ist, daß eine striktere Typprüfung erfolgen kann.&lt;br /&gt;
&lt;br /&gt;
Eine Portierung wird man in zwei Schritten vornehmen:&lt;br /&gt;
&lt;br /&gt;
;1. Definitionen von Flash-Variablen werden angepasst:&lt;br /&gt;
&lt;br /&gt;
Vorher:&lt;br /&gt;
:{|&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
#include &amp;lt;avr/pgmspace.h&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
static const char hund[]  PROGMEM = &amp;quot;Hund&amp;quot;;&lt;br /&gt;
static const char katze[] PROGMEM = &amp;quot;Katze&amp;quot;;&lt;br /&gt;
static const char maus[]  PROGMEM = &amp;quot;Maus&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
const char * const tier[] PROGMEM = &lt;br /&gt;
{&lt;br /&gt;
   hund, katze, maus&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Nachher:&lt;br /&gt;
:{|&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
static const __flash char hund[]  = &amp;quot;Hund&amp;quot;;&lt;br /&gt;
static const __flash char katze[] = &amp;quot;Katze&amp;quot;;&lt;br /&gt;
static const __flash char maus[]  = &amp;quot;Maus&amp;quot;;&lt;br /&gt;
 &lt;br /&gt;
const __flash char * const __flash tier[] = &lt;br /&gt;
{&lt;br /&gt;
   hund, katze, maus&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Der Header &amp;lt;tt&amp;gt;avr/pgmspace.h&amp;lt;/tt&amp;gt; wird nicht mehr benötigt.  Im Gegensatz zu &amp;lt;tt&amp;gt;progmem&amp;lt;/tt&amp;gt; müssen Qualifier immer links von der definierten Variablen stehen; bei Attributen wie &amp;lt;tt&amp;gt;progmem&amp;lt;/tt&amp;gt; ist das mehr oder weniger egal.&lt;br /&gt;
&lt;br /&gt;
Nachdem diese Anpassung erfolgreich abgeschlossen ist, folgt Schritt&lt;br /&gt;
&lt;br /&gt;
; 2. Der Code wird von &amp;lt;tt&amp;gt;pgm_read&amp;lt;/tt&amp;gt;-Aufrufen bereinigt:&lt;br /&gt;
&lt;br /&gt;
Vorher:&lt;br /&gt;
:{|&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
#include &amp;lt;avr/pgmspace.h&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
extern const char *tier[];&lt;br /&gt;
 &lt;br /&gt;
char first_letter (uint8_t i)&lt;br /&gt;
{&lt;br /&gt;
    const char* ptier = (const char*) pgm_read_word (&amp;amp;tier[i]);&lt;br /&gt;
    return (char) pgm_read_byte (&amp;amp;ptier[0]);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Nachher:&lt;br /&gt;
:{|&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
#include &amp;lt;stdint.h&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
extern const __flash char * const __flash tier[];&lt;br /&gt;
 &lt;br /&gt;
char first_letter (uint8_t i)&lt;br /&gt;
{&lt;br /&gt;
    return tier[i][0];&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Dateien direkt im Flash einbinden ==&lt;br /&gt;
&lt;br /&gt;
Wenn man größere Dateien direkt im Programm einbinden will, ohne sie vorher in C Quelltext umzuwandeln, muss man das mit dem Linker machen. Wie das geht steht hier.&lt;br /&gt;
&lt;br /&gt;
* [http://www.atmel.com/webdoc/avrlibcreferencemanual/FAQ_1faq_binarydata.html Atmel, avr gcc Dokumentation]&lt;br /&gt;
* [http://nongnu.org/avr-libc/user-manual/FAQ.html#faq_binarydata Nongnu avr gcc Dokumentation]&lt;br /&gt;
&lt;br /&gt;
Wie man das dann praktisch umsetzt, sieht man in diesem Beitrag.&lt;br /&gt;
&lt;br /&gt;
* [https://www.mikrocontroller.net/topic/361429?goto=4056910#4056910 Forumsbeitrag]: Binärdateien mittels Linker einbinden&lt;br /&gt;
* [https://www.mikrocontroller.net/topic/361429?goto=4056910#4056947 Forumsbeitrag]: Ein kleines Tool zum Umwandeln von Binärdateien in C-Quelltext.&lt;br /&gt;
&lt;br /&gt;
== Flash in der Anwendung schreiben ==&lt;br /&gt;
&lt;br /&gt;
Bei AVRs mit &amp;quot;self-programming&amp;quot;-Option – auch bekannt als [[Bootloader]]-Support – können Teile des Flash-Speichers vom Anwendungsprogramm beschrieben werden. Dies ist nur möglich, wenn die Schreibfunktion in einem besonderen Speicherbereich, der Boot-Section des Programmspeichers/Flash, abgelegt ist.&lt;br /&gt;
&lt;br /&gt;
Bei einigen kleinen AVRs gibt es keine gesonderte Boot-Section, bei diesen kann der Flashspeicher von jeder Stelle des Programms geschrieben werden. Für Details sei hier auf das jeweilige Controller-Datenblatt und die Erläuterungen zum Modul boot.h der avr-libc verwiesen. Es existieren auch Application-Notes dazu bei atmel.com, die auf avr-gcc-Code übertragbar sind.&lt;br /&gt;
&lt;br /&gt;
Siehe auch: &lt;br /&gt;
* Forumsbeitrag [http://www.mikrocontroller.net/topic/163632#1561622 Daten in Programmspeicher speichern]&lt;br /&gt;
&lt;br /&gt;
== EEPROM ==&lt;br /&gt;
&lt;br /&gt;
Möchte man Werte aus einem Programm heraus so speichern, dass sie auch nach dem Abschalten der Versorgungsspannung noch erhalten bleiben und nach dem Wiederherstellen der Versorgungsspannung bei erneutem Programmstart wieder zur Verfügung stehen, dann benutzt man das EEPROM.&lt;br /&gt;
&lt;br /&gt;
Schreib- und Lesezugriffe auf den EEPROM-Speicher erfolgen über die im Modul eeprom.h der avr-libc definierten Funktionen. Mit diesen Funktionen können einzelne Bytes, Datenworte (16 Bit), Fließkommawerte (32 Bit, single-precision, float) und Datenblöcke geschrieben und gelesen werden.&lt;br /&gt;
&lt;br /&gt;
Diese Funktionen kümmern sich auch um diverse Details, die bei der Benutzung des EEPROMs normalerweise notwendig sind:&lt;br /&gt;
* EEPROM-Operationen sind im Vergleich relativ langsam. Man muss daher darauf achten, dass eine vorhergehende Operation abgeschlossen ist, ehe die nächste Operation mit dem EEPROM gestartet wird. Die in der avr-libc implementierten Funktionen aus eeprom.h berücksichtigten dies. Soll beim Aufruf einer EEPROM-Funktion sichergestellt werden, dass diese nicht intern in einer Warteschleife auf den Abschluss der vorherigen Operation wartet, kann vorher per eeprom_is_ready testen, ob der Zugriff auf den EEPROM-Speicher sofort möglich ist.&lt;br /&gt;
* Es ist darauf zu achten, dass die EEPROM-Funktionen nicht durch einen Interrupt unterbrochen werden. Einige Phasen des Zugriffs sind zeitkritisch und müssen in einer definierten bzw. begrenzten Anzahl von Takten durchgeführt werden. Durch einen unterbrechenden Interrupt würde diese Restriktion nicht mehr eingehalten. Auch dieses Detail wird von den avr-libc Funktionen berücksichtigt, so dass man sich als C-Programmierer nicht darum kümmern muss. Innerhalb der Funktionen werden Interrupts vor der &amp;quot;EEPROM-Sequenz&amp;quot; global deaktiviert und im Anschluss, falls vorher auch schon eingeschaltet, wieder aktiviert.&lt;br /&gt;
&lt;br /&gt;
Man beachte, dass der EEPROM-Speicher nur eine begrenzte Anzahl von Schreibzugriffen zulässt. Beschreibt man eine EEPROM-Zelle öfter als die im Datenblatt zugesicherte Anzahl (typisch 100.000), wird die Funktion der Zelle nicht mehr garantiert. Dies gilt für jede einzelne Zelle. &lt;br /&gt;
&lt;br /&gt;
Bei geschickter Programmierung (z.&amp;amp;nbsp;B. Ring-Puffer), bei der die zu beschreibenden Zellen regelmäßig gewechselt werden, kann man eine deutlich höhere Anzahl an Schreibzugriffen, bezogen auf den gesamten EEPROM-Speicher, erreichen. Auf jeden Fall sollte man aber eine Abschätzung über die zu erwartende Lebensdauer des EEPROM durchführen. Wird ein Wert im EEPROM im Durchschnitt nur einmal pro Woche verändert, wird die garantierte Anzahl der Schreibzyklen innerhalb der voraussichtlichen Verwendungszeit des Controllers sicherlich nicht erreicht werden. Welcher Controller ist schon 100000 / 52 = 1923 Jahre im Einsatz? In diesem Fall lohnt es sich daher nicht, erweiterte Programmfunktionen zu implementieren, mit denen die Anzahl der Schreibzugriffe minimiert wird.&lt;br /&gt;
&lt;br /&gt;
Eine weitere Möglichkeit, Schreibzyklen einzusparen, besteht in der Vorabprüfung, ob der zu speichernde Wert im EEPROM bereits enthalten ist und nur veränderte Werte zu schreiben. In aktuelleren Versionen der avr-libc sind bereits Funktionen enthalten, die solche Prüfungen enthalten (eeprom_update_*).&lt;br /&gt;
&lt;br /&gt;
Eine dritte Möglichkeit speichert alle Daten zunächst im RAM, wo sie beliebig oft beschrieben werden können. Nur beim Ausschalten oder beim Ausfall der Stromversorgung werden die Daten in den EEPROM geschrieben. Wie man das richtig macht sieht man im Artikel [[Speicher#EEPROM Schreibzugriffe minimieren | Speicher]].&lt;br /&gt;
&lt;br /&gt;
Lesezugriffe können beliebig oft durchgeführt werden. Sie unterliegen keinen Einschränkungen in Bezug auf deren Anzahl. &lt;br /&gt;
&lt;br /&gt;
=== EEMEM ===&lt;br /&gt;
Um eine Variable im EEPROM anzulegen, stellt die avr-libc das Makro EEMEM zur Verfügung:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
#include &amp;lt;stdint.h&amp;gt;&lt;br /&gt;
#include &amp;lt;avr/eeprom.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
/* Byte */&lt;br /&gt;
uint8_t eeFooByte EEMEM = 123;&lt;br /&gt;
&lt;br /&gt;
/* Wort */&lt;br /&gt;
uint16_t eeFooWord EEMEM = 12345;&lt;br /&gt;
&lt;br /&gt;
/* float */&lt;br /&gt;
float eeFooFloat EEMEM;&lt;br /&gt;
&lt;br /&gt;
/* Byte-Array */&lt;br /&gt;
uint8_t eeFooByteArray1[] EEMEM = { 18, 3, 70 };&lt;br /&gt;
uint8_t eeFooByteArray2[] EEMEM = { 30, 7, 79 };&lt;br /&gt;
&lt;br /&gt;
/* 16-bit unsigned short feld */&lt;br /&gt;
uint16_t eeFooWordArray1[4] EEMEM;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die grundsätzliche Vorgehensweise ist identisch zur Verwendung von PROGMEM. Auch hier erzeugt man sich spezielle attributierte Variablen (EEMEM erledigt das), die vom Compiler/Linker nicht wie normale Variablen behandelt werden. Compiler/Linker kümmern sich zwar darum, dass diesen Variablen eine Adresse zugewiesen wird, diese Adresse ist dann aber die Adresse der &#039;Variablen&#039; im EEPROM. Um die dort gespeicherten Werte zu lesen bzw. zu schreiben, übergibt man diese Adresse an spezielle Funktionen, die die entsprechenden Werte aus dem EEPROM holen bzw. das EEPROM neu beschreiben.&lt;br /&gt;
&lt;br /&gt;
Die mittels EEMEM erzeugten &#039;Variablen&#039; sind also mehr als Platzhalter zu verstehen, denn als echte Variablen. Es geht nur darum, im C-Programm symbolische Namen zur Verfügung zu haben, anstatt mit echten EEPROM-Adressen hantieren zu müssen, etwas, das grundsätzlich aber auch genauso gut möglich ist. Nur muss man sich in diesem Fall dann selbst darum kümmern, dass mehrere &#039;Variablen&#039; ohne Überschneidung im EEPROM angeordnet werden.&lt;br /&gt;
&lt;br /&gt;
=== Bytes lesen/schreiben ===&lt;br /&gt;
&lt;br /&gt;
Die avr-libc Funktion zum Lesen eines Bytes heißt eeprom_read_byte. Parameter ist die Adresse des Bytes im EEPROM. Geschrieben wird über die Funktion eeprom_write_byte mit den Parametern Adresse und Inhalt. Anwendungsbeispiel:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
#define EEPROM_DEF 0xFF&lt;br /&gt;
&lt;br /&gt;
void eeprom_example (void)&lt;br /&gt;
{&lt;br /&gt;
    uint8_t myByte;&lt;br /&gt;
&lt;br /&gt;
    // myByte lesen (Wert = 123)&lt;br /&gt;
    myByte = eeprom_read_byte (&amp;amp;eeFooByte);&lt;br /&gt;
&lt;br /&gt;
    // der Wert 99 wird im EEPROM an die Adresse der&lt;br /&gt;
    // Variablen eeFooByte geschrieben&lt;br /&gt;
    myByte = 99;&lt;br /&gt;
    eeprom_write_byte(&amp;amp;eeFooByte, myByte); // schreiben&lt;br /&gt;
&lt;br /&gt;
    myByte = eeprom_read_byte (&amp;amp;eeFooByteArray1[1]); &lt;br /&gt;
    // myByte hat nun den Wert 3&lt;br /&gt;
&lt;br /&gt;
    // Beispiel fuer eeprom_update_byte: die EEPROM-Zelle wird nur&lt;br /&gt;
    // dann beschrieben, wenn deren Inhalt sich vom Parameterwert&lt;br /&gt;
    // unterscheidet. In diesem Beispiel erfolgt also kein Schreib-&lt;br /&gt;
    // zugriff, da die Werte gleich sind.&lt;br /&gt;
    eeprom_update_byte(&amp;amp;eeFooByte, myByte);&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
    // Beispiel zur &amp;quot;Sicherung&amp;quot; gegen leeres EEPROM nach &amp;quot;Chip Erase&amp;quot;&lt;br /&gt;
    // (z. B. wenn die .eep-Datei nach Programmierung einer neuen Version&lt;br /&gt;
    // des Programms nicht in den EEPROM uebertragen wurde und EESAVE&lt;br /&gt;
    // deaktiviert ist (unprogrammed/1)&lt;br /&gt;
    // &lt;br /&gt;
    // Vorsicht: wenn EESAVE &amp;quot;programmed&amp;quot; ist, hilft diese Sicherung nicht&lt;br /&gt;
    // weiter, da die Speicheraddressen in einem neuen/erweiterten Programm&lt;br /&gt;
    // moeglicherweise verschoben wurden. An der Stelle &amp;amp;eeFooByte steht&lt;br /&gt;
    // dann u.U. der Wert einer anderen Variable aus einer &amp;quot;alten&amp;quot; Version.&lt;br /&gt;
&lt;br /&gt;
    uint8_t fooByteDefault = 222;&lt;br /&gt;
    if ((myByte = eeprom_read_byte (&amp;amp;eeFooByte)) == EEPROM_DEF)&lt;br /&gt;
    {&lt;br /&gt;
        myByte = fooByteDefault;&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Wort lesen/schreiben ===&lt;br /&gt;
&lt;br /&gt;
Schreiben und Lesen von Datenworten erfolgt analog zur Vorgehensweise bei Bytes:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
    // lesen&lt;br /&gt;
    uint16_t myWord = eeprom_read_word (&amp;amp;eeFooWord);&lt;br /&gt;
&lt;br /&gt;
    // schreiben&lt;br /&gt;
    eeprom_write_word (&amp;amp;eeFooWord, 2222);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Block lesen/schreiben ===&lt;br /&gt;
&lt;br /&gt;
Lesen und Schreiben von Datenblöcken erfolgt über die Funktionen &amp;lt;code&amp;gt;eeprom_read_block()&amp;lt;/code&amp;gt; bzw. &amp;lt;code&amp;gt;eeprom_write_block()&amp;lt;/code&amp;gt;. Die Funktionen erwarten drei Parameter: die Adresse der Quell- bzw. Zieldaten im RAM, die EEPROM-Adresse und die Länge des Datenblocks in Bytes als &amp;lt;code&amp;gt;size_t&amp;lt;/code&amp;gt;.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
uint8_t  myByteBuffer[3];&lt;br /&gt;
uint16_t myWordBuffer[4];&lt;br /&gt;
&lt;br /&gt;
void eeprom_block_example (void)&lt;br /&gt;
{&lt;br /&gt;
    /* Datenblock aus EEPROM lesen  */&lt;br /&gt;
&lt;br /&gt;
    /* liest 3 Bytes ab der von eeFooByteArray1 definierten EEPROM-Adresse&lt;br /&gt;
       in das RAM-Array myByteBuffer */&lt;br /&gt;
    eeprom_read_block (myByteBuffer, eeFooByteArray1, 3);&lt;br /&gt;
&lt;br /&gt;
    /* dito mit etwas Absicherung betr. der Länge */&lt;br /&gt;
    eeprom_read_block (myByteBuffer, eeFooByteArray1, sizeof(myByteBuffer));&lt;br /&gt;
&lt;br /&gt;
    /* und nun mit 16-Bit Array */&lt;br /&gt;
    eeprom_read_block (myWordBuffer, eeFooWordArray1, sizeof(myWordBuffer));&lt;br /&gt;
&lt;br /&gt;
    /* Datenblock in EEPROM schreiben */&lt;br /&gt;
    eeprom_write_block (myByteBuffer, eeFooByteArray1, sizeof(myByteBuffer));&lt;br /&gt;
    eeprom_write_block (myWordBuffer, eeFooWordArray1, sizeof(myWordBuffer));&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Fließkommawerte lesen/schreiben ===&lt;br /&gt;
&lt;br /&gt;
In der avr-libc stehen auch EEPROM-Funktionen für Variablen des Typs float (Fließkommazahlen mit &amp;quot;einfacher&amp;quot; Genauigkeit) zur Verfügung.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
#include &amp;lt;avr/eeprom.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
float eeFloat EEMEM = 12.34f;&lt;br /&gt;
&lt;br /&gt;
float void eeprom_float_example(float value)&lt;br /&gt;
{&lt;br /&gt;
   /* float in EEPROM schreiben */&lt;br /&gt;
   eeprom_write_float(&amp;amp;eeFloat, value);&lt;br /&gt;
&lt;br /&gt;
   /* float aus EEPROM lesen */&lt;br /&gt;
   return  eeprom_read_float(&amp;amp;eeFloat);&lt;br /&gt;
}&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== EEPROM-Speicherabbild in .eep-Datei ===&lt;br /&gt;
&lt;br /&gt;
Mit den zum Compiler gehörenden Werkzeugen kann der aus den Variablendeklarationen abgeleitete EEPROM-Inhalt in eine Datei geschrieben werden. Die übliche Dateiendung ist .eep, Daten im Intel Hex-Format. Damit können Standardwerte für den EEPROM-Inhalt im Quellcode definiert werden. &lt;br /&gt;
&lt;br /&gt;
Makefiles nach WinAVR/MFile-Vorlage enthalten bereits die notwendigen Einstellungen, siehe dazu die Erläuterungen im [[AVR-GCC-Tutorial/Exkurs Makefiles|Exkurs Makefiles]].&lt;br /&gt;
&lt;br /&gt;
Der Inhalt der eep-Datei muss ebenfalls zum Mikrocontroller übertragen werden, wenn die Initialisierungswerte aus der Deklaration vom Programm erwartet werden. Ansonsten enthält der EEPROM-Speicher nach der Übertragung des Programmers mittels ISP abhängig von der Einstellung der EESAVE-Fuse&amp;lt;ref&amp;gt;vgl. Datenblatt Abschnitt Fuse Bits&amp;lt;/ref&amp;gt; nicht die korrekten Werte:&lt;br /&gt;
; EESAVE = 0 (programmed): Die Daten im EEPROM bleiben erhalten. Werden sie nicht neu geschrieben, so enthält das EEPROM evtl. Daten, die nicht mehr zum Programm passen.&lt;br /&gt;
; EESAVE = 1 (unprogrammed): Beim Programmieren werden die Daten im EEPROM gelöscht, also auf 0xff gesetzt.&lt;br /&gt;
&lt;br /&gt;
Als Sicherung kann man im Programm nochmals die Standardwerte vorhalten, beim Lesen auf 0xFF prüfen und gegebenenfalls einen Standardwert nutzen. Das geht natürlich nur, wenn 0xFF selbst nicht als Datenwert vorkommen kann.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
#define DUTY_CYCLE_DEFAULT 0x80&lt;br /&gt;
&lt;br /&gt;
uint8_t eeDutyCycle EEMEM;   // Platzhalter für EEPROM&lt;br /&gt;
uint8_t DutyCycle;           // die echte Variable&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
int main(void)&lt;br /&gt;
{&lt;br /&gt;
  DutyCycle = eeprom_read_byte( &amp;amp;eeDutyCycle );&lt;br /&gt;
  if( DutyCycle == 0xFF )                     // das allererste mal. Im EEPROM steht noch kein gültiger Wert&lt;br /&gt;
  {&lt;br /&gt;
    DutyCycle = DUTY_CYCLE_DEFAULT;&lt;br /&gt;
    eeprom_writeByte( &amp;amp;eeDutyCycle, DutyCycle );&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  ...&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Direkter Zugriff auf EEPROM-Adressen ===&lt;br /&gt;
&lt;br /&gt;
Will man direkt auf bestimmte EEPROM Adressen zugreifen, dann sind folgende Funktionen hilfreich, um sich die Typecasts zu ersparen.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Hinweis!&#039;&#039;&#039; Die hier nachfolgend gezeigten Funktionen und Zugriffe auf absolute Adressen sind in Normalfall nicht nötig und nur auf sehr wenige, spezielle Fälle beschränkt! Im Normalfall sollte man auf absolute Adressen möglichst nicht zugreifen und den Compiler seine Arbeit machen lassen, der verwaltet die Variablen und deren Adressen meist besser als der Programmierer. Der Zugriff auf Variablen im EEPROM sollte immer über ihren Namen erfolgen.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
#include &amp;lt;avr/eeprom.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
// Byte aus dem EEPROM lesen&lt;br /&gt;
uint8_t EEPReadByte(uint16_t addr)&lt;br /&gt;
{&lt;br /&gt;
  return eeprom_read_byte((uint8_t *)addr);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// Byte in das EEPROM schreiben&lt;br /&gt;
void EEPWriteByte(uint16_t addr, uint8_t val)&lt;br /&gt;
{&lt;br /&gt;
  eeprom_write_byte((uint8_t *)addr, val);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
oder als Makro:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
#define   EEPReadByte(addr)         eeprom_read_byte((uint8_t *)addr)     &lt;br /&gt;
#define   EEPWriteByte(addr, val)   eeprom_write_byte((uint8_t *)addr, val)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Verwendung:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
EEPWriteByte(0x20, 128);   // Byte an die Adresse 0x20 schreiben&lt;br /&gt;
...&lt;br /&gt;
Val=EEPReadByte(0x20);     // EEPROM-Wert von Adresse 0x20 lesen&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Was steckt dahinter? - EEPROM-Register ===&lt;br /&gt;
Auch wenn es normalerweise keinen Grund gibt, in C selbst an den Steuerregistern herumzuschrauben - die eeprom Funktionen erledigen das alles zuverlässig - der Vollständigkeit halber der registermässige technische Unterbau.&lt;br /&gt;
Um das EEPROM anzusteuern, sind drei Register von Bedeutung:&lt;br /&gt;
;EEAR: Hier werden die Adressen eingetragen zum Schreiben oder Lesen. Dieses Register unterteilt sich nochmal in EEARH und EEARL, da in einem 8-Bit-Register keine 512 Adressen adressiert werden können.&lt;br /&gt;
;EEDR: Hier werden die Daten eingetragen, die geschrieben werden sollen, bzw. es enthält die gelesenen Daten.&lt;br /&gt;
;EECR: Ist das Kontrollregister für das EEPROM&lt;br /&gt;
&lt;br /&gt;
Das EECR steuert den Zugriff auf das EEPROM und ist wie folgt aufgebaut:&lt;br /&gt;
&lt;br /&gt;
:{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align:center&amp;quot;&lt;br /&gt;
|+ &#039;&#039;&#039;Aufbau des EECR-Registers&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
!Bit&lt;br /&gt;
| 7 || 6 || 5 || 4 || 3 || 2 || 1 || 0&lt;br /&gt;
|-&lt;br /&gt;
! Name&lt;br /&gt;
| - || - || - ||- || EERIE || EEMWE || EEWE || EERE&lt;br /&gt;
|-&lt;br /&gt;
! Read/Write&lt;br /&gt;
| R || R || R || R || R/W || R/W || R/W || R/W&lt;br /&gt;
|-&lt;br /&gt;
!Init Value&lt;br /&gt;
| 0 || 0 || 0 || 0 || 0 || 0 || 0 || 0&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Bedeutung der Bits&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
;Bit 4-7: nicht belegt&lt;br /&gt;
&lt;br /&gt;
;Bit 3 (EERIE): &#039;&#039;EEPROM Ready Interrupt Enable&#039;&#039;: Wenn das Bit gesetzt ist und globale Interrupts erlaubt sind in Register SREG (Bit 7), wird ein Interrupt ausgelöst nach Beendigung des Schreibzyklus (EEPROM Ready Interrupt). Ist einer der beiden Bits 0, wird kein Interrupt ausgelöst.&lt;br /&gt;
&lt;br /&gt;
;Bit 2 EEMWE): &#039;&#039;EEPROM Master Write Enable&#039;&#039;: Dieses Bit bestimmt, dass, wenn EEWE = 1 gesetzt wird (innerhalb von 4 Taktzyklen), das EEPROM beschrieben wird mit den Daten in EEDR bei Adresse EEAR. Wenn EEMWE = 0 ist und EEWE = 1 gesetzt wird, hat das keine Auswirkungen. Der Schreibvorgang wird dann nicht ausgelöst. Nach 4 Taktzyklen wird das Bit EEMWE automatisch wieder auf 0 gesetzt. Dieses Bit löst den Schreibvorgang nicht aus, es dient sozusagen als Sicherungsbit für EEWE.&lt;br /&gt;
&lt;br /&gt;
;Bit 1 (EEWE): &#039;&#039;EEPROM Write Enable&#039;&#039;: Dieses Bit löst den Schreibvorgang aus, wenn es auf 1 gesetzt wird, sofern vorher EEMWE gesetzt wurde und seitdem nicht mehr als 4 Taktzyklen vergangen sind. Wenn der Schreibvorgang abgeschlossen ist, wird dieses Bit automatisch wieder auf 0 gesetzt und, sofern EERIE gesetzt ist, ein Interrupt ausgelöst. Ein Schreibvorgang sieht typischerweise wie folgt aus:&lt;br /&gt;
:# EEPROM-Bereitschaft abwarten (EEWE=0) &lt;br /&gt;
:# Adresse übergeben an EEAR&lt;br /&gt;
:# Daten übergeben an EEDR&lt;br /&gt;
:# Schreibvorgang auslösen in EECR mit Bit EEMWE=1 und EEWE=1&lt;br /&gt;
:# (Optional) Warten, bis Schreibvorgang abgeschlossen ist&lt;br /&gt;
&lt;br /&gt;
;Bit 0 EERE: &#039;&#039;EEPROM Read Enable&#039;&#039;: Wird dieses Bit auf 1 gesetzt wird das EEPROM an der Adresse in EEAR ausgelesen und die Daten in EEDR gespeichert. Das EEPROM kann nicht ausgelesen werden, wenn bereits eine Schreiboperation gestartet wurde. Es ist daher zu empfehlen, die Bereitschaft vorher zu prüfen. Das EEPROM ist lesebereit, wenn das Bit EEWE=0 ist. Ist der Lesevorgang abgeschlossen, wird das Bit wieder auf 0 gesetzt, und das EEPROM ist für neue Lese- und Schreibbefehle wieder bereit. Ein typischer Lesevorgang kann wie folgt aufgebaut sein:&lt;br /&gt;
:# Bereitschaft zum Lesen prüfen (EEWE=0)&lt;br /&gt;
:# Adresse übergeben an EEAR&lt;br /&gt;
:# Lesezyklus auslösen mit EERE = 1&lt;br /&gt;
:# Warten, bis Lesevorgang abgeschlossen EERE = 0&lt;br /&gt;
:# Daten abholen aus EEDR&lt;br /&gt;
&lt;br /&gt;
= Die Nutzung von sprintf und printf =&lt;br /&gt;
&lt;br /&gt;
Um komfortabel, d.h. formatiert, Ausgaben auf ein Display oder die serielle Schnittstelle zu tätigen, bieten sich &#039;&#039;&#039;sprintf&#039;&#039;&#039; oder &#039;&#039;&#039;printf&#039;&#039;&#039; an. Alle *printf-Varianten sind jedoch ziemlich speicherintensiv und der Einsatz in einem Mikrocontroller mit knappem Speicher muss sorgsam abgewogen werden.&lt;br /&gt;
&lt;br /&gt;
Bei &#039;&#039;&#039;sprintf&#039;&#039;&#039; wird die Ausgabe zunächst in einem Puffer vorbereitet und anschließend mit einfachen Funktionen zeichenweise ausgegeben. Es liegt in der Verantwortung des Programmierers, genügend Platz im Puffer für die erwarteten Zeichen bereitzuhalten.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
#include &amp;lt;stdio.h&amp;gt;&lt;br /&gt;
#include &amp;lt;stdint.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
// ...&lt;br /&gt;
// nicht dargestellt: Implementierung von uart_puts (vgl. Abschnitt UART)&lt;br /&gt;
// ...&lt;br /&gt;
&lt;br /&gt;
uint16_t counter;&lt;br /&gt;
&lt;br /&gt;
// Ausgabe eines unsigned Integerwertes&lt;br /&gt;
void uart_puti( uint16_t value )&lt;br /&gt;
{&lt;br /&gt;
    uint8_t puffer[20];&lt;br /&gt;
&lt;br /&gt;
    sprintf( puffer, &amp;quot;Zählerstand: %u&amp;quot;, value );&lt;br /&gt;
    uart_puts( puffer );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
int main()&lt;br /&gt;
{&lt;br /&gt;
  counter = 5;&lt;br /&gt;
&lt;br /&gt;
  uart_puti( counter );&lt;br /&gt;
  uart_puti( 42 );&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Eine weitere elegante Möglichkeit besteht darin, den STREAM stdout (Standardausgabe) auf eine eigene Ausgabefunktion umzuleiten. Dazu wird dem Ausgabemechanismus der C-Bibliothek eine neue Ausgabefunktion bekannt gemacht, deren Aufgabe es ist, ein einzelnes Zeichen auszugeben. Wohin die Ausgabe dann tatsächlich stattfindet, ist Sache der Ausgabefunktion. Im Beispiel unten wird auf UART ausgegeben. Alle anderen, höheren Funktionen wie z.&amp;amp;nbsp;B. &#039;&#039;&#039;printf&#039;&#039;&#039;, greifen letztendlich auf diese primitive Ausgabefunktion zurück. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
#include &amp;lt;avr/io.h&amp;gt;&lt;br /&gt;
#include &amp;lt;stdio.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
void uart_init(void);&lt;br /&gt;
&lt;br /&gt;
// a. Deklaration der primitiven Ausgabefunktion&lt;br /&gt;
int uart_putchar(char c, FILE *stream);&lt;br /&gt;
&lt;br /&gt;
// b. Umleiten der Standardausgabe stdout (Teil 1)&lt;br /&gt;
static FILE mystdout = FDEV_SETUP_STREAM( uart_putchar, NULL, _FDEV_SETUP_WRITE );&lt;br /&gt;
&lt;br /&gt;
// c. Definition der Ausgabefunktion&lt;br /&gt;
int uart_putchar( char c, FILE *stream )&lt;br /&gt;
{&lt;br /&gt;
    if( c == &#039;\n&#039; )&lt;br /&gt;
        uart_putchar( &#039;\r&#039;, stream );&lt;br /&gt;
&lt;br /&gt;
    loop_until_bit_is_set( UCSRA, UDRE );&lt;br /&gt;
    UDR = c;&lt;br /&gt;
    return 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void uart_init(void)&lt;br /&gt;
{&lt;br /&gt;
    /* hier µC spezifischen Code zur Initialisierung */&lt;br /&gt;
    /* des UART einfügen... s.o. im AVR-GCC-Tutorial */&lt;br /&gt;
&lt;br /&gt;
    // Beispiel: &lt;br /&gt;
    //&lt;br /&gt;
    // myAVR Board 1.5 mit externem Quarz Q1 3,6864 MHz&lt;br /&gt;
    // 9600 Baud 8N1&lt;br /&gt;
&lt;br /&gt;
#ifndef F_CPU&lt;br /&gt;
#define F_CPU 3686400&lt;br /&gt;
#endif&lt;br /&gt;
#define UART_BAUD_RATE 9600&lt;br /&gt;
&lt;br /&gt;
// Hilfsmakro zur UBRR-Berechnung (&amp;quot;Formel&amp;quot; laut Datenblatt)&lt;br /&gt;
#define UART_UBRR_CALC(BAUD_,FREQ_) ((FREQ_)/((BAUD_)*16L)-1)&lt;br /&gt;
&lt;br /&gt;
    UCSRB |= (1&amp;lt;&amp;lt;TXEN) | (1&amp;lt;&amp;lt;RXEN);    // UART TX und RX einschalten&lt;br /&gt;
    UCSRC |= (1&amp;lt;&amp;lt;URSEL)|(3&amp;lt;&amp;lt;UCSZ0);    // Asynchron 8N1 &lt;br /&gt;
 &lt;br /&gt;
    UBRRH = (uint8_t)( UART_UBRR_CALC( UART_BAUD_RATE, F_CPU ) &amp;gt;&amp;gt; 8 );&lt;br /&gt;
    UBRRL = (uint8_t)UART_UBRR_CALC( UART_BAUD_RATE, F_CPU );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
int main(void)&lt;br /&gt;
{&lt;br /&gt;
    int16_t antwort = 42;&lt;br /&gt;
    uart_init();&lt;br /&gt;
&lt;br /&gt;
    // b. Umleiten der Standardausgabe stdout (Teil 2)&lt;br /&gt;
    stdout = &amp;amp;mystdout;&lt;br /&gt;
&lt;br /&gt;
    // Anwendung&lt;br /&gt;
    printf( &amp;quot;Die Antwort ist %d.\n&amp;quot;, antwort );&lt;br /&gt;
    return 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// Quelle: avr-libc-user-manual-1.4.3.pdf, S.74&lt;br /&gt;
//         + Ergänzungen&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Sollen Fließkommazahlen ausgegeben werden, muss im Makefile eine andere (größere) Version der [[FAQ#Aktivieren_der_Floating_Point_Version_von_sprintf_beim_WinAVR_mit_AVR-Studio|printflib]] eingebunden werden.&lt;br /&gt;
&lt;br /&gt;
= Anmerkungen =&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= TODO =&lt;br /&gt;
* Aktualisierung Register- und Bitbeschreibungen an aktuelle AVR&lt;br /&gt;
* &amp;quot;naked&amp;quot;-Funktionen&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:avr-gcc Tutorial| ]]&lt;/div&gt;</summary>
		<author><name>Promeus</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=Word_Clock_Variante_1_-_getrennte_Steuerplatine&amp;diff=91374</id>
		<title>Word Clock Variante 1 - getrennte Steuerplatine</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=Word_Clock_Variante_1_-_getrennte_Steuerplatine&amp;diff=91374"/>
		<updated>2016-01-17T13:55:35Z</updated>

		<summary type="html">&lt;p&gt;Promeus: Typo entfernt&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Überblick =&lt;br /&gt;
&lt;br /&gt;
[[Datei:wordclock-frontplatte-v2.png| |WordClock]]&lt;br /&gt;
&lt;br /&gt;
Diese Seite dient nur noch der Referenz für die ältere Variante mit getrennter Steuer- und Anzeigeplatine.&lt;br /&gt;
Themen, die beide Varianten gemeinsam betreffen werden im Hauptartikel [1] gepflegt.&lt;br /&gt;
&lt;br /&gt;
Links zum Hauptartikel [1], zur Variante 2 [2] zum langen Thread [3] mit dem hier alles angefangen hat und zum Original [4], das alle hier inspiriert hat.&lt;br /&gt;
&lt;br /&gt;
[1] [[Word Clock]]&amp;lt;br&amp;gt;&lt;br /&gt;
[2] [[Word Clock Variante 2]]&amp;lt;br&amp;gt;&lt;br /&gt;
[3] [http://www.mikrocontroller.net/topic/156661 Beitrag: Brauche Hilfe beim Bau einer Uhr]&amp;lt;br&amp;gt;&lt;br /&gt;
[4] [http://www.clocktwo.com http://www.clocktwo.com]&amp;lt;br&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
= WordClock FAQ =&lt;br /&gt;
Häufig tauchen im Forum Fragen zum WordClock Projekt auf (was brauche ich..., wie mache ich...), die schon mehrmals beantwortet wurden. Hier Für die Variante 1 eine Zusammenfassung der wichtigsten Fragen:&lt;br /&gt;
&lt;br /&gt;
  Q: Was brauche ich alles, um die WordClock (Variante 1) zu bauen?&lt;br /&gt;
  A: - Die Steuerplatine mit der Elektronik&lt;br /&gt;
     - Eine Frontblende (das &amp;quot;Ziffernblatt&amp;quot;)&lt;br /&gt;
     - Leuchtdioden und Platinen für die Anzeige&lt;br /&gt;
     - Eine Zwischenplatte um das Licht zwischen den einzelnen Buchstaben zu trennen&lt;br /&gt;
     - Eine Spannungsversorgung&lt;br /&gt;
     - etwas handwerkliches Geschick&lt;br /&gt;
&lt;br /&gt;
  Q: Kann ich Bauteile der WordClock über Sammelbestellungen billiger bekommen?&lt;br /&gt;
  A: Es wurden in der Vergangenheit (seit Dez.2009) mehrere Sammelbestellungen angeboten. Im einzelnen waren das:&lt;br /&gt;
     - Die [http://www.mikrocontroller.net/articles/Word_Clock_Variante_1#Sammelbestellung_der_Platine Leiterplatte] für die Steuerelektronik (von ukw)&lt;br /&gt;
     - [http://www.mikrocontroller.net/articles/Word_Clock_Variante_1#Sammelbestellung Leuchtdioden mit Streifenplatinen] für die Anzeige (von wawibu / matsch)&lt;br /&gt;
     - Eine Frontblende (Buchstabenmatrix)&lt;br /&gt;
        - aus [http://www.mikrocontroller.net/articles/Word_Clock#Sammelbestellung_.28Plexiglas.29 Plexiglas], schwarz (von ukw)&lt;br /&gt;
        - aus [http://www.mikrocontroller.net/articles/Word_Clock#Sammelbestellung_.28Edelstahl.29 Edelstahl] (von andreasp)&lt;br /&gt;
     - Eine [http://www.mikrocontroller.net/articles/Word_Clock#Zwischenplatte Zwischenplatte] (von wawibu / matsch)&lt;br /&gt;
&lt;br /&gt;
  Q: Kann ich eine fertige Uhr kaufen?&lt;br /&gt;
  A: Ja, beim [http://www.qlocktwo.com/ Hersteller] der Vorlage ;-). Hier im uC.net Forum gibt es nur Tipps und Hilfe zum Selberbauen.&lt;br /&gt;
     Eine komplette WordClock kann man hier NICHT bekommen.&lt;br /&gt;
     ...und etwas einlesen wird auch keinem abgenommen ;-)&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
= Aufbau einer Wordclock =&lt;br /&gt;
Hier gibt es ein von bomibob äußerst kunstvolles Video zum Bau einer Word Clock:&lt;br /&gt;
http://www.youtube.com/watch?v=OYhtc-8StXA&lt;br /&gt;
(zugehöriger Post → http://www.mikrocontroller.net/topic/goto_post/2328168)&lt;br /&gt;
&lt;br /&gt;
Details zu den einzelnen Komponenten sind den entsprechenden Unterpunkten, oder dem Hauptartikel zu entnehmen.&lt;br /&gt;
&lt;br /&gt;
= Elektronik =&lt;br /&gt;
* Atmega168&lt;br /&gt;
* 8Mhz (interner Osc.)&lt;br /&gt;
* 24-Bit-Schieberegister an SPI für 24 Wörter&lt;br /&gt;
* 4 Output-Pins für Minutenanzeige&lt;br /&gt;
* 4 weitere GPOS - für allgemeine Zwecke&lt;br /&gt;
* RGB-Steuerung über PWM gegen GND, d.h. 32x3-Matrix&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
= Schaltung =&lt;br /&gt;
&lt;br /&gt;
[[Datei:wordclock-schmal-schaltung.png|miniatur|Schaltbild V1.0]]&lt;br /&gt;
[[Datei:wordclock-schmal-schaltung-2.0.png|miniatur|Schaltbild V2.0]]&lt;br /&gt;
[[Datei:TSOP-wordclock-1.1.png|miniatur|TSOP17xx in V1.1]]&lt;br /&gt;
[[Datei:RXTX-wordclock-1.1.png|miniatur|Rx/Tx in V1.1 und V2.0]]&lt;br /&gt;
[[Datei:K10-wordclock-2.0.png|miniatur|K10 als I2C in V2.0]]&lt;br /&gt;
[[Datei:K11-wordclock-2.0.png|miniatur|K11 als SPI in V2.0]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Änderungen der Platinen-Version 1.0 gegenüber dem Prototypen:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Pullup-Widerstand R7 am DCF-Anschluss entfällt&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Änderungen der Platinen-Version 1.1 gegenüber 1.0:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Die Tiefpass-Schaltung für den TSOP17xx ist nun korrekt geschaltet. Die Abweichung sieht man rechts im Zusatzschaltbild.&lt;br /&gt;
* Der Verbinder K9 (UART-Anschluss für Debug-Zwecke) hat zwei zusätzliche Pins erhalten, siehe Zusatzschaltbild rechts.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Änderungen der Platinen-Version 2.0 gegenüber 1.1:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Diode D1 entfällt.&lt;br /&gt;
* 6-poliger ISP-Wannenstecker ersetzt 10-poligen Wannenstecker, Vcc nun angeschlossen&lt;br /&gt;
* Neu: Stiftleiste K10 als Anschlüsse für externe I2C-Module, auf der Platine oberhalb der RTC zu finden&lt;br /&gt;
* Neu: Stiftleiste K11 als Anschlüsse für externe SPI-Module, auf der Platine ganz links&lt;br /&gt;
&lt;br /&gt;
Siehe auch untenstehende Zusatzschaltbilder rechts. Die neuen Stiftleisten sind optional, müssen also nicht unbedingt bestückt werden.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Zugehörige Schaltung als PDF&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
* Version 1.0: &#039;&#039;&#039;[[Media:wordclock-schmal.pdf|wordclock-schmal.pdf]]&#039;&#039;&#039;&lt;br /&gt;
* Version 2.0: &#039;&#039;&#039;[[Media:wordclock-schmal-schaltung-2.0.pdf|wordclock-schmal-schaltung-2.0]]&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Sammelbestellung der Platine ==&lt;br /&gt;
&lt;br /&gt;
Stand Dezember 2015:&lt;br /&gt;
&lt;br /&gt;
Ich habe wegen einiger Nachfragen noch Steuerplatinen in begrenzter Stückzahl nachbestellt. Wenn jemand daran interessiert ist, kann er sich bei mir (Benutzer [http://www.mikrocontroller.net/user/show/ukw &#039;&#039;&#039;ukw&#039;&#039;&#039;]) per PN melden.&lt;br /&gt;
&lt;br /&gt;
Kosten pro Platine: 15 EUR zzgl. Versand von 2,00 EUR bei bis zu 4 Stück. Bei mehr als 4 Stück beträgt der Versand 3,00 EUR.&lt;br /&gt;
&lt;br /&gt;
Beispiele:&lt;br /&gt;
&lt;br /&gt;
* 1 Platine: 15 EUR + 2,00 Versand: 17,00 EUR&lt;br /&gt;
* 2 Platinen: 30 EUR + 2,00 Versand: 32,00 EUR&lt;br /&gt;
* ...&lt;br /&gt;
* 5 Platinen: 75 EUR + 3,00 Versand: 78,00 EUR&lt;br /&gt;
&lt;br /&gt;
Parallel zu dieser Sammelbestellung gibt es noch eine neue (kleinere) Sammelbestellung für passende Frontplatten, siehe auch:&lt;br /&gt;
&lt;br /&gt;
[http://www.mikrocontroller.net/articles/Word_Clock#Sammelbestellung_.28Plexiglas.29 Sammelbestellung Frontplatten]&lt;br /&gt;
&lt;br /&gt;
Beim Versand zusammen mit den Frontplatten entfallen natürlich die Versandkosten für die Platinen.&lt;br /&gt;
&lt;br /&gt;
Maße: 146mm x 35,6mm.&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== Reichelt Warenkorb Mono-Variante ==&lt;br /&gt;
Da selbst bei der Mono-Variante der ATmega 88 langsam mehr als eng wird, wurde dieser Warenkorb auch auf den ATmega 168 umgestellt.&lt;br /&gt;
&lt;br /&gt;
Eine vollständige Liste zur Bestellung der nötigen Bauteile ist bei Reichelt abgelegt: &#039;&#039;&#039;[http://www.reichelt.de/?ACTION=20;AWKID=580204;PROVID=2084 Warenkorb-Mono]&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== Reichelt Warenkorb RGB-Variante ==&lt;br /&gt;
Für die RBG-Version wird der ATmega 168 benötigt. Ein angepasster &#039;&#039;&#039;[http://www.reichelt.de/?ACTION=20;AWKID=580197;PROVID=2084 WARENKORB]&#039;&#039;&#039; ist bei Reichelt hinterlegt.&lt;br /&gt;
&lt;br /&gt;
Im Warenkorb befindet sich nun auch der Nachfolger TSOP 31238 des nicht mehr lieferbaren TSOP17xx. ( 15.11.2011 ).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;quot;Beginner-Tipp&amp;quot;: &lt;br /&gt;
&lt;br /&gt;
Der Warenkorb ist eine tolle Vereinfachung der Bestellung. Bevor Ihr jedoch das DCF-77-Modul automatisch mitbestellt, lest bitte mit Hilfe der Suchfunktion das Forum zu diesem Thema durch. Das DCF-77-Modul ist, wie es im Forum so nett formuliert wurde, &amp;quot;ein Sensibelchen&amp;quot;. Es gäbe eine Alternative von C* (siehe Forum). Und um es ganz deutlich zu formulieren: Die Uhr funktioniert auch ohne DCF-77-Modul ganz prima. Sie kann mit der IR-Fernbedienung ganz einfach gestellt werden. Man braucht das Modul nicht wirklich.&lt;br /&gt;
Es befindet sich kein Flachbandkabel im Warenkorb.&lt;br /&gt;
----&lt;br /&gt;
== Reichelt Warenkorb LED Single Board ==&lt;br /&gt;
&lt;br /&gt;
Für das neue SingleBoard (Paket 1) werden zusätzliche Bauteile benötigt. Diese sind in einem eigenen &#039;&#039;&#039;[http://www.reichelt.de/?ACTION=20;AWKID=847662;PROVID=2084 WARENKORB]&#039;&#039;&#039; bei Reichelt hinterlegt.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== Reichelt Warenkorb Pollin DCF Stabilisierungsplatine ==&lt;br /&gt;
&lt;br /&gt;
Teil des Single Boards ist eine Stabilisierungsschaltung für den Pollin DCF Empfänger. Bei Verwendung des Pollin DCF Empfängers wird folgender &#039;&#039;&#039;[http://www.reichelt.de/?ACTION=20;AWKID=986833;PROVID=2084 WARENKORB]&#039;&#039;&#039; zusätzlich benötigt.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;[http://www.pollin.de/shop/dt/NTQ5OTgxOTk-/Bausaetze_Module/Module/DCF_Empfangsmodul_DCF1.html Link]&#039;&#039;&#039; zum DCF-Empfänger bei Pollin.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== Bestückung ==&lt;br /&gt;
&lt;br /&gt;
Hier eine kurze Beschreibung zur Bestückung:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Version 1.0 (schmale Ausführung):&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
[[Datei:Wordclock-schmal.png|miniatur|Bestückte Platine (Version 1.0)]]&lt;br /&gt;
[[Datei:Wordclock-schmal-1.1.png|miniatur|Bestückte Platine (Version 1.1)]]&lt;br /&gt;
[[Datei:Wordclock-schmal-2.0.png|miniatur|Bestückte Platine (Version 2.0)]]&lt;br /&gt;
&lt;br /&gt;
* Oben Mitte: Anschluss für stehende Lithium-Knopfbatterie CR2032 (die drei abgebildeten Stifte sind natürlich nicht notwendig, die Batterie wird direkt eingelötet)&lt;br /&gt;
* Unten 3-polige Stiftleiste: Anschluss für DCF77-Modul&lt;br /&gt;
* Unten 2-polige Stiftleiste: RX &amp;amp; TX (für Testzwecke)&lt;br /&gt;
* Unten rechts: TSOP17XX/SFH5110 für Infrarot-Empfang&lt;br /&gt;
* Darüber: 2-polige Stiftleiste für LDR (Helligkeitsmessung)&lt;br /&gt;
* Oben links und rechts: Wannenstecker für insg. 32 Ausgabekanäle: OUT0-OUT23 (für die Wörter), OUTL1-OUTL4 (für die Minuten) und OUTG1-OUTG4 (für General-Purpose-Ausgabezwecke)&lt;br /&gt;
* Rechts: Anschlussklemmen für Versorgungsspannung 7-20V und die drei PWM-Kanäle Rot, Grün und Blau.&lt;br /&gt;
* Für Atmel Programmer muss der ISP VTG Anschluss (Pin 2) direkt mit der 5V Spannungsversorgung verbunden werden (z.Bsp. Plus Pol von C9).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Version 1.1 (schmale Ausführung):&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Wie 1.0, jedoch hat der Verbinder K9 (UART-Anschlüsse Rx/Tx für Debug-Zwecke) zwei zusätzliche Pins erhalten, siehe abweichendes Bestückungsbild rechts. Belegung von links nach rechts: Vcc / GND / RX / TX&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Version 2.0 (schmale Ausführung):&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Änderungen gegenüber 1.1:&lt;br /&gt;
&lt;br /&gt;
* Diode D1 entfällt&lt;br /&gt;
* 6-poliger statt 10-poliger ISP-Stecker&lt;br /&gt;
* Am ISP-Stecker ist auch Vcc angeschlossen&lt;br /&gt;
* Anschlussmöglichkeit für weitere I2C-Module&lt;br /&gt;
* Anschlussmöglichkeit für weitere Schieberegister über SPI&lt;br /&gt;
&lt;br /&gt;
[[Datei:RXTX-platine-wordclock-1.1.png|miniatur|Rx/Tx in V1.1 und V2.0]]&lt;br /&gt;
&lt;br /&gt;
Der IR-Empfänger TSOP17XX/SFH5110 muss hinter einem nicht benutzten Buchstaben angebracht werden. Deshalb braucht man ihn nicht unbedingt auf die Platine löten, sondern kann ihn auch über ein 3-poliges Kabel mit der Platine verbinden. In diesem Fall sollte der Kondensator C2 nicht auf die Platine, sondern direkt am TSOP17XX/SFH5110 (C2 Minus an Pin 1, C2 Plus an Pin 2) angelötet werden. Bei Verwendung eines SFH5110 Pinbelegung beachten!&lt;br /&gt;
&lt;br /&gt;
Je nach Ort des LDRs (hinter Buchstaben bzw. mit/ohne Dffusor) kann die automatische Helligkeitsregelung unterschiedlich ausfallen. Hier muss man eventuell den Widerstand R6 variieren, wenn das Ergebnis nicht optimal sein sollte.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Bestückung und Anschlüsse&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
[[Datei:Wordclock-schmal-bestueckungsdruck.png|miniatur|Bestückungsaufdruck der Version 1.0]]&lt;br /&gt;
&lt;br /&gt;
[[Datei:Wordclock-schmal-bestueckungsdruck-1.1.png|miniatur|Bestückungsaufdruck der Version 1.1]]&lt;br /&gt;
&lt;br /&gt;
[[Datei:Wordclock-schmal-bestueckungsdruck-2.0.png|miniatur|Bestückungsaufdruck der Version 2.0]]&lt;br /&gt;
&lt;br /&gt;
[[Datei:Wordclock-schmal-bestueckt.jpg|miniatur|Bestückung: Orientierung der IRLUs beachten!]]&lt;br /&gt;
&lt;br /&gt;
[[Datei:Wordclock-schmal-anschluesse.png|miniatur|Anschlüsse V1.0]]&lt;br /&gt;
[[Datei:Wordclock-schmal-anschluesse-1.1.png|miniatur|Anschlüsse V1.1]]&lt;br /&gt;
[[Datei:Wordclock-schmal-anschluesse-2.0.png|miniatur|Anschlüsse V2.0]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;WICHTIG (für 1.x und 2.x):&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Der oberste IRLU2905 muss anders herum eingelötet werden (Metall Richtung Spannungsregler) als die beiden unteren (Metall Richtung Schraubklemme). Siehe auch Foto rechts.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Möchte man einfarbige LEDs verwenden und auf die RGB-Steuerung verzichten, schließt man einfach zwei der drei RGB-PWM-Kanäle nicht an und verwendet stattdessen nur PWMR zur PWM-Steuerung. Die 2 zu PWMG und PWMB gehörenden IRLUs und die angeschlossenen 4 Widerstände am Gate der IRLUs kann man dann auch weglassen.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Bestückungsliste:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 Name                Wert&lt;br /&gt;
 C1,C3,C4,C6,C8,C9   100NF&lt;br /&gt;
 C10,C11,C12,C13     100NF&lt;br /&gt;
 C2                  4,7µF&lt;br /&gt;
 C5,C7               47µF&lt;br /&gt;
 D1                  1N4001&lt;br /&gt;
 IC1                 ATMEGA88&lt;br /&gt;
 IC2                 7805&lt;br /&gt;
 IC3                 TSOP1738 oder TSOP31238 oder SFH5110 (andere Pinbelegung!)&lt;br /&gt;
 IC4,IC5,IC6         74HCT595N&lt;br /&gt;
 IC7                 DS1307&lt;br /&gt;
 IC8,IC9,IC10,IC11   UDN2981A&lt;br /&gt;
 K4                  Wannenstecker 10-polig&lt;br /&gt;
 K7,K8               Wannenstecker 16-polig&lt;br /&gt;
 K6                  LDR&lt;br /&gt;
 KL1                 KLEMME5POL&lt;br /&gt;
 Q1                  32,768KHz&lt;br /&gt;
 R1,R6,R8,R10,R12    10K&lt;br /&gt;
 R7                  10K, entfällt!&lt;br /&gt;
 R2                  100&lt;br /&gt;
 R3,R4               4K7&lt;br /&gt;
 R5,R9,R11           82&lt;br /&gt;
 T1,T2,T3            IRLU2905&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Davon abweichend für 2.0:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 Name                Wert&lt;br /&gt;
 K4                  Wannenstecker 6-polig (statt 10-polig)&lt;br /&gt;
 K10                 I2C (neu, optional)&lt;br /&gt;
 K11                 SPI (neu, optional)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Anmerkung zu C2 und R2:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
C2 und R2 bilden zusammen einen Tiefpass. Hier gilt: Soll der TSOPxxxx/SFH5110 über ein längeres Kabel entfernt von der Platine angebracht werden, sollte man den Kondensator C2 nicht in die Platine löten, sondern direkt am Empfänger anbringen (Achtung: TSOP17XX und SFH5110 haben unterschiedliche Pinbelegung).&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== FAQ zur Bestückung ==&lt;br /&gt;
&lt;br /&gt;
[[Datei:Wordclock-schmal-bestueckt.jpg|miniatur|Bestückung: Orientierung der IRLUs (ganz rechts) beachten!]]&lt;br /&gt;
&lt;br /&gt;
 Q: Wie herum müssen die IRLUs eingelötet werden?&lt;br /&gt;
 A: Der oberste kommt mit der Metallseite nach links (Richtung&lt;br /&gt;
    Spannungsregler), Pin 1 ist hier der untere. Die anderen beiden IRLUs&lt;br /&gt;
    werden mit der Metallseite Richtung Schraubklemme eingelötet, siehe auch&lt;br /&gt;
    Foto rechts. Hier ist jeweils Pin 1 der obere.&lt;br /&gt;
&lt;br /&gt;
 Q: Welche ICs sollte ich sockeln?&lt;br /&gt;
 A: Wenn durch einen versehentlichen Kurzschluss bei der Freiluftverdrahtung der&lt;br /&gt;
    LEDs ein UDN2981 abfackelt, ist das ägerlich. Daher sollte man zumindest&lt;br /&gt;
    die UDNs und den ATMega sockeln. Besser ist es natürlich, alle zu sockeln.&lt;br /&gt;
&lt;br /&gt;
 Q: Bei dem ATMega und der RTC ist nicht ersichtlich, wie herum sie eingebaut&lt;br /&gt;
    werden müssen?&lt;br /&gt;
 A: Doch, kann man sehen: Der Lötpunkt von Pin1 ist immer rechteckig, die&lt;br /&gt;
    anderen sind oval. Das gilt übrigens für fast alle Bauteile, auch die Wannen.&lt;br /&gt;
&lt;br /&gt;
 Q: Ich möchte oben statt der abgebildeten zwei 2x8-poligen Stiftleisten 16-polige&lt;br /&gt;
    Wannenstecker nehmen. Wie herum kommen dann die oberen Wannen drauf?&lt;br /&gt;
 A: Mit der Kerbe nach unten, sieht man auch am rechteckigen Lötpunkt - und&lt;br /&gt;
    auch auf dem Foto rechts.&lt;br /&gt;
&lt;br /&gt;
 Q: Kann ich auf die Batterie verzichten, weil ich DCF77 einsetze bzw. nach&lt;br /&gt;
    einem Stromausfall die Uhr per Fernbedienung selbst neu stellen möchte?&lt;br /&gt;
 A: Wenn man keine Batterie einsetzt, sollte man VBat der RTC DS1307 mit GND&lt;br /&gt;
    verbinden. Das geht am einfachsten an den auf der Platine vorgesehenen&lt;br /&gt;
    Batterieanschlüssen: einfach K1 (Bat+) und K3 (Bat-) mit einem Stück Draht&lt;br /&gt;
    überbrücken. Übrigens: die Batterie hält lt. Datenblatt des DS1307&lt;br /&gt;
    10 Jahre, es ist also durchaus sinnvoll, diese auch zu bestücken.&lt;br /&gt;
&lt;br /&gt;
 Q: Der Infrarot-Empfänger TSOP17XX ist abgekündigt. Gibt es dazu eine Alternative?&lt;br /&gt;
 A: Als Ersatz kann man den [http://www.reichelt.de/?ARTICLE=107210 TSOP31238] nehmen. Er ist pinkompatibel.&lt;br /&gt;
&lt;br /&gt;
 Q: Kann ich (aus Kostengründen) auch einfarbige LEDs verwenden?&lt;br /&gt;
 A: Ja, einfach zwei der drei RGB-PWM-Kanäle nicht anschließen und nur PWMR (für Rot) benutzen.&lt;br /&gt;
    Die 2 zu PWMG und PWMB gehörenden IRLUs und die angeschlossenen 4 Widerstände am Gate der IRLUs&lt;br /&gt;
    kann man dann auch weglassen.&lt;br /&gt;
&lt;br /&gt;
&amp;quot;Beginner-Tipp&amp;quot;:&lt;br /&gt;
&lt;br /&gt;
[[Datei:Testmodul-Schaltplatine.JPG|miniatur]]&lt;br /&gt;
&lt;br /&gt;
Beim Zusammenbau der Word Clock gibt es eine Reihe von Fehlerquellen (Programmierung, Aufbau der Steuerplatine, Lötfehler auf den LED-Streifen, Verkabelung etc.). Für die Fehlersuche aber auch für das erste Erfolgserlebnis nach dem Zusammenbau der Schaltplatine kann man sich relativ einfach mit Hilfe von Vorwiderständen und Standard-LEDs eine &amp;quot;Test-Umgebung&amp;quot; aufbauen. Die ausgedruckte Tabelle mit der Zuordnung der Ausgänge/LEDs zu den entsprechenden Wörtern erleichtert die Interpretation. Achtung: auf die richtige &amp;quot;Default&amp;quot;-Sprachvariante achten. Wenn die LEDs dann wie erwartet leuchten = erstes Erfolgserlebnis. &lt;br /&gt;
&lt;br /&gt;
Eine BestückungsInfo für die Version V1.1 gibt es als PDF Download: &#039;&#039;&#039;[[Media:WordClockSteuerplatineV1.1Bestueckung.pdf]]&#039;&#039;&#039;&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
= Anschluss der LEDs =&lt;br /&gt;
&lt;br /&gt;
=== Zuordnung der Kanäle ===&lt;br /&gt;
&lt;br /&gt;
[[Datei:Wannen.png|400px|Anschlüsse der Wannenstecker]]&lt;br /&gt;
&lt;br /&gt;
Folgende Tabelle enthält die Zuordnung der Wörter zu den Pins der Wannenstecker.&lt;br /&gt;
Die Bezeichnungen der Pins entsprechen dem Schaltplan. Zu beachten ist, dass die Reihenfolge der Wörter nichts mit der Anordnung auf der Frontplatte zu tun hat.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; id=&amp;quot;pinbelegungen&amp;quot;&lt;br /&gt;
|+ &#039;&#039;&#039;Zuordnung Pins&#039;&#039;&#039;&lt;br /&gt;
|-                    &lt;br /&gt;
! Anschluss || Pin || [[#Deutsch (2-sprachig) |Frontplatte deutsch 2-sprachig]]  || [[#Deutsch (3-sprachig) |Frontplatte deutsch 3-sprachig]]  || [[#Englisch|Frontplatte Englisch]]&lt;br /&gt;
|-                                                         &lt;br /&gt;
|  OUT0 || K7-08 || ES IST               ||  ZW                         || IT IS&lt;br /&gt;
|-                                                        &lt;br /&gt;
|  OUT1 || K7-07 || FÜNF  (Minuten)      ||  EI                         || FIVE   (Minuten) &lt;br /&gt;
|-                                                        &lt;br /&gt;
|  OUT2 || K7-06 || ZEHN  (Minuten)      ||  N                          || TEN    (Minuten) &lt;br /&gt;
|-                                                        &lt;br /&gt;
|  OUT3 || K7-05 || VOR   (Minuten)      ||  S                          || QUARTER &lt;br /&gt;
|-                                                        &lt;br /&gt;
|  OUT4 || K7-04 || DREI  (Minuten)      ||  IEBEN                      || TWENTY (Minuten) &lt;br /&gt;
|-                                                        &lt;br /&gt;
|  OUT5 || K7-03 || VIERTEL              ||  DREI                       || HALF &lt;br /&gt;
|-                                                        &lt;br /&gt;
|  OUT6 || K7-02 || NACH                 ||  VIER                       || TO &lt;br /&gt;
|-                                                        &lt;br /&gt;
|  OUT7 || K7-01 || VOR                  ||  FÜNF                       || PAST &lt;br /&gt;
|-                                                        &lt;br /&gt;
|  OUT8 || K7-16 || HALB                 ||  SECHS                      || ONE &lt;br /&gt;
|-                                                        &lt;br /&gt;
|  OUT9 || K7-15 || S                    ||  ACHT                       || TWO &lt;br /&gt;
|-                                                        &lt;br /&gt;
|  OUT10 || K7-14 || EIN                 ||  NEUN                       || THREE &lt;br /&gt;
|-                                                        &lt;br /&gt;
|  OUT11 || K7-13 || ZWEI                ||  ZEHN                       || FOUR &lt;br /&gt;
|-                                                        &lt;br /&gt;
|  OUT12 || K7-12 || DREI                ||  ELF                        || FIVE &lt;br /&gt;
|-                                                        &lt;br /&gt;
|  OUT13 || K7-11 || VIER                ||  ZWÖLF                      || SIX &lt;br /&gt;
|-                                                        &lt;br /&gt;
|  OUT14 || K7-10 || FÜNF                ||  ES IST                     || SEVEN &lt;br /&gt;
|-                                                        &lt;br /&gt;
|  OUT15 || K7-09 || SECHS               ||  UHR                        || EIGHT &lt;br /&gt;
|-                                                        &lt;br /&gt;
|  OUT16 || K8-08 || SIEBEN              ||  FÜNF (Minuten)             || NINE &lt;br /&gt;
|-                                                        &lt;br /&gt;
|  OUT17 || K8-07 || ACHT                ||  ZEHN (Minuten)             || TEN &lt;br /&gt;
|-                                                        &lt;br /&gt;
|  OUT18 || K8-06 || NEUN                ||  ZWANZIG (Minuten)      || ELEVEN &lt;br /&gt;
|-                                                        &lt;br /&gt;
|  OUT19 || K8-05 || ZEHN                ||  DREI (Minuten)             || TWELVE &lt;br /&gt;
|-                                                        &lt;br /&gt;
|  OUT20 || K8-04 || ELF                 ||  VIERTEL (Minuten)          || O CLOCK  &lt;br /&gt;
|-                                                        &lt;br /&gt;
|  OUT21 || K8-03 || ZWÖLF               ||  NACH                       || unverbunden&lt;br /&gt;
|-                                                        &lt;br /&gt;
|  OUT22 || K8-02 || UHR                 ||  VOR                        || unverbunden&lt;br /&gt;
|-                                                        &lt;br /&gt;
|  OUT23 || K8-01 || unverbunden         ||  HALB                       || unverbunden&lt;br /&gt;
|-                                                        &lt;br /&gt;
|  OUTL1 || K8-09 || min1                ||  min1                       || min1&lt;br /&gt;
|-                                                        &lt;br /&gt;
|  OUTL2 || K8-10 || min2                ||  min2                       || min2&lt;br /&gt;
|-                                                        &lt;br /&gt;
|  OUTL3 || K8-11 || min3                ||  min3                       || min3&lt;br /&gt;
|-                                                        &lt;br /&gt;
|  OUTL4 || K8-12 || min4                ||  min4                       || min4&lt;br /&gt;
|-                                                        &lt;br /&gt;
|  OUTG1 || K8-13 || Ambilight (opt.)           ||  Ambilight (opt.)                  || Ambilight (opt.)           &lt;br /&gt;
|-                                                        &lt;br /&gt;
|  OUTG2 || K8-14 || unverbunden         ||  unverbunden                || unverbunden&lt;br /&gt;
|-                                                        &lt;br /&gt;
|  OUTG3 || K8-15 || unverbunden         ||  unverbunden                || unverbunden&lt;br /&gt;
|-                                                        &lt;br /&gt;
|  OUTG4 || K8-16 || dcf Empfang         ||  dcf Empfang                || dcf Empfang             &lt;br /&gt;
|}&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
=== Beschaltungsvarianten der LEDs ===&lt;br /&gt;
&lt;br /&gt;
Da die Schaltung genügend Power hat, um eine Unmenge an RGB-LEDs zu treiben, gibt es folgende Möglichkeiten, die auch mixbar sind:&lt;br /&gt;
&lt;br /&gt;
1. Pro Wort für jeden Buchstaben eine RGB-LED (mit gemeinsamer Anode) in&lt;br /&gt;
Parallelschaltung (natürlich mit geeignetem Vorwiderstand pro LED)&lt;br /&gt;
&lt;br /&gt;
Prinzip (am Beispiel des Wortes &amp;quot;VIER&amp;quot;):&lt;br /&gt;
&lt;br /&gt;
         /---|&amp;gt;|----| R1R |---- PWMR&lt;br /&gt;
      +--|---|&amp;gt;|----| R1G |---- PWMG     &amp;quot;V&amp;quot;&lt;br /&gt;
      |  \---|&amp;gt;|----| R1B |---- PWMB&lt;br /&gt;
      |&lt;br /&gt;
      |  /---|&amp;gt;|----| R2R |---- PWMR&lt;br /&gt;
      +--|---|&amp;gt;|----| R2G |---- PWMG     &amp;quot;I&amp;quot;&lt;br /&gt;
      |  \---|&amp;gt;|----| R2B |---- PWMB&lt;br /&gt;
 OUTx-+&lt;br /&gt;
      |  /---|&amp;gt;|----| R3R |---- PWMR&lt;br /&gt;
      +--|---|&amp;gt;|----| R3G |---- PWMG     &amp;quot;E&amp;quot;&lt;br /&gt;
      |  \---|&amp;gt;|----| R3B |---- PWMB&lt;br /&gt;
      |&lt;br /&gt;
      |  /---|&amp;gt;|----| R4R |---- PWMR&lt;br /&gt;
      +--|---|&amp;gt;|----| R4G |---- PWMG     &amp;quot;R&amp;quot;&lt;br /&gt;
         \---|&amp;gt;|----| R4B |---- PWMB&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
2. Pro Wort für jeden Buchstaben eine RGB-LED in Reihenschaltung (mit&lt;br /&gt;
nur 1 Vorwiderstand für die ganze Reihe, bzw. 3 wegen RGB). Das geht&lt;br /&gt;
aber nur, wenn die RGB-LEDs unabhängige Anoden und Kathoden haben (ja,&lt;br /&gt;
die gibt es).&lt;br /&gt;
&lt;br /&gt;
Prinzip:&lt;br /&gt;
                         &amp;quot;V&amp;quot;    &amp;quot;I&amp;quot;    &amp;quot;E&amp;quot;    &amp;quot;R&amp;quot;&lt;br /&gt;
         /----| R1R |----|&amp;gt;|----|&amp;gt;|----|&amp;gt;|----|&amp;gt;|---- PWMR&lt;br /&gt;
 OUTx --+-----| R1G |----|&amp;gt;|----|&amp;gt;|----|&amp;gt;|----|&amp;gt;|---- PWMG&lt;br /&gt;
         \----| R1B |----|&amp;gt;|----|&amp;gt;|----|&amp;gt;|----|&amp;gt;|---- PWMB&lt;br /&gt;
&lt;br /&gt;
Theoretisch könnte man solche Streifen als Platine herstellen, welche man dann immer auf die gewünschte Länge kürzt, als 1, 2, 3 ... 7 Buchstaben.&lt;br /&gt;
&lt;br /&gt;
Bei Verwendung von einfarbigen LEDs vereinfachen sich die Prinzip-Schaltungen wie folgt:&lt;br /&gt;
&lt;br /&gt;
1. Parallelschaltung, eine LED pro Buchstabe im Wort:&lt;br /&gt;
&lt;br /&gt;
       /----|&amp;gt;|----| R1 |---- PWMR     &amp;quot;V&amp;quot;&lt;br /&gt;
      +-----|&amp;gt;|----| R2 |---- PWMR     &amp;quot;I&amp;quot;&lt;br /&gt;
 OUTx-+&lt;br /&gt;
      +-----|&amp;gt;|----| R3 |---- PWMR     &amp;quot;E&amp;quot;&lt;br /&gt;
       \----|&amp;gt;|----| R4 |---- PWMR     &amp;quot;R&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
2. Reihenschaltung, eine LED pro Buchstabe im Wort:&lt;br /&gt;
&lt;br /&gt;
                    &amp;quot;V&amp;quot;    &amp;quot;I&amp;quot;    &amp;quot;E&amp;quot;    &amp;quot;R&amp;quot;&lt;br /&gt;
 OUTx ----| R1 |----|&amp;gt;|----|&amp;gt;|----|&amp;gt;|----|&amp;gt;|---- PWMR&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Zum Berechnen der Vorwiderstände kann z.&amp;amp;nbsp;B. dieser Rechner&lt;br /&gt;
verwendet werden: &#039;&#039;&#039;[http://www.elektronik-kompendium.de/sites/bau/1109111.htm Vorwiderstands-Rechner]&#039;&#039;&#039; oder &#039;&#039;&#039;[http://www.modding-faq.de/index.php?artid=506 Vorwiderstands-Rechner mit Unterstützung für Reihenschaltung]&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Damit die LEDs selbst nicht sichtbar sind, benötigt man hinter den transparenten Buchstaben einen Diffusor. Im einfachsten Fall kann das eine weiße Schicht Farbe sein.&lt;br /&gt;
&lt;br /&gt;
&amp;quot;Beginner-Tipp&amp;quot;:&lt;br /&gt;
&lt;br /&gt;
In der Sammelbestellung wurden die Vorwiderstände für die Reihenschaltung berechnet. &lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
=== LEDs &amp;amp; Platinen ===&lt;br /&gt;
==== Single-LED-Platine ====&lt;br /&gt;
Ende 2013 wurde eine neue Platine für die LEDs entworfen. Diese reduziert die notwendigen Löt- und Verdrahtungsarbeiten auf ein minimum.&amp;lt;br&amp;gt;&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
| Top Seite des Single Boards: || Bottom Seite des Single Boards:&lt;br /&gt;
|-&lt;br /&gt;
| [[Datei:Single_Board_v4_TOP.jpg|350px|Singel LED Platine - LED Seite]]&lt;br /&gt;
 || [[Datei:Single_Board_v4_BOTTOM.jpg|350px|Singel LED Platine - Widerstand Seite]]&lt;br /&gt;
|}&lt;br /&gt;
Das Board ist wie folgt konzipiert:&lt;br /&gt;
* von der TOP Seite betrachtet, befinden sich rechts die 4 Platinen für die Minuten-LEDs&lt;br /&gt;
* von der TOP Seite betrachtet, befindet sich oben rechts eine kleine Zusatzplatine, welche zur Stabilisierung des Pollin DCF Empfängers konstruiert wurde - DANKE an Thomas K.! &amp;lt;br&amp;gt;Anbei der Schaltplan und der Bestückungsplan:&amp;lt;br&amp;gt;[[Datei:Single_Board_v4_DCF77-Schaltplan.png|200px]] [[Datei:Single-Board-v4-DCF-Bestueckung.JPG|300px]]&amp;lt;br&amp;gt;IC1 und C3 sind auf der Rückseite zu bestücken.&lt;br /&gt;
&amp;lt;br&amp;gt;Die notwendigen Bauteile sind als [http://www.reichelt.de/?ACTION=20;AWKID=986833;PROVID=2084 Warenkorb bei Reichelt] hinterlegt.&lt;br /&gt;
* es besteht die Möglichkeit 2 zusätzliche PLCC-6 LEDs zu bestücken (D1 und D2 - links und rechts von SECHS) um so bis zu 6 Status-Anzeigen nach vorne zu führen (derzeit nicht in der SW gesondert verwendet). So kann zB die DCF77 Empfangsanzeige nach vorne ausgeführt werden. In der aktuellen Version sind diese wie folgt vorverdrahtet:&lt;br /&gt;
** D1 ROT -&amp;gt; Out G4 (DCF Empfangskontrolle)&lt;br /&gt;
** D1 GRÜN -&amp;gt; n/a - ausgeführt als Pin zur Verbindungsseite&lt;br /&gt;
** D1 BLAU -&amp;gt; n/a - ausgeführt als Pin zur Verbindungsseite&lt;br /&gt;
** D2 ROT -&amp;gt; Out G1 (Ambilight)&lt;br /&gt;
** D2 GRÜN -&amp;gt; Out G2 - derzeit nicht in der SW verwendet&lt;br /&gt;
** D2 BLAU -&amp;gt; Out G3 - derzeit nicht in der SW verwendet&lt;br /&gt;
* möchte man zB nur die DCF77 Empfangskontrolle haben, so reicht es den ROT-Kanal von D1 mit einer PLCC-2 LED und den dazu gehörigen Widerstand zu bestücken&lt;br /&gt;
* TSOP mit Stabilisierungskondensator und LDR werden direkt auf dem Single Board bestückt&lt;br /&gt;
* das Single Board wird wie folgt mit der Hauptplatine verbunden:&lt;br /&gt;
** 2 16polige Flachbandkabeln für K7 und K8&lt;br /&gt;
** 4 Adern für PWMR / PMWG / PMWB / GND&lt;br /&gt;
** 2 Drähten für den LDR&lt;br /&gt;
** 3 Drähte für den TSOP&lt;br /&gt;
* die Verbindungen zu den Minuten- / Ambilightplatinen erfolgt über die Kontakte an den jeweiligen Ecken / Seiten&lt;br /&gt;
* für die weiter Verwendung sind die Minutenanschlüsse M1-M4 an der zentralen Verbinderseite ausgeführt&lt;br /&gt;
* für die weiter Verwendung sind die OUT G1-G4 an der zentralen Verbinderseite ausgeführt&lt;br /&gt;
* auf der BOTTOM Seite ist Platz für eine PLCC-2 LED als DCF77 Empfangskontroll LED vorgesehen&lt;br /&gt;
&lt;br /&gt;
Die für die DCF77 Empfangskontrolle, D1 und D2 benötigten Bauteile sind &#039;&#039;&#039;nicht Bestandteil&#039;&#039;&#039; eines angebotenen Paketes.&lt;br /&gt;
&lt;br /&gt;
Die Minuten-LEDs werden an den Ecken der Platine über kleine Drahtbrücken angeschlossen: (Bild ist noch vom Prototyp)&lt;br /&gt;
[[Datei:WordClock_Singel_LED_PCB_Minuten.jpg|400px|Anschluß Minuten LED]]&lt;br /&gt;
&lt;br /&gt;
Die Verbindung zwischen der LED-Platine und der Hauptplatine erfolgt mittels kurzem Flachbandkabel.&amp;lt;br&amp;gt;&lt;br /&gt;
[[Datei:WordClock_Singel_LED_PCB_Anschluß.jpg|400px|Anschluß an die Hauptplatine]]&lt;br /&gt;
&lt;br /&gt;
Auf dem Prototyp waren die Buchsen für K7 und K8 verdreht. Daher mussten die Flachbandkabel beim verbinden verdreht werden. Dieses wird in der finalen Version korrigiert. Es erfolgt dann ein Austausch des Bildes.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Bitte beachtet, dass für das SingleBoard zusätzliche Bauteile benötigt werden. Diese sind in einem eigenen Warenkorb bei Reichelt hinterlegt.&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
Diese sind in einem eigenen &#039;&#039;&#039;[http://www.reichelt.de/?ACTION=20;AWKID=847662;PROVID=2084 WARENKORB]&#039;&#039;&#039; bei Reichelt hinterlegt.&amp;lt;br&amp;gt;&lt;br /&gt;
Die Bauteile für das DCF77 Stabilisierungsboard sind ebenfalls in einem eigenen &#039;&#039;&#039;[http://www.reichelt.de/?ACTION=20;AWKID=885799;PROVID=2084 WARENKROB]&#039;&#039;&#039; bei Reichelt hinterlegt.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
==== Streifenplatinen ====&lt;br /&gt;
Die Platine hat ein Maß von 314 x 12 mm und ist auf die Word-Clock-Front-Varianten A und B (also 450mm x 450mm) ausgelegt.&lt;br /&gt;
&lt;br /&gt;
Der Abstand der einzelnen LEDs beträgt 28.1mm&lt;br /&gt;
&lt;br /&gt;
Die Streifenplatine wird so ausschauen: (Version 8 vom 06.März 2010)&lt;br /&gt;
&lt;br /&gt;
[[Datei:LED_Streifen_V6_1.png|750px|Streifenplatine für SMD RGB LEDs Version 8]]&lt;br /&gt;
&lt;br /&gt;
[[Datei:LED_Streifen_V6_1_bestueckt.jpg|750px|Erster Streifen bestückt]]&lt;br /&gt;
&lt;br /&gt;
Erste Streifenplatine bestückt.&amp;lt;br&amp;gt;&lt;br /&gt;
Weitere Beispiel-Photos der bestückten Streifenplatinen sind [http://www.mikrocontroller.net/topic/156661#1780198 hier] zu finden.&lt;br /&gt;
&lt;br /&gt;
Ausschnitt vergrößert dargestellt:&lt;br /&gt;
&lt;br /&gt;
[[Datei:LED_Streifen_V6_1_schnitt.png|500px|Aussschnitt]]&lt;br /&gt;
&lt;br /&gt;
Datenblatt der LED mit Bestückungsinfos: [[Datei:SMD RGB PLCC-6 datasheet3.pdf]]&lt;br /&gt;
&lt;br /&gt;
Hier ist die Bestückung aller Streifen schematisch detailliert gezeigt: &amp;lt;br&amp;gt; [http://www.mikrocontroller.net/topic/156661?goto=1671369#1671369 Beitrag] &amp;lt;br&amp;gt;&lt;br /&gt;
Bestückungstabelle: [[Datei:2012WordClockLEDMatrix.pdf]] &amp;lt;br&amp;gt;&lt;br /&gt;
Bestückungsgrafik: [[Datei:2012WordClockLEDMatrix_wiring_v22.pdf]]&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
==== Technische Daten der SMD RGB PLCC-6 LEDs ====&lt;br /&gt;
Spezifikation&lt;br /&gt;
* Source Material: InGaN&lt;br /&gt;
* Emitting Colour: SMD SMT 5050 RGB&lt;br /&gt;
* LENS Type: Water clear&lt;br /&gt;
* Reverse Voltage: 5.0 V&lt;br /&gt;
* Viewing Angle: 140 degree&lt;br /&gt;
* Lead Soldering Temp: 260°C for 5 seconds&lt;br /&gt;
&lt;br /&gt;
Absolute Maximum Rating (Ta = 250C)&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! PARAMETER || Symbol || RED || GREEN || BLUE || UNITS&lt;br /&gt;
|-&lt;br /&gt;
| Power Dissipation || PO || align=&amp;quot;right&amp;quot; | 80 || align=&amp;quot;right&amp;quot; | 95 || align=&amp;quot;right&amp;quot; | 85 || mW&lt;br /&gt;
|-&lt;br /&gt;
| DC Current || IF || align=&amp;quot;right&amp;quot; | 20 || align=&amp;quot;right&amp;quot; | 20 || align=&amp;quot;right&amp;quot; | 20 || mA&lt;br /&gt;
|-&lt;br /&gt;
| Peak Forward Current || IFP || align=&amp;quot;right&amp;quot; | 100 || align=&amp;quot;right&amp;quot; | 100 || align=&amp;quot;right&amp;quot; | 100 || mA&lt;br /&gt;
|-&lt;br /&gt;
| Reverse Voltage || VR || align=&amp;quot;right&amp;quot; | 5 || align=&amp;quot;right&amp;quot; | 5 || align=&amp;quot;right&amp;quot; | 5 || V&lt;br /&gt;
|-&lt;br /&gt;
| Operating Temperature || Topr || colspan=&amp;quot;3&amp;quot; align=&amp;quot;center&amp;quot; | -25 to +85 || °C&lt;br /&gt;
|-&lt;br /&gt;
| Storage Temperature || Tstg ||  colspan=&amp;quot;3&amp;quot; align=&amp;quot;center&amp;quot; | -40 to +85 || °C&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Electro-optical Characteristics (Ta = 250C)&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! PARAMETER || SYMBOL || CONDITIONS || MIN. || TYP. || MAX. || UNIT&lt;br /&gt;
|-&lt;br /&gt;
| Forward Voltage (B) || VF || IF = 20mA || align=&amp;quot;right&amp;quot; | 3.4 || align=&amp;quot;right&amp;quot; | 3.6 || align=&amp;quot;right&amp;quot; | 3.8 || V&lt;br /&gt;
|-&lt;br /&gt;
| Forward Voltage (G) || VF || IF = 20mA || align=&amp;quot;right&amp;quot; | 3.4 || align=&amp;quot;right&amp;quot; | 3.6 || align=&amp;quot;right&amp;quot; | 3.8 || V&lt;br /&gt;
|-&lt;br /&gt;
| Forward Voltage (R) || VF || IF = 20mA || align=&amp;quot;right&amp;quot; | 1.9 || align=&amp;quot;right&amp;quot; | 2.1 || align=&amp;quot;right&amp;quot; | 2.5 || V&lt;br /&gt;
|-&lt;br /&gt;
| Dominant Wavelength (B) || lD || IF = 20mA || align=&amp;quot;right&amp;quot; | 465 || align=&amp;quot;right&amp;quot; | 470 || align=&amp;quot;right&amp;quot; | 475 || nm&lt;br /&gt;
|-&lt;br /&gt;
| Dominant Wavelength (G) || lD || IF = 20mA || align=&amp;quot;right&amp;quot; | 515 || align=&amp;quot;right&amp;quot; | 520 || align=&amp;quot;right&amp;quot; | 525 || nm&lt;br /&gt;
|-&lt;br /&gt;
| Dominant Wavelength (R) || lD || IF = 20mA || align=&amp;quot;right&amp;quot; | 625 || align=&amp;quot;right&amp;quot; | 630 || align=&amp;quot;right&amp;quot; | 635 || nm&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Pin / Farbzuordnung:&lt;br /&gt;
* R: Pin 1 - 6&lt;br /&gt;
* G: Pin 2 - 5&lt;br /&gt;
* B: Pin 3 - 4&lt;br /&gt;
&lt;br /&gt;
[[Datei:plcc6_smd_RGB.JPG]]&lt;br /&gt;
----&lt;br /&gt;
==== Widerstandswerte für die LED Streifen ====&lt;br /&gt;
&lt;br /&gt;
Berechnet sind die Widerstände für eine Spannungsversorgung von 15V - abzgl. 1,4V durch den Spannungsabfall an den UDN2981. Ein solches Netzteil gibt es zB bei [http://www.pollin.de/shop/dt/MjU5OTQ2OTk-/Stromversorgung/Netzgeraete/Regelbare_Netzgeraete/EcoFriendly_Universal_Schaltnetzteil_MW_3H36GS.html Pollin] oder auch bei [http://www.reichelt.de/?ACTION=3;ARTICLE=89789;PROVID=2402 Reichelt]. &lt;br /&gt;
&lt;br /&gt;
&amp;quot;Beginner-Tipp&amp;quot;:&lt;br /&gt;
&lt;br /&gt;
Bitte lest zum Stichwort &amp;quot;Netzteil&amp;quot; im Forum nach. Es gibt hierzu einige Bemerkungen und Empfehlungen. So z. B. auch der Hinweis auf ein weiteres Netzteil von C*: [http://www.conrad.de/ce/de/product/512696/HN-POWER-HNP18-150-STECKER-NETZT-18W Netzteil_15V_1.2A]&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;
! colspan=&amp;quot;3&amp;quot; | |||| colspan=&amp;quot;3&amp;quot; | ....Widerstände E12.... |||| colspan=&amp;quot;3&amp;quot; | ....Widerstände E24.... ||&lt;br /&gt;
|- &lt;br /&gt;
! Streifen  || Wort  || LEDs |||| style=&amp;quot;color:red;&amp;quot; | Rot || style=&amp;quot;color:green;&amp;quot; | Grün || style=&amp;quot;color:blue;&amp;quot; | Blau |||| style=&amp;quot;color:red;&amp;quot; | Rot || style=&amp;quot;color:green;&amp;quot; | Grün || style=&amp;quot;color:blue;&amp;quot; | Blau || Anschluss&lt;br /&gt;
|- &lt;br /&gt;
| 1 ||  ES ||  2 ||||  560 ||  470 ||  470 ||||  510 ||  360 ||  360 || OUT14&lt;br /&gt;
|- &lt;br /&gt;
| {{H16}} | 1 || {{H16}} | K ||  ||||  ||  ||  ||||  ||  ||  ||&lt;br /&gt;
|- &lt;br /&gt;
| 1 || IST || 3 |||| 470 || 220 || 220 |||| 390 || 200 || 200 || OUT14&lt;br /&gt;
|- &lt;br /&gt;
| {{H16}} | 1 || {{H16}} | L ||  ||||  ||  ||  ||||  ||  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| 1 || FÜNF || 4 |||| 330 || 33 || 33 |||| 300 || 27 || 33 || OUT16&lt;br /&gt;
|-{{H12}}&lt;br /&gt;
| 2 || ZEHN || 4 |||| 330 || 33 || 33 |||| 300 || 27 || 33 || OUT17&lt;br /&gt;
|-{{H12}}&lt;br /&gt;
| 2 || ZWAN || 4 |||| 330 || 33 || 33 |||| 300 || 27 || 33 || OUT18&lt;br /&gt;
|-{{H12}}&lt;br /&gt;
| 2 || ZIG || 3 |||| 470 || 220 || 220 |||| 390 || 200 || 200 || OUT18&lt;br /&gt;
|-&lt;br /&gt;
| 3 || DREI || 4 |||| 330 || 33 || 33 |||| 300 || 27 || 33 || OUT19&lt;br /&gt;
|-&lt;br /&gt;
| 3 || VIER || 4 |||| 330 || 33 || 33 |||| 300 || 27 || 33 || OUT20&lt;br /&gt;
|-&lt;br /&gt;
| 3 || TEL || 3 |||| 470 || 220 || 220 |||| 390 || 200 || 200 || OUT20&lt;br /&gt;
|-{{H12}}&lt;br /&gt;
| {{H16}} | 4 || {{H16}} | TG ||  ||||  ||  ||  ||||  ||  ||  ||&lt;br /&gt;
|-{{H12}}&lt;br /&gt;
| 4 || NACH || 4 |||| 330 || 33 || 33 |||| 300 || 27 || 33 || OUT21&lt;br /&gt;
|-{{H12}}&lt;br /&gt;
| 4 || VOR || 3 |||| 470 || 220 || 220 |||| 390 || 200 || 200 || OUT22&lt;br /&gt;
|- {{H12}}&lt;br /&gt;
| {{H16}} | 4 || {{H16}} | JM ||  ||||  ||  ||  ||||  ||  ||  ||  &lt;br /&gt;
|-&lt;br /&gt;
| 5 || HALB || 4 |||| 330 || 33 || 33 |||| 300 || 27 || 33 || OUT23&lt;br /&gt;
|- &lt;br /&gt;
| {{H16}} | 5 || {{H16}} | Q ||  ||||  ||  ||  ||||  ||  ||  || &lt;br /&gt;
|-&lt;br /&gt;
| 5 || ZWÖ || 3 |||| 470 || 220 || 220 |||| 390 || 200 || 200 || OUT13&lt;br /&gt;
|-&lt;br /&gt;
| 5 || LF || 2 |||| 560 || 470 || 470 |||| 510 || 360 || 360 || OUT13&lt;br /&gt;
|- &lt;br /&gt;
| {{H16}} | 5 || {{H16}} | P ||  ||||  ||  ||  ||||  ||  ||  ||&lt;br /&gt;
|-{{H12}}&lt;br /&gt;
| 6 || ZW || 2 |||| 560 || 470 || 470 |||| 510 || 360 || 360 || OUT0&lt;br /&gt;
|-{{H12}}&lt;br /&gt;
| 6 || EI || 2 |||| 560 || 470 || 470 |||| 510 || 360 || 360 || OUT1&lt;br /&gt;
|-{{H12}}&lt;br /&gt;
| 6 || N || 1 |||| 680 || 560 || 560 |||| 620 || 560 || 560 || OUT2&lt;br /&gt;
|-{{H12}}&lt;br /&gt;
| 6 || S || 1 |||| 680 || 560 || 560 |||| 620 || 560 || 560 || OUT3&lt;br /&gt;
|-{{H12}}&lt;br /&gt;
| 6 || IEB || 3 |||| 470 || 220 || 220 |||| 390 || 200 || 200 || OUT4&lt;br /&gt;
|-{{H12}}&lt;br /&gt;
| 6 || EN || 2 |||| 560 || 470 || 470 |||| 510 || 360 || 360 || OUT4&lt;br /&gt;
|- &lt;br /&gt;
| {{H16}} | 7 || {{H16}} | K ||  ||||  ||  ||  ||||  ||  ||  ||  &lt;br /&gt;
|-&lt;br /&gt;
| 7 || DREI || 4 |||| 330 || 33 || 33 |||| 300 || 27 || 33 || OUT5&lt;br /&gt;
|- &lt;br /&gt;
| {{H16}} | 7 || {{H16}} | RH ||  ||||  ||  ||  ||||  ||  ||  || &lt;br /&gt;
|-&lt;br /&gt;
| 7 || FÜNF || 4 |||| 330 || 33 || 33 |||| 300 || 27 || 33 || OUT7&lt;br /&gt;
|-{{H12}}&lt;br /&gt;
| 8 || ELF || 3 |||| 470 || 220 || 220 |||| 390 || 200 || 200 || OUT12&lt;br /&gt;
|-{{H12}}&lt;br /&gt;
| 8 || NEUN || 4 |||| 330 || 33 || 33 |||| 300 || 27 || 33 || OUT10&lt;br /&gt;
|-{{H12}}&lt;br /&gt;
| 8 || VIER || 4 |||| 330 || 33 || 33 |||| 300 || 27 || 33 || OUT6&lt;br /&gt;
|- &lt;br /&gt;
| {{H16}} | 9 || {{H16}} | W ||  ||||  ||  ||  ||||  ||  ||  ||  &lt;br /&gt;
|-&lt;br /&gt;
| 9 || ACHT || 4 |||| 330 || 33 || 33 |||| 300 || 27 || 33 || OUT9&lt;br /&gt;
|-&lt;br /&gt;
| 9 || ZEHN || 4 |||| 330 || 33 || 33 |||| 300 || 27 || 33 || OUT11&lt;br /&gt;
|- &lt;br /&gt;
| {{H16}} | 9 || {{H16}} | RS ||  ||||  ||  ||  ||||  ||  ||  ||  &lt;br /&gt;
|-{{H12}}&lt;br /&gt;
| {{H16}} | 10 || {{H16}} | B ||  ||||  ||  ||  ||||  ||  ||  ||  &lt;br /&gt;
|-{{H12}}&lt;br /&gt;
| 10 || SEC || 3 |||| 470 || 220 || 220 |||| 390 || 200 || 200 || OUT8&lt;br /&gt;
|-{{H12}}&lt;br /&gt;
| 10 || HS || 2 |||| 560 || 470 || 470 |||| 510 || 360 || 360 || OUT8&lt;br /&gt;
|-{{H12}}&lt;br /&gt;
| {{H16}} | 10 || {{H16}} | FM ||  ||||  ||  ||  ||||  ||  ||  ||  &lt;br /&gt;
|-{{H12}}&lt;br /&gt;
| 10 || UHR || 3 |||| 470 || 220 || 220 |||| 390 || 200 || 200 || OUT15&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Es werden somit folgende Widerstände aus der E24 Reihe benötigt:&lt;br /&gt;
&lt;br /&gt;
* 13x 27Ω&lt;br /&gt;
* 13x 33Ω&lt;br /&gt;
* 18x 200Ω&lt;br /&gt;
* 13x 300Ω&lt;br /&gt;
* 12x 360Ω&lt;br /&gt;
* 9x 390Ω&lt;br /&gt;
* 6x 510Ω&lt;br /&gt;
* 4x 560Ω&lt;br /&gt;
* 2x 620Ω&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
==== Ambilight-/LED-Streifenplatine bestücken ====&lt;br /&gt;
&lt;br /&gt;
&amp;quot;Beginner-Tipps&amp;quot;:&lt;br /&gt;
&lt;br /&gt;
Die Beschreibung zum Thema Ambilight ist im Forum etwas unübersichtlich. &lt;br /&gt;
&lt;br /&gt;
Sehr hilfreich zum Verständnis sind die Bilder von [http://www.mikrocontroller.net/topic/156661#1780198 Matthias]. Wichtig zum Verständnis ist auch der Hinweis auf die Drahtbrücken auf der Platinenunterseite vor der ersten LED eines Wortes. Es hat mir sehr geholfen, das Platinen-Layout-Schema und das Foto übereinander zu montieren.&lt;br /&gt;
&lt;br /&gt;
[[Datei:LED-Platine.jpg|miniatur]]&lt;br /&gt;
&lt;br /&gt;
Anhand der [http://www.mikrocontroller.net/articles/Word_Clock_Variante_1#Widerstandswerte_f.C3.BCr_die_LED_Streifen Tabelle] kann man erkennen, dass die Widerstände im Ambilight-Paket (300 Ohm = rot, 27 Ohm = grün, 33 Ohm = blau) für 2 x 4 LEDs in Serie ausgelegt sind. &lt;br /&gt;
&lt;br /&gt;
Man kann also 2 x 4 LEDs hinter einander löten oder die Variante von Christian aufgreifen der die LEDs physikalisch in 2er Gruppen angeordnet hat. Durch Drahtbrücken werden diese 2er Gruppen aber dann elektrisch zu zwei 4er Gruppen: LED-LED-Bügel-LED-LED-frei-LED-LED-Bügel-LED-LED, so dass auch für diese Version die Widerstände passen.&lt;br /&gt;
&lt;br /&gt;
Update Jan 2014: ich habe für die Amiblight-Platinen nach dem Muster LED-LED-Bügel-LED-LED-frei-LED-LED-Bügel-LED-LED diese Schemazeichnung mit Lötpunkten und ganz kurzen Drahtbrücken angefertigt:&lt;br /&gt;
&lt;br /&gt;
[[Datei:Ambilight-wiring-2x2x2x2-Leds-KHK.png|miniatur]]&lt;br /&gt;
&lt;br /&gt;
Persönlicher Kommentar KHK: &lt;br /&gt;
Ich habe inzwischen die zweite Wordclock fertig gestellt. Beim ersten Mal habe ich die LED-Streifenplatinen/Ambilight-Streifen ohne sie zu trennen bestückt. Das war schön übersichtlich und einfach zu löten. Das Trennen der fertig gelöteten Streifen war aber sehr schwierig. Bei der zweiten Wordclock habe ich die LED-Streifen vor der Bestückung mit einer Hebelschere getrennt. Das ging super einfach und hat mir viel Mühe gespart. Fazit: Trennt bitte die LED-Streifen vor der Bestückung ab! Ihr spart Euch viel Mühe und Stress.&lt;br /&gt;
&lt;br /&gt;
Beginner-Tipp: Das Ambilight wird mit OUTG2 angesteuert (Steuerplatine Version 1.1).&lt;br /&gt;
&lt;br /&gt;
==== LED-Streifen: Logik ====&lt;br /&gt;
&lt;br /&gt;
* Das Signal für die R/G/B PWM wird für jede Streifenplatine seitlich zugeführt (&amp;quot;R/G/B-Ausgangssignal&amp;quot;). Wichtig: nicht alle Platinen hintereinanderschalten, sondern die einzelnen Streifen parallel schalten (sonst werden die Leiterbahnen der ersten Platinen immer mit dem vollen Strom belastet). &lt;br /&gt;
&lt;br /&gt;
* Das &amp;quot;R/G/B-Ausgangssignal&amp;quot; wird vor jedem Wort auf den Vorwiderstand geführt. Dazu ist es notwendig das &amp;quot;R/G/B-Ausgangssignal&amp;quot; von den gemeinsamen Leiterbahnen (R,G,B) mit Draht- (R und G) bzw. einer Lötbrücke (B) auf die Vorwiderstände zu legen. &lt;br /&gt;
&lt;br /&gt;
* Innerhalb eines Wortes werden die vier Signale (PWM R/G/B + COM) über Lötbrücken von einem Buchstaben zum anderen weitergeführt. &lt;br /&gt;
&lt;br /&gt;
* Am Ende eines Wortes werden die Ausgänge 1, 2 und 3 der LED mit Lötbrücken zusammengeführt und gehen auf COM. &lt;br /&gt;
&lt;br /&gt;
* Eine Besonderheit ergibt sich bei &amp;quot;Leerzeichen&amp;quot; - wie z. B. beim Ambilight oder bei &amp;quot;Es(leer)ist&amp;quot;: &lt;br /&gt;
** Die COM Leitung wird durch zwei Lötbrücken links und rechts des zu überbrückenden Segments weitergeleitet. &lt;br /&gt;
** Das &amp;quot;R/G/B-Ausgangssignal&amp;quot; für den ersten Buchstaben nach dem &amp;quot;Leerzeichen&amp;quot; wird wieder mit den Draht-/Lötbrücken zugeführt, die auch vor Wörtern verwenden werden.&lt;br /&gt;
&lt;br /&gt;
Für jedes Wort wird (irgendwo) COM vom den Ausgängen OUTx zugeleitet.&lt;br /&gt;
&lt;br /&gt;
==== LED-Streifen: Zusammenfassung Löten ====&lt;br /&gt;
&lt;br /&gt;
* Widerstände sind immer am Anfang eines Wortes. Individuelle Werte für R/G/B je nach Länge des Wortes.&lt;br /&gt;
* Lötzinnbrücken sind&lt;br /&gt;
** am Anfang eines Wortes bei B&lt;br /&gt;
** am Anfang einer Streifenplatine bei B (hier sind keine Drahtbrücken nötig)&lt;br /&gt;
** am Ende eines Wortes von LED1/LED2/LED3 auf COM&lt;br /&gt;
** in der Mitte eines Wortes vor allen LED (außer der Ersten) zum Ersatz des Vorwiderstandes&lt;br /&gt;
** Zusätzlich zum Überbrücken von &amp;quot;Leerstellen&amp;quot; nur bei COM vor und nach dem Segment (da, wo zwischen zwei Zeichen sonst alle 4 Lötbrücken gesetzt werden)&lt;br /&gt;
* Drahtbrücken an der Platinenunterseite gibt es:&lt;br /&gt;
** vor einem neuen Wort zu R und G&lt;br /&gt;
** nach einer &amp;quot;Leerstelle&amp;quot; zu R und G (= identisch zu 1)&lt;br /&gt;
* Für jedes Wort wird (irgendwo) COM vom den Ausgängen OUTx zugeleitet.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
=== Sammelbestellung LED-Platinen ===&lt;br /&gt;
Es werden folgende 3 Pakete angeboten:&lt;br /&gt;
* Paket 1 (Uhr) - 66,20Eur : 1 Single-LED-Platine, 100 RGB-PLCC6-LEDs und 155 SMD-Widerstände&lt;br /&gt;
* Paket 2 (Ambilight) - 17,00Eur : 4 Streifenplatinen, 32 RGB-PLCC6-LEDs und 45 SMD-Widerstände&lt;br /&gt;
* Paket 3 (Uhr - alte Version) - 52,20Eur : 11 Streifenplatinen, 100 RGB-PLCC6-LEDs und 155 SMD-Widerstände&lt;br /&gt;
&lt;br /&gt;
Für das neue SingleBoard (Paket 1) werden zusätzliche Bauteile benötigt. Diese sind in einem eigenen Reichelt Warenkorb zusammen gestellt:&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;gt;&amp;gt; http://www.reichelt.de/?ACTION=20;AWKID=847662;PROVID=2084&lt;br /&gt;
&lt;br /&gt;
Und folgende Einzelpositionen:&lt;br /&gt;
* RGB-PLCC6-LED einzeln - 0,35Eur&lt;br /&gt;
* Streifenplatine einzeln - 1,00Eur&lt;br /&gt;
* Single-LED-Platine einzeln - 25,00Eur&lt;br /&gt;
* Zwischenboden mit Ambilightausfräsung (MDF 19mm gefräst) - 37,50Eur&lt;br /&gt;
* Zwischenboden ohne Ambilightausfräsung (MDF 19mm gefräst) - 37,50Er&lt;br /&gt;
* programmierter ATMega168 - 3,55Eur&lt;br /&gt;
&lt;br /&gt;
Der Versand erfolgt bei nur LEDs / Widerständen / ATMega als MaxiBrief mit Einschreiben.&lt;br /&gt;
* innerhalb BRD (ohne Inseln) - 4,00Eur&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Der Versand mit Streifenplatinen erfolgt als kleines Paket:&lt;br /&gt;
* innerhalb BRD (ohne Inseln) - 5,20Eur&lt;br /&gt;
* Österreich und Schweiz - 9,00Eur&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Der Versand mit Zwischenboden (max 8 Böden pro Paket) oder Single-LED-Platine wird als Paket versendet:&amp;lt;br&amp;gt;&lt;br /&gt;
* innerhalb BRD (ohne Inseln) - 6,50Eur&amp;lt;br&amp;gt;&lt;br /&gt;
* Österreich - 16,00Eur&amp;lt;br&amp;gt;&lt;br /&gt;
* Schweiz - 27,50Eur&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Es fallen jeweils nur die höheren Versandkosten an.&lt;br /&gt;
&lt;br /&gt;
Werden mehrere Pakete bestellt, können die tatsächlichen Versandkosten von den hier gezeigten Versandkosten abweichen. Diese ist dann von der bestellten Menge und dem Gewicht abhängig.&lt;br /&gt;
&lt;br /&gt;
Bei Interesse bitte per PN melden (Benutzer [http://www.mikrocontroller.net/user/show/wawibu wawibu])&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Zeitplanung&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;table border=1&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;Datum&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Aktion&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;bis 15.Februar 2015&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Sammeln der Bestellungen&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;17.Februar 2015&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Bestellung geht raus&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;~06.März 2015&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Anlieferung bei mir&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;ab 13.März 2015&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Versand&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Als Alternative können die Pakete 1, 2 und 3 auch ohne Widerstände bei mir bestellt werden. Es werden dann folgende Warenkörbe benötigt:&lt;br /&gt;
&lt;br /&gt;
Widerstands-Warenkörbe bei Reichelt:&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;pro WordClock&#039;&#039;&#039;: https://secure.reichelt.de/?;ACTION=20;LA=5010;AWKID=292199;PROVID=2084&lt;br /&gt;
&amp;lt;br&amp;gt;&#039;&#039;&#039;zusätzlich fürs Ambilight&#039;&#039;&#039;: https://secure.reichelt.de/?;ACTION=20;LA=5010;AWKID=292202;PROVID=2084&lt;br /&gt;
&amp;lt;br&amp;gt;&#039;&#039;&#039;LEDs&#039;&#039;&#039; gibt es zB bei LED-Tech: http://www.led-tech.de/de/Leuchtdioden/SMD-LEDs/PLCC6-Superbright-RGB-SMD--5.0x5.0mm--LT-1178_1_2.html&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;Die LEDs von LED-Tech haben in der Zwischenzeit eine andere PinBelegung und sind somit nicht 1:1 nutzbar. Der R und B Kanal sind dort anders als bei den LEDs aus der Sammelbestellung. Werden die LEDs von LED-Tech verwendet, muss darauf geachtet werden, das diese beiden Kanäle vertauscht sind!&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== Anschluss eines DCF77-Moduls ==&lt;br /&gt;
&lt;br /&gt;
Der Anschluss eines DCF77-Moduls ist optional. Wird ein DCF77-Modul angeschlossen, kann mittels einer LED der DCF77-Empfang angezeigt werden. Die LED blinkt dann im Sekundenrhytmus und zeigt direkt die empfangenen DCF77-Impulse. Der Empfang wird kurze Zeit nach dem Einschalten aktiviert bzw. jede Stunde wiederholt. &lt;br /&gt;
&lt;br /&gt;
Die DCF77-LED kann folgendermaßen angeschlossen werden:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;TODO&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Bei Anschluss des DCF77-Moduls von Reichelt ist folgendes zu beachten:&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
*Es sollte direkt auf den Lötaugen des Reichelt-DCF77-Moduls ein Abblock-Kondensator von 100nF zwischen den Pins +UB und GND aufgelötet werden&lt;br /&gt;
&lt;br /&gt;
*Der Eingang PON muss offen bleiben - entgegen den (falschen) Angaben im Reichelt Datenblatt!&lt;br /&gt;
&lt;br /&gt;
*Das DCF77-Modul von Reichelt braucht eine Synchronisierungszeit von mindestens 10 Sekunden. Erst dann arbeitet der Empfänger.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Beim Anschluss des Conrad-Moduls ArtNr. 641138 ist folgendes zu beachten:&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
*Es muss der nicht-invertierte Open-Collector-Ausgang Pin 3 als Signal an die WordClock angeschlossen werden.&lt;br /&gt;
&lt;br /&gt;
Ein Max232 der zur Kontrolle angeschlossen ist, kann den DCF Empfang stören. Ohne Max232 verbessert sich der Empfang deutlich.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Da einige berichtet haben, dass der DCF-Empfang bei den Reichelt-Modulen oftmals gestört ist, hier ein Tipp von Carsten Wille, wie man den Empfang durch Hinzufügen weniger Bauteile wesentlich verbessern kann:&#039;&#039;&#039; [http://www.mikrocontroller.net/topic/156661?goto=1929382#1929382 Beitrag: Brauche Hilfe beim Bau einer Uhr]&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Für Nutzer eines Pollin DCF77 Moduls ist aufgrund des nicht belastbaren Ausgangs eine kleine Hilfsplatine empfehlenswert. Siehe dazu auch [http://www.mikrocontroller.net/topic/156661?goto=3465678#3465682 Beitrag: Brauche Hilfe beim Bau einer Uhr] Platinen sind vom Beitragsautor beziehbar&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Software =&lt;br /&gt;
Da die Software für die neuere Variante mit der gemeinsamen LED/Steuerplatine die gleiche ist, bitte da nachschauen, was Software, Downloads und Bugs angeht um.&lt;br /&gt;
https://www.mikrocontroller.net/articles/Word_Clock_Variante_1#Software&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Download ==&lt;br /&gt;
&lt;br /&gt;
Siehe voriger Abschnitt.&lt;br /&gt;
&lt;br /&gt;
https://www.mikrocontroller.net/articles/Word_Clock_Variante_1#Download&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
= Mechanik =&lt;br /&gt;
&lt;br /&gt;
Folgende Anleitung gilt für die Frontplatte aus Plexiglas und die Word Clock mit Ambilight, d. h. die Wandmontage erfolgt ohne Rahmen/Bilderrahmen.&lt;br /&gt;
Beim Bau meiner Word Clock habe ich definitiv mehr Zeit über mechanische Lösungen nachgedacht, als über die Elektronik/Programmierung. Vor allem die Recherche geeigneter Bezugsquellen hat Zeit gekostet und die Lieferzeit hat den Bau der Uhr sehr verzögert. Ich hoffe, dass diese Anleitung hilft, etwas Zeit zu sparen.&lt;br /&gt;
&lt;br /&gt;
== Vorbereiten der Zwischenplatte == &lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
Datei:1-mdf-spachtel.jpeg&lt;br /&gt;
Datei:2-gespachtelte-kante.jpeg|Die Seitenfläche nach den Auftragen der Spachtelmasse.&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Damit die Zwischenplatte optisch gut zur Frontplatte passt, muss diese lackiert werden. Im vorliegenden Vorschlag wurde die Zwischenplatte an den Seiten mit wasserbasiertem Acryllack schwarz lackiert. &lt;br /&gt;
&lt;br /&gt;
Die MDF Platte kann grundiert oder gespachtelt werden. In diesem Beispiel wurde die Platte mit  &amp;quot;Holz und MDF Spachtel” (z. B. Decotric, siehe Amazon) vorbehandelt. Eine geeignete Grundierung wäre z. B. “MDF Grundierung Grund Vorbehandlung” von Molto. Die Grundierung ist leichter zu verarbeiten. Mit der Spachtelmasse kann man allerdings unerwünschte Löcher verschließen. Die Masse muss einige Stunden aushärten, bevor sie geschliffen werden kann. Am besten beginnt man daher den Bau mit der Word Clock mit dieser Vorarbeit. In der Wartezeit kann die Elektronik zusammengelötet werden. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
Datei:3-Kante-sw-gestrichen.jpeg|Die Zwischenplatte sollte vor der Montage der Elektronik vorbereitet werden. Der Mülleimer ist ein perfekter und stabiler Halter während des Streichen: einfach zu drehen, man macht sich die Finger nicht voll Farbe und man kann alle Seiten auf einmal streichen.&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nach dem Aushärten wurde die Oberfläche mit Schmirgelpapier geschliffen (P240) und anschließend dreimal lackiert. Die erste und zweite Lackschicht wurde jeweils mit P400 Schmirgelpapier geglättet. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
Datei:4-platine-fertig-in-hand.jpeg|&lt;br /&gt;
Datei:5-platine-fertig-in-zwischenplatte.jpeg|&lt;br /&gt;
Datei:6-platine-fertig-in-zwischenplatte-ohne-fraesung.jpeg|&lt;br /&gt;
Datei:7-platine-fertign-in-zwischenplatten-mit-fraesung.jpeg|&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Leider ist mir beim Einlöten der Komponenten nicht aufgefallen, dass die Batterie und IC2 (7805) sehr hoch sind. Da ich die Beinchen der Batterie schon zu kurz abgeschnitten hatte, konnte ich die Batterie nicht mehr einfach umbiegen, so dass dieses Problem nur noch durch angelötete Kabel zu lösen war. Die Batterie wird nun einfach neben die Steuerplatine gelegt. Den 7805 konnte ich durch Umbiegen etwas in seiner Höhe reduzieren. Der Platz für den umgebogenen 7805 wurde mit einer Fräse im Multitool/Dremel geschaffen.&lt;br /&gt;
&lt;br /&gt;
Im Nachhinein betrachtet hätte ich mir diese Mühe sparen können, da durch die Befestigung mit dem Spiegelbefestigungsset (siehe unten) die Höhe kein Problem mehr ist. Ebenfalls etwas zu spät habe ich im Forum Bilder einer Lösung gesehen, bei der die Ausfräsung für Batterie und 7805 in Richtung des äußeren Randes und nicht wie bei mir in Richtung der LEDs gelöst worden war. Im äußeren Rahmen ist genug Platz für eine Ausfräsung, die es erlaubt, die Batterie und den 7805 horizontal einzulöten.&lt;br /&gt;
&lt;br /&gt;
== Befestigung der Frontplatte (“Plexiglasvariante”) an der Zwischenplatte ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
Datei:8-holzbohrer-8mm-mit-tiefenmarkierung.jpeg|8 mm Holzbohrer mit improvisierter Tiefenmarkierung.&lt;br /&gt;
Datei:9-bohrung-fuer-magnet-1.jpeg|Fertige Bohrung. An der Kante unter dem Loch sieht man die Spachtelmasse. Während die Spachtelmasse noch trocknet, können bereits die Magnete montiert werden.&lt;br /&gt;
Datei:10-bohrung-fuer-magnet-2.jpeg|Zentral wird eine 2 mm Bohrung ergänzt, damit der Magnet bei Fehlpositionierung wieder ausgestossen werden könnte.&lt;br /&gt;
Datei:11-bohrung-fuer-magnet-3.jpeg|Zur Veranschaulichung: der Magnet könnte mit dem 2 mm Bohrer ausgestossen werden. &lt;br /&gt;
Datei:12-magnet-1.jpeg|&lt;br /&gt;
Datei:13-magnet-mit-werkzeug.jpeg|Die Magnete habe eine ganz gute Presspassung. Mit Hilfe eines Zwischenhölzchens zum Schutz des Magneten können sie in das Loch gehämmert werden.&lt;br /&gt;
Datei:14-magnet-2.jpeg|&lt;br /&gt;
Datei:15-magnet-3.jpeg|&lt;br /&gt;
Datei:16-magnet-4.jpeg|&lt;br /&gt;
Datei:17-magent-mit-kleinem-magnet-1.jpeg|Der 8 mm x 4 mm Magnet wird 0.5 mm unter die Oberfläche der Zwischenplatte gepresst, damit auch der 8 mm x 0.5 mm Magnet flächenbündig befestigt werden kann.&lt;br /&gt;
Datei:18-magent-mit-kleinem-magnet-2.jpeg|Hier ist der 8 mm x 0.5 mm Magnet in der Bohrung. Damit sich der 8 mm x 0.5 mm Magnet durch Verschieben von dem 8 mm x 4 mm Magneten lösen lässt, muss die Kante der Bohrung abgeschrägt werden.&lt;br /&gt;
Datei:19-anschraegung-fuer-kleinen-magnet.jpeg|Durch die Abschrägung am Rand der Bohrung (Universalmesser, Taschenmesser oder Dremel-Fräse) gleitet der 8 mm x 0.5 mm Magnet leicht aus der Befestigung und läßt sich so mit wenig Kraft vom 8 mm x 4 mm Magnet lösen.&lt;br /&gt;
Datei:20-alu-isolation-magnet-vor-klebung.jpeg|Vor dem Kleben wird die Holzoberfläche und der 8 mm x 4 mm Magnet mit Hilfe einer dünnen Folie (fixiert durch den 8 mm x 0.5 mm Magnet) isoliert (hier: Haushalts-Alu-Folie). Der Kleber wird sehr dünn aufgetragen, um Überschüsse zu vermeiden.&lt;br /&gt;
Datei:21-fertig-geklebt-magnete-frontplatte.jpeg|Rückseite der Frontplatte nach der Klebebefestigung der vier 8 mm x 0.5 mm Magneten. Alle vier Magnete wurden in einem Arbeitsgang geklebt. Die Ausrichtung der Plexiglasscheibe erfolgte von Hand. Die Oberfläche wurde mit einem alten Handtuch geschützt und mit Gewicht beschwert, während der Kleber auspolymerisierte.&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Für die Befestigung der Frontplatte an der Zwischenplatte wurden im Forum schon einige Lösungen besprochen.&lt;br /&gt;
&lt;br /&gt;
Man kann die Frontplatte z. B. mit Magneten befestigen oder direkt auf die Zwischenplatte kleben.&lt;br /&gt;
&lt;br /&gt;
Als Kleber wird meist ein Zweikomponentenkleber auf Epoxidharzbasis verwendet (z. B. Uhu Plus Sofortfest, Uhu Plus schnellfest, Uhu Plus Endfest 300...), da dieser keine Lösungsmittel enthält, die Plexiglas oder die Tinte des Frontplattendrucks anlösen. Im Forum wird bemerkt, dass der Kleber dünn aber vollflächig aufgetragen wurde. &lt;br /&gt;
&lt;br /&gt;
Im Folgenden wird eine einfache Methode beschrieben, die Frontplatte mit Magneten zu befestigen.  Diese Methode hat den Vorteil, dass man die empfindliche Frontplatte abnehmen kann, wenn man an der Word Clock arbeitet. Die Magnete können ohne aufwendige Werkzeuge befestigt werden. &lt;br /&gt;
&lt;br /&gt;
Ich habe mich für runde Magnete entschieden, weil man diese mit einer einfachen Bohrung befestigen kann. Die Haftkraft von vier 8 mm x 4 mm Magneten reicht aus, die Plexiglas-Frontplatte sicher zu tragen. Ich habe die Haftkraft bewusst nicht überdimensioniert, da ich Bedenken habe, dass starke Magnete beim Abnehmen der Frontplatte die Farbschicht von der Plexiglasplatte beschädigen könnten. &lt;br /&gt;
&lt;br /&gt;
Ich verwende zwei Magnete. Der dickere Magnet wird in der Zwischenplatte versenkt. Der dünnere Magnet wird an die Frontplatte geklebt. Der dünnere Magnet hat den gleichen Durchmesser wie der dickere Magnet, er ist jedoch nur 0.5 mm dick. &lt;br /&gt;
&lt;br /&gt;
Ein wesentliches Argument für die Verwendung von zwei Magneten anstelle der im Forum beschriebenen Lösung “1 Magnet und eine angeklebte Beilagscheibe” ist die Positioniergenauigkeit. Bei meinen Versuchen mit der Kombination Metall + Magnet hatte ich immer das Problem, dass der Magnet leicht seitlich verschoben werden konnte. Dies ist bei der Kombination Magnet + Magnet nicht möglich. Der flache Magnet wurde ebenfalls bewusst ausgewählt. Der Grund ist, dass zwei aneinander haftende Magnete nur schwer in axialer Richtung getrennt werden können. Es ist dagegen relativ einfach, die beiden Magneten durch seitliche Verschiebung zu trennen. Um die Plexiglasscheibe mit angeklebten Magneten seitlich verschieben zu können, dürfen die Magnete, die auf das Plexiglas geklebt werden, nicht zu hoch sein. Da die Plexiglasplatte ohne Luftspalt bündig auf der Zwischenplatte aufliegen soll, muss der Platz für den 0.5 mm Magnet auf der Seite der Zwischenplatte geschaffen werden. &lt;br /&gt;
&lt;br /&gt;
Theoretisch müsste man für beide Magneten in die Zwischenplatte ein 8 mm Loch mit einer Tiefe von 0.5 mm + 4.0 mm = 4.5 mm bohren. Damit der 0.5 mm dicke Magnet durch Verschieben entfernt werden kann, wird der Rand der Bohrung so angeschrägt, dass der Magnet seitlich verschoben werden kann. &lt;br /&gt;
&lt;br /&gt;
Da ich keine Bohrständer habe, wurde die Bohrungen freihändig mit einem 8 mm Holzbohrer im Akkuschrauber ausgeführt. Mit Hilfe eines Klebestreifens wurde die ungefähre Bohrtiefe festgelegt. &lt;br /&gt;
Im Zentrum der 8 mm Sacklochbohrung wurde zusätzlich eine 2 mm Bohrung durch die Zwischenplatte angefertigt. In diese kann man von der Unterseite mit den 2 mm Bohrer stecken und bei Bedarf den Magneten wieder ausstoßen. Ursprünglich dachte ich, den 8 mm x 4 mm Magneten festkleben zu müssen. Die Passgenauigkeit war jedoch so gut, dass ich den 8 mm x 4 mm Magneten einfach in die Bohrung pressen konnten (mit Hilfe eines kleinen Hölzchens und eines kleinen Hammers). &lt;br /&gt;
&lt;br /&gt;
Der 8 mm x 0.5 mm Magnet wird gemeinsam mit dem 8 mm x 4 mm Magnet so in die Bohrung gepresst, dass seine Oberfläche mit der Zwischenplatte bündig abschließt. Anschließend wird der kleine Magnet mit einem spitzen Gegenstand (z. B. Taschenmesser) entfernt und der Rand abgeschrägt (Dremel und Schleifsteinchen bzw. Fräser). &lt;br /&gt;
&lt;br /&gt;
Vor der Klebebefestigung an der Plexiglasscheibe wird das Holz und der 8 mm x 4 mm Magnet mit einer dünnen Folie vor Kleberüberschuss geschützt. In meinem Fall habe ich Haushalts-Alu-Folie verwendet. Für die Klebung werden die 8 mm x 0.5 mm Magneten an dem fest gepressten 8 mm x 4 mm Magneten fixiert. Der Kleber wird dünn auf die Oberfläche des 8 mm x 0.5 mm Magneten aufgetragen, die Plexiglasscheibe korrekt positioniert und mit Hilfe von Gewichten während der Aushärtphase fixiert. Ich habe alle Magnete auf einmal geklebt. &lt;br /&gt;
&lt;br /&gt;
Die einzelnen Arbeitsschritte sind auf den Bildern zu erkennen.&lt;br /&gt;
&lt;br /&gt;
=== Bezugsquelle der Magnete ===&lt;br /&gt;
&lt;br /&gt;
Neotexx, Herweghstr. 11, 12487	Berlin ( http://www.neomagnete.com )&lt;br /&gt;
&lt;br /&gt;
Folgende Magnete wurden verwendet:&lt;br /&gt;
&lt;br /&gt;
* Cylinder 8x0.5 mm, Dimension: D8x0.5mm, NdFeB Magnet in N48 (1.42 Tesla), Magnetized Direction: through 0.5mm (axial), Coating: Nickel, item # Z-008-000.5-N &lt;br /&gt;
* Cylinder 8x4 mm, Dimension: D8x4mm, NdFeB Magnet in N48 (1.42 Tesla), Magnetized Direction: through 4mm, Coating: Nickel, item # Z-008-004-N&lt;br /&gt;
&lt;br /&gt;
Wer den Mindestbestellwert (10€) und die vergleichsweise hohen Versandkosten (5,50€) scheut, kann mir (User [http://www.mikrocontroller.net/user/show/Stoerte Stoerte]) eine PN-Schicken. Ich habe etwas großzügiger bestellt und würde die übrigen Magnete zu folgenden Paketen (Paket 2 für den Fall, dass man eine zweite Frontplatte zum Wechseln bestücken will) abgeben:&lt;br /&gt;
&lt;br /&gt;
* Paket 1: 4x D8x4mm + 4x D8x0.5mm = 4,50€ + 1,50€ Versand&lt;br /&gt;
* Paket 2: 4x D8x4mm + 8x D8x0.5mm = 6,00€ + 1,50€ Versand&lt;br /&gt;
&lt;br /&gt;
== Befestigung der Platinen ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
Datei:22-bueroklammer-pin.jpeg|Befestigungspin aus Büroklammerdraht.&lt;br /&gt;
Datei:23-led-streifen-mit-pins.jpeg|Die Pins werden in der Ausfräsung verkeilt und fixieren die LED-Streifenplatinen, können aber jederzeit wieder leicht gelöst werden.&lt;br /&gt;
Datei:24-min-platine-mit-pin.jpeg|Auch die Kabel und Minuten-LED-Platinen können mit Pins fixiert werden.&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
An der Zwischenplatte müssen folgende Komponenten befestigt werden:&lt;br /&gt;
&lt;br /&gt;
* Steuerelektronik&lt;br /&gt;
* LED-Platinen Word Clock&lt;br /&gt;
* LED-Platinen Ambilight&lt;br /&gt;
* Netzteil&lt;br /&gt;
* DCF77-Modul&lt;br /&gt;
* Kabel&lt;br /&gt;
&lt;br /&gt;
Die einfachste Lösung ist die Klebebefestigung mit Heißkleber oder einem anderen geeigneten Kleber. Die Klebemethode hat jedoch den Nachteil, dass die Klebung nicht so leicht wieder gelöst werden kann. Aus diesem Grund wurde eine reversible Alternative gesucht. &lt;br /&gt;
&lt;br /&gt;
Die vorgeschlagene Methode wirkt zwar auf den ersten Blick nicht sehr professionell, funktioniert aber sehr gut. So musste ich einige Male Korrekturen an den LED Platinen vornehmen, weil sich z. B. bei meinen „Manipulationen“ Kabel gelöst haben. &lt;br /&gt;
&lt;br /&gt;
Die Lösung ist relativ einfach. Ein harter Draht (in meinem Fall 0,8 mm dicker Federdraht, wird z. B. bei Kieferorthopäden verwendet, als Alternative kann man aber auch Büroklammerdraht verwenden) wird etwas länger abgezwickt, als die Ausfräsung für die Platine oder die Kabel ist. Der Draht kann in die relativ weiche MDF Platte so verkeilt werden, dass die Platine oder Kabel gut halten. Es ist sinnvoll, den Draht an beiden Enden abzuzwicken. Dadurch entstehen zwei scharfe Enden, die sich leichter im MDF verankern lassen. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
Datei:25-dcf-77-geklebt.jpeg|DCF-77 Modul und Ferritantenne. Befestigung mit Heisskleber.&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Als Befestigung für die Ambilight-LED Streifen sowie  das DCF-77 Modul habe ich leider keine bessere Lösung gefunden, als die Befestigung mit Heißkleber. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
Datei:26-netzteil.jpeg|&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die Steuerplatine wird durch die angeschlossenen Kabel sicher in ihrer Position gehalten. &lt;br /&gt;
&lt;br /&gt;
Das modifizierte Conrad-Netzteil hält durch Klemmpassung in der Aussparung. Achtung: an der Unterseite der Platine liegen die 220 V Anschlüsse frei. Das ist kein Problem, sobald die Uhr an der Wand befestigt ist. Um sicherzustellen, dass niemand aus Versehen die Platine von der Seite berühren kann, wurde das Oberteil des Gehäuses als Berührschutz belassen. Beachten Sie dies bitte bei der Montage. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
Datei:27-uhr-wand-mit-ambilight.jpeg|&lt;br /&gt;
Datei:28-uhr-wand-ohne-ambilight.jpeg|&lt;br /&gt;
Datei:29-uhr-wand-schraeg-1.jpeg|&lt;br /&gt;
Datei:30-uhr-wand-schraeg-2.jpeg|&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Diese Lösung ist nur von Relevanz, wenn die Stromversorgung direkt hinter der Uhr möglich ist. Dann sieht die Lösung allerdings sehr elegant aus:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
Datei:31-netzteil-1.jpeg|&lt;br /&gt;
Datei:32-netzteil-2.jpeg|&lt;br /&gt;
Datei:33-netzteil-3.jpeg|&lt;br /&gt;
Datei:34-netzteil-4.jpeg|&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Als Vorbereitung musste das Netzteilgehäuse geöffnet werden. Folgende Bilder zeigen den Innenaufbau und sollen so das Öffnen des Gehäuses erleichtern helfen. Das Gehäuse ist fest verklebt. Der Kleber kann nicht aufgesprengt werden (vielleicht würde es gehen, wenn man den Kleber mit einer Heißluftpistole ausreichend erwärmen würde ?). Ich habe mich für die Lösung entschieden, das Gehäuse entlang der Klebenaht mit einer Puk-Metallsäge aufzusägen, da ich noch nicht wusste, wie das Netzteil aufgebaut ist. Heute würde ich nur noch die Steckerpins absägen. Als Alternative zu dieser brachialen Methode habe ich geprüft, ob man ein Netzteil selbst bauen könnte. Ich bin aber zu den Schluss gekommen, dass es nicht wirklich möglich ist, ein eigenes Netzteil so preiswert und auch so klein wie das Conrad-Netzteil zu bauen.&lt;br /&gt;
&lt;br /&gt;
== Verkabelung ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
Datei:35-starre-draehte.jpeg|Für den ersten Versuch hatte ich Einzelader-Schaltdraht direkt auf die LED-Streifen gelötet. Leider neigte der Schaltdraht dazu, an den ungünstigsten Stellen zu brechen, wenn ich die Platinen bewegte, was allein schon zum Löten erforderlich war. &lt;br /&gt;
Datei:36-fliegender-aufbau.jpeg|Fliegender Aufbau... für den ersten Systemtest.&lt;br /&gt;
Datei:37-stecker-an-led-platine.jpeg|Erst die Verwendung von abgewinkelten Steckverbindern (Stiftleiste RM 2,54, gewinkelt Rastermaß: 2.54 mm, in Kombination mit der passenden Buchsenleiste RM 2,54 Rastermaß: 2.54 mm, Alternative: Stiftleiste RM 2,54, gewinkelt Rastermaß: 2.54 mm Polzahl: 3, 72645 BKL Electronic) vereinfachte die Montage der RGB-Verbindungen drastisch. &lt;br /&gt;
Datei:38-verkabelung-1.jpeg|Zusätzlich zu den Steckverbindern wurden keine starren Einzelkabel mehr verwendet, sondern flexible Drähte (bei mir: recycelte IDE-Festplattenkabel, alternativ: Flachbandkabel, RM 1,27; Polzahl: 50, 0.09 mm², Grau Sterner Kabel, ich werde beim nächsten Mal dieses Kabel testen: Flachbandkabel 3 x 0.14 mm², Gelb, Rot, Grün,  Sterner Kabel, Conrad Best.-Nr.: 605819 - 62).&lt;br /&gt;
&lt;br /&gt;
Auch für die Anschlüsse der Kabel von den Buchsensteckern K7 und K8 an die LED-Streifenplatinen waren die Steckverbinder sehr hilfreich. Die Einzelstecker habe ich, weil ich keine Alternativen hatte/kannte, von Buchsenleisten abgetrennt, was doch recht aufwendig war. Kennt jemand eine professionellere Lösung (Name, Bezugsquelle?)&lt;br /&gt;
Datei:39-verkabelung-2.jpeg|Sobald die Funktion erfolgreich getestet wurde, können die Kabel eingekürzt und schöner verlegt werden. Eigentlich wollte ich das Klebeband durch Heisskleber ersetzen. Aber nichts ist bekanntlich beständiger als ein Provisorium.&lt;br /&gt;
Datei:40-ir-und-ldr.jpeg|Der LDR und der Infrarot-Empfänger werden an der Unterseite der Word Clock auf leeren Plätzen der Amibilight-Platine befestigt. Für den IR-Empfänger reicht doppelseitiges Klebeband, der LDR kann mit einfachem Klebeband an den Beinchen fixiert werden. &lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
P.N. (http://www.mikrocontroller.net/topic/156661#2511143) hat eine elegante Lösung zur Befestigung des LDR und TSOP vorgeschlagen:&lt;br /&gt;
&lt;br /&gt;
&amp;quot;- Der TSOP sitzt bei mir hinter dem &amp;quot;S&amp;quot; (&amp;quot;WACHTZEHNRS&amp;quot;) und ist direkt&lt;br /&gt;
auf diese Streifenplatine eingelötet. Davor habe ich natürlich die&lt;br /&gt;
PWM-Leiterbahnen des letzten Feldes durchtrennt und die 3 Beinchen auf&lt;br /&gt;
Stiftleisten am Ende der Platine geroutet. Geht bei dem Layout ganz gut.&lt;br /&gt;
Der IR-Empfang ist auch durch die Frontplatte einwandfrei&lt;br /&gt;
&lt;br /&gt;
- Der LDR sitzt hinter dem &amp;quot;M&amp;quot; (&amp;quot;TGNACHVORJM&amp;quot;) und wurde ebenso an der&lt;br /&gt;
Steifenplatine befestigt und auf eine Stiftleiste gelegt. Zusätzlich hat&lt;br /&gt;
er noch einen &amp;quot;Schirm&amp;quot; aus einer Lochrasterplatine gegen Streulicht von&lt;br /&gt;
angrenzenden Buchstaben erhalten&amp;quot;&lt;br /&gt;
&lt;br /&gt;
== Wandbefestigung der Uhr ==&lt;br /&gt;
&lt;br /&gt;
[[Datei:41-spiegelblech-1.jpeg|miniatur|Minimal Montageset: Exzenterscheiben (oben), Spiegel-Haftmagnet (links und rechts aussen), Haftblech mit Kieme]]&lt;br /&gt;
[[Datei:42-spiegelblech-2.jpeg|miniatur|Das Haftblech mit Kieme wird mit der Metallsäge getrennt und Bohrungen zur Befestigung mit Schrauben werden ergänzt (rechts Original, links Modifikation)]]&lt;br /&gt;
[[Datei:43-spiegelhalterung-montiert.jpeg|miniatur|Fertig montierte Haftbleche]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Die Word Clock kann wie jedes Bild an der Wand befestigt werden. Eine elegante, bewährte und gut funktionierende Variante stellt die Befestigung mit einer sog. Spiegelbefestigung mit Haftmagneten dar. Die Komplettsets sind meist ziemlich teuer und die Befestigungsbleche sind für die Word Clock viel zu groß. &lt;br /&gt;
&lt;br /&gt;
Eine preisgünstige Lösung findet man bei:&lt;br /&gt;
&lt;br /&gt;
Leha-Technik&amp;lt;br/&amp;gt;&lt;br /&gt;
Burger Straße 63 A&amp;lt;br/&amp;gt;&lt;br /&gt;
42859 Remscheid&amp;lt;br/&amp;gt;&lt;br /&gt;
[http://www.leha.de www.leha.de]&lt;br /&gt;
&lt;br /&gt;
Hier kann man die Einzelkomponenten kaufen. Wichtig sind nur die Exzenterscheiben (2 Stück), die Haftmagneten (2 Stück) und die Haftbleche mit Kieme (2 Stück). Die Schrauben und Dübel sollten sich in der Bastelkiste finden (ich habe 6er Dübel, mit 4 x 50 mm Schrauben verwendet). Die Exzenterscheiben haben einen entscheidenden Vorteil. Wenn der Bohrer etwas verläuft oder wenn schon die Messung ungenau ist, kann man die Befestigung mit der Exzenterscheibe immer noch schön waagerecht ausrichten. &lt;br /&gt;
&lt;br /&gt;
Theoretisch könnte man auf die Magneten verzichten. In meinem Fall war jedoch hinter der Uhr eine Stromversorgung und die Kabel waren etwas steifer als gewünscht. Das hatte zur Folge, dass die Uhr von den Kabeln von der Wand abgehoben wurde und somit leicht schräg stand. Die Magneten haben dieses Problem sehr elegant gelöst. &lt;br /&gt;
&lt;br /&gt;
Das Haftblech mit Kieme wurde mit einer Eisensäge geteilt. Der Teil mit der Kieme ist mit 2.5 cm breit genauso breit, wie der Steg für die Befestigung. Da ich im Zusammenhang mit MDF kein Vertrauen zu dem Kleber hatte, wurden zwei Bohrungen ergänzt (3,5 mm Metallbohrer, improvisiertes Versenken der Schrauben mit einem 6 mm Metallbohrer, ich habe keinen speziellen Versenkbohrer). Das Blech wurde dann geklebt und mit 3 x 20 mm Spax-Schrauben befestigt. Die MDF Platte wurde vorher mit einem 2 mm Bohrer vor gebohrt. &lt;br /&gt;
&lt;br /&gt;
Der untere, abgetrennte Teil des Haftbleches wurde für den Magneten verwendet. Seine Breite passte ebenfalls perfekt zu den Befestigungsstegen. Auch diese Bleche wurden zusätzlich mit Schrauben befestigt.&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
! Anzahl x VPE !! Artikel !! Art.Nr.&lt;br /&gt;
|-&lt;br /&gt;
| 2 x Stück || Haftblech, mit Kieme - 70 x 70 mm (selbstklebend) 3 kg || 5208608&lt;br /&gt;
|-&lt;br /&gt;
| 2 x Stück || Spiegel-Haftmagnet || 5208601&lt;br /&gt;
|-&lt;br /&gt;
| 2 x Stück || Exzenterscheibe || 5208602&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
= Das erste Mal einschalten =&lt;br /&gt;
&lt;br /&gt;
=== LED-Streifen ===&lt;br /&gt;
&lt;br /&gt;
Nach dem Verlöten aller Bauteile der LED-Streifen sollten diese vor dem endgültigen Verbau noch geprüft werden:&lt;br /&gt;
&lt;br /&gt;
# Prüfung der drei PWM-Kanäle und der Steuerleitungen auf gegenseitige Kurzschlüsse&lt;br /&gt;
# Funktionsprüfung der LED-Streifen mittels direkter Versorgung durch ein Netzteil (PWM R/G/B an GND, OUT an 13.6V): Hierbei nacheinander die einzelnen Farben der jeweiligen Wörter anschließen und ggf. nacharbeiten, falls es &#039;mal dunkel bleiben sollte&lt;br /&gt;
&lt;br /&gt;
-&amp;gt; &amp;quot;Beginner-Tipp&amp;quot;: Die mangelhaften Lötstellen findet man am besten, wenn man mit dem Diodentest des Multimeters die Lötpunkte der angrenzenden LEDs berührt&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Steuerplatine ===&lt;br /&gt;
&lt;br /&gt;
Wenn alle Bauteile verlötet sind, sollten zur ersten Prüfung alle Sockel noch leer bleiben. Wer ein entsprechendes Netzteil hat, sollte den Strom auf ca. 50mA begrenzen. Wer dies nicht kann, sollte wenigstens ein (im Regelfall auf 200mA) abgesichertes Netzteil dazwischen schalten. Zum Bestücken der einzelnen Bauteile sollte stets die Spannungsversorgung unterbrochen werden.&lt;br /&gt;
&lt;br /&gt;
# Prüfen der Spannungsversorgung auf Kurzschluss&lt;br /&gt;
# Anlegen der Versorgungsspannung (15V), am Spannungsregler sollten nun 5V anliegen. Tipp: Minus ist ganz außen, Plus ist die zweite Befestigung von außen. Kann man anhand der Unterseite der Platine kontrollieren. Im Schaltplan ist das bei der Belegung von KL1 nicht eindeutig zu erkennen!&lt;br /&gt;
# µC bestücken, die Stromaufnahme sollte nun knapp 20mA betragen&lt;br /&gt;
# Erst Fuses programmieren, dann Software flashen&lt;br /&gt;
# RTC, Schieberegister (74HCT595) und Treiber (ULN) einsetzen&lt;br /&gt;
# LED-Streifen anschließen&lt;br /&gt;
# Wenn alles funktioniert, dann blinken die 4 Minuten-LEDs nach dem Einschalten rund 5-6 mal gleichzeitig auf. Zu der Zeit fängt die RealTimeClock an zu ticken&lt;br /&gt;
# Während des Blinkens kann nun auch eine (beliebige) Taste auf der Fernbedienung gedrückt werden, und deren Anlernprozess gestartet werden (-&amp;gt; s. Manual). Für den Funktionstest muss keine dauerhafte Tastenbelegung gewählt werden, dies kann jederzeit nachgeholt werden.&lt;br /&gt;
# Wenn die FB angelernt ist, dann gibt es eine Taste, mit der alle Ausgänge (das heißt alle Wörter) nacheinander geschaltet werden (&amp;quot;Demo-Modus&amp;quot;). Den Demo-Modus kann man verlassen, in dem ein anderer Modus aktiviert wird. Drückt einfach im Anschluss an den Demo-Modus die Taste &amp;quot;Einfarb-/Modus/Farbprofile aktivieren&amp;quot;.&lt;br /&gt;
# Mit der Fernbedienung und der Uhr spielen ... :o)&lt;br /&gt;
# Nun kann das DCF-Modul angeschlossen werden (wenn möglich, per UART den DCF-Status loggen). Nach einiger Zeit (mehrere Minuten!) sollte die Uhr die aktuelle Zeit anzeigen, sofern auf der DCF-Seite alles klappt.&lt;br /&gt;
&lt;br /&gt;
Wenn eine Fernbedienung angelernt werden soll, dann muss man, während alle 4 Minuten-LEDs blinken, irgendeine Taste auf der Fernbedienung drücken. Wird die FB erkannt, dann hört das Blinken auf und die &amp;quot;eins&amp;quot; leuchtet. Jetzt musst man die Taste drücken, die zum Ein-/Ausschalten der Uhr verwendet werden soll. Als nächstes leuchtet die &amp;quot;zwei&amp;quot; usw..... --&amp;gt; Mehr dazu siehe Handbuch&lt;br /&gt;
&lt;br /&gt;
Sollte nach dem &amp;quot;Neustart&amp;quot; der Uhr keine LED mehr leuchten, KEINE PANIK... es kann sein, dass einfach die &amp;quot;Helligkeit&amp;quot; der LEDs so gering ist, dass Ihr sie einfach nicht seht.&lt;br /&gt;
&lt;br /&gt;
Tipp fürs erste Anlernen der FB: Einfach alle Tasten stur der Reihe nach durchdrücken. Dann kann man durch Zählen und Vergleichen mit der Tabelle im Handbuch solange &amp;quot;überleben&amp;quot;, bis man die Muse hatte, eine sinnvolle Belegung zu überlegen und auch zu dokumentieren!&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
= Abstimmungen =&lt;br /&gt;
Eine Stimme ist ein Strich. Nach 5 Strichen bitte ein Leerzeichen einfügen.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== offen: ==&lt;br /&gt;
IR-FB Anlernphase deaktivierbar (Default / keine FB angelernt: anlernen aktiv): | &amp;lt;br&amp;gt;&lt;br /&gt;
ethernet ntp client: ||||| ||||| ||||| || &amp;lt;br&amp;gt;&lt;br /&gt;
Bewegungsmelder: ||||| ||||| ||||| ||||| ||||| ||||| ||||&amp;lt;br&amp;gt;|&lt;br /&gt;
IR zum PC für Kommunikation/Bootloader |&amp;lt;br&amp;gt;&lt;br /&gt;
RFM12 für Kommunikation/Bootloader |||&amp;lt;br&amp;gt;&lt;br /&gt;
NTP Server (um eine genaue Zeit ins Netzwerk zu verteilen) |||&amp;lt;br&amp;gt;&lt;br /&gt;
Beim Start, alle LEDs einmal der Reihe nach Durchlaufen lassen zum Funktionstest (statt &amp;quot;Volldampfmodus&amp;quot;): ||||| ||||| ||||| || &amp;lt;br&amp;gt;&lt;br /&gt;
Ton zur vollen Stunde (Beep/Piezo): ||||| ||&amp;lt;br /&amp;gt;&lt;br /&gt;
ZBus (Ethersex) zum einstellen der Uhr über das Netzwerk, evt holen der Zeitdaten über ZBus von einem Zeitserver: || &amp;lt;br /&amp;gt;&lt;br /&gt;
zeitgesteuert Dunkelschalten wochentagsweise: ||||| ||||&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== bereits umgesetzt: ==&lt;br /&gt;
DCF: ||||| ||||| ||||| ||||| ||||| ||||| ||||| ||||| |||| &amp;lt;br&amp;gt;&lt;br /&gt;
IR für Fernbedienung: ||||| ||||| ||||| || &amp;lt;br&amp;gt;&lt;br /&gt;
Ambilight: ||||| ||||| ||||| ||||| |||| &amp;lt;br&amp;gt;&lt;br /&gt;
zeitgesteuert Dunkelschalten (z.&amp;amp;nbsp;B. nachts &amp;quot;Aus&amp;quot;): ||||| ||||| ||||| &amp;lt;br&amp;gt;&lt;br /&gt;
Bluetooth: || (Posting: [http://www.mikrocontroller.net/topic/156661?goto=1710183#1710183 Bluetooth mit Debug, Bootloader und Autoreset])&amp;lt;br&amp;gt;&lt;br /&gt;
Möglichkeit, Zeiteinstellmodus bei &amp;quot;0 Minuten&amp;quot; von Normalmodus zu unterscheiden z.B. blinkendes &amp;quot;UHR&amp;quot; |||||&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;quot;ES IST&amp;quot; soll man ein- oder ausschalten können: ||||| |&amp;lt;br&amp;gt;&lt;br /&gt;
Bluetooth per FB ein-/ausschalten: ||&amp;lt;br&amp;gt;&lt;br /&gt;
Taste &amp;quot;Speichern&amp;quot; auf FB statt automatisch |||(On Off speichert)&amp;lt;br&amp;gt;&lt;br /&gt;
kurzzeitiger &amp;quot;Volldampf-Modus&amp;quot; (alle Wörter an für bspw. 30sek): ||||| |||  - als Submodus des Demomodus, multiplexing, jeweils ein Kanal an jedem Treiber aktiv&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== An/Ausschalt-Logik ==&lt;br /&gt;
A: Manuell ausgeschaltete Uhr bleibt aus bei Erreichen der Einschaltzeit - hier könnte natürlich gleich der Stecker gezogen werden, sofern die Uhr nicht festeingebaut ist&lt;br /&gt;
&lt;br /&gt;
B: Manuell ausgeschaltete Uhr geht wieder an bei Erreichen der Einschaltzeit&lt;br /&gt;
&lt;br /&gt;
C: Es gibt eine OFF-Taste und eine STANDBY-Taste. Bei STANDBY schaltet sich die Uhr bei Erreichen der Einschaltzeit wieder ein, bei OFF bleibt sie aus.&lt;br /&gt;
&lt;br /&gt;
D: Die Variante A oder B lässt sich vor dem Kompilieren der Software als define individuell nach eigenem Gutdünken festlegen. (Viele andere Werte sind bereits heute so einstellbar in der SW)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A Strichliste: |&lt;br /&gt;
&lt;br /&gt;
B Strichliste: |||  &lt;br /&gt;
&lt;br /&gt;
C Strichliste: |||||  ||||| |||||&lt;br /&gt;
&lt;br /&gt;
D Strichliste: ||||&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&#039;&#039;&#039;Zurück zum Hauptartikel: [[Word Clock]]&#039;&#039;&#039;&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Timer und Uhren]]&lt;br /&gt;
[[Kategorie:AVR-Projekte]]&lt;br /&gt;
[[Kategorie:DCF77]]&lt;/div&gt;</summary>
		<author><name>Promeus</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=Word_Clock_Variante_1_-_getrennte_Steuerplatine&amp;diff=91132</id>
		<title>Word Clock Variante 1 - getrennte Steuerplatine</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=Word_Clock_Variante_1_-_getrennte_Steuerplatine&amp;diff=91132"/>
		<updated>2016-01-11T12:16:27Z</updated>

		<summary type="html">&lt;p&gt;Promeus: /* Bestückung */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Überblick =&lt;br /&gt;
&lt;br /&gt;
[[Datei:wordclock-frontplatte-v2.png| |WordClock]]&lt;br /&gt;
&lt;br /&gt;
Diese Seite dient nur noch der Referenz für die ältere Variante mit getrennter Steuer- und Anzeigeplatine.&lt;br /&gt;
Themen, die beide Varianten gemeinsam betreffen werden im Hauptartikel [1] gepflegt.&lt;br /&gt;
&lt;br /&gt;
Links zum Hauptartikel [1], zur Variante 2 [2] zum langen Thread [3] mit dem hier alles angefangen hat und zum Original [4], das alle hier inspiriert hat.&lt;br /&gt;
&lt;br /&gt;
[1] [[Word Clock]]&amp;lt;br&amp;gt;&lt;br /&gt;
[2] [[Word Clock Variante 2]]&amp;lt;br&amp;gt;&lt;br /&gt;
[3] [http://www.mikrocontroller.net/topic/156661 Beitrag: Brauche Hilfe beim Bau einer Uhr]&amp;lt;br&amp;gt;&lt;br /&gt;
[4] [http://www.clocktwo.com http://www.clocktwo.com]&amp;lt;br&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
= WordClock FAQ =&lt;br /&gt;
Häufig tauchen im Forum Fragen zum WordClock Projekt auf (was brauche ich..., wie mache ich...), die schon mehrmals beantwortet wurden. Hier Für die Variante 1 eine Zusammenfassung der wichtigsten Fragen:&lt;br /&gt;
&lt;br /&gt;
  Q: Was brauche ich alles, um die WordClock (Variante 1) zu bauen?&lt;br /&gt;
  A: - Die Steuerplatine mit der Elektronik&lt;br /&gt;
     - Eine Frontblende (das &amp;quot;Ziffernblatt&amp;quot;)&lt;br /&gt;
     - Leuchtdioden und Platinen für die Anzeige&lt;br /&gt;
     - Eine Zwischenplatte um das Licht zwischen den einzelnen Buchstaben zu trennen&lt;br /&gt;
     - Eine Spannungsversorgung&lt;br /&gt;
     - etwas handwerkliches Geschick&lt;br /&gt;
&lt;br /&gt;
  Q: Kann ich Bauteile der WordClock über Sammelbestellungen billiger bekommen?&lt;br /&gt;
  A: Es wurden in der Vergangenheit (seit Dez.2009) mehrere Sammelbestellungen angeboten. Im einzelnen waren das:&lt;br /&gt;
     - Die [http://www.mikrocontroller.net/articles/Word_Clock_Variante_1#Sammelbestellung_der_Platine Leiterplatte] für die Steuerelektronik (von ukw)&lt;br /&gt;
     - [http://www.mikrocontroller.net/articles/Word_Clock_Variante_1#Sammelbestellung Leuchtdioden mit Streifenplatinen] für die Anzeige (von wawibu / matsch)&lt;br /&gt;
     - Eine Frontblende (Buchstabenmatrix)&lt;br /&gt;
        - aus [http://www.mikrocontroller.net/articles/Word_Clock#Sammelbestellung_.28Plexiglas.29 Plexiglas], schwarz (von ukw)&lt;br /&gt;
        - aus [http://www.mikrocontroller.net/articles/Word_Clock#Sammelbestellung_.28Edelstahl.29 Edelstahl] (von andreasp)&lt;br /&gt;
     - Eine [http://www.mikrocontroller.net/articles/Word_Clock#Zwischenplatte Zwischenplatte] (von wawibu / matsch)&lt;br /&gt;
&lt;br /&gt;
  Q: Kann ich eine fertige Uhr kaufen?&lt;br /&gt;
  A: Ja, beim [http://www.qlocktwo.com/ Hersteller] der Vorlage ;-). Hier im uC.net Forum gibt es nur Tipps und Hilfe zum Selberbauen.&lt;br /&gt;
     Eine komplette WordClock kann man hier NICHT bekommen.&lt;br /&gt;
     ...und etwas einlesen wird auch keinem abgenommen ;-)&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
= Aufbau einer Wordclock =&lt;br /&gt;
Hier gibt es ein von bomibob äußerst kunstvolles Video zum Bau einer Word Clock:&lt;br /&gt;
http://www.youtube.com/watch?v=OYhtc-8StXA&lt;br /&gt;
(zugehöriger Post → http://www.mikrocontroller.net/topic/goto_post/2328168)&lt;br /&gt;
&lt;br /&gt;
Details zu den einzelnen Komponenten sind den entsprechenden Unterpunkten, oder dem Hauptartikel zu entnehmen.&lt;br /&gt;
&lt;br /&gt;
= Elektronik =&lt;br /&gt;
* Atmega168&lt;br /&gt;
* 8Mhz (interner Osc.)&lt;br /&gt;
* 24-Bit-Schieberegister an SPI für 24 Wörter&lt;br /&gt;
* 4 Output-Pins für Minutenanzeige&lt;br /&gt;
* 4 weitere GPOS - für allgemeine Zwecke&lt;br /&gt;
* RGB-Steuerung über PWM gegen GND, d.h. 32x3-Matrix&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
= Schaltung =&lt;br /&gt;
&lt;br /&gt;
[[Datei:wordclock-schmal-schaltung.png|miniatur|Schaltbild V1.0]]&lt;br /&gt;
[[Datei:wordclock-schmal-schaltung-2.0.png|miniatur|Schaltbild V2.0]]&lt;br /&gt;
[[Datei:TSOP-wordclock-1.1.png|miniatur|TSOP17xx in V1.1]]&lt;br /&gt;
[[Datei:RXTX-wordclock-1.1.png|miniatur|Rx/Tx in V1.1 und V2.0]]&lt;br /&gt;
[[Datei:K10-wordclock-2.0.png|miniatur|K10 als I2C in V2.0]]&lt;br /&gt;
[[Datei:K11-wordclock-2.0.png|miniatur|K11 als SPI in V2.0]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Änderungen der Platinen-Version 1.0 gegenüber dem Prototypen:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Pullup-Widerstand R7 am DCF-Anschluss entfällt&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Änderungen der Platinen-Version 1.1 gegenüber 1.0:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Die Tiefpass-Schaltung für den TSOP17xx ist nun korrekt geschaltet. Die Abweichung sieht man rechts im Zusatzschaltbild.&lt;br /&gt;
* Der Verbinder K9 (UART-Anschluss für Debug-Zwecke) hat zwei zusätzliche Pins erhalten, siehe Zusatzschaltbild rechts.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Änderungen der Platinen-Version 2.0 gegenüber 1.1:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Diode D1 entfällt.&lt;br /&gt;
* 6-poliger ISP-Wannenstecker ersetzt 10-poligen Wannenstecker, Vcc nun angeschlossen&lt;br /&gt;
* Neu: Stiftleiste K10 als Anschlüsse für externe I2C-Module, auf der Platine oberhalb der RTC zu finden&lt;br /&gt;
* Neu: Stiftleiste K11 als Anschlüsse für externe SPI-Module, auf der Platine ganz links&lt;br /&gt;
&lt;br /&gt;
Siehe auch untenstehende Zusatzschaltbilder rechts. Die neuen Stiftleisten sind optional, müssen also nicht unbedingt bestückt werden.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Zugehörige Schaltung als PDF&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
* Version 1.0: &#039;&#039;&#039;[[Media:wordclock-schmal.pdf|wordclock-schmal.pdf]]&#039;&#039;&#039;&lt;br /&gt;
* Version 2.0: &#039;&#039;&#039;[[Media:wordclock-schmal-schaltung-2.0.pdf|wordclock-schmal-schaltung-2.0]]&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Sammelbestellung der Platine ==&lt;br /&gt;
&lt;br /&gt;
Stand Dezember 2015:&lt;br /&gt;
&lt;br /&gt;
Ich habe wegen einiger Nachfragen noch Steuerplatinen in begrenzter Stückzahl nachbestellt. Wenn jemand daran interessiert ist, kann er sich bei mir (Benutzer [http://www.mikrocontroller.net/user/show/ukw &#039;&#039;&#039;ukw&#039;&#039;&#039;]) per PN melden.&lt;br /&gt;
&lt;br /&gt;
Kosten pro Platine: 15 EUR zzgl. Versand von 2,00 EUR bei bis zu 4 Stück. Bei mehr als 4 Stück beträgt der Versand 3,00 EUR.&lt;br /&gt;
&lt;br /&gt;
Beispiele:&lt;br /&gt;
&lt;br /&gt;
* 1 Platine: 15 EUR + 2,00 Versand: 17,00 EUR&lt;br /&gt;
* 2 Platinen: 30 EUR + 2,00 Versand: 32,00 EUR&lt;br /&gt;
* ...&lt;br /&gt;
* 5 Platinen: 75 EUR + 3,00 Versand: 78,00 EUR&lt;br /&gt;
&lt;br /&gt;
Parallel zu dieser Sammelbestellung gibt es noch eine neue (kleinere) Sammelbestellung für passende Frontplatten, siehe auch:&lt;br /&gt;
&lt;br /&gt;
[http://www.mikrocontroller.net/articles/Word_Clock#Sammelbestellung_.28Plexiglas.29 Sammelbestellung Frontplatten]&lt;br /&gt;
&lt;br /&gt;
Beim Versand zusammen mit den Frontplatten entfallen natürlich die Versandkosten für die Platinen.&lt;br /&gt;
&lt;br /&gt;
Maße: 146mm x 35,6mm.&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== Reichelt Warenkorb Mono-Variante ==&lt;br /&gt;
Da selbst bei der Mono-Variante der ATmega 88 langsam mehr als eng wird, wurde dieser Warenkorb auch auf den ATmega 168 umgestellt.&lt;br /&gt;
&lt;br /&gt;
Eine vollständige Liste zur Bestellung der nötigen Bauteile ist bei Reichelt abgelegt: &#039;&#039;&#039;[http://www.reichelt.de/?ACTION=20;AWKID=580204;PROVID=2084 Warenkorb-Mono]&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== Reichelt Warenkorb RGB-Variante ==&lt;br /&gt;
Für die RBG-Version wird der ATmega 168 benötigt. Ein angepasster &#039;&#039;&#039;[http://www.reichelt.de/?ACTION=20;AWKID=580197;PROVID=2084 WARENKORB]&#039;&#039;&#039; ist bei Reichelt hinterlegt.&lt;br /&gt;
&lt;br /&gt;
Im Warenkorb befindet sich nun auch der Nachfolger TSOP 31238 des nicht mehr lieferbaren TSOP17xx. ( 15.11.2011 ).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;quot;Beginner-Tipp&amp;quot;: &lt;br /&gt;
&lt;br /&gt;
Der Warenkorb ist eine tolle Vereinfachung der Bestellung. Bevor Ihr jedoch das DCF-77-Modul automatisch mitbestellt, lest bitte mit Hilfe der Suchfunktion das Forum zu diesem Thema durch. Das DCF-77-Modul ist, wie es im Forum so nett formuliert wurde, &amp;quot;ein Sensibelchen&amp;quot;. Es gäbe eine Alternative von C* (siehe Forum). Und um es ganz deutlich zu formulieren: Die Uhr funktioniert auch ohne DCF-77-Modul ganz prima. Sie kann mit der IR-Fernbedienung ganz einfach gestellt werden. Man braucht das Modul nicht wirklich.&lt;br /&gt;
Es befindet sich kein Flachbandkabel im Warenkorb.&lt;br /&gt;
----&lt;br /&gt;
== Reichelt Warenkorb LED Single Board ==&lt;br /&gt;
&lt;br /&gt;
Für das neue SingleBoard (Paket 1) werden zusätzliche Bauteile benötigt. Diese sind in einem eigenen &#039;&#039;&#039;[http://www.reichelt.de/?ACTION=20;AWKID=847662;PROVID=2084 WARENKORB]&#039;&#039;&#039; bei Reichelt hinterlegt.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== Reichelt Warenkorb Pollin DCF Stabilisierungsplatine ==&lt;br /&gt;
&lt;br /&gt;
Teil des Single Boards ist eine Stabilisierungsschaltung für den Pollin DCF Empfänger. Bei Verwendung des Pollin DCF Empfängers wird folgender &#039;&#039;&#039;[http://www.reichelt.de/?ACTION=20;AWKID=986833;PROVID=2084 WARENKORB]&#039;&#039;&#039; zusätzlich benötigt.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;[http://www.pollin.de/shop/dt/NTQ5OTgxOTk-/Bausaetze_Module/Module/DCF_Empfangsmodul_DCF1.html Link]&#039;&#039;&#039; zum DCF-Empfänger bei Pollin.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== Bestückung ==&lt;br /&gt;
&lt;br /&gt;
Hier eine kurze Beschreibung zur Bestückung:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Version 1.0 (schmale Ausführung):&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
[[Datei:Wordclock-schmal.png|miniatur|Bestückte Platine (Version 1.0)]]&lt;br /&gt;
[[Datei:Wordclock-schmal-1.1.png|miniatur|Bestückte Platine (Version 1.1)]]&lt;br /&gt;
[[Datei:Wordclock-schmal-2.0.png|miniatur|Bestückte Platine (Version 2.0)]]&lt;br /&gt;
&lt;br /&gt;
* Oben Mitte: Anschluss für stehende Lithium-Knopfbatterie CR2032 (die drei abgebildeten Stifte sind natürlich nicht notwendig, die Batterie wird direkt eingelötet)&lt;br /&gt;
* Unten 3-polige Stiftleiste: Anschluss für DCF77-Modul&lt;br /&gt;
* Unten 2-polige Stiftleiste: RX &amp;amp; TX (für Testzwecke)&lt;br /&gt;
* Unten rechts: TSOP17XX/SFH5110 für Infrarot-Empfang&lt;br /&gt;
* Darüber: 2-polige Stiftleiste für LDR (Helligkeitsmessung)&lt;br /&gt;
* Oben links und rechts: Wannenstecker für insg. 32 Ausgabekanäle: OUT0-OUT23 (für die Wörter), OUTL1-OUTL4 (für die Minuten) und OUTG1-OUTG4 (für General-Purpose-Ausgabezwecke)&lt;br /&gt;
* Rechts: Anschlussklemmen für Versorgungsspannung 7-20V und die drei PWM-Kanäle Rot, Grün und Blau.&lt;br /&gt;
* Für Atmel Programmer muss der ISP VTG Anschluss (Pin 2) direkt mit der 5V Spannungsversorgung verbunden werden (z.Bsp. Plus Pol von C9).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Version 1.1 (schmale Ausführung):&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Wie 1.0, jedoch hat der Verbinder K9 (UART-Anschlüsse Rx/Tx für Debug-Zwecke) zwei zusätzliche Pins erhalten, siehe abweichendes Bestückungsbild rechts. Belegung von links nach rechts: Vcc / GND / RX / TX&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Version 2.0 (schmale Ausführung):&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Änderungen gegenüber 1.1:&lt;br /&gt;
&lt;br /&gt;
* Diode D1 entfällt&lt;br /&gt;
* 6-poliger statt 10-poliger ISP-Stecker&lt;br /&gt;
* Am ISP-Stecker ist auch Vcc angeschlossen&lt;br /&gt;
* Anschlussmöglichkeit für weitere I2C-Module&lt;br /&gt;
* Anschlussmöglichkeit für weitere Schieberegister über SPI&lt;br /&gt;
&lt;br /&gt;
[[Datei:RXTX-platine-wordclock-1.1.png|miniatur|Rx/Tx in V1.1 und V2.0]]&lt;br /&gt;
&lt;br /&gt;
Der IR-Empfänger TSOP17XX/SFH5110 muss hinter einem nicht benutzten Buchstaben angebracht werden. Deshalb braucht man ihn nicht unbedingt auf die Platine löten, sondern kann ihn auch über ein 3-poliges Kabel mit der Platine verbinden. In diesem Fall sollte der Kondensator C2 nicht auf die Platine, sondern direkt am TSOP17XX/SFH5110 (C2 Minus an Pin 1, C2 Plus an Pin 2) angelötet werden. Bei Verwendung eines SFH5110 Pinbelegung beachten!&lt;br /&gt;
&lt;br /&gt;
Je nach Ort des LDRs (hinter Buchstaben bzw. mit/ohne Dffusor) kann die automatische Helligkeitsregelung unterschiedlich ausfallen. Hier muss man eventuell den Widerstand R6 variieren, wenn das Ergebnis nicht optimal sein sollte.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Bestückung und Anschlüsse&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
[[Datei:Wordclock-schmal-bestueckungsdruck.png|miniatur|Bestückungsaufdruck der Version 1.0]]&lt;br /&gt;
&lt;br /&gt;
[[Datei:Wordclock-schmal-bestueckungsdruck-1.1.png|miniatur|Bestückungsaufdruck der Version 1.1]]&lt;br /&gt;
&lt;br /&gt;
[[Datei:Wordclock-schmal-bestueckungsdruck-2.0.png|miniatur|Bestückungsaufdruck der Version 2.0]]&lt;br /&gt;
&lt;br /&gt;
[[Datei:Wordclock-schmal-bestueckt.jpg|miniatur|Bestückung: Orientierung der IRLUs beachten!]]&lt;br /&gt;
&lt;br /&gt;
[[Datei:Wordclock-schmal-anschluesse.png|miniatur|Anschlüsse V1.0]]&lt;br /&gt;
[[Datei:Wordclock-schmal-anschluesse-1.1.png|miniatur|Anschlüsse V1.1]]&lt;br /&gt;
[[Datei:Wordclock-schmal-anschluesse-2.0.png|miniatur|Anschlüsse V2.0]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;WICHTIG (für 1.x und 2.x):&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Der oberste IRLU2905 muss anders herum eingelötet werden (Metall Richtung Spannungsregler) als die beiden unteren (Metall Richtung Schraubklemme). Siehe auch Foto rechts.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Möchte man einfarbige LEDs verwenden und auf die RGB-Steuerung verzichten, schließt man einfach zwei der drei RGB-PWM-Kanäle nicht an und verwendet stattdessen nur PWMR zur PWM-Steuerung. Die 2 zu PWMG und PWMB gehörenden IRLUs und die angeschlossenen 4 Widerstände am Gate der IRLUs kann man dann auch weglassen.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Bestückungsliste:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 Name                Wert&lt;br /&gt;
 C1,C3,C4,C6,C8,C9   100NF&lt;br /&gt;
 C10,C11,C12,C13     100NF&lt;br /&gt;
 C2                  4,7µF&lt;br /&gt;
 C5,C7               47µF&lt;br /&gt;
 D1                  1N4001&lt;br /&gt;
 IC1                 ATMEGA88&lt;br /&gt;
 IC2                 7805&lt;br /&gt;
 IC3                 TSOP1738 oder TSOP31238 oder SFH5110 (andere Pinbelegung!)&lt;br /&gt;
 IC4,IC5,IC6         74HCT595N&lt;br /&gt;
 IC7                 DS1307&lt;br /&gt;
 IC8,IC9,IC10,IC11   UDN2981A&lt;br /&gt;
 K4                  Wannenstecker 10-polig&lt;br /&gt;
 K7,K8               Wannenstecker 16-polig&lt;br /&gt;
 K6                  LDR&lt;br /&gt;
 KL1                 KLEMME5POL&lt;br /&gt;
 Q1                  32,768KHz&lt;br /&gt;
 R1,R6,R8,R10,R12    10K&lt;br /&gt;
 R7                  10K, entfällt!&lt;br /&gt;
 R2                  100&lt;br /&gt;
 R3,R4               4K7&lt;br /&gt;
 R5,R9,R11           82&lt;br /&gt;
 T1,T2,T3            IRLU2905&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Davon abweichend für 2.0:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 Name                Wert&lt;br /&gt;
 K4                  Wannenstecker 6-polig (statt 10-polig)&lt;br /&gt;
 K10                 I2C (neu, optional)&lt;br /&gt;
 K11                 SPI (neu, optional)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Anmerkung zu C2 und R2:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
C2 und R2 bilden zusammen einen Tiefpass. Hier gilt: Soll der TSOPxxxx/SFH5110 über ein längeres Kabel entfernt von der Platine angebracht werden, sollte man den Kondensator C2 nicht in die Platine löten, sondern direkt am Empfänger anbringen (Achtung: TSOP17XX und SFH5110 haben unterschiedliche Pinbelegung).&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== FAQ zur Bestückung ==&lt;br /&gt;
&lt;br /&gt;
[[Datei:Wordclock-schmal-bestueckt.jpg|miniatur|Bestückung: Orientierung der IRLUs (ganz rechts) beachten!]]&lt;br /&gt;
&lt;br /&gt;
 Q: Wie herum müssen die IRLUs eingelötet werden?&lt;br /&gt;
 A: Der oberste kommt mit der Metallseite nach links (Richtung&lt;br /&gt;
    Spannungsregler), Pin 1 ist hier der untere. Die anderen beiden IRLUs&lt;br /&gt;
    werden mit der Metallseite Richtung Schraubklemme eingelötet, siehe auch&lt;br /&gt;
    Foto rechts. Hier ist jeweils Pin 1 der obere.&lt;br /&gt;
&lt;br /&gt;
 Q: Welche ICs sollte ich sockeln?&lt;br /&gt;
 A: Wenn durch einen versehentlichen Kurzschluss bei der Freiluftverdrahtung der&lt;br /&gt;
    LEDs ein UDN2981 abfackelt, ist das ägerlich. Daher sollte man zumindest&lt;br /&gt;
    die UDNs und den ATMega sockeln. Besser ist es natürlich, alle zu sockeln.&lt;br /&gt;
&lt;br /&gt;
 Q: Bei dem ATMega und der RTC ist nicht ersichtlich, wie herum sie eingebaut&lt;br /&gt;
    werden müssen?&lt;br /&gt;
 A: Doch, kann man sehen: Der Lötpunkt von Pin1 ist immer rechteckig, die&lt;br /&gt;
    anderen sind oval. Das gilt übrigens für fast alle Bauteile, auch die Wannen.&lt;br /&gt;
&lt;br /&gt;
 Q: Ich möchte oben statt der abgebildeten zwei 2x8-poligen Stiftleisten 16-polige&lt;br /&gt;
    Wannenstecker nehmen. Wie herum kommen dann die oberen Wannen drauf?&lt;br /&gt;
 A: Mit der Kerbe nach unten, sieht man auch am rechteckigen Lötpunkt - und&lt;br /&gt;
    auch auf dem Foto rechts.&lt;br /&gt;
&lt;br /&gt;
 Q: Kann ich auf die Batterie verzichten, weil ich DCF77 einsetze bzw. nach&lt;br /&gt;
    einem Stromausfall die Uhr per Fernbedienung selbst neu stellen möchte?&lt;br /&gt;
 A: Wenn man keine Batterie einsetzt, sollte man VBat der RTC DS1307 mit GND&lt;br /&gt;
    verbinden. Das geht am einfachsten an den auf der Platine vorgesehenen&lt;br /&gt;
    Batterieanschlüssen: einfach K1 (Bat+) und K3 (Bat-) mit einem Stück Draht&lt;br /&gt;
    überbrücken. Übrigens: die Batterie hält lt. Datenblatt des DS1307&lt;br /&gt;
    10 Jahre, es ist also durchaus sinnvoll, diese auch zu bestücken.&lt;br /&gt;
&lt;br /&gt;
 Q: Der Infrarot-Empfänger TSOP17XX ist abgekündigt. Gibt es dazu eine Alternative?&lt;br /&gt;
 A: Als Ersatz kann man den [http://www.reichelt.de/?ARTICLE=107210 TSOP31238] nehmen. Er ist pinkompatibel.&lt;br /&gt;
&lt;br /&gt;
 Q: Kann ich (aus Kostengründen) auch einfarbige LEDs verwenden?&lt;br /&gt;
 A: Ja, einfach zwei der drei RGB-PWM-Kanäle nicht anschließen und nur PWMR (für Rot) benutzen.&lt;br /&gt;
    Die 2 zu PWMG und PWMB gehörenden IRLUs und die angeschlossenen 4 Widerstände am Gate der IRLUs&lt;br /&gt;
    kann man dann auch weglassen.&lt;br /&gt;
&lt;br /&gt;
&amp;quot;Beginner-Tipp&amp;quot;:&lt;br /&gt;
&lt;br /&gt;
[[Datei:Testmodul-Schaltplatine.JPG|miniatur]]&lt;br /&gt;
&lt;br /&gt;
Beim Zusammenbau der Word Clock gibt es eine Reihe von Fehlerquellen (Programmierung, Aufbau der Steuerplatine, Lötfehler auf den LED-Streifen, Verkabelung etc.). Für die Fehlersuche aber auch für das erste Erfolgserlebnis nach dem Zusammenbau der Schaltplatine kann man sich relativ einfach mit Hilfe von Vorwiderständen und Standard-LEDs eine &amp;quot;Test-Umgebung&amp;quot; aufbauen. Die ausgedruckte Tabelle mit der Zuordnung der Ausgänge/LEDs zu den entsprechenden Wörtern erleichtert die Interpretation. Achtung: auf die richtige &amp;quot;Default&amp;quot;-Sprachvariante achten. Wenn die LEDs dann wie erwartet leuchten = erstes Erfolgserlebnis. &lt;br /&gt;
&lt;br /&gt;
Eine BestückungsInfo für die Version V1.1 gibt es als PDF Download: &#039;&#039;&#039;[[Media:WordClockSteuerplatineV1.1Bestueckung.pdf]]&#039;&#039;&#039;&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
= Anschluss der LEDs =&lt;br /&gt;
&lt;br /&gt;
=== Zuordnung der Kanäle ===&lt;br /&gt;
&lt;br /&gt;
[[Datei:Wannen.png|400px|Anschlüsse der Wannenstecker]]&lt;br /&gt;
&lt;br /&gt;
Folgende Tabelle enthält die Zuordnung der Wörter zu den Pins der Wannenstecker.&lt;br /&gt;
Die Bezeichnungen der Pins entsprechen dem Schaltplan. Zu beachten ist, dass die Reihenfolge der Wörter nichts mit der Anordnung auf der Frontplatte zu tun hat.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; id=&amp;quot;pinbelegungen&amp;quot;&lt;br /&gt;
|+ &#039;&#039;&#039;Zuordnung Pins&#039;&#039;&#039;&lt;br /&gt;
|-                    &lt;br /&gt;
! Anschluss || Pin || [[#Deutsch (2-sprachig) |Frontplatte deutsch 2-sprachig]]  || [[#Deutsch (3-sprachig) |Frontplatte deutsch 3-sprachig]]  || [[#Englisch|Frontplatte Englisch]]&lt;br /&gt;
|-                                                         &lt;br /&gt;
|  OUT0 || K7-08 || ES IST               ||  ZW                         || IT IS&lt;br /&gt;
|-                                                        &lt;br /&gt;
|  OUT1 || K7-07 || FÜNF  (Minuten)      ||  EI                         || FIVE   (Minuten) &lt;br /&gt;
|-                                                        &lt;br /&gt;
|  OUT2 || K7-06 || ZEHN  (Minuten)      ||  N                          || TEN    (Minuten) &lt;br /&gt;
|-                                                        &lt;br /&gt;
|  OUT3 || K7-05 || VOR   (Minuten)      ||  S                          || QUARTER &lt;br /&gt;
|-                                                        &lt;br /&gt;
|  OUT4 || K7-04 || DREI  (Minuten)      ||  IEBEN                      || TWENTY (Minuten) &lt;br /&gt;
|-                                                        &lt;br /&gt;
|  OUT5 || K7-03 || VIERTEL              ||  DREI                       || HALF &lt;br /&gt;
|-                                                        &lt;br /&gt;
|  OUT6 || K7-02 || NACH                 ||  VIER                       || TO &lt;br /&gt;
|-                                                        &lt;br /&gt;
|  OUT7 || K7-01 || VOR                  ||  FÜNF                       || PAST &lt;br /&gt;
|-                                                        &lt;br /&gt;
|  OUT8 || K7-16 || HALB                 ||  SECHS                      || ONE &lt;br /&gt;
|-                                                        &lt;br /&gt;
|  OUT9 || K7-15 || S                    ||  ACHT                       || TWO &lt;br /&gt;
|-                                                        &lt;br /&gt;
|  OUT10 || K7-14 || EIN                 ||  NEUN                       || THREE &lt;br /&gt;
|-                                                        &lt;br /&gt;
|  OUT11 || K7-13 || ZWEI                ||  ZEHN                       || FOUR &lt;br /&gt;
|-                                                        &lt;br /&gt;
|  OUT12 || K7-12 || DREI                ||  ELF                        || FIVE &lt;br /&gt;
|-                                                        &lt;br /&gt;
|  OUT13 || K7-11 || VIER                ||  ZWÖLF                      || SIX &lt;br /&gt;
|-                                                        &lt;br /&gt;
|  OUT14 || K7-10 || FÜNF                ||  ES IST                     || SEVEN &lt;br /&gt;
|-                                                        &lt;br /&gt;
|  OUT15 || K7-09 || SECHS               ||  UHR                        || EIGHT &lt;br /&gt;
|-                                                        &lt;br /&gt;
|  OUT16 || K8-08 || SIEBEN              ||  FÜNF (Minuten)             || NINE &lt;br /&gt;
|-                                                        &lt;br /&gt;
|  OUT17 || K8-07 || ACHT                ||  ZEHN (Minuten)             || TEN &lt;br /&gt;
|-                                                        &lt;br /&gt;
|  OUT18 || K8-06 || NEUN                ||  ZWANZIG (Minuten)      || ELEVEN &lt;br /&gt;
|-                                                        &lt;br /&gt;
|  OUT19 || K8-05 || ZEHN                ||  DREI (Minuten)             || TWELVE &lt;br /&gt;
|-                                                        &lt;br /&gt;
|  OUT20 || K8-04 || ELF                 ||  VIERTEL (Minuten)          || O CLOCK  &lt;br /&gt;
|-                                                        &lt;br /&gt;
|  OUT21 || K8-03 || ZWÖLF               ||  NACH                       || unverbunden&lt;br /&gt;
|-                                                        &lt;br /&gt;
|  OUT22 || K8-02 || UHR                 ||  VOR                        || unverbunden&lt;br /&gt;
|-                                                        &lt;br /&gt;
|  OUT23 || K8-01 || unverbunden         ||  HALB                       || unverbunden&lt;br /&gt;
|-                                                        &lt;br /&gt;
|  OUTL1 || K8-09 || min1                ||  min1                       || min1&lt;br /&gt;
|-                                                        &lt;br /&gt;
|  OUTL2 || K8-10 || min2                ||  min2                       || min2&lt;br /&gt;
|-                                                        &lt;br /&gt;
|  OUTL3 || K8-11 || min3                ||  min3                       || min3&lt;br /&gt;
|-                                                        &lt;br /&gt;
|  OUTL4 || K8-12 || min4                ||  min4                       || min4&lt;br /&gt;
|-                                                        &lt;br /&gt;
|  OUTG1 || K8-13 || Ambilight (opt.)           ||  Ambilight (opt.)                  || Ambilight (opt.)           &lt;br /&gt;
|-                                                        &lt;br /&gt;
|  OUTG2 || K8-14 || unverbunden         ||  unverbunden                || unverbunden&lt;br /&gt;
|-                                                        &lt;br /&gt;
|  OUTG3 || K8-15 || unverbunden         ||  unverbunden                || unverbunden&lt;br /&gt;
|-                                                        &lt;br /&gt;
|  OUTG4 || K8-16 || dcf Empfang         ||  dcf Empfang                || dcf Empfang             &lt;br /&gt;
|}&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
=== Beschaltungsvarianten der LEDs ===&lt;br /&gt;
&lt;br /&gt;
Da die Schaltung genügend Power hat, um eine Unmenge an RGB-LEDs zu treiben, gibt es folgende Möglichkeiten, die auch mixbar sind:&lt;br /&gt;
&lt;br /&gt;
1. Pro Wort für jeden Buchstaben eine RGB-LED (mit gemeinsamer Anode) in&lt;br /&gt;
Parallelschaltung (natürlich mit geeignetem Vorwiderstand pro LED)&lt;br /&gt;
&lt;br /&gt;
Prinzip (am Beispiel des Wortes &amp;quot;VIER&amp;quot;):&lt;br /&gt;
&lt;br /&gt;
         /---|&amp;gt;|----| R1R |---- PWMR&lt;br /&gt;
      +--|---|&amp;gt;|----| R1G |---- PWMG     &amp;quot;V&amp;quot;&lt;br /&gt;
      |  \---|&amp;gt;|----| R1B |---- PWMB&lt;br /&gt;
      |&lt;br /&gt;
      |  /---|&amp;gt;|----| R2R |---- PWMR&lt;br /&gt;
      +--|---|&amp;gt;|----| R2G |---- PWMG     &amp;quot;I&amp;quot;&lt;br /&gt;
      |  \---|&amp;gt;|----| R2B |---- PWMB&lt;br /&gt;
 OUTx-+&lt;br /&gt;
      |  /---|&amp;gt;|----| R3R |---- PWMR&lt;br /&gt;
      +--|---|&amp;gt;|----| R3G |---- PWMG     &amp;quot;E&amp;quot;&lt;br /&gt;
      |  \---|&amp;gt;|----| R3B |---- PWMB&lt;br /&gt;
      |&lt;br /&gt;
      |  /---|&amp;gt;|----| R4R |---- PWMR&lt;br /&gt;
      +--|---|&amp;gt;|----| R4G |---- PWMG     &amp;quot;R&amp;quot;&lt;br /&gt;
         \---|&amp;gt;|----| R4B |---- PWMB&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
2. Pro Wort für jeden Buchstaben eine RGB-LED in Reihenschaltung (mit&lt;br /&gt;
nur 1 Vorwiderstand für die ganze Reihe, bzw. 3 wegen RGB). Das geht&lt;br /&gt;
aber nur, wenn die RGB-LEDs unabhängige Anoden und Kathoden haben (ja,&lt;br /&gt;
die gibt es).&lt;br /&gt;
&lt;br /&gt;
Prinzip:&lt;br /&gt;
                         &amp;quot;V&amp;quot;    &amp;quot;I&amp;quot;    &amp;quot;E&amp;quot;    &amp;quot;R&amp;quot;&lt;br /&gt;
         /----| R1R |----|&amp;gt;|----|&amp;gt;|----|&amp;gt;|----|&amp;gt;|---- PWMR&lt;br /&gt;
 OUTx --+-----| R1G |----|&amp;gt;|----|&amp;gt;|----|&amp;gt;|----|&amp;gt;|---- PWMG&lt;br /&gt;
         \----| R1B |----|&amp;gt;|----|&amp;gt;|----|&amp;gt;|----|&amp;gt;|---- PWMB&lt;br /&gt;
&lt;br /&gt;
Theoretisch könnte man solche Streifen als Platine herstellen, welche man dann immer auf die gewünschte Länge kürzt, als 1, 2, 3 ... 7 Buchstaben.&lt;br /&gt;
&lt;br /&gt;
Bei Verwendung von einfarbigen LEDs vereinfachen sich die Prinzip-Schaltungen wie folgt:&lt;br /&gt;
&lt;br /&gt;
1. Parallelschaltung, eine LED pro Buchstabe im Wort:&lt;br /&gt;
&lt;br /&gt;
       /----|&amp;gt;|----| R1 |---- PWMR     &amp;quot;V&amp;quot;&lt;br /&gt;
      +-----|&amp;gt;|----| R2 |---- PWMR     &amp;quot;I&amp;quot;&lt;br /&gt;
 OUTx-+&lt;br /&gt;
      +-----|&amp;gt;|----| R3 |---- PWMR     &amp;quot;E&amp;quot;&lt;br /&gt;
       \----|&amp;gt;|----| R4 |---- PWMR     &amp;quot;R&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
2. Reihenschaltung, eine LED pro Buchstabe im Wort:&lt;br /&gt;
&lt;br /&gt;
                    &amp;quot;V&amp;quot;    &amp;quot;I&amp;quot;    &amp;quot;E&amp;quot;    &amp;quot;R&amp;quot;&lt;br /&gt;
 OUTx ----| R1 |----|&amp;gt;|----|&amp;gt;|----|&amp;gt;|----|&amp;gt;|---- PWMR&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Zum Berechnen der Vorwiderstände kann z.&amp;amp;nbsp;B. dieser Rechner&lt;br /&gt;
verwendet werden: &#039;&#039;&#039;[http://www.elektronik-kompendium.de/sites/bau/1109111.htm Vorwiderstands-Rechner]&#039;&#039;&#039; oder &#039;&#039;&#039;[http://www.modding-faq.de/index.php?artid=506 Vorwiderstands-Rechner mit Unterstützung für Reihenschaltung]&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Damit die LEDs selbst nicht sichtbar sind, benötigt man hinter den transparenten Buchstaben einen Diffusor. Im einfachsten Fall kann das eine weiße Schicht Farbe sein.&lt;br /&gt;
&lt;br /&gt;
&amp;quot;Beginner-Tipp&amp;quot;:&lt;br /&gt;
&lt;br /&gt;
In der Sammelbestellung wurden die Vorwiderstände für die Reihenschaltung berechnet. &lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
=== LEDs &amp;amp; Platinen ===&lt;br /&gt;
==== Single-LED-Platine ====&lt;br /&gt;
Ende 2013 wurde eine neue Platine für die LEDs entworfen. Diese reduziert die notwendigen Löt- und Verdrahtungsarbeiten auf ein minimum.&amp;lt;br&amp;gt;&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
| Top Seite des Single Boards: || Bottom Seite des Single Boards:&lt;br /&gt;
|-&lt;br /&gt;
| [[Datei:Single_Board_v4_TOP.jpg|350px|Singel LED Platine - LED Seite]]&lt;br /&gt;
 || [[Datei:Single_Board_v4_BOTTOM.jpg|350px|Singel LED Platine - Widerstand Seite]]&lt;br /&gt;
|}&lt;br /&gt;
Das Board ist wie folgt konzipiert:&lt;br /&gt;
* von der TOP Seite betrachtet, befinden sich rechts die 4 Platinen für die Minuten-LEDs&lt;br /&gt;
* von der TOP Seite betrachtet, befindet sich oben rechts eine kleine Zusatzplatine, welche zur Stabilisierung des Pollin DCF Empfängers konstruiert wurde - DANKE an Thomas K.! &amp;lt;br&amp;gt;Anbei der Schaltplan und der Bestückungsplan:&amp;lt;br&amp;gt;[[Datei:Single_Board_v4_DCF77-Schaltplan.png|200px]] [[Datei:Single-Board-v4-DCF-Bestueckung.JPG|300px]]&amp;lt;br&amp;gt;IC1 und C3 sind auf der Rückseite zu bestücken.&lt;br /&gt;
&amp;lt;br&amp;gt;Die notwendigen Bauteile sind als [http://www.reichelt.de/?ACTION=20;AWKID=986833;PROVID=2084 Warenkorb bei Reichelt] hinterlegt.&lt;br /&gt;
* es besteht die Möglichkeit 2 zusätzliche PLCC-6 LEDs zu bestücken (D1 und D2 - links und rechts von SECHS) um so bis zu 6 Status-Anzeigen nach vorne zu führen (derzeit nicht in der SW gesondert verwendet). So kann zB die DCF77 Empfangsanzeige nach vorne ausgeführt werden. In der aktuellen Version sind diese wie folgt vorverdrahtet:&lt;br /&gt;
** D1 ROT -&amp;gt; Out G4 (DCF Empfangskontrolle)&lt;br /&gt;
** D1 GRÜN -&amp;gt; n/a - ausgeführt als Pin zur Verbindungsseite&lt;br /&gt;
** D1 BLAU -&amp;gt; n/a - ausgeführt als Pin zur Verbindungsseite&lt;br /&gt;
** D2 ROT -&amp;gt; Out G1 (Ambilight)&lt;br /&gt;
** D2 GRÜN -&amp;gt; Out G2 - derzeit nicht in der SW verwendet&lt;br /&gt;
** D2 BLAU -&amp;gt; Out G3 - derzeit nicht in der SW verwendet&lt;br /&gt;
* möchte man zB nur die DCF77 Empfangskontrolle haben, so reicht es den ROT-Kanal von D1 mit einer PLCC-2 LED und den dazu gehörigen Widerstand zu bestücken&lt;br /&gt;
* TSOP mit Stabilisierungskondensator und LDR werden direkt auf dem Single Board bestückt&lt;br /&gt;
* das Single Board wird wie folgt mit der Hauptplatine verbunden:&lt;br /&gt;
** 2 16polige Flachbandkabeln für K7 und K8&lt;br /&gt;
** 4 Adern für PWMR / PMWG / PMWB / GND&lt;br /&gt;
** 2 Drähten für den LDR&lt;br /&gt;
** 3 Drähte für den TSOP&lt;br /&gt;
* die Verbindungen zu den Minuten- / Ambilightplatinen erfolgt über die Kontakte an den jeweiligen Ecken / Seiten&lt;br /&gt;
* für die weiter Verwendung sind die Minutenanschlüsse M1-M4 an der zentralen Verbinderseite ausgeführt&lt;br /&gt;
* für die weiter Verwendung sind die OUT G1-G4 an der zentralen Verbinderseite ausgeführt&lt;br /&gt;
* auf der BOTTOM Seite ist Platz für eine PLCC-2 LED als DCF77 Empfangskontroll LED vorgesehen&lt;br /&gt;
&lt;br /&gt;
Die für die DCF77 Empfangskontrolle, D1 und D2 benötigten Bauteile sind &#039;&#039;&#039;nicht Bestandteil&#039;&#039;&#039; eines angebotenen Paketes.&lt;br /&gt;
&lt;br /&gt;
Die Minuten-LEDs werden an den Ecken der Platine über kleine Drahtbrücken angeschlossen: (Bild ist noch vom Prototyp)&lt;br /&gt;
[[Datei:WordClock_Singel_LED_PCB_Minuten.jpg|400px|Anschluß Minuten LED]]&lt;br /&gt;
&lt;br /&gt;
Die Verbindung zwischen der LED-Platine und der Hauptplatine erfolgt mittels kurzem Flachbandkabel.&amp;lt;br&amp;gt;&lt;br /&gt;
[[Datei:WordClock_Singel_LED_PCB_Anschluß.jpg|400px|Anschluß an die Hauptplatine]]&lt;br /&gt;
&lt;br /&gt;
Auf dem Prototyp waren die Buchsen für K7 und K8 verdreht. Daher mussten die Flachbandkabel beim verbinden verdreht werden. Dieses wird in der finalen Version korrigiert. Es erfolgt dann ein Austausch des Bildes.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Bitte beachtet, dass für das SingleBoard zusätzliche Bauteile benötigt werden. Diese sind in einem eigenen Warenkorb bei Reichelt hinterlegt.&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
Diese sind in einem eigenen &#039;&#039;&#039;[http://www.reichelt.de/?ACTION=20;AWKID=847662;PROVID=2084 WARENKORB]&#039;&#039;&#039; bei Reichelt hinterlegt.&amp;lt;br&amp;gt;&lt;br /&gt;
Die Bauteile für das DCF77 Stabilisierungsboard sind ebenfalls in einem eigenen &#039;&#039;&#039;[http://www.reichelt.de/?ACTION=20;AWKID=885799;PROVID=2084 WARENKROB]&#039;&#039;&#039; bei Reichelt hinterlegt.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
==== Streifenplatinen ====&lt;br /&gt;
Die Platine hat ein Maß von 314 x 12 mm und ist auf die Word-Clock-Front-Varianten A und B (also 450mm x 450mm) ausgelegt.&lt;br /&gt;
&lt;br /&gt;
Der Abstand der einzelnen LEDs beträgt 28.1mm&lt;br /&gt;
&lt;br /&gt;
Die Streifenplatine wird so ausschauen: (Version 8 vom 06.März 2010)&lt;br /&gt;
&lt;br /&gt;
[[Datei:LED_Streifen_V6_1.png|750px|Streifenplatine für SMD RGB LEDs Version 8]]&lt;br /&gt;
&lt;br /&gt;
[[Datei:LED_Streifen_V6_1_bestueckt.jpg|750px|Erster Streifen bestückt]]&lt;br /&gt;
&lt;br /&gt;
Erste Streifenplatine bestückt.&amp;lt;br&amp;gt;&lt;br /&gt;
Weitere Beispiel-Photos der bestückten Streifenplatinen sind [http://www.mikrocontroller.net/topic/156661#1780198 hier] zu finden.&lt;br /&gt;
&lt;br /&gt;
Ausschnitt vergrößert dargestellt:&lt;br /&gt;
&lt;br /&gt;
[[Datei:LED_Streifen_V6_1_schnitt.png|500px|Aussschnitt]]&lt;br /&gt;
&lt;br /&gt;
Datenblatt der LED mit Bestückungsinfos: [[Datei:SMD RGB PLCC-6 datasheet3.pdf]]&lt;br /&gt;
&lt;br /&gt;
Hier ist die Bestückung aller Streifen schematisch detailliert gezeigt: &amp;lt;br&amp;gt; [http://www.mikrocontroller.net/topic/156661?goto=1671369#1671369 Beitrag] &amp;lt;br&amp;gt;&lt;br /&gt;
Bestückungstabelle: [[Datei:2012WordClockLEDMatrix.pdf]] &amp;lt;br&amp;gt;&lt;br /&gt;
Bestückungsgrafik: [[Datei:2012WordClockLEDMatrix_wiring_v22.pdf]]&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
==== Technische Daten der SMD RGB PLCC-6 LEDs ====&lt;br /&gt;
Spezifikation&lt;br /&gt;
* Source Material: InGaN&lt;br /&gt;
* Emitting Colour: SMD SMT 5050 RGB&lt;br /&gt;
* LENS Type: Water clear&lt;br /&gt;
* Reverse Voltage: 5.0 V&lt;br /&gt;
* Viewing Angle: 140 degree&lt;br /&gt;
* Lead Soldering Temp: 260°C for 5 seconds&lt;br /&gt;
&lt;br /&gt;
Absolute Maximum Rating (Ta = 250C)&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! PARAMETER || Symbol || RED || GREEN || BLUE || UNITS&lt;br /&gt;
|-&lt;br /&gt;
| Power Dissipation || PO || align=&amp;quot;right&amp;quot; | 80 || align=&amp;quot;right&amp;quot; | 95 || align=&amp;quot;right&amp;quot; | 85 || mW&lt;br /&gt;
|-&lt;br /&gt;
| DC Current || IF || align=&amp;quot;right&amp;quot; | 20 || align=&amp;quot;right&amp;quot; | 20 || align=&amp;quot;right&amp;quot; | 20 || mA&lt;br /&gt;
|-&lt;br /&gt;
| Peak Forward Current || IFP || align=&amp;quot;right&amp;quot; | 100 || align=&amp;quot;right&amp;quot; | 100 || align=&amp;quot;right&amp;quot; | 100 || mA&lt;br /&gt;
|-&lt;br /&gt;
| Reverse Voltage || VR || align=&amp;quot;right&amp;quot; | 5 || align=&amp;quot;right&amp;quot; | 5 || align=&amp;quot;right&amp;quot; | 5 || V&lt;br /&gt;
|-&lt;br /&gt;
| Operating Temperature || Topr || colspan=&amp;quot;3&amp;quot; align=&amp;quot;center&amp;quot; | -25 to +85 || °C&lt;br /&gt;
|-&lt;br /&gt;
| Storage Temperature || Tstg ||  colspan=&amp;quot;3&amp;quot; align=&amp;quot;center&amp;quot; | -40 to +85 || °C&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Electro-optical Characteristics (Ta = 250C)&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! PARAMETER || SYMBOL || CONDITIONS || MIN. || TYP. || MAX. || UNIT&lt;br /&gt;
|-&lt;br /&gt;
| Forward Voltage (B) || VF || IF = 20mA || align=&amp;quot;right&amp;quot; | 3.4 || align=&amp;quot;right&amp;quot; | 3.6 || align=&amp;quot;right&amp;quot; | 3.8 || V&lt;br /&gt;
|-&lt;br /&gt;
| Forward Voltage (G) || VF || IF = 20mA || align=&amp;quot;right&amp;quot; | 3.4 || align=&amp;quot;right&amp;quot; | 3.6 || align=&amp;quot;right&amp;quot; | 3.8 || V&lt;br /&gt;
|-&lt;br /&gt;
| Forward Voltage (R) || VF || IF = 20mA || align=&amp;quot;right&amp;quot; | 1.9 || align=&amp;quot;right&amp;quot; | 2.1 || align=&amp;quot;right&amp;quot; | 2.5 || V&lt;br /&gt;
|-&lt;br /&gt;
| Dominant Wavelength (B) || lD || IF = 20mA || align=&amp;quot;right&amp;quot; | 465 || align=&amp;quot;right&amp;quot; | 470 || align=&amp;quot;right&amp;quot; | 475 || nm&lt;br /&gt;
|-&lt;br /&gt;
| Dominant Wavelength (G) || lD || IF = 20mA || align=&amp;quot;right&amp;quot; | 515 || align=&amp;quot;right&amp;quot; | 520 || align=&amp;quot;right&amp;quot; | 525 || nm&lt;br /&gt;
|-&lt;br /&gt;
| Dominant Wavelength (R) || lD || IF = 20mA || align=&amp;quot;right&amp;quot; | 625 || align=&amp;quot;right&amp;quot; | 630 || align=&amp;quot;right&amp;quot; | 635 || nm&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Pin / Farbzuordnung:&lt;br /&gt;
* R: Pin 1 - 6&lt;br /&gt;
* G: Pin 2 - 5&lt;br /&gt;
* B: Pin 3 - 4&lt;br /&gt;
&lt;br /&gt;
[[Datei:plcc6_smd_RGB.JPG]]&lt;br /&gt;
----&lt;br /&gt;
==== Widerstandswerte für die LED Streifen ====&lt;br /&gt;
&lt;br /&gt;
Berechnet sind die Widerstände für eine Spannungsversorgung von 15V - abzgl. 1,4V durch den Spannungsabfall an den UDN2981. Ein solches Netzteil gibt es zB bei [http://www.pollin.de/shop/dt/MjU5OTQ2OTk-/Stromversorgung/Netzgeraete/Regelbare_Netzgeraete/EcoFriendly_Universal_Schaltnetzteil_MW_3H36GS.html Pollin] oder auch bei [http://www.reichelt.de/?ACTION=3;ARTICLE=89789;PROVID=2402 Reichelt]. &lt;br /&gt;
&lt;br /&gt;
&amp;quot;Beginner-Tipp&amp;quot;:&lt;br /&gt;
&lt;br /&gt;
Bitte lest zum Stichwort &amp;quot;Netzteil&amp;quot; im Forum nach. Es gibt hierzu einige Bemerkungen und Empfehlungen. So z. B. auch der Hinweis auf ein weiteres Netzteil von C*: [http://www.conrad.de/ce/de/product/512696/HN-POWER-HNP18-150-STECKER-NETZT-18W Netzteil_15V_1.2A]&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;
! colspan=&amp;quot;3&amp;quot; | |||| colspan=&amp;quot;3&amp;quot; | ....Widerstände E12.... |||| colspan=&amp;quot;3&amp;quot; | ....Widerstände E24.... ||&lt;br /&gt;
|- &lt;br /&gt;
! Streifen  || Wort  || LEDs |||| style=&amp;quot;color:red;&amp;quot; | Rot || style=&amp;quot;color:green;&amp;quot; | Grün || style=&amp;quot;color:blue;&amp;quot; | Blau |||| style=&amp;quot;color:red;&amp;quot; | Rot || style=&amp;quot;color:green;&amp;quot; | Grün || style=&amp;quot;color:blue;&amp;quot; | Blau || Anschluss&lt;br /&gt;
|- &lt;br /&gt;
| 1 ||  ES ||  2 ||||  560 ||  470 ||  470 ||||  510 ||  360 ||  360 || OUT14&lt;br /&gt;
|- &lt;br /&gt;
| {{H16}} | 1 || {{H16}} | K ||  ||||  ||  ||  ||||  ||  ||  ||&lt;br /&gt;
|- &lt;br /&gt;
| 1 || IST || 3 |||| 470 || 220 || 220 |||| 390 || 200 || 200 || OUT14&lt;br /&gt;
|- &lt;br /&gt;
| {{H16}} | 1 || {{H16}} | L ||  ||||  ||  ||  ||||  ||  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| 1 || FÜNF || 4 |||| 330 || 33 || 33 |||| 300 || 27 || 33 || OUT16&lt;br /&gt;
|-{{H12}}&lt;br /&gt;
| 2 || ZEHN || 4 |||| 330 || 33 || 33 |||| 300 || 27 || 33 || OUT17&lt;br /&gt;
|-{{H12}}&lt;br /&gt;
| 2 || ZWAN || 4 |||| 330 || 33 || 33 |||| 300 || 27 || 33 || OUT18&lt;br /&gt;
|-{{H12}}&lt;br /&gt;
| 2 || ZIG || 3 |||| 470 || 220 || 220 |||| 390 || 200 || 200 || OUT18&lt;br /&gt;
|-&lt;br /&gt;
| 3 || DREI || 4 |||| 330 || 33 || 33 |||| 300 || 27 || 33 || OUT19&lt;br /&gt;
|-&lt;br /&gt;
| 3 || VIER || 4 |||| 330 || 33 || 33 |||| 300 || 27 || 33 || OUT20&lt;br /&gt;
|-&lt;br /&gt;
| 3 || TEL || 3 |||| 470 || 220 || 220 |||| 390 || 200 || 200 || OUT20&lt;br /&gt;
|-{{H12}}&lt;br /&gt;
| {{H16}} | 4 || {{H16}} | TG ||  ||||  ||  ||  ||||  ||  ||  ||&lt;br /&gt;
|-{{H12}}&lt;br /&gt;
| 4 || NACH || 4 |||| 330 || 33 || 33 |||| 300 || 27 || 33 || OUT21&lt;br /&gt;
|-{{H12}}&lt;br /&gt;
| 4 || VOR || 3 |||| 470 || 220 || 220 |||| 390 || 200 || 200 || OUT22&lt;br /&gt;
|- {{H12}}&lt;br /&gt;
| {{H16}} | 4 || {{H16}} | JM ||  ||||  ||  ||  ||||  ||  ||  ||  &lt;br /&gt;
|-&lt;br /&gt;
| 5 || HALB || 4 |||| 330 || 33 || 33 |||| 300 || 27 || 33 || OUT23&lt;br /&gt;
|- &lt;br /&gt;
| {{H16}} | 5 || {{H16}} | Q ||  ||||  ||  ||  ||||  ||  ||  || &lt;br /&gt;
|-&lt;br /&gt;
| 5 || ZWÖ || 3 |||| 470 || 220 || 220 |||| 390 || 200 || 200 || OUT13&lt;br /&gt;
|-&lt;br /&gt;
| 5 || LF || 2 |||| 560 || 470 || 470 |||| 510 || 360 || 360 || OUT13&lt;br /&gt;
|- &lt;br /&gt;
| {{H16}} | 5 || {{H16}} | P ||  ||||  ||  ||  ||||  ||  ||  ||&lt;br /&gt;
|-{{H12}}&lt;br /&gt;
| 6 || ZW || 2 |||| 560 || 470 || 470 |||| 510 || 360 || 360 || OUT0&lt;br /&gt;
|-{{H12}}&lt;br /&gt;
| 6 || EI || 2 |||| 560 || 470 || 470 |||| 510 || 360 || 360 || OUT1&lt;br /&gt;
|-{{H12}}&lt;br /&gt;
| 6 || N || 1 |||| 680 || 560 || 560 |||| 620 || 560 || 560 || OUT2&lt;br /&gt;
|-{{H12}}&lt;br /&gt;
| 6 || S || 1 |||| 680 || 560 || 560 |||| 620 || 560 || 560 || OUT3&lt;br /&gt;
|-{{H12}}&lt;br /&gt;
| 6 || IEB || 3 |||| 470 || 220 || 220 |||| 390 || 200 || 200 || OUT4&lt;br /&gt;
|-{{H12}}&lt;br /&gt;
| 6 || EN || 2 |||| 560 || 470 || 470 |||| 510 || 360 || 360 || OUT4&lt;br /&gt;
|- &lt;br /&gt;
| {{H16}} | 7 || {{H16}} | K ||  ||||  ||  ||  ||||  ||  ||  ||  &lt;br /&gt;
|-&lt;br /&gt;
| 7 || DREI || 4 |||| 330 || 33 || 33 |||| 300 || 27 || 33 || OUT5&lt;br /&gt;
|- &lt;br /&gt;
| {{H16}} | 7 || {{H16}} | RH ||  ||||  ||  ||  ||||  ||  ||  || &lt;br /&gt;
|-&lt;br /&gt;
| 7 || FÜNF || 4 |||| 330 || 33 || 33 |||| 300 || 27 || 33 || OUT7&lt;br /&gt;
|-{{H12}}&lt;br /&gt;
| 8 || ELF || 3 |||| 470 || 220 || 220 |||| 390 || 200 || 200 || OUT12&lt;br /&gt;
|-{{H12}}&lt;br /&gt;
| 8 || NEUN || 4 |||| 330 || 33 || 33 |||| 300 || 27 || 33 || OUT10&lt;br /&gt;
|-{{H12}}&lt;br /&gt;
| 8 || VIER || 4 |||| 330 || 33 || 33 |||| 300 || 27 || 33 || OUT6&lt;br /&gt;
|- &lt;br /&gt;
| {{H16}} | 9 || {{H16}} | W ||  ||||  ||  ||  ||||  ||  ||  ||  &lt;br /&gt;
|-&lt;br /&gt;
| 9 || ACHT || 4 |||| 330 || 33 || 33 |||| 300 || 27 || 33 || OUT9&lt;br /&gt;
|-&lt;br /&gt;
| 9 || ZEHN || 4 |||| 330 || 33 || 33 |||| 300 || 27 || 33 || OUT11&lt;br /&gt;
|- &lt;br /&gt;
| {{H16}} | 9 || {{H16}} | RS ||  ||||  ||  ||  ||||  ||  ||  ||  &lt;br /&gt;
|-{{H12}}&lt;br /&gt;
| {{H16}} | 10 || {{H16}} | B ||  ||||  ||  ||  ||||  ||  ||  ||  &lt;br /&gt;
|-{{H12}}&lt;br /&gt;
| 10 || SEC || 3 |||| 470 || 220 || 220 |||| 390 || 200 || 200 || OUT8&lt;br /&gt;
|-{{H12}}&lt;br /&gt;
| 10 || HS || 2 |||| 560 || 470 || 470 |||| 510 || 360 || 360 || OUT8&lt;br /&gt;
|-{{H12}}&lt;br /&gt;
| {{H16}} | 10 || {{H16}} | FM ||  ||||  ||  ||  ||||  ||  ||  ||  &lt;br /&gt;
|-{{H12}}&lt;br /&gt;
| 10 || UHR || 3 |||| 470 || 220 || 220 |||| 390 || 200 || 200 || OUT15&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Es werden somit folgende Widerstände aus der E24 Reihe benötigt:&lt;br /&gt;
&lt;br /&gt;
* 13x 27Ω&lt;br /&gt;
* 13x 33Ω&lt;br /&gt;
* 18x 200Ω&lt;br /&gt;
* 13x 300Ω&lt;br /&gt;
* 12x 360Ω&lt;br /&gt;
* 9x 390Ω&lt;br /&gt;
* 6x 510Ω&lt;br /&gt;
* 4x 560Ω&lt;br /&gt;
* 2x 620Ω&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
==== Ambilight-/LED-Streifenplatine bestücken ====&lt;br /&gt;
&lt;br /&gt;
&amp;quot;Beginner-Tipps&amp;quot;:&lt;br /&gt;
&lt;br /&gt;
Die Beschreibung zum Thema Ambilight ist im Forum etwas unübersichtlich. &lt;br /&gt;
&lt;br /&gt;
Sehr hilfreich zum Verständnis sind die Bilder von [http://www.mikrocontroller.net/topic/156661#1780198 Matthias]. Wichtig zum Verständnis ist auch der Hinweis auf die Drahtbrücken auf der Platinenunterseite vor der ersten LED eines Wortes. Es hat mir sehr geholfen, das Platinen-Layout-Schema und das Foto übereinander zu montieren.&lt;br /&gt;
&lt;br /&gt;
[[Datei:LED-Platine.jpg|miniatur]]&lt;br /&gt;
&lt;br /&gt;
Anhand der [http://www.mikrocontroller.net/articles/Word_Clock_Variante_1#Widerstandswerte_f.C3.BCr_die_LED_Streifen Tabelle] kann man erkennen, dass die Widerstände im Ambilight-Paket (300 Ohm = rot, 27 Ohm = grün, 33 Ohm = blau) für 2 x 4 LEDs in Serie ausgelegt sind. &lt;br /&gt;
&lt;br /&gt;
Man kann also 2 x 4 LEDs hinter einander löten oder die Variante von Christian aufgreifen der die LEDs physikalisch in 2er Gruppen angeordnet hat. Durch Drahtbrücken werden diese 2er Gruppen aber dann elektrisch zu zwei 4er Gruppen: LED-LED-Bügel-LED-LED-frei-LED-LED-Bügel-LED-LED, so dass auch für diese Version die Widerstände passen.&lt;br /&gt;
&lt;br /&gt;
Update Jan 2014: ich habe für die Amiblight-Platinen nach dem Muster LED-LED-Bügel-LED-LED-frei-LED-LED-Bügel-LED-LED diese Schemazeichnung mit Lötpunkten und ganz kurzen Drahtbrücken angefertigt:&lt;br /&gt;
&lt;br /&gt;
[[Datei:Ambilight-wiring-2x2x2x2-Leds-KHK.png|miniatur]]&lt;br /&gt;
&lt;br /&gt;
Persönlicher Kommentar KHK: &lt;br /&gt;
Ich habe inzwischen die zweite Wordclock fertig gestellt. Beim ersten Mal habe ich die LED-Streifenplatinen/Ambilight-Streifen ohne sie zu trennen bestückt. Das war schön übersichtlich und einfach zu löten. Das Trennen der fertig gelöteten Streifen war aber sehr schwierig. Bei der zweiten Wordclock habe ich die LED-Streifen vor der Bestückung mit einer Hebelschere getrennt. Das ging super einfach und hat mir viel Mühe gespart. Fazit: Trennt bitte die LED-Streifen vor der Bestückung ab! Ihr spart Euch viel Mühe und Stress.&lt;br /&gt;
&lt;br /&gt;
Beginner-Tipp: Das Ambilight wird mit OUTG2 angesteuert (Steuerplatine Version 1.1).&lt;br /&gt;
&lt;br /&gt;
==== LED-Streifen: Logik ====&lt;br /&gt;
&lt;br /&gt;
* Das Signal für die R/G/B PWM wird für jede Streifenplatine seitlich zugeführt (&amp;quot;R/G/B-Ausgangssignal&amp;quot;). Wichtig: nicht alle Platinen hintereinanderschalten, sondern die einzelnen Streifen parallel schalten (sonst werden die Leiterbahnen der ersten Platinen immer mit dem vollen Strom belastet). &lt;br /&gt;
&lt;br /&gt;
* Das &amp;quot;R/G/B-Ausgangssignal&amp;quot; wird vor jedem Wort auf den Vorwiderstand geführt. Dazu ist es notwendig das &amp;quot;R/G/B-Ausgangssignal&amp;quot; von den gemeinsamen Leiterbahnen (R,G,B) mit Draht- (R und G) bzw. einer Lötbrücke (B) auf die Vorwiderstände zu legen. &lt;br /&gt;
&lt;br /&gt;
* Innerhalb eines Wortes werden die vier Signale (PWM R/G/B + COM) über Lötbrücken von einem Buchstaben zum anderen weitergeführt. &lt;br /&gt;
&lt;br /&gt;
* Am Ende eines Wortes werden die Ausgänge 1, 2 und 3 der LED mit Lötbrücken zusammengeführt und gehen auf COM. &lt;br /&gt;
&lt;br /&gt;
* Eine Besonderheit ergibt sich bei &amp;quot;Leerzeichen&amp;quot; - wie z. B. beim Ambilight oder bei &amp;quot;Es(leer)ist&amp;quot;: &lt;br /&gt;
** Die COM Leitung wird durch zwei Lötbrücken links und rechts des zu überbrückenden Segments weitergeleitet. &lt;br /&gt;
** Das &amp;quot;R/G/B-Ausgangssignal&amp;quot; für den ersten Buchstaben nach dem &amp;quot;Leerzeichen&amp;quot; wird wieder mit den Draht-/Lötbrücken zugeführt, die auch vor Wörtern verwenden werden.&lt;br /&gt;
&lt;br /&gt;
Für jedes Wort wird (irgendwo) COM vom den Ausgängen OUTx zugeleitet.&lt;br /&gt;
&lt;br /&gt;
==== LED-Streifen: Zusammenfassung Löten ====&lt;br /&gt;
&lt;br /&gt;
* Widerstände sind immer am Anfang eines Wortes. Individuelle Werte für R/G/B je nach Länge des Wortes.&lt;br /&gt;
* Lötzinnbrücken sind&lt;br /&gt;
** am Anfang eines Wortes bei B&lt;br /&gt;
** am Anfang einer Streifenplatine bei B (hier sind keine Drahtbrücken nötig)&lt;br /&gt;
** am Ende eines Wortes von LED1/LED2/LED3 auf COM&lt;br /&gt;
** in der Mitte eines Wortes vor allen LED (außer der Ersten) zum Ersatz des Vorwiderstandes&lt;br /&gt;
** Zusätzlich zum Überbrücken von &amp;quot;Leerstellen&amp;quot; nur bei COM vor und nach dem Segment (da, wo zwischen zwei Zeichen sonst alle 4 Lötbrücken gesetzt werden)&lt;br /&gt;
* Drahtbrücken an der Platinenunterseite gibt es:&lt;br /&gt;
** vor einem neuen Wort zu R und G&lt;br /&gt;
** nach einer &amp;quot;Leerstelle&amp;quot; zu R und G (= identisch zu 1)&lt;br /&gt;
* Für jedes Wort wird (irgendwo) COM vom den Ausgängen OUTx zugeleitet.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
=== Sammelbestellung LED-Platinen ===&lt;br /&gt;
Es werden folgende 3 Pakete angeboten:&lt;br /&gt;
* Paket 1 (Uhr) - 66,20Eur : 1 Single-LED-Platine, 100 RGB-PLCC6-LEDs und 155 SMD-Widerstände&lt;br /&gt;
* Paket 2 (Ambilight) - 17,00Eur : 4 Streifenplatinen, 32 RGB-PLCC6-LEDs und 45 SMD-Widerstände&lt;br /&gt;
* Paket 3 (Uhr - alte Version) - 52,20Eur : 11 Streifenplatinen, 100 RGB-PLCC6-LEDs und 155 SMD-Widerstände&lt;br /&gt;
&lt;br /&gt;
Für das neue SingleBoard (Paket 1) werden zusätzliche Bauteile benötigt. Diese sind in einem eigenen Reichelt Warenkorb zusammen gestellt:&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;gt;&amp;gt; http://www.reichelt.de/?ACTION=20;AWKID=847662;PROVID=2084&lt;br /&gt;
&lt;br /&gt;
Und folgende Einzelpositionen:&lt;br /&gt;
* RGB-PLCC6-LED einzeln - 0,35Eur&lt;br /&gt;
* Streifenplatine einzeln - 1,00Eur&lt;br /&gt;
* Single-LED-Platine einzeln - 25,00Eur&lt;br /&gt;
* Zwischenboden mit Ambilightausfräsung (MDF 19mm gefräst) - 37,50Eur&lt;br /&gt;
* Zwischenboden ohne Ambilightausfräsung (MDF 19mm gefräst) - 37,50Er&lt;br /&gt;
* programmierter ATMega168 - 3,55Eur&lt;br /&gt;
&lt;br /&gt;
Der Versand erfolgt bei nur LEDs / Widerständen / ATMega als MaxiBrief mit Einschreiben.&lt;br /&gt;
* innerhalb BRD (ohne Inseln) - 4,00Eur&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Der Versand mit Streifenplatinen erfolgt als kleines Paket:&lt;br /&gt;
* innerhalb BRD (ohne Inseln) - 5,20Eur&lt;br /&gt;
* Österreich und Schweiz - 9,00Eur&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Der Versand mit Zwischenboden (max 8 Böden pro Paket) oder Single-LED-Platine wird als Paket versendet:&amp;lt;br&amp;gt;&lt;br /&gt;
* innerhalb BRD (ohne Inseln) - 6,50Eur&amp;lt;br&amp;gt;&lt;br /&gt;
* Österreich - 16,00Eur&amp;lt;br&amp;gt;&lt;br /&gt;
* Schweiz - 27,50Eur&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Es fallen jeweils nur die höheren Versandkosten an.&lt;br /&gt;
&lt;br /&gt;
Werden mehrere Pakete bestellt, können die tatsächlichen Versandkosten von den hier gezeigten Versandkosten abweichen. Diese ist dann von der bestellten Menge und dem Gewicht abhängig.&lt;br /&gt;
&lt;br /&gt;
Bei Interesse bitte per PN melden (Benutzer [http://www.mikrocontroller.net/user/show/wawibu wawibu])&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Zeitplanung&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;table border=1&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;Datum&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Aktion&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;bis 15.Februar 2015&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Sammeln der Bestellungen&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;17.Februar 2015&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Bestellung geht raus&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;~06.März 2015&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Anlieferung bei mir&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;ab 13.März 2015&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Versand&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Als Alternative können die Pakete 1, 2 und 3 auch ohne Widerstände bei mir bestellt werden. Es werden dann folgende Warenkörbe benötigt:&lt;br /&gt;
&lt;br /&gt;
Widerstands-Warenkörbe bei Reichelt:&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;pro WordClock&#039;&#039;&#039;: https://secure.reichelt.de/?;ACTION=20;LA=5010;AWKID=292199;PROVID=2084&lt;br /&gt;
&amp;lt;br&amp;gt;&#039;&#039;&#039;zusätzlich fürs Ambilight&#039;&#039;&#039;: https://secure.reichelt.de/?;ACTION=20;LA=5010;AWKID=292202;PROVID=2084&lt;br /&gt;
&amp;lt;br&amp;gt;&#039;&#039;&#039;LEDs&#039;&#039;&#039; gibt es zB bei LED-Tech: http://www.led-tech.de/de/Leuchtdioden/SMD-LEDs/PLCC6-Superbright-RGB-SMD--5.0x5.0mm--LT-1178_1_2.html&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;Die LEDs von LED-Tech haben in der Zwischenzeit eine andere PinBelegung und sind somit nicht 1:1 nutzbar. Der R und B Kanal sind dort anders als bei den LEDs aus der Sammelbestellung. Werden die LEDs von LED-Tech verwendet, muss darauf geachtet werden, das diese beiden Kanäle vertauscht sind!&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== Anschluss eines DCF77-Moduls ==&lt;br /&gt;
&lt;br /&gt;
Der Anschluss eines DCF77-Moduls ist optional. Wird ein DCF77-Modul angeschlossen, kann mittels einer LED der DCF77-Empfang angezeigt werden. Die LED blinkt dann im Sekundenrhytmus und zeigt direkt die empfangenen DCF77-Impulse. Der Empfang wird kurze Zeit nach dem Einschalten aktiviert bzw. jede Stunde wiederholt. &lt;br /&gt;
&lt;br /&gt;
Die DCF77-LED kann folgendermaßen angeschlossen werden:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;TODO&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Bei Anschluss des DCF77-Moduls von Reichelt ist folgendes zu beachten:&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
*Es sollte direkt auf den Lötaugen des Reichelt-DCF77-Moduls ein Abblock-Kondensator von 100nF zwischen den Pins +UB und GND aufgelötet werden&lt;br /&gt;
&lt;br /&gt;
*Der Eingang PON muss offen bleiben - entgegen den (falschen) Angaben im Reichelt Datenblatt!&lt;br /&gt;
&lt;br /&gt;
*Das DCF77-Modul von Reichelt braucht eine Synchronisierungszeit von mindestens 10 Sekunden. Erst dann arbeitet der Empfänger.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Beim Anschluss des Conrad-Moduls ArtNr. 641138 ist folgendes zu beachten:&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
*Es muss der nicht-invertierte Open-Collector-Ausgang Pin 3 als Signal an die WordClock angeschlossen werden.&lt;br /&gt;
&lt;br /&gt;
Ein Max232 der zur Kontrolle angeschlossen ist, kann den DCF Empfang stören. Ohne Max232 verbessert sich der Empfang deutlich.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Da einige berichtet haben, dass der DCF-Empfang bei den Reichelt-Modulen oftmals gestört ist, hier ein Tipp von Carsten Wille, wie man den Empfang durch Hinzufügen weniger Bauteile wesentlich verbessern kann:&#039;&#039;&#039; [http://www.mikrocontroller.net/topic/156661?goto=1929382#1929382 Beitrag: Brauche Hilfe beim Bau einer Uhr]&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Für Nutzer eines Pollin DCF77 Moduls ist aufgrund des nicht belastbaren Ausgangs eine kleine Hilfsplatine empfehlenswert. Siehe dazu auch [http://www.mikrocontroller.net/topic/156661?goto=3465678#3465682 Beitrag: Brauche Hilfe beim Bau einer Uhr] Platinen sind vom Beitragsautor beziehbar&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Software =&lt;br /&gt;
Da die Software für die neuere Variante mit der gemeinsamen LED/Steuerplatine die gleiche ist, bitte da nachschauen, was Software, Downloads und Bugs angeht um.&lt;br /&gt;
https://www.mikrocontroller.net/articles/Word_Clock_Variante_1#Software&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Download ==&lt;br /&gt;
&lt;br /&gt;
Siehe voriger Abschnitt.&lt;br /&gt;
&lt;br /&gt;
https://www.mikrocontroller.net/articles/Word_Clock_Variante_1#Download&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
= Mechanik =&lt;br /&gt;
&lt;br /&gt;
Folgende Anleitung gilt für die Frontplatte aus Plexiglas und die Word Clock mit Ambilight, d. h. die Wandmontage erfolgt ohne Rahmen/Bilderrahmen.&lt;br /&gt;
Beim Bau meiner Word Clock habe ich definitiv mehr Zeit über mechanische Lösungen nachgedacht, als über die Elektronik/Programmierung. Vor allem die Recherche geeigneter Bezugsquellen hat Zeit gekostet und die Lieferzeit hat den Bau der Uhr sehr verzögert. Ich hoffe, dass diese Anleitung hilft, etwas Zeit zu sparen.&lt;br /&gt;
&lt;br /&gt;
== Vorbereiten der Zwischenplatte == &lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
Datei:1-mdf-spachtel.jpeg&lt;br /&gt;
Datei:2-gespachtelte-kante.jpeg|Die Seitenfläche nach den Auftragen der Spachtelmasse.&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Damit die Zwischenplatte optisch gut zur Frontplatte passt, muss diese lackiert werden. Im vorliegenden Vorschlag wurde die Zwischenplatte an den Seiten mit wasserbasiertem Acryllack schwarz lackiert. &lt;br /&gt;
&lt;br /&gt;
Die MDF Platte kann grundiert oder gespachtelt werden. In diesem Beispiel wurde die Platte mit  &amp;quot;Holz und MDF Spachtel” (z. B. Decotric, siehe Amazon) vorbehandelt. Eine geeignete Grundierung wäre z. B. “MDF Grundierung Grund Vorbehandlung” von Molto. Die Grundierung ist leichter zu verarbeiten. Mit der Spachtelmasse kann man allerdings unerwünschte Löcher verschließen. Die Masse muss einige Stunden aushärten, bevor sie geschliffen werden kann. Am besten beginnt man daher den Bau mit der Word Clock mit dieser Vorarbeit. In der Wartezeit kann die Elektronik zusammengelötet werden. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
Datei:3-Kante-sw-gestrichen.jpeg|Die Zwischenplatte sollte vor der Montage der Elektronik vorbereitet werden. Der Mülleimer ist ein perfekter und stabiler Halter während des Streichen: einfach zu drehen, man macht sich die Finger nicht voll Farbe und man kann alle Seiten auf einmal streichen.&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nach dem Aushärten wurde die Oberfläche mit Schmirgelpapier geschliffen (P240) und anschließend dreimal lackiert. Die erste und zweite Lackschicht wurde jeweils mit P400 Schmirgelpapier geglättet. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
Datei:4-platine-fertig-in-hand.jpeg|&lt;br /&gt;
Datei:5-platine-fertig-in-zwischenplatte.jpeg|&lt;br /&gt;
Datei:6-platine-fertig-in-zwischenplatte-ohne-fraesung.jpeg|&lt;br /&gt;
Datei:7-platine-fertign-in-zwischenplatten-mit-fraesung.jpeg|&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Leider ist mir beim Einlöten der Komponenten nicht aufgefallen, dass die Batterie und IC2 (7805) sehr hoch sind. Da ich die Beinchen der Batterie schon zu kurz abgeschnitten hatte, konnte ich die Batterie nicht mehr einfach umbiegen, so dass dieses Problem nur noch durch angelötete Kabel zu lösen war. Die Batterie wird nun einfach neben die Steuerplatine gelegt. Den 7805 konnte ich durch Umbiegen etwas in seiner Höhe reduzieren. Der Platz für den umgebogenen 7805 wurde mit einer Fräse im Multitool/Dremel geschaffen.&lt;br /&gt;
&lt;br /&gt;
Im Nachhinein betrachtet hätte ich mir diese Mühe sparen können, da durch die Befestigung mit dem Spiegelbefestigungsset (siehe unten) die Höhe kein Problem mehr ist. Ebenfalls etwas zu spät habe ich im Forum Bilder einer Lösung gesehen, bei der die Ausfräsung für Batterie und 7805 in Richtung des äußeren Randes und nicht wie bei mir in Richtung der LEDs gelöst worden war. Im äußeren Rahmen ist genug Platz für eine Ausfräsung, die es erlaubt, die Batterie und den 7805 horizontal einzulöten.&lt;br /&gt;
&lt;br /&gt;
== Befestigung der Frontplatte (“Plexiglasvariante”) an der Zwischenplatte ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
Datei:8-holzbohrer-8mm-mit-tiefenmarkierung.jpeg|8 mm Holzbohrer mit improvisierter Tiefenmarkierung.&lt;br /&gt;
Datei:9-bohrung-fuer-magnet-1.jpeg|Fertige Bohrung. An der Kante unter dem Loch sieht man die Spachtelmasse. Während die Spachtelmasse noch trocknet, können bereits die Magnete montiert werden.&lt;br /&gt;
Datei:10-bohrung-fuer-magnet-2.jpeg|Zentral wird eine 2 mm Bohrung ergänzt, damit der Magnet bei Fehlpositionierung wieder ausgestossen werden könnte.&lt;br /&gt;
Datei:11-bohrung-fuer-magnet-3.jpeg|Zur Veranschaulichung: der Magnet könnte mit dem 2 mm Bohrer ausgestossen werden. &lt;br /&gt;
Datei:12-magnet-1.jpeg|&lt;br /&gt;
Datei:13-magnet-mit-werkzeug.jpeg|Die Magnete habe eine ganz gute Presspassung. Mit Hilfe eines Zwischenhölzchens zum Schutz des Magneten können sie in das Loch gehämmert werden.&lt;br /&gt;
Datei:14-magnet-2.jpeg|&lt;br /&gt;
Datei:15-magnet-3.jpeg|&lt;br /&gt;
Datei:16-magnet-4.jpeg|&lt;br /&gt;
Datei:17-magent-mit-kleinem-magnet-1.jpeg|Der 8 mm x 4 mm Magnet wird 0.5 mm unter die Oberfläche der Zwischenplatte gepresst, damit auch der 8 mm x 0.5 mm Magnet flächenbündig befestigt werden kann.&lt;br /&gt;
Datei:18-magent-mit-kleinem-magnet-2.jpeg|Hier ist der 8 mm x 0.5 mm Magnet in der Bohrung. Damit sich der 8 mm x 0.5 mm Magnet durch Verschieben von dem 8 mm x 4 mm Magneten lösen lässt, muss die Kante der Bohrung abgeschrägt werden.&lt;br /&gt;
Datei:19-anschraegung-fuer-kleinen-magnet.jpeg|Durch die Abschrägung am Rand der Bohrung (Universalmesser, Taschenmesser oder Dremel-Fräse) gleitet der 8 mm x 0.5 mm Magnet leicht aus der Befestigung und läßt sich so mit wenig Kraft vom 8 mm x 4 mm Magnet lösen.&lt;br /&gt;
Datei:20-alu-isolation-magnet-vor-klebung.jpeg|Vor dem Kleben wird die Holzoberfläche und der 8 mm x 4 mm Magnet mit Hilfe einer dünnen Folie (fixiert durch den 8 mm x 0.5 mm Magnet) isoliert (hier: Haushalts-Alu-Folie). Der Kleber wird sehr dünn aufgetragen, um Überschüsse zu vermeiden.&lt;br /&gt;
Datei:21-fertig-geklebt-magnete-frontplatte.jpeg|Rückseite der Frontplatte nach der Klebebefestigung der vier 8 mm x 0.5 mm Magneten. Alle vier Magnete wurden in einem Arbeitsgang geklebt. Die Ausrichtung der Plexiglasscheibe erfolgte von Hand. Die Oberfläche wurde mit einem alten Handtuch geschützt und mit Gewicht beschwert, während der Kleber auspolymerisierte.&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Für die Befestigung der Frontplatte an der Zwischenplatte wurden im Forum schon einige Lösungen besprochen.&lt;br /&gt;
&lt;br /&gt;
Man kann die Frontplatte z. B. mit Magneten befestigen oder direkt auf die Zwischenplatte kleben.&lt;br /&gt;
&lt;br /&gt;
Als Kleber wird meist ein Zweikomponentenkleber auf Epoxidharzbasis verwendet (z. B. Uhu Plus Sofortfest, Uhu Plus schnellfest, Uhu Plus Endfest 300...), da dieser keine Lösungsmittel enthält, die Plexiglas oder die Tinte des Frontplattendrucks anlösen. Im Forum wird bemerkt, dass der Kleber dünn aber vollflächig aufgetragen wurde. &lt;br /&gt;
&lt;br /&gt;
Im Folgenden wird eine einfache Methode beschrieben, die Frontplatte mit Magneten zu befestigen.  Diese Methode hat den Vorteil, dass man die empfindliche Frontplatte abnehmen kann, wenn man an der Word Clock arbeitet. Die Magnete können ohne aufwendige Werkzeuge befestigt werden. &lt;br /&gt;
&lt;br /&gt;
Ich habe mich für runde Magnete entschieden, weil man diese mit einer einfachen Bohrung befestigen kann. Die Haftkraft von vier 8 mm x 4 mm Magneten reicht aus, die Plexiglas-Frontplatte sicher zu tragen. Ich habe die Haftkraft bewusst nicht überdimensioniert, da ich Bedenken habe, dass starke Magnete beim Abnehmen der Frontplatte die Farbschicht von der Plexiglasplatte beschädigen könnten. &lt;br /&gt;
&lt;br /&gt;
Ich verwende zwei Magnete. Der dickere Magnet wird in der Zwischenplatte versenkt. Der dünnere Magnet wird an die Frontplatte geklebt. Der dünnere Magnet hat den gleichen Durchmesser wie der dickere Magnet, er ist jedoch nur 0.5 mm dick. &lt;br /&gt;
&lt;br /&gt;
Ein wesentliches Argument für die Verwendung von zwei Magneten anstelle der im Forum beschriebenen Lösung “1 Magnet und eine angeklebte Beilagscheibe” ist die Positioniergenauigkeit. Bei meinen Versuchen mit der Kombination Metall + Magnet hatte ich immer das Problem, dass der Magnet leicht seitlich verschoben werden konnte. Dies ist bei der Kombination Magnet + Magnet nicht möglich. Der flache Magnet wurde ebenfalls bewusst ausgewählt. Der Grund ist, dass zwei aneinander haftende Magnete nur schwer in axialer Richtung getrennt werden können. Es ist dagegen relativ einfach, die beiden Magneten durch seitliche Verschiebung zu trennen. Um die Plexiglasscheibe mit angeklebten Magneten seitlich verschieben zu können, dürfen die Magnete, die auf das Plexiglas geklebt werden, nicht zu hoch sein. Da die Plexiglasplatte ohne Luftspalt bündig auf der Zwischenplatte aufliegen soll, muss der Platz für den 0.5 mm Magnet auf der Seite der Zwischenplatte geschaffen werden. &lt;br /&gt;
&lt;br /&gt;
Theoretisch müsste man für beide Magneten in die Zwischenplatte ein 8 mm Loch mit einer Tiefe von 0.5 mm + 4.0 mm = 4.5 mm bohren. Damit der 0.5 mm dicke Magnet durch Verschieben entfernt werden kann, wird der Rand der Bohrung so angeschrägt, dass der Magnet seitlich verschoben werden kann. &lt;br /&gt;
&lt;br /&gt;
Da ich keine Bohrständer habe, wurde die Bohrungen freihändig mit einem 8 mm Holzbohrer im Akkuschrauber ausgeführt. Mit Hilfe eines Klebestreifens wurde die ungefähre Bohrtiefe festgelegt. &lt;br /&gt;
Im Zentrum der 8 mm Sacklochbohrung wurde zusätzlich eine 2 mm Bohrung durch die Zwischenplatte angefertigt. In diese kann man von der Unterseite mit den 2 mm Bohrer stecken und bei Bedarf den Magneten wieder ausstoßen. Ursprünglich dachte ich, den 8 mm x 4 mm Magneten festkleben zu müssen. Die Passgenauigkeit war jedoch so gut, dass ich den 8 mm x 4 mm Magneten einfach in die Bohrung pressen konnten (mit Hilfe eines kleinen Hölzchens und eines kleinen Hammers). &lt;br /&gt;
&lt;br /&gt;
Der 8 mm x 0.5 mm Magnet wird gemeinsam mit dem 8 mm x 4 mm Magnet so in die Bohrung gepresst, dass seine Oberfläche mit der Zwischenplatte bündig abschließt. Anschließend wird der kleine Magnet mit einem spitzen Gegenstand (z. B. Taschenmesser) entfernt und der Rand abgeschrägt (Dremel und Schleifsteinchen bzw. Fräser). &lt;br /&gt;
&lt;br /&gt;
Vor der Klebebefestigung an der Plexiglasscheibe wird das Holz und der 8 mm x 4 mm Magnet mit einer dünnen Folie vor Kleberüberschuss geschützt. In meinem Fall habe ich Haushalts-Alu-Folie verwendet. Für die Klebung werden die 8 mm x 0.5 mm Magneten an dem fest gepressten 8 mm x 4 mm Magneten fixiert. Der Kleber wird dünn auf die Oberfläche des 8 mm x 0.5 mm Magneten aufgetragen, die Plexiglasscheibe korrekt positioniert und mit Hilfe von Gewichten während der Aushärtphase fixiert. Ich habe alle Magnete auf einmal geklebt. &lt;br /&gt;
&lt;br /&gt;
Die einzelnen Arbeitsschritte sind auf den Bildern zu erkennen.&lt;br /&gt;
&lt;br /&gt;
=== Bezugsquelle der Magnete ===&lt;br /&gt;
&lt;br /&gt;
Neotexx, Herweghstr. 11, 12487	Berlin ( http://www.neomagnete.com )&lt;br /&gt;
&lt;br /&gt;
Folgende Magnete wurden verwendet:&lt;br /&gt;
&lt;br /&gt;
* Cylinder 8x0.5 mm, Dimension: D8x0.5mm, NdFeB Magnet in N48 (1.42 Tesla), Magnetized Direction: through 0.5mm (axial), Coating: Nickel, item # Z-008-000.5-N &lt;br /&gt;
* Cylinder 8x4 mm, Dimension: D8x4mm, NdFeB Magnet in N48 (1.42 Tesla), Magnetized Direction: through 4mm, Coating: Nickel, item # Z-008-004-N&lt;br /&gt;
&lt;br /&gt;
Wer den Mindestbestellwert (10€) und die vergleichsweise hohen Versandkosten (5,50€) scheut, kann mir (User [http://www.mikrocontroller.net/user/show/Stoerte Stoerte]) eine PN-Schicken. Ich habe etwas großzügiger bestellt und würde die übrigen Magnete zu folgenden Paketen (Paket 2 für den Fall, dass man eine zweite Frontplatte zum Wechseln bestücken will) abgeben:&lt;br /&gt;
&lt;br /&gt;
* Paket 1: 4x D8x4mm + 4x D8x0.5mm = 4,50€ + 1,50€ Versand&lt;br /&gt;
* Paket 2: 4x D8x4mm + 8x D8x0.5mm = 6,00€ + 1,50€ Versand&lt;br /&gt;
&lt;br /&gt;
== Befestigung der Platinen ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
Datei:22-bueroklammer-pin.jpeg|Befestigungspin aus Büroklammerdraht.&lt;br /&gt;
Datei:23-led-streifen-mit-pins.jpeg|Die Pins werden in der Ausfräsung verkeilt und fixieren die LED-Streifenplatinen, können aber jederzeit wieder leicht gelöst werden.&lt;br /&gt;
Datei:24-min-platine-mit-pin.jpeg|Auch die Kabel und Minuten-LED-Platinen können mit Pins fixiert werden.&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
An der Zwischenplatte müssen folgende Komponenten befestigt werden:&lt;br /&gt;
&lt;br /&gt;
* Steuerelektronik&lt;br /&gt;
* LED-Platinen Word Clock&lt;br /&gt;
* LED-Platinen Ambilight&lt;br /&gt;
* Netzteil&lt;br /&gt;
* DCF77-Modul&lt;br /&gt;
* Kabel&lt;br /&gt;
&lt;br /&gt;
Die einfachste Lösung ist die Klebebefestigung mit Heißkleber oder einem anderen geeigneten Kleber. Die Klebemethode hat jedoch den Nachteil, dass die Klebung nicht so leicht wieder gelöst werden kann. Aus diesem Grund wurde eine reversible Alternative gesucht. &lt;br /&gt;
&lt;br /&gt;
Die vorgeschlagene Methode wirkt zwar auf den ersten Blick nicht sehr professionell, funktioniert aber sehr gut. So musste ich einige Male Korrekturen an den LED Platinen vornehmen, weil sich z. B. bei meinen „Manipulationen“ Kabel gelöst haben. &lt;br /&gt;
&lt;br /&gt;
Die Lösung ist relativ einfach. Ein harter Draht (in meinem Fall 0,8 mm dicker Federdraht, wird z. B. bei Kieferorthopäden verwendet, als Alternative kann man aber auch Büroklammerdraht verwenden) wird etwas länger abgezwickt, als die Ausfräsung für die Platine oder die Kabel ist. Der Draht kann in die relativ weiche MDF Platte so verkeilt werden, dass die Platine oder Kabel gut halten. Es ist sinnvoll, den Draht an beiden Enden abzuzwicken. Dadurch entstehen zwei scharfe Enden, die sich leichter im MDF verankern lassen. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
Datei:25-dcf-77-geklebt.jpeg|DCF-77 Modul und Ferritantenne. Befestigung mit Heisskleber.&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Als Befestigung für die Ambilight-LED Streifen sowie  das DCF-77 Modul habe ich leider keine bessere Lösung gefunden, als die Befestigung mit Heißkleber. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
Datei:26-netzteil.jpeg|&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die Steuerplatine wird durch die angeschlossenen Kabel sicher in ihrer Position gehalten. &lt;br /&gt;
&lt;br /&gt;
Das modifizierte Conrad-Netzteil hält durch Klemmpassung in der Aussparung. Achtung: an der Unterseite der Platine liegen die 220 V Anschlüsse frei. Das ist kein Problem, sobald die Uhr an der Wand befestigt ist. Um sicherzustellen, dass niemand aus Versehen die Platine von der Seite berühren kann, wurde das Oberteil des Gehäuses als Berührschutz belassen. Beachten Sie dies bitte bei der Montage. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
Datei:27-uhr-wand-mit-ambilight.jpeg|&lt;br /&gt;
Datei:28-uhr-wand-ohne-ambilight.jpeg|&lt;br /&gt;
Datei:29-uhr-wand-schraeg-1.jpeg|&lt;br /&gt;
Datei:30-uhr-wand-schraeg-2.jpeg|&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Diese Lösung ist nur von Relevanz, wenn die Stromversorgung direkt hinter der Uhr möglich ist. Dann sieht die Lösung allerdings sehr elegant aus:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
Datei:31-netzteil-1.jpeg|&lt;br /&gt;
Datei:32-netzteil-2.jpeg|&lt;br /&gt;
Datei:33-netzteil-3.jpeg|&lt;br /&gt;
Datei:34-netzteil-4.jpeg|&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Als Vorbereitung musste das Netzteilgehäuse geöffnet werden. Folgende Bilder zeigen den Innenaufbau und sollen so das Öffnen des Gehäuses erleichtern helfen. Das Gehäuse ist fest verklebt. Der Kleber kann nicht aufgesprengt werden (vielleicht würde es gehen, wenn man den Kleber mit einer Heißluftpistole ausreichend erwärmen würde ?). Ich habe mich für die Lösung entschieden, das Gehäuse entlang der Klebenaht mit einer Puk-Metallsäge aufzusägen, da ich noch nicht wusste, wie das Netzteil aufgebaut ist. Heute würde ich nur noch die Steckerpins absägen. Als Alternative zu dieser brachialen Methode habe ich geprüft, ob man ein Netzteil selbst bauen könnte. Ich bin aber zu den Schluss gekommen, dass es nicht wirklich möglich ist, ein eigenes Netzteil so preiswert und auch so klein wie das Conrad-Netzteil zu bauen.&lt;br /&gt;
&lt;br /&gt;
== Verkabelung ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
Datei:35-starre-draehte.jpeg|Für den ersten Versuch hatte ich Einzelader-Schaltdraht direkt auf die LED-Streifen gelötet. Leider neigte der Schaltdraht dazu, an den ungünstigsten Stellen zu brechen, wenn ich die Platinen bewegte, was allein schon zum Löten erforderlich war. &lt;br /&gt;
Datei:36-fliegender-aufbau.jpeg|Fliegender Aufbau... für den ersten Systemtest.&lt;br /&gt;
Datei:37-stecker-an-led-platine.jpeg|Erst die Verwendung von abgewinkelten Steckverbindern (Stiftleiste RM 2,54, gewinkelt Rastermaß: 2.54 mm, in Kombination mit der passenden Buchsenleiste RM 2,54 Rastermaß: 2.54 mm, Alternative: Stiftleiste RM 2,54, gewinkelt Rastermaß: 2.54 mm Polzahl: 3, 72645 BKL Electronic) vereinfachte die Montage der RGB-Verbindungen drastisch. &lt;br /&gt;
Datei:38-verkabelung-1.jpeg|Zusätzlich zu den Steckverbindern wurden keine starren Einzelkabel mehr verwendet, sondern flexible Drähte (bei mir: recycelte IDE-Festplattenkabel, alternativ: Flachbandkabel, RM 1,27; Polzahl: 50, 0.09 mm², Grau Sterner Kabel, ich werde beim nächsten Mal dieses Kabel testen: Flachbandkabel 3 x 0.14 mm², Gelb, Rot, Grün,  Sterner Kabel, Conrad Best.-Nr.: 605819 - 62).&lt;br /&gt;
&lt;br /&gt;
Auch für die Anschlüsse der Kabel von den Buchsensteckern K7 und K8 an die LED-Streifenplatinen waren die Steckverbinder sehr hilfreich. Die Einzelstecker habe ich, weil ich keine Alternativen hatte/kannte, von Buchsenleisten abgetrennt, was doch recht aufwendig war. Kennt jemand eine professionellere Lösung (Name, Bezugsquelle?)&lt;br /&gt;
Datei:39-verkabelung-2.jpeg|Sobald die Funktion erfolgreich getestet wurde, können die Kabel eingekürzt und schöner verlegt werden. Eigentlich wollte ich das Klebeband durch Heisskleber ersetzen. Aber nichts ist bekanntlich beständiger als ein Provisorium.&lt;br /&gt;
Datei:40-ir-und-ldr.jpeg|Der LDR und der Infrarot-Empfänger werden an der Unterseite der Word Clock auf leeren Plätzen der Amibilight-Platine befestigt. Für den IR-Empfänger reicht doppelseitiges Klebeband, der LDR kann mit einfachem Klebeband an den Beinchen fixiert werden. &lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
P.N. (http://www.mikrocontroller.net/topic/156661#2511143) hat eine elegante Lösung zur Befestigung des LDR und TSOP vorgeschlagen:&lt;br /&gt;
&lt;br /&gt;
&amp;quot;- Der TSOP sitzt bei mir hinter dem &amp;quot;S&amp;quot; (&amp;quot;WACHTZEHNRS&amp;quot;) und ist direkt&lt;br /&gt;
auf diese Streifenplatine eingelötet. Davor habe ich natürlich die&lt;br /&gt;
PWM-Leiterbahnen des letzten Feldes durchtrennt und die 3 Beinchen auf&lt;br /&gt;
Stiftleisten am Ende der Platine geroutet. Geht bei dem Layout ganz gut.&lt;br /&gt;
Der IR-Empfang ist auch durch die Frontplatte einwandfrei&lt;br /&gt;
&lt;br /&gt;
- Der LDR sitzt hinter dem &amp;quot;M&amp;quot; (&amp;quot;TGNACHVORJM&amp;quot;) und wurde ebenso an der&lt;br /&gt;
Steifenplatine befestigt und auf eine Stiftleiste gelegt. Zusätzlich hat&lt;br /&gt;
er noch einen &amp;quot;Schirm&amp;quot; aus einer Lochrasterplatine gegen Streulicht von&lt;br /&gt;
angrenzenden Buchstaben erhalten&amp;quot;&lt;br /&gt;
&lt;br /&gt;
== Wandbefestigung der Uhr ==&lt;br /&gt;
&lt;br /&gt;
[[Datei:41-spiegelblech-1.jpeg|miniatur|Minimal Montageset: Exzenterscheiben (oben), Spiegel-Haftmagnet (links und rechts aussen), Haftblech mit Kieme]]&lt;br /&gt;
[[Datei:42-spiegelblech-2.jpeg|miniatur|Das Haftblech mit Kieme wird mit der Metallsäge getrennt und Bohrungen zur Befestigung mit Schrauben werden ergänzt (rechts Original, links Modifikation)]]&lt;br /&gt;
[[Datei:43-spiegelhalterung-montiert.jpeg|miniatur|Fertig montierte Haftbleche]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Die Word Clock kann wie jedes Bild an der Wand befestigt werden. Eine elegante, bewährte und gut funktionierende Variante stellt die Befestigung mit einer sog. Spiegelbefestigung mit Haftmagneten dar. Die Komplettsets sind meist ziemlich teuer und die Befestigungsbleche sind für die Word Clock viel zu groß. &lt;br /&gt;
&lt;br /&gt;
Eine preisgünstige Lösung findet man bei:&lt;br /&gt;
&lt;br /&gt;
Leha-Technik&amp;lt;br/&amp;gt;&lt;br /&gt;
Burger Straße 63 A&amp;lt;br/&amp;gt;&lt;br /&gt;
42859 Remscheid&amp;lt;br/&amp;gt;&lt;br /&gt;
[http://www.leha.de www.leha.de]&lt;br /&gt;
&lt;br /&gt;
Hier kann man die Einzelkomponenten kaufen. Wichtig sind nur die Exzenterscheiben (2 Stück), die Haftmagneten (2 Stück) und die Haftbleche mit Kieme (2 Stück). Die Schrauben und Dübel sollten sich in der Bastelkiste finden (ich habe 6er Dübel, mit 4 x 50 mm Schrauben verwendet). Die Exzenterscheiben haben einen entscheidenden Vorteil. Wenn der Bohrer etwas verläuft oder wenn schon die Messung ungenau ist, kann man die Befestigung mit der Exzenterscheibe immer noch schön waagerecht ausrichten. &lt;br /&gt;
&lt;br /&gt;
Theoretisch könnte man auf die Magneten verzichten. In meinem Fall war jedoch hinter der Uhr eine Stromversorgung und die Kabel waren etwas steifer als gewünscht. Das hatte zur Folge, dass die Uhr von den Kabeln von der Wand abgehoben wurde und somit leicht schräg stand. Die Magneten haben dieses Problem sehr elegant gelöst. &lt;br /&gt;
&lt;br /&gt;
Das Haftblech mit Kieme wurde mit einer Eisensäge geteilt. Der Teil mit der Kieme ist mit 2.5 cm breit genauso breit, wie der Steg für die Befestigung. Da ich im Zusammenhang mit MDF kein Vertrauen zu dem Kleber hatte, wurden zwei Bohrungen ergänzt (3,5 mm Metallbohrer, improvisiertes Versenken der Schrauben mit einem 6 mm Metallbohrer, ich habe keinen speziellen Versenkbohrer). Das Blech wurde dann geklebt und mit 3 x 20 mm Spax-Schrauben befestigt. Die MDF Platte wurde vorher mit einem 2 mm Bohrer vor gebohrt. &lt;br /&gt;
&lt;br /&gt;
Der untere, abgetrennte Teil des Haftbleches wurde für den Magneten verwendet. Seine Breite passte ebenfalls perfekt zu den Befestigungsstegen. Auch diese Bleche wurden zusätzlich mit Schrauben befestigt.&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
! Anzahl x VPE !! Artikel !! Art.Nr.&lt;br /&gt;
|-&lt;br /&gt;
| 2 x Stück || Haftblech, mit Kieme - 70 x 70 mm (selbstklebend) 3 kg || 5208608&lt;br /&gt;
|-&lt;br /&gt;
| 2 x Stück || Spiegel-Haftmagnet || 5208601&lt;br /&gt;
|-&lt;br /&gt;
| 2 x Stück || Exzenterscheibe || 5208602&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
= Das erste Mal einschalten =&lt;br /&gt;
&lt;br /&gt;
=== LED-Streifen ===&lt;br /&gt;
&lt;br /&gt;
Nach dem Verlöten aller Bauteile der LED-Streifen sollten diese vor dem endgültigen Verbau noch geprüft werden:&lt;br /&gt;
&lt;br /&gt;
# Prüfung der drei PWM-Kanäle und der Steuerleitungen auf gegenseitige Kurzschlüsse&lt;br /&gt;
# Funktionsprüfung der LED-Streifen mittels direkter Versorgung durch ein Netzteil (PWM R/G/B an GND, OUT an 13.6V): Hierbei nacheinander die einzelnen Farben der jeweiligen Wörter anschließen und ggf. nacharbeiten, falls es &#039;mal dunkel bleiben sollte&lt;br /&gt;
&lt;br /&gt;
-&amp;gt; &amp;quot;Beginner-Tipp&amp;quot;: Die mangelhaften Lötstellen findet man am besten, wenn man mit dem Diodentest des Multimeters die Lötpunkte der angrenzenden LEDs berührt&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Steuerplatine ===&lt;br /&gt;
&lt;br /&gt;
Wenn alle Bauteile verlötet sind, sollten zur ersten Prüfung alle Sockel noch leer bleiben. Wer ein entsprechendes Netzteil hat, sollte den Strom auf ca. 50mA begrenzen. Wer dies nicht kann, sollte wenigstens ein (im Regelfall auf 200mA) abgesichertes Netzteil dazwischen schalten. Zum Bestücken der einzelnen Bauteile sollte stets die Spannungsversorgung unterbrochen werden.&lt;br /&gt;
&lt;br /&gt;
# Prüfen der Spannungsversorgung auf Kurzschluss&lt;br /&gt;
# Anlegen der Versorgungsspannung (15V), am Spannungsregler sollten nun 5V anliegen. Tipp: Minus ist ganz außen, Plus ist die zweite Befestigung von außen. Kann man anhand der Unterseite der Platine kontrollieren. Im Schaltplan ist das bei der Belegung von KL1 nicht eindeutig zu erkennen!&lt;br /&gt;
# µC bestücken, die Stromaufnahme sollte nun knapp 20mA betragen&lt;br /&gt;
# Erst Fuses programmieren, dann Software flashen&lt;br /&gt;
# RTC, Schieberegister (74HCT595) und Treiber (ULN) einsetzen&lt;br /&gt;
# LED-Streifen anschließen&lt;br /&gt;
# Wenn alles funktioniert, dann blinken die 4 Minuten-LEDs nach dem Einschalten rund 5-6 mal gleichzeitig auf. Zu der Zeit fängt die RealTimeClock an zu ticken&lt;br /&gt;
# Während des Blinkens kann nun auch eine (beliebige) Taste auf der Fernbedienung gedrückt werden, und deren Anlernprozess gestartet werden (-&amp;gt; s. Manual). Für den Funktionstest muss keine dauerhafte Tastenbelegung gewählt werden, dies kann jederzeit nachgeholt werden.&lt;br /&gt;
# Wenn die FB angelernt ist, dann gibt es eine Taste, mit der alle Ausgänge (das heißt alle Wörter) nacheinander geschaltet werden (&amp;quot;Demo-Modus&amp;quot;). Den Demo-Modus kann man verlassen, in dem ein anderer Modus aktiviert wird. Drückt einfach im Anschluss an den Demo-Modus die Taste &amp;quot;Einfarb-/Modus/Farbprofile aktivieren&amp;quot;.&lt;br /&gt;
# Mit der Fernbedienung und der Uhr spielen ... :o)&lt;br /&gt;
# Nun kann das DCF-Modul angeschlossen werden (wenn möglich, per UART den DCF-Status loggen). Nach einiger Zeit (mehrere Minuten!) sollte die Uhr die aktuelle Zeit anzeigen, sofern auf der DCF-Seite alles klappt.&lt;br /&gt;
&lt;br /&gt;
Wenn eine Fernbedienung angelernt werden soll, dann musst man, während alle 4 Minuten-LEDs blinken, irgendeine Taste auf der Fernbedienung drücken. Wird die FB erkannt, dann hört das Blinken auf und die &amp;quot;eins&amp;quot; leuchtet. Jetzt musst man die Taste drücken, die zum Ein-/Ausschalten der Uhr verwendet werden soll. Als nächstes leuchtet die &amp;quot;zwei&amp;quot; usw..... --&amp;gt; Mehr dazu siehe Handbuch&lt;br /&gt;
&lt;br /&gt;
Sollte nach dem &amp;quot;Neustart&amp;quot; der Uhr keine LED mehr leuchten, KEINE PANIK... es kann sein, dass einfach die &amp;quot;Helligkeit&amp;quot; der LEDs so gering ist, dass Ihr sie einfach nicht seht.&lt;br /&gt;
&lt;br /&gt;
Tipp fürs erste Anlernen der FB: Einfach alle Tasten stur der Reihe nach durchdrücken. Dann kann man durch Zählen und Vergleichen mit der Tabelle im Handbuch solange &amp;quot;überleben&amp;quot;, bis man die Muse hatte, eine sinnvolle Belegung zu überlegen und auch zu dokumentieren!&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
= Abstimmungen =&lt;br /&gt;
Eine Stimme ist ein Strich. Nach 5 Strichen bitte ein Leerzeichen einfügen.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== offen: ==&lt;br /&gt;
IR-FB Anlernphase deaktivierbar (Default / keine FB angelernt: anlernen aktiv): | &amp;lt;br&amp;gt;&lt;br /&gt;
ethernet ntp client: ||||| ||||| ||||| || &amp;lt;br&amp;gt;&lt;br /&gt;
Bewegungsmelder: ||||| ||||| ||||| ||||| ||||| ||||| ||||&amp;lt;br&amp;gt;|&lt;br /&gt;
IR zum PC für Kommunikation/Bootloader |&amp;lt;br&amp;gt;&lt;br /&gt;
RFM12 für Kommunikation/Bootloader |||&amp;lt;br&amp;gt;&lt;br /&gt;
NTP Server (um eine genaue Zeit ins Netzwerk zu verteilen) |||&amp;lt;br&amp;gt;&lt;br /&gt;
Beim Start, alle LEDs einmal der Reihe nach Durchlaufen lassen zum Funktionstest (statt &amp;quot;Volldampfmodus&amp;quot;): ||||| ||||| ||||| || &amp;lt;br&amp;gt;&lt;br /&gt;
Ton zur vollen Stunde (Beep/Piezo): ||||| ||&amp;lt;br /&amp;gt;&lt;br /&gt;
ZBus (Ethersex) zum einstellen der Uhr über das Netzwerk, evt holen der Zeitdaten über ZBus von einem Zeitserver: || &amp;lt;br /&amp;gt;&lt;br /&gt;
zeitgesteuert Dunkelschalten wochentagsweise: ||||| ||||&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== bereits umgesetzt: ==&lt;br /&gt;
DCF: ||||| ||||| ||||| ||||| ||||| ||||| ||||| ||||| |||| &amp;lt;br&amp;gt;&lt;br /&gt;
IR für Fernbedienung: ||||| ||||| ||||| || &amp;lt;br&amp;gt;&lt;br /&gt;
Ambilight: ||||| ||||| ||||| ||||| |||| &amp;lt;br&amp;gt;&lt;br /&gt;
zeitgesteuert Dunkelschalten (z.&amp;amp;nbsp;B. nachts &amp;quot;Aus&amp;quot;): ||||| ||||| ||||| &amp;lt;br&amp;gt;&lt;br /&gt;
Bluetooth: || (Posting: [http://www.mikrocontroller.net/topic/156661?goto=1710183#1710183 Bluetooth mit Debug, Bootloader und Autoreset])&amp;lt;br&amp;gt;&lt;br /&gt;
Möglichkeit, Zeiteinstellmodus bei &amp;quot;0 Minuten&amp;quot; von Normalmodus zu unterscheiden z.B. blinkendes &amp;quot;UHR&amp;quot; |||||&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;quot;ES IST&amp;quot; soll man ein- oder ausschalten können: ||||| |&amp;lt;br&amp;gt;&lt;br /&gt;
Bluetooth per FB ein-/ausschalten: ||&amp;lt;br&amp;gt;&lt;br /&gt;
Taste &amp;quot;Speichern&amp;quot; auf FB statt automatisch |||(On Off speichert)&amp;lt;br&amp;gt;&lt;br /&gt;
kurzzeitiger &amp;quot;Volldampf-Modus&amp;quot; (alle Wörter an für bspw. 30sek): ||||| |||  - als Submodus des Demomodus, multiplexing, jeweils ein Kanal an jedem Treiber aktiv&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== An/Ausschalt-Logik ==&lt;br /&gt;
A: Manuell ausgeschaltete Uhr bleibt aus bei Erreichen der Einschaltzeit - hier könnte natürlich gleich der Stecker gezogen werden, sofern die Uhr nicht festeingebaut ist&lt;br /&gt;
&lt;br /&gt;
B: Manuell ausgeschaltete Uhr geht wieder an bei Erreichen der Einschaltzeit&lt;br /&gt;
&lt;br /&gt;
C: Es gibt eine OFF-Taste und eine STANDBY-Taste. Bei STANDBY schaltet sich die Uhr bei Erreichen der Einschaltzeit wieder ein, bei OFF bleibt sie aus.&lt;br /&gt;
&lt;br /&gt;
D: Die Variante A oder B lässt sich vor dem Kompilieren der Software als define individuell nach eigenem Gutdünken festlegen. (Viele andere Werte sind bereits heute so einstellbar in der SW)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A Strichliste: |&lt;br /&gt;
&lt;br /&gt;
B Strichliste: |||  &lt;br /&gt;
&lt;br /&gt;
C Strichliste: |||||  ||||| |||||&lt;br /&gt;
&lt;br /&gt;
D Strichliste: ||||&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&#039;&#039;&#039;Zurück zum Hauptartikel: [[Word Clock]]&#039;&#039;&#039;&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Timer und Uhren]]&lt;br /&gt;
[[Kategorie:AVR-Projekte]]&lt;br /&gt;
[[Kategorie:DCF77]]&lt;/div&gt;</summary>
		<author><name>Promeus</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=Word_Clock_Variante_1_-_getrennte_Steuerplatine&amp;diff=90669</id>
		<title>Word Clock Variante 1 - getrennte Steuerplatine</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=Word_Clock_Variante_1_-_getrennte_Steuerplatine&amp;diff=90669"/>
		<updated>2015-12-13T12:10:35Z</updated>

		<summary type="html">&lt;p&gt;Promeus: Versorgungsspannung hinzugefügt&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Überblick =&lt;br /&gt;
&lt;br /&gt;
[[Datei:wordclock-frontplatte-v2.png| |WordClock]]&lt;br /&gt;
&lt;br /&gt;
Diese Seite dient nur noch der Referenz für die ältere Variante mit getrennter Steuer- und Anzeigeplatine.&lt;br /&gt;
Themen, die beide Varianten gemeinsam betreffen werden im Hauptartikel [1] gepflegt.&lt;br /&gt;
&lt;br /&gt;
Links zum Hauptartikel [1], zur Variante 2 [2] zum langen Thread [3] mit dem hier alles angefangen hat und zum Original [4], das alle hier inspiriert hat.&lt;br /&gt;
&lt;br /&gt;
[1] [[Word Clock]]&amp;lt;br&amp;gt;&lt;br /&gt;
[2] [[Word Clock Variante 2]]&amp;lt;br&amp;gt;&lt;br /&gt;
[3] [http://www.mikrocontroller.net/topic/156661 Beitrag: Brauche Hilfe beim Bau einer Uhr]&amp;lt;br&amp;gt;&lt;br /&gt;
[4] [http://www.clocktwo.com http://www.clocktwo.com]&amp;lt;br&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
= WordClock FAQ =&lt;br /&gt;
Häufig tauchen im Forum Fragen zum WordClock Projekt auf (was brauche ich..., wie mache ich...), die schon mehrmals beantwortet wurden. Hier Für die Variante 1 eine Zusammenfassung der wichtigsten Fragen:&lt;br /&gt;
&lt;br /&gt;
  Q: Was brauche ich alles, um die WordClock (Variante 1) zu bauen?&lt;br /&gt;
  A: - Die Steuerplatine mit der Elektronik&lt;br /&gt;
     - Eine Frontblende (das &amp;quot;Ziffernblatt&amp;quot;)&lt;br /&gt;
     - Leuchtdioden und Platinen für die Anzeige&lt;br /&gt;
     - Eine Zwischenplatte um das Licht zwischen den einzelnen Buchstaben zu trennen&lt;br /&gt;
     - Eine Spannungsversorgung&lt;br /&gt;
     - etwas handwerkliches Geschick&lt;br /&gt;
&lt;br /&gt;
  Q: Kann ich Bauteile der WordClock über Sammelbestellungen billiger bekommen?&lt;br /&gt;
  A: Es wurden in der Vergangenheit (seit Dez.2009) mehrere Sammelbestellungen angeboten. Im einzelnen waren das:&lt;br /&gt;
     - Die [http://www.mikrocontroller.net/articles/Word_Clock_Variante_1#Sammelbestellung_der_Platine Leiterplatte] für die Steuerelektronik (von ukw)&lt;br /&gt;
     - [http://www.mikrocontroller.net/articles/Word_Clock_Variante_1#Sammelbestellung Leuchtdioden mit Streifenplatinen] für die Anzeige (von wawibu / matsch)&lt;br /&gt;
     - Eine Frontblende (Buchstabenmatrix)&lt;br /&gt;
        - aus [http://www.mikrocontroller.net/articles/Word_Clock#Sammelbestellung_.28Plexiglas.29 Plexiglas], schwarz (von ukw)&lt;br /&gt;
        - aus [http://www.mikrocontroller.net/articles/Word_Clock#Sammelbestellung_.28Edelstahl.29 Edelstahl] (von andreasp)&lt;br /&gt;
     - Eine [http://www.mikrocontroller.net/articles/Word_Clock#Zwischenplatte Zwischenplatte] (von wawibu / matsch)&lt;br /&gt;
&lt;br /&gt;
  Q: Kann ich eine fertige Uhr kaufen?&lt;br /&gt;
  A: Ja, beim [http://www.qlocktwo.com/ Hersteller] der Vorlage ;-). Hier im uC.net Forum gibt es nur Tipps und Hilfe zum Selberbauen.&lt;br /&gt;
     Eine komplette WordClock kann man hier NICHT bekommen.&lt;br /&gt;
     ...und etwas einlesen wird auch keinem abgenommen ;-)&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
= Aufbau einer Wordclock =&lt;br /&gt;
Hier gibt es ein von bomibob äußerst kunstvolles Video zum Bau einer Word Clock:&lt;br /&gt;
http://www.youtube.com/watch?v=OYhtc-8StXA&lt;br /&gt;
(zugehöriger Post → http://www.mikrocontroller.net/topic/goto_post/2328168)&lt;br /&gt;
&lt;br /&gt;
Details zu den einzelnen Komponenten sind den entsprechenden Unterpunkten, oder dem Hauptartikel zu entnehmen.&lt;br /&gt;
&lt;br /&gt;
= Elektronik =&lt;br /&gt;
* Atmega168&lt;br /&gt;
* 8Mhz (interner Osc.)&lt;br /&gt;
* 24-Bit-Schieberegister an SPI für 24 Wörter&lt;br /&gt;
* 4 Output-Pins für Minutenanzeige&lt;br /&gt;
* 4 weitere GPOS - für allgemeine Zwecke&lt;br /&gt;
* RGB-Steuerung über PWM gegen GND, d.h. 32x3-Matrix&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
= Schaltung =&lt;br /&gt;
&lt;br /&gt;
[[Datei:wordclock-schmal-schaltung.png|miniatur|Schaltbild V1.0]]&lt;br /&gt;
[[Datei:wordclock-schmal-schaltung-2.0.png|miniatur|Schaltbild V2.0]]&lt;br /&gt;
[[Datei:TSOP-wordclock-1.1.png|miniatur|TSOP17xx in V1.1]]&lt;br /&gt;
[[Datei:RXTX-wordclock-1.1.png|miniatur|Rx/Tx in V1.1 und V2.0]]&lt;br /&gt;
[[Datei:K10-wordclock-2.0.png|miniatur|K10 als I2C in V2.0]]&lt;br /&gt;
[[Datei:K11-wordclock-2.0.png|miniatur|K11 als SPI in V2.0]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Änderungen der Platinen-Version 1.0 gegenüber dem Prototypen:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Pullup-Widerstand R7 am DCF-Anschluss entfällt&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Änderungen der Platinen-Version 1.1 gegenüber 1.0:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Die Tiefpass-Schaltung für den TSOP17xx ist nun korrekt geschaltet. Die Abweichung sieht man rechts im Zusatzschaltbild.&lt;br /&gt;
* Der Verbinder K9 (UART-Anschluss für Debug-Zwecke) hat zwei zusätzliche Pins erhalten, siehe Zusatzschaltbild rechts.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Änderungen der Platinen-Version 2.0 gegenüber 1.1:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Diode D1 entfällt.&lt;br /&gt;
* 6-poliger ISP-Wannenstecker ersetzt 10-poligen Wannenstecker, Vcc nun angeschlossen&lt;br /&gt;
* Neu: Stiftleiste K10 als Anschlüsse für externe I2C-Module, auf der Platine oberhalb der RTC zu finden&lt;br /&gt;
* Neu: Stiftleiste K11 als Anschlüsse für externe SPI-Module, auf der Platine ganz links&lt;br /&gt;
&lt;br /&gt;
Siehe auch untenstehende Zusatzschaltbilder rechts. Die neuen Stiftleisten sind optional, müssen also nicht unbedingt bestückt werden.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Zugehörige Schaltung als PDF&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
* Version 1.0: &#039;&#039;&#039;[[Media:wordclock-schmal.pdf|wordclock-schmal.pdf]]&#039;&#039;&#039;&lt;br /&gt;
* Version 2.0: &#039;&#039;&#039;[[Media:wordclock-schmal-schaltung-2.0.pdf|wordclock-schmal-schaltung-2.0]]&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Sammelbestellung der Platine ==&lt;br /&gt;
&lt;br /&gt;
Stand Dezember 2015:&lt;br /&gt;
&lt;br /&gt;
Ich habe wegen einiger Nachfragen noch Steuerplatinen in begrenzter Stückzahl nachbestellt. Wenn jemand daran interessiert ist, kann er sich bei mir (Benutzer [http://www.mikrocontroller.net/user/show/ukw &#039;&#039;&#039;ukw&#039;&#039;&#039;]) per PN melden.&lt;br /&gt;
&lt;br /&gt;
Kosten pro Platine: 15 EUR zzgl. Versand von 2,00 EUR bei bis zu 4 Stück. Bei mehr als 4 Stück beträgt der Versand 3,00 EUR.&lt;br /&gt;
&lt;br /&gt;
Beispiele:&lt;br /&gt;
&lt;br /&gt;
* 1 Platine: 15 EUR + 2,00 Versand: 17,00 EUR&lt;br /&gt;
* 2 Platinen: 30 EUR + 2,00 Versand: 32,00 EUR&lt;br /&gt;
* ...&lt;br /&gt;
* 5 Platinen: 75 EUR + 3,00 Versand: 78,00 EUR&lt;br /&gt;
&lt;br /&gt;
Parallel zu dieser Sammelbestellung gibt es noch eine neue (kleinere) Sammelbestellung für passende Frontplatten, siehe auch:&lt;br /&gt;
&lt;br /&gt;
[http://www.mikrocontroller.net/articles/Word_Clock#Sammelbestellung_.28Plexiglas.29 Sammelbestellung Frontplatten]&lt;br /&gt;
&lt;br /&gt;
Beim Versand zusammen mit den Frontplatten entfallen natürlich die Versandkosten für die Platinen.&lt;br /&gt;
&lt;br /&gt;
Maße: 146mm x 35,6mm.&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== Reichelt Warenkorb Mono-Variante ==&lt;br /&gt;
Da selbst bei der Mono-Variante der ATmega 88 langsam mehr als eng wird, wurde dieser Warenkorb auch auf den ATmega 168 umgestellt.&lt;br /&gt;
&lt;br /&gt;
Eine vollständige Liste zur Bestellung der nötigen Bauteile ist bei Reichelt abgelegt: &#039;&#039;&#039;[http://www.reichelt.de/?ACTION=20;AWKID=580204;PROVID=2084 Warenkorb-Mono]&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== Reichelt Warenkorb RGB-Variante ==&lt;br /&gt;
Für die RBG-Version wird der ATmega 168 benötigt. Ein angepasster &#039;&#039;&#039;[http://www.reichelt.de/?ACTION=20;AWKID=580197;PROVID=2084 WARENKORB]&#039;&#039;&#039; ist bei Reichelt hinterlegt.&lt;br /&gt;
&lt;br /&gt;
Im Warenkorb befindet sich nun auch der Nachfolger TSOP 31238 des nicht mehr lieferbaren TSOP17xx. ( 15.11.2011 ).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;quot;Beginner-Tipp&amp;quot;: &lt;br /&gt;
&lt;br /&gt;
Der Warenkorb ist eine tolle Vereinfachung der Bestellung. Bevor Ihr jedoch das DCF-77-Modul automatisch mitbestellt, lest bitte mit Hilfe der Suchfunktion das Forum zu diesem Thema durch. Das DCF-77-Modul ist, wie es im Forum so nett formuliert wurde, &amp;quot;ein Sensibelchen&amp;quot;. Es gäbe eine Alternative von C* (siehe Forum). Und um es ganz deutlich zu formulieren: Die Uhr funktioniert auch ohne DCF-77-Modul ganz prima. Sie kann mit der IR-Fernbedienung ganz einfach gestellt werden. Man braucht das Modul nicht wirklich.&lt;br /&gt;
Es befindet sich kein Flachbandkabel im Warenkorb.&lt;br /&gt;
----&lt;br /&gt;
== Reichelt Warenkorb LED Single Board ==&lt;br /&gt;
&lt;br /&gt;
Für das neue SingleBoard (Paket 1) werden zusätzliche Bauteile benötigt. Diese sind in einem eigenen &#039;&#039;&#039;[http://www.reichelt.de/?ACTION=20;AWKID=847662;PROVID=2084 WARENKORB]&#039;&#039;&#039; bei Reichelt hinterlegt.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== Reichelt Warenkorb Pollin DCF Stabilisierungsplatine ==&lt;br /&gt;
&lt;br /&gt;
Teil des Single Boards ist eine Stabilisierungsschaltung für den Pollin DCF Empfänger. Bei Verwendung des Pollin DCF Empfängers wird folgender &#039;&#039;&#039;[http://www.reichelt.de/?ACTION=20;AWKID=986833;PROVID=2084 WARENKORB]&#039;&#039;&#039; zusätzlich benötigt.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;[http://www.pollin.de/shop/dt/NTQ5OTgxOTk-/Bausaetze_Module/Module/DCF_Empfangsmodul_DCF1.html Link]&#039;&#039;&#039; zum DCF-Empfänger bei Pollin.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== Bestückung ==&lt;br /&gt;
&lt;br /&gt;
Hier eine kurze Beschreibung zur Bestückung:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Version 1.0 (schmale Ausführung):&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
[[Datei:Wordclock-schmal.png|miniatur|Bestückte Platine (Version 1.0)]]&lt;br /&gt;
[[Datei:Wordclock-schmal-1.1.png|miniatur|Bestückte Platine (Version 1.1)]]&lt;br /&gt;
[[Datei:Wordclock-schmal-2.0.png|miniatur|Bestückte Platine (Version 2.0)]]&lt;br /&gt;
&lt;br /&gt;
* Oben Mitte: Anschluss für stehende Lithium-Knopfbatterie CR2032 (die drei abgebildeten Stifte sind natürlich nicht notwendig, die Batterie wird direkt eingelötet)&lt;br /&gt;
* Unten 3-polige Stiftleiste: Anschluss für DCF77-Modul&lt;br /&gt;
* Unten 2-polige Stiftleiste: RX &amp;amp; TX (für Testzwecke)&lt;br /&gt;
* Unten rechts: TSOP17XX/SFH5110 für Infrarot-Empfang&lt;br /&gt;
* Darüber: 2-polige Stiftleiste für LDR (Helligkeitsmessung)&lt;br /&gt;
* Oben links und rechts: Wannenstecker für insg. 32 Ausgabekanäle: OUT0-OUT23 (für die Wörter), OUTL1-OUTL4 (für die Minuten) und OUTG1-OUTG4 (für General-Purpose-Ausgabezwecke)&lt;br /&gt;
* Rechts: Anschlussklemmen für Versorgungsspannung 7-20V und die drei PWM-Kanäle Rot, Grün und Blau.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Version 1.1 (schmale Ausführung):&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Wie 1.0, jedoch hat der Verbinder K9 (UART-Anschlüsse Rx/Tx für Debug-Zwecke) zwei zusätzliche Pins erhalten, siehe abweichendes Bestückungsbild rechts. Belegung von links nach rechts: Vcc / GND / RX / TX&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Version 2.0 (schmale Ausführung):&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Änderungen gegenüber 1.1:&lt;br /&gt;
&lt;br /&gt;
* Diode D1 entfällt&lt;br /&gt;
* 6-poliger statt 10-poliger ISP-Stecker&lt;br /&gt;
* Am ISP-Stecker ist auch Vcc angeschlossen&lt;br /&gt;
* Anschlussmöglichkeit für weitere I2C-Module&lt;br /&gt;
* Anschlussmöglichkeit für weitere Schieberegister über SPI&lt;br /&gt;
&lt;br /&gt;
[[Datei:RXTX-platine-wordclock-1.1.png|miniatur|Rx/Tx in V1.1 und V2.0]]&lt;br /&gt;
&lt;br /&gt;
Der IR-Empfänger TSOP17XX/SFH5110 muss hinter einem nicht benutzten Buchstaben angebracht werden. Deshalb braucht man ihn nicht unbedingt auf die Platine löten, sondern kann ihn auch über ein 3-poliges Kabel mit der Platine verbinden. In diesem Fall sollte der Kondensator C2 nicht auf die Platine, sondern direkt am TSOP17XX/SFH5110 (C2 Minus an Pin 1, C2 Plus an Pin 2) angelötet werden. Bei Verwendung eines SFH5110 Pinbelegung beachten!&lt;br /&gt;
&lt;br /&gt;
Je nach Ort des LDRs (hinter Buchstaben bzw. mit/ohne Dffusor) kann die automatische Helligkeitsregelung unterschiedlich ausfallen. Hier muss man eventuell den Widerstand R6 variieren, wenn das Ergebnis nicht optimal sein sollte.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Bestückung und Anschlüsse&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
[[Datei:Wordclock-schmal-bestueckungsdruck.png|miniatur|Bestückungsaufdruck der Version 1.0]]&lt;br /&gt;
&lt;br /&gt;
[[Datei:Wordclock-schmal-bestueckungsdruck-1.1.png|miniatur|Bestückungsaufdruck der Version 1.1]]&lt;br /&gt;
&lt;br /&gt;
[[Datei:Wordclock-schmal-bestueckungsdruck-2.0.png|miniatur|Bestückungsaufdruck der Version 2.0]]&lt;br /&gt;
&lt;br /&gt;
[[Datei:Wordclock-schmal-bestueckt.jpg|miniatur|Bestückung: Orientierung der IRLUs beachten!]]&lt;br /&gt;
&lt;br /&gt;
[[Datei:Wordclock-schmal-anschluesse.png|miniatur|Anschlüsse V1.0]]&lt;br /&gt;
[[Datei:Wordclock-schmal-anschluesse-1.1.png|miniatur|Anschlüsse V1.1]]&lt;br /&gt;
[[Datei:Wordclock-schmal-anschluesse-2.0.png|miniatur|Anschlüsse V2.0]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;WICHTIG (für 1.x und 2.x):&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Der oberste IRLU2905 muss anders herum eingelötet werden (Metall Richtung Spannungsregler) als die beiden unteren (Metall Richtung Schraubklemme). Siehe auch Foto rechts.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Möchte man einfarbige LEDs verwenden und auf die RGB-Steuerung verzichten, schließt man einfach zwei der drei RGB-PWM-Kanäle nicht an und verwendet stattdessen nur PWMR zur PWM-Steuerung. Die 2 zu PWMG und PWMB gehörenden IRLUs und die angeschlossenen 4 Widerstände am Gate der IRLUs kann man dann auch weglassen.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Bestückungsliste:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 Name                Wert&lt;br /&gt;
 C1,C3,C4,C6,C8,C9   100NF&lt;br /&gt;
 C10,C11,C12,C13     100NF&lt;br /&gt;
 C2                  4,7µF&lt;br /&gt;
 C5,C7               47µF&lt;br /&gt;
 D1                  1N4001&lt;br /&gt;
 IC1                 ATMEGA88&lt;br /&gt;
 IC2                 7805&lt;br /&gt;
 IC3                 TSOP1738 oder TSOP31238 oder SFH5110 (andere Pinbelegung!)&lt;br /&gt;
 IC4,IC5,IC6         74HCT595N&lt;br /&gt;
 IC7                 DS1307&lt;br /&gt;
 IC8,IC9,IC10,IC11   UDN2981A&lt;br /&gt;
 K4                  Wannenstecker 10-polig&lt;br /&gt;
 K7,K8               Wannenstecker 16-polig&lt;br /&gt;
 K6                  LDR&lt;br /&gt;
 KL1                 KLEMME5POL&lt;br /&gt;
 Q1                  32,768KHz&lt;br /&gt;
 R1,R6,R8,R10,R12    10K&lt;br /&gt;
 R7                  10K, entfällt!&lt;br /&gt;
 R2                  100&lt;br /&gt;
 R3,R4               4K7&lt;br /&gt;
 R5,R9,R11           82&lt;br /&gt;
 T1,T2,T3            IRLU2905&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Davon abweichend für 2.0:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 Name                Wert&lt;br /&gt;
 K4                  Wannenstecker 6-polig (statt 10-polig)&lt;br /&gt;
 K10                 I2C (neu, optional)&lt;br /&gt;
 K11                 SPI (neu, optional)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Anmerkung zu C2 und R2:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
C2 und R2 bilden zusammen einen Tiefpass. Hier gilt: Soll der TSOPxxxx/SFH5110 über ein längeres Kabel entfernt von der Platine angebracht werden, sollte man den Kondensator C2 nicht in die Platine löten, sondern direkt am Empfänger anbringen (Achtung: TSOP17XX und SFH5110 haben unterschiedliche Pinbelegung).&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== FAQ zur Bestückung ==&lt;br /&gt;
&lt;br /&gt;
[[Datei:Wordclock-schmal-bestueckt.jpg|miniatur|Bestückung: Orientierung der IRLUs (ganz rechts) beachten!]]&lt;br /&gt;
&lt;br /&gt;
 Q: Wie herum müssen die IRLUs eingelötet werden?&lt;br /&gt;
 A: Der oberste kommt mit der Metallseite nach links (Richtung&lt;br /&gt;
    Spannungsregler), Pin 1 ist hier der untere. Die anderen beiden IRLUs&lt;br /&gt;
    werden mit der Metallseite Richtung Schraubklemme eingelötet, siehe auch&lt;br /&gt;
    Foto rechts. Hier ist jeweils Pin 1 der obere.&lt;br /&gt;
&lt;br /&gt;
 Q: Welche ICs sollte ich sockeln?&lt;br /&gt;
 A: Wenn durch einen versehentlichen Kurzschluss bei der Freiluftverdrahtung der&lt;br /&gt;
    LEDs ein UDN2981 abfackelt, ist das ägerlich. Daher sollte man zumindest&lt;br /&gt;
    die UDNs und den ATMega sockeln. Besser ist es natürlich, alle zu sockeln.&lt;br /&gt;
&lt;br /&gt;
 Q: Bei dem ATMega und der RTC ist nicht ersichtlich, wie herum sie eingebaut&lt;br /&gt;
    werden müssen?&lt;br /&gt;
 A: Doch, kann man sehen: Der Lötpunkt von Pin1 ist immer rechteckig, die&lt;br /&gt;
    anderen sind oval. Das gilt übrigens für fast alle Bauteile, auch die Wannen.&lt;br /&gt;
&lt;br /&gt;
 Q: Ich möchte oben statt der abgebildeten zwei 2x8-poligen Stiftleisten 16-polige&lt;br /&gt;
    Wannenstecker nehmen. Wie herum kommen dann die oberen Wannen drauf?&lt;br /&gt;
 A: Mit der Kerbe nach unten, sieht man auch am rechteckigen Lötpunkt - und&lt;br /&gt;
    auch auf dem Foto rechts.&lt;br /&gt;
&lt;br /&gt;
 Q: Kann ich auf die Batterie verzichten, weil ich DCF77 einsetze bzw. nach&lt;br /&gt;
    einem Stromausfall die Uhr per Fernbedienung selbst neu stellen möchte?&lt;br /&gt;
 A: Wenn man keine Batterie einsetzt, sollte man VBat der RTC DS1307 mit GND&lt;br /&gt;
    verbinden. Das geht am einfachsten an den auf der Platine vorgesehenen&lt;br /&gt;
    Batterieanschlüssen: einfach K1 (Bat+) und K3 (Bat-) mit einem Stück Draht&lt;br /&gt;
    überbrücken. Übrigens: die Batterie hält lt. Datenblatt des DS1307&lt;br /&gt;
    10 Jahre, es ist also durchaus sinnvoll, diese auch zu bestücken.&lt;br /&gt;
&lt;br /&gt;
 Q: Der Infrarot-Empfänger TSOP17XX ist abgekündigt. Gibt es dazu eine Alternative?&lt;br /&gt;
 A: Als Ersatz kann man den [http://www.reichelt.de/?ARTICLE=107210 TSOP31238] nehmen. Er ist pinkompatibel.&lt;br /&gt;
&lt;br /&gt;
 Q: Kann ich (aus Kostengründen) auch einfarbige LEDs verwenden?&lt;br /&gt;
 A: Ja, einfach zwei der drei RGB-PWM-Kanäle nicht anschließen und nur PWMR (für Rot) benutzen.&lt;br /&gt;
    Die 2 zu PWMG und PWMB gehörenden IRLUs und die angeschlossenen 4 Widerstände am Gate der IRLUs&lt;br /&gt;
    kann man dann auch weglassen.&lt;br /&gt;
&lt;br /&gt;
&amp;quot;Beginner-Tipp&amp;quot;:&lt;br /&gt;
&lt;br /&gt;
[[Datei:Testmodul-Schaltplatine.JPG|miniatur]]&lt;br /&gt;
&lt;br /&gt;
Beim Zusammenbau der Word Clock gibt es eine Reihe von Fehlerquellen (Programmierung, Aufbau der Steuerplatine, Lötfehler auf den LED-Streifen, Verkabelung etc.). Für die Fehlersuche aber auch für das erste Erfolgserlebnis nach dem Zusammenbau der Schaltplatine kann man sich relativ einfach mit Hilfe von Vorwiderständen und Standard-LEDs eine &amp;quot;Test-Umgebung&amp;quot; aufbauen. Die ausgedruckte Tabelle mit der Zuordnung der Ausgänge/LEDs zu den entsprechenden Wörtern erleichtert die Interpretation. Achtung: auf die richtige &amp;quot;Default&amp;quot;-Sprachvariante achten. Wenn die LEDs dann wie erwartet leuchten = erstes Erfolgserlebnis. &lt;br /&gt;
&lt;br /&gt;
Eine BestückungsInfo für die Version V1.1 gibt es als PDF Download: &#039;&#039;&#039;[[Media:WordClockSteuerplatineV1.1Bestueckung.pdf]]&#039;&#039;&#039;&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
= Anschluss der LEDs =&lt;br /&gt;
&lt;br /&gt;
=== Zuordnung der Kanäle ===&lt;br /&gt;
&lt;br /&gt;
[[Datei:Wannen.png|400px|Anschlüsse der Wannenstecker]]&lt;br /&gt;
&lt;br /&gt;
Folgende Tabelle enthält die Zuordnung der Wörter zu den Pins der Wannenstecker.&lt;br /&gt;
Die Bezeichnungen der Pins entsprechen dem Schaltplan. Zu beachten ist, dass die Reihenfolge der Wörter nichts mit der Anordnung auf der Frontplatte zu tun hat.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; id=&amp;quot;pinbelegungen&amp;quot;&lt;br /&gt;
|+ &#039;&#039;&#039;Zuordnung Pins&#039;&#039;&#039;&lt;br /&gt;
|-                    &lt;br /&gt;
! Anschluss || Pin || [[#Deutsch (2-sprachig) |Frontplatte deutsch 2-sprachig]]  || [[#Deutsch (3-sprachig) |Frontplatte deutsch 3-sprachig]]  || [[#Englisch|Frontplatte Englisch]]&lt;br /&gt;
|-                                                         &lt;br /&gt;
|  OUT0 || K7-08 || ES IST               ||  ZW                         || IT IS&lt;br /&gt;
|-                                                        &lt;br /&gt;
|  OUT1 || K7-07 || FÜNF  (Minuten)      ||  EI                         || FIVE   (Minuten) &lt;br /&gt;
|-                                                        &lt;br /&gt;
|  OUT2 || K7-06 || ZEHN  (Minuten)      ||  N                          || TEN    (Minuten) &lt;br /&gt;
|-                                                        &lt;br /&gt;
|  OUT3 || K7-05 || VOR   (Minuten)      ||  S                          || QUARTER &lt;br /&gt;
|-                                                        &lt;br /&gt;
|  OUT4 || K7-04 || DREI  (Minuten)      ||  IEBEN                      || TWENTY (Minuten) &lt;br /&gt;
|-                                                        &lt;br /&gt;
|  OUT5 || K7-03 || VIERTEL              ||  DREI                       || HALF &lt;br /&gt;
|-                                                        &lt;br /&gt;
|  OUT6 || K7-02 || NACH                 ||  VIER                       || TO &lt;br /&gt;
|-                                                        &lt;br /&gt;
|  OUT7 || K7-01 || VOR                  ||  FÜNF                       || PAST &lt;br /&gt;
|-                                                        &lt;br /&gt;
|  OUT8 || K7-16 || HALB                 ||  SECHS                      || ONE &lt;br /&gt;
|-                                                        &lt;br /&gt;
|  OUT9 || K7-15 || S                    ||  ACHT                       || TWO &lt;br /&gt;
|-                                                        &lt;br /&gt;
|  OUT10 || K7-14 || EIN                 ||  NEUN                       || THREE &lt;br /&gt;
|-                                                        &lt;br /&gt;
|  OUT11 || K7-13 || ZWEI                ||  ZEHN                       || FOUR &lt;br /&gt;
|-                                                        &lt;br /&gt;
|  OUT12 || K7-12 || DREI                ||  ELF                        || FIVE &lt;br /&gt;
|-                                                        &lt;br /&gt;
|  OUT13 || K7-11 || VIER                ||  ZWÖLF                      || SIX &lt;br /&gt;
|-                                                        &lt;br /&gt;
|  OUT14 || K7-10 || FÜNF                ||  ES IST                     || SEVEN &lt;br /&gt;
|-                                                        &lt;br /&gt;
|  OUT15 || K7-09 || SECHS               ||  UHR                        || EIGHT &lt;br /&gt;
|-                                                        &lt;br /&gt;
|  OUT16 || K8-08 || SIEBEN              ||  FÜNF (Minuten)             || NINE &lt;br /&gt;
|-                                                        &lt;br /&gt;
|  OUT17 || K8-07 || ACHT                ||  ZEHN (Minuten)             || TEN &lt;br /&gt;
|-                                                        &lt;br /&gt;
|  OUT18 || K8-06 || NEUN                ||  ZWANZIG (Minuten)      || ELEVEN &lt;br /&gt;
|-                                                        &lt;br /&gt;
|  OUT19 || K8-05 || ZEHN                ||  DREI (Minuten)             || TWELVE &lt;br /&gt;
|-                                                        &lt;br /&gt;
|  OUT20 || K8-04 || ELF                 ||  VIERTEL (Minuten)          || O CLOCK  &lt;br /&gt;
|-                                                        &lt;br /&gt;
|  OUT21 || K8-03 || ZWÖLF               ||  NACH                       || unverbunden&lt;br /&gt;
|-                                                        &lt;br /&gt;
|  OUT22 || K8-02 || UHR                 ||  VOR                        || unverbunden&lt;br /&gt;
|-                                                        &lt;br /&gt;
|  OUT23 || K8-01 || unverbunden         ||  HALB                       || unverbunden&lt;br /&gt;
|-                                                        &lt;br /&gt;
|  OUTL1 || K8-09 || min1                ||  min1                       || min1&lt;br /&gt;
|-                                                        &lt;br /&gt;
|  OUTL2 || K8-10 || min2                ||  min2                       || min2&lt;br /&gt;
|-                                                        &lt;br /&gt;
|  OUTL3 || K8-11 || min3                ||  min3                       || min3&lt;br /&gt;
|-                                                        &lt;br /&gt;
|  OUTL4 || K8-12 || min4                ||  min4                       || min4&lt;br /&gt;
|-                                                        &lt;br /&gt;
|  OUTG1 || K8-13 || Ambilight (opt.)           ||  Ambilight (opt.)                  || Ambilight (opt.)           &lt;br /&gt;
|-                                                        &lt;br /&gt;
|  OUTG2 || K8-14 || unverbunden         ||  unverbunden                || unverbunden&lt;br /&gt;
|-                                                        &lt;br /&gt;
|  OUTG3 || K8-15 || unverbunden         ||  unverbunden                || unverbunden&lt;br /&gt;
|-                                                        &lt;br /&gt;
|  OUTG4 || K8-16 || dcf Empfang         ||  dcf Empfang                || dcf Empfang             &lt;br /&gt;
|}&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
=== Beschaltungsvarianten der LEDs ===&lt;br /&gt;
&lt;br /&gt;
Da die Schaltung genügend Power hat, um eine Unmenge an RGB-LEDs zu treiben, gibt es folgende Möglichkeiten, die auch mixbar sind:&lt;br /&gt;
&lt;br /&gt;
1. Pro Wort für jeden Buchstaben eine RGB-LED (mit gemeinsamer Anode) in&lt;br /&gt;
Parallelschaltung (natürlich mit geeignetem Vorwiderstand pro LED)&lt;br /&gt;
&lt;br /&gt;
Prinzip (am Beispiel des Wortes &amp;quot;VIER&amp;quot;):&lt;br /&gt;
&lt;br /&gt;
         /---|&amp;gt;|----| R1R |---- PWMR&lt;br /&gt;
      +--|---|&amp;gt;|----| R1G |---- PWMG     &amp;quot;V&amp;quot;&lt;br /&gt;
      |  \---|&amp;gt;|----| R1B |---- PWMB&lt;br /&gt;
      |&lt;br /&gt;
      |  /---|&amp;gt;|----| R2R |---- PWMR&lt;br /&gt;
      +--|---|&amp;gt;|----| R2G |---- PWMG     &amp;quot;I&amp;quot;&lt;br /&gt;
      |  \---|&amp;gt;|----| R2B |---- PWMB&lt;br /&gt;
 OUTx-+&lt;br /&gt;
      |  /---|&amp;gt;|----| R3R |---- PWMR&lt;br /&gt;
      +--|---|&amp;gt;|----| R3G |---- PWMG     &amp;quot;E&amp;quot;&lt;br /&gt;
      |  \---|&amp;gt;|----| R3B |---- PWMB&lt;br /&gt;
      |&lt;br /&gt;
      |  /---|&amp;gt;|----| R4R |---- PWMR&lt;br /&gt;
      +--|---|&amp;gt;|----| R4G |---- PWMG     &amp;quot;R&amp;quot;&lt;br /&gt;
         \---|&amp;gt;|----| R4B |---- PWMB&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
2. Pro Wort für jeden Buchstaben eine RGB-LED in Reihenschaltung (mit&lt;br /&gt;
nur 1 Vorwiderstand für die ganze Reihe, bzw. 3 wegen RGB). Das geht&lt;br /&gt;
aber nur, wenn die RGB-LEDs unabhängige Anoden und Kathoden haben (ja,&lt;br /&gt;
die gibt es).&lt;br /&gt;
&lt;br /&gt;
Prinzip:&lt;br /&gt;
                         &amp;quot;V&amp;quot;    &amp;quot;I&amp;quot;    &amp;quot;E&amp;quot;    &amp;quot;R&amp;quot;&lt;br /&gt;
         /----| R1R |----|&amp;gt;|----|&amp;gt;|----|&amp;gt;|----|&amp;gt;|---- PWMR&lt;br /&gt;
 OUTx --+-----| R1G |----|&amp;gt;|----|&amp;gt;|----|&amp;gt;|----|&amp;gt;|---- PWMG&lt;br /&gt;
         \----| R1B |----|&amp;gt;|----|&amp;gt;|----|&amp;gt;|----|&amp;gt;|---- PWMB&lt;br /&gt;
&lt;br /&gt;
Theoretisch könnte man solche Streifen als Platine herstellen, welche man dann immer auf die gewünschte Länge kürzt, als 1, 2, 3 ... 7 Buchstaben.&lt;br /&gt;
&lt;br /&gt;
Bei Verwendung von einfarbigen LEDs vereinfachen sich die Prinzip-Schaltungen wie folgt:&lt;br /&gt;
&lt;br /&gt;
1. Parallelschaltung, eine LED pro Buchstabe im Wort:&lt;br /&gt;
&lt;br /&gt;
       /----|&amp;gt;|----| R1 |---- PWMR     &amp;quot;V&amp;quot;&lt;br /&gt;
      +-----|&amp;gt;|----| R2 |---- PWMR     &amp;quot;I&amp;quot;&lt;br /&gt;
 OUTx-+&lt;br /&gt;
      +-----|&amp;gt;|----| R3 |---- PWMR     &amp;quot;E&amp;quot;&lt;br /&gt;
       \----|&amp;gt;|----| R4 |---- PWMR     &amp;quot;R&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
2. Reihenschaltung, eine LED pro Buchstabe im Wort:&lt;br /&gt;
&lt;br /&gt;
                    &amp;quot;V&amp;quot;    &amp;quot;I&amp;quot;    &amp;quot;E&amp;quot;    &amp;quot;R&amp;quot;&lt;br /&gt;
 OUTx ----| R1 |----|&amp;gt;|----|&amp;gt;|----|&amp;gt;|----|&amp;gt;|---- PWMR&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Zum Berechnen der Vorwiderstände kann z.&amp;amp;nbsp;B. dieser Rechner&lt;br /&gt;
verwendet werden: &#039;&#039;&#039;[http://www.elektronik-kompendium.de/sites/bau/1109111.htm Vorwiderstands-Rechner]&#039;&#039;&#039; oder &#039;&#039;&#039;[http://www.modding-faq.de/index.php?artid=506 Vorwiderstands-Rechner mit Unterstützung für Reihenschaltung]&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Damit die LEDs selbst nicht sichtbar sind, benötigt man hinter den transparenten Buchstaben einen Diffusor. Im einfachsten Fall kann das eine weiße Schicht Farbe sein.&lt;br /&gt;
&lt;br /&gt;
&amp;quot;Beginner-Tipp&amp;quot;:&lt;br /&gt;
&lt;br /&gt;
In der Sammelbestellung wurden die Vorwiderstände für die Reihenschaltung berechnet. &lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
=== LEDs &amp;amp; Platinen ===&lt;br /&gt;
==== Single-LED-Platine ====&lt;br /&gt;
Ende 2013 wurde eine neue Platine für die LEDs entworfen. Diese reduziert die notwendigen Löt- und Verdrahtungsarbeiten auf ein minimum.&amp;lt;br&amp;gt;&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
| Top Seite des Single Boards: || Bottom Seite des Single Boards:&lt;br /&gt;
|-&lt;br /&gt;
| [[Datei:Single_Board_v4_TOP.jpg|350px|Singel LED Platine - LED Seite]]&lt;br /&gt;
 || [[Datei:Single_Board_v4_BOTTOM.jpg|350px|Singel LED Platine - Widerstand Seite]]&lt;br /&gt;
|}&lt;br /&gt;
Das Board ist wie folgt konzipiert:&lt;br /&gt;
* von der TOP Seite betrachtet, befinden sich rechts die 4 Platinen für die Minuten-LEDs&lt;br /&gt;
* von der TOP Seite betrachtet, befindet sich oben rechts eine kleine Zusatzplatine, welche zur Stabilisierung des Pollin DCF Empfängers konstruiert wurde - DANKE an Thomas K.! &amp;lt;br&amp;gt;Anbei der Schaltplan und der Bestückungsplan:&amp;lt;br&amp;gt;[[Datei:Single_Board_v4_DCF77-Schaltplan.png|200px]] [[Datei:Single-Board-v4-DCF-Bestueckung.JPG|300px]]&amp;lt;br&amp;gt;IC1 und C3 sind auf der Rückseite zu bestücken.&lt;br /&gt;
&amp;lt;br&amp;gt;Die notwendigen Bauteile sind als [http://www.reichelt.de/?ACTION=20;AWKID=986833;PROVID=2084 Warenkorb bei Reichelt] hinterlegt.&lt;br /&gt;
* es besteht die Möglichkeit 2 zusätzliche PLCC-6 LEDs zu bestücken (D1 und D2 - links und rechts von SECHS) um so bis zu 6 Status-Anzeigen nach vorne zu führen (derzeit nicht in der SW gesondert verwendet). So kann zB die DCF77 Empfangsanzeige nach vorne ausgeführt werden. In der aktuellen Version sind diese wie folgt vorverdrahtet:&lt;br /&gt;
** D1 ROT -&amp;gt; Out G4 (DCF Empfangskontrolle)&lt;br /&gt;
** D1 GRÜN -&amp;gt; n/a - ausgeführt als Pin zur Verbindungsseite&lt;br /&gt;
** D1 BLAU -&amp;gt; n/a - ausgeführt als Pin zur Verbindungsseite&lt;br /&gt;
** D2 ROT -&amp;gt; Out G1 (Ambilight)&lt;br /&gt;
** D2 GRÜN -&amp;gt; Out G2 - derzeit nicht in der SW verwendet&lt;br /&gt;
** D2 BLAU -&amp;gt; Out G3 - derzeit nicht in der SW verwendet&lt;br /&gt;
* möchte man zB nur die DCF77 Empfangskontrolle haben, so reicht es den ROT-Kanal von D1 mit einer PLCC-2 LED und den dazu gehörigen Widerstand zu bestücken&lt;br /&gt;
* TSOP mit Stabilisierungskondensator und LDR werden direkt auf dem Single Board bestückt&lt;br /&gt;
* das Single Board wird wie folgt mit der Hauptplatine verbunden:&lt;br /&gt;
** 2 16polige Flachbandkabeln für K7 und K8&lt;br /&gt;
** 4 Adern für PWMR / PMWG / PMWB / GND&lt;br /&gt;
** 2 Drähten für den LDR&lt;br /&gt;
** 3 Drähte für den TSOP&lt;br /&gt;
* die Verbindungen zu den Minuten- / Ambilightplatinen erfolgt über die Kontakte an den jeweiligen Ecken / Seiten&lt;br /&gt;
* für die weiter Verwendung sind die Minutenanschlüsse M1-M4 an der zentralen Verbinderseite ausgeführt&lt;br /&gt;
* für die weiter Verwendung sind die OUT G1-G4 an der zentralen Verbinderseite ausgeführt&lt;br /&gt;
* auf der BOTTOM Seite ist Platz für eine PLCC-2 LED als DCF77 Empfangskontroll LED vorgesehen&lt;br /&gt;
&lt;br /&gt;
Die für die DCF77 Empfangskontrolle, D1 und D2 benötigten Bauteile sind &#039;&#039;&#039;nicht Bestandteil&#039;&#039;&#039; eines angebotenen Paketes.&lt;br /&gt;
&lt;br /&gt;
Die Minuten-LEDs werden an den Ecken der Platine über kleine Drahtbrücken angeschlossen: (Bild ist noch vom Prototyp)&lt;br /&gt;
[[Datei:WordClock_Singel_LED_PCB_Minuten.jpg|400px|Anschluß Minuten LED]]&lt;br /&gt;
&lt;br /&gt;
Die Verbindung zwischen der LED-Platine und der Hauptplatine erfolgt mittels kurzem Flachbandkabel.&amp;lt;br&amp;gt;&lt;br /&gt;
[[Datei:WordClock_Singel_LED_PCB_Anschluß.jpg|400px|Anschluß an die Hauptplatine]]&lt;br /&gt;
&lt;br /&gt;
Auf dem Prototyp waren die Buchsen für K7 und K8 verdreht. Daher mussten die Flachbandkabel beim verbinden verdreht werden. Dieses wird in der finalen Version korrigiert. Es erfolgt dann ein Austausch des Bildes.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Bitte beachtet, dass für das SingleBoard zusätzliche Bauteile benötigt werden. Diese sind in einem eigenen Warenkorb bei Reichelt hinterlegt.&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
Diese sind in einem eigenen &#039;&#039;&#039;[http://www.reichelt.de/?ACTION=20;AWKID=847662;PROVID=2084 WARENKORB]&#039;&#039;&#039; bei Reichelt hinterlegt.&amp;lt;br&amp;gt;&lt;br /&gt;
Die Bauteile für das DCF77 Stabilisierungsboard sind ebenfalls in einem eigenen &#039;&#039;&#039;[http://www.reichelt.de/?ACTION=20;AWKID=885799;PROVID=2084 WARENKROB]&#039;&#039;&#039; bei Reichelt hinterlegt.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
==== Streifenplatinen ====&lt;br /&gt;
Die Platine hat ein Maß von 314 x 12 mm und ist auf die Word-Clock-Front-Varianten A und B (also 450mm x 450mm) ausgelegt.&lt;br /&gt;
&lt;br /&gt;
Der Abstand der einzelnen LEDs beträgt 28.1mm&lt;br /&gt;
&lt;br /&gt;
Die Streifenplatine wird so ausschauen: (Version 8 vom 06.März 2010)&lt;br /&gt;
&lt;br /&gt;
[[Datei:LED_Streifen_V6_1.png|750px|Streifenplatine für SMD RGB LEDs Version 8]]&lt;br /&gt;
&lt;br /&gt;
[[Datei:LED_Streifen_V6_1_bestueckt.jpg|750px|Erster Streifen bestückt]]&lt;br /&gt;
&lt;br /&gt;
Erste Streifenplatine bestückt.&amp;lt;br&amp;gt;&lt;br /&gt;
Weitere Beispiel-Photos der bestückten Streifenplatinen sind [http://www.mikrocontroller.net/topic/156661#1780198 hier] zu finden.&lt;br /&gt;
&lt;br /&gt;
Ausschnitt vergrößert dargestellt:&lt;br /&gt;
&lt;br /&gt;
[[Datei:LED_Streifen_V6_1_schnitt.png|500px|Aussschnitt]]&lt;br /&gt;
&lt;br /&gt;
Datenblatt der LED mit Bestückungsinfos: [[Datei:SMD RGB PLCC-6 datasheet3.pdf]]&lt;br /&gt;
&lt;br /&gt;
Hier ist die Bestückung aller Streifen schematisch detailliert gezeigt: &amp;lt;br&amp;gt; [http://www.mikrocontroller.net/topic/156661?goto=1671369#1671369 Beitrag] &amp;lt;br&amp;gt;&lt;br /&gt;
Bestückungstabelle: [[Datei:2012WordClockLEDMatrix.pdf]] &amp;lt;br&amp;gt;&lt;br /&gt;
Bestückungsgrafik: [[Datei:2012WordClockLEDMatrix_wiring_v22.pdf]]&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
==== Technische Daten der SMD RGB PLCC-6 LEDs ====&lt;br /&gt;
Spezifikation&lt;br /&gt;
* Source Material: InGaN&lt;br /&gt;
* Emitting Colour: SMD SMT 5050 RGB&lt;br /&gt;
* LENS Type: Water clear&lt;br /&gt;
* Reverse Voltage: 5.0 V&lt;br /&gt;
* Viewing Angle: 140 degree&lt;br /&gt;
* Lead Soldering Temp: 260°C for 5 seconds&lt;br /&gt;
&lt;br /&gt;
Absolute Maximum Rating (Ta = 250C)&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! PARAMETER || Symbol || RED || GREEN || BLUE || UNITS&lt;br /&gt;
|-&lt;br /&gt;
| Power Dissipation || PO || align=&amp;quot;right&amp;quot; | 80 || align=&amp;quot;right&amp;quot; | 95 || align=&amp;quot;right&amp;quot; | 85 || mW&lt;br /&gt;
|-&lt;br /&gt;
| DC Current || IF || align=&amp;quot;right&amp;quot; | 20 || align=&amp;quot;right&amp;quot; | 20 || align=&amp;quot;right&amp;quot; | 20 || mA&lt;br /&gt;
|-&lt;br /&gt;
| Peak Forward Current || IFP || align=&amp;quot;right&amp;quot; | 100 || align=&amp;quot;right&amp;quot; | 100 || align=&amp;quot;right&amp;quot; | 100 || mA&lt;br /&gt;
|-&lt;br /&gt;
| Reverse Voltage || VR || align=&amp;quot;right&amp;quot; | 5 || align=&amp;quot;right&amp;quot; | 5 || align=&amp;quot;right&amp;quot; | 5 || V&lt;br /&gt;
|-&lt;br /&gt;
| Operating Temperature || Topr || colspan=&amp;quot;3&amp;quot; align=&amp;quot;center&amp;quot; | -25 to +85 || °C&lt;br /&gt;
|-&lt;br /&gt;
| Storage Temperature || Tstg ||  colspan=&amp;quot;3&amp;quot; align=&amp;quot;center&amp;quot; | -40 to +85 || °C&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Electro-optical Characteristics (Ta = 250C)&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! PARAMETER || SYMBOL || CONDITIONS || MIN. || TYP. || MAX. || UNIT&lt;br /&gt;
|-&lt;br /&gt;
| Forward Voltage (B) || VF || IF = 20mA || align=&amp;quot;right&amp;quot; | 3.4 || align=&amp;quot;right&amp;quot; | 3.6 || align=&amp;quot;right&amp;quot; | 3.8 || V&lt;br /&gt;
|-&lt;br /&gt;
| Forward Voltage (G) || VF || IF = 20mA || align=&amp;quot;right&amp;quot; | 3.4 || align=&amp;quot;right&amp;quot; | 3.6 || align=&amp;quot;right&amp;quot; | 3.8 || V&lt;br /&gt;
|-&lt;br /&gt;
| Forward Voltage (R) || VF || IF = 20mA || align=&amp;quot;right&amp;quot; | 1.9 || align=&amp;quot;right&amp;quot; | 2.1 || align=&amp;quot;right&amp;quot; | 2.5 || V&lt;br /&gt;
|-&lt;br /&gt;
| Dominant Wavelength (B) || lD || IF = 20mA || align=&amp;quot;right&amp;quot; | 465 || align=&amp;quot;right&amp;quot; | 470 || align=&amp;quot;right&amp;quot; | 475 || nm&lt;br /&gt;
|-&lt;br /&gt;
| Dominant Wavelength (G) || lD || IF = 20mA || align=&amp;quot;right&amp;quot; | 515 || align=&amp;quot;right&amp;quot; | 520 || align=&amp;quot;right&amp;quot; | 525 || nm&lt;br /&gt;
|-&lt;br /&gt;
| Dominant Wavelength (R) || lD || IF = 20mA || align=&amp;quot;right&amp;quot; | 625 || align=&amp;quot;right&amp;quot; | 630 || align=&amp;quot;right&amp;quot; | 635 || nm&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Pin / Farbzuordnung:&lt;br /&gt;
* R: Pin 1 - 6&lt;br /&gt;
* G: Pin 2 - 5&lt;br /&gt;
* B: Pin 3 - 4&lt;br /&gt;
&lt;br /&gt;
[[Datei:plcc6_smd_RGB.JPG]]&lt;br /&gt;
----&lt;br /&gt;
==== Widerstandswerte für die LED Streifen ====&lt;br /&gt;
&lt;br /&gt;
Berechnet sind die Widerstände für eine Spannungsversorgung von 15V - abzgl. 1,4V durch den Spannungsabfall an den UDN2981. Ein solches Netzteil gibt es zB bei [http://www.pollin.de/shop/dt/MjU5OTQ2OTk-/Stromversorgung/Netzgeraete/Regelbare_Netzgeraete/EcoFriendly_Universal_Schaltnetzteil_MW_3H36GS.html Pollin] oder auch bei [http://www.reichelt.de/?ACTION=3;ARTICLE=89789;PROVID=2402 Reichelt]. &lt;br /&gt;
&lt;br /&gt;
&amp;quot;Beginner-Tipp&amp;quot;:&lt;br /&gt;
&lt;br /&gt;
Bitte lest zum Stichwort &amp;quot;Netzteil&amp;quot; im Forum nach. Es gibt hierzu einige Bemerkungen und Empfehlungen. So z. B. auch der Hinweis auf ein weiteres Netzteil von C*: [http://www.conrad.de/ce/de/product/512696/HN-POWER-HNP18-150-STECKER-NETZT-18W Netzteil_15V_1.2A]&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;
! colspan=&amp;quot;3&amp;quot; | |||| colspan=&amp;quot;3&amp;quot; | ....Widerstände E12.... |||| colspan=&amp;quot;3&amp;quot; | ....Widerstände E24.... ||&lt;br /&gt;
|- &lt;br /&gt;
! Streifen  || Wort  || LEDs |||| style=&amp;quot;color:red;&amp;quot; | Rot || style=&amp;quot;color:green;&amp;quot; | Grün || style=&amp;quot;color:blue;&amp;quot; | Blau |||| style=&amp;quot;color:red;&amp;quot; | Rot || style=&amp;quot;color:green;&amp;quot; | Grün || style=&amp;quot;color:blue;&amp;quot; | Blau || Anschluss&lt;br /&gt;
|- &lt;br /&gt;
| 1 ||  ES ||  2 ||||  560 ||  470 ||  470 ||||  510 ||  360 ||  360 || OUT14&lt;br /&gt;
|- &lt;br /&gt;
| {{H16}} | 1 || {{H16}} | K ||  ||||  ||  ||  ||||  ||  ||  ||&lt;br /&gt;
|- &lt;br /&gt;
| 1 || IST || 3 |||| 470 || 220 || 220 |||| 390 || 200 || 200 || OUT14&lt;br /&gt;
|- &lt;br /&gt;
| {{H16}} | 1 || {{H16}} | L ||  ||||  ||  ||  ||||  ||  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| 1 || FÜNF || 4 |||| 330 || 33 || 33 |||| 300 || 27 || 33 || OUT16&lt;br /&gt;
|-{{H12}}&lt;br /&gt;
| 2 || ZEHN || 4 |||| 330 || 33 || 33 |||| 300 || 27 || 33 || OUT17&lt;br /&gt;
|-{{H12}}&lt;br /&gt;
| 2 || ZWAN || 4 |||| 330 || 33 || 33 |||| 300 || 27 || 33 || OUT18&lt;br /&gt;
|-{{H12}}&lt;br /&gt;
| 2 || ZIG || 3 |||| 470 || 220 || 220 |||| 390 || 200 || 200 || OUT18&lt;br /&gt;
|-&lt;br /&gt;
| 3 || DREI || 4 |||| 330 || 33 || 33 |||| 300 || 27 || 33 || OUT19&lt;br /&gt;
|-&lt;br /&gt;
| 3 || VIER || 4 |||| 330 || 33 || 33 |||| 300 || 27 || 33 || OUT20&lt;br /&gt;
|-&lt;br /&gt;
| 3 || TEL || 3 |||| 470 || 220 || 220 |||| 390 || 200 || 200 || OUT20&lt;br /&gt;
|-{{H12}}&lt;br /&gt;
| {{H16}} | 4 || {{H16}} | TG ||  ||||  ||  ||  ||||  ||  ||  ||&lt;br /&gt;
|-{{H12}}&lt;br /&gt;
| 4 || NACH || 4 |||| 330 || 33 || 33 |||| 300 || 27 || 33 || OUT21&lt;br /&gt;
|-{{H12}}&lt;br /&gt;
| 4 || VOR || 3 |||| 470 || 220 || 220 |||| 390 || 200 || 200 || OUT22&lt;br /&gt;
|- {{H12}}&lt;br /&gt;
| {{H16}} | 4 || {{H16}} | JM ||  ||||  ||  ||  ||||  ||  ||  ||  &lt;br /&gt;
|-&lt;br /&gt;
| 5 || HALB || 4 |||| 330 || 33 || 33 |||| 300 || 27 || 33 || OUT23&lt;br /&gt;
|- &lt;br /&gt;
| {{H16}} | 5 || {{H16}} | Q ||  ||||  ||  ||  ||||  ||  ||  || &lt;br /&gt;
|-&lt;br /&gt;
| 5 || ZWÖ || 3 |||| 470 || 220 || 220 |||| 390 || 200 || 200 || OUT13&lt;br /&gt;
|-&lt;br /&gt;
| 5 || LF || 2 |||| 560 || 470 || 470 |||| 510 || 360 || 360 || OUT13&lt;br /&gt;
|- &lt;br /&gt;
| {{H16}} | 5 || {{H16}} | P ||  ||||  ||  ||  ||||  ||  ||  ||&lt;br /&gt;
|-{{H12}}&lt;br /&gt;
| 6 || ZW || 2 |||| 560 || 470 || 470 |||| 510 || 360 || 360 || OUT0&lt;br /&gt;
|-{{H12}}&lt;br /&gt;
| 6 || EI || 2 |||| 560 || 470 || 470 |||| 510 || 360 || 360 || OUT1&lt;br /&gt;
|-{{H12}}&lt;br /&gt;
| 6 || N || 1 |||| 680 || 560 || 560 |||| 620 || 560 || 560 || OUT2&lt;br /&gt;
|-{{H12}}&lt;br /&gt;
| 6 || S || 1 |||| 680 || 560 || 560 |||| 620 || 560 || 560 || OUT3&lt;br /&gt;
|-{{H12}}&lt;br /&gt;
| 6 || IEB || 3 |||| 470 || 220 || 220 |||| 390 || 200 || 200 || OUT4&lt;br /&gt;
|-{{H12}}&lt;br /&gt;
| 6 || EN || 2 |||| 560 || 470 || 470 |||| 510 || 360 || 360 || OUT4&lt;br /&gt;
|- &lt;br /&gt;
| {{H16}} | 7 || {{H16}} | K ||  ||||  ||  ||  ||||  ||  ||  ||  &lt;br /&gt;
|-&lt;br /&gt;
| 7 || DREI || 4 |||| 330 || 33 || 33 |||| 300 || 27 || 33 || OUT5&lt;br /&gt;
|- &lt;br /&gt;
| {{H16}} | 7 || {{H16}} | RH ||  ||||  ||  ||  ||||  ||  ||  || &lt;br /&gt;
|-&lt;br /&gt;
| 7 || FÜNF || 4 |||| 330 || 33 || 33 |||| 300 || 27 || 33 || OUT7&lt;br /&gt;
|-{{H12}}&lt;br /&gt;
| 8 || ELF || 3 |||| 470 || 220 || 220 |||| 390 || 200 || 200 || OUT12&lt;br /&gt;
|-{{H12}}&lt;br /&gt;
| 8 || NEUN || 4 |||| 330 || 33 || 33 |||| 300 || 27 || 33 || OUT10&lt;br /&gt;
|-{{H12}}&lt;br /&gt;
| 8 || VIER || 4 |||| 330 || 33 || 33 |||| 300 || 27 || 33 || OUT6&lt;br /&gt;
|- &lt;br /&gt;
| {{H16}} | 9 || {{H16}} | W ||  ||||  ||  ||  ||||  ||  ||  ||  &lt;br /&gt;
|-&lt;br /&gt;
| 9 || ACHT || 4 |||| 330 || 33 || 33 |||| 300 || 27 || 33 || OUT9&lt;br /&gt;
|-&lt;br /&gt;
| 9 || ZEHN || 4 |||| 330 || 33 || 33 |||| 300 || 27 || 33 || OUT11&lt;br /&gt;
|- &lt;br /&gt;
| {{H16}} | 9 || {{H16}} | RS ||  ||||  ||  ||  ||||  ||  ||  ||  &lt;br /&gt;
|-{{H12}}&lt;br /&gt;
| {{H16}} | 10 || {{H16}} | B ||  ||||  ||  ||  ||||  ||  ||  ||  &lt;br /&gt;
|-{{H12}}&lt;br /&gt;
| 10 || SEC || 3 |||| 470 || 220 || 220 |||| 390 || 200 || 200 || OUT8&lt;br /&gt;
|-{{H12}}&lt;br /&gt;
| 10 || HS || 2 |||| 560 || 470 || 470 |||| 510 || 360 || 360 || OUT8&lt;br /&gt;
|-{{H12}}&lt;br /&gt;
| {{H16}} | 10 || {{H16}} | FM ||  ||||  ||  ||  ||||  ||  ||  ||  &lt;br /&gt;
|-{{H12}}&lt;br /&gt;
| 10 || UHR || 3 |||| 470 || 220 || 220 |||| 390 || 200 || 200 || OUT15&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Es werden somit folgende Widerstände aus der E24 Reihe benötigt:&lt;br /&gt;
&lt;br /&gt;
* 13x 27Ω&lt;br /&gt;
* 13x 33Ω&lt;br /&gt;
* 18x 200Ω&lt;br /&gt;
* 13x 300Ω&lt;br /&gt;
* 12x 360Ω&lt;br /&gt;
* 9x 390Ω&lt;br /&gt;
* 6x 510Ω&lt;br /&gt;
* 4x 560Ω&lt;br /&gt;
* 2x 620Ω&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
==== Ambilight-/LED-Streifenplatine bestücken ====&lt;br /&gt;
&lt;br /&gt;
&amp;quot;Beginner-Tipps&amp;quot;:&lt;br /&gt;
&lt;br /&gt;
Die Beschreibung zum Thema Ambilight ist im Forum etwas unübersichtlich. &lt;br /&gt;
&lt;br /&gt;
Sehr hilfreich zum Verständnis sind die Bilder von [http://www.mikrocontroller.net/topic/156661#1780198 Matthias]. Wichtig zum Verständnis ist auch der Hinweis auf die Drahtbrücken auf der Platinenunterseite vor der ersten LED eines Wortes. Es hat mir sehr geholfen, das Platinen-Layout-Schema und das Foto übereinander zu montieren.&lt;br /&gt;
&lt;br /&gt;
[[Datei:LED-Platine.jpg|miniatur]]&lt;br /&gt;
&lt;br /&gt;
Anhand der [http://www.mikrocontroller.net/articles/Word_Clock_Variante_1#Widerstandswerte_f.C3.BCr_die_LED_Streifen Tabelle] kann man erkennen, dass die Widerstände im Ambilight-Paket (300 Ohm = rot, 27 Ohm = grün, 33 Ohm = blau) für 2 x 4 LEDs in Serie ausgelegt sind. &lt;br /&gt;
&lt;br /&gt;
Man kann also 2 x 4 LEDs hinter einander löten oder die Variante von Christian aufgreifen der die LEDs physikalisch in 2er Gruppen angeordnet hat. Durch Drahtbrücken werden diese 2er Gruppen aber dann elektrisch zu zwei 4er Gruppen: LED-LED-Bügel-LED-LED-frei-LED-LED-Bügel-LED-LED, so dass auch für diese Version die Widerstände passen.&lt;br /&gt;
&lt;br /&gt;
Update Jan 2014: ich habe für die Amiblight-Platinen nach dem Muster LED-LED-Bügel-LED-LED-frei-LED-LED-Bügel-LED-LED diese Schemazeichnung mit Lötpunkten und ganz kurzen Drahtbrücken angefertigt:&lt;br /&gt;
&lt;br /&gt;
[[Datei:Ambilight-wiring-2x2x2x2-Leds-KHK.png|miniatur]]&lt;br /&gt;
&lt;br /&gt;
Persönlicher Kommentar KHK: &lt;br /&gt;
Ich habe inzwischen die zweite Wordclock fertig gestellt. Beim ersten Mal habe ich die LED-Streifenplatinen/Ambilight-Streifen ohne sie zu trennen bestückt. Das war schön übersichtlich und einfach zu löten. Das Trennen der fertig gelöteten Streifen war aber sehr schwierig. Bei der zweiten Wordclock habe ich die LED-Streifen vor der Bestückung mit einer Hebelschere getrennt. Das ging super einfach und hat mir viel Mühe gespart. Fazit: Trennt bitte die LED-Streifen vor der Bestückung ab! Ihr spart Euch viel Mühe und Stress.&lt;br /&gt;
&lt;br /&gt;
Beginner-Tipp: Das Ambilight wird mit OUTG2 angesteuert (Steuerplatine Version 1.1).&lt;br /&gt;
&lt;br /&gt;
==== LED-Streifen: Logik ====&lt;br /&gt;
&lt;br /&gt;
* Das Signal für die R/G/B PWM wird für jede Streifenplatine seitlich zugeführt (&amp;quot;R/G/B-Ausgangssignal&amp;quot;). Wichtig: nicht alle Platinen hintereinanderschalten, sondern die einzelnen Streifen parallel schalten (sonst werden die Leiterbahnen der ersten Platinen immer mit dem vollen Strom belastet). &lt;br /&gt;
&lt;br /&gt;
* Das &amp;quot;R/G/B-Ausgangssignal&amp;quot; wird vor jedem Wort auf den Vorwiderstand geführt. Dazu ist es notwendig das &amp;quot;R/G/B-Ausgangssignal&amp;quot; von den gemeinsamen Leiterbahnen (R,G,B) mit Draht- (R und G) bzw. einer Lötbrücke (B) auf die Vorwiderstände zu legen. &lt;br /&gt;
&lt;br /&gt;
* Innerhalb eines Wortes werden die vier Signale (PWM R/G/B + COM) über Lötbrücken von einem Buchstaben zum anderen weitergeführt. &lt;br /&gt;
&lt;br /&gt;
* Am Ende eines Wortes werden die Ausgänge 1, 2 und 3 der LED mit Lötbrücken zusammengeführt und gehen auf COM. &lt;br /&gt;
&lt;br /&gt;
* Eine Besonderheit ergibt sich bei &amp;quot;Leerzeichen&amp;quot; - wie z. B. beim Ambilight oder bei &amp;quot;Es(leer)ist&amp;quot;: &lt;br /&gt;
** Die COM Leitung wird durch zwei Lötbrücken links und rechts des zu überbrückenden Segments weitergeleitet. &lt;br /&gt;
** Das &amp;quot;R/G/B-Ausgangssignal&amp;quot; für den ersten Buchstaben nach dem &amp;quot;Leerzeichen&amp;quot; wird wieder mit den Draht-/Lötbrücken zugeführt, die auch vor Wörtern verwenden werden.&lt;br /&gt;
&lt;br /&gt;
Für jedes Wort wird (irgendwo) COM vom den Ausgängen OUTx zugeleitet.&lt;br /&gt;
&lt;br /&gt;
==== LED-Streifen: Zusammenfassung Löten ====&lt;br /&gt;
&lt;br /&gt;
* Widerstände sind immer am Anfang eines Wortes. Individuelle Werte für R/G/B je nach Länge des Wortes.&lt;br /&gt;
* Lötzinnbrücken sind&lt;br /&gt;
** am Anfang eines Wortes bei B&lt;br /&gt;
** am Anfang einer Streifenplatine bei B (hier sind keine Drahtbrücken nötig)&lt;br /&gt;
** am Ende eines Wortes von LED1/LED2/LED3 auf COM&lt;br /&gt;
** in der Mitte eines Wortes vor allen LED (außer der Ersten) zum Ersatz des Vorwiderstandes&lt;br /&gt;
** Zusätzlich zum Überbrücken von &amp;quot;Leerstellen&amp;quot; nur bei COM vor und nach dem Segment (da, wo zwischen zwei Zeichen sonst alle 4 Lötbrücken gesetzt werden)&lt;br /&gt;
* Drahtbrücken an der Platinenunterseite gibt es:&lt;br /&gt;
** vor einem neuen Wort zu R und G&lt;br /&gt;
** nach einer &amp;quot;Leerstelle&amp;quot; zu R und G (= identisch zu 1)&lt;br /&gt;
* Für jedes Wort wird (irgendwo) COM vom den Ausgängen OUTx zugeleitet.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
=== Sammelbestellung LED-Platinen ===&lt;br /&gt;
Es werden folgende 3 Pakete angeboten:&lt;br /&gt;
* Paket 1 (Uhr) - 66,20Eur : 1 Single-LED-Platine, 100 RGB-PLCC6-LEDs und 155 SMD-Widerstände&lt;br /&gt;
* Paket 2 (Ambilight) - 17,00Eur : 4 Streifenplatinen, 32 RGB-PLCC6-LEDs und 45 SMD-Widerstände&lt;br /&gt;
* Paket 3 (Uhr - alte Version) - 52,20Eur : 11 Streifenplatinen, 100 RGB-PLCC6-LEDs und 155 SMD-Widerstände&lt;br /&gt;
&lt;br /&gt;
Für das neue SingleBoard (Paket 1) werden zusätzliche Bauteile benötigt. Diese sind in einem eigenen Reichelt Warenkorb zusammen gestellt:&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;gt;&amp;gt; http://www.reichelt.de/?ACTION=20;AWKID=847662;PROVID=2084&lt;br /&gt;
&lt;br /&gt;
Und folgende Einzelpositionen:&lt;br /&gt;
* RGB-PLCC6-LED einzeln - 0,35Eur&lt;br /&gt;
* Streifenplatine einzeln - 1,00Eur&lt;br /&gt;
* Single-LED-Platine einzeln - 25,00Eur&lt;br /&gt;
* Zwischenboden mit Ambilightausfräsung (MDF 19mm gefräst) - 37,50Eur&lt;br /&gt;
* Zwischenboden ohne Ambilightausfräsung (MDF 19mm gefräst) - 37,50Er&lt;br /&gt;
* programmierter ATMega168 - 3,55Eur&lt;br /&gt;
&lt;br /&gt;
Der Versand erfolgt bei nur LEDs / Widerständen / ATMega als MaxiBrief mit Einschreiben.&lt;br /&gt;
* innerhalb BRD (ohne Inseln) - 4,00Eur&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Der Versand mit Streifenplatinen erfolgt als kleines Paket:&lt;br /&gt;
* innerhalb BRD (ohne Inseln) - 5,20Eur&lt;br /&gt;
* Österreich und Schweiz - 9,00Eur&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Der Versand mit Zwischenboden (max 8 Böden pro Paket) oder Single-LED-Platine wird als Paket versendet:&amp;lt;br&amp;gt;&lt;br /&gt;
* innerhalb BRD (ohne Inseln) - 6,50Eur&amp;lt;br&amp;gt;&lt;br /&gt;
* Österreich - 16,00Eur&amp;lt;br&amp;gt;&lt;br /&gt;
* Schweiz - 27,50Eur&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Es fallen jeweils nur die höheren Versandkosten an.&lt;br /&gt;
&lt;br /&gt;
Werden mehrere Pakete bestellt, können die tatsächlichen Versandkosten von den hier gezeigten Versandkosten abweichen. Diese ist dann von der bestellten Menge und dem Gewicht abhängig.&lt;br /&gt;
&lt;br /&gt;
Bei Interesse bitte per PN melden (Benutzer [http://www.mikrocontroller.net/user/show/wawibu wawibu])&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Zeitplanung&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;table border=1&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;Datum&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Aktion&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;bis 15.Februar 2015&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Sammeln der Bestellungen&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;17.Februar 2015&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Bestellung geht raus&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;~06.März 2015&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Anlieferung bei mir&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;ab 13.März 2015&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Versand&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Als Alternative können die Pakete 1, 2 und 3 auch ohne Widerstände bei mir bestellt werden. Es werden dann folgende Warenkörbe benötigt:&lt;br /&gt;
&lt;br /&gt;
Widerstands-Warenkörbe bei Reichelt:&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;pro WordClock&#039;&#039;&#039;: https://secure.reichelt.de/?;ACTION=20;LA=5010;AWKID=292199;PROVID=2084&lt;br /&gt;
&amp;lt;br&amp;gt;&#039;&#039;&#039;zusätzlich fürs Ambilight&#039;&#039;&#039;: https://secure.reichelt.de/?;ACTION=20;LA=5010;AWKID=292202;PROVID=2084&lt;br /&gt;
&amp;lt;br&amp;gt;&#039;&#039;&#039;LEDs&#039;&#039;&#039; gibt es zB bei LED-Tech: http://www.led-tech.de/de/Leuchtdioden/SMD-LEDs/PLCC6-Superbright-RGB-SMD--5.0x5.0mm--LT-1178_1_2.html&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;Die LEDs von LED-Tech haben in der Zwischenzeit eine andere PinBelegung und sind somit nicht 1:1 nutzbar. Der R und B Kanal sind dort anders als bei den LEDs aus der Sammelbestellung. Werden die LEDs von LED-Tech verwendet, muss darauf geachtet werden, das diese beiden Kanäle vertauscht sind!&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== Anschluss eines DCF77-Moduls ==&lt;br /&gt;
&lt;br /&gt;
Der Anschluss eines DCF77-Moduls ist optional. Wird ein DCF77-Modul angeschlossen, kann mittels einer LED der DCF77-Empfang angezeigt werden. Die LED blinkt dann im Sekundenrhytmus und zeigt direkt die empfangenen DCF77-Impulse. Der Empfang wird kurze Zeit nach dem Einschalten aktiviert bzw. jede Stunde wiederholt. &lt;br /&gt;
&lt;br /&gt;
Die DCF77-LED kann folgendermaßen angeschlossen werden:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;TODO&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Bei Anschluss des DCF77-Moduls von Reichelt ist folgendes zu beachten:&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
*Es sollte direkt auf den Lötaugen des Reichelt-DCF77-Moduls ein Abblock-Kondensator von 100nF zwischen den Pins +UB und GND aufgelötet werden&lt;br /&gt;
&lt;br /&gt;
*Der Eingang PON muss offen bleiben - entgegen den (falschen) Angaben im Reichelt Datenblatt!&lt;br /&gt;
&lt;br /&gt;
*Das DCF77-Modul von Reichelt braucht eine Synchronisierungszeit von mindestens 10 Sekunden. Erst dann arbeitet der Empfänger.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Beim Anschluss des Conrad-Moduls ArtNr. 641138 ist folgendes zu beachten:&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
*Es muss der nicht-invertierte Open-Collector-Ausgang Pin 3 als Signal an die WordClock angeschlossen werden.&lt;br /&gt;
&lt;br /&gt;
Ein Max232 der zur Kontrolle angeschlossen ist, kann den DCF Empfang stören. Ohne Max232 verbessert sich der Empfang deutlich.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Da einige berichtet haben, dass der DCF-Empfang bei den Reichelt-Modulen oftmals gestört ist, hier ein Tipp von Carsten Wille, wie man den Empfang durch Hinzufügen weniger Bauteile wesentlich verbessern kann:&#039;&#039;&#039; [http://www.mikrocontroller.net/topic/156661?goto=1929382#1929382 Beitrag: Brauche Hilfe beim Bau einer Uhr]&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Für Nutzer eines Pollin DCF77 Moduls ist aufgrund des nicht belastbaren Ausgangs eine kleine Hilfsplatine empfehlenswert. Siehe dazu auch [http://www.mikrocontroller.net/topic/156661?goto=3465678#3465682 Beitrag: Brauche Hilfe beim Bau einer Uhr] Platinen sind vom Beitragsautor beziehbar&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Software =&lt;br /&gt;
Da die Software für die neuere Variante mit der gemeinsamen LED/Steuerplatine die gleiche ist, bitte da nachschauen, was Software, Downloads und Bugs angeht um.&lt;br /&gt;
https://www.mikrocontroller.net/articles/Word_Clock_Variante_1#Software&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Download ==&lt;br /&gt;
&lt;br /&gt;
Siehe voriger Abschnitt.&lt;br /&gt;
&lt;br /&gt;
https://www.mikrocontroller.net/articles/Word_Clock_Variante_1#Download&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
= Mechanik =&lt;br /&gt;
&lt;br /&gt;
Folgende Anleitung gilt für die Frontplatte aus Plexiglas und die Word Clock mit Ambilight, d. h. die Wandmontage erfolgt ohne Rahmen/Bilderrahmen.&lt;br /&gt;
Beim Bau meiner Word Clock habe ich definitiv mehr Zeit über mechanische Lösungen nachgedacht, als über die Elektronik/Programmierung. Vor allem die Recherche geeigneter Bezugsquellen hat Zeit gekostet und die Lieferzeit hat den Bau der Uhr sehr verzögert. Ich hoffe, dass diese Anleitung hilft, etwas Zeit zu sparen.&lt;br /&gt;
&lt;br /&gt;
== Vorbereiten der Zwischenplatte == &lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
Datei:1-mdf-spachtel.jpeg&lt;br /&gt;
Datei:2-gespachtelte-kante.jpeg|Die Seitenfläche nach den Auftragen der Spachtelmasse.&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Damit die Zwischenplatte optisch gut zur Frontplatte passt, muss diese lackiert werden. Im vorliegenden Vorschlag wurde die Zwischenplatte an den Seiten mit wasserbasiertem Acryllack schwarz lackiert. &lt;br /&gt;
&lt;br /&gt;
Die MDF Platte kann grundiert oder gespachtelt werden. In diesem Beispiel wurde die Platte mit  &amp;quot;Holz und MDF Spachtel” (z. B. Decotric, siehe Amazon) vorbehandelt. Eine geeignete Grundierung wäre z. B. “MDF Grundierung Grund Vorbehandlung” von Molto. Die Grundierung ist leichter zu verarbeiten. Mit der Spachtelmasse kann man allerdings unerwünschte Löcher verschließen. Die Masse muss einige Stunden aushärten, bevor sie geschliffen werden kann. Am besten beginnt man daher den Bau mit der Word Clock mit dieser Vorarbeit. In der Wartezeit kann die Elektronik zusammengelötet werden. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
Datei:3-Kante-sw-gestrichen.jpeg|Die Zwischenplatte sollte vor der Montage der Elektronik vorbereitet werden. Der Mülleimer ist ein perfekter und stabiler Halter während des Streichen: einfach zu drehen, man macht sich die Finger nicht voll Farbe und man kann alle Seiten auf einmal streichen.&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nach dem Aushärten wurde die Oberfläche mit Schmirgelpapier geschliffen (P240) und anschließend dreimal lackiert. Die erste und zweite Lackschicht wurde jeweils mit P400 Schmirgelpapier geglättet. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
Datei:4-platine-fertig-in-hand.jpeg|&lt;br /&gt;
Datei:5-platine-fertig-in-zwischenplatte.jpeg|&lt;br /&gt;
Datei:6-platine-fertig-in-zwischenplatte-ohne-fraesung.jpeg|&lt;br /&gt;
Datei:7-platine-fertign-in-zwischenplatten-mit-fraesung.jpeg|&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Leider ist mir beim Einlöten der Komponenten nicht aufgefallen, dass die Batterie und IC2 (7805) sehr hoch sind. Da ich die Beinchen der Batterie schon zu kurz abgeschnitten hatte, konnte ich die Batterie nicht mehr einfach umbiegen, so dass dieses Problem nur noch durch angelötete Kabel zu lösen war. Die Batterie wird nun einfach neben die Steuerplatine gelegt. Den 7805 konnte ich durch Umbiegen etwas in seiner Höhe reduzieren. Der Platz für den umgebogenen 7805 wurde mit einer Fräse im Multitool/Dremel geschaffen.&lt;br /&gt;
&lt;br /&gt;
Im Nachhinein betrachtet hätte ich mir diese Mühe sparen können, da durch die Befestigung mit dem Spiegelbefestigungsset (siehe unten) die Höhe kein Problem mehr ist. Ebenfalls etwas zu spät habe ich im Forum Bilder einer Lösung gesehen, bei der die Ausfräsung für Batterie und 7805 in Richtung des äußeren Randes und nicht wie bei mir in Richtung der LEDs gelöst worden war. Im äußeren Rahmen ist genug Platz für eine Ausfräsung, die es erlaubt, die Batterie und den 7805 horizontal einzulöten.&lt;br /&gt;
&lt;br /&gt;
== Befestigung der Frontplatte (“Plexiglasvariante”) an der Zwischenplatte ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
Datei:8-holzbohrer-8mm-mit-tiefenmarkierung.jpeg|8 mm Holzbohrer mit improvisierter Tiefenmarkierung.&lt;br /&gt;
Datei:9-bohrung-fuer-magnet-1.jpeg|Fertige Bohrung. An der Kante unter dem Loch sieht man die Spachtelmasse. Während die Spachtelmasse noch trocknet, können bereits die Magnete montiert werden.&lt;br /&gt;
Datei:10-bohrung-fuer-magnet-2.jpeg|Zentral wird eine 2 mm Bohrung ergänzt, damit der Magnet bei Fehlpositionierung wieder ausgestossen werden könnte.&lt;br /&gt;
Datei:11-bohrung-fuer-magnet-3.jpeg|Zur Veranschaulichung: der Magnet könnte mit dem 2 mm Bohrer ausgestossen werden. &lt;br /&gt;
Datei:12-magnet-1.jpeg|&lt;br /&gt;
Datei:13-magnet-mit-werkzeug.jpeg|Die Magnete habe eine ganz gute Presspassung. Mit Hilfe eines Zwischenhölzchens zum Schutz des Magneten können sie in das Loch gehämmert werden.&lt;br /&gt;
Datei:14-magnet-2.jpeg|&lt;br /&gt;
Datei:15-magnet-3.jpeg|&lt;br /&gt;
Datei:16-magnet-4.jpeg|&lt;br /&gt;
Datei:17-magent-mit-kleinem-magnet-1.jpeg|Der 8 mm x 4 mm Magnet wird 0.5 mm unter die Oberfläche der Zwischenplatte gepresst, damit auch der 8 mm x 0.5 mm Magnet flächenbündig befestigt werden kann.&lt;br /&gt;
Datei:18-magent-mit-kleinem-magnet-2.jpeg|Hier ist der 8 mm x 0.5 mm Magnet in der Bohrung. Damit sich der 8 mm x 0.5 mm Magnet durch Verschieben von dem 8 mm x 4 mm Magneten lösen lässt, muss die Kante der Bohrung abgeschrägt werden.&lt;br /&gt;
Datei:19-anschraegung-fuer-kleinen-magnet.jpeg|Durch die Abschrägung am Rand der Bohrung (Universalmesser, Taschenmesser oder Dremel-Fräse) gleitet der 8 mm x 0.5 mm Magnet leicht aus der Befestigung und läßt sich so mit wenig Kraft vom 8 mm x 4 mm Magnet lösen.&lt;br /&gt;
Datei:20-alu-isolation-magnet-vor-klebung.jpeg|Vor dem Kleben wird die Holzoberfläche und der 8 mm x 4 mm Magnet mit Hilfe einer dünnen Folie (fixiert durch den 8 mm x 0.5 mm Magnet) isoliert (hier: Haushalts-Alu-Folie). Der Kleber wird sehr dünn aufgetragen, um Überschüsse zu vermeiden.&lt;br /&gt;
Datei:21-fertig-geklebt-magnete-frontplatte.jpeg|Rückseite der Frontplatte nach der Klebebefestigung der vier 8 mm x 0.5 mm Magneten. Alle vier Magnete wurden in einem Arbeitsgang geklebt. Die Ausrichtung der Plexiglasscheibe erfolgte von Hand. Die Oberfläche wurde mit einem alten Handtuch geschützt und mit Gewicht beschwert, während der Kleber auspolymerisierte.&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Für die Befestigung der Frontplatte an der Zwischenplatte wurden im Forum schon einige Lösungen besprochen.&lt;br /&gt;
&lt;br /&gt;
Man kann die Frontplatte z. B. mit Magneten befestigen oder direkt auf die Zwischenplatte kleben.&lt;br /&gt;
&lt;br /&gt;
Als Kleber wird meist ein Zweikomponentenkleber auf Epoxidharzbasis verwendet (z. B. Uhu Plus Sofortfest, Uhu Plus schnellfest, Uhu Plus Endfest 300...), da dieser keine Lösungsmittel enthält, die Plexiglas oder die Tinte des Frontplattendrucks anlösen. Im Forum wird bemerkt, dass der Kleber dünn aber vollflächig aufgetragen wurde. &lt;br /&gt;
&lt;br /&gt;
Im Folgenden wird eine einfache Methode beschrieben, die Frontplatte mit Magneten zu befestigen.  Diese Methode hat den Vorteil, dass man die empfindliche Frontplatte abnehmen kann, wenn man an der Word Clock arbeitet. Die Magnete können ohne aufwendige Werkzeuge befestigt werden. &lt;br /&gt;
&lt;br /&gt;
Ich habe mich für runde Magnete entschieden, weil man diese mit einer einfachen Bohrung befestigen kann. Die Haftkraft von vier 8 mm x 4 mm Magneten reicht aus, die Plexiglas-Frontplatte sicher zu tragen. Ich habe die Haftkraft bewusst nicht überdimensioniert, da ich Bedenken habe, dass starke Magnete beim Abnehmen der Frontplatte die Farbschicht von der Plexiglasplatte beschädigen könnten. &lt;br /&gt;
&lt;br /&gt;
Ich verwende zwei Magnete. Der dickere Magnet wird in der Zwischenplatte versenkt. Der dünnere Magnet wird an die Frontplatte geklebt. Der dünnere Magnet hat den gleichen Durchmesser wie der dickere Magnet, er ist jedoch nur 0.5 mm dick. &lt;br /&gt;
&lt;br /&gt;
Ein wesentliches Argument für die Verwendung von zwei Magneten anstelle der im Forum beschriebenen Lösung “1 Magnet und eine angeklebte Beilagscheibe” ist die Positioniergenauigkeit. Bei meinen Versuchen mit der Kombination Metall + Magnet hatte ich immer das Problem, dass der Magnet leicht seitlich verschoben werden konnte. Dies ist bei der Kombination Magnet + Magnet nicht möglich. Der flache Magnet wurde ebenfalls bewusst ausgewählt. Der Grund ist, dass zwei aneinander haftende Magnete nur schwer in axialer Richtung getrennt werden können. Es ist dagegen relativ einfach, die beiden Magneten durch seitliche Verschiebung zu trennen. Um die Plexiglasscheibe mit angeklebten Magneten seitlich verschieben zu können, dürfen die Magnete, die auf das Plexiglas geklebt werden, nicht zu hoch sein. Da die Plexiglasplatte ohne Luftspalt bündig auf der Zwischenplatte aufliegen soll, muss der Platz für den 0.5 mm Magnet auf der Seite der Zwischenplatte geschaffen werden. &lt;br /&gt;
&lt;br /&gt;
Theoretisch müsste man für beide Magneten in die Zwischenplatte ein 8 mm Loch mit einer Tiefe von 0.5 mm + 4.0 mm = 4.5 mm bohren. Damit der 0.5 mm dicke Magnet durch Verschieben entfernt werden kann, wird der Rand der Bohrung so angeschrägt, dass der Magnet seitlich verschoben werden kann. &lt;br /&gt;
&lt;br /&gt;
Da ich keine Bohrständer habe, wurde die Bohrungen freihändig mit einem 8 mm Holzbohrer im Akkuschrauber ausgeführt. Mit Hilfe eines Klebestreifens wurde die ungefähre Bohrtiefe festgelegt. &lt;br /&gt;
Im Zentrum der 8 mm Sacklochbohrung wurde zusätzlich eine 2 mm Bohrung durch die Zwischenplatte angefertigt. In diese kann man von der Unterseite mit den 2 mm Bohrer stecken und bei Bedarf den Magneten wieder ausstoßen. Ursprünglich dachte ich, den 8 mm x 4 mm Magneten festkleben zu müssen. Die Passgenauigkeit war jedoch so gut, dass ich den 8 mm x 4 mm Magneten einfach in die Bohrung pressen konnten (mit Hilfe eines kleinen Hölzchens und eines kleinen Hammers). &lt;br /&gt;
&lt;br /&gt;
Der 8 mm x 0.5 mm Magnet wird gemeinsam mit dem 8 mm x 4 mm Magnet so in die Bohrung gepresst, dass seine Oberfläche mit der Zwischenplatte bündig abschließt. Anschließend wird der kleine Magnet mit einem spitzen Gegenstand (z. B. Taschenmesser) entfernt und der Rand abgeschrägt (Dremel und Schleifsteinchen bzw. Fräser). &lt;br /&gt;
&lt;br /&gt;
Vor der Klebebefestigung an der Plexiglasscheibe wird das Holz und der 8 mm x 4 mm Magnet mit einer dünnen Folie vor Kleberüberschuss geschützt. In meinem Fall habe ich Haushalts-Alu-Folie verwendet. Für die Klebung werden die 8 mm x 0.5 mm Magneten an dem fest gepressten 8 mm x 4 mm Magneten fixiert. Der Kleber wird dünn auf die Oberfläche des 8 mm x 0.5 mm Magneten aufgetragen, die Plexiglasscheibe korrekt positioniert und mit Hilfe von Gewichten während der Aushärtphase fixiert. Ich habe alle Magnete auf einmal geklebt. &lt;br /&gt;
&lt;br /&gt;
Die einzelnen Arbeitsschritte sind auf den Bildern zu erkennen.&lt;br /&gt;
&lt;br /&gt;
=== Bezugsquelle der Magnete ===&lt;br /&gt;
&lt;br /&gt;
Neotexx, Herweghstr. 11, 12487	Berlin ( http://www.neomagnete.com )&lt;br /&gt;
&lt;br /&gt;
Folgende Magnete wurden verwendet:&lt;br /&gt;
&lt;br /&gt;
* Cylinder 8x0.5 mm, Dimension: D8x0.5mm, NdFeB Magnet in N48 (1.42 Tesla), Magnetized Direction: through 0.5mm (axial), Coating: Nickel, item # Z-008-000.5-N &lt;br /&gt;
* Cylinder 8x4 mm, Dimension: D8x4mm, NdFeB Magnet in N48 (1.42 Tesla), Magnetized Direction: through 4mm, Coating: Nickel, item # Z-008-004-N&lt;br /&gt;
&lt;br /&gt;
Wer den Mindestbestellwert (10€) und die vergleichsweise hohen Versandkosten (5,50€) scheut, kann mir (User [http://www.mikrocontroller.net/user/show/Stoerte Stoerte]) eine PN-Schicken. Ich habe etwas großzügiger bestellt und würde die übrigen Magnete zu folgenden Paketen (Paket 2 für den Fall, dass man eine zweite Frontplatte zum Wechseln bestücken will) abgeben:&lt;br /&gt;
&lt;br /&gt;
* Paket 1: 4x D8x4mm + 4x D8x0.5mm = 4,50€ + 1,50€ Versand&lt;br /&gt;
* Paket 2: 4x D8x4mm + 8x D8x0.5mm = 6,00€ + 1,50€ Versand&lt;br /&gt;
&lt;br /&gt;
== Befestigung der Platinen ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
Datei:22-bueroklammer-pin.jpeg|Befestigungspin aus Büroklammerdraht.&lt;br /&gt;
Datei:23-led-streifen-mit-pins.jpeg|Die Pins werden in der Ausfräsung verkeilt und fixieren die LED-Streifenplatinen, können aber jederzeit wieder leicht gelöst werden.&lt;br /&gt;
Datei:24-min-platine-mit-pin.jpeg|Auch die Kabel und Minuten-LED-Platinen können mit Pins fixiert werden.&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
An der Zwischenplatte müssen folgende Komponenten befestigt werden:&lt;br /&gt;
&lt;br /&gt;
* Steuerelektronik&lt;br /&gt;
* LED-Platinen Word Clock&lt;br /&gt;
* LED-Platinen Ambilight&lt;br /&gt;
* Netzteil&lt;br /&gt;
* DCF77-Modul&lt;br /&gt;
* Kabel&lt;br /&gt;
&lt;br /&gt;
Die einfachste Lösung ist die Klebebefestigung mit Heißkleber oder einem anderen geeigneten Kleber. Die Klebemethode hat jedoch den Nachteil, dass die Klebung nicht so leicht wieder gelöst werden kann. Aus diesem Grund wurde eine reversible Alternative gesucht. &lt;br /&gt;
&lt;br /&gt;
Die vorgeschlagene Methode wirkt zwar auf den ersten Blick nicht sehr professionell, funktioniert aber sehr gut. So musste ich einige Male Korrekturen an den LED Platinen vornehmen, weil sich z. B. bei meinen „Manipulationen“ Kabel gelöst haben. &lt;br /&gt;
&lt;br /&gt;
Die Lösung ist relativ einfach. Ein harter Draht (in meinem Fall 0,8 mm dicker Federdraht, wird z. B. bei Kieferorthopäden verwendet, als Alternative kann man aber auch Büroklammerdraht verwenden) wird etwas länger abgezwickt, als die Ausfräsung für die Platine oder die Kabel ist. Der Draht kann in die relativ weiche MDF Platte so verkeilt werden, dass die Platine oder Kabel gut halten. Es ist sinnvoll, den Draht an beiden Enden abzuzwicken. Dadurch entstehen zwei scharfe Enden, die sich leichter im MDF verankern lassen. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
Datei:25-dcf-77-geklebt.jpeg|DCF-77 Modul und Ferritantenne. Befestigung mit Heisskleber.&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Als Befestigung für die Ambilight-LED Streifen sowie  das DCF-77 Modul habe ich leider keine bessere Lösung gefunden, als die Befestigung mit Heißkleber. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
Datei:26-netzteil.jpeg|&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die Steuerplatine wird durch die angeschlossenen Kabel sicher in ihrer Position gehalten. &lt;br /&gt;
&lt;br /&gt;
Das modifizierte Conrad-Netzteil hält durch Klemmpassung in der Aussparung. Achtung: an der Unterseite der Platine liegen die 220 V Anschlüsse frei. Das ist kein Problem, sobald die Uhr an der Wand befestigt ist. Um sicherzustellen, dass niemand aus Versehen die Platine von der Seite berühren kann, wurde das Oberteil des Gehäuses als Berührschutz belassen. Beachten Sie dies bitte bei der Montage. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
Datei:27-uhr-wand-mit-ambilight.jpeg|&lt;br /&gt;
Datei:28-uhr-wand-ohne-ambilight.jpeg|&lt;br /&gt;
Datei:29-uhr-wand-schraeg-1.jpeg|&lt;br /&gt;
Datei:30-uhr-wand-schraeg-2.jpeg|&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Diese Lösung ist nur von Relevanz, wenn die Stromversorgung direkt hinter der Uhr möglich ist. Dann sieht die Lösung allerdings sehr elegant aus:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
Datei:31-netzteil-1.jpeg|&lt;br /&gt;
Datei:32-netzteil-2.jpeg|&lt;br /&gt;
Datei:33-netzteil-3.jpeg|&lt;br /&gt;
Datei:34-netzteil-4.jpeg|&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Als Vorbereitung musste das Netzteilgehäuse geöffnet werden. Folgende Bilder zeigen den Innenaufbau und sollen so das Öffnen des Gehäuses erleichtern helfen. Das Gehäuse ist fest verklebt. Der Kleber kann nicht aufgesprengt werden (vielleicht würde es gehen, wenn man den Kleber mit einer Heißluftpistole ausreichend erwärmen würde ?). Ich habe mich für die Lösung entschieden, das Gehäuse entlang der Klebenaht mit einer Puk-Metallsäge aufzusägen, da ich noch nicht wusste, wie das Netzteil aufgebaut ist. Heute würde ich nur noch die Steckerpins absägen. Als Alternative zu dieser brachialen Methode habe ich geprüft, ob man ein Netzteil selbst bauen könnte. Ich bin aber zu den Schluss gekommen, dass es nicht wirklich möglich ist, ein eigenes Netzteil so preiswert und auch so klein wie das Conrad-Netzteil zu bauen.&lt;br /&gt;
&lt;br /&gt;
== Verkabelung ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
Datei:35-starre-draehte.jpeg|Für den ersten Versuch hatte ich Einzelader-Schaltdraht direkt auf die LED-Streifen gelötet. Leider neigte der Schaltdraht dazu, an den ungünstigsten Stellen zu brechen, wenn ich die Platinen bewegte, was allein schon zum Löten erforderlich war. &lt;br /&gt;
Datei:36-fliegender-aufbau.jpeg|Fliegender Aufbau... für den ersten Systemtest.&lt;br /&gt;
Datei:37-stecker-an-led-platine.jpeg|Erst die Verwendung von abgewinkelten Steckverbindern (Stiftleiste RM 2,54, gewinkelt Rastermaß: 2.54 mm, in Kombination mit der passenden Buchsenleiste RM 2,54 Rastermaß: 2.54 mm, Alternative: Stiftleiste RM 2,54, gewinkelt Rastermaß: 2.54 mm Polzahl: 3, 72645 BKL Electronic) vereinfachte die Montage der RGB-Verbindungen drastisch. &lt;br /&gt;
Datei:38-verkabelung-1.jpeg|Zusätzlich zu den Steckverbindern wurden keine starren Einzelkabel mehr verwendet, sondern flexible Drähte (bei mir: recycelte IDE-Festplattenkabel, alternativ: Flachbandkabel, RM 1,27; Polzahl: 50, 0.09 mm², Grau Sterner Kabel, ich werde beim nächsten Mal dieses Kabel testen: Flachbandkabel 3 x 0.14 mm², Gelb, Rot, Grün,  Sterner Kabel, Conrad Best.-Nr.: 605819 - 62).&lt;br /&gt;
&lt;br /&gt;
Auch für die Anschlüsse der Kabel von den Buchsensteckern K7 und K8 an die LED-Streifenplatinen waren die Steckverbinder sehr hilfreich. Die Einzelstecker habe ich, weil ich keine Alternativen hatte/kannte, von Buchsenleisten abgetrennt, was doch recht aufwendig war. Kennt jemand eine professionellere Lösung (Name, Bezugsquelle?)&lt;br /&gt;
Datei:39-verkabelung-2.jpeg|Sobald die Funktion erfolgreich getestet wurde, können die Kabel eingekürzt und schöner verlegt werden. Eigentlich wollte ich das Klebeband durch Heisskleber ersetzen. Aber nichts ist bekanntlich beständiger als ein Provisorium.&lt;br /&gt;
Datei:40-ir-und-ldr.jpeg|Der LDR und der Infrarot-Empfänger werden an der Unterseite der Word Clock auf leeren Plätzen der Amibilight-Platine befestigt. Für den IR-Empfänger reicht doppelseitiges Klebeband, der LDR kann mit einfachem Klebeband an den Beinchen fixiert werden. &lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
P.N. (http://www.mikrocontroller.net/topic/156661#2511143) hat eine elegante Lösung zur Befestigung des LDR und TSOP vorgeschlagen:&lt;br /&gt;
&lt;br /&gt;
&amp;quot;- Der TSOP sitzt bei mir hinter dem &amp;quot;S&amp;quot; (&amp;quot;WACHTZEHNRS&amp;quot;) und ist direkt&lt;br /&gt;
auf diese Streifenplatine eingelötet. Davor habe ich natürlich die&lt;br /&gt;
PWM-Leiterbahnen des letzten Feldes durchtrennt und die 3 Beinchen auf&lt;br /&gt;
Stiftleisten am Ende der Platine geroutet. Geht bei dem Layout ganz gut.&lt;br /&gt;
Der IR-Empfang ist auch durch die Frontplatte einwandfrei&lt;br /&gt;
&lt;br /&gt;
- Der LDR sitzt hinter dem &amp;quot;M&amp;quot; (&amp;quot;TGNACHVORJM&amp;quot;) und wurde ebenso an der&lt;br /&gt;
Steifenplatine befestigt und auf eine Stiftleiste gelegt. Zusätzlich hat&lt;br /&gt;
er noch einen &amp;quot;Schirm&amp;quot; aus einer Lochrasterplatine gegen Streulicht von&lt;br /&gt;
angrenzenden Buchstaben erhalten&amp;quot;&lt;br /&gt;
&lt;br /&gt;
== Wandbefestigung der Uhr ==&lt;br /&gt;
&lt;br /&gt;
[[Datei:41-spiegelblech-1.jpeg|miniatur|Minimal Montageset: Exzenterscheiben (oben), Spiegel-Haftmagnet (links und rechts aussen), Haftblech mit Kieme]]&lt;br /&gt;
[[Datei:42-spiegelblech-2.jpeg|miniatur|Das Haftblech mit Kieme wird mit der Metallsäge getrennt und Bohrungen zur Befestigung mit Schrauben werden ergänzt (rechts Original, links Modifikation)]]&lt;br /&gt;
[[Datei:43-spiegelhalterung-montiert.jpeg|miniatur|Fertig montierte Haftbleche]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Die Word Clock kann wie jedes Bild an der Wand befestigt werden. Eine elegante, bewährte und gut funktionierende Variante stellt die Befestigung mit einer sog. Spiegelbefestigung mit Haftmagneten dar. Die Komplettsets sind meist ziemlich teuer und die Befestigungsbleche sind für die Word Clock viel zu groß. &lt;br /&gt;
&lt;br /&gt;
Eine preisgünstige Lösung findet man bei:&lt;br /&gt;
&lt;br /&gt;
Leha-Technik&amp;lt;br/&amp;gt;&lt;br /&gt;
Burger Straße 63 A&amp;lt;br/&amp;gt;&lt;br /&gt;
42859 Remscheid&amp;lt;br/&amp;gt;&lt;br /&gt;
[http://www.leha.de www.leha.de]&lt;br /&gt;
&lt;br /&gt;
Hier kann man die Einzelkomponenten kaufen. Wichtig sind nur die Exzenterscheiben (2 Stück), die Haftmagneten (2 Stück) und die Haftbleche mit Kieme (2 Stück). Die Schrauben und Dübel sollten sich in der Bastelkiste finden (ich habe 6er Dübel, mit 4 x 50 mm Schrauben verwendet). Die Exzenterscheiben haben einen entscheidenden Vorteil. Wenn der Bohrer etwas verläuft oder wenn schon die Messung ungenau ist, kann man die Befestigung mit der Exzenterscheibe immer noch schön waagerecht ausrichten. &lt;br /&gt;
&lt;br /&gt;
Theoretisch könnte man auf die Magneten verzichten. In meinem Fall war jedoch hinter der Uhr eine Stromversorgung und die Kabel waren etwas steifer als gewünscht. Das hatte zur Folge, dass die Uhr von den Kabeln von der Wand abgehoben wurde und somit leicht schräg stand. Die Magneten haben dieses Problem sehr elegant gelöst. &lt;br /&gt;
&lt;br /&gt;
Das Haftblech mit Kieme wurde mit einer Eisensäge geteilt. Der Teil mit der Kieme ist mit 2.5 cm breit genauso breit, wie der Steg für die Befestigung. Da ich im Zusammenhang mit MDF kein Vertrauen zu dem Kleber hatte, wurden zwei Bohrungen ergänzt (3,5 mm Metallbohrer, improvisiertes Versenken der Schrauben mit einem 6 mm Metallbohrer, ich habe keinen speziellen Versenkbohrer). Das Blech wurde dann geklebt und mit 3 x 20 mm Spax-Schrauben befestigt. Die MDF Platte wurde vorher mit einem 2 mm Bohrer vor gebohrt. &lt;br /&gt;
&lt;br /&gt;
Der untere, abgetrennte Teil des Haftbleches wurde für den Magneten verwendet. Seine Breite passte ebenfalls perfekt zu den Befestigungsstegen. Auch diese Bleche wurden zusätzlich mit Schrauben befestigt.&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
! Anzahl x VPE !! Artikel !! Art.Nr.&lt;br /&gt;
|-&lt;br /&gt;
| 2 x Stück || Haftblech, mit Kieme - 70 x 70 mm (selbstklebend) 3 kg || 5208608&lt;br /&gt;
|-&lt;br /&gt;
| 2 x Stück || Spiegel-Haftmagnet || 5208601&lt;br /&gt;
|-&lt;br /&gt;
| 2 x Stück || Exzenterscheibe || 5208602&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
= Das erste Mal einschalten =&lt;br /&gt;
&lt;br /&gt;
=== LED-Streifen ===&lt;br /&gt;
&lt;br /&gt;
Nach dem Verlöten aller Bauteile der LED-Streifen sollten diese vor dem endgültigen Verbau noch geprüft werden:&lt;br /&gt;
&lt;br /&gt;
# Prüfung der drei PWM-Kanäle und der Steuerleitungen auf gegenseitige Kurzschlüsse&lt;br /&gt;
# Funktionsprüfung der LED-Streifen mittels direkter Versorgung durch ein Netzteil (PWM R/G/B an GND, OUT an 13.6V): Hierbei nacheinander die einzelnen Farben der jeweiligen Wörter anschließen und ggf. nacharbeiten, falls es &#039;mal dunkel bleiben sollte&lt;br /&gt;
&lt;br /&gt;
-&amp;gt; &amp;quot;Beginner-Tipp&amp;quot;: Die mangelhaften Lötstellen findet man am besten, wenn man mit dem Diodentest des Multimeters die Lötpunkte der angrenzenden LEDs berührt&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Steuerplatine ===&lt;br /&gt;
&lt;br /&gt;
Wenn alle Bauteile verlötet sind, sollten zur ersten Prüfung alle Sockel noch leer bleiben. Wer ein entsprechendes Netzteil hat, sollte den Strom auf ca. 50mA begrenzen. Wer dies nicht kann, sollte wenigstens ein (im Regelfall auf 200mA) abgesichertes Netzteil dazwischen schalten. Zum Bestücken der einzelnen Bauteile sollte stets die Spannungsversorgung unterbrochen werden.&lt;br /&gt;
&lt;br /&gt;
# Prüfen der Spannungsversorgung auf Kurzschluss&lt;br /&gt;
# Anlegen der Versorgungsspannung (15V), am Spannungsregler sollten nun 5V anliegen. Tipp: Minus ist ganz außen, Plus ist die zweite Befestigung von außen. Kann man anhand der Unterseite der Platine kontrollieren. Im Schaltplan ist das bei der Belegung von KL1 nicht eindeutig zu erkennen!&lt;br /&gt;
# µC bestücken, die Stromaufnahme sollte nun knapp 20mA betragen&lt;br /&gt;
# Erst Fuses programmieren, dann Software flashen&lt;br /&gt;
# RTC, Schieberegister (74HCT595) und Treiber (ULN) einsetzen&lt;br /&gt;
# LED-Streifen anschließen&lt;br /&gt;
# Wenn alles funktioniert, dann blinken die 4 Minuten-LEDs nach dem Einschalten rund 5-6 mal gleichzeitig auf. Zu der Zeit fängt die RealTimeClock an zu ticken&lt;br /&gt;
# Während des Blinkens kann nun auch eine (beliebige) Taste auf der Fernbedienung gedrückt werden, und deren Anlernprozess gestartet werden (-&amp;gt; s. Manual). Für den Funktionstest muss keine dauerhafte Tastenbelegung gewählt werden, dies kann jederzeit nachgeholt werden.&lt;br /&gt;
# Wenn die FB angelernt ist, dann gibt es eine Taste, mit der alle Ausgänge (das heißt alle Wörter) nacheinander geschaltet werden (&amp;quot;Demo-Modus&amp;quot;). Den Demo-Modus kann man verlassen, in dem ein anderer Modus aktiviert wird. Drückt einfach im Anschluss an den Demo-Modus die Taste &amp;quot;Einfarb-/Modus/Farbprofile aktivieren&amp;quot;.&lt;br /&gt;
# Mit der Fernbedienung und der Uhr spielen ... :o)&lt;br /&gt;
# Nun kann das DCF-Modul angeschlossen werden (wenn möglich, per UART den DCF-Status loggen). Nach einiger Zeit (mehrere Minuten!) sollte die Uhr die aktuelle Zeit anzeigen, sofern auf der DCF-Seite alles klappt.&lt;br /&gt;
&lt;br /&gt;
Wenn eine Fernbedienung angelernt werden soll, dann musst man, während alle 4 Minuten-LEDs blinken, irgendeine Taste auf der Fernbedienung drücken. Wird die FB erkannt, dann hört das Blinken auf und die &amp;quot;eins&amp;quot; leuchtet. Jetzt musst man die Taste drücken, die zum Ein-/Ausschalten der Uhr verwendet werden soll. Als nächstes leuchtet die &amp;quot;zwei&amp;quot; usw..... --&amp;gt; Mehr dazu siehe Handbuch&lt;br /&gt;
&lt;br /&gt;
Sollte nach dem &amp;quot;Neustart&amp;quot; der Uhr keine LED mehr leuchten, KEINE PANIK... es kann sein, dass einfach die &amp;quot;Helligkeit&amp;quot; der LEDs so gering ist, dass Ihr sie einfach nicht seht.&lt;br /&gt;
&lt;br /&gt;
Tipp fürs erste Anlernen der FB: Einfach alle Tasten stur der Reihe nach durchdrücken. Dann kann man durch Zählen und Vergleichen mit der Tabelle im Handbuch solange &amp;quot;überleben&amp;quot;, bis man die Muse hatte, eine sinnvolle Belegung zu überlegen und auch zu dokumentieren!&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
= Abstimmungen =&lt;br /&gt;
Eine Stimme ist ein Strich. Nach 5 Strichen bitte ein Leerzeichen einfügen.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== offen: ==&lt;br /&gt;
IR-FB Anlernphase deaktivierbar (Default / keine FB angelernt: anlernen aktiv): | &amp;lt;br&amp;gt;&lt;br /&gt;
ethernet ntp client: ||||| ||||| ||||| || &amp;lt;br&amp;gt;&lt;br /&gt;
Bewegungsmelder: ||||| ||||| ||||| ||||| ||||| ||||| ||||&amp;lt;br&amp;gt;|&lt;br /&gt;
IR zum PC für Kommunikation/Bootloader |&amp;lt;br&amp;gt;&lt;br /&gt;
RFM12 für Kommunikation/Bootloader |||&amp;lt;br&amp;gt;&lt;br /&gt;
NTP Server (um eine genaue Zeit ins Netzwerk zu verteilen) |||&amp;lt;br&amp;gt;&lt;br /&gt;
Beim Start, alle LEDs einmal der Reihe nach Durchlaufen lassen zum Funktionstest (statt &amp;quot;Volldampfmodus&amp;quot;): ||||| ||||| ||||| || &amp;lt;br&amp;gt;&lt;br /&gt;
Ton zur vollen Stunde (Beep/Piezo): ||||| ||&amp;lt;br /&amp;gt;&lt;br /&gt;
ZBus (Ethersex) zum einstellen der Uhr über das Netzwerk, evt holen der Zeitdaten über ZBus von einem Zeitserver: || &amp;lt;br /&amp;gt;&lt;br /&gt;
zeitgesteuert Dunkelschalten wochentagsweise: ||||| ||||&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== bereits umgesetzt: ==&lt;br /&gt;
DCF: ||||| ||||| ||||| ||||| ||||| ||||| ||||| ||||| |||| &amp;lt;br&amp;gt;&lt;br /&gt;
IR für Fernbedienung: ||||| ||||| ||||| || &amp;lt;br&amp;gt;&lt;br /&gt;
Ambilight: ||||| ||||| ||||| ||||| |||| &amp;lt;br&amp;gt;&lt;br /&gt;
zeitgesteuert Dunkelschalten (z.&amp;amp;nbsp;B. nachts &amp;quot;Aus&amp;quot;): ||||| ||||| ||||| &amp;lt;br&amp;gt;&lt;br /&gt;
Bluetooth: || (Posting: [http://www.mikrocontroller.net/topic/156661?goto=1710183#1710183 Bluetooth mit Debug, Bootloader und Autoreset])&amp;lt;br&amp;gt;&lt;br /&gt;
Möglichkeit, Zeiteinstellmodus bei &amp;quot;0 Minuten&amp;quot; von Normalmodus zu unterscheiden z.B. blinkendes &amp;quot;UHR&amp;quot; |||||&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;quot;ES IST&amp;quot; soll man ein- oder ausschalten können: ||||| |&amp;lt;br&amp;gt;&lt;br /&gt;
Bluetooth per FB ein-/ausschalten: ||&amp;lt;br&amp;gt;&lt;br /&gt;
Taste &amp;quot;Speichern&amp;quot; auf FB statt automatisch |||(On Off speichert)&amp;lt;br&amp;gt;&lt;br /&gt;
kurzzeitiger &amp;quot;Volldampf-Modus&amp;quot; (alle Wörter an für bspw. 30sek): ||||| |||  - als Submodus des Demomodus, multiplexing, jeweils ein Kanal an jedem Treiber aktiv&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== An/Ausschalt-Logik ==&lt;br /&gt;
A: Manuell ausgeschaltete Uhr bleibt aus bei Erreichen der Einschaltzeit - hier könnte natürlich gleich der Stecker gezogen werden, sofern die Uhr nicht festeingebaut ist&lt;br /&gt;
&lt;br /&gt;
B: Manuell ausgeschaltete Uhr geht wieder an bei Erreichen der Einschaltzeit&lt;br /&gt;
&lt;br /&gt;
C: Es gibt eine OFF-Taste und eine STANDBY-Taste. Bei STANDBY schaltet sich die Uhr bei Erreichen der Einschaltzeit wieder ein, bei OFF bleibt sie aus.&lt;br /&gt;
&lt;br /&gt;
D: Die Variante A oder B lässt sich vor dem Kompilieren der Software als define individuell nach eigenem Gutdünken festlegen. (Viele andere Werte sind bereits heute so einstellbar in der SW)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A Strichliste: |&lt;br /&gt;
&lt;br /&gt;
B Strichliste: |||  &lt;br /&gt;
&lt;br /&gt;
C Strichliste: |||||  ||||| |||||&lt;br /&gt;
&lt;br /&gt;
D Strichliste: ||||&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&#039;&#039;&#039;Zurück zum Hauptartikel: [[Word Clock]]&#039;&#039;&#039;&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Timer und Uhren]]&lt;br /&gt;
[[Kategorie:AVR-Projekte]]&lt;br /&gt;
[[Kategorie:DCF77]]&lt;/div&gt;</summary>
		<author><name>Promeus</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=STM32&amp;diff=90665</id>
		<title>STM32</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=STM32&amp;diff=90665"/>
		<updated>2015-12-12T21:52:00Z</updated>

		<summary type="html">&lt;p&gt;Promeus: Vandalusmus entfernt&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;STM32 ist eine Mikrocontroller-Familie von [http://www.st.com/mcu/inchtml-pages-stm32.html ST] mit einer 32-Bit [[ARM]] Cortex-M0/M3/M4 CPU. Diese Architektur ist speziell für den Einsatz in Mikrocontrollern neu entwickelt und löst damit die bisherigen ARM7-basierten Controller weitestgehend ab. Den STM32 gibt es von ST in unzähligen Varianten mit variabler Peripherie und verschiedenen Gehäusegrößen und -formen. Durch die geringe Chipfläche des Cores ist es ST möglich, eine 32 Bit-CPU für weniger als 1&amp;amp;nbsp;€ anzubieten.&lt;br /&gt;
&lt;br /&gt;
[[Bild:stm32F103xc.png|thumb|right|340px|Blockdiagramm STM32F103xC/D/E]]&lt;br /&gt;
&lt;br /&gt;
== STM32-Familien ==&lt;br /&gt;
&lt;br /&gt;
Bisher gibt es elf STM32-Familien:&lt;br /&gt;
* [http://www.st.com/internet/mcu/subclass/1588.jsp STM32F0]&lt;br /&gt;
** Cortex M0&lt;br /&gt;
** Mikrocontroller zum Einstieg&lt;br /&gt;
** Bis 48MHz (38 DMIPS)&lt;br /&gt;
* [http://www.st.com/internet/mcu/subclass/1169.jsp STM32F1]&lt;br /&gt;
** Cortex M3&lt;br /&gt;
** Bis 72MHz (61 DMIPS)&lt;br /&gt;
**Verschiedene Unterfamilien:&lt;br /&gt;
*** Connectivity line&lt;br /&gt;
*** Performance line&lt;br /&gt;
*** USB Access line&lt;br /&gt;
*** Access Line&lt;br /&gt;
*** Value line&lt;br /&gt;
* [http://www.st.com/web/en/catalog/mmc/FM141/SC1169/SS1575 STM32F2]&lt;br /&gt;
** Cortex M3&lt;br /&gt;
** Bis 120MHz (150 DMIPS)&lt;br /&gt;
** Wie die STM32F1 Serie, Camera-Interface, 32-Bit Timer, Crypto-Engine...&lt;br /&gt;
* [http://www.st.com/internet/mcu/subclass/1605.jsp STM32F3]&lt;br /&gt;
** Cortex M4F&lt;br /&gt;
** DSP und FPU&lt;br /&gt;
** Bis 72MHz (90 DMIPS)&lt;br /&gt;
** Fast 12-bit 5 MSPS and precise 16-bit sigma-delta ADCs&lt;br /&gt;
** Touch sensing controller (TSC)&lt;br /&gt;
* [http://www.st.com/internet/mcu/subclass/1521.jsp STM32F4]&lt;br /&gt;
** Cortex M4F&lt;br /&gt;
** DSP und FPU&lt;br /&gt;
** Bis 180MHz (225 DMIPS)&lt;br /&gt;
** Bis zu 2MB Flash&lt;br /&gt;
* [http://www.st.com/web/en/catalog/mmc/SC1169/SS1858 STM32F7]&lt;br /&gt;
** Cortex M7&lt;br /&gt;
** DSP und FPU&lt;br /&gt;
** Bis 200MHz (428 DMIPS)&lt;br /&gt;
** Mehr Peripherie: SPDIF-IN/OUT, SAI, HDMI-CEC, Dual Quad SPI&lt;br /&gt;
** DMA&#039;s auch für Ethernet, USB und Chrom-ART&lt;br /&gt;
* [http://www.st.com/web/en/catalog/mmc/FM141/SC1169/SS1817 STM32L0]&lt;br /&gt;
** Cortex M0+&lt;br /&gt;
** Low Power &lt;br /&gt;
** mit LCD Treiber&lt;br /&gt;
** Bis 32MHz (26 DMIPS)&lt;br /&gt;
* [http://www.st.com/web/en/catalog/mmc/FM141/SC1169/SS1295 STM32L1]&lt;br /&gt;
** Cortex M3&lt;br /&gt;
** Low Power &lt;br /&gt;
** mit LCD Treiber&lt;br /&gt;
** Bis 32MHz (33 DMIPS)&lt;br /&gt;
* [http://www.st.com/web/en/web/catalog/mmc/FM141/SC1169/SS1580 STM32L4]&lt;br /&gt;
** Cortex M4F&lt;br /&gt;
** DSP und FPU&lt;br /&gt;
** Ultra Low Power (bis zu 30nA mit I/O Wake-Up)&lt;br /&gt;
** Bis 80MHz (100 DMIPS)&lt;br /&gt;
** 256KB...1MB Flash, 128KB SRAM&lt;br /&gt;
** mit Segment-LCD Treiber&lt;br /&gt;
** Digital-Filter für ΣΔ-Modulatoren&lt;br /&gt;
* [http://http://www.st.com/web/en/catalog/mmc/FM141/SC1169/SS1582 STM32T]&lt;br /&gt;
** Cortex M3&lt;br /&gt;
** 72MHz&lt;br /&gt;
** Touch Sensing&lt;br /&gt;
* [http://www.st.com/web/en/catalog/mmc/FM141/SC1169/SS1581 STM32W]&lt;br /&gt;
** Cortex M3&lt;br /&gt;
** BIS 24MHz&lt;br /&gt;
** RF-MCU &lt;br /&gt;
[http://www.st.com/web/en/catalog/mmc/FM141/SC1169 Hier eine Übersicht zum Auswählen eines STM32Fxxx]&lt;br /&gt;
&lt;br /&gt;
===Features===&lt;br /&gt;
* Cortex-M0 / Cortex-M3 / Cortex-M4F / Cortex-M7 Kern (mit FPU)&lt;br /&gt;
* 16KB ... 2MB  [[Flash-ROM]]&lt;br /&gt;
* 4KB ... 256KB [[Speicher#SRAM|SRAM]]&lt;br /&gt;
* 2KB ... 16KB [[Speicher#EEPROM|EEPROM]] (STM32L)&lt;br /&gt;
* SDRAM-Controller bei den [http://www.st.com/web/en/catalog/mmc/FM141/SC1169/SS1577/LN1806 STM32F42xxx und STM32F43xxx], bis 512 MByte externer SDRAM addressierbar&lt;br /&gt;
* 512 one-time programmable Bytes(STM32F2/4)&lt;br /&gt;
* [[IC-Gehäuseformen | Gehäuse]] 20 ... 216 Pins als LCSP, TSSOP, QFN, LQFP und BGA&lt;br /&gt;
* Derzeit sind über &#039;&#039;&#039;500&#039;&#039;&#039; [http://www.st.com/web/en/catalog/mmc/FM141/SC1169 STM32 Derivate/Varianten verfügbar]&lt;br /&gt;
* Bis 72MHz CPU-Takt, bis 120MHz beim STM32F2xx, bis 168/180 MHz beim STM32F4xx, wobei eine spezielle prefetch-hardware bis 120/168 MHz eine Geschwindigkeit erzielen soll, die 0 Wait-States entspricht. Der CPU-Takt wird über einen Multiplikator aus dem internen RC-Takt oder einem externen Quarz-Takt abgeleitet. Bis 216MHz CPU-Takt bei STM32F7xx.&lt;br /&gt;
* Externes Businterface (nur bei Gehäusen ab 100 Pin und nur bei STM32F4, STM32F2 und STM32F1 Performance line)&lt;br /&gt;
* LCD Treiber für 8x40 Punkte (nicht beim STM32F2xx)&lt;br /&gt;
* TFT Treiber bei STM32F429 / STM32F439&lt;br /&gt;
* Spannungsbereich 1,65 ... 3,6V, nur eine Betriebsspannung nötig&lt;br /&gt;
* Temperaturbereich bis 125 °C&lt;br /&gt;
* Bis zu 168 IOs, viele davon [[Pegelwandler|5V-tolerant]]&lt;br /&gt;
* Interner, kalibrierter RC-Oszillator mit 8MHz (16MHz bei STM32F2/F4xx)&lt;br /&gt;
* Externer Quarz&lt;br /&gt;
* Real Time Clock mit eigenem Quarz und separater Stromversorgung&lt;br /&gt;
* Bis zu 16 [[Timer]], je Timer bis zu 4 IC/OC/PWM Ausgänge. Davon 2x Motion Control Timer (bei STM32F103xF/G), (bis zu 32 PWM Ausgänge)&lt;br /&gt;
* Systick Counter&lt;br /&gt;
* Bis zu 3 12-Bit [[AD-Wandler]] mit insgesamt 24 AD-Eingängen, integrierter [[Temperatursensor]], Referenzspannung Vrefint und VBatt Spannungsmessung (STM32F4xx)&lt;br /&gt;
* Bis zu 2 12-Bit [[DA-Wandler]] (bis zu 3 beim STM32F3xx)&lt;br /&gt;
* Bis zu 2 [[DMA]] Controller mit bis zu 12 Kanälen (16 beim STM32F2/4xx)&lt;br /&gt;
* Bis zu 2x [[I2C|I²C]]&lt;br /&gt;
* Bis zu 5x [[UART|USART]] mit LIN, IrDA und Modem Control (bis zu 8 beim STM32F2/F4xx)&lt;br /&gt;
* Bis zu 3x [[SPI]] (bis zu 6 beim STM32F4xx)&lt;br /&gt;
* Bis zu 2x [[I2S|I²S]]&lt;br /&gt;
* Bis zu 2x [[CAN#STMicroelectronics STM32 (Cortex M3/M4)|CAN]]&lt;br /&gt;
* Hardware [[CRC]] Unit, bei der STM32F3xx Serie mit einem einstellbaren Polynom &lt;br /&gt;
* Unique device ID register (96 Bits)&lt;br /&gt;
* RNG - Random Number Generator (STM32F2/4xx)&lt;br /&gt;
* Cryptographic Processor (CRYP) (STM32F2/4xx)&lt;br /&gt;
* Hash Processor (HASH) (STM32F2/4xx)&lt;br /&gt;
* Kamera-Interface (DCMI) (STM32F2/4xx)&lt;br /&gt;
* [[USB]] 2.0 Full Speed / OTG&lt;br /&gt;
* [[USB]] 2.0 Hi Speed OTG mit extra PHY-Chip (STM32F2/4xx)&lt;br /&gt;
* SDIO Interface (z.B. SD-Card Reader)&lt;br /&gt;
* Ethernet&lt;br /&gt;
* Watchdog mit Window-Mode&lt;br /&gt;
* Jedes Peripheriemodul ist separat einschaltbar, wodurch sich erheblich [[Ultra low power|Strom sparen]] lässt&lt;br /&gt;
* [[JTAG]] und SWD (Serial Wire Debug) Interface&lt;br /&gt;
* Bis zu 6 Hardware-Breakpoints für Debuggen&lt;br /&gt;
* und vieles mehr ...&lt;br /&gt;
&lt;br /&gt;
== Struktur der Dokumentation: ==&lt;br /&gt;
Die Dokumentation der STM32 ist im Vergleich zur [[AVR]]-Familie umfangreicher und komplexer. Sie teilt sich in mehrere Dokumente auf.&lt;br /&gt;
Als Beispiel der Dokumentation soll stellvertretend der [http://www.st.com/web/en/catalog/mmc/FM141/SC1169/SS1031/LN1565/PF164486 STM32F103RC] genannt werden. Die Seite von ST beinhaltet alle nötigen Informationen passend zu diesem Prozessor.&lt;br /&gt;
&lt;br /&gt;
Diese Dokumente von ST beschreiben den Controller:&lt;br /&gt;
&lt;br /&gt;
* Im [http://www.st.com/st-web-ui/static/active/en/resource/technical/document/datasheet/CD00191185.pdf STM32F103xC/D/E Datasheet] sind die speziellen Eigenschaften einer bestimmten Modellreihe beschrieben und die exakten Daten und Pinouts aufgeführt, sowie die Zuordnung Chipname - Flash/RAM-Größe. Die Peripheriemodule werden nur aufgeführt, nicht detailliert beschrieben.&lt;br /&gt;
* Im [http://www.st.com/st-web-ui/static/active/en/resource/technical/document/reference_manual/CD00171190.pdf Reference Manual (RM0008)] sind alle Peripheriemodule der jeweiligen STM32-Controllerfamilie im Detail beschrieben.&lt;br /&gt;
* Das [http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.ddi0403c/index.html ARMv7M Architecture Reference Manual] beschreibt detailliert den Prozessorkern, wie das Exception Model, die CPU Instruktionen inklusive Encoding, etc.&lt;br /&gt;
* Das [http://www.st.com/st-web-ui/static/active/en/resource/technical/document/programming_manual/CD00228163.pdf STM32 Cortex-M3 Programming Manual] ist eine Zusammenfassung des ARMv7M Architecture Reference Manual bezogen auf die STM32.&lt;br /&gt;
* Wer nicht die ST Firmware-Library verwendet, der benötigt zusätzlich das [http://www.st.com/st-web-ui/static/active/en/resource/technical/document/programming_manual/CD00283419.pdf Flash Programming Manual] für die Betriebsart des Flash-ROMs, d.h. die frequenzabhängige Konfiguration der Waitstates.&lt;br /&gt;
&lt;br /&gt;
Zusätzlich sollten auch die [http://www.st.com/st-web-ui/static/active/en/resource/technical/document/errata_sheet/CD00197763.pdf Errata Sheets] beachtet werden. Empfohlen sei auch die Appnote &amp;quot;[http://www.st.com/web/en/resource/technical/document/application_note/CD00164185.pdf AN2586 Getting started with STM32F10xxx hardware development]&amp;quot;.&lt;br /&gt;
Die jeweiligen Dokumentations-PDFs sind auf der Produktseite von ST eines jeden Mikrocontrollers verlinkt.&lt;br /&gt;
&lt;br /&gt;
== Hardware Zugriffs-Libraries ==&lt;br /&gt;
=== CMSIS ===&lt;br /&gt;
&lt;br /&gt;
Die CMSIS (ARM® &#039;&#039;&#039;C&#039;&#039;&#039;ortex™ &#039;&#039;&#039;M&#039;&#039;&#039;icrocontroller &#039;&#039;&#039;S&#039;&#039;&#039;oftware &#039;&#039;&#039;I&#039;&#039;&#039;nterface &#039;&#039;&#039;S&#039;&#039;&#039;tandard) ist eine Library von ARM für den Zugriff auf die herstellerübergreifenden Funktionen des ARM-Cores. Hierzu gehört bei den Cortex-M4F-Cores auch die DSP und Floating-Point Funktionalität. Weiterhin existieren eine Zahl von Helferfunktionen für den NVIC, den Sys-Tick-Counter, sowie eine SystemInit-Funktion, welche sich um die PLL kümmert. &lt;br /&gt;
&lt;br /&gt;
Im Rahmen des CMSIS-Standards ([http://www.onARM.com www.onARM.com]) wurden die Headerdateien standardisiert, der Zugriff auf die Register erfolgt per &#039;&#039;&#039;Peripheral-&amp;gt;Register&#039;&#039;&#039;. Die CMSIS C-Dateien bzw. Header enthalten auch Anpassungen für die verschiedenen Compiler. Die Portierung eines Real-Time-Betriebsystems sollte unter Verwendung der CMSIS, für Chips der verschiedenen Hersteller, stark vereinfacht möglich sein (z.B. einheitliche Adressen für Core-Hardware/Sys-Tick-Counter).&lt;br /&gt;
&lt;br /&gt;
Die CMSIS ist im Download der ‎STM32 Standard Peripheral Library enthalten. Die Compiler-Hersteller liefern eine jeweils zur ihrer Tool-Version passende bzw. geprüfte Library (incl. CMSIS) aus. Diese Libs können, gegenüber den Downloads beim Chip-Hersteller, auch ältere Version beinhalten.&lt;br /&gt;
&lt;br /&gt;
=== ‎STM32 Standard Peripheral Library ===&lt;br /&gt;
&lt;br /&gt;
ST bietet für jede Controller-Familie eine umfangreiche zur CMSIS passende Peripherie-Bibliothek. Alle Funktionen um die Peripherie zu benutzen sind gekapselt in einfache Strukturen und Funktionsaufrufe. Somit muss man sich nicht selbst um die Peripherie-Register kümmern. Diese Library und ihre Dokumentation setzen das grundlegende Verständnis der Funktion des jeweiligen Peripheriemoduls voraus, wie es die o.a. Referenz und diverse Appnotes vermitteln. Die Library beinhaltet außerdem für fast jede Peripherie mehrere Beispiele.&lt;br /&gt;
Für die USB Schnittstelle gibt es noch eine extra Library, genauso wie für Ethernet.&lt;br /&gt;
&lt;br /&gt;
Auf der &amp;quot;Design Resources&amp;quot; Seite der Produktseite von ST eines jeden STM32 Mikrocontrollers kann die Library für den jeweiligen Controller heruntergeladen werden, z.B. [http://www.st.com/web/en/catalog/tools/PF257890 hier für den o.g. STM32F103RC].&lt;br /&gt;
&lt;br /&gt;
Library für STM32F4xx: [http://www.st.com/web/en/catalog/tools/PF257901# STSW-STM32065 STM32F4 DSP and standard peripherals library]&lt;br /&gt;
&lt;br /&gt;
== Programmierung ==&lt;br /&gt;
Zur Programmierung der STM32 gibt es verschiedene Möglichkeiten, sowohl kommerzielle proprietäre als auch mit Freier Software.&lt;br /&gt;
&lt;br /&gt;
Der GCC (in seinen verschiedenen Binärdistributionen) ist der einzige ARM Compiler der [http://de.wikipedia.org/wiki/C%2B%2B11 C++11] unterstützt.&lt;br /&gt;
&lt;br /&gt;
=== Freie Software/Freeware ===&lt;br /&gt;
==== Selber zusammenstellen ====&lt;br /&gt;
Man nehme...:&lt;br /&gt;
* Eine Entwicklungsumgebung nach Wahl:&lt;br /&gt;
** [http://www.eclipse.org Eclipse] mit [http://www.eclipse.org/cdt/ C/C++ Development Tooling] und [http://gnuarmeclipse.livius.net/blog/ GNU ARM Plug-in] (Bei Verwendung vom GCC-ARM-Embedded als Toolchain &amp;quot;Sourcery G++ Lite&amp;quot; auswählen, dieser sieht für eclipse gleich aus) (Linux, Windows)&lt;br /&gt;
** [http://netbeans.org/ Netbeans] mit [http://plugins.netbeans.org/plugin/37426/gdbserver GDBserver-Plugin] (Linux, Windows)&lt;br /&gt;
** [http://www.kdevelop.org/ KDevelop] (Linux)&lt;br /&gt;
** [http://www.geany.org/ Geany] (Linux, Windows)&lt;br /&gt;
** Oder ein einfacher Texteditor&lt;br /&gt;
* Einen C,C++ Compiler:&lt;br /&gt;
** Eine der [[ARM_GCC#GCC_Bin.C3.A4rdistributionen|GCC-Binärdistributionen]], siehe auch [[#GCC|GCC]] (je nach Distribution Linux, Windows)&lt;br /&gt;
* Programmiersoftware zum Flashen des Target:&lt;br /&gt;
** [http://openocd.sourceforge.net/ OpenOCD] unterstützt viele Debug/Programmier-Adapter (Linux, Windows)&lt;br /&gt;
** [https://github.com/texane/stlink Texane stlink] funktioniert gut mit den ST-Link Adaptern wie sie zB. auf den STM32 Discovery Boards zu finden sind (Linux)&lt;br /&gt;
** Turtelizer2 oder andere JTAG Programmieradapter&lt;br /&gt;
** Bei Verwendung eines Segger J-Link, den [http://www.segger.com/admin/uploads/productDocs/UM08005_JLinkGDBServer.pdf Segger GDB-Server] in Verbindung mit dem beim GCC mitgelieferten GDB (Linux, Windows).&lt;br /&gt;
&lt;br /&gt;
==== Komplette IDE&#039;s ====&lt;br /&gt;
* [http://www.codesourcery.com/sgpp/lite_edition.html Codesourcery Lite Edition] Mit dieser Umgebung muss man sich anfreunden können, was mir bisher nicht gelungen ist. Es sind nur wenig Beispielprojekte verfügbar. Nicht mehr kostenlos verfügbar.&lt;br /&gt;
* [http://www.coocox.org/ Coocox Eclipse IDE] kostenlose IDE für STM32F0/F1/F2/F3/F4. Basiert auf der ARM-GCC Toolchain und es gibt eine breite Unterstützung. Es ist sogar ein freies RTOS verfügbar. Beim Start der IDE muss man geduldig sein, was jedoch für alle Eclipse basierten IDE&#039;s gilt. Eine gute Wahl ohne Limits mit breiter Debugger-Unterstützung. Hilfreiche Infos gibt es im [http://www.mikrocontroller.net/topic/214719?goto=new#2228482 hier] und [http://www.mikrocontroller.net/topic/214719?goto=new#2229943 hier] Forum, Artikel: [[STM32 CooCox Installation]] &lt;br /&gt;
* [http://emide.org/ emIDE] kostenlose IDE von Segger. Die emIDE basiert auf Code::Blocks. Sie ist auf ARM-GCC aufgebaut und unterstützt eine große Zahl an unterschiedlichen JTAG/SWD Debugger - natürlich auch den J-Link aus gleichem Hause.  &lt;br /&gt;
* [http://www.emblocks.org EmBlocks] kostenlose IDE, Code::Blocks basiert, unterstützt STM32 L1/F0/F1/F2/F3/F4/W, integrierter Compiler (ARM-GCC), integrierter GDB-Debugger, Jlink/ST-Link, System view (Peripherie Register anzeigen) beim Debuggen, Project Wizard (Eigene Wizards können mit Squirrel geschrieben werden), Basiert auf Code::Blocks und gefällt mir recht gut da man ihn fast so gut nutzen kann wie die µVision von Keil, jedoch ohne deren Limit, http://www.mikrocontroller.net/articles/STM32_-_Einstieg_mit_Em::Blocks STM32 - Einstieg mit Em::Blocks]&lt;br /&gt;
* [http://cms.seng.de/service-support/downloads/ Entwicklungsumgebung GNU/Linux] für STM32F1 mit OpenOCD und Olimex ARM-USB-OCD-H, Bedienung über Eclipse IDE oder Kommandozeile.&lt;br /&gt;
* [http://www.openstm32.org/blog1-System-Workbench-for-STM32 System Workbench for STM32] (SW4STM32) ist eine uneingeschränkte und kostenlose IDE. Sie wird von [http://www.st.com/web/en/catalog/tools/FM147/CL1794/SC961/SS1533/PF261797 ST] offiziell unterstützt. Die Entwicklungsumgebung ist in der Version 1.0 seit 5.2.2015 erhältlich.&lt;br /&gt;
&lt;br /&gt;
==== Andere Programmiersprachen ====&lt;br /&gt;
&lt;br /&gt;
* [http://mecrisp.sourceforge.net Mecrisp-Stellaris], eine native Forth-Implementation für ARM Cortex M0/M3/M4. Es werden bereits mehrere STM32 Targets unterstützt und neue Portierungen sind herzlich willkommen. Auch Chips von TI, NXP und Freescale sind im aktuellen Paket enthalten.&lt;br /&gt;
&lt;br /&gt;
=== Kommerzielle Umgebungen ===&lt;br /&gt;
&lt;br /&gt;
* [http://www.keil.com/arm/mdk.asp Keil µVision] (Demo max. 32KB Code/Free für STM32F0/STM32L0): Die sehr komfortable µVison IDE ist neben dem ARM Compiler per Menue auch für einen beliebigen GNU-Compiler konfigurierbar. Damit besteht das 32k-Limit nur noch für den integrierten Debugger / Simulator. In Verbindung mit einem ULINK2 ist die Umgebung schon sehr einfach zu bedienen - leider ist der Compiler mit großen Abstand der langsamste den ich je nutzte da er keine parallel Option wie der GNU-CC besitzt. Mit der µVision lässt sich kein fremdes File in den Controller in den Flashspeicher des Controllers schreiben. Für den Anfänger eine gute Wahl. Der Preis ist jedoch ein guter Grund auf andere freie IDE&#039;s zu wechseln. µVison selbst kann kostenlos mit dem MDK-Evaluationkit heruntergeladen werden. [https://www.keil.com/arm/demo/eval/arm.htm#DOWNLOAD download] Wer sich nur auf STM32 Cortex M0/L0 beschränkt kann die Keil MDK auch ohne 32K Begrenzung frei nutzen. [http://www2.keil.com/stmicroelectronics-stm32/mdk download]&lt;br /&gt;
* [http://www.iar.com/en/Products/IAR-Embedded-Workbench/ IAR-Embedded-Workbench] (Demo max. 32KB Code) [http://supp.iar.com/Download/SW/?item=EWARM-EVAL download]&lt;br /&gt;
* [http://www.isystem.com/download/winideaopen winIDEAOpen] Keine Code Limitierung, GCC und Testwerkzeug beinhaltet. Läuft mit dem iTag50 Adapter, Segger J-Link und dem ST-Link&lt;br /&gt;
* [http://www.raisonance.com Raisonance Ride7] (GCC Compiler, kostenlose Version auf Debugging von max. 32KB Code limitiert, keine Limitierung beim Complilieren)&lt;br /&gt;
* [http://www.atollic.com Atollic] (Lite Version (bis V2.3.0) ohne Code-Limit, auf GCC basierend. Die neueste Version ab V3 hat fast keine Beschränkungen mehr außer jetzt einen Code-Limit von 32kB. Außerdem werden jetzt die meisten ARM Familien unterstützt. )&lt;br /&gt;
* [http://www.rowley.co.uk/arm/ Rowley Crossworks] (Demo 30 Tage unbeschränkt, 150$ für nichtkommerzielle Nutzung, auf GCC basierend). Mir ist nicht klar warum man für diese IDE Geld bezahlen soll. Der GNU-Compiler ist frei und die Entwicklungsumgebungen die auf Eclipse basieren, ebenfalls. Allerdings ist diese Einstellungsarbeit schon was für den etwas erfahrenen Entwickler.&lt;br /&gt;
* [http://www.code-red-tech.com Code Red] (GCC basierend)&lt;br /&gt;
* [http://www.sisy.de/index.php?id=17&amp;amp;no_cache=1 SiSy ARM oder SiSy Micrcontroller++] (Demo verfügbar keine Gößenbegrenzung, basiert auf GNU-Compiler, grafische Programmierung mit UML möglich, integrierter Debugger)&lt;br /&gt;
* [http://www.comsytec.eu/epsdebugger.php EPS Debugger Plugin, für STM32 Development mit Code::Blocks]&lt;br /&gt;
* [http://www.mikroe.com MikroE bietet neben Pascal und Basic auch C mit kompletter Oberfläche mit Compiler etc. pp relativ günstig]&lt;br /&gt;
&lt;br /&gt;
=== STM32CubeMX ===&lt;br /&gt;
Dies ist eine Software von ST selbst, die die Auswahl und Konfiguration von STM32-Mikrocontrollern vereinfacht:&lt;br /&gt;
* Auswahl der Controller oder Entwicklungsboards mit einer parametrischen Suche&lt;br /&gt;
* grafische Konfiguration der Pins und Alternate Functions (inkl. Überprüfung auf Kollisionen - bei Entwicklungsboards sind gewisse Pins schon vorkonfiguriert und werden angezeigt)&lt;br /&gt;
* grafische Konfiguration des Clock-Trees&lt;br /&gt;
* Generierung von C-Code entsprechend der grafischen Konfiguration. Dieser funktioniert nur mit den neuen STM32CubeFx Libraries, nicht mit den alten Standard Peripheral Libraries.&lt;br /&gt;
* Simulation des Strom-Verbrauchs unter Auswahl verschiedenster Stromquellen und Batterien&lt;br /&gt;
Die Software kann [http://www.st.com/web/catalog/tools/FM147/CL1794/SC961/SS1743/PF259242 bei ST heruntergeladen] werden. Sie wird im Windows Executable Format angeboten und erweckt daher den Eindruck, ausschließlich für Windows geeignet zu sein, ist aber tatsächlich Java-basiert und daher betriebssystem-unabhängig.&lt;br /&gt;
==== STM32CubeMX unter Linux ====&lt;br /&gt;
Unter Linux kann STM32CubeMX installiert werden, indem man das heruntergeladene .zip-Archiv entpackt, und den enthaltenen Installer per Java über ein Terminal startet:&lt;br /&gt;
&amp;lt;pre&amp;gt;java -jar SetupSTM32CubeMX-4.5.0.exe&amp;lt;/pre&amp;gt;&lt;br /&gt;
Das Anlegen der Desktop/Startmenü-Shortcuts funktioniert unter Linux nicht richtig und kann daher deaktiviert werden. Um STM32CubeMX nach der Installation zu starten, wechselt man im Terminal in den Installationsort und gibt ein:&lt;br /&gt;
&amp;lt;pre&amp;gt;java -jar STM32CubeMX.exe&amp;lt;/pre&amp;gt;&lt;br /&gt;
Damit das funktioniert, muss die Oracle Java Runtime Environment 1.8 installiert sein (Siehe z.B. [http://wiki.ubuntuusers.de/Java/Installation/Oracle_Java/Java_8#Java-8-JRE hier] für Ubuntu). Nicht benötigt wird wine.&lt;br /&gt;
&lt;br /&gt;
=== Tutorials für diverse Tool-Kombinationen ===&lt;br /&gt;
* [[STM32 Eclipse Installation|Windows,Linux, Eclipse + Yagarto/CodeSourcery + OpenOCD/ST-Link]]&lt;br /&gt;
* [[STM32 Eclipse JLink Linux/Windows|Windows,Linux, Eclipse + GCC-ARM-Embedded + JLink]]&lt;br /&gt;
* [[Linux auf STM32|Linux auf STM32 (ucLinux)]]&lt;br /&gt;
&lt;br /&gt;
* Windows&lt;br /&gt;
** Eclipse&lt;br /&gt;
*** [http://www.mikrocontroller.net/topic/216554 Windows, Eclipse, codesourcery, st-link ]&lt;br /&gt;
*** [http://www.firefly-power.de/ARM/debugging.html Eclipse Plugin &amp;quot;GDB Hardware Debugging&amp;quot; mit OpenOCD]&lt;br /&gt;
** Code::Blocks&lt;br /&gt;
*** [http://www.mikrocontroller.net/topic/265600 Windows, Code::Blocks, STM32F4]&lt;br /&gt;
** STM32 mit EmBlocks&lt;br /&gt;
*** [http://www.emblocks.org/web/downloads-main Download EmBlocks]&lt;br /&gt;
*** [https://www.youtube.com/watch?v=coHPJylnzC8 Video STM32 Project Wizzard in EmBlocks]&lt;br /&gt;
** Atollic TrueSTUDIO&lt;br /&gt;
*** [[STM32 LEDBlinken AtollicTrueStudio|Atollic TrueSTUDIO Installation + Demo]]&lt;br /&gt;
** MDK-ARM Lite mit Einstellungen für STM32F0/F4-Discovery Board&lt;br /&gt;
*** [https://www.keil.com/demo/eval/arm.htm KEIL MDK-ARM Download]&lt;br /&gt;
*** [https://www.youtube.com/watch?v=RXOOxby5nns&amp;amp;list=PL6-W3FoUyb48WFI5PQv3SDJj2G1t2FonV&amp;amp;index=1 Installations Video STM32F4 Discovery Board]&lt;br /&gt;
*** [https://www.youtube.com/watch?annotation_id=annotation_203294&amp;amp;feature=iv&amp;amp;index=4&amp;amp;list=PL6-W3FoUyb48WFI5PQv3SDJj2G1t2FonV&amp;amp;src_vid=sN4gDZ7H8gw&amp;amp;v=BeZcQjXxk9A Einstellungen STM32F0 Discovery Board Video]&lt;br /&gt;
** SiSy ARM, STM32&lt;br /&gt;
*** Download: [http://www.sisy.de/index.php?id=59 SiSy DEMO] kein Begrenzung der Codegröße&lt;br /&gt;
*** [http://www.youtube.com/watch?v=84Y3jYLWYpo Videobeispiel]&lt;br /&gt;
** Microsoft Visual Studio&lt;br /&gt;
*** [http://visualgdb.com/tutorials/arm/stm32/f4_discovery/ &amp;quot;STM32F4-Discovery tutorial with Visual Studio&amp;quot;]&lt;br /&gt;
* Ubuntu&lt;br /&gt;
** [http://cms.seng.de/service-support/downloads/ Installing a toolchain for Cortex-M3/STM32 on GNU/Linux] - How-to manual, für STM32F1 unter GNU/Linux mit OpenOCD und Olimex ARM-USB-OCD-H. Integrierte Make files, Linker Skripte, Startup-Code, diverse Tools und Demo-Projekt/Programm. Einbindung in Eclipse IDE oder Bedienung über Kommandozeile.&lt;br /&gt;
** [http://fun-tech.se/stm32/index.php Ubuntu, Selbstcompilierter GCC, STM32/Cortex-M3]&lt;br /&gt;
** [http://thetoolchain.com The ToolChain] - Automatisch installierende Entwicklungsumgebung mit eigenen und externen Treibern, Unterstützt QtCreator als IDE, Flexibel erweiterbar über Shellskripte&lt;br /&gt;
&lt;br /&gt;
* [http://www.mikrocontroller.net/topic/214719 Tipps für Installation mit Eclipse]&lt;br /&gt;
&lt;br /&gt;
===Programmieradapter===&lt;br /&gt;
* [http://www.segger.com/jlink-model-overview.html SEGGER J-LINK / J-TRACE] für u.a. alle ARM7/9/11, Cortex-M0/M1/M3/M4/A5/A8/A9/R4 als [http://www.segger.com/cms/j-link-edu.html Non-Commercial] J-LINK-EDU für ca. 50,- zu haben, läuft in µVision, IAR, GDB (Linux &amp;amp; Windows über einen eigenen [http://www.segger.com/admin/uploads/productDocs/UM08005_JLinkGDBServer.pdf GDB-Server]), Keil, ... Der J-Link ist mit Abstand der schnellste Debugger den ich bisher testen konnte. Wer es beim Debuggen eilig hat, ist mit dem J-Link von Segger auf den besten Seite.&lt;br /&gt;
* Keil [http://www.keil.com/ulinkme/ ULINK-ME], [http://www.keil.com/arm/ulink2/ ULINK2], [http://www.keil.com/arm/ulinkpro/ ULINK pro] Wenn man die die µVision IDE nicht verlassen mag, kann man sich mit diesen Adaptern anfreunden denn sie arbeiten nur mit dieser IDE zusammen. Sie benötigen keine USB-Treiber denn sie nutzen geschickt das HID-Device des Betriebssystems. Es lässt sich kein fremdes Binary oder Hex-File flashen. Der ULINK2 kostet genau soviel wie ein Segger J-Link Basic bei gleichem Funktionsumfang. Dieser lässt sich aber auch in Verbindung mit anderen IDE&#039;s  (GDB, usw) einsetzten. &lt;br /&gt;
* [http://www.st.com/internet/evalboard/product/219866.jsp ST-LINK],  [http://www.st.com/internet/evalboard/product/251168.jsp ST-LINK/V2]&lt;br /&gt;
* Jedes STM32 Discovery board hat einen ST-Link für Programmierung/Debugging per SWD on-board, welcher auch für eigene STM32 Target Hardware benutzt werden kann (ca. 12,- bis 19,-€, je nach Typ). Diese ist jedoch mit 1.8Mhz Takt ein sehr langsamer Vertreter seiner Art. Mit ihm lässt sich jedoch sowohl Debuggen als auch Flashen von fremden Hex- und Binary-Files. Er unterstützt aber nur MCU&#039;s von ST. NXP, Atmel oder TI lassen sich damit nicht programmieren. Der Discovery-JTAG beherrscht nur SWD, kein JTAG und hat keine Treiber, die den Programmierprozessor vom Zielsystem elektrisch entkoppelt. Der ST-Link in der Adapterversion hat diese Nachteile nicht und kostet auch nur um 20 €.&lt;br /&gt;
* [http://www.raisonance.com/~rlink-debugger-programmer__microcontrollers__tool~tool__T018:4cn9ziz4bnx6.html Raisonance RLink]&lt;br /&gt;
* [http://www.amontec.com Amontec] (Achtung: keine Reaktion auf Bestellung, Telefon, Email...)&lt;br /&gt;
* [http://www.hjtag.com H-JTAG] Personal Edition für ca. 60,- zu haben, läuft mit ADS, SDT, IAR, Vision und RVDS &lt;br /&gt;
* [http://www.isystem.com/products/itag iTag] für 50.- bei Amazon zu bestellen, oder als Eigenbau version (offenes Design) läuft mit der freien winIDEAiTag version (siehe oben)&lt;br /&gt;
&lt;br /&gt;
In der Regel haben die [[JTAG]] Adapter einen 20-Poligen Stecker, den man direkt auf die Demo-Boards, die auch einen 20-Poligen [[JTAG]]-Anschluss haben, einstecken kann. Die Pinbelegung ist genormt, siehe Artikel [[JTAG]]. Die Discovery-Boards haben keinen separaten JTAG-Stecker, aber zumindest für das STM32F4 Discovery kann man sich leicht einen Adapter Pinheader-&amp;gt;JTAG Stecker selber bauen.&lt;br /&gt;
&lt;br /&gt;
Andere [[JTAG]] Adapter wie z.B. der ULink2 von Keil funktionieren nur mit dem Keil Compiler. Leider kann dieser auch kein fremdes Binary oder Hex-File in den Controller schreiben.&lt;br /&gt;
&lt;br /&gt;
===Programmieradapter Open-Source===&lt;br /&gt;
&lt;br /&gt;
* [https://www.olimex.com/Products/ARM/JTAG/ARM-JTAG-COOCOX/ ARM-JTAG-COOCOX], CoLinkEX Nachbau von Olimex, unterstützt JTAG sowie SWD&lt;br /&gt;
** [http://www.coocox.org/colinkEx.htm unterstützte uC]&lt;br /&gt;
** unterstütze IDEs: [http://www.keil.com/arm/mdk.asp Keil MDK-ARM 4.03] oder neuer, [http://www.iar.com/en/Products/IAR-Embedded-Workbench/ IAR Embedded Workbench 5.xx] oder neuer sowie die [http://www.coocox.org/CooCox_CoIDE.htm CooCox CoIDE]&lt;br /&gt;
* [https://www.olimex.com/Products/ARM/JTAG/ Olimex] ARM-USB-OCD (ca. 60.-, hat zusätzlich einen Spannungsausgen und einen COM Port)&lt;br /&gt;
* [http://www.oocdlink.com/ OOCDLink]  [_Link ist derzeit nicht verfügbar_]&lt;br /&gt;
* [https://github.com/texane/stlink Stlink]&lt;br /&gt;
* [http://www.randomprojects.org/wiki/Floss-JTAG FLOSS-JTAG]&lt;br /&gt;
* [http://capitanio.org/mlink/ Linux Demo Code für die Discovery&#039;s ST-Link Programmierung]&lt;br /&gt;
&lt;br /&gt;
Der Controller hat auch einen fest eingebauten Boot-Lader. Damit läßt er sich auch über eine gewöhnliche serielle Schnittstelle programmieren, ohne dass man einen JTAG-Adapter benötigt. Dies erfordert ggf. entsprechende Konfiguration über die BOOTx-Pins und/oder die Option-Bytes, und ein Programm wie [https://code.google.com/p/stm32flash/ stm32flash].&lt;br /&gt;
&lt;br /&gt;
=== Demo-Projekte ===&lt;br /&gt;
&lt;br /&gt;
* Einführung in die GPIO Programmierung der STM32F10x und STM32F30x Prozessoren am Beispiel des STM32F3 Discovery Boards und Vergleich zur AVR IO Registerstruktur [http://www.mikrocontroller.net/topic/300472#new]&lt;br /&gt;
* [[prog_bsp_timer_1_timer2|Programmbeispiel für die Verwendung von Timer2 zusammen mit dem Interrupt]]&lt;br /&gt;
* [http://www.firefly-power.de/ARM/printf.html Printf() debugging mit minimalem Aufwand]&lt;br /&gt;
* [[STM32_BLDC_Control_with_HALL_Sensor|Programmbeispiel für BLDC Motoransteuerung (Timer 1) mit HALLSensor (Timer 3)]]&lt;br /&gt;
* [[Cortex_M3_OCM3U]]&lt;br /&gt;
* Martin Thomas hat ein umfangreiches Projekt erstellt, in der die Eclipse Einstellungen enthalten sind:&lt;br /&gt;
** [http://www.siwawi.arubi.uni-kl.de/avr_projects/arm_projects/arm_memcards/index.html &amp;quot;ChaN&#039;s FAT-Module with STM32 SPI&amp;quot;]&lt;br /&gt;
* [[STM32 USB-FS-Device Lib]]&lt;br /&gt;
* Modellbau-Sender auf STM32-Basis mit vielen Treibern [http://www.rcos.eu www.rcos.eu]&lt;br /&gt;
* Ausführliches [https://github.com/jkerdels/stm32edu Einstiegs-Tutorial] in Codeform für das [http://www.st.com/internet/evalboard/product/252419.jsp STM32F4 discovery board]&lt;br /&gt;
* [http://www.redacom.ch/keillab/ Schweizer Gondelbahnsteuerung über Webserver auf ETT STM32F ARM KIT Board in Keil RTOS] mit Webcam&lt;br /&gt;
* Die [http://ethernut.svn.sourceforge.net/viewvc/ethernut/trunk/ Ethernut SVN Version] unterstützt inzwischen viele STM32 Typen, viele Devices und einige STM32 Demoboards&lt;br /&gt;
* [http://mikrocontroller.bplaced.net/wordpress/?page_id=744 Uwe Becker&#039;s Libraries für den STM32F4]&lt;br /&gt;
* [http://mikrocontroller.bplaced.net/wordpress/?page_id=3290 Uwe Becker&#039;s STM32F429 Discovery Board Oszilloskop], hier der [http://www.mikrocontroller.net/topic/319831#new Thread]&lt;br /&gt;
* [http://mikrocontroller.bplaced.net/wordpress/?page_id=3424 Uwe Becker&#039;s STM32F429 Discovery Board ZX-Spectrum Emulator]&lt;br /&gt;
&lt;br /&gt;
== Debug- und Trace-Interface (CoreSight™ Debug and Trace Technologie)==&lt;br /&gt;
&lt;br /&gt;
Übersicht über beide Funktionalitäten und den Schnittstellen:&lt;br /&gt;
http://www.keil.com/support/man/docs/ulink2/ulink2_cs_core_sight.htm&lt;br /&gt;
&lt;br /&gt;
Die Coresight-Debug-Architektur ermöglicht ein nicht-invasives Debugging, d.h. es können während des Betriebes (meistens) ohne Beeinflussung des Prozessors Daten vom Speicher gelesen und in selbigen geschrieben werden.&lt;br /&gt;
&lt;br /&gt;
=== Debugger Funktionen ===&lt;br /&gt;
&lt;br /&gt;
Der Debugger-Teil besitzt drei Funktionen:&lt;br /&gt;
* Run Control: z.B. Programm-Start, Stopp und Einzel-Schritte.&lt;br /&gt;
* (Program) Break Points: Ein Programm hält an, wenn der Programm Counter eine bestimmte Programm-Adresse erreicht.&lt;br /&gt;
** Die maximale Anzahl der gleichzeitig möglichen Break Points ist begrenzt (z.B. 6 bei einem STM32).&lt;br /&gt;
** Die Anzahl der Break Points ist nahezu unbegrenzt, wenn ein Debugger über den Memory Access (s.u.) sogenannte Flash Break Points unterstützt. Dabei wird ein geladenes Programm im Flash umprogrammiert, um den Debugger anzuhalten. Diese Funktionalität ist meistens ein kostenpflichtiges Zusatz-Feature des Debugger-Herstellers. &lt;br /&gt;
** Beinhaltet keine Data Watch Funktionalität, welche im Trace-Teil (DWT) realisiert wird.&lt;br /&gt;
* Memory Access: Lesen und Schreiben von Speicheradressen. &lt;br /&gt;
** Diese Funktionalität beinhaltet keine direkte Flash-Programmierung. Der Programmiervorgang für einen Flash ist herstellerspezifisch und muss von dem verwendeten Debugger unterstützt werden.&lt;br /&gt;
&lt;br /&gt;
=== Trace Funktionen ===&lt;br /&gt;
Die Trace-Funktionalität wird in drei Funktionen aufgeteilt:&lt;br /&gt;
* ETM (Embedded Trace Macrocell): Optional, nicht jede CPU besitzt diese Hardware (Kostenfaktor, Ausstattung).&lt;br /&gt;
* ITM (Instrumentation Trace Macrocell): Über diesen Kanal kann ein vereinfachtes Trace des Core ermöglicht werden, sowie &amp;quot;printf-ähnlich&amp;quot; Daten über den ITM Channel 0 geschickt und im Debugger ausgegeben werden.&lt;br /&gt;
* DWT (Data Watchpoint &amp;amp; Trace Unit): &lt;br /&gt;
** Data Watch: 4 Access-Break-Points ( z.B. der Debugger bleibt stehen, wenn das Programm auf einen Speicher zugreift oder der Wert einer Variablen einen bestimmten Wert annimmt). &lt;br /&gt;
** Trace Unit: Programmverlauf (durch Lesen des Program Counters) und Interrupt Aufrufe verfolgen, sowie Zeitmessungen.&lt;br /&gt;
&lt;br /&gt;
Einige der Trace-Funktionalitäten können über die JTAG-Schnittstelle angesprochen werden. Die schnelle Trace-Funktionalität (mit 4 bit Parallel-Port) steht nur mit der erweiterten DEBUG + ETM Schnittstelle zur Verfügung. Im Gegensatz zum Debugger-Teil (Run Control, Break Points und Memory Access) werden Trace-Funktionen nicht von allen Debuggern unterstützt. Debugger mit der vollen Trace-Funktionalität kosten deutlich mehr.&lt;br /&gt;
&lt;br /&gt;
* Beispiele für Trace-Port-Aktivierungen für verschiedene Hersteller: http://www.keil.com/support/man/docs/jlink/jlink_capture_tracedata.htm&lt;br /&gt;
&lt;br /&gt;
Die Aktivierung des parallelen Trace-Ports erfordert, je nach CPU Hersteller, zusätzliche Debugger-Makros für die Aktivierung und Port-Freischaltung. Zusätzlich sind die Schnittstellenauswahl und Einstellung (Frequenzen) im Entwicklungs-Tool (IDE) wichtig, um erfolgreich den Programm-Verlauf &amp;quot;tracen&amp;quot; zu können.&lt;br /&gt;
&lt;br /&gt;
=== Debug und Trace-Schnittstellen ===&lt;br /&gt;
Als Debug Interface stehen zwei Varianten zur Auswahl:&lt;br /&gt;
* [[JTAG]]: Dafür sind mindestens 6 Steuerleitungen nötig. Unterstützt Device Chaining: Mehrere verbundene Geräte können mit einem Debugger/Programmer gleichzeitig angesteuert werden.&lt;br /&gt;
* SWD (Serial Wire Debug): Hier mindestens 2  Steuerleitungen (3 mit SWO, zzgl GND und 3,3V). Die SWD Schnittstelle ist in der Regel schneller und kann auch Funktionen aus dem Trace-Teil beinhalten (z.B. ITM, dafür wird der SWO-Pin benötigt). Device Chaining ist mit dieser Schnittstelle nicht möglich.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Standard-JTAG Steckerbelegungen: &lt;br /&gt;
http://www.keil.com/support/man/docs/ulink2/ulink2_hw_connectors.htm&lt;br /&gt;
&lt;br /&gt;
=== Der 10polige JTAG-Stecker von mmvisual ===&lt;br /&gt;
mmvisual hat mit dieser Steckerbelegung die Standard JTAG Schnittstelle erweitert:&lt;br /&gt;
&lt;br /&gt;
Ich habe diesen Part in den Artikel [http://www.mikrocontroller.net/articles/JTAG#Der_10-polige_JTAG_Stecker_von_mmvisual JTAG] verschoben.&lt;br /&gt;
Hinzu gekommen ist die Adapterplatine 10-Polig auf Standard JTAG 20 Polig mit TTL/V24 Wandler. [http://www.mikrocontroller.net/articles/JTAG#Die_Adapterplatine Siehe hier.]&lt;br /&gt;
&lt;br /&gt;
== Hardware-Beschaltung ==&lt;br /&gt;
&lt;br /&gt;
Der STM32 benötigt für den Betrieb nur (Minimalbeschaltung):&lt;br /&gt;
&lt;br /&gt;
* VCC 2..3,3V (je nach Typ)&lt;br /&gt;
* AVCC 2..3,3V (sehr wichtig, der STM32 lässt sich ohne diese Spannung nicht programmieren)&lt;br /&gt;
* GND&lt;br /&gt;
* Reset Pin 100nF nach GND (ein Pull-Up Widerstand von ca. 40k ist intern vorhanden)&lt;br /&gt;
* [[#Bootmodi|Boot-Pins]]&lt;br /&gt;
&lt;br /&gt;
ansonsten nur ein paar einzelne Cs 100nF an VCC/GND.&lt;br /&gt;
&lt;br /&gt;
Um Programmieren zu können wird entweder noch die serielle Schnittstelle (Programmieren über den vorprogrammierten Bootloader) oder JTAG oder die SWD Schnittstelle benötigt.&lt;br /&gt;
&lt;br /&gt;
=== Bootmodi ===&lt;br /&gt;
Unterschiedliche Bootmodi lassen sich mittels der PINs BOOT0 und BOOT1 auswählen . Siehe Application Note [https://my.st.com/public/STe2ecommunities/mcu/Lists/cortex_mx_stm32/Attachments/18225/AN2606.pdf AN2606]. Außer F1 besitzen neuere Familien ein SYSCFG_MEMR Register. In dieses Register kann man die gewünschten Boot0/1 Werte schreiben und nach einem Core-Reset (!= System_Reset) startet der Prozessor im gewünschten Mode. Eine Neu- bzw. Deinitialisierung der Peripherie empfiehlt sich! &lt;br /&gt;
&lt;br /&gt;
==== Boot from FLASH ====&lt;br /&gt;
Startadresse wird von 0x08000004 geladen&lt;br /&gt;
 BOOT0 Lo&lt;br /&gt;
 BOOT1 X &lt;br /&gt;
&lt;br /&gt;
==== Boot from SRAM ====&lt;br /&gt;
PC Startadresse wird an 0x200001E0 direkt angesprungen.&lt;br /&gt;
 BOOT0 Hi&lt;br /&gt;
 BOOT1 Hi&lt;br /&gt;
Da der interne FLASH der stm32f1x laut Datenblatt nur für 1000 Schreibvorgänge ausgelegt ist, kann mittels BOOT0 (High) und BOOT1 (High) auch aus dem zuvor mit dem Debugger (JTAG/SWD) beschriebenen SRAM booten. &lt;br /&gt;
Hierbei gilt zu beachten:&lt;br /&gt;
 VTOR auf die NVIC Tabelle im SRAM vor dem auslösen des ersten Interrupts remappen.&lt;br /&gt;
&lt;br /&gt;
 Um ein vergleichbares Startverhalten zum FLASH zu erreichen, empfiehlt es sich,&lt;br /&gt;
 0xF1E0F85F an 0x200001E0 zu schreiben. Diese implizite Ausführung von &amp;quot;ldr.w pc,&lt;br /&gt;
 [pc, #-0x01E0]&amp;quot; beim Start erzwingt ein laden der Startadresse von 0x20000004.&lt;br /&gt;
&lt;br /&gt;
==== Boot from SYSMEM (RS232, CAN und USB) ====&lt;br /&gt;
PC Startadresse wird von 0x1FFFF004 geladen&lt;br /&gt;
 BOOT0 Hi&lt;br /&gt;
 BOOT1 Lo&lt;br /&gt;
&lt;br /&gt;
Ab F2 gibt es auch ein SYSCFG_MEMRMR Register. Schreibt man hier den Wert für &amp;quot;System Flash&amp;quot; und macht einen Corereset (keinen Systemreset), so landet man auch im Bootloader, unabhängig vom Wert der Boot Pins.&lt;br /&gt;
&lt;br /&gt;
Auch ohne JTAG lässt sich ein STM32 programmieren (Bootloader-Aktivierung). Dabei stehen, je nach CPU-Typ, verschiedene Möglichkeiten zur Verfügung:&lt;br /&gt;
* RS-232 (bisher alle STMs)&lt;br /&gt;
* USB (alle USB fähigen CPUs &amp;gt; F103)&lt;br /&gt;
* CAN (wie USB nur in bestimmten MCUs)&lt;br /&gt;
&lt;br /&gt;
3 zusätzliche Verbindungen müssen auf dem Board gepatcht werden. Für einen Test geht es auch mit Tastern für RESET und BOOT0.&amp;lt;br&amp;gt;&lt;br /&gt;
RESET=RTS (L-aktiv)&amp;lt;br&amp;gt;&lt;br /&gt;
BOOT0=DTR (H-aktiv)&amp;lt;br&amp;gt;&lt;br /&gt;
BOOT1=LOW&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Details sind hier im Forum: [http://www.mikrocontroller.net/topic/141711 STM32 Programmiertool]&lt;br /&gt;
&lt;br /&gt;
Tools für den Download über den STM32-Bootloader:&lt;br /&gt;
* [http://www.st.com/web/en/catalog/tools/PF257525 STSW-MCU005 STM32 and STM8 Flash loader demonstrator]&lt;br /&gt;
* [https://code.google.com/p/stm32flash/ stm32flash] - Open source flash program (RS-232)&lt;br /&gt;
* [http://dfu-util.sourceforge.net/ dfu-util] - Open source flash program (USB)&lt;br /&gt;
&lt;br /&gt;
== Bewertung ==&lt;br /&gt;
=== Vorteile ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Vorteile gegenüber ARM7:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Interrupt-Controller jetzt Teil des Prozessors (als Core Peripheral), die Vector Table ist jetzt eine echte Vektortabelle, keine Sprungliste wie bei ARM7. Durch Automatismen zwischen Core und NVIC (auto register save r0..r3, lr, sp, pc) bei Interrupt Entry wird eine deutlich schnellere Ausführungszeit bei Interrupts erreicht. Der Interrupt Code muss sich nicht mehr selbst um die Sicherung der o.g. Register kümmern und eine besondere Konfiguration der Handler im Compiler entfällt. Sind vor Beendigung einer ISR (d.h. Rücksprung zum User Code) weitere Interrupts pending, so werden diese ausgeführt, ohne dass eine komplette pop-push-sequenz der Register notwendig ist. Schön beschrieben ist es hier im [http://www.hitex.com/fileadmin/pdf/insiders-guides/stm32/isg-stm32-v18d-scr.pdf Insider&#039;s Guide] unter 2.4.5 / Seite 20.&lt;br /&gt;
* Thumb-2 Befehlssatz, deutlich schneller als Thumb-1 und ebenso kompakt&lt;br /&gt;
* Weniger Pins für Debugging benötigt durch SWD&lt;br /&gt;
* Mehr Hardware Breakpoints machen debuggen einfacher&lt;br /&gt;
* Software ist einfacher weil die Umschaltung zwischen ARM Mode und Thumb Mode wegfällt&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Vorteile gegenüber LPC1700 und LPC1300:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Flexiblere Gehäuseformen mit mehr Peripherie bei kleinen Gehäusen&lt;br /&gt;
* FW-Lib für alle STM32 gleich, alle AppNotes/Demos beziehen sich auf diese eine FW-Lib was die Entwicklung der eigenen Applikation sehr beschleunigt.&lt;br /&gt;
* Genauerer und flexiblerer ADC, insbesondere gegenüber LPC1300&lt;br /&gt;
* Flexiblere Varianten der Peripherie &amp;gt;&amp;gt; bei weniger einen deutlichen Preisvorteil&lt;br /&gt;
* ab 0,85 EUR (Stand 2010) Allerdings gibts den LPC1100 mit Cortex-M0 schon ab 0,65 $!&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Vorteile gegenüber SAM3/4:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Fast alle Pins sind 5-Volt tolerant.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Vorteile gegenüber anderen &amp;quot;Kleinen&amp;quot; wie z.B. PIC, Atmel usw.&#039;&#039;&#039;&lt;br /&gt;
* nahezu gleicher Preis bei Hobby Anwendungen&lt;br /&gt;
* 32 Bit ohne Umwege in Assembler rechenbar&lt;br /&gt;
* Schnelle direkte Offset-Adressierung ermöglicht effizienten Zugriff auf Stack-Variablen, lokal gespeicherte Flash-Konstanten, struct/Array-Elemente&lt;br /&gt;
* Einfache einheitliche Adressierung des gesamten Adressraums, d.h. Pointer auf Peripherieregister, RAM &amp;amp; Flash können exakt gleich behandelt werden, keinerlei Banking/Umschalt-Mechanismen erforderlich auch bei großem Flash/RAM&lt;br /&gt;
* Interrupt-Prioritäten und Prioritätsgruppen&lt;br /&gt;
* Effiziente Pointerarithmetik da Registerbreite=Adressbreite&lt;br /&gt;
* bessere Peripherie wie USB, Ethernet, Vielzahl an Timern&lt;br /&gt;
* der ARM-Core hat eine höhere Taktfrequenz und kann gleichzeitig mehr in weniger Takten berechnen&lt;br /&gt;
* Hardware-Division, bei einigen FPU zur effizienten float-Berechnung&lt;br /&gt;
* Mit größerem Flash/RAM verfügbar&lt;br /&gt;
* Code kann direkt aus dem RAM ausgeführt werden, Speicherschutz und privilegierter Ausführungsmodus können &amp;quot;Kernel&amp;quot;- vor &amp;quot;Anwendungs&amp;quot;-Code schützen, somit wird das dynamische Nachladen von Anwendungen aus externem Speicher effizient &amp;amp; sicher möglich&lt;br /&gt;
* ... und weitere 1000 Punkte ...&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Links&#039;&#039;&#039;&lt;br /&gt;
* [http://www.arm.com/files/pdf/ARM_Microcontroller_Code_Size_%28full%29.pdf Code Size Analyse zwischen verschiedenen µC]&lt;br /&gt;
&lt;br /&gt;
=== Nachteile ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Nachteil gegenüber LPC1700:&#039;&#039;&#039;&lt;br /&gt;
* STM32F1xx: nur 72 MHz statt 100 MHz (LPC1759: 120 MHz) Taktfrequenz; STM32F2xx hat diesen Nachteil nicht (ebenfalls 120MHz, STM32F4xx mit 180MHz)&lt;br /&gt;
* Der LPC1700 besitzt deutlich mehr Mechanismen, um die Auswirkung der Waitstates des Flash-ROMs auf Code- und Datenzugriffe zu reduzieren und das bedeutet mehr Performance bei gleicher Taktfrequenz. Beim STM32F2 entfällt dieser Nachteil wohl aufgrund des ART Accelerators. &lt;br /&gt;
* Alle LPC1xxx haben 32 Bit Timer. Bei den STM32 haben das nur die STM32F2xx und STM32F4xx (2 Stück)&lt;br /&gt;
* I2S Einheit von ST hat keinen FIFO und im 24/32Bit Modus müssen 2x16Bit Halbwörter übertragen werden. Wobei allgemein bei neuen ARM Prozessoren die vorhandenen DMA-Kanäle (basierend auf eigenen BUS-Kanälen und Speicherzugriffen) FIFO in beliebiger Größe bedeutet. (Gilt nicht bei bestimmten STM32F4xx)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Nachteil für Hobby-Anwender&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Nicht direkt &amp;quot;Steckbrettauglich&amp;quot;, da kein DIL Gehäuse verfügbar. Der ebay-Shop dipmicro führt jedoch sehr günstige Lötadapter für Umsetzung von LQFP48 auf DIP48. QFP64 in 0.5mm Pinabstand und nicht 0.8mm wie AVR. Von NXP gibt es Cortex-M0 µC im DIL Gehäuse.&lt;br /&gt;
&lt;br /&gt;
* Viel Peripherie, Clocks müssen alle richtig eingestellt werden, ggf. Anpassung des Startup Codes usw.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Errata, Tipps und Tricks ==&lt;br /&gt;
=== Hardware ===&lt;br /&gt;
* AD-Wandler PA0: Im Errata steht, dass hier Fehler in der Wandlung entstehen könnten, also einen anderen Pin verwenden.&lt;br /&gt;
* CAN-Bus PD0/PD1: Remap geht erst ab der 100-Pin-Version. Steht im RM0008 unter 9.3.3.: &amp;quot;CAN1 alternate function remapping&amp;quot;. Alle Infos von RM0008 9.3.x sind interessant&lt;br /&gt;
* CAN und USB sind bei der F1 Serie nur bei der &amp;quot;◦Connectivity-Line&amp;quot; gleichzeitig nutzbar. Siehe Datenblätter.&lt;br /&gt;
* Mit internem RC-Oszillator kann die CPU mit maximal 64MHz betrieben werden. Mit einem externen Quarz sind dann 72MHz möglich.&lt;br /&gt;
* Für USB Betrieb muss die CPU mit 48MHz oder 72MHz betrieben werden (bei STM32F1xx).&lt;br /&gt;
* Der Idle Interrupt vom Usart wird zwar ausgelöst, aber nicht vom entsprechenden Statusflag angezeigt&lt;br /&gt;
* Der DMA fängt beim aktivieren immer von vorn an zu zählen, auch wenn er nur kurz angehalten wurde&lt;br /&gt;
* STM32F2xx hat kein Flash Size Register, bei STM32F4xx ist zwar ein flash Size Register beschrieben, kollidiert aber in der Adresse mit einem anderen Register&lt;br /&gt;
* Derivate mit internem EEPROM und nur einer Speicherbank haben das &amp;quot;Feature&amp;quot; bei write/erase des Data-Flashes (EEPROM) einen kompletten stall der code execution zu verursachen (inkl. ISR&#039;s, DMA). Desgleichen bei write/erase des internen Flash (ISP-routinen, EEPROM-Emulation).&lt;br /&gt;
* Der I2C hat diverse Fehler, welche im Errata des jeweiligen Modells (z.B. [http://www.st.com/st-web-ui/static/active/en/resource/technical/document/errata_sheet/CD00238166.pdf STM32F105xx and STM32F107xx Errata sheet] ) zu finden sind. Workarounds hierzu finden sich in der Application Note [http://www.st.com/st-web-ui/static/active/en/resource/technical/document/application_note/CD00209826.pdf AN2824]. Am Besten benutzt man jedoch die I2C Communication peripheral application library (CPAL) von ST ([http://www.st.com/web/catalog/tools/FM147/CL1794/SC961/SS1743/PF258336 STSW-STM32127])&lt;br /&gt;
* [http://blog.frankvh.com/category/stm32/ weitere undokumentierte Features]&lt;br /&gt;
* Interrupt-Flags in Statusregistern der diversen Peripherals wie der Timer müssen zu &#039;&#039;&#039;Beginn&#039;&#039;&#039; (bzw. möglichst weit vor dem Return) der ISR zurückgesetzt werden, da die ISR sonst eventuell 2x ausgeführt wird (Siehe [https://my.st.com/public/Faq/Lists/faqlst/DispForm.aspx?ID=143&amp;amp;level=1&amp;amp;objectid=141 STM32 FAQ] und [http://www.mikrocontroller.net/topic/312393#new Forum]).&lt;br /&gt;
&lt;br /&gt;
=== Software ===&lt;br /&gt;
==== GCC ====&lt;br /&gt;
Um den GCC direkt zu verwenden (zB. mit selbstgebautem makefile), falls man das nicht von einer Entwicklungsumgebung machen lässt, siehe zunächst [[ARM GCC]]. STM32-spezifisches ist:&lt;br /&gt;
* Wird die [[#.E2.80.8ESTM32_Standard_Peripheral_Library|STM32 Standard Peripheral Library]] und ein Quarz verwendet, so muss noch per Präprozessor-Definition die Frequenz des Quarzes angegeben werden mittels z.B. -DHSE_VALUE=8000000 für 8MHz (wie auf dem STM32F4 Discovery).&lt;br /&gt;
&lt;br /&gt;
===== Startupcode &amp;amp; Linkerscript =====&lt;br /&gt;
* Damit der compilierte Code an den richtigen Stellen im Controller landet (d.h. dem Flash) muss man dem Linker ein Linkerscript mitgeben. Dies geht per &amp;quot;-T &#039;&#039;pfad_zum_linkerscript.ld&#039;&#039;&amp;quot; an den Linker-Befehl. Im Archiv der [[#.E2.80.8ESTM32_Standard_Peripheral_Library|STM32 Standard Peripheral Library]] befindet sich ein Beispiel-Linkerscript für die Atollic TrueSTUDIO IDE, dieses kann direkt mit dem GCC verwendet werden. Beispielsweise für den STM32F4 befindet sich das Script im Pfad &amp;quot;/STM32F4xx_DSP_StdPeriph_Lib_V1.1.0/Project/STM32F4xx_StdPeriph_Templates/TrueSTUDIO/STM324x7I_EVAL/stm32_flash.ld&amp;quot; des Archives.&lt;br /&gt;
* Damit beim Starten die richtigen Initialisierungen vorgenommen werden (wie globale Variablen und bei C++ Konstruktoren globaler Objekt-Instanzen) muss als erstes ein Startupcode laufen, der dann die main()-Funktion aufruft. Der Startupcode ist meistens in Assembler geschrieben, C-Code ist aber auch möglich. Im Archiv der [[#.E2.80.8ESTM32_Standard_Peripheral_Library|STM32 Standard Peripheral Library]] befindet sich ein Beispiel-Startupcode für die Atollic TrueSTUDIO IDE, dieser kann direkt mit dem GCC verwendet werden. Beispielsweise für den STM32F4 befindet sich der Code in Assemblerform im Pfad &amp;quot;/STM32F4xx_DSP_StdPeriph_Lib_V1.1.0/Libraries/CMSIS/Device/ST/STM32F4xx/Source/Templates/TrueSTUDIO/startup_stm32f40xx.s&amp;quot; des Archives. Der Assemblercode kann per arm-none-eabi-as (Flags s.o.) assembliert werden, die resultierende .o -Datei normal mitgelinkt.&lt;br /&gt;
&lt;br /&gt;
Zusammen bieten die beiden Dateien der Anwendung ein Standard-C-Interface, d.h. man kann wie gewohnt globale Variablen verwenden und seinen Code in die main()-Funktion schreiben.&lt;br /&gt;
&lt;br /&gt;
=== Tipps für Umsteiger von Atmel/PIC/8051 ===&lt;br /&gt;
* Prozessortakt hat unterschiedliche Taktquellen und eine PLL.&lt;br /&gt;
* Alle Peripheriemodule haben einen extra Clock, den man aktivieren muss.&lt;br /&gt;
* Wenn man z.B. einen UART benutzen möchte, so muss man den Clock vom UART, Alternate Function IO (AFIO) und dem GPIO-Port aktivieren.&lt;br /&gt;
* Ansonsten hat man nahezu doppelt so viele Möglichkeiten in den Peripheriemodulen.&lt;br /&gt;
* Interrupt-Flags müssen in der ISR selber gelöscht werden&lt;br /&gt;
* Forum zu [http://www.mikrocontroller.net/topic/175888 Interrupts vs. Events]&lt;br /&gt;
&lt;br /&gt;
=== Errata vom STM32F4xx die nicht im Errata von ST stehen ===&lt;br /&gt;
* [http://www.mikrocontroller.net/topic/267439#2788478 Aktivieren von DMA], wenn mehr als 3 DMA Kanäle aktiviert werden, kann es sein dass die nicht alle korrekt bedient werden. Auch klappt der DMA mit dem FSMC nicht immer zuverlässig. [https://my.st.com/public/STe2ecommunities/mcu/Lists/cortex_mx_stm32/Flat.aspx?RootFolder=%2Fpublic%2FSTe2ecommunities%2Fmcu%2FLists%2Fcortex_mx_stm32%2FWarning%20limit%20simultaneous%20DMAs%20to%202&amp;amp;FolderCTID=0x01200200770978C69A1141439FE559EB459D7580009C4E14902C3CDE46A77F0FFD06506F5B&amp;amp;currentviews=811 siehe hier] [http://blog.frankvh.com/2012/01/13/stm32f2xx-stm32f4xx-dma-maximum-transactions/ und hier]&lt;br /&gt;
* [http://www.mikrocontroller.net/topic/260637#2700761 Nerviger Bug in &amp;quot;stm32f4xx.h&amp;quot;] Änderung Struktur GPIO_TypeDef&lt;br /&gt;
* [http://www.mikrocontroller.net/topic/261690#2714754 Batterie wird leer gezogen], nur bei manchen Chips mit Rev. A&lt;br /&gt;
* [http://www.efton.sk/STM32/STM32F4xx_doc_errors.txt Liste von Dokumentations-Fehlern]&lt;br /&gt;
&lt;br /&gt;
== Bezugsquellen ==&lt;br /&gt;
&lt;br /&gt;
=== Controller ===&lt;br /&gt;
&lt;br /&gt;
Versand Europaweit im endasmedia.ch Shop&lt;br /&gt;
* STM32F105 Controller für 2.50€ [http://shop.endasmedia.ch/index.php?id_product=8&amp;amp;controller=product&amp;amp;id_lang=1 shop.endasmedia.ch]&lt;br /&gt;
&lt;br /&gt;
Versandhäuser für Privatpersonen&lt;br /&gt;
* [http://www.reichelt.de/STM-Controller/2/index.html?;ACTION=2;LA=2;GROUPID=2950; Reichelt]&lt;br /&gt;
* [http://darisusgmbh.de/shop/index.php?cat=c2692_ARM-Cortex.html Darisus]&lt;br /&gt;
* [http://www.hbe-shop.de HBE (Farnell Programm für Private)] &lt;br /&gt;
* [http://www.sander-electronic.de/be00069.html Sander]&lt;br /&gt;
* [http://www.tme.eu/de/katalog/index.phtml#cleanParameters%3D1%26search%3DSTM32F10%26bf_szukaj%3D+ TME] &lt;br /&gt;
* [http://teske-electronics.de/index.php?cPath=3_9_53 Teske electronics]&lt;br /&gt;
* [http://de.rs-online.com/web/c/halbleiter/prozessoren-und-mikrocontroller/mikrocontroller/?sort-by=default&amp;amp;sort-order=default&amp;amp;applied-dimensions=4294417325&amp;amp;lastAttributeSelectedBlock=4294425895 RS-Online]&lt;br /&gt;
&lt;br /&gt;
Gewerblich liefern natürlich viele wie EBV, [http://de.futureelectronics.com Future Electronics], Mouser, Farnell, Digikey usw...&lt;br /&gt;
&lt;br /&gt;
=== Evaluation Boards ===&lt;br /&gt;
* Siehe [[:Kategorie:ARM-Boards]]&lt;br /&gt;
* [http://shop.embedded-projects.net/index.php?module=artikel&amp;amp;action=gruppe&amp;amp;id=14 Im Shop von Embedded Projects]&lt;br /&gt;
* [http://www.watterott.com/de/Boards-Kits/ARM/ARM-Cortex-M3 Cortex M3 bei Watterott]&lt;br /&gt;
* [http://www.raisonance.com/~primer-starter-kits__microcontrollers__tool~tool__T018:4enfvamuxbtp.html Primer und Primer2 von Raisonance]&lt;br /&gt;
* [http://www.sander-electronic.de/es0028.html Sander Electronic]&lt;br /&gt;
* [http://www.mikrocontroller.net/articles/MP32F103-Stick:_Ein_Mini-Mikrocontroller-Board_mit_USB_und_bis_zu_4MB_Datenspeicher Artikel im Wiki, ARM mit USB und 4MB Speicher]&lt;br /&gt;
* [http://www.futurlec.com/STM32_Development_Board.shtml Futurlec Evalboard, ebenso Header-Board]&lt;br /&gt;
* [http://www.propox.com/products/t_174.html Propox, Header-Boards für 103R und 103V sowie Trägerplatine dafür]&lt;br /&gt;
* [http://www.mikrocontroller.net/articles/Cortex_M3_OCM3U Cortex M3 Artikel im Wiki]&lt;br /&gt;
* [http://olimex.com/dev/index.html STM32 bei Olimex]&lt;br /&gt;
* [http://de.farnell.com/jsp/displayProduct.jsp?sku=1824325&amp;amp;action=view&amp;amp;CMP=GRHS-1000962 STM32Discovery bei Farnell] Mikrocontroller Board (STM32F100RBT6B) mit onboard USB-Programming Interface für ca. 12,50€&lt;br /&gt;
* [http://www.de.rs-online.com/web/p/products/7458434/ STM32Discovery bei RS-Components] 12,65 € +MwSt.&lt;br /&gt;
* [http://www.segor.de/#Q=STM32 VL DISCOVERY] STM32 Discovery bei Segor&lt;br /&gt;
* [http://www.watterott.com/de/STM32F4Discovery STM32F4DISCOVERY] STM32F4 Cortex M4 Controller mit JTAG-Debugger auf der Platine bei Watterott für 16,66EUR.&lt;br /&gt;
* [http://www.conrad.de/ce/de/product/443910/ STM32F4 Discovery Kit bei Conrad] 17,11 €&lt;br /&gt;
* [http://www.mcu-raisonance.com/~open4-development-platform__microcontrollers__tool~tool__T018:g65gu6ghg2n.html/ Open 4 oder auch genannt Evo-Primer]&lt;br /&gt;
* [http://www.wayengineer.com/index.php?main_page=index&amp;amp;cPath=50_66&amp;amp;page=1&amp;amp;sort=3a WayEngineer]&lt;br /&gt;
* [http://thinkembedded.ch/ST-STMicroelectronics:::24.html Im Thinkembedded Shop] in der Schweiz / DiscoveryF4, div. ETT und Olimex Boarde ab 20,18 CHF / 16,15 EUR (inkl. MwSt.) zzgl. Versandkosten&lt;br /&gt;
* [http://shop.myavr.de/ARM-Produktlinie/STM32F4-Discovery.htm?sp=article.sp.php&amp;amp;artID=200072 Im myAVR Shop] DiscoveryF4 mit möglichem Zubehör 16,45 EUR (inkl. MwSt.) zzgl. Versandkosten&lt;br /&gt;
* [http://www.keil.com/boards/cortexm.asp Keil/ARM Demoboards]&lt;br /&gt;
* [http://www.phytec.de Phytec]&lt;br /&gt;
* [http://shop.myavr.de/index.php?sp=artlist_kat.sp.php&amp;amp;katID=37 verschiedene ARM Produkte und Erweiterungen bei myAVR]&lt;br /&gt;
* [http://re.reworld.eu/de/produkte/s64dil-405/index.htm S64DIL-405 STM32Fxxx ARM Cortex M3 Mikrocontrollermodul mit USB-Schnittstelle, Steckbretttauglich] (Leerplatine eignet sich auch für STM32F1xx Prozessoren.)&lt;br /&gt;
* [http://www.amazon.de/STM32F4-DISCOVERY-STM32F429-Cortex-M4-Development/dp/B00HGG0KHY STM32F429 DISCOVERY Cortex M4 mit 2,4&amp;quot; Touch-TFT, 3-Achs Sensor, 64 MBit SDRAM ab ~25 EUR bei Amazon, Ebay u.a.]&lt;br /&gt;
&lt;br /&gt;
== Weblinks, Foren, Communities, Tutorials ==&lt;br /&gt;
* [http://www.mikrocontroller.net/articles/STM32_-_Einstieg_mit_Em::Blocks STM32 - Einstieg mit Em::Blocks Tutorial]&lt;br /&gt;
* [http://www.mikrocontroller.net/topic/173753 Diskussion zum Artikel]&lt;br /&gt;
* [http://www.mikrocontroller.net/forum/mikrocontroller-elektronik?filter=ARM*+STM32*+Cortex* Suche im Forum]&lt;br /&gt;
* [[STM32 für Einsteiger]]&lt;br /&gt;
* [[STM32 CooCox Installation]]&lt;br /&gt;
* [https://my.st.com/public/STe2ecommunities/mcu/Lists/ARM%20CortexM3%20STM32/AllItems.aspx Forum auf der ST Homepage] &lt;br /&gt;
* [http://www.stm32circle.com/hom/index.php STM32 Community] &lt;br /&gt;
*[http://joe-c.de/pages/posts/einstieg_mikrocontroller_stm32f103_101.php Einstieg:  STM32board mit Kamera (deutsch)] &lt;br /&gt;
* [http://www.ebv.com/fileadmin/products/Press_Print/Brochures/Product_Brochures/EBV_Cortex%20Collection_V2.pdf Übersicht der Cortex Prozessoren und deren Hersteller (nicht nur ST, von EBV)]&lt;br /&gt;
* [http://www.mikrocontroller.net/topic/258652 Tutorial]&lt;br /&gt;
* [http://diller-technologies.de/stm32_wide.html STM32 Tutorial in Deutsch von Diller Technologies]&lt;br /&gt;
* [http://mySTM32.de STM32 C und C++ Tutorial in Deutsch ]&lt;br /&gt;
* [http://mikrocontroller.bplaced.net STM32F4 Quellcode-Librarys und CooCox-Projekte in Deutsch ]&lt;br /&gt;
* [http://myugl.de Tutorial für Grafik-Librarys und SiSy-Projekte in Deutsch ]&lt;br /&gt;
* [http://www.st.com/web/en/catalog/tools/FM147/CL1794/SC961/SS1533/PF251717 MicroXplorer MCU graphical configuration tool ]&lt;br /&gt;
* [http://www.harerod.de/CoreMark_STM32.pdf Testbericht über CoreMark 1.0 auf Cortex-M3/M4 mit verschiedenen Compiler- und MCU-Einstellungen]&lt;br /&gt;
* [http://klaus4.blogspot.com/2014/05/stm32f4-discovery-mit-opensource.html STM32-Toolchain mit Eclipse CDT 4.3, GnuArmEclipse, OpenOCD 0.8.0, Gnu Arm GCC 4.8, STM32CubeMX]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;br /&gt;
[[Kategorie:ARM]]&lt;br /&gt;
[[Kategorie:STM32]]&lt;br /&gt;
[[Kategorie:Mikrocontroller]]&lt;/div&gt;</summary>
		<author><name>Promeus</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=Transistor&amp;diff=90472</id>
		<title>Transistor</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=Transistor&amp;diff=90472"/>
		<updated>2015-12-01T17:12:45Z</updated>

		<summary type="html">&lt;p&gt;Promeus: Schrott weg&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Kunstwort aus &amp;quot;transfer resistor&amp;quot;, was etwa so viel bedeutet wie &amp;quot;übertragener [[Widerstand]]&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
In den 1950-ern als praktische Anwendung des [[Halbleiter]]-Effekts erfundenes &amp;quot;solid state&amp;quot; Schalt- und Verstärkerelement, welches sehr klein ist, ohne bewegte Teile auskommt (anders als ein klassisches Relais) und keine energiefressende Heizung benötigt (anders als eine Röhre).&lt;br /&gt;
&lt;br /&gt;
Vom &amp;quot;bipolaren Transistor&amp;quot; (PNP, NPN) weiterentwickelt zum &amp;quot;Feldeffekt-Transistor&amp;quot; ([[FET]]), der heute - gefertigt mit einem preiswerten Verfahren unter Verwendung von Metall-Oxid-Schichten (MOS) - ein wesentliches Element integrierter Schaltkreise (ICs, integrated circuits) darstellt, und damit natürlich auch von [[Mikrocontroller]]n, um die es in diesem Wiki hauptsächlich geht (bzw. gehen sollte).&lt;br /&gt;
&lt;br /&gt;
== Schaltzeichen ==&lt;br /&gt;
http://electronicsclub.info/images/transbce.gif&lt;br /&gt;
&lt;br /&gt;
* E: Emitter&lt;br /&gt;
* B: Basis&lt;br /&gt;
* C: Collector    &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
In ASCII Schaltplänen sehen Transistoren so aus:&lt;br /&gt;
&amp;lt;pre&amp;gt; &lt;br /&gt;
                       |&amp;gt;                 |/&lt;br /&gt;
NPN      |&amp;gt;   oder    -|       oder      -|&lt;br /&gt;
                       |\                 |&amp;gt;&lt;br /&gt;
&lt;br /&gt;
                       |&amp;lt;                 |/&lt;br /&gt;
PNP:     |&amp;lt;   oder    -|       oder      -|&lt;br /&gt;
                       |\                 |&amp;lt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Um zu erkennen, ob ein NPN oder PNP Transistor im Schaltplan verwendet wird, gibt es Eselsbrücken:&lt;br /&gt;
*Für Dichter: &#039;&#039;&#039;Tut der Pfeil der Basis weh, handelt&#039;s sich um PNP.&#039;&#039;&#039;&lt;br /&gt;
*Für Praktiker: &#039;&#039;&#039;PNP heisst &amp;quot;Pfeil Nach Platte&amp;quot;&#039;&#039;&#039;.&lt;br /&gt;
*Mit Dialekt: &#039;&#039;&#039;NPN &amp;quot;&#039;naus, Pfeil, &#039;naus&amp;quot;&#039;&#039;&#039;.&lt;br /&gt;
*..und für Gleichberechtigungsverfechter: &#039;&#039;&#039;NPN means &amp;quot;Not Pointing iN&amp;quot;&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
JFET: [[Bild:Transistor_JFET.png]]&lt;br /&gt;
&lt;br /&gt;
MOSFET: [[Bild:Transistor_MOSFET.png]]&lt;br /&gt;
&lt;br /&gt;
* S: Source&lt;br /&gt;
* G: Gate&lt;br /&gt;
* D: Drain&lt;br /&gt;
&lt;br /&gt;
Eigentlich haben MOSFETs noch einen vierten Anschluss namens Bulk. Der ist aber nur bei Spezialtypen als Pin herausgeführt. Im Normalfall kann man ihn vergessen, da er nicht gesondert beschaltet werden muss, er ist praktisch und auch im Symbol mit Source verbunden.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Achtung:&#039;&#039;&#039; Die NPN/PNP Eselsbrücken funktionieren bei FETs nicht, denn bei einem P-Kanal FET zeigt der Pfeil weg vom FET!&lt;br /&gt;
Ein Bipolartransistor, im Englischen als bipolar junction transistor (BJT) bezeichnet, ist ein Transistor, bei dem Ladungsträger – negativ geladene Elektronen und positiv geladene Defektelektronen – zum Stromtransport durch den Bipolartransistor beitragen. Der BJT wird mittels eines elektrischen Stroms gesteuert und wird zum Schalten und Verstärken von Signalen ohne mechanisch bewegte Teile eingesetzt.&lt;br /&gt;
&lt;br /&gt;
Bipolare Leistungstransistoren sind für das Schalten und Verstärken von Signalen höherer Stromstärken und Spannungen ausgelegt.&lt;br /&gt;
&lt;br /&gt;
== Typbezeichnungen == &lt;br /&gt;
&lt;br /&gt;
Neben den Typbezeichnungen wie 2Nxxxx, TIPxxx, MJxxx, MJExx gibt es noch die in Europa geläufigere  Kennzeichnung bestehend aus zwei Buchstaben und drei Ziffern. Die diversen Kennzeichnungsmöglichkeiten sind in einem eigenen Artikel ([[Kennzeichnung von Halbleitern]]) zusammengefasst.&lt;br /&gt;
&lt;br /&gt;
== Kenndaten/Parameter ==&lt;br /&gt;
&lt;br /&gt;
Im [http://www.mikrocontroller.net/topic/197676#1938546 Beitrag: Transistorparameter Erklärung] sind Links zu Erläuterungen spezieller Kürzel.&lt;br /&gt;
&lt;br /&gt;
== Transistor Grundschaltungen ==&lt;br /&gt;
&lt;br /&gt;
Generell gilt, dass Strom vom Kollektor zum Emitter nur dann fließen kann, wenn die Basis positiver (NPN) bzw. negativer (PNP) wird als der Emitter. Dabei darf die Basis nicht direkt mit Vcc (NPN) oder GND (PNP) verbunden werden, da der Basisstrom sonst zu gross wird. Es muss jeweils ein geeigneter Basiswiderstand (R_Basis) gewählt werden.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Weitere Links:&#039;&#039;&#039;&lt;br /&gt;
* Artikel [[Basiswiderstand]]&lt;br /&gt;
* [http://www.elektronik-kompendium.de/sites/slt/0203111.htm Transistor Grundschaltungen im ElKo]&lt;br /&gt;
* [http://www.roboternetz.de/wissen/index.php/Transistor Transistor bei RoboterNetz.de]&lt;br /&gt;
&lt;br /&gt;
Es gibt drei Grundschaltungen. Der Name beschreibt den Anschluss, welcher sich auf einem festen Potential (Spannung) befindet. Die beiden anderen Anschlüsse haben bedingt durch die Schaltung ein veränderliches Potential.&lt;br /&gt;
&lt;br /&gt;
=== Kollektorschaltung (Emitterfolger)===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Anwendung:&#039;&#039;&#039;&lt;br /&gt;
* Impedanzwandler&lt;br /&gt;
* Darlington-Schaltung&lt;br /&gt;
* Schalter&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Eigenschaften:&#039;&#039;&#039;&lt;br /&gt;
* Keine Phasendrehung&lt;br /&gt;
* Hohe Stromverstärkung&lt;br /&gt;
* Keine Spannungsverstärkung&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Beispiel: Transistor als Schalter&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* NPN: Kollektor mit Vcc verbinden, Last an Emitter&lt;br /&gt;
* PNP: Kollektor mit GND verbinden, Last an Emitter&lt;br /&gt;
&lt;br /&gt;
In diesem Fall regelt der Transistor die Spannungen am Emitter, daher wird die Last am Emitter angeschlossen. Die Spannung am Emitter entspricht immer der an der Basis minus 0,6V, sie folgt der Basisspannung, deswegen auch der Name Emitterfolger. Daher ist diese Schaltung nicht geeignet, um 12V mit 5V zu schalten. &lt;br /&gt;
&lt;br /&gt;
[[Bild:NPN_Collector.gif | framed | center | NPN Transistor in Kollektorschaltung]]&lt;br /&gt;
&lt;br /&gt;
Wird &amp;lt;math&amp;gt;R_{Poti}&amp;lt;/math&amp;gt; (Spannungsteiler) erhöht, steigt die Spannung &amp;lt;math&amp;gt;U_{Last}&amp;lt;/math&amp;gt; letztlich bis auf Vcc-0,6V (Basis-Emitter-Übergang). &lt;br /&gt;
&lt;br /&gt;
[[Bild:PNP_Collector.gif | framed | center | PNP Transistor in Kollektorschaltung]]     &lt;br /&gt;
&lt;br /&gt;
Wird &amp;lt;math&amp;gt;R_{Poti}&amp;lt;/math&amp;gt; (Spannungsteiler) erhöht, sinkt Spannung an &amp;lt;math&amp;gt;U_{Last}&amp;lt;/math&amp;gt; letztlich bis auf 0,6V (Basis-Emitter-Übergang).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Weitere Links:&#039;&#039;&#039;&lt;br /&gt;
* [http://www.elektronik-kompendium.de/sites/slt/0204133.htm Kollektorschaltung im ElKo]&lt;br /&gt;
&lt;br /&gt;
=== Emitterschaltung ===&lt;br /&gt;
&lt;br /&gt;
Die Emitterschaltung bietet hohe Spannungs- und Stromverstärkung.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Anwendung:&#039;&#039;&#039;&lt;br /&gt;
* NF- und HF-Verstärker&lt;br /&gt;
* Leistungsverstärker&lt;br /&gt;
* Transistor als Schalter&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Eigenschaften:&#039;&#039;&#039;&lt;br /&gt;
* Phasendrehung 180°&lt;br /&gt;
* Hohe Spannungsverstärkung&lt;br /&gt;
* Hohe Stromverstärkung&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Beispiel: Transistor als Schalter&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Die Last liegt am Kollektor. Der Strom durch den Schalter oder an U_Schalt steuert den Strom zwischen Kollektor und Emitter. Wird der Schalter geschlossen, fließt ein Strom.&lt;br /&gt;
&lt;br /&gt;
[[Bild:NPN_Schalter.gif | framed | center | NPN Transistor als Schalter]]&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
                   ___                                          ___&lt;br /&gt;
Vcc/+ o-----------------------+          Vcc/+ o-----------------------+&lt;br /&gt;
                              |                                        |&lt;br /&gt;
                     ___    |&amp;lt;            U_schalt (-)       ___     |&amp;lt;  PNP             &lt;br /&gt;
             +------|___|---|  PNP             o------------|___|----|&lt;br /&gt;
             |     R_Basis  |\                             R_Basis   |\&lt;br /&gt;
    Schalter \                |                                        |&lt;br /&gt;
             |       ___      |                               ___      |&lt;br /&gt;
GND/- o------+------|___|-----+          GND/- o-------------|___|-----+&lt;br /&gt;
                   R_Last                                    R_Last     &lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Weitere Links:&#039;&#039;&#039;&lt;br /&gt;
* [http://www.elektronik-kompendium.de/sites/slt/0204302.htm Emitterschaltung im ElKo]&lt;br /&gt;
&lt;br /&gt;
=== Basisschaltung ===&lt;br /&gt;
&lt;br /&gt;
Die Basisschaltung findet sich vor allem in Eingangsstufen in der HF-Technik. Im Schaltbetrieb wird sie praktisch nur zur [[Pegelwandler#STEP-UP: 5V -&amp;gt; 9..15V | Pegelwandlung]] für nachfolgende Stufen verwendet.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Eigenschaften:&#039;&#039;&#039;&lt;br /&gt;
* Geringe Eingangsimpedanz&lt;br /&gt;
* Keine Phasenverschiebung&lt;br /&gt;
* Hohe Bandbreite&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Weitere Links:&#039;&#039;&#039;&lt;br /&gt;
* [http://www.elektronik-kompendium.de/sites/slt/0205081.htm Basisschaltung im ElKo&lt;br /&gt;
&lt;br /&gt;
== FAQ aus dem Forum ==&lt;br /&gt;
&lt;br /&gt;
=== PNP/NPN als Schalter, wohin mit der Last? === &lt;br /&gt;
Für viele einfache Anwendungen kann man sich merken: &#039;&#039;&#039;Bei Schaltanwendungen darf der Basisstrom nicht durch die Last fließen&#039;&#039;&#039;. Normalerweise kommt dabei die Emitterschaltung zum Einsatz, die Last kommt also an den Kollektor.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 Vcc o-------------+                  Vcc o-----------+&lt;br /&gt;
                   |                                  |&lt;br /&gt;
                  .-.               An: GND   ___   |&amp;lt;&lt;br /&gt;
                  | | R_Last             o---|___|--|   PNP&lt;br /&gt;
                  &#039;-&#039;               Aus: Vcc        |\&lt;br /&gt;
                   |                                  |&lt;br /&gt;
An: Vcc  ___     |/                                  .-.&lt;br /&gt;
    o---|___|----|   NPN                             | | R_Last&lt;br /&gt;
Aus: GND         |&amp;gt;                                  &#039;-&#039;&lt;br /&gt;
                   |                                  |&lt;br /&gt;
 GND o-------------+                  GND o-----------+&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Siehe [[Basiswiderstand]] zur Berechnung des notwendigen Basiswiderstandes bei gegebener Last R_Last für einen Transistor als Schalter.&lt;br /&gt;
&lt;br /&gt;
Siehe auch Threads im Forum: &lt;br /&gt;
* http://www.mikrocontroller.net/topic/58567 &lt;br /&gt;
* http://www.mikrocontroller.net/topic/119841&lt;br /&gt;
* oder im [http://www.elektronik-kompendium.de/sites/slt/0208031.htm Elektronik-Kompendium-Forum]&lt;br /&gt;
&lt;br /&gt;
=== Wie kann ich mit 5V vom Mikrocontroller 12V und mehr schalten? === &lt;br /&gt;
Schau mal hier:&lt;br /&gt;
* Wikiartikel [[Pegelwandler]]&lt;br /&gt;
* [http://www.elektronik-kompendium.de/sites/praxis/bausatz_pegelwandler-mit-transistoren.htm Pegelwandler im ElKo]&lt;br /&gt;
* [http://dl6gl.de/grundlagen/schalten-mit-transistoren schalten-mit-transistoren]&lt;br /&gt;
&lt;br /&gt;
oder in diesen Threads:&lt;br /&gt;
*[http://www.mikrocontroller.net/topic/17899 Transistor als Schalter]&lt;br /&gt;
*[http://www.mikrocontroller.net/topic/14437 Vcc schalten mit MOSFET]&lt;br /&gt;
*[http://www.mikrocontroller.net/topic/29830 Schalten mit PNP-Transistor]&lt;br /&gt;
*[http://www.mikrocontroller.net/topic/104027 Transistorschalter für Versorgungsspannung]&lt;br /&gt;
*[http://www.mikrocontroller.net/topic/104951#921417 7-50V strombegrenzt schalten]&lt;br /&gt;
*[http://www.mikrocontroller.net/topic/103116#900247 P-Kanal MOSFET ansteuern]&lt;br /&gt;
*[https://www.mikrocontroller.net/topic/383039#4367479 5V/15mA mit 3,3V schalten]&lt;br /&gt;
&lt;br /&gt;
Bei der Kollektor-Schaltung entspricht die Spannung am Emitter immer der an der Basis, daher ist sie nur bedingt geeignet. Zum Schalten können die folgenden Emitter-Schaltungen verwendet werden. Achtung: In der zweiten davon arbeitet T1 in Basisschaltung.&lt;br /&gt;
&lt;br /&gt;
Schalten gegen GND&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 +12V o------------------------+&lt;br /&gt;
                               |&lt;br /&gt;
                              .-. &lt;br /&gt;
                             ( X )  &lt;br /&gt;
                              &#039;-&#039;&lt;br /&gt;
                               |&lt;br /&gt;
                    ___      |/ T1,NPN   &lt;br /&gt;
        uC PIN o---|___|-----| BC547     &lt;br /&gt;
                   R2,4K7    |&amp;gt;&lt;br /&gt;
                               |&lt;br /&gt;
  GND o---------o--------------+&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Schalten gegen +12V&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 +12V o--------------+----------------------+&lt;br /&gt;
                     |                      |&lt;br /&gt;
                     |   ____              |&amp;lt; T2, PNP&lt;br /&gt;
                     +--|____|----+--------|  BC557&lt;br /&gt;
                        R1,4K7    |        |\&lt;br /&gt;
                                |/T1,NPN    |&lt;br /&gt;
         Vcc/+5V o--------------| BC547     |&lt;br /&gt;
                                |&amp;gt;          |&lt;br /&gt;
                        ___       |        .-. &lt;br /&gt;
          uC PIN o-----|___|------+       ( X )  &lt;br /&gt;
                       R2,4K7              &#039;-&#039;&lt;br /&gt;
                                            |&lt;br /&gt;
  GND o----------o--------------------------+&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Transistor an µC ohne Vorwiderstand === &lt;br /&gt;
&lt;br /&gt;
Normalerweise sind IO Pins vom µC nicht in der Lage, große Ströme zu treiben, beim AVR maximal ~20mA. Für einen kleinen Transistor ist das immer noch zu viel und es wäre auch Stromverschwendung.&lt;br /&gt;
&lt;br /&gt;
Deshalb kann man den IO-Pin des AVRs einfach als Tristate Eingang einstellen (Portpin als Eingang und Pullup deaktivieren), damit kein Basisstrom fließt.&lt;br /&gt;
&lt;br /&gt;
Aktiviert man nun den internen Pullup-Widerstand des AVRs, agiert dieser als Basisvorwiderstand, und es fließt nur ein geringer Basisstrom (die Pullups eines AVRs liegen irgendwo bei 50k bis 100k Ohm - siehe Datenblatt).&lt;br /&gt;
&lt;br /&gt;
Nur sollte man bei kleinen Transistoren aufpassen, dass man den Portpin in der Software nie als aktiven Ausgang schaltet. &lt;br /&gt;
&lt;br /&gt;
Wenn der verwendete µC zuschaltbare Pulldown-Widerstände an seinen Pins besitzt, kann man das gleiche auch mit einem PNP-Transistor machen (natürlich nur den Pulldown aktivieren).&lt;br /&gt;
&lt;br /&gt;
Eine Anwendung wären z.&amp;amp;nbsp;B. Nixie-Röhren-Kathodentreiber (geringe Stromverstärkung nötig).&lt;br /&gt;
&lt;br /&gt;
=== Wann bipolare (NPN/PNP) und wann FETs (insbesonders, wenn LEDs im Spiel sind)?=== &lt;br /&gt;
Oft sind bipolare Transistoren (NPN/PNP) schon ausreichend, vor allem wenn &amp;quot;normale&amp;quot; LEDs (20mA) verwendet werden. FETs sind u.a. dann gut, wenn mit geringen Eingangsströmen hohe Ausgangsströme (über 300 mA) geschaltet werden sollen, also bei den Power-LEDs (Luxeon...).&lt;br /&gt;
&lt;br /&gt;
Ein Grenzfall: 500mA/5V schalten, siehe http://www.mikrocontroller.net/topic/62327.&lt;br /&gt;
&lt;br /&gt;
=== Wieso gehen bei einer Multiplex-Anzeige mit Schieberegister 74HC595 und (Darlington-)Transistor als Zeilentreiber die LED nicht ganz aus?  ===&lt;br /&gt;
Das liegt an der &#039;&#039;&#039;Miller-Kapazität&#039;&#039;&#039; des übersteuerten (Darlington-)Transistors. Der braucht erst mal einige 10µs, um zu sperren. Du mußt also erstmal beide Zeilen ausschalten, dann etwas warten und dann die nächste Zeile an. Oder Du ersetzt die Darlington durch P-FETs. [http://www.mikrocontroller.net/topic/132545]&lt;br /&gt;
&lt;br /&gt;
=== Wie steuert man ein Relais? ===&lt;br /&gt;
Normalerweise verwendet man zur Ansteuerung von Relais NPN-Transistoren in Emitterschaltung. Freilaufdiode nicht vergessen! &lt;br /&gt;
&lt;br /&gt;
Siehe auch:&lt;br /&gt;
* [[Relais mit Logik ansteuern]]&lt;br /&gt;
* [http://www.mikrocontroller.net/attachment/22023/Relaisanteuerung.png Schaltbilder aus dem Forum]&lt;br /&gt;
&lt;br /&gt;
=== Was ist die Spannung &amp;lt;math&amp;gt;U_{BE\_sat}&amp;lt;/math&amp;gt; (lt. Datenblatt max. 1,2V)? ===&lt;br /&gt;
Bekanntlich verhält sich die Basis-Emitter Strecke eines Transistors wie eine Diode und &amp;lt;math&amp;gt;U_{BE\_sat}&amp;lt;/math&amp;gt; ist die bei maximal zulässigem Basisstrom anliegende Vorwärtsspannung.&lt;br /&gt;
&lt;br /&gt;
=== Was bewirkt ein Kondensator (100µF-1nF) parallel zur Basis-Emitter-Strecke nach Masse? === &lt;br /&gt;
Er wirkt mit dem Basisvorwiderstand als RC-Tiefpass. Damit wird der Transistor eigentlich nicht mehr als Schalter, sondern als Linearregler betrieben. Manche Verstärker-Schaltungen sind, gerade bei hohen Lasten, sehr schwingfreudig. Deswegen ist bei PWM so ein C nicht sinnvoll.&lt;br /&gt;
&lt;br /&gt;
=== Gibt es einen IC, der wie mehrere Transistoren funktioniert? ===&lt;br /&gt;
&lt;br /&gt;
Gibt es! Beispielsweise der &#039;&#039;&#039;ULN2803&#039;&#039;&#039; ist ein 8-fach Darlington Transistor Array mit [[Ausgangsstufen_Logik-ICs#Open_Collector|Open-Collector Ausgang]]. Damit lässt sich z.&amp;amp;nbsp;B. ein Leistungstreiber zur Ansteuerung von Schrittmotoren, Relais und anderen induktiven Lasten aufbauen.&lt;br /&gt;
&lt;br /&gt;
=== Gibt es ein Transistor-Array wie ULN28xx, das gegen Vcc schaltet? ===&lt;br /&gt;
&lt;br /&gt;
Such mal nach UDN29xx, z.&amp;amp;nbsp;B. UDN2981, UDN2987 ...&lt;br /&gt;
&lt;br /&gt;
=== Wann setzt man einen MOSFET, Bipolartransistor, IGBT oder Thyristor ein ? ===&lt;br /&gt;
siehe [[Leistungselektronik]]&lt;br /&gt;
&lt;br /&gt;
Die Summe allen Übels ist konstant. Man muss wissen, welches Bauteil sich wofür besonders eignet.&lt;br /&gt;
&lt;br /&gt;
====[[FET | MOSFET]]====&lt;br /&gt;
&lt;br /&gt;
Vorteile&lt;br /&gt;
* Bei niedrigen Spannungen &amp;lt;100V sehr gut geeignet, &amp;lt;200V gut geeignet, sehr geringe R_DS-ON Widerstände möglich (einstelliger mOhm-Bereich)&lt;br /&gt;
* Hohe Schaltgeschwindigkeiten möglich&lt;br /&gt;
* Geringe An- und Ausschaltverluste&lt;br /&gt;
* Statisch praktisch leistungslos steuerbar&lt;br /&gt;
* Bodydiode kann als Freilaufdiode in H-Brücken verwendet werden&lt;br /&gt;
* 2. Durchbruch bei Überschreiten der max. Drain-Source Sperrspannung zerstört das Bauteil nicht, wenn der Strom sowie die Energie begrenzt werden. (Verhalten wie [[Diode | Z-Diode]])&lt;br /&gt;
   &lt;br /&gt;
Nachteile&lt;br /&gt;
*Antiparallele Diode (Bodydiode) ist in nahezu allen MOSFETs unvermeidlich, daduch Sperren nur in einer Polarität möglich, Stromfluss über den MOSFET aber in beiden Richtungen möglich (Inversbetrieb, Synchrongleichrichter)&lt;br /&gt;
* Bei Sperrspannungen &amp;gt;100V deutlich steigende Einschaltwiderstände (R_DS-ON)&lt;br /&gt;
* Schnelles Umschalten erfordert hohe Lade-und Entladeströme ([[MOSFET-Übersicht#Mosfet-Treiber|MOSFET-Treiber]])&lt;br /&gt;
* Leitverluste quadratisch proportional zum Strom, Pv = I²*R_DS-ON&lt;br /&gt;
&lt;br /&gt;
====[[Transistor | Bipolartransistor]]====&lt;br /&gt;
&lt;br /&gt;
Vorteile&lt;br /&gt;
* Hohe Spannungsfestigkeiten möglich, bis zu 2000V&lt;br /&gt;
* Sehr hohe Schaltgeschwindigkeiten möglich&lt;br /&gt;
* Leitverluste etwa linear proportional zum Strom und Kollektor-Emitter-Sättigungsspannung, Pv = I * Uce-sat, U_CEC-sat typ 0,1...2.5 V&lt;br /&gt;
&lt;br /&gt;
Nachteile&lt;br /&gt;
* Stromgesteuert, damit wird immer eine gewisse Ansteuerleistung benötigt&lt;br /&gt;
* Bei grossen Kollektorströmen nimmt die Stromverstärkung deutlich ab, dann wird ein großer Basisstrom benötigt&lt;br /&gt;
* 2. Durchbruch bei Überschreiten der max. Kollektor-Emitter Sperrspannung zerstört das Bauteil&lt;br /&gt;
&lt;br /&gt;
====[[IGBT]]====&lt;br /&gt;
&lt;br /&gt;
Vorteile&lt;br /&gt;
* Hohe Spannungsfestigkeiten möglich, bis zu 6600V, in üblichen Bauformen bis ca 1700V gut verfügbar&lt;br /&gt;
* Statisch praktisch leistungslos steuerbar&lt;br /&gt;
* Mit oder ohne antiparallele Diode zur Kollektor-Emitter-Strecke verfügbar&lt;br /&gt;
* Leitverluste linear proportional zum Strom und Kollektor-Emitter-Sättigungsspannung, Pv = I * Uce-sat, U_CE-sat typ. 2V&lt;br /&gt;
&lt;br /&gt;
Nachteile&lt;br /&gt;
* Nur mäßige Schaltfrequenzen möglich (typ. &amp;lt;30..50kHz)&lt;br /&gt;
* Schnelles Umschalten erfordert hohe Lade-und Entladeströme ([[MOSFET-Übersicht#Mosfet-Treiber|MOSFET-Treiber]])&lt;br /&gt;
* 2. Durchbruch bei Überschreiten der max. Kollektor-Emitter Sperrspannung zerstört das Bauteil&lt;br /&gt;
&lt;br /&gt;
====[[TRIAC]]/Thyristor====&lt;br /&gt;
&lt;br /&gt;
Vorteile:&lt;br /&gt;
* Sehr hohe Spannungsfestigkeiten möglich (800V...mehrere kV, Thyristoren bis 12kV)&lt;br /&gt;
* Mit kurzen Pulsen einschaltbar, danach Selbsthaltung des Stromflusses&lt;br /&gt;
* Leitverluste linear proportional zum Strom, Pv = I * Uak, Uak typ. 0,8...1,5 V &lt;br /&gt;
&lt;br /&gt;
Nachteile&lt;br /&gt;
* Auf niedrige Schaltfrequenzen beschränkt (kHz-Bereich, Schaltzeit im Bereich von µs)&lt;br /&gt;
* Anstiegsgeschwindigkeit des Stromes muss begrenzt werden, sonst kommt es zu Bauteilschäden&lt;br /&gt;
* Anstiegsgeschwindigkeit der Spannung muss begrenzt werden, sonst kommt es zum ungewollten Zünden&lt;br /&gt;
* Stromfluss kann nicht ausgeschaltet werden, damit meist nur Einsatz an Wechselspannung&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
|- &lt;br /&gt;
! Bauteil               || optimales Einsatzgebiet || Kommentar&lt;br /&gt;
|-&lt;br /&gt;
| MOSFET                || 0..200V, 0..500A || im Kleinspannungsbereich meist die beste Wahl als Schalter&lt;br /&gt;
|-&lt;br /&gt;
| Bipolartransistor     || 0..1000V, 0..10A || wird mehr und mehr von MOSFETs verdrängt&lt;br /&gt;
|-&lt;br /&gt;
| IGBT                  || 200..1700V, 0..500A || optimal für hohe Spannungen und hohe Ströme&lt;br /&gt;
|-&lt;br /&gt;
| Triac/Thyristor       || 230V, 400V, 680V, bis mehrere kV, 0..100A || meist für Wechselspannung, im Pulsbetrieb einige kA. Thyristoren bis 1000A im Dauerbetrieb (Scheibenzelle)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Wie finde ich den richtigen Transistor für eine LED-Ansteuerung? ===&lt;br /&gt;
&lt;br /&gt;
Quelle: Beiträge [http://www.mikrocontroller.net/topic/157763#1493623] und [http://www.mikrocontroller.net/topic/157763#1494972] von yalu&lt;br /&gt;
&lt;br /&gt;
Um am Anfang wenigstens ein bisschen den Durchblick im Transistordschungel zu behalten, kannst du folgendermaßen vorgehen:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Nomenklatur&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Nach der amerikanischen Nomenklatur beginnen die Transistornamen meist mit 2N (z.&amp;amp;nbsp;B. 2N2222 oder 2N3055) und nach der japanischen mit 2S (z.&amp;amp;nbsp;B. 2SC1815). Für den Anfang kann man sich auf europäische Transistoren beschränken, da es diese in ausreichender Auswahl gibt und die Bezeichnungen relativ gut den Transistortyp wiedergeben:&lt;br /&gt;
&lt;br /&gt;
Der erste Buchstabe bezeichnet das Halbleitermaterial (A=Germanium, B=Silizium). Germaniumtransistoren werden heute nur noch selten verwendet.&lt;br /&gt;
&lt;br /&gt;
Der zweite Buchstabe steht für den Einsatzzweck (C=Universal, D=hohe Leistung, F=Hochfrequenz, U=hohe Spannung).&lt;br /&gt;
&lt;br /&gt;
So ist also ein ACxxx ein Germaniumuniversaltransistor und ein BDxxx ein Siliziumleistungstransistor.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Auswahl&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Wenn du dich für einen Grundtyp entschieden hast (für die LED ist ein BC-Typ das Richtige), gehst du auf die Webseite eines Elektronikhändlers (Reichelt, Kessler usw.), schlägst die Seite mit den BC-Transistoren auf. Da gibt es natürlich sehr viele  davon, und du brauchst jetzt eine&lt;br /&gt;
Suchreihenfolge. Als erstes Auswahlkriterium nimmst du den Preis, denn:&lt;br /&gt;
&lt;br /&gt;
* Zuviel Geld hast wahrscheinlich nicht einmal du.&lt;br /&gt;
* Billig ist meist das, was in großen Stückzahlen hergestellt wird. Was für die Masse gut ist, ist (zumindest in diesem Fall) meist auch für dich gut.&lt;br /&gt;
* Was billig und damit in Massen verkauft wird, bekommst du auch bei anderen Händlern und auch noch in 10 Jahren. Das ist wichtig, wenn deine Schaltung irgendwann einmal in Serie gefertigt werden soll.&lt;br /&gt;
&lt;br /&gt;
Gleich als nächstes überlegst du, ob du einen NPN- oder einen PNP-Typ brauchst. Das ergibt sich aus der Anordnung der Bauteile in deiner Schaltung. Hast du die Möglichkeit, die Schaltung wahlweise für einen NPN- oder einen PNP-Typ auszulegen, wählst du die Variante mit dem NPN-Typ. Um einfach eine LED über einen Mikrocontroller einzuschalten, ist i.Allg. ein NPN-Typ in Emitterschaltung richtig.&lt;br /&gt;
&lt;br /&gt;
Ein weiteres wichtiges Kriterium ist die Befestigungstechnik: Wenn dir die SMD-Löterei etwas suspekt ist, lässt du die entsprechenden Modelle erst einmal alle außen vor. Ein typisches Nicht-SMD-Gehäuse für Universaltransistoren ist TO-92. Es gibt im Internet bebilderte Listen mit den einzelnen Gehäuseformen ([[IC-Gehäuseformen#Weblinks]])&lt;br /&gt;
&lt;br /&gt;
Wenn du jetzt also bei Reichelt  die BC-Transistoren nach Preis aufsteigend sortiert hast, siehst du erst einen Schwung SMD-Tranistoren. Dann kommen ein paar Transistoren im TO-92-Gehäuse, die sind aber PNP. Etwas weiter unten kommt der erste NPN-Transistor in TO-92, nämlich der BC547C. Netterweise stehen gleich ein paar Eckdaten dabei:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
BC547C  45V  0,1A  0,5W&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die 45V sind die maximale Kollektor-Emitter-Spannung, in deinem Fall also die Spannung, die du maximal schalten kannst. Da die LED bei Weitem keine 45V braucht und deine Versorgungsspannung eher in der Gegend von 5V liegt, bist du auf jeden Fall auf der sicheren Seite.&lt;br /&gt;
&lt;br /&gt;
Deine LED wird typisch mit 20mA (max. 30mA) betrieben. Der BC547C kann 100mA, also ist auch hier noch Luft.&lt;br /&gt;
&lt;br /&gt;
Zur maximalen Verlustleistung (0,5W): Wenn deine LED eingeschaltet ist, fließen bspw. 20mA. Ist der Transistor voll durchgesteuert (in Sättigung) beträgt die Kollektor-Emitter-Spannung bei diesem geringen Strom typischerweise zwischen 0,1V und 0,2V (Genaueres steht im Datenblatt). Am Transistor wird also maximal die Leistung 20mA·0,2V=4mW in Wärme umgesetzt. Bis zu 500mW dürfen es sein, also ebenfalls ok.&lt;br /&gt;
&lt;br /&gt;
Nachdem du den Transistor in engere Auswahl gezogen hast, lohnt sich auf jeden Fall ein Blick ins Datenblatt. Aus den Tabellen und Diagrammen erfährst du bspw., wie hoch der Basisstrom sein muss, um den Kollektorstrom von mindestens 20mA bei ausreichend geringer CE-Spannung bereitzustellen. Dort ist auch erklärt warum es einen BC547A, BC547B und BC547C gibt. Der letzte Buchstabe gibt nämlich die Stromverstärkungsklasse an. Da eine hohe Stromverstärkung meist wünschenswert ist und in diesem Fall keinen Aufpreis kostet, ziehst du den BC547C den anderen beiden vor.&lt;br /&gt;
&lt;br /&gt;
Da in deiner Anwendung HF- und Rauschverhalten keine Rolle spielen, bist du schon am Ziel angelangt.&lt;br /&gt;
&lt;br /&gt;
Würde deine LED 100mA statt 20mA benötigen, wären die max. 100mA des BC547 etwas knapp bemessen. Du blätterst also in der Reichelt-Liste weiter und stößt auf den BC337-40 mit 45V, 0,5A und 0,525W. Das ist genau das, wonach du suchst. Bei diesem Transistor sind die Stromverstärkungsklassen durch die Endungen -16, -25 und -40 gekennzeichnet. Es wäre ja auch&lt;br /&gt;
zu einfach, wenn immer nur A, B und C verwendet würde ;-)&lt;br /&gt;
&lt;br /&gt;
Bei Strömen ab etwa 500mA kommt man an die Grenze der Leistungsfähigkeit der BC-Typen. Dann geht es weiter mit BD. Der BD135 geht bspw. schon bis 1,5A. Das Problem bei solchen größeren Transistoren: Die Stromverstärkung ist nicht besonders hoch, so dass irgendwann der Mikrocontroller nicht mehr den benötigten Basisstrom liefern kann. Dann muss dem großen Transistor ein kleiner vorangeschaltet werden, um den erhöhten Basisstrom bereitszustellen. Man kann diese Kombination von zwei Transistoren auch fertig als Darlington-Transistor kaufen, von denen ebenfalls einige in der BD-Reihe zu finden sind (z.&amp;amp;nbsp;B. BD647). Ein Transistortyp, der sich sehr gut zum Schalten höherer Ströme eignet, ist der [[FET | MOSFET]].&lt;br /&gt;
&lt;br /&gt;
Wie schon oben angedeutet: Wenn die 30-80V die die meisten BC- und BD-Transistoren abkönnen, nicht ausreichen, suchst du weiter bei BU.&lt;br /&gt;
&lt;br /&gt;
Steigst du in die HF-Technik ein, sind BF-Transistoren eher das Richtige, wobei bei HF-Anwendungen die Auswahl der Transistoren nicht mehr das Schwierigste ist ;-)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Und wie geht&#039;s weiter?&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Man könnte natürlich noch viel mehr zu diesem Thema schreiben. Ich hoffe aber, dass das Geschriebene dir wenigstens grob zeigt, wie man bei nicht allzu speziellem Anforderungen relativ schnell zu einem gewünschten Transistortyp kommt, der nicht nur die technischen Anforderungen erfüllt, sondern auch leicht beschaffbar ist.&lt;br /&gt;
&lt;br /&gt;
Werden die Anforderungen spezieller, helfen oft die Selektionstabellen auf den Webseiten der einschlägigen  Hersteller weiter. Auch Händler wie Farnell haben teilweise ganz gute Auswahlwerkzeuge. &lt;br /&gt;
&lt;br /&gt;
Wenn du dich intensiv mit Elektronik beschäftigst, wirst du wahrscheinlich noch viele  Schaltungen von Leuten zu Gesicht bekommen, die vielleicht schon etwas weiter fortgeschritten sind. Dabei wirst du immer wieder auf bestimmte Standardtypen von Transistoren (und auch anderen Bauteilen wie Operationsverstärker u.ä.) stoßen und sehen, welche [[Standardbauelemente]] &amp;quot;man&amp;quot; üblicherweise für bestimmte Anwendungen einsetzt. Mit der Zeit setzt sich dann eine Auswahl von bspw. 10 oder 20 verschiedenen Transistoren und 5 bis 10 verschiedenen OpAmps im Kopf fest, von denen man die wesentlichen Parameter auswendig kennt, so dass man ohne aufwendige Suche eine schnelle Auswahl treffen kann. Auch hier in der Artikelsammlung gibt es eine solche [[Transistor-Übersicht]].&lt;br /&gt;
&lt;br /&gt;
=== Wo ist die Antwort auf meine Frage? ===&lt;br /&gt;
&lt;br /&gt;
Vielleicht im Forum? Falls du sie da findest, dann pack das ganze doch hier rein.&lt;br /&gt;
&lt;br /&gt;
[http://www.mikrocontroller.net/topic/165580 Gegen Vcc oder GND schalten]&lt;br /&gt;
&lt;br /&gt;
== Siehe auch ==&lt;br /&gt;
* [[Basiswiderstand]]&lt;br /&gt;
* [[Transistor-Übersicht]]&lt;br /&gt;
* [[AVR-Transistortester]]&lt;br /&gt;
* [[Leistungselektronik]]&lt;br /&gt;
&lt;br /&gt;
== Gehäusebauformen von Transistoren ==&lt;br /&gt;
&lt;br /&gt;
=== TO-92 ===&lt;br /&gt;
Ein kleiner Aufsatz über TO-92 Transistorgehäuse und Footprints findet sich unter: [[Media:TO-92-Gehaeuse_RevB2.pdf]]. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Weblinks ==&lt;br /&gt;
* [http://de.wikipedia.org/wiki/transistor &amp;quot;Transistor&amp;quot; bei Wikipedia]&lt;br /&gt;
* [http://www.elektronik-kompendium.de www.elektronik-kompendium.de]&lt;br /&gt;
** [http://www.elektronik-kompendium.de/sites/bau/0201291.htm Elko/Transistor]&lt;br /&gt;
* http://www.elektronikinfo.de/strom/bipolartransistoren.htm&lt;br /&gt;
* http://www.ferromel.de/tronic_1870.htm&lt;br /&gt;
* [http://www.DieElektronikerseite.de Die Elektronikerseite] Lehrgang: Der Transistor - Ein Tausendsassa&lt;br /&gt;
* [http://www.infoplease.com/encyclopedia/science/transistor-types-transistors.html Transistortypen]&lt;br /&gt;
* [http://electronics-electrical.exportersindia.com/electronic-components/transistors.htm Transistoren Industrieunternehmen Geschäftsauflistungen]&lt;br /&gt;
&lt;br /&gt;
[[Category:Bauteile]]&lt;br /&gt;
[[Category:Grundlagen]]&lt;/div&gt;</summary>
		<author><name>Promeus</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=Word_Clock_Variante_1_-_getrennte_Steuerplatine&amp;diff=89911</id>
		<title>Word Clock Variante 1 - getrennte Steuerplatine</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=Word_Clock_Variante_1_-_getrennte_Steuerplatine&amp;diff=89911"/>
		<updated>2015-10-05T08:57:36Z</updated>

		<summary type="html">&lt;p&gt;Promeus: /* Das erste Mal einschalten */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Überblick =&lt;br /&gt;
&lt;br /&gt;
[[Datei:wordclock-frontplatte-v2.png| |WordClock]]&lt;br /&gt;
&lt;br /&gt;
Diese Seite dient nur noch der Referenz für die ältere Variante mit getrennter Steuer- und Anzeigeplatine.&lt;br /&gt;
Themen, die beide Varianten gemeinsam betreffen werden im Hauptartikel [1] gepflegt.&lt;br /&gt;
&lt;br /&gt;
Links zum Hauptartikel [1], zur Variante 2 [2] zum langen Thread [3] mit dem hier alles angefangen hat und zum Original [4], das alle hier inspiriert hat.&lt;br /&gt;
&lt;br /&gt;
[1] [[Word Clock]]&amp;lt;br&amp;gt;&lt;br /&gt;
[2] [[Word Clock Variante 2]]&amp;lt;br&amp;gt;&lt;br /&gt;
[3] [http://www.mikrocontroller.net/topic/156661 Beitrag: Brauche Hilfe beim Bau einer Uhr]&amp;lt;br&amp;gt;&lt;br /&gt;
[4] [http://www.clocktwo.com http://www.clocktwo.com]&amp;lt;br&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
= WordClock FAQ =&lt;br /&gt;
Häufig tauchen im Forum Fragen zum WordClock Projekt auf (was brauche ich..., wie mache ich...), die schon mehrmals beantwortet wurden. Hier Für die Variante 1 eine Zusammenfassung der wichtigsten Fragen:&lt;br /&gt;
&lt;br /&gt;
  Q: Was brauche ich alles, um die WordClock (Variante 1) zu bauen?&lt;br /&gt;
  A: - Die Steuerplatine mit der Elektronik&lt;br /&gt;
     - Eine Frontblende (das &amp;quot;Ziffernblatt&amp;quot;)&lt;br /&gt;
     - Leuchtdioden und Platinen für die Anzeige&lt;br /&gt;
     - Eine Zwischenplatte um das Licht zwischen den einzelnen Buchstaben zu trennen&lt;br /&gt;
     - Eine Spannungsversorgung&lt;br /&gt;
     - etwas handwerkliches Geschick&lt;br /&gt;
&lt;br /&gt;
  Q: Kann ich Bauteile der WordClock über Sammelbestellungen billiger bekommen?&lt;br /&gt;
  A: Es wurden in der Vergangenheit (seit Dez.2009) mehrere Sammelbestellungen angeboten. Im einzelnen waren das:&lt;br /&gt;
     - Die [http://www.mikrocontroller.net/articles/Word_Clock_Variante_1#Sammelbestellung_der_Platine Leiterplatte] für die Steuerelektronik (von ukw)&lt;br /&gt;
     - [http://www.mikrocontroller.net/articles/Word_Clock_Variante_1#Sammelbestellung Leuchtdioden mit Streifenplatinen] für die Anzeige (von wawibu / matsch)&lt;br /&gt;
     - Eine Frontblende (Buchstabenmatrix)&lt;br /&gt;
        - aus [http://www.mikrocontroller.net/articles/Word_Clock#Sammelbestellung_.28Plexiglas.29 Plexiglas], schwarz (von ukw)&lt;br /&gt;
        - aus [http://www.mikrocontroller.net/articles/Word_Clock#Sammelbestellung_.28Edelstahl.29 Edelstahl] (von andreasp)&lt;br /&gt;
     - Eine [http://www.mikrocontroller.net/articles/Word_Clock#Zwischenplatte Zwischenplatte] (von wawibu / matsch)&lt;br /&gt;
&lt;br /&gt;
  Q: Kann ich eine fertige Uhr kaufen?&lt;br /&gt;
  A: Ja, beim [http://www.qlocktwo.com/ Hersteller] der Vorlage ;-). Hier im uC.net Forum gibt es nur Tipps und Hilfe zum Selberbauen.&lt;br /&gt;
     Eine komplette WordClock kann man hier NICHT bekommen.&lt;br /&gt;
     ...und etwas einlesen wird auch keinem abgenommen ;-)&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
= Aufbau einer Wordclock =&lt;br /&gt;
Hier gibt es ein von bomibob äußerst kunstvolles Video zum Bau einer Word Clock:&lt;br /&gt;
http://www.youtube.com/watch?v=OYhtc-8StXA&lt;br /&gt;
(zugehöriger Post → http://www.mikrocontroller.net/topic/goto_post/2328168)&lt;br /&gt;
&lt;br /&gt;
Details zu den einzelnen Komponenten sind den entsprechenden Unterpunkten, oder dem Hauptartikel zu entnehmen.&lt;br /&gt;
&lt;br /&gt;
= Elektronik =&lt;br /&gt;
* Atmega168&lt;br /&gt;
* 8Mhz (interner Osc.)&lt;br /&gt;
* 24-Bit-Schieberegister an SPI für 24 Wörter&lt;br /&gt;
* 4 Output-Pins für Minutenanzeige&lt;br /&gt;
* 4 weitere GPOS - für allgemeine Zwecke&lt;br /&gt;
* RGB-Steuerung über PWM gegen GND, d.h. 32x3-Matrix&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
= Schaltung =&lt;br /&gt;
&lt;br /&gt;
[[Datei:wordclock-schmal-schaltung.png|miniatur|Schaltbild V1.0]]&lt;br /&gt;
[[Datei:wordclock-schmal-schaltung-2.0.png|miniatur|Schaltbild V2.0]]&lt;br /&gt;
[[Datei:TSOP-wordclock-1.1.png|miniatur|TSOP17xx in V1.1]]&lt;br /&gt;
[[Datei:RXTX-wordclock-1.1.png|miniatur|Rx/Tx in V1.1 und V2.0]]&lt;br /&gt;
[[Datei:K10-wordclock-2.0.png|miniatur|K10 als I2C in V2.0]]&lt;br /&gt;
[[Datei:K11-wordclock-2.0.png|miniatur|K11 als SPI in V2.0]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Änderungen der Platinen-Version 1.0 gegenüber dem Prototypen:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Pullup-Widerstand R7 am DCF-Anschluss entfällt&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Änderungen der Platinen-Version 1.1 gegenüber 1.0:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Die Tiefpass-Schaltung für den TSOP17xx ist nun korrekt geschaltet. Die Abweichung sieht man rechts im Zusatzschaltbild.&lt;br /&gt;
* Der Verbinder K9 (UART-Anschluss für Debug-Zwecke) hat zwei zusätzliche Pins erhalten, siehe Zusatzschaltbild rechts.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Änderungen der Platinen-Version 2.0 gegenüber 1.1:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Diode D1 entfällt.&lt;br /&gt;
* 6-poliger ISP-Wannenstecker ersetzt 10-poligen Wannenstecker, Vcc nun angeschlossen&lt;br /&gt;
* Neu: Stiftleiste K10 als Anschlüsse für externe I2C-Module, auf der Platine oberhalb der RTC zu finden&lt;br /&gt;
* Neu: Stiftleiste K11 als Anschlüsse für externe SPI-Module, auf der Platine ganz links&lt;br /&gt;
&lt;br /&gt;
Siehe auch untenstehende Zusatzschaltbilder rechts. Die neuen Stiftleisten sind optional, müssen also nicht unbedingt bestückt werden.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Zugehörige Schaltung als PDF&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
* Version 1.0: &#039;&#039;&#039;[[Media:wordclock-schmal.pdf|wordclock-schmal.pdf]]&#039;&#039;&#039;&lt;br /&gt;
* Version 2.0: &#039;&#039;&#039;[[Media:wordclock-schmal-schaltung-2.0.pdf|wordclock-schmal-schaltung-2.0]]&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Sammelbestellung der Platine ==&lt;br /&gt;
&lt;br /&gt;
Stand Oktober 2015:&lt;br /&gt;
&lt;br /&gt;
Ich habe wegen einiger Nachfragen noch Steuerplatinen in begrenzter Stückzahl nachbestellt. Wenn jemand daran interessiert ist, kann er sich bei mir (Benutzer [http://www.mikrocontroller.net/user/show/ukw &#039;&#039;&#039;ukw&#039;&#039;&#039;]) per PN melden.&lt;br /&gt;
&lt;br /&gt;
Kosten pro Platine: 15 EUR zzgl. Versand von 2,00 EUR bei bis zu 4 Stück. Bei mehr als 4 Stück beträgt der Versand 3,00 EUR.&lt;br /&gt;
&lt;br /&gt;
Beispiele:&lt;br /&gt;
&lt;br /&gt;
* 1 Platine: 15 EUR + 2,00 Versand: 17,00 EUR&lt;br /&gt;
* 2 Platinen: 30 EUR + 2,00 Versand: 32,00 EUR&lt;br /&gt;
* ...&lt;br /&gt;
* 5 Platinen: 75 EUR + 3,00 Versand: 78,00 EUR&lt;br /&gt;
&lt;br /&gt;
Parallel zu dieser Sammelbestellung gibt es noch eine neue (kleinere) Sammelbestellung für passende Frontplatten, siehe auch:&lt;br /&gt;
&lt;br /&gt;
[http://www.mikrocontroller.net/articles/Word_Clock#Sammelbestellung_.28Plexiglas.29 Sammelbestellung Frontplatten]&lt;br /&gt;
&lt;br /&gt;
Beim Versand zusammen mit den Frontplatten entfallen natürlich die Versandkosten für die Platinen.&lt;br /&gt;
&lt;br /&gt;
Maße: 146mm x 35,6mm.&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== Reichelt Warenkorb Mono-Variante ==&lt;br /&gt;
Da selbst bei der Mono-Variante der ATmega 88 langsam mehr als eng wird, wurde dieser Warenkorb auch auf den ATmega 168 umgestellt.&lt;br /&gt;
&lt;br /&gt;
Eine vollständige Liste zur Bestellung der nötigen Bauteile ist bei Reichelt abgelegt: &#039;&#039;&#039;[http://www.reichelt.de/?ACTION=20;AWKID=580204;PROVID=2084 Warenkorb-Mono]&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== Reichelt Warenkorb RGB-Variante ==&lt;br /&gt;
Für die RBG-Version wird der ATmega 168 benötigt. Ein angepasster &#039;&#039;&#039;[http://www.reichelt.de/?ACTION=20;AWKID=580197;PROVID=2084 WARENKORB]&#039;&#039;&#039; ist bei Reichelt hinterlegt.&lt;br /&gt;
&lt;br /&gt;
Im Warenkorb befindet sich nun auch der Nachfolger TSOP 31238 des nicht mehr lieferbaren TSOP17xx. ( 15.11.2011 ).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;quot;Beginner-Tipp&amp;quot;: &lt;br /&gt;
&lt;br /&gt;
Der Warenkorb ist eine tolle Vereinfachung der Bestellung. Bevor Ihr jedoch das DCF-77-Modul automatisch mitbestellt, lest bitte mit Hilfe der Suchfunktion das Forum zu diesem Thema durch. Das DCF-77-Modul ist, wie es im Forum so nett formuliert wurde, &amp;quot;ein Sensibelchen&amp;quot;. Es gäbe eine Alternative von C* (siehe Forum). Und um es ganz deutlich zu formulieren: Die Uhr funktioniert auch ohne DCF-77-Modul ganz prima. Sie kann mit der IR-Fernbedienung ganz einfach gestellt werden. Man braucht das Modul nicht wirklich.&lt;br /&gt;
Es befindet sich kein Flachbandkabel im Warenkorb.&lt;br /&gt;
----&lt;br /&gt;
== Reichelt Warenkorb LED Single Board ==&lt;br /&gt;
&lt;br /&gt;
Für das neue SingleBoard (Paket 1) werden zusätzliche Bauteile benötigt. Diese sind in einem eigenen &#039;&#039;&#039;[http://www.reichelt.de/?ACTION=20;AWKID=847662;PROVID=2084 WARENKORB]&#039;&#039;&#039; bei Reichelt hinterlegt.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== Reichelt Warenkorb Pollin DCF Stabilisierungsplatine ==&lt;br /&gt;
&lt;br /&gt;
Teil des Single Boards ist eine Stabilisierungsschaltung für den Pollin DCF Empfänger. Bei Verwendung des Pollin DCF Empfängers wird folgender &#039;&#039;&#039;[http://www.reichelt.de/?ACTION=20;AWKID=986833;PROVID=2084 WARENKORB]&#039;&#039;&#039; zusätzlich benötigt.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;[http://www.pollin.de/shop/dt/NTQ5OTgxOTk-/Bausaetze_Module/Module/DCF_Empfangsmodul_DCF1.html Link]&#039;&#039;&#039; zum DCF-Empfänger bei Pollin.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== Bestückung ==&lt;br /&gt;
&lt;br /&gt;
Hier eine kurze Beschreibung zur Bestückung:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Version 1.0 (schmale Ausführung):&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
[[Datei:Wordclock-schmal.png|miniatur|Bestückte Platine (Version 1.0)]]&lt;br /&gt;
[[Datei:Wordclock-schmal-1.1.png|miniatur|Bestückte Platine (Version 1.1)]]&lt;br /&gt;
[[Datei:Wordclock-schmal-2.0.png|miniatur|Bestückte Platine (Version 2.0)]]&lt;br /&gt;
&lt;br /&gt;
* Oben Mitte: Anschluss für stehende Lithium-Knopfbatterie CR2032 (die drei abgebildeten Stifte sind natürlich nicht notwendig, die Batterie wird direkt eingelötet)&lt;br /&gt;
* Unten 3-polige Stiftleiste: Anschluss für DCF77-Modul&lt;br /&gt;
* Unten 2-polige Stiftleiste: RX &amp;amp; TX (für Testzwecke)&lt;br /&gt;
* Unten rechts: TSOP17XX/SFH5110 für Infrarot-Empfang&lt;br /&gt;
* Darüber: 2-polige Stiftleiste für LDR (Helligkeitsmessung)&lt;br /&gt;
* Oben links und rechts: Wannenstecker für insg. 32 Ausgabekanäle: OUT0-OUT23 (für die Wörter), OUTL1-OUTL4 (für die Minuten) und OUTG1-OUTG4 (für General-Purpose-Ausgabezwecke)&lt;br /&gt;
* Rechts: Anschlussklemmen für Versorgungsspannung 7-20V und die drei PWM-Kanäle Rot, Grün und Blau.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Version 1.1 (schmale Ausführung):&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Wie 1.0, jedoch hat der Verbinder K9 (UART-Anschlüsse Rx/Tx für Debug-Zwecke) zwei zusätzliche Pins erhalten, siehe abweichendes Bestückungsbild rechts. Belegung von links nach rechts: Vcc / GND / RX / TX&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Version 2.0 (schmale Ausführung):&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Änderungen gegenüber 1.1:&lt;br /&gt;
&lt;br /&gt;
* Diode D1 entfällt&lt;br /&gt;
* 6-poliger statt 10-poliger ISP-Stecker&lt;br /&gt;
* Am ISP-Stecker ist auch Vcc angeschlossen&lt;br /&gt;
* Anschlussmöglichkeit für weitere I2C-Module&lt;br /&gt;
* Anschlussmöglichkeit für weitere Schieberegister über SPI&lt;br /&gt;
&lt;br /&gt;
[[Datei:RXTX-platine-wordclock-1.1.png|miniatur|Rx/Tx in V1.1 und V2.0]]&lt;br /&gt;
&lt;br /&gt;
Der IR-Empfänger TSOP17XX/SFH5110 muss hinter einem nicht benutzten Buchstaben angebracht werden. Deshalb braucht man ihn nicht unbedingt auf die Platine löten, sondern kann ihn auch über ein 3-poliges Kabel mit der Platine verbinden. In diesem Fall sollte der Kondensator C2 nicht auf die Platine, sondern direkt am TSOP17XX/SFH5110 (C2 Minus an Pin 1, C2 Plus an Pin 2) angelötet werden. Bei Verwendung eines SFH5110 Pinbelegung beachten!&lt;br /&gt;
&lt;br /&gt;
Je nach Ort des LDRs (hinter Buchstaben bzw. mit/ohne Dffusor) kann die automatische Helligkeitsregelung unterschiedlich ausfallen. Hier muss man eventuell den Widerstand R6 variieren, wenn das Ergebnis nicht optimal sein sollte.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Bestückung und Anschlüsse&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
[[Datei:Wordclock-schmal-bestueckungsdruck.png|miniatur|Bestückungsaufdruck der Version 1.0]]&lt;br /&gt;
&lt;br /&gt;
[[Datei:Wordclock-schmal-bestueckungsdruck-1.1.png|miniatur|Bestückungsaufdruck der Version 1.1]]&lt;br /&gt;
&lt;br /&gt;
[[Datei:Wordclock-schmal-bestueckungsdruck-2.0.png|miniatur|Bestückungsaufdruck der Version 2.0]]&lt;br /&gt;
&lt;br /&gt;
[[Datei:Wordclock-schmal-bestueckt.jpg|miniatur|Bestückung: Orientierung der IRLUs beachten!]]&lt;br /&gt;
&lt;br /&gt;
[[Datei:Wordclock-schmal-anschluesse.png|miniatur|Anschlüsse V1.0]]&lt;br /&gt;
[[Datei:Wordclock-schmal-anschluesse-1.1.png|miniatur|Anschlüsse V1.1]]&lt;br /&gt;
[[Datei:Wordclock-schmal-anschluesse-2.0.png|miniatur|Anschlüsse V2.0]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;WICHTIG (für 1.x und 2.x):&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Der oberste IRLU2905 muss anders herum eingelötet werden (Metall Richtung Spannungsregler) als die beiden unteren (Metall Richtung Schraubklemme). Siehe auch Foto rechts.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Möchte man einfarbige LEDs verwenden und auf die RGB-Steuerung verzichten, schließt man einfach zwei der drei RGB-PWM-Kanäle nicht an und verwendet stattdessen nur PWMR zur PWM-Steuerung. Die 2 zu PWMG und PWMB gehörenden IRLUs und die angeschlossenen 4 Widerstände am Gate der IRLUs kann man dann auch weglassen.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Bestückungsliste:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 Name                Wert&lt;br /&gt;
 C1,C3,C4,C6,C8,C9   100NF&lt;br /&gt;
 C10,C11,C12,C13     100NF&lt;br /&gt;
 C2                  4,7µF&lt;br /&gt;
 C5,C7               47µF&lt;br /&gt;
 D1                  1N4001&lt;br /&gt;
 IC1                 ATMEGA88&lt;br /&gt;
 IC2                 7805&lt;br /&gt;
 IC3                 TSOP1738 oder TSOP31238 oder SFH5110 (andere Pinbelegung!)&lt;br /&gt;
 IC4,IC5,IC6         74HCT595N&lt;br /&gt;
 IC7                 DS1307&lt;br /&gt;
 IC8,IC9,IC10,IC11   UDN2981A&lt;br /&gt;
 K4                  Wannenstecker 10-polig&lt;br /&gt;
 K7,K8               Wannenstecker 16-polig&lt;br /&gt;
 K6                  LDR&lt;br /&gt;
 KL1                 KLEMME5POL&lt;br /&gt;
 Q1                  32,768KHz&lt;br /&gt;
 R1,R6,R8,R10,R12    10K&lt;br /&gt;
 R7                  10K, entfällt!&lt;br /&gt;
 R2                  100&lt;br /&gt;
 R3,R4               4K7&lt;br /&gt;
 R5,R9,R11           82&lt;br /&gt;
 T1,T2,T3            IRLU2905&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Davon abweichend für 2.0:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 Name                Wert&lt;br /&gt;
 K4                  Wannenstecker 6-polig (statt 10-polig)&lt;br /&gt;
 K10                 I2C (neu, optional)&lt;br /&gt;
 K11                 SPI (neu, optional)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Anmerkung zu C2 und R2:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
C2 und R2 bilden zusammen einen Tiefpass. Hier gilt: Soll der TSOPxxxx/SFH5110 über ein längeres Kabel entfernt von der Platine angebracht werden, sollte man den Kondensator C2 nicht in die Platine löten, sondern direkt am Empfänger anbringen (Achtung: TSOP17XX und SFH5110 haben unterschiedliche Pinbelegung).&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== FAQ zur Bestückung ==&lt;br /&gt;
&lt;br /&gt;
[[Datei:Wordclock-schmal-bestueckt.jpg|miniatur|Bestückung: Orientierung der IRLUs (ganz rechts) beachten!]]&lt;br /&gt;
&lt;br /&gt;
 Q: Wie herum müssen die IRLUs eingelötet werden?&lt;br /&gt;
 A: Der oberste kommt mit der Metallseite nach links (Richtung&lt;br /&gt;
    Spannungsregler), Pin 1 ist hier der untere. Die anderen beiden IRLUs&lt;br /&gt;
    werden mit der Metallseite Richtung Schraubklemme eingelötet, siehe auch&lt;br /&gt;
    Foto rechts. Hier ist jeweils Pin 1 der obere.&lt;br /&gt;
&lt;br /&gt;
 Q: Welche ICs sollte ich sockeln?&lt;br /&gt;
 A: Wenn durch einen versehentlichen Kurzschluss bei der Freiluftverdrahtung der&lt;br /&gt;
    LEDs ein UDN2981 abfackelt, ist das ägerlich. Daher sollte man zumindest&lt;br /&gt;
    die UDNs und den ATMega sockeln. Besser ist es natürlich, alle zu sockeln.&lt;br /&gt;
&lt;br /&gt;
 Q: Bei dem ATMega und der RTC ist nicht ersichtlich, wie herum sie eingebaut&lt;br /&gt;
    werden müssen?&lt;br /&gt;
 A: Doch, kann man sehen: Der Lötpunkt von Pin1 ist immer rechteckig, die&lt;br /&gt;
    anderen sind oval. Das gilt übrigens für fast alle Bauteile, auch die Wannen.&lt;br /&gt;
&lt;br /&gt;
 Q: Ich möchte oben statt der abgebildeten zwei 2x8-poligen Stiftleisten 16-polige&lt;br /&gt;
    Wannenstecker nehmen. Wie herum kommen dann die oberen Wannen drauf?&lt;br /&gt;
 A: Mit der Kerbe nach unten, sieht man auch am rechteckigen Lötpunkt - und&lt;br /&gt;
    auch auf dem Foto rechts.&lt;br /&gt;
&lt;br /&gt;
 Q: Kann ich auf die Batterie verzichten, weil ich DCF77 einsetze bzw. nach&lt;br /&gt;
    einem Stromausfall die Uhr per Fernbedienung selbst neu stellen möchte?&lt;br /&gt;
 A: Wenn man keine Batterie einsetzt, sollte man VBat der RTC DS1307 mit GND&lt;br /&gt;
    verbinden. Das geht am einfachsten an den auf der Platine vorgesehenen&lt;br /&gt;
    Batterieanschlüssen: einfach K1 (Bat+) und K3 (Bat-) mit einem Stück Draht&lt;br /&gt;
    überbrücken. Übrigens: die Batterie hält lt. Datenblatt des DS1307&lt;br /&gt;
    10 Jahre, es ist also durchaus sinnvoll, diese auch zu bestücken.&lt;br /&gt;
&lt;br /&gt;
 Q: Der Infrarot-Empfänger TSOP17XX ist abgekündigt. Gibt es dazu eine Alternative?&lt;br /&gt;
 A: Als Ersatz kann man den [http://www.reichelt.de/?ARTICLE=107210 TSOP31238] nehmen. Er ist pinkompatibel.&lt;br /&gt;
&lt;br /&gt;
 Q: Kann ich (aus Kostengründen) auch einfarbige LEDs verwenden?&lt;br /&gt;
 A: Ja, einfach zwei der drei RGB-PWM-Kanäle nicht anschließen und nur PWMR (für Rot) benutzen.&lt;br /&gt;
    Die 2 zu PWMG und PWMB gehörenden IRLUs und die angeschlossenen 4 Widerstände am Gate der IRLUs&lt;br /&gt;
    kann man dann auch weglassen.&lt;br /&gt;
&lt;br /&gt;
&amp;quot;Beginner-Tipp&amp;quot;:&lt;br /&gt;
&lt;br /&gt;
[[Datei:Testmodul-Schaltplatine.JPG|miniatur]]&lt;br /&gt;
&lt;br /&gt;
Beim Zusammenbau der Word Clock gibt es eine Reihe von Fehlerquellen (Programmierung, Aufbau der Steuerplatine, Lötfehler auf den LED-Streifen, Verkabelung etc.). Für die Fehlersuche aber auch für das erste Erfolgserlebnis nach dem Zusammenbau der Schaltplatine kann man sich relativ einfach mit Hilfe von Vorwiderständen und Standard-LEDs eine &amp;quot;Test-Umgebung&amp;quot; aufbauen. Die ausgedruckte Tabelle mit der Zuordnung der Ausgänge/LEDs zu den entsprechenden Wörtern erleichtert die Interpretation. Achtung: auf die richtige &amp;quot;Default&amp;quot;-Sprachvariante achten. Wenn die LEDs dann wie erwartet leuchten = erstes Erfolgserlebnis. &lt;br /&gt;
&lt;br /&gt;
Eine BestückungsInfo für die Version V1.1 gibt es als PDF Download: &#039;&#039;&#039;[[Media:WordClockSteuerplatineV1.1Bestueckung.pdf]]&#039;&#039;&#039;&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
= Anschluss der LEDs =&lt;br /&gt;
&lt;br /&gt;
=== Zuordnung der Kanäle ===&lt;br /&gt;
&lt;br /&gt;
[[Datei:Wannen.png|400px|Anschlüsse der Wannenstecker]]&lt;br /&gt;
&lt;br /&gt;
Folgende Tabelle enthält die Zuordnung der Wörter zu den Pins der Wannenstecker.&lt;br /&gt;
Die Bezeichnungen der Pins entsprechen dem Schaltplan. Zu beachten ist, dass die Reihenfolge der Wörter nichts mit der Anordnung auf der Frontplatte zu tun hat.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; id=&amp;quot;pinbelegungen&amp;quot;&lt;br /&gt;
|+ &#039;&#039;&#039;Zuordnung Pins&#039;&#039;&#039;&lt;br /&gt;
|-                    &lt;br /&gt;
! Anschluss || Pin || [[#Deutsch (2-sprachig) |Frontplatte deutsch 2-sprachig]]  || [[#Deutsch (3-sprachig) |Frontplatte deutsch 3-sprachig]]  || [[#Englisch|Frontplatte Englisch]]&lt;br /&gt;
|-                                                         &lt;br /&gt;
|  OUT0 || K7-08 || ES IST               ||  ZW                         || IT IS&lt;br /&gt;
|-                                                        &lt;br /&gt;
|  OUT1 || K7-07 || FÜNF  (Minuten)      ||  EI                         || FIVE   (Minuten) &lt;br /&gt;
|-                                                        &lt;br /&gt;
|  OUT2 || K7-06 || ZEHN  (Minuten)      ||  N                          || TEN    (Minuten) &lt;br /&gt;
|-                                                        &lt;br /&gt;
|  OUT3 || K7-05 || VOR   (Minuten)      ||  S                          || QUARTER &lt;br /&gt;
|-                                                        &lt;br /&gt;
|  OUT4 || K7-04 || DREI  (Minuten)      ||  IEBEN                      || TWENTY (Minuten) &lt;br /&gt;
|-                                                        &lt;br /&gt;
|  OUT5 || K7-03 || VIERTEL              ||  DREI                       || HALF &lt;br /&gt;
|-                                                        &lt;br /&gt;
|  OUT6 || K7-02 || NACH                 ||  VIER                       || TO &lt;br /&gt;
|-                                                        &lt;br /&gt;
|  OUT7 || K7-01 || VOR                  ||  FÜNF                       || PAST &lt;br /&gt;
|-                                                        &lt;br /&gt;
|  OUT8 || K7-16 || HALB                 ||  SECHS                      || ONE &lt;br /&gt;
|-                                                        &lt;br /&gt;
|  OUT9 || K7-15 || S                    ||  ACHT                       || TWO &lt;br /&gt;
|-                                                        &lt;br /&gt;
|  OUT10 || K7-14 || EIN                 ||  NEUN                       || THREE &lt;br /&gt;
|-                                                        &lt;br /&gt;
|  OUT11 || K7-13 || ZWEI                ||  ZEHN                       || FOUR &lt;br /&gt;
|-                                                        &lt;br /&gt;
|  OUT12 || K7-12 || DREI                ||  ELF                        || FIVE &lt;br /&gt;
|-                                                        &lt;br /&gt;
|  OUT13 || K7-11 || VIER                ||  ZWÖLF                      || SIX &lt;br /&gt;
|-                                                        &lt;br /&gt;
|  OUT14 || K7-10 || FÜNF                ||  ES IST                     || SEVEN &lt;br /&gt;
|-                                                        &lt;br /&gt;
|  OUT15 || K7-09 || SECHS               ||  UHR                        || EIGHT &lt;br /&gt;
|-                                                        &lt;br /&gt;
|  OUT16 || K8-08 || SIEBEN              ||  FÜNF (Minuten)             || NINE &lt;br /&gt;
|-                                                        &lt;br /&gt;
|  OUT17 || K8-07 || ACHT                ||  ZEHN (Minuten)             || TEN &lt;br /&gt;
|-                                                        &lt;br /&gt;
|  OUT18 || K8-06 || NEUN                ||  ZWANZIG (Minuten)      || ELEVEN &lt;br /&gt;
|-                                                        &lt;br /&gt;
|  OUT19 || K8-05 || ZEHN                ||  DREI (Minuten)             || TWELVE &lt;br /&gt;
|-                                                        &lt;br /&gt;
|  OUT20 || K8-04 || ELF                 ||  VIERTEL (Minuten)          || O CLOCK  &lt;br /&gt;
|-                                                        &lt;br /&gt;
|  OUT21 || K8-03 || ZWÖLF               ||  NACH                       || unverbunden&lt;br /&gt;
|-                                                        &lt;br /&gt;
|  OUT22 || K8-02 || UHR                 ||  VOR                        || unverbunden&lt;br /&gt;
|-                                                        &lt;br /&gt;
|  OUT23 || K8-01 || unverbunden         ||  HALB                       || unverbunden&lt;br /&gt;
|-                                                        &lt;br /&gt;
|  OUTL1 || K8-09 || min1                ||  min1                       || min1&lt;br /&gt;
|-                                                        &lt;br /&gt;
|  OUTL2 || K8-10 || min2                ||  min2                       || min2&lt;br /&gt;
|-                                                        &lt;br /&gt;
|  OUTL3 || K8-11 || min3                ||  min3                       || min3&lt;br /&gt;
|-                                                        &lt;br /&gt;
|  OUTL4 || K8-12 || min4                ||  min4                       || min4&lt;br /&gt;
|-                                                        &lt;br /&gt;
|  OUTG1 || K8-13 || Ambilight (opt.)           ||  Ambilight (opt.)                  || Ambilight (opt.)           &lt;br /&gt;
|-                                                        &lt;br /&gt;
|  OUTG2 || K8-14 || unverbunden         ||  unverbunden                || unverbunden&lt;br /&gt;
|-                                                        &lt;br /&gt;
|  OUTG3 || K8-15 || unverbunden         ||  unverbunden                || unverbunden&lt;br /&gt;
|-                                                        &lt;br /&gt;
|  OUTG4 || K8-16 || dcf Empfang         ||  dcf Empfang                || dcf Empfang             &lt;br /&gt;
|}&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
=== Beschaltungsvarianten der LEDs ===&lt;br /&gt;
&lt;br /&gt;
Da die Schaltung genügend Power hat, um eine Unmenge an RGB-LEDs zu treiben, gibt es folgende Möglichkeiten, die auch mixbar sind:&lt;br /&gt;
&lt;br /&gt;
1. Pro Wort für jeden Buchstaben eine RGB-LED (mit gemeinsamer Anode) in&lt;br /&gt;
Parallelschaltung (natürlich mit geeignetem Vorwiderstand pro LED)&lt;br /&gt;
&lt;br /&gt;
Prinzip (am Beispiel des Wortes &amp;quot;VIER&amp;quot;):&lt;br /&gt;
&lt;br /&gt;
         /---|&amp;gt;|----| R1R |---- PWMR&lt;br /&gt;
      +--|---|&amp;gt;|----| R1G |---- PWMG     &amp;quot;V&amp;quot;&lt;br /&gt;
      |  \---|&amp;gt;|----| R1B |---- PWMB&lt;br /&gt;
      |&lt;br /&gt;
      |  /---|&amp;gt;|----| R2R |---- PWMR&lt;br /&gt;
      +--|---|&amp;gt;|----| R2G |---- PWMG     &amp;quot;I&amp;quot;&lt;br /&gt;
      |  \---|&amp;gt;|----| R2B |---- PWMB&lt;br /&gt;
 OUTx-+&lt;br /&gt;
      |  /---|&amp;gt;|----| R3R |---- PWMR&lt;br /&gt;
      +--|---|&amp;gt;|----| R3G |---- PWMG     &amp;quot;E&amp;quot;&lt;br /&gt;
      |  \---|&amp;gt;|----| R3B |---- PWMB&lt;br /&gt;
      |&lt;br /&gt;
      |  /---|&amp;gt;|----| R4R |---- PWMR&lt;br /&gt;
      +--|---|&amp;gt;|----| R4G |---- PWMG     &amp;quot;R&amp;quot;&lt;br /&gt;
         \---|&amp;gt;|----| R4B |---- PWMB&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
2. Pro Wort für jeden Buchstaben eine RGB-LED in Reihenschaltung (mit&lt;br /&gt;
nur 1 Vorwiderstand für die ganze Reihe, bzw. 3 wegen RGB). Das geht&lt;br /&gt;
aber nur, wenn die RGB-LEDs unabhängige Anoden und Kathoden haben (ja,&lt;br /&gt;
die gibt es).&lt;br /&gt;
&lt;br /&gt;
Prinzip:&lt;br /&gt;
                         &amp;quot;V&amp;quot;    &amp;quot;I&amp;quot;    &amp;quot;E&amp;quot;    &amp;quot;R&amp;quot;&lt;br /&gt;
         /----| R1R |----|&amp;gt;|----|&amp;gt;|----|&amp;gt;|----|&amp;gt;|---- PWMR&lt;br /&gt;
 OUTx --+-----| R1G |----|&amp;gt;|----|&amp;gt;|----|&amp;gt;|----|&amp;gt;|---- PWMG&lt;br /&gt;
         \----| R1B |----|&amp;gt;|----|&amp;gt;|----|&amp;gt;|----|&amp;gt;|---- PWMB&lt;br /&gt;
&lt;br /&gt;
Theoretisch könnte man solche Streifen als Platine herstellen, welche man dann immer auf die gewünschte Länge kürzt, als 1, 2, 3 ... 7 Buchstaben.&lt;br /&gt;
&lt;br /&gt;
Bei Verwendung von einfarbigen LEDs vereinfachen sich die Prinzip-Schaltungen wie folgt:&lt;br /&gt;
&lt;br /&gt;
1. Parallelschaltung, eine LED pro Buchstabe im Wort:&lt;br /&gt;
&lt;br /&gt;
       /----|&amp;gt;|----| R1 |---- PWMR     &amp;quot;V&amp;quot;&lt;br /&gt;
      +-----|&amp;gt;|----| R2 |---- PWMR     &amp;quot;I&amp;quot;&lt;br /&gt;
 OUTx-+&lt;br /&gt;
      +-----|&amp;gt;|----| R3 |---- PWMR     &amp;quot;E&amp;quot;&lt;br /&gt;
       \----|&amp;gt;|----| R4 |---- PWMR     &amp;quot;R&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
2. Reihenschaltung, eine LED pro Buchstabe im Wort:&lt;br /&gt;
&lt;br /&gt;
                    &amp;quot;V&amp;quot;    &amp;quot;I&amp;quot;    &amp;quot;E&amp;quot;    &amp;quot;R&amp;quot;&lt;br /&gt;
 OUTx ----| R1 |----|&amp;gt;|----|&amp;gt;|----|&amp;gt;|----|&amp;gt;|---- PWMR&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Zum Berechnen der Vorwiderstände kann z.&amp;amp;nbsp;B. dieser Rechner&lt;br /&gt;
verwendet werden: &#039;&#039;&#039;[http://www.elektronik-kompendium.de/sites/bau/1109111.htm Vorwiderstands-Rechner]&#039;&#039;&#039; oder &#039;&#039;&#039;[http://www.modding-faq.de/index.php?artid=506 Vorwiderstands-Rechner mit Unterstützung für Reihenschaltung]&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Damit die LEDs selbst nicht sichtbar sind, benötigt man hinter den transparenten Buchstaben einen Diffusor. Im einfachsten Fall kann das eine weiße Schicht Farbe sein.&lt;br /&gt;
&lt;br /&gt;
&amp;quot;Beginner-Tipp&amp;quot;:&lt;br /&gt;
&lt;br /&gt;
In der Sammelbestellung wurden die Vorwiderstände für die Reihenschaltung berechnet. &lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
=== LEDs &amp;amp; Platinen ===&lt;br /&gt;
==== Single-LED-Platine ====&lt;br /&gt;
Ende 2013 wurde eine neue Platine für die LEDs entworfen. Diese reduziert die notwendigen Löt- und Verdrahtungsarbeiten auf ein minimum.&amp;lt;br&amp;gt;&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
| Top Seite des Single Boards: || Bottom Seite des Single Boards:&lt;br /&gt;
|-&lt;br /&gt;
| [[Datei:Single_Board_v4_TOP.jpg|350px|Singel LED Platine - LED Seite]]&lt;br /&gt;
 || [[Datei:Single_Board_v4_BOTTOM.jpg|350px|Singel LED Platine - Widerstand Seite]]&lt;br /&gt;
|}&lt;br /&gt;
Das Board ist wie folgt konzipiert:&lt;br /&gt;
* von der TOP Seite betrachtet, befinden sich rechts die 4 Platinen für die Minuten-LEDs&lt;br /&gt;
* von der TOP Seite betrachtet, befindet sich oben rechts eine kleine Zusatzplatine, welche zur Stabilisierung des Pollin DCF Empfängers konstruiert wurde - DANKE an Thomas K.! &amp;lt;br&amp;gt;Anbei der Schaltplan und der Bestückungsplan:&amp;lt;br&amp;gt;[[Datei:Single_Board_v4_DCF77-Schaltplan.png|200px]] [[Datei:Single-Board-v4-DCF-Bestueckung.JPG|300px]]&amp;lt;br&amp;gt;IC1 und C3 sind auf der Rückseite zu bestücken.&lt;br /&gt;
&amp;lt;br&amp;gt;Die notwendigen Bauteile sind als [http://www.reichelt.de/?ACTION=20;AWKID=986833;PROVID=2084 Warenkorb bei Reichelt] hinterlegt.&lt;br /&gt;
* es besteht die Möglichkeit 2 zusätzliche PLCC-6 LEDs zu bestücken (D1 und D2 - links und rechts von SECHS) um so bis zu 6 Status-Anzeigen nach vorne zu führen (derzeit nicht in der SW gesondert verwendet). So kann zB die DCF77 Empfangsanzeige nach vorne ausgeführt werden. In der aktuellen Version sind diese wie folgt vorverdrahtet:&lt;br /&gt;
** D1 ROT -&amp;gt; Out G4 (DCF Empfangskontrolle)&lt;br /&gt;
** D1 GRÜN -&amp;gt; n/a - ausgeführt als Pin zur Verbindungsseite&lt;br /&gt;
** D1 BLAU -&amp;gt; n/a - ausgeführt als Pin zur Verbindungsseite&lt;br /&gt;
** D2 ROT -&amp;gt; Out G1 (Ambilight)&lt;br /&gt;
** D2 GRÜN -&amp;gt; Out G2 - derzeit nicht in der SW verwendet&lt;br /&gt;
** D2 BLAU -&amp;gt; Out G3 - derzeit nicht in der SW verwendet&lt;br /&gt;
* möchte man zB nur die DCF77 Empfangskontrolle haben, so reicht es den ROT-Kanal von D1 mit einer PLCC-2 LED und den dazu gehörigen Widerstand zu bestücken&lt;br /&gt;
* TSOP mit Stabilisierungskondensator und LDR werden direkt auf dem Single Board bestückt&lt;br /&gt;
* das Single Board wird wie folgt mit der Hauptplatine verbunden:&lt;br /&gt;
** 2 16polige Flachbandkabeln für K7 und K8&lt;br /&gt;
** 4 Adern für PWMR / PMWG / PMWB / GND&lt;br /&gt;
** 2 Drähten für den LDR&lt;br /&gt;
** 3 Drähte für den TSOP&lt;br /&gt;
* die Verbindungen zu den Minuten- / Ambilightplatinen erfolgt über die Kontakte an den jeweiligen Ecken / Seiten&lt;br /&gt;
* für die weiter Verwendung sind die Minutenanschlüsse M1-M4 an der zentralen Verbinderseite ausgeführt&lt;br /&gt;
* für die weiter Verwendung sind die OUT G1-G4 an der zentralen Verbinderseite ausgeführt&lt;br /&gt;
* auf der BOTTOM Seite ist Platz für eine PLCC-2 LED als DCF77 Empfangskontroll LED vorgesehen&lt;br /&gt;
&lt;br /&gt;
Die für die DCF77 Empfangskontrolle, D1 und D2 benötigten Bauteile sind &#039;&#039;&#039;nicht Bestandteil&#039;&#039;&#039; eines angebotenen Paketes.&lt;br /&gt;
&lt;br /&gt;
Die Minuten-LEDs werden an den Ecken der Platine über kleine Drahtbrücken angeschlossen: (Bild ist noch vom Prototyp)&lt;br /&gt;
[[Datei:WordClock_Singel_LED_PCB_Minuten.jpg|400px|Anschluß Minuten LED]]&lt;br /&gt;
&lt;br /&gt;
Die Verbindung zwischen der LED-Platine und der Hauptplatine erfolgt mittels kurzem Flachbandkabel.&amp;lt;br&amp;gt;&lt;br /&gt;
[[Datei:WordClock_Singel_LED_PCB_Anschluß.jpg|400px|Anschluß an die Hauptplatine]]&lt;br /&gt;
&lt;br /&gt;
Auf dem Prototyp waren die Buchsen für K7 und K8 verdreht. Daher mussten die Flachbandkabel beim verbinden verdreht werden. Dieses wird in der finalen Version korrigiert. Es erfolgt dann ein Austausch des Bildes.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Bitte beachtet, dass für das SingleBoard zusätzliche Bauteile benötigt werden. Diese sind in einem eigenen Warenkorb bei Reichelt hinterlegt.&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
Diese sind in einem eigenen &#039;&#039;&#039;[http://www.reichelt.de/?ACTION=20;AWKID=847662;PROVID=2084 WARENKORB]&#039;&#039;&#039; bei Reichelt hinterlegt.&amp;lt;br&amp;gt;&lt;br /&gt;
Die Bauteile für das DCF77 Stabilisierungsboard sind ebenfalls in einem eigenen &#039;&#039;&#039;[http://www.reichelt.de/?ACTION=20;AWKID=885799;PROVID=2084 WARENKROB]&#039;&#039;&#039; bei Reichelt hinterlegt.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
==== Streifenplatinen ====&lt;br /&gt;
Die Platine hat ein Maß von 314 x 12 mm und ist auf die Word-Clock-Front-Varianten A und B (also 450mm x 450mm) ausgelegt.&lt;br /&gt;
&lt;br /&gt;
Der Abstand der einzelnen LEDs beträgt 28.1mm&lt;br /&gt;
&lt;br /&gt;
Die Streifenplatine wird so ausschauen: (Version 8 vom 06.März 2010)&lt;br /&gt;
&lt;br /&gt;
[[Datei:LED_Streifen_V6_1.png|750px|Streifenplatine für SMD RGB LEDs Version 8]]&lt;br /&gt;
&lt;br /&gt;
[[Datei:LED_Streifen_V6_1_bestueckt.jpg|750px|Erster Streifen bestückt]]&lt;br /&gt;
&lt;br /&gt;
Erste Streifenplatine bestückt.&amp;lt;br&amp;gt;&lt;br /&gt;
Weitere Beispiel-Photos der bestückten Streifenplatinen sind [http://www.mikrocontroller.net/topic/156661#1780198 hier] zu finden.&lt;br /&gt;
&lt;br /&gt;
Ausschnitt vergrößert dargestellt:&lt;br /&gt;
&lt;br /&gt;
[[Datei:LED_Streifen_V6_1_schnitt.png|500px|Aussschnitt]]&lt;br /&gt;
&lt;br /&gt;
Datenblatt der LED mit Bestückungsinfos: [[Datei:SMD RGB PLCC-6 datasheet3.pdf]]&lt;br /&gt;
&lt;br /&gt;
Hier ist die Bestückung aller Streifen schematisch detailliert gezeigt: &amp;lt;br&amp;gt; [http://www.mikrocontroller.net/topic/156661?goto=1671369#1671369 Beitrag] &amp;lt;br&amp;gt;&lt;br /&gt;
Bestückungstabelle: [[Datei:2012WordClockLEDMatrix.pdf]] &amp;lt;br&amp;gt;&lt;br /&gt;
Bestückungsgrafik: [[Datei:2012WordClockLEDMatrix_wiring_v22.pdf]]&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
==== Technische Daten der SMD RGB PLCC-6 LEDs ====&lt;br /&gt;
Spezifikation&lt;br /&gt;
* Source Material: InGaN&lt;br /&gt;
* Emitting Colour: SMD SMT 5050 RGB&lt;br /&gt;
* LENS Type: Water clear&lt;br /&gt;
* Reverse Voltage: 5.0 V&lt;br /&gt;
* Viewing Angle: 140 degree&lt;br /&gt;
* Lead Soldering Temp: 260°C for 5 seconds&lt;br /&gt;
&lt;br /&gt;
Absolute Maximum Rating (Ta = 250C)&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! PARAMETER || Symbol || RED || GREEN || BLUE || UNITS&lt;br /&gt;
|-&lt;br /&gt;
| Power Dissipation || PO || align=&amp;quot;right&amp;quot; | 80 || align=&amp;quot;right&amp;quot; | 95 || align=&amp;quot;right&amp;quot; | 85 || mW&lt;br /&gt;
|-&lt;br /&gt;
| DC Current || IF || align=&amp;quot;right&amp;quot; | 20 || align=&amp;quot;right&amp;quot; | 20 || align=&amp;quot;right&amp;quot; | 20 || mA&lt;br /&gt;
|-&lt;br /&gt;
| Peak Forward Current || IFP || align=&amp;quot;right&amp;quot; | 100 || align=&amp;quot;right&amp;quot; | 100 || align=&amp;quot;right&amp;quot; | 100 || mA&lt;br /&gt;
|-&lt;br /&gt;
| Reverse Voltage || VR || align=&amp;quot;right&amp;quot; | 5 || align=&amp;quot;right&amp;quot; | 5 || align=&amp;quot;right&amp;quot; | 5 || V&lt;br /&gt;
|-&lt;br /&gt;
| Operating Temperature || Topr || colspan=&amp;quot;3&amp;quot; align=&amp;quot;center&amp;quot; | -25 to +85 || °C&lt;br /&gt;
|-&lt;br /&gt;
| Storage Temperature || Tstg ||  colspan=&amp;quot;3&amp;quot; align=&amp;quot;center&amp;quot; | -40 to +85 || °C&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Electro-optical Characteristics (Ta = 250C)&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! PARAMETER || SYMBOL || CONDITIONS || MIN. || TYP. || MAX. || UNIT&lt;br /&gt;
|-&lt;br /&gt;
| Forward Voltage (B) || VF || IF = 20mA || align=&amp;quot;right&amp;quot; | 3.4 || align=&amp;quot;right&amp;quot; | 3.6 || align=&amp;quot;right&amp;quot; | 3.8 || V&lt;br /&gt;
|-&lt;br /&gt;
| Forward Voltage (G) || VF || IF = 20mA || align=&amp;quot;right&amp;quot; | 3.4 || align=&amp;quot;right&amp;quot; | 3.6 || align=&amp;quot;right&amp;quot; | 3.8 || V&lt;br /&gt;
|-&lt;br /&gt;
| Forward Voltage (R) || VF || IF = 20mA || align=&amp;quot;right&amp;quot; | 1.9 || align=&amp;quot;right&amp;quot; | 2.1 || align=&amp;quot;right&amp;quot; | 2.5 || V&lt;br /&gt;
|-&lt;br /&gt;
| Dominant Wavelength (B) || lD || IF = 20mA || align=&amp;quot;right&amp;quot; | 465 || align=&amp;quot;right&amp;quot; | 470 || align=&amp;quot;right&amp;quot; | 475 || nm&lt;br /&gt;
|-&lt;br /&gt;
| Dominant Wavelength (G) || lD || IF = 20mA || align=&amp;quot;right&amp;quot; | 515 || align=&amp;quot;right&amp;quot; | 520 || align=&amp;quot;right&amp;quot; | 525 || nm&lt;br /&gt;
|-&lt;br /&gt;
| Dominant Wavelength (R) || lD || IF = 20mA || align=&amp;quot;right&amp;quot; | 625 || align=&amp;quot;right&amp;quot; | 630 || align=&amp;quot;right&amp;quot; | 635 || nm&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Pin / Farbzuordnung:&lt;br /&gt;
* R: Pin 1 - 6&lt;br /&gt;
* G: Pin 2 - 5&lt;br /&gt;
* B: Pin 3 - 4&lt;br /&gt;
&lt;br /&gt;
[[Datei:plcc6_smd_RGB.JPG]]&lt;br /&gt;
----&lt;br /&gt;
==== Widerstandswerte für die LED Streifen ====&lt;br /&gt;
&lt;br /&gt;
Berechnet sind die Widerstände für eine Spannungsversorgung von 15V - abzgl. 1,4V durch den Spannungsabfall an den UDN2981. Ein solches Netzteil gibt es zB bei [http://www.pollin.de/shop/dt/MjU5OTQ2OTk-/Stromversorgung/Netzgeraete/Regelbare_Netzgeraete/EcoFriendly_Universal_Schaltnetzteil_MW_3H36GS.html Pollin] oder auch bei [http://www.reichelt.de/?ACTION=3;ARTICLE=89789;PROVID=2402 Reichelt]. &lt;br /&gt;
&lt;br /&gt;
&amp;quot;Beginner-Tipp&amp;quot;:&lt;br /&gt;
&lt;br /&gt;
Bitte lest zum Stichwort &amp;quot;Netzteil&amp;quot; im Forum nach. Es gibt hierzu einige Bemerkungen und Empfehlungen. So z. B. auch der Hinweis auf ein weiteres Netzteil von C*: [http://www.conrad.de/ce/de/product/512696/HN-POWER-HNP18-150-STECKER-NETZT-18W Netzteil_15V_1.2A]&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;
! colspan=&amp;quot;3&amp;quot; | |||| colspan=&amp;quot;3&amp;quot; | ....Widerstände E12.... |||| colspan=&amp;quot;3&amp;quot; | ....Widerstände E24.... ||&lt;br /&gt;
|- &lt;br /&gt;
! Streifen  || Wort  || LEDs |||| style=&amp;quot;color:red;&amp;quot; | Rot || style=&amp;quot;color:green;&amp;quot; | Grün || style=&amp;quot;color:blue;&amp;quot; | Blau |||| style=&amp;quot;color:red;&amp;quot; | Rot || style=&amp;quot;color:green;&amp;quot; | Grün || style=&amp;quot;color:blue;&amp;quot; | Blau || Anschluss&lt;br /&gt;
|- &lt;br /&gt;
| 1 ||  ES ||  2 ||||  560 ||  470 ||  470 ||||  510 ||  360 ||  360 || OUT14&lt;br /&gt;
|- &lt;br /&gt;
| {{H16}} | 1 || {{H16}} | K ||  ||||  ||  ||  ||||  ||  ||  ||&lt;br /&gt;
|- &lt;br /&gt;
| 1 || IST || 3 |||| 470 || 220 || 220 |||| 390 || 200 || 200 || OUT14&lt;br /&gt;
|- &lt;br /&gt;
| {{H16}} | 1 || {{H16}} | L ||  ||||  ||  ||  ||||  ||  ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| 1 || FÜNF || 4 |||| 330 || 33 || 33 |||| 300 || 27 || 33 || OUT16&lt;br /&gt;
|-{{H12}}&lt;br /&gt;
| 2 || ZEHN || 4 |||| 330 || 33 || 33 |||| 300 || 27 || 33 || OUT17&lt;br /&gt;
|-{{H12}}&lt;br /&gt;
| 2 || ZWAN || 4 |||| 330 || 33 || 33 |||| 300 || 27 || 33 || OUT18&lt;br /&gt;
|-{{H12}}&lt;br /&gt;
| 2 || ZIG || 3 |||| 470 || 220 || 220 |||| 390 || 200 || 200 || OUT18&lt;br /&gt;
|-&lt;br /&gt;
| 3 || DREI || 4 |||| 330 || 33 || 33 |||| 300 || 27 || 33 || OUT19&lt;br /&gt;
|-&lt;br /&gt;
| 3 || VIER || 4 |||| 330 || 33 || 33 |||| 300 || 27 || 33 || OUT20&lt;br /&gt;
|-&lt;br /&gt;
| 3 || TEL || 3 |||| 470 || 220 || 220 |||| 390 || 200 || 200 || OUT20&lt;br /&gt;
|-{{H12}}&lt;br /&gt;
| {{H16}} | 4 || {{H16}} | TG ||  ||||  ||  ||  ||||  ||  ||  ||&lt;br /&gt;
|-{{H12}}&lt;br /&gt;
| 4 || NACH || 4 |||| 330 || 33 || 33 |||| 300 || 27 || 33 || OUT21&lt;br /&gt;
|-{{H12}}&lt;br /&gt;
| 4 || VOR || 3 |||| 470 || 220 || 220 |||| 390 || 200 || 200 || OUT22&lt;br /&gt;
|- {{H12}}&lt;br /&gt;
| {{H16}} | 4 || {{H16}} | JM ||  ||||  ||  ||  ||||  ||  ||  ||  &lt;br /&gt;
|-&lt;br /&gt;
| 5 || HALB || 4 |||| 330 || 33 || 33 |||| 300 || 27 || 33 || OUT23&lt;br /&gt;
|- &lt;br /&gt;
| {{H16}} | 5 || {{H16}} | Q ||  ||||  ||  ||  ||||  ||  ||  || &lt;br /&gt;
|-&lt;br /&gt;
| 5 || ZWÖ || 3 |||| 470 || 220 || 220 |||| 390 || 200 || 200 || OUT13&lt;br /&gt;
|-&lt;br /&gt;
| 5 || LF || 2 |||| 560 || 470 || 470 |||| 510 || 360 || 360 || OUT13&lt;br /&gt;
|- &lt;br /&gt;
| {{H16}} | 5 || {{H16}} | P ||  ||||  ||  ||  ||||  ||  ||  ||&lt;br /&gt;
|-{{H12}}&lt;br /&gt;
| 6 || ZW || 2 |||| 560 || 470 || 470 |||| 510 || 360 || 360 || OUT0&lt;br /&gt;
|-{{H12}}&lt;br /&gt;
| 6 || EI || 2 |||| 560 || 470 || 470 |||| 510 || 360 || 360 || OUT1&lt;br /&gt;
|-{{H12}}&lt;br /&gt;
| 6 || N || 1 |||| 680 || 560 || 560 |||| 620 || 560 || 560 || OUT2&lt;br /&gt;
|-{{H12}}&lt;br /&gt;
| 6 || S || 1 |||| 680 || 560 || 560 |||| 620 || 560 || 560 || OUT3&lt;br /&gt;
|-{{H12}}&lt;br /&gt;
| 6 || IEB || 3 |||| 470 || 220 || 220 |||| 390 || 200 || 200 || OUT4&lt;br /&gt;
|-{{H12}}&lt;br /&gt;
| 6 || EN || 2 |||| 560 || 470 || 470 |||| 510 || 360 || 360 || OUT4&lt;br /&gt;
|- &lt;br /&gt;
| {{H16}} | 7 || {{H16}} | K ||  ||||  ||  ||  ||||  ||  ||  ||  &lt;br /&gt;
|-&lt;br /&gt;
| 7 || DREI || 4 |||| 330 || 33 || 33 |||| 300 || 27 || 33 || OUT5&lt;br /&gt;
|- &lt;br /&gt;
| {{H16}} | 7 || {{H16}} | RH ||  ||||  ||  ||  ||||  ||  ||  || &lt;br /&gt;
|-&lt;br /&gt;
| 7 || FÜNF || 4 |||| 330 || 33 || 33 |||| 300 || 27 || 33 || OUT7&lt;br /&gt;
|-{{H12}}&lt;br /&gt;
| 8 || ELF || 3 |||| 470 || 220 || 220 |||| 390 || 200 || 200 || OUT12&lt;br /&gt;
|-{{H12}}&lt;br /&gt;
| 8 || NEUN || 4 |||| 330 || 33 || 33 |||| 300 || 27 || 33 || OUT10&lt;br /&gt;
|-{{H12}}&lt;br /&gt;
| 8 || VIER || 4 |||| 330 || 33 || 33 |||| 300 || 27 || 33 || OUT6&lt;br /&gt;
|- &lt;br /&gt;
| {{H16}} | 9 || {{H16}} | W ||  ||||  ||  ||  ||||  ||  ||  ||  &lt;br /&gt;
|-&lt;br /&gt;
| 9 || ACHT || 4 |||| 330 || 33 || 33 |||| 300 || 27 || 33 || OUT9&lt;br /&gt;
|-&lt;br /&gt;
| 9 || ZEHN || 4 |||| 330 || 33 || 33 |||| 300 || 27 || 33 || OUT11&lt;br /&gt;
|- &lt;br /&gt;
| {{H16}} | 9 || {{H16}} | RS ||  ||||  ||  ||  ||||  ||  ||  ||  &lt;br /&gt;
|-{{H12}}&lt;br /&gt;
| {{H16}} | 10 || {{H16}} | B ||  ||||  ||  ||  ||||  ||  ||  ||  &lt;br /&gt;
|-{{H12}}&lt;br /&gt;
| 10 || SEC || 3 |||| 470 || 220 || 220 |||| 390 || 200 || 200 || OUT8&lt;br /&gt;
|-{{H12}}&lt;br /&gt;
| 10 || HS || 2 |||| 560 || 470 || 470 |||| 510 || 360 || 360 || OUT8&lt;br /&gt;
|-{{H12}}&lt;br /&gt;
| {{H16}} | 10 || {{H16}} | FM ||  ||||  ||  ||  ||||  ||  ||  ||  &lt;br /&gt;
|-{{H12}}&lt;br /&gt;
| 10 || UHR || 3 |||| 470 || 220 || 220 |||| 390 || 200 || 200 || OUT15&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Es werden somit folgende Widerstände aus der E24 Reihe benötigt:&lt;br /&gt;
&lt;br /&gt;
* 13x 27Ω&lt;br /&gt;
* 13x 33Ω&lt;br /&gt;
* 18x 200Ω&lt;br /&gt;
* 13x 300Ω&lt;br /&gt;
* 12x 360Ω&lt;br /&gt;
* 9x 390Ω&lt;br /&gt;
* 6x 510Ω&lt;br /&gt;
* 4x 560Ω&lt;br /&gt;
* 2x 620Ω&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
==== Ambilight-/LED-Streifenplatine bestücken ====&lt;br /&gt;
&lt;br /&gt;
&amp;quot;Beginner-Tipps&amp;quot;:&lt;br /&gt;
&lt;br /&gt;
Die Beschreibung zum Thema Ambilight ist im Forum etwas unübersichtlich. &lt;br /&gt;
&lt;br /&gt;
Sehr hilfreich zum Verständnis sind die Bilder von [http://www.mikrocontroller.net/topic/156661#1780198 Matthias]. Wichtig zum Verständnis ist auch der Hinweis auf die Drahtbrücken auf der Platinenunterseite vor der ersten LED eines Wortes. Es hat mir sehr geholfen, das Platinen-Layout-Schema und das Foto übereinander zu montieren.&lt;br /&gt;
&lt;br /&gt;
[[Datei:LED-Platine.jpg|miniatur]]&lt;br /&gt;
&lt;br /&gt;
Anhand der [http://www.mikrocontroller.net/articles/Word_Clock_Variante_1#Widerstandswerte_f.C3.BCr_die_LED_Streifen Tabelle] kann man erkennen, dass die Widerstände im Ambilight-Paket (300 Ohm = rot, 27 Ohm = grün, 33 Ohm = blau) für 2 x 4 LEDs in Serie ausgelegt sind. &lt;br /&gt;
&lt;br /&gt;
Man kann also 2 x 4 LEDs hinter einander löten oder die Variante von Christian aufgreifen der die LEDs physikalisch in 2er Gruppen angeordnet hat. Durch Drahtbrücken werden diese 2er Gruppen aber dann elektrisch zu zwei 4er Gruppen: LED-LED-Bügel-LED-LED-frei-LED-LED-Bügel-LED-LED, so dass auch für diese Version die Widerstände passen.&lt;br /&gt;
&lt;br /&gt;
Update Jan 2014: ich habe für die Amiblight-Platinen nach dem Muster LED-LED-Bügel-LED-LED-frei-LED-LED-Bügel-LED-LED diese Schemazeichnung mit Lötpunkten und ganz kurzen Drahtbrücken angefertigt:&lt;br /&gt;
&lt;br /&gt;
[[Datei:Ambilight-wiring-2x2x2x2-Leds-KHK.png|miniatur]]&lt;br /&gt;
&lt;br /&gt;
Persönlicher Kommentar KHK: &lt;br /&gt;
Ich habe inzwischen die zweite Wordclock fertig gestellt. Beim ersten Mal habe ich die LED-Streifenplatinen/Ambilight-Streifen ohne sie zu trennen bestückt. Das war schön übersichtlich und einfach zu löten. Das Trennen der fertig gelöteten Streifen war aber sehr schwierig. Bei der zweiten Wordclock habe ich die LED-Streifen vor der Bestückung mit einer Hebelschere getrennt. Das ging super einfach und hat mir viel Mühe gespart. Fazit: Trennt bitte die LED-Streifen vor der Bestückung ab! Ihr spart Euch viel Mühe und Stress.&lt;br /&gt;
&lt;br /&gt;
Beginner-Tipp: Das Ambilight wird mit OUTG2 angesteuert (Steuerplatine Version 1.1).&lt;br /&gt;
&lt;br /&gt;
==== LED-Streifen: Logik ====&lt;br /&gt;
&lt;br /&gt;
* Das Signal für die R/G/B PWM wird für jede Streifenplatine seitlich zugeführt (&amp;quot;R/G/B-Ausgangssignal&amp;quot;). Wichtig: nicht alle Platinen hintereinanderschalten, sondern die einzelnen Streifen parallel schalten (sonst werden die Leiterbahnen der ersten Platinen immer mit dem vollen Strom belastet). &lt;br /&gt;
&lt;br /&gt;
* Das &amp;quot;R/G/B-Ausgangssignal&amp;quot; wird vor jedem Wort auf den Vorwiderstand geführt. Dazu ist es notwendig das &amp;quot;R/G/B-Ausgangssignal&amp;quot; von den gemeinsamen Leiterbahnen (R,G,B) mit Draht- (R und G) bzw. einer Lötbrücke (B) auf die Vorwiderstände zu legen. &lt;br /&gt;
&lt;br /&gt;
* Innerhalb eines Wortes werden die vier Signale (PWM R/G/B + COM) über Lötbrücken von einem Buchstaben zum anderen weitergeführt. &lt;br /&gt;
&lt;br /&gt;
* Am Ende eines Wortes werden die Ausgänge 1, 2 und 3 der LED mit Lötbrücken zusammengeführt und gehen auf COM. &lt;br /&gt;
&lt;br /&gt;
* Eine Besonderheit ergibt sich bei &amp;quot;Leerzeichen&amp;quot; - wie z. B. beim Ambilight oder bei &amp;quot;Es(leer)ist&amp;quot;: &lt;br /&gt;
** Die COM Leitung wird durch zwei Lötbrücken links und rechts des zu überbrückenden Segments weitergeleitet. &lt;br /&gt;
** Das &amp;quot;R/G/B-Ausgangssignal&amp;quot; für den ersten Buchstaben nach dem &amp;quot;Leerzeichen&amp;quot; wird wieder mit den Draht-/Lötbrücken zugeführt, die auch vor Wörtern verwenden werden.&lt;br /&gt;
&lt;br /&gt;
Für jedes Wort wird (irgendwo) COM vom den Ausgängen OUTx zugeleitet.&lt;br /&gt;
&lt;br /&gt;
==== LED-Streifen: Zusammenfassung Löten ====&lt;br /&gt;
&lt;br /&gt;
* Widerstände sind immer am Anfang eines Wortes. Individuelle Werte für R/G/B je nach Länge des Wortes.&lt;br /&gt;
* Lötzinnbrücken sind&lt;br /&gt;
** am Anfang eines Wortes bei B&lt;br /&gt;
** am Anfang einer Streifenplatine bei B (hier sind keine Drahtbrücken nötig)&lt;br /&gt;
** am Ende eines Wortes von LED1/LED2/LED3 auf COM&lt;br /&gt;
** in der Mitte eines Wortes vor allen LED (außer der Ersten) zum Ersatz des Vorwiderstandes&lt;br /&gt;
** Zusätzlich zum Überbrücken von &amp;quot;Leerstellen&amp;quot; nur bei COM vor und nach dem Segment (da, wo zwischen zwei Zeichen sonst alle 4 Lötbrücken gesetzt werden)&lt;br /&gt;
* Drahtbrücken an der Platinenunterseite gibt es:&lt;br /&gt;
** vor einem neuen Wort zu R und G&lt;br /&gt;
** nach einer &amp;quot;Leerstelle&amp;quot; zu R und G (= identisch zu 1)&lt;br /&gt;
* Für jedes Wort wird (irgendwo) COM vom den Ausgängen OUTx zugeleitet.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
=== Sammelbestellung LED-Platinen ===&lt;br /&gt;
Es werden folgende 3 Pakete angeboten:&lt;br /&gt;
* Paket 1 (Uhr) - 66,20Eur : 1 Single-LED-Platine, 100 RGB-PLCC6-LEDs und 155 SMD-Widerstände&lt;br /&gt;
* Paket 2 (Ambilight) - 17,00Eur : 4 Streifenplatinen, 32 RGB-PLCC6-LEDs und 45 SMD-Widerstände&lt;br /&gt;
* Paket 3 (Uhr - alte Version) - 52,20Eur : 11 Streifenplatinen, 100 RGB-PLCC6-LEDs und 155 SMD-Widerstände&lt;br /&gt;
&lt;br /&gt;
Für das neue SingleBoard (Paket 1) werden zusätzliche Bauteile benötigt. Diese sind in einem eigenen Reichelt Warenkorb zusammen gestellt:&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;gt;&amp;gt; http://www.reichelt.de/?ACTION=20;AWKID=847662;PROVID=2084&lt;br /&gt;
&lt;br /&gt;
Und folgende Einzelpositionen:&lt;br /&gt;
* RGB-PLCC6-LED einzeln - 0,35Eur&lt;br /&gt;
* Streifenplatine einzeln - 1,00Eur&lt;br /&gt;
* Single-LED-Platine einzeln - 25,00Eur&lt;br /&gt;
* Zwischenboden mit Ambilightausfräsung (MDF 19mm gefräst) - 37,50Eur&lt;br /&gt;
* Zwischenboden ohne Ambilightausfräsung (MDF 19mm gefräst) - 37,50Er&lt;br /&gt;
* programmierter ATMega168 - 3,55Eur&lt;br /&gt;
&lt;br /&gt;
Der Versand erfolgt bei nur LEDs / Widerständen / ATMega als MaxiBrief mit Einschreiben.&lt;br /&gt;
* innerhalb BRD (ohne Inseln) - 4,00Eur&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Der Versand mit Streifenplatinen erfolgt als kleines Paket:&lt;br /&gt;
* innerhalb BRD (ohne Inseln) - 5,20Eur&lt;br /&gt;
* Österreich und Schweiz - 9,00Eur&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Der Versand mit Zwischenboden (max 8 Böden pro Paket) oder Single-LED-Platine wird als Paket versendet:&amp;lt;br&amp;gt;&lt;br /&gt;
* innerhalb BRD (ohne Inseln) - 6,50Eur&amp;lt;br&amp;gt;&lt;br /&gt;
* Österreich - 16,00Eur&amp;lt;br&amp;gt;&lt;br /&gt;
* Schweiz - 27,50Eur&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Es fallen jeweils nur die höheren Versandkosten an.&lt;br /&gt;
&lt;br /&gt;
Werden mehrere Pakete bestellt, können die tatsächlichen Versandkosten von den hier gezeigten Versandkosten abweichen. Diese ist dann von der bestellten Menge und dem Gewicht abhängig.&lt;br /&gt;
&lt;br /&gt;
Bei Interesse bitte per PN melden (Benutzer [http://www.mikrocontroller.net/user/show/wawibu wawibu])&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Zeitplanung&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;table border=1&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;Datum&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Aktion&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;bis 15.Februar 2015&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Sammeln der Bestellungen&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;17.Februar 2015&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Bestellung geht raus&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;~06.März 2015&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Anlieferung bei mir&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;ab 13.März 2015&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Versand&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Als Alternative können die Pakete 1, 2 und 3 auch ohne Widerstände bei mir bestellt werden. Es werden dann folgende Warenkörbe benötigt:&lt;br /&gt;
&lt;br /&gt;
Widerstands-Warenkörbe bei Reichelt:&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;pro WordClock&#039;&#039;&#039;: https://secure.reichelt.de/?;ACTION=20;LA=5010;AWKID=292199;PROVID=2084&lt;br /&gt;
&amp;lt;br&amp;gt;&#039;&#039;&#039;zusätzlich fürs Ambilight&#039;&#039;&#039;: https://secure.reichelt.de/?;ACTION=20;LA=5010;AWKID=292202;PROVID=2084&lt;br /&gt;
&amp;lt;br&amp;gt;&#039;&#039;&#039;LEDs&#039;&#039;&#039; gibt es zB bei LED-Tech: http://www.led-tech.de/de/Leuchtdioden/SMD-LEDs/PLCC6-Superbright-RGB-SMD--5.0x5.0mm--LT-1178_1_2.html&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;Die LEDs von LED-Tech haben in der Zwischenzeit eine andere PinBelegung und sind somit nicht 1:1 nutzbar. Der R und B Kanal sind dort anders als bei den LEDs aus der Sammelbestellung. Werden die LEDs von LED-Tech verwendet, muss darauf geachtet werden, das diese beiden Kanäle vertauscht sind!&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== Anschluss eines DCF77-Moduls ==&lt;br /&gt;
&lt;br /&gt;
Der Anschluss eines DCF77-Moduls ist optional. Wird ein DCF77-Modul angeschlossen, kann mittels einer LED der DCF77-Empfang angezeigt werden. Die LED blinkt dann im Sekundenrhytmus und zeigt direkt die empfangenen DCF77-Impulse. Der Empfang wird kurze Zeit nach dem Einschalten aktiviert bzw. jede Stunde wiederholt. &lt;br /&gt;
&lt;br /&gt;
Die DCF77-LED kann folgendermaßen angeschlossen werden:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;TODO&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Bei Anschluss des DCF77-Moduls von Reichelt ist folgendes zu beachten:&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
*Es sollte direkt auf den Lötaugen des Reichelt-DCF77-Moduls ein Abblock-Kondensator von 100nF zwischen den Pins +UB und GND aufgelötet werden&lt;br /&gt;
&lt;br /&gt;
*Der Eingang PON muss offen bleiben - entgegen den (falschen) Angaben im Reichelt Datenblatt!&lt;br /&gt;
&lt;br /&gt;
*Das DCF77-Modul von Reichelt braucht eine Synchronisierungszeit von mindestens 10 Sekunden. Erst dann arbeitet der Empfänger.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Beim Anschluss des Conrad-Moduls ArtNr. 641138 ist folgendes zu beachten:&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
*Es muss der nicht-invertierte Open-Collector-Ausgang Pin 3 als Signal an die WordClock angeschlossen werden.&lt;br /&gt;
&lt;br /&gt;
Ein Max232 der zur Kontrolle angeschlossen ist, kann den DCF Empfang stören. Ohne Max232 verbessert sich der Empfang deutlich.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Da einige berichtet haben, dass der DCF-Empfang bei den Reichelt-Modulen oftmals gestört ist, hier ein Tipp von Carsten Wille, wie man den Empfang durch Hinzufügen weniger Bauteile wesentlich verbessern kann:&#039;&#039;&#039; [http://www.mikrocontroller.net/topic/156661?goto=1929382#1929382 Beitrag: Brauche Hilfe beim Bau einer Uhr]&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Für Nutzer eines Pollin DCF77 Moduls ist aufgrund des nicht belastbaren Ausgangs eine kleine Hilfsplatine empfehlenswert. Siehe dazu auch [http://www.mikrocontroller.net/topic/156661?goto=3465678#3465682 Beitrag: Brauche Hilfe beim Bau einer Uhr] Platinen sind vom Beitragsautor beziehbar&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Software =&lt;br /&gt;
Da die Software für die neuere Variante mit der gemeinsamen LED/Steuerplatine die gleiche ist, bitte da nachschauen, was Software, Downloads und Bugs angeht um.&lt;br /&gt;
https://www.mikrocontroller.net/articles/Word_Clock_Variante_1#Software&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Download ==&lt;br /&gt;
&lt;br /&gt;
Siehe voriger Abschnitt.&lt;br /&gt;
&lt;br /&gt;
https://www.mikrocontroller.net/articles/Word_Clock_Variante_1#Download&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
= Mechanik =&lt;br /&gt;
&lt;br /&gt;
Folgende Anleitung gilt für die Frontplatte aus Plexiglas und die Word Clock mit Ambilight, d. h. die Wandmontage erfolgt ohne Rahmen/Bilderrahmen.&lt;br /&gt;
Beim Bau meiner Word Clock habe ich definitiv mehr Zeit über mechanische Lösungen nachgedacht, als über die Elektronik/Programmierung. Vor allem die Recherche geeigneter Bezugsquellen hat Zeit gekostet und die Lieferzeit hat den Bau der Uhr sehr verzögert. Ich hoffe, dass diese Anleitung hilft, etwas Zeit zu sparen.&lt;br /&gt;
&lt;br /&gt;
== Vorbereiten der Zwischenplatte == &lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
Datei:1-mdf-spachtel.jpeg&lt;br /&gt;
Datei:2-gespachtelte-kante.jpeg|Die Seitenfläche nach den Auftragen der Spachtelmasse.&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Damit die Zwischenplatte optisch gut zur Frontplatte passt, muss diese lackiert werden. Im vorliegenden Vorschlag wurde die Zwischenplatte an den Seiten mit wasserbasiertem Acryllack schwarz lackiert. &lt;br /&gt;
&lt;br /&gt;
Die MDF Platte kann grundiert oder gespachtelt werden. In diesem Beispiel wurde die Platte mit  &amp;quot;Holz und MDF Spachtel” (z. B. Decotric, siehe Amazon) vorbehandelt. Eine geeignete Grundierung wäre z. B. “MDF Grundierung Grund Vorbehandlung” von Molto. Die Grundierung ist leichter zu verarbeiten. Mit der Spachtelmasse kann man allerdings unerwünschte Löcher verschließen. Die Masse muss einige Stunden aushärten, bevor sie geschliffen werden kann. Am besten beginnt man daher den Bau mit der Word Clock mit dieser Vorarbeit. In der Wartezeit kann die Elektronik zusammengelötet werden. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
Datei:3-Kante-sw-gestrichen.jpeg|Die Zwischenplatte sollte vor der Montage der Elektronik vorbereitet werden. Der Mülleimer ist ein perfekter und stabiler Halter während des Streichen: einfach zu drehen, man macht sich die Finger nicht voll Farbe und man kann alle Seiten auf einmal streichen.&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nach dem Aushärten wurde die Oberfläche mit Schmirgelpapier geschliffen (P240) und anschließend dreimal lackiert. Die erste und zweite Lackschicht wurde jeweils mit P400 Schmirgelpapier geglättet. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
Datei:4-platine-fertig-in-hand.jpeg|&lt;br /&gt;
Datei:5-platine-fertig-in-zwischenplatte.jpeg|&lt;br /&gt;
Datei:6-platine-fertig-in-zwischenplatte-ohne-fraesung.jpeg|&lt;br /&gt;
Datei:7-platine-fertign-in-zwischenplatten-mit-fraesung.jpeg|&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Leider ist mir beim Einlöten der Komponenten nicht aufgefallen, dass die Batterie und IC2 (7805) sehr hoch sind. Da ich die Beinchen der Batterie schon zu kurz abgeschnitten hatte, konnte ich die Batterie nicht mehr einfach umbiegen, so dass dieses Problem nur noch durch angelötete Kabel zu lösen war. Die Batterie wird nun einfach neben die Steuerplatine gelegt. Den 7805 konnte ich durch Umbiegen etwas in seiner Höhe reduzieren. Der Platz für den umgebogenen 7805 wurde mit einer Fräse im Multitool/Dremel geschaffen.&lt;br /&gt;
&lt;br /&gt;
Im Nachhinein betrachtet hätte ich mir diese Mühe sparen können, da durch die Befestigung mit dem Spiegelbefestigungsset (siehe unten) die Höhe kein Problem mehr ist. Ebenfalls etwas zu spät habe ich im Forum Bilder einer Lösung gesehen, bei der die Ausfräsung für Batterie und 7805 in Richtung des äußeren Randes und nicht wie bei mir in Richtung der LEDs gelöst worden war. Im äußeren Rahmen ist genug Platz für eine Ausfräsung, die es erlaubt, die Batterie und den 7805 horizontal einzulöten.&lt;br /&gt;
&lt;br /&gt;
== Befestigung der Frontplatte (“Plexiglasvariante”) an der Zwischenplatte ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
Datei:8-holzbohrer-8mm-mit-tiefenmarkierung.jpeg|8 mm Holzbohrer mit improvisierter Tiefenmarkierung.&lt;br /&gt;
Datei:9-bohrung-fuer-magnet-1.jpeg|Fertige Bohrung. An der Kante unter dem Loch sieht man die Spachtelmasse. Während die Spachtelmasse noch trocknet, können bereits die Magnete montiert werden.&lt;br /&gt;
Datei:10-bohrung-fuer-magnet-2.jpeg|Zentral wird eine 2 mm Bohrung ergänzt, damit der Magnet bei Fehlpositionierung wieder ausgestossen werden könnte.&lt;br /&gt;
Datei:11-bohrung-fuer-magnet-3.jpeg|Zur Veranschaulichung: der Magnet könnte mit dem 2 mm Bohrer ausgestossen werden. &lt;br /&gt;
Datei:12-magnet-1.jpeg|&lt;br /&gt;
Datei:13-magnet-mit-werkzeug.jpeg|Die Magnete habe eine ganz gute Presspassung. Mit Hilfe eines Zwischenhölzchens zum Schutz des Magneten können sie in das Loch gehämmert werden.&lt;br /&gt;
Datei:14-magnet-2.jpeg|&lt;br /&gt;
Datei:15-magnet-3.jpeg|&lt;br /&gt;
Datei:16-magnet-4.jpeg|&lt;br /&gt;
Datei:17-magent-mit-kleinem-magnet-1.jpeg|Der 8 mm x 4 mm Magnet wird 0.5 mm unter die Oberfläche der Zwischenplatte gepresst, damit auch der 8 mm x 0.5 mm Magnet flächenbündig befestigt werden kann.&lt;br /&gt;
Datei:18-magent-mit-kleinem-magnet-2.jpeg|Hier ist der 8 mm x 0.5 mm Magnet in der Bohrung. Damit sich der 8 mm x 0.5 mm Magnet durch Verschieben von dem 8 mm x 4 mm Magneten lösen lässt, muss die Kante der Bohrung abgeschrägt werden.&lt;br /&gt;
Datei:19-anschraegung-fuer-kleinen-magnet.jpeg|Durch die Abschrägung am Rand der Bohrung (Universalmesser, Taschenmesser oder Dremel-Fräse) gleitet der 8 mm x 0.5 mm Magnet leicht aus der Befestigung und läßt sich so mit wenig Kraft vom 8 mm x 4 mm Magnet lösen.&lt;br /&gt;
Datei:20-alu-isolation-magnet-vor-klebung.jpeg|Vor dem Kleben wird die Holzoberfläche und der 8 mm x 4 mm Magnet mit Hilfe einer dünnen Folie (fixiert durch den 8 mm x 0.5 mm Magnet) isoliert (hier: Haushalts-Alu-Folie). Der Kleber wird sehr dünn aufgetragen, um Überschüsse zu vermeiden.&lt;br /&gt;
Datei:21-fertig-geklebt-magnete-frontplatte.jpeg|Rückseite der Frontplatte nach der Klebebefestigung der vier 8 mm x 0.5 mm Magneten. Alle vier Magnete wurden in einem Arbeitsgang geklebt. Die Ausrichtung der Plexiglasscheibe erfolgte von Hand. Die Oberfläche wurde mit einem alten Handtuch geschützt und mit Gewicht beschwert, während der Kleber auspolymerisierte.&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Für die Befestigung der Frontplatte an der Zwischenplatte wurden im Forum schon einige Lösungen besprochen.&lt;br /&gt;
&lt;br /&gt;
Man kann die Frontplatte z. B. mit Magneten befestigen oder direkt auf die Zwischenplatte kleben.&lt;br /&gt;
&lt;br /&gt;
Als Kleber wird meist ein Zweikomponentenkleber auf Epoxidharzbasis verwendet (z. B. Uhu Plus Sofortfest, Uhu Plus schnellfest, Uhu Plus Endfest 300...), da dieser keine Lösungsmittel enthält, die Plexiglas oder die Tinte des Frontplattendrucks anlösen. Im Forum wird bemerkt, dass der Kleber dünn aber vollflächig aufgetragen wurde. &lt;br /&gt;
&lt;br /&gt;
Im Folgenden wird eine einfache Methode beschrieben, die Frontplatte mit Magneten zu befestigen.  Diese Methode hat den Vorteil, dass man die empfindliche Frontplatte abnehmen kann, wenn man an der Word Clock arbeitet. Die Magnete können ohne aufwendige Werkzeuge befestigt werden. &lt;br /&gt;
&lt;br /&gt;
Ich habe mich für runde Magnete entschieden, weil man diese mit einer einfachen Bohrung befestigen kann. Die Haftkraft von vier 8 mm x 4 mm Magneten reicht aus, die Plexiglas-Frontplatte sicher zu tragen. Ich habe die Haftkraft bewusst nicht überdimensioniert, da ich Bedenken habe, dass starke Magnete beim Abnehmen der Frontplatte die Farbschicht von der Plexiglasplatte beschädigen könnten. &lt;br /&gt;
&lt;br /&gt;
Ich verwende zwei Magnete. Der dickere Magnet wird in der Zwischenplatte versenkt. Der dünnere Magnet wird an die Frontplatte geklebt. Der dünnere Magnet hat den gleichen Durchmesser wie der dickere Magnet, er ist jedoch nur 0.5 mm dick. &lt;br /&gt;
&lt;br /&gt;
Ein wesentliches Argument für die Verwendung von zwei Magneten anstelle der im Forum beschriebenen Lösung “1 Magnet und eine angeklebte Beilagscheibe” ist die Positioniergenauigkeit. Bei meinen Versuchen mit der Kombination Metall + Magnet hatte ich immer das Problem, dass der Magnet leicht seitlich verschoben werden konnte. Dies ist bei der Kombination Magnet + Magnet nicht möglich. Der flache Magnet wurde ebenfalls bewusst ausgewählt. Der Grund ist, dass zwei aneinander haftende Magnete nur schwer in axialer Richtung getrennt werden können. Es ist dagegen relativ einfach, die beiden Magneten durch seitliche Verschiebung zu trennen. Um die Plexiglasscheibe mit angeklebten Magneten seitlich verschieben zu können, dürfen die Magnete, die auf das Plexiglas geklebt werden, nicht zu hoch sein. Da die Plexiglasplatte ohne Luftspalt bündig auf der Zwischenplatte aufliegen soll, muss der Platz für den 0.5 mm Magnet auf der Seite der Zwischenplatte geschaffen werden. &lt;br /&gt;
&lt;br /&gt;
Theoretisch müsste man für beide Magneten in die Zwischenplatte ein 8 mm Loch mit einer Tiefe von 0.5 mm + 4.0 mm = 4.5 mm bohren. Damit der 0.5 mm dicke Magnet durch Verschieben entfernt werden kann, wird der Rand der Bohrung so angeschrägt, dass der Magnet seitlich verschoben werden kann. &lt;br /&gt;
&lt;br /&gt;
Da ich keine Bohrständer habe, wurde die Bohrungen freihändig mit einem 8 mm Holzbohrer im Akkuschrauber ausgeführt. Mit Hilfe eines Klebestreifens wurde die ungefähre Bohrtiefe festgelegt. &lt;br /&gt;
Im Zentrum der 8 mm Sacklochbohrung wurde zusätzlich eine 2 mm Bohrung durch die Zwischenplatte angefertigt. In diese kann man von der Unterseite mit den 2 mm Bohrer stecken und bei Bedarf den Magneten wieder ausstoßen. Ursprünglich dachte ich, den 8 mm x 4 mm Magneten festkleben zu müssen. Die Passgenauigkeit war jedoch so gut, dass ich den 8 mm x 4 mm Magneten einfach in die Bohrung pressen konnten (mit Hilfe eines kleinen Hölzchens und eines kleinen Hammers). &lt;br /&gt;
&lt;br /&gt;
Der 8 mm x 0.5 mm Magnet wird gemeinsam mit dem 8 mm x 4 mm Magnet so in die Bohrung gepresst, dass seine Oberfläche mit der Zwischenplatte bündig abschließt. Anschließend wird der kleine Magnet mit einem spitzen Gegenstand (z. B. Taschenmesser) entfernt und der Rand abgeschrägt (Dremel und Schleifsteinchen bzw. Fräser). &lt;br /&gt;
&lt;br /&gt;
Vor der Klebebefestigung an der Plexiglasscheibe wird das Holz und der 8 mm x 4 mm Magnet mit einer dünnen Folie vor Kleberüberschuss geschützt. In meinem Fall habe ich Haushalts-Alu-Folie verwendet. Für die Klebung werden die 8 mm x 0.5 mm Magneten an dem fest gepressten 8 mm x 4 mm Magneten fixiert. Der Kleber wird dünn auf die Oberfläche des 8 mm x 0.5 mm Magneten aufgetragen, die Plexiglasscheibe korrekt positioniert und mit Hilfe von Gewichten während der Aushärtphase fixiert. Ich habe alle Magnete auf einmal geklebt. &lt;br /&gt;
&lt;br /&gt;
Die einzelnen Arbeitsschritte sind auf den Bildern zu erkennen.&lt;br /&gt;
&lt;br /&gt;
=== Bezugsquelle der Magnete ===&lt;br /&gt;
&lt;br /&gt;
Neotexx, Herweghstr. 11, 12487	Berlin ( http://www.neomagnete.com )&lt;br /&gt;
&lt;br /&gt;
Folgende Magnete wurden verwendet:&lt;br /&gt;
&lt;br /&gt;
* Cylinder 8x0.5 mm, Dimension: D8x0.5mm, NdFeB Magnet in N48 (1.42 Tesla), Magnetized Direction: through 0.5mm (axial), Coating: Nickel, item # Z-008-000.5-N &lt;br /&gt;
* Cylinder 8x4 mm, Dimension: D8x4mm, NdFeB Magnet in N48 (1.42 Tesla), Magnetized Direction: through 4mm, Coating: Nickel, item # Z-008-004-N&lt;br /&gt;
&lt;br /&gt;
Wer den Mindestbestellwert (10€) und die vergleichsweise hohen Versandkosten (5,50€) scheut, kann mir (User [http://www.mikrocontroller.net/user/show/Stoerte Stoerte]) eine PN-Schicken. Ich habe etwas großzügiger bestellt und würde die übrigen Magnete zu folgenden Paketen (Paket 2 für den Fall, dass man eine zweite Frontplatte zum Wechseln bestücken will) abgeben:&lt;br /&gt;
&lt;br /&gt;
* Paket 1: 4x D8x4mm + 4x D8x0.5mm = 4,50€ + 1,50€ Versand&lt;br /&gt;
* Paket 2: 4x D8x4mm + 8x D8x0.5mm = 6,00€ + 1,50€ Versand&lt;br /&gt;
&lt;br /&gt;
== Befestigung der Platinen ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
Datei:22-bueroklammer-pin.jpeg|Befestigungspin aus Büroklammerdraht.&lt;br /&gt;
Datei:23-led-streifen-mit-pins.jpeg|Die Pins werden in der Ausfräsung verkeilt und fixieren die LED-Streifenplatinen, können aber jederzeit wieder leicht gelöst werden.&lt;br /&gt;
Datei:24-min-platine-mit-pin.jpeg|Auch die Kabel und Minuten-LED-Platinen können mit Pins fixiert werden.&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
An der Zwischenplatte müssen folgende Komponenten befestigt werden:&lt;br /&gt;
&lt;br /&gt;
* Steuerelektronik&lt;br /&gt;
* LED-Platinen Word Clock&lt;br /&gt;
* LED-Platinen Ambilight&lt;br /&gt;
* Netzteil&lt;br /&gt;
* DCF77-Modul&lt;br /&gt;
* Kabel&lt;br /&gt;
&lt;br /&gt;
Die einfachste Lösung ist die Klebebefestigung mit Heißkleber oder einem anderen geeigneten Kleber. Die Klebemethode hat jedoch den Nachteil, dass die Klebung nicht so leicht wieder gelöst werden kann. Aus diesem Grund wurde eine reversible Alternative gesucht. &lt;br /&gt;
&lt;br /&gt;
Die vorgeschlagene Methode wirkt zwar auf den ersten Blick nicht sehr professionell, funktioniert aber sehr gut. So musste ich einige Male Korrekturen an den LED Platinen vornehmen, weil sich z. B. bei meinen „Manipulationen“ Kabel gelöst haben. &lt;br /&gt;
&lt;br /&gt;
Die Lösung ist relativ einfach. Ein harter Draht (in meinem Fall 0,8 mm dicker Federdraht, wird z. B. bei Kieferorthopäden verwendet, als Alternative kann man aber auch Büroklammerdraht verwenden) wird etwas länger abgezwickt, als die Ausfräsung für die Platine oder die Kabel ist. Der Draht kann in die relativ weiche MDF Platte so verkeilt werden, dass die Platine oder Kabel gut halten. Es ist sinnvoll, den Draht an beiden Enden abzuzwicken. Dadurch entstehen zwei scharfe Enden, die sich leichter im MDF verankern lassen. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
Datei:25-dcf-77-geklebt.jpeg|DCF-77 Modul und Ferritantenne. Befestigung mit Heisskleber.&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Als Befestigung für die Ambilight-LED Streifen sowie  das DCF-77 Modul habe ich leider keine bessere Lösung gefunden, als die Befestigung mit Heißkleber. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
Datei:26-netzteil.jpeg|&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die Steuerplatine wird durch die angeschlossenen Kabel sicher in ihrer Position gehalten. &lt;br /&gt;
&lt;br /&gt;
Das modifizierte Conrad-Netzteil hält durch Klemmpassung in der Aussparung. Achtung: an der Unterseite der Platine liegen die 220 V Anschlüsse frei. Das ist kein Problem, sobald die Uhr an der Wand befestigt ist. Um sicherzustellen, dass niemand aus Versehen die Platine von der Seite berühren kann, wurde das Oberteil des Gehäuses als Berührschutz belassen. Beachten Sie dies bitte bei der Montage. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
Datei:27-uhr-wand-mit-ambilight.jpeg|&lt;br /&gt;
Datei:28-uhr-wand-ohne-ambilight.jpeg|&lt;br /&gt;
Datei:29-uhr-wand-schraeg-1.jpeg|&lt;br /&gt;
Datei:30-uhr-wand-schraeg-2.jpeg|&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Diese Lösung ist nur von Relevanz, wenn die Stromversorgung direkt hinter der Uhr möglich ist. Dann sieht die Lösung allerdings sehr elegant aus:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
Datei:31-netzteil-1.jpeg|&lt;br /&gt;
Datei:32-netzteil-2.jpeg|&lt;br /&gt;
Datei:33-netzteil-3.jpeg|&lt;br /&gt;
Datei:34-netzteil-4.jpeg|&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Als Vorbereitung musste das Netzteilgehäuse geöffnet werden. Folgende Bilder zeigen den Innenaufbau und sollen so das Öffnen des Gehäuses erleichtern helfen. Das Gehäuse ist fest verklebt. Der Kleber kann nicht aufgesprengt werden (vielleicht würde es gehen, wenn man den Kleber mit einer Heißluftpistole ausreichend erwärmen würde ?). Ich habe mich für die Lösung entschieden, das Gehäuse entlang der Klebenaht mit einer Puk-Metallsäge aufzusägen, da ich noch nicht wusste, wie das Netzteil aufgebaut ist. Heute würde ich nur noch die Steckerpins absägen. Als Alternative zu dieser brachialen Methode habe ich geprüft, ob man ein Netzteil selbst bauen könnte. Ich bin aber zu den Schluss gekommen, dass es nicht wirklich möglich ist, ein eigenes Netzteil so preiswert und auch so klein wie das Conrad-Netzteil zu bauen.&lt;br /&gt;
&lt;br /&gt;
== Verkabelung ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
Datei:35-starre-draehte.jpeg|Für den ersten Versuch hatte ich Einzelader-Schaltdraht direkt auf die LED-Streifen gelötet. Leider neigte der Schaltdraht dazu, an den ungünstigsten Stellen zu brechen, wenn ich die Platinen bewegte, was allein schon zum Löten erforderlich war. &lt;br /&gt;
Datei:36-fliegender-aufbau.jpeg|Fliegender Aufbau... für den ersten Systemtest.&lt;br /&gt;
Datei:37-stecker-an-led-platine.jpeg|Erst die Verwendung von abgewinkelten Steckverbindern (Stiftleiste RM 2,54, gewinkelt Rastermaß: 2.54 mm, in Kombination mit der passenden Buchsenleiste RM 2,54 Rastermaß: 2.54 mm, Alternative: Stiftleiste RM 2,54, gewinkelt Rastermaß: 2.54 mm Polzahl: 3, 72645 BKL Electronic) vereinfachte die Montage der RGB-Verbindungen drastisch. &lt;br /&gt;
Datei:38-verkabelung-1.jpeg|Zusätzlich zu den Steckverbindern wurden keine starren Einzelkabel mehr verwendet, sondern flexible Drähte (bei mir: recycelte IDE-Festplattenkabel, alternativ: Flachbandkabel, RM 1,27; Polzahl: 50, 0.09 mm², Grau Sterner Kabel, ich werde beim nächsten Mal dieses Kabel testen: Flachbandkabel 3 x 0.14 mm², Gelb, Rot, Grün,  Sterner Kabel, Conrad Best.-Nr.: 605819 - 62).&lt;br /&gt;
&lt;br /&gt;
Auch für die Anschlüsse der Kabel von den Buchsensteckern K7 und K8 an die LED-Streifenplatinen waren die Steckverbinder sehr hilfreich. Die Einzelstecker habe ich, weil ich keine Alternativen hatte/kannte, von Buchsenleisten abgetrennt, was doch recht aufwendig war. Kennt jemand eine professionellere Lösung (Name, Bezugsquelle?)&lt;br /&gt;
Datei:39-verkabelung-2.jpeg|Sobald die Funktion erfolgreich getestet wurde, können die Kabel eingekürzt und schöner verlegt werden. Eigentlich wollte ich das Klebeband durch Heisskleber ersetzen. Aber nichts ist bekanntlich beständiger als ein Provisorium.&lt;br /&gt;
Datei:40-ir-und-ldr.jpeg|Der LDR und der Infrarot-Empfänger werden an der Unterseite der Word Clock auf leeren Plätzen der Amibilight-Platine befestigt. Für den IR-Empfänger reicht doppelseitiges Klebeband, der LDR kann mit einfachem Klebeband an den Beinchen fixiert werden. &lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
P.N. (http://www.mikrocontroller.net/topic/156661#2511143) hat eine elegante Lösung zur Befestigung des LDR und TSOP vorgeschlagen:&lt;br /&gt;
&lt;br /&gt;
&amp;quot;- Der TSOP sitzt bei mir hinter dem &amp;quot;S&amp;quot; (&amp;quot;WACHTZEHNRS&amp;quot;) und ist direkt&lt;br /&gt;
auf diese Streifenplatine eingelötet. Davor habe ich natürlich die&lt;br /&gt;
PWM-Leiterbahnen des letzten Feldes durchtrennt und die 3 Beinchen auf&lt;br /&gt;
Stiftleisten am Ende der Platine geroutet. Geht bei dem Layout ganz gut.&lt;br /&gt;
Der IR-Empfang ist auch durch die Frontplatte einwandfrei&lt;br /&gt;
&lt;br /&gt;
- Der LDR sitzt hinter dem &amp;quot;M&amp;quot; (&amp;quot;TGNACHVORJM&amp;quot;) und wurde ebenso an der&lt;br /&gt;
Steifenplatine befestigt und auf eine Stiftleiste gelegt. Zusätzlich hat&lt;br /&gt;
er noch einen &amp;quot;Schirm&amp;quot; aus einer Lochrasterplatine gegen Streulicht von&lt;br /&gt;
angrenzenden Buchstaben erhalten&amp;quot;&lt;br /&gt;
&lt;br /&gt;
== Wandbefestigung der Uhr ==&lt;br /&gt;
&lt;br /&gt;
[[Datei:41-spiegelblech-1.jpeg|miniatur|Minimal Montageset: Exzenterscheiben (oben), Spiegel-Haftmagnet (links und rechts aussen), Haftblech mit Kieme]]&lt;br /&gt;
[[Datei:42-spiegelblech-2.jpeg|miniatur|Das Haftblech mit Kieme wird mit der Metallsäge getrennt und Bohrungen zur Befestigung mit Schrauben werden ergänzt (rechts Original, links Modifikation)]]&lt;br /&gt;
[[Datei:43-spiegelhalterung-montiert.jpeg|miniatur|Fertig montierte Haftbleche]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Die Word Clock kann wie jedes Bild an der Wand befestigt werden. Eine elegante, bewährte und gut funktionierende Variante stellt die Befestigung mit einer sog. Spiegelbefestigung mit Haftmagneten dar. Die Komplettsets sind meist ziemlich teuer und die Befestigungsbleche sind für die Word Clock viel zu groß. &lt;br /&gt;
&lt;br /&gt;
Eine preisgünstige Lösung findet man bei:&lt;br /&gt;
&lt;br /&gt;
Leha-Technik&amp;lt;br/&amp;gt;&lt;br /&gt;
Burger Straße 63 A&amp;lt;br/&amp;gt;&lt;br /&gt;
42859 Remscheid&amp;lt;br/&amp;gt;&lt;br /&gt;
[http://www.leha.de www.leha.de]&lt;br /&gt;
&lt;br /&gt;
Hier kann man die Einzelkomponenten kaufen. Wichtig sind nur die Exzenterscheiben (2 Stück), die Haftmagneten (2 Stück) und die Haftbleche mit Kieme (2 Stück). Die Schrauben und Dübel sollten sich in der Bastelkiste finden (ich habe 6er Dübel, mit 4 x 50 mm Schrauben verwendet). Die Exzenterscheiben haben einen entscheidenden Vorteil. Wenn der Bohrer etwas verläuft oder wenn schon die Messung ungenau ist, kann man die Befestigung mit der Exzenterscheibe immer noch schön waagerecht ausrichten. &lt;br /&gt;
&lt;br /&gt;
Theoretisch könnte man auf die Magneten verzichten. In meinem Fall war jedoch hinter der Uhr eine Stromversorgung und die Kabel waren etwas steifer als gewünscht. Das hatte zur Folge, dass die Uhr von den Kabeln von der Wand abgehoben wurde und somit leicht schräg stand. Die Magneten haben dieses Problem sehr elegant gelöst. &lt;br /&gt;
&lt;br /&gt;
Das Haftblech mit Kieme wurde mit einer Eisensäge geteilt. Der Teil mit der Kieme ist mit 2.5 cm breit genauso breit, wie der Steg für die Befestigung. Da ich im Zusammenhang mit MDF kein Vertrauen zu dem Kleber hatte, wurden zwei Bohrungen ergänzt (3,5 mm Metallbohrer, improvisiertes Versenken der Schrauben mit einem 6 mm Metallbohrer, ich habe keinen speziellen Versenkbohrer). Das Blech wurde dann geklebt und mit 3 x 20 mm Spax-Schrauben befestigt. Die MDF Platte wurde vorher mit einem 2 mm Bohrer vor gebohrt. &lt;br /&gt;
&lt;br /&gt;
Der untere, abgetrennte Teil des Haftbleches wurde für den Magneten verwendet. Seine Breite passte ebenfalls perfekt zu den Befestigungsstegen. Auch diese Bleche wurden zusätzlich mit Schrauben befestigt.&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
! Anzahl x VPE !! Artikel !! Art.Nr.&lt;br /&gt;
|-&lt;br /&gt;
| 2 x Stück || Haftblech, mit Kieme - 70 x 70 mm (selbstklebend) 3 kg || 5208608&lt;br /&gt;
|-&lt;br /&gt;
| 2 x Stück || Spiegel-Haftmagnet || 5208601&lt;br /&gt;
|-&lt;br /&gt;
| 2 x Stück || Exzenterscheibe || 5208602&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
= Das erste Mal einschalten =&lt;br /&gt;
&lt;br /&gt;
=== LED-Streifen ===&lt;br /&gt;
&lt;br /&gt;
Nach dem Verlöten aller Bauteile der LED-Streifen sollten diese vor dem endgültigen Verbau noch geprüft werden:&lt;br /&gt;
&lt;br /&gt;
# Prüfung der drei PWM-Kanäle und der Steuerleitungen auf gegenseitige Kurzschlüsse&lt;br /&gt;
# Funktionsprüfung der LED-Streifen mittels direkter Versorgung durch ein Netzteil (PWM R/G/B an GND, OUT an 13.6V): Hierbei nacheinander die einzelnen Farben der jeweiligen Wörter anschließen und ggf. nacharbeiten, falls es &#039;mal dunkel bleiben sollte&lt;br /&gt;
&lt;br /&gt;
-&amp;gt; &amp;quot;Beginner-Tipp&amp;quot;: Die mangelhaften Lötstellen findet man am besten, wenn man mit dem Diodentest des Multimeters die Lötpunkte der angrenzenden LEDs berührt&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Steuerplatine ===&lt;br /&gt;
&lt;br /&gt;
Wenn alle Bauteile verlötet sind, sollten zur ersten Prüfung alle Sockel noch leer bleiben. Wer ein entsprechendes Netzteil hat, sollte den Strom auf ca. 50mA begrenzen. Wer dies nicht kann, sollte wenigstens ein (im Regelfall auf 200mA) abgesichertes Netzteil dazwischen schalten. Zum Bestücken der einzelnen Bauteile sollte stets die Spannungsversorgung unterbrochen werden.&lt;br /&gt;
&lt;br /&gt;
# Prüfen der Spannungsversorgung auf Kurzschluss&lt;br /&gt;
# Anlegen der Versorgungsspannung, am Spannungsregler sollten nun 5V anliegen. Tipp: Minus ist ganz außen, Plus ist die zweite Befestigung von außen. Kann man anhand der Unterseite der Platine kontrollieren. Im Schaltplan ist das bei der Belegung von KL1 nicht eindeutig zu erkennen!&lt;br /&gt;
# µC bestücken, die Stromaufnahme sollte nun knapp 20mA betragen&lt;br /&gt;
# Erst Fuses programmieren, dann Software flashen&lt;br /&gt;
# RTC, Schieberegister (74HCT595) und Treiber (ULN) einsetzen&lt;br /&gt;
# LED-Streifen anschließen&lt;br /&gt;
# Wenn alles funktioniert, dann blinken die 4 Minuten-LEDs nach dem Einschalten rund 5-6 mal gleichzeitig auf. Zu der Zeit fängt die RealTimeClock an zu ticken&lt;br /&gt;
# Während des Blinkens kann nun auch eine (beliebige) Taste auf der Fernbedienung gedrückt werden, und deren Anlernprozess gestartet werden (-&amp;gt; s. Manual). Für den Funktionstest muss keine dauerhafte Tastenbelegung gewählt werden, dies kann jederzeit nachgeholt werden.&lt;br /&gt;
# Wenn die FB angelernt ist, dann gibt es eine Taste, mit der alle Ausgänge (das heißt alle Wörter) nacheinander geschaltet werden (&amp;quot;Demo-Modus&amp;quot;). Den Demo-Modus kann man verlassen, in dem ein anderer Modus aktiviert wird. Drückt einfach im Anschluss an den Demo-Modus die Taste &amp;quot;Einfarb-/Modus/Farbprofile aktivieren&amp;quot;.&lt;br /&gt;
# Mit der Fernbedienung und der Uhr spielen ... :o)&lt;br /&gt;
# Nun kann das DCF-Modul angeschlossen werden (wenn möglich, per UART den DCF-Status loggen). Nach einiger Zeit (mehrere Minuten!) sollte die Uhr die aktuelle Zeit anzeigen, sofern auf der DCF-Seite alles klappt.&lt;br /&gt;
&lt;br /&gt;
Wenn eine Fernbedienung angelernt werden soll, dann musst man, während alle 4 Minuten-LEDs blinken, irgendeine Taste auf der Fernbedienung drücken. Wird die FB erkannt, dann hört das Blinken auf und die &amp;quot;eins&amp;quot; leuchtet. Jetzt musst man die Taste drücken, die zum Ein-/Ausschalten der Uhr verwendet werden soll. Als nächstes leuchtet die &amp;quot;zwei&amp;quot; usw..... --&amp;gt; Mehr dazu siehe Handbuch&lt;br /&gt;
&lt;br /&gt;
Sollte nach dem &amp;quot;Neustart&amp;quot; der Uhr keine LED mehr leuchten, KEINE PANIK... es kann sein, dass einfach die &amp;quot;Helligkeit&amp;quot; der LEDs so gering ist, dass Ihr sie einfach nicht seht.&lt;br /&gt;
&lt;br /&gt;
Tipp fürs erste Anlernen der FB: Einfach alle Tasten stur der Reihe nach durchdrücken. Dann kann man durch Zählen und Vergleichen mit der Tabelle im Handbuch solange &amp;quot;überleben&amp;quot;, bis man die Muse hatte, eine sinnvolle Belegung zu überlegen und auch zu dokumentieren!&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
= Abstimmungen =&lt;br /&gt;
Eine Stimme ist ein Strich. Nach 5 Strichen bitte ein Leerzeichen einfügen.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== offen: ==&lt;br /&gt;
IR-FB Anlernphase deaktivierbar (Default / keine FB angelernt: anlernen aktiv): | &amp;lt;br&amp;gt;&lt;br /&gt;
ethernet ntp client: ||||| ||||| ||||| || &amp;lt;br&amp;gt;&lt;br /&gt;
Bewegungsmelder: ||||| ||||| ||||| ||||| ||||| ||||| ||||&amp;lt;br&amp;gt;|&lt;br /&gt;
IR zum PC für Kommunikation/Bootloader |&amp;lt;br&amp;gt;&lt;br /&gt;
RFM12 für Kommunikation/Bootloader |||&amp;lt;br&amp;gt;&lt;br /&gt;
NTP Server (um eine genaue Zeit ins Netzwerk zu verteilen) |||&amp;lt;br&amp;gt;&lt;br /&gt;
Beim Start, alle LEDs einmal der Reihe nach Durchlaufen lassen zum Funktionstest (statt &amp;quot;Volldampfmodus&amp;quot;): ||||| ||||| ||||| || &amp;lt;br&amp;gt;&lt;br /&gt;
Ton zur vollen Stunde (Beep/Piezo): ||||| ||&amp;lt;br /&amp;gt;&lt;br /&gt;
ZBus (Ethersex) zum einstellen der Uhr über das Netzwerk, evt holen der Zeitdaten über ZBus von einem Zeitserver: || &amp;lt;br /&amp;gt;&lt;br /&gt;
zeitgesteuert Dunkelschalten wochentagsweise: ||||| ||||&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== bereits umgesetzt: ==&lt;br /&gt;
DCF: ||||| ||||| ||||| ||||| ||||| ||||| ||||| ||||| |||| &amp;lt;br&amp;gt;&lt;br /&gt;
IR für Fernbedienung: ||||| ||||| ||||| || &amp;lt;br&amp;gt;&lt;br /&gt;
Ambilight: ||||| ||||| ||||| ||||| |||| &amp;lt;br&amp;gt;&lt;br /&gt;
zeitgesteuert Dunkelschalten (z.&amp;amp;nbsp;B. nachts &amp;quot;Aus&amp;quot;): ||||| ||||| ||||| &amp;lt;br&amp;gt;&lt;br /&gt;
Bluetooth: || (Posting: [http://www.mikrocontroller.net/topic/156661?goto=1710183#1710183 Bluetooth mit Debug, Bootloader und Autoreset])&amp;lt;br&amp;gt;&lt;br /&gt;
Möglichkeit, Zeiteinstellmodus bei &amp;quot;0 Minuten&amp;quot; von Normalmodus zu unterscheiden z.B. blinkendes &amp;quot;UHR&amp;quot; |||||&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;quot;ES IST&amp;quot; soll man ein- oder ausschalten können: ||||| |&amp;lt;br&amp;gt;&lt;br /&gt;
Bluetooth per FB ein-/ausschalten: ||&amp;lt;br&amp;gt;&lt;br /&gt;
Taste &amp;quot;Speichern&amp;quot; auf FB statt automatisch |||(On Off speichert)&amp;lt;br&amp;gt;&lt;br /&gt;
kurzzeitiger &amp;quot;Volldampf-Modus&amp;quot; (alle Wörter an für bspw. 30sek): ||||| |||  - als Submodus des Demomodus, multiplexing, jeweils ein Kanal an jedem Treiber aktiv&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== An/Ausschalt-Logik ==&lt;br /&gt;
A: Manuell ausgeschaltete Uhr bleibt aus bei Erreichen der Einschaltzeit - hier könnte natürlich gleich der Stecker gezogen werden, sofern die Uhr nicht festeingebaut ist&lt;br /&gt;
&lt;br /&gt;
B: Manuell ausgeschaltete Uhr geht wieder an bei Erreichen der Einschaltzeit&lt;br /&gt;
&lt;br /&gt;
C: Es gibt eine OFF-Taste und eine STANDBY-Taste. Bei STANDBY schaltet sich die Uhr bei Erreichen der Einschaltzeit wieder ein, bei OFF bleibt sie aus.&lt;br /&gt;
&lt;br /&gt;
D: Die Variante A oder B lässt sich vor dem Kompilieren der Software als define individuell nach eigenem Gutdünken festlegen. (Viele andere Werte sind bereits heute so einstellbar in der SW)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A Strichliste: |&lt;br /&gt;
&lt;br /&gt;
B Strichliste: |||  &lt;br /&gt;
&lt;br /&gt;
C Strichliste: |||||  ||||| |||||&lt;br /&gt;
&lt;br /&gt;
D Strichliste: ||||&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&#039;&#039;&#039;Zurück zum Hauptartikel: [[Word Clock]]&#039;&#039;&#039;&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Timer und Uhren]]&lt;br /&gt;
[[Kategorie:AVR-Projekte]]&lt;br /&gt;
[[Kategorie:DCF77]]&lt;/div&gt;</summary>
		<author><name>Promeus</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=Mcruler&amp;diff=79442</id>
		<title>Mcruler</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=Mcruler&amp;diff=79442"/>
		<updated>2013-11-07T19:40:24Z</updated>

		<summary type="html">&lt;p&gt;Promeus: /* Vorbestellungen */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Infos ==&lt;br /&gt;
&lt;br /&gt;
Hier soll eine Community Variante eines Lineals entstehen, nach Vorbild des µRuler von EEVBlog/Dave Jones:&lt;br /&gt;
&lt;br /&gt;
[[Datei:uRuler.jpg|1200px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Aktueller Stand:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
[https://raw.github.com/maugsburger/ucruler/master/ucruler_top.png]&lt;br /&gt;
[https://raw.github.com/maugsburger/ucruler/master/ucruler_bot.png]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Thread im Forum:&#039;&#039;&#039; http://www.mikrocontroller.net/topic/313642&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Projekt-Seite auf GitHub:&#039;&#039;&#039; https://github.com/maugsburger/ucruler&lt;br /&gt;
&lt;br /&gt;
== Spezifikationen ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| Maße             || 200 x 27 mm&lt;br /&gt;
|-&lt;br /&gt;
| PCB              || 0.8mm FR4 2-Layer 35µ (0.5mm?)&lt;br /&gt;
|-&lt;br /&gt;
| Oberfläche       || gold (ENIG)&lt;br /&gt;
|-&lt;br /&gt;
| Lötstop          || beidseitig, Farbe TBD&lt;br /&gt;
|-&lt;br /&gt;
| Bestückungsdruck || beidseitig, weiß&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Preise&#039;&#039;&#039;     || ca. 2 € / MOQ: 5 Stück&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Farbe des Lötstopplackes ==&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
grün    |&lt;br /&gt;
gelb    |&lt;br /&gt;
schwarz |++++++&lt;br /&gt;
weiß    |+&lt;br /&gt;
rot     |+++++++&lt;br /&gt;
blau    |+++&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
einfach bitte ein Plus hinter die Farbe die euch als Lötstoplack am besten gefallen würde.&lt;br /&gt;
&lt;br /&gt;
== Anpassungen/Ergänzungen ==&lt;br /&gt;
&lt;br /&gt;
Bitte einfach ein + oder - ergänzen oder gar nichts eintragen (wichtig, brauch ich nicht, egal), so dass am Ende ein Stimmungsbild entsteht. Daraus ergeben sich dann Prioritäten, in deren Reihenfolge der Platz aufgefüllt wird.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
! Name !! Wertung !! Beschreibung&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Formelsamlung&lt;br /&gt;
||&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
+| +++++&lt;br /&gt;
-| ---&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
Vllt. könnte man auch ein paar Formeln unterbringen die oft verwendet werden und trotzdem gerne vergessen werden&lt;br /&gt;
&lt;br /&gt;
Vorschläge [[Mcnet-ruler#Vorschl.C3.A4ge_f.C3.BCr_Formelsammlung|siehe unten]].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|  Leiterbahnstärken &lt;br /&gt;
||&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
1| +&lt;br /&gt;
2| ++++++++++++&lt;br /&gt;
3|&lt;br /&gt;
4|&lt;br /&gt;
5|&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
Bitte genau eine Möglichkeit mit + wählen:&lt;br /&gt;
# Bahnen in mm und mil, beschriftet in mm und mil&lt;br /&gt;
# Bahnen in mm, beschriftet in mm und mil&lt;br /&gt;
# Bahnen in mil, beschriftet in mm und mil&lt;br /&gt;
# Bahnen in mm, beschriftet in mm&lt;br /&gt;
# Bahnen in mil, beschriftet in mil&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|  Inches in mm &lt;br /&gt;
||&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
+| +++++++++++++++&lt;br /&gt;
-|&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
Bitte generell Inches in mm umrechnen.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|  Layout/Textfluss  mm/inch &lt;br /&gt;
||&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
+|+ &lt;br /&gt;
-|&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
Die Umrechnungstabelle mm/inch in den Textfluss drehen.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|  Isolationsabstände &lt;br /&gt;
||&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
+| ++++++++++++++++++&lt;br /&gt;
-|&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
Die Tabelle für Isolationsabstände (Luft-/Kriechstrecken) ggf. an  in Deutschland geltende Normen anpassen.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|  Kabel-Widerstände &lt;br /&gt;
||&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
+| ++++++++++&lt;br /&gt;
-| ---&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
Wenn noch Platz ist, wäre eine Tabelle für Kabel-Widerstände gut (sortiert nach gängigen Querschnitten, pro m oder 10m Kabellänge).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|  Widerstands-Farbcode-Tabelle &lt;br /&gt;
||&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
+| +++++++++++&lt;br /&gt;
-| ----------&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
Rückseite Widerstands-Farbcode-Tabelle&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|  LM317 &lt;br /&gt;
||&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
+| ++++&lt;br /&gt;
-| ------------&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
Tabelle für LM317-Widerstandswerte&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|  Kapazitäts-/Induktivitätsbelag &lt;br /&gt;
||&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
+|++++ &lt;br /&gt;
-|---&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
Tabellen zum Kapazitäts-/Induktivitätsbelag von Leiterbahnen&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|  Wellenwiderstände &lt;br /&gt;
||&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
+|++++&lt;br /&gt;
-|----&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
Richtwerttabellen für Wellenwiderstände, Micro Striplines (insbes. für USB/Ethernet Routing), etc. auf gängigen PCBs&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|  Wechselstrom Ueff, Upp &lt;br /&gt;
||&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
+| ++&lt;br /&gt;
-| -----------&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
Wenn immer noch Platz ist: Tabelle zur Umrechnung von Wechselstromgrößen (Ueff, Upp für gängige Trafowicklungen, 110V, 230V, 240V, 400V, 600V)&lt;br /&gt;
&lt;br /&gt;
Anm.: Sinnvoll für gängige Elko-Spannungen 16VDC, 25VDC, 50VDC, 63VDC, 80VDC.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|  f/T-Umrechnung &lt;br /&gt;
||&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
+| ++++&lt;br /&gt;
-| --------&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
Und wenn dann noch Platz wäre: Tabelle mit f und T für gängige µC-Frequenzen und Samplingraten&lt;br /&gt;
&lt;br /&gt;
Anm.: Sinnvoll und platzsparend, wenn wie vorgeschlagen für einige wenige gängige Werte (z.B. &amp;quot;8 MHz / 125 ns&amp;quot; und &amp;quot;48 kHz / 20,8 µs&amp;quot;).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|  PCB-Kühlkörper &lt;br /&gt;
||&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
+| ++++++++++++&lt;br /&gt;
-| -&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
Was auch interessant waere ist eine Tabelle fuer Leiterplattenkuehlkoerper. K/W pro cm² für div. Kupferstärken!&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|  SMD-Footprints R &lt;br /&gt;
||&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
+| ++++++++++++++++++++&lt;br /&gt;
-|&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
Die Idee mit den SMD Footprints auf der Rückseite finde ich auch sehr gut.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|  SMD-Größen R &lt;br /&gt;
||&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
+| ++++++++++&lt;br /&gt;
-| &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
Eine Tabelle mit den Größen (im Sinne von Maßen) von SMD Widerständen ist auch manchmal ganz gut.&lt;br /&gt;
Anm.: Vorschlag Widerstandsreihe siehe unten.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|  SMD-Footprints ElKo &lt;br /&gt;
||&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
+| +++++++++++++++++&lt;br /&gt;
-|&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
Zudem wäre der Footprint von SMD Elkos wenn möglich auf der Rückseite auch ganz praktisch&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|  SMD-Größen Elko &lt;br /&gt;
||&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
+| ++++++++++++++&lt;br /&gt;
-| &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
Eine Tabelle mit den Größen (im Sinne von Maßen) von SMD Elkos ist auch manchmal ganz gut.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|  E-Reihen &lt;br /&gt;
||&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
+| +++++++&lt;br /&gt;
-| ----&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
Abdruck der E24-Reihe mit Markierungen für E12, E6.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|  TQFP, SOP und SOT Footprint &lt;br /&gt;
||&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
+| +++++++++++&lt;br /&gt;
-| -&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
Der Footprint von TQFP, SOT und SOP Bauteilen auf der Rückseite könnte sich auch als nützlich erweisen&lt;br /&gt;
&lt;br /&gt;
Vorschläge für Footprints [[Mcnet-ruler#Vorschl.C3.A4ge_f.C3.BCr_Footprints|siehe unten]].&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|  THT Lochreihe &lt;br /&gt;
||&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
+| +++++&lt;br /&gt;
-| ----&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
Ebenso eine kurze Lochreihe im 2,54mm-Raster für THT.&lt;br /&gt;
&lt;br /&gt;
Anm.: Bitte eine lange Lochreihe ähnlich wie von [http://www.mikrocontroller.net/topic/313642#3389830 Chris gezeigt].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|  Kleines Namensfeld &lt;br /&gt;
||&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
+| +++++++++++++&lt;br /&gt;
-|-&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
Damit die Lineale nicht &amp;quot;verschwinden&amp;quot;, zum selbst beschriften.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|  Tabelle Leitfähigkeit/spezifischer Widerstand &lt;br /&gt;
||&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
+| +++&lt;br /&gt;
-| ---&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
Eine Tabelle mit der Leitfähigkeit/spezifischer Widerstand von zb. Kufer, Aluminium, Eisen ...&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|  Temperaturkoeffizent &lt;br /&gt;
||&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
+| ++&lt;br /&gt;
-| ---&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
Eine Tabelle mit den Temperaturkoeffizenten (alpha in 1/k) von zb. Kufer, Aluminium, Eisen ...&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Vorschläge für Formelsammlung ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
! Name !! Wertung !! Beschreibung&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| C/L &lt;br /&gt;
||&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
+| +&lt;br /&gt;
-|&lt;br /&gt;
&amp;lt;/pre&amp;gt; &lt;br /&gt;
||&lt;br /&gt;
http://upload.wikimedia.org/math/d/5/5/d550b39c146790974bae8a9a2e1830fb.png&lt;br /&gt;
&lt;br /&gt;
http://upload.wikimedia.org/math/0/9/a/09ab806c34320b749ddadca35a32fc8a.png&lt;br /&gt;
&lt;br /&gt;
http://de.wikipedia.org/wiki/Elektrische_Kapazit%C3%A4t#Kapazit.C3.A4t_bestimmter_Leiteranordnungen&lt;br /&gt;
&lt;br /&gt;
http://de.wikipedia.org/wiki/Induktivit%C3%A4t#Induktivit.C3.A4t_einer_Zylinderspule&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Eckfrequenz RC-Glied HP/LP &lt;br /&gt;
||&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
+| +&lt;br /&gt;
-| -&lt;br /&gt;
&amp;lt;/pre&amp;gt; &lt;br /&gt;
||&lt;br /&gt;
http://upload.wikimedia.org/math/5/d/1/5d1295e236a3c860416fbdb9940fb043.png&lt;br /&gt;
&lt;br /&gt;
http://de.wikipedia.org/wiki/RC-Glied#Tiefpass&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| I(t) / U(t) für C/L &lt;br /&gt;
||&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
+| ++&lt;br /&gt;
-|&lt;br /&gt;
&amp;lt;/pre&amp;gt; &lt;br /&gt;
||&lt;br /&gt;
http://upload.wikimedia.org/math/0/b/9/0b93b4a1ce2832629d42509b43184894.png&lt;br /&gt;
&lt;br /&gt;
http://upload.wikimedia.org/math/9/e/6/9e6ea02a73a08f263454786c1c9d7e44.png&lt;br /&gt;
&lt;br /&gt;
http://de.wikipedia.org/wiki/Zeitkonstante#Kondensator&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Wärmewiderstand  &lt;br /&gt;
||&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
+| +&lt;br /&gt;
-|&lt;br /&gt;
&amp;lt;/pre&amp;gt; &lt;br /&gt;
||&lt;br /&gt;
http://upload.wikimedia.org/math/8/7/b/87b98460f0867373471f540167591ebb.png&lt;br /&gt;
&lt;br /&gt;
http://de.wikipedia.org/wiki/W%C3%A4rmewiderstand#Definition&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Vorschläge für Footprints ==&lt;br /&gt;
&lt;br /&gt;
Vorschläge für Footprints auf der Rückseite. Es werden die Pads in Kupfer ausgeführt (also theoretisch lötbar), der Rand des Bauteils im Bestückungsdruck.&lt;br /&gt;
&lt;br /&gt;
* SC-70&lt;br /&gt;
* SOT-23-6&lt;br /&gt;
* SOT-89&lt;br /&gt;
* SOT-23&lt;br /&gt;
* SOT-223&lt;br /&gt;
* TO-252 / DPAK&lt;br /&gt;
* TO-263 / D2PAK&lt;br /&gt;
* SMA / DO-214AC&lt;br /&gt;
* SMB / DO-214AA&lt;br /&gt;
* SMC / DO-214AB&lt;br /&gt;
* Melf&lt;br /&gt;
* MiniMelf&lt;br /&gt;
* MicroMelf&lt;br /&gt;
* PLCC-4 / 3528&lt;br /&gt;
* PLCC-6 / 5050&lt;br /&gt;
* SOIC-24&lt;br /&gt;
* SSOP-24&lt;br /&gt;
* TSSOP-24&lt;br /&gt;
* TQFP32, 0.8mm Pitch&lt;br /&gt;
* TQFP48, 0.5mm Pitch&lt;br /&gt;
* QFN32, 0.5mm Pitch&lt;br /&gt;
&lt;br /&gt;
== Vorbestellungen ==&lt;br /&gt;
Interessenten tragen sich bitte &#039;&#039;&#039;am Ende der Liste ein und aktualisieren den Zwischenstand&#039;&#039;&#039;!&lt;br /&gt;
&lt;br /&gt;
Mindestbestellmenge ist nach aktuellem Stand 5 Stück.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
10  Dominik S. (dasd)&lt;br /&gt;
 5  Dennis X. (debegr92) &lt;br /&gt;
 2  Arne M. (armut) &lt;br /&gt;
 3  Benedikt K. (benek) &lt;br /&gt;
 5  AVR (Gast) &lt;br /&gt;
 5  Jürgen (Gast) &lt;br /&gt;
 5  Uwe ... (uwegw) &lt;br /&gt;
15  Rene H. (promeus) &lt;br /&gt;
 5  hum (Gast) &lt;br /&gt;
 3  Werner A. (homebrew) &lt;br /&gt;
 2  Frank Werner (wesoft)&lt;br /&gt;
 5  Jan B. (diphthong) &lt;br /&gt;
 5  Thomas J. (tom16) &lt;br /&gt;
10  Felix Schulze (pepe) &lt;br /&gt;
 3  Patrick Berninghaus (patricck) &lt;br /&gt;
 5  B. B. (morgenmuffel) &lt;br /&gt;
 5  Bernd D. (bernd_d56)&lt;br /&gt;
 5  Daniel (Gast) &lt;br /&gt;
 5  Jan Dressler (keyman) &lt;br /&gt;
 3  Gerd E. (robberknight) &lt;br /&gt;
10  Ralf Engelhardt (r_e)&lt;br /&gt;
 5  D. S. (compuvidy) &lt;br /&gt;
 5  Michael R. (elektr-hobbyist) &lt;br /&gt;
 5  Samuel Hildebrandt (musicsammy) &lt;br /&gt;
 5  Martin H. (marrtn) &lt;br /&gt;
 5  Michael Becker (mich_at_el) &lt;br /&gt;
 5  Marco André (marphy) &lt;br /&gt;
 5  Chris (Gast) &lt;br /&gt;
 5  mr. mo (Gast) &lt;br /&gt;
10  René B. (reneb) &lt;br /&gt;
 5  Martin R. (martin84) &lt;br /&gt;
 3  J. S. (voochee) &lt;br /&gt;
 5  Andreas H. (ahz) &lt;br /&gt;
 5  Ronny Spiegel (duselbaer) &lt;br /&gt;
10  G. L. (lele) &lt;br /&gt;
 3  Axel Jäger (axeljaeger) &lt;br /&gt;
 5  Stephan G. (stephan_g35)&lt;br /&gt;
 5  Gibts Ne (schneeblau) &lt;br /&gt;
 5  Sascha G. (sascha-g) &lt;br /&gt;
 5  Richard Zink (Gast) &lt;br /&gt;
 5  Stephan K. (nightowl) &lt;br /&gt;
 5  Martin Wende (Firma: fritzler-avr.de) (fritzler) &lt;br /&gt;
 5  Jörg S. (Gast)&lt;br /&gt;
10  J. L. (lindenbaum) &lt;br /&gt;
10  Jan M. (mueschel) &lt;br /&gt;
 5  Bad Urban (bad_urban) &lt;br /&gt;
 5  Daniel M. (amad)&lt;br /&gt;
 5  Sascha S. (dec) &lt;br /&gt;
 5  A. S. (rava) &lt;br /&gt;
10  Jens M. (jens-m) &lt;br /&gt;
 5  Sascha E. (baracuss) &lt;br /&gt;
 5  avr avr (colombo010) &lt;br /&gt;
 5  Michael B. (michael_b25) &lt;br /&gt;
 5  Thomas Sch. (doschi_) &lt;br /&gt;
 5  K. J. (theborg0815)&lt;br /&gt;
 5  Daniel C. (cecky) &lt;br /&gt;
 5  Philipp E. (erlang) &lt;br /&gt;
 5  Thorsten Ostermann (Firma: mechapro GmbH) (ostermann)&lt;br /&gt;
10  vophatec (Manuel Z.)&lt;br /&gt;
 3  Carsten Peschke &lt;br /&gt;
 2  J.O. (Gast)&lt;br /&gt;
10  F. Fo (foldi)&lt;br /&gt;
-------------------------------------&lt;br /&gt;
347 ZWISCHENSTAND&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Promeus</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=Mcruler&amp;diff=79441</id>
		<title>Mcruler</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=Mcruler&amp;diff=79441"/>
		<updated>2013-11-07T19:39:41Z</updated>

		<summary type="html">&lt;p&gt;Promeus: /* Vorbestellungen */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Infos ==&lt;br /&gt;
&lt;br /&gt;
Hier soll eine Community Variante eines Lineals entstehen, nach Vorbild des µRuler von EEVBlog/Dave Jones:&lt;br /&gt;
&lt;br /&gt;
[[Datei:uRuler.jpg|1200px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Aktueller Stand:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
[https://raw.github.com/maugsburger/ucruler/master/ucruler_top.png]&lt;br /&gt;
[https://raw.github.com/maugsburger/ucruler/master/ucruler_bot.png]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Thread im Forum:&#039;&#039;&#039; http://www.mikrocontroller.net/topic/313642&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Projekt-Seite auf GitHub:&#039;&#039;&#039; https://github.com/maugsburger/ucruler&lt;br /&gt;
&lt;br /&gt;
== Spezifikationen ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| Maße             || 200 x 27 mm&lt;br /&gt;
|-&lt;br /&gt;
| PCB              || 0.8mm FR4 2-Layer 35µ (0.5mm?)&lt;br /&gt;
|-&lt;br /&gt;
| Oberfläche       || gold (ENIG)&lt;br /&gt;
|-&lt;br /&gt;
| Lötstop          || beidseitig, Farbe TBD&lt;br /&gt;
|-&lt;br /&gt;
| Bestückungsdruck || beidseitig, weiß&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Preise&#039;&#039;&#039;     || ca. 2 € / MOQ: 5 Stück&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Farbe des Lötstopplackes ==&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
grün    |&lt;br /&gt;
gelb    |&lt;br /&gt;
schwarz |++++++&lt;br /&gt;
weiß    |+&lt;br /&gt;
rot     |+++++++&lt;br /&gt;
blau    |+++&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
einfach bitte ein Plus hinter die Farbe die euch als Lötstoplack am besten gefallen würde.&lt;br /&gt;
&lt;br /&gt;
== Anpassungen/Ergänzungen ==&lt;br /&gt;
&lt;br /&gt;
Bitte einfach ein + oder - ergänzen oder gar nichts eintragen (wichtig, brauch ich nicht, egal), so dass am Ende ein Stimmungsbild entsteht. Daraus ergeben sich dann Prioritäten, in deren Reihenfolge der Platz aufgefüllt wird.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
! Name !! Wertung !! Beschreibung&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Formelsamlung&lt;br /&gt;
||&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
+| +++++&lt;br /&gt;
-| ---&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
Vllt. könnte man auch ein paar Formeln unterbringen die oft verwendet werden und trotzdem gerne vergessen werden&lt;br /&gt;
&lt;br /&gt;
Vorschläge [[Mcnet-ruler#Vorschl.C3.A4ge_f.C3.BCr_Formelsammlung|siehe unten]].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|  Leiterbahnstärken &lt;br /&gt;
||&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
1| +&lt;br /&gt;
2| ++++++++++++&lt;br /&gt;
3|&lt;br /&gt;
4|&lt;br /&gt;
5|&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
Bitte genau eine Möglichkeit mit + wählen:&lt;br /&gt;
# Bahnen in mm und mil, beschriftet in mm und mil&lt;br /&gt;
# Bahnen in mm, beschriftet in mm und mil&lt;br /&gt;
# Bahnen in mil, beschriftet in mm und mil&lt;br /&gt;
# Bahnen in mm, beschriftet in mm&lt;br /&gt;
# Bahnen in mil, beschriftet in mil&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|  Inches in mm &lt;br /&gt;
||&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
+| +++++++++++++++&lt;br /&gt;
-|&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
Bitte generell Inches in mm umrechnen.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|  Layout/Textfluss  mm/inch &lt;br /&gt;
||&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
+|+ &lt;br /&gt;
-|&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
Die Umrechnungstabelle mm/inch in den Textfluss drehen.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|  Isolationsabstände &lt;br /&gt;
||&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
+| ++++++++++++++++++&lt;br /&gt;
-|&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
Die Tabelle für Isolationsabstände (Luft-/Kriechstrecken) ggf. an  in Deutschland geltende Normen anpassen.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|  Kabel-Widerstände &lt;br /&gt;
||&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
+| ++++++++++&lt;br /&gt;
-| ---&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
Wenn noch Platz ist, wäre eine Tabelle für Kabel-Widerstände gut (sortiert nach gängigen Querschnitten, pro m oder 10m Kabellänge).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|  Widerstands-Farbcode-Tabelle &lt;br /&gt;
||&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
+| +++++++++++&lt;br /&gt;
-| ----------&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
Rückseite Widerstands-Farbcode-Tabelle&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|  LM317 &lt;br /&gt;
||&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
+| ++++&lt;br /&gt;
-| ------------&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
Tabelle für LM317-Widerstandswerte&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|  Kapazitäts-/Induktivitätsbelag &lt;br /&gt;
||&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
+|++++ &lt;br /&gt;
-|---&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
Tabellen zum Kapazitäts-/Induktivitätsbelag von Leiterbahnen&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|  Wellenwiderstände &lt;br /&gt;
||&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
+|++++&lt;br /&gt;
-|----&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
Richtwerttabellen für Wellenwiderstände, Micro Striplines (insbes. für USB/Ethernet Routing), etc. auf gängigen PCBs&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|  Wechselstrom Ueff, Upp &lt;br /&gt;
||&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
+| ++&lt;br /&gt;
-| -----------&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
Wenn immer noch Platz ist: Tabelle zur Umrechnung von Wechselstromgrößen (Ueff, Upp für gängige Trafowicklungen, 110V, 230V, 240V, 400V, 600V)&lt;br /&gt;
&lt;br /&gt;
Anm.: Sinnvoll für gängige Elko-Spannungen 16VDC, 25VDC, 50VDC, 63VDC, 80VDC.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|  f/T-Umrechnung &lt;br /&gt;
||&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
+| ++++&lt;br /&gt;
-| --------&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
Und wenn dann noch Platz wäre: Tabelle mit f und T für gängige µC-Frequenzen und Samplingraten&lt;br /&gt;
&lt;br /&gt;
Anm.: Sinnvoll und platzsparend, wenn wie vorgeschlagen für einige wenige gängige Werte (z.B. &amp;quot;8 MHz / 125 ns&amp;quot; und &amp;quot;48 kHz / 20,8 µs&amp;quot;).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|  PCB-Kühlkörper &lt;br /&gt;
||&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
+| ++++++++++++&lt;br /&gt;
-| -&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
Was auch interessant waere ist eine Tabelle fuer Leiterplattenkuehlkoerper. K/W pro cm² für div. Kupferstärken!&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|  SMD-Footprints R &lt;br /&gt;
||&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
+| ++++++++++++++++++++&lt;br /&gt;
-|&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
Die Idee mit den SMD Footprints auf der Rückseite finde ich auch sehr gut.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|  SMD-Größen R &lt;br /&gt;
||&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
+| ++++++++++&lt;br /&gt;
-| &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
Eine Tabelle mit den Größen (im Sinne von Maßen) von SMD Widerständen ist auch manchmal ganz gut.&lt;br /&gt;
Anm.: Vorschlag Widerstandsreihe siehe unten.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|  SMD-Footprints ElKo &lt;br /&gt;
||&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
+| +++++++++++++++++&lt;br /&gt;
-|&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
Zudem wäre der Footprint von SMD Elkos wenn möglich auf der Rückseite auch ganz praktisch&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|  SMD-Größen Elko &lt;br /&gt;
||&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
+| ++++++++++++++&lt;br /&gt;
-| &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
Eine Tabelle mit den Größen (im Sinne von Maßen) von SMD Elkos ist auch manchmal ganz gut.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|  E-Reihen &lt;br /&gt;
||&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
+| +++++++&lt;br /&gt;
-| ----&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
Abdruck der E24-Reihe mit Markierungen für E12, E6.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|  TQFP, SOP und SOT Footprint &lt;br /&gt;
||&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
+| +++++++++++&lt;br /&gt;
-| -&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
Der Footprint von TQFP, SOT und SOP Bauteilen auf der Rückseite könnte sich auch als nützlich erweisen&lt;br /&gt;
&lt;br /&gt;
Vorschläge für Footprints [[Mcnet-ruler#Vorschl.C3.A4ge_f.C3.BCr_Footprints|siehe unten]].&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|  THT Lochreihe &lt;br /&gt;
||&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
+| +++++&lt;br /&gt;
-| ----&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
Ebenso eine kurze Lochreihe im 2,54mm-Raster für THT.&lt;br /&gt;
&lt;br /&gt;
Anm.: Bitte eine lange Lochreihe ähnlich wie von [http://www.mikrocontroller.net/topic/313642#3389830 Chris gezeigt].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|  Kleines Namensfeld &lt;br /&gt;
||&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
+| +++++++++++++&lt;br /&gt;
-|-&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
Damit die Lineale nicht &amp;quot;verschwinden&amp;quot;, zum selbst beschriften.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|  Tabelle Leitfähigkeit/spezifischer Widerstand &lt;br /&gt;
||&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
+| +++&lt;br /&gt;
-| ---&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
Eine Tabelle mit der Leitfähigkeit/spezifischer Widerstand von zb. Kufer, Aluminium, Eisen ...&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|  Temperaturkoeffizent &lt;br /&gt;
||&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
+| ++&lt;br /&gt;
-| ---&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
||&lt;br /&gt;
Eine Tabelle mit den Temperaturkoeffizenten (alpha in 1/k) von zb. Kufer, Aluminium, Eisen ...&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Vorschläge für Formelsammlung ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
! Name !! Wertung !! Beschreibung&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| C/L &lt;br /&gt;
||&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
+| +&lt;br /&gt;
-|&lt;br /&gt;
&amp;lt;/pre&amp;gt; &lt;br /&gt;
||&lt;br /&gt;
http://upload.wikimedia.org/math/d/5/5/d550b39c146790974bae8a9a2e1830fb.png&lt;br /&gt;
&lt;br /&gt;
http://upload.wikimedia.org/math/0/9/a/09ab806c34320b749ddadca35a32fc8a.png&lt;br /&gt;
&lt;br /&gt;
http://de.wikipedia.org/wiki/Elektrische_Kapazit%C3%A4t#Kapazit.C3.A4t_bestimmter_Leiteranordnungen&lt;br /&gt;
&lt;br /&gt;
http://de.wikipedia.org/wiki/Induktivit%C3%A4t#Induktivit.C3.A4t_einer_Zylinderspule&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Eckfrequenz RC-Glied HP/LP &lt;br /&gt;
||&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
+| +&lt;br /&gt;
-| -&lt;br /&gt;
&amp;lt;/pre&amp;gt; &lt;br /&gt;
||&lt;br /&gt;
http://upload.wikimedia.org/math/5/d/1/5d1295e236a3c860416fbdb9940fb043.png&lt;br /&gt;
&lt;br /&gt;
http://de.wikipedia.org/wiki/RC-Glied#Tiefpass&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| I(t) / U(t) für C/L &lt;br /&gt;
||&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
+| ++&lt;br /&gt;
-|&lt;br /&gt;
&amp;lt;/pre&amp;gt; &lt;br /&gt;
||&lt;br /&gt;
http://upload.wikimedia.org/math/0/b/9/0b93b4a1ce2832629d42509b43184894.png&lt;br /&gt;
&lt;br /&gt;
http://upload.wikimedia.org/math/9/e/6/9e6ea02a73a08f263454786c1c9d7e44.png&lt;br /&gt;
&lt;br /&gt;
http://de.wikipedia.org/wiki/Zeitkonstante#Kondensator&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Wärmewiderstand  &lt;br /&gt;
||&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
+| +&lt;br /&gt;
-|&lt;br /&gt;
&amp;lt;/pre&amp;gt; &lt;br /&gt;
||&lt;br /&gt;
http://upload.wikimedia.org/math/8/7/b/87b98460f0867373471f540167591ebb.png&lt;br /&gt;
&lt;br /&gt;
http://de.wikipedia.org/wiki/W%C3%A4rmewiderstand#Definition&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Vorschläge für Footprints ==&lt;br /&gt;
&lt;br /&gt;
Vorschläge für Footprints auf der Rückseite. Es werden die Pads in Kupfer ausgeführt (also theoretisch lötbar), der Rand des Bauteils im Bestückungsdruck.&lt;br /&gt;
&lt;br /&gt;
* SC-70&lt;br /&gt;
* SOT-23-6&lt;br /&gt;
* SOT-89&lt;br /&gt;
* SOT-23&lt;br /&gt;
* SOT-223&lt;br /&gt;
* TO-252 / DPAK&lt;br /&gt;
* TO-263 / D2PAK&lt;br /&gt;
* SMA / DO-214AC&lt;br /&gt;
* SMB / DO-214AA&lt;br /&gt;
* SMC / DO-214AB&lt;br /&gt;
* Melf&lt;br /&gt;
* MiniMelf&lt;br /&gt;
* MicroMelf&lt;br /&gt;
* PLCC-4 / 3528&lt;br /&gt;
* PLCC-6 / 5050&lt;br /&gt;
* SOIC-24&lt;br /&gt;
* SSOP-24&lt;br /&gt;
* TSSOP-24&lt;br /&gt;
* TQFP32, 0.8mm Pitch&lt;br /&gt;
* TQFP48, 0.5mm Pitch&lt;br /&gt;
* QFN32, 0.5mm Pitch&lt;br /&gt;
&lt;br /&gt;
== Vorbestellungen ==&lt;br /&gt;
Interessenten tragen sich bitte &#039;&#039;&#039;am Ende der Liste ein und aktualisieren den Zwischenstand&#039;&#039;&#039;!&lt;br /&gt;
&lt;br /&gt;
Mindestbestellmenge ist nach aktuellem Stand 5 Stück.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
10  Dominik S. (dasd)&lt;br /&gt;
 5  Dennis X. (debegr92) &lt;br /&gt;
 2  Arne M. (armut) &lt;br /&gt;
 3  Benedikt K. (benek) &lt;br /&gt;
 5  AVR (Gast) &lt;br /&gt;
 5  Jürgen (Gast) &lt;br /&gt;
 5  Uwe ... (uwegw) &lt;br /&gt;
10  Rene H. (promeus) &lt;br /&gt;
 5  hum (Gast) &lt;br /&gt;
 3  Werner A. (homebrew) &lt;br /&gt;
 2  Frank Werner (wesoft)&lt;br /&gt;
 5  Jan B. (diphthong) &lt;br /&gt;
 5  Thomas J. (tom16) &lt;br /&gt;
10  Felix Schulze (pepe) &lt;br /&gt;
 3  Patrick Berninghaus (patricck) &lt;br /&gt;
 5  B. B. (morgenmuffel) &lt;br /&gt;
 5  Bernd D. (bernd_d56)&lt;br /&gt;
 5  Daniel (Gast) &lt;br /&gt;
 5  Jan Dressler (keyman) &lt;br /&gt;
 3  Gerd E. (robberknight) &lt;br /&gt;
10  Ralf Engelhardt (r_e)&lt;br /&gt;
 5  D. S. (compuvidy) &lt;br /&gt;
 5  Michael R. (elektr-hobbyist) &lt;br /&gt;
 5  Samuel Hildebrandt (musicsammy) &lt;br /&gt;
 5  Martin H. (marrtn) &lt;br /&gt;
 5  Michael Becker (mich_at_el) &lt;br /&gt;
 5  Marco André (marphy) &lt;br /&gt;
 5  Chris (Gast) &lt;br /&gt;
 5  mr. mo (Gast) &lt;br /&gt;
10  René B. (reneb) &lt;br /&gt;
 5  Martin R. (martin84) &lt;br /&gt;
 3  J. S. (voochee) &lt;br /&gt;
 5  Andreas H. (ahz) &lt;br /&gt;
 5  Ronny Spiegel (duselbaer) &lt;br /&gt;
10  G. L. (lele) &lt;br /&gt;
 3  Axel Jäger (axeljaeger) &lt;br /&gt;
 5  Stephan G. (stephan_g35)&lt;br /&gt;
 5  Gibts Ne (schneeblau) &lt;br /&gt;
 5  Sascha G. (sascha-g) &lt;br /&gt;
 5  Richard Zink (Gast) &lt;br /&gt;
 5  Stephan K. (nightowl) &lt;br /&gt;
 5  Martin Wende (Firma: fritzler-avr.de) (fritzler) &lt;br /&gt;
 5  Jörg S. (Gast)&lt;br /&gt;
10  J. L. (lindenbaum) &lt;br /&gt;
10  Jan M. (mueschel) &lt;br /&gt;
 5  Bad Urban (bad_urban) &lt;br /&gt;
 5  Daniel M. (amad)&lt;br /&gt;
 5  Sascha S. (dec) &lt;br /&gt;
 5  A. S. (rava) &lt;br /&gt;
10  Jens M. (jens-m) &lt;br /&gt;
 5  Sascha E. (baracuss) &lt;br /&gt;
 5  avr avr (colombo010) &lt;br /&gt;
 5  Michael B. (michael_b25) &lt;br /&gt;
 5  Thomas Sch. (doschi_) &lt;br /&gt;
 5  K. J. (theborg0815)&lt;br /&gt;
 5  Daniel C. (cecky) &lt;br /&gt;
 5  Philipp E. (erlang) &lt;br /&gt;
 5  Thorsten Ostermann (Firma: mechapro GmbH) (ostermann)&lt;br /&gt;
10  vophatec (Manuel Z.)&lt;br /&gt;
 3  Carsten Peschke &lt;br /&gt;
 2  J.O. (Gast)&lt;br /&gt;
10  F. Fo (foldi)&lt;br /&gt;
15 Rene H. (promeus)&lt;br /&gt;
-------------------------------------&lt;br /&gt;
357 ZWISCHENSTAND&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Promeus</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=Mcruler&amp;diff=79355</id>
		<title>Mcruler</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=Mcruler&amp;diff=79355"/>
		<updated>2013-11-06T15:02:02Z</updated>

		<summary type="html">&lt;p&gt;Promeus: /* Farbe des Lötstopplackes */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Anpassungen/Ergänzungen ==&lt;br /&gt;
&lt;br /&gt;
Bitte einfach ein + oder - ergänzen oder gar nichts eintragen (wichtig, brauch ich nicht, egal), so dass am Ende ein Stimmungsbild entsteht. Daraus ergeben sich dann Prioritäten, in deren Reihenfolge der Platz aufgefüllt wird.&lt;br /&gt;
&lt;br /&gt;
=== Leiterbahnstärken ===&lt;br /&gt;
&lt;br /&gt;
Bitte genau eine Möglichkeit mit + wählen:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
1| &lt;br /&gt;
2| ++++&lt;br /&gt;
3|&lt;br /&gt;
4|&lt;br /&gt;
5|&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
# Bahnen in mm und mil, beschriftet in mm und mil&lt;br /&gt;
# Bahnen in mm, beschriftet in mm und mil&lt;br /&gt;
# Bahnen in mil, beschriftet in mm und mil&lt;br /&gt;
# Bahnen in mm, beschriftet in mm&lt;br /&gt;
# Bahnen in mil, beschriftet in mil&lt;br /&gt;
&lt;br /&gt;
=== Inches in mm ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
+| ++++++++++&lt;br /&gt;
-|&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Bitte generell Inches in mm umrechnen.&lt;br /&gt;
&lt;br /&gt;
=== Layout/Textfluss  mm/inch ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
+|+ &lt;br /&gt;
-|&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Die Umrechnungstabelle mm/inch in den Textfluss drehen.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Isolationsabstände ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
+| +++++++++&lt;br /&gt;
-|&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Die Tabelle für Isolationsabstände (Luft-/Kriechstrecken) ggf. an  in Deutschland geltende Normen anpassen.&lt;br /&gt;
&lt;br /&gt;
=== Kabel-Widerstände ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
+| +++++&lt;br /&gt;
-|&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Wenn noch Platz ist, wäre eine Tabelle für Kabel-Widerstände gut (sortiert nach gängigen Querschnitten, pro m oder 10m Kabellänge).&lt;br /&gt;
&lt;br /&gt;
=== Widerstands-Farbcode-Tabelle ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
+| ++++++&lt;br /&gt;
-| -----&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Rückseite Widerstands-Farbcode-Tabelle&lt;br /&gt;
&lt;br /&gt;
=== LM317 ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
+| +++&lt;br /&gt;
-| ------&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Tabelle für LM317-Widerstandswerte&lt;br /&gt;
&lt;br /&gt;
=== Kapazitäts-/Induktivitätsbelag ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
+|+ &lt;br /&gt;
-|&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Tabellen zum Kapazitäts-/Induktivitätsbelag von Leiterbahnen&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Wellenwiderstände ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
+|+ &lt;br /&gt;
-|&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Richtwerttabellen für Wellenwiderstände, Micro Striplines (insbes. für USB/Ethernet Routing), etc. auf gängigen PCBs&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Wechselstrom Ueff, Upp ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
+| +&lt;br /&gt;
-| -----&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Wenn immer noch Platz ist: Tabelle zur Umrechnung von Wechselstromgrößen (Ueff, Upp für gängige Trafowicklungen, 110V, 230V, 240V, 400V, 600V)&lt;br /&gt;
&lt;br /&gt;
Anm.: Sinnvoll für gängige Elko-Spannungen 16VDC, 25VDC, 50VDC, 63VDC, 80VDC.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== f/T-Umrechnung ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
+| ++&lt;br /&gt;
-| ----&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Und wenn dann noch Platz wäre: Tabelle mit f und T für gängige µC-Frequenzen und Samplingraten&lt;br /&gt;
&lt;br /&gt;
Anm.: Sinnvoll und platzsparend, wenn wie vorgeschlagen für einige wenige gängige Werte (z.B. &amp;quot;8 MHz / 125 ns&amp;quot; und &amp;quot;48 kHz / 20,8 µs&amp;quot;).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== PCB-Kühlkörper ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
+| ++++++++&lt;br /&gt;
-|&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Was auch interressant waere ist eine Tabelle fuer Leiterplattenkuelkoerper. K/W pro cm² für div. Kupferstärken!&lt;br /&gt;
&lt;br /&gt;
=== SMD-Footprints R ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
+| ++++++++++&lt;br /&gt;
-|&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Die Idee mit den SMD Footprints auf der Rückseite finde ich auch sehr gut.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== SMD-Größen R ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
+| +&lt;br /&gt;
-| &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Eine Tabelle mit den Größen von SMD Widerständen ist auch manchmal ganz gut. *edit* mit größe waren die Maße gemeint. So wie auf dem Original.&lt;br /&gt;
&lt;br /&gt;
Anm.: Die physikalischen Dimensionen sind bereits auf dem original µRuler enthalten? Vorschlag Widerstandsreihe siehe unten.&lt;br /&gt;
&lt;br /&gt;
=== SMD-Footprints ElKo ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
+| +++++++++&lt;br /&gt;
-|&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Zudem wäre der Footprint von SMD Elkos wenn möglich auf der Rückseite auch ganz praktisch&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== SMD-Größen Elko ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
+| ++++++++&lt;br /&gt;
-| &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Eine Tabelle mit den Größen von SMD ELkos ist auch manchmal ganz gut.&lt;br /&gt;
&lt;br /&gt;
*edit* mit Größe waren die Maße gemeint.&lt;br /&gt;
&lt;br /&gt;
=== E-Reihen ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
+| +&lt;br /&gt;
-| --&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Abdruck der E24-Reihe mit Markierungen für E12, E6.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Formelsamlung ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
+| ++&lt;br /&gt;
-| -&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Vllt. könnte man auch ein paar Formeln unterbrigen die offt verwendet werden und trotzdem gerne vergessen werden&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== TQFP, SOP und SOT Footprint ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
+| ++++&lt;br /&gt;
-| &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Der Footprint von TQFP, SOT und SOP Bauteilen auf der Rückseite könnte sich auch als nützlich erweisen&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Kleines Namensfeld ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
+| +++++&lt;br /&gt;
-|&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Damit die Lineale nicht &amp;quot;verschwinden&amp;quot;, zum selbst beschriften.&lt;br /&gt;
&lt;br /&gt;
=== Tabelle Leitfähigkeit/spezifischer Widerstand ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
+| +&lt;br /&gt;
-|&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Eine Tabele mit der Leitfähigkeit/spezifischer Widerstand von zb. Kufer, Aluminium, Eisen ...&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Temperaturkoeffizent ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
+| +&lt;br /&gt;
-|&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Eine Tabele mit den Temperaturkoeffizenten (alpha in 1/k) von zb. Kufer, Aluminium, Eisen ...&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Farbe des Lötstopplackes ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
1 = Grün&lt;br /&gt;
2 = Gelb&lt;br /&gt;
3 = Schwarz&lt;br /&gt;
4 = Weiß&lt;br /&gt;
5 = Rot&lt;br /&gt;
6 = Blau&lt;br /&gt;
&lt;br /&gt;
1|&lt;br /&gt;
2|&lt;br /&gt;
3|++&lt;br /&gt;
4|&lt;br /&gt;
5|+&lt;br /&gt;
6|++&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
einfach bitte ein Plus hinter die Frabe die euch alls Lötstoplack am besten gefallen würde.&lt;/div&gt;</summary>
		<author><name>Promeus</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=Mcruler&amp;diff=79308</id>
		<title>Mcruler</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=Mcruler&amp;diff=79308"/>
		<updated>2013-11-06T11:57:10Z</updated>

		<summary type="html">&lt;p&gt;Promeus: /* SMD-Größen Elko */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Anpassungen/Ergänzungen ==&lt;br /&gt;
&lt;br /&gt;
Bitte einfach ein + oder - ergänzen oder gar nichts eintragen (wichtig, brauch ich nicht, egal), so dass am Ende ein Stimmungsbild entsteht. Daraus ergeben sich dann Prioritäten, in deren Reihenfolge der Platz aufgefüllt wird.&lt;br /&gt;
&lt;br /&gt;
=== Inches in mm ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
+| +++++&lt;br /&gt;
-|&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Bitte generell Inches in mm umrechnen.&lt;br /&gt;
&lt;br /&gt;
=== Layout/Textfluss  mm/inch ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
+| &lt;br /&gt;
-|&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Die Umrechnungstabelle mm/inch in den Textfluss drehen.&lt;br /&gt;
&lt;br /&gt;
=== Isolationsabstände ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
+| +++++&lt;br /&gt;
-|&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Die Tabelle für Isolationsabstände (Luft-/Kriechstrecken) ggf. an  in Deutschland geltende Normen anpassen.&lt;br /&gt;
&lt;br /&gt;
=== Kabel-Widerstände ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
+| +++&lt;br /&gt;
-|&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Wenn noch Platz ist, wäre eine Tabelle für Kabel-Widerstände gut (sortiert nach gängigen Querschnitten, pro m oder 10m Kabellänge).&lt;br /&gt;
&lt;br /&gt;
=== Widerstands-Farbcode-Tabelle ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
+|++ &lt;br /&gt;
-| --&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Rückseite Widerstands-Farbcode-Tabelle&lt;br /&gt;
&lt;br /&gt;
=== LM317 ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
+| ++&lt;br /&gt;
-| ---&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Tabelle für LM317-Widerstandswerte&lt;br /&gt;
&lt;br /&gt;
=== Kapazitäts-/Induktivitätsbelag ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
+| &lt;br /&gt;
-|&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Tabellen zum Kapazitäts-/Induktivitätsbelag von Leiterbahnen&lt;br /&gt;
&lt;br /&gt;
=== Wellenwiderstände ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
+| &lt;br /&gt;
-|&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Richtwerttabellen für Wellenwiderstände, Micro Striplines (insbes. für USB/Ethernet Routing), etc. auf gängigen PCBs&lt;br /&gt;
&lt;br /&gt;
=== Wechselstrom Ueff, Upp ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
+| +&lt;br /&gt;
-| ---&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Wenn immer noch Platz ist: Tabelle zur Umrechnung von Wechselstromgrößen (Ueff, Upp für gängige Trafowicklungen, 110V, 230V, 240V, 400V, 600V)&lt;br /&gt;
&lt;br /&gt;
=== f/T-Umrechnung ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
+| ++&lt;br /&gt;
-| ---&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Und wenn dann noch Platz wäre: Tabelle mit f und T für gängige µC-Frequenzen und Samplingraten&lt;br /&gt;
&lt;br /&gt;
=== PCB-Kühlkörper ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
+| +++++&lt;br /&gt;
-|&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Was auch interressant waere ist eine Tabelle fuer Leiterplattenkuelkoerper. K/W pro cm² für div. Kupferstärken!&lt;br /&gt;
&lt;br /&gt;
=== SMD-Footprints R ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
+| +++++++&lt;br /&gt;
-|&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Die Idee mit den SMD Footprints auf der Rückseite finde ich auch sehr gut.&lt;br /&gt;
&lt;br /&gt;
=== SMD-Footprints ElKo ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
+| ++++++&lt;br /&gt;
-|&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Zudem wäre der Footprint von SMD Elkos wenn möglich auf der Rückseite auch ganz praktisch&lt;br /&gt;
&lt;br /&gt;
=== SMD-Größen Elko ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
+| ++++++&lt;br /&gt;
-| &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Eine Tabelle mit den Größen von SMD ELkos ist auch manchmal ganz gut.&lt;br /&gt;
&lt;br /&gt;
=== Formelsamlung ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
+| +&lt;br /&gt;
-| -&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Vllt. könnte man auch ein paar Formeln unterbrigen die offt verwendet werden und trotzdem gerne vergessen werden&lt;br /&gt;
&lt;br /&gt;
=== TQFP, SOP und SOT Footprint ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
+| ++&lt;br /&gt;
-| &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Der Footprint von TQFP, SOT und SOP Bauteilen auf der Rückseite könnte sich auch als nützlich erweisen&lt;/div&gt;</summary>
		<author><name>Promeus</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=Mcruler&amp;diff=79307</id>
		<title>Mcruler</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=Mcruler&amp;diff=79307"/>
		<updated>2013-11-06T11:57:03Z</updated>

		<summary type="html">&lt;p&gt;Promeus: /* SMD-Footprints ElKo */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Anpassungen/Ergänzungen ==&lt;br /&gt;
&lt;br /&gt;
Bitte einfach ein + oder - ergänzen oder gar nichts eintragen (wichtig, brauch ich nicht, egal), so dass am Ende ein Stimmungsbild entsteht. Daraus ergeben sich dann Prioritäten, in deren Reihenfolge der Platz aufgefüllt wird.&lt;br /&gt;
&lt;br /&gt;
=== Inches in mm ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
+| +++++&lt;br /&gt;
-|&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Bitte generell Inches in mm umrechnen.&lt;br /&gt;
&lt;br /&gt;
=== Layout/Textfluss  mm/inch ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
+| &lt;br /&gt;
-|&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Die Umrechnungstabelle mm/inch in den Textfluss drehen.&lt;br /&gt;
&lt;br /&gt;
=== Isolationsabstände ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
+| +++++&lt;br /&gt;
-|&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Die Tabelle für Isolationsabstände (Luft-/Kriechstrecken) ggf. an  in Deutschland geltende Normen anpassen.&lt;br /&gt;
&lt;br /&gt;
=== Kabel-Widerstände ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
+| +++&lt;br /&gt;
-|&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Wenn noch Platz ist, wäre eine Tabelle für Kabel-Widerstände gut (sortiert nach gängigen Querschnitten, pro m oder 10m Kabellänge).&lt;br /&gt;
&lt;br /&gt;
=== Widerstands-Farbcode-Tabelle ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
+|++ &lt;br /&gt;
-| --&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Rückseite Widerstands-Farbcode-Tabelle&lt;br /&gt;
&lt;br /&gt;
=== LM317 ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
+| ++&lt;br /&gt;
-| ---&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Tabelle für LM317-Widerstandswerte&lt;br /&gt;
&lt;br /&gt;
=== Kapazitäts-/Induktivitätsbelag ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
+| &lt;br /&gt;
-|&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Tabellen zum Kapazitäts-/Induktivitätsbelag von Leiterbahnen&lt;br /&gt;
&lt;br /&gt;
=== Wellenwiderstände ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
+| &lt;br /&gt;
-|&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Richtwerttabellen für Wellenwiderstände, Micro Striplines (insbes. für USB/Ethernet Routing), etc. auf gängigen PCBs&lt;br /&gt;
&lt;br /&gt;
=== Wechselstrom Ueff, Upp ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
+| +&lt;br /&gt;
-| ---&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Wenn immer noch Platz ist: Tabelle zur Umrechnung von Wechselstromgrößen (Ueff, Upp für gängige Trafowicklungen, 110V, 230V, 240V, 400V, 600V)&lt;br /&gt;
&lt;br /&gt;
=== f/T-Umrechnung ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
+| ++&lt;br /&gt;
-| ---&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Und wenn dann noch Platz wäre: Tabelle mit f und T für gängige µC-Frequenzen und Samplingraten&lt;br /&gt;
&lt;br /&gt;
=== PCB-Kühlkörper ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
+| +++++&lt;br /&gt;
-|&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Was auch interressant waere ist eine Tabelle fuer Leiterplattenkuelkoerper. K/W pro cm² für div. Kupferstärken!&lt;br /&gt;
&lt;br /&gt;
=== SMD-Footprints R ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
+| +++++++&lt;br /&gt;
-|&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Die Idee mit den SMD Footprints auf der Rückseite finde ich auch sehr gut.&lt;br /&gt;
&lt;br /&gt;
=== SMD-Footprints ElKo ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
+| ++++++&lt;br /&gt;
-|&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Zudem wäre der Footprint von SMD Elkos wenn möglich auf der Rückseite auch ganz praktisch&lt;br /&gt;
&lt;br /&gt;
=== SMD-Größen Elko ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
+| +++++&lt;br /&gt;
-| &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Eine Tabelle mit den Größen von SMD ELkos ist auch manchmal ganz gut.&lt;br /&gt;
&lt;br /&gt;
=== Formelsamlung ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
+| +&lt;br /&gt;
-| -&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Vllt. könnte man auch ein paar Formeln unterbrigen die offt verwendet werden und trotzdem gerne vergessen werden&lt;br /&gt;
&lt;br /&gt;
=== TQFP, SOP und SOT Footprint ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
+| ++&lt;br /&gt;
-| &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Der Footprint von TQFP, SOT und SOP Bauteilen auf der Rückseite könnte sich auch als nützlich erweisen&lt;/div&gt;</summary>
		<author><name>Promeus</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=Mcruler&amp;diff=79306</id>
		<title>Mcruler</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=Mcruler&amp;diff=79306"/>
		<updated>2013-11-06T11:56:54Z</updated>

		<summary type="html">&lt;p&gt;Promeus: /* SMD-Footprints R */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Anpassungen/Ergänzungen ==&lt;br /&gt;
&lt;br /&gt;
Bitte einfach ein + oder - ergänzen oder gar nichts eintragen (wichtig, brauch ich nicht, egal), so dass am Ende ein Stimmungsbild entsteht. Daraus ergeben sich dann Prioritäten, in deren Reihenfolge der Platz aufgefüllt wird.&lt;br /&gt;
&lt;br /&gt;
=== Inches in mm ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
+| +++++&lt;br /&gt;
-|&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Bitte generell Inches in mm umrechnen.&lt;br /&gt;
&lt;br /&gt;
=== Layout/Textfluss  mm/inch ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
+| &lt;br /&gt;
-|&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Die Umrechnungstabelle mm/inch in den Textfluss drehen.&lt;br /&gt;
&lt;br /&gt;
=== Isolationsabstände ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
+| +++++&lt;br /&gt;
-|&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Die Tabelle für Isolationsabstände (Luft-/Kriechstrecken) ggf. an  in Deutschland geltende Normen anpassen.&lt;br /&gt;
&lt;br /&gt;
=== Kabel-Widerstände ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
+| +++&lt;br /&gt;
-|&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Wenn noch Platz ist, wäre eine Tabelle für Kabel-Widerstände gut (sortiert nach gängigen Querschnitten, pro m oder 10m Kabellänge).&lt;br /&gt;
&lt;br /&gt;
=== Widerstands-Farbcode-Tabelle ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
+|++ &lt;br /&gt;
-| --&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Rückseite Widerstands-Farbcode-Tabelle&lt;br /&gt;
&lt;br /&gt;
=== LM317 ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
+| ++&lt;br /&gt;
-| ---&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Tabelle für LM317-Widerstandswerte&lt;br /&gt;
&lt;br /&gt;
=== Kapazitäts-/Induktivitätsbelag ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
+| &lt;br /&gt;
-|&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Tabellen zum Kapazitäts-/Induktivitätsbelag von Leiterbahnen&lt;br /&gt;
&lt;br /&gt;
=== Wellenwiderstände ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
+| &lt;br /&gt;
-|&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Richtwerttabellen für Wellenwiderstände, Micro Striplines (insbes. für USB/Ethernet Routing), etc. auf gängigen PCBs&lt;br /&gt;
&lt;br /&gt;
=== Wechselstrom Ueff, Upp ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
+| +&lt;br /&gt;
-| ---&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Wenn immer noch Platz ist: Tabelle zur Umrechnung von Wechselstromgrößen (Ueff, Upp für gängige Trafowicklungen, 110V, 230V, 240V, 400V, 600V)&lt;br /&gt;
&lt;br /&gt;
=== f/T-Umrechnung ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
+| ++&lt;br /&gt;
-| ---&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Und wenn dann noch Platz wäre: Tabelle mit f und T für gängige µC-Frequenzen und Samplingraten&lt;br /&gt;
&lt;br /&gt;
=== PCB-Kühlkörper ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
+| +++++&lt;br /&gt;
-|&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Was auch interressant waere ist eine Tabelle fuer Leiterplattenkuelkoerper. K/W pro cm² für div. Kupferstärken!&lt;br /&gt;
&lt;br /&gt;
=== SMD-Footprints R ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
+| +++++++&lt;br /&gt;
-|&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Die Idee mit den SMD Footprints auf der Rückseite finde ich auch sehr gut.&lt;br /&gt;
&lt;br /&gt;
=== SMD-Footprints ElKo ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
+| +++++&lt;br /&gt;
-|&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Zudem wäre der Footprint von SMD Elkos wenn möglich auf der Rückseite auch ganz praktisch&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== SMD-Größen Elko ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
+| +++++&lt;br /&gt;
-| &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Eine Tabelle mit den Größen von SMD ELkos ist auch manchmal ganz gut.&lt;br /&gt;
&lt;br /&gt;
=== Formelsamlung ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
+| +&lt;br /&gt;
-| -&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Vllt. könnte man auch ein paar Formeln unterbrigen die offt verwendet werden und trotzdem gerne vergessen werden&lt;br /&gt;
&lt;br /&gt;
=== TQFP, SOP und SOT Footprint ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
+| ++&lt;br /&gt;
-| &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Der Footprint von TQFP, SOT und SOP Bauteilen auf der Rückseite könnte sich auch als nützlich erweisen&lt;/div&gt;</summary>
		<author><name>Promeus</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=Mcruler&amp;diff=79305</id>
		<title>Mcruler</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=Mcruler&amp;diff=79305"/>
		<updated>2013-11-06T11:56:09Z</updated>

		<summary type="html">&lt;p&gt;Promeus: /* Isolationsabstände */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Anpassungen/Ergänzungen ==&lt;br /&gt;
&lt;br /&gt;
Bitte einfach ein + oder - ergänzen oder gar nichts eintragen (wichtig, brauch ich nicht, egal), so dass am Ende ein Stimmungsbild entsteht. Daraus ergeben sich dann Prioritäten, in deren Reihenfolge der Platz aufgefüllt wird.&lt;br /&gt;
&lt;br /&gt;
=== Inches in mm ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
+| +++++&lt;br /&gt;
-|&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Bitte generell Inches in mm umrechnen.&lt;br /&gt;
&lt;br /&gt;
=== Layout/Textfluss  mm/inch ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
+| &lt;br /&gt;
-|&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Die Umrechnungstabelle mm/inch in den Textfluss drehen.&lt;br /&gt;
&lt;br /&gt;
=== Isolationsabstände ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
+| +++++&lt;br /&gt;
-|&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Die Tabelle für Isolationsabstände (Luft-/Kriechstrecken) ggf. an  in Deutschland geltende Normen anpassen.&lt;br /&gt;
&lt;br /&gt;
=== Kabel-Widerstände ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
+| +++&lt;br /&gt;
-|&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Wenn noch Platz ist, wäre eine Tabelle für Kabel-Widerstände gut (sortiert nach gängigen Querschnitten, pro m oder 10m Kabellänge).&lt;br /&gt;
&lt;br /&gt;
=== Widerstands-Farbcode-Tabelle ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
+|++ &lt;br /&gt;
-| --&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Rückseite Widerstands-Farbcode-Tabelle&lt;br /&gt;
&lt;br /&gt;
=== LM317 ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
+| ++&lt;br /&gt;
-| ---&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Tabelle für LM317-Widerstandswerte&lt;br /&gt;
&lt;br /&gt;
=== Kapazitäts-/Induktivitätsbelag ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
+| &lt;br /&gt;
-|&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Tabellen zum Kapazitäts-/Induktivitätsbelag von Leiterbahnen&lt;br /&gt;
&lt;br /&gt;
=== Wellenwiderstände ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
+| &lt;br /&gt;
-|&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Richtwerttabellen für Wellenwiderstände, Micro Striplines (insbes. für USB/Ethernet Routing), etc. auf gängigen PCBs&lt;br /&gt;
&lt;br /&gt;
=== Wechselstrom Ueff, Upp ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
+| +&lt;br /&gt;
-| ---&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Wenn immer noch Platz ist: Tabelle zur Umrechnung von Wechselstromgrößen (Ueff, Upp für gängige Trafowicklungen, 110V, 230V, 240V, 400V, 600V)&lt;br /&gt;
&lt;br /&gt;
=== f/T-Umrechnung ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
+| ++&lt;br /&gt;
-| ---&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Und wenn dann noch Platz wäre: Tabelle mit f und T für gängige µC-Frequenzen und Samplingraten&lt;br /&gt;
&lt;br /&gt;
=== PCB-Kühlkörper ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
+| +++++&lt;br /&gt;
-|&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Was auch interressant waere ist eine Tabelle fuer Leiterplattenkuelkoerper. K/W pro cm² für div. Kupferstärken!&lt;br /&gt;
&lt;br /&gt;
=== SMD-Footprints R ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
+| ++++++&lt;br /&gt;
-|&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Die Idee mit den SMD Footprints auf der Rückseite finde ich auch sehr gut.&lt;br /&gt;
&lt;br /&gt;
=== SMD-Footprints ElKo ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
+| +++++&lt;br /&gt;
-|&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Zudem wäre der Footprint von SMD Elkos wenn möglich auf der Rückseite auch ganz praktisch&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== SMD-Größen Elko ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
+| +++++&lt;br /&gt;
-| &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Eine Tabelle mit den Größen von SMD ELkos ist auch manchmal ganz gut.&lt;br /&gt;
&lt;br /&gt;
=== Formelsamlung ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
+| +&lt;br /&gt;
-| -&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Vllt. könnte man auch ein paar Formeln unterbrigen die offt verwendet werden und trotzdem gerne vergessen werden&lt;br /&gt;
&lt;br /&gt;
=== TQFP, SOP und SOT Footprint ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
+| ++&lt;br /&gt;
-| &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Der Footprint von TQFP, SOT und SOP Bauteilen auf der Rückseite könnte sich auch als nützlich erweisen&lt;/div&gt;</summary>
		<author><name>Promeus</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=Mcruler&amp;diff=79304</id>
		<title>Mcruler</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=Mcruler&amp;diff=79304"/>
		<updated>2013-11-06T11:55:52Z</updated>

		<summary type="html">&lt;p&gt;Promeus: /* Inches in mm */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Anpassungen/Ergänzungen ==&lt;br /&gt;
&lt;br /&gt;
Bitte einfach ein + oder - ergänzen oder gar nichts eintragen (wichtig, brauch ich nicht, egal), so dass am Ende ein Stimmungsbild entsteht. Daraus ergeben sich dann Prioritäten, in deren Reihenfolge der Platz aufgefüllt wird.&lt;br /&gt;
&lt;br /&gt;
=== Inches in mm ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
+| +++++&lt;br /&gt;
-|&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Bitte generell Inches in mm umrechnen.&lt;br /&gt;
&lt;br /&gt;
=== Layout/Textfluss  mm/inch ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
+| &lt;br /&gt;
-|&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Die Umrechnungstabelle mm/inch in den Textfluss drehen.&lt;br /&gt;
&lt;br /&gt;
=== Isolationsabstände ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
+| ++++&lt;br /&gt;
-|&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Die Tabelle für Isolationsabstände (Luft-/Kriechstrecken) ggf. an  in Deutschland geltende Normen anpassen.&lt;br /&gt;
&lt;br /&gt;
=== Kabel-Widerstände ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
+| +++&lt;br /&gt;
-|&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Wenn noch Platz ist, wäre eine Tabelle für Kabel-Widerstände gut (sortiert nach gängigen Querschnitten, pro m oder 10m Kabellänge).&lt;br /&gt;
&lt;br /&gt;
=== Widerstands-Farbcode-Tabelle ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
+|++ &lt;br /&gt;
-| --&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Rückseite Widerstands-Farbcode-Tabelle&lt;br /&gt;
&lt;br /&gt;
=== LM317 ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
+| ++&lt;br /&gt;
-| ---&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Tabelle für LM317-Widerstandswerte&lt;br /&gt;
&lt;br /&gt;
=== Kapazitäts-/Induktivitätsbelag ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
+| &lt;br /&gt;
-|&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Tabellen zum Kapazitäts-/Induktivitätsbelag von Leiterbahnen&lt;br /&gt;
&lt;br /&gt;
=== Wellenwiderstände ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
+| &lt;br /&gt;
-|&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Richtwerttabellen für Wellenwiderstände, Micro Striplines (insbes. für USB/Ethernet Routing), etc. auf gängigen PCBs&lt;br /&gt;
&lt;br /&gt;
=== Wechselstrom Ueff, Upp ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
+| +&lt;br /&gt;
-| ---&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Wenn immer noch Platz ist: Tabelle zur Umrechnung von Wechselstromgrößen (Ueff, Upp für gängige Trafowicklungen, 110V, 230V, 240V, 400V, 600V)&lt;br /&gt;
&lt;br /&gt;
=== f/T-Umrechnung ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
+| ++&lt;br /&gt;
-| ---&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Und wenn dann noch Platz wäre: Tabelle mit f und T für gängige µC-Frequenzen und Samplingraten&lt;br /&gt;
&lt;br /&gt;
=== PCB-Kühlkörper ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
+| +++++&lt;br /&gt;
-|&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Was auch interressant waere ist eine Tabelle fuer Leiterplattenkuelkoerper. K/W pro cm² für div. Kupferstärken!&lt;br /&gt;
&lt;br /&gt;
=== SMD-Footprints R ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
+| ++++++&lt;br /&gt;
-|&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Die Idee mit den SMD Footprints auf der Rückseite finde ich auch sehr gut.&lt;br /&gt;
&lt;br /&gt;
=== SMD-Footprints ElKo ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
+| +++++&lt;br /&gt;
-|&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Zudem wäre der Footprint von SMD Elkos wenn möglich auf der Rückseite auch ganz praktisch&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== SMD-Größen Elko ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
+| +++++&lt;br /&gt;
-| &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Eine Tabelle mit den Größen von SMD ELkos ist auch manchmal ganz gut.&lt;br /&gt;
&lt;br /&gt;
=== Formelsamlung ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
+| +&lt;br /&gt;
-| -&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Vllt. könnte man auch ein paar Formeln unterbrigen die offt verwendet werden und trotzdem gerne vergessen werden&lt;br /&gt;
&lt;br /&gt;
=== TQFP, SOP und SOT Footprint ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
+| ++&lt;br /&gt;
-| &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Der Footprint von TQFP, SOT und SOP Bauteilen auf der Rückseite könnte sich auch als nützlich erweisen&lt;/div&gt;</summary>
		<author><name>Promeus</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=Quarze_und_AVR&amp;diff=75511</id>
		<title>Quarze und AVR</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=Quarze_und_AVR&amp;diff=75511"/>
		<updated>2013-05-03T19:32:48Z</updated>

		<summary type="html">&lt;p&gt;Promeus: /* Anschluss */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Diese Seite behandelt [[Schwingquarz]]e im Zusammenhang mit [[AVR]]s.&lt;br /&gt;
&lt;br /&gt;
Die Genauigkeit von Quarzen liegt bei 10–100ppm	(1ppm = 0,0001 %) und wird somit nur noch von [[Quarzoszillator]]en überboten. Außerdem sind Quarze im Gegensatz zum internen RC-Oszillator weniger temperaturabhängig.&lt;br /&gt;
&lt;br /&gt;
== Verwendung ==&lt;br /&gt;
&lt;br /&gt;
Quarze sind in folgenden Situationen sinnvoll / notwendig:&lt;br /&gt;
&lt;br /&gt;
* Interner Oszillator des [[µC]] zu langsam&lt;br /&gt;
* Interner Oszillator des µC zu ungenau&lt;br /&gt;
** Bei Verwendung des [[UART]]&lt;br /&gt;
** Bei zeitgenauen Anwendungen wie Uhren&lt;br /&gt;
&lt;br /&gt;
== Wahl der richtigen Frequenz ==&lt;br /&gt;
&lt;br /&gt;
Vor allem als Anfänger denkt man sich, &#039;&#039;ich kaufe einfach mal 10MHz, das ist eine so schön gerade Zahl&#039;&#039;. Allerdings sind diese Quarze nur in den seltensten Fällen sinnvoll. Viel sinnvoller sind [[Baudratenquarz]]e. &amp;quot;Baudraten&amp;quot;-Frequenzen sind ganzzahlige Vielfache der bei [[RS232]] üblichen Baudraten. Mit Baudrate-Frequenz kann  man exakte Baudraten erreichen. Mit &amp;quot;runden&amp;quot; Frequenzen entstehen hingegen Fehler, weshalb damit oft nur sehr niedrige Baudraten möglich sind.&lt;br /&gt;
&lt;br /&gt;
&amp;quot;Runde&amp;quot; Frequenzen (4MHz, 8MHz, 10MHz....) sind meist leichter erhältlich und haben den Vorteil, dass man Verzögerungsschleifen und Rechendauern relativ leicht errechnen kann.&lt;br /&gt;
&lt;br /&gt;
== Anschluss ==&lt;br /&gt;
&lt;br /&gt;
Die Kapazitäten von C1 und C2 entsprechen &#039;&#039;nicht&#039;&#039; der Lastkapazität des Quarzes! Sie errechnen sich folgendermaßen:&lt;br /&gt;
[[Bild:Quarz_Anschluss_AVR.png|right|thumb|Anschluss eines Quarzes an einen AVR]]&lt;br /&gt;
&lt;br /&gt;
C = 2·CL – (CP+CI)&lt;br /&gt;
&lt;br /&gt;
*CP: Leiterbahnen bedingte Kapazität&lt;br /&gt;
*CI: Portbedingte Kapazität&lt;br /&gt;
*CL: Datenblatt des Quarzes&lt;br /&gt;
*CP+CI ca. 5pF&lt;br /&gt;
&lt;br /&gt;
Am Beispiel von CL = 32pF:&lt;br /&gt;
&lt;br /&gt;
C = 2·32pF – 5pF = 59pF&lt;br /&gt;
&lt;br /&gt;
wobeil gilt C = C1 = C2&lt;br /&gt;
&lt;br /&gt;
C1 und C2 sind die vom Hersteller des Kontrollers empfohlenen Werte. Mit ihnen wird die Schwingsicherheit der Oszillatorschaltung gewährleistet. C1 und C2 sollten in etwa eingehalten werden, also nicht mehr als ±20% von den Angaben abweichen.&lt;br /&gt;
&lt;br /&gt;
CL, der im Datenblatt angegebene Wert, wird beim Abgleich des Quarzes während der Herstellung benutzt. &lt;br /&gt;
&lt;br /&gt;
Wenn CL nicht eingehalten wird, hat das — solange der Faktor 2 nicht überschritten wird — keinen Einfluss auf das Schwingen des Oszillators, sondern nur auf die Frequenz, aber das in einem Maße (max. 0,01% der Frequenz. Dies ist für die meisten Mikrocontroller-Anwendungen bedeutungslos.&lt;br /&gt;
{{Warnung |&lt;br /&gt;
;Hinweis: Soll ein Uhrenquarz eine Real-Time-Clock versorgen, so sind die Kapazitäten von großer Wichtigkeit. Die Uhr läuft bei falsch dimensionierten Kapazitäten gleich im 3-stelligen ppm-Bereich falsch. Das bedeutet praktisch gleich mehrere Minuten pro Tag!&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Einstellung der Fuses ==&lt;br /&gt;
{{Warnung |&lt;br /&gt;
;Warnung: Hier ist besondere Vorsicht geboten. Fast immer liegt das Problem, wenn ein AVR nicht mehr läuft, an falsch eingestellten [[AVR Fuses]]!&lt;br /&gt;
&lt;br /&gt;
:Ein Quarz ist &#039;&#039;keine&#039;&#039; &amp;quot;External Clock&amp;quot;, sondern ein &amp;quot;External Crystal/Ceramic Resonator&amp;quot;. &lt;br /&gt;
}}&lt;br /&gt;
Bei vielen AVRs muss nicht nur &amp;quot;External Crystal&amp;quot; eingestellt werden, sondern auch der Frequenzbereich des Quarzes. Dabei gibt es die folgenden Bereiche:&lt;br /&gt;
*Low Freq.: 0,9 - 3 MHz&lt;br /&gt;
*Medium Freq.: 3 - 8 MHz&lt;br /&gt;
*High Freq.: &amp;gt;= 10 MHz&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Wenn man wirklich auf Nummer sicher gehen will, sollte man:&lt;br /&gt;
* Immer das Datenblatt und den Abschnitt &amp;quot;Clock Source&amp;quot; aufmerksam lesen.&lt;br /&gt;
* Per Fuse Calculator die Fuses berechnen lassen. Siehe dazu die Weblinks unten.&lt;br /&gt;
* Nochmals genau überprüfen&lt;br /&gt;
&lt;br /&gt;
== Siehe auch ==&lt;br /&gt;
&lt;br /&gt;
* [[AVR_Fuses#Taktquellen Fuse Einstellung|AVR Fuses: Taktquellen Fuse Einstellung]]&lt;br /&gt;
&lt;br /&gt;
== Weblinks ==&lt;br /&gt;
&lt;br /&gt;
* AppNotes von Atmel zum Thema Quarze:&lt;br /&gt;
** [http://www.atmel.com/Images/doc2521.pdf AVR042: &#039;&#039;AVR Hardware Design Considerations&#039;&#039;]&lt;br /&gt;
** [http://www.atmel.com/Images/doc8128.pdf AVR186: &#039;&#039;Best Practices for the PCB layout of Oscillators&#039;&#039;]&lt;br /&gt;
* Fuse Calculator: [http://www.engbedded.com/fusecalc]&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:AVR]]&lt;br /&gt;
[[Kategorie:Timer und Uhren]]&lt;/div&gt;</summary>
		<author><name>Promeus</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=Word_Clock&amp;diff=42063</id>
		<title>Word Clock</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=Word_Clock&amp;diff=42063"/>
		<updated>2010-01-08T07:36:00Z</updated>

		<summary type="html">&lt;p&gt;Promeus: /* Konzept */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Was ist das? =&lt;br /&gt;
&lt;br /&gt;
[[Datei:wordclock-frontplatte.png| |WordClock]]&lt;br /&gt;
&lt;br /&gt;
Es geht hier um folgenden Thread [1], in dem der Bau einer Uhr disktuiert wird. Als Inspiration kann diese [2] dienen. Es wird keine patentrechtlich bedenkliche Kopie :-)&amp;lt;br&amp;gt;&lt;br /&gt;
[1] [http://www.mikrocontroller.net/topic/156661 Beitrag: Brauche Hilfe beim Bau einer Uhr]&amp;lt;br&amp;gt;&lt;br /&gt;
[2] [http://www.qlocktwo.com http://www.qlocktwo.com]&lt;br /&gt;
&lt;br /&gt;
== Funktionalitäten ==&lt;br /&gt;
* Speichern der Uhrzeit über Real Time Clock&lt;br /&gt;
* Optionaler DCF77-Funkempfang&lt;br /&gt;
* Automatische Helligkeitsanpassung an das Umgebungslicht&lt;br /&gt;
* Anzeige der Uhrzeit durch RGB-LED-beleuchtete Buchstaben, d.h. es sind beliebige Farben möglich&lt;br /&gt;
* Bedienung über RC5-kompatible Infrarot-Fernbedienung: Helligkeit, Farbe, Uhrzeit und Ausgabeformat (&amp;quot;viertel vor acht&amp;quot; oder &amp;quot;dreiviertel acht&amp;quot;)&lt;br /&gt;
* Farbe einstellbar oder änderbar durch automatisch wechselndes HUE-Fading&lt;br /&gt;
&lt;br /&gt;
= Hardware =&lt;br /&gt;
== Elektronik ==&lt;br /&gt;
* Atmega88 oder Atmega168&lt;br /&gt;
* 24-Bit-Schieberegister an SPI für 24 Wörter&lt;br /&gt;
* 4 Output-Pins für Minutenanzeige&lt;br /&gt;
* 4 weitere GPOS - für allgemeine Zwecke&lt;br /&gt;
* RGB-Steuerung über PWM gegen GND, d.h. 32x3-Matrix&lt;br /&gt;
&lt;br /&gt;
== Schaltung ==&lt;br /&gt;
&lt;br /&gt;
Für die Entwickler liegt eine Prototyp-Platine vor. Desweiteren wurden einzelne Exemplare bereits zum Selbstkostenpreis abgegeben, so dass nun die erste Auflage von 20 Stück vergriffen ist. Zeit also, die erste größere Sammelbestellung anzugehen, siehe auch &#039;&#039;&#039;[http://www.mikrocontroller.net/articles/Word_Clock#Sammelbestellung_der_Platine Sammelbestellung der Platine]&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Hier die zugehörige Schaltung V0.8: &#039;&#039;&#039;[[Media:wordclock.pdf]]&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Eine vollständige Liste zur Bestellung der nötigen Bauteile ist bei Reichelt abgelegt: &#039;&#039;&#039;[http://www.reichelt.de/?ACTION=20;AWKID=194386;PROVID=2084 Bestell-Liste]&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Bestückung ==&lt;br /&gt;
&lt;br /&gt;
Hier eine kurze Beschreibung zur Bestückung:&lt;br /&gt;
&lt;br /&gt;
[[Datei:Wordclock.png|miniatur|Bestückte Platine]]&lt;br /&gt;
&lt;br /&gt;
* Links: Anschluss für stehende Lithium-Knopfbatterie CR2032 (die drei abgebildeten Stifte sind natürlich nicht notwendig, die Batterie wird direkt eingelötet)&lt;br /&gt;
* Unten links: Anschluss für DCF77-Modul und für Testzwecke RX &amp;amp; TX&lt;br /&gt;
* Oben Mitte: TSOP1736 für Infrarot-Empfang&lt;br /&gt;
* Oben links und rechts: Wannenstecker für insg. 32 Ausgabekanäle: OUT0-OUT23 (für die Wörter), OUTL1-OUTL4 (für die Minuten) und OUTG1-OUTG4 (für General-Purpose-Ausgabezwecke - noch nicht definiert)&lt;br /&gt;
* Rechts: Anschlussklemmen für Versorgungsspannung 7-12V und die drei PWM-Kanäle Rot, Grün und Blau&lt;br /&gt;
&lt;br /&gt;
Der IR-Empfänger TSOP1736 muss hinter einem nicht benutzten Buchstaben angebracht werden. Deshalb braucht man ihn nicht unbedingt auf die Platine löten, sondern kann ihn auch über ein 3-poliges Kabel mit der Platine verbinden. Das Kabel sollte aber nicht zu lang sein, da der TSOP immer gern seinen Elko in der Nähe hat.&lt;br /&gt;
&lt;br /&gt;
Da die Routine zur automatischen Helligkeitsregelung noch nicht ausgetestet ist, sollte man den Widerstand R6 (Pulldown für LDR) zunächst noch nicht bestücken, bis klar ist, welcher Wert der optimale für den gewählten LDR ist.&lt;br /&gt;
&lt;br /&gt;
[[Datei:wordclock-bestueckungsdruck.png|miniatur|Bestückungsaufdruck der Platine]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Durch einen Fehler in der Target3001-Bibliothek hat die Prototypen-Platine einen Fehler, der aber leicht behebbar ist:&#039;&#039;&#039; Die Einstecklöcher für die 3 MOSFETs IRLU2905 besitzen auf der Unterseite keine Lötpunkte. Daher müssen die IRLUs an die oben liegenden Lötpunkte festgelötet werden. Auf der unteren Seite bilden die Bohrlöcher leider einen Kurzschluss mit der unten liegenden Massefläche.&lt;br /&gt;
&lt;br /&gt;
Deshalb müssen vorher(!) die Löcher für die IRLU-Beinchen mit einem spitzen Gegenstand auf der Unterseite von dem Kurzschluss mit der unteren Massefläche befreit werden. Dazu geht man folgendermaßen vor:&lt;br /&gt;
&lt;br /&gt;
Spitzen Gegenstand (z.B. Teppichmesser, Spitze einer kleinen Kneifzange) von unten(!) ins Loch stecken und zwei- bis dreimal dreimal im Bohrloch drehen, damit die Verbindung der unteren Massefläche zur Durchkontaktierung unterbrochen wird. Anschließend mit dem Ohmmeter prüfen, ob der Kurzschluss behoben ist. Insgesamt sind es 6 Löcher, die so behandelt werden müssen, diese betreffen jeweils die Pins 1 und 2 der drei IRLU-MOSFETs. Pin3 muss nicht bearbeitet werden, da hier sowieso die Masse angeschlossen werden muss,&lt;br /&gt;
siehe auch das nächste Bild unten.&lt;br /&gt;
&lt;br /&gt;
Ist der Kurzschluss zur unteren Massefläche behoben, sollte man die IRLU-Beinchen trotzdem nicht durch das Bohrloch stecken, sondern:&lt;br /&gt;
&lt;br /&gt;
* Beinchen kürzen, vielleicht die Enden (wegen der Stabilität) 2mm umbiegen&lt;br /&gt;
* Oben in SMD-Manier anlöten.&lt;br /&gt;
&lt;br /&gt;
[[Datei:Wordclock-anschluesse.png|miniatur|Anschlüsse der Platine]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Im rechts stehenden Bild sind nicht nur die Lage der Anschlüsse verdeutlicht, sondern auch die Bohrlöcher für die IRLU-MOSFETs rot umkringelt, welche man von der Unterseite(!) her &amp;quot;behandeln&amp;quot; muss.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Möchte man einfarbige LEDs verwenden und auf die RGB-Steuerung verzichten, schließt man einfach zwei der drei RGB-PWM-Kanäle nicht an und verwendet stattdessen nur PWMR zur PWM-Steuerung. Die 2 zu PWMG und PWMB gehörenden IRLUs und die angeschlossenen 4 Widerstände am Gate der IRLUs kann man dann auch weglassen.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Bestückungsliste:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 Name                Wert&lt;br /&gt;
 C1,C3,C4,C6,C8,C9   100NF&lt;br /&gt;
 C10,C11,C12,C13     100NF&lt;br /&gt;
 C2                  4,7µF&lt;br /&gt;
 C5,C7               47µF&lt;br /&gt;
 D1                  1N4001&lt;br /&gt;
 IC1                 ATMEGA88&lt;br /&gt;
 IC2                 7805&lt;br /&gt;
 IC3                 TSOP1736&lt;br /&gt;
 IC4,IC5,IC6         74HCT595N&lt;br /&gt;
 IC7                 DS1307&lt;br /&gt;
 IC8,IC9,IC10,IC11   UDN2981A&lt;br /&gt;
 K4                  Wannenstecker 10&lt;br /&gt;
 K7,K8               Wannenstecker16&lt;br /&gt;
 K6                  LDR&lt;br /&gt;
 KL1                 KLEMME5POL&lt;br /&gt;
 Q1                  32,768KHz&lt;br /&gt;
 R1,R6,R7,R8,R10,R12 10K&lt;br /&gt;
 R2                  100&lt;br /&gt;
 R3,R4               4K7&lt;br /&gt;
 R5,R9,R11           82&lt;br /&gt;
 T1,T2,T3            IRLU2905&lt;br /&gt;
&lt;br /&gt;
== FAQ zur Bestückung ==&lt;br /&gt;
&lt;br /&gt;
 Q: Wie herum müssen die IRLUs eingelötet werden?&lt;br /&gt;
 A: Mit der Metallseite zur Schraubklemme hin, Pin1 ist also &amp;quot;oben&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
 Q: Welche ICs sollte ich sockeln?&lt;br /&gt;
 A: Wenn durch einen versehentlichen Kurzschluss bei der Freiluftverdrahtung der&lt;br /&gt;
    LEDs ein UDN2981 abfackelt, ist das ägerlich. Daher sollte man zumindest&lt;br /&gt;
    die UDNs sockeln. Ebenso den ATMega.&lt;br /&gt;
&lt;br /&gt;
 Q: Bei dem ATMega und der RTC ist nicht ersichtlich, wie herum sie eingebaut&lt;br /&gt;
    werden müssen?&lt;br /&gt;
 A: Doch, kann man sehen: Der Lötpunkt von Pin1 ist immer rechteckig, die&lt;br /&gt;
    anderen sind oval. Das gilt übrigens für fast alle Bauteile, auch die Wannen.&lt;br /&gt;
&lt;br /&gt;
 Q: Ich möchte oben statt der abgebildeten zwei 2x8-poligen Stiftleisten 16-polige&lt;br /&gt;
    Wannenstecker nehmen. Wie herum kommen dann die oberen Wannen drauf?&lt;br /&gt;
 A: Mit der Kerbe nach unten, sieht man auch am rechteckigen Lötpunkt.&lt;br /&gt;
&lt;br /&gt;
 Q: Kann ich (aus Kostengründen) auch einfarbige LEDs verwenden?&lt;br /&gt;
 A: Ja, einfach zwei der drei RGB-PWM-Kanäle nicht anschließen und nur PWMR (für Rot) benutzen.&lt;br /&gt;
    Die 2 zu PWMG und PWMB gehörenden IRLUs und die angeschlossenen 4 Widerstände am Gate der IRLUs&lt;br /&gt;
    kann man dann auch weglassen.&lt;br /&gt;
&lt;br /&gt;
== Anschluss eines DCF77-Moduls ==&lt;br /&gt;
&lt;br /&gt;
Der Anschluss eines DCF77-Moduls ist optional. Auch wenn kein DCF77-Modul angeschlossen wird, sollte der Pullup-Widerstand R7 (rechts unten neben den Elkos) eingelötet werden, um den µC-Eingang auf definiertem Pegel zu halten.&lt;br /&gt;
&lt;br /&gt;
Wird ein DCF77-Modul angeschlossen, kann mittels einer LED der DCF77-Empfang angezeigt werden. Die LED blinkt dann im Sekundenrhytmus und zeigt direkt die empfangenen DCF77-Impulse. Der Empfang wird kurze Zeit nach dem Einschalten aktiviert bzw. jede Stunde wiederholt. &lt;br /&gt;
&lt;br /&gt;
Die DCF77-LED kann folgendermaßen angeschlossen werden:&lt;br /&gt;
&lt;br /&gt;
[[Datei:Wannen.png|miniatur|Anschlüsse der Wannenstecker]]&lt;br /&gt;
&lt;br /&gt;
RGB-LED in Farbe:&lt;br /&gt;
&lt;br /&gt;
            /---|&amp;gt;|----| R |---- PWMR&lt;br /&gt;
 OUTG4   +--|---|&amp;gt;|----| R |---- PWMG&lt;br /&gt;
            \---|&amp;gt;|----| R |---- PWMB&lt;br /&gt;
&lt;br /&gt;
Einfarbige LED gedimmt:&lt;br /&gt;
&lt;br /&gt;
 OUTG4   +--|---|&amp;gt;|----| R |---- PWMR&lt;br /&gt;
&lt;br /&gt;
Einfarbige LED immer gleich hell:&lt;br /&gt;
&lt;br /&gt;
 OUTG4   +--|---|&amp;gt;|----| R |---- GND&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Bei Anschluss des DCF77-Moduls von Reichelt ist folgendes zu beachten:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 - Der Pull-Up-Widerstand R7 darf nicht eingelötet werden bzw. muss&lt;br /&gt;
   nachträglich wieder von der Platine entfernt werden - z.B. durch&lt;br /&gt;
   Abkneifen der Widerstandsdrähte mit einer Kneifzange. Grund: Das&lt;br /&gt;
   Reichelt-Modul hat keinen Open-Collector-Ausgang, sondern einen sehr&lt;br /&gt;
   schwachen Ausgang, welcher durch den Pullup-Widerstand permanent auf High&lt;br /&gt;
   gezogen wird.&lt;br /&gt;
&lt;br /&gt;
 - Es sollte direkt auf den Lötaugen des Reichelt-DCF77-Moduls ein&lt;br /&gt;
   Abblock-Kondensator von 100nF zwischen den Pins +UB und GND aufgelötet&lt;br /&gt;
   werden&lt;br /&gt;
&lt;br /&gt;
 - Der Eingang PON muss offen bleiben - entgegen den (falschen) Angaben&lt;br /&gt;
   im Reichelt Datenblatt!&lt;br /&gt;
&lt;br /&gt;
 - Das DCF77-Modul von Reichelt braucht eine Synchronisierungszeit von&lt;br /&gt;
   mindestens 10 Sekunden. Erst dann arbeitet der Empfänger.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Beim Anschluss des Conrad-Moduls ArtNr. 641138 ist folgendes zu beachten:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 - Der Pullup-Widerstand R7 muss unbedingt eingelötet sein&lt;br /&gt;
&lt;br /&gt;
 - Es muss der nicht(?)invertierte Open-Collector-Ausgang Nr. 3(?) an die&lt;br /&gt;
   WordClock angeschlossen werden.&lt;br /&gt;
&lt;br /&gt;
== Anschluss der LEDs ==&lt;br /&gt;
=== Zuordnung der Kanäle ===&lt;br /&gt;
&lt;br /&gt;
[[Datei:Wannen.png|miniatur|Anschlüsse der Wannenstecker]]&lt;br /&gt;
&lt;br /&gt;
Folgende Tabelle enthält die Zuordnung der Wörter zu den Pins der Wannenstecker.&lt;br /&gt;
Die Bezeichnungen der Pins entsprechen dem Schaltplan.&lt;br /&gt;
Zu beachten ist, dass die Reihenfolge der Wörter nichts mit der Anordnung auf der Frontplatte zu tun haben.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ &#039;&#039;&#039;Zuordnung Pins&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
! Wort || Anschluss&lt;br /&gt;
|-&lt;br /&gt;
| ES || OUT0&lt;br /&gt;
|-&lt;br /&gt;
| IST || OUT0&lt;br /&gt;
|-&lt;br /&gt;
| FÜNF || OUT1&lt;br /&gt;
|-&lt;br /&gt;
| ZEHN || OUT2&lt;br /&gt;
|-&lt;br /&gt;
| VOR || OUT3&lt;br /&gt;
|-&lt;br /&gt;
| DREI || OUT4&lt;br /&gt;
|-&lt;br /&gt;
| VIERTEL || OUT5&lt;br /&gt;
|-&lt;br /&gt;
| NACH || OUT6&lt;br /&gt;
|-&lt;br /&gt;
| VOR || OUT7&lt;br /&gt;
|-&lt;br /&gt;
| HALB || OUT8&lt;br /&gt;
|-&lt;br /&gt;
| S || OUT9&lt;br /&gt;
|-&lt;br /&gt;
| EIN || OUT10&lt;br /&gt;
|-&lt;br /&gt;
| ZWEI || OUT11&lt;br /&gt;
|-&lt;br /&gt;
| DREI || OUT12&lt;br /&gt;
|-&lt;br /&gt;
| VIER || OUT13&lt;br /&gt;
|-&lt;br /&gt;
| FÜNF || OUT14&lt;br /&gt;
|-&lt;br /&gt;
| SECHS || OUT15&lt;br /&gt;
|-&lt;br /&gt;
| SIEBEN || OUT16&lt;br /&gt;
|-&lt;br /&gt;
| ACHT || OUT17&lt;br /&gt;
|-&lt;br /&gt;
| NEUN || OUT18&lt;br /&gt;
|-&lt;br /&gt;
| ZEHN || OUT19&lt;br /&gt;
|-&lt;br /&gt;
| ELF || OUT20&lt;br /&gt;
|-&lt;br /&gt;
| ZWÖLF || OUT21&lt;br /&gt;
|-&lt;br /&gt;
| UHR || OUT22&lt;br /&gt;
|-&lt;br /&gt;
| min1 || OUTL1&lt;br /&gt;
|-&lt;br /&gt;
| min2 || OUTL2&lt;br /&gt;
|-&lt;br /&gt;
| min3 || OUTL3&lt;br /&gt;
|-&lt;br /&gt;
| min3 || OUTL4&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Beschaltungsvarianten der LEDs===&lt;br /&gt;
&lt;br /&gt;
Da die Schaltung genügend Power hat, um eine Unmenge an RGB-LEDs zu treiben, gibt es folgende 3 Möglichkeiten, die auch mixbar sind:&lt;br /&gt;
&lt;br /&gt;
1. Pro Wort für jeden Buchstaben eine RGB-LED (mit gemeinsamer Anode) in&lt;br /&gt;
Parallelschaltung (natürlich mit geeignetem Vorwiderstand pro LED)&lt;br /&gt;
&lt;br /&gt;
Prinzip (am Beispiel des Wortes &amp;quot;VIER&amp;quot;):&lt;br /&gt;
&lt;br /&gt;
         /---|&amp;gt;|----| R1R |---- PWMR&lt;br /&gt;
      +--|---|&amp;gt;|----| R1G |---- PWMG     &amp;quot;V&amp;quot;&lt;br /&gt;
      |  \---|&amp;gt;|----| R1B |---- PWMB&lt;br /&gt;
      |&lt;br /&gt;
      |  /---|&amp;gt;|----| R2R |---- PWMR&lt;br /&gt;
      +--|---|&amp;gt;|----| R2G |---- PWMG     &amp;quot;I&amp;quot;&lt;br /&gt;
      |  \---|&amp;gt;|----| R2B |---- PWMB&lt;br /&gt;
 OUTx-+&lt;br /&gt;
      |  /---|&amp;gt;|----| R3R |---- PWMR&lt;br /&gt;
      +--|---|&amp;gt;|----| R3G |---- PWMG     &amp;quot;E&amp;quot;&lt;br /&gt;
      |  \---|&amp;gt;|----| R3B |---- PWMB&lt;br /&gt;
      |&lt;br /&gt;
      |  /---|&amp;gt;|----| R4R |---- PWMR&lt;br /&gt;
      +--|---|&amp;gt;|----| R4G |---- PWMG     &amp;quot;R&amp;quot;&lt;br /&gt;
         \---|&amp;gt;|----| R4B |---- PWMB&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
2. Pro Wort für jeden Buchstaben eine RGB-LED in Reihenschaltung (mit&lt;br /&gt;
nur 1 Vorwiderstand für die ganze Reihe, bzw. 3 wegen RGB). Das geht&lt;br /&gt;
aber nur, wenn die RGB-LEDs unabhängige Anoden und Kathoden haben (ja,&lt;br /&gt;
die gibt es).&lt;br /&gt;
&lt;br /&gt;
Prinzip:&lt;br /&gt;
                         &amp;quot;V&amp;quot;    &amp;quot;I&amp;quot;    &amp;quot;E&amp;quot;    &amp;quot;R&amp;quot;&lt;br /&gt;
         /----| R1R |----|&amp;gt;|----|&amp;gt;|----|&amp;gt;|----|&amp;gt;|---- PWMR&lt;br /&gt;
 OUTx --+-----| R1G |----|&amp;gt;|----|&amp;gt;|----|&amp;gt;|----|&amp;gt;|---- PWMG&lt;br /&gt;
         \----| R1B |----|&amp;gt;|----|&amp;gt;|----|&amp;gt;|----|&amp;gt;|---- PWMB&lt;br /&gt;
&lt;br /&gt;
Theoretisch könnte man solche Streifen als Platine herstellen, welche man dann immer auf die gewünschte Länge kürzt, als 1, 2, 3 ... 7 Buchstaben.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
3. Pro Wort nur eine LED. Für längere Wörter (ab 3 bis 4 Buchstaben) kann man natürlich auch 2 LEDs parallel oder in Reihe schalten, siehe 1. und 2.&lt;br /&gt;
&lt;br /&gt;
Prinzip:&lt;br /&gt;
          &amp;quot;V I E R&amp;quot;&lt;br /&gt;
         /---|&amp;gt;|----| R1R |---- PWMR&lt;br /&gt;
 OUTx +-+----|&amp;gt;|----| R1G |---- PWMG&lt;br /&gt;
         \---|&amp;gt;|----| R1B |---- PWMB&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Bei Verwendung von einfarbigen LEDs vereinfachen sich die Prinzip-Schaltungen wie folgt:&lt;br /&gt;
&lt;br /&gt;
1. Parallelschaltung, eine LED pro Buchstabe im Wort:&lt;br /&gt;
&lt;br /&gt;
       /----|&amp;gt;|----| R1 |---- PWMR     &amp;quot;V&amp;quot;&lt;br /&gt;
      +-----|&amp;gt;|----| R2 |---- PWMR     &amp;quot;I&amp;quot;&lt;br /&gt;
 OUTx-+&lt;br /&gt;
      +-----|&amp;gt;|----| R3 |---- PWMR     &amp;quot;E&amp;quot;&lt;br /&gt;
       \----|&amp;gt;|----| R4 |---- PWMR     &amp;quot;R&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
2. Reihenschaltung, eine LED pro Buchstabe im Wort:&lt;br /&gt;
&lt;br /&gt;
                       &amp;quot;V&amp;quot;    &amp;quot;I&amp;quot;    &amp;quot;E&amp;quot;    &amp;quot;R&amp;quot;&lt;br /&gt;
 OUTx ----| R1 |----|&amp;gt;|----|&amp;gt;|----|&amp;gt;|----|&amp;gt;|---- PWMR&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
3. Pro (kurzem) Wort nur eine LED:&lt;br /&gt;
&lt;br /&gt;
          &amp;quot;V I E R&amp;quot;&lt;br /&gt;
 OUTx +------|&amp;gt;|----| R1 |---- PWMR&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Zum Berechnen der Vorwiderstände kann z.B. dieser Rechner&lt;br /&gt;
verwendet werden: &#039;&#039;&#039;[http://www.elektronik-kompendium.de/sites/bau/1109111.htm Vorwiderstands-Rechner]&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Verwendet man SMD-LEDs mit einem Abstrahlwinkel von 120°, kann man mit einer LED bei einem Abstand von ca. 3,5 cm immer zwei Buchstaben ausleuchten. Wenn man jedes Buchstabenpaar mit einer SMD-LED beleuchtet, dann benötigt man jeweils:&lt;br /&gt;
&lt;br /&gt;
* 1 LED für 1er und 2er-Wort&lt;br /&gt;
* 2 LEDs für 3er und 4er Wort&lt;br /&gt;
* 3 LEDs für 5er und 6er Wort und&lt;br /&gt;
* 4 LEDs für 7er Wort &lt;br /&gt;
&lt;br /&gt;
Das macht dann, inkl. der 4 Minutenpunkte, insgesamt 55 LEDs.&lt;br /&gt;
&lt;br /&gt;
Bedingung ist aber ein Diffusor direkt hinter den Buchstaben, damit die LEDs selbst nicht sichtbar sind.&lt;br /&gt;
&lt;br /&gt;
== Sammelbestellung der Platine ==&lt;br /&gt;
Stand Januar 2010:&lt;br /&gt;
&lt;br /&gt;
Es gab Ende 2009 eine Vorabbestellung in kleinerer Auflage (lediglich 20 Platinen), damit die Entwickler schon mal testen und entwickeln konnten. Leider fiel durch die geringe Stückzahl der Preis entsprechend hoch aus. Die Prototypen-Serie ist mittlerweile vergriffen.&lt;br /&gt;
&lt;br /&gt;
Die nächste Sammelbestellung sollte schon eine höhere Auflage haben, um die Preise pro Platine zu minimieren. Bei einer Auflage von 20 Stück kostet jede einzelne Platine ca. 11 EUR, bei 100 Stück sind es schon weniger als 5 EUR. &lt;br /&gt;
Um herauszufinden, wie groß der Bedarf an Platinen ist, sollte sich jeder Interessent unverbindlich melden bei Frank M. ([http://www.mikrocontroller.net/user/show/ukw ukw]). &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Aktueller Zählerstand der Interessenten am 07.01.2010 (4. Tag seit dem Aufruf): Minimum: 43, Maximum: 49 Platinen.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Ich werde versuchen, hier jeden Tag den aktuellen Stand einzutragen.&lt;br /&gt;
&lt;br /&gt;
Selbstverständlich wird die nächste Platinen-Version auch nicht mehr den Kurzschluss, den die Prototypen-Platine hatte, aufweisen. Geplant ist auch,&lt;br /&gt;
die Platine wesentlich schmaler als den Prototypen zu gestalten, nämlich&lt;br /&gt;
mit den Maßen 146mm x 34,3mm, also mit 3,5 cm Breite richtig schön schmal :-)&lt;br /&gt;
&lt;br /&gt;
== Frontplatte ==&lt;br /&gt;
=== Konzept ===&lt;br /&gt;
&#039;&#039;&#039;[http://www.mikrocontroller.net/topic/156661#1481337 Brauche Hilfe beim Bau einer Uhr]&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Bei interesse an einer Frontplatte kann man mir (Benutzer [http://www.mikrocontroller.net/user/show/promeus promeus]) eine Nachricht hinterlassen.&lt;br /&gt;
&lt;br /&gt;
Der erste Prototyp aus Alu wird zu Beginn Dezember 09 erwartet. Sobald Bilder verfügbar sind werden die hier verlinkt. Preis ist noch unbekannt.&lt;br /&gt;
&lt;br /&gt;
2 Standard Versionen werden gemacht, jeweils in 45cm x 45cm&lt;br /&gt;
&lt;br /&gt;
* Englisch&lt;br /&gt;
* Deutsch mit Bezeichnung &amp;quot;viertel vor&amp;quot; und &amp;quot;drei Viertel&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Die Minutenanzeige (1 - 4 Minuten) werden jeweils mit einem Punkt an der Ecke der Frontplatte dargestellt.&lt;br /&gt;
&lt;br /&gt;
Anzahl Interessenten Stand 08.01.2010: 41&lt;br /&gt;
(die einzelnen Versionen werden noch abgeklärt)&lt;br /&gt;
&lt;br /&gt;
==== Deutsch ====&lt;br /&gt;
&lt;br /&gt;
 E S K I S T A F Ü N F    &amp;lt;nowiki&amp;gt;==&amp;gt; ES IST FÜNF&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
 K Z E H N R B V O R G    &amp;lt;nowiki&amp;gt;==&amp;gt; ZEHN VOR&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
 D R E I V I E R T E L    &amp;lt;nowiki&amp;gt;==&amp;gt; DREI VIERTEL&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
 N A C H V O R H A L B    &amp;lt;nowiki&amp;gt;==&amp;gt; NACH VOR HALB&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
 X F Ü N F Ä M Z W E I    &amp;lt;nowiki&amp;gt;==&amp;gt; FÜNF ZWEI&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
 S I E B E N A V I E R    &amp;lt;nowiki&amp;gt;==&amp;gt; SIEBEN VIER&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
 Z E H N T O S E C H S    &amp;lt;nowiki&amp;gt;==&amp;gt; ZEHN SECHS&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
 L D R E I U A C H T J    &amp;lt;nowiki&amp;gt;==&amp;gt; DREI ACHT&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
 E L F N E U N E I N S    &amp;lt;nowiki&amp;gt;==&amp;gt; ELF NEUN EIN|S&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
 B Z W Ö L F G A U H R    &amp;lt;nowiki&amp;gt;==&amp;gt; ZWÖLF UHR&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Bei der &amp;quot;DREI-VIERTEL VARIANTE&amp;quot;:&lt;br /&gt;
Z.B. ist &amp;quot;DREIVIERTEL ZEHN&amp;quot; statt es ist &amp;quot;VIERTEL VOR ZEHN&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Hier der aktuelle Entwurf der Buchstaben-Anordnung als Bild: &#039;&#039;&#039;[[Media:WordclockFront_ger.pdf]]&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==== Englisch ====&lt;br /&gt;
&lt;br /&gt;
 I T K I S G H A L F E   &amp;lt;nowiki&amp;gt;==&amp;gt;  it_is half&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
 T E N Y Q U A R T E R   &amp;lt;nowiki&amp;gt;==&amp;gt;  ten quarter&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
 D T W E N T Y F I V E   &amp;lt;nowiki&amp;gt;==&amp;gt;  twenty|five&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
 T O P A S T E F O U R   &amp;lt;nowiki&amp;gt;==&amp;gt;  to past four&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
 F I V E T W O N I N E   &amp;lt;nowiki&amp;gt;==&amp;gt;  five two nine&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
 T H R E E T W E L V E   &amp;lt;nowiki&amp;gt;==&amp;gt;  three twelve&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
 B E L E V E N O N E S   &amp;lt;nowiki&amp;gt;==&amp;gt;  eleven one&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
 S E V E N W E I G H T   &amp;lt;nowiki&amp;gt;==&amp;gt;  seven eight&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
 I T E N S I X T I E S   &amp;lt;nowiki&amp;gt;==&amp;gt;  ten six&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
 T I N E O I C L O C K   &amp;lt;nowiki&amp;gt;==&amp;gt;  o_clock&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Und als Bild: &#039;&#039;&#039;[[Media:WordclockFront_eng.pdf]]&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Materialien ===&lt;br /&gt;
* PMMA seitlich beleuchtet: [http://www.mikrocontroller.net/attachment/62784/PMMA_seitlich_beleuchtet.gif bild]&lt;br /&gt;
* PMMA von hinten gefräst: [http://www.mikrocontroller.net/attachment/62767/PMMA_von_hinten_fraesen.gif bild]&lt;br /&gt;
&lt;br /&gt;
= Software =&lt;br /&gt;
== Module ==&lt;br /&gt;
&lt;br /&gt;
=== DCF77 ===&lt;br /&gt;
&lt;br /&gt;
Zur Programmierung siehe den Artikel [[DCF77-Funkwecker_mit_AVR]]. Im Abschnitt &#039;&#039;Programmierung&#039;&#039; ist das Funksignal dokumentiert, zusammen mit einem Beispiel (Bitstrom und Bedeutung).&lt;br /&gt;
&lt;br /&gt;
Codebeispiel siehe &#039;&#039;&#039;[[http://www.mikrocontroller.net/topic/25071 DFC_77]]&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Software-Entwickler: Torsten Giese ([http://www.mikrocontroller.net/user/show/wawibu wawibu])&lt;br /&gt;
&lt;br /&gt;
=== Automatische Helligkeitsregelung ===&lt;br /&gt;
&lt;br /&gt;
Die Helligkeit des Displays wird über einen LDR gesteuert.&lt;br /&gt;
&lt;br /&gt;
Software-Entwickler: Rene H. ([http://www.mikrocontroller.net/user/show/promeus promeus])&lt;br /&gt;
&lt;br /&gt;
=== RTC ===&lt;br /&gt;
&lt;br /&gt;
Vorgesehen ist die Verwendung eines batteriegepufferten DS1307 - über I2C angeschlossen.&lt;br /&gt;
&lt;br /&gt;
Software-Entwickler: Frank M. ([http://www.mikrocontroller.net/user/show/ukw ukw])&lt;br /&gt;
&lt;br /&gt;
=== IR ===&lt;br /&gt;
&lt;br /&gt;
Es werden folgende Infrarot-Protokolle verstanden:&lt;br /&gt;
&lt;br /&gt;
 RC5:        Philips und andere europäische Hersteller.&lt;br /&gt;
 SIRCS:      Sony.&lt;br /&gt;
 NEC:        NEC, Yamaha, Canon, Tevion, Harman/Kardon, Hitachi, JVC,&lt;br /&gt;
             Pioneer, Toshiba, Xoro, Orion, NoName &lt;br /&gt;
             und viele weitere japanische Hersteller.&lt;br /&gt;
 SAMSUNG:    Samsung&lt;br /&gt;
 MATSUSHITA: Matsushita&lt;br /&gt;
 KASEIKYO:   Panasonic, Denon und andere japanische Hersteller, welche Mitglied&lt;br /&gt;
             der  &amp;quot;Japan&#039;s Association for Electric Home Application&amp;quot; sind.&lt;br /&gt;
 RECS80      Philips, Nokia, Thomson, Nordmende, Telefunken, Saba&lt;br /&gt;
&lt;br /&gt;
Über die automatische Erkennung des Protokolls werden die nötigen Tastatur-Befehl-Bits aus den Infrarot-Daten extrahiert - ohne Kenntnis, welche Tasten da eigentlich tatsächlich gedrückt wurden. So eine Tabelle würde den Speicher des µCs sprengen. Deshalb passiert die Zuordnung der Tasten zu WordClock-Befehlen in einer kleinen Anlern-Prozedur, die einmal nach dem ersten Boot-Vorgang ausgeführt werden muss.&lt;br /&gt;
&lt;br /&gt;
Software-Entwickler: Frank M. ([http://www.mikrocontroller.net/user/show/ukw ukw])&lt;br /&gt;
&lt;br /&gt;
=== PWM ===&lt;br /&gt;
&lt;br /&gt;
Die PWM steuert die 3 RGB-Kanäle. Damit ist freie Farbenwahl möglich.&lt;br /&gt;
&lt;br /&gt;
Software-Entwickler: Frank M. ([http://www.mikrocontroller.net/user/show/ukw ukw])&lt;br /&gt;
&lt;br /&gt;
=== Display ===&lt;br /&gt;
&lt;br /&gt;
Das Display wird nicht als 10x11-Matrix angesteuert, sondern wortweise. Dies war nötig, weil hier RGB-LEDs zum Einsatz kommen, um beliebige Farben anzuzeigen. Daraus ergibt sich dann für die Wörter eine 24x3-Matrix. Ebenso können die Minutenpunkte farbig angesteuert werden.&lt;br /&gt;
&lt;br /&gt;
Die Farben sind kein Muss - in der Minimalbeschaltung können auch einfarbige LEDs zum Einsatz kommen.&lt;br /&gt;
&lt;br /&gt;
Software-Entwickler: Vlad Tepesch ([http://www.mikrocontroller.net/user/show/vlad_tepesch vlad_tepesch])&lt;br /&gt;
&lt;br /&gt;
=== Benutzer-Interaktion ===&lt;br /&gt;
&lt;br /&gt;
Mit der Fernbedienung wird folgendes möglich sein:&lt;br /&gt;
&lt;br /&gt;
 * Einmaliges Anlernen der Fernbedienung&lt;br /&gt;
 * Anpassen der automatischen Helligkeitssteuerung&lt;br /&gt;
 * Einstellen des Farbprogramms (Übergänge etc)&lt;br /&gt;
 * Stellen der Uhr (wenn kein DCF77-Modul angeschlossen)&lt;br /&gt;
 * ...&lt;br /&gt;
&lt;br /&gt;
Software-Entwickler: Vlad Tepesch ([http://www.mikrocontroller.net/user/show/vlad_tepesch vlad_tepesch])&lt;br /&gt;
&lt;br /&gt;
= Abstimmungen =&lt;br /&gt;
Eine Stimme ist ein Strich. Nach 5 Strichen bitte ein Leerzeichen einfügen.&amp;lt;br&amp;gt;&lt;br /&gt;
DCF: ||||| ||||| ||||| ||||| |||| |&amp;lt;br&amp;gt;&lt;br /&gt;
ethernet ntp client: ||||| &amp;lt;br&amp;gt;&lt;br /&gt;
IR für Fernbedienung: ||||| ||| &amp;lt;br&amp;gt;&lt;br /&gt;
Bewegungsmelder: ||||| | &amp;lt;br&amp;gt;&lt;br /&gt;
Bluetooth: |&amp;lt;br&amp;gt;&lt;br /&gt;
IR zum PC für Kommunikation/Bootloader |&amp;lt;br&amp;gt;&lt;br /&gt;
RFM12 für Kommunikation/Bootloader |&amp;lt;br&amp;gt;&lt;br /&gt;
NTP Server (um eine genaue Zeit ins Netzwerk zu verteilen) |&amp;lt;br&amp;gt;&lt;br /&gt;
usw: |&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Word Clock als PC-Programm =&lt;br /&gt;
[http://bralug.de/wiki/Wort_Uhr Hier] ist der [http://bralug.de/wiki/Wort_Uhr Quelltext] zu einer X11-Version der Word Clock zu finden.&lt;/div&gt;</summary>
		<author><name>Promeus</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=Word_Clock&amp;diff=40907</id>
		<title>Word Clock</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=Word_Clock&amp;diff=40907"/>
		<updated>2009-11-24T13:15:49Z</updated>

		<summary type="html">&lt;p&gt;Promeus: /* Konzept */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Was ist das? =&lt;br /&gt;
Es geht hier um folgenden Thread [1], in dem der Bau einer Uhr disktuiert wird. Als Inspiration kann diese [2] dienen. Es wird keine patentrechtlich bedenkliche Kopie :-)&amp;lt;br&amp;gt;&lt;br /&gt;
[1] [http://www.mikrocontroller.net/topic/156661 Beitrag: Brauche Hilfe beim Bau einer Uhr]&amp;lt;br&amp;gt;&lt;br /&gt;
[2] [http://www.qlocktwo.com http://www.qlocktwo.com]&lt;br /&gt;
&lt;br /&gt;
= Hardware =&lt;br /&gt;
== Elektronik ==&lt;br /&gt;
* Atmega88 oder Atmega168&lt;br /&gt;
* 24-Bit-Schieberegister an SPI für 24 Wörter&lt;br /&gt;
* 4 Output-Pins für Minutenanzeige&lt;br /&gt;
* 4 weitere GPOS - für allgemeine Zwecke&lt;br /&gt;
* RGB-Steuerung über PWM gegen GND, d.h. 32x3-Matrix&lt;br /&gt;
&lt;br /&gt;
== Sammelbestellung der Platine ==&lt;br /&gt;
Es gibt eine Vorabbestellung in kleiner Auflage (lediglich 20 Platinen), damit die Entwickler schon mal testen können. Leider fällt damit auch ein Stückpreis von ca. 11 EUR an. Ungefähr 10 Stück benötigen die Entwickler selbst, weitere 10 stehen ab Anfang Dezember zur Verfügung.&lt;br /&gt;
&lt;br /&gt;
Wer eine der (noch ungetesteten!) Vorabversion der Platine haben möchte, um sich die Uhr zu Weihnachten zu schenken, kann sich melden bei Frank M. ([http://www.mikrocontroller.net/user/show/ukw ukw]). &lt;br /&gt;
&lt;br /&gt;
Erst, wenn die Schaltung komplett durchgetestet wurde und die Software einen Stand erreicht hat, dass die Uhr läuft, wird es eine größere Sammelbestellung geben, z.B. wäre ein möglicher Kandidat:&lt;br /&gt;
&lt;br /&gt;
http://www.mikrocontroller.net/topic/156661#1485600&lt;br /&gt;
&lt;br /&gt;
== Frontplatte ==&lt;br /&gt;
=== Konzept ===&lt;br /&gt;
http://www.mikrocontroller.net/topic/156661#1481337&lt;br /&gt;
&lt;br /&gt;
Bei interesse an einer Frontplatte kann man mir (Benutzer [http://www.mikrocontroller.net/user/show/promeus promeus]) eine Nachricht hinterlassen.&lt;br /&gt;
&lt;br /&gt;
Der erste Prototyp aus Alu wird zu Beginn Dezember 09 erwartet. Sobald Bilder verfügbar sind werden die hier verlinkt. Preis ist noch unbekannt.&lt;br /&gt;
&lt;br /&gt;
2 Standard Versionen werden gemacht, jeweils in 40cm x 40cm&lt;br /&gt;
&lt;br /&gt;
* Englisch&lt;br /&gt;
* Deutsch mit Bezeichnung &amp;quot;viertel vor&amp;quot; und &amp;quot;drei Viertel&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Die Minutenanzeige (1 - 4 Minuten) werden jeweils mit einem Punkt an der Ecke der Frontplatte dargestellt.&lt;br /&gt;
&lt;br /&gt;
Anzahl Interessenten Stand 24.11.2009: 31&lt;br /&gt;
(die einzelnen Versionen werden noch abgeklärt)&lt;br /&gt;
&lt;br /&gt;
==== Deutsch ====&lt;br /&gt;
&lt;br /&gt;
 E S K I S T A F Ü N F    &amp;lt;nowiki&amp;gt;==&amp;gt; ES IST FÜNF&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
 Z E H N B Y G V O R G    &amp;lt;nowiki&amp;gt;==&amp;gt; ZEHN VOR&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
 D R E I V I E R T E L    &amp;lt;nowiki&amp;gt;==&amp;gt; DREI VIERTEL&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
 N A C H V O R H A L B    &amp;lt;nowiki&amp;gt;==&amp;gt; NACH VOR HALB&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
 E I N S X Ä M Z W E I    &amp;lt;nowiki&amp;gt;==&amp;gt; EIN|S ZWEI&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
 D R E I A U J V I E R    &amp;lt;nowiki&amp;gt;==&amp;gt; DREI VIER&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
 F Ü N F T O S E C H S    &amp;lt;nowiki&amp;gt;==&amp;gt; FÜNF SECHS&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
 S I E B E N L A C H T    &amp;lt;nowiki&amp;gt;==&amp;gt; SIEBEN ACHT&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
 N E U N Z E H N E L F    &amp;lt;nowiki&amp;gt;==&amp;gt; NEUN ZEHN ELF&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
 Z W Ö L F U N K U H R    &amp;lt;nowiki&amp;gt;==&amp;gt; ZWÖLF UHR / FUNKUHR&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Bei der &amp;quot;DREI VIERTEL VARIANTE&amp;quot;:&lt;br /&gt;
Z.B. ist &amp;quot;DREI VIERTEL ZEHN&amp;quot; statt es ist &amp;quot;VIERTEL VOR ZEHN&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
==== Englisch ====&lt;br /&gt;
&lt;br /&gt;
 I T K I S G H A L F E   &amp;lt;nowiki&amp;gt;==&amp;gt;  it_is half&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
 T E N Y Q U A R T E R   &amp;lt;nowiki&amp;gt;==&amp;gt;  ten quarter&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
 D T W E N T Y F I V E   &amp;lt;nowiki&amp;gt;==&amp;gt;  twenty|five&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
 T O P A S T E F O U R   &amp;lt;nowiki&amp;gt;==&amp;gt;  to past four&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
 F I V E T W O N I N E   &amp;lt;nowiki&amp;gt;==&amp;gt;  five two nine&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
 T W E L V E T H R E E   &amp;lt;nowiki&amp;gt;==&amp;gt;  twelve three&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
 B E L E V E N O N E S   &amp;lt;nowiki&amp;gt;==&amp;gt;  eleven one&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
 W E I G H T S E V E N   &amp;lt;nowiki&amp;gt;==&amp;gt;  eight seven&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
 I T E N S I X T I E S   &amp;lt;nowiki&amp;gt;==&amp;gt;  ten six&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
 R A D I O I C L O C K   &amp;lt;nowiki&amp;gt;==&amp;gt;  o_clock / Radio Clock&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Materialien ===&lt;br /&gt;
* PMMA seitlich beleuchtet: [http://www.mikrocontroller.net/attachment/62784/PMMA_seitlich_beleuchtet.gif bild]&lt;br /&gt;
* PMMA von hinten gefräst: [http://www.mikrocontroller.net/attachment/62767/PMMA_von_hinten_fraesen.gif bild]&lt;br /&gt;
&lt;br /&gt;
= Software =&lt;br /&gt;
== Module ==&lt;br /&gt;
http://www.mikrocontroller.net/topic/156661#1483236&lt;br /&gt;
=== DCF77 ===&lt;br /&gt;
&lt;br /&gt;
Zur Programmierung siehe den Artikel [[DCF77-Funkwecker_mit_AVR]]. Im Abschnitt &#039;&#039;Programmierung&#039;&#039; ist das Funksignal dokumentiert, zusammen mit einem Beispiel (Bitstrom und Bedeutung).&lt;br /&gt;
&lt;br /&gt;
Codebeispiel siehe [[http://www.mikrocontroller.net/topic/25071 DFC_77]].&lt;br /&gt;
&lt;br /&gt;
Software-Entwickler: Torsten Giese ([http://www.mikrocontroller.net/user/show/wawibu wawibu])&lt;br /&gt;
&lt;br /&gt;
=== Automatische Helligkeitsregelung ===&lt;br /&gt;
&lt;br /&gt;
Die Helligkeit des Displays wird über einen LDR gesteuert.&lt;br /&gt;
&lt;br /&gt;
Software-Entwickler: Rene H. ([http://www.mikrocontroller.net/user/show/promeus promeus])&lt;br /&gt;
&lt;br /&gt;
=== RTC ===&lt;br /&gt;
&lt;br /&gt;
Vorgesehen ist die Verwendung eines batteriegepufferten DS1307 - über I2C angeschlossen.&lt;br /&gt;
&lt;br /&gt;
Software-Entwickler: Frank M. ([http://www.mikrocontroller.net/user/show/ukw ukw])&lt;br /&gt;
&lt;br /&gt;
=== IR ===&lt;br /&gt;
&lt;br /&gt;
Es wird es eine RC5-kompatible IR-Fernbedienung unterstützt.&lt;br /&gt;
&lt;br /&gt;
Software-Entwickler: Frank M. ([http://www.mikrocontroller.net/user/show/ukw ukw])&lt;br /&gt;
&lt;br /&gt;
=== PWM ===&lt;br /&gt;
&lt;br /&gt;
Die PWM steuert die 3 RGB-Kanäle. Damit ist freie Farbenwahl möglich.&lt;br /&gt;
&lt;br /&gt;
Software-Entwickler: Frank M. ([http://www.mikrocontroller.net/user/show/ukw ukw])&lt;br /&gt;
&lt;br /&gt;
=== Display ===&lt;br /&gt;
&lt;br /&gt;
Das Display wird nicht als 10x11-Matrix angesteuert, sondern wortweise. Dies war nötig, weil hier RGB-LEDs zum Einsatz kommen, um beliebige Farben anzuzeigen. Daraus ergibt sich dann für die Wörter eine 24x3-Matrix. Ebenso können die Minutenpunkte farbig angesteuert werden.&lt;br /&gt;
&lt;br /&gt;
Die Farben sind kein Muss - in der Minimalbeschaltung können auch einfarbige LEDs zum Einsatz kommen.&lt;br /&gt;
&lt;br /&gt;
Software-Entwickler: Vlad Tepesch ([http://www.mikrocontroller.net/user/show/vlad_tepesch vlad_tepesch])&lt;br /&gt;
&lt;br /&gt;
=== Benutzer-Interaktion ===&lt;br /&gt;
&lt;br /&gt;
Mit der Fernbedienung wird folgendes möglich sein:&lt;br /&gt;
&lt;br /&gt;
 * Anpassen der automatischen Helligkeitssteuerung&lt;br /&gt;
 * Einstellen des Farbprogramms (Übergänge etc)&lt;br /&gt;
 * Stellen der Uhr (wenn kein DCF77-Modul angeschlossen)&lt;br /&gt;
 * ...&lt;br /&gt;
&lt;br /&gt;
Software-Entwickler: Vlad Tepesch ([http://www.mikrocontroller.net/user/show/vlad_tepesch vlad_tepesch])&lt;br /&gt;
&lt;br /&gt;
= Abstimmungen =&lt;br /&gt;
Eine Stimme ist ein Strich. Nach 5 Strichen bitte ein Leerzeichen einfügen.&amp;lt;br&amp;gt;&lt;br /&gt;
DCF: ||||| ||||| ||||| ||&amp;lt;br&amp;gt;&lt;br /&gt;
ethernet ntp client: ||| &amp;lt;br&amp;gt;&lt;br /&gt;
IR für Fernbedienung: ||||| | &amp;lt;br&amp;gt;&lt;br /&gt;
Bewegungsmelder: ||||&amp;lt;br&amp;gt;&lt;br /&gt;
Bluetooth: |&amp;lt;br&amp;gt;&lt;br /&gt;
IR zum PC für Kommunikation/Bootloader |&amp;lt;br&amp;gt;&lt;br /&gt;
RFM12 für Kommunikation/Bootloader |&amp;lt;br&amp;gt;&lt;br /&gt;
usw: |&amp;lt;br&amp;gt;&lt;/div&gt;</summary>
		<author><name>Promeus</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=Word_Clock&amp;diff=40732</id>
		<title>Word Clock</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=Word_Clock&amp;diff=40732"/>
		<updated>2009-11-17T13:19:28Z</updated>

		<summary type="html">&lt;p&gt;Promeus: /* Konzept */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Was ist das? =&lt;br /&gt;
Es geht hier um folgenden Thread [1], in dem der Bau einer Uhr disktuiert wird. Als Inspiration kann diese [2] dienen. Es wird keine patentrechtlich bedenkliche Kopie :-)&amp;lt;br&amp;gt;&lt;br /&gt;
[1] [http://www.mikrocontroller.net/topic/156661 Beitrag: Brauche Hilfe beim Bau einer Uhr]&amp;lt;br&amp;gt;&lt;br /&gt;
[2] [http://www.qlocktwo.com http://www.qlocktwo.com]&lt;br /&gt;
&lt;br /&gt;
= Hardware =&lt;br /&gt;
== Elektronik ==&lt;br /&gt;
* Atmega8/88&lt;br /&gt;
* Schieberegister an SPI&lt;br /&gt;
* high-side-PWM pro Schieberegister,&lt;br /&gt;
* ...&lt;br /&gt;
aktueller Stand:&lt;br /&gt;
http://www.mikrocontroller.net/topic/156661#1484071&lt;br /&gt;
== Sammelbestellung der Platine ==&lt;br /&gt;
http://www.mikrocontroller.net/topic/156661#1485600&lt;br /&gt;
== Frontplatte ==&lt;br /&gt;
=== Konzept ===&lt;br /&gt;
http://www.mikrocontroller.net/topic/156661#1481337&lt;br /&gt;
&lt;br /&gt;
Bei interesse an einer Frontplatte kann man mir (Benutzer [http://www.mikrocontroller.net/user/show/promeus promeus]) eine Nachricht hinterlassen.&lt;br /&gt;
&lt;br /&gt;
Der erste Prototyp aus Alu wird zu Beginn Dezember 09 erwartet. Sobald Bilder verfügbar sind werden die hier verlinkt. Preis ist noch unbekannt.&lt;br /&gt;
&lt;br /&gt;
2 Standard Versionen werden gemacht, jeweils in 40cm x 40cm&lt;br /&gt;
&lt;br /&gt;
* Englisch&lt;br /&gt;
* Deutsch mit Bezeichnung &amp;quot;viertel vor&amp;quot; und &amp;quot;drei Viertel&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Die Minutenanzeige (1 - 4 Minuten) werden jeweils mit einem Punkt an der Ecke der Frontplatte dargestellt.&lt;br /&gt;
&lt;br /&gt;
Anzahl Interessenten Stand 17.11.2009: 28&lt;br /&gt;
(die einzelnen Versionen werden noch abgeklärt)&lt;br /&gt;
&lt;br /&gt;
==== Deutsch ====&lt;br /&gt;
&lt;br /&gt;
 E S K I S T A F Ü N F    &amp;lt;nowiki&amp;gt;==&amp;gt; ES IST FÜNF&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
 Z E H N B Y G V O R G    &amp;lt;nowiki&amp;gt;==&amp;gt; ZEHN VOR&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
 D R E I V I E R T E L    &amp;lt;nowiki&amp;gt;==&amp;gt; DREI VIERTEL&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
 N A C H V O R H A L B    &amp;lt;nowiki&amp;gt;==&amp;gt; NACH VOR HALB&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
 E I N S X Ä M Z W E I    &amp;lt;nowiki&amp;gt;==&amp;gt; EIN|S ZWEI&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
 D R E I A U J V I E R    &amp;lt;nowiki&amp;gt;==&amp;gt; DREI VIER&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
 F Ü N F T O S E C H S    &amp;lt;nowiki&amp;gt;==&amp;gt; FÜNF SECHS&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
 S I E B E N L A C H T    &amp;lt;nowiki&amp;gt;==&amp;gt; SIEBEN ACHT&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
 N E U N Z E H N E L F    &amp;lt;nowiki&amp;gt;==&amp;gt; NEUN ZEHN ELF&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
 Z W Ö L F U N K U H R    &amp;lt;nowiki&amp;gt;==&amp;gt; ZWÖLF UHR / FUNKUHR&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Bei der &amp;quot;DREI VIERTEL VARIANTE&amp;quot;:&lt;br /&gt;
Z.B. ist &amp;quot;DREI VIERTEL ZEHN&amp;quot; statt es ist &amp;quot;VIERTEL VOR ZEHN&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
=== Materialien ===&lt;br /&gt;
* PMMA seitlich beleuchtet: [http://www.mikrocontroller.net/attachment/62784/PMMA_seitlich_beleuchtet.gif bild]&lt;br /&gt;
* PMMA von hinten grfräst: [http://www.mikrocontroller.net/attachment/62767/PMMA_von_hinten_fraesen.gif bild]&lt;br /&gt;
&lt;br /&gt;
= Software =&lt;br /&gt;
== Module ==&lt;br /&gt;
http://www.mikrocontroller.net/topic/156661#1483236&lt;br /&gt;
=== DCF77 ===&lt;br /&gt;
&lt;br /&gt;
Zur Programmierung siehe den Artikel [[DCF77-Funkwecker_mit_AVR]]. Im Abschnitt &#039;&#039;Programmierung&#039;&#039; ist das Funksignal dokumentiert, zusammen mit einem Beispiel (Bitstrom und Bedeutung).&lt;br /&gt;
&lt;br /&gt;
Codebeispiel siehe [[http://www.mikrocontroller.net/topic/25071 DFC_77]].&lt;br /&gt;
&lt;br /&gt;
=== ethernet ntp client ===&lt;br /&gt;
=== RTC ===&lt;br /&gt;
=== IR ===&lt;br /&gt;
=== PWM ===&lt;br /&gt;
=== Display ===&lt;br /&gt;
=== main ===&lt;br /&gt;
&lt;br /&gt;
= Abstimmungen =&lt;br /&gt;
Eine Stimme ist ein Strich. Nach 5 Strichen bitte ein Leerzeichen einfügen.&amp;lt;br&amp;gt;&lt;br /&gt;
DCF: ||||| ||||| |||&amp;lt;br&amp;gt;&lt;br /&gt;
ethernet ntp client: || &amp;lt;br&amp;gt;&lt;br /&gt;
IR für Fernbedienung: ||||| &amp;lt;br&amp;gt;&lt;br /&gt;
Bewegungsmelder: ||||&amp;lt;br&amp;gt;&lt;br /&gt;
Bluetooth: |&amp;lt;br&amp;gt;&lt;br /&gt;
IR zum PC für Kommunikation/Bootloader |&amp;lt;br&amp;gt;&lt;br /&gt;
usw: |&amp;lt;br&amp;gt;&lt;/div&gt;</summary>
		<author><name>Promeus</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=Word_Clock&amp;diff=40702</id>
		<title>Word Clock</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=Word_Clock&amp;diff=40702"/>
		<updated>2009-11-16T13:29:24Z</updated>

		<summary type="html">&lt;p&gt;Promeus: /* Frontplatte */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Was ist das? =&lt;br /&gt;
Es geht hier um folgenden Thread [1], in dem der &amp;quot;Nachbau&amp;quot; dieser Uhr [2] disktuiert wird.&amp;lt;br&amp;gt;&lt;br /&gt;
[1] [http://www.mikrocontroller.net/topic/156661 Beitrag: Brauche Hilfe beim Bau einer Uhr]&amp;lt;br&amp;gt;&lt;br /&gt;
[2] [http://www.qlocktwo.com http://www.qlocktwo.com]&lt;br /&gt;
&lt;br /&gt;
= Hardware =&lt;br /&gt;
== Hardware-Konzepte ==&lt;br /&gt;
=== Frank ===&lt;br /&gt;
* Atmega8/88&lt;br /&gt;
* Schieberegister an SPI&lt;br /&gt;
* high-side-PWM pro Schieberegister,&lt;br /&gt;
* ...&lt;br /&gt;
aktueller Stand:&lt;br /&gt;
http://www.mikrocontroller.net/topic/156661#1484071&lt;br /&gt;
=== Simon ===&lt;br /&gt;
aktueller Stand:&lt;br /&gt;
== Frontplatte ==&lt;br /&gt;
http://www.mikrocontroller.net/topic/156661#1481337&lt;br /&gt;
&lt;br /&gt;
Bei interesse an einer Frontplatte kann man mir (Benutzer [http://www.mikrocontroller.net/user/show/promeus promeus]) eine Nachricht hinterlassen.&lt;br /&gt;
&lt;br /&gt;
Der erste Prototyp aus Alu wird zu Beginn Dezember 09 erwartet. Sobald Bilder verfügbar sind werden die hier verlinkt. Preis ist noch unbekannt.&lt;br /&gt;
&lt;br /&gt;
2 Standard Versionen werden gemacht, jeweils in 40cm x 40cm&lt;br /&gt;
&lt;br /&gt;
* Englisch&lt;br /&gt;
* Deutsch mit Bezeichnung &amp;quot;viertel vor&amp;quot; und &amp;quot;drei Viertel&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Die Minutenanzeige (1 - 4 Minuten) werden jeweils mit einem Punkt an der Ecke der Frontplatte dargestellt.&lt;br /&gt;
&lt;br /&gt;
Anzahl Interessenten Stand 16.11.2009: 26&lt;br /&gt;
(die einzelnen Versionen werden noch abgeklärt)&lt;br /&gt;
&lt;br /&gt;
=== Deutsch ===&lt;br /&gt;
&lt;br /&gt;
 E S K I S T A F Ü N F    &amp;lt;nowiki&amp;gt;==&amp;gt; ES IST FÜNF&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;Z E H N D R E I V O R&#039;&#039;&#039;    &amp;lt;nowiki&amp;gt;==&amp;gt; ZEHN DREI VOR&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
 N A C H V I E R T E L    &amp;lt;nowiki&amp;gt;==&amp;gt; NACH VIERTEL&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
 H A L B V O R N A C H    &amp;lt;nowiki&amp;gt;==&amp;gt; HALB VOR NACH&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
 E I N S X Ä M Z W E I    &amp;lt;nowiki&amp;gt;==&amp;gt; EINS ZWEI&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
 D R E I A U J V I E R    &amp;lt;nowiki&amp;gt;==&amp;gt; DREI VIER&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
 F Ü N F T O S E C H S    &amp;lt;nowiki&amp;gt;==&amp;gt; FÜNF SECHS&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
 S I E B E N L A C H T    &amp;lt;nowiki&amp;gt;==&amp;gt; SIEBEN ACHT&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
 N E U N Z E H N E L F    &amp;lt;nowiki&amp;gt;==&amp;gt; NEUN ZEHN ELF&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
 Z W Ö L F U N K U H R    &amp;lt;nowiki&amp;gt;==&amp;gt; ZWÖLF UHR / FUNKUHR&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Bei der &amp;quot;DREI VIERTEL VARIANTE&amp;quot;:&lt;br /&gt;
Z.B. ist &amp;quot;DREI VIERTEL ZEHN&amp;quot; statt es ist &amp;quot;VIERTEL VOR ZEHN&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
= Software =&lt;br /&gt;
== Module ==&lt;br /&gt;
http://www.mikrocontroller.net/topic/156661#1483236&lt;br /&gt;
=== DCF77 ===&lt;br /&gt;
=== RTC ===&lt;br /&gt;
=== IR ===&lt;br /&gt;
=== PWM ===&lt;br /&gt;
=== Display ===&lt;br /&gt;
=== main ===&lt;br /&gt;
&lt;br /&gt;
= Abstimmungen =&lt;br /&gt;
Eine Stimme ist ein Strich. Nach 5 Strichen bitte ein Leerzeichen einfügen.&amp;lt;br&amp;gt;&lt;br /&gt;
DCF: |||||&amp;lt;br&amp;gt;&lt;br /&gt;
IR: ||&amp;lt;br&amp;gt;&lt;br /&gt;
Bewegungsmelder: ||&amp;lt;br&amp;gt;&lt;br /&gt;
Bluetooth: ||&amp;lt;br&amp;gt;&lt;br /&gt;
usw: ||&amp;lt;br&amp;gt;&lt;/div&gt;</summary>
		<author><name>Promeus</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=Word_Clock&amp;diff=40701</id>
		<title>Word Clock</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=Word_Clock&amp;diff=40701"/>
		<updated>2009-11-16T13:28:06Z</updated>

		<summary type="html">&lt;p&gt;Promeus: /* Frontplatte */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Was ist das? =&lt;br /&gt;
Es geht hier um folgenden Thread [1], in dem der &amp;quot;Nachbau&amp;quot; dieser Uhr [2] disktuiert wird.&amp;lt;br&amp;gt;&lt;br /&gt;
[1] [http://www.mikrocontroller.net/topic/156661 Beitrag: Brauche Hilfe beim Bau einer Uhr]&amp;lt;br&amp;gt;&lt;br /&gt;
[2] [http://www.qlocktwo.com http://www.qlocktwo.com]&lt;br /&gt;
&lt;br /&gt;
= Hardware =&lt;br /&gt;
== Hardware-Konzepte ==&lt;br /&gt;
=== Frank ===&lt;br /&gt;
* Atmega8/88&lt;br /&gt;
* Schieberegister an SPI&lt;br /&gt;
* high-side-PWM pro Schieberegister,&lt;br /&gt;
* ...&lt;br /&gt;
aktueller Stand:&lt;br /&gt;
http://www.mikrocontroller.net/topic/156661#1484071&lt;br /&gt;
=== Simon ===&lt;br /&gt;
aktueller Stand:&lt;br /&gt;
== Frontplatte ==&lt;br /&gt;
http://www.mikrocontroller.net/topic/156661#1481337&lt;br /&gt;
&lt;br /&gt;
Bei interesse an einer Frontplatte kann man mir (Benutzer [http://www.mikrocontroller.net/user/show/promeus promeus]) eine Nachricht hinterlassen.&lt;br /&gt;
&lt;br /&gt;
Der erste Prototyp aus Alu wird zu Beginn Dezember 09 erwartet. Sobald Bilder verfügbar sind werden die hier verlinkt. Preis ist noch unbekannt.&lt;br /&gt;
&lt;br /&gt;
3 Standard Versionen werden gemacht, jeweils in 40cm x 40cm&lt;br /&gt;
&lt;br /&gt;
* Englisch&lt;br /&gt;
* Deutsch mit Bezeichnung &amp;quot;viertel vor&amp;quot;&lt;br /&gt;
* Deutsch mit Bezeichnung &amp;quot;drei viertel&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Die Minutenanzeige (1 - 4 Minuten) werden jeweils mit einem Punkt an der Ecke der Frontplatte dargestellt.&lt;br /&gt;
&lt;br /&gt;
Anzahl Interessenten Stand 16.11.2009: 26&lt;br /&gt;
(die einzelnen Versionen werden noch abgeklärt)&lt;br /&gt;
&lt;br /&gt;
=== Deutsch mit Bezeichnung &amp;quot;viertel vor&amp;quot; ===&lt;br /&gt;
&lt;br /&gt;
Matrix: &lt;br /&gt;
&lt;br /&gt;
 E S K I S T A F Ü N F    &amp;lt;nowiki&amp;gt;==&amp;gt; ES IST FÜNF&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
 Z E H N B Y G V O R G    &amp;lt;nowiki&amp;gt;==&amp;gt; ZEHN VOR&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
 N A C H V I E R T E L    &amp;lt;nowiki&amp;gt;==&amp;gt; NACH VIERTEL&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
 H A L B V O R N A C H    &amp;lt;nowiki&amp;gt;==&amp;gt; HALB VOR NACH&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
 E I N S X Ä M Z W E I    &amp;lt;nowiki&amp;gt;==&amp;gt; EIN EINS ZWEI&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
 D R E I A U J V I E R    &amp;lt;nowiki&amp;gt;==&amp;gt; DREI VIER&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
 F Ü N F T O S E C H S    &amp;lt;nowiki&amp;gt;==&amp;gt; FÜNF SECHS&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
 S I E B E N L A C H T    &amp;lt;nowiki&amp;gt;==&amp;gt; SIEBEN ACHT&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
 N E U N Z E H N E L F    &amp;lt;nowiki&amp;gt;==&amp;gt; NEUN ZEHN ELF&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
 Z W Ö L F U N K U H R    &amp;lt;nowiki&amp;gt;==&amp;gt; ZWÖLF UHR / FUNKUHR&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Deutsch mit Bezeichnung &amp;quot;drei viertel&amp;quot; ===&lt;br /&gt;
&lt;br /&gt;
 E S K I S T A F Ü N F    &amp;lt;nowiki&amp;gt;==&amp;gt; ES IST FÜNF&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;Z E H N D R E I V O R&#039;&#039;&#039;    &amp;lt;nowiki&amp;gt;==&amp;gt; ZEHN DREI VOR&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
 N A C H V I E R T E L    &amp;lt;nowiki&amp;gt;==&amp;gt; NACH VIERTEL&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
 H A L B V O R N A C H    &amp;lt;nowiki&amp;gt;==&amp;gt; HALB VOR NACH&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
 E I N S X Ä M Z W E I    &amp;lt;nowiki&amp;gt;==&amp;gt; EINS ZWEI&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
 D R E I A U J V I E R    &amp;lt;nowiki&amp;gt;==&amp;gt; DREI VIER&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
 F Ü N F T O S E C H S    &amp;lt;nowiki&amp;gt;==&amp;gt; FÜNF SECHS&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
 S I E B E N L A C H T    &amp;lt;nowiki&amp;gt;==&amp;gt; SIEBEN ACHT&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
 N E U N Z E H N E L F    &amp;lt;nowiki&amp;gt;==&amp;gt; NEUN ZEHN ELF&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
 Z W Ö L F U N K U H R    &amp;lt;nowiki&amp;gt;==&amp;gt; ZWÖLF UHR / FUNKUHR&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Z.B. ist &amp;quot;DREI VIERTEL ZEHN&amp;quot; statt es ist &amp;quot;VIERTEL VOR ZEHN&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
= Software =&lt;br /&gt;
== Module ==&lt;br /&gt;
http://www.mikrocontroller.net/topic/156661#1483236&lt;br /&gt;
=== DCF77 ===&lt;br /&gt;
=== RTC ===&lt;br /&gt;
=== IR ===&lt;br /&gt;
=== PWM ===&lt;br /&gt;
=== Display ===&lt;br /&gt;
=== main ===&lt;br /&gt;
&lt;br /&gt;
= Abstimmungen =&lt;br /&gt;
Eine Stimme ist ein Strich. Nach 5 Strichen bitte ein Leerzeichen einfügen.&amp;lt;br&amp;gt;&lt;br /&gt;
DCF: |||||&amp;lt;br&amp;gt;&lt;br /&gt;
IR: ||&amp;lt;br&amp;gt;&lt;br /&gt;
Bewegungsmelder: ||&amp;lt;br&amp;gt;&lt;br /&gt;
Bluetooth: ||&amp;lt;br&amp;gt;&lt;br /&gt;
usw: ||&amp;lt;br&amp;gt;&lt;/div&gt;</summary>
		<author><name>Promeus</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=Word_Clock&amp;diff=40696</id>
		<title>Word Clock</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=Word_Clock&amp;diff=40696"/>
		<updated>2009-11-16T12:43:50Z</updated>

		<summary type="html">&lt;p&gt;Promeus: /* Deutsch mit Bezeichnung &amp;quot;viertel vor&amp;quot; */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Was ist das? =&lt;br /&gt;
Es geht hier um folgenden Thread [1], in dem der &amp;quot;Nachbau&amp;quot; dieser Uhr [2] disktuiert wird.&amp;lt;br&amp;gt;&lt;br /&gt;
[1] [http://www.mikrocontroller.net/topic/156661 Beitrag: Brauche Hilfe beim Bau einer Uhr]&amp;lt;br&amp;gt;&lt;br /&gt;
[2] [http://www.qlocktwo.com http://www.qlocktwo.com]&lt;br /&gt;
&lt;br /&gt;
= Hardware =&lt;br /&gt;
== Hardware-Konzepte ==&lt;br /&gt;
=== Frank ===&lt;br /&gt;
* Atmega8/88&lt;br /&gt;
* Schieberegister an SPI&lt;br /&gt;
* high-side-PWM pro Schieberegister,&lt;br /&gt;
* ...&lt;br /&gt;
aktueller Stand:&lt;br /&gt;
http://www.mikrocontroller.net/topic/156661#1484071&lt;br /&gt;
=== Simon ===&lt;br /&gt;
aktueller Stand:&lt;br /&gt;
== Frontplatte ==&lt;br /&gt;
http://www.mikrocontroller.net/topic/156661#1481337&lt;br /&gt;
&lt;br /&gt;
Bei interesse an einer Frontplatte kann man mir (Benutzer [http://www.mikrocontroller.net/user/show/promeus promeus]) eine Nachricht hinterlassen.&lt;br /&gt;
&lt;br /&gt;
Der erste Prototyp aus Alu wird zu Beginn Dezember 09 erwartet. Sobald Bilder verfügbar sind werden die hier verlinkt. Preis ist noch unbekannt.&lt;br /&gt;
&lt;br /&gt;
3 Standard Versionen werden gemacht, jeweils in 40cm x 40cm&lt;br /&gt;
&lt;br /&gt;
* Englisch&lt;br /&gt;
* Deutsch mit Bezeichnung &amp;quot;viertel vor&amp;quot;&lt;br /&gt;
* Deutsch mit Bezeichnung &amp;quot;drei viertel&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Die Minutenanzeige (1 - 4 Minuten) werden jeweils mit einem Punkt an der Ecke der Frontplatte dargestellt.&lt;br /&gt;
&lt;br /&gt;
=== Deutsch mit Bezeichnung &amp;quot;viertel vor&amp;quot; ===&lt;br /&gt;
&lt;br /&gt;
Matrix: &lt;br /&gt;
&lt;br /&gt;
 E S K I S T A F Ü N F    &amp;lt;nowiki&amp;gt;==&amp;gt; ES IST FÜNF&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
 Z E H N B Y G V O R G    &amp;lt;nowiki&amp;gt;==&amp;gt; ZEHN VOR&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
 N A C H V I E R T E L    &amp;lt;nowiki&amp;gt;==&amp;gt; NACH VIERTEL&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
 H A L B V O R N A C H    &amp;lt;nowiki&amp;gt;==&amp;gt; HALB VOR NACH&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
 E I N S X Ä M Z W E I    &amp;lt;nowiki&amp;gt;==&amp;gt; EINS ZWEI&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
 D R E I A U J V I E R    &amp;lt;nowiki&amp;gt;==&amp;gt; DREI VIER&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
 F Ü N F T O S E C H S    &amp;lt;nowiki&amp;gt;==&amp;gt; FÜNF SECHS&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
 S I E B E N L A C H T    &amp;lt;nowiki&amp;gt;==&amp;gt; SIEBEN ACHT&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
 N E U N Z E H N E L F    &amp;lt;nowiki&amp;gt;==&amp;gt; NEUN ZEHN ELF&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
 Z W Ö L F U N K U H R    &amp;lt;nowiki&amp;gt;==&amp;gt; ZWÖLF UHR / FUNKUHR&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Anzahl Interessenten Stand 16.11.2009: 26&lt;br /&gt;
&lt;br /&gt;
= Software =&lt;br /&gt;
== Module ==&lt;br /&gt;
http://www.mikrocontroller.net/topic/156661#1483236&lt;br /&gt;
=== DCF77 ===&lt;br /&gt;
=== RTC ===&lt;br /&gt;
=== IR ===&lt;br /&gt;
=== PWM ===&lt;br /&gt;
=== Display ===&lt;br /&gt;
=== main ===&lt;br /&gt;
&lt;br /&gt;
= Abstimmungen =&lt;br /&gt;
Eine Stimme ist ein Strich. Nach 5 Strichen bitte ein Leerzeichen einfügen.&amp;lt;br&amp;gt;&lt;br /&gt;
DCF: |||||&amp;lt;br&amp;gt;&lt;br /&gt;
IR: ||&amp;lt;br&amp;gt;&lt;br /&gt;
Bewegungsmelder: ||&amp;lt;br&amp;gt;&lt;br /&gt;
Bluetooth: ||&amp;lt;br&amp;gt;&lt;br /&gt;
usw: ||&amp;lt;br&amp;gt;&lt;/div&gt;</summary>
		<author><name>Promeus</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=Word_Clock&amp;diff=40694</id>
		<title>Word Clock</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=Word_Clock&amp;diff=40694"/>
		<updated>2009-11-16T12:38:40Z</updated>

		<summary type="html">&lt;p&gt;Promeus: /* Frontplatte */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Was ist das? =&lt;br /&gt;
Es geht hier um folgenden Thread [1], in dem der &amp;quot;Nachbau&amp;quot; dieser Uhr [2] disktuiert wird.&amp;lt;br&amp;gt;&lt;br /&gt;
[1] [http://www.mikrocontroller.net/topic/156661 Beitrag: Brauche Hilfe beim Bau einer Uhr]&amp;lt;br&amp;gt;&lt;br /&gt;
[2] [http://www.qlocktwo.com http://www.qlocktwo.com]&lt;br /&gt;
&lt;br /&gt;
= Hardware =&lt;br /&gt;
== Hardware-Konzepte ==&lt;br /&gt;
=== Frank ===&lt;br /&gt;
* Atmega8/88&lt;br /&gt;
* Schieberegister an SPI&lt;br /&gt;
* high-side-PWM pro Schieberegister,&lt;br /&gt;
* ...&lt;br /&gt;
aktueller Stand:&lt;br /&gt;
http://www.mikrocontroller.net/topic/156661#1484071&lt;br /&gt;
=== Simon ===&lt;br /&gt;
aktueller Stand:&lt;br /&gt;
== Frontplatte ==&lt;br /&gt;
http://www.mikrocontroller.net/topic/156661#1481337&lt;br /&gt;
&lt;br /&gt;
Bei interesse an einer Frontplatte kann man mir (Benutzer [http://www.mikrocontroller.net/user/show/promeus promeus]) eine Nachricht hinterlassen.&lt;br /&gt;
&lt;br /&gt;
Der erste Prototyp aus Alu wird zu Beginn Dezember 09 erwartet. Sobald Bilder verfügbar sind werden die hier verlinkt. Preis ist noch unbekannt.&lt;br /&gt;
&lt;br /&gt;
3 Standard Versionen werden gemacht, jeweils in 40cm x 40cm&lt;br /&gt;
&lt;br /&gt;
* Englisch&lt;br /&gt;
* Deutsch mit Bezeichnung &amp;quot;viertel vor&amp;quot;&lt;br /&gt;
* Deutsch mit Bezeichnung &amp;quot;drei viertel&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Die Minutenanzeige (1 - 4 Minuten) werden jeweils mit einem Punkt an der Ecke der Frontplatte dargestellt.&lt;br /&gt;
&lt;br /&gt;
=== Deutsch mit Bezeichnung &amp;quot;viertel vor&amp;quot; ===&lt;br /&gt;
&lt;br /&gt;
Matrix: &lt;br /&gt;
&lt;br /&gt;
 E S K I S T A F Ü N F    &amp;lt;nowiki&amp;gt;==&amp;gt; ES IST FÜNF&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
 Z E H N B Y G V O R G    &amp;lt;nowiki&amp;gt;==&amp;gt; ZEHN VOR&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
 N A C H V I E R T E L    &amp;lt;nowiki&amp;gt;==&amp;gt; NACH VIERTEL&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
 H A L B V O R N A C H    &amp;lt;nowiki&amp;gt;==&amp;gt; HALB VOR NACH&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
 E I N S X Ä M Z W E I    &amp;lt;nowiki&amp;gt;==&amp;gt; EINS ZWEI&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
 D R E I A U J V I E R    &amp;lt;nowiki&amp;gt;==&amp;gt; DREI VIER&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
 F Ü N F T O S E C H S    &amp;lt;nowiki&amp;gt;==&amp;gt; FÜNF SECHS&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
 S I E B E N L A C H T    &amp;lt;nowiki&amp;gt;==&amp;gt; SIEBEN ACHT&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
 N E U N Z E H N E L F    &amp;lt;nowiki&amp;gt;==&amp;gt; NEUN ZEHN ELF&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
 Z W Ö L F U N K U H R    &amp;lt;nowiki&amp;gt;==&amp;gt; ZWÖLF UHR / FUNKUHR&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Anzahl Interessenten Stand 16.11.2009: 25&lt;br /&gt;
&lt;br /&gt;
= Software =&lt;br /&gt;
== Module ==&lt;br /&gt;
http://www.mikrocontroller.net/topic/156661#1483236&lt;br /&gt;
=== DCF77 ===&lt;br /&gt;
=== RTC ===&lt;br /&gt;
=== IR ===&lt;br /&gt;
=== PWM ===&lt;br /&gt;
=== Display ===&lt;br /&gt;
=== main ===&lt;br /&gt;
&lt;br /&gt;
= Abstimmungen =&lt;br /&gt;
Eine Stimme ist ein Strich. Nach 5 Strichen bitte ein Leerzeichen einfügen.&amp;lt;br&amp;gt;&lt;br /&gt;
DCF: ||||&amp;lt;br&amp;gt;&lt;br /&gt;
IR: |&amp;lt;br&amp;gt;&lt;br /&gt;
Bewegungsmelder: ||&amp;lt;br&amp;gt;&lt;br /&gt;
Bluetooth: ||&amp;lt;br&amp;gt;&lt;br /&gt;
usw: ||&amp;lt;br&amp;gt;&lt;/div&gt;</summary>
		<author><name>Promeus</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=Word_Clock&amp;diff=40692</id>
		<title>Word Clock</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=Word_Clock&amp;diff=40692"/>
		<updated>2009-11-16T12:38:13Z</updated>

		<summary type="html">&lt;p&gt;Promeus: /* Frontplatte */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Was ist das? =&lt;br /&gt;
Es geht hier um folgenden Thread [1], in dem der &amp;quot;Nachbau&amp;quot; dieser Uhr [2] disktuiert wird.&amp;lt;br&amp;gt;&lt;br /&gt;
[1] [http://www.mikrocontroller.net/topic/156661 Beitrag: Brauche Hilfe beim Bau einer Uhr]&amp;lt;br&amp;gt;&lt;br /&gt;
[2] [http://www.qlocktwo.com http://www.qlocktwo.com]&lt;br /&gt;
&lt;br /&gt;
= Hardware =&lt;br /&gt;
== Hardware-Konzepte ==&lt;br /&gt;
=== Frank ===&lt;br /&gt;
* Atmega8/88&lt;br /&gt;
* Schieberegister an SPI&lt;br /&gt;
* high-side-PWM pro Schieberegister,&lt;br /&gt;
* ...&lt;br /&gt;
aktueller Stand:&lt;br /&gt;
http://www.mikrocontroller.net/topic/156661#1484071&lt;br /&gt;
=== Simon ===&lt;br /&gt;
aktueller Stand:&lt;br /&gt;
== Frontplatte ==&lt;br /&gt;
http://www.mikrocontroller.net/topic/156661#1481337&lt;br /&gt;
&lt;br /&gt;
Bei interesse an einer Frontplatte kann man mir (Benutzer [http://www.mikrocontroller.net/user/show/promeus promeus]) eine Nachricht hinterlassen.&lt;br /&gt;
&lt;br /&gt;
Der erste Prototyp aus Alu wird zu Beginn Dezember 09 erwartet. Sobald Bilder verfügbar sind werden die hier verlinkt. Preis ist noch unbekannt.&lt;br /&gt;
&lt;br /&gt;
3 Standard Versionen werden gemacht, jeweils in 40cm x 40cm&lt;br /&gt;
&lt;br /&gt;
* Englisch&lt;br /&gt;
* Deutsch mit Bezeichnung &amp;quot;viertel vor&amp;quot;&lt;br /&gt;
* Deutsch mit Bezeichnung &amp;quot;drei viertel&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Die Minutenanzeige (1 - 4 Minuten werden jeweils mit einem Punkt an der Ecke der Frontplatte dargestellt.&lt;br /&gt;
&lt;br /&gt;
=== Deutsch mit Bezeichnung &amp;quot;viertel vor&amp;quot; ===&lt;br /&gt;
&lt;br /&gt;
Matrix: &lt;br /&gt;
&lt;br /&gt;
 E S K I S T A F Ü N F    &amp;lt;nowiki&amp;gt;==&amp;gt; ES IST FÜNF&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
 Z E H N B Y G V O R G    &amp;lt;nowiki&amp;gt;==&amp;gt; ZEHN VOR&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
 N A C H V I E R T E L    &amp;lt;nowiki&amp;gt;==&amp;gt; NACH VIERTEL&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
 H A L B V O R N A C H    &amp;lt;nowiki&amp;gt;==&amp;gt; HALB VOR NACH&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
 E I N S X Ä M Z W E I    &amp;lt;nowiki&amp;gt;==&amp;gt; EINS ZWEI&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
 D R E I A U J V I E R    &amp;lt;nowiki&amp;gt;==&amp;gt; DREI VIER&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
 F Ü N F T O S E C H S    &amp;lt;nowiki&amp;gt;==&amp;gt; FÜNF SECHS&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
 S I E B E N L A C H T    &amp;lt;nowiki&amp;gt;==&amp;gt; SIEBEN ACHT&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
 N E U N Z E H N E L F    &amp;lt;nowiki&amp;gt;==&amp;gt; NEUN ZEHN ELF&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
 Z W Ö L F U N K U H R    &amp;lt;nowiki&amp;gt;==&amp;gt; ZWÖLF UHR / FUNKUHR&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Anzahl Interessenten Stand 16.11.2009: 25&lt;br /&gt;
&lt;br /&gt;
= Software =&lt;br /&gt;
== Module ==&lt;br /&gt;
http://www.mikrocontroller.net/topic/156661#1483236&lt;br /&gt;
=== DCF77 ===&lt;br /&gt;
=== RTC ===&lt;br /&gt;
=== IR ===&lt;br /&gt;
=== PWM ===&lt;br /&gt;
=== Display ===&lt;br /&gt;
=== main ===&lt;br /&gt;
&lt;br /&gt;
= Abstimmungen =&lt;br /&gt;
Eine Stimme ist ein Strich. Nach 5 Strichen bitte ein Leerzeichen einfügen.&amp;lt;br&amp;gt;&lt;br /&gt;
DCF: |||&amp;lt;br&amp;gt;&lt;br /&gt;
IR: |&amp;lt;br&amp;gt;&lt;br /&gt;
Bewegungsmelder: ||&amp;lt;br&amp;gt;&lt;br /&gt;
Bluetooth: ||&amp;lt;br&amp;gt;&lt;br /&gt;
usw: ||&amp;lt;br&amp;gt;&lt;/div&gt;</summary>
		<author><name>Promeus</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=Word_Clock&amp;diff=40690</id>
		<title>Word Clock</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=Word_Clock&amp;diff=40690"/>
		<updated>2009-11-16T11:33:38Z</updated>

		<summary type="html">&lt;p&gt;Promeus: /* Frontplatte */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Was ist das? =&lt;br /&gt;
Es geht hier um folgenden Thread [1], in dem der &amp;quot;Nachbau&amp;quot; dieser Uhr [2] disktuiert wird.&amp;lt;br&amp;gt;&lt;br /&gt;
[1] [http://www.mikrocontroller.net/topic/156661 Beitrag: Brauche Hilfe beim Bau einer Uhr]&amp;lt;br&amp;gt;&lt;br /&gt;
[2] [http://www.qlocktwo.com http://www.qlocktwo.com]&lt;br /&gt;
&lt;br /&gt;
= Hardware =&lt;br /&gt;
== Hardware-Konzepte ==&lt;br /&gt;
=== Frank ===&lt;br /&gt;
* Atmega8/88&lt;br /&gt;
* Schieberegister an SPI&lt;br /&gt;
* high-side-PWM pro Schieberegister,&lt;br /&gt;
* ...&lt;br /&gt;
aktueller Stand:&lt;br /&gt;
http://www.mikrocontroller.net/topic/156661#1484071&lt;br /&gt;
=== Simon ===&lt;br /&gt;
aktueller Stand:&lt;br /&gt;
== Frontplatte ==&lt;br /&gt;
http://www.mikrocontroller.net/topic/156661#1481337&lt;br /&gt;
&lt;br /&gt;
Bei interesse an einer Frontplatte kann man mir (Benutzer [http://www.mikrocontroller.net/user/show/promeus promeus]) eine Nachricht hinterlassen.&lt;br /&gt;
&lt;br /&gt;
Der erste Prototyp aus Alu wird zu Beginn Dezember 09 erwartet. Sobald Bilder verfügbar sind werden die hier verlinkt. Preis ist noch unbekannt.&lt;br /&gt;
&lt;br /&gt;
3 Standard Versionen werden gemacht, jeweils in 40cm x 40cm&lt;br /&gt;
&lt;br /&gt;
* Englisch&lt;br /&gt;
* Deutsch mit Bezeichnung &amp;quot;viertel vor&amp;quot;&lt;br /&gt;
* Deutsch mit Bezeichnung &amp;quot;drei viertel&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Das genaue Layout wird hier noch beschrieben.&lt;br /&gt;
&lt;br /&gt;
Anzahl Interessenten Stand 16.11.2009: 25&lt;br /&gt;
&lt;br /&gt;
= Software =&lt;br /&gt;
== Module ==&lt;br /&gt;
http://www.mikrocontroller.net/topic/156661#1483236&lt;br /&gt;
=== DCF77 ===&lt;br /&gt;
=== RTC ===&lt;br /&gt;
=== IR ===&lt;br /&gt;
=== PWM ===&lt;br /&gt;
=== Display ===&lt;br /&gt;
=== main ===&lt;br /&gt;
&lt;br /&gt;
= Abstimmungen =&lt;br /&gt;
Eine Stimme ist ein Strich. Nach 5 Strichen bitte ein Leerzeichen einfügen.&amp;lt;br&amp;gt;&lt;br /&gt;
DCF: ||&amp;lt;br&amp;gt;&lt;br /&gt;
IR: |&amp;lt;br&amp;gt;&lt;br /&gt;
Bewegungsmelder: ||&amp;lt;br&amp;gt;&lt;br /&gt;
Bluetooth: ||&amp;lt;br&amp;gt;&lt;br /&gt;
usw: ||&amp;lt;br&amp;gt;&lt;/div&gt;</summary>
		<author><name>Promeus</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=Word_Clock&amp;diff=40687</id>
		<title>Word Clock</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=Word_Clock&amp;diff=40687"/>
		<updated>2009-11-16T11:04:41Z</updated>

		<summary type="html">&lt;p&gt;Promeus: /* Frontplatte */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Was ist das? =&lt;br /&gt;
Es geht hier um folgenden Thread [1], in dem der &amp;quot;Nachbau&amp;quot; dieser Uhr [2] disktuiert wird.&amp;lt;br&amp;gt;&lt;br /&gt;
[1] [http://www.mikrocontroller.net/topic/156661 Beitrag: Brauche Hilfe beim Bau einer Uhr]&amp;lt;br&amp;gt;&lt;br /&gt;
[2] [http://www.qlocktwo.com http://www.qlocktwo.com]&lt;br /&gt;
&lt;br /&gt;
= Hardware =&lt;br /&gt;
== Hardware-Konzepte ==&lt;br /&gt;
=== Frank ===&lt;br /&gt;
* Atmega8/88&lt;br /&gt;
* Schieberegister an SPI&lt;br /&gt;
* high-side-PWM pro Schieberegister,&lt;br /&gt;
* ...&lt;br /&gt;
aktueller Stand:&lt;br /&gt;
http://www.mikrocontroller.net/topic/156661#1484071&lt;br /&gt;
=== Simon ===&lt;br /&gt;
aktueller Stand:&lt;br /&gt;
== Frontplatte ==&lt;br /&gt;
http://www.mikrocontroller.net/topic/156661#1481337&lt;br /&gt;
&lt;br /&gt;
Bei interesse an einer Frontplatte kann man mir (Benutzer Promeus) eine Nachricht hinterlassen.&lt;br /&gt;
&lt;br /&gt;
Der erste Prototyp aus Alu wird zu Beginn Dezember 09 erwartet. Sobald Bilder verfügbar sind werden die hier verlinkt. Preis ist noch unbekannt.&lt;br /&gt;
&lt;br /&gt;
3 Standard Versionen werden gemacht, jeweils in 40cm x 40cm&lt;br /&gt;
&lt;br /&gt;
* Englisch&lt;br /&gt;
* Deutsch mit Bezeichnung &amp;quot;viertel vor&amp;quot;&lt;br /&gt;
* Deitsch mit Bezeichnung &amp;quot;drei viertel&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Das genaue Layout wird hier noch beschrieben.&lt;br /&gt;
&lt;br /&gt;
= Software =&lt;br /&gt;
== Module ==&lt;br /&gt;
http://www.mikrocontroller.net/topic/156661#1483236&lt;br /&gt;
=== DCF77 ===&lt;br /&gt;
=== RTC ===&lt;br /&gt;
=== IR ===&lt;br /&gt;
=== PWM ===&lt;br /&gt;
=== Display ===&lt;br /&gt;
=== main ===&lt;br /&gt;
&lt;br /&gt;
= Abstimmungen =&lt;br /&gt;
Eine Stimme ist ein Strich. Nach 5 Strichen bitte ein Leerzeichen einfügen.&amp;lt;br&amp;gt;&lt;br /&gt;
DCF: |&amp;lt;br&amp;gt;&lt;br /&gt;
IR: |&amp;lt;br&amp;gt;&lt;br /&gt;
Bewegungsmelder: |&amp;lt;br&amp;gt;&lt;br /&gt;
Bluetooth: |&amp;lt;br&amp;gt;&lt;br /&gt;
usw: |&amp;lt;br&amp;gt;&lt;/div&gt;</summary>
		<author><name>Promeus</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=Word_Clock&amp;diff=40686</id>
		<title>Word Clock</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=Word_Clock&amp;diff=40686"/>
		<updated>2009-11-16T11:03:59Z</updated>

		<summary type="html">&lt;p&gt;Promeus: /* Frontplatte */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Was ist das? =&lt;br /&gt;
Es geht hier um folgenden Thread [1], in dem der &amp;quot;Nachbau&amp;quot; dieser Uhr [2] disktuiert wird.&amp;lt;br&amp;gt;&lt;br /&gt;
[1] [http://www.mikrocontroller.net/topic/156661 Beitrag: Brauche Hilfe beim Bau einer Uhr]&amp;lt;br&amp;gt;&lt;br /&gt;
[2] [http://www.qlocktwo.com http://www.qlocktwo.com]&lt;br /&gt;
&lt;br /&gt;
= Hardware =&lt;br /&gt;
== Hardware-Konzepte ==&lt;br /&gt;
=== Frank ===&lt;br /&gt;
* Atmega8/88&lt;br /&gt;
* Schieberegister an SPI&lt;br /&gt;
* high-side-PWM pro Schieberegister,&lt;br /&gt;
* ...&lt;br /&gt;
aktueller Stand:&lt;br /&gt;
http://www.mikrocontroller.net/topic/156661#1484071&lt;br /&gt;
=== Simon ===&lt;br /&gt;
aktueller Stand:&lt;br /&gt;
== Frontplatte ==&lt;br /&gt;
http://www.mikrocontroller.net/topic/156661#1481337&lt;br /&gt;
&lt;br /&gt;
Bei interesse an einer Frontplatte kann man mir (Benutzer Promeus) eine Nachricht hinterlassen.&lt;br /&gt;
&lt;br /&gt;
Der erste Prototyp aus Alu wird zu Beginn Dezember 09 erwartet. Sobald Bilder verfügbar sind werden die hier verlinkt. Preis ist noch unbekannt.&lt;br /&gt;
&lt;br /&gt;
3 Standard Versionen werden gemacht, jeweils in 40cm x 40cm&lt;br /&gt;
&lt;br /&gt;
* Englisch&lt;br /&gt;
* Deutsch mit Bezeichnung &amp;quot;viertel vor&amp;quot;&lt;br /&gt;
* Deitsch mit Beteichnung &amp;quot;drei viertel&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Das genaue Layout wird hier noch beschrieben.&lt;br /&gt;
&lt;br /&gt;
= Software =&lt;br /&gt;
== Module ==&lt;br /&gt;
http://www.mikrocontroller.net/topic/156661#1483236&lt;br /&gt;
=== DCF77 ===&lt;br /&gt;
=== RTC ===&lt;br /&gt;
=== IR ===&lt;br /&gt;
=== PWM ===&lt;br /&gt;
=== Display ===&lt;br /&gt;
=== main ===&lt;br /&gt;
&lt;br /&gt;
= Abstimmungen =&lt;br /&gt;
Eine Stimme ist ein Strich. Nach 5 Strichen bitte ein Leerzeichen einfügen.&amp;lt;br&amp;gt;&lt;br /&gt;
DCF: |&amp;lt;br&amp;gt;&lt;br /&gt;
IR: |&amp;lt;br&amp;gt;&lt;br /&gt;
Bewegungsmelder: |&amp;lt;br&amp;gt;&lt;br /&gt;
Bluetooth: |&amp;lt;br&amp;gt;&lt;br /&gt;
usw: |&amp;lt;br&amp;gt;&lt;/div&gt;</summary>
		<author><name>Promeus</name></author>
	</entry>
</feed>