<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="de">
	<id>https://wiki.raumzeitlabor.de/index.php?action=history&amp;feed=atom&amp;title=Hausbus%2FController-Programmierung</id>
	<title>Hausbus/Controller-Programmierung - Versionsgeschichte</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.raumzeitlabor.de/index.php?action=history&amp;feed=atom&amp;title=Hausbus%2FController-Programmierung"/>
	<link rel="alternate" type="text/html" href="https://wiki.raumzeitlabor.de/index.php?title=Hausbus/Controller-Programmierung&amp;action=history"/>
	<updated>2026-05-04T00:25:36Z</updated>
	<subtitle>Versionsgeschichte dieser Seite in RaumZeitLabor Wiki</subtitle>
	<generator>MediaWiki 1.43.5</generator>
	<entry>
		<id>https://wiki.raumzeitlabor.de/index.php?title=Hausbus/Controller-Programmierung&amp;diff=16423&amp;oldid=prev</id>
		<title>Eiswürfelchen am 5. November 2023 um 12:28 Uhr</title>
		<link rel="alternate" type="text/html" href="https://wiki.raumzeitlabor.de/index.php?title=Hausbus/Controller-Programmierung&amp;diff=16423&amp;oldid=prev"/>
		<updated>2023-11-05T12:28:49Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;de&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Nächstältere Version&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Version vom 5. November 2023, 12:28 Uhr&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l1&quot;&gt;Zeile 1:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Zeile 1:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;{{Archiv|title=RZL-Historie|msg=Diese Seite wurde archiviert, um RaumZeitLabor Historie zu erhalten}} &lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Um einen Mikrokontroller, der einen RS485-Bustreiber angeschlossen hat und mit dem Hausbus verkabelt ist, softwareseitig zur Teilnahme zu bringen, müssen folgende Schritte befolgt werden:&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Um einen Mikrokontroller, der einen RS485-Bustreiber angeschlossen hat und mit dem Hausbus verkabelt ist, softwareseitig zur Teilnahme zu bringen, müssen folgende Schritte befolgt werden:&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Eiswürfelchen</name></author>
	</entry>
	<entry>
		<id>https://wiki.raumzeitlabor.de/index.php?title=Hausbus/Controller-Programmierung&amp;diff=1383&amp;oldid=prev</id>
		<title>SEC am 17. September 2010 um 22:59 Uhr</title>
		<link rel="alternate" type="text/html" href="https://wiki.raumzeitlabor.de/index.php?title=Hausbus/Controller-Programmierung&amp;diff=1383&amp;oldid=prev"/>
		<updated>2010-09-17T22:59:22Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;de&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Nächstältere Version&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Version vom 17. September 2010, 22:59 Uhr&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l1&quot;&gt;Zeile 1:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Zeile 1:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Um einen Mikrokontroller, der einen RS485-Bustreiber angeschlossen hat und mit dem Hausbus verkabelt ist, softwareseitig zur Teilnahme zu bringen, müssen folgende Schritte befolgt werden:&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Um einen Mikrokontroller, der einen RS485-Bustreiber angeschlossen hat und mit dem Hausbus verkabelt ist, softwareseitig zur Teilnahme zu bringen, müssen folgende Schritte befolgt werden:&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;== Übersicht ==&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* Der Watchdog des Mikrokontrollers wird deaktiviert (notwendig um eine Reset-Endlosschleife zu verhindern, da die Funktionen in &amp;#039;&amp;#039;lib/uart.c&amp;#039;&amp;#039; im schlimmsten Fehlerfalle einen Reset via Watchdog durchführen).&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* Der Watchdog des Mikrokontrollers wird deaktiviert (notwendig um eine Reset-Endlosschleife zu verhindern, da die Funktionen in &amp;#039;&amp;#039;lib/uart.c&amp;#039;&amp;#039; im schlimmsten Fehlerfalle einen Reset via Watchdog durchführen).&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* Die serielle Schnittstelle wird mit 9600 Baud (subject to change) und Frameformat 9N1 (!) initialisiert. Weiterhin wird der Multi-CPU-Modus aktiviert. Weiterhin wird der Driver Enable-Pin des Bustreibers deaktiviert. Alle diese Schritte übernimmt &amp;#039;&amp;#039;net_init()&amp;#039;&amp;#039; aus &amp;#039;&amp;#039;lib/uart.c&amp;#039;&amp;#039;.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* Die serielle Schnittstelle wird mit 9600 Baud (subject to change) und Frameformat 9N1 (!) initialisiert. Weiterhin wird der Multi-CPU-Modus aktiviert. Weiterhin wird der Driver Enable-Pin des Bustreibers deaktiviert. Alle diese Schritte übernimmt &amp;#039;&amp;#039;net_init()&amp;#039;&amp;#039; aus &amp;#039;&amp;#039;lib/uart.c&amp;#039;&amp;#039;.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l9&quot;&gt;Zeile 9:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Zeile 11:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;** &amp;#039;&amp;#039;&amp;#039;BUS_STATUS_BROKEN&amp;#039;&amp;#039;&amp;#039;: Der Bus ist kaputt (z.B. wenn &amp;gt;1s lang kein Paket vom Busmaster kam). In diesem Fall ist ggf. ein Reset angebracht oder den Benutzer anderweitig zu informieren (LED leuchten lassen o.ä.).&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;** &amp;#039;&amp;#039;&amp;#039;BUS_STATUS_BROKEN&amp;#039;&amp;#039;&amp;#039;: Der Bus ist kaputt (z.B. wenn &amp;gt;1s lang kein Paket vom Busmaster kam). In diesem Fall ist ggf. ein Reset angebracht oder den Benutzer anderweitig zu informieren (LED leuchten lassen o.ä.).&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Ein Beispielprogramm sieht so aus:&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;== Beispielcode ==&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;  #include &amp;lt;stdio.h&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;  #include &amp;lt;stdio.h&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;  #include &amp;lt;stdlib.h&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;  #include &amp;lt;stdlib.h&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l75&quot;&gt;Zeile 75:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Zeile 77:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;      }&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;      }&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;  }&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;  }&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;== Vollständige Programme ==&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Vollständige Firmware gibts z.B. hier:&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;* http://github.com/raumzeitlabor/hausbus/tree/master/firmware-pinpad/&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>SEC</name></author>
	</entry>
	<entry>
		<id>https://wiki.raumzeitlabor.de/index.php?title=Hausbus/Controller-Programmierung&amp;diff=1382&amp;oldid=prev</id>
		<title>SEC: Die Seite wurde neu angelegt: „Um einen Mikrokontroller, der einen RS485-Bustreiber angeschlossen hat und mit dem Hausbus verkabelt ist, softwareseitig zur Teilnahme zu bringen, müssen folgend…“</title>
		<link rel="alternate" type="text/html" href="https://wiki.raumzeitlabor.de/index.php?title=Hausbus/Controller-Programmierung&amp;diff=1382&amp;oldid=prev"/>
		<updated>2010-09-17T22:57:48Z</updated>

		<summary type="html">&lt;p&gt;Die Seite wurde neu angelegt: „Um einen Mikrokontroller, der einen RS485-Bustreiber angeschlossen hat und mit dem Hausbus verkabelt ist, softwareseitig zur Teilnahme zu bringen, müssen folgend…“&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Neue Seite&lt;/b&gt;&lt;/p&gt;&lt;div&gt;Um einen Mikrokontroller, der einen RS485-Bustreiber angeschlossen hat und mit dem Hausbus verkabelt ist, softwareseitig zur Teilnahme zu bringen, müssen folgende Schritte befolgt werden:&lt;br /&gt;
* Der Watchdog des Mikrokontrollers wird deaktiviert (notwendig um eine Reset-Endlosschleife zu verhindern, da die Funktionen in &amp;#039;&amp;#039;lib/uart.c&amp;#039;&amp;#039; im schlimmsten Fehlerfalle einen Reset via Watchdog durchführen).&lt;br /&gt;
* Die serielle Schnittstelle wird mit 9600 Baud (subject to change) und Frameformat 9N1 (!) initialisiert. Weiterhin wird der Multi-CPU-Modus aktiviert. Weiterhin wird der Driver Enable-Pin des Bustreibers deaktiviert. Alle diese Schritte übernimmt &amp;#039;&amp;#039;net_init()&amp;#039;&amp;#039; aus &amp;#039;&amp;#039;lib/uart.c&amp;#039;&amp;#039;.&lt;br /&gt;
* Interrupts werden aktiviert.&lt;br /&gt;
* In der Mainloop wird &amp;#039;&amp;#039;bus_status()&amp;#039;&amp;#039; aufgerufen, welches folgende Rückgabewerte liefern kann:&lt;br /&gt;
** &amp;#039;&amp;#039;&amp;#039;BUS_STATUS_IDLE&amp;#039;&amp;#039;&amp;#039;: Derzeit wurde keine Aktivität festgestellt, man kann also kurzzeitig etwas anderes mit dem Mikrokontroller machen (Statusflags aktualisieren, auf andere Aktivitäten eingehen).&lt;br /&gt;
** &amp;#039;&amp;#039;&amp;#039;BUS_STATUS_MESSAGE&amp;#039;&amp;#039;&amp;#039;: Eine Nachricht wurde komplett in den Ringpuffer geladen und muss nun bearbeitet werden. Via &amp;#039;&amp;#039;current_packet()&amp;#039;&amp;#039; holt man sich eine Kopie des Ringpuffers und reagiert der Nachricht entsprechend (z.B. sendet man via &amp;#039;&amp;#039;send_packet()&amp;#039;&amp;#039; eine Antwort auf eine Ping-Nachricht). Sobald man damit fertig ist, verwirft man das Paket aus dem Ringpuffer, indem man &amp;#039;&amp;#039;packet_done()&amp;#039;&amp;#039; aufruft.&lt;br /&gt;
** &amp;#039;&amp;#039;&amp;#039;BUS_STATUS_WRONG_CRC&amp;#039;&amp;#039;&amp;#039;: Genug Bytes für ein gültiges Paket wurden empfangen, aber die Checksumme ist ungültig. Es ist dem Programmierer überlassen, ob er nun den Controller laut piepsen lässt oder einfach weitermacht. Mit &amp;#039;&amp;#039;skip_byte()&amp;#039;&amp;#039; wird das erste Zeichen im Ringpuffer übersprungen und der Inhalt neu angeschaut.&lt;br /&gt;
** &amp;#039;&amp;#039;&amp;#039;BUS_STATUS_BROKEN&amp;#039;&amp;#039;&amp;#039;: Der Bus ist kaputt (z.B. wenn &amp;gt;1s lang kein Paket vom Busmaster kam). In diesem Fall ist ggf. ein Reset angebracht oder den Benutzer anderweitig zu informieren (LED leuchten lassen o.ä.).&lt;br /&gt;
&lt;br /&gt;
Ein Beispielprogramm sieht so aus:&lt;br /&gt;
 #include &amp;lt;stdio.h&amp;gt;&lt;br /&gt;
 #include &amp;lt;stdlib.h&amp;gt;&lt;br /&gt;
 #include &amp;lt;string.h&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;avr/pgmspace.h&amp;gt;&lt;br /&gt;
 #include &amp;lt;avr/wdt.h&amp;gt;&lt;br /&gt;
 #include &amp;lt;util/delay.h&amp;gt;&lt;br /&gt;
 #include &amp;lt;stdbool.h&amp;gt;&lt;br /&gt;
 #include &amp;lt;stdint.h&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 #include &amp;quot;bus.h&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
 int main() {&lt;br /&gt;
     uint8_t status;&lt;br /&gt;
 &lt;br /&gt;
     /* enable LED so that the user knows the controller is active */&lt;br /&gt;
     DDRC = (1 &amp;lt;&amp;lt; PC7);&lt;br /&gt;
     PORTC = (1 &amp;lt;&amp;lt; PC7);&lt;br /&gt;
 &lt;br /&gt;
     /* disable watchdog */&lt;br /&gt;
     MCUSR &amp;amp;= ~(1 &amp;lt;&amp;lt; WDRF);&lt;br /&gt;
     WDTCSR &amp;amp;= ~(1 &amp;lt;&amp;lt; WDE);&lt;br /&gt;
     wdt_disable();&lt;br /&gt;
 &lt;br /&gt;
     net_init();&lt;br /&gt;
 &lt;br /&gt;
     /* enable interrupts */&lt;br /&gt;
     sei();&lt;br /&gt;
 &lt;br /&gt;
     while (1) {&lt;br /&gt;
         status = bus_status();&lt;br /&gt;
  &lt;br /&gt;
         if (status == BUS_STATUS_IDLE) {&lt;br /&gt;
             /* you could use this timeframe to do some stuff with&lt;br /&gt;
              * the microcontroller (check sensors etc.) */&lt;br /&gt;
             continue;&lt;br /&gt;
         }&lt;br /&gt;
 &lt;br /&gt;
         if (status == BUS_STATUS_MESSAGE) {&lt;br /&gt;
             /* we received a message */&lt;br /&gt;
             struct buspkt *packet = current_packet();&lt;br /&gt;
             uint8_t *payload = (uint8_t*)packet;&lt;br /&gt;
             payload += sizeof(struct buspkt);&lt;br /&gt;
             if (packet-&amp;gt;source == 0x00 &amp;amp;&amp;amp;&lt;br /&gt;
                 memcmp(payload, &amp;quot;ping&amp;quot;, strlen(&amp;quot;ping&amp;quot;)) == 0) {&lt;br /&gt;
                 fmt_packet(lbuffer, packet-&amp;gt;source, MYADDRESS, &amp;quot;pong\x00&amp;quot;, 5);&lt;br /&gt;
                 send_packet(lbuffer);&lt;br /&gt;
             }&lt;br /&gt;
 &lt;br /&gt;
             packet_done();&lt;br /&gt;
             continue;&lt;br /&gt;
         }&lt;br /&gt;
 &lt;br /&gt;
         if (status == BUS_STATUS_WRONG_CRC) {&lt;br /&gt;
             skip_byte();&lt;br /&gt;
             continue;&lt;br /&gt;
         }&lt;br /&gt;
 &lt;br /&gt;
         if (status == BUS_STATUS_BROKEN) {&lt;br /&gt;
             /* TODO: enable slow blinking of the LED */&lt;br /&gt;
             continue;&lt;br /&gt;
         }&lt;br /&gt;
     }&lt;br /&gt;
 }&lt;/div&gt;</summary>
		<author><name>SEC</name></author>
	</entry>
</feed>