<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="de">
	<id>https://www.mikrocontroller.net/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Debegr92</id>
	<title>Mikrocontroller.net - Benutzerbeiträge [de]</title>
	<link rel="self" type="application/atom+xml" href="https://www.mikrocontroller.net/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Debegr92"/>
	<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/articles/Spezial:Beitr%C3%A4ge/Debegr92"/>
	<updated>2026-04-10T21:41:33Z</updated>
	<subtitle>Benutzerbeiträge</subtitle>
	<generator>MediaWiki 1.39.7</generator>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=AVR_Net-IO_Bausatz_von_Pollin&amp;diff=95153</id>
		<title>AVR Net-IO Bausatz von Pollin</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=AVR_Net-IO_Bausatz_von_Pollin&amp;diff=95153"/>
		<updated>2017-02-06T00:17:16Z</updated>

		<summary type="html">&lt;p&gt;Debegr92: /* U. Radigs Webserver */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Hier steht eine Beschreibung des Pollin Bausatzes [http://www.pollin.de/shop/shop.php?cf=detail.php&amp;amp;pg=NQ==&amp;amp;a=MTQ5OTgxOTk= AVR-NET-IO. Best.Nr. 810 058], oder als aufgebautes Fertigmodul, Best.Nr. 810 073. &lt;br /&gt;
&lt;br /&gt;
Einige Features: Ethernet-Platine mit ATmega32 und Netzwerkcontroller ENC28J60. Die Platine verfügt über 8 digitale Ausgänge, 4 digitale und 4 ADC-Eingänge, welche alle über einen Netzwerkanschluss (TCP/IP) abgerufen bzw. geschaltet werden können.&lt;br /&gt;
&lt;br /&gt;
[[Datei:AVR-NET-IO ADD-ON.JPG|thumb|right|400px|AVR-NET-IO (links) mit zusätzlicher SUB-D Anschlussplatine (rechts, nicht im Lieferumfang)und Add-On-Board (oben, mit aufgelötetem RFM12-433-Modul, beides nicht im Lieferumfang). Ebenso ist zusätzlich ein nicht im Lieferumfang enthaltener kleiner Kühlkörper auf einem der Spannungsregler montiert und die Schraubklemmen zur Stromversorgung wurden durch Buchsen ersetzt.]]&lt;br /&gt;
&lt;br /&gt;
== Technische Daten ==&lt;br /&gt;
&lt;br /&gt;
* Betriebsspannung 9 V AC/DC&lt;br /&gt;
* Stromaufnahme ca. 190 mA&lt;br /&gt;
* bzw. 5V DC, 1A (Steckernetzteil) an J6&lt;br /&gt;
* 8 digitale Ausgänge (0/5 V) [PC0-PC7 an J3]&lt;br /&gt;
* 4 digitale Eingänge (0/5 V) [PA0-PA3 an J3]&lt;br /&gt;
* 4 ADC-Eingänge (10 Bit) [PA4-PA7 an Schraubklemmen]&lt;br /&gt;
* LCD-Anschluss (HD44780 komp. Controller nötig) [PD2-7,PB0,PB3 an EXT]&lt;br /&gt;
* [[ENC28J60]]&lt;br /&gt;
* [http://www.atmel.com/dyn/Products/Product_card.asp?part_id=2014 ATmega32] Mikrocontroller&lt;br /&gt;
&lt;br /&gt;
Maße (L×B×H): 108×76×22 mm.&lt;br /&gt;
&lt;br /&gt;
== Hardware ==&lt;br /&gt;
=== AVR-NET-IO ===&lt;br /&gt;
&lt;br /&gt;
Die Schaltung des AVR-NET-IO ist recht einfach:&lt;br /&gt;
* Ein ATmega32 Mikrocontroller enthält die gesamte Software&lt;br /&gt;
* Ein ENC28J60 Ethernet-Controller für das Senden und Empfangen von Ethernet Frames (MAC und PHY Ethernet Layer) ist über [[SPI]] mit dem ATmega32 verbunden&lt;br /&gt;
* Ein Ethernet RJ-45 MagJack TRJ 0011 BA NL von [http://www.trxcom.com/ Trxcom] mit eingebautem Übertrager und Anzeige-LEDs am ENC28J60.&lt;br /&gt;
* Ein MAX232 für die serielle Schnittstelle&lt;br /&gt;
* Zwei Spannungsregler, 5 V und 3,3 V&lt;br /&gt;
* &amp;quot;Hühnerfutter&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Fast alle I/O Pins des ATmega32 sind irgendwo auf Anschlüssen herausgeführt. Entweder auf dem SUB-D Stecker, dem EXT oder ISP Wannensteckern oder den blauen Anschlussklemmen. Eine Schutzbeschaltung gibt es nicht.&lt;br /&gt;
&lt;br /&gt;
Die blauen Anschlussklemmen haben eine Nut und eine Feder mit denen man&lt;br /&gt;
sie zusammenstecken kann, dadurch ist das Anlöten wesentlich leichter&lt;br /&gt;
und sie stehen auch sauber in der Reihe.&lt;br /&gt;
&lt;br /&gt;
=== Erweiterungsplatine ===&lt;br /&gt;
&lt;br /&gt;
Seit Januar 2010 gibt es auch eine Erweiterungsplatine &lt;br /&gt;
&lt;br /&gt;
[http://www.pollin.de/shop/dt/Nzg4OTgxOTk-/Bausaetze/Diverse/Bausatz_Add_on_fuer_AVR_NET_IO.html Add-on für AVR-NET-IO-Board Best.Nr. 810 112]&lt;br /&gt;
&lt;br /&gt;
Diese Platine erweitert das NET-IO um:&lt;br /&gt;
&lt;br /&gt;
* SD-Karten-Slot über SPI&lt;br /&gt;
* Display über PCF 8574&lt;br /&gt;
* Infrarot-Empfang&lt;br /&gt;
* [[RFM12]] Funkmodul (nicht im Lieferumfang enthalten)&lt;br /&gt;
&lt;br /&gt;
Eine Aufstellung bekannter Fehler findet sich weiter unten [[#Bekannte Fehler|Bekannte Fehler - Erweiterungplatine]] &lt;br /&gt;
&lt;br /&gt;
Erste Erfahrungsberichte im Forum http://www.mikrocontroller.net/topic/161354&lt;br /&gt;
&lt;br /&gt;
=== Hardware-Umbauten &amp;amp; -Verbesserungen ===&lt;br /&gt;
&lt;br /&gt;
* Kühlkörper auf dem 7805 - (Vorsicht: Der LM317T ist rückseitig spannungsführend. Den Kühlkörper also keinesfalls an beide Spannungsregler anschließen!)&lt;br /&gt;
* MAX232 nach anfänglicher Konfiguration nicht bestücken um Strom zu sparen oder um zwei weitere I/O-Pins zu gewinnen&lt;br /&gt;
* 10µF-Elkos für MAX232N (C14-C17) durch 1µF ersetzen. &amp;lt;s&amp;gt;Eine 10µF-Version für den MAX232 gibt es nicht&amp;lt;/s&amp;gt;. Die 10µF-Elkos können auch Ursache einer nicht funktionierenden RS232 sein.&lt;br /&gt;
** Laut Spezifikation sind auch mehr als 1µF erlaubt. Selbst Atmel verwendet beim STK500 10µF. Dies führt keinesfalls dazu, dass die RS232 nicht mehr funktioniert.&lt;br /&gt;
* Die IC-Fassungen aus &amp;quot;Pollins Resterampe&amp;quot; durch Fassungen mit gedrehten Kontakten ersetzen. &lt;br /&gt;
* &#039;&#039;Netz&#039;&#039; LED nicht bestücken oder größere Widerstände einlöten um Strom zu sparen (R3)&lt;br /&gt;
* Vorwiderstände der Ethernet-LEDs größer machen (z.&amp;amp;nbsp;B. verdoppeln) um Strom zu sparen (R6,R7)&lt;br /&gt;
* Linear-Spannungsregler ersetzen&lt;br /&gt;
* Kondensator an AREF-Pin des ATmega32 (ATmega32 Datenblatt) (100nF gegen Masse)&lt;br /&gt;
* Kondensator an den RESET-Pin des ATmega32 ([http://www.atmel.com/dyn/resources/prod_documents/doc2521.pdf Atmel Application Note AVR042: AVR Hardware Design Considerations]) Wenn man diese Quelle genauer liest, ist das aber eher unnötig. - Kondensator bei selbstbau-ISP empfehlenswert.&lt;br /&gt;
* Umbau auf 3,3 V:&lt;br /&gt;
** Ersatz der Spannungsregler durch einen einzigen 3,3 V Regler&lt;br /&gt;
** Anpassen (verkleinern) des LED-Vorwiderstands R3 für 3,3 Volt Betrieb&lt;br /&gt;
** Reduktion der Taktfrequenz (Austausch von Q2) auf den bei 3,3V erlaubten Bereich des ATmega32 ( ATmega32(L)  3.3V /8.0 Mhz Takt )&lt;br /&gt;
** Ersatz des MAX232 durch einen MAX3232&lt;br /&gt;
[[Bild:POWER.JPG|thumb|400px|5V Stromversorgung über USB Kabel, ohne 5 V Spannungsregler und Gleichrichterdioden, Vorsicht: kein Verpolungsschutz!  ]]&lt;br /&gt;
* ATmega32 vom ENC28J60 takten (OSC2)&lt;br /&gt;
* Betrieb mit Gleichspannung:&lt;br /&gt;
** Dioden D2 und D5 durch Drahtbrücken ersetzen, D1 und D4 nicht bestücken (komplette Entfernung des Brückengleichrichters, beinhaltet Verlust des Verpolungsschutzes)&lt;br /&gt;
** Diode D2 bestücken, D5 durch Drahtbrücke ersetzen, D1 und D4 nicht bestücken (Brückengleichrichter durch Verpolungsschutze ersetzen)&lt;br /&gt;
*** ??? Ist dies nicht kontraproduktiv? Bei mir wurde durch D2-Bestückung die Eingangsspannung von ca. 5,2 V am LM317T auf ca. 4,6 V gedrückt, so dass am ENC28J60 nur ca. 2,6 V ankamen (außerhalb der lt. Datenblatt &amp;quot;Operating voltage range of 3.14V to 3.45V&amp;quot;). Man müsste also ein geregeltes Netzteil mit ca. 5,5 V anschließen um 5 und 3,3 V zu erzielen. Dann lieber den Verpolungsschutz durch andere Maßnahmen sicherstellen.&lt;br /&gt;
** Beim Betrieb von USB beachten, dass USB-Spezifikation keinesfalls 5V garantiert, sondern Spannung bis runter 4.4V erlaubt und dann u.U. durch den LM317 nicht mehr genügend Spannung am ENC anliegt. Das äußert sich so, dass zwar der Atmega einwandfrei funktioniert, die Ethernet-Kommunikation aber nicht oder nur sehr sporadisch.&lt;br /&gt;
* Betrieb mit Steckernetzteil&lt;br /&gt;
** Wenn man ein energieeffizientes Stecker-Schaltnetzteil mit 5V, 1A direkt an J6 kontaktiert, kann man sich die o.g. Um- und Ausbauten sparen. Kein Spannungsregler wird mehr heiß, kein Kühlkörper wird benötigt, das Board arbeitet absolut stabil. &lt;br /&gt;
* Ersatz des ATmega32 durch einen ATmega644 oder ATmega1284p mit mehr FLASH-Speicher.&lt;br /&gt;
** Der ATmega644 und auch der ATMega1284p sind nicht mit der Pollin-Firmware kompatibel&lt;br /&gt;
* 100nF über alle drei IC Störunterdrückung zusätzlich bestücken&lt;br /&gt;
&lt;br /&gt;
== Inbetriebnahme der Originalsoftware ==&lt;br /&gt;
=== Einleitung ===&lt;br /&gt;
&lt;br /&gt;
Die bei Auslieferung (Stand September 2008) in den ATmega32 gebrannte Firmware stellt sich manchmal recht zickig an. Es scheint dann die Netzwerk-Schnittstelle, ggf. auch  die serielle Schnittstelle, nicht zu funktionieren. Falls es Probleme geben sollte, sollte man erst einmal ein Firmwareupdate versuchen. Dies geschieht über die serielle Schnittstelle mittels des Programmes NetServer (aktuelle Version 1.03, Februar 2010), die dem Bausatz beiliegt. &lt;br /&gt;
&lt;br /&gt;
Falls die serielle Schnittstelle ebenfalls nicht zugänglich ist, kann mit den im folgenden beschriebenen Schritten die Inbetriebnahme der Software möglich sein. Dazu benötigt man:&lt;br /&gt;
&lt;br /&gt;
* Einen Windows-PC mit Ethernet-Schnittstelle und RS232-Schnittstelle (ein Prolific RS232-USB Konverter funktioniert)&lt;br /&gt;
* Entweder&lt;br /&gt;
**zwei normale (&#039;&#039;straight through&#039;&#039;) Ethernet-Kabel und einen Ethernet Switch/Hub, oder&lt;br /&gt;
**ein gekreuztes(&#039;&#039;cross over&#039;&#039;) Ethernet-Kabel&lt;br /&gt;
* Einen AVR Programmer (Hardware und Software). Zum Beispiel einen [[AVR Dragon]] oder [[STK500]] mit [[AVR Studio]] oder das [[Pollin ATMEL Evaluations-Board]] und [[avrdude]].&lt;br /&gt;
* Die [http://www.pollin.de/shop/ds/MTQ5OTgxOTk-.html Pollin NetServer Software], Version 1.03 (oder neuer)&lt;br /&gt;
&lt;br /&gt;
=== Gelieferten ATmega32 richtig einstellen ===&lt;br /&gt;
[[image:fuse_bits_avr_studio.jpg|thumb|right|250px|Einstellungen der Fuse-Bits mittels AVR Studio 4]]&lt;br /&gt;
Die Fuses der gelieferten ATmega32s scheinen nicht immer mit den im Handbuch auf Seite 12 als erforderlich angegebenen Fuse-Einstellungen übereinzustimmen.&lt;br /&gt;
&lt;br /&gt;
Dies kann man mittels eines Programmers ändern. LFuse = 0xBF, HFuse = 0xD2. Das genaue Vorgehen hängt dabei vom verwendeten Programmer ab. Bei der Gelegenheit kann man ebenfalls eine Sicherheitskopie des ursprünglichen Flash-Inhalts und des EEPROMs anfertigen. Das EEPROM scheint die MAC-Adresse des Ethernet-Ports zu enthalten.&lt;br /&gt;
&lt;br /&gt;
Entgegen der Spezifikation im Handbuch von Pollin sollten die &#039;&#039;&#039;HFuses auf 0xC2&#039;&#039;&#039; gesetzt werden, d. h. CKOPT-Fuse programmiert (dies ist in der Software Version 1.03 bereits vollzogen). Das sorgt für einen stabilen Betrieb des AVR-Oszillators im &amp;quot;full rail-to-rail swing&amp;quot;-Mode bei 16 MHz. Atmel garantiert ansonsten nur stabilen Betrieb bis 8 MHz. Siehe ATmega32-Datenblatt, Kapitel 8.4, Crystal Oscillator.&lt;br /&gt;
{{Absatz}}&lt;br /&gt;
&lt;br /&gt;
==== Funktionsfähige Konfiguration - AVR-Prog ====&lt;br /&gt;
&lt;br /&gt;
[[Bild:Avrprog.png|thumb|right|250px]]&lt;br /&gt;
Benutzer von AVR-Prog können die nachfolgenden Einstellungen für die Lock- und Fuse-Bits verwenden. Hierbei handelt es sich um die ausgelesenen Einstellungen eines funktionsfähigen Controllers. Allerdings sollte, laut Handbuch des AVR-NET-IO-Boards, das Fuse-Bit EESAVE eigentlich gesetzt sein. &lt;br /&gt;
&lt;br /&gt;
Alternativ kann auch per avrdude die Einstellung getroffen werden:&lt;br /&gt;
 avrdude -c stk500v2 -pm32 -U lfuse:w:0xBF:m&lt;br /&gt;
und &lt;br /&gt;
 avrdude -c stk500v2 -pm32 -U hfuse:w:0xC2:m&lt;br /&gt;
&lt;br /&gt;
Anschließend muß noch der Bootloader und die Firmware aktualisiert werden (siehe Handbuch AVR-NET-IO-Board Seite 12 Punkt 3).&lt;br /&gt;
&lt;br /&gt;
=== PC Konfiguration ===&lt;br /&gt;
&lt;br /&gt;
==== PC normalerweise nicht im 192.168.0.0/24 Subnetz ====&lt;br /&gt;
&lt;br /&gt;
Betreibt man den PC nicht im 192.168.0.0/24 Subnetz, muss er wie folgt umkonfiguriert werden, oder die IP Adresse des Boards wird entsprechend angepasst. ( Siehe Handbuch Seite 14ff. Das ist meist sinnvoller und auch einfacher. ) &lt;br /&gt;
&lt;br /&gt;
Den PC vom normalen Netzwerk abstecken[1]. Zur Umkonfiguration dazu bei Windows XP in der Systemsteuerung &#039;&#039;Netzwerkverbindungen&#039;&#039; aufrufen und die lokale &#039;&#039;LAN-Verbindung&#039;&#039; markieren. Dann in der rechten Leiste &#039;&#039;Einstellungen dieser Verbindung ändern&#039;&#039; aufrufen. &lt;br /&gt;
&lt;br /&gt;
Es erscheint der Dialog &#039;&#039;Eigenschaften von &amp;lt;Verbindungsname&amp;gt;&#039;&#039;. In der Liste im Dialog zu &#039;&#039;Internetprotokoll (TCP/IP)&#039;&#039; gehen. Ein Doppelklick auf den Eintrag öffnet den &#039;&#039;Eigenschaften von Internetprotokoll (TCP/IP)&#039;&#039; Dialog.&lt;br /&gt;
&lt;br /&gt;
In diesem Dialog &#039;&#039;Folgende IP-Adresse verwenden:&#039;&#039; auswählen und zum Beispiel&lt;br /&gt;
&lt;br /&gt;
IP-Adresse: &#039;&#039;&#039;192.168.0.100&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
Subnetzmaske: &#039;&#039;&#039;255.255.255.0&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
Standardgateway: &#039;&#039;&#039;192.168.0.1&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
eingeben. &lt;br /&gt;
&lt;br /&gt;
Anmerkung von bitman:&lt;br /&gt;
[1] Dies ist spätestens ab Windows XP nicht mehr notwendig, wenn das Netz 192.168.0.0/24 noch frei ist. Dann kann man einfach den Client &#039;&#039;zusätzlich&#039;&#039; in diesem Netzwerk zusätzlich einbinden über Einstellungen/Netzwerkverbindungen/Lanverbindung/Eigenschaften/TCP-IP/Eigenschaften/Erweitert/IP-Adresse hinzufügen. Es werden dann eben mehrere IP-Adressen an den NIC gebunden.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Alle geöffneten Dialoge nacheinander mit OK schließen.&lt;br /&gt;
&lt;br /&gt;
Alternativ bietet sich das Umprogrammieren des Boards über die serielle Schnittstelle an. Die Werte für IP-Adresse, Netzmaske und Standard-Gateway werden mit den dokumentierten SETxx-Befehlen geändert, das Board neu gestartet und ans vorhandene Netzwerk gesteckt.&lt;br /&gt;
&lt;br /&gt;
Im EEPROM sind folgende Werte vorprogrammiert:&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
3EE - 3F3 MAC-ADRESSE&amp;lt;br&amp;gt;&lt;br /&gt;
3F4 - 3F7 GATEWAY&amp;lt;br&amp;gt;&lt;br /&gt;
3F8 - 3FB NETMASK&amp;lt;br&amp;gt;&lt;br /&gt;
3FC - 3FF IP-ADRESSE&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== PC bereits im 192.168.0.0/24 Subnetz ====&lt;br /&gt;
&lt;br /&gt;
In diesem Fall muss man prüfen, ob die IP-Adresse 192.168.0.90 bereits im Subnetz verwendet wird. Ist dies der Fall, muss das verwendete Gerät mit dieser IP vorübergehend aus dem Subnetz entfernt werden. Es sei denn, dabei handelt es sich um den PC. In diesem Fall muss er wie zuvor umkonfiguriert werden. Ansonsten kann der unverändert im Netz verbleiben.&lt;br /&gt;
&lt;br /&gt;
Dem AVR-NET-IO gibt man eine neue, zuvor unbenutzte Adresse (siehe unten). Dann kann das abgekoppelte Gerät wieder angeschlossen werden, beziehungsweise der PC zurückkonfiguriert werden.&lt;br /&gt;
&lt;br /&gt;
=== AVR-NET-IO anschließen ===&lt;br /&gt;
&lt;br /&gt;
Musste man den PC umkonfigurieren, so werden jetzt nur der PC und der AVR-NET-IO über Ethernet miteinander verbunden. Je nach Ethernet-Kabel benötigt man dazu einen Switch/Hub oder nicht.&lt;br /&gt;
&lt;br /&gt;
Musste man den PC nicht umkonfigurieren, so kann man den AVR-NET-IO wie einen normalen Rechner an das vorhandenen Netz anschließen.&lt;br /&gt;
&lt;br /&gt;
Zusätzlich schließt man die serielle Schnittstelle des AVR-NET-IO an den PC an.&lt;br /&gt;
&lt;br /&gt;
=== Firmware 1.03 einspielen ===&lt;br /&gt;
&lt;br /&gt;
Laut Handbuch sollte der AVR-NET-IO jetzt über Ethernet funktionieren. Ebenso sollte er über die serielle Schnittstelle und ein Terminalprogramm konfigurierbar sein. Beides ist offensichtlich im Auslieferungszustand selten der Fall.&lt;br /&gt;
&lt;br /&gt;
Auch wenn sich Pollins NetServer Software nicht mit dem AVR-NET-IO verbinden lässt, so ist sie jedoch in der Lage eine neue Firmware 1.03 einzuspielen. Das Vorgehen ist im Handbuch auf Seite 12 beschrieben. NetServer präsentiert dabei ein paar einfache Anweisungen denen man folgen sollte.&lt;br /&gt;
&lt;br /&gt;
Wenn sich nach dem scheinbar erfolgreichem Einspielen der Firmware, später nichts tut, so sollte die Firmware mit gesetztem &amp;quot;FailSafe&amp;quot; in der mitgelieferten NetServer-Software nochmals Eingespielt werden.&lt;br /&gt;
&lt;br /&gt;
=== Abschluss ===&lt;br /&gt;
&lt;br /&gt;
Jetzt sollte sich die NetServer Software mit dem AVR-NET-IO über Ethernet verbinden lassen. Dies macht es wiederum möglich, den AVR-NET-IO mit einer anderen IP-Adresse zu versehen. Will man den AVR-NET-IO in einem anderen Subnetz betreiben kann man dies jetzt einstellen.&lt;br /&gt;
&lt;br /&gt;
Nachdem man die IP-Adresse neu eingestellt hat, muss man den PC zurückkonfigurieren und kann dann sowohl den AVR-NET-IO und den PC zusammen betreiben.&lt;br /&gt;
&lt;br /&gt;
== Funktionsumfang der Originalsoftware ==&lt;br /&gt;
Die Originalsoftware ist sehr einfach gestrickt. Im AVR Net-IO läuft ein Programm, welches am Port 50290 eine Textschnittstelle bereit stellt. Diese Schnittstelle kann sowohl über die RS232 als auch über Ethernet angesprochen werden kann. Mit diesem Programm ist es möglich, alle Eingänge sowie alle Ausgänge anzusprechen, als auch die Konfiguration der Netzwerkeinstellungen zu verändern. Die Karte versteht dann folgende Befehle:&lt;br /&gt;
* SETPORT&lt;br /&gt;
Einen digitalen Ausgang auf 0 oder 1 schalten&lt;br /&gt;
* GETPORT&lt;br /&gt;
Den Status eines digital Ausgangs/Eingangs abfragen&lt;br /&gt;
* GETSTATUS&lt;br /&gt;
Den Status aller digital Ausgänge abfragen&lt;br /&gt;
* GETADC&lt;br /&gt;
Den Messwert eines analogen Eingangs ermitteln&lt;br /&gt;
* SETIP&lt;br /&gt;
Die IP-Adresse des Boards ändern&lt;br /&gt;
* GETIP&lt;br /&gt;
Die eingestellte IP-Adresse abfragen&lt;br /&gt;
* SETMASK&lt;br /&gt;
Die Netzwerkmaske verändern&lt;br /&gt;
* GETMASK&lt;br /&gt;
Die eingestelle Netzwerkmaske abfragen&lt;br /&gt;
* SETGW&lt;br /&gt;
Das Netzwerk-Gateway verändern &lt;br /&gt;
* GETGW&lt;br /&gt;
Das eingestellte Netzwerk-Gateway abfragen&lt;br /&gt;
* INITLCD&lt;br /&gt;
Ein angeschlossenes LCD initialisieren&lt;br /&gt;
* WRITELCD&lt;br /&gt;
Einen Text am LCD ausgeben&lt;br /&gt;
* CLEARLCD&lt;br /&gt;
Ein angeschlossenes LCD löschen&lt;br /&gt;
* VERSION&lt;br /&gt;
Die Versionsnummer des Programms ausgeben&lt;br /&gt;
&lt;br /&gt;
Dazu gibt es ein auf Java basierendes Programm, welches alternativ zu einem Terminalprogramm benutzt werden kann. Es zeigt den Status der Portpins an und diese lassen sich auch mit der Maus verändern. Die Messwerte der 4 analogen Eingänge werden ständig angezeigt, wobei es möglich ist, durch einstellbare Faktoren die internen Werte gleich in sinnvolle Einheiten umrechnen zu lassen. Diese Messwerte können auch in eine Datei geloggt werden.&lt;br /&gt;
Neben der Möglichkeit, alle Kommandos auch händisch einzugeben, wird das Java-Programm auch benötigt, um einen Firmware-Update der Net-IO Platine durchzuführen.&lt;br /&gt;
Alles in allem ist dieses Frontend aber mehr als Testumgebung anzusehen, um damit die Hardware in Betrieb zu nehmen. Für einen sinnvollen Dauereinsatz ist das Programm deutlich zu einfach und unflexibel gestrickt. Auch kann die grafische Aufbereitung der Anzeige- und Kontrollelemente nicht befriedigen.&lt;br /&gt;
&lt;br /&gt;
== Bekannte Fehler ==&lt;br /&gt;
=== AVR-NET-IO ===&lt;br /&gt;
&lt;br /&gt;
Siehe auch [[#Hardware-Umbauten_.26_-Verbesserungen|Hardware-Umbauten und Verbesserungen]]&amp;lt;br&amp;gt;&lt;br /&gt;
Käufer berichten von fehlenden Bauteilen im Bausatz (Wannenstecker, Widerstände, Kondensatoren, Induktivitäten). Für Reklamationen: [https://www.pollin.de/shop/kontakt_service/reklamation.html]&lt;br /&gt;
&lt;br /&gt;
* Die Stückliste auf Seite 4 in den Anleitung mit den Versionsangaben&lt;br /&gt;
** &#039;&#039;Stand 20.08.2008, kloiber, #1100, wpe&#039;&#039; (gedruckt im Bausatz)&lt;br /&gt;
** &#039;&#039;Stand 20.08.2008, cd, #all, wpe&#039;&#039; (auf der CD)&lt;br /&gt;
:ist falsch. Pollin legt dem Bausatz irgendwann ab September 2008 einen gedruckten Korrekturzettel bei. Die Online-Version der Anleitung ist korrigiert.&lt;br /&gt;
* Im Schaltplan auf Seite 7 in den Anleitungen mit den Versionen&lt;br /&gt;
** &#039;&#039;Stand 20.08.2008, kloiber, #1100, wpe&#039;&#039; (gedruckt im Bausatz)&lt;br /&gt;
** &#039;&#039;Stand 20.08.2008, cd, #all, wpe&#039;&#039; (auf der CD)&lt;br /&gt;
** &#039;&#039;Stand 03.09.2008, online, #all, wpe&#039;&#039; (Online)&lt;br /&gt;
:ist eine 25-polige SUB-D Buchse gezeichnet. Geliefert wird und in der Stückliste verzeichnet ist ein Stecker.&lt;br /&gt;
&lt;br /&gt;
* Die September 2008 ausgelieferte Firmware im ATmega32  funktioniert bei vielen nicht und muss erst upgedatet werden (siehe [[#Inbetriebnahme der Originalsoftware|Inbetriebnahme der Originalsoftware]])&lt;br /&gt;
&lt;br /&gt;
* Im Flash der gelieferten AVR ist anders als beschrieben nur der Bootloader enthalten, die eigentliche Firmware muss erst mit Hilfe der Updatefunktion geladen werden. Wenn zusätzlich auch die Fuses falsch gebrannt sind, dann funktioniert das Update nicht, auch wenn das PC Programm was anderes behauptet.&lt;br /&gt;
&lt;br /&gt;
* Die Fuse-Einstellungen des ausgelieferten ATmega32 entspricht nicht der Anleitung (siehe [[#Inbetriebnahme der Originalsoftware|Inbetriebnahme der Originalsoftware]])&lt;br /&gt;
&lt;br /&gt;
* Bausatz, gekauft am 27.10.08, Anleitungsversion 19.09.08, ohne Probleme oder erkennbare Fehler zusammengebaut und in Betrieb genommen.&lt;br /&gt;
&lt;br /&gt;
* Bausatz gekauft 29.09.2008, Pinbelegung des 25 poligen D-Sub &amp;quot;Anschlusses&amp;quot; stimmt nicht mit der Anleitung überein. Der Aufdruck auf der Platine ist falsch. Pin1 &amp;lt;-&amp;gt; Pin13, Pin2 &amp;lt;-&amp;gt; Pin12 usw. Setzt man den D-Sub Stecker ein, so sind dessen Pinnummern korrekt. Bei einem Bausatz gekauft 05/2013 ist dies ebenfalls noch der Fall.&lt;br /&gt;
&lt;br /&gt;
* 3 Bausätze Anf. Oktober 2008 gekauft, bei einem waren 2 LM317 dabei, dafür fehlte der 7805 - aus der Bastelkiste ersetzt. Alle haben jedoch auf Anhieb funktioniert&lt;br /&gt;
&lt;br /&gt;
* Bausatz gekauft Ende Januar 2009. Die Lock-Bits (u.a. für PonyProg2000) werden falsch beschrieben. Die in Klammern aufgeführten Werte stimmen bei einem Bit nicht. Die Texte &amp;quot;Programmiert/Unprogrammiert&amp;quot; hingegen schon. Bei den Bauteilen gab es 4 Kondensatoren mit der Aufschrift &amp;quot;220&amp;quot;, ich habe diese durch welche mit 22p ersetzt, da ich nicht sicher war ob wirklich 22p geliefert wurden. Dafür wurden statt einem zwei 7805 und statt einem mindestens vier LM317 mitgeliefert.&lt;br /&gt;
&lt;br /&gt;
* Bausatz geliefert 22.4.2009. Alles vollständig, zusammengebaut, läuft. Software-Version 1.03. Für den oben schon genannten Steckverbinder wurde eine Buchse geliefert. Allerdings stimmen die PIN-Nummern im Schaltplan nicht mit den PIN-Nummern auf der Buchse überein (sie sind gespiegelt), daher liefen die Test-LEDs zunächst nicht.&lt;br /&gt;
&lt;br /&gt;
* Bausatz geliefert 11.7.2009. Spannungsregler LM317T fehlt, grüne statt roter LED. Ein Kondensator 22pF zu viel. LM317T wurde auf Anfrage kostenlos nachgeliefert (27.7.). Inbetriebnahme problemlos.&lt;br /&gt;
&lt;br /&gt;
* Bausatz geliefert 24.7.2009. Ein Quarz 16MHz zu viel, ebenfalls grüne statt rote LED.&lt;br /&gt;
&lt;br /&gt;
* Bausatz geliefert 20.08.2009. Ein Kondensator 22pF zuviel und grüne statt rote LED.&lt;br /&gt;
&lt;br /&gt;
* Bausatz Juli &#039;09 gekauft, grüne statt rote LED&lt;br /&gt;
&lt;br /&gt;
* Bausatz 25.09.09 geliefert, grüne Betriebs-LED, ein ELKO zuviel, Fehler 1µF am MAX232 statt 100nF behoben, richtiger C wird mitgeliefert, Aufbau komplett nach Pollin Anleitung durchgeführt, auf Anhieb fehlerfrei!&lt;br /&gt;
&lt;br /&gt;
* Bausatz 17.10.09 geliefert, grüne Betriebs-LED, zwei 100nF Kondensatoren zu wenig. Aufbau und Inbetriebnahme problemlos.&lt;br /&gt;
&lt;br /&gt;
* Bausatz 21.10.09 gekauft, grüne Betriebs-LED. Aufbau problemlos, RS232 läuft nicht. LAN läuft&lt;br /&gt;
&lt;br /&gt;
* Bausatz Nov. 09 gekauft, grüne LED, alles o.k.&lt;br /&gt;
&lt;br /&gt;
* Bausatz Nov. 09 gekauft, grüne LED, ENC28J60, MAX232 und ATmega32 fehlen, Nachlieferung nach einer Woche&lt;br /&gt;
&lt;br /&gt;
* Bausatz Nov. 09 gekauft,Bauteile komplett.Verbindungsaufbau Seriell klappt erst nach mehreren Versuchen.Problem gelöst:Spannung an MAX und Mega zu niedrig&lt;br /&gt;
&lt;br /&gt;
* Bausatz Dez. 09 gekauft, grüne LED, 100µF Kondensator fehlt, alles o.k.&lt;br /&gt;
&lt;br /&gt;
* Bausatz August 09 gekauft, alle teile da nach Einstellen der fusebits lief alles perfekt&lt;br /&gt;
&lt;br /&gt;
* Bausatz Okt. 09 gekauft, ein 100nF Kondensator und 25MHz Quarz fehlten ... hab beim lokalen Elektronikhändler keinen 25Mhz Grundton Quarz sondern nur im 3. Oberton bekommen aber mit R2.2k parallel zum Quarz schwingt er in der Schaltung schön bei 25Mhz. Mit 1µF am MAX232 funktioniert jetzt auch die RS232.&lt;br /&gt;
&lt;br /&gt;
* 2x Bausatz Feb. 10 gekauft, bei beiden fehlten 7805, L1+L2 je 100µH sowie 4x falscher Wert Kondensator an Max232 vorhanden. Fehlende Bauteile nachgelötet und Funktion getestet. Hat alles einwandfrei funktioniert!!!&lt;br /&gt;
&lt;br /&gt;
* Bausatz März. 10 gekauft, RS232 Printbuchse fehlt, dafür 1x 10pol Wannenstecker zuviel. Grüne LED statt Rot. Funktioniert ansonsten einwandfrei.&lt;br /&gt;
&lt;br /&gt;
* Bausatz Jan. 10 gekauft, gelbe LED statt rot, C14...C17: 10µF, weder seriell noch via Ethernet Konnektivität. Nach Austausch von C14-C17 gegen 1µF, wenigstens serielle Kontaktaufnahme möglich, kein Ethernet auch nach Flash von 1.03 mit NetServer.&lt;br /&gt;
&lt;br /&gt;
* Bausatz Feb. 10 gekauft, Spannungsregler LM317T fehlte&lt;br /&gt;
&lt;br /&gt;
* Bausatz März 10 gekauft, gelbe statt rote LED geliefert, aber Aufbau und inbetriebnahme lt. Handbuch ohne Probleme&lt;br /&gt;
&lt;br /&gt;
* Bausatz März 10 gekauft und gelbe statt rote LED geliefert, funzt wunderbar gemäß Anleitung&lt;br /&gt;
&lt;br /&gt;
* Fertig gelötete Platine gekauft. µC war falsch im Sockel.&lt;br /&gt;
&lt;br /&gt;
* Bausatz April 10 gekauft und gelbe statt rote LED geliefert, ADM232LJN statt MAX232 - Funktion erst nach Ersetzung des ADM durch nen MAX&lt;br /&gt;
&lt;br /&gt;
* Bausatz April 10 gekauft und gelbe statt rote LED geliefert, ADM232LJN statt MAX232 - funktionierte sofort auch mit dem ADM232LJN.&lt;br /&gt;
&lt;br /&gt;
* Bausatz April 10 gekauft wurde mit grüner statt roter LED Ausgeliefert&lt;br /&gt;
&lt;br /&gt;
* Bausatz Juni 10 gekauft: wurde mit grüner statt roter Netz-LED ausgeliefert, 2x 22pF Kerko zuviel&lt;br /&gt;
&lt;br /&gt;
* Bausatz August 10 gekauft: komplett und sofort funktioniert&lt;br /&gt;
&lt;br /&gt;
* Bausatz Juli 10 gekauft: 2 Quarze mit 16 MHz geliefert, statt 1x 16MHz und   1x25MHz.&lt;br /&gt;
&lt;br /&gt;
* Bausatz September 10 gekauft: hat sofort funktioniert. 1x 3,3k und 1x 10k Widerstand zuviel. Statt 100nF Kondensatoren wurden 1µF geliefert -&amp;gt; Platzprobleme auf der Platine durch grössere Bauform. LED grün.&lt;br /&gt;
&lt;br /&gt;
* Bausatz Oktober  6 gekauft: alles funktioniert. LED grün statt rot.&lt;br /&gt;
&lt;br /&gt;
* Fertigmodul Oktober 10 gekauft: Auf Anhieb alles funktioniert!&lt;br /&gt;
&lt;br /&gt;
* Bausatz Oktober 10 gekauft: komplett und sofort funktioniert&lt;br /&gt;
&lt;br /&gt;
* Bausatz November 10 gekauft: komplett und sofort funktioniert (sogar mit der neusten Pollin Firmware 1.03 schon drauf) LED grün statt rot.&lt;br /&gt;
&lt;br /&gt;
* Bausatz November 10 gekauft. Nach Bezug neuer Feinst-Lötspitzen konnte ich ihn dann auch zusammenlöten. Es hat sofort alles funktioniert, obwohl ich nur 12V bzw. 9V Gleichspannung zur Verfügung hatte, und nicht sicher war, wieviel die Komponenten wirklich benötigen. Der Regler wird auch bei 9V Gleichspannungsversorgung noch sehr warm. Da muss auf jeden Fall ein Kühlkörper dran! Ich habe auch eine grüne LED bekommen, ist mir aber wurscht :-)&lt;br /&gt;
&lt;br /&gt;
* Bausatz Dezember 10 gekauft: komplett und funktionierte sofort. Firmware 1.03, grüne LED (Ein Quarz und ein IC-Sockel zu viel)&lt;br /&gt;
&lt;br /&gt;
* Bausatz Januar 2011 gekauft: nur genau die richtige Anzahl Teile dabei, Firmware 1.03, grüne LED, ging auf Anhieb&lt;br /&gt;
&lt;br /&gt;
* 2x Bausatz Januar 2011 gekauft: beide grüne LED, und 1x doppelter Satz Jumper/Stiftleiste, 22PF und Anschlussklemmen. Rest vollständig und beide haben sofort nach zusammenbau funktioniert.&lt;br /&gt;
&lt;br /&gt;
* Februar 2011: AVR-NET-IO: die Diode D5 fehlt, 10 µF gegen 1 µF für MAX232 getauscht, Flash im ATmega32 war programmiert, passende IP-Adr über serielle Schnittstelle eingestellt; ADD-ON: für R1 war 22Ω statt 0,2Ω beigelegt, durch richtigen ersetzt, Beschreibung der LED Bestückung mangelhaft / oe1smc&lt;br /&gt;
&lt;br /&gt;
* Februar 2011: AVR-NET-IO: 1 Diode zuviel, 2 Spulen fehlen, LED grün. Die fehlenden Spulen wurden durch welche aus der Bastelkiste ersetzt - funktioniert. Der 7805 bekam einen kleinen Kühlkörper spendiert.&lt;br /&gt;
&lt;br /&gt;
* Februar 2011: AVR-NET-IO: 2x 10k Widerstände fehlen. Dafür eine Diode zu viel.&lt;br /&gt;
&lt;br /&gt;
* Ende Februar 2011: Zwei Bausaetze an jeweils zwei Adressen, alles in Ordnung.&lt;br /&gt;
&lt;br /&gt;
* Ende März 2011: 2x 25 Mhz Quarz statt 1x16 u. 1x25 Mhz. LED fehlt. Bausatz funktioniert nach Tausch des Quarz den mir mein Freund oe9rsv aus seinem Fundus spendiert hat. Danke auch für die Hilfe beim Fehler suchen.&lt;br /&gt;
&lt;br /&gt;
* Mitte 2010 gekauft: 1x 100nF fehlt&lt;br /&gt;
&lt;br /&gt;
* Mitte Juni 2011: Beide Quarze fehlen und beide Spannungsregler fehlen, Pollin wollte, dass ich das ganze Paket zurückschicke für einen Austausch. Ein 51Ω zu viel. 16Mhz im Handel und 25Mhz vom alten Mobo ausgelötet. Läuft wunderbar.&lt;br /&gt;
&lt;br /&gt;
* Anfang Juni 2011: Beide Quarze fehlen und beide Spannungsregler fehlen, nach kurzer Mail an Pollin (leider ohne Antwort) wurden diese nach ca. 1 Woche in einem Brief nachgeliefert.&lt;br /&gt;
&lt;br /&gt;
* August 2011: alles 1a...&lt;br /&gt;
&lt;br /&gt;
* August 2011: Platine fehlte -&amp;gt; in Nachlieferung&lt;br /&gt;
&lt;br /&gt;
* 30 August 2011: alles 1a...&lt;br /&gt;
&lt;br /&gt;
* 06 Sep. 2011: alles 1a...&lt;br /&gt;
&lt;br /&gt;
* August 2011: 6 Stück bestellt, bei einem haben die 100nF Kondensatoren gefehlt, bei einem zwei LM317 statt 7805 und LM317. Angerufen, 3 Tage später Nachlieferung erhalten.&lt;br /&gt;
&lt;br /&gt;
* Nov. 2011: &#039;&#039;&#039;Net_IO&#039;&#039;&#039; vollständig. Einspielen der Firmware 1.03 war erforderlich. Bei &#039;&#039;&#039;Add-On&#039;&#039;&#039; immer noch falscher Q1 BC548 (NPN) in Stückliste und Lieferung. BC327-40 oder BC328-40 (PNP) nachgefordert. R11 und R24 mitgeliefert, entsprechend Beschreibung V1.1 von Pollin&#039;s Download. Beiliegende Beschreibung war älter, ohne diese Widerstände.&lt;br /&gt;
&lt;br /&gt;
* Ende Nov.2011, alle Teile dabei, Firmware war drauf, sofort funktioniert.&lt;br /&gt;
&lt;br /&gt;
* Anfang Dez.2011, komplett bestückte Platine gekauft. Auf 7805 Kühlkörper gebaut, da er nach 1 Minute schon ausgestiegen ist (LED hat das Pumpen angefangen). Firmware 1.03 musste noch aufgespielt werden danach funktioniert alles einwandfrei. In Betrieb mit 10V DC&lt;br /&gt;
&lt;br /&gt;
* Ende Dez.2011 2xNET-IO und 2xADD bestellt, 4 verschieden volle Kisten bekommen... WSL16 ist mit Verriegelung, geht nicht aufs Board, Jumper fehlen, Spannungsregler doppelt, Poti Löcher zu klein, lsb3 fehlt, SD-Slot hab ich jetzt 3, 100nF hab ich jetzt 4 übrig ... also immer noch lustig. HW-Stand immer noch 1.0 ( gab es überhaupt eine 1.1?)&lt;br /&gt;
&lt;br /&gt;
* Mitte Jan. 2012, 10pol. beide Wannenstecker nicht dabei, Firmware war drauf, sofort funktioniert. 1 LED zuviel. Unproblematische Nachlieferung bei Reklamation (wegen der beiden Wannenstecker kam ein PAKET!).&lt;br /&gt;
&lt;br /&gt;
* Ende Feb. 2012, Um die PHP-Scripte über öffentlichen Webserver zu betreiben muss mit SETGW die Gateway-Adresse des lokalen Routers eingetragen werden. Bei der NAT im Router sollte z.B. Port 8080 auf den internen Port 50290 umgeleitet werden, da manche Provider diesen Port für die Socket-Kommunikation nicht zulassen.&lt;br /&gt;
&lt;br /&gt;
* Juli 2012, Bausatz vollständig, Nach Aufbau sofort den 7805 mit einem kleinen Kühlkörper versehen, da er sonst thermisch überlastet wird! hat weder auf LAN noch RS232 reagiert, musste erst Update einspielen (Download Pollin), danach funktionierte alles einwandfrei!&lt;br /&gt;
&lt;br /&gt;
* Januar 2013, Bausatz vollständig, 7805 mit Kühlkörper versehen, nach Aufbau ohne Probleme funktioniert&lt;br /&gt;
&lt;br /&gt;
* Februar 2013, Bausatz komplett, Aufbau ohne Probleme, 7805 nur leicht warm, LAN funktioniert, RS232 noch ohne Funktion.&lt;br /&gt;
&lt;br /&gt;
* Oktober 2013, Bausatz komplett laut Stückliste, problemloser Aufbau, 7805 leicht warm am 10V DC. RS232 und LAN funktionierten auf Anhieb.&lt;br /&gt;
&lt;br /&gt;
* Januar 2014, Bausatz komplett, Aufbau ohne Probleme, Betrieb mit 9V DC, LAN funktioniert auf Anhieb, RS232 noch nicht getestet.&lt;br /&gt;
&lt;br /&gt;
* März 2014, Komplettgerät, von ca. 100 Versuchen gerade mal 2 erfolgreiche Zugänge. Weder LAN noch RS232 mit Putty funktionierten.&lt;br /&gt;
&lt;br /&gt;
* Dezember Bausatz komplett, Aufbau ohne Probleme und mit zusätzlichen Kondensatoren gesichert, Betrieb mit 9V DC, LAN funktioniert auf Anhieb, RS232  getestet.&lt;br /&gt;
&lt;br /&gt;
=== Erweiterungsplatine ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Die nachfolgend genannten Änderungen sind in der Bauanleitung V1.1 mit Stand 07.12.2011 (Wichtig! Es gibt mehr als eine V1.1 ...) bereits berücksichtigt, R3 wird allerdings mit 3,6kΩ angegeben.&lt;br /&gt;
&lt;br /&gt;
Um bei einem Neuaufbau parallele Widerstände zu vermeiden, sollten folgende Änderungen auf dem Addon-Board gemacht werden:&lt;br /&gt;
*R2 1,5kΩ ersetzen mit 2kΩ&lt;br /&gt;
*R3 1,8K ersetzen mit 3,3kΩ&lt;br /&gt;
*R19 470kΩ ersetzen zu 470Ω&lt;br /&gt;
*Q1 BC548 ersetzen durch BC327 oder BC328 (Hauptsache PNP! und mehr als 100mA)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;ACHTUNG&#039;&#039;&#039; beim Anschluß eines LC-Displays an J5 (über I&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;C, PCF 8574): Vcc/5V liegt an Pin 1, GND an Pin 2 von J5. Es gibt etliche Displays mit abweichender Belegung Pin 1 GND und Pin 2 Vcc!&lt;br /&gt;
&lt;br /&gt;
Auch beim Add-On gibt es fehlende oder falsche Bauteile im Bausatz und Fehler im Schaltplan und auf der Platine:&lt;br /&gt;
&lt;br /&gt;
*Stand Feb. 2011: R2 wird mit 2,2kΩ und R3 wird mit 3,6kΩ ausgeliefert. Somit werden die 3,3 V richtig erzeugt. R19 hat 470Ω. Der ISP-Anschluß ist nicht vollständig durchgeschleift, es besteht keine Verbindung der RESET-Leitung zwischen ISP und ISP1 (Abhilfe: Drahtbrücke einlöten, [http://www.mikrocontroller.net/topic/161354#1600385 Quelle]). &lt;br /&gt;
&lt;br /&gt;
*Stand Nov. 2011: bei mir ist die RESET-Leitung korrekt zw. ISP und ISP1 verbunden. Es gibt jetzt auch einen R24 (470Ohm) und R11 (1KOhm), der in der bei mir mitgelieferten Bauanleitung fehlt, in der zum Download (V1.1) angebotenen  aber drin steht. Es wird immer noch der falsche Q1 BC548C (NPN) mitgeliefert. Das Schaltsymbol für einen PNP ist richtig im Schaltplan gezeichnet.&lt;br /&gt;
&lt;br /&gt;
*Stand Dez. 2011: R24 (470Ω) kann mit 0Ω ersetzt und R11 (1kΩ) völlig weggelassen werden. Diese Widerstände bilden einen (eigentlich überflüssigen) Spannungsteiler in der MISO Leitung. Der Spannungsteiler hat allerdings auch eine Schutzfunktion, falls weitere Slaves am SPI-Bus hängen, die 5V-Pegel nutzen, z. B. ISP-Programmierer. (siehe [http://son.ffdf-clan.de/include.php?path=forumsthread&amp;amp;threadid=1167&amp;amp;postid=9203 1284p: Board, ich oder beide verwirrt?])&lt;br /&gt;
&lt;br /&gt;
*Sept&#039;12: Bausatz mit Stecker anstelle einer Buchse ausgeliefert, 5mm anstelle von 3mm LED&#039;s dafür aber 3 Poti zuviel.&lt;br /&gt;
&lt;br /&gt;
*Sept&#039;12: Ebenfalls Bausatz mit Sub-D-Stecker statt Buchse ausgeliefert, 5mm anstelle von 3mm LED&#039;s und 3 Potis zuviel.&lt;br /&gt;
&lt;br /&gt;
*Stand März 2013: Die Belegung der 25 pol. Sub-D-Buchse im Schaltplan der Anleitung V1.1 (und früher) ist falsch dargestellt. SCL und SDA des I&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;C-Busses liegen wie beim AVR-NET-IO Board auf Pin 2 bzw. 3 und nicht auf Pin 11 bzw. 12 der Buchse. Ein 1:1 verdrahtetes Kabel funktioniert.&lt;br /&gt;
&lt;br /&gt;
== Andere Software für den Client-PC ==&lt;br /&gt;
=== NetIOLib ===&lt;br /&gt;
&lt;br /&gt;
In C# geschriebene Bibliothek zur Ansteuerung der Platine im Orginalzustand. Inkl. Beispielsoftware und Quellcode (GNU GPL) &lt;br /&gt;
&lt;br /&gt;
Links gehen nicht:&lt;br /&gt;
DLL: [http://www.tware.org/downloads/NetIOLib_dll.zip Download-Link]&lt;br /&gt;
Source: [http://www.tware.org/downloads/NetIOLib_src.zip Download-Link]&lt;br /&gt;
&lt;br /&gt;
=== E2000-NET-IO-Multi-Control ===&lt;br /&gt;
Mit dem E2000-NET-IO-Multi-Control ist es möglich, die von dem E2000-NET-IO-Designer erstellten Projekte zu öffnen und die AVR-NET-IO&#039;s zu steuern. &lt;br /&gt;
&lt;br /&gt;
Die Anwendung liegt dem [http://www.mikrocontroller.net/articles/AVR_Net-IO_Bausatz_von_Pollin#E2000-NET-IO-Designer_.28Windows.5BXP.2F7.5D_.2F_Android.29 E2000-NET-IO-Designer] bei.&lt;br /&gt;
&lt;br /&gt;
=== ControlIO ===&lt;br /&gt;
Einfache Bibliothek zur Ansteuerung mit Originalfirmware.&lt;br /&gt;
http://www.mikrocontroller.net/topic/149695&lt;br /&gt;
&lt;br /&gt;
=== JAVA Lib ===&lt;br /&gt;
Einfache Java-Bibliothek zur Ansteuerung mit Originalfirmware.&lt;br /&gt;
http://son.ffdf-clan.de/?path=forumsthread&amp;amp;threadid=611&lt;br /&gt;
&lt;br /&gt;
=== PHP ===&lt;br /&gt;
PHP Klasse zur Ansteuerung mit der Originalfirmware. (Opensource Lizenz)&lt;br /&gt;
http://blog.coldtobi.de/1_coldtobis_blog/archive/298_pollin_net-io_php_library.html&lt;br /&gt;
&lt;br /&gt;
PHP Funktionen zum Ansteuern der Originalfirmware. (Free for All Lizenz)&lt;br /&gt;
http://defcon-cc.dyndns.org/wiki/index.php/Pollin_AVR-NetIO_PHP_Wrapper&lt;br /&gt;
&lt;br /&gt;
== Clients für Smartphones ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== AVR NET IO Control (Windows Phone 7.5,7.8,8.0) ===&lt;br /&gt;
&lt;br /&gt;
App zur steuerung des AVR NET IO. (Kostet $0,99)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;App im Market: [http://www.windowsphone.com/de-de/store/app/avr-net-io-controll/030d107f-9a27-4a62-ac8f-cb74e79c0500 AVR NET IO Control]&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== App NetIO (Windows Mobile 6.5) ===&lt;br /&gt;
Frei verfügbare App für Windows Mobile zur Ansteuerung mit der Orginalsoftware. Das HTC HD2 wird damit zur Fernsteuerung für das AVR Net-IO Board.&lt;br /&gt;
http://www.heesch.net/netio.aspx&lt;br /&gt;
&lt;br /&gt;
=== NET-IO Control (Android) ===&lt;br /&gt;
Eine Application für das Android Betriebssystem zur Steuerung des AVR Net-IO Boards. Es ist möglich, alle Ausgänge zu steuern und alle Eingänge anzuzeigen. Die Analogen Eingänge können mit einem Berechnungsfaktor versehen werden. &#039;&#039;Geplant ist noch ein Offsetwert.&#039;&#039; Außerdem kann jedem analogen Wert eine Einheit zugeordnet werden. Die Ausgänge können in der neusten Version in einen Tastermodus gesetzt werden.&lt;br /&gt;
&lt;br /&gt;
[[Datei:NET-IO-Control.png|200px]] [[Datei:NET-IO-Control2.png|200px]] [[Datei:NET-IO-Control3.png|200px]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Trial-Version: [https://play.google.com/store/apps/details?id=de.android.AVR.NETIOControlTRAIL Google-Play]&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
(In dieser Probe Version können nur 1 Output und 2 Inputs gesteuert werden)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Vollversion: [https://play.google.com/store/apps/details?id=de.android.AVR.NETIOControl Google-Play]&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
(Kostet im Google-Play 3,00 €)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Weitere Informationen sind auf der Entwickler-Seite zu finden:  [http://elektronik2000.de/ Elektronik2000.de]&lt;br /&gt;
&lt;br /&gt;
=== E2000-NET-IO-Designer (Windows[XP/7] / Android) ===&lt;br /&gt;
[[Datei:E2000-NET-IO-Designer.png|400px|right]]&lt;br /&gt;
Mit dem E2000-NET-IO-Designer ist es möglich, eine grafische Oberfläche für die NET-IOs von Pollin zu erstellen. Dafür werden Knöpfe, Texte und Anzeigebilder zur Verfügung gestellt. Jedes dieser Element kann &amp;quot;Aufgaben&amp;quot; übernehmen um die NET-IOs zu steuern oder einen Status des NET-IO anzuzeigen. Weitere Icons können von dem Benutzer selbst in den entsprechenden Ordner gelegt werden und in die Oberfläche eingebunden werden. Es können mehrere Seiten designt werden die durch einen selbst positionierten Knopf erreichbar sind. Die Android Application arbeitet somit im Fullscreen-Modus. Des weiteren ist es möglich, mehrere NET-IO&#039;s in einem Projekt zu benutzen. Nach dem erstellen der grafischen Oberfläche mit dem E2000-NET-IO-Designer, kann mit der Android APP das Projekt einfach gedownloaded werden. Dafür baut die APP eine Verbindung zum E2000-NET-IO-Designer auf und läd alle benötigten Dateien herunter (Achtung: Firewall-Einstellungen beachten). Die designten Oberflächen können außerdem noch mit der E2000-NET-IO-Multi-Control.exe auf dem Computer ausgeführt werden. Dadurch ist es Möglich, seine NET-IOs vom PC aus zu steuern über eine selbst designte Oberfläche. &lt;br /&gt;
&lt;br /&gt;
Zum Ausführen des E2000-NET-IO-Designer muss .NET Framework 4.0 installiert sein und es muss eine Internetverbindung exisitieren.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Features:&#039;&#039;&#039;&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Grafische Oberfläche am PC erstellen&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Verwendung von eigenen Button- und Hintergrundbildern&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Designbare Anzeige von Digital- und Analogwerten&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Steuern von mehreren AVR-NET-IO Boards&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Unterstützung der E2000-NET-IO Firmware (mehere Boards gleichzeitig)&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Designte Steuerungen können auf dem PC oder dem Handy ausgeführt werden (Android)&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Schnelle Verbindung&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Einfache übertragung auf das Handy durch Projekt Download&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[http://www.elektronik2000.de/downloads.php?id=44 Download E2000-NET-IO-Designer]&lt;br /&gt;
&lt;br /&gt;
[http://www.elektronik2000.de/hilfe/E2000Netdesigneruebersicht.html Online Hilfe]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Weitere Informationen sind auf der Entwickler-Seite zu finden:  [http://elektronik2000.de/ Elektronik2000.de]&lt;br /&gt;
&lt;br /&gt;
=== NetIO ( iPhone &amp;amp; Android ) ===&lt;br /&gt;
&amp;lt;div style=&amp;quot;float: left; margin-right: 20px&amp;quot;&amp;gt;[[Datei:Netio_logo.png|70px]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Schöne universelle Fernbedienung für das Board (iOS / Android). Konfigurierbar über einen Browserbasierten Editor. &amp;lt;br&amp;gt;&lt;br /&gt;
Unterstützt TCP socket Verbindungen, kann http request absetzen und kann auch Webseiten einbinden (z.B. IP-Kameras). Kann mehrere &lt;br /&gt;
Boards gleichzeitig steuern! Einfach super schnell ins Projekt eingebaut... Es gibt Buttons (die auch als Taster konfiguriert werden können), Slider, Switches und einfache Labels. Dinge können geschaltet oder Daten ausgelesen und mit regex dargstellt werden.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&#039;float: right&#039;&amp;gt;&lt;br /&gt;
[[Datei:Netio_TV.png|190px]]&lt;br /&gt;
[[Datei:Netio_iphone5.png|190px]]&lt;br /&gt;
[[Datei:NetIO_appflow.jpg|190px]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
AppStore Link: http://itunes.apple.com/app/netio/id464924297?mt=8 &amp;lt;br/&amp;gt;&lt;br /&gt;
Google Play Link: https://play.google.com/store/apps/details?id=com.luvago.netio &amp;lt;br/&amp;gt;&lt;br /&gt;
Webseite: http://netioapp.de &lt;br /&gt;
&lt;br /&gt;
Hinweis: &amp;lt;br&amp;gt; Man findet es unter &amp;quot;NetIO&amp;quot; im Store, im Icon selbst und in iTunes wird es als &amp;quot;Controller&amp;quot; angezeigt. &amp;lt;br&amp;gt;&lt;br /&gt;
Die eigene Konfiguration kann man mit dem [http://netioapp.com/editor/ Online Editor] vorher am PC erstellen.&lt;br /&gt;
Eine fertige [http://netioapp.com/editor/?config=pollin AVR-NET-IO Konfiguration] gibt es als funktionierendes Beispiel schon als Preset.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;div style=&#039;clear: both&#039;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== AVR Net IO (iPhone) ===&lt;br /&gt;
[[Datei:AVRNetIO-Screenshot1.png|160px|rechts]]&lt;br /&gt;
Update 15.12.2011: Die Neue Version 1.3 ist seit gestern im AppStore. Fehlerkorrekturen und ein robusteres Handling machen die App nun zur universellen AVR-Net-IO-Steuerung.&lt;br /&gt;
&lt;br /&gt;
Mit der [http://itunes.apple.com/de/app/avr-net-io/id460991760?mt=8 iPhone App AVR-Net-IO] kann das Board ferngesteuert werden. Die Fernsteuerung umfasst in der Version 1.1 folgende Funktionen:&amp;lt;br&amp;gt;&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;ADC-Werte zyklisch auslesen und darstellen&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Digital-Inputs zyklisch darstellen&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Digital-Outputs können über Buttons geschaltet werden. Die Werte der Digital-Outputs werden zuerst ausgelesen und zeigen den zuletzt gesetzten Wert an.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Terminal-Modus: Hier können beliebige AVR-Net-IO-Befehle eingegeben werden. Das Ergebnis wird 1:1 angezeigt, wie es vom Board kommt. Hilfreich für Tests bei Eigenentwicklungen und Konfigurationen.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Mehr Infos gibt&#039;s dazu direkt von den Entwicklern auf [http://www.facebook.com/pages/AVR-Net-IO/187799687958255?ref=nf AVR-net-IO Facebook-Page] oder direkt auf deren Homepage [http://www.ondics.de/apps/1001/ Homepage].&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Hinweis: MIt der aktuellen Version 1.1 gibt es noch bei manchen Boards Probleme beim auslesen und anzeigen der ADC- und Digital-Werte. Das Terminal funzt problemlos. Die Entwickler kümmern sich gerade drum und haben einen baldigen Update versprochen.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Andere Software statt der Originalsoftware von Pollin ==&lt;br /&gt;
&lt;br /&gt;
Die Umrüstung auf einen Webserver durch Austausch der Software (und ev. des ATmega32) bietet sich an. Kleiner Hinweis dabei: wenn zum Flashen ein ISP-Adapter verwendet wird, diesen unbedingt vor dem Start der neuen Software abziehen! Der ISP arbeitet nämlich über dieselbe SPI-Schnittstelle über die auch der ENC28J60 angesteuert wird. Ein eventuell noch angeschlossener, wenn auch passiver ISP-Adapter stört diese Kommunikation, d.h. das Programm an sich scheint zu laufen, aber die Ethernet-Schnittstelle funktioniert nicht.&lt;br /&gt;
&lt;br /&gt;
=== E2000 - Logik ===&lt;br /&gt;
&lt;br /&gt;
[[Datei:E2000-Logik-Bedienoberflaeche.jpg|500px|rechts]]&lt;br /&gt;
&lt;br /&gt;
Anwenderfreundliche Logik-Software von Elektronik2000.de zur Steuerung des AVR-NET-IO. Der ATMEGA32 wird durch einen ATMEGA644 ersetzt und mit der E2000-Firmware beschrieben. Nun ist es möglich in der E2000-Logik Software eine Logikschaltung zu erstellen und diese auf das NET-IO-Board zu übertragen. Dort wird diese Schaltung simuliert. Dies funktioniert komplett ohne einen Computer.&lt;br /&gt;
&lt;br /&gt;
Durch ein Erweiterungsboard von Elektronik2000.de ist es auch möglich, das Board ohne Internet laufen zu lassen eine RTC (RealTimeClock) übernimmt dabei die Uhrzeitgesteuerten Funktionen. Auf dieser Erweiterung ist auch ein EEPROM integriert, um Firmware-Updates über Netzwerk einzuspielen (in Zukunft). Diese Erweiterung bietet außerdem die Anbindung an das E2000-Bus-System, durch das es möglich ist das AVR-NET-IO-Board durch weitere Ein- und Ausgänge zu erweitern.&lt;br /&gt;
&lt;br /&gt;
Das Designen von Schaltaufgaben wird in diesem Programm grafisch dargestellt, durch das ein einfaches Anpassen seiner Logikschaltungen möglich ist.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Eine Steuerung des E2000-NET-IO ist möglich durch den Intregrieten Webserver, die PC-Software (E2000-NET-IO Control) oder der Androidsoftware. All diese Können gleichzeitig auf das E2000-NET-IO zugreifen und Funktionen ausführen. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Weitere Informationen gibt es auf der Entwicklerseite: [http://www.elektronik2000.de Elektronik2000.de]&lt;br /&gt;
&lt;br /&gt;
=== Bascom Version von Hütti ===&lt;br /&gt;
&lt;br /&gt;
(Quelle: http://bascom-forum.de/index.php/topic,1781.45.html )&lt;br /&gt;
dort am Ende der Seite.&lt;br /&gt;
&lt;br /&gt;
=== Ben&#039;s Bascom Quellcode ===&lt;br /&gt;
&lt;br /&gt;
(Quelle: http://members.home.nl/bzijlstra/software/examples/enc28j60.htm )&lt;br /&gt;
&lt;br /&gt;
Muss aber für Bascom 1.11.9.3 angepasst werden, siehe Code von Hütti !&lt;br /&gt;
&lt;br /&gt;
=== U. Radigs Webserver ===&lt;br /&gt;
&lt;br /&gt;
Angepasster Sourcecode von U.Radig: http://www.mikrocontroller.net/attachment/40027/Webserver_MEGA32.hex&lt;br /&gt;
oder selbst anpassen: &lt;br /&gt;
Ändere in der Datei ENC28J60.H:&lt;br /&gt;
 #define ENC28J60_PIN_CS    4&lt;br /&gt;
(Quelle: http://www.mikrocontroller.net/topic/109988#988386)&lt;br /&gt;
&lt;br /&gt;
Temporären Dateien (*.d, *,lst,*.o) vorher im Verzeichnis löschen &#039;&#039;make clean&#039;&#039;, damit neu compiliert wird.&lt;br /&gt;
&lt;br /&gt;
IP: 192.168.0.99&amp;lt;br&amp;gt;&lt;br /&gt;
User: admin&amp;lt;br&amp;gt;&lt;br /&gt;
Pass: uli1&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Den orginal SourceCode gibt&#039;s übrigens hier:http://www.ulrichradig.de/home/index.php/avr/eth_m32_ex&lt;br /&gt;
&lt;br /&gt;
Bei den Fuses BOOTRST ausschalten, da die Software keinen Bootloader enthält.&lt;br /&gt;
&lt;br /&gt;
IP: 192.168.1.90&amp;lt;br&amp;gt;&lt;br /&gt;
User: admin&amp;lt;br&amp;gt;&lt;br /&gt;
Pass: tim&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Weiterentwicklung des Radig-Codes von RoBue: &amp;lt;br&amp;gt;&lt;br /&gt;
- 1-Wire-Unterstützung (Anschlus an PORTA7) &amp;lt;br&amp;gt;&lt;br /&gt;
- PORTA0-3 digitaler Eingang (ein/aus) &amp;lt;br&amp;gt;&lt;br /&gt;
- PORTA4-6 analoger Eingang (0 - 1023) &amp;lt;br&amp;gt;&lt;br /&gt;
- LCD an PORTC &amp;lt;br&amp;gt;&lt;br /&gt;
- Schalten in Abhängigkeit von Temperatur und analogem Wert &amp;lt;br&amp;gt;&lt;br /&gt;
- (Teilweise) Administration über Weboberfläche &amp;lt;br&amp;gt;&lt;br /&gt;
- Erweiterung des cmd-Befehlsatzes für telnet/rs232 &amp;lt;br&amp;gt;&lt;br /&gt;
Gedacht ist der Einsatz des AVR-NET-IO-Bausatzes für Heizungs- oder Haussteuerung) &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
(Quelle:&amp;lt;br&amp;gt;&lt;br /&gt;
http://www.mikrocontroller.net/attachment/43307/AVR-NET-IO_RoBue_V1.3.zip&amp;lt;br&amp;gt;&lt;br /&gt;
http://www.mikrocontroller.net/attachment/44569/AVR-NET-IO_RoBue_V1.4.zip&amp;lt;br&amp;gt;&lt;br /&gt;
http://www.mikrocontroller.net/attachment/46720/AVR-NET-IO_RoBue_1.5-final_hoffentlich_.zip)&lt;br /&gt;
&lt;br /&gt;
Bei der Ver 1.5 sind die Ports PD2+3 fürs 4bit LCD (Ext.) vertauscht ! Gruß B.P&lt;br /&gt;
&lt;br /&gt;
=== Simon Ks Webserver (uip-Stack) ===&lt;br /&gt;
Angepasster Sourcecode von Simon K: http://www.mikrocontroller.net/attachment/39939/uWebSrv.zip&lt;br /&gt;
IP: 192.168.0.93:8080&amp;lt;br&amp;gt;&lt;br /&gt;
Um diesen Code mit einem Atmega1284P verwenden zu können, muss in der main.c in Zeile 38, &amp;quot;TIMSK&amp;quot; durch &amp;quot;TIMSK1&amp;quot; ersetzt werden.&lt;br /&gt;
Die Fusebits für den Atmega1284p ohne Bootloader sind:&lt;br /&gt;
lfuse=0xFF, hfuse=0xD9, efuse=0xFF&lt;br /&gt;
&lt;br /&gt;
=== Ethersex Server ===&lt;br /&gt;
&lt;br /&gt;
http://www.ethersex.de - Einfach für atmega32 compilieren und funktioniert.&lt;br /&gt;
&lt;br /&gt;
=== Etherrape Server ===&lt;br /&gt;
&lt;br /&gt;
http://www.lochraster.org/etherrape/ &lt;br /&gt;
&lt;br /&gt;
ist in jedem Fall hier auch zu erwähnen zumal es sich beim etherrape um das Ursprungsprojekt von ethersex handelt.&lt;br /&gt;
Es scheint aber bei der Weiterentwicklung wenig zu passieren.&lt;br /&gt;
Ausführliche Dokumentation findet sich unter http://wiki.lochraster.org/wiki/Etherrape&lt;br /&gt;
&lt;br /&gt;
=== Mini SRCP Server (kommerziell, Closed-Source)===&lt;br /&gt;
&lt;br /&gt;
Damit wird die Platine zu einer Modellbahnsteuerung, die&lt;br /&gt;
über das Netzwerkprotokoll SRCP mit verschiedenen Programmen&lt;br /&gt;
gesteuert werden kann.&lt;br /&gt;
&lt;br /&gt;
[http://www.7soft.de/de/mini_srcp_server/index.html Infoseite] zur Hardware&lt;br /&gt;
und das zugrundeliegende [http://www.der-moba.de/index.php/Digitalprojekt Digitalprojekt].&lt;br /&gt;
&lt;br /&gt;
=== Avr ArtNET-Node ===&lt;br /&gt;
&lt;br /&gt;
Hiermit kann die Platine zu einem Art-Net Node werden, mit dem sich ein DMX-Universe über Ethernet übertragen lässt. Basiert auf den Quellen von Ulrich Radig.&lt;br /&gt;
&lt;br /&gt;
Dokumentation: [http://www.dmxcontrol.de/wiki/Art-Net-Node_f%C3%BCr_25_Euro Art-Net-Node für 25 Euro]&lt;br /&gt;
&lt;br /&gt;
=== Webserver von G. Menke ===&lt;br /&gt;
&lt;br /&gt;
Ein Webserver (basierend auf den Sourcen von U. Radig), der so angepasst ist, dass alle Ein- und Ausgänge wie bei der originalen Pollin-Software genutzt werden können (8xDIGOUT, 4xDIGIN, 4xADIN). Der Webserver kann daher direkt auf das Net-IO geladen werden. Im ZIP-File sind ein ReadMe und alle C-Sourcen enthalten.&amp;lt;br&amp;gt;&amp;lt;i&amp;gt;Download&amp;lt;/i&amp;gt;:&lt;br /&gt;
[http://gm.stream-center.de/webserver/ Webserver mit passender IO]&lt;br /&gt;
&lt;br /&gt;
=== OpenMCP === &lt;br /&gt;
&#039;&#039;&#039;(Projekt scheint erloschen - Links all down - Jan. 2014)&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Tolles Projekt, welches viele Features bietet und stabil läuft. Hervorzuheben ist die Übersichtlichkeit der Programmteile/Module und die vielleicht nicht ganz komplette Dokumentation. Man merkt, dass viel Arbeit und Liebe in diesem Projekt steckt. Herausgekommen ist dabei eine einfach zu handhabende Entwicklungsumgebung. Anfänger können, dank des gut durchdachten CGI-Systems, welches sich um alle wichtigen Sachen kümmert, leicht eigene CGI implementieren. Alle Ausgaben erfolgen nur mit printf über die Standardausgabe und werden automatisch richtig per Netzwerk übertragen, dadurch ist es auch für den Anfänger recht gut geeignet, da man sich nicht mit der Netzwerkprogrammierung auseinander setzen muss.&lt;br /&gt;
&lt;br /&gt;
Die Software belegt im Moment (Stand Juli 2010) ca. 55 Kb im Flash, so dass man das Board mit einem grösseren µC (z.B. ATMega644) aufrüsten muss.&lt;br /&gt;
&lt;br /&gt;
[http://wiki.neo-guerillaz.de Projekt und Doku]&lt;br /&gt;
&lt;br /&gt;
Der Autor stellt zwei über das Internet erreichbare Testboards bereit unter http://www.neo-guerillaz.de:81 und http://www.neo-guerillaz.de:82 die beide unter OpenMCP laufen, je auf einen AVR-NETIO mit einem ATmega644 und dem eigentlichen Board mit einem ATmega2561. Zusätzlich ist gerade eine Version für das myAVR in Arbeit die schon ordentlich Fortschritte macht.&lt;br /&gt;
&lt;br /&gt;
=== OpenMLP ===&lt;br /&gt;
Auf openMCP basierender Port nach [http://avr.myluna.de LunaAVR] (GPL). Umfangreiche Funktionalität und direkte Anpassung an die Sprache. Abgespeckte Version auch auf Atmega32 lauffähig. Die Original-Dokumentation kann zum Großteil hergenommen werden. Einige Zusatzfeatures. Leichte Konfiguration und guter Einstieg für Anfänger und zum Verständnis der Serverfunktionalität.&lt;br /&gt;
&lt;br /&gt;
[http://avr.myluna.de/doku.php?id=de:openmlp Artikelseite]&lt;br /&gt;
[http://forum.myluna.de/viewtopic.php?f=8&amp;amp;t=13 Forum]&lt;br /&gt;
&lt;br /&gt;
=== ENC28J60 I/O-Webserver von Thomas Heldt ===&lt;br /&gt;
&lt;br /&gt;
Ein Modul-Webserver (Softwarekompatibel zum Pollin Webserver), der durch div. Module erweitert werden kann, Software in Bascom basierend auf dem Code von Ben Zijlsta wurde erweitert und angepasst:&lt;br /&gt;
&lt;br /&gt;
[http://mikrocontroller.heldt.eu/index.php?page=enc28j60-io-webserver Projekt und Software]&lt;br /&gt;
&lt;br /&gt;
=== AVR-Netino ===&lt;br /&gt;
[http://code.google.com/p/avr-netino/ Projekt und Software]&lt;br /&gt;
&lt;br /&gt;
Arduino fürs Net-IO&lt;br /&gt;
&lt;br /&gt;
== Siehe auch ==&lt;br /&gt;
* Diskussion zu diesem Projekt: http://www.mikrocontroller.net/topic/109988&lt;br /&gt;
* [http://www.microchip.com/wwwproducts/Devices.aspx?dDocName=en022889 ENC28J60 Produktseite]&lt;br /&gt;
* [http://ww1.microchip.com/downloads/en/DeviceDoc/39662c.pdf ENC28J60 Datenblatt(pdf)]&lt;br /&gt;
* [http://son.ffdf-clan.de Forum für AVR-Net-IO]&lt;br /&gt;
* [http://avr.myluna.de/doku.php?id=de:openmlp LunaAVR openMLP ]&lt;br /&gt;
* [http://bascom-forum.de/index.php/topic,1781.0.html Bascom Forum ]&lt;br /&gt;
* [http://hobbyelektronik.org/w/index.php/AVR-NET-IO-Shield Shield für den NET-IO]&lt;br /&gt;
&lt;br /&gt;
[[Category:AVR-Boards]]&lt;br /&gt;
[[Category:Ethernet|P]]&lt;/div&gt;</summary>
		<author><name>Debegr92</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=AVR_Net-IO_Bausatz_von_Pollin&amp;diff=95152</id>
		<title>AVR Net-IO Bausatz von Pollin</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=AVR_Net-IO_Bausatz_von_Pollin&amp;diff=95152"/>
		<updated>2017-02-06T00:16:47Z</updated>

		<summary type="html">&lt;p&gt;Debegr92: Links 404&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Hier steht eine Beschreibung des Pollin Bausatzes [http://www.pollin.de/shop/shop.php?cf=detail.php&amp;amp;pg=NQ==&amp;amp;a=MTQ5OTgxOTk= AVR-NET-IO. Best.Nr. 810 058], oder als aufgebautes Fertigmodul, Best.Nr. 810 073. &lt;br /&gt;
&lt;br /&gt;
Einige Features: Ethernet-Platine mit ATmega32 und Netzwerkcontroller ENC28J60. Die Platine verfügt über 8 digitale Ausgänge, 4 digitale und 4 ADC-Eingänge, welche alle über einen Netzwerkanschluss (TCP/IP) abgerufen bzw. geschaltet werden können.&lt;br /&gt;
&lt;br /&gt;
[[Datei:AVR-NET-IO ADD-ON.JPG|thumb|right|400px|AVR-NET-IO (links) mit zusätzlicher SUB-D Anschlussplatine (rechts, nicht im Lieferumfang)und Add-On-Board (oben, mit aufgelötetem RFM12-433-Modul, beides nicht im Lieferumfang). Ebenso ist zusätzlich ein nicht im Lieferumfang enthaltener kleiner Kühlkörper auf einem der Spannungsregler montiert und die Schraubklemmen zur Stromversorgung wurden durch Buchsen ersetzt.]]&lt;br /&gt;
&lt;br /&gt;
== Technische Daten ==&lt;br /&gt;
&lt;br /&gt;
* Betriebsspannung 9 V AC/DC&lt;br /&gt;
* Stromaufnahme ca. 190 mA&lt;br /&gt;
* bzw. 5V DC, 1A (Steckernetzteil) an J6&lt;br /&gt;
* 8 digitale Ausgänge (0/5 V) [PC0-PC7 an J3]&lt;br /&gt;
* 4 digitale Eingänge (0/5 V) [PA0-PA3 an J3]&lt;br /&gt;
* 4 ADC-Eingänge (10 Bit) [PA4-PA7 an Schraubklemmen]&lt;br /&gt;
* LCD-Anschluss (HD44780 komp. Controller nötig) [PD2-7,PB0,PB3 an EXT]&lt;br /&gt;
* [[ENC28J60]]&lt;br /&gt;
* [http://www.atmel.com/dyn/Products/Product_card.asp?part_id=2014 ATmega32] Mikrocontroller&lt;br /&gt;
&lt;br /&gt;
Maße (L×B×H): 108×76×22 mm.&lt;br /&gt;
&lt;br /&gt;
== Hardware ==&lt;br /&gt;
=== AVR-NET-IO ===&lt;br /&gt;
&lt;br /&gt;
Die Schaltung des AVR-NET-IO ist recht einfach:&lt;br /&gt;
* Ein ATmega32 Mikrocontroller enthält die gesamte Software&lt;br /&gt;
* Ein ENC28J60 Ethernet-Controller für das Senden und Empfangen von Ethernet Frames (MAC und PHY Ethernet Layer) ist über [[SPI]] mit dem ATmega32 verbunden&lt;br /&gt;
* Ein Ethernet RJ-45 MagJack TRJ 0011 BA NL von [http://www.trxcom.com/ Trxcom] mit eingebautem Übertrager und Anzeige-LEDs am ENC28J60.&lt;br /&gt;
* Ein MAX232 für die serielle Schnittstelle&lt;br /&gt;
* Zwei Spannungsregler, 5 V und 3,3 V&lt;br /&gt;
* &amp;quot;Hühnerfutter&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Fast alle I/O Pins des ATmega32 sind irgendwo auf Anschlüssen herausgeführt. Entweder auf dem SUB-D Stecker, dem EXT oder ISP Wannensteckern oder den blauen Anschlussklemmen. Eine Schutzbeschaltung gibt es nicht.&lt;br /&gt;
&lt;br /&gt;
Die blauen Anschlussklemmen haben eine Nut und eine Feder mit denen man&lt;br /&gt;
sie zusammenstecken kann, dadurch ist das Anlöten wesentlich leichter&lt;br /&gt;
und sie stehen auch sauber in der Reihe.&lt;br /&gt;
&lt;br /&gt;
=== Erweiterungsplatine ===&lt;br /&gt;
&lt;br /&gt;
Seit Januar 2010 gibt es auch eine Erweiterungsplatine &lt;br /&gt;
&lt;br /&gt;
[http://www.pollin.de/shop/dt/Nzg4OTgxOTk-/Bausaetze/Diverse/Bausatz_Add_on_fuer_AVR_NET_IO.html Add-on für AVR-NET-IO-Board Best.Nr. 810 112]&lt;br /&gt;
&lt;br /&gt;
Diese Platine erweitert das NET-IO um:&lt;br /&gt;
&lt;br /&gt;
* SD-Karten-Slot über SPI&lt;br /&gt;
* Display über PCF 8574&lt;br /&gt;
* Infrarot-Empfang&lt;br /&gt;
* [[RFM12]] Funkmodul (nicht im Lieferumfang enthalten)&lt;br /&gt;
&lt;br /&gt;
Eine Aufstellung bekannter Fehler findet sich weiter unten [[#Bekannte Fehler|Bekannte Fehler - Erweiterungplatine]] &lt;br /&gt;
&lt;br /&gt;
Erste Erfahrungsberichte im Forum http://www.mikrocontroller.net/topic/161354&lt;br /&gt;
&lt;br /&gt;
=== Hardware-Umbauten &amp;amp; -Verbesserungen ===&lt;br /&gt;
&lt;br /&gt;
* Kühlkörper auf dem 7805 - (Vorsicht: Der LM317T ist rückseitig spannungsführend. Den Kühlkörper also keinesfalls an beide Spannungsregler anschließen!)&lt;br /&gt;
* MAX232 nach anfänglicher Konfiguration nicht bestücken um Strom zu sparen oder um zwei weitere I/O-Pins zu gewinnen&lt;br /&gt;
* 10µF-Elkos für MAX232N (C14-C17) durch 1µF ersetzen. &amp;lt;s&amp;gt;Eine 10µF-Version für den MAX232 gibt es nicht&amp;lt;/s&amp;gt;. Die 10µF-Elkos können auch Ursache einer nicht funktionierenden RS232 sein.&lt;br /&gt;
** Laut Spezifikation sind auch mehr als 1µF erlaubt. Selbst Atmel verwendet beim STK500 10µF. Dies führt keinesfalls dazu, dass die RS232 nicht mehr funktioniert.&lt;br /&gt;
* Die IC-Fassungen aus &amp;quot;Pollins Resterampe&amp;quot; durch Fassungen mit gedrehten Kontakten ersetzen. &lt;br /&gt;
* &#039;&#039;Netz&#039;&#039; LED nicht bestücken oder größere Widerstände einlöten um Strom zu sparen (R3)&lt;br /&gt;
* Vorwiderstände der Ethernet-LEDs größer machen (z.&amp;amp;nbsp;B. verdoppeln) um Strom zu sparen (R6,R7)&lt;br /&gt;
* Linear-Spannungsregler ersetzen&lt;br /&gt;
* Kondensator an AREF-Pin des ATmega32 (ATmega32 Datenblatt) (100nF gegen Masse)&lt;br /&gt;
* Kondensator an den RESET-Pin des ATmega32 ([http://www.atmel.com/dyn/resources/prod_documents/doc2521.pdf Atmel Application Note AVR042: AVR Hardware Design Considerations]) Wenn man diese Quelle genauer liest, ist das aber eher unnötig. - Kondensator bei selbstbau-ISP empfehlenswert.&lt;br /&gt;
* Umbau auf 3,3 V:&lt;br /&gt;
** Ersatz der Spannungsregler durch einen einzigen 3,3 V Regler&lt;br /&gt;
** Anpassen (verkleinern) des LED-Vorwiderstands R3 für 3,3 Volt Betrieb&lt;br /&gt;
** Reduktion der Taktfrequenz (Austausch von Q2) auf den bei 3,3V erlaubten Bereich des ATmega32 ( ATmega32(L)  3.3V /8.0 Mhz Takt )&lt;br /&gt;
** Ersatz des MAX232 durch einen MAX3232&lt;br /&gt;
[[Bild:POWER.JPG|thumb|400px|5V Stromversorgung über USB Kabel, ohne 5 V Spannungsregler und Gleichrichterdioden, Vorsicht: kein Verpolungsschutz!  ]]&lt;br /&gt;
* ATmega32 vom ENC28J60 takten (OSC2)&lt;br /&gt;
* Betrieb mit Gleichspannung:&lt;br /&gt;
** Dioden D2 und D5 durch Drahtbrücken ersetzen, D1 und D4 nicht bestücken (komplette Entfernung des Brückengleichrichters, beinhaltet Verlust des Verpolungsschutzes)&lt;br /&gt;
** Diode D2 bestücken, D5 durch Drahtbrücke ersetzen, D1 und D4 nicht bestücken (Brückengleichrichter durch Verpolungsschutze ersetzen)&lt;br /&gt;
*** ??? Ist dies nicht kontraproduktiv? Bei mir wurde durch D2-Bestückung die Eingangsspannung von ca. 5,2 V am LM317T auf ca. 4,6 V gedrückt, so dass am ENC28J60 nur ca. 2,6 V ankamen (außerhalb der lt. Datenblatt &amp;quot;Operating voltage range of 3.14V to 3.45V&amp;quot;). Man müsste also ein geregeltes Netzteil mit ca. 5,5 V anschließen um 5 und 3,3 V zu erzielen. Dann lieber den Verpolungsschutz durch andere Maßnahmen sicherstellen.&lt;br /&gt;
** Beim Betrieb von USB beachten, dass USB-Spezifikation keinesfalls 5V garantiert, sondern Spannung bis runter 4.4V erlaubt und dann u.U. durch den LM317 nicht mehr genügend Spannung am ENC anliegt. Das äußert sich so, dass zwar der Atmega einwandfrei funktioniert, die Ethernet-Kommunikation aber nicht oder nur sehr sporadisch.&lt;br /&gt;
* Betrieb mit Steckernetzteil&lt;br /&gt;
** Wenn man ein energieeffizientes Stecker-Schaltnetzteil mit 5V, 1A direkt an J6 kontaktiert, kann man sich die o.g. Um- und Ausbauten sparen. Kein Spannungsregler wird mehr heiß, kein Kühlkörper wird benötigt, das Board arbeitet absolut stabil. &lt;br /&gt;
* Ersatz des ATmega32 durch einen ATmega644 oder ATmega1284p mit mehr FLASH-Speicher.&lt;br /&gt;
** Der ATmega644 und auch der ATMega1284p sind nicht mit der Pollin-Firmware kompatibel&lt;br /&gt;
* 100nF über alle drei IC Störunterdrückung zusätzlich bestücken&lt;br /&gt;
&lt;br /&gt;
== Inbetriebnahme der Originalsoftware ==&lt;br /&gt;
=== Einleitung ===&lt;br /&gt;
&lt;br /&gt;
Die bei Auslieferung (Stand September 2008) in den ATmega32 gebrannte Firmware stellt sich manchmal recht zickig an. Es scheint dann die Netzwerk-Schnittstelle, ggf. auch  die serielle Schnittstelle, nicht zu funktionieren. Falls es Probleme geben sollte, sollte man erst einmal ein Firmwareupdate versuchen. Dies geschieht über die serielle Schnittstelle mittels des Programmes NetServer (aktuelle Version 1.03, Februar 2010), die dem Bausatz beiliegt. &lt;br /&gt;
&lt;br /&gt;
Falls die serielle Schnittstelle ebenfalls nicht zugänglich ist, kann mit den im folgenden beschriebenen Schritten die Inbetriebnahme der Software möglich sein. Dazu benötigt man:&lt;br /&gt;
&lt;br /&gt;
* Einen Windows-PC mit Ethernet-Schnittstelle und RS232-Schnittstelle (ein Prolific RS232-USB Konverter funktioniert)&lt;br /&gt;
* Entweder&lt;br /&gt;
**zwei normale (&#039;&#039;straight through&#039;&#039;) Ethernet-Kabel und einen Ethernet Switch/Hub, oder&lt;br /&gt;
**ein gekreuztes(&#039;&#039;cross over&#039;&#039;) Ethernet-Kabel&lt;br /&gt;
* Einen AVR Programmer (Hardware und Software). Zum Beispiel einen [[AVR Dragon]] oder [[STK500]] mit [[AVR Studio]] oder das [[Pollin ATMEL Evaluations-Board]] und [[avrdude]].&lt;br /&gt;
* Die [http://www.pollin.de/shop/ds/MTQ5OTgxOTk-.html Pollin NetServer Software], Version 1.03 (oder neuer)&lt;br /&gt;
&lt;br /&gt;
=== Gelieferten ATmega32 richtig einstellen ===&lt;br /&gt;
[[image:fuse_bits_avr_studio.jpg|thumb|right|250px|Einstellungen der Fuse-Bits mittels AVR Studio 4]]&lt;br /&gt;
Die Fuses der gelieferten ATmega32s scheinen nicht immer mit den im Handbuch auf Seite 12 als erforderlich angegebenen Fuse-Einstellungen übereinzustimmen.&lt;br /&gt;
&lt;br /&gt;
Dies kann man mittels eines Programmers ändern. LFuse = 0xBF, HFuse = 0xD2. Das genaue Vorgehen hängt dabei vom verwendeten Programmer ab. Bei der Gelegenheit kann man ebenfalls eine Sicherheitskopie des ursprünglichen Flash-Inhalts und des EEPROMs anfertigen. Das EEPROM scheint die MAC-Adresse des Ethernet-Ports zu enthalten.&lt;br /&gt;
&lt;br /&gt;
Entgegen der Spezifikation im Handbuch von Pollin sollten die &#039;&#039;&#039;HFuses auf 0xC2&#039;&#039;&#039; gesetzt werden, d. h. CKOPT-Fuse programmiert (dies ist in der Software Version 1.03 bereits vollzogen). Das sorgt für einen stabilen Betrieb des AVR-Oszillators im &amp;quot;full rail-to-rail swing&amp;quot;-Mode bei 16 MHz. Atmel garantiert ansonsten nur stabilen Betrieb bis 8 MHz. Siehe ATmega32-Datenblatt, Kapitel 8.4, Crystal Oscillator.&lt;br /&gt;
{{Absatz}}&lt;br /&gt;
&lt;br /&gt;
==== Funktionsfähige Konfiguration - AVR-Prog ====&lt;br /&gt;
&lt;br /&gt;
[[Bild:Avrprog.png|thumb|right|250px]]&lt;br /&gt;
Benutzer von AVR-Prog können die nachfolgenden Einstellungen für die Lock- und Fuse-Bits verwenden. Hierbei handelt es sich um die ausgelesenen Einstellungen eines funktionsfähigen Controllers. Allerdings sollte, laut Handbuch des AVR-NET-IO-Boards, das Fuse-Bit EESAVE eigentlich gesetzt sein. &lt;br /&gt;
&lt;br /&gt;
Alternativ kann auch per avrdude die Einstellung getroffen werden:&lt;br /&gt;
 avrdude -c stk500v2 -pm32 -U lfuse:w:0xBF:m&lt;br /&gt;
und &lt;br /&gt;
 avrdude -c stk500v2 -pm32 -U hfuse:w:0xC2:m&lt;br /&gt;
&lt;br /&gt;
Anschließend muß noch der Bootloader und die Firmware aktualisiert werden (siehe Handbuch AVR-NET-IO-Board Seite 12 Punkt 3).&lt;br /&gt;
&lt;br /&gt;
=== PC Konfiguration ===&lt;br /&gt;
&lt;br /&gt;
==== PC normalerweise nicht im 192.168.0.0/24 Subnetz ====&lt;br /&gt;
&lt;br /&gt;
Betreibt man den PC nicht im 192.168.0.0/24 Subnetz, muss er wie folgt umkonfiguriert werden, oder die IP Adresse des Boards wird entsprechend angepasst. ( Siehe Handbuch Seite 14ff. Das ist meist sinnvoller und auch einfacher. ) &lt;br /&gt;
&lt;br /&gt;
Den PC vom normalen Netzwerk abstecken[1]. Zur Umkonfiguration dazu bei Windows XP in der Systemsteuerung &#039;&#039;Netzwerkverbindungen&#039;&#039; aufrufen und die lokale &#039;&#039;LAN-Verbindung&#039;&#039; markieren. Dann in der rechten Leiste &#039;&#039;Einstellungen dieser Verbindung ändern&#039;&#039; aufrufen. &lt;br /&gt;
&lt;br /&gt;
Es erscheint der Dialog &#039;&#039;Eigenschaften von &amp;lt;Verbindungsname&amp;gt;&#039;&#039;. In der Liste im Dialog zu &#039;&#039;Internetprotokoll (TCP/IP)&#039;&#039; gehen. Ein Doppelklick auf den Eintrag öffnet den &#039;&#039;Eigenschaften von Internetprotokoll (TCP/IP)&#039;&#039; Dialog.&lt;br /&gt;
&lt;br /&gt;
In diesem Dialog &#039;&#039;Folgende IP-Adresse verwenden:&#039;&#039; auswählen und zum Beispiel&lt;br /&gt;
&lt;br /&gt;
IP-Adresse: &#039;&#039;&#039;192.168.0.100&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
Subnetzmaske: &#039;&#039;&#039;255.255.255.0&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
Standardgateway: &#039;&#039;&#039;192.168.0.1&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
eingeben. &lt;br /&gt;
&lt;br /&gt;
Anmerkung von bitman:&lt;br /&gt;
[1] Dies ist spätestens ab Windows XP nicht mehr notwendig, wenn das Netz 192.168.0.0/24 noch frei ist. Dann kann man einfach den Client &#039;&#039;zusätzlich&#039;&#039; in diesem Netzwerk zusätzlich einbinden über Einstellungen/Netzwerkverbindungen/Lanverbindung/Eigenschaften/TCP-IP/Eigenschaften/Erweitert/IP-Adresse hinzufügen. Es werden dann eben mehrere IP-Adressen an den NIC gebunden.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Alle geöffneten Dialoge nacheinander mit OK schließen.&lt;br /&gt;
&lt;br /&gt;
Alternativ bietet sich das Umprogrammieren des Boards über die serielle Schnittstelle an. Die Werte für IP-Adresse, Netzmaske und Standard-Gateway werden mit den dokumentierten SETxx-Befehlen geändert, das Board neu gestartet und ans vorhandene Netzwerk gesteckt.&lt;br /&gt;
&lt;br /&gt;
Im EEPROM sind folgende Werte vorprogrammiert:&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
3EE - 3F3 MAC-ADRESSE&amp;lt;br&amp;gt;&lt;br /&gt;
3F4 - 3F7 GATEWAY&amp;lt;br&amp;gt;&lt;br /&gt;
3F8 - 3FB NETMASK&amp;lt;br&amp;gt;&lt;br /&gt;
3FC - 3FF IP-ADRESSE&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== PC bereits im 192.168.0.0/24 Subnetz ====&lt;br /&gt;
&lt;br /&gt;
In diesem Fall muss man prüfen, ob die IP-Adresse 192.168.0.90 bereits im Subnetz verwendet wird. Ist dies der Fall, muss das verwendete Gerät mit dieser IP vorübergehend aus dem Subnetz entfernt werden. Es sei denn, dabei handelt es sich um den PC. In diesem Fall muss er wie zuvor umkonfiguriert werden. Ansonsten kann der unverändert im Netz verbleiben.&lt;br /&gt;
&lt;br /&gt;
Dem AVR-NET-IO gibt man eine neue, zuvor unbenutzte Adresse (siehe unten). Dann kann das abgekoppelte Gerät wieder angeschlossen werden, beziehungsweise der PC zurückkonfiguriert werden.&lt;br /&gt;
&lt;br /&gt;
=== AVR-NET-IO anschließen ===&lt;br /&gt;
&lt;br /&gt;
Musste man den PC umkonfigurieren, so werden jetzt nur der PC und der AVR-NET-IO über Ethernet miteinander verbunden. Je nach Ethernet-Kabel benötigt man dazu einen Switch/Hub oder nicht.&lt;br /&gt;
&lt;br /&gt;
Musste man den PC nicht umkonfigurieren, so kann man den AVR-NET-IO wie einen normalen Rechner an das vorhandenen Netz anschließen.&lt;br /&gt;
&lt;br /&gt;
Zusätzlich schließt man die serielle Schnittstelle des AVR-NET-IO an den PC an.&lt;br /&gt;
&lt;br /&gt;
=== Firmware 1.03 einspielen ===&lt;br /&gt;
&lt;br /&gt;
Laut Handbuch sollte der AVR-NET-IO jetzt über Ethernet funktionieren. Ebenso sollte er über die serielle Schnittstelle und ein Terminalprogramm konfigurierbar sein. Beides ist offensichtlich im Auslieferungszustand selten der Fall.&lt;br /&gt;
&lt;br /&gt;
Auch wenn sich Pollins NetServer Software nicht mit dem AVR-NET-IO verbinden lässt, so ist sie jedoch in der Lage eine neue Firmware 1.03 einzuspielen. Das Vorgehen ist im Handbuch auf Seite 12 beschrieben. NetServer präsentiert dabei ein paar einfache Anweisungen denen man folgen sollte.&lt;br /&gt;
&lt;br /&gt;
Wenn sich nach dem scheinbar erfolgreichem Einspielen der Firmware, später nichts tut, so sollte die Firmware mit gesetztem &amp;quot;FailSafe&amp;quot; in der mitgelieferten NetServer-Software nochmals Eingespielt werden.&lt;br /&gt;
&lt;br /&gt;
=== Abschluss ===&lt;br /&gt;
&lt;br /&gt;
Jetzt sollte sich die NetServer Software mit dem AVR-NET-IO über Ethernet verbinden lassen. Dies macht es wiederum möglich, den AVR-NET-IO mit einer anderen IP-Adresse zu versehen. Will man den AVR-NET-IO in einem anderen Subnetz betreiben kann man dies jetzt einstellen.&lt;br /&gt;
&lt;br /&gt;
Nachdem man die IP-Adresse neu eingestellt hat, muss man den PC zurückkonfigurieren und kann dann sowohl den AVR-NET-IO und den PC zusammen betreiben.&lt;br /&gt;
&lt;br /&gt;
== Funktionsumfang der Originalsoftware ==&lt;br /&gt;
Die Originalsoftware ist sehr einfach gestrickt. Im AVR Net-IO läuft ein Programm, welches am Port 50290 eine Textschnittstelle bereit stellt. Diese Schnittstelle kann sowohl über die RS232 als auch über Ethernet angesprochen werden kann. Mit diesem Programm ist es möglich, alle Eingänge sowie alle Ausgänge anzusprechen, als auch die Konfiguration der Netzwerkeinstellungen zu verändern. Die Karte versteht dann folgende Befehle:&lt;br /&gt;
* SETPORT&lt;br /&gt;
Einen digitalen Ausgang auf 0 oder 1 schalten&lt;br /&gt;
* GETPORT&lt;br /&gt;
Den Status eines digital Ausgangs/Eingangs abfragen&lt;br /&gt;
* GETSTATUS&lt;br /&gt;
Den Status aller digital Ausgänge abfragen&lt;br /&gt;
* GETADC&lt;br /&gt;
Den Messwert eines analogen Eingangs ermitteln&lt;br /&gt;
* SETIP&lt;br /&gt;
Die IP-Adresse des Boards ändern&lt;br /&gt;
* GETIP&lt;br /&gt;
Die eingestellte IP-Adresse abfragen&lt;br /&gt;
* SETMASK&lt;br /&gt;
Die Netzwerkmaske verändern&lt;br /&gt;
* GETMASK&lt;br /&gt;
Die eingestelle Netzwerkmaske abfragen&lt;br /&gt;
* SETGW&lt;br /&gt;
Das Netzwerk-Gateway verändern &lt;br /&gt;
* GETGW&lt;br /&gt;
Das eingestellte Netzwerk-Gateway abfragen&lt;br /&gt;
* INITLCD&lt;br /&gt;
Ein angeschlossenes LCD initialisieren&lt;br /&gt;
* WRITELCD&lt;br /&gt;
Einen Text am LCD ausgeben&lt;br /&gt;
* CLEARLCD&lt;br /&gt;
Ein angeschlossenes LCD löschen&lt;br /&gt;
* VERSION&lt;br /&gt;
Die Versionsnummer des Programms ausgeben&lt;br /&gt;
&lt;br /&gt;
Dazu gibt es ein auf Java basierendes Programm, welches alternativ zu einem Terminalprogramm benutzt werden kann. Es zeigt den Status der Portpins an und diese lassen sich auch mit der Maus verändern. Die Messwerte der 4 analogen Eingänge werden ständig angezeigt, wobei es möglich ist, durch einstellbare Faktoren die internen Werte gleich in sinnvolle Einheiten umrechnen zu lassen. Diese Messwerte können auch in eine Datei geloggt werden.&lt;br /&gt;
Neben der Möglichkeit, alle Kommandos auch händisch einzugeben, wird das Java-Programm auch benötigt, um einen Firmware-Update der Net-IO Platine durchzuführen.&lt;br /&gt;
Alles in allem ist dieses Frontend aber mehr als Testumgebung anzusehen, um damit die Hardware in Betrieb zu nehmen. Für einen sinnvollen Dauereinsatz ist das Programm deutlich zu einfach und unflexibel gestrickt. Auch kann die grafische Aufbereitung der Anzeige- und Kontrollelemente nicht befriedigen.&lt;br /&gt;
&lt;br /&gt;
== Bekannte Fehler ==&lt;br /&gt;
=== AVR-NET-IO ===&lt;br /&gt;
&lt;br /&gt;
Siehe auch [[#Hardware-Umbauten_.26_-Verbesserungen|Hardware-Umbauten und Verbesserungen]]&amp;lt;br&amp;gt;&lt;br /&gt;
Käufer berichten von fehlenden Bauteilen im Bausatz (Wannenstecker, Widerstände, Kondensatoren, Induktivitäten). Für Reklamationen: [https://www.pollin.de/shop/kontakt_service/reklamation.html]&lt;br /&gt;
&lt;br /&gt;
* Die Stückliste auf Seite 4 in den Anleitung mit den Versionsangaben&lt;br /&gt;
** &#039;&#039;Stand 20.08.2008, kloiber, #1100, wpe&#039;&#039; (gedruckt im Bausatz)&lt;br /&gt;
** &#039;&#039;Stand 20.08.2008, cd, #all, wpe&#039;&#039; (auf der CD)&lt;br /&gt;
:ist falsch. Pollin legt dem Bausatz irgendwann ab September 2008 einen gedruckten Korrekturzettel bei. Die Online-Version der Anleitung ist korrigiert.&lt;br /&gt;
* Im Schaltplan auf Seite 7 in den Anleitungen mit den Versionen&lt;br /&gt;
** &#039;&#039;Stand 20.08.2008, kloiber, #1100, wpe&#039;&#039; (gedruckt im Bausatz)&lt;br /&gt;
** &#039;&#039;Stand 20.08.2008, cd, #all, wpe&#039;&#039; (auf der CD)&lt;br /&gt;
** &#039;&#039;Stand 03.09.2008, online, #all, wpe&#039;&#039; (Online)&lt;br /&gt;
:ist eine 25-polige SUB-D Buchse gezeichnet. Geliefert wird und in der Stückliste verzeichnet ist ein Stecker.&lt;br /&gt;
&lt;br /&gt;
* Die September 2008 ausgelieferte Firmware im ATmega32  funktioniert bei vielen nicht und muss erst upgedatet werden (siehe [[#Inbetriebnahme der Originalsoftware|Inbetriebnahme der Originalsoftware]])&lt;br /&gt;
&lt;br /&gt;
* Im Flash der gelieferten AVR ist anders als beschrieben nur der Bootloader enthalten, die eigentliche Firmware muss erst mit Hilfe der Updatefunktion geladen werden. Wenn zusätzlich auch die Fuses falsch gebrannt sind, dann funktioniert das Update nicht, auch wenn das PC Programm was anderes behauptet.&lt;br /&gt;
&lt;br /&gt;
* Die Fuse-Einstellungen des ausgelieferten ATmega32 entspricht nicht der Anleitung (siehe [[#Inbetriebnahme der Originalsoftware|Inbetriebnahme der Originalsoftware]])&lt;br /&gt;
&lt;br /&gt;
* Bausatz, gekauft am 27.10.08, Anleitungsversion 19.09.08, ohne Probleme oder erkennbare Fehler zusammengebaut und in Betrieb genommen.&lt;br /&gt;
&lt;br /&gt;
* Bausatz gekauft 29.09.2008, Pinbelegung des 25 poligen D-Sub &amp;quot;Anschlusses&amp;quot; stimmt nicht mit der Anleitung überein. Der Aufdruck auf der Platine ist falsch. Pin1 &amp;lt;-&amp;gt; Pin13, Pin2 &amp;lt;-&amp;gt; Pin12 usw. Setzt man den D-Sub Stecker ein, so sind dessen Pinnummern korrekt. Bei einem Bausatz gekauft 05/2013 ist dies ebenfalls noch der Fall.&lt;br /&gt;
&lt;br /&gt;
* 3 Bausätze Anf. Oktober 2008 gekauft, bei einem waren 2 LM317 dabei, dafür fehlte der 7805 - aus der Bastelkiste ersetzt. Alle haben jedoch auf Anhieb funktioniert&lt;br /&gt;
&lt;br /&gt;
* Bausatz gekauft Ende Januar 2009. Die Lock-Bits (u.a. für PonyProg2000) werden falsch beschrieben. Die in Klammern aufgeführten Werte stimmen bei einem Bit nicht. Die Texte &amp;quot;Programmiert/Unprogrammiert&amp;quot; hingegen schon. Bei den Bauteilen gab es 4 Kondensatoren mit der Aufschrift &amp;quot;220&amp;quot;, ich habe diese durch welche mit 22p ersetzt, da ich nicht sicher war ob wirklich 22p geliefert wurden. Dafür wurden statt einem zwei 7805 und statt einem mindestens vier LM317 mitgeliefert.&lt;br /&gt;
&lt;br /&gt;
* Bausatz geliefert 22.4.2009. Alles vollständig, zusammengebaut, läuft. Software-Version 1.03. Für den oben schon genannten Steckverbinder wurde eine Buchse geliefert. Allerdings stimmen die PIN-Nummern im Schaltplan nicht mit den PIN-Nummern auf der Buchse überein (sie sind gespiegelt), daher liefen die Test-LEDs zunächst nicht.&lt;br /&gt;
&lt;br /&gt;
* Bausatz geliefert 11.7.2009. Spannungsregler LM317T fehlt, grüne statt roter LED. Ein Kondensator 22pF zu viel. LM317T wurde auf Anfrage kostenlos nachgeliefert (27.7.). Inbetriebnahme problemlos.&lt;br /&gt;
&lt;br /&gt;
* Bausatz geliefert 24.7.2009. Ein Quarz 16MHz zu viel, ebenfalls grüne statt rote LED.&lt;br /&gt;
&lt;br /&gt;
* Bausatz geliefert 20.08.2009. Ein Kondensator 22pF zuviel und grüne statt rote LED.&lt;br /&gt;
&lt;br /&gt;
* Bausatz Juli &#039;09 gekauft, grüne statt rote LED&lt;br /&gt;
&lt;br /&gt;
* Bausatz 25.09.09 geliefert, grüne Betriebs-LED, ein ELKO zuviel, Fehler 1µF am MAX232 statt 100nF behoben, richtiger C wird mitgeliefert, Aufbau komplett nach Pollin Anleitung durchgeführt, auf Anhieb fehlerfrei!&lt;br /&gt;
&lt;br /&gt;
* Bausatz 17.10.09 geliefert, grüne Betriebs-LED, zwei 100nF Kondensatoren zu wenig. Aufbau und Inbetriebnahme problemlos.&lt;br /&gt;
&lt;br /&gt;
* Bausatz 21.10.09 gekauft, grüne Betriebs-LED. Aufbau problemlos, RS232 läuft nicht. LAN läuft&lt;br /&gt;
&lt;br /&gt;
* Bausatz Nov. 09 gekauft, grüne LED, alles o.k.&lt;br /&gt;
&lt;br /&gt;
* Bausatz Nov. 09 gekauft, grüne LED, ENC28J60, MAX232 und ATmega32 fehlen, Nachlieferung nach einer Woche&lt;br /&gt;
&lt;br /&gt;
* Bausatz Nov. 09 gekauft,Bauteile komplett.Verbindungsaufbau Seriell klappt erst nach mehreren Versuchen.Problem gelöst:Spannung an MAX und Mega zu niedrig&lt;br /&gt;
&lt;br /&gt;
* Bausatz Dez. 09 gekauft, grüne LED, 100µF Kondensator fehlt, alles o.k.&lt;br /&gt;
&lt;br /&gt;
* Bausatz August 09 gekauft, alle teile da nach Einstellen der fusebits lief alles perfekt&lt;br /&gt;
&lt;br /&gt;
* Bausatz Okt. 09 gekauft, ein 100nF Kondensator und 25MHz Quarz fehlten ... hab beim lokalen Elektronikhändler keinen 25Mhz Grundton Quarz sondern nur im 3. Oberton bekommen aber mit R2.2k parallel zum Quarz schwingt er in der Schaltung schön bei 25Mhz. Mit 1µF am MAX232 funktioniert jetzt auch die RS232.&lt;br /&gt;
&lt;br /&gt;
* 2x Bausatz Feb. 10 gekauft, bei beiden fehlten 7805, L1+L2 je 100µH sowie 4x falscher Wert Kondensator an Max232 vorhanden. Fehlende Bauteile nachgelötet und Funktion getestet. Hat alles einwandfrei funktioniert!!!&lt;br /&gt;
&lt;br /&gt;
* Bausatz März. 10 gekauft, RS232 Printbuchse fehlt, dafür 1x 10pol Wannenstecker zuviel. Grüne LED statt Rot. Funktioniert ansonsten einwandfrei.&lt;br /&gt;
&lt;br /&gt;
* Bausatz Jan. 10 gekauft, gelbe LED statt rot, C14...C17: 10µF, weder seriell noch via Ethernet Konnektivität. Nach Austausch von C14-C17 gegen 1µF, wenigstens serielle Kontaktaufnahme möglich, kein Ethernet auch nach Flash von 1.03 mit NetServer.&lt;br /&gt;
&lt;br /&gt;
* Bausatz Feb. 10 gekauft, Spannungsregler LM317T fehlte&lt;br /&gt;
&lt;br /&gt;
* Bausatz März 10 gekauft, gelbe statt rote LED geliefert, aber Aufbau und inbetriebnahme lt. Handbuch ohne Probleme&lt;br /&gt;
&lt;br /&gt;
* Bausatz März 10 gekauft und gelbe statt rote LED geliefert, funzt wunderbar gemäß Anleitung&lt;br /&gt;
&lt;br /&gt;
* Fertig gelötete Platine gekauft. µC war falsch im Sockel.&lt;br /&gt;
&lt;br /&gt;
* Bausatz April 10 gekauft und gelbe statt rote LED geliefert, ADM232LJN statt MAX232 - Funktion erst nach Ersetzung des ADM durch nen MAX&lt;br /&gt;
&lt;br /&gt;
* Bausatz April 10 gekauft und gelbe statt rote LED geliefert, ADM232LJN statt MAX232 - funktionierte sofort auch mit dem ADM232LJN.&lt;br /&gt;
&lt;br /&gt;
* Bausatz April 10 gekauft wurde mit grüner statt roter LED Ausgeliefert&lt;br /&gt;
&lt;br /&gt;
* Bausatz Juni 10 gekauft: wurde mit grüner statt roter Netz-LED ausgeliefert, 2x 22pF Kerko zuviel&lt;br /&gt;
&lt;br /&gt;
* Bausatz August 10 gekauft: komplett und sofort funktioniert&lt;br /&gt;
&lt;br /&gt;
* Bausatz Juli 10 gekauft: 2 Quarze mit 16 MHz geliefert, statt 1x 16MHz und   1x25MHz.&lt;br /&gt;
&lt;br /&gt;
* Bausatz September 10 gekauft: hat sofort funktioniert. 1x 3,3k und 1x 10k Widerstand zuviel. Statt 100nF Kondensatoren wurden 1µF geliefert -&amp;gt; Platzprobleme auf der Platine durch grössere Bauform. LED grün.&lt;br /&gt;
&lt;br /&gt;
* Bausatz Oktober  6 gekauft: alles funktioniert. LED grün statt rot.&lt;br /&gt;
&lt;br /&gt;
* Fertigmodul Oktober 10 gekauft: Auf Anhieb alles funktioniert!&lt;br /&gt;
&lt;br /&gt;
* Bausatz Oktober 10 gekauft: komplett und sofort funktioniert&lt;br /&gt;
&lt;br /&gt;
* Bausatz November 10 gekauft: komplett und sofort funktioniert (sogar mit der neusten Pollin Firmware 1.03 schon drauf) LED grün statt rot.&lt;br /&gt;
&lt;br /&gt;
* Bausatz November 10 gekauft. Nach Bezug neuer Feinst-Lötspitzen konnte ich ihn dann auch zusammenlöten. Es hat sofort alles funktioniert, obwohl ich nur 12V bzw. 9V Gleichspannung zur Verfügung hatte, und nicht sicher war, wieviel die Komponenten wirklich benötigen. Der Regler wird auch bei 9V Gleichspannungsversorgung noch sehr warm. Da muss auf jeden Fall ein Kühlkörper dran! Ich habe auch eine grüne LED bekommen, ist mir aber wurscht :-)&lt;br /&gt;
&lt;br /&gt;
* Bausatz Dezember 10 gekauft: komplett und funktionierte sofort. Firmware 1.03, grüne LED (Ein Quarz und ein IC-Sockel zu viel)&lt;br /&gt;
&lt;br /&gt;
* Bausatz Januar 2011 gekauft: nur genau die richtige Anzahl Teile dabei, Firmware 1.03, grüne LED, ging auf Anhieb&lt;br /&gt;
&lt;br /&gt;
* 2x Bausatz Januar 2011 gekauft: beide grüne LED, und 1x doppelter Satz Jumper/Stiftleiste, 22PF und Anschlussklemmen. Rest vollständig und beide haben sofort nach zusammenbau funktioniert.&lt;br /&gt;
&lt;br /&gt;
* Februar 2011: AVR-NET-IO: die Diode D5 fehlt, 10 µF gegen 1 µF für MAX232 getauscht, Flash im ATmega32 war programmiert, passende IP-Adr über serielle Schnittstelle eingestellt; ADD-ON: für R1 war 22Ω statt 0,2Ω beigelegt, durch richtigen ersetzt, Beschreibung der LED Bestückung mangelhaft / oe1smc&lt;br /&gt;
&lt;br /&gt;
* Februar 2011: AVR-NET-IO: 1 Diode zuviel, 2 Spulen fehlen, LED grün. Die fehlenden Spulen wurden durch welche aus der Bastelkiste ersetzt - funktioniert. Der 7805 bekam einen kleinen Kühlkörper spendiert.&lt;br /&gt;
&lt;br /&gt;
* Februar 2011: AVR-NET-IO: 2x 10k Widerstände fehlen. Dafür eine Diode zu viel.&lt;br /&gt;
&lt;br /&gt;
* Ende Februar 2011: Zwei Bausaetze an jeweils zwei Adressen, alles in Ordnung.&lt;br /&gt;
&lt;br /&gt;
* Ende März 2011: 2x 25 Mhz Quarz statt 1x16 u. 1x25 Mhz. LED fehlt. Bausatz funktioniert nach Tausch des Quarz den mir mein Freund oe9rsv aus seinem Fundus spendiert hat. Danke auch für die Hilfe beim Fehler suchen.&lt;br /&gt;
&lt;br /&gt;
* Mitte 2010 gekauft: 1x 100nF fehlt&lt;br /&gt;
&lt;br /&gt;
* Mitte Juni 2011: Beide Quarze fehlen und beide Spannungsregler fehlen, Pollin wollte, dass ich das ganze Paket zurückschicke für einen Austausch. Ein 51Ω zu viel. 16Mhz im Handel und 25Mhz vom alten Mobo ausgelötet. Läuft wunderbar.&lt;br /&gt;
&lt;br /&gt;
* Anfang Juni 2011: Beide Quarze fehlen und beide Spannungsregler fehlen, nach kurzer Mail an Pollin (leider ohne Antwort) wurden diese nach ca. 1 Woche in einem Brief nachgeliefert.&lt;br /&gt;
&lt;br /&gt;
* August 2011: alles 1a...&lt;br /&gt;
&lt;br /&gt;
* August 2011: Platine fehlte -&amp;gt; in Nachlieferung&lt;br /&gt;
&lt;br /&gt;
* 30 August 2011: alles 1a...&lt;br /&gt;
&lt;br /&gt;
* 06 Sep. 2011: alles 1a...&lt;br /&gt;
&lt;br /&gt;
* August 2011: 6 Stück bestellt, bei einem haben die 100nF Kondensatoren gefehlt, bei einem zwei LM317 statt 7805 und LM317. Angerufen, 3 Tage später Nachlieferung erhalten.&lt;br /&gt;
&lt;br /&gt;
* Nov. 2011: &#039;&#039;&#039;Net_IO&#039;&#039;&#039; vollständig. Einspielen der Firmware 1.03 war erforderlich. Bei &#039;&#039;&#039;Add-On&#039;&#039;&#039; immer noch falscher Q1 BC548 (NPN) in Stückliste und Lieferung. BC327-40 oder BC328-40 (PNP) nachgefordert. R11 und R24 mitgeliefert, entsprechend Beschreibung V1.1 von Pollin&#039;s Download. Beiliegende Beschreibung war älter, ohne diese Widerstände.&lt;br /&gt;
&lt;br /&gt;
* Ende Nov.2011, alle Teile dabei, Firmware war drauf, sofort funktioniert.&lt;br /&gt;
&lt;br /&gt;
* Anfang Dez.2011, komplett bestückte Platine gekauft. Auf 7805 Kühlkörper gebaut, da er nach 1 Minute schon ausgestiegen ist (LED hat das Pumpen angefangen). Firmware 1.03 musste noch aufgespielt werden danach funktioniert alles einwandfrei. In Betrieb mit 10V DC&lt;br /&gt;
&lt;br /&gt;
* Ende Dez.2011 2xNET-IO und 2xADD bestellt, 4 verschieden volle Kisten bekommen... WSL16 ist mit Verriegelung, geht nicht aufs Board, Jumper fehlen, Spannungsregler doppelt, Poti Löcher zu klein, lsb3 fehlt, SD-Slot hab ich jetzt 3, 100nF hab ich jetzt 4 übrig ... also immer noch lustig. HW-Stand immer noch 1.0 ( gab es überhaupt eine 1.1?)&lt;br /&gt;
&lt;br /&gt;
* Mitte Jan. 2012, 10pol. beide Wannenstecker nicht dabei, Firmware war drauf, sofort funktioniert. 1 LED zuviel. Unproblematische Nachlieferung bei Reklamation (wegen der beiden Wannenstecker kam ein PAKET!).&lt;br /&gt;
&lt;br /&gt;
* Ende Feb. 2012, Um die PHP-Scripte über öffentlichen Webserver zu betreiben muss mit SETGW die Gateway-Adresse des lokalen Routers eingetragen werden. Bei der NAT im Router sollte z.B. Port 8080 auf den internen Port 50290 umgeleitet werden, da manche Provider diesen Port für die Socket-Kommunikation nicht zulassen.&lt;br /&gt;
&lt;br /&gt;
* Juli 2012, Bausatz vollständig, Nach Aufbau sofort den 7805 mit einem kleinen Kühlkörper versehen, da er sonst thermisch überlastet wird! hat weder auf LAN noch RS232 reagiert, musste erst Update einspielen (Download Pollin), danach funktionierte alles einwandfrei!&lt;br /&gt;
&lt;br /&gt;
* Januar 2013, Bausatz vollständig, 7805 mit Kühlkörper versehen, nach Aufbau ohne Probleme funktioniert&lt;br /&gt;
&lt;br /&gt;
* Februar 2013, Bausatz komplett, Aufbau ohne Probleme, 7805 nur leicht warm, LAN funktioniert, RS232 noch ohne Funktion.&lt;br /&gt;
&lt;br /&gt;
* Oktober 2013, Bausatz komplett laut Stückliste, problemloser Aufbau, 7805 leicht warm am 10V DC. RS232 und LAN funktionierten auf Anhieb.&lt;br /&gt;
&lt;br /&gt;
* Januar 2014, Bausatz komplett, Aufbau ohne Probleme, Betrieb mit 9V DC, LAN funktioniert auf Anhieb, RS232 noch nicht getestet.&lt;br /&gt;
&lt;br /&gt;
* März 2014, Komplettgerät, von ca. 100 Versuchen gerade mal 2 erfolgreiche Zugänge. Weder LAN noch RS232 mit Putty funktionierten.&lt;br /&gt;
&lt;br /&gt;
* Dezember Bausatz komplett, Aufbau ohne Probleme und mit zusätzlichen Kondensatoren gesichert, Betrieb mit 9V DC, LAN funktioniert auf Anhieb, RS232  getestet.&lt;br /&gt;
&lt;br /&gt;
=== Erweiterungsplatine ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Die nachfolgend genannten Änderungen sind in der Bauanleitung V1.1 mit Stand 07.12.2011 (Wichtig! Es gibt mehr als eine V1.1 ...) bereits berücksichtigt, R3 wird allerdings mit 3,6kΩ angegeben.&lt;br /&gt;
&lt;br /&gt;
Um bei einem Neuaufbau parallele Widerstände zu vermeiden, sollten folgende Änderungen auf dem Addon-Board gemacht werden:&lt;br /&gt;
*R2 1,5kΩ ersetzen mit 2kΩ&lt;br /&gt;
*R3 1,8K ersetzen mit 3,3kΩ&lt;br /&gt;
*R19 470kΩ ersetzen zu 470Ω&lt;br /&gt;
*Q1 BC548 ersetzen durch BC327 oder BC328 (Hauptsache PNP! und mehr als 100mA)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;ACHTUNG&#039;&#039;&#039; beim Anschluß eines LC-Displays an J5 (über I&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;C, PCF 8574): Vcc/5V liegt an Pin 1, GND an Pin 2 von J5. Es gibt etliche Displays mit abweichender Belegung Pin 1 GND und Pin 2 Vcc!&lt;br /&gt;
&lt;br /&gt;
Auch beim Add-On gibt es fehlende oder falsche Bauteile im Bausatz und Fehler im Schaltplan und auf der Platine:&lt;br /&gt;
&lt;br /&gt;
*Stand Feb. 2011: R2 wird mit 2,2kΩ und R3 wird mit 3,6kΩ ausgeliefert. Somit werden die 3,3 V richtig erzeugt. R19 hat 470Ω. Der ISP-Anschluß ist nicht vollständig durchgeschleift, es besteht keine Verbindung der RESET-Leitung zwischen ISP und ISP1 (Abhilfe: Drahtbrücke einlöten, [http://www.mikrocontroller.net/topic/161354#1600385 Quelle]). &lt;br /&gt;
&lt;br /&gt;
*Stand Nov. 2011: bei mir ist die RESET-Leitung korrekt zw. ISP und ISP1 verbunden. Es gibt jetzt auch einen R24 (470Ohm) und R11 (1KOhm), der in der bei mir mitgelieferten Bauanleitung fehlt, in der zum Download (V1.1) angebotenen  aber drin steht. Es wird immer noch der falsche Q1 BC548C (NPN) mitgeliefert. Das Schaltsymbol für einen PNP ist richtig im Schaltplan gezeichnet.&lt;br /&gt;
&lt;br /&gt;
*Stand Dez. 2011: R24 (470Ω) kann mit 0Ω ersetzt und R11 (1kΩ) völlig weggelassen werden. Diese Widerstände bilden einen (eigentlich überflüssigen) Spannungsteiler in der MISO Leitung. Der Spannungsteiler hat allerdings auch eine Schutzfunktion, falls weitere Slaves am SPI-Bus hängen, die 5V-Pegel nutzen, z. B. ISP-Programmierer. (siehe [http://son.ffdf-clan.de/include.php?path=forumsthread&amp;amp;threadid=1167&amp;amp;postid=9203 1284p: Board, ich oder beide verwirrt?])&lt;br /&gt;
&lt;br /&gt;
*Sept&#039;12: Bausatz mit Stecker anstelle einer Buchse ausgeliefert, 5mm anstelle von 3mm LED&#039;s dafür aber 3 Poti zuviel.&lt;br /&gt;
&lt;br /&gt;
*Sept&#039;12: Ebenfalls Bausatz mit Sub-D-Stecker statt Buchse ausgeliefert, 5mm anstelle von 3mm LED&#039;s und 3 Potis zuviel.&lt;br /&gt;
&lt;br /&gt;
*Stand März 2013: Die Belegung der 25 pol. Sub-D-Buchse im Schaltplan der Anleitung V1.1 (und früher) ist falsch dargestellt. SCL und SDA des I&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;C-Busses liegen wie beim AVR-NET-IO Board auf Pin 2 bzw. 3 und nicht auf Pin 11 bzw. 12 der Buchse. Ein 1:1 verdrahtetes Kabel funktioniert.&lt;br /&gt;
&lt;br /&gt;
== Andere Software für den Client-PC ==&lt;br /&gt;
=== NetIOLib ===&lt;br /&gt;
&lt;br /&gt;
In C# geschriebene Bibliothek zur Ansteuerung der Platine im Orginalzustand. Inkl. Beispielsoftware und Quellcode (GNU GPL) &lt;br /&gt;
&lt;br /&gt;
Links gehen nicht:&lt;br /&gt;
DLL: [http://www.tware.org/downloads/NetIOLib_dll.zip Download-Link]&lt;br /&gt;
Source: [http://www.tware.org/downloads/NetIOLib_src.zip Download-Link]&lt;br /&gt;
&lt;br /&gt;
=== E2000-NET-IO-Multi-Control ===&lt;br /&gt;
Mit dem E2000-NET-IO-Multi-Control ist es möglich, die von dem E2000-NET-IO-Designer erstellten Projekte zu öffnen und die AVR-NET-IO&#039;s zu steuern. &lt;br /&gt;
&lt;br /&gt;
Die Anwendung liegt dem [http://www.mikrocontroller.net/articles/AVR_Net-IO_Bausatz_von_Pollin#E2000-NET-IO-Designer_.28Windows.5BXP.2F7.5D_.2F_Android.29 E2000-NET-IO-Designer] bei.&lt;br /&gt;
&lt;br /&gt;
=== ControlIO ===&lt;br /&gt;
Einfache Bibliothek zur Ansteuerung mit Originalfirmware.&lt;br /&gt;
http://www.mikrocontroller.net/topic/149695&lt;br /&gt;
&lt;br /&gt;
=== JAVA Lib ===&lt;br /&gt;
Einfache Java-Bibliothek zur Ansteuerung mit Originalfirmware.&lt;br /&gt;
http://son.ffdf-clan.de/?path=forumsthread&amp;amp;threadid=611&lt;br /&gt;
&lt;br /&gt;
=== PHP ===&lt;br /&gt;
PHP Klasse zur Ansteuerung mit der Originalfirmware. (Opensource Lizenz)&lt;br /&gt;
http://blog.coldtobi.de/1_coldtobis_blog/archive/298_pollin_net-io_php_library.html&lt;br /&gt;
&lt;br /&gt;
PHP Funktionen zum Ansteuern der Originalfirmware. (Free for All Lizenz)&lt;br /&gt;
http://defcon-cc.dyndns.org/wiki/index.php/Pollin_AVR-NetIO_PHP_Wrapper&lt;br /&gt;
&lt;br /&gt;
== Clients für Smartphones ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== AVR NET IO Control (Windows Phone 7.5,7.8,8.0) ===&lt;br /&gt;
&lt;br /&gt;
App zur steuerung des AVR NET IO. (Kostet $0,99)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;App im Market: [http://www.windowsphone.com/de-de/store/app/avr-net-io-controll/030d107f-9a27-4a62-ac8f-cb74e79c0500 AVR NET IO Control]&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== App NetIO (Windows Mobile 6.5) ===&lt;br /&gt;
Frei verfügbare App für Windows Mobile zur Ansteuerung mit der Orginalsoftware. Das HTC HD2 wird damit zur Fernsteuerung für das AVR Net-IO Board.&lt;br /&gt;
http://www.heesch.net/netio.aspx&lt;br /&gt;
&lt;br /&gt;
=== NET-IO Control (Android) ===&lt;br /&gt;
Eine Application für das Android Betriebssystem zur Steuerung des AVR Net-IO Boards. Es ist möglich, alle Ausgänge zu steuern und alle Eingänge anzuzeigen. Die Analogen Eingänge können mit einem Berechnungsfaktor versehen werden. &#039;&#039;Geplant ist noch ein Offsetwert.&#039;&#039; Außerdem kann jedem analogen Wert eine Einheit zugeordnet werden. Die Ausgänge können in der neusten Version in einen Tastermodus gesetzt werden.&lt;br /&gt;
&lt;br /&gt;
[[Datei:NET-IO-Control.png|200px]] [[Datei:NET-IO-Control2.png|200px]] [[Datei:NET-IO-Control3.png|200px]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Trial-Version: [https://play.google.com/store/apps/details?id=de.android.AVR.NETIOControlTRAIL Google-Play]&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
(In dieser Probe Version können nur 1 Output und 2 Inputs gesteuert werden)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Vollversion: [https://play.google.com/store/apps/details?id=de.android.AVR.NETIOControl Google-Play]&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
(Kostet im Google-Play 3,00 €)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Weitere Informationen sind auf der Entwickler-Seite zu finden:  [http://elektronik2000.de/ Elektronik2000.de]&lt;br /&gt;
&lt;br /&gt;
=== E2000-NET-IO-Designer (Windows[XP/7] / Android) ===&lt;br /&gt;
[[Datei:E2000-NET-IO-Designer.png|400px|right]]&lt;br /&gt;
Mit dem E2000-NET-IO-Designer ist es möglich, eine grafische Oberfläche für die NET-IOs von Pollin zu erstellen. Dafür werden Knöpfe, Texte und Anzeigebilder zur Verfügung gestellt. Jedes dieser Element kann &amp;quot;Aufgaben&amp;quot; übernehmen um die NET-IOs zu steuern oder einen Status des NET-IO anzuzeigen. Weitere Icons können von dem Benutzer selbst in den entsprechenden Ordner gelegt werden und in die Oberfläche eingebunden werden. Es können mehrere Seiten designt werden die durch einen selbst positionierten Knopf erreichbar sind. Die Android Application arbeitet somit im Fullscreen-Modus. Des weiteren ist es möglich, mehrere NET-IO&#039;s in einem Projekt zu benutzen. Nach dem erstellen der grafischen Oberfläche mit dem E2000-NET-IO-Designer, kann mit der Android APP das Projekt einfach gedownloaded werden. Dafür baut die APP eine Verbindung zum E2000-NET-IO-Designer auf und läd alle benötigten Dateien herunter (Achtung: Firewall-Einstellungen beachten). Die designten Oberflächen können außerdem noch mit der E2000-NET-IO-Multi-Control.exe auf dem Computer ausgeführt werden. Dadurch ist es Möglich, seine NET-IOs vom PC aus zu steuern über eine selbst designte Oberfläche. &lt;br /&gt;
&lt;br /&gt;
Zum Ausführen des E2000-NET-IO-Designer muss .NET Framework 4.0 installiert sein und es muss eine Internetverbindung exisitieren.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Features:&#039;&#039;&#039;&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Grafische Oberfläche am PC erstellen&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Verwendung von eigenen Button- und Hintergrundbildern&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Designbare Anzeige von Digital- und Analogwerten&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Steuern von mehreren AVR-NET-IO Boards&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Unterstützung der E2000-NET-IO Firmware (mehere Boards gleichzeitig)&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Designte Steuerungen können auf dem PC oder dem Handy ausgeführt werden (Android)&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Schnelle Verbindung&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Einfache übertragung auf das Handy durch Projekt Download&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[http://www.elektronik2000.de/downloads.php?id=44 Download E2000-NET-IO-Designer]&lt;br /&gt;
&lt;br /&gt;
[http://www.elektronik2000.de/hilfe/E2000Netdesigneruebersicht.html Online Hilfe]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Weitere Informationen sind auf der Entwickler-Seite zu finden:  [http://elektronik2000.de/ Elektronik2000.de]&lt;br /&gt;
&lt;br /&gt;
=== NetIO ( iPhone &amp;amp; Android ) ===&lt;br /&gt;
&amp;lt;div style=&amp;quot;float: left; margin-right: 20px&amp;quot;&amp;gt;[[Datei:Netio_logo.png|70px]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Schöne universelle Fernbedienung für das Board (iOS / Android). Konfigurierbar über einen Browserbasierten Editor. &amp;lt;br&amp;gt;&lt;br /&gt;
Unterstützt TCP socket Verbindungen, kann http request absetzen und kann auch Webseiten einbinden (z.B. IP-Kameras). Kann mehrere &lt;br /&gt;
Boards gleichzeitig steuern! Einfach super schnell ins Projekt eingebaut... Es gibt Buttons (die auch als Taster konfiguriert werden können), Slider, Switches und einfache Labels. Dinge können geschaltet oder Daten ausgelesen und mit regex dargstellt werden.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&#039;float: right&#039;&amp;gt;&lt;br /&gt;
[[Datei:Netio_TV.png|190px]]&lt;br /&gt;
[[Datei:Netio_iphone5.png|190px]]&lt;br /&gt;
[[Datei:NetIO_appflow.jpg|190px]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
AppStore Link: http://itunes.apple.com/app/netio/id464924297?mt=8 &amp;lt;br/&amp;gt;&lt;br /&gt;
Google Play Link: https://play.google.com/store/apps/details?id=com.luvago.netio &amp;lt;br/&amp;gt;&lt;br /&gt;
Webseite: http://netioapp.de &lt;br /&gt;
&lt;br /&gt;
Hinweis: &amp;lt;br&amp;gt; Man findet es unter &amp;quot;NetIO&amp;quot; im Store, im Icon selbst und in iTunes wird es als &amp;quot;Controller&amp;quot; angezeigt. &amp;lt;br&amp;gt;&lt;br /&gt;
Die eigene Konfiguration kann man mit dem [http://netioapp.com/editor/ Online Editor] vorher am PC erstellen.&lt;br /&gt;
Eine fertige [http://netioapp.com/editor/?config=pollin AVR-NET-IO Konfiguration] gibt es als funktionierendes Beispiel schon als Preset.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;div style=&#039;clear: both&#039;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== AVR Net IO (iPhone) ===&lt;br /&gt;
[[Datei:AVRNetIO-Screenshot1.png|160px|rechts]]&lt;br /&gt;
Update 15.12.2011: Die Neue Version 1.3 ist seit gestern im AppStore. Fehlerkorrekturen und ein robusteres Handling machen die App nun zur universellen AVR-Net-IO-Steuerung.&lt;br /&gt;
&lt;br /&gt;
Mit der [http://itunes.apple.com/de/app/avr-net-io/id460991760?mt=8 iPhone App AVR-Net-IO] kann das Board ferngesteuert werden. Die Fernsteuerung umfasst in der Version 1.1 folgende Funktionen:&amp;lt;br&amp;gt;&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;ADC-Werte zyklisch auslesen und darstellen&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Digital-Inputs zyklisch darstellen&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Digital-Outputs können über Buttons geschaltet werden. Die Werte der Digital-Outputs werden zuerst ausgelesen und zeigen den zuletzt gesetzten Wert an.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Terminal-Modus: Hier können beliebige AVR-Net-IO-Befehle eingegeben werden. Das Ergebnis wird 1:1 angezeigt, wie es vom Board kommt. Hilfreich für Tests bei Eigenentwicklungen und Konfigurationen.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Mehr Infos gibt&#039;s dazu direkt von den Entwicklern auf [http://www.facebook.com/pages/AVR-Net-IO/187799687958255?ref=nf AVR-net-IO Facebook-Page] oder direkt auf deren Homepage [http://www.ondics.de/apps/1001/ Homepage].&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Hinweis: MIt der aktuellen Version 1.1 gibt es noch bei manchen Boards Probleme beim auslesen und anzeigen der ADC- und Digital-Werte. Das Terminal funzt problemlos. Die Entwickler kümmern sich gerade drum und haben einen baldigen Update versprochen.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Andere Software statt der Originalsoftware von Pollin ==&lt;br /&gt;
&lt;br /&gt;
Die Umrüstung auf einen Webserver durch Austausch der Software (und ev. des ATmega32) bietet sich an. Kleiner Hinweis dabei: wenn zum Flashen ein ISP-Adapter verwendet wird, diesen unbedingt vor dem Start der neuen Software abziehen! Der ISP arbeitet nämlich über dieselbe SPI-Schnittstelle über die auch der ENC28J60 angesteuert wird. Ein eventuell noch angeschlossener, wenn auch passiver ISP-Adapter stört diese Kommunikation, d.h. das Programm an sich scheint zu laufen, aber die Ethernet-Schnittstelle funktioniert nicht.&lt;br /&gt;
&lt;br /&gt;
=== E2000 - Logik ===&lt;br /&gt;
&lt;br /&gt;
[[Datei:E2000-Logik-Bedienoberflaeche.jpg|500px|rechts]]&lt;br /&gt;
&lt;br /&gt;
Anwenderfreundliche Logik-Software von Elektronik2000.de zur Steuerung des AVR-NET-IO. Der ATMEGA32 wird durch einen ATMEGA644 ersetzt und mit der E2000-Firmware beschrieben. Nun ist es möglich in der E2000-Logik Software eine Logikschaltung zu erstellen und diese auf das NET-IO-Board zu übertragen. Dort wird diese Schaltung simuliert. Dies funktioniert komplett ohne einen Computer.&lt;br /&gt;
&lt;br /&gt;
Durch ein Erweiterungsboard von Elektronik2000.de ist es auch möglich, das Board ohne Internet laufen zu lassen eine RTC (RealTimeClock) übernimmt dabei die Uhrzeitgesteuerten Funktionen. Auf dieser Erweiterung ist auch ein EEPROM integriert, um Firmware-Updates über Netzwerk einzuspielen (in Zukunft). Diese Erweiterung bietet außerdem die Anbindung an das E2000-Bus-System, durch das es möglich ist das AVR-NET-IO-Board durch weitere Ein- und Ausgänge zu erweitern.&lt;br /&gt;
&lt;br /&gt;
Das Designen von Schaltaufgaben wird in diesem Programm grafisch dargestellt, durch das ein einfaches Anpassen seiner Logikschaltungen möglich ist.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Eine Steuerung des E2000-NET-IO ist möglich durch den Intregrieten Webserver, die PC-Software (E2000-NET-IO Control) oder der Androidsoftware. All diese Können gleichzeitig auf das E2000-NET-IO zugreifen und Funktionen ausführen. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Weitere Informationen gibt es auf der Entwicklerseite: [http://www.elektronik2000.de Elektronik2000.de]&lt;br /&gt;
&lt;br /&gt;
=== Bascom Version von Hütti ===&lt;br /&gt;
&lt;br /&gt;
(Quelle: http://bascom-forum.de/index.php/topic,1781.45.html )&lt;br /&gt;
dort am Ende der Seite.&lt;br /&gt;
&lt;br /&gt;
=== Ben&#039;s Bascom Quellcode ===&lt;br /&gt;
&lt;br /&gt;
(Quelle: http://members.home.nl/bzijlstra/software/examples/enc28j60.htm )&lt;br /&gt;
&lt;br /&gt;
Muss aber für Bascom 1.11.9.3 angepasst werden, siehe Code von Hütti !&lt;br /&gt;
&lt;br /&gt;
=== U. Radigs Webserver ===&lt;br /&gt;
&lt;br /&gt;
Angepasster Sourcecode von U.Radig: http://www.mikrocontroller.net/attachment/40027/Webserver_MEGA32.hex&lt;br /&gt;
oder selbst anpassen: &lt;br /&gt;
Ändere in der Datei ENC28J60.H:&lt;br /&gt;
 #define ENC28J60_PIN_CS    4&lt;br /&gt;
(Quelle: http://www.mikrocontroller.net/topic/109988#988386)&lt;br /&gt;
&lt;br /&gt;
Temporären Dateien (*.d, *,lst,*.o) vorher im Verzeichnis löschen &#039;&#039;make clean&#039;&#039;, damit neu compiliert wird.&lt;br /&gt;
&lt;br /&gt;
IP: 192.168.0.99&amp;lt;br&amp;gt;&lt;br /&gt;
User: admin&amp;lt;br&amp;gt;&lt;br /&gt;
Pass: uli1&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Den orginal SourceCode gibt&#039;s übrigens hier:http://www.ulrichradig.de/home/index.php/avr/eth_m32_ex&lt;br /&gt;
&lt;br /&gt;
Bei den Fuses BOOTRST ausschalten, da die Software keinen Bootloader enthält.&lt;br /&gt;
&lt;br /&gt;
IP: 192.168.1.90&amp;lt;br&amp;gt;&lt;br /&gt;
User: admin&amp;lt;br&amp;gt;&lt;br /&gt;
Pass: tim&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Weiterentwicklung des Radig-Codes von RoBue: &amp;lt;br&amp;gt;&lt;br /&gt;
- 1-Wire-Unterstützung (Anschlus an PORTA7) &amp;lt;br&amp;gt;&lt;br /&gt;
- PORTA0-3 digitaler Eingang (ein/aus) &amp;lt;br&amp;gt;&lt;br /&gt;
- PORTA4-6 analoger Eingang (0 - 1023) &amp;lt;br&amp;gt;&lt;br /&gt;
- LCD an PORTC &amp;lt;br&amp;gt;&lt;br /&gt;
- Schalten in Abhängigkeit von Temperatur und analogem Wert &amp;lt;br&amp;gt;&lt;br /&gt;
- (Teilweise) Administration über Weboberfläche &amp;lt;br&amp;gt;&lt;br /&gt;
- Erweiterung des cmd-Befehlsatzes für telnet/rs232 &amp;lt;br&amp;gt;&lt;br /&gt;
Gedacht ist der Einsatz des AVR-NET-IO-Bausatzes für Heizungs- oder Haussteuerung) &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Test: http://avrboard.eluhost.de/&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
(Quelle:&amp;lt;br&amp;gt;&lt;br /&gt;
http://www.mikrocontroller.net/attachment/43307/AVR-NET-IO_RoBue_V1.3.zip&amp;lt;br&amp;gt;&lt;br /&gt;
http://www.mikrocontroller.net/attachment/44569/AVR-NET-IO_RoBue_V1.4.zip&amp;lt;br&amp;gt;&lt;br /&gt;
http://www.mikrocontroller.net/attachment/46720/AVR-NET-IO_RoBue_1.5-final_hoffentlich_.zip)&lt;br /&gt;
&lt;br /&gt;
Bei der Ver 1.5 sind die Ports PD2+3 fürs 4bit LCD (Ext.) vertauscht ! Gruß B.P&lt;br /&gt;
&lt;br /&gt;
=== Simon Ks Webserver (uip-Stack) ===&lt;br /&gt;
Angepasster Sourcecode von Simon K: http://www.mikrocontroller.net/attachment/39939/uWebSrv.zip&lt;br /&gt;
IP: 192.168.0.93:8080&amp;lt;br&amp;gt;&lt;br /&gt;
Um diesen Code mit einem Atmega1284P verwenden zu können, muss in der main.c in Zeile 38, &amp;quot;TIMSK&amp;quot; durch &amp;quot;TIMSK1&amp;quot; ersetzt werden.&lt;br /&gt;
Die Fusebits für den Atmega1284p ohne Bootloader sind:&lt;br /&gt;
lfuse=0xFF, hfuse=0xD9, efuse=0xFF&lt;br /&gt;
&lt;br /&gt;
=== Ethersex Server ===&lt;br /&gt;
&lt;br /&gt;
http://www.ethersex.de - Einfach für atmega32 compilieren und funktioniert.&lt;br /&gt;
&lt;br /&gt;
=== Etherrape Server ===&lt;br /&gt;
&lt;br /&gt;
http://www.lochraster.org/etherrape/ &lt;br /&gt;
&lt;br /&gt;
ist in jedem Fall hier auch zu erwähnen zumal es sich beim etherrape um das Ursprungsprojekt von ethersex handelt.&lt;br /&gt;
Es scheint aber bei der Weiterentwicklung wenig zu passieren.&lt;br /&gt;
Ausführliche Dokumentation findet sich unter http://wiki.lochraster.org/wiki/Etherrape&lt;br /&gt;
&lt;br /&gt;
=== Mini SRCP Server (kommerziell, Closed-Source)===&lt;br /&gt;
&lt;br /&gt;
Damit wird die Platine zu einer Modellbahnsteuerung, die&lt;br /&gt;
über das Netzwerkprotokoll SRCP mit verschiedenen Programmen&lt;br /&gt;
gesteuert werden kann.&lt;br /&gt;
&lt;br /&gt;
[http://www.7soft.de/de/mini_srcp_server/index.html Infoseite] zur Hardware&lt;br /&gt;
und das zugrundeliegende [http://www.der-moba.de/index.php/Digitalprojekt Digitalprojekt].&lt;br /&gt;
&lt;br /&gt;
=== Avr ArtNET-Node ===&lt;br /&gt;
&lt;br /&gt;
Hiermit kann die Platine zu einem Art-Net Node werden, mit dem sich ein DMX-Universe über Ethernet übertragen lässt. Basiert auf den Quellen von Ulrich Radig.&lt;br /&gt;
&lt;br /&gt;
Dokumentation: [http://www.dmxcontrol.de/wiki/Art-Net-Node_f%C3%BCr_25_Euro Art-Net-Node für 25 Euro]&lt;br /&gt;
&lt;br /&gt;
=== Webserver von G. Menke ===&lt;br /&gt;
&lt;br /&gt;
Ein Webserver (basierend auf den Sourcen von U. Radig), der so angepasst ist, dass alle Ein- und Ausgänge wie bei der originalen Pollin-Software genutzt werden können (8xDIGOUT, 4xDIGIN, 4xADIN). Der Webserver kann daher direkt auf das Net-IO geladen werden. Im ZIP-File sind ein ReadMe und alle C-Sourcen enthalten.&amp;lt;br&amp;gt;&amp;lt;i&amp;gt;Download&amp;lt;/i&amp;gt;:&lt;br /&gt;
[http://gm.stream-center.de/webserver/ Webserver mit passender IO]&lt;br /&gt;
&lt;br /&gt;
=== OpenMCP === &lt;br /&gt;
&#039;&#039;&#039;(Projekt scheint erloschen - Links all down - Jan. 2014)&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Tolles Projekt, welches viele Features bietet und stabil läuft. Hervorzuheben ist die Übersichtlichkeit der Programmteile/Module und die vielleicht nicht ganz komplette Dokumentation. Man merkt, dass viel Arbeit und Liebe in diesem Projekt steckt. Herausgekommen ist dabei eine einfach zu handhabende Entwicklungsumgebung. Anfänger können, dank des gut durchdachten CGI-Systems, welches sich um alle wichtigen Sachen kümmert, leicht eigene CGI implementieren. Alle Ausgaben erfolgen nur mit printf über die Standardausgabe und werden automatisch richtig per Netzwerk übertragen, dadurch ist es auch für den Anfänger recht gut geeignet, da man sich nicht mit der Netzwerkprogrammierung auseinander setzen muss.&lt;br /&gt;
&lt;br /&gt;
Die Software belegt im Moment (Stand Juli 2010) ca. 55 Kb im Flash, so dass man das Board mit einem grösseren µC (z.B. ATMega644) aufrüsten muss.&lt;br /&gt;
&lt;br /&gt;
[http://wiki.neo-guerillaz.de Projekt und Doku]&lt;br /&gt;
&lt;br /&gt;
Der Autor stellt zwei über das Internet erreichbare Testboards bereit unter http://www.neo-guerillaz.de:81 und http://www.neo-guerillaz.de:82 die beide unter OpenMCP laufen, je auf einen AVR-NETIO mit einem ATmega644 und dem eigentlichen Board mit einem ATmega2561. Zusätzlich ist gerade eine Version für das myAVR in Arbeit die schon ordentlich Fortschritte macht.&lt;br /&gt;
&lt;br /&gt;
=== OpenMLP ===&lt;br /&gt;
Auf openMCP basierender Port nach [http://avr.myluna.de LunaAVR] (GPL). Umfangreiche Funktionalität und direkte Anpassung an die Sprache. Abgespeckte Version auch auf Atmega32 lauffähig. Die Original-Dokumentation kann zum Großteil hergenommen werden. Einige Zusatzfeatures. Leichte Konfiguration und guter Einstieg für Anfänger und zum Verständnis der Serverfunktionalität.&lt;br /&gt;
&lt;br /&gt;
[http://avr.myluna.de/doku.php?id=de:openmlp Artikelseite]&lt;br /&gt;
[http://forum.myluna.de/viewtopic.php?f=8&amp;amp;t=13 Forum]&lt;br /&gt;
&lt;br /&gt;
=== ENC28J60 I/O-Webserver von Thomas Heldt ===&lt;br /&gt;
&lt;br /&gt;
Ein Modul-Webserver (Softwarekompatibel zum Pollin Webserver), der durch div. Module erweitert werden kann, Software in Bascom basierend auf dem Code von Ben Zijlsta wurde erweitert und angepasst:&lt;br /&gt;
&lt;br /&gt;
[http://mikrocontroller.heldt.eu/index.php?page=enc28j60-io-webserver Projekt und Software]&lt;br /&gt;
&lt;br /&gt;
=== AVR-Netino ===&lt;br /&gt;
[http://code.google.com/p/avr-netino/ Projekt und Software]&lt;br /&gt;
&lt;br /&gt;
Arduino fürs Net-IO&lt;br /&gt;
&lt;br /&gt;
== Siehe auch ==&lt;br /&gt;
* Diskussion zu diesem Projekt: http://www.mikrocontroller.net/topic/109988&lt;br /&gt;
* [http://www.microchip.com/wwwproducts/Devices.aspx?dDocName=en022889 ENC28J60 Produktseite]&lt;br /&gt;
* [http://ww1.microchip.com/downloads/en/DeviceDoc/39662c.pdf ENC28J60 Datenblatt(pdf)]&lt;br /&gt;
* [http://son.ffdf-clan.de Forum für AVR-Net-IO]&lt;br /&gt;
* [http://avr.myluna.de/doku.php?id=de:openmlp LunaAVR openMLP ]&lt;br /&gt;
* [http://bascom-forum.de/index.php/topic,1781.0.html Bascom Forum ]&lt;br /&gt;
* [http://hobbyelektronik.org/w/index.php/AVR-NET-IO-Shield Shield für den NET-IO]&lt;br /&gt;
&lt;br /&gt;
[[Category:AVR-Boards]]&lt;br /&gt;
[[Category:Ethernet|P]]&lt;/div&gt;</summary>
		<author><name>Debegr92</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=My_nRF5832&amp;diff=94869</id>
		<title>My nRF5832</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=My_nRF5832&amp;diff=94869"/>
		<updated>2017-01-15T11:08:17Z</updated>

		<summary type="html">&lt;p&gt;Debegr92: Link eingefügt&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;My nRF52832 - BLE Funkmodul mit ARM-Cortex M4 SoC&lt;br /&gt;
[[Datei:My nRF52832 A1.jpg|miniatur|rechts]]&lt;br /&gt;
von &#039;&#039;Dennis Greguhn ([https://www.mikrocontroller.net/user/show/debegr92 debegr92])&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Ein Breakout Board für einen Bluetooth Low Energy SoC mit ARM Cortex M4 Mikrocontroller.&lt;br /&gt;
&lt;br /&gt;
=== Einleitung ===&lt;br /&gt;
Anregung dieses Projektes war ein Beitrag im Forum über den nRF52832 Bluetooth Low Energy (BLE / Bluetooth Smart) Chip von Nordic Semiconductor.&lt;br /&gt;
Dieser kleine System-on-Chip bietet eigentlich alles was das Bastlerherz begehrt und verfügt neben seinem Funkinterface ebenso folgende Features (nur ein kleiner Auszug aus dem Datenblatt): &lt;br /&gt;
* 32-bit ARM Cortex M4F processor&lt;br /&gt;
* 512kB flash + 64kB RAM&lt;br /&gt;
* Flexible and configurable 32 pin GPIO&lt;br /&gt;
* Simple ON/OFF global power modes&lt;br /&gt;
* Full set of digital interfaces including: SPI/2-wire/UART/PDM/&lt;br /&gt;
* I2S, all with EasyDMA&lt;br /&gt;
* 12-bit/200KSPS ADC&lt;br /&gt;
* 128-bit AES ECB/CCM/AAR co-processor&lt;br /&gt;
* NFC&lt;br /&gt;
&lt;br /&gt;
Da mir diese Daten sehr gefallen haben, machte ich mich an die Arbeit ein eigenes kleines Modul zu entwickeln. Ein eigenes kleines Modul desswegen, weil ich dann alles aus einer Hand habe und das Modul genau so gestalten kann wie ich es möchte. Außerdem hat mir keins der bereits verfügbaren wirklich zugesagt. Zudem lagen die bei einzelnen Stückzahlen etwas über dem Preis den ich mir vorgestellt hatte.&lt;br /&gt;
&lt;br /&gt;
=== Anforderungen ===&lt;br /&gt;
Folgende Gesichtspunkte hatte ich während der Entwicklung beachtet:&lt;br /&gt;
* Alle IOs des nRF52832 nach außen führen&lt;br /&gt;
* So klein wie möglich / so groß wie nötig&lt;br /&gt;
* Zwei Versionen mit PCB Antenne und UFL&lt;br /&gt;
* Billiger bei kleinen Stückzahlen als bereits vorhandene Module&lt;br /&gt;
* Komplette Grundschaltung mit auf das Board&lt;br /&gt;
&lt;br /&gt;
=== Schaltplan ===&lt;br /&gt;
Der Schaltplan beinhaltet die Grundschaltung des nRF52832 Chips. Zusätzlich wurden die beiden Quarze mit 32 MHz und 32 kHz angeschlossen. Außerdem sind drei optionale LEDs auf der Platine. Eine direkt an der Versorgungsspannung und zwei angeschlossen an IO-Pins des Controllers. Alle LEDs sind optional und können, für maximale Energieeffizienz, einfach nicht bestückt werden.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
Datei:Schematic my nrf52832.png|Schaltplan zum Modul (A1)&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Layouts ===&lt;br /&gt;
Es wurden zwei Layouts erstellt. Eines mit einer Antenne als Leiterbahn und ein Modul mit einem UFL Steckverbinder von Molex wie man ihn aus Notebooks oder Routern kennt.&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
Datei:Layout A1.png|A1 Modul mit PCB Antenne&lt;br /&gt;
Datei:Layout B1.png|B1 Modul mit UFL&lt;br /&gt;
Datei:Pinout my nrf52832.png|Pinout zum A1 Modul. Selbes Pinout bei B1&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Prototypen ===&lt;br /&gt;
Da ich 10 dieser Nutzen bestellt habe, jedoch nur 3 Module für mich bestückt habe, sind noch einige Platinen hier. Eine kurze Nachricht an mich, falls hier Interesse besteht. Auch hab ich die ganzen Widerstände und Kondensatoren noch vorrätig.&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
Datei:Nutzen nRF52832.jpg|Platinen&lt;br /&gt;
Datei:A1 B1 Module.jpg|Bestückte Prototypen&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
Die Module beötigen lediglich eine einzige +3.3V Spannung. Alle Kondensatoren und externen Bauteile würden auf dem Board verbaut.&lt;br /&gt;
Die Programmierung erfolgt über SWD. Es wird dazu ein SWD Programmier Gerät benötigt. Ich habe einen JLinkEDU von Segger verwendet. Es würde auch ein STLink-v2 von einem STM Board funktionieren oder ein ~5€ Programmer aus eBay. Für einen einfachen Test kann direkt begonnen werden, ein Blinky Projekt für die LEDs an P0.04 und P0.05 zu schreiben.&lt;br /&gt;
&lt;br /&gt;
=== Downloads ===&lt;br /&gt;
[https://www.mikrocontroller.net/wikifiles/e/ee/My_nRF52832-A1-B1-KiCAD.zip KiCAD Unterlagen]&amp;lt;br /&amp;gt;&lt;br /&gt;
[http://www.mikrocontroller.net/wikifiles/0/0e/Schematic_board_my_nrf.zip Schaltplan + Pinout PNG]&amp;lt;br /&amp;gt;&lt;br /&gt;
[https://www.mikrocontroller.net/wikifiles/6/6e/My_nRF52832_bom.ods Bauteilliste + Preise + Bestellnummern]&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Links ===&lt;br /&gt;
[https://www.nordicsemi.com/eng/Products/Bluetooth-low-energy/nRF52832 Nordic Produktseite zum nRF52832]&lt;br /&gt;
&lt;br /&gt;
=== ToDo ===&lt;br /&gt;
* SDK in virtueller Maschine einrichten für eine erleichterte Programmierung&lt;br /&gt;
* Warenkorb bei Mouser und Digi-Key anlegen für das direkte Importieren der Bauteile&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Datenübertragung|Datenübertragung]]&lt;br /&gt;
[[Kategorie:Mikrocontroller|Mikrocontroller]]&lt;br /&gt;
[[Kategorie:Bluetooth]]&lt;/div&gt;</summary>
		<author><name>Debegr92</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=My_nRF5832&amp;diff=94867</id>
		<title>My nRF5832</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=My_nRF5832&amp;diff=94867"/>
		<updated>2017-01-14T23:22:15Z</updated>

		<summary type="html">&lt;p&gt;Debegr92: Links 404 behoben&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;My nRF52832 - BLE Funkmodul mit ARM-Cortex M4 SoC&lt;br /&gt;
[[Datei:My nRF52832 A1.jpg|miniatur|rechts]]&lt;br /&gt;
von &#039;&#039;Dennis Greguhn ([https://www.mikrocontroller.net/user/show/debegr92 debegr92])&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Ein Breakout Board für einen Bluetooth Low Energy SoC mit ARM Cortex M4 Mikrocontroller.&lt;br /&gt;
&lt;br /&gt;
=== Einleitung ===&lt;br /&gt;
Anregung dieses Projektes war ein Beitrag im Forum über den nRF52832 Bluetooth Low Energy (BLE / Bluetooth Smart) Chip von Nordic Semiconductor.&lt;br /&gt;
Dieser kleine System-on-Chip bietet eigentlich alles was das Bastlerherz begehrt und verfügt neben seinem Funkinterface ebenso folgende Features (nur ein kleiner Auszug aus dem Datenblatt): &lt;br /&gt;
* 32-bit ARM Cortex M4F processor&lt;br /&gt;
* 512kB flash + 64kB RAM&lt;br /&gt;
* Flexible and configurable 32 pin GPIO&lt;br /&gt;
* Simple ON/OFF global power modes&lt;br /&gt;
* Full set of digital interfaces including: SPI/2-wire/UART/PDM/&lt;br /&gt;
* I2S, all with EasyDMA&lt;br /&gt;
* 12-bit/200KSPS ADC&lt;br /&gt;
* 128-bit AES ECB/CCM/AAR co-processor&lt;br /&gt;
* NFC&lt;br /&gt;
&lt;br /&gt;
Da mir diese Daten sehr gefallen haben, machte ich mich an die Arbeit ein eigenes kleines Modul zu entwickeln. Ein eigenes kleines Modul desswegen, weil ich dann alles aus einer Hand habe und das Modul genau so gestalten kann wie ich es möchte. Außerdem hat mir keins der bereits verfügbaren wirklich zugesagt. Zudem lagen die bei einzelnen Stückzahlen etwas über dem Preis den ich mir vorgestellt hatte.&lt;br /&gt;
&lt;br /&gt;
=== Anforderungen ===&lt;br /&gt;
Folgende Gesichtspunkte hatte ich während der Entwicklung beachtet:&lt;br /&gt;
* Alle IOs des nRF52832 nach außen führen&lt;br /&gt;
* So klein wie möglich / so groß wie nötig&lt;br /&gt;
* Zwei Versionen mit PCB Antenne und UFL&lt;br /&gt;
* Billiger bei kleinen Stückzahlen als bereits vorhandene Module&lt;br /&gt;
* Komplette Grundschaltung mit auf das Board&lt;br /&gt;
&lt;br /&gt;
=== Schaltplan ===&lt;br /&gt;
Der Schaltplan beinhaltet die Grundschaltung des nRF52832 Chips. Zusätzlich wurden die beiden Quarze mit 32 MHz und 32 kHz angeschlossen. Außerdem sind drei optionale LEDs auf der Platine. Eine direkt an der Versorgungsspannung und zwei angeschlossen an IO-Pins des Controllers. Alle LEDs sind optional und können, für maximale Energieeffizienz, einfach nicht bestückt werden.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
Datei:Schematic my nrf52832.png|Schaltplan zum Modul (A1)&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Layouts ===&lt;br /&gt;
Es wurden zwei Layouts erstellt. Eines mit einer Antenne als Leiterbahn und ein Modul mit einem UFL Steckverbinder von Molex wie man ihn aus Notebooks oder Routern kennt.&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
Datei:Layout A1.png|A1 Modul mit PCB Antenne&lt;br /&gt;
Datei:Layout B1.png|B1 Modul mit UFL&lt;br /&gt;
Datei:Pinout my nrf52832.png|Pinout zum A1 Modul. Selbes Pinout bei B1&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Prototypen ===&lt;br /&gt;
Da ich 10 dieser Nutzen bestellt habe, jedoch nur 3 Module für mich bestückt habe, sind noch einige Platinen hier. Eine kurze Nachricht an mich, falls hier Interesse besteht. Auch hab ich die ganzen Widerstände und Kondensatoren noch vorrätig.&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
Datei:Nutzen nRF52832.jpg|Platinen&lt;br /&gt;
Datei:A1 B1 Module.jpg|Bestückte Prototypen&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
Die Module beötigen lediglich eine einzige +3.3V Spannung. Alle Kondensatoren und externen Bauteile würden auf dem Board verbaut.&lt;br /&gt;
Die Programmierung erfolgt über SWD. Es wird dazu ein SWD Programmier Gerät benötigt. Ich habe einen JLinkEDU von Segger verwendet. Es würde auch ein STLink-v2 von einem STM Board funktionieren oder ein ~5€ Programmer aus eBay. Für einen einfachen Test kann direkt begonnen werden, ein Blinky Projekt für die LEDs an P0.04 und P0.05 zu schreiben.&lt;br /&gt;
&lt;br /&gt;
=== Downloads ===&lt;br /&gt;
[https://www.mikrocontroller.net/wikifiles/e/ee/My_nRF52832-A1-B1-KiCAD.zip KiCAD Unterlagen]&amp;lt;br /&amp;gt;&lt;br /&gt;
[http://www.mikrocontroller.net/wikifiles/0/0e/Schematic_board_my_nrf.zip Schaltplan + Pinout PNG]&amp;lt;br /&amp;gt;&lt;br /&gt;
[https://www.mikrocontroller.net/wikifiles/6/6e/My_nRF52832_bom.ods Bauteilliste + Preise + Bestellnummern]&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== ToDo ===&lt;br /&gt;
* SDK in virtueller Maschine einrichten für eine erleichterte Programmierung&lt;br /&gt;
* Warenkorb bei Mouser und Digi-Key anlegen für das direkte Importieren der Bauteile&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Datenübertragung|Datenübertragung]]&lt;br /&gt;
[[Kategorie:Mikrocontroller|Mikrocontroller]]&lt;br /&gt;
[[Kategorie:Bluetooth]]&lt;/div&gt;</summary>
		<author><name>Debegr92</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=My_nRF5832&amp;diff=94866</id>
		<title>My nRF5832</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=My_nRF5832&amp;diff=94866"/>
		<updated>2017-01-14T23:21:00Z</updated>

		<summary type="html">&lt;p&gt;Debegr92: Kategorien&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;My nRF52832 - BLE Funkmodul mit ARM-Cortex M4 SoC&lt;br /&gt;
[[Datei:My nRF52832 A1.jpg|miniatur|rechts]]&lt;br /&gt;
von &#039;&#039;Dennis Greguhn ([https://www.mikrocontroller.net/user/show/debegr92 debegr92])&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Ein Breakout Board für einen Bluetooth Low Energy SoC mit ARM Cortex M4 Mikrocontroller.&lt;br /&gt;
&lt;br /&gt;
=== Einleitung ===&lt;br /&gt;
Anregung dieses Projektes war ein Beitrag im Forum über den nRF52832 Bluetooth Low Energy (BLE / Bluetooth Smart) Chip von Nordic Semiconductor.&lt;br /&gt;
Dieser kleine System-on-Chip bietet eigentlich alles was das Bastlerherz begehrt und verfügt neben seinem Funkinterface ebenso folgende Features (nur ein kleiner Auszug aus dem Datenblatt): &lt;br /&gt;
* 32-bit ARM Cortex M4F processor&lt;br /&gt;
* 512kB flash + 64kB RAM&lt;br /&gt;
* Flexible and configurable 32 pin GPIO&lt;br /&gt;
* Simple ON/OFF global power modes&lt;br /&gt;
* Full set of digital interfaces including: SPI/2-wire/UART/PDM/&lt;br /&gt;
* I2S, all with EasyDMA&lt;br /&gt;
* 12-bit/200KSPS ADC&lt;br /&gt;
* 128-bit AES ECB/CCM/AAR co-processor&lt;br /&gt;
* NFC&lt;br /&gt;
&lt;br /&gt;
Da mir diese Daten sehr gefallen haben, machte ich mich an die Arbeit ein eigenes kleines Modul zu entwickeln. Ein eigenes kleines Modul desswegen, weil ich dann alles aus einer Hand habe und das Modul genau so gestalten kann wie ich es möchte. Außerdem hat mir keins der bereits verfügbaren wirklich zugesagt. Zudem lagen die bei einzelnen Stückzahlen etwas über dem Preis den ich mir vorgestellt hatte.&lt;br /&gt;
&lt;br /&gt;
=== Anforderungen ===&lt;br /&gt;
Folgende Gesichtspunkte hatte ich während der Entwicklung beachtet:&lt;br /&gt;
* Alle IOs des nRF52832 nach außen führen&lt;br /&gt;
* So klein wie möglich / so groß wie nötig&lt;br /&gt;
* Zwei Versionen mit PCB Antenne und UFL&lt;br /&gt;
* Billiger bei kleinen Stückzahlen als bereits vorhandene Module&lt;br /&gt;
* Komplette Grundschaltung mit auf das Board&lt;br /&gt;
&lt;br /&gt;
=== Schaltplan ===&lt;br /&gt;
Der Schaltplan beinhaltet die Grundschaltung des nRF52832 Chips. Zusätzlich wurden die beiden Quarze mit 32 MHz und 32 kHz angeschlossen. Außerdem sind drei optionale LEDs auf der Platine. Eine direkt an der Versorgungsspannung und zwei angeschlossen an IO-Pins des Controllers. Alle LEDs sind optional und können, für maximale Energieeffizienz, einfach nicht bestückt werden.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
Datei:Schematic my nrf52832.png|Schaltplan zum Modul (A1)&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Layouts ===&lt;br /&gt;
Es wurden zwei Layouts erstellt. Eines mit einer Antenne als Leiterbahn und ein Modul mit einem UFL Steckverbinder von Molex wie man ihn aus Notebooks oder Routern kennt.&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
Datei:Layout A1.png|A1 Modul mit PCB Antenne&lt;br /&gt;
Datei:Layout B1.png|B1 Modul mit UFL&lt;br /&gt;
Datei:Pinout my nrf52832.png|Pinout zum A1 Modul. Selbes Pinout bei B1&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Prototypen ===&lt;br /&gt;
Da ich 10 dieser Nutzen bestellt habe, jedoch nur 3 Module für mich bestückt habe, sind noch einige Platinen hier. Eine kurze Nachricht an mich, falls hier Interesse besteht. Auch hab ich die ganzen Widerstände und Kondensatoren noch vorrätig.&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
Datei:Nutzen nRF52832.jpg|Platinen&lt;br /&gt;
Datei:A1 B1 Module.jpg|Bestückte Prototypen&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
Die Module beötigen lediglich eine einzige +3.3V Spannung. Alle Kondensatoren und externen Bauteile würden auf dem Board verbaut.&lt;br /&gt;
Die Programmierung erfolgt über SWD. Es wird dazu ein SWD Programmier Gerät benötigt. Ich habe einen JLinkEDU von Segger verwendet. Es würde auch ein STLink-v2 von einem STM Board funktionieren oder ein ~5€ Programmer aus eBay. Für einen einfachen Test kann direkt begonnen werden, ein Blinky Projekt für die LEDs an P0.04 und P0.05 zu schreiben.&lt;br /&gt;
&lt;br /&gt;
=== Downloads ===&lt;br /&gt;
[http://www.mikrocontroller.net/wikifiles/0/0e/My_nRF52832-A1-B1-KiCAD.zip KiCAD Unterlagen]&amp;lt;br /&amp;gt;&lt;br /&gt;
[http://www.mikrocontroller.net/wikifiles/0/0e/Schematic_board_my_nrf.zip Schaltplan + Pinout PNG]&amp;lt;br /&amp;gt;&lt;br /&gt;
[http://www.mikrocontroller.net/wikifiles/0/0e/My_nRF52832_bom.ods Bauteilliste + Preise + Bestellnummern]&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== ToDo ===&lt;br /&gt;
* SDK in virtueller Maschine einrichten für eine erleichterte Programmierung&lt;br /&gt;
* Warenkorb bei Mouser und Digi-Key anlegen für das direkte Importieren der Bauteile&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Datenübertragung|Datenübertragung]]&lt;br /&gt;
[[Kategorie:Mikrocontroller|Mikrocontroller]]&lt;br /&gt;
[[Kategorie:Bluetooth]]&lt;/div&gt;</summary>
		<author><name>Debegr92</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=My_nRF5832&amp;diff=94865</id>
		<title>My nRF5832</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=My_nRF5832&amp;diff=94865"/>
		<updated>2017-01-14T23:19:44Z</updated>

		<summary type="html">&lt;p&gt;Debegr92: Neuer Artikel zu meinem Funkmodul mit nRF52832&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;My nRF52832 - BLE Funkmodul mit ARM-Cortex M4 SoC&lt;br /&gt;
[[Datei:My nRF52832 A1.jpg|miniatur|rechts]]&lt;br /&gt;
von &#039;&#039;Dennis Greguhn ([https://www.mikrocontroller.net/user/show/debegr92 debegr92])&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Ein Breakout Board für einen Bluetooth Low Energy SoC mit ARM Cortex M4 Mikrocontroller.&lt;br /&gt;
&lt;br /&gt;
=== Einleitung ===&lt;br /&gt;
Anregung dieses Projektes war ein Beitrag im Forum über den nRF52832 Bluetooth Low Energy (BLE / Bluetooth Smart) Chip von Nordic Semiconductor.&lt;br /&gt;
Dieser kleine System-on-Chip bietet eigentlich alles was das Bastlerherz begehrt und verfügt neben seinem Funkinterface ebenso folgende Features (nur ein kleiner Auszug aus dem Datenblatt): &lt;br /&gt;
* 32-bit ARM Cortex M4F processor&lt;br /&gt;
* 512kB flash + 64kB RAM&lt;br /&gt;
* Flexible and configurable 32 pin GPIO&lt;br /&gt;
* Simple ON/OFF global power modes&lt;br /&gt;
* Full set of digital interfaces including: SPI/2-wire/UART/PDM/&lt;br /&gt;
* I2S, all with EasyDMA&lt;br /&gt;
* 12-bit/200KSPS ADC&lt;br /&gt;
* 128-bit AES ECB/CCM/AAR co-processor&lt;br /&gt;
* NFC&lt;br /&gt;
&lt;br /&gt;
Da mir diese Daten sehr gefallen haben, machte ich mich an die Arbeit ein eigenes kleines Modul zu entwickeln. Ein eigenes kleines Modul desswegen, weil ich dann alles aus einer Hand habe und das Modul genau so gestalten kann wie ich es möchte. Außerdem hat mir keins der bereits verfügbaren wirklich zugesagt. Zudem lagen die bei einzelnen Stückzahlen etwas über dem Preis den ich mir vorgestellt hatte.&lt;br /&gt;
&lt;br /&gt;
=== Anforderungen ===&lt;br /&gt;
Folgende Gesichtspunkte hatte ich während der Entwicklung beachtet:&lt;br /&gt;
* Alle IOs des nRF52832 nach außen führen&lt;br /&gt;
* So klein wie möglich / so groß wie nötig&lt;br /&gt;
* Zwei Versionen mit PCB Antenne und UFL&lt;br /&gt;
* Billiger bei kleinen Stückzahlen als bereits vorhandene Module&lt;br /&gt;
* Komplette Grundschaltung mit auf das Board&lt;br /&gt;
&lt;br /&gt;
=== Schaltplan ===&lt;br /&gt;
Der Schaltplan beinhaltet die Grundschaltung des nRF52832 Chips. Zusätzlich wurden die beiden Quarze mit 32 MHz und 32 kHz angeschlossen. Außerdem sind drei optionale LEDs auf der Platine. Eine direkt an der Versorgungsspannung und zwei angeschlossen an IO-Pins des Controllers. Alle LEDs sind optional und können, für maximale Energieeffizienz, einfach nicht bestückt werden.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
Datei:Schematic my nrf52832.png|Schaltplan zum Modul (A1)&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Layouts ===&lt;br /&gt;
Es wurden zwei Layouts erstellt. Eines mit einer Antenne als Leiterbahn und ein Modul mit einem UFL Steckverbinder von Molex wie man ihn aus Notebooks oder Routern kennt.&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
Datei:Layout A1.png|A1 Modul mit PCB Antenne&lt;br /&gt;
Datei:Layout B1.png|B1 Modul mit UFL&lt;br /&gt;
Datei:Pinout my nrf52832.png|Pinout zum A1 Modul. Selbes Pinout bei B1&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Prototypen ===&lt;br /&gt;
Da ich 10 dieser Nutzen bestellt habe, jedoch nur 3 Module für mich bestückt habe, sind noch einige Platinen hier. Eine kurze Nachricht an mich, falls hier Interesse besteht. Auch hab ich die ganzen Widerstände und Kondensatoren noch vorrätig.&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
Datei:Nutzen nRF52832.jpg|Platinen&lt;br /&gt;
Datei:A1 B1 Module.jpg|Bestückte Prototypen&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
Die Module beötigen lediglich eine einzige +3.3V Spannung. Alle Kondensatoren und externen Bauteile würden auf dem Board verbaut.&lt;br /&gt;
Die Programmierung erfolgt über SWD. Es wird dazu ein SWD Programmier Gerät benötigt. Ich habe einen JLinkEDU von Segger verwendet. Es würde auch ein STLink-v2 von einem STM Board funktionieren oder ein ~5€ Programmer aus eBay. Für einen einfachen Test kann direkt begonnen werden, ein Blinky Projekt für die LEDs an P0.04 und P0.05 zu schreiben.&lt;br /&gt;
&lt;br /&gt;
=== Downloads ===&lt;br /&gt;
[http://www.mikrocontroller.net/wikifiles/0/0e/My_nRF52832-A1-B1-KiCAD.zip KiCAD Unterlagen]&amp;lt;br /&amp;gt;&lt;br /&gt;
[http://www.mikrocontroller.net/wikifiles/0/0e/Schematic_board_my_nrf.zip Schaltplan + Pinout PNG]&amp;lt;br /&amp;gt;&lt;br /&gt;
[http://www.mikrocontroller.net/wikifiles/0/0e/My_nRF52832_bom.ods Bauteilliste + Preise + Bestellnummern]&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== ToDo ===&lt;br /&gt;
* SDK in virtueller Maschine einrichten für eine erleichterte Programmierung&lt;br /&gt;
* Warenkorb bei Mouser und Digi-Key anlegen für das direkte Importieren der Bauteile&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Datenübertragung|Mikrocontroller|Bluetooth]]&lt;/div&gt;</summary>
		<author><name>Debegr92</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=Datei:My_nRF52832_bom.ods&amp;diff=94864</id>
		<title>Datei:My nRF52832 bom.ods</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=Datei:My_nRF52832_bom.ods&amp;diff=94864"/>
		<updated>2017-01-14T23:08:43Z</updated>

		<summary type="html">&lt;p&gt;Debegr92: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;BOM&lt;/div&gt;</summary>
		<author><name>Debegr92</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=Datei:Schematic_board_my_nrf.zip&amp;diff=94863</id>
		<title>Datei:Schematic board my nrf.zip</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=Datei:Schematic_board_my_nrf.zip&amp;diff=94863"/>
		<updated>2017-01-14T23:01:43Z</updated>

		<summary type="html">&lt;p&gt;Debegr92: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;BOM + Datenblätter + Schaltplan (PDF)&lt;/div&gt;</summary>
		<author><name>Debegr92</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=Datei:My_nRF52832-A1-B1-KiCAD.zip&amp;diff=94862</id>
		<title>Datei:My nRF52832-A1-B1-KiCAD.zip</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=Datei:My_nRF52832-A1-B1-KiCAD.zip&amp;diff=94862"/>
		<updated>2017-01-14T22:56:22Z</updated>

		<summary type="html">&lt;p&gt;Debegr92: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;KiCAD Unterlagen&lt;/div&gt;</summary>
		<author><name>Debegr92</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=Datei:Pinout_my_nrf52832.png&amp;diff=94861</id>
		<title>Datei:Pinout my nrf52832.png</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=Datei:Pinout_my_nrf52832.png&amp;diff=94861"/>
		<updated>2017-01-14T22:43:08Z</updated>

		<summary type="html">&lt;p&gt;Debegr92: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Pinout zum My_nRF Modul.&lt;/div&gt;</summary>
		<author><name>Debegr92</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=Datei:Nutzen_nRF52832.jpg&amp;diff=94860</id>
		<title>Datei:Nutzen nRF52832.jpg</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=Datei:Nutzen_nRF52832.jpg&amp;diff=94860"/>
		<updated>2017-01-14T22:23:18Z</updated>

		<summary type="html">&lt;p&gt;Debegr92: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Nutzen für My_nRF52832&lt;/div&gt;</summary>
		<author><name>Debegr92</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=Datei:A1_B1_Module.jpg&amp;diff=94859</id>
		<title>Datei:A1 B1 Module.jpg</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=Datei:A1_B1_Module.jpg&amp;diff=94859"/>
		<updated>2017-01-14T22:22:38Z</updated>

		<summary type="html">&lt;p&gt;Debegr92: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Modul B1 oben&lt;br /&gt;
Modul A1 unten&lt;/div&gt;</summary>
		<author><name>Debegr92</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=Datei:Schematic_my_nrf52832.png&amp;diff=94858</id>
		<title>Datei:Schematic my nrf52832.png</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=Datei:Schematic_my_nrf52832.png&amp;diff=94858"/>
		<updated>2017-01-14T22:19:08Z</updated>

		<summary type="html">&lt;p&gt;Debegr92: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Schaltplan My_nRF52832 (A1)&lt;/div&gt;</summary>
		<author><name>Debegr92</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=Datei:Layout_B1.png&amp;diff=94857</id>
		<title>Datei:Layout B1.png</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=Datei:Layout_B1.png&amp;diff=94857"/>
		<updated>2017-01-14T21:57:25Z</updated>

		<summary type="html">&lt;p&gt;Debegr92: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Layout B1 Modul mit UFL&lt;/div&gt;</summary>
		<author><name>Debegr92</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=Datei:Layout_A1.png&amp;diff=94856</id>
		<title>Datei:Layout A1.png</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=Datei:Layout_A1.png&amp;diff=94856"/>
		<updated>2017-01-14T21:56:07Z</updated>

		<summary type="html">&lt;p&gt;Debegr92: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Layout des A1 Modul mit PCB Antenne&lt;/div&gt;</summary>
		<author><name>Debegr92</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=Datei:My_nRF52832_A1.jpg&amp;diff=94855</id>
		<title>Datei:My nRF52832 A1.jpg</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=Datei:My_nRF52832_A1.jpg&amp;diff=94855"/>
		<updated>2017-01-14T21:41:22Z</updated>

		<summary type="html">&lt;p&gt;Debegr92: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;A1 Modul des &amp;quot;My nRF52832&amp;quot;&lt;/div&gt;</summary>
		<author><name>Debegr92</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=Elektronik_Lagerverwaltung&amp;diff=92619</id>
		<title>Elektronik Lagerverwaltung</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=Elektronik_Lagerverwaltung&amp;diff=92619"/>
		<updated>2016-03-29T20:47:09Z</updated>

		<summary type="html">&lt;p&gt;Debegr92: Link erneuert...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== EleLa - Allgemeine Infos ==&lt;br /&gt;
&lt;br /&gt;
EleLa die Elektronik Lagerverwaltung für Hobby bis hin zu kleinen Unternehmen. Die&lt;br /&gt;
Software arbeitet sehr schnell und ist leicht bedienbar. Selbst ungeübte&lt;br /&gt;
PC-User finden sich damit schnell zurecht und EleLa ist dennoch ein&lt;br /&gt;
mächtiges Tool das viele andere in den Schatten stellt.&lt;br /&gt;
&lt;br /&gt;
* Bauteile, mit Gehäuse/Varianten, Lagerplätze&lt;br /&gt;
* Typunterscheidung / Kategorien&lt;br /&gt;
* Definition Bauteil als &amp;quot;Bauteil&amp;quot;, &amp;quot;Arbeitszeit&amp;quot; oder &amp;quot;Kleinmaterial&amp;quot; mit jeweils unterschiedlicher Behandlung für Projektplanung und Mengen Berechnung&lt;br /&gt;
* Handbuch-Funktion um Datenblätter schneller zu finden&lt;br /&gt;
* Gehäuse, mit Import/Export Funktion für externe Gehäusebibliotheken&lt;br /&gt;
* Lagerplätze, Kisten, Boxen usw.&lt;br /&gt;
* mehrere Lieferanten je Bauteil, mit VPE und Staffelpreise, Bestellnummern, Rabatt&lt;br /&gt;
* Öffnen der Lieferantenseite anhand der Bestellnummer&lt;br /&gt;
* Adressen mit Hersteller, Lieferanten, Kontakte (viele Eingabefelder)&lt;br /&gt;
* Bestellungen / Warenkorbfunktion der Lieferanten / Teillieferungen / Auftragsnummer / Bestellnummer Export / Bestellarchivierung&lt;br /&gt;
* Projektverwaltung / Reparaturverwaltung / Positionen / Ansicht Bauteilposition in Bild&lt;br /&gt;
* Geräteverwaltung mit Seriennummer und Historie&lt;br /&gt;
* Historie, auch von Projekten und Reparaturen, Logbuch, ToDo Liste&lt;br /&gt;
* Kostenvoranschlage/Angebotkalkulation von Projekten / Geräten&lt;br /&gt;
* Wissens-Datenbank&lt;br /&gt;
* mehrere Bilder zu nahezu allen Funktionen hinterlegbar&lt;br /&gt;
* Suche&lt;br /&gt;
* Drucken, auch Etikette für Lagerfächer mit Barcode-Funktion&lt;br /&gt;
* Schneller Etikettendruck um mit einem Etikettendrucker schnell einen Aufkleber zu generieren&lt;br /&gt;
* Drucken von Bestellungen, Projekten und Reparaturberichte anhand Vorlagen&lt;br /&gt;
* Export- / Importfunktionen&lt;br /&gt;
* nahezu komplett über die Tastatur bedienbar&lt;br /&gt;
* Extras: Timer/Stoppuhr, Datumsanzeige, Taschenrechner, Widerstandsteiler, LM317/LM350, SMD Zahlencode, Statistik&lt;br /&gt;
* Übersetzbar in andere Sprachen, derzeit Englisch verfügbar.&lt;br /&gt;
* F1 Hilfe über alle Funktionen&lt;br /&gt;
* USB-Stick tauglich und portabel&lt;br /&gt;
* Windows / Linux (32/64 Bit) kombinierbar&lt;br /&gt;
* Mehrbenutzertauglich dank Datenbanken, Wechsel der Datenbank innerhalb weniger Minuten machbar.&lt;br /&gt;
* Einfach zu administrieren da die Konfiguration in einer INI Datei abgelegt ist und EleLa nur ein Verzeichnis mit wenigen Dateien benötigt.&lt;br /&gt;
* Tauglich für ISO9001 zertifizierte Firmen, mit speziellem Parameter aktivierbar&lt;br /&gt;
* Datensicherung der SQL-Server Datenbank ist in EleLa integriert.&lt;br /&gt;
* Bei Updates wird EleLa selbstständig die Datenbank aktualisieren, kein Handeingriff nötig.&lt;br /&gt;
* Optionale Datenabfrage über Web-Browser mit EleLaPHP (MySQL)&lt;br /&gt;
* Freeware ohne Limit&lt;br /&gt;
&lt;br /&gt;
== Download ==&lt;br /&gt;
&lt;br /&gt;
[[Media: Setup.zip | Version 2.2.13924]], als Setup Paket (ca. 8,2MB) (die aktuellste gibt es immer auf der Homepage vom Autor)&lt;br /&gt;
&lt;br /&gt;
Alternativ kann die Software auch von der [http://www.mmvisual.de/elela/ Homepage des Autors] geladen werden. Auf dieser Seite kann auch eine native Linux-Version geladen werden.&lt;br /&gt;
&lt;br /&gt;
Eine ausführliche Beschreibung mit Bildern findet sich auch auf der [http://www.mmvisual.de Homepage von Markus].&lt;br /&gt;
&lt;br /&gt;
Installation Setup-Paket:&lt;br /&gt;
* Neuinstallation / Update (wird automatisch erkannt)&lt;br /&gt;
* Anhand dem Betriebssystem wird automatisch die 32 oder 64 Bit EXE installiert&lt;br /&gt;
* Sprache Deutsch, Englisch, Deutsch für Warenlager&lt;br /&gt;
* Einrichtung Datenbank, bei MySQL/PostgreSQL mit Zugangsdaten&lt;br /&gt;
* Start-Datenbank (Elektronik oder Warenlager) wird nur bei Neuinstallation automatisch installiert&lt;br /&gt;
* Einrichtung Handbuch-Verzeichnis&lt;br /&gt;
* Bei Uninstall kann entschieden werden ob die Datenbank intakt gelassen werden soll&lt;br /&gt;
* Für die erste Benutzung empfehle ich das Setup-Paket mit der Datenbank-Option SQLite. Weitere Informationen können Sie nach der Installation in der Hilfe unter &amp;quot;Installation&amp;quot; nachlesen. Dazu EleLa starten und die F1 Taste drücken.&lt;br /&gt;
&lt;br /&gt;
Wichtig:&lt;br /&gt;
Sollten Sie bereits EleLa V1.x.xxxxx nutzen, so muss VOR der Installation ein Backup der Datenbank vollzogen werden.&lt;br /&gt;
&lt;br /&gt;
Wenn man eine Datenbank, z.B. PostgreSQL mit 32 Bit installiert hat, so muss die EXE auch mit 32Bit genommen werden. Ansonsten kann die EXE die DLL nicht laden. Sollte das Setup die 64 Bit Version installiert haben, so kann jederzeit die 32 Bit Version von der Homepage des Autors oder mittels Versionsabfrage geladen werden.&lt;br /&gt;
&lt;br /&gt;
Hier ein Auszug daraus:&lt;br /&gt;
&lt;br /&gt;
== Betriebssystem ==&lt;br /&gt;
&lt;br /&gt;
EleLa wurde mit Lazarus für Windows programmiert und wurde auch mit Lazarus für Linux kompilliert. In diesem Artikel kann nur die Windows-Version geladen werden, die Linux-Version gibt es nur von der [http://www.mmvisual.de/elela/ Homepage des Autors].&lt;br /&gt;
&lt;br /&gt;
== Bauteile verwalten ==&lt;br /&gt;
&lt;br /&gt;
In der Bauteilverwaltung werden alle Bauteile angelegt, Lager und Gehäusevarianten verwaltet und Lieferanten eingetragen.&lt;br /&gt;
&lt;br /&gt;
In der Bauteil-Übersicht wird von einer Bauteilvariante nur der Haupt-Typ eingetragen, z.B. 7400. Die Untertypen wie z.B. 74HC00, 74LVX00 unter &amp;quot;Lager / Gehäuse&amp;quot;. Oder unter Bauteil wird nur der Widerstandswert &amp;quot;R 4,7 KOhm&amp;quot; eingetragen, alle Leistungsklassen und Gehäuseformen kommen nach &amp;quot;Lager / Gehäuse&amp;quot;.&lt;br /&gt;
Der Vorteil liegt auf der Hand, die Bauteileliste enthält dadurch viel weniger Einträge und ist somit übersichtlicher. Gleichzeitig sieht man unter &amp;quot;Lager / Gehäuse&amp;quot; alle Typen mit der gleichen Funktion. &lt;br /&gt;
&lt;br /&gt;
[[Datei: Bauteile.png]]&lt;br /&gt;
&lt;br /&gt;
Über die Filtermöglichkeit anhand dem Typ oder einem Bezeichnungstext kann sehr schnell ein Bauteil mit ähnlichen Eigenschaften gefunden werden.&lt;br /&gt;
&lt;br /&gt;
=== Lager / Gehäuse ===&lt;br /&gt;
&lt;br /&gt;
Hier werden die Bauteilvarianten, Lagermengen und Gehäuseformen gespeichert.&lt;br /&gt;
&lt;br /&gt;
[[Datei: Bauteile_LG.png]]&lt;br /&gt;
&lt;br /&gt;
Als Kennzeichnung vom Bauteil können Barcode, Artikel-Nr sowie eine zweite Artikel-Nr eingetragen werden.&lt;br /&gt;
&lt;br /&gt;
=== Lieferanten ===&lt;br /&gt;
&lt;br /&gt;
Hier wird dem Lager/Gehäuse ein Lieferant zugeordnet und der Einkaufspreis ab Menge (Preisstaffel), VPE und Stückelung eingetragen. Ist dem Lieferant eine Internet-Adresse hinterlegt, so kann direkt der Hersteller mit dem Artikel geöffnet werden.&lt;br /&gt;
&lt;br /&gt;
=== Bestellungen ===&lt;br /&gt;
&lt;br /&gt;
Übersicht aller Bestellungen zu diesem Bauteil, auch archivierte (ältere).&lt;br /&gt;
&lt;br /&gt;
=== Projekte ===&lt;br /&gt;
&lt;br /&gt;
Übersicht aller Projekte in denen das Bauteil verwendet wird.&lt;br /&gt;
&lt;br /&gt;
== Projektverwaltung ==&lt;br /&gt;
&lt;br /&gt;
Hier können Stücklisten, Softwareprojekte und auch Geräte verwaltet werden.&lt;br /&gt;
&lt;br /&gt;
[[Datei: Projekt.png]]&lt;br /&gt;
&lt;br /&gt;
Links im Baum werden alle Projekte angezeigt und man kann Projekte zusammen fassen was für einen besseren Überblick sorgt.&lt;br /&gt;
&lt;br /&gt;
Zusätzlich gibt es Funktionen um den Lagerbestand vor einer Produktion zu prüfen und nach der Produktion ab zu buchen. Das fertige Projekt kann wiederum als Bauteil geführt werden, deren Bestand nach der Produktion automatisch erhöht wird. Die bestückte Platine ist somit wiederum ein Bauteil mit Lagerverwaltung, das in ein Fertiggerät (Projekt mit Produktion Fertiggerät) hinzugefügt werden kann.&lt;br /&gt;
&lt;br /&gt;
Unter Positionen können Bauteile eingetragen werden, auch Bauteile die nicht unter &amp;quot;Bauteile - F2&amp;quot; deklariert sind. Unterstützung der Produktion indem der Bearbeitungsstatus hinterlegt werden kann. Jede Position kann als Bestückungsvariante gekennzeichnet werden somit kann eine Stückliste für unterschiedliche Ausführungen verwendet werden.&lt;br /&gt;
Jede Position erhält ein Status, mit dem man für jedes Bauteil den Bearbeitungsstatus setzen kann. Somit wird auch bei komplexen Platinen in der Handbestückung / Einrichtung Bestückungsautomat nichts vergessen.&lt;br /&gt;
Importfunktion von Stücklisten direkt vom CAD Programm mit Kennzeichnung von Bauteilen die nicht mehr in der Import-Stückliste enthalten sind. Direkte Zuordnung anhand der ArtikelNr oder dem Barcode möglich.&lt;br /&gt;
&lt;br /&gt;
Unter Historie können Änderungen (auch Software) dokumentiert werden. Wenn ein Termin in der Zukunft eingegeben wird, so zeigt EleLa ein Hinweis bei fälligem Termin.&lt;br /&gt;
Alternativ kann die Historie auch als Reparaturliste von Geräten verwendet werden, daher gibt es relativ viele Eingabemöglichkeiten und eine Druckfunktion für Einzelpositionen. Jedem Reparatur- (Historien-) Eintrag können Bilder hinterlegt werden um zu dokumentieren.&lt;br /&gt;
&lt;br /&gt;
Da hier überall eine Seriennummer eingetragen werden kann eignet sich dies bestens als Gerätedatenbank.&lt;br /&gt;
&lt;br /&gt;
== Bestellung ==&lt;br /&gt;
&lt;br /&gt;
Hier wird vorgemerkt welche Artikel zu bestellen sind, welche bestellt wurden und welche geliefert und bereits eingelagert sind.&lt;br /&gt;
&lt;br /&gt;
[[Datei: Bestellung.png]]&lt;br /&gt;
&lt;br /&gt;
Die Bestell-Vorschlagliste kann entweder von &amp;quot;Hand&amp;quot; gefüllt werden, indem die &amp;quot;Neu&amp;quot; Taste gedrückt wird oder aus &amp;quot;Bauteile&amp;quot; heraus mit der &amp;quot;Warenkorb-Taste&amp;quot;. Wichtig ist, dass auch Bauteile aufgeschrieben werden können die gar nicht als &amp;quot;Bauteil&amp;quot; angelegt sind.&lt;br /&gt;
&lt;br /&gt;
Als Status kann &amp;quot;offen&amp;quot; / &amp;quot;bestellt&amp;quot; / &amp;quot;Teillieferung&amp;quot; / &amp;quot;geliefert&amp;quot; / &amp;quot;eingelagert&amp;quot; und &amp;quot;später&amp;quot; gesetzt werden.&lt;br /&gt;
&lt;br /&gt;
Je Bauteil kann man sich zwei Lieferanten vormerken, bei denen man bestellen möchte. (Unter Bauteil kann man dennoch eine unbegrenzte Anzahl von Lieferanten hinterlegen.)&lt;br /&gt;
&lt;br /&gt;
Mit Exportieren kann direkt ein Reichelt-Warenkorb exportiert und importiert werden.&lt;br /&gt;
&lt;br /&gt;
Mit Archivieren werden abgeschlossene Bestellvorgänge versteckt, die jederzeit wieder aktiviert oder erneut bestellt werden können.&lt;br /&gt;
&lt;br /&gt;
== Gehäuse verwalten ==&lt;br /&gt;
&lt;br /&gt;
Hier werden alle Gehäuse Typen der Bauteile angelegt. Zu jedem Gehäuse können auch mehrere Bilder hinterlegt werden.&lt;br /&gt;
&lt;br /&gt;
[[Datei: Gehause.png]]&lt;br /&gt;
&lt;br /&gt;
In der Tabelle rechts sind alle Bauteile ersichtlich, die mit dem Gehäuse verfügbar sind.&lt;br /&gt;
&lt;br /&gt;
Mit der Import-/Exportfunktion können Gehäuse incl. Bilder von Gehäusebibliotheken oder Freunden ausgetauscht werden.&lt;br /&gt;
&lt;br /&gt;
== Typ - Kategorie der Bauteile ==&lt;br /&gt;
&lt;br /&gt;
Hier werden die Kategorien angelegt die ein Bauteil annehmen kann.&lt;br /&gt;
&lt;br /&gt;
[[Datei: Typ.png]]&lt;br /&gt;
&lt;br /&gt;
Wichtig ist hierbei dass es nicht zu viele Untertypen gibt, denn man kann anhand dieser Typeinordnung ein Bauteil filtern. Daher sollte dies relativ &amp;quot;allgemein&amp;quot; gehalten werden.&lt;br /&gt;
&lt;br /&gt;
Der Kategorie können Bilder zugeordnet werden, diese werden unter &amp;quot;Bauteil - F2&amp;quot; beim Bauteil gezeigt, wenn dem Bauteil kein individuelles Bild zugeordnet wurde. Somit braucht man bei einem Kondensator nur ein mal ein Bild zuordnen und das Bild wird bei allen Bauteilen mit Typ Kondensatoren unter &amp;quot;Bauteile&amp;quot; gezeigt.&lt;br /&gt;
&lt;br /&gt;
In der Tabelle werden alle Bauteile gezeigt, die der Typ-Kategorie zugeordnet sind. So lässt es sich gut in den bestehenden Bauteilen stöbern und man findet schneller einen Ersatztyp der bereits auf Lager ist und spart sich so eine extra Bestellung und viel Arbeit.&lt;br /&gt;
&lt;br /&gt;
== Extra-Funktionen ==&lt;br /&gt;
&lt;br /&gt;
Hier sind die Rechner-Funktionen Timer/Stoppuhr, Datumsanzeige, Taschenrechner, Widerstandsteiler, LM317/LM350 Widerstandsrechner, SMD Zahlencode verfügbar.&lt;br /&gt;
&lt;br /&gt;
Hier können die Historien aller Projekte verwaltet und Tipps in die Wissens-Datenbank eingetragen werden. Die Wissens-Einträge können nach Themen gruppiert werden wodurch das Suchen einfacher wird.&lt;br /&gt;
&lt;br /&gt;
Die gesamte Datenbank kann mittels SQL-Befehle als CSV oder XML Dateien exportiert werden, dies garantiert eine einfache Weiterverwendung sämtlicher Daten in anderen Systemen.&lt;br /&gt;
&lt;br /&gt;
Unter Info ist die Statistik in der jederzeit die Artikelanzahl und deren hinterlegte Wert sichtbar ist.&lt;br /&gt;
&lt;br /&gt;
Überall sind Sprünge und Querverweise hinterlegt die direkt angesprungen werden können. Filterfunktionen mit der &amp;quot;Y&amp;quot; Taste um anhand einem Kriterium die Auswahl ein zu grenzen.&lt;br /&gt;
&lt;br /&gt;
Viele Memo-Text Felder um alles eingeben zu können, Erkennung von Links auch aus dem Memo um auf mehr Dokumente verweisen zu können.&lt;br /&gt;
&lt;br /&gt;
Umfangreiche Hilfe Datei in der alle Funktionen detailiert und mit Tipps beschrieben sind. Unbedingt sollte in der Hilfe unter &amp;quot;Allgemeine Infos&amp;quot; gelesen werden, hier stehen allgemein gültige Infos die das Arbeiten mit EleLa deutlich vereinfachen.&lt;br /&gt;
&lt;br /&gt;
== Weblinks, Foren, Communities ==&lt;br /&gt;
&lt;br /&gt;
* [http://www.mikrocontroller.net/topic/265580 Diskussion zum Artikel]&lt;br /&gt;
* [http://www.mmvisual.de Homepage Autor]&lt;br /&gt;
* [http://www.mikrocontroller.net/topic/267979 Project EleLa RS232 / RS485 Magazin LED Register]&lt;br /&gt;
* [[Part-DB RW - Lagerverwaltung]] ein anderes Lagerverwaltungsprogramm, PHP-Basiert&lt;br /&gt;
&lt;br /&gt;
== Publikationen / Weiterempfehlungen ==&lt;br /&gt;
&lt;br /&gt;
* [http://www.jtronics.de/software/elela-elektronik-lagerverwaltung.html http://www.jtronics.de]&lt;br /&gt;
* [http://schnittpunkt2012.blogspot.com/2010/11/weitere-tipps-zur-krisenvorsorge.html http://schnittpunkt2012.blogspot.com]&lt;br /&gt;
* [http://www.elektor.de/jahrgang/2011/februar/mailbox-februar-2011.1674094.lynkx? http://www.elektor.de]&lt;br /&gt;
* [http://www.stromflo.de/dokuwiki/doku.php?id=elela http://www.stromflo.de]&lt;br /&gt;
&lt;br /&gt;
[[Category:Projekte]]&lt;br /&gt;
[[Category:Entwicklungstools]]&lt;br /&gt;
[[Category:Bauteile]]&lt;/div&gt;</summary>
		<author><name>Debegr92</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=Elektronik_Lagerverwaltung&amp;diff=92618</id>
		<title>Elektronik Lagerverwaltung</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=Elektronik_Lagerverwaltung&amp;diff=92618"/>
		<updated>2016-03-29T20:45:56Z</updated>

		<summary type="html">&lt;p&gt;Debegr92: Link für die Versionen geändert. Alter Link führt auf falsche Versionen...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== EleLa - Allgemeine Infos ==&lt;br /&gt;
&lt;br /&gt;
EleLa die Elektronik Lagerverwaltung für Hobby bis hin zu kleinen Unternehmen. Die&lt;br /&gt;
Software arbeitet sehr schnell und ist leicht bedienbar. Selbst ungeübte&lt;br /&gt;
PC-User finden sich damit schnell zurecht und EleLa ist dennoch ein&lt;br /&gt;
mächtiges Tool das viele andere in den Schatten stellt.&lt;br /&gt;
&lt;br /&gt;
* Bauteile, mit Gehäuse/Varianten, Lagerplätze&lt;br /&gt;
* Typunterscheidung / Kategorien&lt;br /&gt;
* Definition Bauteil als &amp;quot;Bauteil&amp;quot;, &amp;quot;Arbeitszeit&amp;quot; oder &amp;quot;Kleinmaterial&amp;quot; mit jeweils unterschiedlicher Behandlung für Projektplanung und Mengen Berechnung&lt;br /&gt;
* Handbuch-Funktion um Datenblätter schneller zu finden&lt;br /&gt;
* Gehäuse, mit Import/Export Funktion für externe Gehäusebibliotheken&lt;br /&gt;
* Lagerplätze, Kisten, Boxen usw.&lt;br /&gt;
* mehrere Lieferanten je Bauteil, mit VPE und Staffelpreise, Bestellnummern, Rabatt&lt;br /&gt;
* Öffnen der Lieferantenseite anhand der Bestellnummer&lt;br /&gt;
* Adressen mit Hersteller, Lieferanten, Kontakte (viele Eingabefelder)&lt;br /&gt;
* Bestellungen / Warenkorbfunktion der Lieferanten / Teillieferungen / Auftragsnummer / Bestellnummer Export / Bestellarchivierung&lt;br /&gt;
* Projektverwaltung / Reparaturverwaltung / Positionen / Ansicht Bauteilposition in Bild&lt;br /&gt;
* Geräteverwaltung mit Seriennummer und Historie&lt;br /&gt;
* Historie, auch von Projekten und Reparaturen, Logbuch, ToDo Liste&lt;br /&gt;
* Kostenvoranschlage/Angebotkalkulation von Projekten / Geräten&lt;br /&gt;
* Wissens-Datenbank&lt;br /&gt;
* mehrere Bilder zu nahezu allen Funktionen hinterlegbar&lt;br /&gt;
* Suche&lt;br /&gt;
* Drucken, auch Etikette für Lagerfächer mit Barcode-Funktion&lt;br /&gt;
* Schneller Etikettendruck um mit einem Etikettendrucker schnell einen Aufkleber zu generieren&lt;br /&gt;
* Drucken von Bestellungen, Projekten und Reparaturberichte anhand Vorlagen&lt;br /&gt;
* Export- / Importfunktionen&lt;br /&gt;
* nahezu komplett über die Tastatur bedienbar&lt;br /&gt;
* Extras: Timer/Stoppuhr, Datumsanzeige, Taschenrechner, Widerstandsteiler, LM317/LM350, SMD Zahlencode, Statistik&lt;br /&gt;
* Übersetzbar in andere Sprachen, derzeit Englisch verfügbar.&lt;br /&gt;
* F1 Hilfe über alle Funktionen&lt;br /&gt;
* USB-Stick tauglich und portabel&lt;br /&gt;
* Windows / Linux (32/64 Bit) kombinierbar&lt;br /&gt;
* Mehrbenutzertauglich dank Datenbanken, Wechsel der Datenbank innerhalb weniger Minuten machbar.&lt;br /&gt;
* Einfach zu administrieren da die Konfiguration in einer INI Datei abgelegt ist und EleLa nur ein Verzeichnis mit wenigen Dateien benötigt.&lt;br /&gt;
* Tauglich für ISO9001 zertifizierte Firmen, mit speziellem Parameter aktivierbar&lt;br /&gt;
* Datensicherung der SQL-Server Datenbank ist in EleLa integriert.&lt;br /&gt;
* Bei Updates wird EleLa selbstständig die Datenbank aktualisieren, kein Handeingriff nötig.&lt;br /&gt;
* Optionale Datenabfrage über Web-Browser mit EleLaPHP (MySQL)&lt;br /&gt;
* Freeware ohne Limit&lt;br /&gt;
&lt;br /&gt;
== Download ==&lt;br /&gt;
&lt;br /&gt;
[[Media: Setup.zip | Version 2.2.13924]], als Setup Paket (ca. 8,2MB) (die aktuellste gibt es immer auf der Homepage vom Autor)&lt;br /&gt;
&lt;br /&gt;
Alternativ kann die Software auch von der [http://www.mmvisual.de Homepage des Autors] geladen werden. Auf dieser Seite kann auch eine native Linux-Version geladen werden.&lt;br /&gt;
&lt;br /&gt;
Installation Setup-Paket:&lt;br /&gt;
* Neuinstallation / Update (wird automatisch erkannt)&lt;br /&gt;
* Anhand dem Betriebssystem wird automatisch die 32 oder 64 Bit EXE installiert&lt;br /&gt;
* Sprache Deutsch, Englisch, Deutsch für Warenlager&lt;br /&gt;
* Einrichtung Datenbank, bei MySQL/PostgreSQL mit Zugangsdaten&lt;br /&gt;
* Start-Datenbank (Elektronik oder Warenlager) wird nur bei Neuinstallation automatisch installiert&lt;br /&gt;
* Einrichtung Handbuch-Verzeichnis&lt;br /&gt;
* Bei Uninstall kann entschieden werden ob die Datenbank intakt gelassen werden soll&lt;br /&gt;
* Für die erste Benutzung empfehle ich das Setup-Paket mit der Datenbank-Option SQLite. Weitere Informationen können Sie nach der Installation in der Hilfe unter &amp;quot;Installation&amp;quot; nachlesen. Dazu EleLa starten und die F1 Taste drücken.&lt;br /&gt;
&lt;br /&gt;
Wichtig:&lt;br /&gt;
Sollten Sie bereits EleLa V1.x.xxxxx nutzen, so muss VOR der Installation ein Backup der Datenbank vollzogen werden.&lt;br /&gt;
&lt;br /&gt;
Wenn man eine Datenbank, z.B. PostgreSQL mit 32 Bit installiert hat, so muss die EXE auch mit 32Bit genommen werden. Ansonsten kann die EXE die DLL nicht laden. Sollte das Setup die 64 Bit Version installiert haben, so kann jederzeit die 32 Bit Version von der Homepage des Autors oder mittels Versionsabfrage geladen werden.&lt;br /&gt;
&lt;br /&gt;
Hier ein Auszug daraus:&lt;br /&gt;
&lt;br /&gt;
== Betriebssystem ==&lt;br /&gt;
&lt;br /&gt;
EleLa wurde mit Lazarus für Windows programmiert und wurde auch mit Lazarus für Linux kompilliert. In diesem Artikel kann nur die Windows-Version geladen werden, die Linux-Version gibt es nur von der [http://www.mmvisual.de/elela/ Homepage des Autors].&lt;br /&gt;
&lt;br /&gt;
== Bauteile verwalten ==&lt;br /&gt;
&lt;br /&gt;
In der Bauteilverwaltung werden alle Bauteile angelegt, Lager und Gehäusevarianten verwaltet und Lieferanten eingetragen.&lt;br /&gt;
&lt;br /&gt;
In der Bauteil-Übersicht wird von einer Bauteilvariante nur der Haupt-Typ eingetragen, z.B. 7400. Die Untertypen wie z.B. 74HC00, 74LVX00 unter &amp;quot;Lager / Gehäuse&amp;quot;. Oder unter Bauteil wird nur der Widerstandswert &amp;quot;R 4,7 KOhm&amp;quot; eingetragen, alle Leistungsklassen und Gehäuseformen kommen nach &amp;quot;Lager / Gehäuse&amp;quot;.&lt;br /&gt;
Der Vorteil liegt auf der Hand, die Bauteileliste enthält dadurch viel weniger Einträge und ist somit übersichtlicher. Gleichzeitig sieht man unter &amp;quot;Lager / Gehäuse&amp;quot; alle Typen mit der gleichen Funktion. &lt;br /&gt;
&lt;br /&gt;
[[Datei: Bauteile.png]]&lt;br /&gt;
&lt;br /&gt;
Über die Filtermöglichkeit anhand dem Typ oder einem Bezeichnungstext kann sehr schnell ein Bauteil mit ähnlichen Eigenschaften gefunden werden.&lt;br /&gt;
&lt;br /&gt;
=== Lager / Gehäuse ===&lt;br /&gt;
&lt;br /&gt;
Hier werden die Bauteilvarianten, Lagermengen und Gehäuseformen gespeichert.&lt;br /&gt;
&lt;br /&gt;
[[Datei: Bauteile_LG.png]]&lt;br /&gt;
&lt;br /&gt;
Als Kennzeichnung vom Bauteil können Barcode, Artikel-Nr sowie eine zweite Artikel-Nr eingetragen werden.&lt;br /&gt;
&lt;br /&gt;
=== Lieferanten ===&lt;br /&gt;
&lt;br /&gt;
Hier wird dem Lager/Gehäuse ein Lieferant zugeordnet und der Einkaufspreis ab Menge (Preisstaffel), VPE und Stückelung eingetragen. Ist dem Lieferant eine Internet-Adresse hinterlegt, so kann direkt der Hersteller mit dem Artikel geöffnet werden.&lt;br /&gt;
&lt;br /&gt;
=== Bestellungen ===&lt;br /&gt;
&lt;br /&gt;
Übersicht aller Bestellungen zu diesem Bauteil, auch archivierte (ältere).&lt;br /&gt;
&lt;br /&gt;
=== Projekte ===&lt;br /&gt;
&lt;br /&gt;
Übersicht aller Projekte in denen das Bauteil verwendet wird.&lt;br /&gt;
&lt;br /&gt;
== Projektverwaltung ==&lt;br /&gt;
&lt;br /&gt;
Hier können Stücklisten, Softwareprojekte und auch Geräte verwaltet werden.&lt;br /&gt;
&lt;br /&gt;
[[Datei: Projekt.png]]&lt;br /&gt;
&lt;br /&gt;
Links im Baum werden alle Projekte angezeigt und man kann Projekte zusammen fassen was für einen besseren Überblick sorgt.&lt;br /&gt;
&lt;br /&gt;
Zusätzlich gibt es Funktionen um den Lagerbestand vor einer Produktion zu prüfen und nach der Produktion ab zu buchen. Das fertige Projekt kann wiederum als Bauteil geführt werden, deren Bestand nach der Produktion automatisch erhöht wird. Die bestückte Platine ist somit wiederum ein Bauteil mit Lagerverwaltung, das in ein Fertiggerät (Projekt mit Produktion Fertiggerät) hinzugefügt werden kann.&lt;br /&gt;
&lt;br /&gt;
Unter Positionen können Bauteile eingetragen werden, auch Bauteile die nicht unter &amp;quot;Bauteile - F2&amp;quot; deklariert sind. Unterstützung der Produktion indem der Bearbeitungsstatus hinterlegt werden kann. Jede Position kann als Bestückungsvariante gekennzeichnet werden somit kann eine Stückliste für unterschiedliche Ausführungen verwendet werden.&lt;br /&gt;
Jede Position erhält ein Status, mit dem man für jedes Bauteil den Bearbeitungsstatus setzen kann. Somit wird auch bei komplexen Platinen in der Handbestückung / Einrichtung Bestückungsautomat nichts vergessen.&lt;br /&gt;
Importfunktion von Stücklisten direkt vom CAD Programm mit Kennzeichnung von Bauteilen die nicht mehr in der Import-Stückliste enthalten sind. Direkte Zuordnung anhand der ArtikelNr oder dem Barcode möglich.&lt;br /&gt;
&lt;br /&gt;
Unter Historie können Änderungen (auch Software) dokumentiert werden. Wenn ein Termin in der Zukunft eingegeben wird, so zeigt EleLa ein Hinweis bei fälligem Termin.&lt;br /&gt;
Alternativ kann die Historie auch als Reparaturliste von Geräten verwendet werden, daher gibt es relativ viele Eingabemöglichkeiten und eine Druckfunktion für Einzelpositionen. Jedem Reparatur- (Historien-) Eintrag können Bilder hinterlegt werden um zu dokumentieren.&lt;br /&gt;
&lt;br /&gt;
Da hier überall eine Seriennummer eingetragen werden kann eignet sich dies bestens als Gerätedatenbank.&lt;br /&gt;
&lt;br /&gt;
== Bestellung ==&lt;br /&gt;
&lt;br /&gt;
Hier wird vorgemerkt welche Artikel zu bestellen sind, welche bestellt wurden und welche geliefert und bereits eingelagert sind.&lt;br /&gt;
&lt;br /&gt;
[[Datei: Bestellung.png]]&lt;br /&gt;
&lt;br /&gt;
Die Bestell-Vorschlagliste kann entweder von &amp;quot;Hand&amp;quot; gefüllt werden, indem die &amp;quot;Neu&amp;quot; Taste gedrückt wird oder aus &amp;quot;Bauteile&amp;quot; heraus mit der &amp;quot;Warenkorb-Taste&amp;quot;. Wichtig ist, dass auch Bauteile aufgeschrieben werden können die gar nicht als &amp;quot;Bauteil&amp;quot; angelegt sind.&lt;br /&gt;
&lt;br /&gt;
Als Status kann &amp;quot;offen&amp;quot; / &amp;quot;bestellt&amp;quot; / &amp;quot;Teillieferung&amp;quot; / &amp;quot;geliefert&amp;quot; / &amp;quot;eingelagert&amp;quot; und &amp;quot;später&amp;quot; gesetzt werden.&lt;br /&gt;
&lt;br /&gt;
Je Bauteil kann man sich zwei Lieferanten vormerken, bei denen man bestellen möchte. (Unter Bauteil kann man dennoch eine unbegrenzte Anzahl von Lieferanten hinterlegen.)&lt;br /&gt;
&lt;br /&gt;
Mit Exportieren kann direkt ein Reichelt-Warenkorb exportiert und importiert werden.&lt;br /&gt;
&lt;br /&gt;
Mit Archivieren werden abgeschlossene Bestellvorgänge versteckt, die jederzeit wieder aktiviert oder erneut bestellt werden können.&lt;br /&gt;
&lt;br /&gt;
== Gehäuse verwalten ==&lt;br /&gt;
&lt;br /&gt;
Hier werden alle Gehäuse Typen der Bauteile angelegt. Zu jedem Gehäuse können auch mehrere Bilder hinterlegt werden.&lt;br /&gt;
&lt;br /&gt;
[[Datei: Gehause.png]]&lt;br /&gt;
&lt;br /&gt;
In der Tabelle rechts sind alle Bauteile ersichtlich, die mit dem Gehäuse verfügbar sind.&lt;br /&gt;
&lt;br /&gt;
Mit der Import-/Exportfunktion können Gehäuse incl. Bilder von Gehäusebibliotheken oder Freunden ausgetauscht werden.&lt;br /&gt;
&lt;br /&gt;
== Typ - Kategorie der Bauteile ==&lt;br /&gt;
&lt;br /&gt;
Hier werden die Kategorien angelegt die ein Bauteil annehmen kann.&lt;br /&gt;
&lt;br /&gt;
[[Datei: Typ.png]]&lt;br /&gt;
&lt;br /&gt;
Wichtig ist hierbei dass es nicht zu viele Untertypen gibt, denn man kann anhand dieser Typeinordnung ein Bauteil filtern. Daher sollte dies relativ &amp;quot;allgemein&amp;quot; gehalten werden.&lt;br /&gt;
&lt;br /&gt;
Der Kategorie können Bilder zugeordnet werden, diese werden unter &amp;quot;Bauteil - F2&amp;quot; beim Bauteil gezeigt, wenn dem Bauteil kein individuelles Bild zugeordnet wurde. Somit braucht man bei einem Kondensator nur ein mal ein Bild zuordnen und das Bild wird bei allen Bauteilen mit Typ Kondensatoren unter &amp;quot;Bauteile&amp;quot; gezeigt.&lt;br /&gt;
&lt;br /&gt;
In der Tabelle werden alle Bauteile gezeigt, die der Typ-Kategorie zugeordnet sind. So lässt es sich gut in den bestehenden Bauteilen stöbern und man findet schneller einen Ersatztyp der bereits auf Lager ist und spart sich so eine extra Bestellung und viel Arbeit.&lt;br /&gt;
&lt;br /&gt;
== Extra-Funktionen ==&lt;br /&gt;
&lt;br /&gt;
Hier sind die Rechner-Funktionen Timer/Stoppuhr, Datumsanzeige, Taschenrechner, Widerstandsteiler, LM317/LM350 Widerstandsrechner, SMD Zahlencode verfügbar.&lt;br /&gt;
&lt;br /&gt;
Hier können die Historien aller Projekte verwaltet und Tipps in die Wissens-Datenbank eingetragen werden. Die Wissens-Einträge können nach Themen gruppiert werden wodurch das Suchen einfacher wird.&lt;br /&gt;
&lt;br /&gt;
Die gesamte Datenbank kann mittels SQL-Befehle als CSV oder XML Dateien exportiert werden, dies garantiert eine einfache Weiterverwendung sämtlicher Daten in anderen Systemen.&lt;br /&gt;
&lt;br /&gt;
Unter Info ist die Statistik in der jederzeit die Artikelanzahl und deren hinterlegte Wert sichtbar ist.&lt;br /&gt;
&lt;br /&gt;
Überall sind Sprünge und Querverweise hinterlegt die direkt angesprungen werden können. Filterfunktionen mit der &amp;quot;Y&amp;quot; Taste um anhand einem Kriterium die Auswahl ein zu grenzen.&lt;br /&gt;
&lt;br /&gt;
Viele Memo-Text Felder um alles eingeben zu können, Erkennung von Links auch aus dem Memo um auf mehr Dokumente verweisen zu können.&lt;br /&gt;
&lt;br /&gt;
Umfangreiche Hilfe Datei in der alle Funktionen detailiert und mit Tipps beschrieben sind. Unbedingt sollte in der Hilfe unter &amp;quot;Allgemeine Infos&amp;quot; gelesen werden, hier stehen allgemein gültige Infos die das Arbeiten mit EleLa deutlich vereinfachen.&lt;br /&gt;
&lt;br /&gt;
== Weblinks, Foren, Communities ==&lt;br /&gt;
&lt;br /&gt;
* [http://www.mikrocontroller.net/topic/265580 Diskussion zum Artikel]&lt;br /&gt;
* [http://www.mmvisual.de Homepage Autor]&lt;br /&gt;
* [http://www.mikrocontroller.net/topic/267979 Project EleLa RS232 / RS485 Magazin LED Register]&lt;br /&gt;
* [[Part-DB RW - Lagerverwaltung]] ein anderes Lagerverwaltungsprogramm, PHP-Basiert&lt;br /&gt;
&lt;br /&gt;
== Publikationen / Weiterempfehlungen ==&lt;br /&gt;
&lt;br /&gt;
* [http://www.jtronics.de/software/elela-elektronik-lagerverwaltung.html http://www.jtronics.de]&lt;br /&gt;
* [http://schnittpunkt2012.blogspot.com/2010/11/weitere-tipps-zur-krisenvorsorge.html http://schnittpunkt2012.blogspot.com]&lt;br /&gt;
* [http://www.elektor.de/jahrgang/2011/februar/mailbox-februar-2011.1674094.lynkx? http://www.elektor.de]&lt;br /&gt;
* [http://www.stromflo.de/dokuwiki/doku.php?id=elela http://www.stromflo.de]&lt;br /&gt;
&lt;br /&gt;
[[Category:Projekte]]&lt;br /&gt;
[[Category:Entwicklungstools]]&lt;br /&gt;
[[Category:Bauteile]]&lt;/div&gt;</summary>
		<author><name>Debegr92</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=Entprellung&amp;diff=81180</id>
		<title>Entprellung</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=Entprellung&amp;diff=81180"/>
		<updated>2014-01-27T15:34:25Z</updated>

		<summary type="html">&lt;p&gt;Debegr92: /* Flankenerkennung */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Problembeschreibung ==&lt;br /&gt;
Mechanische [[Schalter]] wie [[Drehgeber]] neigen beim Ein- und Ausschalten zum sogenannten &#039;&#039;&#039;Prellen&#039;&#039;&#039;, d.h sie schalten schnell mehrfach aus und ein, verursacht durch mechanische Vibrationen des Schaltkontaktes, sofern sie nicht dagegen geschützt sind. Vereinfacht dargestellt, sieht eine von einem Schalter oder Taster geschaltete Spannung beim Schalten wie folgt aus:&lt;br /&gt;
&lt;br /&gt;
[[Bild:Entprellen.png]]&lt;br /&gt;
&lt;br /&gt;
Für die Vermeidung bzw. Auswertung dieses unsauberen Signals gibt es verschiedene Ansätze:&lt;br /&gt;
&lt;br /&gt;
== Hardwareentprellung ==&lt;br /&gt;
&lt;br /&gt;
===Prellfreie Schalter===&lt;br /&gt;
&lt;br /&gt;
Für Spezialanwendungen hält die elektromechanische Industrie verschiedene Sonderkonstruktionen bereit, die saubere Schaltzustände nach Aussen generieren, indem sie entweder eine mechanische Dämpfung in Form eines selbsthemmenden Federmechanismus oder eine integrierte elektronische Signalverzögerung benutzen.&lt;br /&gt;
&lt;br /&gt;
Solche Systeme sind jedoch teuer und werden meist nur im Leistungsbereich eingesetzt.&lt;br /&gt;
&lt;br /&gt;
===Wechselschalter===&lt;br /&gt;
&lt;br /&gt;
Für die Entprellung von Wechselschaltern (engl. Double Throw Switch) kann ein klassisches RS-[[Flipflop]] genutzt werden. Bei dieser Variante werden neben zwei NAND-Gattern nur noch zwei Pull-Up Widerstände benötigt.&lt;br /&gt;
&lt;br /&gt;
[[Bild:NAND_debouncer.png|thumb|left|350px|&#039;&#039;&#039;Taster entprellen mit NAND-RS-Flipflop&#039;&#039;&#039;]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br clear=&amp;quot;all&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In der gezeigten Schalterstellung liegt an der Position /S der Pegel 0 an. Damit ist das Flipflop gesetzt und der Ausgang auf dem Pegel 1. Schließt der Schalter zwischen den Kontakten 2 und 3, liegt an der Postion /R der Pegel 0 an. Dies bedeutet, dass der Ausgang des Flipflops auf den Pegel 0 geht. Sobald der Schalter von einem zum anderen Kontakt wechselt, beginnt er in der Regel zu prellen. Während des Prellens wechselt der Schalter zwischen den beiden Zuständen &amp;quot;Schalter berührt Kontakt&amp;quot; und &amp;quot;Schalter ist frei in der Luft&amp;quot;. Der Ausgang des Flipflops bleibt in dieser Prellzeit aber stabil, da der Schalter während des Prellens nie den gegenüberliegenden Kontakt berührt und das RS-Flipflop seinen Zustand allein halten kann. Die Prellzeit ist stark vom Schaltertyp abhängig und liegt zwischen 0,1 und 10ms. Die Dimensionierung der Widerstände ist relativ unkritisch. Als Richtwert können hier 100kOhm verwendet werden.&lt;br /&gt;
&lt;br /&gt;
====Wechselschalter ohne Flip-Flop====&lt;br /&gt;
&lt;br /&gt;
Wenn man mal gerade kein Flip-Flop zur Hand hat, kann man sich auch mit dieser Schaltung behelfen.&lt;br /&gt;
&lt;br /&gt;
[[Bild:WechselEntprellC.PNG|thumb|left|350px|&#039;&#039;&#039;Wechsler entprellen mit Kondensator&#039;&#039;&#039;]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br clear=&amp;quot;all&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Zur Funktionsweise:&lt;br /&gt;
Beim Umschalten wird der Kondensator immer sofort umgeladen.&lt;br /&gt;
Während der Kontakt prellt, befindet er sich in der Luft und hat keinerlei Verbindung. Während dieser Zeit übernimmt der Kondensator das halten des Pegels.&lt;br /&gt;
&lt;br /&gt;
Dimensionierung:&lt;br /&gt;
Ist der entprellte Taster an ein IC Angeschlossen, ist der &#039;&#039;Input Leakage Current&#039;&#039; der ausschlaggebende Strom. Falls weitere Ströme fließen sind diese mit zu berücksichtigen. Bei einem Mikrocontroller von Atmel sind 1µA typisch.&lt;br /&gt;
Es gilt:&lt;br /&gt;
:&amp;lt;math&amp;gt;\frac{dU}{dt} = \frac{I}{C}&amp;lt;/math&amp;gt;&lt;br /&gt;
Da eine Prellung ca. 10ms dauert und die Spannung in dieser Zeit beispielsweise um maximal 0,5V fallen soll kommt man auf folgende Kapazität:&lt;br /&gt;
:&amp;lt;math&amp;gt; C = \frac{I \cdot dt}{dU} = \frac{1\mu A \cdot 10ms}{0,5V} = 20nF &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Um Stromspitzen zu verringern kann ein Widerstand mit eingefügt werden. Eine Zeitkonstante von 1µs bis 1ms scheint sinnvoll. Also 500 Ohm bis 500kOhm sind nutzbar, wobei bei niedrigem Widerstand die Stromspitzen höher sind, und bei 500kOhm der Pinstrom störend wird.&lt;br /&gt;
&lt;br /&gt;
===Einfacher Taster===&lt;br /&gt;
&lt;br /&gt;
Auch wenn das RS-Flipflop sehr effektiv ist, wird diese Variante der Entprellung nur selten angewendet. Grund dafür ist, dass in Schaltungen häufiger einfache Taster eingesetzt werden. Diese sind oft kleiner und preisgünstiger. Um einfache Taster (engl. Single Throw Switch) zu entprellen, kann ein einfacher RC-Tiefpass eingesetzt werden. Hierbei wird ein Kondensator über einen Widerstand je nach Schalterstellung auf- oder entladen. Das RC-Glied bildet einen Tiefpass, sodass die Spannung über den Kondensator nicht von einen Pegel auf den anderen springen kann.&lt;br /&gt;
&lt;br /&gt;
[[Bild:RC_debouncer.png|thumb|left|300px|Taster entprellen mit RC-Entpreller]]&lt;br /&gt;
&lt;br /&gt;
[[Datei:Entprellen1a.png|thumb|350px| Entstehender Spannungsverlauf]]&lt;br /&gt;
{{Absatz}}&lt;br /&gt;
&lt;br /&gt;
Wenn der Schalter geöffnet ist, lädt sich der Kondensator langsam über die beiden Widerstände R&amp;lt;sub&amp;gt;1&amp;lt;/sub&amp;gt; und R&amp;lt;sub&amp;gt;2&amp;lt;/sub&amp;gt; auf V&amp;lt;sub&amp;gt;cc&amp;lt;/sub&amp;gt; auf. Beim Erreichen der Umschaltschwelle springt der Ausgang auf den Pegel 0. Wird der Schalter geschlossen, entlädt sich der Kondensator langsam über den Widerstand R&amp;lt;sub&amp;gt;2&amp;lt;/sub&amp;gt;. Demnach ändert sich der Ausgang des Inverters auf den Pegel 1. Während der Taster prellt, kann sich die Spannung über dem Kondensator nicht sprunghaft ändern, da das Auf- und Entladen eher langsam über die Widerstände erfolgt. Außerdem sind die Schaltschwellen für den Übergang LOW-&amp;gt;HIGH und HIGH-&amp;gt;LOW stark verschieden (Hysterese, siehe Artikel [[Schmitt-Trigger]]). Bei richtiger Dimensionierung der Bauelemente wird somit der Ausgang des Inverters prellfrei.&lt;br /&gt;
&lt;br /&gt;
Zu beachten ist, dass der Inverter &#039;&#039;&#039;unbedingt&#039;&#039;&#039; einer mit [[Schmitt-Trigger]] Eingängen sein muss, weil bei Standard-Logikeingängen im Bereich von üblicherweise 0,8V - 2,0V der Ausgang nicht definiert ist. Als Inverter kann zum Beispiel der 74HC14 oder der CD40106 (pinkompatibel) eingesetzt werden. Alternativ kann auch ein CD4093 eingesetzt werden. Bei dem CD4093 handelt es sich um NAND-Gatter mit Schmitt-Trigger-Eingängen. Um aus einem NAND-Gatter einen Inverter zu machen, müssen einfach nur die beiden Eingänge verbunden werden oder ein Eingang fest auf HIGH gelegt werden.&lt;br /&gt;
&lt;br /&gt;
Für eine geeignete Dimensionierung muss man etwas mit den Standardformeln für einen Kondensator jonglieren. Die Spannung über den Kondensator beim Entladen berechnet sich nach:&lt;br /&gt;
:&amp;lt;math&amp;gt;U_C(t) = U_0 \cdot e^{\frac{-t}{R_2 C_1}}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Damit der Ausgang des Inverters stabil ist, muss die Spannung über den Kondensator und damit die Spannung am Eingang des Inverters über der Spannung bleiben, bei welcher der Inverter umschaltet. Diese Schwellwertspannung ist genau die zeitabhängige Spannung über den Kondensator.&lt;br /&gt;
:&amp;lt;math&amp;gt;U_C(t)\!\ = U_{th}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Durch Umstellen der Formel ergibt sich nun:&lt;br /&gt;
:&amp;lt;math&amp;gt;R_2=\frac{-t}{C_1 \cdot ln\left(\frac{U_{th}}{U_0} \right)}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ein Taster prellt üblicherweise etwa 10ms. Zur Sicherheit kann bei der Berechnung des Widerstandes eine Prellzeit von 20ms angenommen werden. U_0 ist die Betriebsspannung also Vcc. Die Schwellwertspannung muss aus dem Datenblatt des eingesetzten Schmitt-Triggers abgelesen werden. Beim 74HC14 beträgt der gesuchte Wert 2,0V. Nimmt man für den Kondensator 1µF und beträgt die  Betriebsspannung 5V, ergibt sich für den Widerstand ein Wert von etwa 22kOhm.&lt;br /&gt;
&lt;br /&gt;
Wird der Schalter geöffnet, lädt sich der Kondensator nach folgender Formel auf:&lt;br /&gt;
:&amp;lt;math&amp;gt;U_C(t) = U_0 \cdot \left( 1-e^{\frac{-t}{(R_1+R_2)\cdot C_1}} \right)&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Mit U_th=U_C ergibt das Umstellen nach (R_1+R_2):&lt;br /&gt;
:&amp;lt;math&amp;gt;R_1+R_2 = \frac{-t}{C_1 \cdot ln\left(1-\frac{U_{th}}{U_0} \right)} &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Für die Schwellspannung lässt sich aus dem Datenblatt ein Wert von 2,3V ablesen. Mit diesem Wert und den Annahmen von oben ergibt sich für R_1+R_2 ein Wert von 32kOhm. Somit ergibt sich für R_1 ein Wert von etwa 10kOhm.&lt;br /&gt;
&lt;br /&gt;
Anmerkung: Beim 74LS14 von Hitachi z.&amp;amp;nbsp;B. sind die oberen und unteren Schaltschwellwerte unterschiedlich. Es muss darauf geachtet werden, dass U_{th} beim Entladen die untere Schwelle und U_{th} beim Laden die obere Schwelle einnimmt.&lt;br /&gt;
&lt;br /&gt;
== Softwareentprellung ==&lt;br /&gt;
&lt;br /&gt;
In den Zeiten der elektronischen Auswertung von Tastern und Schaltern ist das softwaretechnische Entprellen oft billiger, als die Benutzung eines teuren Schalters. Daher werden heute z.B. auch Computertastaturen nicht mehr mit prellarmen Tasten oder Entprellkondensatoren ausgestattet.&lt;br /&gt;
&lt;br /&gt;
Bei Verwendung des in den meisten Geräten ohnehin vorhandenen Mikrocontrollers z.B., kann man sich die zusätzliche Hardware sparen, da die Entprellung in Software praktisch genauso gut funktioniert. Dabei ist nur zu beachten, dass zusätzliche Rechenleistung und je nach Umsetzung auch einige Hardwareressourcen (z.B. Timer) benötigt werden.&lt;br /&gt;
&lt;br /&gt;
=== Flankenerkennung ===&lt;br /&gt;
Bei einem Taster gibt es insgesamt 4 theoretische Zustände:&lt;br /&gt;
&lt;br /&gt;
* 1. war nicht gedrückt und ist nicht gedrückt&lt;br /&gt;
* 2. war nicht gedrückt und ist gedrückt (steigende Flanke)&lt;br /&gt;
* 3. war gedrückt und ist immer noch gedrückt&lt;br /&gt;
* 4. war gedrückt und ist nicht mehr gedrückt (fallende Flanke)&lt;br /&gt;
&lt;br /&gt;
Diese einzelnen Zustände lassen sich jetzt bequem abfragen/durchlaufen. Die Entprellung geschieht dabei durch die ganze Laufzeit des Programms. Die Taster werden hierbei als Active-Low angeschlossen, um die internen Pull-Ups zu nutzen.&lt;br /&gt;
&lt;br /&gt;
Diese Routine gibt für den Zustand &amp;quot;steigende Flanke&amp;quot; den Wert &amp;quot;1&amp;quot; zurück, sonst &amp;quot;0&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
#define TASTERPORT PINC&lt;br /&gt;
#define TASTERBIT PINC1&lt;br /&gt;
&lt;br /&gt;
char taster(void)&lt;br /&gt;
{&lt;br /&gt;
    static unsigned char zustand;&lt;br /&gt;
    char rw = 0;&lt;br /&gt;
&lt;br /&gt;
    if(zustand == 0 &amp;amp;&amp;amp; !(TASTERPORT &amp;amp; (1&amp;lt;&amp;lt;TASTERBIT)))   //Taster wird gedrueckt (steigende Flanke)&lt;br /&gt;
    {&lt;br /&gt;
        zustand = 1;&lt;br /&gt;
        rw = 1;&lt;br /&gt;
    }&lt;br /&gt;
    else if (zustand == 1 &amp;amp;&amp;amp; !(TASTERPORT &amp;amp; (1&amp;lt;&amp;lt;TASTERBIT)))   //Taster wird gehalten&lt;br /&gt;
    {&lt;br /&gt;
         zustand = 2;&lt;br /&gt;
         rw = 0;&lt;br /&gt;
    }&lt;br /&gt;
    else if (zustand == 2 &amp;amp;&amp;amp; (TASTERPORT &amp;amp; (1&amp;lt;&amp;lt;TASTERBIT)))   //Taster wird losgelassen (fallende Flanke)&lt;br /&gt;
    {&lt;br /&gt;
        zustand = 3;&lt;br /&gt;
        rw = 0;&lt;br /&gt;
    }&lt;br /&gt;
    else if (zustand == 3 &amp;amp;&amp;amp; (TASTERPORT &amp;amp; (1&amp;lt;&amp;lt;TASTERBIT)))   //Taster losgelassen&lt;br /&gt;
    {&lt;br /&gt;
        zustand = 0;&lt;br /&gt;
        rw = 0;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    return rw;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Eine Erweiterung, damit beliebig lange das Halten einer Taste erkannt wird kann man ganz einfach so implementieren:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
    // zustand kann entweder zum ersten mal als gehlaten detektiert werden oder aber jedes weiter mal&lt;br /&gt;
    else if (((zustand == 1) || (zustand == 2)) &amp;amp;&amp;amp; !(TASTERPORT &amp;amp; (1&amp;lt;&amp;lt;TASTERBIT)))   //Taster wird gehalten&lt;br /&gt;
    {&lt;br /&gt;
         zustand = 2;&lt;br /&gt;
         rw = 0;&lt;br /&gt;
    }&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Warteschleifen-Verfahren ===&lt;br /&gt;
&lt;br /&gt;
Soll nun mit einem Mikrocontroller gezählt werden, wie oft ein Kontakt oder ein Relais geschaltet wird, muss das Prellen des Kontaktes exakt berücksichtigt - und von einem gewollten Mehrfachschalten abgegrenzt werden, da sonst  möglicherweise Fehlimpulse gezählt- oder andererseits echte Schaltvorgänge übersprungen werden. Dies muss beim Schreiben des Programms hinsichtlich des Abtastens des Kontaktes unbedingt Rechnung getragen werden.&lt;br /&gt;
&lt;br /&gt;
Beim folgenden einfachen Beispiel für eine Entprellung ist zu beachten, dass der AVR im Falle eines Tastendrucks 200ms wartet, also brach liegt. Bei zeitkritische Anwendungen sollte man ein anderes Verfahren nutzen (z.&amp;amp;nbsp;B. Abfrage der Tastenzustände in einer Timer-Interrupt-Service-Routine).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
#include &amp;lt;avr/io.h&amp;gt;&lt;br /&gt;
#include &amp;lt;inttypes.h&amp;gt;&lt;br /&gt;
#ifndef F_CPU&lt;br /&gt;
#warning &amp;quot;F_CPU war noch nicht definiert, wird nun mit 3686400 definiert&amp;quot;&lt;br /&gt;
#define F_CPU 3686400UL     /* Quarz mit 3.6864 Mhz  */&lt;br /&gt;
#endif&lt;br /&gt;
#include &amp;lt;util/delay.h&amp;gt;     /* bei alter avr-libc: #include &amp;lt;avr/delay.h&amp;gt; */      &lt;br /&gt;
&lt;br /&gt;
/* Einfache Funktion zum Entprellen eines Tasters */&lt;br /&gt;
inline uint8_t debounce(volatile uint8_t *port, uint8_t pin)&lt;br /&gt;
{&lt;br /&gt;
    if ( !(*port &amp;amp; (1 &amp;lt;&amp;lt; pin)) )&lt;br /&gt;
    {&lt;br /&gt;
        /* Pin wurde auf Masse gezogen, 100ms warten   */&lt;br /&gt;
        _delay_ms(50);   // Maximalwert des Parameters an _delay_ms &lt;br /&gt;
        _delay_ms(50);   // beachten, vgl. Dokumentation der avr-libc&lt;br /&gt;
        if ( *port &amp;amp; (1 &amp;lt;&amp;lt; pin) )&lt;br /&gt;
        {&lt;br /&gt;
            /* Anwender Zeit zum Loslassen des Tasters geben */&lt;br /&gt;
            _delay_ms(50);&lt;br /&gt;
            _delay_ms(50); &lt;br /&gt;
            return 1;&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
    return 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
int main(void)&lt;br /&gt;
{&lt;br /&gt;
    DDRB &amp;amp;= ~( 1 &amp;lt;&amp;lt; PB0 );        /* PIN PB0 auf Eingang Taster)  */&lt;br /&gt;
    PORTB |= ( 1 &amp;lt;&amp;lt; PB0 );        /* Pullup-Widerstand aktivieren */&lt;br /&gt;
    ...&lt;br /&gt;
    if (debounce(&amp;amp;PINB, PB0))&lt;br /&gt;
    {&lt;br /&gt;
        /* Falls Taster an PIN PB0 gedrueckt     */&lt;br /&gt;
        /* LED an Port PD7 an- bzw. ausschalten: */&lt;br /&gt;
        PORTD = PORTD ^ ( 1 &amp;lt;&amp;lt; PD7 );&lt;br /&gt;
    }&lt;br /&gt;
    ...&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die obige Routine hat leider mehrere Nachteile:&lt;br /&gt;
* sie detektiert nur das Loslassen (unergonomisch)&lt;br /&gt;
* sie verzögert die Mainloop immer um 100ms bei gedrückter Taste&lt;br /&gt;
* sie verliert Tastendrücke, je mehr die Mainloop zu tun hat.&lt;br /&gt;
&lt;br /&gt;
Eine ähnlich einfach zu benutzende Routine, aber ohne all diese Nachteile findet sich im Forenthread&lt;br /&gt;
[http://www.mikrocontroller.net/topic/164194#new Entprellung für Anfänger]&lt;br /&gt;
&lt;br /&gt;
Der &#039;&#039;DEBOUNCE&#039;&#039; Befehl in dem BASIC-Dialekt BASCOM für AVR ist ebenfalls nach dem Warteschleifen-Verfahren programmiert. Die Wartezeit beträgt standardmäßig 25 ms, kann aber vom Anwender überschrieben werden. Vgl.  [http://avrhelp.mcselec.com/bascom-avr.html?DEBOUNCE BASCOM Online-Manual zu DEBOUNCE].&lt;br /&gt;
&lt;br /&gt;
Eine C-Implementierung für eine Tastenabfrage mit Warteschleife ist im Artikel [[AVR-GCC-Tutorial#IO-Register_als_Parameter_und_Variablen|AVR-GCC-Tutorial: IO-Register als Parameter und Variablen]] angeben.&lt;br /&gt;
&lt;br /&gt;
Der Nachteil dieses Verfahrens ist, dass der Controller durch die Warteschleife blockiert wird. Günstiger ist die Implementierung mit einem Timer-Interrupt.&lt;br /&gt;
&lt;br /&gt;
==== Warteschleifenvariante mit Maske und Pointer (nach Christian Riggenbach) ====&lt;br /&gt;
&lt;br /&gt;
Hier eine weitere Funktion, um Taster zu entprellen: Durch den zusätzlichen Code kann eine Entprellzeit von durchschnittlich 1-3ms (mindestens 8*150µs = 1ms) erreicht werden. Grundsätzlich prüft die Funktion den Pegel der Pins auf einem bestimmten Port. Wenn die/der Pegel 8 Mal konstant war, wird die Schleife verlassen. Diese Funktion kann sehr gut eingesetzt werden, um in einer Endlosschleife Taster anzufragen, da sie, wie erwähnt, eine kurze Wartezeit hat.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
void entprellung( volatile uint8_t *port, uint8_t maske ) {&lt;br /&gt;
  uint8_t   port_puffer;&lt;br /&gt;
  uint8_t   entprellungs_puffer;&lt;br /&gt;
&lt;br /&gt;
  for( entprellungs_puffer=0 ; entprellungs_puffer!=0xff ; ) {&lt;br /&gt;
    entprellungs_puffer&amp;lt;&amp;lt;=1;&lt;br /&gt;
    port_puffer = *port;&lt;br /&gt;
    _delay_us(150);&lt;br /&gt;
    if( (*port &amp;amp; maske) == (port_puffer &amp;amp; maske) )&lt;br /&gt;
      entprellungs_puffer |= 0x01;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Die Funktion wird wie folgt aufgerufen:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
  // Bugfix 20100414&lt;br /&gt;
  // http://www.nongnu.org/avr-libc/user-manual/FAQ.html#faq_port_pass&lt;br /&gt;
  entprellung( &amp;amp;PINB, (1&amp;lt;&amp;lt;PINB2) ); // ggf. Prellen abwarten &lt;br /&gt;
  if( PINB &amp;amp; (1&amp;lt;&amp;lt;PINB2) )           // dann stabilen Wert einlesen&lt;br /&gt;
  {&lt;br /&gt;
    // mach was&lt;br /&gt;
  }&lt;br /&gt;
  else&lt;br /&gt;
  {&lt;br /&gt;
    // mach was anderes&lt;br /&gt;
  }&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Als Maske kann ein beliebiger Wert übergeben werden. Sie verhindert, dass nichtverwendete Taster die Entprellzeit negativ beeinflussen.&lt;br /&gt;
&lt;br /&gt;
==== Debounce-Makro von Peter Dannegger ====&lt;br /&gt;
&lt;br /&gt;
Peter Dannegger hat in [http://www.mikrocontroller.net/topic/164194#1566921 &amp;quot;Entprellen für Anfänger&amp;quot;] folgende vereinfachtes Entprellverfahren beschrieben. Das Makro arbeitet in der Originalversion mit &#039;&#039;active low&#039;&#039; geschalteten Tastern, kann aber einfach für  &#039;&#039;active high&#039;&#039; geschaltete Taster angepasst werden ([[Pollin Funk-AVR-Evaluationsboard#Tasty Reloaded|Tasty Reloaded]]). &lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
/************************************************************************/&lt;br /&gt;
/*                                                                      */&lt;br /&gt;
/*                      Not so powerful Debouncing Example              */&lt;br /&gt;
/*                      No Interrupt needed                             */&lt;br /&gt;
/*                                                                      */&lt;br /&gt;
/*              Author: Peter Dannegger                                 */&lt;br /&gt;
/*                                                                      */&lt;br /&gt;
/************************************************************************/&lt;br /&gt;
// Target: ATtiny13&lt;br /&gt;
&lt;br /&gt;
#include &amp;lt;avr/io.h&amp;gt;&lt;br /&gt;
#define F_CPU 9.6e6&lt;br /&gt;
#include &amp;lt;util/delay.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
#define debounce( port, pin )                                         \&lt;br /&gt;
({                                                                    \&lt;br /&gt;
  static uint8_t flag = 0;     /* new variable on every macro usage */  \&lt;br /&gt;
  uint8_t i = 0;                                                      \&lt;br /&gt;
                                                                      \&lt;br /&gt;
  if( flag ){                  /* check for key release: */           \&lt;br /&gt;
    for(;;){                   /* loop ... */                         \&lt;br /&gt;
      if( !(port &amp;amp; 1&amp;lt;&amp;lt;pin) ){  /* ... until key pressed or ... */     \&lt;br /&gt;
        i = 0;                 /* 0 = bounce */                       \&lt;br /&gt;
        break;                                                        \&lt;br /&gt;
      }                                                               \&lt;br /&gt;
      _delay_us( 98 );         /* * 256 = 25ms */                     \&lt;br /&gt;
      if( --i == 0 ){          /* ... until key &amp;gt;25ms released */     \&lt;br /&gt;
        flag = 0;              /* clear press flag */                 \&lt;br /&gt;
        i = 0;                 /* 0 = key release debounced */        \&lt;br /&gt;
        break;                                                        \&lt;br /&gt;
      }                                                               \&lt;br /&gt;
    }                                                                 \&lt;br /&gt;
  }else{                       /* else check for key press: */        \&lt;br /&gt;
    for(;;){                   /* loop ... */                         \&lt;br /&gt;
      if( (port &amp;amp; 1&amp;lt;&amp;lt;pin) ){   /* ... until key released or ... */    \&lt;br /&gt;
        i = 0;                 /* 0 = bounce */                       \&lt;br /&gt;
        break;                                                        \&lt;br /&gt;
      }                                                               \&lt;br /&gt;
      _delay_us( 98 );         /* * 256 = 25ms */                     \&lt;br /&gt;
      if( --i == 0 ){          /* ... until key &amp;gt;25ms pressed */      \&lt;br /&gt;
        flag = 1;              /* set press flag */                   \&lt;br /&gt;
        i = 1;                 /* 1 = key press debounced */          \&lt;br /&gt;
        break;                                                        \&lt;br /&gt;
      }                                                               \&lt;br /&gt;
    }                                                                 \&lt;br /&gt;
  }                                                                   \&lt;br /&gt;
  i;                           /* return value of Macro */            \&lt;br /&gt;
})&lt;br /&gt;
&lt;br /&gt;
/*&lt;br /&gt;
   Testapplication&lt;br /&gt;
 */&lt;br /&gt;
int main(void)&lt;br /&gt;
{&lt;br /&gt;
  DDRB  &amp;amp;= ~(1&amp;lt;&amp;lt;PB0);&lt;br /&gt;
  PORTB |=   1&amp;lt;&amp;lt;PB0;&lt;br /&gt;
  DDRB  |=   1&amp;lt;&amp;lt;PB2;&lt;br /&gt;
  DDRB  &amp;amp;= ~(1&amp;lt;&amp;lt;PB1);&lt;br /&gt;
  PORTB |=   1&amp;lt;&amp;lt;PB1;&lt;br /&gt;
  DDRB  |=   1&amp;lt;&amp;lt;PB3;&lt;br /&gt;
  for(;;){&lt;br /&gt;
    if( debounce( PINB, PB1 ) )&lt;br /&gt;
      PORTB ^= 1&amp;lt;&amp;lt;PB2;&lt;br /&gt;
    if( debounce( PINB, PB0 ) )&lt;br /&gt;
      PORTB ^= 1&amp;lt;&amp;lt;PB3;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Wenn das Makro für die gleiche Taste (Pin) an mehreren Stellen aufgerufen werden soll, muss eine Funktion angelegt werden, damit beide Aufrufe an die gleiche Zustandsvariable &#039;&#039;flag&#039;&#039; auswerten [http://www.mikrocontroller.net/topic/195914#1918727]:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
// Hilfsfunktion&lt;br /&gt;
uint8_t debounce_C1( void )&lt;br /&gt;
{&lt;br /&gt;
  return debounce(PINC, PC1);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// Beispielanwendung&lt;br /&gt;
int main(void)&lt;br /&gt;
{&lt;br /&gt;
  DDRB  |=   1&amp;lt;&amp;lt;PB2;&lt;br /&gt;
  DDRB  |=   1&amp;lt;&amp;lt;PB3;&lt;br /&gt;
  DDRC  &amp;amp;= ~(1&amp;lt;&amp;lt;PC1);&lt;br /&gt;
  PORTC |=   1&amp;lt;&amp;lt;PC1; // Pullup für Taster&lt;br /&gt;
&lt;br /&gt;
  for(;;){&lt;br /&gt;
    if( debounce_C1() )  // nicht: debounce(PINC, PC1)&lt;br /&gt;
      PORTB ^= 1&amp;lt;&amp;lt;PB2;&lt;br /&gt;
    if( debounce_C1() )  // nicht: debounce(PINC, PC1)&lt;br /&gt;
      PORTB ^= 1&amp;lt;&amp;lt;PB3;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Timer-Verfahren (nach Peter Dannegger) ===&lt;br /&gt;
&lt;br /&gt;
==== Grundroutine (AVR Assembler) ====&lt;br /&gt;
&lt;br /&gt;
Siehe dazu: [http://www.mikrocontroller.net/forum/read-4-20435.html#new Forum] &lt;br /&gt;
&lt;br /&gt;
Vorteile&lt;br /&gt;
* besonders kurzer Code&lt;br /&gt;
* schnell&lt;br /&gt;
&lt;br /&gt;
Außerdem können 8 Tasten (aktiv low) gleichzeitig bearbeitet werden, es dürfen also&lt;br /&gt;
alle exakt zur selben Zeit gedrückt werden. Andere Routinen können z.&amp;amp;nbsp;B. nur eine Taste verarbeiten, d.h. die zuerst oder zuletzt gedrückte gewinnt, oder es kommt Unsinn heraus.&lt;br /&gt;
&lt;br /&gt;
Die eigentliche Einlese- und Entprellroutine ist nur 8 Instruktionen&lt;br /&gt;
kurz. Der entprellte Tastenzustand ist im Register &#039;&#039;key_state&#039;&#039;. Mit nur 2 weiteren Instruktionen wird dann der Wechsel von &#039;&#039;Taste offen&#039;&#039; zu&lt;br /&gt;
&#039;&#039;Taste gedrückt&#039;&#039; erkannt und im Register &#039;&#039;key_press&#039;&#039; abgelegt. Im Beispielcode werden dann damit 8 LEDs ein- und ausgeschaltet. Jede Taste entspricht einem Bit in den Registern, d.h. die Verarbeitung erfolgt bitweise mit logischen Operationen. Zum Verständnis empfiehlt es sich daher, die Logikgleichungen mit Gattern für ein Bit = eine Taste aufzumalen. Die Register kann man sich als Flipflops denken, die mit der Entprellzeit als Takt arbeiten. D.h. man kann das auch so z.&amp;amp;nbsp;B. in einem GAL22V10 realisieren.&lt;br /&gt;
&lt;br /&gt;
Als Kommentar sind neben den einzelnen Instruktionen alle 8 möglichen&lt;br /&gt;
Kombinationen der 3 Signale dargestellt.&lt;br /&gt;
&lt;br /&gt;
Beispielcode für AVR (Assembler):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;avrasm&amp;quot;&amp;gt; &lt;br /&gt;
.nolist&lt;br /&gt;
.include &amp;quot;c:\avr\inc\1200def.inc&amp;quot;&lt;br /&gt;
.list&lt;br /&gt;
.def  save_sreg         = r0&lt;br /&gt;
.def  iwr0              = r1&lt;br /&gt;
.def  iwr1              = r2&lt;br /&gt;
&lt;br /&gt;
.def  key_old           = r3&lt;br /&gt;
.def  key_state         = r4&lt;br /&gt;
.def  key_press         = r5&lt;br /&gt;
&lt;br /&gt;
.def  leds              = r16&lt;br /&gt;
.def  wr0               = r17&lt;br /&gt;
&lt;br /&gt;
.equ  key_port          = pind&lt;br /&gt;
.equ  led_port          = portb&lt;br /&gt;
&lt;br /&gt;
      rjmp   init&lt;br /&gt;
.org OVF0addr		;timer interrupt 24ms&lt;br /&gt;
      in     save_sreg, SREG&lt;br /&gt;
get8key:                               ;/old      state     iwr1      iwr0&lt;br /&gt;
      mov    iwr0, key_old             ;00110011  10101010            00110011&lt;br /&gt;
      in     key_old, key_port         ;11110000&lt;br /&gt;
      eor    iwr0, key_old             ;                              11000011&lt;br /&gt;
      com    key_old                   ;00001111&lt;br /&gt;
      mov    iwr1, key_state           ;                    10101010&lt;br /&gt;
      or     key_state, iwr0           ;          11101011&lt;br /&gt;
      and    iwr0, key_old             ;                              00000011&lt;br /&gt;
      eor    key_state, iwr0           ;          11101000&lt;br /&gt;
      and    iwr1, iwr0                ;                    00000010&lt;br /&gt;
      or     key_press, iwr1           ;store key press detect&lt;br /&gt;
;&lt;br /&gt;
;			insert other timer functions here&lt;br /&gt;
;&lt;br /&gt;
      out    SREG, save_sreg&lt;br /&gt;
      reti&lt;br /&gt;
;-------------------------------------------------------------------------&lt;br /&gt;
init:&lt;br /&gt;
      ldi    wr0, 0xFF&lt;br /&gt;
      out    ddrb, wr0&lt;br /&gt;
      ldi    wr0, 1&amp;lt;&amp;lt;CS02 | 1&amp;lt;&amp;lt;CS00    ;divide by 1024 * 256&lt;br /&gt;
      out    TCCR0, wr0&lt;br /&gt;
      ldi    wr0, 1&amp;lt;&amp;lt;TOIE0             ;enable timer interrupt&lt;br /&gt;
      out    TIMSK, wr0&lt;br /&gt;
&lt;br /&gt;
      clr    key_old&lt;br /&gt;
      clr    key_state&lt;br /&gt;
      clr    key_press&lt;br /&gt;
      ldi    leds, 0xFF&lt;br /&gt;
main: cli&lt;br /&gt;
      eor    leds, key_press           ;toggle LEDs&lt;br /&gt;
      clr    key_press                 ;clear, if key press action done&lt;br /&gt;
      sei&lt;br /&gt;
      out    led_port, leds&lt;br /&gt;
      rjmp   main&lt;br /&gt;
;-------------------------------------------------------------&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Komfortroutine (C für AVR) ====&lt;br /&gt;
&lt;br /&gt;
Siehe dazu: [http://www.mikrocontroller.net/forum/read-4-310276.html Forum]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Anmerkung&#039;&#039;&#039; Wenn statt active-low (Ruhezustand High) active-high (Ruhezustand Low) verwendet wird muss eine Zeile geändert werden siehe:&lt;br /&gt;
[http://www.mikrocontroller.net/forum/read-4-310276.html gesamter Beitrag im Forum], &lt;br /&gt;
[http://www.mikrocontroller.net/topic/48465#606555 Stelle 1 im Beitrag], ([http://www.mikrocontroller.net/topic/48465#2306398 Stelle 2 im Beitrag] muss *nicht* geändert werden, da hier die Polarität gar keinen Einfluß hat).&lt;br /&gt;
&lt;br /&gt;
Funktionsprinzip wie oben plus zusätzliche Features:  &lt;br /&gt;
* Kann Tasten sparen durch unterschiedliche Aktionen bei kurzem oder langem Drücken&lt;br /&gt;
* Wiederholfunktion, z.&amp;amp;nbsp;B. für die Eingabe von Werten&lt;br /&gt;
&lt;br /&gt;
Das Programm ist für avr-gcc/avr-libc geschrieben, kann aber mit ein paar Anpassungen auch mit anderen Compilern und Mikrocontrollern verwendet werden. Eine Portierung für den AT91SAM7 findet man [http://www.google.com/codesearch?q=show:ac2viP-2E2Y:pzkOO5QRsoc:RPICuprYy-A&amp;amp;sa=N&amp;amp;cd=1&amp;amp;ct=rc&amp;amp;cs_p=svn://mikrocontroller.net/mp3dec/trunk&amp;amp;cs_f=keys.c#a0 hier] (aus dem Projekt [[ARM MP3/AAC Player]]).&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
/************************************************************************/&lt;br /&gt;
/*                                                                      */&lt;br /&gt;
/*                      Debouncing 8 Keys                               */&lt;br /&gt;
/*                      Sampling 4 Times                                */&lt;br /&gt;
/*                      With Repeat Function                            */&lt;br /&gt;
/*                                                                      */&lt;br /&gt;
/*              Author: Peter Dannegger                                 */&lt;br /&gt;
/*                      danni@specs.de                                  */&lt;br /&gt;
/*                                                                      */&lt;br /&gt;
/************************************************************************/&lt;br /&gt;
&lt;br /&gt;
#include &amp;lt;stdint.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;
&lt;br /&gt;
#ifndef F_CPU&lt;br /&gt;
#define F_CPU           1000000                   // processor clock frequency&lt;br /&gt;
#warning kein F_CPU definiert&lt;br /&gt;
#endif&lt;br /&gt;
 &lt;br /&gt;
#define KEY_DDR         DDRB&lt;br /&gt;
#define KEY_PORT        PORTB&lt;br /&gt;
#define KEY_PIN         PINB&lt;br /&gt;
#define KEY0            0&lt;br /&gt;
#define KEY1            1&lt;br /&gt;
#define KEY2            2&lt;br /&gt;
#define ALL_KEYS        (1&amp;lt;&amp;lt;KEY0 | 1&amp;lt;&amp;lt;KEY1 | 1&amp;lt;&amp;lt;KEY2)&lt;br /&gt;
 &lt;br /&gt;
#define REPEAT_MASK     (1&amp;lt;&amp;lt;KEY1 | 1&amp;lt;&amp;lt;KEY2)       // repeat: key1, key2&lt;br /&gt;
#define REPEAT_START    50                        // after 500ms&lt;br /&gt;
#define REPEAT_NEXT     20                        // every 200ms&lt;br /&gt;
&lt;br /&gt;
#define LED_DDR         DDRA&lt;br /&gt;
#define LED_PORT        PORTA&lt;br /&gt;
#define LED0            0&lt;br /&gt;
#define LED1            1&lt;br /&gt;
#define LED2            2&lt;br /&gt;
 &lt;br /&gt;
volatile uint8_t key_state;                                // debounced and inverted key state:&lt;br /&gt;
                                                  // bit = 1: key pressed&lt;br /&gt;
volatile uint8_t key_press;                                // key press detect&lt;br /&gt;
 &lt;br /&gt;
volatile uint8_t key_rpt;                                  // key long press and repeat&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
ISR( TIMER0_OVF_vect )                            // every 10ms&lt;br /&gt;
{&lt;br /&gt;
  static uint8_t ct0, ct1, rpt;&lt;br /&gt;
  uint8_t i;&lt;br /&gt;
 &lt;br /&gt;
  TCNT0 = (uint8_t)(int16_t)-(F_CPU / 1024 * 10e-3 + 0.5);  // preload for 10ms&lt;br /&gt;
 &lt;br /&gt;
  i = key_state ^ ~KEY_PIN;                       // key changed ?&lt;br /&gt;
  ct0 = ~( ct0 &amp;amp; i );                             // reset or count ct0&lt;br /&gt;
  ct1 = ct0 ^ (ct1 &amp;amp; i);                          // reset or count ct1&lt;br /&gt;
  i &amp;amp;= ct0 &amp;amp; ct1;                                 // count until roll over ?&lt;br /&gt;
  key_state ^= i;                                 // then toggle debounced state&lt;br /&gt;
  key_press |= key_state &amp;amp; i;                     // 0-&amp;gt;1: key press detect&lt;br /&gt;
 &lt;br /&gt;
  if( (key_state &amp;amp; REPEAT_MASK) == 0 )            // check repeat function&lt;br /&gt;
     rpt = REPEAT_START;                          // start delay&lt;br /&gt;
  if( --rpt == 0 ){&lt;br /&gt;
    rpt = REPEAT_NEXT;                            // repeat delay&lt;br /&gt;
    key_rpt |= key_state &amp;amp; REPEAT_MASK;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
 &lt;br /&gt;
///////////////////////////////////////////////////////////////////&lt;br /&gt;
//&lt;br /&gt;
// check if a key has been pressed. Each pressed key is reported&lt;br /&gt;
// only once&lt;br /&gt;
//&lt;br /&gt;
uint8_t get_key_press( uint8_t key_mask )&lt;br /&gt;
{&lt;br /&gt;
  cli();                                          // read and clear atomic !&lt;br /&gt;
  key_mask &amp;amp;= key_press;                          // read key(s)&lt;br /&gt;
  key_press ^= key_mask;                          // clear key(s)&lt;br /&gt;
  sei();&lt;br /&gt;
  return key_mask;&lt;br /&gt;
}&lt;br /&gt;
 &lt;br /&gt;
///////////////////////////////////////////////////////////////////&lt;br /&gt;
//&lt;br /&gt;
// check if a key has been pressed long enough such that the&lt;br /&gt;
// key repeat functionality kicks in. After a small setup delay&lt;br /&gt;
// the key is reported being pressed in subsequent calls&lt;br /&gt;
// to this function. This simulates the user repeatedly&lt;br /&gt;
// pressing and releasing the key.&lt;br /&gt;
//&lt;br /&gt;
uint8_t get_key_rpt( uint8_t key_mask )&lt;br /&gt;
{&lt;br /&gt;
  cli();                                          // read and clear atomic !&lt;br /&gt;
  key_mask &amp;amp;= key_rpt;                            // read key(s)&lt;br /&gt;
  key_rpt ^= key_mask;                            // clear key(s)&lt;br /&gt;
  sei();&lt;br /&gt;
  return key_mask;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
///////////////////////////////////////////////////////////////////&lt;br /&gt;
//&lt;br /&gt;
// check if a key is pressed right now&lt;br /&gt;
//&lt;br /&gt;
uint8_t get_key_state( uint8_t key_mask )&lt;br /&gt;
&lt;br /&gt;
{&lt;br /&gt;
  key_mask &amp;amp;= key_state;&lt;br /&gt;
  return key_mask;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
///////////////////////////////////////////////////////////////////&lt;br /&gt;
//&lt;br /&gt;
uint8_t get_key_short( uint8_t key_mask )&lt;br /&gt;
{&lt;br /&gt;
  cli();                                          // read key state and key press atomic !&lt;br /&gt;
  return get_key_press( ~key_state &amp;amp; key_mask );&lt;br /&gt;
}&lt;br /&gt;
 &lt;br /&gt;
///////////////////////////////////////////////////////////////////&lt;br /&gt;
//&lt;br /&gt;
uint8_t get_key_long( uint8_t key_mask )&lt;br /&gt;
{&lt;br /&gt;
  return get_key_press( get_key_rpt( key_mask ));&lt;br /&gt;
}&lt;br /&gt;
 &lt;br /&gt;
int main( void )&lt;br /&gt;
{&lt;br /&gt;
  LED_PORT = 0xFF;&lt;br /&gt;
  LED_DDR = 0xFF;                     &lt;br /&gt;
&lt;br /&gt;
  // Configure debouncing routines&lt;br /&gt;
  KEY_DDR &amp;amp;= ~ALL_KEYS;                // configure key port for input&lt;br /&gt;
  KEY_PORT |= ALL_KEYS;                // and turn on pull up resistors&lt;br /&gt;
&lt;br /&gt;
  TCCR0 = (1&amp;lt;&amp;lt;CS02)|(1&amp;lt;&amp;lt;CS00);         // divide by 1024&lt;br /&gt;
  TCNT0 = (uint8_t)(int16_t)-(F_CPU / 1024 * 10e-3 + 0.5);  // preload for 10ms&lt;br /&gt;
  TIMSK |= 1&amp;lt;&amp;lt;TOIE0;                   // enable timer interrupt&lt;br /&gt;
&lt;br /&gt;
  sei();&lt;br /&gt;
&lt;br /&gt;
  while(1){&lt;br /&gt;
    if( get_key_short( 1&amp;lt;&amp;lt;KEY1 ))&lt;br /&gt;
      LED_PORT ^= 1&amp;lt;&amp;lt;LED1;&lt;br /&gt;
 &lt;br /&gt;
    if( get_key_long( 1&amp;lt;&amp;lt;KEY1 ))&lt;br /&gt;
      LED_PORT ^= 1&amp;lt;&amp;lt;LED2;&lt;br /&gt;
 &lt;br /&gt;
    // single press and repeat&lt;br /&gt;
 &lt;br /&gt;
    if( get_key_press( 1&amp;lt;&amp;lt;KEY2 ) || get_key_rpt( 1&amp;lt;&amp;lt;KEY2 )){&lt;br /&gt;
      uint8_t i = LED_PORT;&lt;br /&gt;
 &lt;br /&gt;
      i = (i &amp;amp; 0x07) | ((i &amp;lt;&amp;lt; 1) &amp;amp; 0xF0);&lt;br /&gt;
      if( i &amp;lt; 0xF0 )&lt;br /&gt;
        i |= 0x08;&lt;br /&gt;
      LED_PORT = i;      &lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Das single-press-und-repeat-Beispiel geht nicht in jeder Beschaltung; folgendes Beispiel sollte universeller sein (einzelne LED an/aus):&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
// single press and repeat&lt;br /&gt;
if( get_key_press( 1&amp;lt;&amp;lt;KEY2 ) || get_key_rpt( 1&amp;lt;&amp;lt;KEY2 ))&lt;br /&gt;
    LED_PORT ^=0x08;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== Funktionsweise =====&lt;br /&gt;
Der Code basiert auf 8 parallelen vertikalen Zählern, die über die Variablen ct0 und ct1 aufgebaut werden&lt;br /&gt;
&lt;br /&gt;
[[Bild:VertCount.png|framed|center|&#039;&#039;&#039;8 vertikale Zähler in 2 8-Bit Variablen&#039;&#039;&#039;]]&lt;br /&gt;
&lt;br /&gt;
wobei jeweils ein Bit in ct0 mit dem gleichwertigen Bit in ct1 zusammengenommen einen 2-Bit-Zähler bildet.&lt;br /&gt;
Der Code der sich um die 8 Zähler kümmert, ist so geschrieben, daß er alle 8 Zähler gemeinsam parallel behandelt.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
  i = key_state ^ ~KEY_PIN;                       // key changed ?&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
i enthält an dieser Stelle für jede Taste, die sich im Vergleich mit dem vorhergehenden entprellten Zustand (keystate) verändert hat, ein 1 Bit.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
  ct0 = ~( ct0 &amp;amp; i );                             // reset or count ct0&lt;br /&gt;
  ct1 = ct0 ^ (ct1 &amp;amp; i);                          // reset or count ct1&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Diese beiden Anweisungen erniedrigen den 2-Bit Zähler ct0/ct1 für jedes Bit um 1, welches in i gesetzt ist. Liegt an der entsprechenden Stelle in i ein 0 Bit vor (keine Änderung des Zustands), so wird der Zähler ct0/ct1 für dieses Bit auf 1 gesetzt.&lt;br /&gt;
Der Grundzustand des Zählers ist als ct0 == 1 und ct1 == 1 (Wert 3). Der Zähler zählt daher mit jedem ISR Aufruf, bei dem die Taste im Vergleich zu keystate als verändert erkannt wurde&lt;br /&gt;
&lt;br /&gt;
   ct1   ct0&lt;br /&gt;
     1    1   // 3&lt;br /&gt;
     1    0   // 2&lt;br /&gt;
     0    1   // 1&lt;br /&gt;
     0    0   // 0&lt;br /&gt;
     1    1   // 3&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
  i &amp;amp;= ct0 &amp;amp; ct1;                                 // count until roll over ?&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
in i bleibt nur dort ein 1-Bit erhalten, wo sowohl in ct1 als auch in ct0 ein 1 Bit vorgefunden wird, der betreffenede Zähler also bis 3 zählen konnte. Durch die zusätzliche Verundung mit i wird der Fall abgefangen, dass ein konstanter Zählerwert von 3 in i ein 1 Bit hinterlässt. Im Endergebnis bedeutet dass, dass nur ein Zählerwechsel von 0 auf 3 zu einem 1 Bit an der betreffenden Stelle in i führt, aber auch nur dann, wenn in i an dieser Bitposition ebenfalls ein 1 Bit war (welches wiederrum deswegen auf 1 war, weil an diesem Eingabeport eine Veränderung zum letzten bekannten entprellten Zustand festgestellt wurde). alles zusammengenommen heißt das, dass ein Tastendruck dann erkannt wird, wenn die Taste 4 mal hintereinander in einem anderen Zustand vorgefunden wurde als dem zuletzt bekannten entprellten Tastenzustand.&lt;br /&gt;
&lt;br /&gt;
An dieser Stelle ist i daher ein Vektor von 8 Bits, von denen jedes einzelne der Bits darüber Auskunft gibt, ob die entsprechende Taste mehrmals hintereinander im selben Zustand angetroffen wurde, der nicht mit dem zuletzt bekannten Tastenzustand übereinstimmt. Ist das der Fall, dann wird eine entsprechende Veränderung des Tastenzustands in key_state registriert&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
  key_state ^= i;                                 // then toggle debounced state&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
und wenn sich in key_state das entsprechende Bit von 0 auf 1 verändert hat, wird dieses Ereignis als &#039;Taste wurde niedergedrückt&#039; gewertet.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
  key_press |= key_state &amp;amp; i;                     // 0-&amp;gt;1: key press detect&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Damit ist der Tasteneingang entprellt. Und zwar sowohl beim Drücken einer Taste als auch beim Loslassen (damit Tastenpreller beim Loslassen nicht mit dem Niederdrücken einer Taste verwechselt werden). Der weitere Code beschäftigt sich dann nur noch damit, diesen entprellten Tastenzustand weiter zu verarbeiten.&lt;br /&gt;
&lt;br /&gt;
Der Codeteil sieht durch die Verwendung der vielen bitweisen Operationen relativ komplex aus. Behält man aber im Hinterkopf, dass einige der bitweisen wie ein &#039;paralles If&#039; gleichzeitig auf allen 8 Bits eingesetzt werden, dann vereinfacht sich vieles. Ein&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
    key_press |= key_state &amp;amp; i;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
ist nichts anderes als ein&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
    // teste ob Bit 0 sowohl in key_state als auch in i gesetzt ist&lt;br /&gt;
    // und setze Bit 0 in key_press, wenn das der Fall ist&lt;br /&gt;
    if( ( key_state &amp;amp; ( 1 &amp;lt;&amp;lt; 0 ) ) &amp;amp;&amp;amp;&lt;br /&gt;
        ( i &amp;amp; ( 1 &amp;lt;&amp;lt; 0 ) )&lt;br /&gt;
       key_press |= ( 1 &amp;lt;&amp;lt; 0 );&lt;br /&gt;
&lt;br /&gt;
    // Bit 1&lt;br /&gt;
    if( ( key_state &amp;amp; ( 1 &amp;lt;&amp;lt; 1 ) ) &amp;amp;&amp;amp;&lt;br /&gt;
        ( i &amp;amp; ( 1 &amp;lt;&amp;lt; 1 ) )&lt;br /&gt;
       key_press |= ( 1 &amp;lt;&amp;lt; 1 );&lt;br /&gt;
&lt;br /&gt;
    // Bit 2&lt;br /&gt;
    if( ( key_state &amp;amp; ( 1 &amp;lt;&amp;lt; 2 ) ) &amp;amp;&amp;amp;&lt;br /&gt;
        ( i &amp;amp; ( 1 &amp;lt;&amp;lt; 2 ) )&lt;br /&gt;
       key_press |= ( 1 &amp;lt;&amp;lt; 2 );&lt;br /&gt;
&lt;br /&gt;
    ...&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
nur als wesentlich kompaktere Operation ausgeführt und für alle 8 Bits gleichzeitig.&lt;br /&gt;
Die Kürze und Effizienz dieser paar Codezeilen ergibt sich aus dem Umstand, dass jedes Bit in den Variablen für eine Taste steht und alle 8 (maximal möglichen) Tasten gleichzeitig die Operationen durchlaufen.&lt;br /&gt;
&lt;br /&gt;
===== Reduziert auf lediglich 1 Taste =====&lt;br /&gt;
Diskussionen im Forum zeigen immer wieder, dass viele eine Abneigung gegen diesen Code haben, weil er ihnen sehr kompliziert vorkommt.&lt;br /&gt;
&lt;br /&gt;
Der Code ist nicht leicht zu analysieren und er zieht alle Register dessen, was möglich ist, um sowohl Laufzeit als auch Speicherverbrauch einzusparen. Oft hört man auch das Argument: Ich benötige ja nur eine Entprellung für 1 Taste, gibt es da nichts Einfacheres?&lt;br /&gt;
&lt;br /&gt;
Hier ist die &#039;Langform&#039; des Codes, so wie man das für lediglich 1 Taste schreiben würde, wenn man exakt dasselbe Entprellverfahren einsetzen würde. Man sieht: Da ist keine Hexerei dabei: In key_state wird der letzte bekannte entprellte Zustand der Taste gehalten. Der Pin-Eingang wird mit diesem Zustand verglichen und wenn sich die beiden unterscheiden, dann wird ein Zähler heruntergezählt. Produziert dieses herunterzählen einen Unterlauf des Zählers, dann gilt die Taste als entprellt und wenn dann auch noch die Taste gerade gedrückt ist, dann wird dieses in key_press entsprechend vermerkt.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
uint8_t key_state;&lt;br /&gt;
uint8_t key_counter;&lt;br /&gt;
volatile uint8_t key_press;&lt;br /&gt;
&lt;br /&gt;
ISR( ... Overflow ... )&lt;br /&gt;
{&lt;br /&gt;
  uint8_t input = KEY_PIN &amp;amp; ( 1 &amp;lt;&amp;lt; KEY0 );&lt;br /&gt;
&lt;br /&gt;
  if( input != key_state ) {&lt;br /&gt;
    key_counter--;&lt;br /&gt;
    if( key_counter == 0xFF ) {&lt;br /&gt;
      key_counter = 3;&lt;br /&gt;
      key_state = input;&lt;br /&gt;
      if( input )&lt;br /&gt;
        key_press = TRUE;&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
  else&lt;br /&gt;
    key_counter = 3;&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
uint8_t get_key_press()&lt;br /&gt;
{&lt;br /&gt;
  uint8_t result;&lt;br /&gt;
&lt;br /&gt;
  cli();&lt;br /&gt;
  result = key_press;&lt;br /&gt;
  key_press = FALSE;&lt;br /&gt;
  sei();&lt;br /&gt;
&lt;br /&gt;
  return result;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Der vollständige Entprellcode, wie weiter oben gelistet, besticht jetzt aber darin, dass er compiliert kleiner ist als diese anschaulichere Variante für lediglich 1 Taste. Und das bei gleichzeitig erhöhter Funktionalität. Denn zb. ein Autorepeat ist in diesem Code noch gar nicht eingebaut. Und spätestens wenn man dann eine 2.te Taste entprellen möchte, dann ist auch der SRAM-Speicherverbrauch dieser Langform höher als der des Originals für 8 Tasten. Daraus folgt: Selbst für lediglich 1 Taste ist die Originalroutine die bessere Wahl.&lt;br /&gt;
&lt;br /&gt;
Und wegen der Komplexität mal eine Frage: Sind Sie selbst in der Lage eine entsprechend effiziente sqrt() Funktion zu schreiben, wie die, die sie in der Standard-C-Bibliothek vorfinden? Nein? Dann dürften Sie eigentlich Ihrer Argumentation nach die Bibliotheksfunktion sqrt() nicht verwenden, sondern müssten sich statt dessen selbst eine Wurzel-Funktion schreiben.&lt;br /&gt;
&lt;br /&gt;
=== Selbstsättigender Filter (nach Jürgen Schuhmacher) ===&lt;br /&gt;
Durch die Nutzung der diskreten Signalanalyse in Software kann die Funktionalität einer einfachen Entprellung mit einem Widerstand, einem Kondensator und einem Schmitttrigger wie in Hardware nachgebildet werden, indem ein abstrakter IIR-Filter benutzt wird, der eine Kondensatorladekurve emuliert. Mit der Vorschrift Y(t) = k Y(t-1) + Input wird ein einfaches Filter erzeugt, dass dem Eingangswert träge folgt. Bei Überschreiten eines bestimmten Wertes erfolgt mit einer einfachen Abfrage das Schalten des Ausgangssignals.&lt;br /&gt;
&lt;br /&gt;
Für Assembler und VHDL bei FPGAs eignet sich aufgrund der leicht zu implementierenden binären Operationen folgende Darstellung mit einer Auflösung des Filterwertspeichers von nur 8 bit: Wert_Neu = Wert_Alt - Wert_Alt/16 + 16*(Taste = True). Der Filterwert bildet dann den gedämpften Verlauf des Eingangs (flankenverschliffen) ab und kann Prellen bis nahe an den Grenzbereich zum schnellen Tasten unterdrücken. Der Ausgangswert ist dann einfach das höchstwertige Bit des Filterwertes.&lt;br /&gt;
&lt;br /&gt;
[[Datei:Entprellung mit IIR-Filter.gif]]&lt;br /&gt;
&lt;br /&gt;
Dazu muss das Signal des Tasters idealerweise um den Faktor 10-20 schneller abgetastet werden, als die höchste gewünschte Tippgeschwindigkeit vorgibt. Noch schneller abzutasten ist möglich, führt aber zu mehr Bedarf an Bits beim Filter. Die Schmittriggerfunktion kann dadurch gebildet werden, dass eine 1 am Ausgang bei z.B. Überschreiten einer 55% Grenze und eine 0 bei Unterschreitung der 45%-Grenze ausgeben wird. Im Zwischenbereich wird der alte Wert gehalten.&lt;br /&gt;
&lt;br /&gt;
=== Einfacher Mittelwertfilter (nach Lothar Miller) ===&lt;br /&gt;
Für digitale Schaltungen oder PLDs empfiehlt sich ein FIR-Filter mit aneinandergereihten FlipFlops. Man schiebt das Eingangssignal in eine FlipFlop-Kette und schaltet oberhalb der Mitte um:&lt;br /&gt;
&lt;br /&gt;
SignalInput -&amp;gt; FF1 -&amp;gt; FF2 -&amp;gt; FF3 -&amp;gt; FF4 -&amp;gt; FF5 -&amp;gt; FF6 -&amp;gt; FF7 -&amp;gt; FF8&lt;br /&gt;
&lt;br /&gt;
Wenn alle FFs = 1 (Summe der FFs=8) dann SignalOutput = 1&amp;lt;br /&amp;gt;&lt;br /&gt;
Wenn alle FFs = 0 (Summe der FFs=0) dann SignalOutput = 0&lt;br /&gt;
&lt;br /&gt;
Dieses Verfahren kann sehr einfach in Logik abgebildet werden, weil für die Berechnung des Ausgangs nur ein NOR bz. ein AND Gatter nötig ist.&lt;br /&gt;
&lt;br /&gt;
== Gegenüberstellung der Verfahren ==&lt;br /&gt;
* HW - &amp;quot;entprellte Schalter&amp;quot;: Sehr teuer, grosse Bauform, verschleissbelastet, geringe Haltbarkeit&lt;br /&gt;
* HW - &amp;quot;Umschalter&amp;quot; : benötigt aufwändigeren Schalter, benötigt Elektronik&lt;br /&gt;
* HW - &amp;quot;Umschalter ohne FF&amp;quot; : benötigt aufwändigeren Schalter und kleiner Kondensator&lt;br /&gt;
* HW - &amp;quot;Kondensatorentprellung&amp;quot; : benötigt etwas mehr Platz, kommt mit schlechten Schaltern zurecht&lt;br /&gt;
&lt;br /&gt;
* SW - Flankenverfahren:&lt;br /&gt;
* SW - Warteschleife: Durch die Warteschleifen eine nicht zu vernachlässigende Verzögerung im Code. Speziell wenn mehrere Tasten zu überwachen sind, nicht unproblematisch&lt;br /&gt;
* SW - Timer: Universalfunktionalität, die durch geringen Speicherverbrauch, geringen Rechenzeitverbrauch und gute Funktion besticht. Der &#039;Verbrauch&#039; eines Timers sieht auf den ersten Blick schlimmer aus, als er ist, denn in den meisten Programmen hat man sowieso einen Basistimer für die Zeitsteuerung des Programms im Einsatz, der für die Tastenentprellung mitbenutzt werden kann.&lt;br /&gt;
* SW - Filter: sehr geringer Platzbedarf in FPGAs, relativ gute Wirkung&lt;br /&gt;
* SW - Filter 2: sehr geringer Platzbedarf, gute Wirkung&lt;br /&gt;
&lt;br /&gt;
== Links zum Thema ==&lt;br /&gt;
&lt;br /&gt;
* [http://www.edn.com/design/analog/4324067/Contact-debouncing-algorithm-emulates-Schmitt-trigger Contact-debouncing algorithm (Artikel)],  [http://www.edn.com/file/13370-70705di.pdf als PDF]&lt;br /&gt;
* [[AVR-Tutorial: Tasten]]&lt;br /&gt;
* [[AVR-GCC-Tutorial#.28Tasten-.29Entprellung|AVR-GCC-Tutorial Tastenentprellung]]&lt;br /&gt;
* [http://www.mikrocontroller.net/forum/read-4-20435.html Beitrag im Forum, AVR Assembler]&lt;br /&gt;
* [http://www.ganssle.com/debouncing.pdf A guide to debouncing (engl.), praktische Erläuterungen zum Entprellen in Soft- und Hardware]&lt;br /&gt;
* [http://www.pololu.com/docs/0J16/all Understanding Destructive LC Voltage Spikes]&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:AVR]]&lt;br /&gt;
[[Kategorie:Signalverarbeitung]]&lt;/div&gt;</summary>
		<author><name>Debegr92</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=Entprellung&amp;diff=81179</id>
		<title>Entprellung</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=Entprellung&amp;diff=81179"/>
		<updated>2014-01-27T15:34:06Z</updated>

		<summary type="html">&lt;p&gt;Debegr92: /* Flankenerkennung */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Problembeschreibung ==&lt;br /&gt;
Mechanische [[Schalter]] wie [[Drehgeber]] neigen beim Ein- und Ausschalten zum sogenannten &#039;&#039;&#039;Prellen&#039;&#039;&#039;, d.h sie schalten schnell mehrfach aus und ein, verursacht durch mechanische Vibrationen des Schaltkontaktes, sofern sie nicht dagegen geschützt sind. Vereinfacht dargestellt, sieht eine von einem Schalter oder Taster geschaltete Spannung beim Schalten wie folgt aus:&lt;br /&gt;
&lt;br /&gt;
[[Bild:Entprellen.png]]&lt;br /&gt;
&lt;br /&gt;
Für die Vermeidung bzw. Auswertung dieses unsauberen Signals gibt es verschiedene Ansätze:&lt;br /&gt;
&lt;br /&gt;
== Hardwareentprellung ==&lt;br /&gt;
&lt;br /&gt;
===Prellfreie Schalter===&lt;br /&gt;
&lt;br /&gt;
Für Spezialanwendungen hält die elektromechanische Industrie verschiedene Sonderkonstruktionen bereit, die saubere Schaltzustände nach Aussen generieren, indem sie entweder eine mechanische Dämpfung in Form eines selbsthemmenden Federmechanismus oder eine integrierte elektronische Signalverzögerung benutzen.&lt;br /&gt;
&lt;br /&gt;
Solche Systeme sind jedoch teuer und werden meist nur im Leistungsbereich eingesetzt.&lt;br /&gt;
&lt;br /&gt;
===Wechselschalter===&lt;br /&gt;
&lt;br /&gt;
Für die Entprellung von Wechselschaltern (engl. Double Throw Switch) kann ein klassisches RS-[[Flipflop]] genutzt werden. Bei dieser Variante werden neben zwei NAND-Gattern nur noch zwei Pull-Up Widerstände benötigt.&lt;br /&gt;
&lt;br /&gt;
[[Bild:NAND_debouncer.png|thumb|left|350px|&#039;&#039;&#039;Taster entprellen mit NAND-RS-Flipflop&#039;&#039;&#039;]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br clear=&amp;quot;all&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In der gezeigten Schalterstellung liegt an der Position /S der Pegel 0 an. Damit ist das Flipflop gesetzt und der Ausgang auf dem Pegel 1. Schließt der Schalter zwischen den Kontakten 2 und 3, liegt an der Postion /R der Pegel 0 an. Dies bedeutet, dass der Ausgang des Flipflops auf den Pegel 0 geht. Sobald der Schalter von einem zum anderen Kontakt wechselt, beginnt er in der Regel zu prellen. Während des Prellens wechselt der Schalter zwischen den beiden Zuständen &amp;quot;Schalter berührt Kontakt&amp;quot; und &amp;quot;Schalter ist frei in der Luft&amp;quot;. Der Ausgang des Flipflops bleibt in dieser Prellzeit aber stabil, da der Schalter während des Prellens nie den gegenüberliegenden Kontakt berührt und das RS-Flipflop seinen Zustand allein halten kann. Die Prellzeit ist stark vom Schaltertyp abhängig und liegt zwischen 0,1 und 10ms. Die Dimensionierung der Widerstände ist relativ unkritisch. Als Richtwert können hier 100kOhm verwendet werden.&lt;br /&gt;
&lt;br /&gt;
====Wechselschalter ohne Flip-Flop====&lt;br /&gt;
&lt;br /&gt;
Wenn man mal gerade kein Flip-Flop zur Hand hat, kann man sich auch mit dieser Schaltung behelfen.&lt;br /&gt;
&lt;br /&gt;
[[Bild:WechselEntprellC.PNG|thumb|left|350px|&#039;&#039;&#039;Wechsler entprellen mit Kondensator&#039;&#039;&#039;]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br clear=&amp;quot;all&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Zur Funktionsweise:&lt;br /&gt;
Beim Umschalten wird der Kondensator immer sofort umgeladen.&lt;br /&gt;
Während der Kontakt prellt, befindet er sich in der Luft und hat keinerlei Verbindung. Während dieser Zeit übernimmt der Kondensator das halten des Pegels.&lt;br /&gt;
&lt;br /&gt;
Dimensionierung:&lt;br /&gt;
Ist der entprellte Taster an ein IC Angeschlossen, ist der &#039;&#039;Input Leakage Current&#039;&#039; der ausschlaggebende Strom. Falls weitere Ströme fließen sind diese mit zu berücksichtigen. Bei einem Mikrocontroller von Atmel sind 1µA typisch.&lt;br /&gt;
Es gilt:&lt;br /&gt;
:&amp;lt;math&amp;gt;\frac{dU}{dt} = \frac{I}{C}&amp;lt;/math&amp;gt;&lt;br /&gt;
Da eine Prellung ca. 10ms dauert und die Spannung in dieser Zeit beispielsweise um maximal 0,5V fallen soll kommt man auf folgende Kapazität:&lt;br /&gt;
:&amp;lt;math&amp;gt; C = \frac{I \cdot dt}{dU} = \frac{1\mu A \cdot 10ms}{0,5V} = 20nF &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Um Stromspitzen zu verringern kann ein Widerstand mit eingefügt werden. Eine Zeitkonstante von 1µs bis 1ms scheint sinnvoll. Also 500 Ohm bis 500kOhm sind nutzbar, wobei bei niedrigem Widerstand die Stromspitzen höher sind, und bei 500kOhm der Pinstrom störend wird.&lt;br /&gt;
&lt;br /&gt;
===Einfacher Taster===&lt;br /&gt;
&lt;br /&gt;
Auch wenn das RS-Flipflop sehr effektiv ist, wird diese Variante der Entprellung nur selten angewendet. Grund dafür ist, dass in Schaltungen häufiger einfache Taster eingesetzt werden. Diese sind oft kleiner und preisgünstiger. Um einfache Taster (engl. Single Throw Switch) zu entprellen, kann ein einfacher RC-Tiefpass eingesetzt werden. Hierbei wird ein Kondensator über einen Widerstand je nach Schalterstellung auf- oder entladen. Das RC-Glied bildet einen Tiefpass, sodass die Spannung über den Kondensator nicht von einen Pegel auf den anderen springen kann.&lt;br /&gt;
&lt;br /&gt;
[[Bild:RC_debouncer.png|thumb|left|300px|Taster entprellen mit RC-Entpreller]]&lt;br /&gt;
&lt;br /&gt;
[[Datei:Entprellen1a.png|thumb|350px| Entstehender Spannungsverlauf]]&lt;br /&gt;
{{Absatz}}&lt;br /&gt;
&lt;br /&gt;
Wenn der Schalter geöffnet ist, lädt sich der Kondensator langsam über die beiden Widerstände R&amp;lt;sub&amp;gt;1&amp;lt;/sub&amp;gt; und R&amp;lt;sub&amp;gt;2&amp;lt;/sub&amp;gt; auf V&amp;lt;sub&amp;gt;cc&amp;lt;/sub&amp;gt; auf. Beim Erreichen der Umschaltschwelle springt der Ausgang auf den Pegel 0. Wird der Schalter geschlossen, entlädt sich der Kondensator langsam über den Widerstand R&amp;lt;sub&amp;gt;2&amp;lt;/sub&amp;gt;. Demnach ändert sich der Ausgang des Inverters auf den Pegel 1. Während der Taster prellt, kann sich die Spannung über dem Kondensator nicht sprunghaft ändern, da das Auf- und Entladen eher langsam über die Widerstände erfolgt. Außerdem sind die Schaltschwellen für den Übergang LOW-&amp;gt;HIGH und HIGH-&amp;gt;LOW stark verschieden (Hysterese, siehe Artikel [[Schmitt-Trigger]]). Bei richtiger Dimensionierung der Bauelemente wird somit der Ausgang des Inverters prellfrei.&lt;br /&gt;
&lt;br /&gt;
Zu beachten ist, dass der Inverter &#039;&#039;&#039;unbedingt&#039;&#039;&#039; einer mit [[Schmitt-Trigger]] Eingängen sein muss, weil bei Standard-Logikeingängen im Bereich von üblicherweise 0,8V - 2,0V der Ausgang nicht definiert ist. Als Inverter kann zum Beispiel der 74HC14 oder der CD40106 (pinkompatibel) eingesetzt werden. Alternativ kann auch ein CD4093 eingesetzt werden. Bei dem CD4093 handelt es sich um NAND-Gatter mit Schmitt-Trigger-Eingängen. Um aus einem NAND-Gatter einen Inverter zu machen, müssen einfach nur die beiden Eingänge verbunden werden oder ein Eingang fest auf HIGH gelegt werden.&lt;br /&gt;
&lt;br /&gt;
Für eine geeignete Dimensionierung muss man etwas mit den Standardformeln für einen Kondensator jonglieren. Die Spannung über den Kondensator beim Entladen berechnet sich nach:&lt;br /&gt;
:&amp;lt;math&amp;gt;U_C(t) = U_0 \cdot e^{\frac{-t}{R_2 C_1}}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Damit der Ausgang des Inverters stabil ist, muss die Spannung über den Kondensator und damit die Spannung am Eingang des Inverters über der Spannung bleiben, bei welcher der Inverter umschaltet. Diese Schwellwertspannung ist genau die zeitabhängige Spannung über den Kondensator.&lt;br /&gt;
:&amp;lt;math&amp;gt;U_C(t)\!\ = U_{th}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Durch Umstellen der Formel ergibt sich nun:&lt;br /&gt;
:&amp;lt;math&amp;gt;R_2=\frac{-t}{C_1 \cdot ln\left(\frac{U_{th}}{U_0} \right)}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ein Taster prellt üblicherweise etwa 10ms. Zur Sicherheit kann bei der Berechnung des Widerstandes eine Prellzeit von 20ms angenommen werden. U_0 ist die Betriebsspannung also Vcc. Die Schwellwertspannung muss aus dem Datenblatt des eingesetzten Schmitt-Triggers abgelesen werden. Beim 74HC14 beträgt der gesuchte Wert 2,0V. Nimmt man für den Kondensator 1µF und beträgt die  Betriebsspannung 5V, ergibt sich für den Widerstand ein Wert von etwa 22kOhm.&lt;br /&gt;
&lt;br /&gt;
Wird der Schalter geöffnet, lädt sich der Kondensator nach folgender Formel auf:&lt;br /&gt;
:&amp;lt;math&amp;gt;U_C(t) = U_0 \cdot \left( 1-e^{\frac{-t}{(R_1+R_2)\cdot C_1}} \right)&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Mit U_th=U_C ergibt das Umstellen nach (R_1+R_2):&lt;br /&gt;
:&amp;lt;math&amp;gt;R_1+R_2 = \frac{-t}{C_1 \cdot ln\left(1-\frac{U_{th}}{U_0} \right)} &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Für die Schwellspannung lässt sich aus dem Datenblatt ein Wert von 2,3V ablesen. Mit diesem Wert und den Annahmen von oben ergibt sich für R_1+R_2 ein Wert von 32kOhm. Somit ergibt sich für R_1 ein Wert von etwa 10kOhm.&lt;br /&gt;
&lt;br /&gt;
Anmerkung: Beim 74LS14 von Hitachi z.&amp;amp;nbsp;B. sind die oberen und unteren Schaltschwellwerte unterschiedlich. Es muss darauf geachtet werden, dass U_{th} beim Entladen die untere Schwelle und U_{th} beim Laden die obere Schwelle einnimmt.&lt;br /&gt;
&lt;br /&gt;
== Softwareentprellung ==&lt;br /&gt;
&lt;br /&gt;
In den Zeiten der elektronischen Auswertung von Tastern und Schaltern ist das softwaretechnische Entprellen oft billiger, als die Benutzung eines teuren Schalters. Daher werden heute z.B. auch Computertastaturen nicht mehr mit prellarmen Tasten oder Entprellkondensatoren ausgestattet.&lt;br /&gt;
&lt;br /&gt;
Bei Verwendung des in den meisten Geräten ohnehin vorhandenen Mikrocontrollers z.B., kann man sich die zusätzliche Hardware sparen, da die Entprellung in Software praktisch genauso gut funktioniert. Dabei ist nur zu beachten, dass zusätzliche Rechenleistung und je nach Umsetzung auch einige Hardwareressourcen (z.B. Timer) benötigt werden.&lt;br /&gt;
&lt;br /&gt;
=== Flankenerkennung ===&lt;br /&gt;
Bei einem Taster gibt es insgesamt 4 theoretische Zustände:&lt;br /&gt;
&lt;br /&gt;
* 1. war nicht gedrückt und ist nicht gedrückt&lt;br /&gt;
* 2. war nicht gedrückt und ist gedrückt (steigende Flanke)&lt;br /&gt;
* 3. war gedrückt und ist immer noch gedrückt&lt;br /&gt;
* 4. war gedrückt und ist nicht mehr gedrückt (fallende Flanke)&lt;br /&gt;
&lt;br /&gt;
Diese einzelnen Zustände lassen sich jetzt bequem abfragen/durchlaufen. Die Entprellung geschieht dabei durch die ganze Laufzeit des Programms. Die Taster werden hierbei als Active-Low angeschlossen, um die internen Pull-Ups zu nutzen.&lt;br /&gt;
&lt;br /&gt;
Diese Routine gibt für den Zustand &amp;quot;steigende Flanke&amp;quot; den Wert &amp;quot;1&amp;quot; zurück, sonst &amp;quot;0&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
#define TASTERPORT PINC&lt;br /&gt;
#define TASTERBIT PINC1&lt;br /&gt;
&lt;br /&gt;
char taster(void)&lt;br /&gt;
{&lt;br /&gt;
    static unsigned char zustand;&lt;br /&gt;
    char rw = 0;&lt;br /&gt;
&lt;br /&gt;
    if(zustand == 0 &amp;amp;&amp;amp; !(TASTERPORT &amp;amp; (1&amp;lt;&amp;lt;TASTERBIT)))   //Taster wird gedrueckt (steigende Flanke)&lt;br /&gt;
    {&lt;br /&gt;
        zustand = 1;&lt;br /&gt;
        rw = 1;&lt;br /&gt;
    }&lt;br /&gt;
    else if (zustand == 1 &amp;amp;&amp;amp; !(TASTERPORT &amp;amp; (1&amp;lt;&amp;lt;TASTERBIT)))   //Taster wird gehalten&lt;br /&gt;
    {&lt;br /&gt;
         zustand = 2;&lt;br /&gt;
         rw = 0;&lt;br /&gt;
    }&lt;br /&gt;
    else if (zustand == 2 &amp;amp;&amp;amp; (TASTERPORT &amp;amp; (1&amp;lt;&amp;lt;TASTERBIT)))   //Taster wird losgelassen (fallende Flanke)&lt;br /&gt;
    {&lt;br /&gt;
        zustand = 3;&lt;br /&gt;
        rw = 0;&lt;br /&gt;
    }&lt;br /&gt;
    else if (zustand == 3 &amp;amp;&amp;amp; (TASTERPORT &amp;amp; (1&amp;lt;&amp;lt;TASTERBIT)))   //Taster losgelassen&lt;br /&gt;
    {&lt;br /&gt;
        zustand = 0;&lt;br /&gt;
        rw = 0;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    return rw;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Eine Erweiterung, damit beliebig lange das Halten einer Taste erkannt wird kann man ganz einfach so implementieren:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight&amp;gt;&lt;br /&gt;
    // zustand kann entweder zum ersten mal als gehlaten detektiert werden oder aber jedes weiter mal&lt;br /&gt;
    else if (((zustand == 1) || (zustand == 2)) &amp;amp;&amp;amp; !(TASTERPORT &amp;amp; (1&amp;lt;&amp;lt;TASTERBIT)))   //Taster wird gehalten&lt;br /&gt;
    {&lt;br /&gt;
         zustand = 2;&lt;br /&gt;
         rw = 0;&lt;br /&gt;
    }&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Warteschleifen-Verfahren ===&lt;br /&gt;
&lt;br /&gt;
Soll nun mit einem Mikrocontroller gezählt werden, wie oft ein Kontakt oder ein Relais geschaltet wird, muss das Prellen des Kontaktes exakt berücksichtigt - und von einem gewollten Mehrfachschalten abgegrenzt werden, da sonst  möglicherweise Fehlimpulse gezählt- oder andererseits echte Schaltvorgänge übersprungen werden. Dies muss beim Schreiben des Programms hinsichtlich des Abtastens des Kontaktes unbedingt Rechnung getragen werden.&lt;br /&gt;
&lt;br /&gt;
Beim folgenden einfachen Beispiel für eine Entprellung ist zu beachten, dass der AVR im Falle eines Tastendrucks 200ms wartet, also brach liegt. Bei zeitkritische Anwendungen sollte man ein anderes Verfahren nutzen (z.&amp;amp;nbsp;B. Abfrage der Tastenzustände in einer Timer-Interrupt-Service-Routine).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
#include &amp;lt;avr/io.h&amp;gt;&lt;br /&gt;
#include &amp;lt;inttypes.h&amp;gt;&lt;br /&gt;
#ifndef F_CPU&lt;br /&gt;
#warning &amp;quot;F_CPU war noch nicht definiert, wird nun mit 3686400 definiert&amp;quot;&lt;br /&gt;
#define F_CPU 3686400UL     /* Quarz mit 3.6864 Mhz  */&lt;br /&gt;
#endif&lt;br /&gt;
#include &amp;lt;util/delay.h&amp;gt;     /* bei alter avr-libc: #include &amp;lt;avr/delay.h&amp;gt; */      &lt;br /&gt;
&lt;br /&gt;
/* Einfache Funktion zum Entprellen eines Tasters */&lt;br /&gt;
inline uint8_t debounce(volatile uint8_t *port, uint8_t pin)&lt;br /&gt;
{&lt;br /&gt;
    if ( !(*port &amp;amp; (1 &amp;lt;&amp;lt; pin)) )&lt;br /&gt;
    {&lt;br /&gt;
        /* Pin wurde auf Masse gezogen, 100ms warten   */&lt;br /&gt;
        _delay_ms(50);   // Maximalwert des Parameters an _delay_ms &lt;br /&gt;
        _delay_ms(50);   // beachten, vgl. Dokumentation der avr-libc&lt;br /&gt;
        if ( *port &amp;amp; (1 &amp;lt;&amp;lt; pin) )&lt;br /&gt;
        {&lt;br /&gt;
            /* Anwender Zeit zum Loslassen des Tasters geben */&lt;br /&gt;
            _delay_ms(50);&lt;br /&gt;
            _delay_ms(50); &lt;br /&gt;
            return 1;&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
    return 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
int main(void)&lt;br /&gt;
{&lt;br /&gt;
    DDRB &amp;amp;= ~( 1 &amp;lt;&amp;lt; PB0 );        /* PIN PB0 auf Eingang Taster)  */&lt;br /&gt;
    PORTB |= ( 1 &amp;lt;&amp;lt; PB0 );        /* Pullup-Widerstand aktivieren */&lt;br /&gt;
    ...&lt;br /&gt;
    if (debounce(&amp;amp;PINB, PB0))&lt;br /&gt;
    {&lt;br /&gt;
        /* Falls Taster an PIN PB0 gedrueckt     */&lt;br /&gt;
        /* LED an Port PD7 an- bzw. ausschalten: */&lt;br /&gt;
        PORTD = PORTD ^ ( 1 &amp;lt;&amp;lt; PD7 );&lt;br /&gt;
    }&lt;br /&gt;
    ...&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die obige Routine hat leider mehrere Nachteile:&lt;br /&gt;
* sie detektiert nur das Loslassen (unergonomisch)&lt;br /&gt;
* sie verzögert die Mainloop immer um 100ms bei gedrückter Taste&lt;br /&gt;
* sie verliert Tastendrücke, je mehr die Mainloop zu tun hat.&lt;br /&gt;
&lt;br /&gt;
Eine ähnlich einfach zu benutzende Routine, aber ohne all diese Nachteile findet sich im Forenthread&lt;br /&gt;
[http://www.mikrocontroller.net/topic/164194#new Entprellung für Anfänger]&lt;br /&gt;
&lt;br /&gt;
Der &#039;&#039;DEBOUNCE&#039;&#039; Befehl in dem BASIC-Dialekt BASCOM für AVR ist ebenfalls nach dem Warteschleifen-Verfahren programmiert. Die Wartezeit beträgt standardmäßig 25 ms, kann aber vom Anwender überschrieben werden. Vgl.  [http://avrhelp.mcselec.com/bascom-avr.html?DEBOUNCE BASCOM Online-Manual zu DEBOUNCE].&lt;br /&gt;
&lt;br /&gt;
Eine C-Implementierung für eine Tastenabfrage mit Warteschleife ist im Artikel [[AVR-GCC-Tutorial#IO-Register_als_Parameter_und_Variablen|AVR-GCC-Tutorial: IO-Register als Parameter und Variablen]] angeben.&lt;br /&gt;
&lt;br /&gt;
Der Nachteil dieses Verfahrens ist, dass der Controller durch die Warteschleife blockiert wird. Günstiger ist die Implementierung mit einem Timer-Interrupt.&lt;br /&gt;
&lt;br /&gt;
==== Warteschleifenvariante mit Maske und Pointer (nach Christian Riggenbach) ====&lt;br /&gt;
&lt;br /&gt;
Hier eine weitere Funktion, um Taster zu entprellen: Durch den zusätzlichen Code kann eine Entprellzeit von durchschnittlich 1-3ms (mindestens 8*150µs = 1ms) erreicht werden. Grundsätzlich prüft die Funktion den Pegel der Pins auf einem bestimmten Port. Wenn die/der Pegel 8 Mal konstant war, wird die Schleife verlassen. Diese Funktion kann sehr gut eingesetzt werden, um in einer Endlosschleife Taster anzufragen, da sie, wie erwähnt, eine kurze Wartezeit hat.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
void entprellung( volatile uint8_t *port, uint8_t maske ) {&lt;br /&gt;
  uint8_t   port_puffer;&lt;br /&gt;
  uint8_t   entprellungs_puffer;&lt;br /&gt;
&lt;br /&gt;
  for( entprellungs_puffer=0 ; entprellungs_puffer!=0xff ; ) {&lt;br /&gt;
    entprellungs_puffer&amp;lt;&amp;lt;=1;&lt;br /&gt;
    port_puffer = *port;&lt;br /&gt;
    _delay_us(150);&lt;br /&gt;
    if( (*port &amp;amp; maske) == (port_puffer &amp;amp; maske) )&lt;br /&gt;
      entprellungs_puffer |= 0x01;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Die Funktion wird wie folgt aufgerufen:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
  // Bugfix 20100414&lt;br /&gt;
  // http://www.nongnu.org/avr-libc/user-manual/FAQ.html#faq_port_pass&lt;br /&gt;
  entprellung( &amp;amp;PINB, (1&amp;lt;&amp;lt;PINB2) ); // ggf. Prellen abwarten &lt;br /&gt;
  if( PINB &amp;amp; (1&amp;lt;&amp;lt;PINB2) )           // dann stabilen Wert einlesen&lt;br /&gt;
  {&lt;br /&gt;
    // mach was&lt;br /&gt;
  }&lt;br /&gt;
  else&lt;br /&gt;
  {&lt;br /&gt;
    // mach was anderes&lt;br /&gt;
  }&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Als Maske kann ein beliebiger Wert übergeben werden. Sie verhindert, dass nichtverwendete Taster die Entprellzeit negativ beeinflussen.&lt;br /&gt;
&lt;br /&gt;
==== Debounce-Makro von Peter Dannegger ====&lt;br /&gt;
&lt;br /&gt;
Peter Dannegger hat in [http://www.mikrocontroller.net/topic/164194#1566921 &amp;quot;Entprellen für Anfänger&amp;quot;] folgende vereinfachtes Entprellverfahren beschrieben. Das Makro arbeitet in der Originalversion mit &#039;&#039;active low&#039;&#039; geschalteten Tastern, kann aber einfach für  &#039;&#039;active high&#039;&#039; geschaltete Taster angepasst werden ([[Pollin Funk-AVR-Evaluationsboard#Tasty Reloaded|Tasty Reloaded]]). &lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
/************************************************************************/&lt;br /&gt;
/*                                                                      */&lt;br /&gt;
/*                      Not so powerful Debouncing Example              */&lt;br /&gt;
/*                      No Interrupt needed                             */&lt;br /&gt;
/*                                                                      */&lt;br /&gt;
/*              Author: Peter Dannegger                                 */&lt;br /&gt;
/*                                                                      */&lt;br /&gt;
/************************************************************************/&lt;br /&gt;
// Target: ATtiny13&lt;br /&gt;
&lt;br /&gt;
#include &amp;lt;avr/io.h&amp;gt;&lt;br /&gt;
#define F_CPU 9.6e6&lt;br /&gt;
#include &amp;lt;util/delay.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
#define debounce( port, pin )                                         \&lt;br /&gt;
({                                                                    \&lt;br /&gt;
  static uint8_t flag = 0;     /* new variable on every macro usage */  \&lt;br /&gt;
  uint8_t i = 0;                                                      \&lt;br /&gt;
                                                                      \&lt;br /&gt;
  if( flag ){                  /* check for key release: */           \&lt;br /&gt;
    for(;;){                   /* loop ... */                         \&lt;br /&gt;
      if( !(port &amp;amp; 1&amp;lt;&amp;lt;pin) ){  /* ... until key pressed or ... */     \&lt;br /&gt;
        i = 0;                 /* 0 = bounce */                       \&lt;br /&gt;
        break;                                                        \&lt;br /&gt;
      }                                                               \&lt;br /&gt;
      _delay_us( 98 );         /* * 256 = 25ms */                     \&lt;br /&gt;
      if( --i == 0 ){          /* ... until key &amp;gt;25ms released */     \&lt;br /&gt;
        flag = 0;              /* clear press flag */                 \&lt;br /&gt;
        i = 0;                 /* 0 = key release debounced */        \&lt;br /&gt;
        break;                                                        \&lt;br /&gt;
      }                                                               \&lt;br /&gt;
    }                                                                 \&lt;br /&gt;
  }else{                       /* else check for key press: */        \&lt;br /&gt;
    for(;;){                   /* loop ... */                         \&lt;br /&gt;
      if( (port &amp;amp; 1&amp;lt;&amp;lt;pin) ){   /* ... until key released or ... */    \&lt;br /&gt;
        i = 0;                 /* 0 = bounce */                       \&lt;br /&gt;
        break;                                                        \&lt;br /&gt;
      }                                                               \&lt;br /&gt;
      _delay_us( 98 );         /* * 256 = 25ms */                     \&lt;br /&gt;
      if( --i == 0 ){          /* ... until key &amp;gt;25ms pressed */      \&lt;br /&gt;
        flag = 1;              /* set press flag */                   \&lt;br /&gt;
        i = 1;                 /* 1 = key press debounced */          \&lt;br /&gt;
        break;                                                        \&lt;br /&gt;
      }                                                               \&lt;br /&gt;
    }                                                                 \&lt;br /&gt;
  }                                                                   \&lt;br /&gt;
  i;                           /* return value of Macro */            \&lt;br /&gt;
})&lt;br /&gt;
&lt;br /&gt;
/*&lt;br /&gt;
   Testapplication&lt;br /&gt;
 */&lt;br /&gt;
int main(void)&lt;br /&gt;
{&lt;br /&gt;
  DDRB  &amp;amp;= ~(1&amp;lt;&amp;lt;PB0);&lt;br /&gt;
  PORTB |=   1&amp;lt;&amp;lt;PB0;&lt;br /&gt;
  DDRB  |=   1&amp;lt;&amp;lt;PB2;&lt;br /&gt;
  DDRB  &amp;amp;= ~(1&amp;lt;&amp;lt;PB1);&lt;br /&gt;
  PORTB |=   1&amp;lt;&amp;lt;PB1;&lt;br /&gt;
  DDRB  |=   1&amp;lt;&amp;lt;PB3;&lt;br /&gt;
  for(;;){&lt;br /&gt;
    if( debounce( PINB, PB1 ) )&lt;br /&gt;
      PORTB ^= 1&amp;lt;&amp;lt;PB2;&lt;br /&gt;
    if( debounce( PINB, PB0 ) )&lt;br /&gt;
      PORTB ^= 1&amp;lt;&amp;lt;PB3;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Wenn das Makro für die gleiche Taste (Pin) an mehreren Stellen aufgerufen werden soll, muss eine Funktion angelegt werden, damit beide Aufrufe an die gleiche Zustandsvariable &#039;&#039;flag&#039;&#039; auswerten [http://www.mikrocontroller.net/topic/195914#1918727]:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
// Hilfsfunktion&lt;br /&gt;
uint8_t debounce_C1( void )&lt;br /&gt;
{&lt;br /&gt;
  return debounce(PINC, PC1);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// Beispielanwendung&lt;br /&gt;
int main(void)&lt;br /&gt;
{&lt;br /&gt;
  DDRB  |=   1&amp;lt;&amp;lt;PB2;&lt;br /&gt;
  DDRB  |=   1&amp;lt;&amp;lt;PB3;&lt;br /&gt;
  DDRC  &amp;amp;= ~(1&amp;lt;&amp;lt;PC1);&lt;br /&gt;
  PORTC |=   1&amp;lt;&amp;lt;PC1; // Pullup für Taster&lt;br /&gt;
&lt;br /&gt;
  for(;;){&lt;br /&gt;
    if( debounce_C1() )  // nicht: debounce(PINC, PC1)&lt;br /&gt;
      PORTB ^= 1&amp;lt;&amp;lt;PB2;&lt;br /&gt;
    if( debounce_C1() )  // nicht: debounce(PINC, PC1)&lt;br /&gt;
      PORTB ^= 1&amp;lt;&amp;lt;PB3;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Timer-Verfahren (nach Peter Dannegger) ===&lt;br /&gt;
&lt;br /&gt;
==== Grundroutine (AVR Assembler) ====&lt;br /&gt;
&lt;br /&gt;
Siehe dazu: [http://www.mikrocontroller.net/forum/read-4-20435.html#new Forum] &lt;br /&gt;
&lt;br /&gt;
Vorteile&lt;br /&gt;
* besonders kurzer Code&lt;br /&gt;
* schnell&lt;br /&gt;
&lt;br /&gt;
Außerdem können 8 Tasten (aktiv low) gleichzeitig bearbeitet werden, es dürfen also&lt;br /&gt;
alle exakt zur selben Zeit gedrückt werden. Andere Routinen können z.&amp;amp;nbsp;B. nur eine Taste verarbeiten, d.h. die zuerst oder zuletzt gedrückte gewinnt, oder es kommt Unsinn heraus.&lt;br /&gt;
&lt;br /&gt;
Die eigentliche Einlese- und Entprellroutine ist nur 8 Instruktionen&lt;br /&gt;
kurz. Der entprellte Tastenzustand ist im Register &#039;&#039;key_state&#039;&#039;. Mit nur 2 weiteren Instruktionen wird dann der Wechsel von &#039;&#039;Taste offen&#039;&#039; zu&lt;br /&gt;
&#039;&#039;Taste gedrückt&#039;&#039; erkannt und im Register &#039;&#039;key_press&#039;&#039; abgelegt. Im Beispielcode werden dann damit 8 LEDs ein- und ausgeschaltet. Jede Taste entspricht einem Bit in den Registern, d.h. die Verarbeitung erfolgt bitweise mit logischen Operationen. Zum Verständnis empfiehlt es sich daher, die Logikgleichungen mit Gattern für ein Bit = eine Taste aufzumalen. Die Register kann man sich als Flipflops denken, die mit der Entprellzeit als Takt arbeiten. D.h. man kann das auch so z.&amp;amp;nbsp;B. in einem GAL22V10 realisieren.&lt;br /&gt;
&lt;br /&gt;
Als Kommentar sind neben den einzelnen Instruktionen alle 8 möglichen&lt;br /&gt;
Kombinationen der 3 Signale dargestellt.&lt;br /&gt;
&lt;br /&gt;
Beispielcode für AVR (Assembler):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;avrasm&amp;quot;&amp;gt; &lt;br /&gt;
.nolist&lt;br /&gt;
.include &amp;quot;c:\avr\inc\1200def.inc&amp;quot;&lt;br /&gt;
.list&lt;br /&gt;
.def  save_sreg         = r0&lt;br /&gt;
.def  iwr0              = r1&lt;br /&gt;
.def  iwr1              = r2&lt;br /&gt;
&lt;br /&gt;
.def  key_old           = r3&lt;br /&gt;
.def  key_state         = r4&lt;br /&gt;
.def  key_press         = r5&lt;br /&gt;
&lt;br /&gt;
.def  leds              = r16&lt;br /&gt;
.def  wr0               = r17&lt;br /&gt;
&lt;br /&gt;
.equ  key_port          = pind&lt;br /&gt;
.equ  led_port          = portb&lt;br /&gt;
&lt;br /&gt;
      rjmp   init&lt;br /&gt;
.org OVF0addr		;timer interrupt 24ms&lt;br /&gt;
      in     save_sreg, SREG&lt;br /&gt;
get8key:                               ;/old      state     iwr1      iwr0&lt;br /&gt;
      mov    iwr0, key_old             ;00110011  10101010            00110011&lt;br /&gt;
      in     key_old, key_port         ;11110000&lt;br /&gt;
      eor    iwr0, key_old             ;                              11000011&lt;br /&gt;
      com    key_old                   ;00001111&lt;br /&gt;
      mov    iwr1, key_state           ;                    10101010&lt;br /&gt;
      or     key_state, iwr0           ;          11101011&lt;br /&gt;
      and    iwr0, key_old             ;                              00000011&lt;br /&gt;
      eor    key_state, iwr0           ;          11101000&lt;br /&gt;
      and    iwr1, iwr0                ;                    00000010&lt;br /&gt;
      or     key_press, iwr1           ;store key press detect&lt;br /&gt;
;&lt;br /&gt;
;			insert other timer functions here&lt;br /&gt;
;&lt;br /&gt;
      out    SREG, save_sreg&lt;br /&gt;
      reti&lt;br /&gt;
;-------------------------------------------------------------------------&lt;br /&gt;
init:&lt;br /&gt;
      ldi    wr0, 0xFF&lt;br /&gt;
      out    ddrb, wr0&lt;br /&gt;
      ldi    wr0, 1&amp;lt;&amp;lt;CS02 | 1&amp;lt;&amp;lt;CS00    ;divide by 1024 * 256&lt;br /&gt;
      out    TCCR0, wr0&lt;br /&gt;
      ldi    wr0, 1&amp;lt;&amp;lt;TOIE0             ;enable timer interrupt&lt;br /&gt;
      out    TIMSK, wr0&lt;br /&gt;
&lt;br /&gt;
      clr    key_old&lt;br /&gt;
      clr    key_state&lt;br /&gt;
      clr    key_press&lt;br /&gt;
      ldi    leds, 0xFF&lt;br /&gt;
main: cli&lt;br /&gt;
      eor    leds, key_press           ;toggle LEDs&lt;br /&gt;
      clr    key_press                 ;clear, if key press action done&lt;br /&gt;
      sei&lt;br /&gt;
      out    led_port, leds&lt;br /&gt;
      rjmp   main&lt;br /&gt;
;-------------------------------------------------------------&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Komfortroutine (C für AVR) ====&lt;br /&gt;
&lt;br /&gt;
Siehe dazu: [http://www.mikrocontroller.net/forum/read-4-310276.html Forum]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Anmerkung&#039;&#039;&#039; Wenn statt active-low (Ruhezustand High) active-high (Ruhezustand Low) verwendet wird muss eine Zeile geändert werden siehe:&lt;br /&gt;
[http://www.mikrocontroller.net/forum/read-4-310276.html gesamter Beitrag im Forum], &lt;br /&gt;
[http://www.mikrocontroller.net/topic/48465#606555 Stelle 1 im Beitrag], ([http://www.mikrocontroller.net/topic/48465#2306398 Stelle 2 im Beitrag] muss *nicht* geändert werden, da hier die Polarität gar keinen Einfluß hat).&lt;br /&gt;
&lt;br /&gt;
Funktionsprinzip wie oben plus zusätzliche Features:  &lt;br /&gt;
* Kann Tasten sparen durch unterschiedliche Aktionen bei kurzem oder langem Drücken&lt;br /&gt;
* Wiederholfunktion, z.&amp;amp;nbsp;B. für die Eingabe von Werten&lt;br /&gt;
&lt;br /&gt;
Das Programm ist für avr-gcc/avr-libc geschrieben, kann aber mit ein paar Anpassungen auch mit anderen Compilern und Mikrocontrollern verwendet werden. Eine Portierung für den AT91SAM7 findet man [http://www.google.com/codesearch?q=show:ac2viP-2E2Y:pzkOO5QRsoc:RPICuprYy-A&amp;amp;sa=N&amp;amp;cd=1&amp;amp;ct=rc&amp;amp;cs_p=svn://mikrocontroller.net/mp3dec/trunk&amp;amp;cs_f=keys.c#a0 hier] (aus dem Projekt [[ARM MP3/AAC Player]]).&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
/************************************************************************/&lt;br /&gt;
/*                                                                      */&lt;br /&gt;
/*                      Debouncing 8 Keys                               */&lt;br /&gt;
/*                      Sampling 4 Times                                */&lt;br /&gt;
/*                      With Repeat Function                            */&lt;br /&gt;
/*                                                                      */&lt;br /&gt;
/*              Author: Peter Dannegger                                 */&lt;br /&gt;
/*                      danni@specs.de                                  */&lt;br /&gt;
/*                                                                      */&lt;br /&gt;
/************************************************************************/&lt;br /&gt;
&lt;br /&gt;
#include &amp;lt;stdint.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;
&lt;br /&gt;
#ifndef F_CPU&lt;br /&gt;
#define F_CPU           1000000                   // processor clock frequency&lt;br /&gt;
#warning kein F_CPU definiert&lt;br /&gt;
#endif&lt;br /&gt;
 &lt;br /&gt;
#define KEY_DDR         DDRB&lt;br /&gt;
#define KEY_PORT        PORTB&lt;br /&gt;
#define KEY_PIN         PINB&lt;br /&gt;
#define KEY0            0&lt;br /&gt;
#define KEY1            1&lt;br /&gt;
#define KEY2            2&lt;br /&gt;
#define ALL_KEYS        (1&amp;lt;&amp;lt;KEY0 | 1&amp;lt;&amp;lt;KEY1 | 1&amp;lt;&amp;lt;KEY2)&lt;br /&gt;
 &lt;br /&gt;
#define REPEAT_MASK     (1&amp;lt;&amp;lt;KEY1 | 1&amp;lt;&amp;lt;KEY2)       // repeat: key1, key2&lt;br /&gt;
#define REPEAT_START    50                        // after 500ms&lt;br /&gt;
#define REPEAT_NEXT     20                        // every 200ms&lt;br /&gt;
&lt;br /&gt;
#define LED_DDR         DDRA&lt;br /&gt;
#define LED_PORT        PORTA&lt;br /&gt;
#define LED0            0&lt;br /&gt;
#define LED1            1&lt;br /&gt;
#define LED2            2&lt;br /&gt;
 &lt;br /&gt;
volatile uint8_t key_state;                                // debounced and inverted key state:&lt;br /&gt;
                                                  // bit = 1: key pressed&lt;br /&gt;
volatile uint8_t key_press;                                // key press detect&lt;br /&gt;
 &lt;br /&gt;
volatile uint8_t key_rpt;                                  // key long press and repeat&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
ISR( TIMER0_OVF_vect )                            // every 10ms&lt;br /&gt;
{&lt;br /&gt;
  static uint8_t ct0, ct1, rpt;&lt;br /&gt;
  uint8_t i;&lt;br /&gt;
 &lt;br /&gt;
  TCNT0 = (uint8_t)(int16_t)-(F_CPU / 1024 * 10e-3 + 0.5);  // preload for 10ms&lt;br /&gt;
 &lt;br /&gt;
  i = key_state ^ ~KEY_PIN;                       // key changed ?&lt;br /&gt;
  ct0 = ~( ct0 &amp;amp; i );                             // reset or count ct0&lt;br /&gt;
  ct1 = ct0 ^ (ct1 &amp;amp; i);                          // reset or count ct1&lt;br /&gt;
  i &amp;amp;= ct0 &amp;amp; ct1;                                 // count until roll over ?&lt;br /&gt;
  key_state ^= i;                                 // then toggle debounced state&lt;br /&gt;
  key_press |= key_state &amp;amp; i;                     // 0-&amp;gt;1: key press detect&lt;br /&gt;
 &lt;br /&gt;
  if( (key_state &amp;amp; REPEAT_MASK) == 0 )            // check repeat function&lt;br /&gt;
     rpt = REPEAT_START;                          // start delay&lt;br /&gt;
  if( --rpt == 0 ){&lt;br /&gt;
    rpt = REPEAT_NEXT;                            // repeat delay&lt;br /&gt;
    key_rpt |= key_state &amp;amp; REPEAT_MASK;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
 &lt;br /&gt;
///////////////////////////////////////////////////////////////////&lt;br /&gt;
//&lt;br /&gt;
// check if a key has been pressed. Each pressed key is reported&lt;br /&gt;
// only once&lt;br /&gt;
//&lt;br /&gt;
uint8_t get_key_press( uint8_t key_mask )&lt;br /&gt;
{&lt;br /&gt;
  cli();                                          // read and clear atomic !&lt;br /&gt;
  key_mask &amp;amp;= key_press;                          // read key(s)&lt;br /&gt;
  key_press ^= key_mask;                          // clear key(s)&lt;br /&gt;
  sei();&lt;br /&gt;
  return key_mask;&lt;br /&gt;
}&lt;br /&gt;
 &lt;br /&gt;
///////////////////////////////////////////////////////////////////&lt;br /&gt;
//&lt;br /&gt;
// check if a key has been pressed long enough such that the&lt;br /&gt;
// key repeat functionality kicks in. After a small setup delay&lt;br /&gt;
// the key is reported being pressed in subsequent calls&lt;br /&gt;
// to this function. This simulates the user repeatedly&lt;br /&gt;
// pressing and releasing the key.&lt;br /&gt;
//&lt;br /&gt;
uint8_t get_key_rpt( uint8_t key_mask )&lt;br /&gt;
{&lt;br /&gt;
  cli();                                          // read and clear atomic !&lt;br /&gt;
  key_mask &amp;amp;= key_rpt;                            // read key(s)&lt;br /&gt;
  key_rpt ^= key_mask;                            // clear key(s)&lt;br /&gt;
  sei();&lt;br /&gt;
  return key_mask;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
///////////////////////////////////////////////////////////////////&lt;br /&gt;
//&lt;br /&gt;
// check if a key is pressed right now&lt;br /&gt;
//&lt;br /&gt;
uint8_t get_key_state( uint8_t key_mask )&lt;br /&gt;
&lt;br /&gt;
{&lt;br /&gt;
  key_mask &amp;amp;= key_state;&lt;br /&gt;
  return key_mask;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
///////////////////////////////////////////////////////////////////&lt;br /&gt;
//&lt;br /&gt;
uint8_t get_key_short( uint8_t key_mask )&lt;br /&gt;
{&lt;br /&gt;
  cli();                                          // read key state and key press atomic !&lt;br /&gt;
  return get_key_press( ~key_state &amp;amp; key_mask );&lt;br /&gt;
}&lt;br /&gt;
 &lt;br /&gt;
///////////////////////////////////////////////////////////////////&lt;br /&gt;
//&lt;br /&gt;
uint8_t get_key_long( uint8_t key_mask )&lt;br /&gt;
{&lt;br /&gt;
  return get_key_press( get_key_rpt( key_mask ));&lt;br /&gt;
}&lt;br /&gt;
 &lt;br /&gt;
int main( void )&lt;br /&gt;
{&lt;br /&gt;
  LED_PORT = 0xFF;&lt;br /&gt;
  LED_DDR = 0xFF;                     &lt;br /&gt;
&lt;br /&gt;
  // Configure debouncing routines&lt;br /&gt;
  KEY_DDR &amp;amp;= ~ALL_KEYS;                // configure key port for input&lt;br /&gt;
  KEY_PORT |= ALL_KEYS;                // and turn on pull up resistors&lt;br /&gt;
&lt;br /&gt;
  TCCR0 = (1&amp;lt;&amp;lt;CS02)|(1&amp;lt;&amp;lt;CS00);         // divide by 1024&lt;br /&gt;
  TCNT0 = (uint8_t)(int16_t)-(F_CPU / 1024 * 10e-3 + 0.5);  // preload for 10ms&lt;br /&gt;
  TIMSK |= 1&amp;lt;&amp;lt;TOIE0;                   // enable timer interrupt&lt;br /&gt;
&lt;br /&gt;
  sei();&lt;br /&gt;
&lt;br /&gt;
  while(1){&lt;br /&gt;
    if( get_key_short( 1&amp;lt;&amp;lt;KEY1 ))&lt;br /&gt;
      LED_PORT ^= 1&amp;lt;&amp;lt;LED1;&lt;br /&gt;
 &lt;br /&gt;
    if( get_key_long( 1&amp;lt;&amp;lt;KEY1 ))&lt;br /&gt;
      LED_PORT ^= 1&amp;lt;&amp;lt;LED2;&lt;br /&gt;
 &lt;br /&gt;
    // single press and repeat&lt;br /&gt;
 &lt;br /&gt;
    if( get_key_press( 1&amp;lt;&amp;lt;KEY2 ) || get_key_rpt( 1&amp;lt;&amp;lt;KEY2 )){&lt;br /&gt;
      uint8_t i = LED_PORT;&lt;br /&gt;
 &lt;br /&gt;
      i = (i &amp;amp; 0x07) | ((i &amp;lt;&amp;lt; 1) &amp;amp; 0xF0);&lt;br /&gt;
      if( i &amp;lt; 0xF0 )&lt;br /&gt;
        i |= 0x08;&lt;br /&gt;
      LED_PORT = i;      &lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Das single-press-und-repeat-Beispiel geht nicht in jeder Beschaltung; folgendes Beispiel sollte universeller sein (einzelne LED an/aus):&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
// single press and repeat&lt;br /&gt;
if( get_key_press( 1&amp;lt;&amp;lt;KEY2 ) || get_key_rpt( 1&amp;lt;&amp;lt;KEY2 ))&lt;br /&gt;
    LED_PORT ^=0x08;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== Funktionsweise =====&lt;br /&gt;
Der Code basiert auf 8 parallelen vertikalen Zählern, die über die Variablen ct0 und ct1 aufgebaut werden&lt;br /&gt;
&lt;br /&gt;
[[Bild:VertCount.png|framed|center|&#039;&#039;&#039;8 vertikale Zähler in 2 8-Bit Variablen&#039;&#039;&#039;]]&lt;br /&gt;
&lt;br /&gt;
wobei jeweils ein Bit in ct0 mit dem gleichwertigen Bit in ct1 zusammengenommen einen 2-Bit-Zähler bildet.&lt;br /&gt;
Der Code der sich um die 8 Zähler kümmert, ist so geschrieben, daß er alle 8 Zähler gemeinsam parallel behandelt.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
  i = key_state ^ ~KEY_PIN;                       // key changed ?&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
i enthält an dieser Stelle für jede Taste, die sich im Vergleich mit dem vorhergehenden entprellten Zustand (keystate) verändert hat, ein 1 Bit.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
  ct0 = ~( ct0 &amp;amp; i );                             // reset or count ct0&lt;br /&gt;
  ct1 = ct0 ^ (ct1 &amp;amp; i);                          // reset or count ct1&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Diese beiden Anweisungen erniedrigen den 2-Bit Zähler ct0/ct1 für jedes Bit um 1, welches in i gesetzt ist. Liegt an der entsprechenden Stelle in i ein 0 Bit vor (keine Änderung des Zustands), so wird der Zähler ct0/ct1 für dieses Bit auf 1 gesetzt.&lt;br /&gt;
Der Grundzustand des Zählers ist als ct0 == 1 und ct1 == 1 (Wert 3). Der Zähler zählt daher mit jedem ISR Aufruf, bei dem die Taste im Vergleich zu keystate als verändert erkannt wurde&lt;br /&gt;
&lt;br /&gt;
   ct1   ct0&lt;br /&gt;
     1    1   // 3&lt;br /&gt;
     1    0   // 2&lt;br /&gt;
     0    1   // 1&lt;br /&gt;
     0    0   // 0&lt;br /&gt;
     1    1   // 3&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
  i &amp;amp;= ct0 &amp;amp; ct1;                                 // count until roll over ?&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
in i bleibt nur dort ein 1-Bit erhalten, wo sowohl in ct1 als auch in ct0 ein 1 Bit vorgefunden wird, der betreffenede Zähler also bis 3 zählen konnte. Durch die zusätzliche Verundung mit i wird der Fall abgefangen, dass ein konstanter Zählerwert von 3 in i ein 1 Bit hinterlässt. Im Endergebnis bedeutet dass, dass nur ein Zählerwechsel von 0 auf 3 zu einem 1 Bit an der betreffenden Stelle in i führt, aber auch nur dann, wenn in i an dieser Bitposition ebenfalls ein 1 Bit war (welches wiederrum deswegen auf 1 war, weil an diesem Eingabeport eine Veränderung zum letzten bekannten entprellten Zustand festgestellt wurde). alles zusammengenommen heißt das, dass ein Tastendruck dann erkannt wird, wenn die Taste 4 mal hintereinander in einem anderen Zustand vorgefunden wurde als dem zuletzt bekannten entprellten Tastenzustand.&lt;br /&gt;
&lt;br /&gt;
An dieser Stelle ist i daher ein Vektor von 8 Bits, von denen jedes einzelne der Bits darüber Auskunft gibt, ob die entsprechende Taste mehrmals hintereinander im selben Zustand angetroffen wurde, der nicht mit dem zuletzt bekannten Tastenzustand übereinstimmt. Ist das der Fall, dann wird eine entsprechende Veränderung des Tastenzustands in key_state registriert&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
  key_state ^= i;                                 // then toggle debounced state&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
und wenn sich in key_state das entsprechende Bit von 0 auf 1 verändert hat, wird dieses Ereignis als &#039;Taste wurde niedergedrückt&#039; gewertet.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
  key_press |= key_state &amp;amp; i;                     // 0-&amp;gt;1: key press detect&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Damit ist der Tasteneingang entprellt. Und zwar sowohl beim Drücken einer Taste als auch beim Loslassen (damit Tastenpreller beim Loslassen nicht mit dem Niederdrücken einer Taste verwechselt werden). Der weitere Code beschäftigt sich dann nur noch damit, diesen entprellten Tastenzustand weiter zu verarbeiten.&lt;br /&gt;
&lt;br /&gt;
Der Codeteil sieht durch die Verwendung der vielen bitweisen Operationen relativ komplex aus. Behält man aber im Hinterkopf, dass einige der bitweisen wie ein &#039;paralles If&#039; gleichzeitig auf allen 8 Bits eingesetzt werden, dann vereinfacht sich vieles. Ein&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
    key_press |= key_state &amp;amp; i;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
ist nichts anderes als ein&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
    // teste ob Bit 0 sowohl in key_state als auch in i gesetzt ist&lt;br /&gt;
    // und setze Bit 0 in key_press, wenn das der Fall ist&lt;br /&gt;
    if( ( key_state &amp;amp; ( 1 &amp;lt;&amp;lt; 0 ) ) &amp;amp;&amp;amp;&lt;br /&gt;
        ( i &amp;amp; ( 1 &amp;lt;&amp;lt; 0 ) )&lt;br /&gt;
       key_press |= ( 1 &amp;lt;&amp;lt; 0 );&lt;br /&gt;
&lt;br /&gt;
    // Bit 1&lt;br /&gt;
    if( ( key_state &amp;amp; ( 1 &amp;lt;&amp;lt; 1 ) ) &amp;amp;&amp;amp;&lt;br /&gt;
        ( i &amp;amp; ( 1 &amp;lt;&amp;lt; 1 ) )&lt;br /&gt;
       key_press |= ( 1 &amp;lt;&amp;lt; 1 );&lt;br /&gt;
&lt;br /&gt;
    // Bit 2&lt;br /&gt;
    if( ( key_state &amp;amp; ( 1 &amp;lt;&amp;lt; 2 ) ) &amp;amp;&amp;amp;&lt;br /&gt;
        ( i &amp;amp; ( 1 &amp;lt;&amp;lt; 2 ) )&lt;br /&gt;
       key_press |= ( 1 &amp;lt;&amp;lt; 2 );&lt;br /&gt;
&lt;br /&gt;
    ...&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
nur als wesentlich kompaktere Operation ausgeführt und für alle 8 Bits gleichzeitig.&lt;br /&gt;
Die Kürze und Effizienz dieser paar Codezeilen ergibt sich aus dem Umstand, dass jedes Bit in den Variablen für eine Taste steht und alle 8 (maximal möglichen) Tasten gleichzeitig die Operationen durchlaufen.&lt;br /&gt;
&lt;br /&gt;
===== Reduziert auf lediglich 1 Taste =====&lt;br /&gt;
Diskussionen im Forum zeigen immer wieder, dass viele eine Abneigung gegen diesen Code haben, weil er ihnen sehr kompliziert vorkommt.&lt;br /&gt;
&lt;br /&gt;
Der Code ist nicht leicht zu analysieren und er zieht alle Register dessen, was möglich ist, um sowohl Laufzeit als auch Speicherverbrauch einzusparen. Oft hört man auch das Argument: Ich benötige ja nur eine Entprellung für 1 Taste, gibt es da nichts Einfacheres?&lt;br /&gt;
&lt;br /&gt;
Hier ist die &#039;Langform&#039; des Codes, so wie man das für lediglich 1 Taste schreiben würde, wenn man exakt dasselbe Entprellverfahren einsetzen würde. Man sieht: Da ist keine Hexerei dabei: In key_state wird der letzte bekannte entprellte Zustand der Taste gehalten. Der Pin-Eingang wird mit diesem Zustand verglichen und wenn sich die beiden unterscheiden, dann wird ein Zähler heruntergezählt. Produziert dieses herunterzählen einen Unterlauf des Zählers, dann gilt die Taste als entprellt und wenn dann auch noch die Taste gerade gedrückt ist, dann wird dieses in key_press entsprechend vermerkt.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
uint8_t key_state;&lt;br /&gt;
uint8_t key_counter;&lt;br /&gt;
volatile uint8_t key_press;&lt;br /&gt;
&lt;br /&gt;
ISR( ... Overflow ... )&lt;br /&gt;
{&lt;br /&gt;
  uint8_t input = KEY_PIN &amp;amp; ( 1 &amp;lt;&amp;lt; KEY0 );&lt;br /&gt;
&lt;br /&gt;
  if( input != key_state ) {&lt;br /&gt;
    key_counter--;&lt;br /&gt;
    if( key_counter == 0xFF ) {&lt;br /&gt;
      key_counter = 3;&lt;br /&gt;
      key_state = input;&lt;br /&gt;
      if( input )&lt;br /&gt;
        key_press = TRUE;&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
  else&lt;br /&gt;
    key_counter = 3;&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
uint8_t get_key_press()&lt;br /&gt;
{&lt;br /&gt;
  uint8_t result;&lt;br /&gt;
&lt;br /&gt;
  cli();&lt;br /&gt;
  result = key_press;&lt;br /&gt;
  key_press = FALSE;&lt;br /&gt;
  sei();&lt;br /&gt;
&lt;br /&gt;
  return result;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Der vollständige Entprellcode, wie weiter oben gelistet, besticht jetzt aber darin, dass er compiliert kleiner ist als diese anschaulichere Variante für lediglich 1 Taste. Und das bei gleichzeitig erhöhter Funktionalität. Denn zb. ein Autorepeat ist in diesem Code noch gar nicht eingebaut. Und spätestens wenn man dann eine 2.te Taste entprellen möchte, dann ist auch der SRAM-Speicherverbrauch dieser Langform höher als der des Originals für 8 Tasten. Daraus folgt: Selbst für lediglich 1 Taste ist die Originalroutine die bessere Wahl.&lt;br /&gt;
&lt;br /&gt;
Und wegen der Komplexität mal eine Frage: Sind Sie selbst in der Lage eine entsprechend effiziente sqrt() Funktion zu schreiben, wie die, die sie in der Standard-C-Bibliothek vorfinden? Nein? Dann dürften Sie eigentlich Ihrer Argumentation nach die Bibliotheksfunktion sqrt() nicht verwenden, sondern müssten sich statt dessen selbst eine Wurzel-Funktion schreiben.&lt;br /&gt;
&lt;br /&gt;
=== Selbstsättigender Filter (nach Jürgen Schuhmacher) ===&lt;br /&gt;
Durch die Nutzung der diskreten Signalanalyse in Software kann die Funktionalität einer einfachen Entprellung mit einem Widerstand, einem Kondensator und einem Schmitttrigger wie in Hardware nachgebildet werden, indem ein abstrakter IIR-Filter benutzt wird, der eine Kondensatorladekurve emuliert. Mit der Vorschrift Y(t) = k Y(t-1) + Input wird ein einfaches Filter erzeugt, dass dem Eingangswert träge folgt. Bei Überschreiten eines bestimmten Wertes erfolgt mit einer einfachen Abfrage das Schalten des Ausgangssignals.&lt;br /&gt;
&lt;br /&gt;
Für Assembler und VHDL bei FPGAs eignet sich aufgrund der leicht zu implementierenden binären Operationen folgende Darstellung mit einer Auflösung des Filterwertspeichers von nur 8 bit: Wert_Neu = Wert_Alt - Wert_Alt/16 + 16*(Taste = True). Der Filterwert bildet dann den gedämpften Verlauf des Eingangs (flankenverschliffen) ab und kann Prellen bis nahe an den Grenzbereich zum schnellen Tasten unterdrücken. Der Ausgangswert ist dann einfach das höchstwertige Bit des Filterwertes.&lt;br /&gt;
&lt;br /&gt;
[[Datei:Entprellung mit IIR-Filter.gif]]&lt;br /&gt;
&lt;br /&gt;
Dazu muss das Signal des Tasters idealerweise um den Faktor 10-20 schneller abgetastet werden, als die höchste gewünschte Tippgeschwindigkeit vorgibt. Noch schneller abzutasten ist möglich, führt aber zu mehr Bedarf an Bits beim Filter. Die Schmittriggerfunktion kann dadurch gebildet werden, dass eine 1 am Ausgang bei z.B. Überschreiten einer 55% Grenze und eine 0 bei Unterschreitung der 45%-Grenze ausgeben wird. Im Zwischenbereich wird der alte Wert gehalten.&lt;br /&gt;
&lt;br /&gt;
=== Einfacher Mittelwertfilter (nach Lothar Miller) ===&lt;br /&gt;
Für digitale Schaltungen oder PLDs empfiehlt sich ein FIR-Filter mit aneinandergereihten FlipFlops. Man schiebt das Eingangssignal in eine FlipFlop-Kette und schaltet oberhalb der Mitte um:&lt;br /&gt;
&lt;br /&gt;
SignalInput -&amp;gt; FF1 -&amp;gt; FF2 -&amp;gt; FF3 -&amp;gt; FF4 -&amp;gt; FF5 -&amp;gt; FF6 -&amp;gt; FF7 -&amp;gt; FF8&lt;br /&gt;
&lt;br /&gt;
Wenn alle FFs = 1 (Summe der FFs=8) dann SignalOutput = 1&amp;lt;br /&amp;gt;&lt;br /&gt;
Wenn alle FFs = 0 (Summe der FFs=0) dann SignalOutput = 0&lt;br /&gt;
&lt;br /&gt;
Dieses Verfahren kann sehr einfach in Logik abgebildet werden, weil für die Berechnung des Ausgangs nur ein NOR bz. ein AND Gatter nötig ist.&lt;br /&gt;
&lt;br /&gt;
== Gegenüberstellung der Verfahren ==&lt;br /&gt;
* HW - &amp;quot;entprellte Schalter&amp;quot;: Sehr teuer, grosse Bauform, verschleissbelastet, geringe Haltbarkeit&lt;br /&gt;
* HW - &amp;quot;Umschalter&amp;quot; : benötigt aufwändigeren Schalter, benötigt Elektronik&lt;br /&gt;
* HW - &amp;quot;Umschalter ohne FF&amp;quot; : benötigt aufwändigeren Schalter und kleiner Kondensator&lt;br /&gt;
* HW - &amp;quot;Kondensatorentprellung&amp;quot; : benötigt etwas mehr Platz, kommt mit schlechten Schaltern zurecht&lt;br /&gt;
&lt;br /&gt;
* SW - Flankenverfahren:&lt;br /&gt;
* SW - Warteschleife: Durch die Warteschleifen eine nicht zu vernachlässigende Verzögerung im Code. Speziell wenn mehrere Tasten zu überwachen sind, nicht unproblematisch&lt;br /&gt;
* SW - Timer: Universalfunktionalität, die durch geringen Speicherverbrauch, geringen Rechenzeitverbrauch und gute Funktion besticht. Der &#039;Verbrauch&#039; eines Timers sieht auf den ersten Blick schlimmer aus, als er ist, denn in den meisten Programmen hat man sowieso einen Basistimer für die Zeitsteuerung des Programms im Einsatz, der für die Tastenentprellung mitbenutzt werden kann.&lt;br /&gt;
* SW - Filter: sehr geringer Platzbedarf in FPGAs, relativ gute Wirkung&lt;br /&gt;
* SW - Filter 2: sehr geringer Platzbedarf, gute Wirkung&lt;br /&gt;
&lt;br /&gt;
== Links zum Thema ==&lt;br /&gt;
&lt;br /&gt;
* [http://www.edn.com/design/analog/4324067/Contact-debouncing-algorithm-emulates-Schmitt-trigger Contact-debouncing algorithm (Artikel)],  [http://www.edn.com/file/13370-70705di.pdf als PDF]&lt;br /&gt;
* [[AVR-Tutorial: Tasten]]&lt;br /&gt;
* [[AVR-GCC-Tutorial#.28Tasten-.29Entprellung|AVR-GCC-Tutorial Tastenentprellung]]&lt;br /&gt;
* [http://www.mikrocontroller.net/forum/read-4-20435.html Beitrag im Forum, AVR Assembler]&lt;br /&gt;
* [http://www.ganssle.com/debouncing.pdf A guide to debouncing (engl.), praktische Erläuterungen zum Entprellen in Soft- und Hardware]&lt;br /&gt;
* [http://www.pololu.com/docs/0J16/all Understanding Destructive LC Voltage Spikes]&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:AVR]]&lt;br /&gt;
[[Kategorie:Signalverarbeitung]]&lt;/div&gt;</summary>
		<author><name>Debegr92</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=Mcruler&amp;diff=79416</id>
		<title>Mcruler</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=Mcruler&amp;diff=79416"/>
		<updated>2013-11-07T13:35:17Z</updated>

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

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

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