<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="de">
	<id>http://www.institut-fuer-kaffeetechnologie.de/Wiki/index.php?action=history&amp;feed=atom&amp;title=Grundfunktionen_der_MCU_und_mehrere_MCUs</id>
	<title>Grundfunktionen der MCU und mehrere MCUs - Versionsgeschichte</title>
	<link rel="self" type="application/atom+xml" href="http://www.institut-fuer-kaffeetechnologie.de/Wiki/index.php?action=history&amp;feed=atom&amp;title=Grundfunktionen_der_MCU_und_mehrere_MCUs"/>
	<link rel="alternate" type="text/html" href="http://www.institut-fuer-kaffeetechnologie.de/Wiki/index.php?title=Grundfunktionen_der_MCU_und_mehrere_MCUs&amp;action=history"/>
	<updated>2026-06-19T17:30:03Z</updated>
	<subtitle>Versionsgeschichte dieser Seite in Technische Beeinflussbarkeit der Geschmacksache Kaffee</subtitle>
	<generator>MediaWiki 1.39.2</generator>
	<entry>
		<id>http://www.institut-fuer-kaffeetechnologie.de/Wiki/index.php?title=Grundfunktionen_der_MCU_und_mehrere_MCUs&amp;diff=465&amp;oldid=prev</id>
		<title>Armin Rohnen am 31. März 2023 um 10:16 Uhr</title>
		<link rel="alternate" type="text/html" href="http://www.institut-fuer-kaffeetechnologie.de/Wiki/index.php?title=Grundfunktionen_der_MCU_und_mehrere_MCUs&amp;diff=465&amp;oldid=prev"/>
		<updated>2023-03-31T10:16:30Z</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 31. März 2023, 12:16 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-l163&quot;&gt;Zeile 163:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Zeile 163:&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 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;  T_Boiler = ADC(&amp;#039;PA0&amp;#039;)                            # NTC Boilertemperatur&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;lt;br /&amp;gt;&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;  T_Boiler = ADC(&amp;#039;PA0&amp;#039;)                            # NTC Boilertemperatur&lt;/div&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;  T_Befuellung = ADC(&amp;#039;PA1&amp;#039;)                        # NTC &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Boilerbefuellung&amp;lt;br /&amp;gt;&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;  T_Befuellung = ADC(&amp;#039;PA1&amp;#039;)                        # NTC &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Boilerbefuellun&lt;/ins&gt;&lt;/div&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;  T_Eingang = ADC(&amp;#039;PA4&amp;#039;)                           # Temperatur am Leitwertsensor&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;lt;br /&amp;gt;&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;  T_Eingang = ADC(&amp;#039;PA4&amp;#039;)                           # Temperatur am Leitwertsensor&lt;/div&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;  Leitwert = ADC(&amp;#039;PC2&amp;#039;)                            # Leitwert&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;lt;br /&amp;gt;&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;  Leitwert = ADC(&amp;#039;PC2&amp;#039;)                            # Leitwert&lt;/div&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;  P_Gruppe = ADC(&amp;#039;PC1&amp;#039;)                            # Druck in der Bruehgruppe&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;lt;br /&amp;gt;&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;  P_Gruppe = ADC(&amp;#039;PC1&amp;#039;)                            # Druck in der Bruehgruppe&lt;/div&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;  Taste = ADC(&amp;#039;PC3&amp;#039;)                               # Spannung durch Tastendruck&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;lt;br /&amp;gt;&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;  Taste = ADC(&amp;#039;PC3&amp;#039;)                               # Spannung durch Tastendruck&lt;/div&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;  P_Boiler = ADC(&amp;#039;PC0&amp;#039;)                            # Boilerdruck&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;lt;br /&amp;gt;&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;  P_Boiler = ADC(&amp;#039;PC0&amp;#039;)                            # Boilerdruck&lt;/div&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;  T_Zwischenraum = ADC(&amp;#039;PA5&amp;#039;)                      # Glaszylinder Zwischenraumtemperatur&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;lt;br /&amp;gt;&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;  T_Zwischenraum = ADC(&amp;#039;PA5&amp;#039;)                      # Glaszylinder Zwischenraumtemperatur&lt;/div&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;  Gewicht1 = ADC(&amp;#039;PA6&amp;#039;)                            # Waegezelle 1&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;lt;br /&amp;gt;&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;  Gewicht1 = ADC(&amp;#039;PA6&amp;#039;)                            # Waegezelle 1&lt;/div&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;  T_Mischer = ADC(&amp;#039;PA7&amp;#039;)                           # Mischwassertemperatur&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;lt;br /&amp;gt;&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;  T_Mischer = ADC(&amp;#039;PA7&amp;#039;)                           # Mischwassertemperatur&lt;/div&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;  P_Boiler_Alt = ADC(&amp;#039;PB1&amp;#039;)                        # Alternativer Boilerdruck&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;lt;br /&amp;gt;&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;  P_Boiler_Alt = ADC(&amp;#039;PB1&amp;#039;)                        # Alternativer Boilerdruck&lt;/div&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;  Gewicht2 = ADC(&amp;#039;PC2&amp;#039;)                            # Waegezelle 2&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;lt;br /&amp;gt;&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;  Gewicht2 = ADC(&amp;#039;PC2&amp;#039;)                            # Waegezelle 2&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 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-lineno&quot; id=&quot;mw-diff-left-l195&quot;&gt;Zeile 195:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Zeile 195:&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 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;  Fuell_1 = Pin(&amp;#039;PB15&amp;#039;, Pin.IN, Pin.PULL_UP)&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;lt;br&amp;gt;&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;  Fuell_1 = Pin(&amp;#039;PB15&amp;#039;, Pin.IN, Pin.PULL_UP)&lt;/div&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;  Fuell_2 = Pin(&amp;#039;PC8&amp;#039;, Pin.IN, Pin.PULL_UP)&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;lt;br&amp;gt;&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;  Fuell_2 = Pin(&amp;#039;PC8&amp;#039;, Pin.IN, Pin.PULL_UP)&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 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;           # bei Kurzschlussdetektion ergibt Fuell_2.value() = 1&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;           # bei Kurzschlussdetektion ergibt Fuell_2.value() = 1&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Armin Rohnen</name></author>
	</entry>
	<entry>
		<id>http://www.institut-fuer-kaffeetechnologie.de/Wiki/index.php?title=Grundfunktionen_der_MCU_und_mehrere_MCUs&amp;diff=464&amp;oldid=prev</id>
		<title>Armin Rohnen am 31. März 2023 um 10:15 Uhr</title>
		<link rel="alternate" type="text/html" href="http://www.institut-fuer-kaffeetechnologie.de/Wiki/index.php?title=Grundfunktionen_der_MCU_und_mehrere_MCUs&amp;diff=464&amp;oldid=prev"/>
		<updated>2023-03-31T10:15:00Z</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 31. März 2023, 12:15 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-l3&quot;&gt;Zeile 3:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Zeile 3:&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;&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;Das Python-Programm ident.py&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;Das Python-Programm ident.py&lt;/div&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;def ident():&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; &lt;/ins&gt;def ident():&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;       print(&amp;#039;rpi&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;       print(&amp;#039;rpi&amp;#039;)&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;&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;muss sich auf jeder verwendeten MCU befinden. Dieses wird durch&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;muss sich auf jeder verwendeten MCU befinden. Dieses wird durch&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;import ident&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; &lt;/ins&gt;import ident&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;&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;importiert. Über den Aufruf&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;importiert. Über den Aufruf&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;ident.ident()&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; &lt;/ins&gt;ident.ident()&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;&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;wiurd der MCU-Erkennungscode ausgegeben. Der Erkennungscode besteht aus drei Buchstaben, welche je verwendeter MCU eindeutig vergeben werden. Die Erkennungscodes sind beim Aktuellen Programmcode abgelegt.&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;wiurd der MCU-Erkennungscode ausgegeben. Der Erkennungscode besteht aus drei Buchstaben, welche je verwendeter MCU eindeutig vergeben werden. Die Erkennungscodes sind beim Aktuellen Programmcode abgelegt.&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-l127&quot;&gt;Zeile 127:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Zeile 127:&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;  import mcp4725&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;  import mcp4725&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;  import utime&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;  import utime&lt;/div&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;/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; &lt;/ins&gt;&lt;/div&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;/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; &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;           #&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;           # Callback Funktionen für die Flowmeteranschluesse&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;           # Callback Funktionen für die Flowmeteranschluesse&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 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;/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; &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;  def flow1_callback(Pin):&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;  def flow1_callback(Pin):&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;     print(&amp;#039;flow1: &amp;#039;+str(utime.ticks_us()))&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;     print(&amp;#039;flow1: &amp;#039;+str(utime.ticks_us()))&lt;/div&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;/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; &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;  def flow2_callback(Pin):&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;  def flow2_callback(Pin):&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;     print(&amp;#039;flow2: &amp;#039;+str(utime.ticks_us()))&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;     print(&amp;#039;flow2: &amp;#039;+str(utime.ticks_us()))&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-l180&quot;&gt;Zeile 180:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Zeile 180:&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;  print(str(T_Boiler.read()*3.3/4096)+&amp;#039;,&amp;#039;+str(T_Befuellung.read()*3.3/4096)+&amp;#039;,&amp;#039;+str(T_Eingang.read()*3.3/4096)+&amp;#039;,&amp;#039;+str(T_Zwischenraum.read()*3.3/4096)+&amp;#039;,&amp;#039;+str(T_Mischer.read()*3.3/4096))&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;  print(str(T_Boiler.read()*3.3/4096)+&amp;#039;,&amp;#039;+str(T_Befuellung.read()*3.3/4096)+&amp;#039;,&amp;#039;+str(T_Eingang.read()*3.3/4096)+&amp;#039;,&amp;#039;+str(T_Zwischenraum.read()*3.3/4096)+&amp;#039;,&amp;#039;+str(T_Mischer.read()*3.3/4096))&lt;/div&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;/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; &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;           #&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;           # Druecke ermitteln&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;           # Druecke ermitteln&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 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;  print(str(P_Gruppe.read()*3.3/4096)+&amp;#039;,&amp;#039;+str(P_Boiler.read()*3.3/4096)+&amp;#039;,&amp;#039;+str(P_Boiler_Alt.read()*3.3/4096))&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;  print(str(P_Gruppe.read()*3.3/4096)+&amp;#039;,&amp;#039;+str(P_Boiler.read()*3.3/4096)+&amp;#039;,&amp;#039;+str(P_Boiler_Alt.read()*3.3/4096))&lt;/div&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;/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; &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;           #&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;           # Sonstige Messwerte&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;           # Sonstige Messwerte&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 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;  print(str(Leitwert.read()*3.3/4096)+&amp;#039;,&amp;#039;+str(Taste.read()*3.3/4096)+&amp;#039;,&amp;#039;+str(Gewicht1.read()*3.3/4096)+&amp;#039;,&amp;#039;+str(Gewicht2.read()*3.3/4096))&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;  print(str(Leitwert.read()*3.3/4096)+&amp;#039;,&amp;#039;+str(Taste.read()*3.3/4096)+&amp;#039;,&amp;#039;+str(Gewicht1.read()*3.3/4096)+&amp;#039;,&amp;#039;+str(Gewicht2.read()*3.3/4096))&lt;/div&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;/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; &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;           #&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;           # PINs der Fuellstaende definieren und abfragen&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;           # PINs der Fuellstaende definieren und abfragen&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 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;/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; &lt;/ins&gt;&lt;/div&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;  Fuell_1 = Pin(&amp;#039;PB15&amp;#039;, Pin.IN, Pin.PULL_UP)&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;  Fuell_1 = Pin(&amp;#039;PB15&amp;#039;, Pin.IN, Pin.PULL_UP)&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;lt;br&amp;gt;&lt;/ins&gt;&lt;/div&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;  Fuell_2 = Pin(&amp;#039;PC8&amp;#039;, Pin.IN, Pin.PULL_UP)&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;  Fuell_2 = Pin(&amp;#039;PC8&amp;#039;, Pin.IN, Pin.PULL_UP)&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;lt;br&amp;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;   &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;           # bei Kurzschlussdetektion ergibt Fuell_2.value() = 1&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;           # bei Kurzschlussdetektion ergibt Fuell_2.value() = 1&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-l204&quot;&gt;Zeile 204:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Zeile 204:&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 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;  i2c_dac = SoftI2C(scl = Pin(&amp;#039;PB10&amp;#039;), sda = Pin(&amp;#039;PB9&amp;#039;), freq=400000)&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;  i2c_dac = SoftI2C(scl = Pin(&amp;#039;PB10&amp;#039;), sda = Pin(&amp;#039;PB9&amp;#039;), freq=400000)&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;lt;br&amp;gt;&lt;/ins&gt;&lt;/div&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;  dosierventil = mcp4725.MCP4725(i2c_dac, mcp4725.BUS_ADDRESS[1])&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;  dosierventil = mcp4725.MCP4725(i2c_dac, mcp4725.BUS_ADDRESS[1])&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;lt;br&amp;gt;&lt;/ins&gt;&lt;/div&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;  appoldt = mcp4725.MCP4725(i2c_dac, mcp4725.BUS_ADDRESS[0])&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;  appoldt = mcp4725.MCP4725(i2c_dac, mcp4725.BUS_ADDRESS[0])&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;lt;br&amp;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;                                                                     # über appoldt.write(wert)&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;                                                                     # über appoldt.write(wert)&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;                                                                     # mit wert zwischen 0 und 4095&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;                                                                     # mit wert zwischen 0 und 4095&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-l243&quot;&gt;Zeile 243:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Zeile 243:&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;           # Flowmeter&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;           # Flowmeter&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 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;/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; &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;  FLOW1 = Pin(&amp;#039;PA12&amp;#039;, Pin.IN)                                                                          # PINs definieren und ISR aktivieren&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;  FLOW1 = Pin(&amp;#039;PA12&amp;#039;, Pin.IN)                                                                          # PINs definieren und ISR aktivieren&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;  FLOW1.irq(trigger=Pin.IRQ_FALLING, handler=flow1_callback)&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;  FLOW1.irq(trigger=Pin.IRQ_FALLING, handler=flow1_callback)&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Armin Rohnen</name></author>
	</entry>
	<entry>
		<id>http://www.institut-fuer-kaffeetechnologie.de/Wiki/index.php?title=Grundfunktionen_der_MCU_und_mehrere_MCUs&amp;diff=463&amp;oldid=prev</id>
		<title>Armin Rohnen am 31. März 2023 um 10:11 Uhr</title>
		<link rel="alternate" type="text/html" href="http://www.institut-fuer-kaffeetechnologie.de/Wiki/index.php?title=Grundfunktionen_der_MCU_und_mehrere_MCUs&amp;diff=463&amp;oldid=prev"/>
		<updated>2023-03-31T10:11:36Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;a href=&quot;http://www.institut-fuer-kaffeetechnologie.de/Wiki/index.php?title=Grundfunktionen_der_MCU_und_mehrere_MCUs&amp;amp;diff=463&amp;amp;oldid=462&quot;&gt;Änderungen zeigen&lt;/a&gt;</summary>
		<author><name>Armin Rohnen</name></author>
	</entry>
	<entry>
		<id>http://www.institut-fuer-kaffeetechnologie.de/Wiki/index.php?title=Grundfunktionen_der_MCU_und_mehrere_MCUs&amp;diff=462&amp;oldid=prev</id>
		<title>Armin Rohnen: Die Seite wurde neu angelegt: „= Armin Rohnen, 28.12.2022 = Da bei mehreren angeschlossenen MCUs nicht immer eindeutig ist, welche MCU sich an welchem COM-Port befindet ist eine MCU Identifizierung eingeführt worden.  Das Python-Programm ident.py def ident():       print(&#039;rpi&#039;)  muss sich auf jeder verwendeten MCU befinden. Dieses wird durch  import ident  importiert. Über den Aufruf  ident.ident()  wiurd der MCU-Erkennungscode ausgegeben. Der Erkennungscode besteht aus drei Buchstab…“</title>
		<link rel="alternate" type="text/html" href="http://www.institut-fuer-kaffeetechnologie.de/Wiki/index.php?title=Grundfunktionen_der_MCU_und_mehrere_MCUs&amp;diff=462&amp;oldid=prev"/>
		<updated>2023-03-31T10:07:13Z</updated>

		<summary type="html">&lt;p&gt;Die Seite wurde neu angelegt: „= Armin Rohnen, 28.12.2022 = Da bei mehreren angeschlossenen MCUs nicht immer eindeutig ist, welche MCU sich an welchem COM-Port befindet ist eine MCU Identifizierung eingeführt worden.  Das Python-Programm ident.py def ident():       print(&amp;#039;rpi&amp;#039;)  muss sich auf jeder verwendeten MCU befinden. Dieses wird durch  import ident  importiert. Über den Aufruf  ident.ident()  wiurd der MCU-Erkennungscode ausgegeben. Der Erkennungscode besteht aus drei Buchstab…“&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Neue Seite&lt;/b&gt;&lt;/p&gt;&lt;div&gt;= Armin Rohnen, 28.12.2022 =&lt;br /&gt;
Da bei mehreren angeschlossenen MCUs nicht immer eindeutig ist, welche MCU sich an welchem COM-Port befindet ist eine MCU Identifizierung eingeführt worden.&lt;br /&gt;
&lt;br /&gt;
Das Python-Programm ident.py&lt;br /&gt;
def ident():&lt;br /&gt;
      print(&amp;#039;rpi&amp;#039;)&lt;br /&gt;
&lt;br /&gt;
muss sich auf jeder verwendeten MCU befinden. Dieses wird durch&lt;br /&gt;
&lt;br /&gt;
import ident&lt;br /&gt;
&lt;br /&gt;
importiert. Über den Aufruf&lt;br /&gt;
&lt;br /&gt;
ident.ident()&lt;br /&gt;
&lt;br /&gt;
wiurd der MCU-Erkennungscode ausgegeben. Der Erkennungscode besteht aus drei Buchstaben, welche je verwendeter MCU eindeutig vergeben werden. Die Erkennungscodes sind beim Aktuellen Programmcode abgelegt.&lt;br /&gt;
&lt;br /&gt;
= Jan Budnick, 02.04.2022 =&lt;br /&gt;
Während des Arbeitens an der MCU ist aufgefallen, dass diese ,,beschäftigt&amp;#039;&amp;#039; ist während sie auf der Basisplatine steckt, die Basisplatine jedoch nicht eingeschaltet ist.&lt;br /&gt;
&lt;br /&gt;
= Jan Budnick, 01.04.2022 =&lt;br /&gt;
Die Grundfunktionen der MCU sind für den jetzigen Aufbau der Laborespressomaschine implementiert. Alle Sensoren und Aktoren lassen sich ansprechen (die Heizung wurde bisher nicht getestet aber das XSSR lässt sich ansprechen). Dafür wurden zwei Funktionen in ,,main.py&amp;#039;&amp;#039; für die Messwertaufnahme und zyklische Weitergabe an die GUI abgelegt. Eine Beschreibung dessen kann unter dem To-Do ,,Messwerte erfassen&amp;#039;&amp;#039; gefunden werden. &lt;br /&gt;
&lt;br /&gt;
Auf Grund der aktuellen Verkabelung haben sich die ADC-Pins für die NTCs verändert. Außerdem wurden die mcp2317 Adressen für die Ventile erfasst und in der To-Do unter ,,Schalten Magnetventile  (Labor)&amp;#039;&amp;#039; dokumentiert.&lt;br /&gt;
&lt;br /&gt;
= Jan Budnick, 28.03.2022 =&lt;br /&gt;
Im Laufe der Softwareentwickelung kam es zu Performanceproblemen. Im Zuge dessen wurden sich Gedanken zur Übertragungsrate gemacht. Zur Verbindung mit der REPL wird eine Baudrate von 115200 Baud angegeben. Dabei wird impliziert, dass die Baudrate der Bitrate entspricht, dies wird von mehreren Quellen im Netz bestätigt. Dies wird jedoch nie explizit in der Dokumentation von MicroPython angegeben. Wenn mit mehr als zwei Spannungspegeln gearbeitet wird, könnten pro Baud mehrere Bits übertragen werden. Diese implizite Annahme lässt sich somit nicht zu 100% bestätigen dennoch ist es aus folgenden Gründen zu 99% sicher:&lt;br /&gt;
&lt;br /&gt;
1. MATLAB® gibt für das Serialportobjekt in der Doku an, dass die Baudrate der Bitrate entspricht.&lt;br /&gt;
&lt;br /&gt;
2. Die Übertragung läuft über den COM-Port. Dieser verwendet den RS232-Standard, welcher nur 2 Spannungslevel hat, dementsprechend entspricht die Baudrate der Bitrate.&lt;br /&gt;
&lt;br /&gt;
3. Schaut man in die ,,Reference Manual&amp;#039;&amp;#039; des STM32F411RE, findet man ein Diagramm zur USART Übertragung (Die REPL verwendet das UART0) auch darin ist zu sehen, dass pro Takt ein Bit übertragen wird.&lt;br /&gt;
&lt;br /&gt;
Nimmt man diese Information und verbindet sie damit, dass laut Microbit ein Startbit und ein Stopbit verwendet wird, sowie 8 Datenbits (=ein Char), ergibt sich eine Übertragungsrate von 11520 Chars/s, die Übertragung von 50 Chars wäre somit etwa 230 mal die Sekunde möglich.&lt;br /&gt;
&lt;br /&gt;
Fraglich ist ob eine solch hohe Zyklusrate möglich ist, da MATLAB® für ,,readline&amp;#039;&amp;#039; und ,,writeline&amp;#039;&amp;#039; schreibt: &lt;br /&gt;
&lt;br /&gt;
,,The function suspends MATLAB® execution until the terminator is reached or a timeout occurs.&amp;#039;&amp;#039;. Dies würde bedeuten, dass MATLAB® während der Übertragung keine Rechnungen durchführen kann und diese somit zusätzlich die Zyklusrate reduzieren.&lt;br /&gt;
&lt;br /&gt;
= Jan Budnick, 22.03.2022 =&lt;br /&gt;
Beide DACs wurden durch DAC.config (&amp;#039;Off&amp;#039;,0, eeprom=True) auf den Startwert Null gesetzt. Die Pumpe geht nun nur noch kurz bei Stromanschluss an. Somit wurde der Workaround aus main.py entfernt.&lt;br /&gt;
&lt;br /&gt;
= Jan Budnick, 14.03.2022 =&lt;br /&gt;
Der DAC kann durch DAC.config(&amp;#039;Off&amp;#039;,0, eeprom=True) auf 0 bei Startup gesetzt werden. Sollte dies nicht funktionieren muss über eine While-Schleife in main.py das Angehen der Basisplatine abgewartet werden und der DAC dann auf 0 gesetzt werden.&lt;br /&gt;
&lt;br /&gt;
= Jan Budnick, 21.02.2022 =&lt;br /&gt;
DAC (Pumpe) beim Einschalten der Basisplatine auf 0 setzen.&lt;br /&gt;
Prüfen, wie über die MCU erkannt werden kann, dass die Basisplatine bestromt wird und die beiden DACs auf 0 V Signal gesetzt werden können.&lt;br /&gt;
&lt;br /&gt;
= Armin Rohnen, 07.12.2021 =&lt;br /&gt;
Für die Bedienung der MCU ist eine MATLAB®-App erstellt worden. Diese dient den ersten Funktionstests von Labormaschine und Pumpenprüfstand.&lt;br /&gt;
&lt;br /&gt;
Der Funktionsumfang der MATLAB®-APP ist noch nicht 100%ig zum Funktionsumfang der Basisplatine.&lt;br /&gt;
Es funktioniert Digital-OUT (zum Ansteuern der Magnetventile), 0 bis 10 V Spannungssignal (zum Ansteuern von Dosierventil, Appoldt-Phasen-Schnitt-Regler, Getriebepumpe), Messwerte einlesen und Füllstand abfragen.&lt;br /&gt;
&lt;br /&gt;
Aktuell sind die PWM-Signale noch nicht in Funktion. Gleiches gilt für das/die Flowmeter.&lt;br /&gt;
&lt;br /&gt;
Auf eine aufwändige Visualisierung der MCU-Antworten wurde verzichtet. Es wird lediglich der Antworttext der MCU in einer 10Zeiligen Ausgabe dargestellt. Die APP soll den Einstieg in die Programmierung der jeweiligen Bedienungen unterstützen.&lt;br /&gt;
&lt;br /&gt;
Die APP kann bei Armin Rohnen angefordert werden.&lt;br /&gt;
&lt;br /&gt;
= Armin Rohnen, 05.12.2021 =&lt;br /&gt;
Beim Einschalten der Basisplatine werden die beiden 0 bis 10 V Sollwertsignale auf 5 V eingestellt. Dadurch werden die daran angeschlossenen Devices (z.B. Getriebepumpe) aktiviert.&lt;br /&gt;
&lt;br /&gt;
Der genaue Hintergrund für dieses Verhalten ist aktuell unbekannt. Eigentlich sollten die Sollwert-DACs den letzten DA-Wert auch über das Ausschalten hinweg beibehalten.&lt;br /&gt;
&lt;br /&gt;
Work-Arround hierzu:&lt;br /&gt;
Auf der MCU existiert ein Programm mit dem namen boot.py und enthällt die Zeilen:&lt;br /&gt;
import pyb&lt;br /&gt;
pyb.country(&amp;#039;US&amp;#039;)&lt;br /&gt;
pyb.main(&amp;#039;main.py&amp;#039;)&lt;br /&gt;
&lt;br /&gt;
Dieses Skript muss aktiv sein. Es wird automatisch zum Start der MCU durchlaufen und ruft das Skript main.py auf.&lt;br /&gt;
&lt;br /&gt;
main.py:&lt;br /&gt;
from machine import SoftI2C&lt;br /&gt;
from machine import Pin&lt;br /&gt;
import mcp4725&lt;br /&gt;
&lt;br /&gt;
i2c_dac = SoftI2C(scl = Pin(&amp;#039;PB10&amp;#039;), sda = Pin(&amp;#039;PB9&amp;#039;), freq = 400000)&lt;br /&gt;
dac1 = mcp4725.MCP4725(i2c_dac, mcp4725.BUS_ADDRESS[1])&lt;br /&gt;
dac2 = mcp4725.MCP4725(i2c_dac, mcp4725.BUS_ADDRESS[0])&lt;br /&gt;
dac1.write(0)&lt;br /&gt;
dac2.write(0)&lt;br /&gt;
&lt;br /&gt;
Damit wird nur kurzzeitig von den DACs ein Sollwertsignal größer 0 ausgegeben.&lt;br /&gt;
&lt;br /&gt;
ACHTUNG: Die MCU startet erst dann, wenn die USB-Verbindung zum PC hergestellt worden ist.&lt;br /&gt;
&lt;br /&gt;
= Armin Rohnen, 27.11.2021 =&lt;br /&gt;
Den Grundfunktionen der MCU ist die Verarbeitung der Flowmetersignale hinzugefügt worden.&lt;br /&gt;
Die PIN-Belegung des Flowmeterstecker ist&lt;br /&gt;
4 - GND&lt;br /&gt;
3 - FLOW2&lt;br /&gt;
2 - FLOW1&lt;br /&gt;
1 - 3,3 V&lt;br /&gt;
&lt;br /&gt;
PIN 1 ist der PIN am Platinenrand.&lt;br /&gt;
&lt;br /&gt;
Im MicroPython-Code sind einige Erweiterungen hinzugefügt worden. Dies wurde in der Schnittstellenbeschreibung aufgenommen.&lt;br /&gt;
Die Fvnktionalität ist allerdings noch nicht sichergestellt. Hierzu stehen noch Tests mit Flowmeter aus.&lt;br /&gt;
&lt;br /&gt;
= Philipp Wieland, 09.11.2021 - COM-Port =&lt;br /&gt;
Zur Erkennung des Microcontrollers STM32 auf Windows wird eine gesonderte Software benötigt. Im folgenden eine Anleitung:&lt;br /&gt;
&lt;br /&gt;
Treiber runterladen über:  https://www.st.com/en/development-tools/stsw-link009.html.&lt;br /&gt;
&lt;br /&gt;
Zum Download muss eine E-Mail angegeben werden zu der ein Bestätigungslink gesendet wird. Nach Bestätigung startet der Download einer ZIP-Datei automatisch. Extrahieren der Datei und starten der Installation als Administrator von &amp;quot;stlink_winusb_install.bat&amp;quot;. Sollte das nicht klappen, geht auch die &amp;quot;dpinst_amd64.exe&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Es hat funktioniert wenn im Gerätemanager folgendes vorhanden ist (gegebenenfalls erst nach Verbindung mit Microcontroller) :&lt;br /&gt;
&lt;br /&gt;
-  Anschlüsse (COM &amp;amp; Lpt) -&amp;gt; STMicroelectronics STLink Virtual COM Port (COM3)&lt;br /&gt;
-  USB-Geräte -&amp;gt; ST-Link Debug &lt;br /&gt;
&lt;br /&gt;
= Armin Rohnen, 01.11.2021 =&lt;br /&gt;
Für die Grundfunktionen der MCU wurde die Schnittstellendokumentation [41] erstellt.&amp;lt;br /&amp;gt;&lt;br /&gt;
Zum Verständniss dieser Beschreibung sind die Grundlagen wie in [40] beschreiben erforderlich.&lt;br /&gt;
&lt;br /&gt;
== Kurzfassung der Schnittstellenbeschreibung (Python-Code) ==&lt;br /&gt;
&lt;br /&gt;
from machine import SoftI2C&lt;br /&gt;
from machine import Pin&lt;br /&gt;
import mcp23017&lt;br /&gt;
from pyb import ADC&lt;br /&gt;
from pyb import Timer&lt;br /&gt;
import mcp4725&lt;br /&gt;
import utime&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
          #&lt;br /&gt;
          # Callback Funktionen für die Flowmeteranschluesse&lt;br /&gt;
          #&lt;br /&gt;
&lt;br /&gt;
def flow1_callback(Pin):&lt;br /&gt;
    print(&amp;#039;flow1: &amp;#039;+str(utime.ticks_us()))&lt;br /&gt;
&lt;br /&gt;
def flow2_callback(Pin):&lt;br /&gt;
    print(&amp;#039;flow2: &amp;#039;+str(utime.ticks_us()))&lt;br /&gt;
          #&lt;br /&gt;
          # MCP23017 initialisieren&lt;br /&gt;
          #&lt;br /&gt;
i2c_exp = SoftI2C(scl = Pin(&amp;#039;PB6&amp;#039;), sda = Pin(&amp;#039;PB7&amp;#039;), freq=400000)&lt;br /&gt;
gpio_exp = mcp23017.MCP23017(i2c_exp, 0x20)&lt;br /&gt;
&lt;br /&gt;
gpio_exp.porta.mode = 0b00000000                     # Port A und Port B als Output definieren&lt;br /&gt;
gpio_exp.portb.mode = 0b00000000                     # und alle PINs auf LOW&amp;lt;br /&amp;gt;&lt;br /&gt;
gpio_exp.porta.gpio = 0b00000000                       # Zuordnung: value = 1 -&amp;gt; HIGH; value = 0 -&amp;gt; LOW&lt;br /&gt;
gpio_exp.portb.gpio = 0b00000000                       #&lt;br /&gt;
                                                                                     # D01: gpio_exp.pin(1, value = 1)&lt;br /&gt;
                                                                                     # D02: gpio_exp.pin(0, value = 1)&lt;br /&gt;
                                                                                     # D03: gpio_exp.pin(8, value = 1)&lt;br /&gt;
                                                                                     # D04: gpio_exp.pin(9, value = 1)&lt;br /&gt;
                                                                                     # D05: gpio_exp.pin(10, value = 1)&lt;br /&gt;
                                                                                     # D06: gpio_exp.pin(11, value = 1)&lt;br /&gt;
                                                                                     # D07: gpio_exp.pin(12, value = 1)&lt;br /&gt;
                                                                                     # D08: gpio_exp.pin(13, value = 1)&lt;br /&gt;
                                                                                     # D09: gpio_exp.pin(14, value = 1)&lt;br /&gt;
                                                                                     # D10: gpio_exp.pin(15, value = 1)&lt;br /&gt;
&lt;br /&gt;
          #&lt;br /&gt;
          # Messkanaele definieren&lt;br /&gt;
          #&lt;br /&gt;
&lt;br /&gt;
T_Boiler = ADC(&amp;#039;PA0&amp;#039;)                            # NTC Boilertemperatur&amp;lt;br /&amp;gt;&lt;br /&gt;
T_Befuellung = ADC(&amp;#039;PA1&amp;#039;)                        # NTC Boilerbefuellung&amp;lt;br /&amp;gt;&lt;br /&gt;
T_Eingang = ADC(&amp;#039;PA4&amp;#039;)                           # Temperatur am Leitwertsensor&amp;lt;br /&amp;gt;&lt;br /&gt;
Leitwert = ADC(&amp;#039;PC2&amp;#039;)                            # Leitwert&amp;lt;br /&amp;gt;&lt;br /&gt;
P_Gruppe = ADC(&amp;#039;PC1&amp;#039;)                            # Druck in der Bruehgruppe&amp;lt;br /&amp;gt;&lt;br /&gt;
Taste = ADC(&amp;#039;PC3&amp;#039;)                               # Spannung durch Tastendruck&amp;lt;br /&amp;gt;&lt;br /&gt;
P_Boiler = ADC(&amp;#039;PC0&amp;#039;)                            # Boilerdruck&amp;lt;br /&amp;gt;&lt;br /&gt;
T_Zwischenraum = ADC(&amp;#039;PA5&amp;#039;)                      # Glaszylinder Zwischenraumtemperatur&amp;lt;br /&amp;gt;&lt;br /&gt;
Gewicht1 = ADC(&amp;#039;PA6&amp;#039;)                            # Waegezelle 1&amp;lt;br /&amp;gt;&lt;br /&gt;
T_Mischer = ADC(&amp;#039;PA7&amp;#039;)                           # Mischwassertemperatur&amp;lt;br /&amp;gt;&lt;br /&gt;
P_Boiler_Alt = ADC(&amp;#039;PB1&amp;#039;)                        # Alternativer Boilerdruck&amp;lt;br /&amp;gt;&lt;br /&gt;
Gewicht2 = ADC(&amp;#039;PC2&amp;#039;)                            # Waegezelle 2&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
          #&lt;br /&gt;
          # Temperaturmesswerte ermitteln&lt;br /&gt;
          #&lt;br /&gt;
print(str(T_Boiler.read()*3.3/4096)+&amp;#039;,&amp;#039;+str(T_Befuellung.read()*3.3/4096)+&amp;#039;,&amp;#039;+str(T_Eingang.read()*3.3/4096)+&amp;#039;,&amp;#039;+str(T_Zwischenraum.read()*3.3/4096)+&amp;#039;,&amp;#039;+str(T_Mischer.read()*3.3/4096))&lt;br /&gt;
&lt;br /&gt;
          #&lt;br /&gt;
          # Druecke ermitteln&lt;br /&gt;
          #&lt;br /&gt;
print(str(P_Gruppe.read()*3.3/4096)+&amp;#039;,&amp;#039;+str(P_Boiler.read()*3.3/4096)+&amp;#039;,&amp;#039;+str(P_Boiler_Alt.read()*3.3/4096))&lt;br /&gt;
&lt;br /&gt;
          #&lt;br /&gt;
          # Sonstige Messwerte&lt;br /&gt;
          #&lt;br /&gt;
print(str(Leitwert.read()*3.3/4096)+&amp;#039;,&amp;#039;+str(Taste.read()*3.3/4096)+&amp;#039;,&amp;#039;+str(Gewicht1.read()*3.3/4096)+&amp;#039;,&amp;#039;+str(Gewicht2.read()*3.3/4096))&lt;br /&gt;
&lt;br /&gt;
          #&lt;br /&gt;
          # PINs der Fuellstaende definieren und abfragen&lt;br /&gt;
          #&lt;br /&gt;
&lt;br /&gt;
Fuell_1 = Pin(&amp;#039;PB15&amp;#039;, Pin.IN, Pin.PULL_UP)&lt;br /&gt;
Fuell_2 = Pin(&amp;#039;PC8&amp;#039;, Pin.IN, Pin.PULL_UP)&lt;br /&gt;
&lt;br /&gt;
          # bei Kurzschlussdetektion ergibt Fuell_2.value() = 1&lt;br /&gt;
          #&lt;br /&gt;
          # 0 bis 10 V Steuersignal fuer Dosierventiel und Appoldt Phasenschnittregler&lt;br /&gt;
          # die Sollsignale koennen auch anderweitig verwendet werden&lt;br /&gt;
          #&lt;br /&gt;
&lt;br /&gt;
i2c_dac = SoftI2C(scl = Pin(&amp;#039;PB10&amp;#039;), sda = Pin(&amp;#039;PB9&amp;#039;), freq=400000)&lt;br /&gt;
dosierventil = mcp4725.MCP4725(i2c_dac, mcp4725.BUS_ADDRESS[1])&lt;br /&gt;
appoldt = mcp4725.MCP4725(i2c_dac, mcp4725.BUS_ADDRESS[0])&lt;br /&gt;
                                                                    # über appoldt.write(wert)&lt;br /&gt;
                                                                    # mit wert zwischen 0 und 4095&lt;br /&gt;
                                                                    # wird ein Spannungswert zwischen 0 und 10 V eingestellt.                                                             &lt;br /&gt;
          #&lt;br /&gt;
          # PWM Signale&lt;br /&gt;
          #&lt;br /&gt;
          # PB8  - PWM Dampfventil, Servo 50 Hz,  Timer 4 Kanal 3&lt;br /&gt;
          # PC6  - PWM Entnahmerohr, Servo 50 Hz, Timer 3, Kanal 1&lt;br /&gt;
          # PC7  - PWM Licht, LED 50 Hz,          Timer 3, Kanal 2&lt;br /&gt;
          # PC9  - PWM Dosierventil, Servo 50 Hz, Timer 3 Kanal 4&lt;br /&gt;
          #&lt;br /&gt;
          # PA9  - PWM Tassenwaermer, SSR 8 Hz,   Timer 1, Kanal 2&lt;br /&gt;
          # PA11 - PWM Boiler, SSR 8 Hz,          Timer 1, Kanal 4&lt;br /&gt;
          #&lt;br /&gt;
&lt;br /&gt;
timer1 = Timer(1, freq = 8)              # Timer und Frequenzeinstellung&lt;br /&gt;
timer3 = Timer(3, freq = 50)&lt;br /&gt;
timer4 = Timer(4, freq = 50)&lt;br /&gt;
&lt;br /&gt;
PWM_Dampf = timer4.channel(4, mode = Timer.PWM, pin = Pin(&amp;#039;PB8&amp;#039;))        # PWM anlegen&lt;br /&gt;
PWM_Dampf.pulse_width_percent(0)                                                                   # Duty cycle in %&amp;lt;br /&amp;gt;&lt;br /&gt;
PWM_Entnahme = timer3.channel(1, mode = Timer.PWM, pin = Pin(&amp;#039;PC6&amp;#039;))&lt;br /&gt;
PWM_Entnahme.pulse_width_percent(0)&lt;br /&gt;
PWM_Licht = timer3.channel(2, mode = Timer.PWM, pin = Pin(&amp;#039;PC7&amp;#039;))&lt;br /&gt;
PWM_Licht.pulse_width_percent(0)&lt;br /&gt;
PWM_Dosierventil = timer3.channel(4, mode = Timer.PWM, pin = Pin(&amp;#039;PC9&amp;#039;))&lt;br /&gt;
PWM_Dosierventil.pulse_width_percent(0)&lt;br /&gt;
PWM_Tassen = timer1.channel(2, mode = Timer.PWM, pin = Pin(&amp;#039;PA9&amp;#039;))&lt;br /&gt;
PWM_Tassen.pulse_width_percent(0)&lt;br /&gt;
PWM_Boiler = timer1.channel(4, mode = Timer.PWM, pin = Pin(&amp;#039;PA11&amp;#039;))&lt;br /&gt;
PWM_Boiler.pulse_width_percent(0)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
          #&lt;br /&gt;
          # Flowmeter&lt;br /&gt;
          #&lt;br /&gt;
&lt;br /&gt;
FLOW1 = Pin(&amp;#039;PA12&amp;#039;, Pin.IN)                                                                          # PINs definieren und ISR aktivieren&lt;br /&gt;
FLOW1.irq(trigger=Pin.IRQ_FALLING, handler=flow1_callback)&lt;br /&gt;
FLOW2 = Pin(&amp;#039;PB5&amp;#039;, Pin.IN)&lt;br /&gt;
FLOW2.irq(trigger=Pin.IRQ_FALLING, handler=flow2_callback)&lt;br /&gt;
&lt;br /&gt;
MATLAB®-Anweisungen für die MATLAB® - MicroPython Kommunikation&lt;br /&gt;
[Bearbeiten]&lt;br /&gt;
&lt;br /&gt;
mcu = serialport(&amp;quot;COM3&amp;quot;, 115200);                                                            % die Port-Nr des COM-Ports variiert&lt;br /&gt;
configureTerminator(mcu, &amp;quot;CR=LF&amp;quot;);&lt;br /&gt;
configureCallback(mcu, &amp;quot;terminator&amp;quot;, @datenverarbeitung);&lt;br /&gt;
&lt;br /&gt;
Wobei der Port &amp;quot;COM3&amp;quot; bzw. ein anderer über die Systemsteuerung zu ermitteln ist.&lt;br /&gt;
&lt;br /&gt;
function datenverarbeitung(device, ~)                                                         % in der Funktion Datenverarbeitung muss jede &amp;quot;Antwort&amp;quot; der MCU bearbeitet werden&lt;br /&gt;
      zeile = readline(device)&lt;br /&gt;
      (und weitere Datenverarbeitung)&lt;br /&gt;
end&lt;/div&gt;</summary>
		<author><name>Armin Rohnen</name></author>
	</entry>
</feed>