<?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=217.247.166.162</id>
	<title>Mikrocontroller.net - Benutzerbeiträge [de]</title>
	<link rel="self" type="application/atom+xml" href="https://www.mikrocontroller.net/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=217.247.166.162"/>
	<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/articles/Spezial:Beitr%C3%A4ge/217.247.166.162"/>
	<updated>2026-04-11T03:16:06Z</updated>
	<subtitle>Benutzerbeiträge</subtitle>
	<generator>MediaWiki 1.39.7</generator>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=TV-out&amp;diff=14013</id>
		<title>TV-out</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=TV-out&amp;diff=14013"/>
		<updated>2005-12-31T08:46:15Z</updated>

		<summary type="html">&lt;p&gt;217.247.166.162: /* Scart */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Mikrocontroller]] an den Fernseher anschließen.&lt;br /&gt;
&lt;br /&gt;
== Anschluß ==&lt;br /&gt;
Ein Fernseher hat oft mehrere Eingänge, die wichtigsten sind der Scartanschluß, Cinchbuchse, Hosidenstecker und der Antenneneingang. &lt;br /&gt;
&lt;br /&gt;
=== Scart ===&lt;br /&gt;
Am [http://www.darc.de/distrikte/y/00/html/tools/scart.htm Scartanschluß] sind u.a. der FBAS-Eingang, ein S-Video-Eingang, oder auch der RGB-Eingang zu finden; bei Videorecordern ist der RGB-Eingang dagegen nur sehr selten belegt.&lt;br /&gt;
&lt;br /&gt;
=== Cinchbuchse ===&lt;br /&gt;
Eine meist gelbe Buchse, an der ebenfalls das [http://www.erft.de/schulen/gymlech/indrevo/indu31/fbas.htm FBAS]-Signal angeschlossen werden kann. Die rote und die weiße Buchse sind für den Ton zuständig.&lt;br /&gt;
&lt;br /&gt;
=== Hosidenstecker ===&lt;br /&gt;
Am vierpoligen Hosidenstecker wird Helligkeit und Farbe getrennt übertragen.&lt;br /&gt;
&lt;br /&gt;
=== Antenneneingang ===&lt;br /&gt;
Damit man viele Sender über ein einziges Kabel übertragen kann, werden diese auf verschiedene Frequenzen moduliert. Das will man aber nicht selbst machen. Wer diesen Eingang benutzen will oder muss, der sollte einen fertigen HF-Modulator benutzen. Im Prinzip ist das ein &amp;quot;Mini-Fernsehsender&amp;quot;, der i.d.R. in einem bestimmten Bereich auf einen Kanal eigener Wahl eingestellt werden kann (z.B. 39..42). Man findet solche Modulatoren in Katalogen in der Nähe von Kameramodulen (z.B. als &amp;quot;UHF-Modulator&amp;quot;), ab etwa 10 EUR(*1).&lt;br /&gt;
&lt;br /&gt;
== Fernsehnormen ==&lt;br /&gt;
Die wichtigsten Fernsehnormen sind PAL, NTSC und SECAM. In Europa wird hauptsächlich PAL verwendet, mit Ausnahme von Frankreich und Osteuropa, wo SECAM zum Einsatz kommt. In den USA wird NTSC verwendet. Wenn man auf einem PAL-Fernseher ein NTSC-Bild darstellt, dann ist das Bild etwas kleiner und schwarzweiß.&lt;br /&gt;
&lt;br /&gt;
== Bilderzeugung ==&lt;br /&gt;
Das Bildsignal wird (F)BAS (Farb-Bild-Austast- und Synchronsignal) genannt (englisch: CVBS) und enhält nicht nur das eigentliche Bild, sondern auch Steuerinformationen.&lt;br /&gt;
&lt;br /&gt;
Beim klassischen Röhrenfernseher wird das Bild durch einen Elektronenstrahl erzeugt. Das Bild wird zeilenweise von oben nach unten aufgebaut, die einzelnen Zeilen werden von links nach rechts dargestellt. Wenn der Strahl am Ende einer Zeile angekommen ist, dann muß er für die nächste Zeile wieder an den linken Rand. Diesen Vorgang nennt man den horizontalen Strahlrücklauf; in dieser Zeit ist kein Bild zu sehen. Nach der letzten Zeile muß der Strahl wieder nach oben; dies nennt man den vertikalen Strahlrücklauf.&lt;br /&gt;
&lt;br /&gt;
Das PAL-Fernsehbild hat 625 Zeilen, wovon etwa 570 sichtbar sind. Es werden 50 Halbbilder pro Sekunde dargestellt, also insgesamt 25*625=15625 Zeilen pro Sekunde. Eine Zeile dauert demnach 1s/15625Zeilen = 64µs/Zeile. Davon sind aber nur 52µs sichtbar, die andere 12µs werden für den horizontalen Strahlrücklauf benötigt. Der vertikale Strahlrücklauf dauert 1,5ms (entspricht 25 Zeilen).&lt;br /&gt;
&lt;br /&gt;
Eine ausführliche Darstellung der Thematik findet sich z.B. [http://www.avmz.uni-siegen.de/medinfo/download/index.htm hier], Vorlesung Medientechnik II.&lt;br /&gt;
&lt;br /&gt;
Die Bilderzeugung ist ziemlich zeitintensiv, deswegen sollte der Mikrocontroller seine anderen Aufgaben im unsichtbaren Bildbereich erledigen&lt;br /&gt;
&lt;br /&gt;
=== Schwarzweiß ===&lt;br /&gt;
Bei Schwarzweiß- bzw. Graustufenbildern gibt es keine feste Horizontalauflösung. Wen man z.B. 4 Million Pixel pro Sekunde erzeugen kann, dann ergibt das eben eine Horizontalauflösung von 4000000/15625 * (52µs/64µs)  = 208 Pixel. Beispiele: [http://members.ozemail.com.au/%7Eintello/video_s_w.htm Serielles Terminal], [http://jkdesign.de/avrproject/Die%20MAHPONG%20Seite.htm Pong-Spiel]&lt;br /&gt;
&lt;br /&gt;
=== Farbe ===&lt;br /&gt;
Es gibt drei Arten, wie man Farbbilder darstellen kann:&lt;br /&gt;
* Über den RGB-Eingang am Scart. Das ist die einfachste Art, aber nicht bei jedem Scarteingang ist RGB auch belegt und man kann das Bild nicht mit dem Videorekorder aufzeichnen.&lt;br /&gt;
* Man benutzt fertige ICs, die RGB nach FBAS wandeln können, z.B. den AD724, allerdings sind diese ICs meist relativ teuer (20 Euro). Beispiel: [http://instruct1.cit.cornell.edu/courses/ee476/FinalProjects/s2002/carlo/index.html  Snake-Spiel]. Achtung: NTSC, nicht PAL&lt;br /&gt;
* Man macht es rein in Software, das ist allerdings &#039;&#039;sehr&#039;&#039; zeitkritisch. Will man das vernünftig machen, dann sollte die CPU über 50MIPS Leistung haben. Beispiele: [http://www.serasidis.gr/circuits/colour_bar_gen/colour_bar_gen.htm Farbbalken], [http://www.rickard.gunee.com/projects/video/sx/tetris.php Tetris]&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
* 1: Wer sich das Geld sparen will, kann auch versuchen, den Modulator in einem alten Videorekorder zu lokalisieren und auszubauen. Das ist meist gar nicht so schwer, denn da es sich um ein HF-erzeugendes Teil handelt, ist es zur Abschirmung oft in einem &amp;quot;silbernen Kästchen&amp;quot; mit etwa der Größe von ein bis zwei Streicholzschachteln irgendwo in der Nähe der Buchse verbaut, an der der Videorekorder normalerweise mit dem TV-Gerät verbunden wird. (Bitte nicht verwechseln mit der Buchse, über der der Videorekorder sein Signal von der (Haus-) Antenne erhält, möglichwerweise sitzt dort auch ein abgeschirmtes Kästchen, das wäre dann aber der für den TV-&#039;&#039;Empfang&#039;&#039; zuständige &#039;&#039;Tuner&#039;&#039;.) Natürlich muss man dann noch herausfinden, woher der Modulator sein TV-Signal bekommt, welche Versorgungsspannung(en) er braucht, und wenn die Abstimmung auf einen bestimmten Kanal nicht via Poti oder einem anderen, &amp;quot;offensichtlichen&amp;quot; Einsteller erfolgt, muss man auch noch herausfinden, wie dies zu bewerkstelligen ist ... (also vielleicht doch lieber im Katalog nachsehen?)&lt;/div&gt;</summary>
		<author><name>217.247.166.162</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=Pulsweitenmodulation&amp;diff=11309</id>
		<title>Pulsweitenmodulation</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=Pulsweitenmodulation&amp;diff=11309"/>
		<updated>2005-12-31T08:38:38Z</updated>

		<summary type="html">&lt;p&gt;217.247.166.162: /* Einleitung */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Einleitung==&lt;br /&gt;
&lt;br /&gt;
Bei der &#039;&#039;&#039;Pulsweitenmodulation&#039;&#039;&#039; (engl. Pulse Width Modulation, abgekürzt &#039;&#039;&#039;PWM&#039;&#039;&#039;) im Deutschen eigentlich PulsBREITENmodulation genannt, wird die Ein- und Ausschaltzeit eines Rechtecksignals bei fester Grundfrequenz variiert. Das Verhältnis &amp;lt;math&amp;gt;t_{ein} / (t_{ein} + t_{aus})&amp;lt;/math&amp;gt; bezeichnet man als &#039;&#039;&#039;Tastverhältnis&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Wie leicht zu erkennen ist gilt für den &#039;&#039;&#039;Mittelwert&#039;&#039;&#039; der Spannung&lt;br /&gt;
:&amp;lt;math&amp;gt;U_m = U_{aus} + (U_{ein} - U_{aus}) \cdot \frac{t_{ein}}{t_{ein}+t_{aus}}&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;U_{aus}&amp;lt;/math&amp;gt; ist dabei normalerweise 0V, &amp;lt;math&amp;gt;U_{ein}&amp;lt;/math&amp;gt; die Betriebsspannung, z.B. 5V.&lt;br /&gt;
&lt;br /&gt;
==Beispiele==&lt;br /&gt;
&lt;br /&gt;
Die folgenden Beispiele zeigen PWM-Signale mit einem Tastverhältnis von 75% bzw. 25%.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;table border=&amp;quot;1&amp;quot;&amp;gt;&amp;lt;tr&amp;gt;&amp;lt;td style=&amp;quot;padding: 10px;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Beispiel 2===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;U_{ein}=5\,\mathrm{V}&amp;lt;/math&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;U_{aus}=0\,\mathrm{V}&amp;lt;/math&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;t_{ein}=1\,\mathrm{ms}&amp;lt;/math&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;t_{aus}=3\,\mathrm{ms}&amp;lt;/math&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;U_m = 0\,\mathrm{V} + (5\,\mathrm{V} - 0\,\mathrm{V}) \cdot \frac{1\,\mathrm{ms}}{1\,\mathrm{ms}+3\,\mathrm{ms}} = 1,25\,\mathrm{V}&amp;lt;/math&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Bild:Pwm2.png]]&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&amp;lt;/table&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Leistung ==&lt;br /&gt;
&lt;br /&gt;
Steuert man mit einem pulsweitenmodulierten Signal direkt einen ohmschen Verbraucher an (z.B. Heizdraht), so ist darauf zu achten dass man zur Bestimmung der Leistung &#039;&#039;&#039;nicht&#039;&#039;&#039; einfach&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;P = \frac{{U_m}^2}{R}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
rechnen darf, sondern die Leistung während der Ein- und Ausschaltzeit getrennt betrachten muss:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;P = \frac{{U_{ein}}^2}{R} \cdot \frac{t_{ein}}{t_{ein} + t_{aus}} +&lt;br /&gt;
\frac{{U_{aus}}^2}{R} \cdot \frac{t_{aus}}{t_{ein} + t_{aus}}&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;table border=&amp;quot;1&amp;quot;&amp;gt;&amp;lt;tr&amp;gt;&amp;lt;td style=&amp;quot;padding: 10px;&amp;quot;&amp;gt;&lt;br /&gt;
=== Beispiel ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;U_{ein} = 4\,\mathrm{V}&amp;lt;/math&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;U_{aus} = 0\,\mathrm{V}&amp;lt;/math&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;t_{ein} = 1\,\mathrm{ms}&amp;lt;/math&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;t_{aus} = 3\,\mathrm{ms}&amp;lt;/math&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;R = 10\,\mathrm{\Omega}&amp;lt;/math&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Der Mittelwert dieser Spannung ist&lt;br /&gt;
:&amp;lt;math&amp;gt;U_m = 1\,\mathrm{V}&amp;lt;/math&amp;gt;.&lt;br /&gt;
Würde man mit diesem Wert die Leistung berechnen, so käme man auf&lt;br /&gt;
:&amp;lt;math&amp;gt;P = \frac{{U_m}^2}{R} = \frac{(1\,\mathrm{V})^2}{10\,\mathrm{\Omega}} = 0,1\,\mathrm{W}&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Der richtige Wert ist jedoch&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;P = \frac{(4\,\mathrm{V})^2}{10\,\mathrm{\Omega}} \cdot \frac{1\,\mathrm{ms}}{4\,\mathrm{ms}} +&lt;br /&gt;
\frac{(0\,\mathrm{V})^2}{10\,\mathrm{\Omega}} \cdot \frac{3\,\mathrm{ms}}{4\,\mathrm{ms}} =&lt;br /&gt;
0,4\,\mathrm{W}&lt;br /&gt;
&amp;lt;/math&amp;gt;.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Anwendung ==&lt;br /&gt;
&lt;br /&gt;
=== Motorsteuerung ===&lt;br /&gt;
&lt;br /&gt;
Eine der Hauptanwendungen für PWM ist die Ansteuerung von Motoren. Der große Vorteil von PWM ist hier der gute Wirkungsgrad. Würde man einen Digital-Analog-Wandler mit einem nachgeschalteten Verstärker zur Ansteuerung verwenden, dann würde im Verstärker eine sehr hohe Verlustleistung in Wärme umgewandelt werden; bei einem voll durchgeschalteten [[FET]] ist der Widerstand und damit die Verlustleistung dagegen sehr gering.&lt;br /&gt;
&lt;br /&gt;
Die verwendete Frequenz liegt meist im Bereich von einigen 10 kHz. Zur Berechnung des Drehmoments kann im Normalfall der Mittelwert der PWM-Spannung als Betriebsspannung angenommen werden.&lt;br /&gt;
&lt;br /&gt;
=== Digital-Analog-Wandler ===&lt;br /&gt;
&lt;br /&gt;
Bildet man mit einem analogen [[Filter|Tiefpassfilter]] den Mittelwert der Spannung, kann man die Pulsweitenmodulation zum Erzeugen von Analogsignalen verwenden ([[DA-Wandler|Digital-Analog-Wandler]]). Da beim PWM-Signal selbst nur zwei verschiedene Spannungen verwendet werden, wird das manchmal auch als 1-Bit-DA-Wandler bezeichnet; dieser Begriff ist aber ziemlich irreführend, da er nichts mit der Auflösung des resultierenden Analogsignals zu tun hat.&lt;br /&gt;
&lt;br /&gt;
Der Filter könnte zum Beispiel durch eine einfache passive RC-Kombination realisiert sein. Der Filter entfernt die hohe PWM-Grundfrequenz und läßt das geglättete Analogsignal übrig. Die [[Filter#Grenzfrequenz|Grenzfrequenz]] muss so gewählt werden, dass die PWM-Grundfrequenz ausreichend unterdrückt wird (Sperrdämpfung); gleichzeitig muß sie aber auch hoch genug sein, um das gewünschte Analogsignal nicht zu verändern.&lt;br /&gt;
&lt;br /&gt;
Pulsweitenmodulation wird auch zur Erzeugung verschiedener Ausgangsspannungen bei [[Schaltregler]]n benutzt. Dabei wird ein [[Transistor]] mit einem variablen Tastverhältnis angesteuert und damit die Ausgangsspannung reguliert.&lt;br /&gt;
&lt;br /&gt;
=== AD Wandlung mit PWM ===&lt;br /&gt;
&lt;br /&gt;
Einen recht billigen und einfachen AD-Wandler mit &amp;quot;1-Draht Kommunikation&amp;quot; kann man mit dem IC 556 (NE556 o.ä.) realisieren: der eine Timer des 556 arbeitet als 50% duty-cycle Rechteckgenerator bei beispielsweise 1 KHz und steuert den zweiten Timer an. Dieser besitzt ja einen Steuereingang zu Beeinflussung des Tastverhältnisses und auf diesen Pin gibt man das analoge Signal. Ein angeschlossener µC oder PC misst bei jedem Impuls die Impulslänge und man erhält so das Messergebnis. Bei &amp;gt; 10 KHz kann man so auch prima digital Sprache übertragen oder speichern ! (Tip stammt noch aus der Zeit als es keinen Mikroprozessor mit AD-Wandler gab...) Allerdings gibt es auch heute noch einige Controller ohne ADW.&lt;br /&gt;
&lt;br /&gt;
=== PWM mit AVR ===&lt;br /&gt;
&lt;br /&gt;
[[AVR-GCC-Tutorial#PWM_.28Pulsweitenmodulation.29]]&lt;/div&gt;</summary>
		<author><name>217.247.166.162</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=Basic&amp;diff=14029</id>
		<title>Basic</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=Basic&amp;diff=14029"/>
		<updated>2005-12-31T08:33:55Z</updated>

		<summary type="html">&lt;p&gt;217.247.166.162: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Programmiersprachen]]&lt;br /&gt;
Eine [[Programmiersprache]], die 1965 mit der Zielsetzung &amp;quot;Anfängern den Einstieg in das Programmieren zu erleichtern&amp;quot; erfunden wurde.&lt;br /&gt;
&lt;br /&gt;
Das ursprüngliche Basic war aus heutiger Sicht unglaublich primitiv:&lt;br /&gt;
* jeder einzelnen Anweisung musste eine Zeilennummer vorangestellt werden - m.a.W.: beim Schreiben eines Programms war es ratsam z.B. Zehnerschritte zu verwenden, um später noch Anweisungen einfügen zu können (*1)&lt;br /&gt;
* die Namen von Variablen konnten ein oder zwei Zeichen lang sein, wobei das erste ein Buchstabe und das zweite eine Ziffer sein musste - m.a.W.: A, A0, A1, A2, ... B, B0, B1, ... , Z, Z0, ... Z7, Z8, Z9&lt;br /&gt;
* die Namen von Array-Variablen konnten nur ein Zeichen lang sein - d.h. mehr als 26 Arrays waren nicht drin&lt;br /&gt;
* es gab zwar Unterprogramme, aber keine Parameter und keine lokalen Variablen - m.a.W.: genaueste manuelle(!) Buchführung nötig, wo man welche Variable zu welchem Zweck verwendet hat&lt;br /&gt;
* darüberhinaus erfolgte die Ablaufsteuerung allein durch &amp;quot;goto&amp;quot;-Anweisungen - m.a.W.: Grüß-Gott [[Spaghetti-Code]], Good-Bye [[Strukturierte Programmierung]]&lt;br /&gt;
&lt;br /&gt;
(*1: Mit etwas Glück hatte man eine &amp;quot;renum&amp;quot;-Anweisung zur Verfügung, mit der man vor größeren Programmänderungen alles neu durchnummerieren konnte.)&lt;br /&gt;
&lt;br /&gt;
Spätere BASIC-Dialekte haben die genannten Beschränkungen nicht mehr&lt;br /&gt;
&lt;br /&gt;
* BASICA.COM / GW-BASIC wurde mit DOS mitgeliefert, Clone: bwbasic für Linux&lt;br /&gt;
* QBasic / Quickbasic in späteren DOS-Versionen enthalten&lt;br /&gt;
* Omicron-Basic auf dem Atari ST, ähnlich QBasic&lt;br /&gt;
* GfA-Basic für Amiga/Atari/Windows heute kostenlos in der letzten  16Bit-Version, Erweiterungen für 32Bit siehe http://www.rowalt.de&lt;br /&gt;
* Visual BASIC von Microsoft&lt;br /&gt;
* OpenOffice enthält eine BASIC-artige Programmiersprache&lt;br /&gt;
* GAMBAS für Linux kostenlos&lt;br /&gt;
* Powerbasic Linux/Windows u.a. nicht kostenlos&lt;/div&gt;</summary>
		<author><name>217.247.166.162</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=DTMF&amp;diff=14336</id>
		<title>DTMF</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=DTMF&amp;diff=14336"/>
		<updated>2005-12-31T08:22:27Z</updated>

		<summary type="html">&lt;p&gt;217.247.166.162: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Abkürzung für &#039;&#039;&#039;D&#039;&#039;&#039;ual &#039;&#039;&#039;T&#039;&#039;&#039;one &#039;&#039;&#039;M&#039;&#039;&#039;ulti-&#039;&#039;&#039;F&#039;&#039;&#039;requency&lt;br /&gt;
&lt;br /&gt;
Wird z.B. beim Telefon verwendet. Jeder Zahl ist ein Doppelton (zwei miteinander vermischte Frequenzen) zugeordnet (7 Frequenzen in einer 3 * 4 Matrix, also 12 mögliche Kodierungen).  Die Frequenzen sind so gewählt, daß sie im normalen Sprachspektrum möglichst nicht auftauchen können, da im Telefonibereich eine &#039;&#039;in-band&#039;&#039; Signalisierung damit vorgenommen werden soll (d.h. diese Signale sollen sich eindeutig vom Nutzsignal unterscheiden können).&lt;br /&gt;
&lt;br /&gt;
Es gibt spezielle Schaltkreise für Erzeugung und Erkennung von DTMF, die sich einfach an Mikrocontroller ankoppeln lassen.  Die Erkennung benötigt irgendeine Form von Filter, entweder analog (ziemlich aufwendig) oder digital ([[FFT]] o.ä.), so daß eine direkte Erkennung mit einem Controller selten benutzt wird.  Die Erzeugung von DTMF ist geringfügig einfacher und könnte z.B. über Sinustabellen erfolgen.&lt;br /&gt;
&lt;br /&gt;
DTMF wird gern als Lehrbeispiel für die Verwendung des [[Goertzel-Algorithmus]] benutzt, ein kleines IIR-Filter zur Tondecodierung.&lt;/div&gt;</summary>
		<author><name>217.247.166.162</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=Hardwarebeschreibungssprachen&amp;diff=11875</id>
		<title>Hardwarebeschreibungssprachen</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=Hardwarebeschreibungssprachen&amp;diff=11875"/>
		<updated>2005-12-31T08:18:37Z</updated>

		<summary type="html">&lt;p&gt;217.247.166.162: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Mit einer Hardwarebeschreibungssprache lässt sich das Verhalten von (digitalen) Schaltkreisen in Textform beschreiben. Aus dem Quelltext können dann z.B. Daten für die Programmierung von Logikbausteinen ([[FPGA]], [[CPLD]], [[GAL]]) gewonnen werden, oder es lassen sich Simulationen durchführen.&lt;br /&gt;
&lt;br /&gt;
== ABEL ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;A&#039;&#039;&#039;dvanced &#039;&#039;&#039;B&#039;&#039;&#039;oolean &#039;&#039;&#039;E&#039;&#039;&#039;xpression &#039;&#039;&#039;L&#039;&#039;&#039;anguage&lt;br /&gt;
&lt;br /&gt;
ABEL wird hauptsächlich für kleinere Aufgaben wie die Programmierung von [[GAL]]s verwendet.&lt;br /&gt;
&lt;br /&gt;
=== Weblinks ===&lt;br /&gt;
* [http://www.seas.upenn.edu/ese/rca/software/abel/abel.primer.html ABEL-HDL Primer] - englischsprachige ABEL-Einführung von der University of Pennsylvania&lt;br /&gt;
&lt;br /&gt;
== AHDL == &lt;br /&gt;
&lt;br /&gt;
Die Altera Hardware Description Language AHDL ist eine Weiterentwicklung von ABEL.&lt;br /&gt;
&lt;br /&gt;
== CUPL ==&lt;br /&gt;
&lt;br /&gt;
Dem ABEL verwandte Sprache, wird von Atmel noch als WinCUPL für Atmel-CPLDs kostenlos bereitgestellt, aber nicht mehr gepflegt. (Der Texteditor stürzt beim Speichern ab und beendet das Programm - Abhilfe: Wordpad o.ä. benutzen)&lt;br /&gt;
&lt;br /&gt;
== Verilog ==&lt;br /&gt;
&lt;br /&gt;
=== Weblinks ===&lt;br /&gt;
* [http://www.eg.bucknell.edu/~cs320/1995-fall/verilog-manual.html Verilog Handbook]&lt;br /&gt;
* [http://www.stanford.edu/class/ee183/handouts_win2003/VerilogQuickRef.pdf Verilog Quick Reference]&lt;br /&gt;
* [http://www.fpga4fun.com/VerilogTips.html Verilog Tips and Tricks]&lt;br /&gt;
&lt;br /&gt;
== VHDL ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;V&#039;&#039;&#039;ery High Speed Integrated Circuit &#039;&#039;&#039;H&#039;&#039;&#039;ardware &#039;&#039;&#039;D&#039;&#039;&#039;escription &#039;&#039;&#039;L&#039;&#039;&#039;anguage&lt;br /&gt;
&lt;br /&gt;
VHDL ist die in Europa vorwiegend verwendete Beschreibungssprache für digitale Schaltungen.&lt;br /&gt;
&lt;br /&gt;
=== Weblinks ===&lt;br /&gt;
====Deutsch====&lt;br /&gt;
* [http://www.nt-nv.fh-koeln.de/Labor/VhdlEasy/index.html VHDL easy] - deutschsprachige VHDL-Einführung von der FH Köln&lt;br /&gt;
* [http://www.itiv.uni-karlsruhe.de/opencms/opencms/de/study/vhdl/book/download.html Schaltungsdesign mit VHDL] - komplettes Buch als PDF&lt;br /&gt;
* NEU! [http://tech-www.informatik.uni-hamburg.de/vhdl/doc/kurzanleitung/vhdl.pdf VHDL Kurzanleitung] - deutschsprachig, ca. 110 Seiten &lt;br /&gt;
* [http://wwwlrh.fh-bielefeld.de/vhdl_vor/VHDL_VOR.htm Schaltungs-Synthese mit VHDL] eine Einfuehrung&lt;br /&gt;
* [http://www.vhdl-online.de/tutorial/ VHDL Tutorial] - umfangreiches Tutorial zu VHDL&lt;br /&gt;
&lt;br /&gt;
====English====&lt;br /&gt;
* [http://www.ti.informatik.uni-frankfurt.de/Docs/cook/ VHDL Cookbook] - komplettes Buch&lt;br /&gt;
* [http://www.fpga4fun.com/VHDLTips.html VHDL Tips and Tricks]&lt;/div&gt;</summary>
		<author><name>217.247.166.162</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=Entprellung&amp;diff=11536</id>
		<title>Entprellung</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=Entprellung&amp;diff=11536"/>
		<updated>2005-12-31T08:11:33Z</updated>

		<summary type="html">&lt;p&gt;217.247.166.162: /* Hardwareentprellung */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Mechanische Schalter &amp;quot;prellen&amp;quot; beim Ein- und Ausschalten:&lt;br /&gt;
&lt;br /&gt;
[[Bild:Entprellen.png]]&lt;br /&gt;
&lt;br /&gt;
Um dieses &amp;quot;unsaubere&amp;quot; Signal richtig auszuwerten gibt es verschiedene Ansätze.&lt;br /&gt;
&lt;br /&gt;
== Hardwareentprellung ==&lt;br /&gt;
&lt;br /&gt;
Tastenentprellung lässt sich in Hardware durch einen [[Filter|Tiefpassfilter]] mit nachgeschaltetem [[Schmitt-Trigger]] realisieren.&lt;br /&gt;
&lt;br /&gt;
Bei Verwendung eines Mikrocontrollers kann man sich die zusätzliche Hardware sparen, da die Entprellung genau so gut in Software funktioniert.&lt;br /&gt;
&lt;br /&gt;
Eine andere Hardware-Lösung ist die Verwendung eines Umschaltkontaktes und eines RS-Flipflops, das aus zwei NAND oder NOR-Gattern gebildet wird. Der Mittelkontakt wird beim NOR auf GND oder beim NAND mit Vcc verbunden, die beiden anderen Kontakte führen zu den RS-Eingängen und je einem Pull-Up (NOR) bzw. Pull-Down- (NAND)Widerstand. Der Schalter sollte vom Typ &amp;quot;nicht kurzschließend&amp;quot; sein.&lt;br /&gt;
&lt;br /&gt;
== Softwareentprellung ==&lt;br /&gt;
&lt;br /&gt;
===Nach Peter Dannegger===&lt;br /&gt;
&lt;br /&gt;
Siehe dazu: [http://www.mikrocontroller.net/forum/read-4-20435.html#new|Forum] &lt;br /&gt;
&lt;br /&gt;
Vorteile&lt;br /&gt;
*besonders kurzer Code&lt;br /&gt;
*schnell&lt;br /&gt;
*sicher (4-fach Abtastung) &lt;br /&gt;
&lt;br /&gt;
Außerdem können 8 Tasten gleichzeitig bearbeitet werden, es dürfen also&lt;br /&gt;
alle exakt zur selben Zeit gedrückt werden.&lt;br /&gt;
Andere Routinen können z.B. nur eine Taste verarbeiten, d.h. die zuerst&lt;br /&gt;
oder zuletzt gedrückte gewinnt oder es kommt Unsinn heraus.&lt;br /&gt;
&lt;br /&gt;
Die eigentliche Einlese- und Entprellroutine ist nur 8 Instruktionen&lt;br /&gt;
kurz. Der entprellte Tastenzustand ist im Register &amp;quot;key_state&amp;quot;.&lt;br /&gt;
Mit nur 2 weiteren Instruktionen wird dann der Wechsel von Taste offen zu&lt;br /&gt;
Taste gedrückt erkannt und im Register &amp;quot;key_press&amp;quot; abgelegt.&lt;br /&gt;
&lt;br /&gt;
Im Beispielcode werden dann damit 8 LEDs ein- und ausgeschaltet.&lt;br /&gt;
&lt;br /&gt;
Jede Taste entspricht einem Bit in den Registern, d.h. die Verarbeitung&lt;br /&gt;
erfolgt bitweise mit logischen Operationen.&lt;br /&gt;
&lt;br /&gt;
Zum Verständnis empfiehlt es sich daher, die Logikgleichungen mit Gattern&lt;br /&gt;
für ein Bit = eine Taste aufzumalen.&lt;br /&gt;
&lt;br /&gt;
Die Register kan man sich als Flip-Flops denken, die mit der Entprellzeit&lt;br /&gt;
als Takt arbeiten. D.h. man kann das auch so z.B. in einem GAL22V10&lt;br /&gt;
realisieren.&lt;br /&gt;
&lt;br /&gt;
Als Kommentar sind neben den einzelnen Instruktionen alle 8 möglichen&lt;br /&gt;
Kombinationen der 3 Signale dargestellt.&lt;br /&gt;
&lt;br /&gt;
ASM BSP Code für AVR:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
.nolist&lt;br /&gt;
.include &amp;quot;c:\avr\inc\1200def.inc&amp;quot;&lt;br /&gt;
.list&lt;br /&gt;
.def	save_sreg	= r0&lt;br /&gt;
.def	iwr0		= r1&lt;br /&gt;
.def	iwr1		= r2&lt;br /&gt;
&lt;br /&gt;
.def	key_old		= r3&lt;br /&gt;
.def	key_state 	= r4&lt;br /&gt;
.def	key_press	= r5&lt;br /&gt;
&lt;br /&gt;
.def	leds		= r16&lt;br /&gt;
.def	wr0		= r17&lt;br /&gt;
&lt;br /&gt;
.equ	key_port 	= pind&lt;br /&gt;
.equ	led_port	= portb&lt;br /&gt;
&lt;br /&gt;
	rjmp	init&lt;br /&gt;
	.org	OVF0addr		;timer interrupt 24ms&lt;br /&gt;
	in	save_sreg, SREG&lt;br /&gt;
get8key:				;/old      state     iwr1      iwr0&lt;br /&gt;
	mov	iwr0, key_old		;00110011  10101010            00110011&lt;br /&gt;
	in	key_old, key_port	;11110000&lt;br /&gt;
	eor	iwr0, key_old		;                              11000011&lt;br /&gt;
	com	key_old			;00001111&lt;br /&gt;
	mov	iwr1, key_state		;                    10101010&lt;br /&gt;
	or	key_state, iwr0		;          11101011&lt;br /&gt;
	and	iwr0, key_old		;                              00000011&lt;br /&gt;
	eor	key_state, iwr0		;          11101000&lt;br /&gt;
	and	iwr1, iwr0		;                    00000010&lt;br /&gt;
	or	key_press, iwr1		;store key press detect&lt;br /&gt;
;&lt;br /&gt;
;			insert other timer functions here&lt;br /&gt;
;&lt;br /&gt;
	out	SREG, save_sreg&lt;br /&gt;
	reti&lt;br /&gt;
;-------------------------------------------------------------------------&lt;br /&gt;
init:&lt;br /&gt;
	ldi	wr0, 0xFF&lt;br /&gt;
	out	ddrb, wr0&lt;br /&gt;
	ldi	wr0, 1&amp;lt;&amp;lt;CS02^1&amp;lt;&amp;lt;CS00	;divide by 1024 * 256&lt;br /&gt;
	out	TCCR0, wr0&lt;br /&gt;
	ldi	wr0, 1&amp;lt;&amp;lt;TOIE0		;enable timer interrupt&lt;br /&gt;
	out	TIMSK, wr0&lt;br /&gt;
&lt;br /&gt;
	clr	key_old&lt;br /&gt;
	clr	key_state&lt;br /&gt;
	clr	key_press&lt;br /&gt;
	ldi	leds, 0xFF&lt;br /&gt;
main:	cli&lt;br /&gt;
	eor	leds, key_press		;toggle LEDs&lt;br /&gt;
	clr	key_press		;clear, if key press action done&lt;br /&gt;
	sei&lt;br /&gt;
	out	led_port, leds&lt;br /&gt;
	rjmp	main&lt;br /&gt;
;-------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Links=&lt;br /&gt;
* [[AVR-GCC-Tutorial#.28Tasten-.29Entprellung|AVR-GCC-Tutorial Tastenentprellung]]&lt;br /&gt;
* http://www.mikrocontroller.net/forum/read-4-20435.html (AVR Assembler)&lt;br /&gt;
* http://www.mikrocontroller.net/forum/read-4-20549.html (AVR Assembler)&lt;br /&gt;
* http://www.mikrocontroller.net/forum/read-4-16594.html (C)&lt;br /&gt;
* http://www.mikrocontroller.net/forum/read-1-140056.html#140084 (AVR-ASM 8 Tasten)&lt;br /&gt;
* http://www.mikrocontroller.net/forum/read-1-140056.html#140946 (AVR-ASM 1 Taste)&lt;br /&gt;
* http://www.ganssle.com/debouncing.pdf A guide to debouncing (engl.), praktische Erläuterungen zum Entprellen in Soft- und Hardware&lt;br /&gt;
* http://www.mikrocontroller.net/forum/read-1-242461.html&lt;/div&gt;</summary>
		<author><name>217.247.166.162</name></author>
	</entry>
</feed>