<?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=Wuschelkuchen</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=Wuschelkuchen"/>
	<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/articles/Spezial:Beitr%C3%A4ge/Wuschelkuchen"/>
	<updated>2026-04-10T23:39:44Z</updated>
	<subtitle>Benutzerbeiträge</subtitle>
	<generator>MediaWiki 1.39.7</generator>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=STM32_f%C3%BCr_Einsteiger&amp;diff=80353</id>
		<title>STM32 für Einsteiger</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=STM32_f%C3%BCr_Einsteiger&amp;diff=80353"/>
		<updated>2013-12-31T14:22:29Z</updated>

		<summary type="html">&lt;p&gt;Wuschelkuchen: /* Programmierumgebungen */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Immer wiederkehrend hier im Forum &amp;quot;Mit welchem Mikrocontroller anfangen?&amp;quot;. Es gibt eine große Auswahl und eben so viele Empfehlungen. In diesem Artikel soll zu erst geholfen werden ob ein STM32-Prozessor mit Cortex-M3/M4 Kern überhaupt der Richtige für den Start ist.&lt;br /&gt;
Nicht für jeden ist der STM32 zu empfehlen, denn die Anforderungen und Wünsche die man realisieren möchte, sowie die eigenen Fähigkeiten sind verschieden.&lt;br /&gt;
&lt;br /&gt;
Es werden meist die Prozessoren AVR, PIC, Arduino, MSP430 und STM32 empfohlen. Seltener auch 8051, LPC und M16C. Alle haben Vorzüge und ebenso auch Nachteile.&lt;br /&gt;
&lt;br /&gt;
= Eigene Fähigkeiten und Wünsche =&lt;br /&gt;
&lt;br /&gt;
Dieser Artikel geht davon aus, dass bereits Elektronik Kenntnisse vorhanden sind. Wenn nicht dann sollte man erst einmal den Artikel &amp;quot;[[Absolute Beginner]]&amp;quot; durcharbeiten, sowie die anderen Artikel aus der Kategorie &amp;quot;[http://www.mikrocontroller.net/articles/Kategorie:Grundlagen Grundlagen]&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Zu erst einmal die Randbedingungen, mit der man sich selbst zu erst einmal einschätzen sollte:&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|- bgcolor=&amp;quot;#d0d0ff&amp;quot;&lt;br /&gt;
! Fähigkeit || Empfehlung [[STM32]] || Empfehlung [[AVR]] || Empfehlung PIC || Empfehlung [[MSP430]] || Empfehlung Arduino&lt;br /&gt;
|-&lt;br /&gt;
| Neueinsteiger, kaum Elektronikkenntnisse, noch nie programmiert || align=&amp;quot;center&amp;quot;|O || align=&amp;quot;center&amp;quot;|O [http://www.rn-wissen.de/index.php/AVR-Einstieg_leicht_gemacht] [http://www.avr-asm-tutorial.net/avr_de/] || align=&amp;quot;center&amp;quot;|O [http://www.sprut.de/] || align=&amp;quot;center&amp;quot;|O || align=&amp;quot;center&amp;quot;|x&lt;br /&gt;
|-&lt;br /&gt;
| Wunsch ist SD-Card oder Grafik-Display || align=&amp;quot;center&amp;quot;|x || align=&amp;quot;center&amp;quot;|O || align=&amp;quot;center&amp;quot;|x [http://www.microchip.com/stellent/idcplg?IdcService=SS_GET_PAGE&amp;amp;nodeId=2680&amp;amp;dDocName=en537999] [http://www.microchip.com/pagehandler/en-us/technology/graphics/] || align=&amp;quot;center&amp;quot;|x || align=&amp;quot;center&amp;quot;|x&lt;br /&gt;
|-&lt;br /&gt;
| Wunsch ist TCP/IP Netzwerk oder Kamera|| align=&amp;quot;center&amp;quot;|x || align=&amp;quot;center&amp;quot;|O || align=&amp;quot;center&amp;quot;|x [http://www.microchip.com/stellent/idcplg?IdcService=SS_GET_PAGE&amp;amp;nodeId=2505&amp;amp;param=en535724] || align=&amp;quot;center&amp;quot;|O || align=&amp;quot;center&amp;quot;|O&lt;br /&gt;
|-&lt;br /&gt;
| Möchte die Erkenntnisse beruflich nutzen|| align=&amp;quot;center&amp;quot;|x || align=&amp;quot;center&amp;quot;|x || align=&amp;quot;center&amp;quot;|x || align=&amp;quot;center&amp;quot;|x || align=&amp;quot;center&amp;quot;|-&lt;br /&gt;
|-&lt;br /&gt;
| Strom sparende Anwendungen|| align=&amp;quot;center&amp;quot;|- [http://www.st.com/web/en/catalog/mmc/FM141/SC1169/SS1295]&amp;lt;br&amp;gt; 300 nA Sleep&amp;lt;br&amp;gt;230 μA/MHz]|| align=&amp;quot;center&amp;quot;|- [http://www.atmel.com/technologies/lowpower/default.aspx] [http://www.futurlec.com/News/Atmel/PicoPower.shtml]&amp;lt;br&amp;gt;100 nA Sleep&amp;lt;br&amp;gt;340 μA/MHz|| align=&amp;quot;center&amp;quot;|x [http://ww1.microchip.com/downloads/en/DeviceDoc/39989A.pdf] [http://ww1.microchip.com/downloads/en/DeviceDoc/30009941F.pdf] &amp;lt;br&amp;gt; 9 nA Sleep&amp;lt;br&amp;gt;35 μA/MHz || align=&amp;quot;center&amp;quot;|x [http://www.ti.com/lit/wp/slay015/slay015.pdf] [http://www.ti.com/ww/mx/multimedia/webcasts/Aspectos_Generales_MSP430.pdf] &amp;lt;br&amp;gt; 100 nA Sleep&amp;lt;br&amp;gt;100 μA/MHz || align=&amp;quot;center&amp;quot;|-&lt;br /&gt;
|-&lt;br /&gt;
| Experimentieren mit Multithreading, RTOS, Schedulern || align=&amp;quot;center&amp;quot;|x || align=&amp;quot;center&amp;quot;|O [http://www.freertos.org/a00098.html] [http://www.femtoos.org/] || align=&amp;quot;center&amp;quot;|PIC32 [http://www.microchip.com/stellent/idcplg?IdcService=SS_GET_PAGE&amp;amp;nodeId=1406&amp;amp;dDocName=en531543&amp;amp;redirects=rtos] || align=&amp;quot;center&amp;quot;|- || align=&amp;quot;center&amp;quot;|-&lt;br /&gt;
|-&lt;br /&gt;
| Besonders große, speicherintensive Programme&amp;lt;br&amp;gt;z.B. Grafiken, Fonts || align=&amp;quot;center&amp;quot;|bis 2MB Flash&amp;lt;br&amp;gt;bis 256kB SRAM || align=&amp;quot;center&amp;quot;|bis 256kB Flash&amp;lt;br&amp;gt;bis 16kB SRAM || align=&amp;quot;center&amp;quot;|bis 2MB Flash&amp;lt;br&amp;gt;bis 512kB SRAM || align=&amp;quot;center&amp;quot;|bis 512KB Flash&amp;lt;br&amp;gt;bis 66kB SRAM || align=&amp;quot;center&amp;quot;|bis 256kB Flash&amp;lt;br&amp;gt;bis 16kB SRAM&lt;br /&gt;
|-&lt;br /&gt;
| Sehr viel PWM mit komplexem Timing || align=&amp;quot;center&amp;quot;|x || align=&amp;quot;center&amp;quot;| AT90Spwm || align=&amp;quot;center&amp;quot;|dsPIC/PIC32 || align=&amp;quot;center&amp;quot;|O || align=&amp;quot;center&amp;quot;|-&lt;br /&gt;
|-&lt;br /&gt;
| Deutschsprachige Community || align=&amp;quot;center&amp;quot;|O || align=&amp;quot;center&amp;quot;|x || align=&amp;quot;center&amp;quot;|O || align=&amp;quot;center&amp;quot;|- || align=&amp;quot;center&amp;quot;|x&lt;br /&gt;
|-&lt;br /&gt;
| Anzahl möglicher HW-Breakpoints || align=&amp;quot;center&amp;quot;|4 bis 6 || align=&amp;quot;center&amp;quot;|2 || align=&amp;quot;center&amp;quot;| 1 bis 10 [http://www.microchip.com/stellent/groups/SiteComm_sg/documents/DeviceDoc/en556761.pdf] || align=&amp;quot;center&amp;quot;|2 || align=&amp;quot;center&amp;quot;|2&lt;br /&gt;
|}&lt;br /&gt;
* x = ja&lt;br /&gt;
* O = Teilweise, Einschränkungen&lt;br /&gt;
* - = nicht empfohlen&lt;br /&gt;
* ? = Bitte ergänzen&lt;br /&gt;
&lt;br /&gt;
Nur um nicht zu verwirren, auch wenn Teile &amp;quot;nicht empfohlen&amp;quot; sind, heißt dass nicht dass es mit dem Prozessor nicht geht, vielmehr dass es mehr Aufwand ist das zu realisieren oder mehr Einschränkungen hat.&lt;br /&gt;
&lt;br /&gt;
Die Spalte PIC zeigt die Eigenschaften der 8-Bit PIC18 (vergleichbar mit [[AVR]]), 16-Bit [[PIC24]]/[[dsPIC]] (vergleichbar mit [[MSP430]]) und 32-Bit [[PIC32]] (vergleichbar mit [[STM32]]). Ein Wechsel des Mikrocontrollers innerhalb der Familien ist Codetechnisch problemlos möglich. [http://www.elektor.nl/Uploads/Files/PIC24FIntro_5f082806.pdf] Hardwaretechnisch sind verschiedene Modelle gleicher Familie zudem auch meist Pin-Kompatibel [http://ww1.microchip.com/downloads/en/DeviceDoc/00148m.pdf] sodass ohne Design-Änderung zwischen verschiedenen Modellen gewechselt werden kann.&lt;br /&gt;
Ein Wechsel zwischen den Familien ist Architekturbedingt aufwendiger, vor allem von 8-Bit auf 16/32-Bit. [http://ww1.microchip.com/downloads/en/DeviceDoc/39764a.pdf] Aufgrund gleichbleibender IDE (Mplab) sowie gleichbleibenden Libraries bei Verwendung einer Hochsprache (C) jedoch vor allem zwischen 16-Bit und 32-Bit ohne weitere Probleme möglich [http://www.embedded.com/design/mcus-processors-and-socs/4007683/Practical-migration-from-8-16-to-32-bit-PIC].&lt;br /&gt;
&amp;lt;br&amp;gt;Ein PIC10/12/16 ist für den Einstieg nicht empfohlen, da diese Architekturbedingt viele Einschränkungen haben, die eher hinderlich für das Lernen sind.&lt;br /&gt;
&lt;br /&gt;
= Unwichtige Randbedingungen =&lt;br /&gt;
&lt;br /&gt;
Oftmals werden fälschlicherweise Argumente für oder gegen eine µC-Familie ausgesprochen, die in der Praxis &#039;&#039;&#039;zum Einstieg&#039;&#039;&#039; (bei konkreten Anwendungen kann das anders aussehen) eher unwichtig sind.&lt;br /&gt;
&lt;br /&gt;
* Spannungsversorgung 3,3V / 5V&lt;br /&gt;
* 8 (z.B. [[AVR]]), 16 (z.B. [[MSP430]]) oder 32 (z.B. [[STM32]]) Bit&lt;br /&gt;
* Interrupt System mit mehr oder weniger Features&lt;br /&gt;
* Programmiersprache (Assembler, Basic, C, C++, Pascal)&lt;br /&gt;
* Assembler verstehen (Sollte nur theoretisch verstanden werden, ein Programm sollte in einer Hochsprache geschrieben sein)&lt;br /&gt;
* DIL Gehäuse - steckbretttauglich (STM32-Prozessoren gibt es auch fertig gelötet auf einem steckbretttauglichen Board zum fünffachen Preis vergleichbarer DIL Mikrocontroller)&lt;br /&gt;
* Programmieradapter&lt;br /&gt;
* zu 90% reicht doch ein kleiner Prozessor ([[AVR]]/PIC) - und für die restlichen kann man immer noch einen großen nehmen. Warum also nicht gleich einen großen nehmen?&lt;br /&gt;
&lt;br /&gt;
= Kosten =&lt;br /&gt;
&lt;br /&gt;
Grobe Abschätzung was das alles denn kosten wird. Hier sind nur einige Beispiele gezeigt (Einzelpreise bei Bezugsquellen in Deutschland).&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|- bgcolor=&amp;quot;#d0d0ff&amp;quot;&lt;br /&gt;
! Board || [[STM32]] || [[AVR]] || PIC18/24/32 || [[MSP430]] || Arduino&lt;br /&gt;
|-&lt;br /&gt;
| Demo-Board || align=&amp;quot;center&amp;quot;|[http://www.st.com/web/en/catalog/tools/FM116/SC959/SS1532/PF252419] 9..20€ (incl. Programmieradapter und Debugger) || align=&amp;quot;center&amp;quot;|5..500€, z.B. Arduino || align=&amp;quot;center&amp;quot;| [http://www.microchipdirect.com/ProductDetails.aspx?Catalog=BuyMicrochip&amp;amp;Category=Starter%20Kits&amp;amp;mid=1&amp;amp;lmid=610 durchschnittlich 18€ .. 50€] || align=&amp;quot;center&amp;quot;|[http://www.ti.com/tool/msp-exp430fr5739] ~35€ || align=&amp;quot;center&amp;quot;|20€&lt;br /&gt;
|-&lt;br /&gt;
| Steckbrettaugliches Board || align=&amp;quot;center&amp;quot;| s.o. oder [http://re.reworld.eu/de/produkte/s64dil-405/index.htm S64DIL-405] 30€ || align=&amp;quot;center&amp;quot;|0,6–5€ als einzelner DIP-IC || align=&amp;quot;center&amp;quot;|2-5€ als einzelner IC || align=&amp;quot;center&amp;quot;|?? || align=&amp;quot;center&amp;quot;|??&lt;br /&gt;
|-&lt;br /&gt;
| Programmieradapter || align=&amp;quot;center&amp;quot;|  || align=&amp;quot;center&amp;quot;| ab 4€ || align=&amp;quot;center&amp;quot;| || align=&amp;quot;center&amp;quot;| || align=&amp;quot;center&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| Programmieradapter mit Debugger || align=&amp;quot;center&amp;quot;| s.o. oder z.B [http://www.segger.com/j-link-edu.html Segger J-LINK EDU] 50€ (sehr schnell und unterstützt viele Prozessoren) || align=&amp;quot;center&amp;quot;|?? || align=&amp;quot;center&amp;quot;|PICkit 3 30€ [http://www.microchipdirect.com/ProductSearch.aspx?keywords=PG164130] || align=&amp;quot;center&amp;quot;|z.B. Dragon 50€ || align=&amp;quot;center&amp;quot;|20€ (Man muss DebugWire aktivieren)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Das Demo-Board sollte ein Board sein, nicht zu teuer, um die ersten Erfahrungen zu sammeln. Wenn einem der Prozessor gefällt, so kann man später immer noch mit einem zweiten Demo-Board, z.B. mit Display aufrüsten.&lt;br /&gt;
&lt;br /&gt;
Wenn man gerne mit einem Steckbrett sich die Schaltung zusammen stecken möchte, so kann man entweder die benötigten Drähte am Demo-Board anlöten oder bei z.B. [[AVR]]/[[PIC]] Prozessoren gibt es Ausführungen im DIL Gehäuse, die direkt steckbar sind.&lt;br /&gt;
&lt;br /&gt;
Ein Programmieradapter sollte unbedingt auch einen Debugger beinhalten. Denn für den Start ist es ungemein hilfreich zu sehen was im Prozessor gerade geschieht. Die JTAG-Adapter für einen [[STM32]] Prozessor sind alle Debugger-Tauglich. Für einen [[AVR]] oder [[PIC]] Prozessor gibt es auch oft reine Programmer (oft Selbstbau-Lösungen über die serielle oder parallele Schnittstelle) welche den Mikrocontroller nur beschreiben können. Sinvoller sind hingegen Debugger (bspw. PIC Kit 3 [http://www.microchipdirect.com/ProductSearch.aspx?keywords=PG164130] kompatibel zu allen PIC Mikrocontrollern), die die Ausführung eines Mikrocontrollers anhalten können um die aktuelle Position im Programmcode, Variableninhalt, Register, ... auszulesen bzw. zur Laufzeit zu ändern.&lt;br /&gt;
&lt;br /&gt;
Der für den [[STM32]] empfohlene Segger J-LINK EDU ist zwar nicht der günstigste (z.B. auf einem STM32F4DISCOVERY Borad ist auch einer drauf den man für andere STM32 nutzen kann) aber eines der besten, mit sehr guten Software-Tools und nutzbar für alle Prozessoren mit ARM-Kern (ARM7/9/11/... Cortex-Mx). Niemals am Werkzeug sparen und man hat viel mehr Freude bei der Arbeit.&lt;br /&gt;
&lt;br /&gt;
Der &amp;quot;Arduino&amp;quot; ist kein eigenständiger Prozessor, sondern ein fertiges Board mit einer &amp;quot;Arduino&amp;quot; Programmierumgebung (und einem AVR Prozessor), extra geschaffen für Einsteiger. Allerdings ist da der Lerneffekt viel geringer da man den Prozessor mit der Arduino-Software programmiert und nicht direkt die Register.&lt;br /&gt;
&lt;br /&gt;
Ein [[PIC16]] ist ein älterer 8-Bit Mikrocontroller, der durch die [[PIC18]] Reihe abgelöst wurde. Werden komplexere Anforderungen in Zukunft an den Mikrocontroller gestellt (Audio, Grafik), so sollte zu den moderneren [[PIC24]] bzw. [[dsPIC]] (16-Bit) oder gar zu [[PIC32]] (32-Bit MIPS Prozessor) gegriffen werden, wobei letzterer von der Performance vergleichbar mit den STM32 ARM-basierten Mikrocontrollern ist.&lt;br /&gt;
&lt;br /&gt;
= Programmierumgebungen=&lt;br /&gt;
&lt;br /&gt;
Bei den Programmierumgebungen gibt es zu allen Prozessorfamilien kostenlose und Leistungsfähige Software&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|- bgcolor=&amp;quot;#d0d0ff&amp;quot;&lt;br /&gt;
! [[STM32]] || [[AVR]] || PIC || [[MSP430]] || Arduino&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot;|[http://www.coocox.org/CooCox_CoIDE.htm CooCox] || align=&amp;quot;center&amp;quot;|Atmel-Studio || align=&amp;quot;center&amp;quot;|[http://www.microchip.com/pagehandler/en-us/family/mplabx/ MPLAB X] (IDE inklusive compiler) || align=&amp;quot;center&amp;quot;|?? || align=&amp;quot;center&amp;quot;|arduino 1.0.5&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
natürlich gibt es noch viele weitere (für STM32 siehe [[STM32#Programmierung]]), es sollte jedoch nur die einfachsten kostenlose (und ohne Codebegrenzung) für den ersten Einstieg gezeigt werden.&lt;br /&gt;
&lt;br /&gt;
* CooCox Anleitung wie man innerhalb einer Stunde die LED eines Nagel neuen STM32F4DISCOVERY Boards zum blinken bekommt, Artikel: [[STM32 CooCox Installation]]. Diese Anleitung ist eine Schritt-Für-Schritt Anleitung um den aller ersten Start zu vereinfachen.&lt;br /&gt;
&lt;br /&gt;
= Dokumentation=&lt;br /&gt;
&lt;br /&gt;
Bevor man sich für einen Prozessor entscheidet sollte man unbedingt deren Dokumentation mal zumindest überfliegen und auch deren Errata&#039;s lesen. Nicht dass man eine Anwendung erstellen möchte und stellt hinterher fest, dass genau dieser Teil so buggy ist das er nicht genutzt werden kann.&lt;br /&gt;
&lt;br /&gt;
Beim [[STM32]] hat die Dokumentation doch recht viele Seiten, viel mehr als bei einem [[AVR]] oder PIC. Dabei ist vieles eher knapp beschrieben, man muss mehr suchen als z.B. bei den AVR-Dokus, um die gewünschten Informationen zu finden. Außerdem gibt es durchaus einige Unklarheiten und Fehler/Widersprüche. Schlussendlich ist es Geschmackssache mit welcher Doku von welchem Hersteller man sich besser zurecht findet.&lt;br /&gt;
&lt;br /&gt;
Bei den PICs gibt es zu jedem Mikrocontroller ein Datenblatt. Bei den Familien 10F, 12F, 16F und 18F wird in diesem Datenblatt jeweils der ganze Controller incl. seiner Peripherie ausführlich beschrieben. Bei den 16 &amp;amp; 32 Bit Familien (PIC24F und aufwärts) gibt es hingegen zu jedem Controller ein Kurzdatenblatt das die genauen Leistungsmerkmale  sowie die wichtigsten Informationen für den alltäglichen Gebrauch enthält. Da bestimmte Peripherie (bspw. I2C, SPI, ... ) aber sehr komplex ist und innerhalb einer Familie (PIC24/dSPic/32) sich identisch verhält, gibt es bei diesen Familien zu jeder Familie die sogenannten Family-Datasheets, welche alle Module im Detail beschreiben.&lt;br /&gt;
&lt;br /&gt;
Parallel zur Dokumentation sollte man sich auch die Demo-Beispiele der Hersteller anschauen, dann wird vieles gleich verständlicher.&lt;br /&gt;
&lt;br /&gt;
Eine Übersicht über die Funktionen gibt es im Artikel: [[STM32]]&lt;br /&gt;
&lt;br /&gt;
= Die Arbeit mit dem STM32=&lt;br /&gt;
&lt;br /&gt;
Zu erst einmal SOOO groß sind die Unterschiede zwischen den einzelnen Prozessoren nicht. Alle haben Ein-/Ausgänge und um mittels einem Port-Pin eine LED ansteuern zu können muss bei jedem Prozessor der Pin erst einmal parametriert werden, egal ob das jetzt ein STM32 oder ein AVR oder ein MSP430 ist. Nur hat man bei einem STM32 doch einige Funktionen mehr, z.B. zuschaltbarer Pull-Up oder Pull-Down Widerstand und spezielle Setz-Rücksetzregister, die andere Prozessoren nicht haben, jedoch das programmieren vereinfachen.&lt;br /&gt;
Der Haupt-Unterschied zu den anderen Prozessoren ist, dass der [[STM32]] so viele Peripherie-Module beherbergt, dass man die einzeln immer mit einem Clock aktivieren muss, denn damit lässt sich viel Strom sparen.&lt;br /&gt;
&lt;br /&gt;
Und mal ganz ehrlich die Diskussion welcher µc einfacher zu konfigurieren ist, ist doch absoluter Unsinn. Der Weg ist immer der Gleiche:&lt;br /&gt;
*1. Blick ins Datenblatt welche Register für diese Funktion benötigt werden.&lt;br /&gt;
*2. Werte ermitteln die in die Register eingetragen werden.&lt;br /&gt;
*3. Werte ins Register schreiben. Da machte es GAR KEINEN UNTERSCHIED ob es ein [[AVR]], 8051/2, ARM,...... ist.&lt;br /&gt;
&lt;br /&gt;
Stimmt schon es gibt Unterschiede. Die Register haben anderen Namen, andere Adressen, andere Bitbedeutungen,...&lt;br /&gt;
Aber es steht doch alles im Datenblatt. Und ob ich jetzt einen [[AVR]] oder einen ARM das erste mal vor mir liegen hab. Ich brauch in allen Fällen die oben beschriebenen Schritte.&lt;br /&gt;
&lt;br /&gt;
Das Interruptsystem ist bei einem STM32 zusätzlich priorisiert, damit kann man festlegen welcher Interrupt vorrangig bearbeitet wird. Die Prioritätenvergabe ist auch kein Hexenwerk.&lt;br /&gt;
&lt;br /&gt;
Zu allen Prozessoren liefern die jeweiligen Hersteller umfangreiche Demo-Codes und Libraries mit. Meist sind alle in C geschrieben, daher sollte auch die Programmiersprache C verwendet werden. Vor allem auch wenn man berufliche Absichten verfolgt.&lt;br /&gt;
&lt;br /&gt;
Und wenn man einen STM32 kann, dann ist ein Umstieg auf einen LPC17xx (NXP) oder andere Hersteller überhaupt kein Problem (*), denn die bieten ebenfalls Prozessoren mit Cortex-M3 Kern und man kann diese mit der gleichen Programmierumgebung programmieren. Somit ist man nicht zwingend Herstellerabhängig. (* jeder Hersteller verbaut seine eigene Peripherie, die andere Funktionalitäten haben.)&lt;br /&gt;
&lt;br /&gt;
Mit einem STM32 kann man als Hobby-Baster und Professionell nahezu alle Anwendungen realisieren. Der hat genügend RAM und FLASH Speicher und auch genügen Geschwindigkeit. Viele Gehäuse-Varianten um kleine bis hin zu größere Geräte zu erstellen. Viele Schnittstellen, sind im Artikel [[STM32]] beschrieben.&lt;br /&gt;
&lt;br /&gt;
Der einzige Nachteil beim STM32: man muss etwas mehr lesen, da eine Peripherie doch viel mehr Funktionalität hat. Ansonsten kenne ich nicht wirklich einen Grund warum man als Neueinsteiger keinen STM32 nehmen sollte.&lt;br /&gt;
&lt;br /&gt;
= Programmiersprachen =&lt;br /&gt;
* Wie bei vielen anderen Controllern wird beim STM32 auch hauptsächlich C und C++ verwendet. Kennen sollte man die Programmiersprache C schon, wenn man davon noch keine Ahnung hat dann sollte man erst mal mittels einem Tutorial auf einem PC ein Konsoleprogramm schreiben, sodass man es einigermaßen kennen lernt. Hier im Forum gibt es ebenfalls Artikel dazu. Zielt man auf die (spätere) Anwendung in der Industrie, sollte aufgrund der Verbreitung auf jeden Fall C (oder C++) gewählt werden; außerdem sind die meisten verfügbaren Libraries in C geschrieben.&lt;br /&gt;
* Assembler sollte man nur grob verstehen, Details wie ein Befehl arbeitet ist unwichtig. Selbst wenn man die Zyklen für einen Funktionsaufruf wissen will, so bietet der STM32 (Cortex-M3) einen Cycle-Counter den man auslesen kann; durch die komplexere Pipeline und Cache-Effekte sind die Laufzeiten allerdings nicht genau vorhersehbar. Wird zyklengenause Timing benötigt, sollten Timer verwendet werden - davon hat der STM32 genug.&lt;br /&gt;
&lt;br /&gt;
Der 32bit-Adressraum, der RAM, Flash, I/O-Register vereinheitlicht ansprechen kann (im Gegensatz zu z.B. AVR) ist ideal für eine Verwendung durch Hochsprachen; bei Pointern muss keine zusätzliche Information verwaltet werden, in welche Art Speicher sie zeigen. Die Adresse gibt dies eindeutig an (es gibt nur &#039;&#039;&#039;eine&#039;&#039;&#039; Adresse 42, und nicht 2 wie bei es für Harvard-Architekturen eigentlich typisch ist (Programmspeicher und Datenspeicher, also z.B. Flash und RAM/IO) und die Hardware spricht automatisch den richtigen Speicher an. Die Möglichkeiten zur Offset-Adressierung, der Barrel-Shifter, Divsions-Einheit, die FPU (bei STM32F4), Interrupt-Modell etc. begünstigen ebenfalls die Erzeugung effizienteren Codes. Außerdem haben die STM32 einfach mehr &amp;quot;rohe Leistung&amp;quot;, d.h. mehr Flash/RAM-Speicher und höhere Taktfrequenzen.&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Folgerung&#039;&#039;&#039;: Die Programmierung in Hochsprachen ist &#039;&#039;&#039;bequemer als bei 8-Bittern&#039;&#039;&#039;, denn man muss sich einfach weniger Gedanken machen, ob der Compiler ein Programm nun effizent umsetzen kann (kann man natürlich trotzdem machen, um noch mehr Leistung &amp;quot;herauszuquetschen&amp;quot;, wenn man will).&lt;br /&gt;
&lt;br /&gt;
= Weitere Randbedingungen für die Entscheidung=&lt;br /&gt;
&lt;br /&gt;
Der wichtige Punkt, der oftmals auch vergessen wird: die Beschaffbarkeit. Wenn jemand einen Renesas M16C oder Fujitsu empfiehlt, dann sucht man erst mal und findet nur wenige vereinzelte die man privat kaufen kann.&lt;br /&gt;
&lt;br /&gt;
Oder auch die Unterstützung im Internet - ist bei einigen Exoten spärlich. Dieses Forum bietet die beste Hilfe für [[AVR]], PIC, [[STM32]] und [[MSP430]].&lt;br /&gt;
&lt;br /&gt;
Andere Prozessoren sind schon sehr alt, bzw. nicht mehr modern da deren Peripherie zum Teil doch recht eingeschränkte Funktionalität bietet. z.B. viele 8051 Typen oder PIC16 (oder auch dsPIC30). Die mögen für Mini-Anwenungen gut sein, aber wer will den schon gerne sich extra für eine Kleinanwendung mit einem kleinen µC auseinandersetzen, wenn er schon einen STM32 kennt, mit dem er alles machen kann (und sich bereits gute Funktionen geschrieben hat)?&lt;br /&gt;
&lt;br /&gt;
Daher mein Resümee: wer nicht gerade auf den Kopf gefallen ist, der kann getrost mit einem STM32 starten. Ein [http://www.st.com/web/en/catalog/tools/FM116/SC959/SS1532/PF252419?s_searchtype=keyword STM32F4DISCOVERY] Board kostet nur ca. 20 EUR - und mehr muss für den ersten Start nicht investiert werden - wenn es doch zu komplex sein sollte gibt es hier im Forum auch Hilfe oder man nimmt erst mal ein &amp;quot;Arduino&amp;quot;. Jedenfalls sind diese 20 EUR wirklich keine große Investition.&lt;br /&gt;
&lt;br /&gt;
= Weblinks, Foren, Communities, Tutorials =&lt;br /&gt;
* [[STM32]] Hauptartikel, [http://www.mikrocontroller.net/articles/STM32#Weblinks.2C_Foren.2C_Communities.2C_Tutorials dortige Linksammlung]&lt;br /&gt;
* [http://www.mikrocontroller.net/topic/319328 Diskussion zum Artikel]&lt;br /&gt;
* [[STM32 CooCox Installation]]&lt;br /&gt;
* [[STM32 Eclipse Installation]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;br /&gt;
[[Kategorie:ARM]]&lt;br /&gt;
[[Kategorie:STM32| ]]&lt;/div&gt;</summary>
		<author><name>Wuschelkuchen</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=Bebilderung&amp;diff=74789</id>
		<title>Bebilderung</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=Bebilderung&amp;diff=74789"/>
		<updated>2013-03-24T21:45:32Z</updated>

		<summary type="html">&lt;p&gt;Wuschelkuchen: /* Layout */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Viele Artikel im Wiki verwenden Graphiken, Fotos oder Skizzen zur Illustration. Beim Einbinden von Bilddateien sollte einiges beachtet werden, um ein gutes Layout des Artikels zu gewährleisten und damit den Leser bestmöglich zu unterstützen.&lt;br /&gt;
&lt;br /&gt;
== Layout ==&lt;br /&gt;
&lt;br /&gt;
[[Datei:C-flow.svg|thumb|right|200px|SVG-Datei, die auch bei kleiner Skalierung gut zu erkennen ist. Die Beschrei&amp;amp;shy;bungs&amp;amp;shy;seite enthält die Quelle, so daß jeder die Graphik generieren, korrigieren oder erweitern kann.]]&lt;br /&gt;
Graphiken sollten einen Artikel illustrieren anstatt ihn zu erschlagen. Für dich als Autor stehen die Graphiken an erster Stelle, sozusagen das Tüpfelchen auf dem&amp;amp;nbsp;i; der Inhalt des Textes ist dir wohlvertraut. Ein Leser muss sich jedoch erst einlesen und durch den Text und die Fülle der neuen Informationen kämpfen. Illustrationen sind dann für das Verständis hilfreich, stehen aber nicht an erster Stelle.&lt;br /&gt;
&lt;br /&gt;
; Gut erkennbare Vorschau: Eine Wiki-Graphik sollte so erstellt werden, daß auch bei Verkleinerung wesentliche Informationen wie Bemaßung oder Graphen gut erennbar bleiben. In einer Graphik, die eine Funktion mit 1 Pixel breite darstellt und die auf 3000×2000 Pixel ausgelegt ist, wird nach einer für Wiki-Seiten vernünfigen Skalierung nicht mehr viel übrig bleiben. Daher sollte bei einer Graphik auch immer deren visueller Eindruck nach Skalierung auf zB 200 oder 300 Pixel kontrolliert werden. Im Zweifelsfalle die Graphik kleiner auslegen.&lt;br /&gt;
&lt;br /&gt;
; Keine Riesen-Graphiken: Eine Bild soll den Artikel illustrieren und ihn nicht erschlagen. Bedenke auch, daß der Artikel nach dem breitesten Element ausgelegt wird und nicht jeder Leser einen Bildschirm mit 3200 Pixeln Breite hat: Beim Lesen des Artikels muss dann ständig links-rechts gescrollt werden weil der Artikel breiter ist als der Bildschirm. Das ist beim Lesen hinderlich und sehr störend. Gleiches gilt für überbreite Quelltexte.&lt;br /&gt;
&lt;br /&gt;
; Kein Fließtext: Prinzipiell ist es nicht ratsam, Fließtext in Graphiken zu schreiben. Stattdessen sollte Fließtext als solcher geschrieben werden, d.h. auf der Bildbeschreibungsseite als Information zur Graphik bzw. in einem Artikel, der die Graphik verwendet als Thumbnail-Text.&lt;br /&gt;
&lt;br /&gt;
; Keine Siamesischen Zwillinge: Graphiken, die als Siamesische Zwillinge daherkommen, können nicht mehr an das Layout angepasst werden. Im Artikel macht sich das u.U unangenehm bemerkbar, weil die Graphiken sehr breit sind.&lt;br /&gt;
&lt;br /&gt;
== Technisches ==&lt;br /&gt;
&lt;br /&gt;
;Keine externen Bilder: Lade die Bilddateien ins Wiki hoch! So kann das Bild korrigiert/verbessert werden, es hat seine Diskussionsseite, es können Beschreibungen und Quellangeben hinterlegt werden, und das Bild kann &#039;&#039;skaliert&#039;&#039; in Artikel eingefügt und kategorisiert werden. All dies ist nicht möglich für extern verlinkte Bilddateien.&lt;br /&gt;
&lt;br /&gt;
;Bildformate: Wie in [[Bildformate]] dargelegt, gibt es nur wenige Formate, die sich für ein Internet-Basiertes Wiki eignen:&lt;br /&gt;
&lt;br /&gt;
:;JPG: Für Fotos und Scans. Wähle einen vernünftigen Komprimierungs-Faktor!&lt;br /&gt;
:;SVG: Für Skizzen, Grafiken, etc. Ist PNG darin überlegen, daß es verlustfrei skaliert werden kann (Vektorformat).&lt;br /&gt;
:;PNG: Für Screenshots, Skizzen, Grafiken, etc.&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Tipps für Autoren]]&lt;/div&gt;</summary>
		<author><name>Wuschelkuchen</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=AVR-Tutorial:_LCD&amp;diff=57696</id>
		<title>AVR-Tutorial: LCD</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=AVR-Tutorial:_LCD&amp;diff=57696"/>
		<updated>2011-06-09T15:57:26Z</updated>

		<summary type="html">&lt;p&gt;Wuschelkuchen: /* Ansteuerung des LCDs im 4-Bit-Modus */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Kaum ein elektronisches Gerät kommt heutzutage noch ohne ein LCD daher. Ist doch auch praktisch, Informationen im Klartext anzeigen zu können, ohne irgendwelche LEDs blinken zu lassen. Kein Wunder also, dass die häufigste Frage in Mikrocontroller-Foren ist: &amp;quot;Wie kann ich ein LCD anschließen?&amp;quot;&lt;br /&gt;
&lt;br /&gt;
==Das LCD und sein Controller==&lt;br /&gt;
&lt;br /&gt;
Die meisten Text-LCDs verwenden den Controller [[HD44780|&#039;&#039;&#039;HD44780&#039;&#039;&#039;]] oder einen kompatiblen (z.&amp;amp;nbsp;B. KS0070) und haben 14 oder 16 Pins.&amp;lt;br&amp;gt;&lt;br /&gt;
Die Pinbelegung ist meist (Ausnahme z.&amp;amp;nbsp;B. TC1602E (Pollin 120420): VDD VSS vertauscht) folgendermaßen:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;ACHTUNG: Es gibt Displays mit abweichender Anschluss-Belegung, falscher Anschluss kann zur Zerstörung führen! Daher immer das zugehörige Datenblatt zu Rate ziehen.&amp;lt;/span&amp;gt; &lt;br /&gt;
&lt;br /&gt;
Einzelheiten unter [http://www.mikrocontroller.net/articles/HD44780 Artikel zum Controller HD44780]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#ffddcc&amp;quot;&lt;br /&gt;
! Pin # || Bezeichnung || Funktion&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;center&amp;quot; |  1&lt;br /&gt;
|align=&amp;quot;center&amp;quot; |  Vss (selten: Vdd)&lt;br /&gt;
||  GND (selten: +5V)&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;center&amp;quot; |  2&lt;br /&gt;
|align=&amp;quot;center&amp;quot; |  Vdd (selten: Vss)&lt;br /&gt;
||  +5V (selten: Gnd)&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;center&amp;quot; |  3&lt;br /&gt;
|align=&amp;quot;center&amp;quot; |  Vee, V0, V5&lt;br /&gt;
||  Kontrastspannung (-5 / 0  bis 5V)&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;center&amp;quot; |  4&lt;br /&gt;
|align=&amp;quot;center&amp;quot; |  RS&lt;br /&gt;
||  Register Select (0=Befehl/Status 1=Daten)&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;center&amp;quot; |  5&lt;br /&gt;
|align=&amp;quot;center&amp;quot; |  RW&lt;br /&gt;
||  1=Read 0=Write&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;center&amp;quot; |  6&lt;br /&gt;
|align=&amp;quot;center&amp;quot; |  E&lt;br /&gt;
||  0=Disable 1=Enable&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;center&amp;quot; |  7&lt;br /&gt;
|align=&amp;quot;center&amp;quot; |  DB0&lt;br /&gt;
||  Datenbit 0&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;center&amp;quot; |  8&lt;br /&gt;
|align=&amp;quot;center&amp;quot; |  DB1&lt;br /&gt;
||  Datenbit 1&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;center&amp;quot; |  9&lt;br /&gt;
|align=&amp;quot;center&amp;quot; |  DB2&lt;br /&gt;
||  Datenbit 2&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;center&amp;quot; |  10&lt;br /&gt;
|align=&amp;quot;center&amp;quot; |  DB3&lt;br /&gt;
||  Datenbit 3&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;center&amp;quot; |  11&lt;br /&gt;
|align=&amp;quot;center&amp;quot; |  DB4&lt;br /&gt;
||  Datenbit 4&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;center&amp;quot; |  12&lt;br /&gt;
|align=&amp;quot;center&amp;quot; |  DB5&lt;br /&gt;
||  Datenbit 5&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;center&amp;quot; |  13&lt;br /&gt;
|align=&amp;quot;center&amp;quot; |  DB6&lt;br /&gt;
||  Datenbit 6&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;center&amp;quot; |  14&lt;br /&gt;
|align=&amp;quot;center&amp;quot; |  DB7&lt;br /&gt;
||  Datenbit 7&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;center&amp;quot; |  15&lt;br /&gt;
|align=&amp;quot;center&amp;quot; |  A&lt;br /&gt;
||  LED-Beleuchtung, meist Anode&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;center&amp;quot; |  16&lt;br /&gt;
|align=&amp;quot;center&amp;quot; |  K&lt;br /&gt;
||  LED-Beleuchtung, meist Kathode&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Achtung: Unbedingt von der richtigen Seite zu zählen anfangen! Meistens ist das Pin1-Pad eckig oder daneben eine kleine 1 auf der LCD-Platine, ansonsten im Datenblatt nachschauen.&lt;br /&gt;
&lt;br /&gt;
Bei der DIL-Version (2x7, 2x8 Kontakte) auch darauf achten, auf welcher Platinen-Seite der Stecker montiert wird: auf der falschen (meist hinteren) Seite sind dann die Flachbandleitungen 1 und 2, 3 und 4  usw. vertauscht.&amp;lt;br&amp;gt;&lt;br /&gt;
Das kann man kompensieren, indem man es auf der anderen Kabelseite genauso permutiert  oder es auf dem Layout bewusst so legt (Stecker auf der Bottom-Seite plazieren).&amp;lt;br&amp;gt;&lt;br /&gt;
Man kann es NICHT kompensieren, indem man das Flachbandkabel auf der anderen Seite in den Stecker führt.&lt;br /&gt;
&lt;br /&gt;
Bei LCDs mit 16-poligem Anschluss sind die beiden letzten Pins für die Hintergrundbeleuchtung reserviert. Hier unbedingt das Datenblatt zu Rate ziehen, die beiden Anschlüsse sind je nach Hersteller verdreht beschaltet. Falls kein Datenblatt vorliegt, kann man mit einem Durchgangsprüfer feststellen, welcher Anschluss mit Masse (GND) verbunden ist.&lt;br /&gt;
&lt;br /&gt;
Vss wird ganz einfach an GND angeschlossen und Vcc=Vdd an +5V. Vee=V0=V5 kann man testweise auch an GND legen. Wenn das LCD dann zu dunkel sein sollte, muss man ein 10k-Potentiometer zwischen GND und 5V schalten, mit dem Schleifer an Vee (meist kann man den +5V-Anschluss am Poti weglassen, da im Display ein PullUp ist): &lt;br /&gt;
&lt;br /&gt;
[[Bild:LCD_Vee.gif|framed|center| Gewinnung der Kontrastspannung]]&lt;br /&gt;
&lt;br /&gt;
Wenn der Kontrast zu schwach (z.B. bei tiefen Temperaturen) ist, statt Gnd  eine negative Spannung (bis -5V, kann man leicht aus einem Timerpin, R, 2 Ds und 2 Cs erzeugen, so ist auch eine digital einstellbarer Kontrast mittels PWM möglich) ans Poti legen.&lt;br /&gt;
&lt;br /&gt;
Es gibt zwei verschiedene Möglichkeiten zur Ansteuerung eines solchen Displays: den &#039;&#039;&#039;8-Bit-&#039;&#039;&#039; und den &#039;&#039;&#039;4-Bit-&#039;&#039;&#039;Modus.&lt;br /&gt;
* Für den &#039;&#039;&#039;8-Bit-Modus&#039;&#039;&#039; werden (wie der Name schon sagt) alle acht Datenleitungen zur Ansteuerung verwendet, somit kann durch einen Zugriff immer ein ganzes Byte übertragen werden.&lt;br /&gt;
* Der &#039;&#039;&#039;4-Bit-Modus&#039;&#039;&#039; verwendet nur die oberen vier Datenleitungen (&#039;&#039;&#039;DB4-DB7&#039;&#039;&#039;). Um ein Byte zu übertragen, braucht man somit zwei Zugriffe, wobei zuerst das höherwertige &#039;&#039;&#039;&amp;quot;Nibble&amp;quot;&#039;&#039;&#039; (= 4 Bits), also Bit 4 bis Bit 7 übertragen wird und dann das niederwertige, also Bit 0 bis Bit 3. Die unteren Datenleitungen des LCDs, die beim Lesezyklus Ausgänge sind, lässt man offen (siehe Datasheets, z.&amp;amp;nbsp;B. vom KS0070).&lt;br /&gt;
&lt;br /&gt;
Der 4-Bit-Modus hat den Vorteil, dass man 4 IO-Pins weniger benötigt als beim 8-Bit-Modus. 6 bzw. 7 Pins (eines Portes) reichen aus.&lt;br /&gt;
&lt;br /&gt;
Neben den vier Datenleitungen (DB4, DB5, DB6 und DB7) werden noch die Anschlüsse &#039;&#039;&#039;RS&#039;&#039;&#039;, &#039;&#039;&#039;RW&#039;&#039;&#039; und &#039;&#039;&#039;E&#039;&#039;&#039; benötigt. &lt;br /&gt;
&lt;br /&gt;
* Über &#039;&#039;&#039;RS&#039;&#039;&#039; wird ausgewählt, ob man einen Befehl oder ein Datenbyte an das LCD schicken möchte. Beim Schreiben gilt: ist RS Low, dann wird das ankommende Byte als Befehl interpretiert; Ist RS high, wird das Byte auf dem LCD angezeigt (genauer: ins Data-Register geschrieben, kann auch für den CG bestimmt sein). &lt;br /&gt;
* &#039;&#039;&#039;RW&#039;&#039;&#039; legt fest, ob geschrieben oder gelesen werden soll. High bedeutet lesen, low bedeutet schreiben. Wenn man RW auf lesen einstellt und RS auf Befehl, dann kann man das &#039;&#039;&#039;Busy-Flag&#039;&#039;&#039; an DB7 lesen, das anzeigt, ob das LCD den vorhergehenden Befehl fertig verarbeitet hat. Ist RS auf Daten eingestellt, dann kann man z.&amp;amp;nbsp;B. den Inhalt des Displays lesen - was jedoch nur in den wenigsten Fällen Sinn macht. Deshalb kann man RW dauerhaft auf low lassen (= an GND anschließen), so dass man noch ein IO-Pin am Controller einspart. Der Nachteil ist, dass man dann das Busy-Flag nicht lesen kann, weswegen man nach jedem Befehl ca. 50 µs (beim Return Home 2 ms, beim Clear Display 20 ms) warten sollte, um dem LCD Zeit zum Ausführen des Befehls zu geben. Dummerweise schwankt die Ausführungszeit von Display zu Display und ist auch von der Betriebsspannung abhängig. Für professionellere Sachen also lieber den IO-Pin opfern und Busy abfragen.&lt;br /&gt;
* Der &#039;&#039;&#039;E&#039;&#039;&#039; Anschluss schließlich signalisiert dem LCD, dass die übrigen Datenleitungen jetzt korrekte Pegel angenommen haben und es die gewünschten Daten von den Datenleitungen bzw. Kommandos von den Datenleitungen übernehmen kann. Beim Lesen gibt das Display die Daten / Status so lange aus, die E high ist. Beim Schreiben übernimmt das Display die Daten mit der fallenden Flanke.&lt;br /&gt;
&lt;br /&gt;
== Anschluss an den Controller ==&lt;br /&gt;
&lt;br /&gt;
Jetzt, da wir wissen, welche Anschlüsse das LCD benötigt, können wir das LCD mit dem Mikrocontroller verbinden: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;ACHTUNG: Es gibt Displays mit abweichender Anschluss-Belegung, falscher Anschluss kann zur Zerstörung führen! Daher immer das zugehörige Datenblatt zu Rate ziehen.&amp;lt;/span&amp;gt; &lt;br /&gt;
&lt;br /&gt;
Einzelheiten unter [http://www.mikrocontroller.net/articles/HD44780 Artikel zum Controller HD44780]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#ffddcc&amp;quot;&lt;br /&gt;
!Pinnummer&amp;lt;BR&amp;gt;LCD || Bezeichnung || Anschluss&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |1 || Vss || GND&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |2 || Vcc || 5V&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |3 || Vee || GND oder [[Potentiometer | Poti]] &lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |4 || RS || PD4 am AVR&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |5 || RW || GND &lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |6 || E || PD5 am AVR&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |7 || DB0 || nicht angeschlossen &lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |8 || DB1 || nicht angeschlossen&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |9 || DB2 || nicht angeschlossen&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |10 || DB3 || nicht angeschlossen&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |11 || DB4 || PD0 am AVR&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |12 || DB5 || PD1 am AVR&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |13 || DB6 || PD2 am AVR&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |14 || DB7 || PD3 am AVR&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |15 || A || Vorsicht! Meistens nicht direkt an +5V anschließbar,&amp;lt;BR&amp;gt;nur über einen Vorwiderstand der an die Daten&amp;lt;BR&amp;gt;der Hintergrundbeleuchtung angepasst werden muss.&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot; |16 || K || GND&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ok alles ist verbunden. Wenn man jetzt den Strom einschaltet, sollten ein oder zwei schwarze Balken auf dem Display angezeigt werden. &lt;br /&gt;
&lt;br /&gt;
Doch wie bekommt man jetzt die Befehle und Daten in das Display? Dazu muss das LCD initialisiert werden und man muss Befehle (Commands) und seine Daten an das LCD senden. Weil die Initialisierung ein Spezialfall der Übertragung von Befehlen ist, im Folgenden zunächst die Erklärung für die Übertragung von Werten an das LCD.&lt;br /&gt;
&lt;br /&gt;
== Ansteuerung des LCDs im 4-Bit-Modus ==&lt;br /&gt;
&lt;br /&gt;
Um ein Byte zu übertragen, muss man es erstmal in die beiden Nibbles zerlegen, die getrennt übertragen werden. Da das obere Nibble (Bit 4 - Bit 7) als erstes übertragen wird, die 4 Datenleitungen jedoch an die vier unteren Bits des Port D angeschlossen sind, muss man die beiden Nibbles des zu übertragenden Bytes erstmal vertauschen. Der AVR kennt dazu praktischerweise einen eigenen Befehl: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;avrasm&amp;gt;&lt;br /&gt;
           swap r16               ; vertauscht die beiden Nibbles von r16&lt;br /&gt;
&amp;lt;/avrasm&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Aus 0b00100101 wird so z.&amp;amp;nbsp;B. 0b01010010. &lt;br /&gt;
&lt;br /&gt;
Jetzt sind die Bits für die erste Phase der Übertragung an der richtigen Stelle. Trotzdem wollen wir das Ergebnis nicht einfach so mit &#039;&#039;&#039;out PORTD, r16&#039;&#039;&#039; an den Port geben. Um die Hälfte des Bytes, die jetzt nicht an die Datenleitungen des LCDs gegeben wird auf null zu setzen, verwendet man folgenden Befehl: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;avrasm&amp;gt;&lt;br /&gt;
           andi r16, 0b00001111   ; Nur die vier unteren (mit 1 markierten)&lt;br /&gt;
                                  ; Bits werden übernommen, alle anderen werden null&lt;br /&gt;
&amp;lt;/avrasm&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Also: Das obere Nibble wird erst mit dem unteren vertauscht, damit es unten ist. Dann wird das obere (das wir jetzt noch nicht brauchen) auf null gesetzt. &lt;br /&gt;
&lt;br /&gt;
Jetzt müssen wir dem LCD noch mitteilen, ob wir Daten oder Befehle senden wollen. Das machen wir, indem wir das Bit, an dem RS angeschlossen ist (PD4), auf 0 (Befehl senden) oder auf 1 (Daten senden) setzen. Um ein Bit in einem normalen Register zu setzen, gibt es den Befehl sbr (Set Bit in Register). Dieser Befehl unterscheidet sich jedoch von sbi (das nur für IO-Register gilt) dadurch, dass man nicht die Nummer des zu setzenden Bits angibt, sondern eine Bitmaske. Das geht so: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;avrasm&amp;gt;&lt;br /&gt;
           sbr r16, 0b00010000     ; Bit 4 setzen, alle anderen Bits bleiben gleich&lt;br /&gt;
&amp;lt;/avrasm&amp;gt;&lt;br /&gt;
&lt;br /&gt;
RS ist an PD4 angeschlossen. Wenn wir r16 an den Port D ausgeben, ist RS jetzt also high und das LCD erwartet Daten anstatt von Befehlen. &lt;br /&gt;
&lt;br /&gt;
Das Ergebnis können wir jetzt endlich direkt an den Port D übergeben: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;avrasm&amp;gt;&lt;br /&gt;
           out PORTD, r16&lt;br /&gt;
&amp;lt;/avrasm&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Natürlich muss vorher der Port D auf Ausgang geschaltet werden, indem man 0xFF ins Datenrichtungsregister DDRD schreibt. &lt;br /&gt;
&lt;br /&gt;
Um dem LCD zu signalisieren, dass es das an den Datenleitungen anliegende Nibble übernehmen kann, wird die E-Leitung (Enable, an PD5 angeschlossen) auf high und kurz darauf wieder auf low gesetzt. Ein Puls an dieser Leitung teilt also dem LCD mit, das die restlichen Leitungen jetzt ihren vom Programm gewollten Pegel eingenommen haben und gültig sind.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;avrasm&amp;gt;&lt;br /&gt;
           sbi PORTD, 5              ; Enable high&lt;br /&gt;
           nop                       ; 3 Taktzyklen warten (&amp;quot;nop&amp;quot; = nichts tun)&lt;br /&gt;
           nop&lt;br /&gt;
           nop&lt;br /&gt;
           cbi PORTD, 5              ; Enable wieder low&lt;br /&gt;
&amp;lt;/avrasm&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die eine Hälfte des Bytes wäre damit geschafft! Die andere Hälfte kommt direkt hinterher: Alles, was an der obenstehenden Vorgehensweise geändert werden muss, ist, das &amp;quot;swap&amp;quot; (Vertauschen der beiden Nibbles) wegzulassen.&lt;br /&gt;
&lt;br /&gt;
== Initialisierung des Displays ==&lt;br /&gt;
&lt;br /&gt;
Allerdings gibt es noch ein Problem. Wenn ein LCD eingeschaltet wird, dann läuft es zunächst im 8 Bit Modus. Irgendwie muss das Display initialisiert und auf den 4 Bit Modus umgeschaltet werden, und zwar nur mit den 4 zur Verfügung stehenden Datenleitungen.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Wenn es Probleme gibt, dann meistens an diesem Punkt. Die &amp;quot;kompatiblen&amp;quot; Kontroller sind gelegentlich doch nicht 100% identisch. Es lohnt sich, das Datenblatt (siehe Weblinks im Artikel [[LCD]]) genau zu lesen, in welcher Reihenfolge und mit welchen Abständen (Delays) die Initialisierungbefehle gesendet werden. Eine weitere Hilfe können Ansteuerungsbeispiele in Forenbeiträgen geben z.&amp;amp;nbsp;B.&lt;br /&gt;
&lt;br /&gt;
* [http://www.mikrocontroller.net/topic/79609#664268 (A) KS0066U oder Ähnliche --- LCD Treiber]&lt;br /&gt;
&lt;br /&gt;
=== Initialisierung für 4 Bit Modus ===&lt;br /&gt;
&lt;br /&gt;
Achtung: Im Folgenden sind alle Bytes aus Sicht des LCD-Kontrollers angegeben! Da LCD-seitig nur die Leitungen DB4 - DB7 verwendet werden, ist daher immer nur das höherwertige Nibble gültig. Durch die Art der Verschaltung (DB4 - DB7 wurde auf dem PORT an PD0 bis PD3 angeschlossen) ergibt sich eine Verschiebung, so dass das am Kontroller auszugebende Byte nibblemässig vertauscht ist!&lt;br /&gt;
&lt;br /&gt;
Die Sequenz, aus Sicht des Kontrollers, sieht so aus:&lt;br /&gt;
&lt;br /&gt;
* Nach dem Anlegen der Betriebsspannung muss eine Zeit von mindestens ca. 15ms gewartet werden, um dem LCD-Kontroller Zeit für seine eigene Initialisierung zu geben&lt;br /&gt;
* $3 ins Steuerregister schreiben (RS = 0)&lt;br /&gt;
* Mindestens 4.1ms warten&lt;br /&gt;
* $3 ins Steuerregister schreiben (RS = 0)&lt;br /&gt;
* Mindestens 100µs warten&lt;br /&gt;
* $3 ins Steuerregister schreiben (RS = 0)&lt;br /&gt;
* $2 ins Steuerregister schreiben (RS = 0), dadurch wird auf 4 Bit Daten umgestellt&lt;br /&gt;
* Ab jetzt muss für die Übertragung eines Bytes jeweils zuerst das höherwertige Nibble und dann das niederwertige Nibble übertragen werden, wie oben beschrieben&lt;br /&gt;
* Mit dem Konfigurier-Befehl $20 das Display konfigurieren (4-Bit, 1 oder 2 Zeilen, 5x7 Format)&lt;br /&gt;
* Mit den restlichen Konfigurierbefehlen die Konfiguration vervollständigen: Display ein/aus, Cursor ein/aus, etc.&lt;br /&gt;
&lt;br /&gt;
Eine Begründung, warum die ersten Befehle dreifach geschickt werden sollen, findet sich [http://www.mikrocontroller.net/topic/158983#1508510 im Forum].&lt;br /&gt;
&lt;br /&gt;
=== Initialisierung für 8 Bit Modus ===&lt;br /&gt;
&lt;br /&gt;
Der Vollständigkeit halber hier noch die notwendige Initialiserungssequenz für den 8 Bit Modus. Da hier die Daten komplett als 1 Byte übertragen werden können, sind einige Klimmzüge wie im 4 Bit Modus nicht notwendig. Begründung für die anfänglichen Wiederholungen siehe oben.&lt;br /&gt;
&lt;br /&gt;
* Nach dem Anlegen der Betriebsspannung muss eine Zeit von mindestens ca. 15ms gewartet werden, um dem LCD-Kontroller Zeit für seine eigene Initialisierung zu geben&lt;br /&gt;
* $30 ins Steuerregister schreiben (RS = 0)&lt;br /&gt;
* Mindestens 4.1ms warten&lt;br /&gt;
* $30 ins Steuerregister schreiben (RS = 0)&lt;br /&gt;
* Mindestens 100µs warten&lt;br /&gt;
* $30 ins Steuerregister schreiben (RS = 0)&lt;br /&gt;
* Mit dem Konfigurier-Befehl 0x30 das Display konfigurieren (8-Bit, 1 oder 2 Zeilen, 5x7 Format)&lt;br /&gt;
* Mit den restlichen Konfigurierbefehlen die Konfiguration vervollständigen: Display ein/aus, Cursor ein/aus, etc.&lt;br /&gt;
&lt;br /&gt;
== Routinen zur LCD-Ansteuerung im 4-Bit-Modus ==&lt;br /&gt;
&lt;br /&gt;
Im Folgenden werden die bisherigen Grundroutinen zur LCD-Ansteuerung im 4-Bit-Modus zusammengefasst und kommentiert. Die darin enthaltenen Symbole (temp1, PORTD,...) müssen in einem dazugehörenden Hauptprogramm definiert werden. Dies wird nächsten Abschnitt &#039;&#039;Anwendung&#039;&#039; weiter erklärt.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;avrasm&amp;gt;&lt;br /&gt;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;&lt;br /&gt;
;;                 LCD-Routinen                ;;&lt;br /&gt;
;;                 ============                ;;&lt;br /&gt;
;;              (c)andreas-s@web.de            ;;&lt;br /&gt;
;;                                             ;;&lt;br /&gt;
;; 4bit-Interface                              ;;&lt;br /&gt;
;; DB4-DB7:       PD0-PD3                      ;;&lt;br /&gt;
;; RS:            PD4                          ;;&lt;br /&gt;
;; E:             PD5                          ;;&lt;br /&gt;
;;                                             ;;&lt;br /&gt;
;; Takt:          4 MHz                        ;;&lt;br /&gt;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 ;sendet ein Datenbyte an das LCD&lt;br /&gt;
lcd_data:&lt;br /&gt;
           mov temp2, temp1             ; &amp;quot;Sicherungskopie&amp;quot; für&lt;br /&gt;
                                        ; die Übertragung des 2.Nibbles&lt;br /&gt;
           swap temp1                   ; Vertauschen&lt;br /&gt;
           andi temp1, 0b00001111       ; oberes Nibble auf Null setzen&lt;br /&gt;
           sbr temp1, 1&amp;lt;&amp;lt;4              ; entspricht 0b00010000 (Anm.1)&lt;br /&gt;
           out PORTD, temp1             ; ausgeben&lt;br /&gt;
           rcall lcd_enable             ; Enable-Routine aufrufen&lt;br /&gt;
                                        ; 2. Nibble, kein swap da es schon&lt;br /&gt;
                                        ; an der richtigen stelle ist&lt;br /&gt;
           andi temp2, 0b00001111       ; obere Hälfte auf Null setzen &lt;br /&gt;
           sbr temp2, 1&amp;lt;&amp;lt;4              ; entspricht 0b00010000&lt;br /&gt;
           out PORTD, temp2             ; ausgeben&lt;br /&gt;
           rcall lcd_enable             ; Enable-Routine aufrufen&lt;br /&gt;
           rcall delay50us              ; Delay-Routine aufrufen&lt;br /&gt;
           ret                          ; zurück zum Hauptprogramm&lt;br /&gt;
&lt;br /&gt;
 ; sendet einen Befehl an das LCD&lt;br /&gt;
lcd_command:                            ; wie lcd_data, nur RS=0&lt;br /&gt;
           mov temp2, temp1&lt;br /&gt;
           swap temp1&lt;br /&gt;
           andi temp1, 0b00001111&lt;br /&gt;
           out PORTD, temp1&lt;br /&gt;
           rcall lcd_enable&lt;br /&gt;
           andi temp2, 0b00001111&lt;br /&gt;
           out PORTD, temp2&lt;br /&gt;
           rcall lcd_enable&lt;br /&gt;
           rcall delay50us&lt;br /&gt;
           ret&lt;br /&gt;
&lt;br /&gt;
 ; erzeugt den Enable-Puls&lt;br /&gt;
 ;&lt;br /&gt;
 ; Bei höherem Takt (&amp;gt;= 8 MHz) kann es notwendig sein, &lt;br /&gt;
 ; vor dem Enable High 1-2 Wartetakte (nop) einzufügen. &lt;br /&gt;
 ; Siehe dazu http://www.mikrocontroller.net/topic/81974#685882&lt;br /&gt;
lcd_enable:&lt;br /&gt;
           sbi PORTD, 5                 ; Enable high&lt;br /&gt;
           nop                          ; mindestens 3 Taktzyklen warten&lt;br /&gt;
           nop&lt;br /&gt;
           nop&lt;br /&gt;
           cbi PORTD, 5                 ; Enable wieder low&lt;br /&gt;
           ret                          ; Und wieder zurück                     &lt;br /&gt;
&lt;br /&gt;
 ; Pause nach jeder Übertragung&lt;br /&gt;
delay50us:                              ; 50us Pause (bei 4 MHz)&lt;br /&gt;
           ldi  temp1, $42&lt;br /&gt;
delay50us_:dec  temp1&lt;br /&gt;
           brne delay50us_&lt;br /&gt;
           ret                          ; wieder zurück&lt;br /&gt;
&lt;br /&gt;
 ; Längere Pause für manche Befehle&lt;br /&gt;
delay5ms:                               ; 5ms Pause (bei 4 MHz)&lt;br /&gt;
           ldi  temp1, $21&lt;br /&gt;
WGLOOP0:   ldi  temp2, $C9&lt;br /&gt;
WGLOOP1:   dec  temp2&lt;br /&gt;
           brne WGLOOP1&lt;br /&gt;
           dec  temp1&lt;br /&gt;
           brne WGLOOP0&lt;br /&gt;
           ret                          ; wieder zurück&lt;br /&gt;
&lt;br /&gt;
 ; Initialisierung: muss ganz am Anfang des Programms aufgerufen werden&lt;br /&gt;
lcd_init:&lt;br /&gt;
           ldi  temp3,50&lt;br /&gt;
powerupwait:&lt;br /&gt;
           rcall  delay5ms&lt;br /&gt;
           dec  temp3&lt;br /&gt;
           brne powerupwait&lt;br /&gt;
           ldi temp1, 0b00000011        ; muss 3mal hintereinander gesendet&lt;br /&gt;
           out PORTD, temp1             ; werden zur Initialisierung&lt;br /&gt;
           rcall lcd_enable             ; 1&lt;br /&gt;
           rcall delay5ms&lt;br /&gt;
           rcall lcd_enable             ; 2&lt;br /&gt;
           rcall delay5ms&lt;br /&gt;
           rcall lcd_enable             ; und 3!&lt;br /&gt;
           rcall delay5ms&lt;br /&gt;
           ldi temp1, 0b00000010        ; 4bit-Modus einstellen&lt;br /&gt;
           out PORTD, temp1&lt;br /&gt;
           rcall lcd_enable&lt;br /&gt;
           rcall delay5ms&lt;br /&gt;
           ldi temp1, 0b00101000        ; 4Bit / 2 Zeilen / 5x8&lt;br /&gt;
           rcall lcd_command&lt;br /&gt;
           ldi temp1, 0b00001100        ; Display ein / Cursor aus / kein Blinken&lt;br /&gt;
           rcall lcd_command&lt;br /&gt;
           ldi temp1, 0b00000100        ; inkrement / kein Scrollen&lt;br /&gt;
           rcall lcd_command&lt;br /&gt;
           ret&lt;br /&gt;
&lt;br /&gt;
 ; Sendet den Befehl zur Löschung des Displays&lt;br /&gt;
lcd_clear:&lt;br /&gt;
           ldi temp1, 0b00000001   ; Display löschen&lt;br /&gt;
           rcall lcd_command&lt;br /&gt;
           rcall delay5ms&lt;br /&gt;
           ret&lt;br /&gt;
&lt;br /&gt;
 ; Sendet den Befehl: Cursor Home&lt;br /&gt;
lcd_home:&lt;br /&gt;
           ldi temp1, 0b00000010   ; Cursor Home&lt;br /&gt;
           rcall lcd_command&lt;br /&gt;
           rcall delay5ms&lt;br /&gt;
           ret&lt;br /&gt;
&amp;lt;/avrasm&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Anm.1: Siehe [[Bitmanipulation]]&lt;br /&gt;
&lt;br /&gt;
Weitere Funktionen (wie z.&amp;amp;nbsp;B. Cursorposition verändern) sollten mit Hilfe der [[AVR-Tutorial:_LCD#Welche_Befehle_versteht_das_LCD.3F|Befehlscodeliste]] nicht schwer zu realisieren sein. Einfach den Code in temp laden, lcd_command aufrufen und ggf. eine Pause einfügen.&amp;lt;br&amp;gt; &lt;br /&gt;
Natürlich kann man die LCD-Ansteuerung auch an einen anderen Port des Mikrocontrollers &amp;quot;verschieben&amp;quot;: Wenn das LCD z.&amp;amp;nbsp;B. an Port B angeschlossen ist, dann reicht es, im Programm alle &amp;quot;PORTD&amp;quot; durch &amp;quot;PORTB&amp;quot; und &amp;quot;DDRD&amp;quot; durch &amp;quot;DDRB&amp;quot; zu ersetzen.&amp;lt;br&amp;gt; &lt;br /&gt;
Wer eine höhere Taktfrequenz als 4 MHz verwendet, der sollte daran denken, die Dauer der Verzögerungsschleifen anzupassen.&lt;br /&gt;
&lt;br /&gt;
==Anwendung==&lt;br /&gt;
&lt;br /&gt;
Ein Programm, das diese Routinen zur Anzeige von Text verwendet, kann z.&amp;amp;nbsp;B. so aussehen (die Datei lcd-routines.asm muss sich im gleichen Verzeichnis befinden). Nach der Initialisierung wird zuerst der Displayinhalt gelöscht. Um dem LCD ein Zeichen zu schicken, lädt man es in temp1 und ruft die Routine &amp;quot;lcd_data&amp;quot; auf. Das folgende Beispiel zeigt das Wort &amp;quot;Test&amp;quot; auf dem LCD an. &lt;br /&gt;
&lt;br /&gt;
[http://www.mikrocontroller.net/sourcecode/tutorial/lcd-test.asm Download lcd-test.asm] &lt;br /&gt;
&lt;br /&gt;
&amp;lt;avrasm&amp;gt;&lt;br /&gt;
.include &amp;quot;m8def.inc&amp;quot;&lt;br /&gt;
&lt;br /&gt;
; .def definiert ein Synonym (Namen) für ein µC Register&lt;br /&gt;
.def temp1 = r16&lt;br /&gt;
.def temp2 = r17&lt;br /&gt;
.def temp3 = r18&lt;br /&gt;
&lt;br /&gt;
           ldi temp1, LOW(RAMEND)      ; LOW-Byte der obersten RAM-Adresse&lt;br /&gt;
           out SPL, temp1&lt;br /&gt;
           ldi temp1, HIGH(RAMEND)     ; HIGH-Byte der obersten RAM-Adresse&lt;br /&gt;
           out SPH, temp1&lt;br /&gt;
&lt;br /&gt;
           ldi temp1, 0xFF    ; Port D = Ausgang&lt;br /&gt;
           out DDRD, temp1&lt;br /&gt;
&lt;br /&gt;
           rcall lcd_init     ; Display initialisieren&lt;br /&gt;
           rcall lcd_clear    ; Display löschen&lt;br /&gt;
&lt;br /&gt;
           ldi temp1, &#039;T&#039;     ; Zeichen anzeigen&lt;br /&gt;
           rcall lcd_data&lt;br /&gt;
&lt;br /&gt;
           ldi temp1, &#039;e&#039;     ; Zeichen anzeigen&lt;br /&gt;
           rcall lcd_data&lt;br /&gt;
           &lt;br /&gt;
           ldi temp1, &#039;s&#039;     ; Zeichen anzeigen&lt;br /&gt;
           rcall lcd_data&lt;br /&gt;
&lt;br /&gt;
           ldi temp1, &#039;t&#039;     ; Zeichen anzeigen&lt;br /&gt;
           rcall lcd_data&lt;br /&gt;
&lt;br /&gt;
loop:&lt;br /&gt;
           rjmp loop&lt;br /&gt;
&lt;br /&gt;
.include &amp;quot;lcd-routines.asm&amp;quot;            ; LCD-Routinen werden hier eingefügt&lt;br /&gt;
&amp;lt;/avrasm&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Für längere Texte ist die Methode, jedes Zeichen einzeln in das Register zu laden und &amp;quot;lcd_data&amp;quot; aufzurufen natürlich nicht sehr praktisch. Dazu später aber mehr.&lt;br /&gt;
&lt;br /&gt;
Bisher wurden in Register immer irgendwelche Zahlenwerte geladen, aber in diesem Programm kommt plötzlich die Anweisung&lt;br /&gt;
&amp;lt;avrasm&amp;gt;&lt;br /&gt;
           ldi temp1, &#039;T&#039;&lt;br /&gt;
&amp;lt;/avrasm&amp;gt;&lt;br /&gt;
vor. Wie ist diese zu verstehen? Passiert hier etwas grundlegend anderes als beim Laden einer Zahl in ein Register?&lt;br /&gt;
&lt;br /&gt;
Die Antwort darauf lautet: Nein. Auch hier wird letztendlich nur eine Zahl in ein Register geladen. Der Schlüssel zum Verständnis beruht darauf, dass zum LCD, so wie zu allen Ausgabegeräten, für die Ausgabe von Texten immer nur Zahlen übertragen werden, sog. Codes. Zum Beispiel könnte man vereinbaren, dass ein LCD, wenn es den Ausgabecode 65 erhält, ein &#039;A&#039; anzeigt, bei einem Ausgabecode von 66 ein &#039;B&#039; usw. Naturgemäß gibt es daher viele verschiedene Code-Buchstaben Zuordnungen. Damit hier etwas Ordnung in das potentielle Chaos kommt, hat man sich bereits in der Steinzeit der Programmierung auf bestimmte Codetabellen geeinigt, von denen die verbreitetste sicherlich die ASCII-Zuordnung ist.&lt;br /&gt;
&lt;br /&gt;
==ASCII==&lt;br /&gt;
&lt;br /&gt;
ASCII steht für &#039;&#039;American Standard Code for Information Interchange&#039;&#039; und ist ein standardisierter Code zur Zeichenumsetzung. Die Codetabelle sieht hexadezimal dabei wie folgt aus:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#ffddcc&amp;quot;&lt;br /&gt;
!   ||x0||x1||x2||x3||x4||x5||x6||x7||x8||x9||xA||xB||xC||xD||xE||xF&lt;br /&gt;
|-&lt;br /&gt;
!style=&amp;quot;background-color:#ffddcc&amp;quot;| 0x&lt;br /&gt;
|NUL||SOH||STX||ETX||EOT||ENQ||ACK||BEL||BS||HT||LF||VT||FF||CR||SO||SI&lt;br /&gt;
|-&lt;br /&gt;
!style=&amp;quot;background-color:#ffddcc&amp;quot;| 1x&lt;br /&gt;
|DLE||DC1||DC2||DC3||DC4||NAK||SYN||ETB||CAN||EM||SUB||ESC||FS||GS||RS||US&lt;br /&gt;
|-&lt;br /&gt;
!style=&amp;quot;background-color:#ffddcc&amp;quot;| 2x&lt;br /&gt;
|SP||!||&amp;quot;||#||$||%||&amp;amp;||&#039;||(||)||*||+||,||-||.||/&lt;br /&gt;
|-&lt;br /&gt;
!style=&amp;quot;background-color:#ffddcc&amp;quot;| 3x&lt;br /&gt;
|0||1||2||3||4||5||6||7||8||9||:||;||&amp;lt;||=||&amp;gt;||?&lt;br /&gt;
|-&lt;br /&gt;
!style=&amp;quot;background-color:#ffddcc&amp;quot;| 4x&lt;br /&gt;
|@||A||B||C||D||E||F||G||H||I||J||K||L||M||N||O&lt;br /&gt;
|-&lt;br /&gt;
!style=&amp;quot;background-color:#ffddcc&amp;quot;| 5x&lt;br /&gt;
|P||Q||R||S||T||U||V||W||X||Y||Z||[||\||]||^||_&lt;br /&gt;
|-&lt;br /&gt;
!style=&amp;quot;background-color:#ffddcc&amp;quot;| 6x&lt;br /&gt;
|`||a||b||c||d||e||f||g||h||i||j||k||l||m||n||o&lt;br /&gt;
|-&lt;br /&gt;
!style=&amp;quot;background-color:#ffddcc&amp;quot;| 7x&lt;br /&gt;
|p||q||r||s||t||u||v||w||x||y||z||{|| &amp;amp;#124; ||}||~||DEL&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die ersten beiden Zeilen enthalten die Codes für einige Steuerzeichen, ihre vollständige Beschreibung würde hier zu weit führen. Das Zeichen &#039;&#039;&#039;SP&#039;&#039;&#039; steht für ein &#039;&#039;Space&#039;&#039;, also ein Leerzeichen. &#039;&#039;&#039;BS&#039;&#039;&#039; steht für &#039;&#039;Backspace&#039;&#039;, also ein Zeichen zurück. &#039;&#039;&#039;DEL&#039;&#039;&#039; steht für &#039;&#039;Delete&#039;&#039;, also das Löschen eines Zeichens. &#039;&#039;&#039;CR&#039;&#039;&#039; steht für &#039;&#039;Carriage Return&#039;&#039;, also wörtlich: der Wagenrücklauf (einer Schreibmaschine), während &#039;&#039;&#039;LF&#039;&#039;&#039; für &#039;&#039;Line feed&#039;&#039;, also einen Zeilenvorschub steht.&lt;br /&gt;
&lt;br /&gt;
Der Assembler kennt diese Codetabelle und ersetzt die Zeile&lt;br /&gt;
&lt;br /&gt;
&amp;lt;avrasm&amp;gt;&lt;br /&gt;
           ldi temp1, &#039;T&#039;&lt;br /&gt;
&amp;lt;/avrasm&amp;gt;&lt;br /&gt;
&lt;br /&gt;
durch&lt;br /&gt;
&lt;br /&gt;
&amp;lt;avrasm&amp;gt;&lt;br /&gt;
           ldi temp1, $54&lt;br /&gt;
&amp;lt;/avrasm&amp;gt;&lt;br /&gt;
&lt;br /&gt;
was letztendlich auch der Lesbarkeit des Programmes zugute kommt. Funktional besteht kein Unterschied zwischen den beiden Anweisungen. Beide bewirken, dass das Register temp1 mit dem Bitmuster 01010100 ( = hexadezimal 54, = dezimal 84 oder eben der ASCII Code für &#039;&#039;&#039;T&#039;&#039;&#039;) geladen wird.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Das LCD wiederrum kennt diese Code-Tabelle ebenfalls und wenn es über den Datenbus die Codezahl $54 zur Anzeige empfängt, dann schreibt es ein &#039;&#039;&#039;T&#039;&#039;&#039; an die aktuelle Cursorposition. Genauer gesagt, weiss das LCD nichts von einem &#039;&#039;&#039;T&#039;&#039;&#039;. Es sieht einfach in seinen internen Tabellen nach, welche Pixel beim Empfang der Codezahl $54 auf schwarz zu setzen sind. &#039;Zufällig&#039; sind das genau jene Pixel, die für uns Menschen ein &#039;&#039;&#039;T&#039;&#039;&#039; ergeben.&lt;br /&gt;
&lt;br /&gt;
==Welche Befehle versteht das LCD?==&lt;br /&gt;
&lt;br /&gt;
Auf dem LCD arbeitet ein Controller vom Typ HD44780. Dieser Kontroller versteht eine Reihe von Befehlen, die allesamt mittels lcd_command gesendet werden können. Ein Kommando ist dabei nichts anderes als ein Befehlsbyte, in dem die verschiedenen Bits verschiedene Bedeutungen haben:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#ffddcc&amp;quot;&lt;br /&gt;
! Bitwert   || Bedeutung&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;center&amp;quot; |  0&lt;br /&gt;
||dieses Bit muss 0 sein&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;center&amp;quot; |  1&lt;br /&gt;
||dieses Bit muss 1 sein&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;center&amp;quot; |  x&lt;br /&gt;
||der Zustand dieses Bits ist egal&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;center&amp;quot; | sonstige Buchstaben&lt;br /&gt;
||das Bit muss je nach gewünschter Funktionalität gesetzt werden. Die mögliche Funktionalität des jeweiligen Bits geht aus der Befehlsbeschreibung hervor&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Beispiel: Das Kommando &#039;ON/OFF Control&#039; soll benutzt werden, um das Display einzuschalten, der Cursor soll eingeschaltet werden und der Cursor soll blinken.&lt;br /&gt;
Das Befehlsbyte ist so aufgebaut:&lt;br /&gt;
   0b00001dcb&lt;br /&gt;
Aus der Befehlsbeschreibung entnimmt man:&lt;br /&gt;
* Display ein bedeutet, dass an der Bitposition d eine 1 stehen muss.&amp;lt;br&amp;gt;&lt;br /&gt;
* Cursor ein bedeutet, dass an der Bitposition c ein 1 stehen muss.&amp;lt;br&amp;gt;&lt;br /&gt;
* Cursor blinken bedeutet, dass an der Bitposition b eine 1 stehen muss.&amp;lt;br&amp;gt;&lt;br /&gt;
Das dafür zu übertragende Befehlsbyte hat also die Gestalt 0b00001111 oder in hexadezimaler Schreibweise $0F.&lt;br /&gt;
&lt;br /&gt;
===Clear display: 0b00000001===&lt;br /&gt;
&lt;br /&gt;
Die Anzeige wird gelöscht und der Ausgabecursor kehrt an die Home Position (links, erste Zeile) zurück.&lt;br /&gt;
&lt;br /&gt;
Ausführungszeit: 1.64ms&lt;br /&gt;
&lt;br /&gt;
===Cursor home: 0b0000001x===&lt;br /&gt;
&lt;br /&gt;
Der Cursor kehrt an die Home Position (links, erste Zeile) zurück. Ein verschobenes Display wird auf die Grundeinstellung zurückgesetzt.&lt;br /&gt;
&lt;br /&gt;
Ausführungszeit: 40µs bis 1.64ms&lt;br /&gt;
&lt;br /&gt;
===Entry mode: 0b000001is===&lt;br /&gt;
&lt;br /&gt;
Legt die Cursor Richtung sowie eine mögliche Verschiebung des Displays fest&lt;br /&gt;
* i = 1, Cursorposition bei Ausgabe eines Zeichens erhöhen&lt;br /&gt;
* i = 0, Cursorposition bei Ausgabe eines Zeichens vermindern&lt;br /&gt;
* s = 1, Display wird gescrollt, wenn der Cursor das Ende/Anfang, je nach Einstellung von i, erreicht hat.&lt;br /&gt;
&lt;br /&gt;
Ausführungszeit: 40µs&lt;br /&gt;
&lt;br /&gt;
===On/off control: 0b00001dcb===&lt;br /&gt;
&lt;br /&gt;
Display insgesamt ein/ausschalten; den Cursor ein/ausschalten; den Cursor auf blinken schalten/blinken aus. Wenn das Display ausgeschaltet wird, geht der Inhalt des Displays nicht verloren. Der vorher angezeigte Text wird nach wiedereinschalten erneut angezeigt.&lt;br /&gt;
Ist der Cursor eingeschaltet, aber Blinken ausgeschaltet, so wird der Cursor als Cursorzeile in Pixelzeile 8 dargestellt. Ist Blinken eingeschaltet, wird der Cursor als blinkendes ausgefülltes Rechteck dargestellt, welches abwechselnd mit dem Buchstaben an dieser Stelle angezeigt wird.&lt;br /&gt;
&lt;br /&gt;
* d = 0, Display aus&lt;br /&gt;
* d = 1, Display ein&lt;br /&gt;
* c = 0, Cursor aus&lt;br /&gt;
* c = 1, Cursor ein&lt;br /&gt;
* b = 0, Cursor blinken aus&lt;br /&gt;
* b = 1, Cursor blinken ein&lt;br /&gt;
 &lt;br /&gt;
Ausführungszeit: 40µs&lt;br /&gt;
&lt;br /&gt;
===Cursor/Scrollen: 0b0001srxx===&lt;br /&gt;
&lt;br /&gt;
Bewegt den Cursor oder scrollt das Display um eine Position entweder nach rechts oder nach links.&lt;br /&gt;
&lt;br /&gt;
* s = 1, Display scrollen&lt;br /&gt;
* s = 0, Cursor bewegen&lt;br /&gt;
* r = 1, nach rechts&lt;br /&gt;
* r = 0, nach links &lt;br /&gt;
&lt;br /&gt;
Ausführungszeit: 40µs&lt;br /&gt;
&lt;br /&gt;
===Konfiguration: 0b001dnfxx===&lt;br /&gt;
&lt;br /&gt;
Einstellen der Interface Art, Modus, Font&lt;br /&gt;
* d = 0, 4-Bit Interface&lt;br /&gt;
* d = 1, 8-Bit Interface&lt;br /&gt;
* n = 0, 1 zeilig&lt;br /&gt;
* n = 1, 2 zeilig&lt;br /&gt;
* f = 0, 5x7 Pixel&lt;br /&gt;
* f = 1, 5x11 Pixel&lt;br /&gt;
&lt;br /&gt;
Ausführungszeit: 40µs&lt;br /&gt;
&lt;br /&gt;
===Character RAM Address Set: 0b01aaaaaa===&lt;br /&gt;
&lt;br /&gt;
Mit diesem Kommando werden maximal 8 selbst definierte Zeichen definiert. Dazu wird der Character RAM Zeiger auf den Anfang des Character Generator (CG) RAM gesetzt und das Zeichen durch die Ausgabe von 8 Byte definiert. Der Adresszeiger wird nach Ausgabe jeder Pixelspalte (8 Bit) vom LCD selbst erhöht. Nach Beendigung der Zeichendefinition muss die Schreibposition explizit mit dem Kommando &amp;quot;Display RAM Address Set&amp;quot; wieder in den DD-RAM Bereich gesetzt werden.&lt;br /&gt;
&lt;br /&gt;
aaaaaa 6-bit CG RAM Adresse&lt;br /&gt;
&lt;br /&gt;
Ausführungszeit: 40µs&lt;br /&gt;
&lt;br /&gt;
===Display RAM Address Set: 0b1aaaaaaa===&lt;br /&gt;
&lt;br /&gt;
Den Cursor neu positionieren. Display Data (DD) Ram ist vom Character Generator (CG) Ram unabhängig. Der Adresszeiger wird bei Ausgabe eines Zeichens ins DD Ram automatisch erhöht. Das Display verhält sich so, als ob eine Zeile immer aus 40 logischen Zeichen besteht, von der, je nach konkretem Displaytyp (16 Zeichen, 20 Zeichen) immer nur ein Teil sichtbar ist.&lt;br /&gt;
&lt;br /&gt;
aaaaaaa 7-bit DD RAM Adresse. Auf 2-zeiligen Displays (und den meisten 16x1 Displays), kann die Adressangabe wie folgt interpretiert werden:&lt;br /&gt;
&lt;br /&gt;
1laaaaaa&lt;br /&gt;
* l = Zeilennummer (0 oder 1)&lt;br /&gt;
* a = 6-Bit Spaltennummer&lt;br /&gt;
&lt;br /&gt;
 --------------------------------&lt;br /&gt;
 DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0&lt;br /&gt;
 --- --- --- --- --- --- --- ---&lt;br /&gt;
  1   A   A   A   A   A   A   A &lt;br /&gt;
&lt;br /&gt;
Setzt die DDRAM Adresse:&lt;br /&gt;
&lt;br /&gt;
Wenn N = 0 (1 line display)&lt;br /&gt;
    AAAAAAA = &amp;quot;00h&amp;quot; - &amp;quot;4Fh&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Wenn N = 1 (2 line display) ((1x16))&lt;br /&gt;
    AAAAAAA = &amp;quot;00h&amp;quot; - &amp;quot;27h&amp;quot; Zeile 1. (0x80) &lt;br /&gt;
    AAAAAAA = &amp;quot;40h&amp;quot; - &amp;quot;67h&amp;quot; Zeile 2. (0xC0)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Ausführungszeit: 40µs&lt;br /&gt;
&lt;br /&gt;
==Einschub: Code aufräumen==&lt;br /&gt;
&lt;br /&gt;
Es wird Zeit, sich einmal etwas kritisch mit den bisher geschriebenen Funktionen auseinander zu setzen.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Portnamen aus dem Code herausziehen===&lt;br /&gt;
&lt;br /&gt;
Wenn wir die LCD-Funktionen einmal genauer betrachten, dann fällt sofort auf, dass über die Funktionen verstreut immer wieder das &#039;&#039;&#039;PORTD&#039;&#039;&#039; sowie einzelne Zahlen für die Pins an diesem Port auftauchen. Wenn das LCD an einem anderen Port betrieben werden soll, oder sich die Pin-Belegung ändert, dann muss an all diesen Stellen eine Anpassung vorgenommen werden. Dabei darf keine einzige Stelle übersehen werden, ansonsten würden die LCD-Funktionen nicht oder nicht vollständig funktionieren.&lt;br /&gt;
&lt;br /&gt;
Eine Möglichkeit, dem vorzubeugen, ist es, diese immer gleichbleibenden Dinge an den Anfang der LCD-Funktionen vorzuziehen:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;avrasm&amp;gt;&lt;br /&gt;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;&lt;br /&gt;
;;                 LCD-Routinen                ;;&lt;br /&gt;
;;                 ============                ;;&lt;br /&gt;
;;              (c)andreas-s@web.de            ;;&lt;br /&gt;
;;                                             ;;&lt;br /&gt;
;; 4bit-Interface                              ;;&lt;br /&gt;
;; DB4-DB7:       PD0-PD3                      ;;&lt;br /&gt;
;; RS:            PD4                          ;;&lt;br /&gt;
;; E:             PD5                          ;;&lt;br /&gt;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;&lt;br /&gt;
 &lt;br /&gt;
; .equ definiert ein Symbol und dessen Wert&lt;br /&gt;
.equ LCD_PORT = PORTD&lt;br /&gt;
.equ LCD_DDR  = DDRD&lt;br /&gt;
.equ PIN_E    = 5&lt;br /&gt;
.equ PIN_RS   = 4&lt;br /&gt;
&lt;br /&gt;
 ;sendet ein Datenbyte an das LCD&lt;br /&gt;
lcd_data:&lt;br /&gt;
           mov temp2, temp1             ; &amp;quot;Sicherungskopie&amp;quot; für&lt;br /&gt;
                                        ; die Übertragung des 2.Nibbles&lt;br /&gt;
           swap temp1                   ; Vertauschen&lt;br /&gt;
           andi temp1, 0b00001111       ; oberes Nibble auf Null setzen&lt;br /&gt;
           sbr temp1, 1&amp;lt;&amp;lt;PIN_RS         ; entspricht 0b00010000&lt;br /&gt;
           out LCD_PORT, temp1          ; ausgeben&lt;br /&gt;
           rcall lcd_enable             ; Enable-Routine aufrufen&lt;br /&gt;
                                        ; 2. Nibble, kein swap da es schon&lt;br /&gt;
                                        ; an der richtigen stelle ist&lt;br /&gt;
           andi temp2, 0b00001111       ; obere Hälfte auf Null setzen &lt;br /&gt;
           sbr temp2, 1&amp;lt;&amp;lt;PIN_RS         ; entspricht 0b00010000&lt;br /&gt;
           out LCD_PORT, temp2          ; ausgeben&lt;br /&gt;
           rcall lcd_enable             ; Enable-Routine aufrufen&lt;br /&gt;
           rcall delay50us              ; Delay-Routine aufrufen&lt;br /&gt;
           ret                          ; zurück zum Hauptprogramm&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
 ; sendet einen Befehl an das LCD&lt;br /&gt;
&lt;br /&gt;
lcd_command:                            ; wie lcd_data, nur RS=0&lt;br /&gt;
           mov temp2, temp1&lt;br /&gt;
           swap temp1&lt;br /&gt;
           andi temp1, 0b00001111&lt;br /&gt;
           out LCD_PORT, temp1&lt;br /&gt;
           rcall lcd_enable&lt;br /&gt;
           andi temp2, 0b00001111&lt;br /&gt;
           out LCD_PORT, temp2&lt;br /&gt;
           rcall lcd_enable&lt;br /&gt;
           rcall delay50us&lt;br /&gt;
           ret&lt;br /&gt;
 &lt;br /&gt;
 ; erzeugt den Enable-Puls&lt;br /&gt;
lcd_enable:&lt;br /&gt;
           sbi LCD_PORT, PIN_E          ; Enable high&lt;br /&gt;
           nop                          ; 3 Taktzyklen warten&lt;br /&gt;
           nop&lt;br /&gt;
           nop&lt;br /&gt;
           cbi LCD_PORT, PIN_E          ; Enable wieder low&lt;br /&gt;
           ret                          ; Und wieder zurück                     &lt;br /&gt;
 &lt;br /&gt;
 ; Pause nach jeder Übertragung&lt;br /&gt;
delay50us:                              ; 50us Pause&lt;br /&gt;
           ldi  temp1, $42&lt;br /&gt;
delay50us_:dec  temp1&lt;br /&gt;
           brne delay50us_&lt;br /&gt;
           ret                          ; wieder zurück&lt;br /&gt;
 &lt;br /&gt;
 ; Längere Pause für manche Befehle&lt;br /&gt;
delay5ms:                               ; 5ms Pause&lt;br /&gt;
           ldi  temp1, $21&lt;br /&gt;
WGLOOP0:   ldi  temp2, $C9&lt;br /&gt;
WGLOOP1:   dec  temp2&lt;br /&gt;
           brne WGLOOP1&lt;br /&gt;
           dec  temp1&lt;br /&gt;
           brne WGLOOP0&lt;br /&gt;
           ret                          ; wieder zurück&lt;br /&gt;
 &lt;br /&gt;
 ; Initialisierung: muss ganz am Anfang des Programms aufgerufen werden&lt;br /&gt;
lcd_init:&lt;br /&gt;
           ldi   temp1, 0xFF            ; alle Pins am Ausgabeport auf Ausgang&lt;br /&gt;
           out   LCD_DDR, temp1&lt;br /&gt;
&lt;br /&gt;
           ldi   temp3,6&lt;br /&gt;
powerupwait:&lt;br /&gt;
           rcall delay5ms&lt;br /&gt;
           dec   temp3&lt;br /&gt;
           brne  powerupwait&lt;br /&gt;
           ldi   temp1,    0b00000011   ; muss 3mal hintereinander gesendet&lt;br /&gt;
           out   LCD_PORT, temp1        ; werden zur Initialisierung&lt;br /&gt;
           rcall lcd_enable             ; 1&lt;br /&gt;
           rcall delay5ms&lt;br /&gt;
           rcall lcd_enable             ; 2&lt;br /&gt;
           rcall delay5ms&lt;br /&gt;
           rcall lcd_enable             ; und 3!&lt;br /&gt;
           rcall delay5ms&lt;br /&gt;
           ldi   temp1, 0b00000010      ; 4bit-Modus einstellen&lt;br /&gt;
           out   LCD_PORT, temp1&lt;br /&gt;
           rcall lcd_enable&lt;br /&gt;
           rcall delay5ms&lt;br /&gt;
           ldi   temp1, 0b00101000      ; 4 Bit, 2 Zeilen&lt;br /&gt;
           rcall lcd_command&lt;br /&gt;
           ldi   temp1, 0b00001100      ; Display on, Cursor off&lt;br /&gt;
           rcall lcd_command&lt;br /&gt;
           ldi   temp1, 0b00000100      ; endlich fertig&lt;br /&gt;
           rcall lcd_command&lt;br /&gt;
           ret&lt;br /&gt;
 &lt;br /&gt;
 ; Sendet den Befehl zur Löschung des Displays&lt;br /&gt;
lcd_clear:&lt;br /&gt;
           ldi   temp1, 0b00000001      ; Display löschen&lt;br /&gt;
           rcall lcd_command&lt;br /&gt;
           rcall delay5ms&lt;br /&gt;
           ret&lt;br /&gt;
&lt;br /&gt;
 ; Sendet den Befehl: Cursor Home&lt;br /&gt;
lcd_home:&lt;br /&gt;
           ldi   temp1, 0b00000010      ; Cursor Home&lt;br /&gt;
           rcall lcd_command&lt;br /&gt;
           rcall delay5ms&lt;br /&gt;
           ret&lt;br /&gt;
&amp;lt;/avrasm&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Mittels &#039;&#039;&#039;.equ&#039;&#039;&#039; werden mit dem Assembler Textersetzungen vereinbart. Der Assembler ersetzt alle Vorkomnisse des Quelltextes durch den zu ersetzenden Text. Dadurch ist es z.&amp;amp;nbsp;B. möglich, alle Vorkommnisse von &#039;&#039;&#039;PORTD&#039;&#039;&#039; durch &#039;&#039;&#039;LCD_PORT&#039;&#039;&#039; auszutauschen. Wird das LCD an einen anderen Port, z.&amp;amp;nbsp;B. &#039;&#039;&#039;PORTB&#039;&#039;&#039; gelegt, dann genügt es, die Zeilen&lt;br /&gt;
&amp;lt;avrasm&amp;gt;&lt;br /&gt;
.equ LCD_PORT = PORTD&lt;br /&gt;
.equ LCD_DDR  = DDRD&lt;br /&gt;
&amp;lt;/avrasm&amp;gt;&lt;br /&gt;
durch&lt;br /&gt;
&amp;lt;avrasm&amp;gt;&lt;br /&gt;
.equ LCD_PORT = PORTB&lt;br /&gt;
.equ LCD_DDR  = DDRB&lt;br /&gt;
&amp;lt;/avrasm&amp;gt;&lt;br /&gt;
zu ersetzen. Der Assembler sorgt dann dafür, dass diese Portänderung an den relevanten Stellen im Code über die Textersetzungen einfließt. Selbiges natürlich mit der Pin-Zuordnung.&lt;br /&gt;
&lt;br /&gt;
===Registerbenutzung===&lt;br /&gt;
&lt;br /&gt;
Bei diesen Funktionen mussten einige Register des Prozessors benutzt werden, um darin Zwischenergebnisse zu speichern bzw. zu bearbeiten.&lt;br /&gt;
&lt;br /&gt;
Beachtet werden muss dabei natürlich, dass es zu keinen Überschneidungen kommt. Solange nur jede Funktion jeweils für sich betrachtet wird, ist das kein Problem. In 20 oder 30 Code-Zeilen kann man gut verfolgen, welches Register wofür benutzt wird. Schwieriger wird es, wenn Funktionen wiederum andere Funktionen aufrufen, die ihrerseits wieder Funktionen aufrufen usw. Jede dieser Funktionen benutzt einige Register und mit zunehmender Programmgröße wird es immer schwieriger, zu verfolgen, welches Register zu welchem Zeitpunkt wofür benutzt wird.&lt;br /&gt;
&lt;br /&gt;
Speziell bei Basisfunktionen wie diesen LCD-Funktionen, ist es daher oft ratsam, dafür zu sorgen, dass jede Funktion die Register wieder in dem Zustand hinterlässt, indem sie sie auch vorgefunden hat. Wir benötigen dazu wieder den Stack, auf dem die Registerinhalte bei Betreten einer Funktion zwischengespeichert werden und von dem die Register bei Verlassen einer Funktion wiederhergestellt werden.&lt;br /&gt;
&lt;br /&gt;
Nehmen wir die Funktion&lt;br /&gt;
&amp;lt;avrasm&amp;gt;&lt;br /&gt;
 ; Sendet den Befehl zur Löschung des Displays&lt;br /&gt;
lcd_clear:&lt;br /&gt;
           ldi   temp1, 0b00000001      ; Display löschen&lt;br /&gt;
           rcall lcd_command&lt;br /&gt;
           rcall delay5ms&lt;br /&gt;
           ret&lt;br /&gt;
&amp;lt;/avrasm&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Diese Funktion verändert das Register temp1. Um das Register abzusichern, schreiben wir die Funktion um:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;avrasm&amp;gt;&lt;br /&gt;
 ; Sendet den Befehl zur Löschung des Displays&lt;br /&gt;
lcd_clear:&lt;br /&gt;
           push  temp1                  ; temp1 auf dem Stack sichern&lt;br /&gt;
           ldi   temp1, 0b00000001      ; Display löschen&lt;br /&gt;
           rcall lcd_command&lt;br /&gt;
           rcall delay5ms&lt;br /&gt;
           pop   temp1                  ; temp1 vom Stack wiederherstellen&lt;br /&gt;
           ret&lt;br /&gt;
&amp;lt;/avrasm&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Am besten hält man sich an die Regel: Jede Funktion ist dafür zuständig, die Register zu sichern und wieder herzustellen, die sie auch selbst verändert. &#039;&#039;&#039;lcd_clear&#039;&#039;&#039; ruft die Funktionen &#039;&#039;&#039;lcd_command&#039;&#039;&#039; und &#039;&#039;&#039;delay5ms&#039;&#039;&#039; auf. Wenn diese Funktionen selbst wieder Register verändern (und das tun sie), so ist es die Aufgabe dieser Funktionen, sich um die Sicherung und das Wiederherstellen der entsprechenden Register zu kümmern. &#039;&#039;&#039;lcd_clear&#039;&#039;&#039; sollte sich nicht darum kümmern müssen. Auf diese Weise ist das Schlimmste, das einem passieren kann, dass ein paar Register unnütz gesichert und wiederhergestellt werden. Das kostet zwar etwas Rechenzeit und etwas Speicherplatz auf dem Stack, ist aber immer noch besser als das andere Extrem: Nach einem Funktionsaufruf haben einige Register nicht mehr den Wert, den sie haben sollten, und das Programm rechnet mit falschen Zahlen weiter.&lt;br /&gt;
&lt;br /&gt;
===Lass den Assembler rechnen===&lt;br /&gt;
Betrachtet man den Code genauer, so fallen einige konstante Zahlenwerte auf (Das vorangestellte $ kennzeichnet die Zahl als Hexadezimalzahl):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;avrasm&amp;gt;&lt;br /&gt;
delay50us:                              ; 50us Pause&lt;br /&gt;
           ldi  temp1, $42&lt;br /&gt;
delay50us_:&lt;br /&gt;
           dec  temp1&lt;br /&gt;
           brne delay50us_&lt;br /&gt;
           ret                          ; wieder zurück&lt;br /&gt;
&amp;lt;/avrasm&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Der Code benötigt eine Warteschleife, die mindestens 50µs dauert. Die beiden Befehle innerhalb der Schleife benötigen 3 Takte: 1 Takt für den &#039;&#039;&#039;dec&#039;&#039;&#039; und der &#039;&#039;&#039;brne&#039;&#039;&#039; benötigt 2 Takte, wenn die Bedingung zutrifft, der Branch also genommen wird. Bei 4 Mhz werden also 4000000 / 3 * 50 / 1000000 = 66.6 Durchläufe durch die Schleife benötigt, um eine Verzögerungszeit von 50µs (0.000050 Sekunden) zu erreichen, hexadezimal ausgedrückt: $42.&lt;br /&gt;
&lt;br /&gt;
Der springende Punkt ist: Bei anderen Taktfrequenzen müsste man nun jedesmal diese Berechnung machen und den entsprechenden Zahlenwert einsetzen. Das kann aber der Assembler genausogut erledigen. Am Anfang des Codes wird ein Eintrag definiert, der die Taktfrequenz festlegt. Traditionell heißt dieser Eintrag &amp;lt;i&amp;gt;XTAL&amp;lt;/i&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;avrasm&amp;gt;&lt;br /&gt;
.equ XTAL  = 4000000&lt;br /&gt;
&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
delay50us:                              ; 50us Pause&lt;br /&gt;
           ldi  temp1, ( XTAL * 50 / 3 ) / 1000000&lt;br /&gt;
delay50us_:&lt;br /&gt;
           dec  temp1&lt;br /&gt;
           brne delay50us_&lt;br /&gt;
           ret                          ; wieder zurück&lt;br /&gt;
&amp;lt;/avrasm&amp;gt;&lt;br /&gt;
&lt;br /&gt;
An einer anderen Codestelle gibt es weitere derartige magische Zahlen:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;avrasm&amp;gt;&lt;br /&gt;
 ; Längere Pause für manche Befehle&lt;br /&gt;
delay5ms:                               ; 5ms Pause&lt;br /&gt;
           ldi  temp1, $21&lt;br /&gt;
WGLOOP0:   ldi  temp2, $C9&lt;br /&gt;
WGLOOP1:   dec  temp2&lt;br /&gt;
           brne WGLOOP1&lt;br /&gt;
           dec  temp1&lt;br /&gt;
           brne WGLOOP0&lt;br /&gt;
           ret                          ; wieder zurück&lt;br /&gt;
&amp;lt;/avrasm&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Was geht hier vor?&lt;br /&gt;
Die innere Schleife benötigt wieder 3 Takte pro Durchlauf. Bei $C9 = 201 Durchläufen werden also 201 * 3 = 603 Takte verbraucht. In der äußeren Schleife werden pro Durchlauf alo 1 + 603 + 1 + 2 = 607 Takte verbraucht. Da die äußere Schleife $21 = 33 mal wiederholt wird, werden 20031 Takte verbraucht. Bei 4Mhz benötigt der Prozessor 20031 / 4000000 = 0.005007 Sekunden, also 5 ms.&lt;br /&gt;
Wird der Wiederholwert für die innere Schleife bei $C9 belassen, so werden 4000000 / 607 * 5 / 1000 Wiederholungen der äusseren Schleife benötigt. Auch diese Berechnung kann wieder der Assembler übernehmen:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;avrasm&amp;gt;&lt;br /&gt;
 ; Längere Pause für manche Befehle&lt;br /&gt;
delay5ms:                               ; 5ms Pause&lt;br /&gt;
           ldi  temp1, ( XTAL * 5 / 607 ) / 1000&lt;br /&gt;
WGLOOP0:   ldi  temp2, $C9&lt;br /&gt;
WGLOOP1:   dec  temp2&lt;br /&gt;
           brne WGLOOP1&lt;br /&gt;
           dec  temp1&lt;br /&gt;
           brne WGLOOP0&lt;br /&gt;
           ret                          ; wieder zurück&lt;br /&gt;
&amp;lt;/avrasm&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ein kleines Problem kann bei der Verwendung dieses Verfahrens entstehen: Bei hohen Taktfrequenzen und großen Wartezeiten kann der berechnete Wert größer als 255 werden und man bekommt die Fehlermeldung &amp;quot;Operand(s) out of range&amp;quot; beim Assemblieren. Dieser Fall tritt zum Beispiel für obige Konstruktion bei einer Taktfrequenz von 16 MHz ein (genauer gesagt ab 15,3 MHz), während darunter XTAL beliebig geändert werden kann. Als einfachste Lösung bietet es sich an, die Zahl der Takte pro Schleifendurchlauf durch das Einfügen von &#039;&#039;&#039;nop&#039;&#039;&#039; zu erhöhen und die Berechnungsvorschrift anzupassen.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Ausgabe eines konstanten Textes ==&lt;br /&gt;
&lt;br /&gt;
Weiter oben wurde schon einmal ein Text ausgegeben. Dies geschah durch Ausgabe von einzelnen Zeichen. Das können wir auch anders machen. Wir können den Text im Speicher ablegen und eine Funktion schreiben, die die einzelnen Zeichen aus dem Speicher liest und aus gibt. Dabei stellt sich Frage: Woher &#039;weiß&#039; die Funktion eigentlich, wie lang der Text ist? Die Antwort darauf lautet: Sie kann es nicht wissen. Wir müssen irgendwelche Vereinbarungen treffen, woran die Funktion erkennen kann, dass der Text zu Ende ist. Im Wesentlichen werden dazu 2 Methoden benutzt:&lt;br /&gt;
* Der Text enthält ein spezielles Zeichen, welches das Ende des Textes markiert&lt;br /&gt;
* Wir speichern nicht nur den Text selbst, sondern auch die Länge des Textes&lt;br /&gt;
Mit einer der beiden Methoden ist es der Textausgabefunktion dann ein Leichtes, den Text vollständig auszugeben.&lt;br /&gt;
&lt;br /&gt;
Wir werden uns im Weiteren dafür entscheiden, ein spezielles Zeichen, eine 0 (den Wert 0, nicht das Zeichen &#039;0&#039;), dafür zu benutzen. Die Ausgabefunktionen werden dann etwas einfacher, als wenn bei der Ausgabe die Anzahl der bereits ausgegebenen Zeichen mitgezählt werden muss.&lt;br /&gt;
&lt;br /&gt;
Den Text selbst speichern wir im Flash-Speicher, also dort, wo auch das Programm gespeichert ist:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;avrasm&amp;gt;&lt;br /&gt;
 ; Einen konstanten Text aus dem Flash Speicher&lt;br /&gt;
 ; ausgeben. Der Text wird mit einer 0 beendet&lt;br /&gt;
lcd_flash_string:&lt;br /&gt;
           push  temp1&lt;br /&gt;
           push  ZH&lt;br /&gt;
           push  ZL&lt;br /&gt;
&lt;br /&gt;
lcd_flash_string_1:&lt;br /&gt;
           lpm   temp1, Z+&lt;br /&gt;
           cpi   temp1, 0&lt;br /&gt;
           breq  lcd_flash_string_2&lt;br /&gt;
           rcall  lcd_data&lt;br /&gt;
           rjmp  lcd_flash_string_1&lt;br /&gt;
&lt;br /&gt;
lcd_flash_string_2:&lt;br /&gt;
           pop   ZL&lt;br /&gt;
           pop   ZH&lt;br /&gt;
           pop   temp1&lt;br /&gt;
           ret&lt;br /&gt;
&amp;lt;/avrasm&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Diese Funktion benutzt den Befehl &#039;&#039;&#039;lpm&#039;&#039;&#039;, um das jeweils nächste Zeichen aus dem Flash Speicher in ein Register zur Weiterverarbeitung zu laden. Dazu wird der sog. &#039;&#039;&#039;Z-Pointer&#039;&#039;&#039; benutzt. So nennt man das Registerpaar &#039;&#039;&#039;R30&#039;&#039;&#039; und &#039;&#039;&#039;R31&#039;&#039;&#039;. Nach jedem Ladevorgang wird dabei durch den Befehl&lt;br /&gt;
&amp;lt;avrasm&amp;gt;&lt;br /&gt;
           lpm   temp1, Z+&lt;br /&gt;
&amp;lt;/avrasm&amp;gt;&lt;br /&gt;
dieser Z-Pointer um 1 erhöht. Mittels &#039;&#039;&#039;cpi&#039;&#039;&#039; wird das in das Register &#039;&#039;&#039;temp1&#039;&#039;&#039; geladene Zeichen mit 0 verglichen. &#039;&#039;&#039;cpi&#039;&#039;&#039; vergleicht die beiden Zahlen und merkt sich das Ergebnis in einem speziellen Register in Form von Status Bits. &#039;&#039;&#039;cpi&#039;&#039;&#039; zieht dabei ganz einfach die beiden Zahlen voneinander ab. Sind sie gleich, so kommt da als Ergebnis 0 heraus und &#039;&#039;&#039;cpi&#039;&#039;&#039; setzt daher konsequenter Weise das Zero-Flag, das anzeigt, dass die vorhergegangene Operation eine 0 als Ergebnis hatte.&#039;&#039;&#039;breq&#039;&#039;&#039; wertet diese Status-Bits aus. Wenn die vorhergegangene Operation ein 0-Ergebnis hatte, das Zero-Flag also gesetzt ist, dann wird ein Sprung zum angegebenen Label durchgeführt. In Summe bewirkt also die Sequenz&lt;br /&gt;
&amp;lt;avrasm&amp;gt;&lt;br /&gt;
           cpi   temp1, 0&lt;br /&gt;
           breq  lcd_flash_string_2&lt;br /&gt;
&amp;lt;/avrasm&amp;gt;&lt;br /&gt;
dass das gelesene Zeichen mit 0 verglichen wird und falls das gelesene&lt;br /&gt;
Zeichen tatsächlich 0 war, an der Stelle lcd_flash_string_2 weiter gemacht wird. Im anderen Fall wird die bereits geschriebene Funktion &#039;&#039;&#039;lcd_data&#039;&#039;&#039; aufgerufen, welche das Zeichen ausgibt. &#039;&#039;&#039;lcd_data&#039;&#039;&#039; erwartet dabei das Zeichen im Register &#039;&#039;&#039;temp1&#039;&#039;&#039;, genau in dem Register, in welches wir vorher mittels &#039;&#039;&#039;lpm&#039;&#039;&#039; das Zeichen geladen hatten.&lt;br /&gt;
&lt;br /&gt;
Das verwendende Programm sieht dann so aus:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;avrasm&amp;gt;&lt;br /&gt;
.include &amp;quot;m8def.inc&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
.def temp1 = r16&lt;br /&gt;
.def temp2 = r17&lt;br /&gt;
.def temp3 = r18&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
           ldi temp1, LOW(RAMEND)      ; LOW-Byte der obersten RAM-Adresse&lt;br /&gt;
           out SPL, temp1&lt;br /&gt;
           ldi temp1, HIGH(RAMEND)     ; HIGH-Byte der obersten RAM-Adresse&lt;br /&gt;
           out SPH, temp1&lt;br /&gt;
 &lt;br /&gt;
           rcall lcd_init              ; Display initialisieren&lt;br /&gt;
           rcall lcd_clear             ; Display löschen&lt;br /&gt;
 &lt;br /&gt;
           ldi ZL, LOW(text*2)         ; Adresse des Strings in den&lt;br /&gt;
           ldi ZH, HIGH(text*2)        ; Z-Pointer laden&lt;br /&gt;
&lt;br /&gt;
           rcall lcd_flash_string      ; Unterprogramm gibt String aus der&lt;br /&gt;
                                       ; durch den Z-Pointer adressiert wird&lt;br /&gt;
loop:&lt;br /&gt;
           rjmp loop&lt;br /&gt;
&lt;br /&gt;
text:&lt;br /&gt;
           .db &amp;quot;Test&amp;quot;,0                ; Stringkonstante, durch eine 0&lt;br /&gt;
                                       ; abgeschlossen  &lt;br /&gt;
&lt;br /&gt;
.include &amp;quot;lcd-routines.asm&amp;quot;            ; LCD Funktionen&lt;br /&gt;
&amp;lt;/avrasm&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Genaueres über die Verwendung unterschiedlicher Speicher findet sich im Kapitel [[AVR-Tutorial:_Speicher|Speicher]]&lt;br /&gt;
&lt;br /&gt;
==Zahlen ausgeben==&lt;br /&gt;
Um Zahlen, die beispielsweise in einem Register gespeichert sind, ausgeben zu können, ist es notwendig sich eine Textrepräsentierung der Zahl zu generieren. Die Zahl 123 wird also in den Text &amp;quot;123&amp;quot; umgewandelt welcher dann ausgegeben wird. Aus praktischen Gründen wird allerdings der Text nicht vollständig generiert (man müsste ihn ja irgendwo zwischenspeichern) sondern die einzelnen Buchstaben werden sofort ausgegeben, sobald sie bekannt sind.&lt;br /&gt;
&lt;br /&gt;
===Dezimal ausgeben===&lt;br /&gt;
Das Prinzip der Umwandlung ist einfach. Um herauszufinden wieviele Hunderter in der Zahl 123 enthalten sind, genügt es in einer Schleife immer wieder 100 von der Zahl abzuziehen und mitzuzählen wie oft dies gelang, bevor das Ergebnis negativ wurde. In diesem Fall lautet die Antwort: 1 mal, denn 123 - 100 macht 23. Versucht man erneut 100 anzuziehen, so ergibt sich eine negative Zahl.&lt;br /&gt;
Also muss eine &#039;1&#039; ausgeben werden. Die verbleibenden 23 werden weiter behandelt, indem festgestellt wird wieviele Zehner darin enthalten sind. Auch hier wiederum: In einer Schleife solange 10 abziehen, bis das Ergebnis negativ wurde. Konkret geht das 2 mal gut, also muss das nächste auszugebende Zeichen ein &#039;2&#039; sein. Damit verbleiben noch die Einer, welche direkt in das entsprechende Zeichen umgewandelt werden können. In Summe hat man also an das Display die Zeichen &#039;1&#039; &#039;2&#039; &#039;3&#039; ausgegeben.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;avrasm&amp;gt;&lt;br /&gt;
;**********************************************************************&lt;br /&gt;
;&lt;br /&gt;
; Eine 8 Bit Zahl ohne Vorzeichen ausgeben&lt;br /&gt;
;&lt;br /&gt;
; Übergabe:            Zahl im Register temp1&lt;br /&gt;
; veränderte Register: keine&lt;br /&gt;
;&lt;br /&gt;
lcd_number:&lt;br /&gt;
           push  temp1            ; die Funktion verändert temp1 und temp2,&lt;br /&gt;
           push  temp2            ; also sichern wir den Inhalt, um ihn am Ende&lt;br /&gt;
                                  ; wieder herstellen zu können&lt;br /&gt;
&lt;br /&gt;
           mov   temp2, temp1     ; das Register temp1 frei machen&lt;br /&gt;
                                  ; abzählen wieviele Hunderter&lt;br /&gt;
                                  ; in der Zahl enthalten sind&lt;br /&gt;
;** Hunderter ** &lt;br /&gt;
           ldi   temp1, &#039;0&#039;-1     ; temp1 mit ASCII &#039;0&#039;-1 vorladen&lt;br /&gt;
lcd_number_1:&lt;br /&gt;
           inc   temp1            ; ASCII erhöhen (somit ist nach dem ersten&lt;br /&gt;
                                  ; Durchlauf eine &#039;0&#039; in temp1)&lt;br /&gt;
           subi  temp2, 100       ; 100 abziehen&lt;br /&gt;
           brcc  lcd_number_1     ; ist dadurch kein Unterlauf entstanden?&lt;br /&gt;
                                  ; nein, dann zurück zu lcd_number_1&lt;br /&gt;
           subi  temp2, -100      ; 100 wieder dazuzählen, da die&lt;br /&gt;
                                  ; vorherhgehende Schleife 100 zuviel&lt;br /&gt;
                                  ; abgezogen hat&lt;br /&gt;
           rcall lcd_data         ; die Hunderterstelle ausgeben&lt;br /&gt;
&lt;br /&gt;
;** Zehner  **&lt;br /&gt;
           ldi   temp1, &#039;0&#039;-1     ; temp1 mit ASCII &#039;0&#039;-1 vorladen&lt;br /&gt;
lcd_number_2:&lt;br /&gt;
           inc   temp1            ; ASCII erhöhen (somit ist nach dem ersten&lt;br /&gt;
                                  ; Durchlauf eine &#039;0&#039; in temp1)&lt;br /&gt;
           subi  temp2, 10        ; 10 abziehen&lt;br /&gt;
           brcc  lcd_number_2     ; ist dadurch kein Unterlauf enstanden?&lt;br /&gt;
                                  ; nein, dann zurück zu lcd_number_2&lt;br /&gt;
           subi  temp2, -10       ; 10 wieder dazuzählen, da die&lt;br /&gt;
                                  ; vorherhgehende Schleife 10 zuviel&lt;br /&gt;
                                  ; abgezogen hat&lt;br /&gt;
           rcall lcd_data         ; die Zehnerstelle ausgeben&lt;br /&gt;
 &lt;br /&gt;
;** Einer **        &lt;br /&gt;
           ldi   temp1, &#039;0&#039;       ; die Zahl in temp2 ist jetzt im Bereich&lt;br /&gt;
           add   temp1, temp2     ; 0 bis 9. Einfach nur den ASCII Code für&lt;br /&gt;
           rcall lcd_data         ; &#039;0&#039; dazu addieren und wir erhalten dierekt&lt;br /&gt;
                                  ; den ASCII Code für die Ziffer&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
           pop   temp2            ; den gesicherten Inhalt von temp2 und temp1&lt;br /&gt;
           pop   temp1            ; wieder herstellen&lt;br /&gt;
           ret                    ; und zurück&lt;br /&gt;
&amp;lt;/avrasm&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Beachte: Diese Funktion benutzt wiederrum die Funktion &#039;&#039;&#039;lcd_data&#039;&#039;&#039;. Anders als bei den bisherigen Aufrufen ist &#039;&#039;&#039;lcd_number&#039;&#039;&#039; aber darauf angewiesen, dass &#039;&#039;&#039;lcd_data&#039;&#039;&#039; das Register &#039;&#039;&#039;temp2&#039;&#039;&#039; unangetastet lässt. Falls sie es noch nicht getan haben, dann ist das jetzt die perfekte Gelegenheit, &#039;&#039;&#039;lcd_data&#039;&#039;&#039; mit den entsprechenden &#039;&#039;&#039;push&#039;&#039;&#039; und &#039;&#039;&#039;pop&#039;&#039;&#039; Befehlen zu versehen. Sie sollten dies unbedingt zur Übung selbst machen. Am Ende muß die Funktion dann wie diese hier aussehen:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;avrasm&amp;gt;&lt;br /&gt;
 ;sendet ein Datenbyte an das LCD&lt;br /&gt;
lcd_data:&lt;br /&gt;
           push  temp2&lt;br /&gt;
           mov   temp2, temp1           ; &amp;quot;Sicherungskopie&amp;quot; für&lt;br /&gt;
                                        ; die Übertragung des 2.Nibbles&lt;br /&gt;
           swap  temp1                  ; Vertauschen&lt;br /&gt;
           andi  temp1, 0b00001111      ; oberes Nibble auf Null setzen&lt;br /&gt;
           sbr   temp1, 1&amp;lt;&amp;lt;PIN_RS       ; entspricht 0b00010000&lt;br /&gt;
           out   LCD_PORT, temp1        ; ausgeben&lt;br /&gt;
           rcall lcd_enable             ; Enable-Routine aufrufen&lt;br /&gt;
                                        ; 2. Nibble, kein swap da es schon&lt;br /&gt;
                                        ; an der richtigen stelle ist&lt;br /&gt;
           andi  temp2, 0b00001111      ; obere Hälfte auf Null setzen &lt;br /&gt;
           sbr   temp2, 1&amp;lt;&amp;lt;PIN_RS       ; entspricht 0b00010000&lt;br /&gt;
           out   LCD_PORT, temp2        ; ausgeben&lt;br /&gt;
           rcall lcd_enable             ; Enable-Routine aufrufen&lt;br /&gt;
           rcall delay50us              ; Delay-Routine aufrufen&lt;br /&gt;
           pop   temp2&lt;br /&gt;
           ret                          ; zurück zum Hauptprogramm&lt;br /&gt;
 &lt;br /&gt;
 ; sendet einen Befehl an das LCD&lt;br /&gt;
lcd_command:                            ; wie lcd_data, nur ohne RS zu setzen&lt;br /&gt;
           push  temp2&lt;br /&gt;
           mov   temp2, temp1&lt;br /&gt;
           swap  temp1&lt;br /&gt;
           andi  temp1, 0b00001111&lt;br /&gt;
           out   LCD_PORT, temp1&lt;br /&gt;
           rcall lcd_enable&lt;br /&gt;
           andi  temp2, 0b00001111&lt;br /&gt;
           out   LCD_PORT, temp2&lt;br /&gt;
           rcall lcd_enable&lt;br /&gt;
           rcall delay50us&lt;br /&gt;
           pop   temp2&lt;br /&gt;
           ret&lt;br /&gt;
&amp;lt;/avrasm&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Kurz zur Funktionsweise der Funktion &#039;&#039;&#039;lcd_number&#039;&#039;&#039;: Die Zahl in einem Register bewegt sich im Wertebereich 0 bis 255. Um herauszufinden, wie die Hunderterstelle lautet, zieht die Funktion einfach in einer Schleife immer wieder 100 von der Schleife ab, bis bei der Subtraktion ein Unterlauf, angezeigt durch das Setzen des Carry-Bits bei der Subtraktion, entsteht. Die Anzahl wird im Register &#039;&#039;&#039;temp1&#039;&#039;&#039; mitgezählt. Da dieses Register mit dem ASCII Code von &#039;0&#039; initialisiert wurde, und dieser ASCII Code bei jedem Schleifendurchlauf um 1 erhöht wird, können wir das Register &#039;&#039;&#039;temp1&#039;&#039;&#039; direkt zur Ausgabe des Zeichens für die Hunderterstelle durch die Funktion &#039;&#039;&#039;lcd_data&#039;&#039;&#039; benutzen. Völlig analog funktioniert auch die Ausgabe der Zehnerstelle.&lt;br /&gt;
&lt;br /&gt;
===Unterdrückung von führenden Nullen===&lt;br /&gt;
&lt;br /&gt;
Diese Funktion gibt jede Zahl im Register &#039;&#039;&#039;temp1&#039;&#039;&#039; immer mit 3 Stellen aus. Führende Nullen werden nicht unterdrückt. Möchte man dies ändern, so ist das ganz leicht möglich: Vor Ausgabe der Hunderterstelle muss lediglich überprüft werden, ob die Entsprechende Ausgabe eine &#039;0&#039; wäre. Ist sie das, so wird die Ausgabe übersprungen. Ist es allerdings eine Zahl 1..9, so muss sie der Zehner Stelle signalisieren, daß eine Prüfung auf eine &#039;0&#039; nicht stattfinden darf. Und dazu wird das T-Flag im SREG genutzt. Lediglich in der Einerstelle wird jede Ziffer wie errechnet ausgegeben.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;avrasm&amp;gt;&lt;br /&gt;
           ...&lt;br /&gt;
                                  ; die Hunderterstelle ausgeben, wenn&lt;br /&gt;
                                  ; sie nicht &#039;0&#039; ist&lt;br /&gt;
           clt                    ; T-Flag löschen&lt;br /&gt;
           cpi   temp1, &#039;0&#039;&lt;br /&gt;
           breq  lcd_number_1a&lt;br /&gt;
           rcall lcd_data         ; die Hunderterstelle ausgeben&lt;br /&gt;
           set                    ; T-Flag im SREG setzen da 100er Stelle eine&lt;br /&gt;
                                  ; 1..9 war&lt;br /&gt;
&lt;br /&gt;
lcd_number_1a:&lt;br /&gt;
           ...&lt;br /&gt;
&lt;br /&gt;
           ...&lt;br /&gt;
           brts  lcd_number_2a    ; Test auf &#039;0&#039; überspringen, da 100er eine&lt;br /&gt;
                                  ; 1..9 war (unbedingt anzeigen&lt;br /&gt;
                                  ; auch wenn der Zehner eine &#039;0&#039; ist)&lt;br /&gt;
           cpi   temp1, &#039;0&#039;       ; ansonsten Test auf &#039;0&#039;&lt;br /&gt;
           breq  lcd_number_2b&lt;br /&gt;
lcd_number_2a:        &lt;br /&gt;
           rcall lcd_data&lt;br /&gt;
lcd_number_2b:&lt;br /&gt;
           ...&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/avrasm&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Das Verfahren, die einzelnen Stellen durch Subtraktion zu bestimmen, ist bei kleinen Zahlen eine durchaus gängige Alternative. Vor allem dann, wenn keine hardwaremäßige Unterstützung für Multiplikation und Division zur Verfügung steht. Ansonsten könnte man die die einzelnen Ziffern auch durch Division bestimmen. Das Prinzip ist folgendes (beispielhaft an der Zahl 52783 gezeigt)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
   52783 / 10          -&amp;gt; 5278&lt;br /&gt;
   52783 - 5278 * 10   -&amp;gt;          3&lt;br /&gt;
&lt;br /&gt;
   5278 / 10           -&amp;gt; 527&lt;br /&gt;
   5278 - 527 * 10     -&amp;gt;          8&lt;br /&gt;
&lt;br /&gt;
   527 / 10            -&amp;gt; 52&lt;br /&gt;
   527 - 52 * 10       -&amp;gt;          7&lt;br /&gt;
&lt;br /&gt;
   52 / 10             -&amp;gt; 5&lt;br /&gt;
   52 - 5 * 10         -&amp;gt;          2&lt;br /&gt;
&lt;br /&gt;
   5 / 10              -&amp;gt; 0&lt;br /&gt;
   5 - 0 * 10          -&amp;gt;          5&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Das Prinzip ist also die Restbildung bei einer fortgesetzten Division durch 10, wobei die einzelnen Ziffern in umgekehrter Reihenfolge ihrer Wertigkeit entstehen. Dadurch hat man aber ein Problem: Damit die Zeichen in der richtigen Reihenfolge ausgegeben werden können, muß man sie meistens zwischenspeichern um sie in der richtigen Reihenfole ausgeben zu können. Wird die Zahl in einem Feld von immer gleicher Größe ausgegeben, dann kann man auch die Zahl von rechts nach links ausgeben (bei einem LCD ist das möglich).&lt;br /&gt;
&lt;br /&gt;
===Hexadezimal ausgeben===&lt;br /&gt;
&lt;br /&gt;
Zu guter letzt hier noch eine Funktion, die eine Zahl aus dem Register &#039;&#039;&#039;temp1&#039;&#039;&#039; in hexadezimaler Form ausgibt. Die Funktion weist keine Besonderheiten auf und sollte unmittelbar verständlich sein.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;avrasm&amp;gt;&lt;br /&gt;
;**********************************************************************&lt;br /&gt;
;&lt;br /&gt;
; Eine 8 Bit Zahl ohne Vorzeichen hexadezimal ausgeben&lt;br /&gt;
;&lt;br /&gt;
; Übergabe:            Zahl im Register temp1&lt;br /&gt;
; veränderte Register: keine&lt;br /&gt;
;&lt;br /&gt;
lcd_number_hex:&lt;br /&gt;
           swap  temp1&lt;br /&gt;
           rcall lcd_number_hex_digit&lt;br /&gt;
           swap  temp1&lt;br /&gt;
&lt;br /&gt;
lcd_number_hex_digit:&lt;br /&gt;
           push  temp1&lt;br /&gt;
&lt;br /&gt;
           andi  temp1, $0F&lt;br /&gt;
           cpi   temp1, 10&lt;br /&gt;
           brlt  lcd_number_hex_digit_1&lt;br /&gt;
           subi  temp1, -( &#039;A&#039; - &#039;9&#039; - 1 ) ; es wird subi mit negativer&lt;br /&gt;
                                           ; Konstante verwendet,&lt;br /&gt;
                                           ; weil es kein addi gibt&lt;br /&gt;
lcd_number_hex_digit_1:&lt;br /&gt;
           subi  temp1, -&#039;0&#039;               ; ditto&lt;br /&gt;
           rcall  lcd_data&lt;br /&gt;
           &lt;br /&gt;
           pop   temp1&lt;br /&gt;
           ret&lt;br /&gt;
&amp;lt;/avrasm&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Binär ausgeben===&lt;br /&gt;
Um die Sache komplett zu machen; Hier eine Routine mit der man eine 8 Bit-Zahl binär auf das LC-Display ausgeben kann:&lt;br /&gt;
&amp;lt;avrasm&amp;gt;&lt;br /&gt;
;**********************************************************************&lt;br /&gt;
;&lt;br /&gt;
; Eine 8 Bit Zahl ohne Vorzeichen binär ausgeben&lt;br /&gt;
;&lt;br /&gt;
; Übergabe:            Zahl im Register temp1&lt;br /&gt;
; veränderte Register: keine&lt;br /&gt;
&lt;br /&gt;
; eine Zahl aus dem Register temp1 binär ausgeben&lt;br /&gt;
lcd_number_bit:&lt;br /&gt;
	   push temp1		  ; temp1 gesichert&lt;br /&gt;
           push temp2&lt;br /&gt;
	   push temp3&lt;br /&gt;
&lt;br /&gt;
	   mov temp2, temp1;&lt;br /&gt;
&lt;br /&gt;
	   ldi temp3, 8;      ; 8 Bits werden ausgelesen&lt;br /&gt;
lcd_number_loop:           &lt;br /&gt;
	   dec temp3;&lt;br /&gt;
	   rol temp2;         ; Datenbits ins Carry geschoben ...&lt;br /&gt;
	   brcc lcd_number_bit_carryset_0; &lt;br /&gt;
	   brcs lcd_number_bit_carryset_1;&lt;br /&gt;
           rjmp lcd_number_loop;&lt;br /&gt;
&lt;br /&gt;
lcd_number_bit_carryset_0:	 &lt;br /&gt;
	   ldi temp1, &#039;0&#039;     ; Bit low ausgeben&lt;br /&gt;
           rcall lcd_data&lt;br /&gt;
	   tst temp3;&lt;br /&gt;
	   breq lcd_number_ende;&lt;br /&gt;
	   rjmp lcd_number_loop;&lt;br /&gt;
&lt;br /&gt;
lcd_number_bit_carryset_1:&lt;br /&gt;
           ldi temp1, &#039;1&#039;     ; Bit high ausgeben&lt;br /&gt;
           rcall lcd_data&lt;br /&gt;
           tst temp3;&lt;br /&gt;
	   breq lcd_number_ende;&lt;br /&gt;
	   rjmp lcd_number_loop;&lt;br /&gt;
&lt;br /&gt;
lcd_number_ende:&lt;br /&gt;
	   pop temp3&lt;br /&gt;
	   pop temp2&lt;br /&gt;
	   pop temp1&lt;br /&gt;
	   ret&lt;br /&gt;
&amp;lt;/avrasm&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Eine 16-Bit Zahl aus einem Registerpärchen ausgeben===&lt;br /&gt;
&lt;br /&gt;
Um eine 16 Bit Zahl auszugeben wird wieder das bewährte Schema benutzt die einzelnen Stellen durch Subtraktion abzuzählen. Da es sich hierbei allerdings um eine 16 Bit Zahl handelt, müssen die Subtraktionen als 16-Bit Arithmetik ausgeführt werden.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;avrasm&amp;gt;&lt;br /&gt;
;**********************************************************************&lt;br /&gt;
;&lt;br /&gt;
; Eine 16 Bit Zahl ohne Vorzeichen ausgeben&lt;br /&gt;
;&lt;br /&gt;
; Übergabe:            Zahl im Register temp2 (low Byte) / temp3 (high Byte)&lt;br /&gt;
; veränderte Register: keine&lt;br /&gt;
;&lt;br /&gt;
lcd_number16:&lt;br /&gt;
           push  temp1&lt;br /&gt;
           push  temp2&lt;br /&gt;
           push  temp3&lt;br /&gt;
&lt;br /&gt;
; ** Zehntausender **&lt;br /&gt;
           ldi   temp1, &#039;0&#039;-1&lt;br /&gt;
lcd_number1:&lt;br /&gt;
           inc   temp1&lt;br /&gt;
           subi  temp2, low(10000)&lt;br /&gt;
           sbci  temp3, high(10000)&lt;br /&gt;
           brcc  lcd_number1&lt;br /&gt;
           subi  temp2, low(-10000)&lt;br /&gt;
           sbci  temp3, high(-10000)&lt;br /&gt;
           rcall lcd_data&lt;br /&gt;
&lt;br /&gt;
; ** Tausender **&lt;br /&gt;
           ldi   temp1, &#039;0&#039;-1&lt;br /&gt;
lcd_number2:&lt;br /&gt;
           inc   temp1&lt;br /&gt;
           subi  temp2, low(1000)&lt;br /&gt;
           sbci  temp3, high(1000)&lt;br /&gt;
           brcc  lcd_number2&lt;br /&gt;
           subi  temp2, low(-1000)&lt;br /&gt;
           sbci  temp3, high(-1000)&lt;br /&gt;
           rcall lcd_data&lt;br /&gt;
&lt;br /&gt;
; ** Hunderter **&lt;br /&gt;
           ldi   temp1, &#039;0&#039;-1&lt;br /&gt;
lcd_number3:&lt;br /&gt;
           inc   temp1&lt;br /&gt;
           subi  temp2, low(100)&lt;br /&gt;
           sbci  temp3, high(100)&lt;br /&gt;
           brcc  lcd_number3&lt;br /&gt;
           subi  temp2, -100             ; + 100 High-Byte nicht mehr erforderlich&lt;br /&gt;
           rcall lcd_data&lt;br /&gt;
&lt;br /&gt;
; ** Zehner **&lt;br /&gt;
           ldi   temp1, &#039;0&#039;-1&lt;br /&gt;
lcd_number4:&lt;br /&gt;
           inc   temp1&lt;br /&gt;
           subi  temp2, 10&lt;br /&gt;
           brcc  lcd_number4&lt;br /&gt;
           subi  temp2, -10&lt;br /&gt;
           rcall lcd_data&lt;br /&gt;
&lt;br /&gt;
; ** Einer **&lt;br /&gt;
           ldi   temp1, &#039;0&#039;&lt;br /&gt;
           add   temp1, temp2&lt;br /&gt;
           rcall lcd_data&lt;br /&gt;
&lt;br /&gt;
; ** Stack aufräumen **&lt;br /&gt;
           pop   temp3&lt;br /&gt;
           pop   temp2&lt;br /&gt;
           pop   temp1&lt;br /&gt;
&lt;br /&gt;
           ret&lt;br /&gt;
&amp;lt;/avrasm&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Eine BCD Zahl ausgeben===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;avrasm&amp;gt;&lt;br /&gt;
;**********************************************************************&lt;br /&gt;
;&lt;br /&gt;
; Übergabe:            BCD Zahl in temp1&lt;br /&gt;
; veränderte Register: keine&lt;br /&gt;
;&lt;br /&gt;
lcd_bcd:&lt;br /&gt;
           push  temp2&lt;br /&gt;
          &lt;br /&gt;
           mov   temp2, temp1           ; temp1 sichern&lt;br /&gt;
           swap  temp1                  ; oberes mit unterem Nibble tauschen&lt;br /&gt;
           andi  temp1, 0b00001111      ; und &amp;quot;oberes&amp;quot; ausmaskieren&lt;br /&gt;
           subi  temp1, -0x30           ; in ASCII umrechnen&lt;br /&gt;
           rcall lcd_data               ; und ausgeben&lt;br /&gt;
           mov   temp1, temp2           ; ... danach unteres&lt;br /&gt;
           andi  temp1, 0b00001111&lt;br /&gt;
           subi  temp1, -0x30&lt;br /&gt;
           rcall lcd_data&lt;br /&gt;
           mov   temp1, temp2           ; temp1 rekonstruieren&lt;br /&gt;
&lt;br /&gt;
           pop   temp2&lt;br /&gt;
           ret &lt;br /&gt;
&amp;lt;/avrasm&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Benutzerdefinierte Zeichen ==&lt;br /&gt;
[[Bild:LCD_Character_Grid.png | framed | right| Zeichenraster für 1 Zeichen]]&lt;br /&gt;
&lt;br /&gt;
Das LCD erlaubt für spezielle Zeichen, welche sich nicht im Zeichensatz finden, eigene Zeichen zu definieren. Dazu werden die ersten 8 ASCII Codes reserviert, auf denen sich laut ASCII Tabelle spezielle Steuerzeichen befinden, die normalerweise keine sichtbare Anzeige hervorrufen sondern zur Steuerung von angeschlossenen Geräten dienen. Da diese Zeichen auf einem LCD keine Rolle spielen, können diese Zeichen benutzt werden um sich selbst Sonderzeichen zu erzeugen, die für die jeweilige Anwendung massgeschneidert sind.&lt;br /&gt;
&lt;br /&gt;
Das LCD stellt für jedes Zeichen eine 5*8 Matrix zur Verfügung. Um sich selbst massgeschneiderte Zeichen zu erstellen, ist es am einfachsten sich zunächst auf einem Stück karriertem Papier zu erstellen.&lt;br /&gt;
&lt;br /&gt;
[[Bild:BellCharacter.png | framed | right| Zeichenraster für ein Glockensymbol]]&lt;br /&gt;
&lt;br /&gt;
In diesem Raster markiert man sich dann diejenigen Pixel, die im fertigen Zeichen dunkel erscheinen sollen. Als Beispiel sei hier ein Glockensymbol gezeichnet, welches in einer Telefonapplikation zb als Kennzeichnung für einen Anruf dienen könnte.&lt;br /&gt;
&lt;br /&gt;
Eine Spalte in diesem Zeichen repräsentiert ein an das LCD zu übergebende Byte. Gesetzte Pixel stellen ein 1 Bit dar, nicht gesetzte Pixel sind ein 0-Bit. Das niedrigstwertige Bit einer Spalte befindet sich unten. Auf diese Art wird jede Spalte in eine Binärzahl übersetzt, und 5 Bytes repräsentieren ein komplettes Zeichen. Am Beispiel des Glockensymboles: Die 5 Bytes, welches das Symbol repräsentiern, lauten: 0x04 0x3C 0x46 0x3C 0x04&lt;br /&gt;
&lt;br /&gt;
Dem LCD wird die neue Definition übertragen, indem man dem LCD die &#039;Schreibposition&#039; mittels des Kommandos &#039;&#039;Character RAM Address Set&#039;&#039; in den Zeichensatzgenerator verschiebt. Danach werden die 5 Bytes ganz normal als Daten ausgegeben, die das LCD damit in seine Zeichensatztabelle schreibt.&lt;br /&gt;
&lt;br /&gt;
Durch die Wahl der Speicheradresse definiert man, welches Zeichen (0 bis 7) man eigentlich durch eine eigene Definition ersetzen will.&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|-  style=&amp;quot;background-color:#ffddcc&amp;quot;&lt;br /&gt;
! ASCII Code || Zeichensatzadresse&lt;br /&gt;
|-&lt;br /&gt;
| 0 || 0x00&lt;br /&gt;
|-&lt;br /&gt;
| 1 || 0x05&lt;br /&gt;
|-&lt;br /&gt;
| 2 || 0x0A&lt;br /&gt;
|-&lt;br /&gt;
| 3 || 0x0F&lt;br /&gt;
|-&lt;br /&gt;
| 4 || 0x14&lt;br /&gt;
|-&lt;br /&gt;
| 5 || 0x19&lt;br /&gt;
|-&lt;br /&gt;
| 6 || 0x1E&lt;br /&gt;
|-&lt;br /&gt;
| 7 || 0x23&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Nach erfolgter Definition des Zeichens, muss die Schreibposition wieder explizit in den DDRAM-Bereich gesetzt werden.&lt;br /&gt;
Danach kann ein entsprechendes Zeichen mit dem definierten ASCII Code ausgegeben werden, wobei das LCD die von uns definierte Pixelform zur Anzeige benutzt.&lt;br /&gt;
&lt;br /&gt;
Zuerst müssen natürlich erstmal die Zeichen definiert werden.&lt;br /&gt;
Dieses geschieht einmalig durch den Aufruf der Routine &amp;quot;lcd_load_user_chars&amp;quot;&lt;br /&gt;
unmittelbar nach der Initialisierung des LCD-Displays.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;avrasm&amp;gt;&lt;br /&gt;
           .&lt;br /&gt;
           .&lt;br /&gt;
           rcall lcd_init              ; Display initialisieren&lt;br /&gt;
           rcall lcd_load_user_chars   ; User Zeichen in das Display laden&lt;br /&gt;
           rcall lcd_clear             ; Display löschen&lt;br /&gt;
           .&lt;br /&gt;
           .&lt;br /&gt;
&amp;lt;/avrasm&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Durch diesen Aufruf werden die im Flash definierten Zeichen in den&lt;br /&gt;
GC-Ram übertragen. Diese Zeichen werden ab Adresse 0 im GC-Ram&lt;br /&gt;
gespeichert und sind danach wie jedes andere Zeichen nutzbar.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;avrasm&amp;gt;&lt;br /&gt;
           .&lt;br /&gt;
           .&lt;br /&gt;
           ldi   temp1, 0              ; Ausgabe des User-Char &amp;quot;A&amp;quot;&lt;br /&gt;
           rcall lcd_data&lt;br /&gt;
           ldi   temp1, 6              ; Ausgabe des User-Char &amp;quot;G&amp;quot;&lt;br /&gt;
           rcall lcd_data&lt;br /&gt;
           ldi   temp1, 5              ; Ausgabe des User-Char &amp;quot;E&amp;quot;&lt;br /&gt;
           rcall lcd_data&lt;br /&gt;
           ldi   temp1, 4              ; Ausgabe des User-Char &amp;quot;M&amp;quot;&lt;br /&gt;
           rcall lcd_data&lt;br /&gt;
           ldi   temp1, 3              ; Ausgabe des User-Char &amp;quot;-&amp;quot;&lt;br /&gt;
           rcall lcd_data&lt;br /&gt;
           ldi   temp1, 2              ; Ausgabe des User-Char &amp;quot;R&amp;quot;&lt;br /&gt;
           rcall lcd_data&lt;br /&gt;
           ldi   temp1, 1              ; Ausgabe des User-Char &amp;quot;V&amp;quot;&lt;br /&gt;
           rcall lcd_data&lt;br /&gt;
           ldi   temp1, 0              ; Ausgabe des User-Char &amp;quot;A&amp;quot;&lt;br /&gt;
           rcall lcd_data&lt;br /&gt;
           .&lt;br /&gt;
           .&lt;br /&gt;
&amp;lt;/avrasm&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Jetzt sollte der Schriftzug &amp;quot;AVR-MEGA&amp;quot;&lt;br /&gt;
verkehrt herum (180 Grad gedreht) erscheinen.&lt;br /&gt;
&lt;br /&gt;
Es fehlt natürlich noch die Laderoutine:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;avrasm&amp;gt;&lt;br /&gt;
;**********************************************************************&lt;br /&gt;
;&lt;br /&gt;
; Lädt User Zeichen in den GC-Ram des LCD bis Tabellenende (0xFF)&lt;br /&gt;
; gelesen wird. (max. 8 Zeichen können geladen werden)&lt;br /&gt;
;&lt;br /&gt;
; Übergabe:            -   &lt;br /&gt;
; veränderte Register: temp1, temp2, temp3, zh, zl&lt;br /&gt;
; Bemerkung:           ist einmalig nach lcd_init aufzurufen&lt;br /&gt;
;       &lt;br /&gt;
&lt;br /&gt;
lcd_load_user_chars:&lt;br /&gt;
        ldi    zl, LOW (ldc_user_char * 2) ; Adresse der Zeichentabelle&lt;br /&gt;
        ldi    zh, HIGH(ldc_user_char * 2) ; in den Z-Pointer laden&lt;br /&gt;
        clr    temp3                       ; aktuelles Zeichen = 0 &lt;br /&gt;
&lt;br /&gt;
lcd_load_user_chars_2:&lt;br /&gt;
        clr    temp2                       ; Linienzähler = 0&lt;br /&gt;
&lt;br /&gt;
lcd_load_user_chars_1:&lt;br /&gt;
        ldi    temp1, 0b01000000           ; Kommando:    0b01aaalll&lt;br /&gt;
        add    temp1, temp3                ; + akt. Zeichen  (aaa)&lt;br /&gt;
        add    temp1, temp2                ; + akt. Linie       (lll)&lt;br /&gt;
        rcall  lcd_command                 ; Kommando schreiben&lt;br /&gt;
&lt;br /&gt;
        lpm    temp1, Z+                   ; Zeichenline laden &lt;br /&gt;
        rcall  lcd_data                    ; ... und ausgeben&lt;br /&gt;
&lt;br /&gt;
        ldi    temp1, 0b01001000           ; Kommando:    0b01aa1lll         &lt;br /&gt;
        add    temp1, temp3                ; + akt. Zeichen  (aaa)       &lt;br /&gt;
        add    temp1, temp2                ; + akt. Linie       (lll)&lt;br /&gt;
        rcall  lcd_command&lt;br /&gt;
&lt;br /&gt;
        lpm    temp1, Z+                   ; Zeichenline laden&lt;br /&gt;
        rcall  lcd_data                    ; ... und ausgeben &lt;br /&gt;
        &lt;br /&gt;
        inc    temp2                       ; Linienzähler + 1&lt;br /&gt;
        cpi    temp2, 8                    ; 8 Linien fertig?&lt;br /&gt;
        brne   lcd_load_user_chars_1       ; nein, dann nächste Linie &lt;br /&gt;
		&lt;br /&gt;
        subi   temp3, -0x10                ; zwei Zeichen weiter (addi 0x10)&lt;br /&gt;
        lpm    temp1, Z                    ; nächste Linie laden&lt;br /&gt;
        cpi    temp1, 0xFF                 ; Tabellenende erreicht? &lt;br /&gt;
        brne   lcd_load_user_chars_2       ; nein, dann die nächsten&lt;br /&gt;
                                           ; zwei Zeichen&lt;br /&gt;
        ret&lt;br /&gt;
&amp;lt;/avrasm&amp;gt;&lt;br /&gt;
&lt;br /&gt;
... und die Zeichendefinition:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;avrasm&amp;gt;&lt;br /&gt;
ldc_user_char:&lt;br /&gt;
                              ;    Zeichen &lt;br /&gt;
                              ;   0       1&lt;br /&gt;
       .db 0b10001, 0b00100   ; @   @ ,   @&lt;br /&gt;
       .db 0b10001, 0b01010   ; @   @ ,  @ @&lt;br /&gt;
       .db 0b11111, 0b10001   ; @@@@@ , @   @&lt;br /&gt;
       .db 0b10001, 0b10001   ; @   @ , @   @&lt;br /&gt;
       .db 0b10001, 0b10001   ; @   @ , @   @&lt;br /&gt;
       .db 0b10001, 0b10001   ; @   @ , @   @&lt;br /&gt;
       .db 0b01110, 0b10001   ;  @@@  , @   @&lt;br /&gt;
       .db 0b00000, 0b00000   ;       , &lt;br /&gt;
&lt;br /&gt;
                              ;    Zeichen&lt;br /&gt;
                              ;   2       3&lt;br /&gt;
       .db 0b10001, 0b00000   ; @   @ , &lt;br /&gt;
       .db 0b01001, 0b00000   ;  @  @ , &lt;br /&gt;
       .db 0b00101, 0b00000   ;   @ @ , &lt;br /&gt;
       .db 0b11111, 0b11111   ; @@@@@ , @@@@@ &lt;br /&gt;
       .db 0b10001, 0b00000   ; @   @ , &lt;br /&gt;
       .db 0b10001, 0b00000   ; @   @ , &lt;br /&gt;
       .db 0b01111, 0b00000   ;  @@@@ , &lt;br /&gt;
       .db 0b00000, 0b00000   ;       ,  &lt;br /&gt;
&lt;br /&gt;
                              ;    Zeichen&lt;br /&gt;
                              ;   4       5&lt;br /&gt;
       .db 0b10001, 0b11111   ; @   @ , @@@@@  &lt;br /&gt;
       .db 0b10001, 0b00001   ; @   @ ,     @&lt;br /&gt;
       .db 0b10001, 0b00001   ; @   @ ,     @&lt;br /&gt;
       .db 0b10001, 0b01111   ; @   @ ,  @@@@ &lt;br /&gt;
       .db 0b10101, 0b00001   ; @ @ @ ,     @&lt;br /&gt;
       .db 0b11011, 0b00001   ; @@ @@ ,     @&lt;br /&gt;
       .db 0b10001, 0b11111   ; @   @ , @@@@@&lt;br /&gt;
       .db 0b00000, 0b00000   ;       ,  &lt;br /&gt;
&lt;br /&gt;
                              ;    Zeichen&lt;br /&gt;
                              ;   6       7&lt;br /&gt;
       .db 0b11110, 0b11111   ; @@@@  , @@@@@  &lt;br /&gt;
       .db 0b10001, 0b01010   ; @   @ ,  @ @ &lt;br /&gt;
       .db 0b10001, 0b00100   ; @   @ ,   @&lt;br /&gt;
       .db 0b11101, 0b01110   ; @@@ @ ,  @@@&lt;br /&gt;
       .db 0b00001, 0b00100   ;     @ ,   @&lt;br /&gt;
       .db 0b10001, 0b01010   ; @   @ ,  @ @&lt;br /&gt;
       .db 0b01110, 0b11111   ;  @@@  , @@@@@&lt;br /&gt;
       .db 0b00000, 0b00000   ;       ,  &lt;br /&gt;
&lt;br /&gt;
       ; End of Tab&lt;br /&gt;
       .db 0xFF, 0xFF&lt;br /&gt;
&amp;lt;/avrasm&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Der überarbeitete, komplette Code==&lt;br /&gt;
&lt;br /&gt;
Hier also die komplett überarbeitete Version der LCD Funktionen.&lt;br /&gt;
&lt;br /&gt;
Die für die Benutzung relevanten Funktionen&lt;br /&gt;
* &#039;&#039;&#039;lcd_init&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;lcd_clear&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;lcd_home&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;lcd_data&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;lcd_command&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;lcd_flash_string&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;lcd_number&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;lcd_number_hex&#039;&#039;&#039;&lt;br /&gt;
sind so ausgeführt, dass sie kein Register (ausser dem Statusregister &#039;&#039;&#039;SREG&#039;&#039;&#039;) verändern. Die bei manchen Funktionen notwendige Argumente werden immer im Register &#039;&#039;&#039;temp1&#039;&#039;&#039; übergeben, wobei &#039;&#039;&#039;temp1&#039;&#039;&#039; vom Usercode definiert werden muss.&lt;br /&gt;
&lt;br /&gt;
[[Media:lcd-routines.asm|Download lcd-routines.asm]]&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
{{Navigation_zurückhochvor|&lt;br /&gt;
zurücktext=Stack|&lt;br /&gt;
zurücklink=AVR-Tutorial: Stack|&lt;br /&gt;
hochtext=Inhaltsverzeichnis|&lt;br /&gt;
hochlink=AVR-Tutorial|&lt;br /&gt;
vortext=Interrupts|&lt;br /&gt;
vorlink=AVR-Tutorial: Interrupts}}&lt;br /&gt;
&lt;br /&gt;
[[Category:AVR-Tutorial]]&lt;br /&gt;
[[Category:LCD]]&lt;/div&gt;</summary>
		<author><name>Wuschelkuchen</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=NE555&amp;diff=57093</id>
		<title>NE555</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=NE555&amp;diff=57093"/>
		<updated>2011-05-07T20:27:01Z</updated>

		<summary type="html">&lt;p&gt;Wuschelkuchen: /* Pinbelegung */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== NE555 ==&lt;br /&gt;
=== Einleitung === &lt;br /&gt;
In diesem  Artikel soll der NE555 (und seine Artgenossen) beschrieben werden und anhand von Grundschaltungen und praktischen Beispielen dieses wunderbare vielfältige IC näher gebracht werden.&lt;br /&gt;
&lt;br /&gt;
=== Vorgeschichte ===&lt;br /&gt;
Der NE555 wurde von der Firma Signetics (später Philips Semi. bzw. NXP) in den 70er Jahren des 20. Jahrhunderts (also vor rund 40 Jahren) als universeller Timerbaustein entwickelt. Das Design des Chips übernahm der Schweizer Hans R. Camenzind, der zuvor bereits PLLs und VCOs entwickelt hatte.&lt;br /&gt;
&lt;br /&gt;
Dass dieser Timer, ganz wider der ursprünglichen Vermutung, ein Kassenschlager wurde, zeigte sich bereits ein Jahr nach der Markteinführung! Denn bereits nach nur einem Jahr hatten bereits acht andere Hersteller ebenfalls einen NE555 im Programm.&lt;br /&gt;
&lt;br /&gt;
=== Derivate (nicht vollständig!) ===&lt;br /&gt;
* NE555 ursprünglicher IC von diversen Herstellern&lt;br /&gt;
* NE556 zwei NE555 in einem Gehäuse, ebenfalls von diversen Herstellern&lt;br /&gt;
* MC1455 Nachbau von Motorola bzw. On Semi&lt;br /&gt;
* LM555 Nachbau von National Semi&lt;br /&gt;
* KA555 Nachbau von Fairchild Semi&lt;br /&gt;
* SN72555 Nachbau von Texas Instruments&lt;br /&gt;
* TLC555 CMOS-Variante von Texas Instruments&lt;br /&gt;
* LMC555 weitere CMOS-Variante von National Semi&lt;br /&gt;
* ICM7555 CMOS-Variante von diversen Herstellern (z.B. Intersil, Philips, Maxim)&lt;br /&gt;
* ICM7556 duale CMOS-Variante von diversen Herstellern&lt;br /&gt;
* und viele mehr&lt;br /&gt;
&lt;br /&gt;
== Technik des NE555 ==&lt;br /&gt;
=== Interner Aufbau ===&lt;br /&gt;
Der NE555 besteht aus fünf Funktionsblöcken, die mit 23 Transistoren, 2 Dioden und 16 Widerständen realisiert wurden.&lt;br /&gt;
* Spannungsteiler, der die Eingangsspannung auf 1/3 und 2/3 der Versorgungsspannung teilt&lt;br /&gt;
* zwei Komparatoren, die auf 1/3 bzw 2/3 der Versorgungsspannung (durch den Spannungsteiler) liegen und mit dem externen Trigger bzw. Threshold verbunden sind&lt;br /&gt;
* ein RS-Flipflop mit Reset, welches durch die beiden Komparatoren gesteuert wird&lt;br /&gt;
* ein Gegentakt-Ausgang hinter dem Flipflop, der beim ursprünglichem NE555 mit bis zu 200mA belastet werden kann&lt;br /&gt;
* ein Transistor, der synchron zum Ausgang schaltet&lt;br /&gt;
&lt;br /&gt;
=== Pinbelegung ===&lt;br /&gt;
# GND: Masse des ICs&lt;br /&gt;
# Trigger: Setzen des Flipflops bei &amp;lt; 1/3 der Versorgungsspannung&lt;br /&gt;
# Ausgang: Gegentaktendstufe mit bis zu 200mA Ausgangsstrom&lt;br /&gt;
# Reset: Rücksetzen des ICs bei &#039;LOW&#039;-Pegel&lt;br /&gt;
# Control Voltage: Möglichkeit, die Schaltschwellen zu verändern&lt;br /&gt;
# Threshold: Rücksetzen des Flipflops bei &amp;gt; 2/3 der Versorgungsspannung&lt;br /&gt;
# Discharge: Open-Collector-Ausgang, synchron zur Gegentaktendstufe&lt;br /&gt;
# Vcc: Positive Versorgungsspannung&lt;br /&gt;
&lt;br /&gt;
== Beispielschaltungen ==&lt;br /&gt;
=== Kippstufen ===&lt;br /&gt;
==== Monostabile Kippstufe ====&lt;br /&gt;
==== Nachtriggerbare monostabile Kippstufe ====&lt;br /&gt;
==== Astabile Kippstufe ====&lt;br /&gt;
===== Rechteckgenerator =====&lt;br /&gt;
===== Rechteckgenerator mit einstellbarem Puls-Pausen-Verhältnis (PWM) =====&lt;br /&gt;
=== Signalgeneratoren ===&lt;br /&gt;
==== Symmetrischer Taktgeber (Wechselschaltung) ====&lt;br /&gt;
==== Sägezahngenerator ====&lt;br /&gt;
==== Dreiecksgenerator ====&lt;br /&gt;
=== Signalwandlung ===&lt;br /&gt;
==== Schmitt-Trigger ====&lt;br /&gt;
=== Ladungspumpe ===&lt;br /&gt;
==== Positiv (Spannungsverdopplung) ====&lt;br /&gt;
==== Negativ (Invertierung) ====&lt;/div&gt;</summary>
		<author><name>Wuschelkuchen</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=NE555&amp;diff=57092</id>
		<title>NE555</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=NE555&amp;diff=57092"/>
		<updated>2011-05-07T20:23:00Z</updated>

		<summary type="html">&lt;p&gt;Wuschelkuchen: /* Derivate (nicht vollständig!) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== NE555 ==&lt;br /&gt;
=== Einleitung === &lt;br /&gt;
In diesem  Artikel soll der NE555 (und seine Artgenossen) beschrieben werden und anhand von Grundschaltungen und praktischen Beispielen dieses wunderbare vielfältige IC näher gebracht werden.&lt;br /&gt;
&lt;br /&gt;
=== Vorgeschichte ===&lt;br /&gt;
Der NE555 wurde von der Firma Signetics (später Philips Semi. bzw. NXP) in den 70er Jahren des 20. Jahrhunderts (also vor rund 40 Jahren) als universeller Timerbaustein entwickelt. Das Design des Chips übernahm der Schweizer Hans R. Camenzind, der zuvor bereits PLLs und VCOs entwickelt hatte.&lt;br /&gt;
&lt;br /&gt;
Dass dieser Timer, ganz wider der ursprünglichen Vermutung, ein Kassenschlager wurde, zeigte sich bereits ein Jahr nach der Markteinführung! Denn bereits nach nur einem Jahr hatten bereits acht andere Hersteller ebenfalls einen NE555 im Programm.&lt;br /&gt;
&lt;br /&gt;
=== Derivate (nicht vollständig!) ===&lt;br /&gt;
* NE555 ursprünglicher IC von diversen Herstellern&lt;br /&gt;
* NE556 zwei NE555 in einem Gehäuse, ebenfalls von diversen Herstellern&lt;br /&gt;
* MC1455 Nachbau von Motorola bzw. On Semi&lt;br /&gt;
* LM555 Nachbau von National Semi&lt;br /&gt;
* KA555 Nachbau von Fairchild Semi&lt;br /&gt;
* SN72555 Nachbau von Texas Instruments&lt;br /&gt;
* TLC555 CMOS-Variante von Texas Instruments&lt;br /&gt;
* LMC555 weitere CMOS-Variante von National Semi&lt;br /&gt;
* ICM7555 CMOS-Variante von diversen Herstellern (z.B. Intersil, Philips, Maxim)&lt;br /&gt;
* ICM7556 duale CMOS-Variante von diversen Herstellern&lt;br /&gt;
* und viele mehr&lt;br /&gt;
&lt;br /&gt;
== Technik des NE555 ==&lt;br /&gt;
=== Interner Aufbau ===&lt;br /&gt;
Der NE555 besteht aus fünf Funktionsblöcken, die mit 23 Transistoren, 2 Dioden und 16 Widerständen realisiert wurden.&lt;br /&gt;
* Spannungsteiler, der die Eingangsspannung auf 1/3 und 2/3 der Versorgungsspannung teilt&lt;br /&gt;
* zwei Komparatoren, die auf 1/3 bzw 2/3 der Versorgungsspannung (durch den Spannungsteiler) liegen und mit dem externen Trigger bzw. Threshold verbunden sind&lt;br /&gt;
* ein RS-Flipflop mit Reset, welches durch die beiden Komparatoren gesteuert wird&lt;br /&gt;
* ein Gegentakt-Ausgang hinter dem Flipflop, der beim ursprünglichem NE555 mit bis zu 200mA belastet werden kann&lt;br /&gt;
* ein Transistor, der synchron zum Ausgang schaltet&lt;br /&gt;
&lt;br /&gt;
=== Pinbelegung ===&lt;br /&gt;
# GND: Masse des ICs&lt;br /&gt;
# Trigger: Setzen des Flipflops bei &amp;lt; 1/3 der Versorgungsspannung&lt;br /&gt;
# Ausgang: Gegentaktendstufe mit bis zu 200mA Ausgangsstrom&lt;br /&gt;
# Reset: Rücksetzen des ICs bei &#039;LOW&#039;-Pegel&lt;br /&gt;
# Control Voltage: Möglichkeit die Schaltschwellen zu verändern&lt;br /&gt;
# Threshold: Rücksetzen des Flipflops bei &amp;gt; 2/3 der Versorgungsspannung&lt;br /&gt;
# Discharge: Transistorausgang synchron zur Gegentaktendstufe&lt;br /&gt;
# Vcc: Positive Versorgungsspannung&lt;br /&gt;
&lt;br /&gt;
== Beispielschaltungen ==&lt;br /&gt;
=== Kippstufen ===&lt;br /&gt;
==== Monostabile Kippstufe ====&lt;br /&gt;
==== Nachtriggerbare monostabile Kippstufe ====&lt;br /&gt;
==== Astabile Kippstufe ====&lt;br /&gt;
===== Rechteckgenerator =====&lt;br /&gt;
===== Rechteckgenerator mit einstellbarem Puls-Pausen-Verhältnis (PWM) =====&lt;br /&gt;
=== Signalgeneratoren ===&lt;br /&gt;
==== Symmetrischer Taktgeber (Wechselschaltung) ====&lt;br /&gt;
==== Sägezahngenerator ====&lt;br /&gt;
==== Dreiecksgenerator ====&lt;br /&gt;
=== Signalwandlung ===&lt;br /&gt;
==== Schmitt-Trigger ====&lt;br /&gt;
=== Ladungspumpe ===&lt;br /&gt;
==== Positiv (Spannungsverdopplung) ====&lt;br /&gt;
==== Negativ (Invertierung) ====&lt;/div&gt;</summary>
		<author><name>Wuschelkuchen</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=NE555&amp;diff=57085</id>
		<title>NE555</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=NE555&amp;diff=57085"/>
		<updated>2011-05-07T16:48:10Z</updated>

		<summary type="html">&lt;p&gt;Wuschelkuchen: /* Vorgeschichte */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== NE555 ==&lt;br /&gt;
=== Einleitung === &lt;br /&gt;
In diesem  Artikel soll der NE555 (und seine Artgenossen) beschrieben werden und anhand von Grundschaltungen und praktischen Beispielen dieses wunderbare vielfältige IC näher gebracht werden.&lt;br /&gt;
&lt;br /&gt;
=== Vorgeschichte ===&lt;br /&gt;
Der NE555 wurde von der Firma Signetics (später Philips Semi. bzw. NXP) in den 70er Jahren des 19. Jahrhunderts (also vor rund 40 Jahren) als universeller Timerbaustein entwickelt. Das Design des Chips übernahm der Schweizer Hans Camenzid, der zuvor bereits PLLs und VCOs entwickelt hatte.&lt;br /&gt;
&lt;br /&gt;
Dass dieser Timer, ganz wider der ursprünglichen Vermutung, ein Kassenschlager wurde, zeigte sich bereits ein Jahr nach der Markteinführung! Denn bereits nach nur einem Jahr hatten bereits acht andere Hersteller ebenfalls einen NE555 im Programm.&lt;br /&gt;
&lt;br /&gt;
=== Derivate (nicht vollständig!) ===&lt;br /&gt;
* NE555 ursprünglicher IC von diversen Herstellern&lt;br /&gt;
* NE556 zwei NE555 in einem Gehäuse, ebenfalls von diversen Herstellern&lt;br /&gt;
* MC1455 Nachbau von Motorola bzw. On Semi&lt;br /&gt;
* LM555 Nachbau von National Semi&lt;br /&gt;
* KA555 Nachbau von Faichild Semi&lt;br /&gt;
* SN72555 Nachbau von Texas Instruments&lt;br /&gt;
* TLC555 CMOS-Variante von Texas Instruments&lt;br /&gt;
* LMC555 weitere CMOS-Variante von National Semi&lt;br /&gt;
* ICM7555 CMOS-Variante von diversen Herstellern (z.B. ???)&lt;br /&gt;
* ICM7556 duale CMOS-Variante von diversen Herstellern&lt;br /&gt;
* und viele mehr&lt;br /&gt;
&lt;br /&gt;
== Technik des NE555 ==&lt;br /&gt;
=== Interner Aufbau ===&lt;br /&gt;
Der NE555 besteht aus fünf Funktionsblöcken, die mit 23 Transistoren, 2 Dioden und 16 Widerständen realisiert wurden.&lt;br /&gt;
* Spannungsteiler, der die Eingangsspannung auf 1/3 und 2/3 der Versorgungsspannung teilt&lt;br /&gt;
* zwei Komparatoren, die auf 1/3 bzw 2/3 der Versorgungsspannung (durch den Spannungsteiler) liegen und mit dem externen Trigger bzw. Threshold verbunden sind&lt;br /&gt;
* ein RS-Flipflop mit Reset, welches durch die beiden Komparatoren gesteuert wird&lt;br /&gt;
* ein Gegentakt-Ausgang hinter dem Flipflop, der beim ursprünglichem NE555 mit bis zu 200mA belastet werden kann&lt;br /&gt;
* ein Transistor, der synchron zum Ausgang schaltet&lt;br /&gt;
&lt;br /&gt;
=== Pinbelegung ===&lt;br /&gt;
# GND: Masse des ICs&lt;br /&gt;
# Trigger: Setzten des Flipflops bei &amp;lt; 1/3 der Versorgungsspannung&lt;br /&gt;
# Ausgang: Gegentaktendstufe mit bis zu 200mA Ausgangsstrom&lt;br /&gt;
# Reset: Rücksetzten des ICs bei &#039;LOW&#039;-Pegel&lt;br /&gt;
# Control Voltage: Möglichkeit die Schaltschwellen zu verändern&lt;br /&gt;
# Threshold: Rücksetzten des Flipflops bei &amp;gt; 2/3 der Versorgungsspannung&lt;br /&gt;
# Discharge: Transistorausgang synchron zur Gegentaktendstufe&lt;br /&gt;
# Vcc: Positive Versorgungsspannung&lt;br /&gt;
&lt;br /&gt;
== Beispielschaltungen ==&lt;br /&gt;
=== Kippstufen ===&lt;br /&gt;
==== Monostabile Kippstufe ====&lt;br /&gt;
==== Nachtriggerbare monostabile Kippstufe ====&lt;br /&gt;
==== Astabile Kippstufe ====&lt;br /&gt;
===== Rechteckgenerator =====&lt;br /&gt;
===== Rechteckgenerator mit einstellbarem Puls-Pausen-Verhältnis (PWM) =====&lt;br /&gt;
=== Signalgeneratoren ===&lt;br /&gt;
==== Symmetrischer Taktgeber (Wechselschaltung) ====&lt;br /&gt;
==== Sägezahngenerator ====&lt;br /&gt;
==== Dreiecksgenerator ====&lt;br /&gt;
=== Signalwandlung ===&lt;br /&gt;
==== Schmitt-Trigger ====&lt;br /&gt;
=== Ladungspumpe ===&lt;br /&gt;
==== Positiv (Spannungsverdopplung) ====&lt;br /&gt;
==== Negativ (Invertierung) ====&lt;/div&gt;</summary>
		<author><name>Wuschelkuchen</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=NE555&amp;diff=57084</id>
		<title>NE555</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=NE555&amp;diff=57084"/>
		<updated>2011-05-07T16:46:56Z</updated>

		<summary type="html">&lt;p&gt;Wuschelkuchen: /* Einleitung */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== NE555 ==&lt;br /&gt;
=== Einleitung === &lt;br /&gt;
In diesem  Artikel soll der NE555 (und seine Artgenossen) beschrieben werden und anhand von Grundschaltungen und praktischen Beispielen dieses wunderbare vielfältige IC näher gebracht werden.&lt;br /&gt;
&lt;br /&gt;
=== Vorgeschichte ===&lt;br /&gt;
Der NE555 wurde von der Firma Signetics (später Philips Semi. bzw NXP) in den 70 Jahren des 19. Jahrhunderts (also vor rund 40 Jahren) als universeller Timerbaustein entwickelt. Das Design des Chips übernahm der Schweizer Hans Camenzid, der zuvor bereits PLLs und VCOs entwickelt hatte.&lt;br /&gt;
&lt;br /&gt;
Das dieser Timer, ganz wider der ursprünglichen Vermutung, ein Kassenschlager wurde, zeigte sich bereits ein Jahr nach der Markteinführung! Denn bereits nach nur einem Jahr hatten bereits acht andere Hersteller ebenfalls einen NE555 im Program.&lt;br /&gt;
&lt;br /&gt;
=== Derivate (nicht vollständig!) ===&lt;br /&gt;
* NE555 ursprünglicher IC von diversen Herstellern&lt;br /&gt;
* NE556 zwei NE555 in einem Gehäuse, ebenfalls von diversen Herstellern&lt;br /&gt;
* MC1455 Nachbau von Motorola bzw. On Semi&lt;br /&gt;
* LM555 Nachbau von National Semi&lt;br /&gt;
* KA555 Nachbau von Faichild Semi&lt;br /&gt;
* SN72555 Nachbau von Texas Instruments&lt;br /&gt;
* TLC555 CMOS-Variante von Texas Instruments&lt;br /&gt;
* LMC555 weitere CMOS-Variante von National Semi&lt;br /&gt;
* ICM7555 CMOS-Variante von diversen Herstellern (z.B. ???)&lt;br /&gt;
* ICM7556 duale CMOS-Variante von diversen Herstellern&lt;br /&gt;
* und viele mehr&lt;br /&gt;
&lt;br /&gt;
== Technik des NE555 ==&lt;br /&gt;
=== Interner Aufbau ===&lt;br /&gt;
Der NE555 besteht aus fünf Funktionsblöcken, die mit 23 Transistoren, 2 Dioden und 16 Widerständen realisiert wurden.&lt;br /&gt;
* Spannungsteiler, der die Eingangsspannung auf 1/3 und 2/3 der Versorgungsspannung teilt&lt;br /&gt;
* zwei Komparatoren, die auf 1/3 bzw 2/3 der Versorgungsspannung (durch den Spannungsteiler) liegen und mit dem externen Trigger bzw. Threshold verbunden sind&lt;br /&gt;
* ein RS-Flipflop mit Reset, welches durch die beiden Komparatoren gesteuert wird&lt;br /&gt;
* ein Gegentakt-Ausgang hinter dem Flipflop, der beim ursprünglichem NE555 mit bis zu 200mA belastet werden kann&lt;br /&gt;
* ein Transistor, der synchron zum Ausgang schaltet&lt;br /&gt;
&lt;br /&gt;
=== Pinbelegung ===&lt;br /&gt;
# GND: Masse des ICs&lt;br /&gt;
# Trigger: Setzten des Flipflops bei &amp;lt; 1/3 der Versorgungsspannung&lt;br /&gt;
# Ausgang: Gegentaktendstufe mit bis zu 200mA Ausgangsstrom&lt;br /&gt;
# Reset: Rücksetzten des ICs bei &#039;LOW&#039;-Pegel&lt;br /&gt;
# Control Voltage: Möglichkeit die Schaltschwellen zu verändern&lt;br /&gt;
# Threshold: Rücksetzten des Flipflops bei &amp;gt; 2/3 der Versorgungsspannung&lt;br /&gt;
# Discharge: Transistorausgang synchron zur Gegentaktendstufe&lt;br /&gt;
# Vcc: Positive Versorgungsspannung&lt;br /&gt;
&lt;br /&gt;
== Beispielschaltungen ==&lt;br /&gt;
=== Kippstufen ===&lt;br /&gt;
==== Monostabile Kippstufe ====&lt;br /&gt;
==== Nachtriggerbare monostabile Kippstufe ====&lt;br /&gt;
==== Astabile Kippstufe ====&lt;br /&gt;
===== Rechteckgenerator =====&lt;br /&gt;
===== Rechteckgenerator mit einstellbarem Puls-Pausen-Verhältnis (PWM) =====&lt;br /&gt;
=== Signalgeneratoren ===&lt;br /&gt;
==== Symmetrischer Taktgeber (Wechselschaltung) ====&lt;br /&gt;
==== Sägezahngenerator ====&lt;br /&gt;
==== Dreiecksgenerator ====&lt;br /&gt;
=== Signalwandlung ===&lt;br /&gt;
==== Schmitt-Trigger ====&lt;br /&gt;
=== Ladungspumpe ===&lt;br /&gt;
==== Positiv (Spannungsverdopplung) ====&lt;br /&gt;
==== Negativ (Invertierung) ====&lt;/div&gt;</summary>
		<author><name>Wuschelkuchen</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=Reichelt-Wishlist&amp;diff=50864</id>
		<title>Reichelt-Wishlist</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=Reichelt-Wishlist&amp;diff=50864"/>
		<updated>2010-09-24T14:59:30Z</updated>

		<summary type="html">&lt;p&gt;Wuschelkuchen: /* Controller/FPGA/CPLD */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Reichelt Wunschliste ==&lt;br /&gt;
&lt;br /&gt;
Auf dieser Seite können Wünsche zur Erweiterung des Reichelt-Lieferprogramms eingetragen werden. Es ist keine offizelle Wunschliste von Reichelt und es ist nicht bekannt, ob Reichelt-Mitarbeiter diese Seite regelmässig sichten. Reichelt sollte sicherheitshalber regelmäßig angeschrieben werden, damit diese Liste nicht in Vergessenheit gerät.&lt;br /&gt;
&lt;br /&gt;
Damit sich die beliebtesten Artikel herauskristallisieren, macht jeder einfach &#039;&#039;&#039;einen&#039;&#039;&#039; virtuellen Strich dahinter: | (Windows: ALT-GR Taste und &amp;lt; Taste drücken, Mac OS X: Alt-Taste und 7 Taste drücken). Alle fünf Striche (|||||) bitte immer ein Leerzeichen einfügen.&lt;br /&gt;
&lt;br /&gt;
Neue Artikel einfügen darf und soll natürlich auch jeder - aber bitte die Liste vorher durchgehen (Tipp: Browser-Suchfunktion nutzen)! Einfach ganz viele Striche auf einmal hinter einem Artikel einzufügen ist zwecklos. Das erkennt man in der History und es gibt viele Leute, die diese Seite überwachen...&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Nicht sinnvoll&#039;&#039;&#039; ist etwas sehr exotisches, wie z.&amp;amp;nbsp;B. einen ganz bestimmten super schnellen AD-Wandler hier aufzulisten! Neue Artikel müssen sich für Reichelt ja auch rentieren und wirtschaftlich &amp;quot;an den Mann bringbar&amp;quot; sein. [Die Entscheidung, ob sich was rentiert und ob es exotisch ist, sollte man vielleicht Reichelt und den eventuellen späteren Strichle-Setzern überlassen, statt im Voraus die Schere im Kopf walten zu lassen.]&lt;br /&gt;
&lt;br /&gt;
= Wunschliste =&lt;br /&gt;
== Halbleiter ==&lt;br /&gt;
=== Controller/FPGA/CPLD ===&lt;br /&gt;
&lt;br /&gt;
* Atmel AT89LP4052 PDIP ||||| ||||| ||&lt;br /&gt;
* Atmel AT89S2051/4051 ||||&lt;br /&gt;
* Atmel AT90PWM3B (µC für Servosteuerungen und z.b. Motorsteuerungen) ||||| ||||| ||||| ||||| ||||&lt;br /&gt;
* Atmel ATA6612/13 (LIN-Bus SoC) ||&lt;br /&gt;
* Atmel ATmega324P in TQFP und PDIP ||||| ||||| |||||&lt;br /&gt;
* Atmel ATmega324PV in TQFP und PDIP ||&lt;br /&gt;
* Atmel ATmega328P in TQFP und PDIP ||||| ||||| ||||| ||||| ||||| ||||| ||||| ||||| |||&lt;br /&gt;
* Atmel ATmega48P in TQFP und PDIP |||&lt;br /&gt;
* Atmel ATmega644p(a) / atmega1284p(a) in TQFP und PDIP ||||| ||||| ||||| ||||| ||||| ||||| |||&lt;br /&gt;
* Atmel ATtiny2313V in SO und PDIP ||||&lt;br /&gt;
* Atmel ATtiny261 (auch 461 und 861; bevorzugt DIP) ||||| ||||| ||||&lt;br /&gt;
* Atmel AVR Controller mit Funkanbindung z.&amp;amp;nbsp;B. AT86RF230, AT86RF211, AT86RF401, dazu passende Quarze (evtl. SMD) 18,080 MHz (Crystek P/N 016758), Spulen 39nH. ||||| ||||| ||||| ||||| ||||| ||||| ||||| ||||| ||||| ||||| ||||| ||||| ||||| ||||| ||||| ||||| ||||| ||||| ||||| ||||| ||||| ||||| ||||| ||||| |||&lt;br /&gt;
* Atmel AVR mit USB AT90USB82, AT90USB162, AT90USB646, AT90USB1286, AT90USB1287, ATmega32u2 und ATmega32u4 ||||| ||||| ||||| ||||| ||||| ||||| ||||| ||||&lt;br /&gt;
* Atmel AVR32 im TQFP ||||| ||||| ||||| |||&lt;br /&gt;
* Atmel Atmega 168PA, 88PA, etc. ||||| |||&lt;br /&gt;
* Atmel Atmega 16A und 32A in TQFP und PDIP ||||| ||||| ||||| ||||| ||||| ||||| |||||&lt;br /&gt;
* Atmel Atmega 16L und 32L in TQFP (waere ATMEGA 16/32L8 TQ) ||||| |&lt;br /&gt;
* Atmel Dream Sound Synthesizer Chips, z.&amp;amp;nbsp;B. ATSAM3103 und ATSAM3308 ||||| ||||&lt;br /&gt;
* Atmel XMega-Typen, z.B. ATXMega64A4, ATXMega128A1 ||||| |&lt;br /&gt;
&lt;br /&gt;
* Microchip PIC 10F2xx (+ Programmiergerät) ||||| ||||| ||||| ||| (einige Varianten erhältlich, Programmiergerät nicht sicher)&lt;br /&gt;
* Microchip PIC 16F883 und 16F886 |||&lt;br /&gt;
* Microchip PIC 18F4523 (12/2007: PIC mit 12-Bit A/D-Wandler) ||&lt;br /&gt;
* Microchip PIC 18F6585 |&lt;br /&gt;
* Microchip PIC 18F6720 |&lt;br /&gt;
* Microchip PIC 18F8720 |&lt;br /&gt;
* Microchip PIC 24 ||||| ||||| ||||| ||||| ||&lt;br /&gt;
* Microchip PIC 24FJ64GB002-I/SP (USB-OTG im DIP28 Gehäuse) |&lt;br /&gt;
* Microchip PIC32 (MIPS) ||||| ||||| ||||| |&lt;br /&gt;
* Microchip dsPIC30F ||||| ||||| ||&lt;br /&gt;
* Microchip dsPIC33 ||||| ||||| ||&lt;br /&gt;
&lt;br /&gt;
* Mehr FPGAs (v.a aktuellere) von Xilinx, z.&amp;amp;nbsp;B. Spartan III , ALTERA CYCLONE II (v.a. auch größere Typen, die noch im TQFP-Gehäuse zu haben sind wie z.&amp;amp;nbsp;B. XC3S400 oder XC3S500E (PQFP208)) ||||| ||||| ||||| ||||| ||||| ||||| ||||| ||||| ||||| ||||| ||||| ||||| ||||| ||||| ||||| ||||| ||||| ||||| ||||| ||||| ||||| ||||| ||||| ||||| ||||| ||||| ||||| ||||| ||||| ||||| ||||| ||||| ||||| ||||| ||||| ||||| ||||| ||||| ||||| ||||| ||||| |||&lt;br /&gt;
&lt;br /&gt;
* ALTERA CPLD EPM30xx - Familie ||&lt;br /&gt;
* ALTERA CPLD EPM70xx - Familie ||||| ||||| ||||| ||||| ||&lt;br /&gt;
* ALTERA Cyclone2 - Familie ||||| ||||| ||||| ||||| ||&lt;br /&gt;
* ALTERA Cyclone3 - Familie ||||| |&lt;br /&gt;
* ALTERA Flex10K - Familie ||||&lt;br /&gt;
* ALTERA MAX-II (CPLDs) ||||| ||||| ||||| |&lt;br /&gt;
&lt;br /&gt;
* Ajile aj-100 (Java Real-Time Prozessor) |||&lt;br /&gt;
* Axis Etrax 100LX Risc Processor (kostenloses Linux-System vorhanden) ||||| ||||&lt;br /&gt;
* CY7C68013A-56PVXC (Cypress EZ-USB FX2LP) ||||| ||&lt;br /&gt;
&lt;br /&gt;
* Freescale DSP56F801 ||||&lt;br /&gt;
* Freescale HCS12 Controller ||||| ||||| ||||| ||||| ||||&lt;br /&gt;
* Freescale MC9S08QEx |&lt;br /&gt;
* Freescale MC9S08QG8 (DIP 16) ||||| ||||| |||&lt;br /&gt;
* Freescale Prozessoren (Coldfire) (16 + 32 Bit) ||||| |&lt;br /&gt;
&lt;br /&gt;
* Infineon XC866 ||||| ||||| ||||| ||||| ||&lt;br /&gt;
&lt;br /&gt;
* Lattice GAL 26V12 |&lt;br /&gt;
* Lattice ispMACH 4032C / 4064C / 4128C ||||&lt;br /&gt;
&lt;br /&gt;
* Luminarymicro Stellaris Serie (Cortex-M3) ||||| ||&lt;br /&gt;
* Maxim/Dallas DS89C450 |&lt;br /&gt;
&lt;br /&gt;
* NXP LPC214x-Serie ARM7-Controller ||||| ||||| |||&lt;br /&gt;
* NXP LPC23xx/24xx ||||| |&lt;br /&gt;
* NXP SAA5281 Videotextinterface ||||| ||||&lt;br /&gt;
&lt;br /&gt;
* PICAXE von Revolution Education Ltd&lt;br /&gt;
* Parallax Propeller CPU, 8 Cogs - DIP 40 ||||| ||||| ||||| ||||| ||||| ||||| ||&lt;br /&gt;
* Renesas M16C ||||| ||||&lt;br /&gt;
* SSV DIL/NetPCs [http://www.dilnetpc.com]http://www.dilnetpc.com ||||| ||||| ||||&lt;br /&gt;
&lt;br /&gt;
* ST ST7MC... (µC für Servosteuerungen, und vor allem Brushless-Motoren) ||||| ||&lt;br /&gt;
* ST STM32 Serie (Cortex-M3) ||||| ||||| ||||| ||||| ||||| &lt;br /&gt;
* ST STR7 Serie (ARM7TDMI) ||&lt;br /&gt;
&lt;br /&gt;
* Silabs C8051F320 USB Mikrocontroller ||&lt;br /&gt;
&lt;br /&gt;
* TI MSP430F167, TI MSP430F168 ||||&lt;br /&gt;
* TI MSP430F2001/2/3 etc. im RSA-Gehäuse (=QFN) ||||| ||&lt;br /&gt;
* TI MSP430F2618 |||&lt;br /&gt;
* TI MSP430FG4618 |&lt;br /&gt;
* TI TMS470 Arm7 ||||| ||||| ||||| ||||| |&lt;br /&gt;
* TI TUSB3210 ||||| ||&lt;br /&gt;
&lt;br /&gt;
* Ubicom SX20 SX28 IP2022 ||&lt;br /&gt;
* Western Design Center 65c816 |||&lt;br /&gt;
* XC3S 400 TQ144 |||&lt;br /&gt;
* Zilog Z8 Encore-Microcontroller (bis 64k Flash, I²C, SPI, 2xUART, ADC, on-Chip Debugger ...) [http://www.zilog.com/products/family.asp?fam=225]www.zilog.com ||||| |&lt;br /&gt;
* Zilog ZNEO-Microcontroller (Z16Fxxx, bis 128k Flash, 4k RAM, bis zu 76 I/Os, 3 Timer, 10-bit A/D, externer Daten-/Adressbus, on-Chip Debugger) [http://www.zilog.com/products/family.asp?fam=236] www.zilog.com |&lt;br /&gt;
&lt;br /&gt;
=== Speicher ===&lt;br /&gt;
&lt;br /&gt;
* Atmel DataFlash, z.&amp;amp;nbsp;B. AT45DB081B (8 MBit Flash-Speicher an seriellen Bus im 8poligen Gehäuse) ||||| ||||| ||||| ||||| ||||| ||||| ||||| ||||| ||||| ||||| ||||| ||||| ||||| ||||| ||||| ||||| ||||| ||||| |||||&lt;br /&gt;
* Schnelles statisches RAM 128kB (10, 12, 15 oder 20ns, z.&amp;amp;nbsp;B. Samsung K6R1008C1D-UI10 oder CY7C1019D-10ZSXI) (5V/3,3V) ||||| ||||| ||||| ||||| ||||| ||||| ||||| ||||| ||||| ||||| ||||| ||||&lt;br /&gt;
* NexFlash spiFlash NX25P16 (16MBit serial Flash im SO8-Gehäuse) ||||| ||||| ||||| |||&lt;br /&gt;
* RAMs (SRAM oder DRAM) mit ordentlicher Kapazität (z.&amp;amp;nbsp;B. HY57V641620HG oder besser) ||||| ||||| ||||| |||&lt;br /&gt;
* FPGA Konfigurations-EEPROMS AT17LV256, AT17C65/128/256.../XCF04S/... ||||| ||||| |&lt;br /&gt;
* 24LC256 oder 24AA256 oder 24LC512 oder 24AA512 ||||| |||||&lt;br /&gt;
* EEPROM mit SPI Schnittstelle 25XX Serien ||||| ||||&lt;br /&gt;
* 3.3V DRAM ||||| |&lt;br /&gt;
* 3.3V async SRAM ab 16KByte ||||| |&lt;br /&gt;
* F-RAM mit SPI von RAMTRON ||||| |&lt;br /&gt;
&lt;br /&gt;
=== ICs ===&lt;br /&gt;
&lt;br /&gt;
* LM397, LM321 o.ä. single op-amp in SOT23-5 5-30V supply ||||| ||||| ||||| ||||| ||||| ||||| ||||| ||||| ||||| ||||| ||||| ||||| ||||| ||||| ||||| |||&lt;br /&gt;
* Generell mehr I²C IC ||||| ||||| ||||| ||||| ||||| ||||| ||||| ||||| ||||| ||||| |||&lt;br /&gt;
* Generell mehr 1-Wire IC ||||| ||||| ||||| ||||| ||||| ||||| ||||&lt;br /&gt;
* HV9910 Schaltregler für die Hochleistungs LED^s Ub=8-450V; I beliebig; Eff. besser 90% ||||| ||||| ||||| ||||| ||||| ||||| ||&lt;br /&gt;
* ADS8320 ADC 16 Bit seriell ||||| ||||| ||||| ||||| ||||| ||||| |&lt;br /&gt;
* DDS-IC von Analog wie AD9833, AD9835 ||||| ||||| ||||| ||||| ||||| |||||&lt;br /&gt;
* DTMF-Dekoder-Enkoder (8870, 8880) ||||| ||||| ||||| ||||| ||||| |||&lt;br /&gt;
* Digital Potentiometer (z.&amp;amp;nbsp;B. 2-Wire MAX546x, AD526x, X9C10x) ||||| ||||| ||||| ||||| ||||| ||||&lt;br /&gt;
* Cypress CY7C67300 dual role USB controller mit OTG ||||| ||||| ||||| ||||| |||&lt;br /&gt;
* DAC7612 DAC 12 Bit seriell ||||| ||||| ||||| ||||| |||&lt;br /&gt;
* I²C-Bus Temperatursensor DS1631Z ||||| ||||| ||||| |||||&lt;br /&gt;
* Generell mehr SPI IC ||||| ||||| ||||| |||||&lt;br /&gt;
* MAX6675 Typ-K Thermoelement nach SPI ||||| ||||| ||||| ||||| &lt;br /&gt;
* Ethernet-Connector RJ-45 mit integriertem Übertrager (z.&amp;amp;nbsp;B. Taimag RJLBC-060TC1) ||||| ||||| ||||| |||&lt;br /&gt;
* ISD 5116 (Sprachaufnahme bis 16min &amp;amp; I2C-Interface) ||||| ||||| ||||| |&lt;br /&gt;
* PLL Schaltkreise für Frequenzerzeugung. z.&amp;amp;nbsp;B. MC / ML145170 (SOIC16) / TSA5060A ||||| ||||| ||||| ||&lt;br /&gt;
* Maxim MAX629, MAX1795, MAX1703 (Aufwärtsregler / Step-Up-Konverter) ||||| ||||| |||||&lt;br /&gt;
* AD7524 in SMD ||||| ||||| ||||&lt;br /&gt;
* MCP23016 16Bit I²C I/O Expander ||||| ||||| ||&lt;br /&gt;
* D/A Wandler mit 4 oder mehr Ausgängen, z.&amp;amp;nbsp;B. TLC5620/TLV5629/AD5325 ||||| ||||| |||&lt;br /&gt;
* MAX7313 16 LED-PWM-Dimmer (Im gegensatz zu den Philips-ICs ist jede einzelne LED-Dimmbar, dafür nur in 16 Schritten) ||||| ||||| |&lt;br /&gt;
* QT511-ISSG (iPod-like Touch-Wheel-Sensor &#039;&#039;siehe&#039;&#039; [http://www.qprox.com/products/qwheel_qt510.php]) ||||| ||||&lt;br /&gt;
* Philips PCA82C252 oder TJA1054A oder vergleichbar (&amp;quot;Fault-Tolerant&amp;quot; CAN Transceiver, 11898-3) ||||| ||||&lt;br /&gt;
* ZHB6718 (H-Bridge für 1,5V - 20V Motoren) ||||| ||||&lt;br /&gt;
* LTC3490 ||||| ||||&lt;br /&gt;
* Ethernet Magnetics (Auch POE) ||||| ||||&lt;br /&gt;
* MAX6958 / MAX6959 (I²C 4-Digit, 9-Segment LED Display Drivers with Keyscan) ||||| |||||&lt;br /&gt;
* Ethernet-Controller CS8900A ||||| |||&lt;br /&gt;
* VS1053 MP3/AAC/WMA/Ogg Decoder von VLSI ||||| ||||&lt;br /&gt;
* Bosch CJ125 ||||| ||&lt;br /&gt;
* 74VHC-Serie komplettieren (z.&amp;amp;nbsp;B. 74VHC125D) ||||| ||&lt;br /&gt;
* DAC8830 IDT (16Bit-DAC,ser. Input) ||||| |&lt;br /&gt;
* AD623 Single Supply,Rail-Rail, InstrOpamp ||||| |&lt;br /&gt;
* High Side Current Sense ICs wie MAX4172 ||||| |&lt;br /&gt;
* ISD 2560 -&amp;gt; SOIC Gehäuse (Sprachaufnahme IC) ||||| |&lt;br /&gt;
* Automotiv ICs z.&amp;amp;nbsp;B. LM1815, LM1915, LM1949, LM9011, LM9040, LM9044, LMD18400... ||||| |&lt;br /&gt;
* LM3886 ||||| |&lt;br /&gt;
* LMX2306/LMX2316/LMX2326 PLL Synthesizer von National ||||| |&lt;br /&gt;
* RS485 isoliert: z.&amp;amp;nbsp;B. Burr-Brown ISO485 o.ä. ||||| |&lt;br /&gt;
* LM1117 - 3,3V SOT-223 ||||| ||&lt;br /&gt;
* Mehr FET-Treiber (TI UCC3372x, HIPxxx , die neueren Brückentreiber von Maxim ||||| ||&lt;br /&gt;
* TH3122 K-Line Interface von MELEXIS ||||||||&lt;br /&gt;
* National Semiconductor CLC020 und CLC021 Parallel Component nach SDI-Converter |||||&lt;br /&gt;
* LM1117MPX-1.8 und LM1117MPX-3.3 (SMD-Spannungsregler SOT-223) |||||&lt;br /&gt;
* Maxim Switched Capacitor Tiefpass-Filter (z.&amp;amp;nbsp;B. MAX297, MAX7410) ||||||&lt;br /&gt;
* CCS-Akkulade-IC (z.&amp;amp;nbsp;B. CCS9620SL) (siehe [[http://bticcs.com/]]) |||||&lt;br /&gt;
* L5973D 2,5A, 250kHz, Schaltregler im SO8 (ca. 1€) |||||&lt;br /&gt;
* TEA5768HL FM-Tuner IC von Philips |||||&lt;br /&gt;
* PCA9685 16Kanal 12Bit PWM LED Controller ||||| ||&lt;br /&gt;
* Generell mehr DAC&#039;s (auch die teureren) von TI |||||&lt;br /&gt;
* TLV27(2|||||&lt;br /&gt;
* L6205 Motortreiber (2Kanal, 2,8A, DMOS)|||||&lt;br /&gt;
* STP08CL596M SO16 STM, LOW VOLTAGE 8-BIT CONSTANT CURRENT LED SINK DRIVER ||||&lt;br /&gt;
* Philips PCA9555 (I2C IO, 16 Bit par. I/O, c&#039;t Project Soundcheck II) |||||&lt;br /&gt;
* LTC1694-1 (I2C/SMBus Accelerator) |||||&lt;br /&gt;
* Generell mehr PWM-SIC&#039;s ||||&lt;br /&gt;
* TPIC6B595 (oder ähnliche 74xx595 high current (150 mA) shift register) ||||&lt;br /&gt;
* QT160 6-fach Touch Sensor IC ||||&lt;br /&gt;
* LM340x High Power LED-Treiber von National ||||&lt;br /&gt;
* 16-bit A/D-Wandler (waren von Maxim schon im Programm, sind aber wieder herausgeflogen?) ||||| |&lt;br /&gt;
* IR21844 DIL |||&lt;br /&gt;
* LTC24xx |||&lt;br /&gt;
* STP16CL596M SO24 STM, LOW VOLTAGE 8-BIT CONSTANT CURRENT LED SINK DRIVER |||&lt;br /&gt;
* IR2011 MOSFET Treiber |||&lt;br /&gt;
* TEA5757 FM-Tuner IC von Philips |||&lt;br /&gt;
* uC supervisor chips + watchdog z.&amp;amp;nbsp;B.: MAX6864 ist z.Z. der beste (0.2uA!) |||&lt;br /&gt;
* FTDI High Speed Chips, z.&amp;amp;nbsp;B. FT2232H ||||&lt;br /&gt;
* Motortreiber TLE 4205 |||&lt;br /&gt;
* MMI4832 (Geber Interface Baustein EnDat, SSI, Incrementalgeber |||&lt;br /&gt;
* Generell mehr I2S IC (ADC, DAC, DSP, u.a. Crystal, BurrBrown etc.) |||&lt;br /&gt;
* MAX127/128 8-Kanal 12bit ADC mit I2C interface |||&lt;br /&gt;
* TI PCM1804|||&lt;br /&gt;
* DP83848C (Ethernet Physical Layer Transceiver/PHY, MII/RMII-Schnittstelle, passend zu AT91SAM7X) |||&lt;br /&gt;
* MagJacks |||||&lt;br /&gt;
* STP08CL596B1 DIP16 STM, LOW VOLTAGE 8-BIT CONSTANT CURRENT LED SINK DRIVER ||&lt;br /&gt;
* STP16CL596B1R DIP24 STM, LOW VOLTAGE 16-BIT CONSTANT CURRENT LED SINK DRIVER ||&lt;br /&gt;
* Leistungs-OP LM675 von National ||&lt;br /&gt;
* CS5641 von Cirrus...The CS5461 incl. two delta-sigma A/D converters.... ||&lt;br /&gt;
* TI PCM2707 ||&lt;br /&gt;
* MIC6315 von Micrel (3,3/5V Reset Baustein mit manual Reset) ||&lt;br /&gt;
* DS1616 von Dallas Datalogger-IC ||&lt;br /&gt;
* MAX6650 ||&lt;br /&gt;
* TLV320AIC23B Audio-Codec ||&lt;br /&gt;
* Schnellere und gleichzeitig günstige OpAmps; Beispiel AD8055 ||&lt;br /&gt;
* IRS2092 Class-D Audio Driver IC ||&lt;br /&gt;
* LM1117 - 1,8V ||&lt;br /&gt;
* P82B86 (I2C Dual Bi-Directional Bus Buffer) ||&lt;br /&gt;
* MAX7311AWG 2Wire Interface von Maxim ||||&lt;br /&gt;
* MAX 4420 Mosfet Driver ||&lt;br /&gt;
* MAX 4429 Mosfet Driver ||&lt;br /&gt;
* IP101 PHY von IC+ (Distri für DE [http://www.topas.de/tt/cfs/icp_cfs_mai05.htm Topas]) ||&lt;br /&gt;
* UDN 2987 LW (Source Driver UDN2987 in SMD-Bauform) ||&lt;br /&gt;
* VN808 Low Treshold Octal High Side Driver 0,7A |&lt;br /&gt;
* L5970 o. L5972 1 bzw. 2A, 250kHz Schaltregler im SO8 |&lt;br /&gt;
* Fast Ethernet-Controller (DE9000A/B/E, AX88796B, ...) |&lt;br /&gt;
* Max1555 - LiPo Lade IC |&lt;br /&gt;
* AD8601 Rail to Rail Opamp |&lt;br /&gt;
* ViPER Schaltregler von ST |&lt;br /&gt;
* TPS79318 1,8V 200mA LDO in (bestens für z.&amp;amp;nbsp;B. LPC210x µC) |&lt;br /&gt;
* AD5160 SPI-Poti in SOT23 |&lt;br /&gt;
* FM25L16 o. FM25L256 SPI-FRAM |&lt;br /&gt;
* TLC2264 (R2R) |&lt;br /&gt;
* TLC3702 Komparator |&lt;br /&gt;
* Linear Technology LTZ1000ACH#PBF Präzisions-Referenz (Ersatz für LM399H) |||&lt;br /&gt;
* Philips TDA1543 - 2x16-Bit DAC |&lt;br /&gt;
* ITS4141N o. BTS4141N Smart High-Side Power Switch (z.&amp;amp;nbsp;B. bestens für 24V geeignet!) |&lt;br /&gt;
* MAX528 8-fach 8Bit DAC mit Output Buffer seriell |&lt;br /&gt;
* 74HCxxxx komplette Serie |&lt;br /&gt;
* AD628 InstrOpAmp, high voltage inputs |&lt;br /&gt;
* TLV2382ID Rail-Rail-OP von TI |&lt;br /&gt;
* CP2120 single-chip SPI to I2C bridge and GPIO port expander |&lt;br /&gt;
* VS1000 Ogg Decoder von VLSI |&lt;br /&gt;
* MC 34152 D-SMD SO8 Dual Mosfet Driver |&lt;br /&gt;
* ADuM 1201 o. ADuM1401 - Digitale Übertrager ||&lt;br /&gt;
* LM267X SimpleSwitcher Step-Down-Konverter in SO-8 Bauform ||&lt;br /&gt;
* Video-AD-Wandler z.&amp;amp;nbsp;B. LTC2208 (16 Bit 130 MS/s) für FPGA und SDR |&lt;br /&gt;
* Clock generator IC&#039;s, z.&amp;amp;nbsp;B. PCK20?? von Philips |&lt;br /&gt;
* LTC 1661 N8 10 Bit Dual Dac mit SPI Interface |&lt;br /&gt;
* LTC 1655(L) N8 16 Bit DAC interne Ref 2.048/1.25V(L Type) SPI Interface ||&lt;br /&gt;
* MCP23S17 16Bit SPI I/O Expander (aber ohne Schmidt-triggerd Eingänge wie der 23x16) |&lt;br /&gt;
* MCP23S08 8BIT SPI I/O Expander |&lt;br /&gt;
* Power over Ethernet Bausteine z.&amp;amp;nbsp;B. LM7050 |&lt;br /&gt;
* LTC 4411 ideale Diode 2,6 bis 5,5V max. 2,6A im SOT-23 Gehäuse&lt;br /&gt;
* MCP23008 8Bit I2C I/O Expander |&lt;br /&gt;
* Zarlink MT8841 Calling Number Identification Circuit |&lt;br /&gt;
* TI TPS61070 3.3V-75mA-aus-einer-NiMH-Zelle (+ passende SMD-Induktivität) |&lt;br /&gt;
* RFID EM4095 |||&lt;br /&gt;
* LT-1117-CST-5 als Sot223 (adj und 3.3 gibts schon, 5 fehlt noch) |&lt;br /&gt;
* LTC5540 |&lt;br /&gt;
* LM1084-ADJ |&lt;br /&gt;
* Silicon Labs SI4735 Radio ICs ||&lt;br /&gt;
&lt;br /&gt;
=== Diskrete ===&lt;br /&gt;
&lt;br /&gt;
* Größere Auswahl an Step-up Reglern ||||| ||||| ||||| ||||| ||||&lt;br /&gt;
* Spannungsregler SMD in DPAK ||||| ||||| ||||| ||||| ||&lt;br /&gt;
* SMD Doppeldiode Schottky 12A 60V im TO252AA z.&amp;amp;nbsp;B. 12CWQ06FN von IOR ||||| ||||| ||||| ||&lt;br /&gt;
* LM317EMP oder LM317AEMP SMD-Spannungsregler einstellbar (SMD TO-223 Gehäuse) ||||| ||||| ||||&lt;br /&gt;
* Si4562DY N- and P-Channel 2.5-V (G-S) MOSFET SMD ||||| ||||| ||&lt;br /&gt;
* Niederohm-FETs in SO8, N und P ||||| ||||| |&lt;br /&gt;
* Digitaltransistoren (BCR*), auch als Pärchen NPN/PNP (BCR10, BCR08pn) ||||| ||||&lt;br /&gt;
* IRF7503/IRF7506 Dual Mosfet SMD ||||| |||||&lt;br /&gt;
* ZRA250F005 Referenzspanungsquelle 2,5V 0.5% SOT23 gehäuse ||||| |||||&lt;br /&gt;
* L4941 Spannungsregler 5V/1A in SMD-Ausführung (DPAK) ||||| ||||&lt;br /&gt;
* mehr FETs und IGBTs (nichtnur IRF, sehr gut IXYS &amp;lt;- und sauteuer!) ||||| ||||&lt;br /&gt;
* R-783.3-0.5 Schaltregler 4,75V - ca. 18V Eingang; 3,3V Ausgang (Hersteller Recom) ||||| |||&lt;br /&gt;
* R-785.0-0.5 Schaltregler 6,5V - 30V Eingang; 5,0V Ausgang (Hersteller Recom) ||||| |||&lt;br /&gt;
* MC78LCxx Serie - Ultra Low Drop Spannungsregler 3-5 Volt mit 1 Mikro-Ampere Ruhestrom ||||| ||&lt;br /&gt;
* SPP20N60C3 Infineon Mosfet 600V 190mOhm Rdson &amp;lt;10ns tr+tf (Schnellste Schaltzeit in der Klasse) ||||| |&lt;br /&gt;
* 5,2V Lowdrop Längsregler LF52 im TO252AA von STM |||||&lt;br /&gt;
* BUF420AW Schaltnetzteil Transistor von STM |||||&lt;br /&gt;
* LM2734 Schaltregler |||&lt;br /&gt;
* SDT06S60 Infineon SiC 600V 6A Silizium-Carbid Schottky-Diode (kein trr, daher keine Schaltverluste) ||||&lt;br /&gt;
* Philips PDTD113E/123E und PDTB113E/123E (PNP und NPN im sot23 mit internen Widerständen für Basis und PullUp/Down ||&lt;br /&gt;
* R-785.0-1.0 Schaltregler, Ausgang 5,0V, 1A |||&lt;br /&gt;
* 2SC1971 Transistor mit hoher Frequenz und viel Leistung für Endstufen ||&lt;br /&gt;
* MIC29300/29301 Spannungsregler 5,0V 3A im TO263(SMD) Gehäuse ||&lt;br /&gt;
* R-523.3PA Schaltregler 4V - 18V Eingang, variabler Ausgang (Nominalspannung 3.3 V) mit nur 2-4 externen Bauteilen bei &amp;gt; 90% Effizienz |&lt;br /&gt;
* IRC540 (HEXSense) |&lt;br /&gt;
* Hochspannuns-Widerstände (z.&amp;amp;nbsp;B. 330M/10kV) |&lt;br /&gt;
* R-723.3P Schaltregler 4V - 28V Eingang, variabler Ausgang (Nominalspannung 3.3 V) mit nur 2-4 externen Bauteilen bei &amp;gt; 90% Effizienz |&lt;br /&gt;
* PhotoMOS Relay (z.&amp;amp;nbsp;B. AQV257 von Panasonic; http://www.mew.co.jp/ac/e/control/relay/photomos/index.jsp) |&lt;br /&gt;
* BSH205 P-Channel 1.5V(GS), 0.75A, 12V D-S ||&lt;br /&gt;
* IPS5451S intelligenter Leistungsschalter 50 V, 35 A, 25 mΩ |&lt;br /&gt;
* MAX 8865 Dual, Low-Dropout, 100mA Linear Regulator |&lt;br /&gt;
* IR3313 o.ä. Intelligenter Leistungsschalter 32V/90A, einstellbare Strombegrenzung |||&lt;br /&gt;
* LF50ABDT Spannungsregler SMD DPAK 5.0V very low drop |&lt;br /&gt;
* IPW60R045CS Infineon Mosfet 600V 45mOhm Rdson 30ns tr+tf (niedrigster Rdson in der Klasse) |&lt;br /&gt;
* MJD31C NPN Transistor SMD DPAK 3&lt;br /&gt;
* IRFI4212H-117P Doppel-Mosfet (f. Klasse D-Verstärker&lt;br /&gt;
* generell Spannungsregler, LOW-DROP, SMD (DPAK, D2PAK)&lt;br /&gt;
&lt;br /&gt;
=== Sensoren/Aktoren ===&lt;br /&gt;
&lt;br /&gt;
* Sensirion SHT11/SHT71 (oder auch SHT15/SHT75) ||||| ||||| ||||| ||||| ||||| ||||| ||||| ||||| ||||| ||||| ||||| ||||| ||||| ||||| ||||| ||||| |||&lt;br /&gt;
* Sharp Entfernungssensoren (zb den GP2D120 oder den GP2D12) ||||| ||||| ||||| ||||| ||||| ||||| ||||| ||||| ||||| ||||&lt;br /&gt;
* Drehwinkelgeber, Gyro, Kreiselsensoren ähnl. Tokin CG-L43 ||||| ||||| ||||| ||||| ||||| ||||| ||||| ||||| ||||&lt;br /&gt;
* IS471 Selbstmodulierende IR-Lichtschranke ||||| ||||| ||||| ||||| |||||&lt;br /&gt;
* Motorola/Freescale Drucksensoren z.b. MPX4250 mit AP Druckanschluss ||||| ||||| ||||| ||||| |||||&lt;br /&gt;
* kleine Feuchtigkeitssensoren zur &#039;on-board-Montage&#039; ||||| ||||| ||||| ||||| ||&lt;br /&gt;
* Durchflussmesser (z.&amp;amp;nbsp;B. wie Conrad Nr.155374) ||||| ||||| ||||| ||&lt;br /&gt;
* iMEMs Acceleration Sensors ADXL Series von Analog Devices ||||| ||||| ||||| |&lt;br /&gt;
* Hall-Sensor UGN3503, KMZ51 ||||| ||||| ||||&lt;br /&gt;
* LEM Stromsensoren (Transducer) der HAIS-Serie, speziell HAIS 50-P und 100-P ||||| ||||| ||||| ||&lt;br /&gt;
* Summer mit 20mA@5V ähnlich Conrad Nr.751553 (TDB05 kann mit 30mA@5V nicht von allen Controllern direkt getrieben werden) ||||| ||||| |||&lt;br /&gt;
* günstige Temp. Sensoren TC77 ||||| ||||| ||&lt;br /&gt;
* FSRs (Force Sensing Resistor) von Interlink Electronics ||||| ||||| ||&lt;br /&gt;
* NanoMuscle Aktuatoren ||||| ||||| |&lt;br /&gt;
* K-Typ (J-Typ) Thermocouple Temperatursensoren und passende Steckverbinder ||||| ||||| ||&lt;br /&gt;
* 4Hz Supersense µblox LEA-4S GPS module (Importer pointis.de) + Passende Passives Patch antenna (zB. von inpaq.com) ||||| ||&lt;br /&gt;
* Magnetfeld-Sensor (Kompass-Anwendung) KMZ52 ||||| |||||&lt;br /&gt;
* Flexinol ||||| ||&lt;br /&gt;
* Induktions-Stromsensoren Coilcraft #J9199-A o.ä. |||||&lt;br /&gt;
* Piezo Minimotoren/Lienearaktoren von Elliptec/Siemens einzeln und günstig |||||&lt;br /&gt;
* Anemometer |||||&lt;br /&gt;
* Linear- und 360° Soft-Pots wie von spectrasymbol ||||| |&lt;br /&gt;
* Allegro Stromsensoren (z.&amp;amp;nbsp;B. ACS713, ACS756) ||||| ||||&lt;br /&gt;
* Luftdruck-/ Temperatur Sensor Intersema MS5534 (mit SPI- Interface) ||||&lt;br /&gt;
* Temperatur IC TC1047 |||&lt;br /&gt;
* Hallsensoren z.&amp;amp;nbsp;B. TLE4905 wieder ins Programm nehmen ||&lt;br /&gt;
* Temperatursensor mit SPI-Interface LM74 |||&lt;br /&gt;
&lt;br /&gt;
== Baugruppen ==&lt;br /&gt;
* Atmel ATNGW100 von [http://www.atmel.com/dyn/corporate/view_detail.asp?FileName=AVR32NGKit_3_26.html Atmel] = billiges Linux Board ($69=51.69€) --&amp;gt; [http://www.avrfreaks.net/wiki/index.php/Documentation:NGW/NGW100_Hardware_reference Dokumentation] ||||| ||||| ||||| ||||| ||||| ||||| ||||| ||||&lt;br /&gt;
* Atmel ATSTK600 von [http://www.atmel.com/dyn/products/tools_card.asp?tool_id=4254 Atmel] ||||&lt;br /&gt;
* Atmel ATSTK1000 von [http://www.atmel.com/dyn/products/tools_card.asp?tool_id=3918 Atmel] ||||| ||||| ||||| ||||&lt;br /&gt;
* Atmel AVR Dragon von [http://www.atmel.com/dyn/products/tools_card.asp?tool_id=3891 Atmel] ||||| ||||| ||||| ||||| ||&lt;br /&gt;
* Axis Etrax 100LX MCM (Multi Chip Module) A full Linux computer on a single chip!  ||||| |||||&lt;br /&gt;
* CentiPad/DevKit Embedded Linux Modul ([http://www.centipad.de www.centipad.com]) ||||| ||&lt;br /&gt;
* DS9490R USB zu 1-Wire Dongle (auch mit Linux Treiber) |||||&lt;br /&gt;
* Easy-Radio Module zur seriellen Datenübertragung (ER400 RS/TS/RTS) ||||| ||||| ||||| ||&lt;br /&gt;
* Foxboard = Betriebsfertiges Micro Linux System mit Axis Etrax 100LX MCM 66mm x 72mm ||||| ||||| ||||| ||||| ||||&lt;br /&gt;
* FoxVHDL = FPGA Erweiterungskarte für das ACME Foxboard ||||&lt;br /&gt;
* Hope RF Module 433 u. 868 MHz, http://www.hoperf.com/pdf/RF12.pdf |||||&lt;br /&gt;
* kostengünstige Funkschaltmodule (TLP/RLP) ||||| ||||| ||||| ||||| ||&lt;br /&gt;
* kostengünstige Funkempfänger/Funksender 433 &amp;amp; 868 Mhz ||||| ||||| ||||| ||||| ||||| ||||| ||||| ||||| ||&lt;br /&gt;
* Lantronix XPort Embedded Device Server ([http://www.lantronix.com www.lantronix.com]) ||||| ||||||&lt;br /&gt;
* Lantronix XPort Direct ||&lt;br /&gt;
* FPGA, low-cost Experimentierplatinen ||||| ||||| ||||| |||&lt;br /&gt;
* Bluetooth Mini-Module (RS232-Bluetooth-&amp;quot;Wandler&amp;quot;-Platinchen) z.&amp;amp;nbsp;B. BTM222 |&lt;br /&gt;
*  Bluetooth Funkmodul ||||| ||||| ||||| ||||| ||||| ||||| ||||| ||||| ||||| ||||| ||||| ||||| ||||| ||||| ||||| ||||| |||||| ||||| ||||| |&lt;br /&gt;
* Mini-WLan Module (RS232 zu WLan) ||||| ||||| ||||| |||||&lt;br /&gt;
* MT1390 FM Tuner-Modul von Microtune |||&lt;br /&gt;
* NetDCU8 von F &amp;amp; S Elektronik Systeme GmbH (http://www.fs-net.de) - Linux-Computerplatine mit 400MHz Samsung-ARM mit 32MB RAM, 16MB Flash und SD/Ethernet/CAN/USB/TFT/RS232 für ca. 100 Euro ||||| ||||| ||&lt;br /&gt;
* OM5610 FM Tuner-Matchbox von Philips |||&lt;br /&gt;
* TI - MSP430 Wireless Development Tool (AEC13895U) |&lt;br /&gt;
* Gyro Sensoren  MURATA,  ENC-03J A/B    ||||| ||||| ||||| ||||| ||||| ||||| ||||| ||||| ||&lt;br /&gt;
* UM232 FTDI USB - RS232 Modul für DIL sockel ||&lt;br /&gt;
* ST Primer 2 (Experimentierboard fuer ARM Einsteiger) ||&lt;br /&gt;
&lt;br /&gt;
== &amp;quot;Passive&amp;quot; Bauteile ==&lt;br /&gt;
&lt;br /&gt;
=== Spulen etc. ===&lt;br /&gt;
* Ordentliche Trafospulen + Kerne, z.b. ETD-Serie, oder RM10 ||||| ||||| ||||| ||||| ||||| ||||| ||||| ||||&lt;br /&gt;
* Passende Ferrite dazu: N27,N41,N67,N87,N97 ||||| ||||| ||||| ||||| ||||&lt;br /&gt;
* Magnetics CoolMu Ringkerne ||||| |||||||&lt;br /&gt;
* Magnetics MPP Ringkerne ||||| ||||| ||&lt;br /&gt;
* Die Micrometals Pulverkerne (-18 und -26) auch in größer ||||| |&lt;br /&gt;
* Funk-Entstördrosseln 16A, div. Werte ||||| ||||| |&lt;br /&gt;
* Funk-Entstördrosseln 47µF |||&lt;br /&gt;
* Würth Induktivitäten ||||| ||||| ||||| |||||&lt;br /&gt;
* Übertrager für Schaltregler z.&amp;amp;nbsp;B. Epcos Typ  B78304 ||||| ||&lt;br /&gt;
* SEPIC-Speicherdrosseln von Würth WE-DD (Größe M u. L) |||&lt;br /&gt;
* Sortimentskästen von Würth ||&lt;br /&gt;
&lt;br /&gt;
=== Kondensatoren ===&lt;br /&gt;
* Low-ESR Elkos (definiertes Fabrikat/Typ, und nicht einfach irgendwelche! (Rubycon?)) ||||| ||||| ||||| ||||| ||||| ||||| ||||| ||||| ||||| ||||| |||||  |||||| ||||| ||||| ||||| ||||| ||||| ||||| ||&lt;br /&gt;
* Low-ESR Elkos RM 3,5mm 1.000uF 6,3V (Mainboardaustausch Elko) ||&lt;br /&gt;
* Low-ESR SMD Tantal-Elkos (definiertes Fabrikat/Typ, und nicht einfach irgendwelche! (AVX?, Epcos?)) ||||| ||||| ||||| ||||| ||||&lt;br /&gt;
* Zum MAX232 so20 passende SMD-Kerkos im Wert 1uF (0805,0603, 1206) ||||| ||||| ||||| |||||&lt;br /&gt;
* Generell SMD-Kerkos im Wert &amp;gt; 100nF ||||| ||||| ||||| ||||| ||||| ||||| ||||| ||||| ||||| ||||| ||||| ||||| ||||| ||||| ||||| ||||| ||||| ||||| ||||| |||&lt;br /&gt;
* Kleine Niedervolt-Polyproplyenkondis mit mehr Kapazität |||&lt;br /&gt;
* Wima MKP4 ||||&lt;br /&gt;
* Wima MKP-X2 (~275V, klein und ideal für Kondensatornetzteile) |&lt;br /&gt;
* Günstige hochkapazitive Doppelschichtkondensatoren (z.&amp;amp;nbsp;B. Maxfarad MES2245 220F 2,3V) ||||| |&lt;br /&gt;
* Keramikkond. SMD 0603/0805/1206: mehr Zwischenwerte (56p, 82p, 560p) ||||| ||&lt;br /&gt;
* Drehkondensator  20-500pf ||||&lt;br /&gt;
* Sanyo OS-Con bedrahtet und SMD |||&lt;br /&gt;
&lt;br /&gt;
=== Widerstände, Potis ===&lt;br /&gt;
* SMD-Widerstände 0805 und 1206 auch unterhalb von 1 Ohm ||||| ||||| ||||| ||||| ||||| |||&lt;br /&gt;
* SMD-Widerstände unterhalb 1 Ohm, andere Gehäuse als 0805/1206 (leichter erfüllbarer Wunsch) ||||| ||||| ||||&lt;br /&gt;
* SMD-Widerstände 0805 auch aus der E24-Reihe ||||| ||||| ||||| ||&lt;br /&gt;
* Durchsteck-Widerstände in kleiner Bauform 0204. ||||| |||||&lt;br /&gt;
* R2R-Widerstandsnetzwerke (z. B. 10/20kOhm für DA-Wandler an Microcontrollern) ||||| ||||| ||||| ||||| ||||| ||||| ||||&lt;br /&gt;
* Präzisionswiderstände 0,05% und besser, ev. Drahtgewickelt ||||| ||||| ||||| |&lt;br /&gt;
* Niederohm-Widerstände (Shunts ab 1mOhm im guten Gehäuse z.&amp;amp;nbsp;B. TO220) ||||| ||||| ||||| ||||| ||||| ||||| |||&lt;br /&gt;
* 25/50W-Widerstände (~20/50 Ohm auch weniger) ||||| ||||| |||||&lt;br /&gt;
* Präzisions-Spannunsgteilernetzwerke ||||| ||||&lt;br /&gt;
*Präzisionsspannungsteiler 1:10, 1:100, 1:1000 (10MOhm Gesamtwiderstand) ||&lt;br /&gt;
* SMD-Präzisionswiderstände (0,1% TC10ppm/K =&amp;gt;0,1W indukt.arm) ||||| ||||| ||||| ||&lt;br /&gt;
* statt Radiohm potis bitte Prehostat oder Alphastat 16 63256-026xx ||||| ||||| ||||&lt;br /&gt;
* Null-Ohm Widerstände (Drahtbrücken) Baugröße wie 1/4W ||||| ||&lt;br /&gt;
* Erneut die 10k-Ohm SMD Potis ||||&lt;br /&gt;
* Leitplastikpotis im Servogehäuse |&lt;br /&gt;
* Größere Auswahl an (Stereo-)Schiebepotis in log und lin, insbesondere jenseits 100K |&lt;br /&gt;
* Kleine Ein-Gang-Trimmer unterhalb 250 Ohm |&lt;br /&gt;
&lt;br /&gt;
=== Quarze, Quarzoszillatoren und Resonatoren ===&lt;br /&gt;
* SMD-Quarze mit Standardgehäuse (z.&amp;amp;nbsp;B. HC49/US &amp;amp; HC49/UP) ||||| |||&lt;br /&gt;
* Quarzoszillator  9,8304 Mhz  ||&lt;br /&gt;
* Quarz mit 3,200 Mhz  ||&lt;br /&gt;
* 13,5600 MHz Quarz (benötigt für RFID)  ||||| ||||&lt;br /&gt;
* Quarz mit 13,56 MHz (SMD+bedrahtet) ||||| |&lt;br /&gt;
* 24,0000 MHz Standardquarz Grundton (&#039;&#039;&#039;kein 3. Oberton!!!&#039;&#039;&#039;) (benötigt für USB-DMX-Interface) ||||| |||&lt;br /&gt;
* 25,0000 Mhz &#039;&#039;&#039;Grundton&#039;&#039;&#039;-Quarz (wird benötigt für Microchip TCP/IP Controller ENC28J60) ||||| ||||| ||||&lt;br /&gt;
* Allgemein mehr Grundtonquarze bei höheren Frequenzen ||||»&lt;br /&gt;
* SMD Quarze/ Oszillatoren in flachen, kleinen SMD Gehäusen (SMX-A/-B) |||&lt;br /&gt;
* Murata Keramik-Resonator CSTLS16M0X, CSTLS20M0X (obwohl 3. OW, direkt mit µC verwendbar)&lt;br /&gt;
&lt;br /&gt;
=== Sonstiges ===&lt;br /&gt;
* Varistoren 14V auch als bedrahtetes Bauteil (für KFZ-Bordnetz) ||||| ||||| |-&amp;gt; 1,5KE 18CA&lt;br /&gt;
* Suppressordioden mit Spannungsbereich zwischen 15V und 30V |||&lt;br /&gt;
* Netzfilter FFP Reihe Schurter ||&lt;br /&gt;
* Metallbrückengleichrichter für 50A ||||&lt;br /&gt;
* Lieferungen nach Österreich ohne 150 Euro Mindestbestellwert wie alle anderen Supplier ||&lt;br /&gt;
* Hochlast NTC, z.&amp;amp;nbsp;B. 80-220 Ohm/1-4A (EPCOS, Ametherm)|&lt;br /&gt;
* Ringkertrafos &amp;gt;500VA mit höherer Spannung als 30V (Verstärkerbau) |&lt;br /&gt;
* Übertrager FB2022 oder 20F-001N (passend zu RTL8019AS)&lt;br /&gt;
* Übertrager passend zu ENC28J60&lt;br /&gt;
&lt;br /&gt;
== HF Baumaterialien ==&lt;br /&gt;
* Filter SFE10.7MA19 360khz SZP2026 |&lt;br /&gt;
* Keramische Filter CFM455... ganzes Sortiment |||| |&lt;br /&gt;
* Quarze 32 MHz 10ppm Oscillatorfrequenz 0 bis +70°C&lt;br /&gt;
* Quarze 6,500000 MHz ||&lt;br /&gt;
* MC68160FB&lt;br /&gt;
* S3C4510B&lt;br /&gt;
* MT48LC4M32B2TG-7&lt;br /&gt;
* MC68EN302PV20&lt;br /&gt;
* Zirkulatoren ALD4302SB statt LM239 &lt;br /&gt;
* Transistoren MRFG35010 |&lt;br /&gt;
* µP Compatible CTCSS Encoder,Decoder FX 365&lt;br /&gt;
* Durchführungskondensatoren 1nF/160V (waren Ende &#039;06 noch im Programm) ||| |&lt;br /&gt;
* ZF-Quarzfilter für versch. Frequenzen (10, 20, 40 MHz) ||&lt;br /&gt;
* MMICs und Ringmischer von Mini-Circuits&lt;br /&gt;
* PLL ICs z.&amp;amp;nbsp;B. von NXP und National für HF-UHF ||&lt;br /&gt;
* MICRF002/022, MICRF102/103 von Micrel  ||||| |&lt;br /&gt;
* Keramik / Teflon Leiterplatinen |&lt;br /&gt;
&lt;br /&gt;
== Optoelektronik und Leuchtmittel ==&lt;br /&gt;
* TFT/OLED Farb-Displays, wie die bereits abgekündigten OSRAM OLEDs |||&lt;br /&gt;
* low current SMD LEDs (z.&amp;amp;nbsp;B. Osram LG T679 - Anm.: hier gleich die neuen Varianten Lx T67K bestellen, nicht die alten 9er) ||||| ||||| ||||| |||||&lt;br /&gt;
* SMD LED Bauform 0402 rot/gelb/grün/blau/weiss  ||||| ||||| ||||| ||||| |&lt;br /&gt;
* weisse SMD LED Bauform 0603 ||||| ||||| |||||&lt;br /&gt;
* warm weisse LED ||||| ||||| ||||| ||&lt;br /&gt;
* OSRAM Hyper TOPLEDS weiss LW T67C-T2U2-5K8L ||&lt;br /&gt;
* OSRAM Halogen Decostar 51 12V 20W GU5,3 statt des billigen NoName Zeugs ||&lt;br /&gt;
* OSRAM Hyper TOPLEDS gelb LY T676-S1T1-26 ||&lt;br /&gt;
* Everlight SMD-RGB (fullcolor) 19-337/R6GHBHC-A01/2T ||||&lt;br /&gt;
* Superflux RGB LED ||&lt;br /&gt;
* 7-Segment-Anzeige 4 DIGIT mit und ohne Doppelpunkt |&lt;br /&gt;
* 7-Segment-Anzeige, allgemein Low-Current bzw. High Efficiency Versionen anbieten ||||| |||||&lt;br /&gt;
* 7-Segment-Anzeige, blau, gem. Anode ||||| ||||| ||||| ||||| ||||| ||||| ||||| ||||| ||||| ||||&lt;br /&gt;
* 7-Segment-Anzeige, weiss, gem. Kathode ||||| ||||| ||||| ||||| ||||| |||&lt;br /&gt;
* 7-Segment-Anzeige, weiss, gem. Anode ||||| ||||| ||||| ||||| ||||| ||||| |||&lt;br /&gt;
* 7-Segment-Anzeige, blau, gem. Kathode ||||| ||||| ||||| ||||| ||||| ||||| ||&lt;br /&gt;
* Diese 4-Stelligen Dot-Matrix LED Anzeigen Siemens SLG 2016 oder von HP oder ähnliches ||||| |&lt;br /&gt;
* Generell alle 7-Segment-Anzeigen auch in Blau und bis zu 100mm höhe ||&lt;br /&gt;
* Vakuum-Fluoreszenz-Displays (Dot Matrix mit Standardcontroller, z.&amp;amp;nbsp;B. Futaba &amp;quot;LCD Emulators&amp;quot;)  ||||| ||||| |||&lt;br /&gt;
* IL207AT (SMD Optokoppler von Infineon) ||||| ||&lt;br /&gt;
* ILD256T (SMD AC-Optokoppler)  ||||| |||||&lt;br /&gt;
* ILD620 (DIP Optokoppler) ||||| ||||| ||||| ||||&lt;br /&gt;
* SFH6106, SFH6206 4 Pin Optokoppler SMD ||||||&lt;br /&gt;
* TLP113 (SMD Optokoppler) |||||&lt;br /&gt;
* Vactrol Optokoppler (mit Fotowiderstand zur Analogsignalregelung) |||||&lt;br /&gt;
* IR-Diode mit viel power ttp://www.lc-led.com/Catalog/department/36/category/49/1 ||&lt;br /&gt;
* IrDA-Tranceiver TFDS4500 (oder TFDU4100) wieder anbieten (war im 07/2005er Katalog noch drin) ||||| ||||&lt;br /&gt;
* Seoul Zled P4 (100lm bei 350mA, 240lm bei 1A!) ||||| |||||&lt;br /&gt;
* Generell: Z-Power LEDs von Seoul (günstiger und heller als Luxeon) ||||| ||&lt;br /&gt;
* Seoul Z-LED RGB auf Platine ||&lt;br /&gt;
* EA DOG-L128 128x64 Grafikdisplay zzgl Touch-Folie und Beleuchtung | --&amp;gt; ist ab Katalog 06/2009 drinn&lt;br /&gt;
* TLP 3617&lt;br /&gt;
* TSOP 1730 | [Achtung! TSOP17xx sind Auslaufmodelle bei Vishay]&lt;br /&gt;
* TSOP 1140 | (oder andere 40 kHz IR-Empfänger)&lt;br /&gt;
* TORX 178&lt;br /&gt;
* TSOP98260 (Breitband IR-Empfangsmodul 20-60 KHz) |||&lt;br /&gt;
* TSOP98200 (Breitband IR-Empfangsmodul 20-455 Khz) |||&lt;br /&gt;
* PC923 (Opto MosFET Gate Treiber auch für High Side) |&lt;br /&gt;
* TLP250 (Opto MosFET Gate Treiber auch für High Side)||||&lt;br /&gt;
* LED Punktmatrix Anzeigen 8x8 superrot 3mm (z.&amp;amp;nbsp;B. ELM-1883SRWA (Everlight)) |&lt;br /&gt;
* LED Punktmatrix bicolor 1.9mm (z.b. Betlux BL-M 07A881SG-XX )&lt;br /&gt;
* Acriche 230V~ LEDs&lt;br /&gt;
* Luxeon Rebel weiß (180 lm) auf Star-, Mini- oder normaler Platine ||&lt;br /&gt;
* BPW 34 F / FS (aus dem Sortiment gefallen) |&lt;br /&gt;
* SMD-IR-LEDs in 0603/0805/SOT23 |&lt;br /&gt;
* Dazu passend IR-Fotodioden in 0603/0805/SOT23 |&lt;br /&gt;
* Kingbright PSC Serie (16 Segment LED-Display, insbesondere PSC08 und PSC12) |&lt;br /&gt;
* Edison Opto LEDs: pinkompatibel mit diversen abgekündigten LEDs von Luxeon und Co, aber deutlich günstiger im Preis und leuchtstärker da u.A. Cree LED DIEs verwendet werden&lt;br /&gt;
** Edison Opto ARC / Edixeon LEDs (da ja Luxeons abgekündigt sind) ||||&lt;br /&gt;
** Edison Opto Federal (Luxeon Rebel artig) ||||&lt;br /&gt;
** Edison Opto KLC8 (Luxeon Bauform mit Cree Die) ||||&lt;br /&gt;
** Edison S Serie -&amp;gt; Lumiled kompatibles Gehäuse aber viel Leuchtstärker |||&lt;br /&gt;
** Edison Exixeon Serie -&amp;gt; Lumiled kompatibles Gehäuse aber viel Leuchtstärker ||&lt;br /&gt;
** Edison Edixeon RGB |||&lt;br /&gt;
&lt;br /&gt;
== Mechanisches ==&lt;br /&gt;
* Getriebemotoren wie RB35 oder RB40 ||||| ||||| |||&lt;br /&gt;
* Muttern M2 |||&lt;br /&gt;
* Stopmuttern M2 |&lt;br /&gt;
* Zylinderkopfschrauben M2,5 x 12mm |||||&lt;br /&gt;
* Zylinderkopfschrauben M2,5 x 20mm |||||&lt;br /&gt;
* Zylinderkopfschrauben M2,5 x 30mm |||||&lt;br /&gt;
* Zylinderkopfschrauben M3 x 25mm |||||&lt;br /&gt;
* Bopla ABP oder ABPH 800-100 (10cm) Aluprofil Gehäuse |&lt;br /&gt;
* microSD / Transflash sockel mit push-push technik (ist nervig die immer für teuren versand aus amiland kommen zu lassen) ||||| ||||| ||||| ||||| ||||| ||||&lt;br /&gt;
* M2 Gewindebohrer und Senker |||&lt;br /&gt;
* Kapton-Baender, evtl auch mit Kupferbeschichtung (Flex-PCB) ||&lt;br /&gt;
* Distanzhülsen/-bolzen M3 in verschiedenen Längen aus Kunststoff |&lt;br /&gt;
* Distanzbolzen M2,5 (SW4) in verschiedenen Längen aus Messing |&lt;br /&gt;
&lt;br /&gt;
=== Schalter etc. ===&lt;br /&gt;
* Drehimpulsgeber DDM Hopt+Schuler 427 SMD (evt auch normal, stehend &amp;amp; liegend) ||||| ||||| ||||| ||||| ||||| ||&lt;br /&gt;
* Folientastaturen ||||| ||||| ||||| ||||| ||||| ||||| ||||| ||||| ||||| ||||| ||||| ||||| |&lt;br /&gt;
* Drucktastenfeld Matrix 3x4 ||||| ||||| ||||| ||||| |||&lt;br /&gt;
* kleiner Joystick wie beim Atmel Butterfly  ||||| ||||| ||||| ||||| ||||| ||||| ||||| |||||&lt;br /&gt;
* Drehschalter Serie DS in allen Versionen nur vom Hersteller C&amp;amp;K; auch brückende Versionen anbieten  ||||| |||||&lt;br /&gt;
* bistabile Relais mit 2 Wicklungen ||||| ||||| ||||| &lt;br /&gt;
* passende Touchpanels für die coolen Blue-Line-Grafikdisplays ||||| ||||||&lt;br /&gt;
* mehrpolige Fußschalter, FS 35 bitte bei Druckschalter einordnen ||||&lt;br /&gt;
* möglichst kleine und flache Druckschalter rastend!  |||||&lt;br /&gt;
* iPod-Wheel (Siehe: IC&#039;s=&amp;gt;QT511-ISSG; siehe 360° Soft-Pots - weiter oben) ||||| |&lt;br /&gt;
* Taster Radiohm ST-1034 in rot, grün, gelb, blau, grau und schwarz&lt;br /&gt;
* Relais mit hohen Wirkungsgrad (daher nur geringer Spulenstrom nötig) ||&lt;br /&gt;
* Tastköpfe für Taster9308, wie zb Omron B32-2000 oder B32-2010 |&lt;br /&gt;
* Batteriehalter für 4 Mignonzellen mit Lötfahne (statt Druckknopf)  ||&lt;br /&gt;
* Batteriehalter für 18650er Lithiumzellen |&lt;br /&gt;
* SMD-Schiebeschalter ||||&lt;br /&gt;
* Hohlwellen-Drehgeber (z.&amp;amp;nbsp;B. EC35B-Serie von Alps) ||&lt;br /&gt;
* Taster und Kappen aus der Multimec-Reihe ||&lt;br /&gt;
* Grayhill Series 60A Joysticks mit USB-Adapter |&lt;br /&gt;
&lt;br /&gt;
=== (Steck-) Verbindungen ===&lt;br /&gt;
* Modulare Buchse RJ45 mit Übertrager und LEDs für Ethernet 10/100, z.&amp;amp;nbsp;B. SI-40138 MagJack von BEL-STEWART oder Taimag RJLBC-060TC1 ||||| ||||| ||||| ||||| ||&lt;br /&gt;
* Modulare Buchse RJ45 (&#039;&#039;ohne Übertrager&#039;&#039;) mit LEDs (oder Lichtleiter für SMD-LEDs) ||||| ||&lt;br /&gt;
* Buchsenleisten zum Crimpen (allseitig anreihbar!, 1x1, 1x2, z.&amp;amp;nbsp;B. [http://www.newproduct.molex.com/datasheet.aspx?ProductID=92125 Molex 2081 ?] oder Harwin M20 )  ||||| ||||| ||||| ||||| ||||| ||||| ||||| |||||| ||||| &lt;br /&gt;
* Für die LC-Displays: Adapterplatine mit anschlüssen im Raster 2,54mm (EA 9907-DIP) siehe http://www.lcd-module.de/ ||||| ||||| ||||| ||||| ||||| |||&lt;br /&gt;
* TEXTOOL- bzw. ARIES-Fassungen (Breite 7-15,24mm)/ Nullkraftsockel für kleine Mikrokontroller: DIL-20 ||||| || DIL-28 | PLCC-44 ||||| ||||| ||||| (und andere)&lt;br /&gt;
* Nullkraftsockel für SO- oder TQFP-Gehäuse (z.&amp;amp;nbsp;B. Yamaichi) ||||| ||||| ||||| |||&lt;br /&gt;
* Nullkraftsockel für 6-Pin SOT23 (SOT23-6) z.&amp;amp;nbsp;B. für Programmierung v. PIC10F |||||&lt;br /&gt;
* Nullkraftsockel für DIL20 Gehäuse ||&lt;br /&gt;
* Chipkartenkontaktiereinrichtung, die die Kontakte anhebt (keine Schleifkontakte) ||||| |||| |&lt;br /&gt;
* WOL-Verbindungskabel / Stecker / Print-Connectoren: ||||||&lt;br /&gt;
* gängige Platinenverbinder einreihig RM 2mm mit 2-15 Kontakten (in vielen Geräten verwendet, z.&amp;amp;nbsp;B. [http://www.newproduct.molex.com/datasheet.aspx?ProductID=19945 Molex 51004, 53015]): ||||| Molex 71226 |||&lt;br /&gt;
* Floppy Stromversorgungstecker 3,5&amp;quot; Printausführung ||||| |&lt;br /&gt;
* Hochwertigere 1/4&amp;quot; Klinkenbuchsen, z.&amp;amp;nbsp;B. von Rean oder Cliff |||| |&lt;br /&gt;
* mehrpolige, hochwertige Miniatursteckverbinder (z.&amp;amp;nbsp;B. http://www.binder-connector.de/pdfs/serien/711.pdf) |||&lt;br /&gt;
* preiswerte! Hochspannungssteckverbinder &amp;gt;2kV ||||&lt;br /&gt;
* Höherwertige 3,5mm Klinkenbuchsen / -stecker (statt &amp;quot;EBS35&amp;quot; oder &amp;quot;KK(S/M) ..&amp;quot;) ||||| ||| ||&lt;br /&gt;
* Ordentliche Lautsprecherbuchsen &amp;quot;Strich-Punkt&amp;quot; (Print oder Wand) (die Stecker sind OK) |&lt;br /&gt;
* Schuko-Einbausteckdose (Maschinensteckdose) (mit oder ohne Klappdeckel); Flanschmaß möglichst klein (50mmx50mm); div. Farben (sw,grau,...) ||||| ||||| ||&lt;br /&gt;
* Euro-Einbausteckdose (230V~, gab&#039;s früher mal) ||||| |&lt;br /&gt;
* Carrier-IC-Sockel&lt;br /&gt;
* JST HR Steckverbinder |||&lt;br /&gt;
* Wannenstecker(gerade) + Pfostensteckverbinder 6-Pol. (Pfostenbuchsen gibt es 6-Pol.) ||||| ||||| ||||| ||||| ||||| ||||| |||  ( z.&amp;amp;nbsp;B. Harting SEK 18 Serie http://www.harting.com/en/en/de/sol/verbtech/prod/ios/description/03005/index.de.html)&lt;br /&gt;
* Wannenstecker 6-Pol. gewinkelt, gibt nur gerade |&lt;br /&gt;
* Wannenstecker 2,54mm Raster auch als SMD ||||| ||&lt;br /&gt;
* Günstigere SD/MMC-Steckverbinder z.&amp;amp;nbsp;B.SDBMF-00915B0T2 von MULTICOMP(selbst bei Farnell für 1,80Euro) ||||| |&lt;br /&gt;
* Einpolige Steckerleiste 2.54 ||||| |&lt;br /&gt;
* Foliensteckverbinder (FFC) RM1,25 (z.&amp;amp;nbsp;B. 9pol, 11pol ...) |||||&lt;br /&gt;
* Triaxstecker /-buchse (Coax mit 2.tem Schirm als 3. Kontakt) ||&lt;br /&gt;
* vernünftige Koax-Stecker und Kupplungen z. Bsp. von Hirschmann&lt;br /&gt;
* Platinensteckverbinder für Rastermass 2,00mm ||||&lt;br /&gt;
* Molex Steckerreihe Minifit Jr 4,2mm Rastermaß (verwendet als Stromstecker in Computern, Mainboard, PCI-E, P4/EPS ...) |&lt;br /&gt;
* Mini SD Card Connector mit Auswurffunktion für Oberflächenmontage  ||||| |&lt;br /&gt;
* Steckverbinder für PICTIVA OLED Display Folienkabel |||||&lt;br /&gt;
* E10-Schraubsockel, wie sie Glühbiren haben, mit Lötstiften (Achtung es ist nicht die Fassung gemeint) |||||&lt;br /&gt;
* RP-SMA-Buchse/-Stecker (gewinkelt/gerade) ||&lt;br /&gt;
* WAGO 215-4mm-Stecker (Bananenstecker mit Käfigzugklemme) zur schnellen Montage bei Versuchsaufbauten ||||| ||||| ||||| ||||| |&lt;br /&gt;
* Die PSK-Kontakte in anderen Packungen als 20/10k.100Stk. wäre z.b. gut.1k auch. |||&lt;br /&gt;
* OBD-Stecker. |||&lt;br /&gt;
* Adapterprogramm SMA auf SMB ausbauen |&lt;br /&gt;
* Micro-USB Steckverbinder ||||&lt;br /&gt;
* 2.5mm Stereo Klinkenbuchsen (3-polig) SMD |||&lt;br /&gt;
* BNC-Stecker (wie UG 88U, Lötmontage) aber für RG174-Kabel |||| |&lt;br /&gt;
* U.FL bzw. IPEX Steckbüchsen zum selbskonfektionieren von HF Kabeln ||&lt;br /&gt;
* RJ45-Stecker 90° nach unten oder zur Seite gewinkelt ||&lt;br /&gt;
* Buchsenleisten 2.54mm (z.&amp;amp;nbsp;B. BL 1X...G 2,54) TEILBAR, *zum Auseinanderbrechen* (laut Anfrage vom 26.10.2009 nicht im Sortiment) ||||| ||||| ||||| ||||| ||||| ||||| ||||| ||||| ||||| ||||| ||||| ||||| ||||| ||||| ||||| |||| |&lt;br /&gt;
* Hohlstecker für Laptops 1,7 x 4,75mm gelb ||&lt;br /&gt;
* Stiftleisten im Rastermaß 1 mm (z.&amp;amp;nbsp;B.: Samtec FTMH-120-03-F-DV-ES) |&lt;br /&gt;
* Cablesharing Adapter 2x RJ45-Buchsen(1x Ethernet 1x ISDN)1xStecker |http://www.btr-netcom.com/Products/upload/ATCH-002661.pdf&lt;br /&gt;
* Stapelleiste AMP 2–0827730–0, 20polig, A 24,2 mm |&lt;br /&gt;
* Buchsenleiste Fischer BL5&lt;br /&gt;
* Polklemmen Hirschmann PKNI 10B (max. 63A ^^), zumindest Schwarz und Weiß |&lt;br /&gt;
* Molex C-Grid SL einreihig 2 bis &amp;gt;6 polig: Stecker, Buchsen, Buchsen-SMD, Crimp-Werkzeug |&lt;br /&gt;
* USB3, e-SATA, eSATAp (Power e-SATA) Stecker in Printausführung (gerade und gewinkelt) |&lt;br /&gt;
&lt;br /&gt;
=== Kabel etc. ===&lt;br /&gt;
* dünner Schaltdraht (&amp;lt; 1mm Durchmesser, isoliert mit Tefzel oder Kynar)  ||||| ||||| ||||| ||||| ||||| ||||| ||||| ||||| ||||| ||||| ||||| ||||| ||||| ||||| ||||| |||||&lt;br /&gt;
* Flachbandkabel im 2,54mm Raster und dazu passende Aufpressstecker und -buchsen ||||| ||||| ||||| ||||| ||||| |&lt;br /&gt;
* versilberten Kupferdraht auch &amp;lt; 0,6mm und alle Stärken in grösserer VPE (z.&amp;amp;nbsp;B. 500g Rolle) ||||| ||||&lt;br /&gt;
* Flexible Einzellitze, 0,5² in verschiedenen Farben ||||| ||||| ||||| ||||| |||&lt;br /&gt;
* bzw. angebotene Schaltlitze (H05VK) um weitere Farben erweitern! |||&lt;br /&gt;
* das qualitativ mangelhafte 4mm Laborsteckerprogramm rausnehmen und nur noch Hirschmann anbieten  ||||| ||||| ||||| |||&lt;br /&gt;
* Zwillingslitze 2x0.14mm, z.&amp;amp;nbsp;B.  Artikel: ZL214SWW-10M Kessler Elektronik ||||| |&lt;br /&gt;
* Heizdraht zB.: Kanthal A1  |||&lt;br /&gt;
* LYIF Litze (verschiedene Farben) ||||| |&lt;br /&gt;
* dickere Mantel(Feuchtraum)leitungen, z.&amp;amp;nbsp;B. NYM J5x10 |&lt;br /&gt;
* Folienflachkabel (FFC) RM1,25 (z.&amp;amp;nbsp;B. 9pol, 11pol ... /Länge 20cm) ||&lt;br /&gt;
* Flachbandkabel im 1,00mm Raster, passend für Pfostenverbinder PL 2X25G 2,00 . Wird für notebookplatten benötigt. Ohne das macht die gesamte 2,0mm-Wannensteckerproduktgruppe keinen Sinn. |||||&lt;br /&gt;
*Folienflachkabel (FFC) RM 0,8 (z.&amp;amp;nbsp;B. 30pol. Länge125mm) für 8&amp;quot;TFT Monitor&lt;br /&gt;
* H155 (HF-Kabel) |||||&lt;br /&gt;
* RG214 |&lt;br /&gt;
* Low-Loss Kabel (evtl. aus diesem Programm http://www.elspec.de/hf-kabel-technologie/download-hf-technik/hf-lowloss-kabel.html)&lt;br /&gt;
* Schnepp &amp;quot;Laborkabel&amp;quot; Messleitungen ||||&lt;br /&gt;
* Litze, LiY 0,25mm^2, diverse Farben (beispielsweise von Lapp Kabel) |&lt;br /&gt;
* Distanzbolzen mit 2 M2,5 Innengewinden vrsch. Längen |&lt;br /&gt;
* HF-Litze(n) |&lt;br /&gt;
* Flachbandkabel im 1,27 mm Raster, 6-polig |&lt;br /&gt;
&lt;br /&gt;
== Platinen/Prototypen ==&lt;br /&gt;
* SOIC auf PDIP Gehäuse-Adapter zwecks Prototypen-Bau ||||| ||||| ||||| ||||| ||||| ||||| ||||| ||&lt;br /&gt;
* Tonerverdichter (www.Huber-Troisdorf.com) ||||| ||||| ||||| ||||| ||||| ||&lt;br /&gt;
* Adapter TQFP (versch. PinZahlen) auf DIL/QIL ||||| ||||| ||||| ||||| ||||| ||||| |||&lt;br /&gt;
* Adapter QSOP (versch. PinZahlen) auf DIL/QIL ||||| ||&lt;br /&gt;
* Lötstopplaminat ||||| ||||| ||||| ||||| ||||| |||||&lt;br /&gt;
* www.schmartboard.com hat super einfach zu lötende SMD-Adapter in allen Größen, nur leider keinen Vertriebspartner in Deutschland (doch: ELV). Wie wäre es mit Reichelt? ||||| ||||| ||||| ||||| ||||| ||||||&lt;br /&gt;
* Cadsoft Eagle ||||| ||&lt;br /&gt;
* Hohlkehlenlötspitzen (Ersa 0832HD) ||||| |&lt;br /&gt;
* Hohlkehlenlötspitzen f. Weller MLR21 ||||| |||||&lt;br /&gt;
* Fotoplatinen, zweiseitig, Hartpapier(!) |||||&lt;br /&gt;
* Entwickler NaOH-Frei von Bungard (SENO 4007 Universalentwickler) |&lt;br /&gt;
* chemisches Zinnbad ||||| ||||| ||&lt;br /&gt;
* Bungard-Fotoplatinen auch in 80x100mm (halbes Euroformat), nicht nur 75x100mm ||||| ||||| ||||| |&lt;br /&gt;
* Bungard-Fotoplatinen BLAU div. Formate ||||| ||||| |||||&lt;br /&gt;
* Fotoplatinen aus Hartpapier von Markenhersteller |&lt;br /&gt;
* SMD Testplatine (3x3 Felder) wie bei Conrad |&lt;br /&gt;
* Natrium Persulfat 2 kg Packung ||||&lt;br /&gt;
* Steckplatinenen (STECKBOARDS) im 84 x 54 Format (gibts bei Conrad ist da aber viel zu teuer) |&lt;br /&gt;
* Messignblech/Kupferblech 0.1mm (wenn möglich Photobeschichtet) |&lt;br /&gt;
* PCI-Express x1 Laborkarte ( wie RE 430EP) |&lt;br /&gt;
&lt;br /&gt;
== Werkzeug und Zubehör ==&lt;br /&gt;
* robuste Allzweck- und Teppichmesser ||||| |&lt;br /&gt;
* zöllische Gewindeschneider g1/4&amp;quot; und g 1/8&amp;quot; insbesondere interessant für Wasserkühlungen |||||&lt;br /&gt;
* einzelne Hartmetallbohrer in diversen Grössen (z.&amp;amp;nbsp;B. 0,8 1,0 1,3 1,5) ||||| ||||| ||||| ||||| ||||| ||||| ||||| ||||| ||||| |||| |||&lt;br /&gt;
* Arbeitsschalen zum Entwickeln und Ätzen von Platinen(*) ||||| ||||| ||||&lt;br /&gt;
* Gewindebohrer M2 und M2,5 ||||| ||||&lt;br /&gt;
* Konturenfräser/Gravurstichel, etc. zum Fräsen von Platinenprototypen (z.&amp;amp;nbsp;B. Bungard G60N/G30N) ||||| |||&lt;br /&gt;
* Tri-Wing Schraubendreher ||&lt;br /&gt;
* Ballistol Universalöl ||||| | &lt;br /&gt;
* ERSA Lötspitzen der Serie 842 (besonders die feinen) Reichelt führt bis jetzt nur 832, die feinen davon sind aber recht unbrauchbar ||&lt;br /&gt;
&lt;br /&gt;
== Unsortiert/Unspezifisch ==&lt;br /&gt;
* Kundenkarte so wie bei ELV (Grundgebühr für ein Jahr, keine Versandkosten, evtl kleiner Rabatt) ||||| ||||| ||||| ||||| ||||| ||||| ||||| ||||| ||||| ||||| ||||| ||||| ||||| ||||| ||||| ||||| ||||| ||||| |&lt;br /&gt;
* Reichelt Katalog als PDF zum Download ||||| ||||| ||||| |||||| ||||| ||||| ||||| ||&lt;br /&gt;
* (durch pdf-download überflüssig:) der Reichelt Katalog auf CD/DVD |||||&lt;br /&gt;
* In Bereichen wie Multimedia etc. (z.&amp;amp;nbsp;B. Spielekonsolen) ein aktuelleres Angebot, und nich wie z.&amp;amp;nbsp;B. bei der PS2 erst wenn schon fast das Nachfolgemodell draussen ist (Multimedia ist hier nur ein Beispiel, einfach mal an der Konkurrenz orientieren (Zum beispiel am grossen C) |&lt;br /&gt;
* mehr, aber als solche gekennzeichnete billig-Alternativprodukte, nicht nur High-End |||||&lt;br /&gt;
* Modellbau und Zubehör ||||| ||||| ||||| | (Wird immer mehr, man sieht, Reichelt hört dankenswerterweise auf diese Wishlist!!)&lt;br /&gt;
* mehr SMD Bauteile  ||||| ||||| ||||| ||||| ||||| ||||| |||||  |||||  ||||| ||||| ||||| ||||| ||||| ||||| ||||| ||||| ||||| ||||| ||||| ||||| ||&lt;br /&gt;
* HCT-Logik in SMD ||||| ||||| ||||| ||||| ||||| ||||| ||||| ||||| ||||| ||||| ||||| ||||| ||||| ||&lt;br /&gt;
* Kleinere SMD-Bauformen (bes. bei ICs) ||||| ||||| |||&lt;br /&gt;
* mehr und v.a. kleine (Hand-) Gehäuse  ||||| ||||| ||||| ||||| ||||| ||||| ||||| ||||| ||||| ||||| ||||| ||&lt;br /&gt;
* gleicher Mindestbestellwert in Österreich und in der Schweiz wie in Deutschland ||||| ||||| ||||| ||||| ||||| ||||| ||||| ||||| ||||| ||||| ||||| ||||| ||||| ||||| ||||| ||||| ||||| ||||| ||||| ||||| ||||| ||||| ||||| |||||   ||||| ||||| ||||| ||||| ||||||||||||||||||||||||||||||||||||||||||||||||||||||&lt;br /&gt;
* gleicher Mindestbestellwert in den Niederlanden wie in Deutschland |&lt;br /&gt;
* Kein Mindestbestellwert (ich bezahle eh&#039; Porto) ||||| ||||| ||||&lt;br /&gt;
* Filialen in Österreich  und der Schweiz :-) ||||| ||||| ||||| ||||| ||||| ||||| ||||| |||||| |||||| ||||| ||| (man beachte das &amp;quot;:-)&amp;quot;, es gibt auch in D keine &amp;quot;Filialen&amp;quot; - mt)|&lt;br /&gt;
* Versand nach Österreich über GLS oder sonstigen Paketdienst &amp;amp; auf Rechnung, damit die Spesen halbwegs im Rahmen bleiben (bei der letzten Bestellung ca. EUR 40) ||||| ||||| ||||| ||||| ||||| ||||| |||&lt;br /&gt;
* Günstige Versandkonditionen für die EU ||||| ||||| ||||| ||||| ||||| ||||| ||||| |||&lt;br /&gt;
* Selbstabholer-Option bei der Bestellung. Vergisst man es unter &amp;quot;Bemerkung&amp;quot; kommt es per Post :(   ||||  (für Plz 26xxx kommt eine Option für Abholer, Tip: falsche Plz eintragen)&lt;br /&gt;
* Versand von Kleinteilen als Maxibrief, zwecks niedrigerem Versand ||||| ||||| ||||| ||||| ||||| ||||| ||||| ||||| ||||| ||&lt;br /&gt;
* Option zum anklicken beim Versand, &amp;quot;nichtverfügbare Artikel automatisch streichen&amp;quot;, wenn man das ins Kommentarfeld schreibt wirds nicht beachtet, oder bis das jemand liest dauert es wieder mehrere tage. (In der Zwischenzeit realisiert!!) ||||| ||||| |||||&lt;br /&gt;
* mehr Familien von Logik-ICs, z.&amp;amp;nbsp;B. AC, ACT, LVC (in SMD) ||||| ||||| ||||| ||||| ||||| ||||| ||||| ||||| |&lt;br /&gt;
* LiPoly-Zellen (aufladbare Lithiumakkus &amp;quot;Suppentüten&amp;quot;) ||||| ||||| ||||| ||||| ||||| ||||| ||||| ||||| |&lt;br /&gt;
* Allgemein mehr Sensoren ||||| ||||| ||||| ||||| |||&lt;br /&gt;
* Preiswertere Alu Druckgussgehäuse, wie z.&amp;amp;nbsp;B. von Hammond Manufacturing ||||| ||||| |||||&lt;br /&gt;
* nicht wie die Konkurrenz jetzt schon im April den Juli-Katalog rausbringen ||||| ||||| ||||| |&lt;br /&gt;
* Neuere, bessere NiMh Akkus (z.b. GP1100 2/3A, GP2000 AF, GP2200 4/5SubC) ||||| ||||| |&lt;br /&gt;
* Funk-Entstördrosseln 16A, div. Werte ||||| |&lt;br /&gt;
* Taster, Schalter und LED-Fassungen aus der Mentor FEL-Reihe ||&lt;br /&gt;
* Lötfähige (SMD-) Kühlkörper (Fischer) ||||| ||||| ||||| |&lt;br /&gt;
* Toner für Laserdrucker Kyocera FS-1010 TK17 ||||| |  ist ja eigentlich der gängigste Kyocera Toner&lt;br /&gt;
* Toner für Kyocera FS800-S |&lt;br /&gt;
* Microchip PICkit 2 ||||| |||&lt;br /&gt;
* Microchip PICkit 2 (PG164120) ohne Demoplatine |&lt;br /&gt;
* Möglichkeit für Selbstabholen eine Bestellung unter 10Euro abzuliefern.  |&lt;br /&gt;
* Bessere Auswahl: statt MSP430F147, F148, F149 wenigstens einen mit DAC -&amp;gt; MSP430F16x&lt;br /&gt;
* Cypress PSoC Mikrocontroller |||| |||| |||| |||| |&lt;br /&gt;
* Günstigere Oszilloskope z.&amp;amp;nbsp;B. Multimetrix oder Grundig ||||| |||||&lt;br /&gt;
* Digitale Speicherosziloskope für PC ||||| ||||| ||&lt;br /&gt;
* Sortieren und Spezifizieren der Angebotsliste in Transistoren / FET (bessere Übersicht) ||||| ||||| ||||| |||| z.&amp;amp;nbsp;B. 400V/6A würde schonmal ganz grob helfen und senkt außerdem unnötigen Traffic weil nicht extra jedes Datenblatt angeschaut wird&lt;br /&gt;
* Vorschaltgeräte mit G23 Fassung (zum Bau von UV-Belichtern geeigent)|||&lt;br /&gt;
* Speicherkarten-Adapter von SD auf CF (bzw. CFII) |||||&lt;br /&gt;
* ein Abendessen mit Angela :-) (hier dürfte wohl Angelika gemeint sein) ||| bzw. mit der Blondine von der Katalogseite mit den Servicenummern |&lt;br /&gt;
* USB-Leergehäuse (z.&amp;amp;nbsp;B. wie USB-Stick, WLAN-Dongle, o.ä.) ||||| ||||| |||||&lt;br /&gt;
* Nicht so viele Tackerklammern/Gummibänder/Tesafilm/Beutel in die Verpackungstüten machen, das nervt beim Auspacken (die kaputten Tüten kann dann auch keiner mehr brauchen, die wenigen nicht kaputt getackerten hebe ich aber gerne auf! Aber bitte weiterhin alles getrennt verpacken... oder wenigstens nicht den Zip-Verschluss tackern) ||||| ||||| ||||| ||||| ||||| ||||| ||||| ||||&lt;br /&gt;
* Reflektoren für 10mm LEDs ||&lt;br /&gt;
* Beamer Casio YC-400|&lt;br /&gt;
* OBD2 Kabel auf RJ45 Stecker |||&lt;br /&gt;
* mehr Verpackungsmaterial z.&amp;amp;nbsp;B. kleine Schachteln oder die Plastik IC-&amp;quot;Schienen&amp;quot; einzeln (und unzerschnitten) verkaufen |||||&lt;br /&gt;
* PCMCIA Wlan-Karten (Linux kompatibel) mit externem Antennenanschluss |&lt;br /&gt;
* Warenkorb immer in gleicher Reihenfolge sortiert, nicht bei jedem Aufruf anders ||||| |||&lt;br /&gt;
* PIC_BASIC_II || Programm mit HardwareKey [z.&amp;amp;nbsp;B. für Azubi&#039;s]&lt;br /&gt;
* Reichelt T-Shirt ||||| ||||&lt;br /&gt;
* Pakete nach Österreich in EINER Lieferung schicken, und nicht aus &amp;quot;logistischen Gründen&amp;quot; trennen. Würde zumindest die Hälfte der Verandkosten sparen (letztes mal fast 70€ pro Paket (!) ||&lt;br /&gt;
* Reichelt-Gutscheine sollten bei Online-Bestellung einlösbar sein (wie bei z.&amp;amp;nbsp;B. Amazon) ||||| ||||&lt;br /&gt;
&lt;br /&gt;
==Messgeräte==&lt;br /&gt;
* FS300 Messgerät Antennenanalyzer Massenpreis 50000 Stück &amp;lt;br&amp;gt;&lt;br /&gt;
* Smart Tweezer (SMD-Pinzette mit Komponentenmessung) siehe [http://www.trgcomponents.de/TrgDE/Internet/ProductShow.aspx?ItemID=680&amp;amp;CategoryID=2426] ||&lt;br /&gt;
* Hameg HM2008 Oziloscope || ( ist möglich über Service -&amp;gt; Produktservice -&amp;gt; neue Artikel anfragen)&lt;br /&gt;
*Tektronix TDS Series Osziloskope |||&lt;br /&gt;
&lt;br /&gt;
= Bereits im Sortiment =&lt;br /&gt;
&lt;br /&gt;
* Laser-Folien für die Druckformerstellung(Zweckform 3491) ||||| ||||| ||||| ||||| ||||| ||||&lt;br /&gt;
* Atmel AT91SAM7S32 ||||| ||||| ||||| ||||| ||||| ||||| ||||| ||||| ||||| ||||| |||  (=&amp;gt; Best.: AT 91SAM7S64-AU)&lt;br /&gt;
* Atmel AT91R40008 (32bit controller 256KB-RAM 100-lead TQFP) ||||| ||||| |  (=&amp;gt; Best.: AT 91R40008)&lt;br /&gt;
* LCD: auch ein- und dreizeilige Variante der DOG-Serie (EA DOGM081 &amp;amp; 163) |||||&lt;br /&gt;
* Platinen Basismaterial, einseitig Cu-beschichtet, 0,5..1 mm dick ||||| ||||| ||| --&amp;gt;0,8mm: BEL 160x100-1-8&lt;br /&gt;
* Atmel ATtiny45 ||||| ||||| ||||| ||||| ||||| ||||| ||||| ||||| =&amp;gt; ATTINY 45-20PU, ATTINY 45-20SU, ATTINY 45V-10PU, ATTINY 45V-10SU&lt;br /&gt;
* Atmel ATMEGA48 TQFP ||||| |||| =&amp;gt; ATMEGA 48-20 AU&lt;br /&gt;
* Atmel ATMEGA 88 || =&amp;gt; ATMEGA 88-20 AU, ATMEGA 88-20 PU, ATMEGA 88V-10 AU, ATMEGA 88V-10 PU&lt;br /&gt;
* Atmel ATMEGA644 ||||| ||||| ||||| ||||| =&amp;gt; ATMEGA 644-20 AU, ATMEGA 644-20 PU, ATMEGA 644V-10AU, ATMEGA 644V-10MU, ATMEGA 644V-10PU&lt;br /&gt;
* Atmel ATMEGA2560 ||||| ||||| ||||| ||||| ||||| ||||| ||||| ||||| ||||| || =&amp;gt; ATMEGA 2560-16AU, ATMEGA 2560V-8AU&lt;br /&gt;
* Atmel ATMEGA2561 ||||| | =&amp;gt; ATMEGA 2561-16AU, ATMEGA 2561V-8AU&lt;br /&gt;
* Philips LPC2000-Serie ARM7-Controller (LPC214x, LPC213X, LPC21xx und LPC22xx) |||||| ||||| ||||| ||||| ||||| ||||| ||||| ||||| ||||| ||||| ||||| | =&amp;gt; Bauelemente, aktiv / Controller, Speicher / Controller, Prozessoren / Philips-Controller 80C51 / 87LPC.. / 89C51&lt;br /&gt;
* TI MSP430F2xxx (Typen mit 16 MIPS) ||||| ||||| | =&amp;gt; Bauelemente, aktiv / Controller, Speicher / Controller, Prozessoren / Texas MSP430 Controller&lt;br /&gt;
* Breadboards/&amp;quot;Steckbretter&amp;quot; ||||| ||||| ||||| ||||| ||||| ||||| ||||| ||||| ||||| ||||| ||||| ||||| |||||| ||||| ||||| ||||| |||||| ||||| ||||| ||||| ||||| ||||| ||| =&amp;gt; STECKBOARD 1K2V, STECKBOARD 2K1V, STECKBOARD 2K4V, STECKBOARD 3K5V, STECKBOARD 4K7V (zu finden unter &#039;Diverses/Spielwaren&#039; :)&lt;br /&gt;
* RS485 ESD fest: MAX3086E oder 75180 oder ISL83086E ||||| || =&amp;gt;MAX485ECPA &lt;br /&gt;
* Microchip PIC 18F2550  || =&amp;gt; PIC 18F2550-I/P&lt;br /&gt;
* Microchip PIC 16F88  |||| || =&amp;gt; PIC 16F88-I/P&lt;br /&gt;
* Microchip dsPIC ||||| ||||| ||||| ||||| | =&amp;gt; PIC 30F2010-30 SP/SO&lt;br /&gt;
* Logicanalyzer | =&amp;gt; ME ANT 8 und ME ANT 16&lt;br /&gt;
* Atmel ATMEGA8 TQFP |||| =&amp;gt; ATMEGA 8-16 TQ&lt;br /&gt;
* 3,3V Laengsregler (LT1086-Serie z.&amp;amp;nbsp;B.)  ||||| =&amp;gt; vgl z.&amp;amp;nbsp;B. [http://reichelt.de/?ARTIKEL=LT%201086%20CM3%2C3 LT 1086 CM3,3] (SMD) oder [http://reichelt.de/?ARTIKEL=LT%201086%20CT3%2C3 LT 1086 CT3,3] (TO-220) bei Reichelt&lt;br /&gt;
* Flexible Messleitungen: Wie gesagt Reichelt bietet ja die ganze Palette an Bananen/Laborsteckern, Krokodilklemmen usw. an, nur die Leitungen dazu fehlen im Programm.  (Sind schon im Sortiment. Fertig konfektionierte z.&amp;amp;nbsp;B.: ML 100 SW, Meterware z.&amp;amp;nbsp;B.: MESSLEITUNG 10SW)&lt;br /&gt;
* FTDI USB Chips  ||||| ||||| ||||| ||||| ||||| ||| =&amp;gt; Best-Nr. FT232BL, FT232RL (sehr interessant), FT245BM und FT2232BM (2xUART auf USB)(noch nicht unter USB einsortiert)&lt;br /&gt;
* CAN-Bus Controller MCP2515  |||||&lt;br /&gt;
* VLSI MP3 Decoder  ||||| ||||| ||||| | z.Zt. unter CAN-Bus(!) einsortiert. Bitte auch die neuen Gehäuse (ROHS) und Typen mit ins Angebot nehmen.&lt;br /&gt;
* Atmel AT90CAN128 ||||| |&lt;br /&gt;
* MMC / SDC slot  ||||| ||||| ||||| ||||| ||||| ||||| ||||| ||||| ||||| ||||| ==&amp;gt; Bestell-Nr.: CONNECTOR MMC 11, CONNECTOR MMC 12, CONNECTOR SD 21 und CONNECTOR SD 22&lt;br /&gt;
* lineare Potentiometer als Schiebepoti ||||| | - Bestell-Nr. PSM-LIN* (&amp;quot;mono&amp;quot;) PSS-LIN* (&amp;quot;stereo&amp;quot;)&lt;br /&gt;
* Echtzeituhr DALAS DS1307 (auch SMD) ||||||| - Bestell-Nr. DS1307/DS1307Z&lt;br /&gt;
* Konkret: Neuer PIC ... und PIC18F2550 ||||| ||| &lt;br /&gt;
* MSP430F1232 |&lt;br /&gt;
* Fädelstift, Draht und Kämme ||||| || - Bestell-Nr. Fädelstift/Fädeldraht/Fädelkamm (Warum sind diese Stifte ùnd der Draht nur so &amp;quot;erschreckend&amp;quot; teuer? =&amp;gt; immerhin billiger als bei C...) (vielleicht weil jeder die nur 1x kauft und dann mit Draht aus anderen Quellen selber neu bewickelt?? ;-)&lt;br /&gt;
* Mini-GPS-Module ||||| ||||| ||||| ||||| ||| - Bestell-Nr. GPS ET 102/GPS ET 202/GPS EM 401&lt;br /&gt;
* Atmel ATmega48, ATmega168, ATtiny13 ||||| ||||| ||||| | (im neuen katalog und online verfügbar!)&lt;br /&gt;
* CompactFlash Stecker ||||| ||||| ||||| || - Bestell-Nr. connector CF 01/ Connector CF 02 &lt;br /&gt;
* DCF77 Empfangsmodule  ||||| ||||| ||||| ||||| ||||| ||||| ||||| ||||| ||||| ||||| ||||| ||||| (DCF77 Modul) (4.5.2005 ist jetzt verfügbar unter DCF77 MODUL, aber leider 50% teurer als bei der Konkurenz, störempfindlicher, grotesk schwache Ausgangstreiber)&lt;br /&gt;
* Microchip PIC 12F683 (8pin PIC mit PWM !) =&amp;gt; Bereits im Sortiment: Best. Nr PIC 12F683-I/P bzw. PIC 12F683-I/SN &lt;br /&gt;
* MSP430F135 ||||| ||||| | |||||  (MSP430F135 im Programm Bestellnr.: MSP430F135 IPM)&lt;br /&gt;
* SMD 0 Ohm in Bauform 0805 |||| -&amp;gt; SMD-0805 0,00&lt;br /&gt;
* Shunt-Widerstände  ||||| ||||| ||||| ||||| |  (neu im Sortiment: Widerstandsdraht, Best.-Nr. &amp;quot;RD100/x,xx&amp;quot;, Leider nur in teuren 100g Spulen)&lt;br /&gt;
* dünner isolierter Draht, wie Klingeldraht nur dünner, vielleicht 0.2-0.3mm zum Fädeln von Platinen |||| =&amp;gt; Fädeldraht nun im Sortiment&lt;br /&gt;
* dünner Silberdraht zur Verdrahtung auf Lochrasterplatinen ||||| |   (mögl. bereits im Sortiment &amp;quot;SILBER 0,6MM&amp;quot; ???)Kupferlackdraht geht nicht?&lt;br /&gt;
* Hartmetallbohrer in mehr verschiedenen Größen (z.&amp;amp;nbsp;B. 0,6mm 0,8mm 1,1mm 1,2mm etc.) ||||| |||| =&amp;gt; Gibt es beides Bestellnummern: &amp;quot;Bohrerset&amp;quot; oder für einzelne Bohrer &amp;quot;Bohrer + Größe in mm&amp;quot; Bsp: &amp;quot;Bohrer 0,6&amp;quot; =&amp;gt; die kosten aber einiges, eine etwas preiswertere Alternative wäre auch nicht schlecht...&lt;br /&gt;
* 68HC908GP32 |&lt;br /&gt;
* überhaupt: Freescale 68HC908- und vor allem 68HCS08-Mikrocontroller fehlen total im Sortiment!&lt;br /&gt;
* RJ45-Buchse ||| - schon im Sortiment: MEBP 8-8&#039;&#039;x&#039;&#039; unter Modular-Stecker bei TK&lt;br /&gt;
* Elektromotoren ||||| |||| (Suche: Gleichstommotor)&lt;br /&gt;
* Microchip ICD2 || =&amp;gt; Bestell-Nr.: DV 164005 &amp;lt;= Fehlt im Papierkatalog&lt;br /&gt;
* 14,7456 MHz Quarze ||||| ||||| ||||| ||||| ||| (Bst: 14,7456-HC18)&lt;br /&gt;
* SMD Widerstande in Bauform 1206 (SMD 1/4W...)&lt;br /&gt;
* Atmel Atmega 128 in TQFP || (ATMEGA 128-16 TQ)&lt;br /&gt;
* Atmel Atmega 169 in TQFP || (ATMEGA 169-16 TQ)&lt;br /&gt;
* Atmel ATMEGA1280 ||||| ||||| ||||| |||| (ATMEGA 1280-16AU, ATMEGA 1280V-8AU)&lt;br /&gt;
* Atmel ATMEGA8515 | (ATMEGA 8515-*)&lt;br /&gt;
* Atmel ATtiny24/44 ||||| ||||| (ATTINY 24-*, ATTINY 44-*)&lt;br /&gt;
* Atmel ATtiny25/85 ||||| ||||| ||||| ||||| ||||| ||||| ||||| ||||| | (ATTINY-25-*, ATTINY-85-* gelistet aber erst verfuegbar ab II/07)&lt;br /&gt;
* Atmel AT91SAM7S64, AT91SAM7S256 ||||| ||||| ||||| ||||| ||||| ||||| ||||| ||||| ||||| |||| (suche AT91*)&lt;br /&gt;
* Atmel AT91SAM7X64-256 ||||| ||| (suche AT91*)&lt;br /&gt;
* TI MSP430F1611 (10k RAM, 48k Flash) ||||| ||||| ||||| ||||| ||||| ||||| || (MSP430F1611 IPM)&lt;br /&gt;
* PCA9306  Dual Bi-Directional I2C-Bus and SMBus Voltage Level-Translator ||&lt;br /&gt;
* PCA9531D  8Bit I2C_BUS LED-Dimmer ||||| |||||&lt;br /&gt;
* PCA9551D  8Bit I2C-BUS LED-Blinker ||||| ||||&lt;br /&gt;
* PCA9530D  2Bit I2C_BUS LED-Dimmer ||||| |&lt;br /&gt;
* PCA9532D 16Bit I2C_BUS LED-Dimmer ||||| |||||&lt;br /&gt;
* PCA9533D  4Bit I2C_BUS LED-Dimmer ||||| ||||&lt;br /&gt;
* PCA9550D  2Bit I2C-BUS LED-Blinker ||||| |&lt;br /&gt;
* PCA9553D  4Bit I2C-BUS LED-Blinker ||||| ||&lt;br /&gt;
* PCA9552D 16Bit I2C-BUS LED-Blinker ||||| |||&lt;br /&gt;
* Microchip PIC 18F2550 (USB, 32 KBytes Flash) | (bereits im Sortiment)&lt;br /&gt;
* Microchip PIC 16F628A (weil: besser als 16F628) ||||&lt;br /&gt;
* Microchip PIC 16F648 (weil mehr Programmspeicher, als 16F628) |||||&lt;br /&gt;
* Microchip PIC 16F684 ||||| &lt;br /&gt;
* Microchip PIC 16F688 ||||| ||&lt;br /&gt;
* Microchip PIC 16F690 ||||| ||||| |||&lt;br /&gt;
* Atmel ATtiny84 ||||| ||||| |||| (gelistet aber erst verfuegbar ab II/07)&lt;br /&gt;
* TI MSP430F169 |&lt;br /&gt;
* FT245RL (alt bekannte FTDI Chips in neuer und besserer Version, FT232RL bereits vorhanden) ||||| ||&lt;br /&gt;
* 3,3V Längsregler SMD Ultra Low drop |||| (-&amp;gt; Zetex)&lt;br /&gt;
* Schiebepotis mit passenden Knöpfen | (Bestell-Nr. PSM-LIN* (&amp;quot;mono&amp;quot;) PSS-LIN* (&amp;quot;stereo&amp;quot;) nicht passed?) |&lt;br /&gt;
* OLED-Displays (zum Beispiel: [http://www.litearray.com/products-oled.php]) || (Reichelt hat jetzt Osram Pictiva Oleds im Programm. Nach &amp;quot;Pictiva&amp;quot; suchen)&lt;br /&gt;
* OSRAM &amp;quot;Golden Dragon&amp;quot; LEDs (http://www.osram-os.com/goldendragon) ||||&lt;br /&gt;
* Microcontroller mit USB-Anschluss (von Cypress oder Atmel in PDIP z.&amp;amp;nbsp;B. AT89C5131, AT43USB355, CY7C637xx) ||||| ||||| ||||| ||||| |||||  -&amp;gt;Bereits im Sortiment: Cypress EZ-USB TQFP-44 Best. Nr AN2131 SC, Atmel AT89C5131 SO-28/PLCC-52&lt;br /&gt;
* Renesas R8C &lt;br /&gt;
* zu Schaltreglern LM257x u.a. passende Speicherspulen mit hohem L , niedrigem R und großer Strombelastbarkeit (zB. Würth WE-PD4) (keine &amp;quot;Entstörspulen&amp;quot;) |||||  |||||  |||||  ||||| |||||  ||||| |||| ||||| ||||| ||||| ||||| ||||| ||||| ||||| ||||| ||||| ||||| ||||| ||||| || (suche L-PIS*)&lt;br /&gt;
* IL300 (linear Optokoppler z.&amp;amp;nbsp;B. von Vishay egal ob DIP oder SMD) ||||| ||||&lt;br /&gt;
* IL300H (linear Optokoppler von Siemens als DIP) - andere IL300 Varianten im Programm |||&lt;br /&gt;
* &amp;quot;optische&amp;quot; Drehgeber Fabrikat Grayhill sind lieferbar (Bst. ENC 62P22-*)&lt;br /&gt;
* mechanische Drehimpulsgeber von Alps im Programm (suche STEC*)&lt;br /&gt;
** Drehimpulsgeber (konkreter Vorschlag von O.R.: PEC16-4220F-S0024 von Bourns)  ||||| ||||| ||||| ||||| ||||| ||||| ||||| ||||| ||||| ||||| ||||| ||||| ||||| ||||| ||||| ||||| ||||| ||||| ||||| ||||| ||||| ||||| ||||| ||||| ||||| ||||| ||||| ||||| ||||| ||||| ||||| ||||| ||||| ||||| |||&lt;br /&gt;
** Drehimpulsgeber- weiterer Vorschlag: ALPS Encoder ST EC 11B  ||||| ||||| ||||| ||||| ||||| ||||| ||||| ||||| ||||| ||||| ||||| ||||| |||| Im Programm (STEC11B01)&lt;br /&gt;
* PCA9633D16 4-bit I2C-bus LED driver ||&lt;br /&gt;
* I²C-Bus to 1-Wire DALLAS DS2482-100 bzw. DS2482-800  ||||| ||||| ||||| ||||| ||||| ||||&lt;br /&gt;
* Step-Down-Konverter in SMD Bauform (z.b. MC 34063): ||||| (-&amp;gt;Artikel-Nr: MC 34063 AD)&lt;br /&gt;
* Preiswerte Kontaktierungen für SD/MMC  ||| (Bereits im Programm: Bestell-Nummern:  CONNECTOR MMC 11 / CONNECTOR MMC 12 / CONNECTOR SD 21 / CONNECTOR SD 22) // ~9 EUR sind wohl kaum preiswert!&lt;br /&gt;
* Eisen(III)-Chlorid  ||||| ||||| ||||| ||||| ||||| ||||| ||||| ||||| ||||| ||||| ||||| ||||| ||||| ||||| ||||| ||||| ||||| ||||| ||||| ||||| ||||| ||||| |||||&lt;br /&gt;
* EA DOG-M128 128x64 Grafikdisplay aufbau ähnlich EA DOGM162 |||||&lt;br /&gt;
* 3,3V-Längsregler SMD zu vernünfitgen Preisen (Bsp: LF33 --&amp;gt; Best.Nr.: LF 33 CV, Preis: 0,76&amp;amp;#8364;)(der LT1086 kostet 4 Euro) ||||| ||||| ||||| ||||| ||||| 	||||| ||||| ||||| || -&amp;gt; LT1117 CST-3.3V für 1.55 €&lt;br /&gt;
* Spannungsregler in SMD-Version (7805 etc., nicht nur der 78L05) ||||| ||||| ||||| ||||| ||||| ||||| ||| -&amp;gt; LT1117-ADJ für 1.55€&lt;br /&gt;
* TSic Temperatursensoren von ZMD ||| -&amp;gt; TSIC&lt;br /&gt;
* Leiterplattenbuchse Hirschmann 4mm auch in *rot* (gab es schonmal als &amp;quot;PB 4 RT) || -&amp;gt; wieder als PB 4 RT erhältlich, letzte Woche 3 Stück geliefert bekommen; Stückpreis 1,25€&lt;br /&gt;
* MCP25050 CAN-Bus Input/Output Expander ||||| |||| (MCP 25050-I/*)&lt;br /&gt;
* Ethernet-Controller RTL8019AS ||||| ||||| ||||| ||||| ||||| ||||| ||||| ||||| ||||| ||||| ||||| ||||| ||||| ||||| ||||| ||||| ||||| ||||| ||||| ||||| ||||| ||||| ||||| ||||| ||||| ||||| ||||| ||||| ||||| ||||| ||||| ||||| ||||| ||||| ||||| ||||| ||||| ||||| ||||| ||||| ||||| ||||| ||||| ||||| ||||| ||||| ||||| ||||| ||||| ||||| ||||| ||||| ||||| ||||| ||||| ||||| ||||| ||||| ||||| ||||| ||||| ||||| ||||| ||||| ||||| ||||| ||||| || (erhältlich: RTL 8019AS)&lt;br /&gt;
* SPI-Ethernet-Controller ENC28J60 (erhältlich: ENC 28J60-I/*)&lt;br /&gt;
* &#039;&#039;&#039;Grundton&#039;&#039;&#039;-Quarz (25,0000 MHz Grundton, erhältlich) ||||| ||||| ||||| ||||| ||||| ||||| ||||| ||||| ||||| ||||| ||||| ||||| ||||| ||||| ||||| ||||| ||||| ||||| ||||| ||||| ||||| ||||| |||| (wirklich erhältlich? Als Keramik-SMD-Quarz, 25.0MHz, 25,000000-MJ)&lt;br /&gt;
* Microchip PIC 18F4550 (PIC mit USB) ||||| ||||| ||||| ||||| ||||| ||||| |||&lt;br /&gt;
* Microchip PIC 18F2585 ||||&lt;br /&gt;
&lt;br /&gt;
= Sonstiges =&lt;br /&gt;
&lt;br /&gt;
== zur Webseite ==&lt;br /&gt;
&lt;br /&gt;
In &amp;quot;Neu in unserem Shop&amp;quot;/Neue Artikel werden unter Bauelemente u.a. Computerkabel und PC-Speicher angezeigt (Anlass Stand 5/2010, ist aber schon früher aufgefallen). Diese Teile würden zumindest etwas besser in PC-Technik passen. (...und die Freude des Elektronikbastlers über eine Anzahl neuer Bauelemente würde auch nach Auswahl der Details anhalten, wenn es nicht &amp;quot;nur&amp;quot; so etwas wie USB-Kabel sind.)&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
myReichelt ermöglicht: &lt;br /&gt;
* Warenkorbspeicherung&lt;br /&gt;
* öffentlicher Warenkorb&lt;br /&gt;
* CSV-Import, -Export&lt;br /&gt;
&lt;br /&gt;
zu myReichelt siehe auch http://www.mikrocontroller.net/topic/62628&lt;br /&gt;
&lt;br /&gt;
Eine Webseite ohne Frames ist eigentlich heute Stand der Technik. Oder vielleicht ist es das auch nicht mehr - ich weiss es nicht aber nach meiner Auffassung sollte es Stand der Technik sein. Denn dann hat man für jedes Produkt auch einen eindeutigen Link und kann ggf. auch in Beiträgen, Mails und Anfragen darauf verlinken.&lt;br /&gt;
&lt;br /&gt;
Anmerkung dazu:&lt;br /&gt;
Verlinken auf Artikel geht schon, und zwar in der Form:&lt;br /&gt;
http://www.reichelt.de/?ARTIKEL=ATMEGA%208-16%20DIP&lt;br /&gt;
bzw.&lt;br /&gt;
http://www.reichelt.de/index.html?ARTIKEL=ATMEGA%208-16%20DIP&lt;br /&gt;
&lt;br /&gt;
Neu zu lesen unter &amp;quot;Info zum Shop&amp;quot;:&lt;br /&gt;
Zitat:&lt;br /&gt;
&amp;quot;Frames&lt;br /&gt;
In vielen Votings wurden wir auf die Verwendung von Frames hingewiesen und dass diese Technik nicht mehr -State Of The Art- sei. Dieser Meinung schliessen wir uns in vollem Umfang an. In unserem neuen Shop werden KEINE FRAMES verwendet.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Reichelt selbst macht das in seinen PDF-Prospekten auch so. Das Problem liegt nur darin, die URL jedesmal von Hand zusammenzubauen (und dabei auf die Ersetzung der Leerzeichen durch %20 zu achten) oder von einer kopierten URL alles überflüssige zu entfernen.&lt;br /&gt;
&lt;br /&gt;
Einfach mal einen &amp;quot;Permalink&amp;quot; button neben &amp;quot;Artikel empfehlen&amp;quot; ? Oder zurück mit der früheren Druckansicht.&lt;br /&gt;
&lt;br /&gt;
Hinweis: Viele Browser ersetzen Leerzeichen im Adressfeld automatisch durch %20. &lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Ferner sollte es möglich sein, Bestellungen, welche noch nicht bearbeitet werden zu verändern, also z.&amp;amp;nbsp;B. was hinzuzufügen oder zu entfernen. Bei einer Wartezeit von ca. 3 Tagen bis zum Versand fällt einem doch noch was ein :-)&lt;br /&gt;
&lt;br /&gt;
Das wird bereits gemacht! Einfach E-Mail an service@reichelt.de mit den Bauteilen, die man noch haben will. I-Net-Nummer nicht vergessen.&lt;br /&gt;
&lt;br /&gt;
Andere Möglichkeit ist anrufen, das mache ich eh immer, um eventuell nicht lieferbare Dinge zu streichen oder zu ersetzen. Geht immer, es sei denn Lieferung wird schon verpackt.&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Shopprogramm: Wäre es nicht komfortabel, ein Programm auf dem heimischen Rechner zu haben, welches das aktuelle Sortiment mit den aktuellen Preisen führt, wo dann auch offline Bestellungen zusammengestellt und hochgeladen werden können? So ließen sich die Merklisten auch besser verwalten.&lt;br /&gt;
&lt;br /&gt;
Ja, das fände ich auch sehr toll, sollte man mal drüber nachdenken.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Passwortschutz: Die derzeitige Lösung der Anmeldung im Shop ist für den heutigen Stand der Dinge recht unsicher. Ein zur Kundennummer gehörendes Passwort sollte schon sein. Was soll schon passieren, die Versandadresse ist ja bekannt, und wenn jemand anderes auf meinen Namen bestellt. lässt er sich über die Versandadresse herrausfinden, außerdem weiß ja auch nicht jeder meine Kundennummer.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Eine Art Lagerbestand im Onlineshop wäre sinnvoll. Es ist mehr als ärgerlich, wenn bei einer Bestellung z.&amp;amp;nbsp;B. Kleinteile wie Kondensatoren oder Schalter fehlen, weil sie nicht auf Lager waren. Dabei gibt es gerade bei solchen Teilen genug Alternativen, sei es Farbe, Bauart oder Wert, auf die man umsteigen könnte, damit die Bestellung vollständig ist. Es würde ja vollkommen ausreichen den Bestand in Form einer Ampel, wie bei anderen Shops, mit grün, gelb und rot zu realisieren.&lt;br /&gt;
&lt;br /&gt;
Im Warenkorb werden Artikel, die nicht auf Lager sind, mittlerweile auch so gekennzeichnet.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Früher würden neue Artikel mit einem gelben &amp;quot;NEU&amp;quot; gekennzeichnet, jetzt ist das nicht mehr so. Hätte gerne wieder einen Überblick was neu hinzugekommen ist ohne jede Artikelgruppe aufrufen zu müssen.&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Nummerierung der Bauteile: Warum wird der Warenkorb nicht nummeriert. Ich hasse es wenn ich manuell mit Hand zählen muss! Das ist auch nervig wenn man manuell per Hand vergleichen will!!&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Virtuelle Bauteilekisten (vbox): Wer bei Reichelt bestellt ordert oft viele viele Kleinteile. Wenn man nun ein Gerät zum wiederholten mal baut, muss man alle Teile erneut eingeben. Könnte ich nun neben dem Warenkorb auch noch virtuelle Bauteilekisten füllen würde das neue Bestellungen sehr beschleunigen. Der Kunde als Wiederholungstäter sozusagen.&lt;br /&gt;
&lt;br /&gt;
Konkret:&lt;br /&gt;
Ich habe vier verschiedene Elektronikprojekte entwickelt.Für jedes dieser Projekte lege ich bei Reichelt.de eine virtuelle Bauteilekiste mit eigenem Namen an. Die Zusammenstellung der Artikel funktioniert wie beim normalen Warenkorb. Wenn ich nun ein Projekt erneut bauen möchte, kopiere ich einfach den Inhalt der virtuellen Bauteilekiste per Knopfdruck in meinen Warenkorb. Wenn ich Projekt2 also dreimal nachbauen möchte kopiere ich die virtuelle Bauteilebox &amp;quot;Projekt2&amp;quot; dreifach in den Warenkorb.&lt;br /&gt;
Schön wäre es auch die virtuellen Bauteilekisten mit Schaltplan und ev. Eagle  - Dateien veröffentlichen zu können.&lt;br /&gt;
&lt;br /&gt;
Und wieso ist der Login, den es früher mal gab weg? Da konnte man zumindest den aktuellen Warenkorb speichern soweit ich mich erinnern kann, aber seit der neuen Website gibt&#039;s den Login nicht mehr. Ausserdem muss ich jetzt jedesmal meine Kundennummer rauskramen um meine Bestellung abzusenden - Conrad löst das beispielsweise besser. (dafür haben die aber auch ne besch...eidene Suchfunktion und nen unübersichtlichen Shop)&lt;br /&gt;
&lt;br /&gt;
Nebenanregung:&lt;br /&gt;
Damit die &amp;quot;Bauteilekisten&amp;quot; nicht unmengen Platz beim Anbieter verschwenden könnte man diese auslagern.&lt;br /&gt;
Also Nach erstellen Download als einfaches File und bei Bedarf einfach bei Bestellung übertragen.&lt;br /&gt;
So könnte sie jeder in Ruhe offline vorbereiten und verwalten.&lt;br /&gt;
&lt;br /&gt;
IDEE: Offenlegung der Datenbank: Offenlegung der Datenbank oder zumindest Export für die User. Somit koennten die Datenbank in eine Art Datenbank gespeichert werden. Als Katalogprogramm koennte dann soetwas ähnliches wie das von Segor zum Einsatz kommen. Gibt es einen Standard dann koennten  Reichelt, Conrad, Segor, etc. mit einem Programm genutzt und verglichen werden:&lt;br /&gt;
siehe auch http://www.mikrocontroller.net/forum/read-7-363596.html&lt;br /&gt;
Programmierunterstuetzung findet sich bestimmt. Abgesehen davon haben die Distributoren den Vorteil die Katalogdaten übers Internet upzudaten.&lt;br /&gt;
&lt;br /&gt;
Zum offenlegen der Datenbank: Wie wäre es mit einem Webservice, mit dem man über SOAP auf die Datenbank zugreifen kann? Ähnlich wie bei Amazon oder auch Google.&lt;br /&gt;
&lt;br /&gt;
Lösung in HTML:&amp;lt;br/&amp;gt;&lt;br /&gt;
Ich hatte für das Projekt [http://www.mikrocontroller.net/topic/82127 &amp;quot;Webserver ATmega32/644DIP ENC28J60&amp;quot;] ein Bestellformular ([http://www.mikrocontroller.net/attachment/29451/reichelt.htm reichelt.htm] &amp;lt;span style=&amp;quot;font-size: 0.8em;&amp;quot;&amp;gt;[Version vom 22.12.2007]&amp;lt;/span&amp;gt;) gebastelt um schnell alle nötigen teile in den Reichelt – Warenkorb zulegen. Mit etwas HTML-Kenntnis dürfte eine Anpassung nicht das Problem darstellen.&amp;lt;br/&amp;gt;&lt;br /&gt;
In JavaScript, des &#039;&#039;&#039;reichelt.htm&#039;&#039;&#039; Bestellformulars, die Funktion &amp;lt;code&amp;gt;&#039;&#039;&#039;send()&#039;&#039;&#039; &#039;&#039;Zeile 42:&#039;&#039; var maxElements = 40;&amp;lt;/code&amp;gt; die &#039;&#039;&#039;40&#039;&#039;&#039; durch die Anzahl der unterschiedlichen Bauteile Anpassen.&lt;br /&gt;
&lt;br /&gt;
== zu Artikeln ==&lt;br /&gt;
&lt;br /&gt;
* Kupferlackdraht: Auf der Website sind Plastikspulen abgebildet, geliefert wird jedoch seit Jahren schon lose aufgewickelter Draht, der so schlecht zu verarbeiten ist. Bitte ändern! Am besten vernünftigen Draht auf Spulen, zumindest aber das Bild anpassen.&lt;br /&gt;
&lt;br /&gt;
* Spitze fände ich eine verbesserte Suche für Gehäuse. Oft stehe ich vor dem Problem, meine Baugruppe ist so-und-so groß und ich brauche ein Gehäuse, in das diese Baugruppe hineinpasst. Zur Zeit muss ich mich manuell durch alle Gehäusegrößen &amp;quot;durchwühlen&amp;quot;, bis ich ein passendes gefunden habe. Die Suche stelle ich mir so vor: Ich gebe die Maße ein, die das Gehäuse mindestens haben &#039;&#039;muss&#039;&#039;, und bekomme alle Gehäuse angezeigt, die genau so groß oder etwas größer sind als meine Vorgaben.&lt;br /&gt;
&lt;br /&gt;
== Abwicklung ==&lt;br /&gt;
&lt;br /&gt;
* Sammelbestellung: Wenn ich etwas bei Reichelt bestelle, bestelle ich für meine Kollegen auch immer etwas mit. Wenn dann das Päckchen kommt, heisst es sortieren. Wer hatte von was, wie viel? Danach kommt das rechnen dran. Ein besonderes Highlight, sind die Nettopreise. Und auch das Verteilen der Versandkosten ist nicht ohne. Währe es nicht möglich, im Bestellvorgang eine Zuordnung zu Personen oder Projekten zu realisieren, und die Zwischensummen der Personen oder Projekte auf der Rechnung oder per Mail anzugeben. Ein Schmankerl wäre die Angabe der Bruttopreise inklusive der anteiligen Versandkosten.&lt;br /&gt;
** Wahrscheinlich nicht möglich, siehe AGB-Klausel zu Massenbestellungen. &amp;quot;Garantieberechtigt&amp;quot; ist auch immer nur der ursprüngliche Besteller.&lt;br /&gt;
** Welche Klausel? Mir fällt nur 13.3 ins Auge...&lt;br /&gt;
&lt;br /&gt;
== zu dieser Wunschliste ==&lt;br /&gt;
&lt;br /&gt;
(gehört eigentlich in Diskussion)&lt;br /&gt;
&lt;br /&gt;
* Wäre es möglich ein Script zu bauen, welches man ab und zu über diesen Artikel jagt und das die Einträge nach Anzahl der Striche ordnet? =&amp;gt; Formatierung als Tabelle (1. Spalte: das Teil, 2. Spalte: die Striche) würde auch schon helfen.&lt;br /&gt;
** Das geht kaum, weil | ein SOnderzeichen in Vorlagen ist.&lt;br /&gt;
&lt;br /&gt;
* Dass hier jeder immer nur einen Strich macht, glaube ich nicht! Ein Script was pro IP nur einen Strich zulässt wäre gut. -&amp;gt; Naja, alle 24h spätestens gibt es eigendlich eine neue IP...   Antwort: Lässt sich sehr leicht überprüfen mit Artikel -&amp;gt; Versionen&lt;br /&gt;
&lt;br /&gt;
* Warum macht der 5te nicht anstelle |||| ein V :-) und anstelle vom nächsten V kommt dann ein X ....Daniel [[Benutzer:84.179.17.164|84.179.17.164]] 20:11, 4. Feb 2006 (CET)&lt;br /&gt;
&lt;br /&gt;
* Wenn Reichelt was aus der Liste neu ins Programm aufnimmt wäre eine Benachrichtigung per Newsletter oder RSS nett. Oder zumindest eine Rubrik &amp;quot;Seit XX.XX.200X neu im Programm&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
== Logbuch ==&lt;br /&gt;
&lt;br /&gt;
8.4.2010: Mail an Reichelt geschickt und an die Liste erinnert.&lt;br /&gt;
&lt;br /&gt;
2.10.2009: REVERT auf die Version vor dem 20.Jul.2009 12:47. Da der Artikel von 193.200.150.82 &amp;quot;verdoppelt&amp;quot; wurde. D.h. alles war doppelt vorhanden und die Einleitung gelöscht&lt;br /&gt;
&lt;br /&gt;
19.06.2009: Hab mal den Kram unter der Rubrik &amp;quot;Webseite&amp;quot; entfernt/zusammengefasst der schon realisiert wurde. -- Tobias&lt;br /&gt;
&lt;br /&gt;
12.03.2009: Da haben wir ja alle verpennt, Reichelt in 2008 mal wieder an die Liste zu erinnern. Ich hab das jetzt mal nachgeholt und eine Mail an Reichelt geschickt. -- [http://www.reintechnisch.de Winfried Mueller]&lt;br /&gt;
&lt;br /&gt;
03.08.2007: Das Feld für &amp;quot;neue Artikel&amp;quot; scheint aus dem Reichelt Shop entfernt worden zu sein, schade da man so schnell schauen konnte was neu im Programm ist, nun ist wieder Katalogblättern angesagt. - Nicht nachvollziehbar. siehe Startseite-&amp;gt;Service-&amp;gt;Neu in unserem Shop &lt;br /&gt;
&lt;br /&gt;
18.05.2007: Habe Reichelt an diese Liste erinnert. -- Robin Tönniges&lt;br /&gt;
&lt;br /&gt;
14.11.2006 Ich lese mir gerade euer Wishlist durch. Finde ich gut! Aber wie ihr &lt;br /&gt;
hier (Logbuch) über Reichelt kritisiert finde ich nicht fair! Die haben genug zu arbeiten! Bitte keine Vorurteile! Um das gehts mir hauptsächlich!&lt;br /&gt;
Macht weiter nur nicht so! &lt;br /&gt;
P.S. Schöne inforeiche Site&lt;br /&gt;
Steven&lt;br /&gt;
&lt;br /&gt;
6.8.2006 Habe eine umfassende Kritik zu Reichelts neuem Webshop geschrieben und dabei auf unsere Wünsche bzl. Webseite, insbesondere &amp;quot;Virtuelle Bauteilebox&amp;quot; und &amp;quot;Gehäusesuche&amp;quot; hingewiesen. Verlinkung auf diese Seite ist auch erwähnt worden.&lt;br /&gt;
&lt;br /&gt;
5.8.2006 Hurra, Reichelt bietet endlich den ATtiny13V an! Jetzt können wir  Batteriebetriebene Geräte (2,4-3V) bauen. By the way: Gibt es blaue LED&#039;s, die dazu passen?&lt;br /&gt;
&lt;br /&gt;
14.7.2006 Reichelt antwortete: (Zu lang, deshalb hier nur der Inhalt:) Wir haben                                                                                    ihre mail zur Kenntnis genommen (Forum wird angeblich ab und zu immer wieder kontrolliert). Entscheidender Satz (Original eines Mitarbeiters:)....Ich denke jedoch, dass die meisten und&lt;br /&gt;
wichtigsten Wünsche zum Herbstkatalog eingelistet werden.&lt;br /&gt;
&lt;br /&gt;
14.7.2006 Reichelt erneut auf diesen Beitrag aufmerksam gemacht, erwarte Antwort.&lt;br /&gt;
&lt;br /&gt;
3.7.2006: beitz-online.de eine verlinkung gemailt. Ich hoffe das ist erlaubt.&lt;br /&gt;
&lt;br /&gt;
5.3.2006: Verlinkung gemailt&lt;br /&gt;
&lt;br /&gt;
12.10.2005: Verlinkung gemailt und gebeten sich darum zu kümmern&lt;br /&gt;
&lt;br /&gt;
07.10.2005: Reichelt eine Verlinkung gemailt und speziell auf LOW ESR Elkos und 433 Mhz Funkmodule hingewiesen. Mal sehen was die Antworten.&lt;br /&gt;
&lt;br /&gt;
08.07.2005: Reichelt bescheid gegeben, man möge mal wieder hier rein schauen -- Thomas O.&lt;br /&gt;
&lt;br /&gt;
13.05.2005: Antwort von Reichelt: der Versand ins Ausland bleibt leider bei 150 Eur -- nurmi&lt;br /&gt;
&lt;br /&gt;
09.05.2005: Reichelt bescheid gegeben, man möge mal wieder hier rein schauen -- nurmi&lt;br /&gt;
&lt;br /&gt;
08.05.2005: Pflege der Liste hier: Wenn ihr was in der Liste seht, was bereits schon im Angebot ist, löscht es bitte! Sonst ist das hier bald ein unüberschaubares Chaos. -- [http://www.reintechnisch.de Winfried Mueller]&lt;br /&gt;
&lt;br /&gt;
08.02.2005: Positives Feedback von Reichelt. Freuen sich über diese Form der Anregung. In der 2. Märzhälfte sollen weitere Produkte in den neuen Katalog einfließen. -- [http://www.reintechnisch.de Winfried Mueller]&lt;br /&gt;
&lt;br /&gt;
07.02.2005: Reichelt bescheid gegeben, man möge mal wieder hier rein schauen -- [http://www.reintechnisch.de Winfried Mueller]&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Bauteile]]&lt;/div&gt;</summary>
		<author><name>Wuschelkuchen</name></author>
	</entry>
</feed>