<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>ET Tutorials &#187; Leitartikel</title>
	<atom:link href="http://et-tutorials.de/category/leitartikel/feed/" rel="self" type="application/rss+xml" />
	<link>http://et-tutorials.de</link>
	<description>Eletrotechnik verstehen durch Video Tutorials</description>
	<lastBuildDate>Thu, 17 May 2012 12:57:06 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.2</generator>
		<item>
		<title>Kostenloser Elektrotechnik VIDEO-Kurs</title>
		<link>http://et-tutorials.de/4585/kostenloser-elektrotechnik-video-kurs/</link>
		<comments>http://et-tutorials.de/4585/kostenloser-elektrotechnik-video-kurs/#comments</comments>
		<pubDate>Fri, 19 Aug 2011 14:13:55 +0000</pubDate>
		<dc:creator>Wolfgang Bengfort</dc:creator>
				<category><![CDATA[Dies&Das]]></category>
		<category><![CDATA[Leitartikel]]></category>

		<guid isPermaLink="false">http://et-tutorials.de/?p=4585</guid>
		<description><![CDATA[Wenn Du regelmäßig auf ET-Tutorials.de bist, wirst Du es sicher schon gemerkt haben. Ich habe einen Elektrotechnik Email VIDEO-Kurs eingerichtet. Die Anzahl an Elektrotechnik-Tutorials und –Videos hier auf ET-Tutorials.de ist mittlerweile sehr groß geworden. Für viele Besucher ist ET-Tutorials quasi ein Nachschlagewerk geworden. Die Abrufstatistiken zeigen, dass viele von Euch gezielt nach bestimmten Stichwörtern, hier [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://et-tutorials.de/wp-content/uploads/2011/08/Monitor.jpg"><img src="http://et-tutorials.de/wp-content/uploads/2011/08/Monitor.jpg" alt="" title="Monitor" width="231" height="199" class="alignleft size-full wp-image-4621" /></a><a name="oben"></a>Wenn Du regelmäßig auf ET-Tutorials.de bist, wirst Du es sicher schon gemerkt haben. </p>
<p>Ich habe einen <strong>Elektrotechnik Email VIDEO-Kurs</strong> eingerichtet.</p>
<p>Die Anzahl an Elektrotechnik-Tutorials und –Videos hier auf ET-Tutorials.de ist mittlerweile sehr groß geworden.</p>
<p>Für viele Besucher ist ET-Tutorials quasi ein Nachschlagewerk geworden. Die Abrufstatistiken zeigen, dass viele von Euch gezielt nach bestimmten Stichwörtern, hier auf der Seite oder über Suchmaschinen, suchen und sich dann das geeignete Video-Tutorial angucken.</p>
<p>Wer jedoch beginnt, sich mit dem Thema Elektrotechnik zu beschäftigen, der stellt sich häufig die gleichen Fragen.</p>
<ul>
<li>Wo fange ich an?</li>
<li>In welcher Reihenfolge sehe ich mir die einzelnen Artikel und Videos am besten an.</li>
</ul>
<h2>Der Elektrotechnik VIDEO-Kurs</h2>
<p>Schüler und Studenten, die in Ihrem Bildungs- bzw. Studiengang mit Elektrotechnik zu tun haben, soll dieser Kurs Schritt für Schritt begleiten.</p>
<p>Wenn Du also Schüler oder Student, beispielsweise eines</p>
<ul>
<li>Beruflichen Gymnasiums Elektrotechnik</li>
</ul>
<ul>
<li>Fachschule Elektrotechnik</li>
</ul>
<ul>
<li>Fachoberschule Elektrotechnik</li>
</ul>
<ul>
<li>Höhere Berufsfachschule Elektrotechnik</li>
</ul>
<ul>
<li>Technikerschule</li>
</ul>
<ul>
<li>Fachhochschule</li>
</ul>
<ul>
<li>Technische Hochschule / Universität</li>
</ul>
<ul>
<li>&#8230;</li>
</ul>
<p>bist, dann soll Dir dieser Kurs beim Studium des Themas Elektrotechnik helfen.</p>
<p><center><iframe class="ktiframe" src="https://www.klick-tipp.com/de/form.php?id=10879&#038;type=if" frameborder="0" allowtransparency="true" width="278px" height="174px" scrolling="no"></iframe></center><br />
<br />
Aber auch für Schüler an allgemeinbildenden Schulen, wie beispielsweise eines herkömmlichen Gymnasiums, die Interesse an Technik, insbesondere Elektrotechnik, haben und nach ihrem Abitur evtl. Elektrotechnik studieren möchten, soll dieser Kurs eine Vorbereitung für das spätere Studium sein.</p>
<p>Der Kurs beginnt mit den absoluten Grundlagen der Elektrotechnik und behandelt anschließend die Themen</p>
<ul>
<li>Gleichstromnetze</li>
</ul>
<ul>
<li>Wechsel- und Drehstromsysteme</li>
</ul>
<ul>
<li>Elektrische Maschinen</li>
</ul>
<ul>
<li>Regelungstechnik</li>
</ul>
<ul>
<li>Digitaltechnik und</li>
</ul>
<ul>
<li>Mikrocontroller-Programmierung.</li>
</ul>
<p>Es sollte also auf jeden Fall etwas für Dich dabei sein <img src='http://et-tutorials.de/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> </p>
<p>Melde Dich am besten jetzt für den Kurs an:</p>
<p><center><script type="text/javascript" src="https://www.klick-tipp.com/de/form.php?id=10898&#038;type=js"></script><noscript><iframe class="ktiframe" src="https://www.klick-tipp.com/de/form.php?id=10898&#038;type=if" frameborder="0" allowtransparency="true" width="278px" height="174px" scrolling="no"></iframe></noscript></center></p>
<p>Der Kurs ist selbstverständlich kostenlos, völlig unverbindlich und Du kannst Dich jederzeit wieder aus dem Verteiler austragen. Deine Email-Adresse wird dann automatisch aus dem System gelöscht.<br />
<img src="http://vg08.met.vgwort.de/na/6e091d08bda54d2d823e91af081f0935" width="1" height="1" alt=""></p>
]]></content:encoded>
			<wfw:commentRss>http://et-tutorials.de/4585/kostenloser-elektrotechnik-video-kurs/feed/</wfw:commentRss>
		<slash:comments>10</slash:comments>
		</item>
		<item>
		<title>Lösung der Aufgabe zu den externen Interrupts</title>
		<link>http://et-tutorials.de/4444/losung-der-aufgabe-zu-den-externen-interrupts/</link>
		<comments>http://et-tutorials.de/4444/losung-der-aufgabe-zu-den-externen-interrupts/#comments</comments>
		<pubDate>Tue, 16 Aug 2011 08:00:24 +0000</pubDate>
		<dc:creator>Wolfgang Bengfort</dc:creator>
				<category><![CDATA[Aktuelle Artikel]]></category>
		<category><![CDATA[Leitartikel]]></category>
		<category><![CDATA[Mikrocontroller]]></category>

		<guid isPermaLink="false">http://et-tutorials.de/?p=4444</guid>
		<description><![CDATA[Heute geht es nun um die Lösung aus dem Artikel der vergangenen Woche, in dem ich die Mechansmen des externen Interrupts des 8051 Mikrocontrollers vorgstellt habe. Zur Erinnerung. Die Aufgabe lautete: Bei der Kaffeemaschine könen zwei Störungen auftreten, die jeweils einen Interrupt am Mikrocontroller auslösen. Diese beiden Fehlermeldungen sollen ausgewertet werden. Die Maschine muss (bei [...]]]></description>
			<content:encoded><![CDATA[<p><div style='float:left; padding-left:10px; margin-left:0px; padding-right:10px; margin-right:0px; padding-top:10px; padding-bottom: 10px;'>
<script type="text/javascript"><!--
google_ad_client = "ca-pub-9604435451771969";
/* oben links im Artikel Image */
google_ad_slot = "7784759186";
google_ad_width = 300;
google_ad_height = 250;
//-->
</script>
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script>
</div>Heute geht es nun um die Lösung aus dem Artikel der vergangenen Woche, in dem ich die Mechansmen des <a href="http://et-tutorials.de/4429/externe-interrupts-beim-8051/">externen Interrupts des 8051 Mikrocontrollers</a> vorgstellt habe.</p>
<p>Zur Erinnerung. Die Aufgabe lautete:</p>
<p>Bei der Kaffeemaschine könen zwei Störungen auftreten, die jeweils einen Interrupt am Mikrocontroller auslösen.</p>
<p>Diese beiden Fehlermeldungen sollen ausgewertet werden.</p>
<ol>
<li>Die Maschine muss (bei Gelegenheit) entkalkt werden<br />
	Der Sensor, der eine zu hohe Verkalkung anzeigt, ist an INT0 angeschlossen und gibt als Meldung eine „0“ aus. Wenn der Sensor eine Verkalkung feststellt, soll an Portpin P0.0 eine 1 ausgegeben werden. Hierdurch wird ein Warnsummer eingeschaltet. Da diese Meldung nicht so kritisch ist, kann der Summer ausgeschaltet werden. Er soll nicht automatisch wieder eingeschaltet werden, auch wenn die Kaffeemaschinen noch nicht entkalkt worden ist.</li>
<li>Der Druck der Maschine ist zu hoch. Der Sensor hierfür ist an INT1 angeschlossen und gibt als Meldung eine „0“ aus. Dieser Zustand ist kritisch. In der zugehörigen Interrupt Service Routine soll an Port P0.1 eine 1 ausgegeben werden. Hierdurch wird ein Alarm ausgelöst und die Kaffeemaschine heruntergefahren. Sollte jemand den Alam löschen, der Druck aber immer noch zu hoch sein, soll automatisch die ISR wieder aufgerufen werden.</li>
</ol>
<p>&nbsp;</p>
<h2>Flankengesteuerter Interrupt</h2>
<p>Für den ersten Fall sollte die Programmierung also so aussehen, dass die Fehlermeldung „weggedrückt“ werden kann. Obwohl der Fehler vom Sensor weiter gemeldet wird, sollten keine neuen Interrupts generiert werden. Die Lösung dafür ist, den Interrupt INT0 flankengesteuert zu konfigurieren, so dass die Interrupt Service Routine nur einmal, beim Auftreten des Fehlers, ausgelöst wird. Nur dann sehen wir die negative Flanke.</p>
<h2>Pegelgesteuerter Interrupt</h2>
<p>Im zweiten Fall soll der Alarm nicht abgeschaltet werden können. So lange der Druck zu groß ist, soll der Alarm wieder erneut eingeschaltet werden.</p>
<p>Das kann dadurch erreicht werden, indem der Interrupt pegelgesteuert realisiert wird. Das heißt, so lange die Fehlerbedingung anlegt, wird laufend die Interrupt Service Routine ausgeführt.</p>
<h2>Das Video</h2>
<p><object width="560" height="349" classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="allowFullScreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="src" value="http://www.youtube.com/v/JrarrV2FXp8?version=3&amp;hl=de_DE&amp;hd=1" /><param name="allowfullscreen" value="true" /><embed width="560" height="349" type="application/x-shockwave-flash" src="http://www.youtube.com/v/JrarrV2FXp8?version=3&amp;hl=de_DE&amp;hd=1" allowFullScreen="true" allowscriptaccess="always" allowfullscreen="true" /></object><br />
<iframe src="http://www.facebook.com/plugins/like.php?href=<?php echo urlencode(get_permalink($post->ID)); ?>&amp;layout=standard&amp;show-faces=true&amp;width=500&amp;action=like&amp;colorscheme=light" scrolling="no" frameborder="0" allowTransparency="true" style="border:none; overflow:hidden; width:500px; height:60px"></iframe>
<script type="text/javascript"><!--
google_ad_client = "ca-pub-9604435451771969";
/* Linkleiste unten */
google_ad_slot = "1662344633";
google_ad_width = 600;
google_ad_height = 15;
//-->
</script>
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script>
<center>
<script type="text/javascript"><!--
google_ad_client = "ca-pub-9604435451771969";
/* 336x280 unter Video */
google_ad_slot = "9597420007";
google_ad_width = 336;
google_ad_height = 280;
//-->
</script>
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script>
</center></p>
<p>Auch in dieser Woche gibt es wieder eine kleine Aufgabe. Du erinnerst Dich vielleicht noch an den Begriff der Interrupt Pending Flags aus der Folge <a href="http://et-tutorials.de/4429/externe-interrupts-beim-8051/">externe Interrupts</a>.</p>
<p>Dieser Mechanismus, das Auslösen von Interrupts per Software, soll nun genutzt werden.</p>
<h2>Aufgabe</h2>
<p>Wenn der Druck zu hoch ist, soll so viel Radau wie möglich gemacht werden. Es soll neben dem eigentlichen Alarm „Druck zu hoch“ auch der Summer für die Kalkmeldung eingeschaltet werden.</p>
<p>Da nicht an der Hardware geschraubt werden soll, muss dies durch Software gelöst werden. Hierzu soll auch der Interrupt INT0 ausgelöst werden, wenn der Druck zu hoch ist.</p>
<p>Dieser Artikel ist Teil des Mikrocontrollerkurs auf ET-Tutorials.de.<br />
<a href="http://et-tutorials.de/mikrocontroller/"> Hier geht es zurück zur Übersichtsseite des Mikrocontroller-Kurses</a> .</p>
<p><img src="http://vg08.met.vgwort.de/na/368ed99aca4d4cd09bcedbdedf1c9039" width="1" height="1" alt=""></p>
]]></content:encoded>
			<wfw:commentRss>http://et-tutorials.de/4444/losung-der-aufgabe-zu-den-externen-interrupts/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Externe Interrupts beim 8051</title>
		<link>http://et-tutorials.de/4429/externe-interrupts-beim-8051/</link>
		<comments>http://et-tutorials.de/4429/externe-interrupts-beim-8051/#comments</comments>
		<pubDate>Tue, 09 Aug 2011 09:16:23 +0000</pubDate>
		<dc:creator>Wolfgang Bengfort</dc:creator>
				<category><![CDATA[Aktuelle Artikel]]></category>
		<category><![CDATA[Leitartikel]]></category>
		<category><![CDATA[Mikrocontroller]]></category>

		<guid isPermaLink="false">http://et-tutorials.de/?p=4429</guid>
		<description><![CDATA[Heute geht es nun um die Programmierung eines externen Interrupts. Die Programmierung eines externen Interrupts ist eigentlich sehr einfach. Lediglich einige wichtige Register, die über die Special Function Register des 8051 erreicht werden können, müssen gesetzt werden. Dann muss noch die gewünschte Interrupts Service Routine erstellt werden und schon kann auf externe Signale reagiert werden. [...]]]></description>
			<content:encoded><![CDATA[<p><div style='float:left; padding-left:10px; margin-left:0px; padding-right:10px; margin-right:0px; padding-top:10px; padding-bottom: 10px;'>
<script type="text/javascript"><!--
google_ad_client = "ca-pub-9604435451771969";
/* oben links im Artikel Image */
google_ad_slot = "7784759186";
google_ad_width = 300;
google_ad_height = 250;
//-->
</script>
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script>
</div>Heute geht es nun um die Programmierung eines externen Interrupts. Die Programmierung eines externen Interrupts ist eigentlich sehr einfach.</p>
<p>Lediglich einige wichtige Register, die über die Special Function Register des 8051 erreicht werden können, müssen gesetzt werden. Dann muss noch die gewünschte Interrupts Service Routine erstellt werden und schon kann auf externe Signale reagiert werden.</p>
<p>Der heutige Artikel besteht aus 2 Videos. Im ersten Video erläutere ich die wichtigsten Register, die ich hier noch einmal aufführe.</p>
<h2>Register für den Interrupt INT0</h2>
<p><strong>/INT0</strong> am Portpin 3.2: <br />
An diesen Anschluss muss das Signal für den externen Interrupt 0 angeschlossen werden.</p>
<p><strong>EAL</strong>, Enable All Interrupts: <br />
EAL muss gleich 1 gesetzt werden, damit eine Anforderung eines Interrupts überhaupt durchgelassen werden können. Dieses Bit ist nach dem Start des Controllers auf 0 gesetzt. Interrupts werden also zunächst nicht zugelassen. So kann das Gesamtsystem zunächst einmal initialisiert werden, ohne von Interrupts gestört zu werden.</p>
<p><strong>EX0</strong>, Enable eXternal Interrupt 0: <br />
schaltet den externen Interrupt 0 Freitag</p>
<p><strong>IT0</strong>:        <br />
0 bedeutet pegelgesteuerter Interrupt<br />
1 bedeutet flankengesteuerter Interrupt</p>
<p><strong>IE0</strong>: ist das zugehörige Interrupt Pendig Flag, <br />
das auch per Software gesetzt werden kann. SO könnte man eine Interrupt Service Routine auch per Software auslösen, ein sogenannter Software Trap.</p>
<p>&nbsp;</p>
<h2>Externer Interrupt 0</h2>
<p>Jetzt aber zum Video <img src='http://et-tutorials.de/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> </p>
<p><object width="560" height="349"><param name="movie" value="http://www.youtube.com/v/Wa28lx0TGCA?version=3&amp;hl=de_DE&amp;hd=1"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/Wa28lx0TGCA?version=3&amp;hl=de_DE&amp;hd=1" type="application/x-shockwave-flash" width="560" height="349" allowscriptaccess="always" allowfullscreen="true"></embed></object><br />
<iframe src="http://www.facebook.com/plugins/like.php?href=<?php echo urlencode(get_permalink($post->ID)); ?>&amp;layout=standard&amp;show-faces=true&amp;width=500&amp;action=like&amp;colorscheme=light" scrolling="no" frameborder="0" allowTransparency="true" style="border:none; overflow:hidden; width:500px; height:60px"></iframe>
<script type="text/javascript"><!--
google_ad_client = "ca-pub-9604435451771969";
/* Linkleiste unten */
google_ad_slot = "1662344633";
google_ad_width = 600;
google_ad_height = 15;
//-->
</script>
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script>
<center>
<script type="text/javascript"><!--
google_ad_client = "ca-pub-9604435451771969";
/* 336x280 unter Video */
google_ad_slot = "9597420007";
google_ad_width = 336;
google_ad_height = 280;
//-->
</script>
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script>
</center></p>
<h2>Der Externer Interrupt 0 umgesetzt</h2>
<p>Im folgenden Video zeige ich eine Umsetzung des externen Interrupts 0, bei der ich auch den Unterschied zwischen flankengesteuertem Interrupt und pegelgesteuerten Interrupt erläutere.</p>
<p><object width="425" height="349"><param name="movie" value="http://www.youtube.com/v/XC3CfPrY2mA?version=3&amp;hl=de_DE&amp;hd=1"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/XC3CfPrY2mA?version=3&amp;hl=de_DE&amp;hd=1" type="application/x-shockwave-flash" width="425" height="349" allowscriptaccess="always" allowfullscreen="true"></embed></object></p>
<p>&nbsp;</p>
<h2>Deine Aufgabe</h2>
<p>Heute lohnt es sich wieder eine Funktion für den Kaffeeautomaten zu schreiben. Und zwar fehlen noch einige Sicherheitsfunktionen.</p>
<p>In so einer professionellen Kaffeemaschine <img src='http://et-tutorials.de/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' />  muss die Funktionstüchtigkeit der Gesamtanlage dauernd überwacht werden.</p>
<p>Deine Aufgabe ist es zwei mögliche Fehler auszuwerten und anzuzeigen.</p>
<ol>
<li>Die Maschine muss (bei Gelegenheit) entkalkt werden<br />
Der Sensor, der eine zu hohe Verkalkung anzeigt, ist an INT0 angeschlossen und gibt als Meldung eine „0“ aus. Wenn der Sensor eine Verkalkung feststellt, soll an Portpin P0.0 eine 1 ausgegeben werden. Hierdurch wird ein Warnsummer eingeschaltet. Da diese Meldung nicht so kritisch ist, kann der Summer ausgeschaltet werden. Er soll nicht automatisch wieder eingeschaltet werden, auch wenn die Kaffeemaschinen noch nicht entkalkt worden ist.</li>
<li>Der Druck der Maschine ist zu hoch. Der Sensor hierfür ist an INT1 angeschlossen und gibt als Meldung eine „0“ aus. Dieser Zustand ist kritisch. In der zugehörigen Interrupt Service Routine soll an Port P0.1 eine 1 ausgegeben werden. Hierdurch wird ein Alarm ausgelöst und die Kaffeemaschine heruntergefahren. Sollte jemand den Alam löschen, der Druck aber immer noch zu hoch sein, soll automatisch die ISR wieder aufgerufen werden.</li>
</ol>
<p>Es geht also in der Aufgabe sowohl um den Interrupt 0 und den Interrupt 1 und um pegelgesteuerte wie auch um flankengesteuerte Interrupts.</p>
<h2>Hinweis zur Programmierung der Internet Service Routine.</h2>
<p>Im Video habe ich gezeigt, dass für den Interrupt 0 die Priority Order 0 gilt. Für den Interrupt 1 gilt die Priority Order 2.</p>
<p>Die Interrupt Service Routinen sehen also beispielsweise wie folgt aus:</p>
<p>void ISR_INT0 (void) interrupt 0<br />
{}</p>
<p>void ISR_INT1 (void) interrupt 2<br />
{}</p>
<p>Dieser Artikel ist Teil des Mikrocontrollerkurs auf ET-Tutorials.de.<br />
<a href="http://et-tutorials.de/mikrocontroller/"> Hier geht es zurück zur Übersichtsseite des Mikrocontroller-Kurses</a> .<br />
<img src="http://vg08.met.vgwort.de/na/cd32caca1cd54db19d713be1ebf816f8" width="1" height="1" alt=""></p>
]]></content:encoded>
			<wfw:commentRss>http://et-tutorials.de/4429/externe-interrupts-beim-8051/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Interrupts und Polling</title>
		<link>http://et-tutorials.de/4414/interrupts-und-polling/</link>
		<comments>http://et-tutorials.de/4414/interrupts-und-polling/#comments</comments>
		<pubDate>Wed, 03 Aug 2011 10:25:56 +0000</pubDate>
		<dc:creator>Wolfgang Bengfort</dc:creator>
				<category><![CDATA[Aktuelle Artikel]]></category>
		<category><![CDATA[Leitartikel]]></category>
		<category><![CDATA[Mikrocontroller]]></category>

		<guid isPermaLink="false">http://et-tutorials.de/?p=4414</guid>
		<description><![CDATA[Heute geht es nun um das Thema Interrupts. Was sind Interrupts? Wozu benötigt man Interrupts? Was ist der Unterschied zum Polling-Verfahren Interrupts versus Polling Beim Polling fragt man Signale regelmäßig innerhalb der while-Schleife ab und wertet diese Signale aus. Ein großer Nachteil beim Polling ist allerdings, dass auf Signale nicht sofort reagiert werden kann, sondern [...]]]></description>
			<content:encoded><![CDATA[<p><div style='float:left; padding-left:10px; margin-left:0px; padding-right:10px; margin-right:0px; padding-top:10px; padding-bottom: 10px;'>
<script type="text/javascript"><!--
google_ad_client = "ca-pub-9604435451771969";
/* oben links im Artikel Image */
google_ad_slot = "7784759186";
google_ad_width = 300;
google_ad_height = 250;
//-->
</script>
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script>
</div>Heute geht es nun um das Thema Interrupts.</p>
<ul>
<li>Was sind Interrupts?</li>
<li>Wozu benötigt man Interrupts?</li>
<li>Was ist der Unterschied zum Polling-Verfahren</li>
</ul>
<h2>Interrupts versus Polling</h2>
<p>Beim Polling fragt man Signale regelmäßig innerhalb der while-Schleife ab und wertet diese Signale aus.<br />
Ein großer Nachteil beim Polling ist allerdings, dass auf Signale nicht sofort reagiert werden kann, sondern erst mit einer Verzögerung.<br />
So kann es im schlechtesten Fall passieren, dass man ein Signale gerade abgefragt hat und kurz nach dieser Abfrage das externe Signal am enstpechenden Potrt anliegt.</p>
<p>In dieser Situation kann es relativ lange dauern, bis der Port wieder abgefragt wird, je nach dem wie lange die Verarbeitung der Befehle in der while-Schleife dauert.</p>
<p>Bei kritischen Signalen, beispielsweise einer kritischen Fehlersituation, bei der sofort reagiert werden muss, kann das untragbar sein.</p>
<p>In solchen Fällen nimmt man besser Interrupts.</p>
<p>Bei Interrupts wird sofort reagiert. Wenn ein Interrupts-Signal auftritt, wird der aktuelle Befehl des Hauptprogramms beendet, die nötigen Register auf den Stack gerettet und dann anschließend sofort die ISR aufgerufen.<br />
Man hat in diesem Fall also kaum Zeitverzug zwischen der Ausführung der ISR und dem Auftreten des Signals.</p>
<p>Den Unterschied zwischen dem Polling-Verfahren und Interrupts zeige ich im folgenden Video.</p>
<p><object width="560" height="349" classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="allowFullScreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="src" value="http://www.youtube.com/v/UayQQ8yy9S0?version=3&amp;hl=de_DE&amp;hd=1" /><param name="allowfullscreen" value="true" /><embed width="560" height="349" type="application/x-shockwave-flash" src="http://www.youtube.com/v/UayQQ8yy9S0?version=3&amp;hl=de_DE&amp;hd=1" allowFullScreen="true" allowscriptaccess="always" allowfullscreen="true" /></object><br />
<iframe src="http://www.facebook.com/plugins/like.php?href=<?php echo urlencode(get_permalink($post->ID)); ?>&amp;layout=standard&amp;show-faces=true&amp;width=500&amp;action=like&amp;colorscheme=light" scrolling="no" frameborder="0" allowTransparency="true" style="border:none; overflow:hidden; width:500px; height:60px"></iframe>
<script type="text/javascript"><!--
google_ad_client = "ca-pub-9604435451771969";
/* Linkleiste unten */
google_ad_slot = "1662344633";
google_ad_width = 600;
google_ad_height = 15;
//-->
</script>
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script>
<center>
<script type="text/javascript"><!--
google_ad_client = "ca-pub-9604435451771969";
/* 336x280 unter Video */
google_ad_slot = "9597420007";
google_ad_width = 336;
google_ad_height = 280;
//-->
</script>
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script>
</center></p>
<p>In der heutigen Folge sollte es lediglich um den Unterschied zwsichen Polling und Interrupts gehen. Die Feinheiten von Interrupts werden wir in den folgenden Folgen behandeln.<br />
Der Vollständigkeit halbe kopiere ich hier noch die beiden Quellcodes hinein.</p>
<h2>Polling</h2>
<blockquote><p>#include&lt;REG515.H&gt;</p>
<p>sbit Fehler=P2^0;<br />
sbit Alarm=P2^1;</p>
<p>void alarmauswertung(void)<br />
{<br />
Alarm = Fehler;<br />
}</p>
<p>void main(void)<br />
{<br />
unsigned long int i=0;<br />
P1 = 0;<br />
P2 = 0;</p>
<p>Fehler = 1;<br />
Alarm = Fehler;</p>
<p>while(1)<br />
{<br />
for (i=0; i&lt;100000;i++)<br />
{<br />
P1=i;<br />
}<br />
alarmauswertung();</p>
<p>}</p>
<p>}</p></blockquote>
<h2>Interrupt</h2>
<blockquote><p>#include&lt;REG515.H&gt;</p>
<p>sbit Alarm=P2^1;</p>
<p>void ISR_alarmauswertung(void) interrupt 0<br />
{<br />
Alarm = 1;<br />
}</p>
<p>void main(void)<br />
{<br />
unsigned long int i=0;<br />
P1 = 0;<br />
P2 = 0;</p>
<p>EAL    = 1;<br />
EX0 = 1;</p>
<p>while(1)<br />
{<br />
for (i=0; i&lt;100000;i++)<br />
{<br />
P1=i;<br />
}</p>
<p>}</p>
<p>;</p>
<p>}</p></blockquote>
<p>Bis zum nächsten Mal!<br />
</p>
<p>Dieser Artikel ist Teil des Mikrocontrollerkurs auf ET-Tutorials.de.<br />
<a href="http://et-tutorials.de/mikrocontroller/"> Hier geht es zurück zur Übersichtsseite des Mikrocontroller-Kurses</a> .<br />
<img src="http://vg08.met.vgwort.de/na/b2d361ad7d2a4d75926f0b6da310befa" width="1" height="1" alt=""></p>
]]></content:encoded>
			<wfw:commentRss>http://et-tutorials.de/4414/interrupts-und-polling/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>Lösung zur Aufgabe: Lesen aus Ports</title>
		<link>http://et-tutorials.de/4391/losung-zur-aufgabe-lesen-aus-ports/</link>
		<comments>http://et-tutorials.de/4391/losung-zur-aufgabe-lesen-aus-ports/#comments</comments>
		<pubDate>Thu, 28 Jul 2011 11:20:08 +0000</pubDate>
		<dc:creator>Wolfgang Bengfort</dc:creator>
				<category><![CDATA[Aktuelle Artikel]]></category>
		<category><![CDATA[Leitartikel]]></category>
		<category><![CDATA[Mikrocontroller]]></category>

		<guid isPermaLink="false">http://et-tutorials.de/?p=4391</guid>
		<description><![CDATA[Heute geht es nun um die Lösung der Aufgabe aus der vorherigen Folge. Also darum, wie man aus Ports auslesen kann. Es ging wieder um den Kaffeeautomaten. Über LED s sollte angezeigt werden, welches Getränk ausgewählt wurde. Die Eingabe sollte nun über Schalter erfolgen, die den jeweiligen Portpin entweder mit  High, also logisch &#8220;1“, oder [...]]]></description>
			<content:encoded><![CDATA[<p><div style='float:left; padding-left:10px; margin-left:0px; padding-right:10px; margin-right:0px; padding-top:10px; padding-bottom: 10px;'>
<script type="text/javascript"><!--
google_ad_client = "ca-pub-9604435451771969";
/* oben links im Artikel Image */
google_ad_slot = "7784759186";
google_ad_width = 300;
google_ad_height = 250;
//-->
</script>
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script>
</div>Heute geht es nun um die Lösung der Aufgabe aus der vorherigen Folge. Also darum, wie man aus Ports auslesen kann.</p>
<p>Es ging wieder um den Kaffeeautomaten. Über LED s sollte angezeigt werden, welches Getränk ausgewählt wurde.</p>
<p>Die Eingabe sollte nun über Schalter erfolgen, die den jeweiligen Portpin entweder mit  High, also logisch &#8220;1“, oder auf Low, logisch “0“, verbindet.</p>
<p>Im Gegensatz zu den vorherigen Aufgaben sollte nun also nicht in einen Port geschrieben, sondern aus den Ports gelesen werden.</p>
<p>Wie wir in der vorherigen Folge bereits gesehen haben, muss man eine 1 in das Port-Latch schreiben, wenn aus dem zugehörigen Portpin gelesen werden soll.</p>
<h2>Das Video</h2>
<p>Im Video zeige ich eine mögliche Lösung.</p>
<p>Letztendlich geht es nur darum, die jeweiligen Portpins P1.5 P1.67und  P1.7 auf &#8220;1“ zu setzen und schon kann es losgehen.</p>
<p><object width="560" height="349" classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="allowFullScreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="src" value="http://www.youtube.com/v/9QsQg78ergw?version=3&amp;hl=de_DE&amp;hd=1" /><param name="allowfullscreen" value="true" /><embed width="560" height="349" type="application/x-shockwave-flash" src="http://www.youtube.com/v/9QsQg78ergw?version=3&amp;hl=de_DE&amp;hd=1" allowFullScreen="true" allowscriptaccess="always" allowfullscreen="true" /></object><br />
<iframe src="http://www.facebook.com/plugins/like.php?href=<?php echo urlencode(get_permalink($post->ID)); ?>&amp;layout=standard&amp;show-faces=true&amp;width=500&amp;action=like&amp;colorscheme=light" scrolling="no" frameborder="0" allowTransparency="true" style="border:none; overflow:hidden; width:500px; height:60px"></iframe>
<script type="text/javascript"><!--
google_ad_client = "ca-pub-9604435451771969";
/* Linkleiste unten */
google_ad_slot = "1662344633";
google_ad_width = 600;
google_ad_height = 15;
//-->
</script>
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script>
<center>
<script type="text/javascript"><!--
google_ad_client = "ca-pub-9604435451771969";
/* 336x280 unter Video */
google_ad_slot = "9597420007";
google_ad_width = 336;
google_ad_height = 280;
//-->
</script>
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script>
</center><br />
Zur Kontrolle kopiere, gebe ich Dir hier noch einmal den  Code aus dem Video.</p>
<p>&nbsp;</p>
<blockquote><p>#include&lt;REG515.H&gt;</p>
<p>sbit EingabeKaffee = P1^0;</p>
<p>sbit EingabeEspresso = P1^1;</p>
<p>sbit EingabeCapuccino = P1^2;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>sbit AusgabeKaffee = P1^3;</p>
<p>sbit AusgabeEspresso = P1^4;</p>
<p>sbit AusgabeCapuccino = P1^5;</p>
<p>&nbsp;</p>
<p>void main(void)</p>
<p>{</p>
<p>P1 = 0&#215;07;</p>
<p>while(1)</p>
<p>{</p>
<p>AusgabeKaffee=EingabeKaffee;</p>
<p>AusgabeEspresso=EingabeEspresso;</p>
<p>AusgabeCapuccino=EingabeCapuccino;</p>
<p>}</p>
<p>&nbsp;</p>
<p>}</p></blockquote>
<p>&nbsp;</p>
<p>In der nächsten Folge geht es um Interrupts.</p>
<p>&nbsp;</p>
<p>Bis dann!</p>
<p>&nbsp;</p>
<p>Dieser Artikel ist Teil des Mikrocontrollerkurs auf ET-Tutorials.de.<br />
<a href="http://et-tutorials.de/mikrocontroller/"> Hier geht es zurück zur Übersichtsseite des Mikrocontroller-Kurses</a> .<br />
&nbsp;</p>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://et-tutorials.de/4391/losung-zur-aufgabe-lesen-aus-ports/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Lesen aus Portpins</title>
		<link>http://et-tutorials.de/4339/lesen-aus-portpins/</link>
		<comments>http://et-tutorials.de/4339/lesen-aus-portpins/#comments</comments>
		<pubDate>Wed, 27 Jul 2011 08:03:15 +0000</pubDate>
		<dc:creator>Wolfgang Bengfort</dc:creator>
				<category><![CDATA[Aktuelle Artikel]]></category>
		<category><![CDATA[Leitartikel]]></category>
		<category><![CDATA[Mikrocontroller]]></category>

		<guid isPermaLink="false">http://et-tutorials.de/?p=4339</guid>
		<description><![CDATA[Heute geht es nun um die Treiberschaltung für die Portpins. Diese Treiberschaltung benötigt man für das Schreiben und für das Lesen aus Ports. In der letzten Folge haben wir ja bereits bemerkt, dass ein Portpin, der zum Lesen externer Signale genutzt werden soll, entsprechend vorbereitet werden muss. Und zwar müssen wir eine 1 in das [...]]]></description>
			<content:encoded><![CDATA[<p><div style='float:left; padding-left:10px; margin-left:0px; padding-right:10px; margin-right:0px; padding-top:10px; padding-bottom: 10px;'>
<script type="text/javascript"><!--
google_ad_client = "ca-pub-9604435451771969";
/* oben links im Artikel Image */
google_ad_slot = "7784759186";
google_ad_width = 300;
google_ad_height = 250;
//-->
</script>
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script>
</div>Heute geht es nun um die Treiberschaltung für die Portpins.</p>
<p>Diese Treiberschaltung benötigt man für das Schreiben und für das Lesen aus Ports. In der letzten Folge haben wir ja bereits bemerkt, dass ein Portpin, der zum Lesen externer Signale genutzt werden soll, entsprechend vorbereitet werden muss.<br />
Und zwar müssen wir eine <strong>1</strong> in das entsprechende Portbit schreiben. Diese 1 wird in ein Latch, ein D-Flipflop, gespeichert.</p>
<p>Um Informationen an ein Portpin auszugeben, ist eine einfache Transistorschaltung auf dem Mikrocontroller integriert, mit dessen Hilfe über eine Pullup-Schaltung (manchmal ist auch ein externer Pullup-Widerstand nötig) die Information nach außen geschaltet werden kann. Das ist noch relativ unspektakulär <img src='http://et-tutorials.de/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> </p>
<p>Das Lesen aus einem Portpin ist etwas kniffeliger.</p>
<p>Wäre der Ausgangstransistor durchgeschaltet, so wäre der Portpin dauernd auf Masse gezogen, unabhängig davon, welcher Pegel physikal am Portpin angelegt werden würde. Die gelesene Information wäre immer 0.<br />
Aus diesem Grund muss, wenn man aus einem Portpin gelesen werden soll, das D-Flipflop immer gesetzt werden. Dies erreicht man, indem man eine 1 in den Portpin schreibt.<br />
<strong>Die Regel lautet also:</strong></p>
<blockquote><p>Wenn man aus einem Portpin lesen möchte, muss das Portbit auf 1 gesetzt werden</p></blockquote>
<p>Jetzt, wo das nun klar ist, gibt es noch eine gute Nachricht <img src='http://et-tutorials.de/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> </p>
<p>Unsere Portbits sind nämlich bitadressierbar. Das heißt, man muss sich nicht bei der Arbeits mit eintzelnen Portpins , wie in der Folge zur Bitweisen Manipulation gezeigt, mit Masken herumschlagen, sondern können die Portbits einzeln ansprechechen.<br />
Was man tun muss, um die Portbits einzeln anzusprechen, zeige ich ebenfalls im heutigen Video.</p>
<p><object width="560" height="349" classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="allowFullScreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="src" value="http://www.youtube.com/v/p0JgoqdtfNs?version=3&amp;hl=de_DE&amp;hd=1" /><param name="allowfullscreen" value="true" /><embed width="560" height="349" type="application/x-shockwave-flash" src="http://www.youtube.com/v/p0JgoqdtfNs?version=3&amp;hl=de_DE&amp;hd=1" allowFullScreen="true" allowscriptaccess="always" allowfullscreen="true" /></object><br />
</p>
<h2>Jetzt bist Du wieder an der Reihe</h2>
<p>Die Wahl des Getränks für den bereits im ersten Teil des Mikrocontrollerkurses verwendeten Kaffeeautomaten, soll nun über Schalter erfolgen, die an die Portpins P0_0 bis P0_2 angeschlossen sind.</p>
<p>Dem Kunden, der ein Getränk ausgewählt hat, soll die Getränkewahl über Leuchtdioden angezeigt werden, die an den Ports P0_3 bis P_05 angeschlossen sind.</p>
<p><a href="http://et-tutorials.de/wp-content/uploads/2011/07/PortsLesenUndSchreiben1.jpg"><img class="aligncenter size-full wp-image-4360" title="PortsLesenUndSchreiben" src="http://et-tutorials.de/wp-content/uploads/2011/07/PortsLesenUndSchreiben1.jpg" alt="" width="506" height="654" /></a><br />
Das heißt, wenn der Schalter P0_0 geschlossen ist, soll die LED an P0_5 leuchten, usw.</p>
<p>Versuche bitte einmal, diese Funktionalität zu programmieren.</p>
<p>Dieser Artikel ist Teil des Mikrocontrollerkurs auf ET-Tutorials.de.<br />
<a href="http://et-tutorials.de/mikrocontroller/"> Hier geht es zurück zur Übersichtsseite des Mikrocontroller-Kurses</a> .<br />
<img src="http://vg08.met.vgwort.de/na/d27ff2e1a44e459bb3eb255c24d94c04" alt="" width="1" height="1" /></p>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://et-tutorials.de/4339/lesen-aus-portpins/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>Definition der Portadresse durch die Special Function Register</title>
		<link>http://et-tutorials.de/4332/definition-der-portadresse-durch-die-special-function-register/</link>
		<comments>http://et-tutorials.de/4332/definition-der-portadresse-durch-die-special-function-register/#comments</comments>
		<pubDate>Thu, 21 Jul 2011 16:23:52 +0000</pubDate>
		<dc:creator>Wolfgang Bengfort</dc:creator>
				<category><![CDATA[Aktuelle Artikel]]></category>
		<category><![CDATA[Leitartikel]]></category>
		<category><![CDATA[Mikrocontroller]]></category>

		<guid isPermaLink="false">http://et-tutorials.de/?p=4332</guid>
		<description><![CDATA[Heute geht es wie angekündigt noch einmal um Ports. Wir setzen auf das von uns neu erstellte Projekt auf. Wenn Du dieses Projekt noch nicht erstellt hast, dann guck die am besten noch einmal die vorherige Folge an. Dort zeige ich, wie man von Beginn an ein neues Projekt in uVision 4 aufsetzt. Um in [...]]]></description>
			<content:encoded><![CDATA[<p><div style='float:left; padding-left:10px; margin-left:0px; padding-right:10px; margin-right:0px; padding-top:10px; padding-bottom: 10px;'>
<script type="text/javascript"><!--
google_ad_client = "ca-pub-9604435451771969";
/* oben links im Artikel Image */
google_ad_slot = "7784759186";
google_ad_width = 300;
google_ad_height = 250;
//-->
</script>
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script>
</div>Heute geht es wie angekündigt noch einmal um Ports.</p>
<p>Wir setzen auf das von uns neu erstellte Projekt auf. Wenn Du dieses Projekt noch nicht erstellt hast, dann guck die am besten noch einmal die vorherige Folge an. Dort zeige ich, wie man von Beginn an ein neues Projekt in uVision 4 aufsetzt.</p>
<p>Um in unserem neuen, leeren Projekt mit Ports zu arbeiten, muss dem Compiler zunächst einmal mitgeteilt werden, unter welcher Adresse er die Ports des Mikrocontrollers findet.</p>
<p>Dies macht man beispielsweise durch die  Zuordnung:</p>
<p><strong>sfr P0     = 0&#215;80;</strong></p>
<p>In diesem Beispiel wird definiert, dass ein Zugriff auf P0 (das ist der Port 0) über die Adresse 0&#215;80 erfolgt.</p>
<p>Sfr steht für Special Function Register. Das Special Function Register ist ein für den 8051 sehr wichtiger Speicherbereich, über den die CPU mit der zusätzlichen Hardware, wie beispielsweise den Ports, den Timern und weiteren Schnittstellen kommunizieren kann.</p>
<p>Mit den Special Function Registern werden wir hier noch sehr häufig zutun haben.</p>
<p><strong>Aber zurück zu den Ports.</strong></p>
<p>Die einzelnen Adresszuordnungen, also welcher Port über welche Adresse angesprochen werden kann, muss man glücklicherweise nicht mühsam aus den Datenblättern heraussuchen.</p>
<p>Diese Zuweisungen sind in einer .h Datei bereits vorbereitet worden.</p>
<p>In unserem Fall ist das die Datei reg515.h. Diese Datei enthält die gesamten Definitionen der Special Function Register unseres Mikrocontrollers.</p>
<p>Um diese Informationen nutzen zu können, bindet man einfach die Datei reg515.h oben in den Quelllcode ein, mit</p>
<p><strong>#include&lt;REG515.H&gt;</strong></p>
<p>Im Video führe ich das gesamte Prozedere einmal durch.</p>
<p><object width="560" height="349" classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="allowFullScreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="src" value="http://www.youtube.com/v/741FBw6kTkU?version=3&amp;hl=de_DE&amp;hd=1" /><param name="allowfullscreen" value="true" /><embed width="560" height="349" type="application/x-shockwave-flash" src="http://www.youtube.com/v/741FBw6kTkU?version=3&amp;hl=de_DE&amp;hd=1" allowFullScreen="true" allowscriptaccess="always" allowfullscreen="true" /></object><br />
<iframe src="http://www.facebook.com/plugins/like.php?href=<?php echo urlencode(get_permalink($post->ID)); ?>&amp;layout=standard&amp;show-faces=true&amp;width=500&amp;action=like&amp;colorscheme=light" scrolling="no" frameborder="0" allowTransparency="true" style="border:none; overflow:hidden; width:500px; height:60px"></iframe>
<script type="text/javascript"><!--
google_ad_client = "ca-pub-9604435451771969";
/* Linkleiste unten */
google_ad_slot = "1662344633";
google_ad_width = 600;
google_ad_height = 15;
//-->
</script>
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script>
<center>
<script type="text/javascript"><!--
google_ad_client = "ca-pub-9604435451771969";
/* 336x280 unter Video */
google_ad_slot = "9597420007";
google_ad_width = 336;
google_ad_height = 280;
//-->
</script>
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script>
</center><br />
Bereite nun Dein Projekt entsprechend vor. In der nächsten Folge zeige ich, wie man aus Ports lesen kann. Dann gibt es auch die erste Programmieraufgabe.</p>
<p><img src="http://vg08.met.vgwort.de/na/aba7d7a60d7044a0a872ef97d453b206" alt="" width="1" height="1" /></p>
<p>Dieser Artikel ist Teil des Mikrocontrollerkurs auf ET-Tutorials.de.<br />
<a href="http://et-tutorials.de/mikrocontroller/"> Hier geht es zurück zur Übersichtsseite des Mikrocontroller-Kurses</a> .</p>
]]></content:encoded>
			<wfw:commentRss>http://et-tutorials.de/4332/definition-der-portadresse-durch-die-special-function-register/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Ein neues Projekt in uVision 4</title>
		<link>http://et-tutorials.de/4321/ein-neues-projekt-in-uvision-4/</link>
		<comments>http://et-tutorials.de/4321/ein-neues-projekt-in-uvision-4/#comments</comments>
		<pubDate>Sun, 17 Jul 2011 18:22:39 +0000</pubDate>
		<dc:creator>Wolfgang Bengfort</dc:creator>
				<category><![CDATA[Aktuelle Artikel]]></category>
		<category><![CDATA[Leitartikel]]></category>
		<category><![CDATA[Mikrocontroller]]></category>

		<guid isPermaLink="false">http://et-tutorials.de/?p=4321</guid>
		<description><![CDATA[Im heutigen Artikel werden wir nun ein neues Projekt in µVision 4 von Grund aus anlegen. Im Gegensatz zu den Projekten aus dem ersten Teil des Mikrocontroller-Kurses soll es also nicht darum gehen, ein bestehendes Projekt mit einem Grundgerüst weiter zu entwickeln, sodern darum, ein komplett neues Projekt aufzubauen. Dies ist zwar in wenigen Schritten [...]]]></description>
			<content:encoded><![CDATA[<p><div style='float:left; padding-left:10px; margin-left:0px; padding-right:10px; margin-right:0px; padding-top:10px; padding-bottom: 10px;'>
<script type="text/javascript"><!--
google_ad_client = "ca-pub-9604435451771969";
/* oben links im Artikel Image */
google_ad_slot = "7784759186";
google_ad_width = 300;
google_ad_height = 250;
//-->
</script>
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script>
</div>Im heutigen Artikel werden wir nun ein neues Projekt in µVision 4 von Grund aus anlegen.</p>
<p>Im Gegensatz zu den Projekten aus dem ersten Teil des <a href="http://et-tutorials.de/mikrocontroller/" target="_blank">Mikrocontroller-Kurses</a> soll es also nicht darum gehen, ein bestehendes Projekt mit einem Grundgerüst weiter zu entwickeln, sodern darum, ein komplett neues Projekt aufzubauen.</p>
<p>Dies ist zwar in wenigen Schritten erledigt. An einigen Stellen ist die Einrichtung jedoch nicht komplett intuitiv.</p>
<p>Zudem wird man aufgefordert, schon bei dem Anlegen des Projektes vorzugeben, für welchen Mikrocontroller man die Software erstellen möchte. Hier hat man die Wahl zwischen sehr vielen Herstellern mit den unterschiedlichsten Typen.</p>
<p>Wir wählen für unseren Kurs einen einfachen Mikrocontroller aus. Und zwar einen Mikrocontroller der Firma Infineon, den 80C51.</p>
<p>Unter folgendem Link findest Du das <a href="http://www.datasheetcatalog.org/datasheet/infineon/1-d80515.pdf" target="_blank">Datenblatt zum Controller</a>.</p>
<p>Aber keine Angst: Für den Kurs musst Du das Datenblatt nicht komplett verstehen. Die Teile, die wir aus dem Datenblatt benötigen, werde ich ausführlich in diesem Kurs erklären.<br />
Und auch wenn das  Datenblatt in englischer Sprache geschrieben ist, die Information, die wir benötigen sind international. Man muss also nicht unbedingt eine „Englisch-Leuchte sein.</p>
<p>Der Mikrocontroller Infineon 80C51 ist einfach aufgebaut und hat wenig mehr als der „Ur-8051“, so dass man die Struktur eines 8051 sehr leicht verstehen kann, ohne sich von den zusätzlichen Features eines modernen 8051 verwirren zu lassen.<br />
Wie ich bereits in der einführenden Folge zum 8051-Kurs geschrieben habe, kann man später, wenn man die Grundlagen verstanden hat, leicht auf das gewünschte 8051-Derivat umsteigen.</p>
<p><strong>Aber der Reihe nach &#8230;</strong></p>
<p>Im folgenden Video zeige ich zunächst, wie Du Schritt für Schritt ein neues Projekt anlegst.<br />
<object width="560" height="349"><param name="movie" value="http://www.youtube.com/v/XNeQDaIgHQY?version=3&amp;hl=de_DE&amp;hd=1" /><param name="allowFullScreen" value="true" /><param name="allowscriptaccess" value="always" /><embed type="application/x-shockwave-flash" width="560" height="349" src="http://www.youtube.com/v/XNeQDaIgHQY?version=3&amp;hl=de_DE&amp;hd=1" allowscriptaccess="always" allowfullscreen="true"></embed></object></p>
<p>Jetzt solltest Du in Deiner µVision-Software ein neues Projekt anlegen, damit Du für die nächste Folge gerüstet bist <img src='http://et-tutorials.de/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> </p>
<p>Dieser Artikel ist Teil des Mikrocontrollerkurs auf ET-Tutorials.de.<br />
<a href="http://et-tutorials.de/mikrocontroller/"> Hier geht es zurück zur Übersichtsseite des Mikrocontroller-Kurses</a> .</p>
<p><img src="http://vg08.met.vgwort.de/na/f35ceb1f2a6045ec9130ac4058c3318f" alt="" width="1" height="1" /></p>
]]></content:encoded>
			<wfw:commentRss>http://et-tutorials.de/4321/ein-neues-projekt-in-uvision-4/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Übersicht zum 8051 Mikrocontroller Kurs</title>
		<link>http://et-tutorials.de/4313/ubersicht-zum-8051-mikrocontroller-kurs/</link>
		<comments>http://et-tutorials.de/4313/ubersicht-zum-8051-mikrocontroller-kurs/#comments</comments>
		<pubDate>Wed, 13 Jul 2011 10:23:15 +0000</pubDate>
		<dc:creator>Wolfgang Bengfort</dc:creator>
				<category><![CDATA[Aktuelle Artikel]]></category>
		<category><![CDATA[Leitartikel]]></category>
		<category><![CDATA[Mikrocontroller]]></category>

		<guid isPermaLink="false">http://et-tutorials.de/?p=4313</guid>
		<description><![CDATA[Nachdem wir uns im 1. Teil des Mikrocontrollerkurses mit den Grundlagen der Programmiersprache C beschäftigt haben, geht es nun konkret um die Programmierung des Mikrocontrollers. Und zwar um die Programmierung eines Mikrocontrollers aus der 8051-Familie. Bereits Anfang der 80er Jahre hat die Firma Intel die 8051-Familie vorgestellt. Zu dieser 8051-Familie gehören verschiedene Mikrocontroller unterschiedlicher Hersteller, [...]]]></description>
			<content:encoded><![CDATA[<p><div style='float:left; padding-left:10px; margin-left:0px; padding-right:10px; margin-right:0px; padding-top:10px; padding-bottom: 10px;'>
<script type="text/javascript"><!--
google_ad_client = "ca-pub-9604435451771969";
/* oben links im Artikel Image */
google_ad_slot = "7784759186";
google_ad_width = 300;
google_ad_height = 250;
//-->
</script>
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script>
</div>Nachdem wir uns im 1. Teil des <a href="http://et-tutorials.de/mikrocontroller/" target="_blank">Mikrocontrollerkurses</a> mit den Grundlagen der Programmiersprache C beschäftigt haben, geht es nun konkret um die Programmierung des Mikrocontrollers.</p>
<p>Und zwar um die Programmierung eines Mikrocontrollers aus der 8051-Familie. Bereits Anfang der 80er Jahre hat die Firma Intel die 8051-Familie vorgestellt.</p>
<p>Zu dieser 8051-Familie gehören verschiedene Mikrocontroller unterschiedlicher Hersteller, die alle auf Basis der 8051 Mikrocontroller basieren.</p>
<p>Im Laufe der Jahre wurden so von den verschiedenen Herstellern immer neue Mikrocontroller auf 8051-Basis entwickelt.</p>
<p>Wir haben also eine Mikrocontrollerfamilie vor uns, die einerseits schon sehr lange existiert, andererseits nicht „alt“ im Sinne von „überholt“ ist.</p>
<p>Durch die ständige Weiterentwicklung sind sehr leistungsfähige Mikrocontroller entstanden, die mit den alten 8051-Derivaten nicht mehr zu vergleichen sind und zu den leistungsfähigsten Mikrocontrollern gehören, die am Markt erhältlich sind.</p>
<p>Zudem ergibt sich so der Vorteil, dass man beim Erlernen der Feinheiten der 8051-Mikrocntroller, mit einfach aufgebauten Modellen beginnen und dann je nach Anforderung in der Praxis einen komplizierten 8051 auswählen kann.</p>
<h2>Merkmale eines 8051 Mikrocontrollers</h2>
<p>Die wichtigsten <a href="http://de.wikipedia.org/wiki/Intel_MCS-51" target="_blank">Merkmale</a> sind</p>
<p>•	Der 8-Bit Prozessorkern mit einheitlichem Befehlssatz</p>
<p>•	ein mindestens 128 Bytes großes internes RAM</p>
<p>•	ein einheitliches Adressierungsmodell für so genannte Special Function Register (SFR)</p>
<p>•	Full-Duplex-UART</p>
<p>•	Externe Interrupts</p>
<p>•	diverse Timer</p>
<p>Diese Merkmale und die Programmierung des ADC (Analog/Digital-Converter), also des Analgog/Digital-Wandlers werden wir uns in diesem Teil des Kurses anschauen und natürlich programmieren.</p>
<h2>Eine Übersicht zum 2. Teil (8051)</h2>
<p>Im folgenden Video stelle ich eine Übersicht zu den Inhalten des Kurses vor.</p>
<p><object width="560" height="349"><param name="movie" value="http://www.youtube.com/v/_ctVQXmJtC0?version=3&amp;hl=de_DE&amp;hd=1" /><param name="allowFullScreen" value="true" /><param name="allowscriptaccess" value="always" /><embed type="application/x-shockwave-flash" width="560" height="349" src="http://www.youtube.com/v/_ctVQXmJtC0?version=3&amp;hl=de_DE&amp;hd=1" allowscriptaccess="always" allowfullscreen="true"></embed></object><br />
<iframe src="http://www.facebook.com/plugins/like.php?href=<?php echo urlencode(get_permalink($post->ID)); ?>&amp;layout=standard&amp;show-faces=true&amp;width=500&amp;action=like&amp;colorscheme=light" scrolling="no" frameborder="0" allowTransparency="true" style="border:none; overflow:hidden; width:500px; height:60px"></iframe>
<script type="text/javascript"><!--
google_ad_client = "ca-pub-9604435451771969";
/* Linkleiste unten */
google_ad_slot = "1662344633";
google_ad_width = 600;
google_ad_height = 15;
//-->
</script>
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script>
<center>
<script type="text/javascript"><!--
google_ad_client = "ca-pub-9604435451771969";
/* 336x280 unter Video */
google_ad_slot = "9597420007";
google_ad_width = 336;
google_ad_height = 280;
//-->
</script>
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script>
</center><br />
&nbsp;</p>
<p>Im nächsten Teil werden wir dann ein neues Projekt von Anfang an in Keil anlegen und den gewünschten 8051 auswählen.</p>
<p>&nbsp;<br />
<img src="http://vg08.met.vgwort.de/na/0a000ec41a49433d8db7ddb94a06b343" width="1" height="1" alt=""><br />
&nbsp;</p>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://et-tutorials.de/4313/ubersicht-zum-8051-mikrocontroller-kurs/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Eine Platine planen mit dem Blackboard Breadboard Designer</title>
		<link>http://et-tutorials.de/4282/eine-platine-planen-mit-dem-blackboard-breadboard-designer/</link>
		<comments>http://et-tutorials.de/4282/eine-platine-planen-mit-dem-blackboard-breadboard-designer/#comments</comments>
		<pubDate>Fri, 01 Jul 2011 07:49:26 +0000</pubDate>
		<dc:creator>Wolfgang Bengfort</dc:creator>
				<category><![CDATA[Aktuelle Artikel]]></category>
		<category><![CDATA[Dies&Das]]></category>
		<category><![CDATA[Leitartikel]]></category>

		<guid isPermaLink="false">http://et-tutorials.de/?p=4282</guid>
		<description><![CDATA[Häufig möchte man kleinere Schaltungen, die man im Unterricht kennengelernt hat oder selbst entworfen hat natürlich auch ausprobieren. Neben der Simulation von elektrischen Schaltungen, beispielsweise mit PSPICE, kann man einfache Schaltungen auch auf einem Steckbrett aufbauen und die Schaltung dann mit realen Bauteilen testen. Diese Steckbretter haben gegenüber Platinen den Vorteil, dass Bauteile einfach wieder [...]]]></description>
			<content:encoded><![CDATA[<p><div style='float:left; padding-left:10px; margin-left:0px; padding-right:10px; margin-right:0px; padding-top:10px; padding-bottom: 10px;'>
<script type="text/javascript"><!--
google_ad_client = "ca-pub-9604435451771969";
/* oben links im Artikel Image */
google_ad_slot = "7784759186";
google_ad_width = 300;
google_ad_height = 250;
//-->
</script>
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script>
</div>Häufig möchte man kleinere Schaltungen, die man im Unterricht kennengelernt hat oder selbst entworfen hat natürlich auch ausprobieren.</p>
<p>Neben der Simulation von elektrischen Schaltungen, beispielsweise mit <a href="http://et-tutorials.de/pspice/" target="_blank">PSPICE</a>, kann man einfache Schaltungen auch auf einem <a href="http://partners.webmasterplan.com/click.asp?ref=500980&amp;site=2945&amp;type=text&amp;tnb=34&amp;pid=526819" target="_blank">Steckbrett</a><img src="http://banners.webmasterplan.com/view.asp?site=2945&amp;ref=500980&amp;b=0&amp;type=text&amp;tnb=34" border="0" alt="" width="1" height="1" /> aufbauen und die Schaltung dann mit realen Bauteilen testen.</p>
<p>Diese Steckbretter haben gegenüber Platinen den Vorteil, dass Bauteile einfach wieder aus dem Steckbrett herausgenommen werden können. Man ist beim Aufbau der Schaltungen also sehr flexibel. Wenn man einen Fehler gemacht hat, nimmt man ein Bauteil heraus, tauscht es aus oder platziert es einfach an eine andere Stelle.</p>
<p>Hat man die Schaltung aufgebaut und getestet, baut man einfach alle Bauelemente wieder ab und kann das Steckbrett für das nächste Experiment verwenden.</p>
<p>Um eine Schaltung aber so robust aufzubauen, dass man sie tatsächlich einsetzen kann, muss man jedoch eine Platine entwickeln.</p>
<h2>Erstellen einer Platine</h2>
<p>Neben dem eher aufwändigen  Ätzen einer Platine, kann man seine Schaltungen aber auch auf sogenannten <a href="http://partners.webmasterplan.com/click.asp?ref=500980&amp;site=2945&amp;type=text&amp;tnb=34&amp;pid=527769" target="_blank">Lochrasterplatinen</a><img src="http://banners.webmasterplan.com/view.asp?site=2945&amp;ref=500980&amp;b=0&amp;type=text&amp;tnb=34" border="0" alt="" width="1" height="1" /> aufzubauen.</p>
<p>Für den Test und den Einsatz kleinerer Schaltungen sind diese Platinen eine sehr flexible und zudem kostengünstige Alternative.</p>
<h2>Planung einer Lochrasterplatine mit dem Blackboard Breadboard Designer</h2>
<p>Ich bin nun auf ein Projekt gestoßen, in dem  ein Tool entwickelt wird, um Lochrasterplatinen zu layouten. Das Programm ist zur Zeit noch in einer frühen Phase und wird laufend weiterentwickelt. Ständig kommen neue Funktionen und Bibliotheken dazu.</p>
<p>Nach dem ersten Eindruck bin ich begeistert und wünsche dem Team um Matthias Pueski weiterhin viel Erfolg bei der Weiterentwicklung des Tools.</p>
<p>Das kostenlose Programm heißt &#8220;Blackboard Breadboard Designer&#8221;.  Es kann unter <a href="http://blackboard.serverpool.org" target="_blank">http://blackboard.serverpool.org/</a> heruntegeladen werden.</p>
<p>Hier ein kleines Video, in dem die Software vorgestellt wird<br />
<object width="560" height="349"><param name="movie" value="http://www.youtube.com/v/Zc9h0L5RkDA?version=3&amp;hl=de_DE&amp;hd=1" /><param name="allowFullScreen" value="true" /><param name="allowscriptaccess" value="always" /><embed type="application/x-shockwave-flash" width="560" height="349" src="http://www.youtube.com/v/Zc9h0L5RkDA?version=3&amp;hl=de_DE&amp;hd=1" allowscriptaccess="always" allowfullscreen="true"></embed></object></p>
<p><img src="http://vg08.met.vgwort.de/na/e4c73e9073d04afda840478ac5d5ab04" alt="" width="1" height="1" /></p>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://et-tutorials.de/4282/eine-platine-planen-mit-dem-blackboard-breadboard-designer/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

