<?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=131.130.1.135</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=131.130.1.135"/>
	<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/articles/Spezial:Beitr%C3%A4ge/131.130.1.135"/>
	<updated>2026-04-10T21:36:41Z</updated>
	<subtitle>Benutzerbeiträge</subtitle>
	<generator>MediaWiki 1.39.7</generator>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=Diskussion:AVR32&amp;diff=15012</id>
		<title>Diskussion:AVR32</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=Diskussion:AVR32&amp;diff=15012"/>
		<updated>2006-05-11T19:36:40Z</updated>

		<summary type="html">&lt;p&gt;131.130.1.135: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;nachdem der gcc unter der gpl steht muß atmel meinem verständnis nach zumindest die avr32-portierung des gcc ebenfalls under der gpl freigeben.&lt;br /&gt;
auf etwaige zusätzliche schöne entwicklungsumgebungen ala avr studio trifft das natürlich nicht zu&lt;/div&gt;</summary>
		<author><name>131.130.1.135</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=Logic_Analyzer-Projekt:_Ideen_zur_Hardware&amp;diff=9251</id>
		<title>Logic Analyzer-Projekt: Ideen zur Hardware</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=Logic_Analyzer-Projekt:_Ideen_zur_Hardware&amp;diff=9251"/>
		<updated>2005-09-20T22:19:16Z</updated>

		<summary type="html">&lt;p&gt;131.130.1.135: /* Status */ genetivapostroph gibts im deitschen net&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;hier mal das Lastenheft für den Logic Analyser (LA). Bitte je nach Anforderung einen Strich mittels ALT GR + &amp;lt;&amp;gt; Taste links neben dem Ypsilon.&lt;br /&gt;
Die Aufteilung könnt ihr ja ändern/erweitern falls was fehlt. Ich gebe mal meine Maximalanforderungen ein.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Kanalanzahl&#039;&#039;&#039;&lt;br /&gt;
* .8 Kanäle: ||&lt;br /&gt;
* 16 Kanäle: ||||| ||||&lt;br /&gt;
* 20 Kanäle: |&lt;br /&gt;
* 24 Kanäle: |&lt;br /&gt;
* 32 Kanäle: ||||&lt;br /&gt;
* Modulair (erweiterbar X mal 8/16 Kanäle): ||&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Samplingfrequenz&#039;&#039;&#039;&lt;br /&gt;
* ...8 MHz : |&lt;br /&gt;
* ..16 MHz : |&lt;br /&gt;
* ..32 MHz : ||&lt;br /&gt;
* .&amp;gt;32 MHz : ||||| ||||| |||&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Speichertiefe&#039;&#039;&#039;&lt;br /&gt;
*....32 kByte: |&lt;br /&gt;
*....64 kByte:&lt;br /&gt;
*...128 kByte: |&lt;br /&gt;
*...256 kByte: |&lt;br /&gt;
*...512 kByte: &lt;br /&gt;
*..1024 kByte: |&lt;br /&gt;
&lt;br /&gt;
Anmerkung: Wäre es nicht sinnvoller, die Speichertiefe in &amp;quot;Samples&amp;quot; anzugeben. So macht das nicht viel Sinn, da die Anzahl der Samples wenn man immer nur 8 Bits abspeichert ne andere ist als wie wenn man 32 Bits pro Sample speichert.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;integrierter Pattern Generator&#039;&#039;&#039;&lt;br /&gt;
* .8 Kanäle : |&lt;br /&gt;
* 16 Kanäle: &lt;br /&gt;
&lt;br /&gt;
Anm.: könnte bis zu einer gewissen Geschwindigkeit vom AVR erledigt werden... =&amp;gt; uU. Mega16 drauf&lt;br /&gt;
--[[Benutzer:Hans|Hans]] 14:16, 20. Jul 2005 (CEST)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Schnittstelle zum Computer&#039;&#039;&#039;&lt;br /&gt;
* Seriell syncron..........: |&lt;br /&gt;
* Seriell asyncron (RS232).: ||||&lt;br /&gt;
* USB......................: ||||| |||||||&lt;br /&gt;
* Parallelport.............: ||&lt;br /&gt;
* Ethernet.................: |&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Am PC läuft/wird laufen&#039;&#039;&#039;&lt;br /&gt;
* Windows .: ||||| ||||&lt;br /&gt;
* Linux   .: ||||| |||||&lt;br /&gt;
* MacOS X .: |&lt;br /&gt;
* Solaris .: |&lt;br /&gt;
* Anderes .: &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
= Status =&lt;br /&gt;
&lt;br /&gt;
(--[[Benutzer:84.182.244.75|84.182.244.75]] 10:43, 20. Sep 2005 (CEST) [ope])&lt;br /&gt;
&lt;br /&gt;
Da der Logic Analyzer (LA) Thread schnell wächst und entsprechend schwer zu verfolgen ist, ständig sich irgend etwas ändert, kommt hier eine Zusammenfassung der Diskussion. Ich versuche sie halbwegs aktuell zu halten, öfteres Vorbeischauen lohnt sich also.&lt;br /&gt;
&lt;br /&gt;
Eine fertige Lösung existiert jeodch noch nicht und einer alleine macht sich tot, zumal derjenige ja auch ein Real-Life hat und kein professioneller Designer für LA ist - daher ist das Projekt auf aktive Hilfe angewiesen sonst wird es sterben!&lt;br /&gt;
&lt;br /&gt;
Auch sind die Threads dazu etwas verteilt (thematisch). Hier die grossen:&lt;br /&gt;
&lt;br /&gt;
* [http://www.mikrocontroller.net/forum/read-1-204570.html#new Logic Analyzer bauen] (Initialthread)&lt;br /&gt;
* [http://www.mikrocontroller.net/forum/read-1-208137.html#new Pegelkomparator für High-Speed-Digital (Logic Analyzer)]&lt;br /&gt;
* [http://www.mikrocontroller.net/forum/read-9-234597.html#new Logic Analyzer Core (Logic Analyzer)]&lt;br /&gt;
* [http://www.mikrocontroller.net/forum/read-9-207389.html#new CPLD und AVR Kombo (Logic Analyzer)]&lt;br /&gt;
* [http://www.mikrocontroller.net/forum/read-9-221618.html#new Diverse Fragen bezueglich SRAM Anbindung]&lt;br /&gt;
* [http://www.mikrocontroller.net/forum/read-4-228557.html#new Programmieren des CPLDs über den AVR]&lt;br /&gt;
&lt;br /&gt;
Eine reine AVR Lösung scheint sich hier abzuzeichnen:&lt;br /&gt;
&lt;br /&gt;
* [http://www.mikrocontroller.net/forum/read-1-225498.html#new Logic Analyzer bauen, die 2.]&lt;br /&gt;
&lt;br /&gt;
= Das Ziel =&lt;br /&gt;
&lt;br /&gt;
Nun ja, preiswert und universell und für den Großteil der Probleme brauchbar soll er sein. Zudem sollen die Bauteile z.B. auch in Schweiz/Österreich gut verfügbar sein. Dass er sich mit einem LA der großen Hersteller messen lassen kann, ist aufgrund des Hobby Bereiches bzw. Proof-on-Concepts eher unwahrscheinlich. Unter den eben genanntenn Prämissen sollen die verfügbaren Mittel optimal genutzt werden.&lt;br /&gt;
&lt;br /&gt;
Je nach Ergebnis, Lust und Laune wird es irgendwann evtl. eine Fortsetzung geben - aber das ist Zukunftsmusik.&lt;br /&gt;
&lt;br /&gt;
= Grundlegende Überlegungen =&lt;br /&gt;
&lt;br /&gt;
Im Internet kann man verschiedene, einfache Konzepte für einen LA finden, z.B. mittels Parallelport. Forumgerecht, reicht für einen einfachen LA bereits ein Mikrokontroller aus, der seine Ports polled um so die Logik Pegel mitzuschneiden. Allerdings ist diese Lösung begrenzt, wenn es um höhere Taktraten geht.&lt;br /&gt;
&lt;br /&gt;
Eine erschwingliche Alternative stellt ein CPLD (Complex programmable logic devices) dar. Die CPLD z.B. von Xilinx können mit über 100MHz arbeiten und sind somit für diese Aufgabe prädestiniert. Leider ist die Anzahl der Macro Zellen zu gering, um eine hohe Speichertiefe zu erreichen. Daher werden die Daten vom CPLD in einem SRAM geschrieben. Damit ist der CPLD für die Triggerbedingungen des LA, dem Speicherinterface und natürlich dem eigentlichen sampeln der Eingänge verantwortlich. Der Mikrokontroller liest die Daten des SRAM über den CPLD aus und schickt sie an den Computer, übernimmt also die Kommunikation. Die Software stellt die gesampelten Daten sinnvoll und ansprechend dar.&lt;br /&gt;
&lt;br /&gt;
Um die Störungen gering zu halten, wird als Versorgungspannung 3.3V Vorzug gegeben - ironischer Weise sind die Xilinx CPLD XC95000XL mit dieser Spannung preiswerter als in der 5V Version.&lt;br /&gt;
&lt;br /&gt;
= Die Komponenten =&lt;br /&gt;
&lt;br /&gt;
== Der CPLD und das Speicherinterface ==&lt;br /&gt;
&lt;br /&gt;
Nach einigen Hin- und Her hat sich der XC95144XL TQ144 als beste Option herausgestellt. Auch FPGAs waren kurz im Gespräch, aufgrund der sich im Gespräch heraustellenden Komplexität. Allerdings war die Komplexität des FPGA und der Preis auch gleichzeitig das KO-Kriterium dafür.&lt;br /&gt;
&lt;br /&gt;
Kurzinfo XC95144XL TQ144 [http://www.mhl.tuc.gr/data_books/Xilinx/Xc9500/95144XL.pdf]:&lt;br /&gt;
&lt;br /&gt;
* 144Macro, 3.3V, 117 I/O, TQFP144 für ca. 10&amp;amp;#8364; &lt;br /&gt;
&lt;br /&gt;
Dieser bietet genug I/O um:&lt;br /&gt;
&lt;br /&gt;
* 2x SRAM 256k x 16 (jeweils 18 AD, 16 DB, 3 Ctrl)&lt;br /&gt;
* 2x 8-bit-LA-Channel&lt;br /&gt;
* Ext. TriggerIn, TriggerOut&lt;br /&gt;
* SPI Bus zum AVR &lt;br /&gt;
* JTAG&lt;br /&gt;
&lt;br /&gt;
anschliessen zu können.&lt;br /&gt;
&lt;br /&gt;
Der Grund für die 2 Speicherbänke liegen in den Möglichkeiten, sich den LA selbst zu konfigurieren für:&lt;br /&gt;
&lt;br /&gt;
* Interleave&lt;br /&gt;
* Speicherung eines Timestamp&lt;br /&gt;
* non-Interleave und non-Timestamp mit nur einem SRAM&lt;br /&gt;
&lt;br /&gt;
Beim Interleave werden zwei 16 Bit Samples im CPLD gelatched und gemeinsam auf den nun 32bit breiten Datenbus gelegt. Dabei sind die Adressen für die SRAMs folglich identisch. Damit beträgt die SChreibrate beim SRAM bei der Hälfte des Sampleclocks, der entsprechend hoch gesetzt werden kann.&lt;br /&gt;
&lt;br /&gt;
Bei Verwendung des 2x 256k x 16 Bit SRAM eröffnet sich aber weiterhin die Möglichkeit, den Transitional Timing Analysis Mode zu realisieren, d.h. nur Bit-Änderungen werden mit einem Timestamp gespeichert - also ideal für langsame Busse bei hohen Sampleraten. Hier kann man zB. eine 16bit Time-Stamp-Adresse (256k) mit einem 16bit Pattern speichern, oder ein 24bit Timestamps für 8bit. Ein Interleave ist dann allerdings nicht mehr möglich. &lt;br /&gt;
&lt;br /&gt;
Als letze Möglichkeit kann man auf alles obige Verzichten und nur einen SRAM bestücken. &lt;br /&gt;
&lt;br /&gt;
Der heisseste Kandidat für den Speicher ist derzeit die 61LV25616 (256k*16) asynchrone Serie (zB.[http://www.issi.com/pdf/61LV25616AL.pdf IS61LV25616]), da er gut verfügbar und preiswert sein soll. Bei asynchronen SRAM müssen wie eingangs erwähnt die Adressen und Daten in einem Latch zwischen gespeichert werden. Bei einem synchronen SRAM werden die Adressen bei mit Flanke gespeichert, ebenso die Daten. Die Setup und Hold Zeiten gehen daher gegen Null... Außerdem muss man WR\ nicht toggeln, was wertvolle Zeit kostet, sondern es reicht, den Speichertakt anzulegen.&lt;br /&gt;
&lt;br /&gt;
Weitere Typen wären&lt;br /&gt;
&lt;br /&gt;
Asynchrone SRAM:&lt;br /&gt;
&lt;br /&gt;
* CY22393,CY22394,CY22395 [http://www.cypress.com/portal/server.pt/gateway/PTARGS_0_2_1524_209_259_43/http%3B/sjapp20.mis.cypress.com%3B7001/publishedcontent/publish/design_resources/datasheets/contents/cy22393_4_5_5.pdf] mit Layout Hinweisen [http://www.cypress.com/portal/server.pt?space=CommunityPage&amp;amp;control=SetCommunity&amp;amp;CommunityID=209&amp;amp;PageID=418&amp;amp;r_folder=Application%20Notes&amp;amp;r_title=Layout%20Recommendations%20for%20the%20CY2239x%20Devices]&lt;br /&gt;
* AS7C34098-12TCN (256K x 16, 12ns) [http://www.alsc.com/pdf/sram.pdf/fa/AS7C4098.pdf] und AS7C31026B-12TCN (64k x 16, 12ns) Asynchroner SRAM bei Farnell&lt;br /&gt;
&lt;br /&gt;
Synchrone SRAM:&lt;br /&gt;
&lt;br /&gt;
* CY7C1327G (256k*18) [http://www.cypress.com/portal/server.pt/gateway/PTARGS_0_2_1524_209_259_43/http%3B/sjapp20.mis.cypress.com%3B7001/publishedcontent/publish/design_resources/datasheets/contents/cy7c1327g_5.pdf]&lt;br /&gt;
* CY7C1327F (256k*18) [http://www.cypress.com/portal/server.pt/gateway/PTARGS_0_2_1524_209_259_43/http%3B/sjapp20.mis.cypress.com%3B7001/publishedcontent/publish/design_resources/datasheets/contents/cy7c1327f_5.pdf]&lt;br /&gt;
* CY7C1327B (256k*18 Synchronous-Pipelined Cache RAM)[http://www.datasheetarchive.com/semiconductors/download.php?Datasheet=598266]&lt;br /&gt;
&lt;br /&gt;
Den CY7C1327B (TQFP100 256Kx18, 3.3V, 4ns ) gibt&#039;s zumindest bei R&amp;amp;S für 11,60&amp;amp;#8364;&lt;br /&gt;
&lt;br /&gt;
== Interface CPLD &amp;lt;-&amp;gt; uC ==&lt;br /&gt;
&lt;br /&gt;
Eine grundlegende Idee ist, dass der CPLD doppelt benutzt wird. Er enthält ja einen Addresszähler zum Schreiben des SRAM&#039;s. Dieser kann aber auch zum Lesen des SRAM&#039;s benutzt werden. Der SRAM wird immer sequentiell vom PLD geschrieben und gelesen. &lt;br /&gt;
&lt;br /&gt;
Die Daten, Statusinfos etc. werden per SPI vom AVR aus dem CPLD gelesen. Vorteil ist dabei, dass man nun auch z.B. 512Kb SRAM&#039;s benutzen kann ohne dass der uC ein kompliziertes Memory Banking benutzen müsste.&lt;br /&gt;
&lt;br /&gt;
== Interface uC &amp;lt;-&amp;gt; Computer ==&lt;br /&gt;
&lt;br /&gt;
Da die Daten schnell im PC sein sollen, bietet sich USB an, also mit dem &lt;br /&gt;
[http://www.ftdichip.com/Documents/DataSheets/ds245b16.pdf FT245] &lt;br /&gt;
um schneller (2-3 Mbaud) als der &lt;br /&gt;
[http://www.ftdichip.com/Documents/DataSheets/ds232b17.pdf FT232]  (1 Mbaud) &lt;br /&gt;
die Daten zu versenden. FTDI bietet die Treiber für Windows/Linux kostenlose an.&lt;br /&gt;
&lt;br /&gt;
Eine Alternative ist der &lt;br /&gt;
[http://www.silabs.com/public/documents/tpub_doc/dshort/Microcontrollers/Interface/en/CP2102_short.pdf  CP2102], der weniger Bauelemente benötigt aber auch wesentlich schwerer zu löten ist.&lt;br /&gt;
&lt;br /&gt;
uC mit integrierten USB standen auch in der Disskusion. Aufgrund vieler Unwägbarkeiten, wie Beschaffung, Preis, HID Treiber etc. sind diese Ideen wieder verworfen worden.&lt;br /&gt;
&lt;br /&gt;
== Interface LA &amp;lt;-&amp;gt; DUT (Device under Test) ==&lt;br /&gt;
&lt;br /&gt;
Prinzipiell gibt es zwei Wege, wie der LA an seine Informationen kommt:&lt;br /&gt;
* Der rein digitale Weg geht z.B. über 74AHC245 oder 74ACT14 o.ä. womit allerdings die Logikpegel feststehen. &lt;br /&gt;
* Ein anderer Weg geht über Analog-Komparatoren, bei denen die Logikpegel (Treshold) variabel sind und somit auch am flexibelsten für die versch. Logikfamilien [http://www.mikrocontroller.net/attachment.php/209385/Scan0004.png] ist.&lt;br /&gt;
&lt;br /&gt;
Für die Komparatorlösung steht momentan der [http://pdfserv.maxim-ic.com/en/ds/MAX961-MAX999.pdf MAX964] und&lt;br /&gt;
[http://www.analog.com/UploadedFiles/Data_Sheets/155150085AD8564_a.pdf AD8564] &lt;br /&gt;
zur Debatte. Allerdings ist der MAX964 schwer zu beschaffen und bereits in der Dualvariante teurer als der AD8564 (ca. 10 Euro). Auch müssen diese mit 5V betrieben werden (wegen der TTL Eingänge und das der Eingspg.bereich von der VCC abhängt), wodurch Pegelwandler wie der 74LVC245 zum CPLD notwendig werden. Auch die Treshold-Reference muss in diesem Bereich liegen. Diese Schwelle wird durch einen DAC vorgegeben, der vom uC über SPI gesteuert wird. Dieser sollte eine interne Referenz besitzen um mit möglichst wenig Bauelementen auszukommen. Zudem sollte er über zwei Kanäle verfügen, da aktuell der LA über 2 pods mit jeweils einem 8 Bit-Channel verfügen soll. Z.Zt. scheint die beste Wahl hinsichtlich Parameter, Preis und Verfügbarkeit die   [http://focus.ti.com/lit/ds/symlink/tlv5626.pdf TLV5626], [http://focus.ti.com/lit/ds/symlink/tlv5637.pdf TLV5637] und [http://focus.ti.com/lit/ds/symlink/tlv5638.pdf TLV5638] mit 8, 10 bzw. 12 Bit zu sein. Der Einsatz eines DAC wird wesentlich einfacher als eine PWM per uC mit anschließenden Tiefpaß mit OPVs, welches die Fehlerrate steigen lassen kann. &lt;br /&gt;
&lt;br /&gt;
Bei einem digitalen Eingangsteil bietet sich folgendes an:&lt;br /&gt;
*[http://www.semiconductors.philips.com/acrobat/datasheets/74LVC14A_4.pdf 74lvc14] Hex inverting Schmitt-trigger with 5 V tolerant input; Dummerweise eben 6 Stck. - für 0,56? bei R&amp;amp;S&lt;br /&gt;
*[http://www.semiconductors.philips.com/acrobat_download/datasheets/74LVC541A_3.pdf 74LVC541] Octal buffer/line driver with 5 V tolerant inputs/outputs (3-state) für 0,71? bei R&amp;amp;S&lt;br /&gt;
*[http://www.semiconductors.philips.com/acrobat_download/datasheets/74HC_HCT7541_CNV_2.pdf 74HC7541] Octal Schmitt trigger buffer/line driver; 3-state für 9,85? bei R&amp;amp;S - damit können gerade langsame Busse untersucht werden da die Eingänge nicht so fürchterlich empfindlich sind; ansonsten ist es ein 541. Leider scheint es ihn nicht in der 74lvc zu geben.&lt;br /&gt;
&lt;br /&gt;
Eine konzeptionelle Entscheidung zwischen der Ausführung der Input Stage als Komparator oder 74xx basierend ist also noch nicht getroffen.&lt;br /&gt;
&lt;br /&gt;
Einigkeit besteht jedoch in der notwendigen Schutzschaltung, z.B. mit einem Dioden-Array. Auch darf die Eingangsspannung den Input Voltage Range (je nach Typ) nicht überschreiten.&lt;br /&gt;
&lt;br /&gt;
== Clock Rate Generierung ==&lt;br /&gt;
&lt;br /&gt;
Aufgrund seiner Bandbreite bietet sich die Generierung des Systemtaktes durch den CPLD an. Dieser benutzt einen 1/N Teiler um den Sample Takt zu generieren.&lt;br /&gt;
&lt;br /&gt;
Prinzipiell kann er auch gleichzeitig den Takt für den uC erzeugen - dieser wird also extern getaktet und man erhält dadurch Synchronität zwischen CPLD und uC und spart den Quarz am uC. Allerdings bieted sich auch ein eigener Quarz für den uC an. Man sieht - hier wird noch diskutiert.&lt;br /&gt;
&lt;br /&gt;
Zur Generierung des Mastertaktes bieten sich zwei Weg an:&lt;br /&gt;
* Quarz, bei 50-64 MHz dürfte da wegen Verfügbarkeit/Preis wohl Schluss sein, auch sind Obertonquarze nicht ganz unkritisch. Auch kann man dann nur noch durch umlöten und wecheln den Mastertakt ändern, falls es Probleme gibt.&lt;br /&gt;
* VCO/PLL ggf. per uC programmierbar, damit kann man dann echt die Grenzen des Designs austesten. Die Chips dazu gibt&#039;s bei Maxim/AD und den anderen üblichen Verdächtigen, stehen also noch nicht fest. Als aussichtsrechster Kandidat sticht derzeit der [http://www.cypress.com/portal/server.pt/gateway/PTARGS_0_2_1524_209_259_43/http%3B/sjapp20.mis.cypress.com%3B7001/publishedcontent/publish/design_resources/datasheets/contents/cy22150_5.pdf CY22150] hervor, der mehrere synchrone Freq. mit einem einfachen Quarz erzeugen kann. Dadurch wird der Freq.teiler im CPLD nicht mehr benötigt und hat wieder einige MC frei.&lt;br /&gt;
&lt;br /&gt;
Die Grenzen der Samplefreq. liegen zum einem in den verwendeten Bauelementen (&amp;gt;100MHz), aber vielmehr wird der begrenzende Faktor das Layout und die Leiterplatte sein. Ein 4-Layer-PCB ist aus technischer Sicht sicher das optimale, nur schaut der Geldbeutel danach sehr leer aus; auch wird ein Komparatoreingang ca. 45 Euro teurer werden als eine Lösung mit 74xxx.&lt;br /&gt;
&lt;br /&gt;
== Stromversorgung ==&lt;br /&gt;
&lt;br /&gt;
Tja, auch ein LA braucht Strom. Bei Verwendung eines USB kann dieses elegant gelöst werden, da dieser (nach Anforderungen an das OS) bis zu 500mA liefern kann. Eine kurze worst-case &amp;quot;Stromrechnung&amp;quot; zeigt:&lt;br /&gt;
&lt;br /&gt;
* XC95144XL CPLD pauschal 150mA lt. DB&lt;br /&gt;
* 61LV25616 SRAM 2x 320mA&lt;br /&gt;
* ATMega ???&lt;br /&gt;
* FT245 ????&lt;br /&gt;
&lt;br /&gt;
mit Max964 8mA/Comparator x 16 kommen 128 mA hinzu.&lt;br /&gt;
&lt;br /&gt;
Die FTDI-Chips haben für Geräte, die über 100mA ziehen (darin wird wohl der LA u.U. fallen ), aber noch bus-powered sein sollen, einen Schaltausgang, an den z.B. ein p-Kanal-FET angeschlossen werden kann, der den stromhungrigen Teil der Schaltung erst nach der  Registrierung beim Computer einschaltet. Dazu hat er einen &amp;quot;sleep&amp;quot;-Ausgang, mit dem man den angeschlossenen AVR schlafen legen kann. In den FTDI-Docs bzw. Application Notes finden sich dazu genüg Beispiele mit kompletten Schaltbildern. Allerdings ergibt die Überschlagsrechnung, dass ein externes Steckernetzteil notwendig wird.&lt;br /&gt;
&lt;br /&gt;
Einsetzbar wäre auch ein LM2575S-3.3 [http://www.national.com/ds/LM/LM1575.pdf] für 2,47&amp;amp;#8364; (Farnell), der sieht gut und einfach in der Handhabung aus im Falle einer externen Stromversorgung.&lt;br /&gt;
&lt;br /&gt;
= Programmierung =&lt;br /&gt;
&lt;br /&gt;
== AVR ==&lt;br /&gt;
Recht früh hat sich in dem Forum heraus kristallisiert, dass der AVR per Bootloader vom Computer her programmiert werden sollte. Hierdurch sind Firmware Updates sehr einfach möglich und verschiedene Bootloader sind verfügbar. Die Bootloader Option setzt damit einen AVR der ATMega Serie vorraus. Bisher spricht nichts gegen einen ATMega8L.&lt;br /&gt;
&lt;br /&gt;
== CPLD ==&lt;br /&gt;
&lt;br /&gt;
Die Programmierung des CPLD ist dagegen noch nicht konkret. Wünschenswert wäre es, ebenfalls seine Firmaware über den Computer zu updaten.&lt;br /&gt;
&lt;br /&gt;
Der Standardweg der Programmierung der Xilinx CPLD sieht einen JTAG Stiftsockel vor. Dann kann die Programmierung z.B. über ein Xilinx JTAG/Parallel Download Cable [http://www.xilinx.com/support/programr/jtag_cable.pdf] aus dem ISE/impact geschehen.&lt;br /&gt;
&lt;br /&gt;
Einen möglichen Weg stellt die XApp058 [http://direct.xilinx.com/bvdocs/appnotes/xapp058.pdf] dar, darin wird beschrieben, wie der CPLD mittels uC beschrieben wird. &lt;br /&gt;
Dieses Thema wurde bereits im Forum &amp;quot;AVR Ethernet Platine&amp;quot; aufgegriffen. In diesem Thread [http://www.mikrocontroller.net/forum/read-1-138024.html#157356] kam man allerdings zu der Überzeugung, dass die XSVF Datei mit 45kByte für uC Verhältnisse extrem groß ist und somit nur in einen ATMega128 (und größer) [http://www.atmel.com/dyn/products/devices.asp?family_id=607#760] reinpassen würde da das SVF JTAG Protokoll riesige Datenbuffer im SRAM benötigt. Dies ist protokollbedingt - es wurden 10kByte für ein FPGA genannt. Dabei sind die Xilinx CPLD Speicherplatz effezienter als welche von Altera. Leider sind die Xilinx CPLD eben nur über JTAG programmierbar. &lt;br /&gt;
&lt;br /&gt;
Allerdings wurde in diesem Zusammenhang auch auf den XSVF Executor [http://www.ethernut.de/en/xsvfexec/index.html] verwiesen.&lt;br /&gt;
Auch ist die Frage noch offen, inwiefern die XSVF Datei über die RS232/USB geladen werden kann, ebenso das Timing der JTAG Schnittstelle.&lt;br /&gt;
&lt;br /&gt;
Aufgrund der vielen offenen Fragen ist die schnellste und sicherste Lösung die Anbindung über den JTAG Stecker um den CPLD per JTAG/Parallel Download Cable zu programmieren. Zusätzlich wird eine JTAG Verbindung zum AVR Port eingerichtet, falls das Problem irgendwann &#039;mal später gelöst wird.&lt;br /&gt;
&lt;br /&gt;
Bisher existiert in VHDL für den CPLD LA Core:&lt;br /&gt;
&lt;br /&gt;
* Trigger (bit pattern, rising/falling/any edge) verifiziert mit TB&lt;br /&gt;
* SRAM Interface&lt;br /&gt;
&lt;br /&gt;
= PCB =&lt;br /&gt;
&lt;br /&gt;
Dieses Thema kommt noch intensiv.&lt;br /&gt;
&lt;br /&gt;
Dabei sind u.a. die folgenden Appl. Notes nützlich:&lt;br /&gt;
&lt;br /&gt;
für AVR:&lt;br /&gt;
&lt;br /&gt;
* AVR040: EMC Design Considerations [http://www.atmel.com/dyn/resources/prod_documents/doc1619.pdf]&lt;br /&gt;
* AVR042: AVR Hardware Design Considerations [http://www.atmel.com/dyn/resources/prod_documents/doc2521.pdf]&lt;br /&gt;
&lt;br /&gt;
für CPLD:&lt;br /&gt;
&lt;br /&gt;
* Device Package User Guide [http://www.xilinx.com/bvdocs/userguides/ug112.pdf]&lt;br /&gt;
* XAPP112 - Designing With XC9500XL CPLDs [http://www.xilinx.com/bvdocs/appnotes/xapp112.pdf]&lt;br /&gt;
* XAPP114 - Understanding XC9500XL CPLD Power [http://www.xilinx.com/bvdocs/appnotes/xapp114.pdf]&lt;br /&gt;
* XAPP115 - Planning for High Speed XC9500XL Designs [http://www.xilinx.com/bvdocs/appnotes/xapp115.pdf]&lt;br /&gt;
* XAPP784 - Bulletproof CPLD Design Practices [http://www.xilinx.com/bvdocs/appnotes/xapp784.pdf]&lt;br /&gt;
&lt;br /&gt;
= Resumee =&lt;br /&gt;
&lt;br /&gt;
Keep-It-Simple ist ein Grundsatz hier. Je komplexer, desto schwerer zu beherrschen. Sicher hat jeder von Komplexität eine andere Vorstellung, aber wir arbeiten daran und hoffen ein nachbaufähiges, stabiles Gerät zu bekommen. Dennoch kommt man bei diesem Projekt um SMD löten mit 0.5mm Beinchen nicht umhin!&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Und was soll das kosten? =&lt;br /&gt;
&lt;br /&gt;
Schwierig, da noch nicht alles feststeht - als Ziel steht aber im Forum mehr oder weniger ungeschrieben die 100&amp;amp;#8364; Marke einschließlich PCB.&lt;br /&gt;
&lt;br /&gt;
== Datenblätter, Bezugsquellen und Preise (allg.) ==&lt;br /&gt;
&lt;br /&gt;
... oder was bisher so zusammengetragen wurde.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
|- &lt;br /&gt;
| align=&amp;quot;center&amp;quot; | &#039;&#039;&#039;IC&#039;&#039;&#039;&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | &#039;&#039;&#039;Gehäuse&#039;&#039;&#039;&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | &#039;&#039;&#039;Kommentar&#039;&#039;&#039;&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | &#039;&#039;&#039;Datenblatt/Appnotes&#039;&#039;&#039;&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | &#039;&#039;&#039;Bezugsquelle&#039;&#039;&#039;&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | &#039;&#039;&#039;Preis&#039;&#039;&#039;&lt;br /&gt;
|- &lt;br /&gt;
| &#039;&#039;CPLD&#039;&#039; / XC95144XL10TQ144&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | TQFP144&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | -&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | [http://www.mhl.tuc.gr/data_books/Xilinx/Xc9500/95144XL.pdf], [http://www.xilinx.com/xlnx/xweb/xil_publications_index.jsp?category=Publications/CPLD+Device+Families&amp;amp;iLanguageID=1]&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | [http://www.darisus.de/Elektonikshop/Framesets/Shopset1.php Darius.De]&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | ca. 10?&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;USB&#039;&#039; / CP1202&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | -&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | -&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | [http://www.silabs.com/public/documents/tpub_doc/dshort/Microcontrollers/Interface/en/CP2102_short.pdf] &lt;br /&gt;
| align=&amp;quot;center&amp;quot; | -&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | -?&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;USB&#039;&#039; / FT232BM&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | LQFP-32&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | -&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | [http://www.ftdichip.com/Documents/DataSheets/ds232b17.pdf], [http://www.ftdichip.com/Documents/AppNotes.htm]&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | -&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | -?&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;USB&#039;&#039; / FT245BM&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | LQFP-32&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | -&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | [http://www.ftdichip.com/Documents/DataSheets/ds245b16.pdf], [http://www.ftdichip.com/Documents/AppNotes.htm]&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | -&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | -?&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;Comp&#039;&#039; / Max964 (Maxim)&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | SO-16&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | &#039;&#039;&#039;Quad&#039;&#039;&#039; Beyond-the-Rails Comparators, 4.5ns, 3V/5V&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | [http://pdfserv.maxim-ic.com/en/ds/MAX961-MAX999.pdf]&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | -&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | -?&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;Comp&#039;&#039; / AD8564 (Analog Devices)&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | TSSOP-16&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | &#039;&#039;&#039;Quad&#039;&#039;&#039; 7 ns Single Supply 5V Comparator&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | [http://www.analog.com/UploadedFiles/Data_Sheets/155150085AD8564_a.pdf]&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | [http://www.spoerle.de Spörle.de]&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 8,80? Netto&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;Comp&#039;&#039; / LT1715 (LT)&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | -&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | Dual 4ns, 5V/3V, Independent I/O Supplies&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | [http://www.linear.com/pc/downloadDocument.do?navId=H0,C1,C1154,C1004,C1012,P1908,D2821]&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | -&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | -?&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;Comp&#039;&#039; / LT1720/LT1721 (LT)&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | -&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | Dual/Quad 4.5ns, 3V, Rail-to-RailOut, Quad schlecht für&#039;s Layout&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | [http://www.linear.com/pc/downloadDocument.do?navId=H0,C1,C1154,C1004,C1012,P1707,D3080]&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | -&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | -?&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;Comp&#039;&#039; / TLV3502 (TI/BB) &lt;br /&gt;
| align=&amp;quot;center&amp;quot; | SOIC-8&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 4.5ns Rail-to-Rail, Dual High-Speed Comparator &lt;br /&gt;
| align=&amp;quot;center&amp;quot; | [http://focus.ti.com/lit/ds/symlink/tlv3502.pdf]&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | -&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | -?&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;ECL-Comp&#039;&#039; / Max9600 &lt;br /&gt;
| align=&amp;quot;center&amp;quot; | -&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | Schwierig zu realisieren: 2 &amp;quot;Wandlungsstufen&amp;quot; notwendig. 1x Inputpegel -&amp;gt; ECL, 1x ECL -&amp;gt; Logikpegel CPLD&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | [http://pdfserv.maxim-ic.com/en/ds/MAX9600-MAX9602.pdf]&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | -&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | -?&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;DAC&#039;&#039; / TLV5626 (TI)&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | SOIC-8&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 8-Bit Dual, 3.3V, int. Uref 1.024V&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | [http://focus.ti.com/lit/ds/symlink/tlv5626.pdf]&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | [http://www.farnell.de Farnell.De]&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 5.29?&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;DAC&#039;&#039; / TLV5637 (TI)&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | SOIC-8&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 10-Bit Dual, 3.3V, int. Uref 1.024V&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | [http://focus.ti.com/lit/ds/symlink/tlv5637.pdf]&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | [http://www.farnell.de Farnell.De]&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 6.35?&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;DAC&#039;&#039; / TLV5638 (TI)&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | SOIC-8&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 12-Bit Dual, 3.3V, int. Uref 1.024V&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | [http://focus.ti.com/lit/ds/symlink/tlv5638.pdf]&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | [http://www.farnell.de Farnell.De]&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 7.44?&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;DAC&#039;&#039; / LTC1446L (LT)&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | SO-8&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | Dual 12-Bit, 3.3V, int. Uref=2.5V&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | [http://www.linear.com/pc/downloadDocument.do?navId=H0,C1,C1155,C1005,C1156,P1507,D1746]&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | [http://www.rsonline.de R&amp;amp;S (DE)]&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 12.35?&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;Clk&#039;&#039; / CY22393,CY22394,CY22395&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | -&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | -&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | [http://www.cypress.com/portal/server.pt/gateway/PTARGS_0_2_1524_209_259_43/http%3B/sjapp20.mis.cypress.com%3B7001/publishedcontent/publish/design_resources/datasheets/contents/cy22393_4_5_5.pdf] ,[http://www.cypress.com/portal/server.pt?space=CommunityPage&amp;amp;control=SetCommunity&amp;amp;CommunityID=209&amp;amp;PageID=418&amp;amp;r_folder=Application%20Notes&amp;amp;r_title=Layout%20Recommendations%20for%20the%20CY2239x%20Devices]&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | -&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | -?&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;Clk&#039;&#039; / ICD2053B &lt;br /&gt;
| align=&amp;quot;center&amp;quot; | -&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | -&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | [http://www.commtech-fastcom.com/data_sheets/icd2053b.pdf]&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | -&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | -?&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;Clk&#039;&#039; / CY22150FC&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 16-lead TSSOP&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | Taktgeber, Three-PLL, SPI progr. Taktgenerator&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | [http://www.cypress.com/portal/server.pt/gateway/PTARGS_0_2_1524_209_259_43/http%3B/sjapp20.mis.cypress.com%3B7001/publishedcontent/publish/design_resources/datasheets/contents/cy22150_5.pdf]&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | [http://www.rsonline.de R&amp;amp;S (DE)]&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 3,94?&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;SRAM&#039;&#039; / IC61LV25616&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | TSOP-2&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | asynchroner SRAM 256KB x 16&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | [http://www.glyn.de/data/glyn/media/doc/IS61LV25616.pdf],[http://www.icsi.com.tw/english/products/products-frame.asp?Title=Datasheet-Async%20SRAM&amp;amp;URL=http%3A//web.icsi.com.tw/English/Datasheets/ASYNCHRONOUSSTATICRAM.html] &lt;br /&gt;
| align=&amp;quot;center&amp;quot; | [http://www.glyn.de Glyn.De] ???&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | ???&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;SRAM&#039;&#039; / AS7C34098-12TCN &lt;br /&gt;
| align=&amp;quot;center&amp;quot; | TSOP, SOJ&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | asynchroner SRAM 256K x 16, 12ns&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | [http://www.alsc.com/pdf/sram.pdf/fa/AS7C4098.pdf]&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | [http://www.farnell.de Farnell.De]&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 13,17?&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;SRAM&#039;&#039; / CY7C1327B&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | TQFP100&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | synchr SRAM 256k x 18, 3.3V, 4ns&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | [http://www.datasheetarchive.com/semiconductors/download.php?Datasheet=598266]&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | [http://www.rsonline.de R&amp;amp;S (DE)]&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 11,60?&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;SRAM&#039;&#039; / CY7C1327G&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | TQFP100&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | synchr SRAM 256k x 18&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | [http://www.cypress.com/portal/server.pt/gateway/PTARGS_0_2_1524_209_259_43/http%3B/sjapp20.mis.cypress.com%3B7001/publishedcontent/publish/design_resources/datasheets/contents/cy7c1327g_5.pdf]&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | -&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | -?&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;SRAM&#039;&#039; / CY7C1327F&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | TQFP100&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | synchr SRAM 256k x 18&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | [http://www.cypress.com/portal/server.pt/gateway/PTARGS_0_2_1524_209_259_43/http%3B/sjapp20.mis.cypress.com%3B7001/publishedcontent/publish/design_resources/datasheets/contents/cy7c1327f_5.pdf]&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | -&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | -?&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;SRAM&#039;&#039; / CY7C1351F-100AC&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | TQFP100&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | Burst, synchron, Durchfluss, NoBL, 4MB, 128Kx36, 3.3V&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | [http://www.cypress.com/portal/server.pt/gateway/PTARGS_0_2_1524_209_259_43/http%3B/sjapp20.mis.cypress.com%3B7001/publishedcontent/publish/design_resources/datasheets/contents/cy7c1351f_5.pdf]&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | [http://www.rsonline.de R&amp;amp;S (DE)]&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 11,25?&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;SRAM&#039;&#039; / CY7C1381B-100AC&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | TQFP100&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | Burst, synchron, Durchfluss, 18MB, 512Kx36, 3.3V&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | [http://www.cypress.com/portal/server.pt/gateway/PTARGS_0_2_1524_209_259_43/http%3B/sjapp20.mis.cypress.com%3B7001/publishedcontent/publish/design_resources/datasheets/contents/cy7c1381c_5.pdf]&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | [http://www.rsonline.de R&amp;amp;S (DE)]&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 48,75?&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;IC&#039;&#039; / Dummy&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | -&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | -&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | -&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | -&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | -?&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= Literatur =&lt;br /&gt;
&lt;br /&gt;
* [http://web.mit.edu/6.111/www/s2005/HANDOUTS/LA.pdf] Agilent XYZs of Logic Analyzers&lt;br /&gt;
* [http://cp.literature.agilent.com/litweb/pdf/5988-9125EN.pdf] Agilent Logic Analyzer Probing Techniques for High-Speed Digital Systems &lt;br /&gt;
* [http://www.home.agilent.com/USeng/nav/-536898184.0/pc.html] Agilent Logic Analyzer Probing Solutions&lt;br /&gt;
* [http://www.designcon.com/2003/marketing/HP3-5.pdf] Logic Analyzer Probing Techniques for High-Speed Digital Systems (DesignCon 2003)&lt;br /&gt;
* [http://www.signalintegrity.com/Pubs/straight/probes.htm] Probing High-Speed Digital Designs (Electronic Design Magazine, March, 1997)&lt;br /&gt;
* [http://www.xilinx.com/bvdocs/appnotes/xapp368.pdf] Handheld Pocket Logic Analyzer (XApp368)&lt;br /&gt;
* [http://www.xilinx.com/bvdocs/appnotes/xapp369.pdf] Handheld 1553 Bus Data Analyzer (XApp369)&lt;br /&gt;
* [http://www.amateurfunkbasteln.de/pcla/pcla.html] PC-basierter 32-Kanal-Logik-Analysator&lt;br /&gt;
* [http://www.bitscope.com] bitscope &lt;br /&gt;
* [http://www.rockylogic.com/products/ant8spec.html] Ant8 (mit fixer Treshold) und &lt;br /&gt;
* [http://www.rockylogic.com/products/ant16spec.html] Ant16 (mit variabler Treshold)&lt;br /&gt;
* [http://alternatezone.com/electronics/pcla.htm] PC LA&lt;br /&gt;
* [http://eebit.com/] FPGA-based Logic Analyzer&lt;br /&gt;
* [http://www.nci-usa.com/default.htm] Kommerziell: GoLogic, mit guten Texten und Videos&lt;br /&gt;
* [http://www.ethernut.de/en/xsvfexec/index.html] XSVF Executor&lt;br /&gt;
* [http://www.cypress.com/portal/server.pt?space=CommunityPage&amp;amp;control=SetCommunity&amp;amp;CommunityID=209&amp;amp;PageID=418&amp;amp;r_folder=Application%20Notes&amp;amp;r_title=Jitter%20in%20PLL%20Based%20Systems:%20Causes,%20Effects,%20and%20Solutions] Jitter in PLL Based Systems: Causes, Effects, and Solutions &lt;br /&gt;
&lt;br /&gt;
* [http://www.standardics.philips.com/packaging/handbook/pdf/pkgchapter5.pdf] SMD Mounting Methods&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Logic Analyzer Project|Hardware]]&lt;/div&gt;</summary>
		<author><name>131.130.1.135</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=Reichelt-Wishlist&amp;diff=9199</id>
		<title>Reichelt-Wishlist</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=Reichelt-Wishlist&amp;diff=9199"/>
		<updated>2005-09-19T17:09:09Z</updated>

		<summary type="html">&lt;p&gt;131.130.1.135: /* &amp;quot;Passive&amp;quot; Bauteile */ siehe Mechanisches/Schalter/Potis etc.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Reichelt Wunschliste ==&lt;br /&gt;
&lt;br /&gt;
Viele kaufen ihre Elektronik bei Reichelt. Ärgerlich, dass so manche wichtigen Dinge fehlen. Aus dieser Idee entstand der Thread:&lt;br /&gt;
&lt;br /&gt;
http://www.mikrocontroller.net/forum/read-1-107307.html&lt;br /&gt;
&lt;br /&gt;
Einiges davon hat Reichelt bereits ins Angebot aufgenommen. Damit dies weitergehen kann, kann man hier seine Wünsche veröffentlichen. 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 herauskristalisieren, macht jeder einfach &#039;&#039;&#039;einen&#039;&#039;&#039; virtuellen Strich dahinter: | (ALT-GR Taste und &amp;lt; 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 ist etwas sehr exotisches&#039;&#039;&#039;, wie z.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.&lt;br /&gt;
&lt;br /&gt;
= Wunschliste =&lt;br /&gt;
== Halbleiter ==&lt;br /&gt;
=== Controller/FPGA/CPLD ===&lt;br /&gt;
* Microcontroller mit USB-Anschluß (von Cypress oder Atmel in PDIP z.B. AT89C5131, AT43USB355, CY7C637xx) ||||| ||||| ||||| ||  =&amp;gt; Bereits im Sortiment: Cypress EZ-USB TQFP-44, Best. Nr AN2131 SC&lt;br /&gt;
* Konkret: Neuer PIC mit USB PIC18F4550 ||||| ||||| |||| ||&lt;br /&gt;
* Konkret: PIC 16F628A (weil: besser als 16F628) ||&lt;br /&gt;
* Konkret: PIC 16F648 (weil mehr programmspeicher, als 16F628) |&lt;br /&gt;
* Mehr FPGAs (v.a aktuellere) von Xilinx, z.B. Spartan III (v.a. auch größere Typen, die noch im TQFP-Gehäuse zu haben sind wie XC3S400) ||||| ||||| ||||| |||||  ||||| ||||| ||||| |||||&lt;br /&gt;
* TI MSP430F1611 (10k RAM, 48k Flash) ||||| ||||| ||||| |||| ||&lt;br /&gt;
* Philips LPC2104, LPC2105, LPC2106 ||||| ||||| ||||| ||||| ||||| ||||| ||||| |||(auch LPC213X, LPC211x und LPC22xx)&lt;br /&gt;
* Atmel ATtiny25/45/85 ||||| ||||| ||||| ||||| ||&lt;br /&gt;
* Atmel ATmega88, ATtiny13V ||||| ||||| ||||| ||||| ||||(ATtiny13(DIP u. SO ohne &amp;quot;V&amp;quot;) sind bereits verfügbar)&lt;br /&gt;
* Atmel ATMEGA1280 ||||| |&lt;br /&gt;
* Atmel ATMEGA48 TQFP |||||&lt;br /&gt;
* Atmel ATMEGA2560 ||||| ||||| ||||| ||||| ||||| ||&lt;br /&gt;
* Atmel ATMEGA2561 |&lt;br /&gt;
* Atmel AVR Controller mit Funkanbindung z.B. AT86RF211, AT86RF401, dazu passende Quarze (evtl. SMD) 18,080 MHz (Crystek P/N 016758), Spulen 39nH.  ||||| ||||| ||||| ||||| ||&lt;br /&gt;
* Atmel AT91SAM7S32, AT91SAM7S64 ||||| ||||| ||||| ||||| |&lt;br /&gt;
* Atmel ATMEGA644 ||||&lt;br /&gt;
* SSV DIL/NetPCs [http://www.dilnetpc.com]http://www.dilnetpc.com ||||| |||||&lt;br /&gt;
* Microchip PIC 16F88  |||| ||&lt;br /&gt;
* Microchip PIC16F684 |&lt;br /&gt;
* Microchip dsPIC ||||| |||&lt;br /&gt;
* Freescale HCS12 Controller ||||| |&lt;br /&gt;
* ALTERAs CPLD EPM70xx - Familie ||||||&lt;br /&gt;
* SX20 SX28 IP2022 von Ubicom |&lt;br /&gt;
* SAA5281 Videotextinterface von Philips |||&lt;br /&gt;
* TUSB3210 von Texas Instruments ||&lt;br /&gt;
* Lattice ispMACH 4032C / 4064C |&lt;br /&gt;
&lt;br /&gt;
=== Speicher ===&lt;br /&gt;
* Atmel DataFlash, z.B. AT45DB081B (8 MBit Flash-Speicher an seriellen Bus im 8poligen Gehäuse) ||||| ||||| ||||| ||||| ||||||&lt;br /&gt;
* 24LC256 oder 24AA256 oder 24LC512 oder 24AA512 ||||| ||&lt;br /&gt;
* NextFlash spiFlash NX25P16 (16MBit serial Flash im SO8-Gehäuse) ||||| ||||| |||&lt;br /&gt;
* Schnelles RAM (10, 15 oder 20ns) (5V/3,3V) ||||| ||||| ||&lt;br /&gt;
&lt;br /&gt;
=== ICs ===&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;
* Aufwärtsregler (Step-Up-Konverter): Maxim MAX629 |||||&lt;br /&gt;
* Step-Down-Konverter in SMD Bauform (z.b. MC 34063): ||&lt;br /&gt;
* uC supervisor chips + watchdog z.B.: MAX6864 ist z.Z. der beste (0.2uA!) |||&lt;br /&gt;
* ISD 5116 (Sprachaufnahme bis 16min &amp;amp; I2C-Interface)  ||||| |||  &lt;br /&gt;
* DTMF-Dekoder-Enkoder (8870, 8880) ||||| ||||| ||||&lt;br /&gt;
* Philips PCA82C252 oder TJA1054A oder vergleichbar (&amp;quot;Fault-Tolerant&amp;quot; CAN Transceiver, 11898-3) ||||| &lt;br /&gt;
* MCP25050 CAN-Bus Input/Output Expander |||&lt;br /&gt;
* Maxim Switched Capacitor Tiefpass-Filter (z.B. MAX297, MAX7410) ||||&lt;br /&gt;
* ZHB6718 (H-Bridge für 1,5V - 20V Motoren) |||| |&lt;br /&gt;
* Motortreiber TLE 4205 ||&lt;br /&gt;
* Ethernet-Controller RTL8019AS und Übertrager FB2022 ||||| ||||| ||||| ||||| ||||| ||||| ||||| ||||| ||||| ||||| ||||| |&lt;br /&gt;
* SPI-Ethernet-Controller ENC28J60 und passender Übertrager und passenden Quarz (25,0000 Mhz !) ||||| ||||| ||||| ||||&lt;br /&gt;
* AD7524 in SMD ||||| ||||&lt;br /&gt;
* ADS8320 ADC 16 Bit seriell  |||||  ||||| ||||| ||||| |||||&lt;br /&gt;
* DAC7612 DAC 12 Bit seriell  |||||  ||||| ||||| |||||&lt;br /&gt;
* Generell mehr 1-Wire IC ||||| |||||&lt;br /&gt;
* Generell mehr I²C IC ||||| ||||| ||||| ||&lt;br /&gt;
* I²C-Bus to 1-Wire DALLAS DS2482-100 bzw. DS2482-800  ||||| ||&lt;br /&gt;
* I²C-Bus Temperatursensor DS1631Z ||||| ||&lt;br /&gt;
* UDN 2987 LW (Source Driver UDN2987 in SMD-Bauform) |&lt;br /&gt;
* MAX6958 / MAX6959 (I²C 4-Digit, 9-Segment LED Display Drivers with Keyscan) |||| | &lt;br /&gt;
* MCP23016 16Bit I²C I/O Expander ||||| |||&lt;br /&gt;
* vielseitige PLL Schaltkreise für Frequenzerzeugung. z.B. MC145170D2 (SOIC16) ||||| |||||&lt;br /&gt;
* Digital Potentiometer (z.B. 2-Wire MAX546x) ||||| |||||&lt;br /&gt;
* RS485 ESD fest: MAX3086E oder 75180 oder ISL83086E ||||| ||&lt;br /&gt;
* Mehr FET-Treiber (TI UCC3372x, HIPxxx , die neueren Brückentreiber von Maxim |||||&lt;br /&gt;
* Max6650 ||&lt;br /&gt;
* MOSFET Treiber IR2011 |&lt;br /&gt;
* LTC24xx ||&lt;br /&gt;
* LM3886 |||||&lt;br /&gt;
* DAC8830 IDT (16Bit-DAC,ser. Input) |||||&lt;br /&gt;
* D/A Wandler mit 4 oder mehr Ausgängen, z.B. TLC5620/TLV5629 ||||&lt;br /&gt;
* neue I2C IO von Philips PCA9555 (16 Bit par. I/O, c&#039;t Project Soundcheck II) |||&lt;br /&gt;
* PCA9530D  2Bit I2C_BUS LED-Dimmer |&lt;br /&gt;
* PCA9531D  8Bit 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;
* PCA9551D  8Bit I2C-BUS LED-Blinker |&lt;br /&gt;
* PCA9552D 16Bit I2C-BUS LED-Blinker |&lt;br /&gt;
* PCA9553D  4Bit I2C-BUS LED-Blinker |&lt;br /&gt;
* MAX7311AWG 2Wire Interface von Maxim |&lt;br /&gt;
* STP08CL596B1 DIP16 STM, LOW VOLTAGE 8-BIT CONSTANT CURRENT LED SINK DRIVER |&lt;br /&gt;
* STP08CL596M SO16 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;
* STP16CL596M SO24 STM, LOW VOLTAGE 8-BIT CONSTANT CURRENT LED SINK DRIVER |&lt;br /&gt;
&lt;br /&gt;
=== Diskrete ===	 &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) ||||| ||||| ||||| ||	 &lt;br /&gt;
* 3,3V Längsregler SMD Ultra Low drop |	 &lt;br /&gt;
* 5,2V Lowdrop Längsregler LF52 im TO252AA von STM ||||	 &lt;br /&gt;
* Größere Auswahl an Step-up Reglern ||||| ||||| ||	 &lt;br /&gt;
* Spannungsregler in SMD-Version (7805 etc., nicht nur der 78L05) ||||| ||||| ||||| ||	 &lt;br /&gt;
* Spannungsregler SMD in DPAK ||	 &lt;br /&gt;
* BUF420AW Schaltnetzteil Transistor von STM ||||	 &lt;br /&gt;
* SMD Doppeldiode Schottky 12A 60V im TO252AA z.B. 12CWQ06FN von IOR ||||| ||||| ||	 &lt;br /&gt;
* IRF7503/IRF7506 Dual Mosfet SMD	 &lt;br /&gt;
* ZRA250F005 Referenzspanungsquelle 2,5V 0.5% SOT23 gehäuse ||||	 &lt;br /&gt;
* mehr FETs und IGBTs (nichtnur IRF, sehr gut IXYS &amp;lt;- und sauteuer!) ||	 &lt;br /&gt;
* Niederohm-FETs in SO8, N und P |	 &lt;br /&gt;
* SMD-Spannungsregler einstellbar LM317EMP oder LM317AEMP (SMD TO-223 Gehäuse) |||	 &lt;br /&gt;
* Si4562DY N- and P-Channel 2.5-V (G-S) MOSFET SMD |	 &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;
* Digitaltransistoren (BCR*), auch als Pärchen NPN/PNP (BCR10, BCR08pn) |&lt;br /&gt;
&lt;br /&gt;
== Sensoren/Aktoren ==&lt;br /&gt;
* Sensirion SHT11 ||||| ||||| ||||| ||||| ||||| |||&lt;br /&gt;
* kleine Feuchtigkeitssensoren zur &#039;on-board-Montage&#039; ||||| ||||&lt;br /&gt;
* Sharp Entfernungssensoren (zb den GP2D120 oder den GP2D12) ||||| ||||| ||||| ||&lt;br /&gt;
* FSRs (Force Sensing Resistor) von Interlink Electronics ||||| |||&lt;br /&gt;
* NanoMuscle Aktuatoren ||&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;
* IS471 Selbstmodulierende IR-Lichtschranke ||||| ||&lt;br /&gt;
* Hall-Sensor UGN3503, KMZ51 |||&lt;br /&gt;
* Motorola Drucksensoren z.b. MPX4250 mit AP Druckanschluß ||&lt;br /&gt;
* Induktions-Stromsensoren Coilcraft #J9199-A o.Ä. |&lt;br /&gt;
* Drehwinkelgeber, Gyro, Kreiselsensoren ähnl. Tokin CG-L43 |&lt;br /&gt;
* AD623 Single Supply,Rail-Rail, InstrOpamp |&lt;br /&gt;
* günstige Temp. Sensoren TC77 ||&lt;br /&gt;
&lt;br /&gt;
== Baugruppen ==&lt;br /&gt;
* Mini-Bluetooth Module (RS232-Bluetooth-&amp;quot;Wandler&amp;quot;-Platinchen) ||| ||||| ||||| ||||| ||||| ||||| ||||| ||||| |||||&lt;br /&gt;
* kostengünstige Funkschaltmodule (TLP/RLP) ||||| ||&lt;br /&gt;
* Easy-Radio Module zur seriellen Datenübertragung (ER400 RS/TS/RTS) |&lt;br /&gt;
&lt;br /&gt;
== &amp;quot;Passive&amp;quot; Bauteile ==&lt;br /&gt;
* Low-ESR Elkos (definiertes Fabrikat/Typ, und nicht einfach irgendwelche! (Rubycon?)) ||||| ||||| ||||| ||||| ||||| |||||&lt;br /&gt;
* 14,7456 MHz Quarze ||||| ||||| ||&lt;br /&gt;
* 25,0000 Mhz Quarz (wird benötigt für Microchip TCP/IP Controller ENC28J60) ||||&lt;br /&gt;
* zu Schaltreglern LM257x u.a. passende fertige Spulen (Induktivitaet, max.Strom, keine &amp;quot;Entstörspulen&amp;quot;) |||||  |||||  |||||  ||||| |||||  ||||| |||| ||||| ||||| ||&lt;br /&gt;
* Die Micrometals Pulverkerne (-18 und -26) auch in Größer |||||&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;
* SMD Widerstande in Bauform 0603 0402 ||||| ||||| ||||| ||||| ||||&lt;br /&gt;
* R2R-Widerstandsnetzwerke (z. B. 10/20kOhm für DA-Wandler an Microcontrollern) ||||| | //Es gibt günstige 8bit DACs mit parallelem Interface, z.B. TLC 7528CN für 1,20 EUR&lt;br /&gt;
* Magnetics MPP Ringkerne ||||| |&lt;br /&gt;
* Magnetics CoolMu Ringkerne ||||| ||&lt;br /&gt;
* 25/50W Widerstände (~20/50 Ohm auch weniger) ||||&lt;br /&gt;
* ordentliche Speicherspulen mit hohem L und niedrigem R ||||&lt;br /&gt;
* Netzfilter FFP Reihe Schurter |&lt;br /&gt;
* Niederohm-Widerstände (Shunts ab 1mOhm im guten Gehäuse z.B. TO220) ||&lt;br /&gt;
* Varistoren 14V auch als bedrahtetes Bauteil (für KFZ-Bordnetz) ||&lt;br /&gt;
* Metallbrückengleichrichter für 50A |&lt;br /&gt;
* Präzisions-Spannunsgteilernetzwerke ||&lt;br /&gt;
* Präzisionswiderstände 0,05% und besser, ev. Drahtgewickelt |||&lt;br /&gt;
* Wima MKP4 |&lt;br /&gt;
* Kleine Niedervolt-Polyproplyenkondis mit mehr Kapazität ||&lt;br /&gt;
&lt;br /&gt;
== Optoelektronik und Leuchtmittel ==&lt;br /&gt;
* OSRAM &amp;quot;Golden Dragon&amp;quot; LEDs (http://www.osram-os.com/goldendragon) ||&lt;br /&gt;
* low current SMD LEDs (z.B. Osram LG T679 - Anm.: hier gleich die neuen Varianten Lx T67K bestellen, nicht die alten 9er !) ||||| |||&lt;br /&gt;
* weisse SMD LED Bauform 0603 |||||&lt;br /&gt;
* SMD LED Bauform 0402 rot/gelb/grün/blau/weiss  ||||&lt;br /&gt;
* Vakuum-Fluoreszenz-Displays (Dot Matrix mit Standardcontroller, z.B. Futaba &amp;quot;LCD Emulators&amp;quot;)  ||||| ||&lt;br /&gt;
* Diese 4-Stelligen Dot-Matrix LED Anzeigen Siemens SLG 2016 oder von HP oder ähnliches |&lt;br /&gt;
* OSRAM Halogen Decostar 51 12V 20W GU5,3 statt des billigen NoName Zeugs ||&lt;br /&gt;
* IL207AT (SMD Optokoppler von Infineon) ||||&lt;br /&gt;
* TLP113 (SMD Optokoppler) ||&lt;br /&gt;
* OSRAM Hyper TOPLEDS gelb LY T676-S1T1-26 ||&lt;br /&gt;
* OSRAM Hyper TOPLEDS weiß LW T67C-T2U2-5K8L ||&lt;br /&gt;
* 7-Segment-Anzeige, blau, gem. Anode ||&lt;br /&gt;
* 7-Segment-Anzeige, blau, gem. Kathode ||&lt;br /&gt;
* 7-Segment-Anzeige, weiss, gem. Anode ||&lt;br /&gt;
* 7-Segment-Anzeige, weiss, gem. Kathode ||&lt;br /&gt;
* IR-Diode mit viel power&lt;br /&gt;
http://www.lc-led.com/Catalog/department/36/category/49/1&lt;br /&gt;
&lt;br /&gt;
== Mechanisches ==&lt;br /&gt;
=== Schalter/Potis etc. ===&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  ||||| ||||| ||||| ||||| ||||| ||||| ||||| ||||||&lt;br /&gt;
* Drehschalter Serie DS in allen Versionen nur vom Hersteller C&amp;amp;K; auch brückende Versionen anbieten  ||||| ||||&lt;br /&gt;
* T215 ersetzen gegen etwas Qualitativeres  ||||| &amp;lt;&amp;lt;-- GIBTS, T113A&lt;br /&gt;
* Folientastaturen ||||| ||||| ||||| ||||&lt;br /&gt;
* statt radiohm potis bitte prehostat oder Alphastat 16 63256-026xx ||||| |||||&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;
* bistabile Relais mit 2 Wicklungen |||||&lt;br /&gt;
* Schiebe-Potentiometer, ähnlich C*nrad 441422 |||&lt;br /&gt;
* kleiner Joystick wie beim Atmel Butterfly  ||||| ||||| ||&lt;br /&gt;
&lt;br /&gt;
=== (Steck-) Verbindungen ===&lt;br /&gt;
* Chipkartenkontaktiereinrichtung, die die Kontakte anhebt (keine Schleifkontakte) |||&lt;br /&gt;
* Stift-/Buchsenleisten 2.54mm zum Auseinanderbrechen  ||||| ||||| ||||| ||||| ||||| ||||| ||||| ||||| ||||| =&amp;gt; Bereits im Sortiment: SPL XX, AW 122/XX (XX = 20,32,64); leider nicht als brechbaren Buchsenleisten zu SL xXxxG&lt;br /&gt;
* Buchsenleisten zum Crimpen (allseitig anreihbar!, 1x1, 1x2, z.B. [http://www.newproduct.molex.com/datasheet.aspx?ProductID=92125 Molex 2081 ?] )  ||||| ||||| ||||| |||||&lt;br /&gt;
* Print-Steckverbinder (die einreihigen Stecker auf dem PC-Mainboard) ||||| |||||| ||              //Was soll das sein?&lt;br /&gt;
* WOL-Verbindungskabel / Stecker / Print-Connectoren: ||||&lt;br /&gt;
* Floppy Stromversorgungstecker 3,5&amp;quot; Printausführung ||&lt;br /&gt;
* gängige Platinenverbinder einreihig RM 2mm mit 2-15 Kontakten (in vielen Geräten verwendet, z.B. [http://www.newproduct.molex.com/datasheet.aspx?ProductID=19945 Molex 51004, 53015]): |||&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;
* Hochwertigere 1/4&amp;quot; Klinkenbuchsen, z.B. von Rean oder Cliff ||&lt;br /&gt;
* RJ45-Buchse ||| - schon im Sortiment: MEBP 8-8&#039;&#039;x&#039;&#039; unter Modular-Stecker bei TK&lt;br /&gt;
* TEXTOOL-Fassungen (Breite 7-15,24mm)/ Nullkraftsockel für kleine Mikrokontroller: DIL-20 ||| PLCC-44 ||&lt;br /&gt;
*Preiswerte Kontaktierungen für SD/MMC  ||&lt;br /&gt;
&lt;br /&gt;
=== Kabel etc. ===&lt;br /&gt;
* Flachbandkabel im 2,54mm Raster und dazu passende Auspressstecker und -buchsen ||||| ||||| ||||| ||||&lt;br /&gt;
* Flexible Einzellitze, 0,5² in verschiedenen Farben ||||| ||||| ||&lt;br /&gt;
* das qualitativ mangelhafte 4mm Laborsteckerprogramm rausnehmen und nur noch Hirschmann anbieten  ||||| |&lt;br /&gt;
* dünner Schaltdraht (&amp;lt; 1mm Durchmesser, isoliert mit Tefzel oder Kynar)  ||||| ||||| ||||| ||||| ||||| ||||| ||||| |||&lt;br /&gt;
* Zylinderkopfschrauben M3 x 25mm |||||&lt;br /&gt;
* Zylinderkopfschrauben M2,5 x 12mm |&lt;br /&gt;
* Zylinderkopfschrauben M2,5 x 20mm |&lt;br /&gt;
* Zwillingsliste 2x0.14mm, z.B.  Artikel: ZL214SWW-10M Kessler Elektronik |&lt;br /&gt;
&lt;br /&gt;
== Platinen/Prototypen ==&lt;br /&gt;
* Eisen(III)-Chlorid  ||||| ||||| ||||| ||||| ||||| ||||| ||||| ||||| ||||| |||||&lt;br /&gt;
* Breadboards/&amp;quot;Steckbretter&amp;quot; ||||| ||||| ||||| ||||| ||||| ||||| ||||| ||||| ||||| ||||| ||||| ||||| |||||&lt;br /&gt;
* SOIC auf PDIP Gehäuse-Adapter zwecks Prototypen-Bau ||||| ||||| |&lt;br /&gt;
* Laser-Folien für die Druckformerstellung(Zweckform 3491) ||||| ||||| ||&lt;br /&gt;
* Tonerverdichter (www.Huber-Troisdorf.de) ||||| |&lt;br /&gt;
* Platinen Basismaterial, einseitig Cu-beschichtet, 0,5..1 mm dick ||&lt;br /&gt;
* Adapter TQFP (versch. PinZahlen) auf DIL/QIL ||||| |||&lt;br /&gt;
&lt;br /&gt;
== Werkzeug und Zubehör ==&lt;br /&gt;
&lt;br /&gt;
== Unsortiert/Unspezifisch ==&lt;br /&gt;
* mehr SMD Bauteile  ||||| ||||| ||||| ||||| ||||| ||||| |||||  |||||  ||||| ||||| ||||| ||||| ||||| ||||| |&lt;br /&gt;
* mehr Familien von Logik-ICs, z.B. AC, ACT (in SMD) ||||| ||||| ||||| ||||| ||||&lt;br /&gt;
* HCT-Logik in SMD ||||| ||||| ||||| ||||| ||||| ||||| ||||| |||&lt;br /&gt;
* mehr und v.a. kleine (Hand-) Gehäuse  ||||| ||||| ||||| ||||| ||||| ||||| ||||| ||||| |&lt;br /&gt;
* Preiswertere Alu Druckgussgehäuse, wie z.B. von Hammond Manufacturing ||||| |&lt;br /&gt;
* LiPoly-Zellen (aufladbare Lithiumakkus &amp;quot;Suppentüten) ||||| ||||| ||||| ||&lt;br /&gt;
* gleicher Mindestbestellwert in Österreich wie in Deutschland ||||| ||||| ||||| ||||| |||&lt;br /&gt;
* schnelle Lieferzeit (wie früher 1-2 Tage) ||||| ||||| ||||| ||||| ||||| ||||&lt;br /&gt;
* nicht wie die Konkurrenz jetzt schon im April den Juli Katalog rausbringen ||||| |&lt;br /&gt;
* Filialen in Österreich und der Schweiz :-) ||||| ||||| ||||| |||||&lt;br /&gt;
* Günstige Versandkonditionen für die EU ||||| |&lt;br /&gt;
* Taster Schalter und LED-Fassungen aus der Mentor FEL-Reihe |&lt;br /&gt;
* Selbstabholer-Option bei der Bestellung. Vergisst man es unter &amp;quot;Bemerkung&amp;quot; kommt es per Post :(   ||&lt;br /&gt;
* Möglichkeit für Selbstabholen eine Bestellung unter 10? abzuliefern.  |&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;
* Microchip ICD2 ||&lt;br /&gt;
* Neuere, bessee NiMh Akkus (z.b. GP1100 2/3A, GP2000 AF, GP2200 4/5SubC) |||&lt;br /&gt;
* Bezahlbarere Trafos ||||&lt;br /&gt;
* Allgemein mehr Sensoren ||||| ||&lt;br /&gt;
* Funk-Entstördrosseln 16A, div. Werte ||&lt;br /&gt;
* Toner für Laserdrucker Kyocera FS-1010 TK17 ||&lt;br /&gt;
* ist ja eigentlich der gängigste Kyocera Toner&lt;br /&gt;
* Bessere Auswahl: statt MSP430F147, F148, F149 wenigstens einen mit DAC -&amp;gt; MSP430F16x&lt;br /&gt;
&lt;br /&gt;
== Zur Webseite ==&lt;br /&gt;
Eine Webseite ohne Frames ist eigentlich heute Stand der Technik. Oder vielleicht ist es das auch nicht mehr - ich weiß 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;
Ferner sollte es möglich sein, Bestellungen, welche noch nicht bearbeitet werden zu verändern, also z.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;
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;
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;
Virtuelle Bauteilekisten (vbox)?!&lt;br /&gt;
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 veröffentlichen zu können.&lt;br /&gt;
&lt;br /&gt;
Konkret:&lt;br /&gt;
Ich habe eine Schaltung entwickelt für die ich eine persönliche virtuelle Bauteilekiste bei Reichelt.de zusammengestellt habe. Jetzt gebe ich meine persönliche virtuelle Bauteilekiste mit einer Kurzbeschreibung und einem Link auf meine Homepage(Projekthomepage) auf vbox.reichelt.de frei. Gleichzeitig setze ich auf meiner Homepage einen link auf meine öffentliche &amp;quot;vbox&amp;quot; bei Reichelt. Die öffentliche &amp;quot;vbox&amp;quot; ist dabei nur eine Referenz auf die persönliche &amp;quot;vbox&amp;quot; (synchron) und ist nur von mir veränderbar.&lt;br /&gt;
Ich hoffe die Idee ist verständlich formuliert.&lt;br /&gt;
&lt;br /&gt;
= Bereits im Sortiment =&lt;br /&gt;
&lt;br /&gt;
* 3,3V Laengsregler (LT1086-Serie z.B.)  ||||| =&amp;gt; vgl z.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.B.: ML 100 SW, Meterware z.B.: MESSLEITUNG 10SW)&lt;br /&gt;
* FTDI USB Chips  ||||| ||||| ||||| ||||| ||||| || =&amp;gt; Best-Nr. FT232BM oder FT245BM&lt;br /&gt;
* CAN-Bus Controller MCP2515  |||||&lt;br /&gt;
* VLSI MP3 Decoder  ||||| ||||| |||||  z.Zt. unter CAN-Bus(!) einsortiert&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. PSS-LIN* (&amp;quot;mono&amp;quot;) PSM-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...)&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, schade!)&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;
* einzelne Hartmetallbohrer in diversen Grössen ||||| ||||| ||||| ||||| |&lt;br /&gt;
* Hartmetallbohrer in mehr verschiedenen Größen (z.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;
&lt;br /&gt;
&lt;br /&gt;
==== Logbuch ====&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;/div&gt;</summary>
		<author><name>131.130.1.135</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=Reichelt-Wishlist&amp;diff=9016</id>
		<title>Reichelt-Wishlist</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=Reichelt-Wishlist&amp;diff=9016"/>
		<updated>2005-09-07T20:11:58Z</updated>

		<summary type="html">&lt;p&gt;131.130.1.135: /* Speicher */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Reichelt Wunschliste ==&lt;br /&gt;
&lt;br /&gt;
Viele kaufen ihre Elektronik bei Reichelt. Ärgerlich, dass so manche wichtigen Dinge fehlen. Aus dieser Idee entstand der Thread:&lt;br /&gt;
&lt;br /&gt;
http://www.mikrocontroller.net/forum/read-1-107307.html&lt;br /&gt;
&lt;br /&gt;
Einiges davon hat Reichelt bereits ins Angebot aufgenommen. Damit dies weitergehen kann, kann man hier seine Wünsche veröffentlichen. 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 herauskristalisieren, macht jeder einfach &#039;&#039;&#039;einen&#039;&#039;&#039; virtuellen Strich dahinter: | (ALT-GR Taste und &amp;lt; 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 ist etwas sehr exotisches&#039;&#039;&#039;, wie z.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.&lt;br /&gt;
&lt;br /&gt;
= Wunschliste =&lt;br /&gt;
== Halbleiter ==&lt;br /&gt;
=== Controller/FPGA/CPLD ===&lt;br /&gt;
* Microcontroller mit USB-Anschluß (von Cypress oder Atmel in PDIP z.B. AT89C5131, AT43USB355, CY7C637xx) ||||| ||||| ||||| ||  =&amp;gt; Bereits im Sortiment: Cypress EZ-USB TQFP-44, Best. Nr AN2131 SC&lt;br /&gt;
* Konkret: Neuer PIC mit USB PIC18F4550 ||||| ||||| |||| |&lt;br /&gt;
* Konkret: PIC 16F628A (weil: besser als 16F628) |&lt;br /&gt;
* Konkret: PIC 16F648 (weil mehr programmspeicher, als 16F628) |&lt;br /&gt;
* Mehr FPGAs (v.a aktuellere) von Xilinx, z.B. Spartan III (v.a. auch größere Typen, die noch im TQFP-Gehäuse zu haben sind wie XC3S400) ||||| ||||| ||||| |||||  ||||| ||||| ||||| ||||&lt;br /&gt;
* TI MSP430F1611 (10k RAM, 48k Flash) ||||| ||||| ||||| ||||&lt;br /&gt;
* Philips LPC2104, LPC2105, LPC2106 ||||| ||||| ||||| ||||| ||||| ||||| ||||| |||(auch LPC213X, LPC211x und LPC22xx)&lt;br /&gt;
* Atmel ATtiny25/45/85 ||||| ||||| ||||| ||||| |&lt;br /&gt;
* Atmel ATmega88, ATtiny13V ||||| ||||| ||||| |||| |||(ATtiny13(DIP u. SO ohne &amp;quot;V&amp;quot;) sind bereits verfügbar)&lt;br /&gt;
* Atmel ATMEGA1280 ||||&lt;br /&gt;
* Atmel ATMEGA48 TQFP |||||&lt;br /&gt;
* Atmel ATMEGA2560 ||||| ||||| ||||| ||||| |||&lt;br /&gt;
* Atmel AVR Controller mit Funkanbindung z.B. AT86RF211, AT86RF401, dazu passende Quarze (evtl. SMD) 18,080 MHz (Crystek P/N 016758), Spulen 39nH.  ||||| ||||| ||||| ||||| |&lt;br /&gt;
* Atmel AT91SAM7S32, AT91SAM7S64 ||||| |||| ||||| |||||&lt;br /&gt;
* SSV DIL/NetPCs [http://www.dilnetpc.com]http://www.dilnetpc.com ||||| ||||&lt;br /&gt;
* Microchip PIC 16F88  |||| ||&lt;br /&gt;
* Microchip PIC16F684 |&lt;br /&gt;
* Microchip dsPIC ||||| ||&lt;br /&gt;
* Freescale HCS12 Controller |||||&lt;br /&gt;
* ALTERAs CPLD EPM70xx - Familie ||||||&lt;br /&gt;
* SX20 SX28 IP2022 von Ubicom |&lt;br /&gt;
* SAA5281 Videotextinterface von Philips |||&lt;br /&gt;
* TUSB3210 von Texas Instruments |&lt;br /&gt;
&lt;br /&gt;
=== Speicher ===&lt;br /&gt;
* Atmel DataFlash, z.B. AT45DB081B (8 MBit Flash-Speicher an seriellen Bus im 8poligen Gehäuse) ||||| ||||| ||||| ||||| |||||&lt;br /&gt;
* 24LC256 oder 24AA256 oder 24LC512 oder 24AA512 ||||| ||&lt;br /&gt;
* NextFlash spiFlash NX25P16 (16MBit serial Flash im SO8-Gehäuse) ||||| ||||| |||&lt;br /&gt;
* Schnelles RAM (10, 15 oder 20ns) (5V/3,3V) ||||| |||||&lt;br /&gt;
&lt;br /&gt;
=== ICs ===&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;
* Aufwärtsregler (Step-Up-Konverter): Maxim MAX629 |||||&lt;br /&gt;
* Step-Down-Konverter in SMD Bauform (z.b. MC 34063): |&lt;br /&gt;
* uC supervisor chips + watchdog z.B.: MAX6864 ist z.Z. der beste (0.2uA!) |||&lt;br /&gt;
* ISD 5116 (Sprachaufnahme bis 16min &amp;amp; I2C-Interface)  ||||| |||  &lt;br /&gt;
* DTMF-Dekoder-Enkoder (8870, 8880) ||||| ||||| |||&lt;br /&gt;
* Philips PCA82C252 oder TJA1054A oder vergleichbar (&amp;quot;Fault-Tolerant&amp;quot; CAN Transceiver, 11898-3) ||||| &lt;br /&gt;
* MCP25050 CAN-Bus Input/Output Expander |||&lt;br /&gt;
* Maxim Switched Capacitor Tiefpass-Filter (z.B. MAX297) ||&lt;br /&gt;
* ZHB6718 (H-Bridge für 1,5V - 20V Motoren) ||||&lt;br /&gt;
* Motortreiber TLE 4205 ||&lt;br /&gt;
* Ethernet-Controller RTL8019AS und Übertrager FB2022 ||||| ||||| ||||| ||||| ||||| ||||| ||||| ||||| ||||| ||||| |||||&lt;br /&gt;
* SPI-Ethernet-Controller ENC28J60 und passender Übertrager und passenden Quarz (25,0000 Mhz !) ||||| ||||| ||||| |||&lt;br /&gt;
* AD7524 in SMD ||||| ||||&lt;br /&gt;
* ADS8320 ADC 16 Bit seriell  |||||  ||||| ||||| ||||| ||||&lt;br /&gt;
* DAC7612 DAC 12 Bit seriell  |||||  ||||| ||||| ||||&lt;br /&gt;
* Generell mehr 1-Wire IC ||||| ||||&lt;br /&gt;
* Generell mehr I²C IC ||||| ||||| ||||||&lt;br /&gt;
* I²C-Bus to 1-Wire DALLAS DS2482-100 bzw. DS2482-800  ||||| ||&lt;br /&gt;
* I²C-Bus Temperatursensor DS1631Z ||||| ||&lt;br /&gt;
* UDN 2987 LW (Source Driver UDN2987 in SMD-Bauform) |&lt;br /&gt;
* MAX6958 / MAX6959 (I²C 4-Digit, 9-Segment LED Display Drivers with Keyscan) |||| | &lt;br /&gt;
* MCP23016 16Bit I²C I/O Expander ||||| |||&lt;br /&gt;
* vielseitige PLL Schaltkreise für Frequenzerzeugung. z.B. MC145170D2 (SOIC16) ||||| ||||&lt;br /&gt;
* Digital Potentiometer (z.B. 2-Wire MAX546x) ||||| |||&lt;br /&gt;
* RS485 ESD fest: MAX3086E oder 75180 oder ISL83086E ||||| |&lt;br /&gt;
* Mehr FET-Treiber (TI UCC3372x, HIPxxx , die neueren Brückentreiber von Maxim |||||&lt;br /&gt;
* Max6650 ||&lt;br /&gt;
* MOSFET Treiber IR2011 |&lt;br /&gt;
* LTC24xx ||&lt;br /&gt;
* LM3886 |||||&lt;br /&gt;
* DAC8830 IDT (16Bit-DAC,ser. Input) |||||&lt;br /&gt;
* D/A Wandler mit 4 oder mehr Ausgängen, z.B. TLC5620/TLV5629 |||&lt;br /&gt;
* neue I2C IO von Philips PCA9555 (16 Bit par. I/O, c&#039;t Project Soundcheck II) |||&lt;br /&gt;
* PCA9530D  2Bit I2C_BUS LED-Dimmer |&lt;br /&gt;
* PCA9531D  8Bit 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;
* PCA9551D  8Bit I2C-BUS LED-Blinker |&lt;br /&gt;
* PCA9552D 16Bit I2C-BUS LED-Blinker |&lt;br /&gt;
* PCA9553D  4Bit I2C-BUS LED-Blinker |&lt;br /&gt;
* MAX7311AWG 2Wire Interface von Maxim |&lt;br /&gt;
* STP08CL596B1 DIP16 STM, LOW VOLTAGE 8-BIT CONSTANT CURRENT LED SINK DRIVER |&lt;br /&gt;
* STP08CL596M SO16 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;
* STP16CL596M SO24 STM, LOW VOLTAGE 8-BIT CONSTANT CURRENT LED SINK DRIVER |&lt;br /&gt;
* ATMega 644 ||&lt;br /&gt;
&lt;br /&gt;
=== Diskrete ===	 &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) ||||| ||||| ||||| |	 &lt;br /&gt;
* 3,3V Längsregler SMD Ultra Low drop |	 &lt;br /&gt;
* 5,2V Lowdrop Längsregler LF52 im TO252AA von STM ||||	 &lt;br /&gt;
* Größere Auswahl an Step-up Reglern ||||| ||||| ||	 &lt;br /&gt;
* Spannungsregler in SMD-Version (7805 etc., nicht nur der 78L05) ||||| ||||| ||||| ||	 &lt;br /&gt;
* Spannungsregler SMD in DPAK ||	 &lt;br /&gt;
* BUF420AW Schaltnetzteil Transistor von STM ||||	 &lt;br /&gt;
* SMD Doppeldiode Schottky 12A 60V im TO252AA z.B. 12CWQ06FN von IOR ||||| ||||| ||	 &lt;br /&gt;
* IRF7503/IRF7506 Dual Mosfet SMD	 &lt;br /&gt;
* ZRA250F005 Referenzspanungsquelle 2,5V 0.5% SOT23 gehäuse ||||	 &lt;br /&gt;
* mehr FETs und IGBTs (nichtnur IRF, sehr gut IXYS &amp;lt;- und sauteuer!) ||	 &lt;br /&gt;
* Niederohm-FETs in SO8, N und P |	 &lt;br /&gt;
* SMD-Spannungsregler einstellbar LM317EMP oder LM317AEMP (SMD TO-223 Gehäuse) |||	 &lt;br /&gt;
* Si4562DY N- and P-Channel 2.5-V (G-S) MOSFET SMD |	 &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;
* Digitaltransistoren (BCR*), auch als Pärchen NPN/PNP (BCR10, BCR08pn) |&lt;br /&gt;
&lt;br /&gt;
== Sensoren/Aktoren ==&lt;br /&gt;
* Sensirion SHT11 ||||| ||||| ||||| ||||| ||||| |&lt;br /&gt;
* kleine Feuchtigkeitssensoren zur &#039;on-board-Montage&#039; ||||| ||||&lt;br /&gt;
* Sharp Entfernungssensoren (zb den GP2D120 oder den GP2D12) ||||| ||||| ||||| ||&lt;br /&gt;
* FSRs (Force Sensing Resistor) von Interlink Electronics ||||| |||&lt;br /&gt;
* NanoMuscle Aktuatoren ||&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;
* IS471 Selbstmodulierende IR-Lichtschranke ||||| ||&lt;br /&gt;
* Hall-Sensor UGN3503, KMZ51 |||&lt;br /&gt;
* Motorola Drucksensoren z.b. MPX4250 mit AP Druckanschluß ||&lt;br /&gt;
* Induktions-Stromsensoren Coilcraft #J9199-A o.Ä. |&lt;br /&gt;
* Drehwinkelgeber, Gyro, Kreiselsensoren ähnl. Tokin CG-L43 |&lt;br /&gt;
* AD623 Single Supply,Rail-Rail, InstrOpamp |&lt;br /&gt;
* günstige Temp. Sensoren TC77 ||&lt;br /&gt;
&lt;br /&gt;
== Baugruppen ==&lt;br /&gt;
* Mini-Bluetooth Module (RS232-Bluetooth-&amp;quot;Wandler&amp;quot;-Platinchen) ||| ||||| ||||| ||||| ||||| ||||| ||||| ||||| ||||&lt;br /&gt;
* kostengünstige Funkschaltmodule (TLP/RLP) ||||| ||&lt;br /&gt;
* Easy-Radio Module zur seriellen Datenübertragung (ER400 RS/TS/RTS) |&lt;br /&gt;
&lt;br /&gt;
== &amp;quot;Passive&amp;quot; Bauteile ==&lt;br /&gt;
* Low-ESR Elkos (definiertes Fabrikat/Typ, und nicht einfach irgendwelche! (Rubycon?)) ||||| ||||| ||||| ||||| ||||| ||||&lt;br /&gt;
* 14,7456 MHz Quarze ||||| ||||| ||&lt;br /&gt;
* 25,0000 Mhz Quarz (wird benötigt für Microchip TCP/IP Controller ENC28J60) ||||&lt;br /&gt;
* zu Schaltreglern LM257x u.a. passende fertige Spulen (Induktivitaet, max.Strom, keine &amp;quot;Entstörspulen&amp;quot;) |||||  |||||  |||||  ||||| |||||  ||||| |||| ||||| ||||| ||&lt;br /&gt;
* Die Micrometals Pulverkerne (-18 und -26) auch in Größer |||||&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;
* SMD Widerstande in Bauform 0603 0402 ||||| ||||| ||||| ||||| |||&lt;br /&gt;
* R2R-Widerstandsnetzwerke (z. B. 10/20kOhm für DA-Wandler an Microcontrollern) ||||| | //Es gibt günstige 8bit DACs mit parallelem Interface, z.B. TLC 7528CN für 1,20 EUR&lt;br /&gt;
* Magnetics MPP Ringkerne ||||| |&lt;br /&gt;
* Magnetics CoolMu Ringkerne ||||| ||&lt;br /&gt;
* 25/50W Widerstände (~20/50 Ohm auch weniger) ||||&lt;br /&gt;
* ordentliche Speicherspulen mit hohem L und niedrigem R ||||&lt;br /&gt;
* Netzfilter FFP Reihe Schurter |&lt;br /&gt;
* Niederohm-Widerstände (Shunts ab 1mOhm im guten Gehäuse z.B. TO220) ||&lt;br /&gt;
* Varistoren 14V auch als bedrahtetes Bauteil (für KFZ-Bordnetz) ||&lt;br /&gt;
* Metallbrückengleichrichter für 50A |&lt;br /&gt;
* Präzisions-Spannunsgteilernetzwerke ||&lt;br /&gt;
* Präzisionswiderstände 0,05% und besser, ev. Drahtgewickelt |||&lt;br /&gt;
* Wima MKP4 |&lt;br /&gt;
* Kleine Niedervolt-Polyproplyenkondis mit mehr Kapazität ||&lt;br /&gt;
&lt;br /&gt;
== Optoelektronik und Leuchtmittel ==&lt;br /&gt;
* OSRAM &amp;quot;Golden Dragon&amp;quot; LEDs (http://www.osram-os.com/goldendragon) ||&lt;br /&gt;
* low current SMD LEDs (z.B. Osram LG T679 - Anm.: hier gleich die neuen Varianten Lx T67K bestellen, nicht die alten 9er !) ||||| |||&lt;br /&gt;
* weisse SMD LED Bauform 0603 |||||&lt;br /&gt;
* SMD LED Bauform 0402 rot/gelb/grün/blau/weiss  ||||&lt;br /&gt;
* Vakuum-Fluoreszenz-Displays (Dot Matrix mit Standardcontroller, z.B. Futaba &amp;quot;LCD Emulators&amp;quot;)  ||||| ||&lt;br /&gt;
* Diese 4-Stelligen Dot-Matrix LED Anzeigen Siemens SLG 2016 oder von HP oder ähnliches |&lt;br /&gt;
* OSRAM Halogen Decostar 51 12V 20W GU5,3 statt des billigen NoName Zeugs ||&lt;br /&gt;
* IL207AT (SMD Optokoppler von Infineon) ||||&lt;br /&gt;
* TLP113 (SMD Optokoppler) ||&lt;br /&gt;
* OSRAM Hyper TOPLEDS gelb LY T676-S1T1-26 ||&lt;br /&gt;
* OSRAM Hyper TOPLEDS weiß LW T67C-T2U2-5K8L ||&lt;br /&gt;
* 7-Segment-Anzeige, blau, gem. Anode |&lt;br /&gt;
* 7-Segment-Anzeige, blau, gem. Kathode |&lt;br /&gt;
* 7-Segment-Anzeige, weiss, gem. Anode |&lt;br /&gt;
* 7-Segment-Anzeige, weiss, gem. Kathode |&lt;br /&gt;
* IR-Diode mit viel power&lt;br /&gt;
http://www.lc-led.com/Catalog/department/36/category/49/1&lt;br /&gt;
&lt;br /&gt;
== Mechanisches ==&lt;br /&gt;
=== Schalter/Potis etc. ===&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  ||||| ||||| ||||| ||||| ||||| ||||| ||||| ||||&lt;br /&gt;
* Drehschalter Serie DS in allen Versionen nur vom Hersteller C&amp;amp;K; auch brückende Versionen anbieten  ||||| ||||&lt;br /&gt;
* T215 ersetzen gegen etwas Qualitativeres  ||||| &amp;lt;&amp;lt;-- GIBTS, T113A&lt;br /&gt;
* Folientastaturen ||||| ||||| ||||| ||||&lt;br /&gt;
* statt radiohm potis bitte prehostat oder Alphastat 16 63256-026xx ||||| |||||&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;
* bistabile Relais mit 2 Wicklungen ||||&lt;br /&gt;
* Schiebe-Potentiometer, ähnlich C*nrad 441422 |||&lt;br /&gt;
* kleiner Joystick wie beim Atmel Butterfly  ||||| ||||| |&lt;br /&gt;
&lt;br /&gt;
=== (Steck-) Verbindungen ===&lt;br /&gt;
* Chipkartenkontaktiereinrichtung, die die Kontakte anhebt (keine Schleifkontakte) |||&lt;br /&gt;
* Stift-/Buchsenleisten 2.54mm zum Auseinanderbrechen  ||||| ||||| ||||| ||||| ||||| ||||| ||||| ||||| |||| =&amp;gt; Bereits im Sortiment: SPL XX, AW 122/XX (XX = 20,32,64); leider nicht als brechbaren Buchsenleisten zu SL xXxxG&lt;br /&gt;
* Buchsenleisten zum Crimpen (allseitig anreihbar!, 1x1, 1x2, z.B. [http://www.newproduct.molex.com/datasheet.aspx?ProductID=92125 Molex 2081 ?] )  ||||| ||||| ||||| ||||&lt;br /&gt;
* Print-Steckverbinder (die einreihigen Stecker auf dem PC-Mainboard) ||||| |||||| ||              //Was soll das sein?&lt;br /&gt;
* WOL-Verbindungskabel / Stecker / Print-Connectoren: |||&lt;br /&gt;
* Floppy Stromversorgungstecker 3,5&amp;quot; Printausführung |&lt;br /&gt;
* gängige Platinenverbinder einreihig RM 2mm mit 2-15 Kontakten (in vielen Geräten verwendet, z.B. [http://www.newproduct.molex.com/datasheet.aspx?ProductID=19945 Molex 51004, 53015]): |||&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;
* Hochwertigere 1/4&amp;quot; Klinkenbuchsen, z.B. von Rean oder Cliff ||&lt;br /&gt;
* RJ45-Buchse ||| - schon im Sortiment: MEBP 8-8&#039;&#039;x&#039;&#039; unter Modular-Stecker bei TK&lt;br /&gt;
* TEXTOOL-Fassungen (Breite 7-15,24mm)/ Nullkraftsockel für kleine Mikrokontroller: DIL-20 ||| PLCC-44 ||&lt;br /&gt;
*Preiswerte Kontaktierungen für SD/MMC  ||&lt;br /&gt;
&lt;br /&gt;
=== Kabel etc. ===&lt;br /&gt;
* Flachbandkabel im 2,54mm Raster und dazu passende Auspressstecker und -buchsen ||||| ||||| ||||| ||||&lt;br /&gt;
* Flexible Einzellitze, 0,5² in verschiedenen Farben ||||| ||||| ||&lt;br /&gt;
* das qualitativ mangelhafte 4mm Laborsteckerprogramm rausnehmen und nur noch Hirschmann anbieten  ||||| |&lt;br /&gt;
* dünner Schaltdraht (&amp;lt; 1mm Durchmesser, isoliert mit Tefzel oder Kynar)  ||||| ||||| ||||| ||||| ||||| ||||| ||||| |||&lt;br /&gt;
* Zylinderkopfschrauben M3 x 25mm |||||&lt;br /&gt;
* Zylinderkopfschrauben M2,5 x 12mm |&lt;br /&gt;
* Zylinderkopfschrauben M2,5 x 20mm |&lt;br /&gt;
&lt;br /&gt;
== Platinen/Prototypen ==&lt;br /&gt;
* Eisen(III)-Chlorid  ||||| ||||| ||||| ||||| ||||| ||||| ||||| ||||| ||||| ||&lt;br /&gt;
* Breadboards/&amp;quot;Steckbretter&amp;quot; ||||| ||||| ||||| ||||| ||||| ||||| ||||| ||||| ||||| ||||| ||||| ||||| |||&lt;br /&gt;
* SOIC auf PDIP Gehäuse-Adapter zwecks Prototypen-Bau ||||| |||||&lt;br /&gt;
* Laser-Folien für die Druckformerstellung(Zweckform 3491) ||||| ||||| |&lt;br /&gt;
* Tonerverdichter (www.Huber-Troisdorf.de) ||||| |&lt;br /&gt;
* Platinen Basismaterial, einseitig Cu-beschichtet, 0,5..1 mm dick |&lt;br /&gt;
* Adapter TQFP (versch. PinZahlen) auf DIL/QIL |||||&lt;br /&gt;
&lt;br /&gt;
== Werkzeug und Zubehör ==&lt;br /&gt;
&lt;br /&gt;
== Unsortiert/Unspezifisch ==&lt;br /&gt;
* mehr SMD Bauteile  ||||| ||||| ||||| ||||| ||||| ||||| |||||  |||||  ||||| ||||| ||||| ||||| ||||| ||||&lt;br /&gt;
* mehr Familien von Logik-ICs, z.B. AC, ACT (in SMD) ||||| ||||| ||||| ||||| |||&lt;br /&gt;
* HCT-Logik in SMD ||||| ||||| ||||| ||||| ||||| ||||| ||||| ||&lt;br /&gt;
* mehr und v.a. kleine (Hand-) Gehäuse  ||||| ||||| ||||| ||||| ||||| ||||| ||||| ||||| |&lt;br /&gt;
* Preiswertere Alu Druckgussgehäuse, wie z.B. von Hammond Manufacturing ||||| |&lt;br /&gt;
* LiPoly-Zellen (aufladbare Lithiumakkus &amp;quot;Suppentüten) ||||| ||||| ||||| |&lt;br /&gt;
* gleicher Mindestbestellwert in Österreich wie in Deutschland ||||| ||||| ||||| ||||| |||&lt;br /&gt;
* schnelle Lieferzeit (wie früher 1-2 Tage) ||||| ||||| ||||| ||||| ||||| ||&lt;br /&gt;
* nicht wie die Konkurrenz jetzt schon im April den Juli Katalog rausbringen ||||| |&lt;br /&gt;
* Filialen in Österreich und der Schweiz :-) ||||| ||||| ||||| |||||&lt;br /&gt;
* Günstige Versandkonditionen für die EU ||||| |&lt;br /&gt;
* Taster Schalter und LED-Fassungen aus der Mentor FEL-Reihe |&lt;br /&gt;
* Selbstabholer-Option bei der Bestellung. Vergisst man es unter &amp;quot;Bemerkung&amp;quot; kommt es per Post :(   ||&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;
* Microchip ICD2 |&lt;br /&gt;
* Neuere, bessee NiMh Akkus (z.b. GP1100 2/3A, GP2000 AF, GP2200 4/5SubC) |||&lt;br /&gt;
* Bezahlbarere Trafos ||||&lt;br /&gt;
* Allgemein mehr Sensoren ||||| ||&lt;br /&gt;
* Funk-Entstördrosseln 16A, div. Werte ||&lt;br /&gt;
* Toner für Laserdrucker Kyocera FS-1010 TK17 ||&lt;br /&gt;
* ist ja eigentlich der gängigste Kyocera Toner&lt;br /&gt;
* Bessere Auswahl: statt MSP430F147, F148, F149 wenigstens einen mit DAC -&amp;gt; MSP430F16x&lt;br /&gt;
&lt;br /&gt;
== Zur Webseite ==&lt;br /&gt;
Eine Webseite ohne Frames ist eigentlich heute Stand der Technik. Oder vielleicht ist es das auch nicht mehr - ich weiß 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;
Ferner sollte es möglich sein, Bestellungen, welche noch nicht bearbeitet werden zu verändern, also z.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;
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;
= Bereits im Sortiment =&lt;br /&gt;
&lt;br /&gt;
* 3,3V Laengsregler (LT1086-Serie z.B.)  ||||| =&amp;gt; vgl z.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.B.: ML 100 SW, Meterware z.B.: MESSLEITUNG 10SW)&lt;br /&gt;
* FTDI USB Chips  ||||| ||||| ||||| ||||| ||||| || =&amp;gt; Best-Nr. FT232BM oder FT245BM&lt;br /&gt;
* CAN-Bus Controller MCP2515  |||||&lt;br /&gt;
* VLSI MP3 Decoder  ||||| ||||| |||||  z.Zt. unter CAN-Bus(!) einsortiert&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. PSS-LIN* (&amp;quot;mono&amp;quot;) PSM-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...)&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, schade!)&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;
* einzelne Hartmetallbohrer in diversen Grössen ||||| ||||| ||||| ||||| |&lt;br /&gt;
* Hartmetallbohrer in mehr verschiedenen Größen (z.B. 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;&lt;br /&gt;
* 68HC908GP32 |&lt;br /&gt;
* überhaupt: Freescale 68HC908- und vor allem 68HCS08-Mikrocontroller fehlen total im Sortiment!&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Logbuch ====&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;/div&gt;</summary>
		<author><name>131.130.1.135</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=Diskussion:Linksammlung&amp;diff=11890</id>
		<title>Diskussion:Linksammlung</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=Diskussion:Linksammlung&amp;diff=11890"/>
		<updated>2005-09-01T19:10:57Z</updated>

		<summary type="html">&lt;p&gt;131.130.1.135: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Diese Seite soll moeglicherweise die Linksammlung auf http://www.mikrocontroller.net/links.htm ersetzen. Geplant ist dass die Leute hier ihre Links eintragen koennen, und der Inhalt dann alle paar Wochen geprueft und auf http://www.mikrocontroller.net/links.htm uebernommen wird. Was haltet ihr davon? ([[Benutzer:Andreas|Andreas]] 13:59, 19. Apr 2004 (CEST))&lt;br /&gt;
&lt;br /&gt;
Klasse Idee! Am besten dann noch mit Hinweis darauf, dass man im Wiki die aktuelle Version findet und man dort Änderungen machen kann. Das gleich könnte man ja auch mit der AVR-GCC und MSP430 Seite machen, oder? Dann wäre die verwirrende Redundanz etwas verringert - und vielleicht nutzen dann mehr Leute das Wiki. Viel Spass beim diffen  :-) (ozel)&lt;br /&gt;
&lt;br /&gt;
:Genau so ist das mit den AVR- und MSP430-Seiten auch geplant. ([[Benutzer:Andreas|Andreas]] 17:14, 19. Apr 2004 (CEST))&lt;br /&gt;
&lt;br /&gt;
Klingt ganz OK. Eine Linksamlung auf CGI Basis fände ich etwas besser, aber man kann es auch mal so probieren ([[Benutzer:Suschman|Suschman]]).&lt;br /&gt;
&lt;br /&gt;
:Dafuer irgend ein CGI-System zu nehmen finde ich unnoetig umstaendlich. ([[Benutzer:Andreas|Andreas]] 17:14, 19. Apr 2004 (CEST))&lt;br /&gt;
&lt;br /&gt;
PS: Name &amp;amp; Datum werden automatisch eingefuegt wenn ihr &amp;quot;&amp;lt;nowiki&amp;gt;~~~~&amp;lt;/nowiki&amp;gt;&amp;quot; eingebt. ([[Benutzer:Andreas|Andreas]] 17:14, 19. Apr 2004 (CEST))&lt;br /&gt;
&lt;br /&gt;
Was meint ihr, wie sollte man denn die Kategorieneinteilung machen? Einfach alles was mit AVR zu tun hat unter eine Überschrift zu schmeißen finde ich nicht sehr übersichtlich. ([[Benutzer:Andreas|Andreas]] 22:37, 28. Mai 2004 (CEST))&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Der Link zur Seite von Peter Fleury funktioniert nicht mehr, kennt jemand die Adresse einer neuen Seite?&lt;br /&gt;
([[Benutzer:TTL|TTL]] 09:59, 3. Okt 2004 (CEST))&lt;br /&gt;
:Link aktualisiert. Google-Suche nach Peter Fleury hat geholfen =) --[[Benutzer:Oxygene|Oxygene]] 10:27, 3. Okt 2004 (CEST)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Mit meherent unterkategorien wird&#039;s vom layout unübersichtlich. Kann man das nicht automatisch einrücken wie bei http://www.mikrocontroller.net/links.htm?--[[Benutzer:80.131.43.2|80.131.43.2]] 20:13, 2. Nov 2004 (CET)&lt;br /&gt;
&lt;br /&gt;
wie wäre es wenn man eine sprachen-flagge als bild vor jeden link macht?&lt;br /&gt;
&lt;br /&gt;
==www.loetstelle.net==&lt;br /&gt;
www.loetstelle.net schaut zwar recht nett gestaltet aus und die projekte klingen auch ganz nett (ich find die heartbeat-sache z.B. sehr herzig) - aber wenn man um die dafür notwendigen dateien zu bekommen gezwungen werden soll, eine gewisse anzahl an beiträgen im angehängten forum abzusetzen, so finde ich das sehr seltsam und gefällt mir ehrlich gesagt gar nicht. meiner meinung nach sollte das das entweder zum link dazuschreiben oder aber den link gleich ganz entfernen.&lt;br /&gt;
bitte um diskussion!&lt;/div&gt;</summary>
		<author><name>131.130.1.135</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=HD44780&amp;diff=8963</id>
		<title>HD44780</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=HD44780&amp;diff=8963"/>
		<updated>2005-08-30T23:51:33Z</updated>

		<summary type="html">&lt;p&gt;131.130.1.135: ach kinder.... :/&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Der HD44780 ist ein Displaytreiber für Text-Displays. Praktisch alle Text-Displays werden mit diesem oder einem kompatiblen Controller angesteuert. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=allgemeine Ansteuerung=&lt;br /&gt;
==Pinbelegung==&lt;br /&gt;
{|&lt;br /&gt;
!Pin || Funktion || Beschreibung&lt;br /&gt;
|-&lt;br /&gt;
|1 || | VSS || Versorgungsspannung GND&lt;br /&gt;
|-&lt;br /&gt;
|2 || | VCC || Versorgungsspannung, meistens 5V, je nach genauem Typ unterschiedlich&lt;br /&gt;
|-&lt;br /&gt;
|3 || | Kontrastspannung ||Spannung zwischen VSS und VCC, kann auf &lt;br /&gt;
|-&lt;br /&gt;
|4 || | RS || Registerauswahl; 0 = Befehlsregister, 1 = Datenregister &lt;br /&gt;
|-&lt;br /&gt;
|5 || | R/W || Lese oder Schreibzugriff, 0 = Schreiben, 1 = Lesen, kann meistens auf GND gezogen werden&lt;br /&gt;
|-&lt;br /&gt;
|6 || | E || Taktleitung&lt;br /&gt;
|-&lt;br /&gt;
|7 || | DB0 || Datenleitung&lt;br /&gt;
|-&lt;br /&gt;
|8 || |DB1 || Datenleitung&lt;br /&gt;
|-&lt;br /&gt;
|9 || |DB2 || Datenleitung&lt;br /&gt;
|-&lt;br /&gt;
|10 || |DB3 || Datenleitung&lt;br /&gt;
|-&lt;br /&gt;
|11 || |DB4 || Datenleitung&lt;br /&gt;
|-&lt;br /&gt;
|12 || |DB5 || Datenleitung&lt;br /&gt;
|-&lt;br /&gt;
|13 || |DB6 || Datenleitung&lt;br /&gt;
|-&lt;br /&gt;
|14 || |DB7 || Datenleitung&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Speicher==&lt;br /&gt;
Ein HD44780 besitzt mehrere Speicher:&lt;br /&gt;
===DDRAM (Display Data RAM)===&lt;br /&gt;
In das DDRAM werden die anzuzeigenden Daten eingeschrieben. &lt;br /&gt;
&lt;br /&gt;
===CGROM (Character Generator ROM)===&lt;br /&gt;
Dieser ROM enthält die Zeichen in Form von 5x8 oder 5x10 Punktmatrizen. Er kann nicht geändert werden, außer man sendet einen EEPROM zu Hitachi für eine Massenproduktion.&lt;br /&gt;
&lt;br /&gt;
===CGRAM (Character Generator RAM)===&lt;br /&gt;
In diesem RAM können acht 5x8 Pixel oder vier 5x10 Pixel große benutzerdefinierte Zeichen abgelegt werden. &lt;br /&gt;
Wenn keine benutzerdefinierte Zeichen gebraucht werden, kann dieser Bereich als Auslagerungsspeicher benutzt werden.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Kommandos==&lt;br /&gt;
&lt;br /&gt;
=Ansteuerung per Microcontroller=&lt;br /&gt;
==Fertige Projekte oder Bibliotheken==&lt;br /&gt;
* Peter Fleurys [http://homepage.sunrise.ch/mysunrise/peterfleury/avr-software.html LCD library for HD44870 based LCDs]&lt;br /&gt;
* [http://wwwiti.cs.uni-magdeburg.de/~buchmann/privat/lcd.htm Grundlagen und Code für 8051] von Erik Buchmann&lt;/div&gt;</summary>
		<author><name>131.130.1.135</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=Diskussion:Elektronikversender&amp;diff=8960</id>
		<title>Diskussion:Elektronikversender</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=Diskussion:Elektronikversender&amp;diff=8960"/>
		<updated>2005-08-30T18:00:07Z</updated>

		<summary type="html">&lt;p&gt;131.130.1.135: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;kurze Suche zum Vergleich reichelt.de/digikey mit atmega8 und atmega162: digikey ist nur noch unwesentlich falls ueberhaupt guenstiger&lt;br /&gt;
&lt;br /&gt;
bitte eigene erfahrungen entweder gleich in die eintraege mitverarbeiten oder auf die diskussionsseite schreiben - danke.&lt;br /&gt;
&lt;br /&gt;
konkreter anlass schuricht: auf der website steht, dass er durchaus auch an private liefert, nur die gedruckten kataloge gibt es nur fuer gewerbe/schulen etc. stimmt das so? bitte um hinweise und entsprechende bearbeitung - danke! :)&lt;br /&gt;
--[[Benutzer:80.108.115.184|80.108.115.184]] 00:29, 25. Jul 2005 (CEST)&lt;br /&gt;
&lt;br /&gt;
ad Tec-Shop (Wolfgang Rompel Elektronik): im webshop finde ich als einziges produkt einen attiny15. wenn das wirklich so ist (also nicht an meinem browser liegt), wuerde ich diesen &amp;quot;shop&amp;quot; entfernen. wenn es an meinem browser liegt, wuerde ich das dazu vermerken. ich bitte Euch also das kurz auszuprobieren, ob Ihr auch nur ein produkt seht. danke! --[[Benutzer:80.108.115.184|80.108.115.184]] 22:02, 26. Aug 2005 (CEST)&lt;br /&gt;
&lt;br /&gt;
hier - http://www.almeder.at/~calm/elt/distrib.htm - gibt es auch eine liste, nicht nur mit versendern, sondern geschaeften insgesamt.&lt;/div&gt;</summary>
		<author><name>131.130.1.135</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=Reichelt-Wishlist&amp;diff=8929</id>
		<title>Reichelt-Wishlist</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=Reichelt-Wishlist&amp;diff=8929"/>
		<updated>2005-08-26T15:41:41Z</updated>

		<summary type="html">&lt;p&gt;131.130.1.135: /* Unsortiert/Unspezifisch */ ein strich pro person&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Reichelt Wunschliste ==&lt;br /&gt;
&lt;br /&gt;
Viele kaufen ihre Elektronik bei Reichelt. Ärgerlich, dass so manche wichtigen Dinge fehlen. Aus dieser Idee entstand der Thread:&lt;br /&gt;
&lt;br /&gt;
http://www.mikrocontroller.net/forum/read-1-107307.html&lt;br /&gt;
&lt;br /&gt;
Einiges davon hat Reichelt bereits ins Angebot aufgenommen. Damit dies weitergehen kann, kann man hier seine Wünsche veröffentlichen. 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 herauskristalisieren, macht jeder einfach &#039;&#039;&#039;einen&#039;&#039;&#039; virtuellen Strich dahinter: | (ALT-GR Taste und &amp;lt; 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 ist etwas sehr exotisches&#039;&#039;&#039;, wie z.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.&lt;br /&gt;
&lt;br /&gt;
= Wunschliste =&lt;br /&gt;
== Halbleiter ==&lt;br /&gt;
=== Controller/FPGA/CPLD ===&lt;br /&gt;
* Microcontroller mit USB-Anschluß (von Cypress oder Atmel in PDIP z.B. AT89C5131, AT43USB355, CY7C637xx) ||||| ||||| ||||| ||  =&amp;gt; Bereits im Sortiment: Cypress EZ-USB TQFP-44, Best. Nr AN2131 SC&lt;br /&gt;
* Konkret: Neuer PIC mit USB PIC18F4550 ||||| ||||| |||| |&lt;br /&gt;
* Konkret: PIC 16F628A (weil: besser als 16F628) |&lt;br /&gt;
* Konkret: PIC 16F648 (weil mehr programmspeicher, als 16F628) |&lt;br /&gt;
* Mehr FPGAs (v.a aktuellere) von Xilinx, z.B. Spartan III (v.a. auch größere Typen, die noch im TQFP-Gehäuse zu haben sind wie XC3S400) ||||| ||||| ||||| |||||  ||||| ||||| ||||| ||||&lt;br /&gt;
* TI MSP430F1611 (10k RAM, 48k Flash) ||||| ||||| ||||| ||||&lt;br /&gt;
* Philips LPC2104, LPC2105, LPC2106 ||||| ||||| ||||| ||||| ||||| ||||| ||||| |||(auch LPC213X, LPC211x und LPC22xx)&lt;br /&gt;
* Atmel ATtiny25/45/85 ||||| ||||| ||||| ||||&lt;br /&gt;
* Atmel ATmega88, ATtiny13V ||||| ||||| ||||| |||| |||(ATtiny13(DIP u. SO ohne &amp;quot;V&amp;quot;) sind bereits verfügbar)&lt;br /&gt;
* Atmel ATMEGA1280 ||||&lt;br /&gt;
* Atmel ATMEGA48 TQFP |||||&lt;br /&gt;
* Atmel ATMEGA2560 ||||| ||||| ||||| ||||| |||&lt;br /&gt;
* Atmel AVR Controller mit Funkanbindung z.B. AT86RF211, AT86RF401, dazu passende Quarze (evtl. SMD) 18,080 MHz (Crystek P/N 016758), Spulen 39nH.  ||||| ||||| ||||| |||||&lt;br /&gt;
* Atmel AT91SAM7S32, AT91SAM7S64 ||||| |||| ||||| |||||&lt;br /&gt;
* SSV DIL/NetPCs [http://www.dilnetpc.com]http://www.dilnetpc.com ||||| ||||&lt;br /&gt;
* Microchip PIC 16F88  |||| ||&lt;br /&gt;
* Microchip PIC16F684 |&lt;br /&gt;
* Microchip dsPIC ||||| ||&lt;br /&gt;
* Freescale HCS12 Controller |||||&lt;br /&gt;
* ALTERAs CPLD EPM70xx - Familie |||||&lt;br /&gt;
* SX20 SX28 IP2022 von Ubicom |&lt;br /&gt;
* SAA5281 Videotextinterface von Philips |||&lt;br /&gt;
* TUSB3210 von Texas Instruments |&lt;br /&gt;
&lt;br /&gt;
=== Speicher ===&lt;br /&gt;
* Atmel DataFlash, z.B. AT45DB081B (8 MBit Flash-Speicher an seriellen Bus im 8poligen Gehäuse) ||||| ||||| ||||| ||||| ||||&lt;br /&gt;
* 24LC256 oder 24AA256 oder 24LC512 oder 24AA512 ||||| ||&lt;br /&gt;
* NextFlash spiFlash NX25P16 (16MBit serial Flash im SO8-Gehäuse) ||||| ||||| |||&lt;br /&gt;
* Schnelles RAM (10, 15 oder 20ns) (5V/3,3V) ||||| |||||&lt;br /&gt;
&lt;br /&gt;
=== ICs ===&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;
* Aufwärtsregler (Step-Up-Konverter): Maxim MAX629 |||||&lt;br /&gt;
* uC supervisor chips + watchdog z.B.: MAX6864 ist z.Z. der beste (0.2uA!) |||&lt;br /&gt;
* ISD 5116 (Sprachaufnahme bis 16min &amp;amp; I2C-Interface)  ||||| |||  &lt;br /&gt;
* DTMF-Dekoder-Enkoder (8870, 8880) ||||| ||||| |||&lt;br /&gt;
* Philips PCA82C252 oder TJA1054A oder vergleichbar (&amp;quot;Fault-Tolerant&amp;quot; CAN Transceiver, 11898-3) ||||| &lt;br /&gt;
* MCP25050 CAN-Bus Input/Output Expander |||&lt;br /&gt;
* Maxim Switched Capacitor Tiefpass-Filter (z.B. MAX297) ||&lt;br /&gt;
* ZHB6718 (H-Bridge für 1,5V - 20V Motoren) ||||&lt;br /&gt;
* Motortreiber TLE 4205 ||&lt;br /&gt;
* Ethernet-Controller RTL8019AS und Übertrager FB2022 ||||| ||||| ||||| ||||| ||||| ||||| ||||| ||||| ||||| ||||| ||||&lt;br /&gt;
* SPI-Ethernet-Controller ENC28J60 und passender Übertrager und passenden Quarz (25,0000 Mhz !) ||||| ||||| ||||| |||&lt;br /&gt;
* AD7524 in SMD ||||| ||||&lt;br /&gt;
* ADS8320 ADC 16 Bit seriell  |||||  ||||| ||||| ||||| ||||&lt;br /&gt;
* DAC7612 DAC 12 Bit seriell  |||||  ||||| ||||| ||||&lt;br /&gt;
* Generell mehr 1-Wire IC ||||| ||||&lt;br /&gt;
* Generell mehr I²C IC ||||| ||||| ||||||&lt;br /&gt;
* I²C-Bus to 1-Wire DALLAS DS2482-100 bzw. DS2482-800  ||||| ||&lt;br /&gt;
* I²C-Bus Temperatursensor DS1631Z ||||| ||&lt;br /&gt;
* UDN 2987 LW (Source Driver UDN2987 in SMD-Bauform) |&lt;br /&gt;
* MAX6958 / MAX6959 (I²C 4-Digit, 9-Segment LED Display Drivers with Keyscan) |||| | &lt;br /&gt;
* MCP23016 16Bit I²C I/O Expander ||||| ||&lt;br /&gt;
* vielseitige PLL Schaltkreise für Frequenzerzeugung. z.B. MC145170D2 (SOIC16) ||||| ||||&lt;br /&gt;
* Digital Potentiometer (z.B. 2-Wire MAX546x) ||||| |||&lt;br /&gt;
* RS485 ESD fest: MAX3086E oder 75180 oder ISL83086E ||||| |&lt;br /&gt;
* Mehr FET-Treiber (TI UCC3372x, HIPxxx , die neueren Brückentreiber von Maxim |||||&lt;br /&gt;
* Max6650 ||&lt;br /&gt;
* LTC24xx ||&lt;br /&gt;
* LM3886 |||||&lt;br /&gt;
* DAC8830 IDT (16Bit-DAC,ser. Input) |||||&lt;br /&gt;
* D/A Wandler mit 4 oder mehr Ausgängen, z.B. TLC5620/TLV5629 |||&lt;br /&gt;
* neue I2C IO von Philips PCA9555 (16 Bit par. I/O, c&#039;t Project Soundcheck II) |||&lt;br /&gt;
* PCA9530D  2Bit I2C_BUS LED-Dimmer |&lt;br /&gt;
* PCA9531D  8Bit 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;
* PCA9551D  8Bit I2C-BUS LED-Blinker |&lt;br /&gt;
* PCA9552D 16Bit I2C-BUS LED-Blinker |&lt;br /&gt;
* PCA9553D  4Bit I2C-BUS LED-Blinker |&lt;br /&gt;
* MAX7311AWG 2Wire Interface von Maxim |&lt;br /&gt;
* STP08CL596B1 DIP16 STM, LOW VOLTAGE 8-BIT CONSTANT CURRENT LED SINK DRIVER |&lt;br /&gt;
* STP08CL596M SO16 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;
* STP16CL596M SO24 STM, LOW VOLTAGE 8-BIT CONSTANT CURRENT LED SINK DRIVER |&lt;br /&gt;
* ATMega 644 |&lt;br /&gt;
&lt;br /&gt;
=== Discrete ===	 &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) |||||| ||||| ||||	 &lt;br /&gt;
* 3,3V Längsregler SMD Ultra Low drop |	 &lt;br /&gt;
* 5,2V Lowdrop Längsregler LF52 im TO252AA von STM ||||	 &lt;br /&gt;
* Größere Auswahl an Step-up Reglern ||||| ||||| ||	 &lt;br /&gt;
* Spannungsregler in SMD-Version (7805 etc., nicht nur der 78L05) ||||| ||||| ||||| |	 &lt;br /&gt;
* Spannungsregler SMD in DPAK |	 &lt;br /&gt;
* BUF420AW Schaltnetzteil Transistor von STM ||||	 &lt;br /&gt;
* SMD Doppeldiode Schottky 12A 60V im TO252AA z.B. 12CWQ06FN von IOR ||||| ||||| ||	 &lt;br /&gt;
* IRF7503/IRF7506 Dual Mosfet SMD	 &lt;br /&gt;
* ZRA250F005 Referenzspanungsquelle 2,5V 0.5% SOT23 gehäuse ||||	 &lt;br /&gt;
* mehr FETs und IGBTs (nichtnur IRF, sehr gut IXYS &amp;lt;- und sauteuer!) ||	 &lt;br /&gt;
* Niederohm-FETs in SO8, N und P |	 &lt;br /&gt;
* SMD-Spannungsregler einstellbar LM317EMP oder LM317AEMP (SMD TO-223 Gehäuse) |||	 &lt;br /&gt;
* Si4562DY N- and P-Channel 2.5-V (G-S) MOSFET SMD |	 &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;
* Digitaltransistoren (BCR*), auch als Pärchen NPN/PNP (BCR10, BCR08pn) |&lt;br /&gt;
&lt;br /&gt;
== Sensoren/Aktoren ==&lt;br /&gt;
* Sensirion SHT11 ||||| ||||| ||||| ||||| ||||| |&lt;br /&gt;
* kleine Feuchtigkeitssensoren zur &#039;on-board-Montage&#039; ||||| ||&lt;br /&gt;
* Sharp Entfernungssensoren (zb den GP2D120 oder den GP2D12) ||||| ||||| ||||| |  &lt;br /&gt;
* FSRs (Force Sensing Resistor) von Interlink Electronics ||||| ||&lt;br /&gt;
* NanoMuscle Aktuatoren ||&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;
* IS471 Selbstmodulierende IR-Lichtschranke ||||| ||&lt;br /&gt;
* Hall-Sensor UGN3503, KMZ51 |||&lt;br /&gt;
* Motorola Drucksensoren z.b. MPX4250 mit AP Druckanschluß ||&lt;br /&gt;
* Induktions-Stromsensoren Coilcraft #J9199-A o.Ä. |&lt;br /&gt;
* Drehwinkelgeber, Gyro, Kreiselsensoren ähnl. Tokin CG-L43 |&lt;br /&gt;
* AD623 Single Supply,Rail-Rail, InstrOpamp |&lt;br /&gt;
* günstige Temp. Sensoren TC77 |&lt;br /&gt;
&lt;br /&gt;
== Baugruppen ==&lt;br /&gt;
* Mini-Bluetooth Module (RS232-Bluetooth-&amp;quot;Wandler&amp;quot;-Platinchen) ||| ||||| ||||| ||||| ||||| ||||| ||||| ||||| |||&lt;br /&gt;
* kostengünstige Funkschaltmodule (TLP/RLP) ||||| ||&lt;br /&gt;
&lt;br /&gt;
== &amp;quot;Passive&amp;quot; Bauteile ==&lt;br /&gt;
* Low-ESR Elkos (definiertes Fabrikat/Typ, und nicht einfach irgendwelche! (Rubycon?)) ||||| ||||| ||||| ||||| ||||| ||||&lt;br /&gt;
* 14,7456 MHz Quarze ||||| ||||| ||&lt;br /&gt;
* 25,0000 Mhz Quarz (wird benötigt für Microchip TCP/IP Controller ENC28J60) ||||&lt;br /&gt;
* zu Schaltreglern LM257x u.a. passende fertige Spulen (Induktivitaet, max.Strom, keine &amp;quot;Entstörspulen&amp;quot;) |||||  |||||  |||||  ||||| |||||  ||||| |||| ||||| ||||| |&lt;br /&gt;
* Die Micrometals Pulverkerne (-18 und -26) auch in Größer |||||&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;
* SMD Widerstande in Bauform 0603 0402 ||||| ||||| ||||| ||||| ||&lt;br /&gt;
* R2R-Widerstandsnetzwerke (z. B. 10/20kOhm für DA-Wandler an Microcontrollern) ||||| | //Es gibt günstige 8bit DACs mit parallelem Interface, z.B. TLC 7528CN für 1,20 EUR&lt;br /&gt;
* Magnetics MPP Ringkerne ||||| |&lt;br /&gt;
* Magnetics CoolMu Ringkerne ||||| ||&lt;br /&gt;
* 25/50W Widerstände (~20/50 Ohm auch weniger) ||||&lt;br /&gt;
* ordentliche Speicherspulen mit hohem L und niedrigem R |||&lt;br /&gt;
* Netzfilter FFP Reihe Schurter |&lt;br /&gt;
* Niederohm-Widerstände (Shunts ab 1mOhm im guten Gehäuse z.B. TO220) ||&lt;br /&gt;
* Varistoren 14V auch als bedrahtetes Bauteil (für KFZ-Bordnetz) ||&lt;br /&gt;
* Metallbrückengleichrichter für 50A |&lt;br /&gt;
* Präzisions-Spannunsgteilernetzwerke ||&lt;br /&gt;
* Präzisionswiderstände 0,05% und besser, ev. Drahtgewickelt |||&lt;br /&gt;
* Wima MKP4 |&lt;br /&gt;
* Kleine Niedervolt-Polyproplyenkondis mit mehr Kapazität ||&lt;br /&gt;
&lt;br /&gt;
== Optoelektronik und Leuchtmittel ==&lt;br /&gt;
* OSRAM &amp;quot;Golden Dragon&amp;quot; LEDs (http://www.osram-os.com/goldendragon) |&lt;br /&gt;
* low current SMD LEDs (z.B. Osram LG T679 - Anm.: hier gleich die neuen Varianten Lx T67K bestellen, nicht die alten 9er !) ||||| |||&lt;br /&gt;
* weisse SMD LED Bauform 0603 |||||&lt;br /&gt;
* SMD LED Bauform 0402 rot/gelb/grün/blau/weiss  ||||&lt;br /&gt;
* Vakuum-Fluoreszenz-Displays (Dot Matrix mit Standardcontroller, z.B. Futaba &amp;quot;LCD Emulators&amp;quot;)  ||||| ||&lt;br /&gt;
* Diese 4-Stelligen Dot-Matrix LED Anzeigen Siemens SLG 2016 oder von HP oder ähnliches |&lt;br /&gt;
* OSRAM Halogen Decostar 51 12V 20W GU5,3 statt des billigen NoName Zeugs ||&lt;br /&gt;
* IL207AT (SMD Optokoppler von Infineon) ||||&lt;br /&gt;
* TLP113 (SMD Optokoppler) ||&lt;br /&gt;
* OSRAM Hyper TOPLEDS gelb LY T676-S1T1-26 |&lt;br /&gt;
* OSRAM Hyper TOPLEDS weiß LW T67C-T2U2-5K8L |&lt;br /&gt;
* 7-Segment-Anzeige, blau, gem. Anode&lt;br /&gt;
* 7-Segment-Anzeige, blau, gem. Kathode&lt;br /&gt;
* 7-Segment-Anzeige, weiss, gem. Anode&lt;br /&gt;
* 7-Segment-Anzeige, weiss, gem. Kathode&lt;br /&gt;
http://www.lc-led.com/Catalog/department/36/category/49/1&lt;br /&gt;
&lt;br /&gt;
== Mechanisches ==&lt;br /&gt;
=== Schalter/Potis etc. ===&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  ||||| ||||| ||||| ||||| ||||| ||||| ||||| ||||&lt;br /&gt;
* Drehschalter Serie DS in allen Versionen nur vom Hersteller C&amp;amp;K; auch brückende Versionen anbieten  ||||| ||||&lt;br /&gt;
* T215 ersetzen gegen etwas Qualitativeres  ||||| &amp;lt;&amp;lt;-- GIBTS, T113A&lt;br /&gt;
* Folientastaturen ||||| ||||| ||||| |||&lt;br /&gt;
* statt radiohm potis bitte prehostat oder Alphastat 16 63256-026xx ||||| |||||&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;
* bistabile Relais mit 2 Wicklungen ||||&lt;br /&gt;
* Schiebe-Potentiometer, ähnlich C*nrad 441422 |||&lt;br /&gt;
* kleiner Joystick wie beim Atmel Butterfly  ||||| ||||&lt;br /&gt;
&lt;br /&gt;
=== (Steck-) Verbindungen ===&lt;br /&gt;
* Chipkartenkontaktiereinrichtung, die die Kontakte anhebt (keine Schleifkontakte) |||&lt;br /&gt;
* Stift-/Buchsenleisten 2.54mm zum Auseinanderbrechen  ||||| ||||| ||||| ||||| ||||| ||||| ||||| ||||| |||| =&amp;gt; Bereits im Sortiment: SPL XX, AW 122/XX (XX = 20,32,64); leider nicht als brechbaren Buchsenleisten zu SL xXxxG&lt;br /&gt;
* Buchsenleisten zum Crimpen (allseitig anreihbar!, 1x1, 1x2, z.B. [http://www.newproduct.molex.com/datasheet.aspx?ProductID=92125 Molex 2081 ?] )  ||||| ||||| ||||| ||||&lt;br /&gt;
* Print-Steckverbinder (die einreihigen Stecker auf dem PC-Mainboard) ||||| |||||| ||              //Was soll das sein?&lt;br /&gt;
* WOL-Verbindungskabel / Stecker / Print-Connectoren: |||&lt;br /&gt;
* Floppy Stromversorgungstecker 3,5&amp;quot; Printausführung |&lt;br /&gt;
* gängige Platinenverbinder einreihig RM 2mm mit 2-15 Kontakten (in vielen Geräten verwendet, z.B. [http://www.newproduct.molex.com/datasheet.aspx?ProductID=19945 Molex 51004, 53015]): ||&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;
* Hochwertigere 1/4&amp;quot; Klinkenbuchsen, z.B. von Rean oder Cliff ||&lt;br /&gt;
* RJ45-Buchse ||| - schon im Sortiment: MEBP 8-8&#039;&#039;x&#039;&#039; unter Modular-Stecker bei TK&lt;br /&gt;
* TEXTOOL-Fassungen (Breite 7-15,24mm)/ Nullkraftsockel für kleine Mikrokontroller: DIL-20 ||| PLCC-44 ||&lt;br /&gt;
*Preiswerte Kontaktierungen für SD/MMC  ||&lt;br /&gt;
&lt;br /&gt;
=== Kabel etc. ===&lt;br /&gt;
* Flachbandkabel im 2,54mm Raster und dazu passende Auspressstecker und -buchsen ||||| ||||| ||||| ||||&lt;br /&gt;
* Flexible Einzellitze, 0,5² in verschiedenen Farben ||||| ||||| ||&lt;br /&gt;
* das qualitativ mangelhafte 4mm Laborsteckerprogramm rausnehmen und nur noch Hirschmann anbieten  ||||| |&lt;br /&gt;
* dünner Schaltdraht (&amp;lt; 1mm Durchmesser, isoliert mit Tefzel oder Kynar)  ||||| ||||| ||||| ||||| ||||| ||||| ||||| |||&lt;br /&gt;
* Zylinderkopfschrauben M3 x 25mm |||||&lt;br /&gt;
* Zylinderkopfschrauben M2,5 x 12mm |&lt;br /&gt;
* Zylinderkopfschrauben M2,5 x 20mm |&lt;br /&gt;
&lt;br /&gt;
== Platinen/Prototypen ==&lt;br /&gt;
* Eisen(III)-Chlorid  ||||| ||||| ||||| ||||| ||||| ||||| ||||| ||||| |||||&lt;br /&gt;
* Breadboards/&amp;quot;Steckbretter&amp;quot; ||||| ||||| ||||| ||||| ||||| ||||| ||||| ||||| ||||| ||||| ||||| |||||     &lt;br /&gt;
* SOIC auf PDIP Gehäuse-Adapter zwecks Prototypen-Bau ||||| |||||&lt;br /&gt;
* Laser-Folien für die Druckformerstellung(Zweckform 3491) ||||| ||||&lt;br /&gt;
* Tonerverdichter (www.Huber-Troisdorf.de) ||||| |&lt;br /&gt;
* Platinen Basismaterial, einseitig Cu-beschichtet, 0,5..1 mm dick |&lt;br /&gt;
* Adapter TQFP (versch. PinZahlen) auf DIL/QIL ||||&lt;br /&gt;
&lt;br /&gt;
== Werkzeug und Zubehör ==&lt;br /&gt;
&lt;br /&gt;
== Unsortiert/Unspezifisch ==&lt;br /&gt;
* mehr SMD Bauteile  ||||| ||||| ||||| ||||| ||||| ||||| |||||  |||||  ||||| ||||| ||||| ||||| ||||| |||&lt;br /&gt;
* mehr Familien von Logik-ICs, z.B. AC, ACT (in SMD) ||||| ||||| ||||| ||||| |||&lt;br /&gt;
* HCT-Logik in SMD ||||| ||||| ||||| ||||| ||||| ||||| ||||||&lt;br /&gt;
* mehr und v.a. kleine (Hand-) Gehäuse  ||||| ||||| ||||| ||||| ||||| ||||| ||||| ||||| |&lt;br /&gt;
* Preiswertere Alu Druckgussgehäuse, wie z.B. von Hammond Manufacturing |||||&lt;br /&gt;
* LiPoly-Zellen (aufladbare Lithiumakkus &amp;quot;Suppentüten) ||||| ||||| ||||| |&lt;br /&gt;
* gleicher Mindestbestellwert in Österreich wie in Deutschland ||||| ||||| ||||| ||||| |||&lt;br /&gt;
* schnelle Lieferzeit (wie früher 1-2 Tage) ||||| ||||| ||||| ||||| ||||| |&lt;br /&gt;
* nicht wie die Konkurrenz jetzt schon im April den Juli Katalog rausbringen ||||| |&lt;br /&gt;
* Filialen in Österreich und der Schweiz :-) ||||| ||||| ||||| |||||&lt;br /&gt;
* Günstige Versandkonditionen für die EU ||||| |&lt;br /&gt;
* Taster Schalter und LED-Fassungen aus der Mentor FEL-Reihe |&lt;br /&gt;
* Selbstabholer-Option bei der Bestellung. Vergisst man es unter &amp;quot;Bemerkung&amp;quot; kommt es per Post :(   ||&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;
* Microchip ICD2 |&lt;br /&gt;
* Neuere, bessee NiMh Akkus (z.b. GP1100 2/3A, GP2000 AF, GP2200 4/5SubC) |||&lt;br /&gt;
* Bezahlbarere Trafos ||||&lt;br /&gt;
* Allgemein mehr Sensoren ||||| ||&lt;br /&gt;
* Funk-Entstördrosseln 16A, div. Werte ||&lt;br /&gt;
* Toner für Laserdrucker Kyocera FS-1010 TK17 |&lt;br /&gt;
* ist ja eigentlich der gängigste Kyocera Toner&lt;br /&gt;
* Bessere Auswahl: statt MSP430F147, F148, F149 wenigstens einen mit DAC -&amp;gt; MSP430F16x&lt;br /&gt;
&lt;br /&gt;
== Zur Webseite ==&lt;br /&gt;
Eine Webseite ohne Frames ist eigentlich heute Stand der Technik. Oder vielleicht ist es das auch nicht mehr - ich weiß 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;
Ferner sollte es möglich sein, Bestellungen, welche noch nicht bearbeitet werden zu verändern, also z.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;
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;
= Bereits im Sortiment =&lt;br /&gt;
&lt;br /&gt;
* 3,3V Laengsregler (LT1086-Serie z.B.)  ||||| =&amp;gt; vgl z.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.B.: ML 100 SW, Meterware z.B.: MESSLEITUNG 10SW)&lt;br /&gt;
* FTDI USB Chips  ||||| ||||| ||||| ||||| ||||| || =&amp;gt; Best-Nr. FT232BM oder FT245BM&lt;br /&gt;
* CAN-Bus Controller MCP2515  |||||&lt;br /&gt;
* VLSI MP3 Decoder  ||||| ||||| |||||  z.Zt. unter CAN-Bus(!) einsortiert&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. PSS-LIN* (&amp;quot;mono&amp;quot;) PSM-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...)&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, schade!)&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;
* einzelne Hartmetallbohrer in diversen Grössen ||||| ||||| ||||| ||||| |&lt;br /&gt;
* Hartmetallbohrer in mehr verschiedenen Größen (z.B. 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;&lt;br /&gt;
* 68HC908GP32 |&lt;br /&gt;
* überhaupt: Freescale 68HC908- und vor allem 68HCS08-Mikrocontroller fehlen total im Sortiment!&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Logbuch ====&lt;br /&gt;
19.08.2005: Was ist mit Pneumatik/Hydraulik? FESTO liefert Privatkunden nicht, oder?&lt;br /&gt;
&lt;br /&gt;
08.07.2005: bringt herzlich wenig, hier mehrere Stiche auf einmal zu machen, verfälscht den &amp;quot;Bedarf&amp;quot; und macht die Liste unglaubwürdig. - M. Thomas&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;/div&gt;</summary>
		<author><name>131.130.1.135</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=Elektronikversender&amp;diff=8922</id>
		<title>Elektronikversender</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=Elektronikversender&amp;diff=8922"/>
		<updated>2005-08-23T21:18:44Z</updated>

		<summary type="html">&lt;p&gt;131.130.1.135: /* Eltrix */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Einleitung ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Die Vor- und Nachteile von verschiedenen Elektronik-Versand-Händlern werden relativ häufig im Forum diskutiert. Diese Diskussionen führen nicht selten zu weitestgehend gleichen Ergebnissen. In diesem Artikel sollen daher die Argumente, die für oder gegen einen bestimmten Elektronik-Versender sprechen, zusammengetragen werden. Sobald diese Liste einigermaßen vollständig ist, würde dies sicher einige Diskussions-Threads und/oder Flame-Wars überflüssig machen.&lt;br /&gt;
&lt;br /&gt;
Diese Liste erhebt keinerlei Anspruch auf Vollständigkeit, d.h. wenn ihr einen Versender kennt, der hier noch nicht aufgeführt ist, dann nennt wenigstens die URL und den Namen. Den Rest können auch andere besorgen, die den Versender ebenfalls kennen!&lt;br /&gt;
&lt;br /&gt;
Bitte ergänzt nur allgemeine Sachen (z.B. &amp;quot;liefert immer vollständig&amp;quot;, &amp;quot;günstig&amp;quot; oder &amp;quot;große Auswahl&amp;quot;), aber nicht Sachen wie &amp;quot;mein ATMega 128 hatte verbogene Beine&amp;quot;! Bitte auch die alphabetische Sortierung beibehalten!&lt;br /&gt;
&lt;br /&gt;
== Liste der Versender ==&lt;br /&gt;
&lt;br /&gt;
=== Actron ===&lt;br /&gt;
Homepage http://www.actron.de&lt;br /&gt;
&lt;br /&gt;
* alphanumerische LCDs und Graphikdisplays in großer Auswahl, auch mit Touchscreens&lt;br /&gt;
* für gewerbliche Kunden: etwas verhandeln schadet nie&lt;br /&gt;
* bei kleinen Stückzahlen nicht ganz billig&lt;br /&gt;
* liefern sehr schnell und stets zuverlässig&lt;br /&gt;
&lt;br /&gt;
=== Buerklin ===&lt;br /&gt;
Homepage: [http://www.buerklin.com/ Buerklin]&lt;br /&gt;
&lt;br /&gt;
* große Auswahl, hohe Verfügbarkeit&lt;br /&gt;
* sehr schneller Versand&lt;br /&gt;
* Ladengeschäfte in Düsseldorf und München&lt;br /&gt;
* nur an gewerbliche Abnehmer (lt. AGB); private Abnehmer können dennoch im Ladengeschäft einkaufen!&lt;br /&gt;
&lt;br /&gt;
=== Conrad ===&lt;br /&gt;
Homepage: [http://www.conrad.de/ Conrad Elektronik] und [http://www.business.conrad.de/ Conrad &amp;quot;Business&amp;quot;]&lt;br /&gt;
&lt;br /&gt;
* großes Angebot (für Bauteile den &amp;quot;Business&amp;quot;-Katalog beachten, der Hauptkatalog ist dahingehend etwas &amp;quot;dünn&amp;quot;)&lt;br /&gt;
* Positiv: Wirklich jedes Bauteil kann einzeln gekauft werden und wird nicht in dämlichen Verpackungseinheiten verkauft, so wie es bei den meisten anderen Elektronik-Lieferanten der Fall ist. Dies ist vor Allem für den Prototypenbau sehr hilfreich.&lt;br /&gt;
* relativ teuer jedoch 10% Rabatt für Hochschulen/Lehreinrichtungen (evtl. auch Schüler/Studenten - fragen kost&#039; nix)&lt;br /&gt;
* 21 Ladengeschäfte in Deutschland, drei in Österreich&lt;br /&gt;
* die Ladengeschäfte haben nicht das gesamte Programm vor Ort, man kann jedoch in den Geschäften anrufen und die Verfügbarkeit anfragen, evtl. sogar Teile für ein paar Stunden &amp;quot;zurücklegen lassen&amp;quot; (von Geschäft zu Geschäft verschieden).&lt;br /&gt;
* positiv: Bei Business-Kunden wird der Rechnungsbetrag erst nach 14 Tagen abgebucht!&lt;br /&gt;
* haben einen (teuren) 24 Std. Lieferservice für Notfälle - Conrad garantiert aber nicht 100%ig für die Einhaltung der 24 Stunden. Bei Nichteinhaltung gibt es kein Geld zurück.&lt;br /&gt;
* Schlampig verpackte Artikel. ICs sind nicht Antistatik-Konform verpackt.&lt;br /&gt;
&lt;br /&gt;
=== csd-electronics ===&lt;br /&gt;
Homepage: [http://www.csd-electronics.de csd-electronics.de]&lt;br /&gt;
&lt;br /&gt;
* Katalog 80 Seiten PDF&lt;br /&gt;
* Online-Shop&lt;br /&gt;
* günstig&lt;br /&gt;
* sehr gute Mengenrabatte&lt;br /&gt;
* auch Versand nicht teuer; ab 1,5&amp;amp;#8364;&lt;br /&gt;
* schnelle Lieferung&lt;br /&gt;
* Bauelemente, die nicht im Shop angeboten werden, können günstig auf Anfrage   beschafft werden&lt;br /&gt;
* Zahlung bei Vorkasse 1% Skonto&lt;br /&gt;
* Ist man bereits Kunde kann man &amp;quot;auf Rechnung&amp;quot; (Zahlung innerhalb von 10 Tagen) bestellen&lt;br /&gt;
* haben ein Forum, in dem man sich zu Sammelbestellungen organisieren kann und auch allgemeine Fragen stellen kann&lt;br /&gt;
* leider keine Bankabbuchung oder Zahlung per Kreditkarte möglich&lt;br /&gt;
&lt;br /&gt;
=== Darisus ===&lt;br /&gt;
Homepage: http://www.darisus.de&lt;br /&gt;
&lt;br /&gt;
* kompetente Beratung&lt;br /&gt;
* liefert sehr zuverlässig, in Notfällen auch Express&lt;br /&gt;
&lt;br /&gt;
=== Digi-Key ===&lt;br /&gt;
(tlw.) deutsche Homepage: [http://de.digikey.com/ Digi-Key]&lt;br /&gt;
&lt;br /&gt;
* optisch nicht besonders ansprechende, aber durchaus sehr funktionelle Website&lt;br /&gt;
* beheimatet in den USA, ein Logistikburo gibt es aber in den Niederlanden&lt;br /&gt;
* dadurch bedingt 100&amp;amp;#8364; Mindestbestellwert (darunter 13&amp;amp;#8364; Bearbeitungsgebühr) und 18&amp;amp;#8364; Versandkosten&lt;br /&gt;
* Versand dafür sehr flott mit UPS Express (in rund zwei bis drei Tagen da)&lt;br /&gt;
* Angebot teilweise sehr umfangreich, manches aber auch gar nicht (z.B. wenig Philips-Halbleiter)&lt;br /&gt;
&amp;lt;!-- * wesentlich teuerer als Reichelt, dafür jeder Artikel mit Herstellerangabe&lt;br /&gt;
=&amp;gt; &amp;quot;wesentlich&amp;quot; etwas zu pauschal (vgl. STK500 etc. selbst bei den verglw. hohen Versandkosten) - mt --&amp;gt;&lt;br /&gt;
* Preise sind auf der deutschen Website in Euro inklusive etwaigem Zoll angegeben, allerdings ohne Mehrwertsteuer, die korrekt abgerechnet wird (d.h. man zahlt bei Versand nach Österreich 20% Mwst., nach Deutschland m.W.n. 16%)&lt;br /&gt;
* Zusammenfassend kann man sagen, dass sich Digikey aus Europa vor allem/eher nur für größere Bestellungen oder Sammelbestellungen anbietet, ansonsten sind der Mindestbestellwert und die Versandkosten in der Relation einfach zu hoch.&lt;br /&gt;
&lt;br /&gt;
=== Elektronikladen ===&lt;br /&gt;
Homepage: http://www.elektronikladen.de&lt;br /&gt;
&lt;br /&gt;
* Spezialist für Mikrokontroller&lt;br /&gt;
* Entwicklungssysteme&lt;br /&gt;
* entsprechende Literatur und Software&lt;br /&gt;
&lt;br /&gt;
=== Elektro-Nix ===&lt;br /&gt;
Homepage: http://www.elektro-nix.de/&lt;br /&gt;
&lt;br /&gt;
* Spezialisierung auf µC, Flash-, AVR- u. 8051er uC´s&lt;br /&gt;
* sehr günstig&lt;br /&gt;
&lt;br /&gt;
=== Eltrix ===&lt;br /&gt;
Homepage: http://www.eltrix.de/shop.htm&lt;br /&gt;
&lt;br /&gt;
*  Verbrauchsmaterial, Tips und Tricks fürs Leiterplattenherstellen und Löten&lt;br /&gt;
&lt;br /&gt;
=== ELV ===&lt;br /&gt;
Homepage: [http://www.elv.de/ ELV]&lt;br /&gt;
&lt;br /&gt;
* nicht sehr große Auswahl an Einzelteilen&lt;br /&gt;
* riesiges Angebot an Zubehör für Hobbyisten&lt;br /&gt;
* viele z.T. pfiffige Eigenentwicklungen, Bausätze (auch zum Download auf der Website verfügbar)&lt;br /&gt;
* sonst Sortiment ähnlich Conrad, nicht billig&lt;br /&gt;
* nicht billig, merkwürdigerweise sind manche Artikel aber die günstigsten auf dem Markt&lt;br /&gt;
* mühsamer Onlinekatalog&lt;br /&gt;
Immer mal wieder Fehllieferungen und Wartezeiten (zumindest in die Schweiz). Service erreichte in 3 Fällen nicht das inserierte Niveau.&lt;br /&gt;
&lt;br /&gt;
=== ETT ===&lt;br /&gt;
Homepage: [http://www.ett-online.de/ ETT]&lt;br /&gt;
&lt;br /&gt;
* Grosshandel nur für Gewerbekunden&lt;br /&gt;
* Ladengeschäft in Braunschweig für jedermann&lt;br /&gt;
&lt;br /&gt;
=== EVE ===&lt;br /&gt;
Homepage: http://www.eve.de&lt;br /&gt;
&lt;br /&gt;
* Versandhaus für elektronische Artikel in Emsdetten&lt;br /&gt;
* machen auch Kabelkonfektion&lt;br /&gt;
* Pb - freie Artikel markiert&lt;br /&gt;
&lt;br /&gt;
=== Farnell ===&lt;br /&gt;
Homepage: [http://www.farnell.de/ Farnell InOne]&lt;br /&gt;
&lt;br /&gt;
* große Auswahl&lt;br /&gt;
* relativ teuer jedoch 12% Rabatt für Schüler/Studenten/Lehreinrichtungen&lt;br /&gt;
* sehr schneller Versand, Ware ist in 99% aller Fälle am nächsten Tag da (UPS)&lt;br /&gt;
* laut AGB: Das Angebot von Farnell InOne richtet sich ausschliesslich an gewerbliche Nutzer, Ausnahme sind Studenten.&lt;br /&gt;
* schlechter Telefonservice - selten ist ein Techniker frei&lt;br /&gt;
* Bei jedem kleinen Anfruf muss man die Kundennummer parat haben.&lt;br /&gt;
* Hat zwar eine große Auswahl an Mikrocontroller, diese sind aber zum Großteil sehr veraltet und vom Hersteller oft schon längst abgekündigt. Neuere Modelle die teilweise schon 2-3 Jahre auf dem Markt sind werden nicht angeboten.&lt;br /&gt;
&lt;br /&gt;
=== Geist ===&lt;br /&gt;
Homepage: [http://www.geist-electronic.de/ Geist Electronic-Versand GmbH]&lt;br /&gt;
&lt;br /&gt;
* Liefern Bauteile für Elektor-Projekte&lt;br /&gt;
&lt;br /&gt;
=== Hinkel ===&lt;br /&gt;
Homepage: http://www.hinkel-elektronik.de&lt;br /&gt;
&lt;br /&gt;
* Batterien&lt;br /&gt;
* Knopfzellen, spezielle KZH, die man sonst lang sucht, findet man hier&lt;br /&gt;
&lt;br /&gt;
=== Kessler ===&lt;br /&gt;
Homepage: [http://www.kessler-elektronik.de/ Kessler]&lt;br /&gt;
&lt;br /&gt;
* im Preis-Leistungsverhältnis mit Reichelt zu vergleichen (sprich: günstig)&lt;br /&gt;
* Sortiment ähnlich Reichelt mit gewissen Abweichungen (z. B. andere FPGA und RAMs)&lt;br /&gt;
* oft lange Lieferzeiten&lt;br /&gt;
&lt;br /&gt;
=== MEGAKICK Electronic Stores ===&lt;br /&gt;
Homepage: http://www.megakick-stores.de&lt;br /&gt;
&lt;br /&gt;
* Fehlerhaftes JavaScript. Opera und Geko können den Shop nicht anzeigen&lt;br /&gt;
&lt;br /&gt;
=== Micromaus ===&lt;br /&gt;
Homepage: http://www.micromaus.de&lt;br /&gt;
&lt;br /&gt;
* Sensoren&lt;br /&gt;
* Mikrokontroller&lt;br /&gt;
&lt;br /&gt;
=== Microcontroller-Starterkits ===&lt;br /&gt;
Homepage: http://www.microcontroller-starterkits.de&lt;br /&gt;
&lt;br /&gt;
* Bauteile CAN, Ethernet, Mikrokontroller AVR und ARM, Linearregler 1,8V 3,3V 5V in SOT223&lt;br /&gt;
* Leerplatinen, Bausätze&lt;br /&gt;
* günstig&lt;br /&gt;
&lt;br /&gt;
=== Mütron ===&lt;br /&gt;
Homepage: [http://www.muetron.de Mütron]&lt;br /&gt;
&lt;br /&gt;
=== Oppermann ===&lt;br /&gt;
Homepage: http://www.oppermann-electronic.de&lt;br /&gt;
&lt;br /&gt;
* Restposten, auch HF Bauteile&lt;br /&gt;
* auch Privatkunden&lt;br /&gt;
* Lieferung nach üblicher Zeit&lt;br /&gt;
&lt;br /&gt;
=== Pollin ===&lt;br /&gt;
Homepage: [http://www.pollin.de/ Pollin Electronic]&lt;br /&gt;
* Günstige Restposten aller Art&lt;br /&gt;
* Produkte teils schnell ausverkauft&lt;br /&gt;
* Lieferzeit gut eine Woche&lt;br /&gt;
&lt;br /&gt;
=== Reichelt ===&lt;br /&gt;
Homepage: [http://www.reichelt.de/ Reichelt]&lt;br /&gt;
&lt;br /&gt;
* relativ große Auswahl, aber nicht viele &amp;quot;brandaktuelle&amp;quot; Bauteile&lt;br /&gt;
* wenn man höflich fragt, liefern sie ganz selten auch Bauteile, die nicht im Katalog stehen zu &amp;quot;normalen&amp;quot; Preisen (vorausgesetzt der Hersteller ist im Sortiment), z.B. Xilinx XC2S50, aber meist erhält man die Antwort, dass der Artikel nicht im Sortiment ist, obwohl auf der Homepage unter Service extra ein Punkt angeführt ist: &amp;quot;Ich benötige einen Artikel, der nicht im Programm ist&amp;quot;&lt;br /&gt;
* reagiert aber teilweise auch auf Anregungen, neue Produkte in das Angebot aufzunehmen; siehe dazu auch den Artikel [[Reichelt-Wishlist]]&lt;br /&gt;
* liefert schnell und vollständig; wenn etwas ausnahmsweise nicht verfügbar ist, dann liefern sie es auf eigene Kosten nach, wenn der Artikel in absehbarer Zeit wieder vorrätig ist (selbst wenn er nur 0,20&amp;amp;#8364; wert ist).&lt;br /&gt;
* Lieferzeiten normal, manchmal unverständlicherweise länger als üblich&lt;br /&gt;
* lässt einen dennoch manchmal warten, wenn ein Artikel nicht lieferbar ist! Daher bei der Bestellung immer darauf hinweisen daß man auch eine Teillieferung akzeptiert. (Laut Auskunft dauert das länger, besser nach der Inet-Bestellung anrufen und nichtlieferbare Teile aus der Bestellung streichen lassen)&lt;br /&gt;
* niedrige Preise (aber unbedingt Qualität des Artikel checken)&lt;br /&gt;
* im Inland (Deutschland) 10&amp;amp;#8364;, ins Ausland 150&amp;amp;#8364; Mindestbestellwert&lt;br /&gt;
* auch in die Schweiz sehr guter Service&lt;br /&gt;
&lt;br /&gt;
=== Ribu ===&lt;br /&gt;
Homepage: [http://www.ribu.at/ Ribu]&lt;br /&gt;
&lt;br /&gt;
* Sehr guter Elektronikversand in Österreich mit zahlreichen Entwicklungsboards und zahlreichen Elektroniklösungen!&lt;br /&gt;
* Liefert sehr schnell und hat eine ausgezeichnete Beratung. &lt;br /&gt;
* Online-Shop ist sehr übersichtlich und einfach zu bedienen.&lt;br /&gt;
* Lieferstatusanzeige für alle Artikel. Bei Auslaufartikeln ist sogar die noch verfügbare Stückzahl sichbar!&lt;br /&gt;
* Günstige Sonderangebote&lt;br /&gt;
* Liefert schon ab 75,- ohne Porto- und Versandkosten auch an Privatkunden&lt;br /&gt;
&lt;br /&gt;
=== RS Components ===&lt;br /&gt;
Homepage: [http://www.rs-components.com/ RS Components] &lt;br /&gt;
&lt;br /&gt;
* Einer der absolut teuersten Anbieter&lt;br /&gt;
* gute Auswahl insbesondere an &amp;quot;mechanischen Bauteilen&amp;quot;&lt;br /&gt;
* gute Verfügbarkeit&lt;br /&gt;
* sehr schneller Versand, Ware ist in 99% aller Fälle am nächsten Tag da (GP)&lt;br /&gt;
* lt. AGB nur an gewerbliche Abnehmer&lt;br /&gt;
* Ständig werden Bauteile abgekündigt, auch wenn sie der Hersteller teilweise noch produziert. Man muss dann oft auf Ersatztypen ausweichen, die nur in Verpackungseinheiten von 25 Stück oder mehr verkauft werden.&lt;br /&gt;
* Sehr teuer gekaufte Sortimente (Widerstände, Kondensatoren) können zum Großteil nicht nachgefüllt werden. Die Bauteile gibt es nicht nachzukaufen (Nur ähnliche Bauteile.). Empfehlung: Einzelne Widerstände für das Widerstands-Sortiment bei Conrad nachbestellen.&lt;br /&gt;
&lt;br /&gt;
=== Sasco ===&lt;br /&gt;
Homepage: http://www.sasco.de/&lt;br /&gt;
&lt;br /&gt;
* Distributor für Analog Devices... &lt;br /&gt;
* Liefert auch an Privatkunden? bitte ergänzen&lt;br /&gt;
&lt;br /&gt;
=== Sander Elektronik ===&lt;br /&gt;
Homepage: http://www.sander-electronic.de&lt;br /&gt;
&lt;br /&gt;
* beliefert auch Privatkunden, Bankeinzug möglich&lt;br /&gt;
* ähnlich Segor ein Berliner Versender&lt;br /&gt;
* Hier findet man manche [[MSP430]], die es sonst nicht in kleinen Stückzahlen gibt&lt;br /&gt;
* Herr Sander ist sehr kompetent und selbst Autor von Fachartikeln&lt;br /&gt;
* selbst abgekündigte Halbleiter können noch beschafft werden&lt;br /&gt;
&lt;br /&gt;
=== Schukat elektronic ===&lt;br /&gt;
Homepage: [http://www.schukat.de/ Schukat]&lt;br /&gt;
&lt;br /&gt;
* liefert nicht an privaten Endverbraucher&lt;br /&gt;
* einfache und passiver Bauteile oft nur in großen Mindeststückzahlen&lt;br /&gt;
* ICs teilweise recht preiswert (vor allem bei mehr als 1 Stück, z.B. auch AVR)&lt;br /&gt;
* LCDs sehr preiswert und auch als Einzelstücke&lt;br /&gt;
* aktuelle Preise und Verfügbarkeit im Internet (aber nur nach Anmeldung)&lt;br /&gt;
&lt;br /&gt;
=== Schuricht ===&lt;br /&gt;
Homepage: [http://www.schuricht.de/ Schuricht]&lt;br /&gt;
&lt;br /&gt;
* liefert nicht an Privatkunden&lt;br /&gt;
   -&amp;gt; nach meiner Erfahrung wird auch an Privatkunden geliefert.  Oli&lt;br /&gt;
&lt;br /&gt;
=== Schuro Elektronik GmbH ===&lt;br /&gt;
Homepage: [http://www.schuro.de Schuro]&lt;br /&gt;
&lt;br /&gt;
* Elektronische Bauelemente und Bauteile für den Audio und Lautsprecherbau.&lt;br /&gt;
&lt;br /&gt;
=== Segor-electronics ===&lt;br /&gt;
Homepage: [http://www.segor.de/ Segor-electronics]&lt;br /&gt;
* Spezialist für Halbleiter, die ansonsten für nicht-gewerbliche Abnehmer nur schwer erhältlich sind (Preise dahingehend &amp;quot;angemessen&amp;quot;)&lt;br /&gt;
* auch Privatkunden gerne gesehen&lt;br /&gt;
* Ladengeschäft in Berlin&lt;br /&gt;
* kein Mindestbestellwert bei Versand innerhalb der EU&lt;br /&gt;
&lt;br /&gt;
=== SE Spezial-Electronic ===&lt;br /&gt;
Homepage: [http://www.spezial.de/ SE Spezial-Electronic]&lt;br /&gt;
&lt;br /&gt;
=== Tec-Shop (Wolfgang Rompel Elektronik) ===&lt;br /&gt;
Homepage: [http://www.tec-shop.de www.tec-shop.de]&lt;br /&gt;
&lt;br /&gt;
* Kleines aber ausgesuchtes Sortiment&lt;br /&gt;
* Interessantes Angebot an Sensoren&lt;br /&gt;
&lt;br /&gt;
=== Trade-Shop ===&lt;br /&gt;
Homepage: [http://www.trade-shop.de/ http://www.trade-shop.de/]&lt;br /&gt;
&lt;br /&gt;
* hat so gut wie keine elektronischen Bauteile, sondern eher Satelliten-Bedarf...&lt;br /&gt;
&lt;br /&gt;
=== Völkner ===&lt;br /&gt;
Homepage http://www.voelkner.de&lt;br /&gt;
&lt;br /&gt;
* früher eigenständig, jetzt von Conrad einverleibt &lt;br /&gt;
&lt;br /&gt;
=== Westfalia ===&lt;br /&gt;
Homepage http://www.westfalia.de&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
TODO:  artools, elektronik-fundgrube, elpro&lt;br /&gt;
&lt;br /&gt;
== Siehe auch ==&lt;br /&gt;
* [[Platinenhersteller]]&lt;br /&gt;
&lt;br /&gt;
== links ==&lt;br /&gt;
http://www.aufzu.de     Liste aller Distributoren&lt;br /&gt;
&lt;br /&gt;
* http://www.xs4all.nl/~ganswijk/chipdir/ Suche nach integrierten Schaltkreisen&lt;br /&gt;
* http://www.alldatasheet.com                Datenblätter&lt;/div&gt;</summary>
		<author><name>131.130.1.135</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=Diskussion:Platinenherstellung_mit_der_Tonertransfermethode&amp;diff=10225</id>
		<title>Diskussion:Platinenherstellung mit der Tonertransfermethode</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=Diskussion:Platinenherstellung_mit_der_Tonertransfermethode&amp;diff=10225"/>
		<updated>2005-08-23T19:12:28Z</updated>

		<summary type="html">&lt;p&gt;131.130.1.135: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;was heisst: ...auf eine reichelt katalogseite gedruckt ?&lt;br /&gt;
&lt;br /&gt;
u.a. die reichelt-kataloge verwenden relativ glattes (fast lackiertes?) papier, auf dem der toner (hoffentlich) eben moeglichst wenig haftet. d.h. man druckt es z.b.(!) auf eine (rausgerissene) seite des reichelt-kataloges, in der hoffnung, dass man das gedruckte dann nachher noch halbwegs von ebendieser seite runterbekommt (weil es eben wenig haftet).&lt;br /&gt;
&lt;br /&gt;
der artikel ist so geschrieben, dass es erscheint, als waere das belichten vollkommen ausgelassen worden, da kenn ich mich jetzt nicht mehr aus.&lt;br /&gt;
ein kurzer hinweis, wie lang man ungefaehr buegeln muss waere auch toll!&lt;/div&gt;</summary>
		<author><name>131.130.1.135</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=Umbau_Schwei%C3%9Ftrafo_zum_Gleichstromschwei%C3%9Fger%C3%A4t&amp;diff=8863</id>
		<title>Umbau Schweißtrafo zum Gleichstromschweißgerät</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=Umbau_Schwei%C3%9Ftrafo_zum_Gleichstromschwei%C3%9Fger%C3%A4t&amp;diff=8863"/>
		<updated>2005-08-20T14:10:37Z</updated>

		<summary type="html">&lt;p&gt;131.130.1.135: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Umbau Schweißgerät==&lt;br /&gt;
&lt;br /&gt;
hier möchte ich meinen Umbau eines Schweißtrafos zum Gleichstromschweißgerät dokumentieren und anderen Leuten die Möglichkeit bieten das nachzubauen oder mit eigenen Vorschlägen, Tipps &amp;amp; Tricks zur Verbesserung beizutragen.&lt;br /&gt;
&lt;br /&gt;
Es geht darum einen normalen Baumarkt-Schweißtrafo, gleichzurichten und danach noch etwas zuglätten um einen sauberen Gleichstrom zur Verfügung zu haben, später soll ein µC mit eingebunden um die Leistung zu regeln und dadurch einige Funktionen wie Hotstart, ArcForce usw. zu integrieren, die das Schweißen erheblich erleichtern.&lt;br /&gt;
&lt;br /&gt;
Ich habe als erstes einige mechanische Verbesserungen am Gerät durchgeführt, z.B. Lüfternachrüstung, Dinse-Anschlußbuchsen verbaut, neue Schweißkabel hergestellt, Elektrodenhalter und Masseklemme ersetzt, weitere Bedienelemente in die Front gebaut.&lt;br /&gt;
&lt;br /&gt;
Nun viele werden sich gleich fragen was ist daran besser mit Gleichstrom anstatt mit Wechselstrom zu schweißen.&lt;br /&gt;
:Der Hauptvorteil ist der gleichmäßige Strom da es hier keinen Nulldruchgang gibt wo der Strom immer kurzfristig unterbrochen wird. Wodurch es Probleme wie den Abriss des Lichtbogens bei geringen Schweißstrom geben kann oder ein schlechtes Zünden der Elektrode.&lt;br /&gt;
:Es gibt natürlich auch Nachteile des Gleichstromes, es lassen sich manche Materialen nicht verschweißen weil sie eine Oxidschicht bilden und sich so das Schweißgut nicht mit dem Elektrodenwerkstoff verbindet, hier wird also explizit  Wechselstrom bzw. gepulster Gleichstrom benötigt um die Oxidschicht aufzubrechen. Aber Alu warund ist bei mir erstmal kein Einsatzwerkstoff.&lt;br /&gt;
&lt;br /&gt;
Nun möchte ich euch zeigen wie der Spannungsverlauf beim Wechselstrom abläuft und wie sich das ganze nach dem&lt;br /&gt;
Gleichrichten und Glätten verhält. Interessant ist hier auch der Vorteil des 3 Phasen Drehstromes zu sehen.&lt;br /&gt;
&lt;br /&gt;
http://people.freenet.de/Thomasoly/Schwei%DFen/Wechselspannung.GIF http://people.freenet.de/Thomasoly/Schwei%DFen/PulsierendeGleichspannunglangsam.GIF http://people.freenet.de/Thomasoly/Schwei%DFen/PulsierendeGleichspannungschnell.GIF&lt;br /&gt;
http://people.freenet.de/Thomasoly/Schwei%DFen/StabileGleichspannung.GIF http://people.freenet.de/Thomasoly/Schwei%DFen/Drehstrom.GIF http://people.freenet.de/Thomasoly/Schwei%DFen/3PhasenGleichpannung.GIF&lt;br /&gt;
&lt;br /&gt;
*Bild 1 zeigt eine ganz normale Wechselspannugn wie man sie aus der Steckdose entnehmen kann.&lt;br /&gt;
*Bild 2 zeigt den Spannungsverlauf nachdem eine Diode verwednet wurde hier kommt nur die positive Halbwelle durch, das wäre dann eine pulsierende Gleichspannung allerdings mit einem Verlust von 50%&lt;br /&gt;
*Bild 3 zeigt den Spannungsverlauf nach einem Brückengleichrichter hier wird praktisch die negative Halbwelle nach oben geplappt was auch eine pulsierende Gleichspannugn ergibt aber ohne den 50%tigen Verlust.&lt;br /&gt;
*Bild 4 eigentlich die perfekte Gleichspannung wie sie z.B. von einer Batterie zur Verfügung gestellt wird, hierzu gibt es nach der Gleichrichtung aber noch einen Unterschied. Also muss noch etwas getan werden. Dazu habe ich zwei Möglichkeiten in Betracht gezogen einmal eine Speicherdrossel und einmal einen Kondensator. Es gilt also wärend eines Impulses soviel Energie zu speichern um wärend des Abfalls des Impulses diese Energie zur Verfügung zu stellen, damit ein möglichst geringer Abfall entsteht.&lt;br /&gt;
*Bild 5 das ist Drehstrom also geläufig auch als Starkstrom bezeichnet hier gibt es 3 Phasen die jeweils um 120° versetzt sind, wenn das mit einer Brückengleichrichterschaltung gleichgerichtet wird sieht man in Bild 6 das es hier keine Nullphase mehr gibt wie es beim normalen Wechselstrom bzw. noch bei der ungeglättenden pulsierenden Gleichspannung vorkommt.&lt;br /&gt;
&lt;br /&gt;
Es muss also ein Energiespeicher her der genügend Energie speichern kann um diese Pause überbrücken zu können, umso höher die Frequenz also ist desto kleiner könne die Teile ausfallen, das ist auch der Vorteil eines Inverterschweißgerätes, hier wird mit bis zu 200 kHz gearbeitet wodurch die Trafospulen, die Drosseln und die Kondensatoren sehr klein ausgelegt werden können wodurch sich ein sehr großer Gewichtsvorteil zu einem Schweißtrafo ergibt. Nun also zum Vergleich wie es mit einem kleinen und einem großen Elkos ausschaut.&lt;br /&gt;
&lt;br /&gt;
http://people.freenet.de/Thomasoly/Schwei%DFen/KleinerElko.GIF http://people.freenet.de/Thomasoly/Schwei%DFen/Gro%DFerElko.GIF&lt;br /&gt;
&lt;br /&gt;
Hier sieht man also sehr schön das dem kleinen Kondensator sehr schnell der Saft ausgeht und die Spannung sehr früh abfällt, der große Kondensator hingegen hällt die Spannugn bis zum nächster Impuls auf einem hohen Level. Bei Kondensatoren gibt es allerdings den Nachteil das man diesen überlasten kann da sie nur mit einem gewissen Maximalstrom belastet werden dürfen, der bei der benötigten Bauart ca. 30-50A beträgt, wenn das Schweißgerät zumindestens kurzfristig 150A liefern kann wird ein Elko das nicht lange mitmachen, deswegen werden hier meistens mehrere Kondensatoren parallel geschalten. Diesen Nachteil scheint es bei der Drossel nicht zu geben, allerdings bringt eine Drossel wieder eine größere Bauform sowohl auch mehr Gewicht auf die Wage. Oft bedienen sich die Hersteller an den Vorteilen beider Bauteile und verwenden neben einer kleineren Drossel noch eine Reihe Kondensatoren. Diese bieten den weiteren Vorteil das beim Schweißbeginn kuzfristig ein sehr große Energie zur Verfügung gestellt werden kann, weil sie die Kondensatoren sich im Leerlauf meist mit einer Spannung um die 50V aufladen können, so gibt es dann keine Problem mit dem Zünden der Elektrode. Die Schweißspannung geht beim Schweißen dann sowieso auf, je nach gewünschten Strom, auf ca. 18-26V zurück.&lt;br /&gt;
&lt;br /&gt;
Zum Gleichrichten der Wechselspannung habe ich 10 x B700C35(1,25&amp;amp;#8364;/Stück bei Reichelt) Metallbrückengleichrichter hier, erste Versuche liefen wegen des Verdrahtungsaufwandes mit 4 Stück, ich warte aber noch auf meine Kupferplatte und dann werde ich entweder 3x3 oder 5x2 nehmen, ja nachdem wies mit dem Platz auschauen wird, weil ich noch einen 170mm Lüfter nachrüsten will und die Drossel auch noch etwas Platz beanspruchen wird.&lt;br /&gt;
&lt;br /&gt;
Falls sich jemand für Teile interessiert, ich habe bis jetzt folgende günstige Angebote bekommen: Drossel 34,-&amp;amp;#8364; bei Einzelabnahme also wirds evtl. noch billiger wenn eine Hand voll Interessenten zusammenkommt Elkos die 100V Spannungsfest sind und auch eine größere Kapazität &amp;gt;47.000µF haben hab ich bis jetzt noch keine erschwinglichen gefunden Aber vielleicht kennt ja jemand ne günstige Bezugsquelle für solche großen 100V Elkos.&lt;br /&gt;
&lt;br /&gt;
Weiterhin möchte ich eine Phasenanschnittsregelung zu integrieren, ich weiß aber nicht welcher Triac oder sonstiges Bauteil mit der hohen Induktivität des Schweißtrafos bzw. der hohen Kapazität der Elkos zurecht kommt und nicht gleich durchbrennt. Sollte man evtl. einige Triacs parallel schalten?&lt;br /&gt;
&lt;br /&gt;
http://people.freenet.de/Thomasoly/Schwei%DFen/Phasenanschnitt_Wechselspannung.GIF  http://people.freenet.de/Thomasoly/Schwei%DFen/Nullpunktschaltung.JPG&lt;br /&gt;
&lt;br /&gt;
So würde das dann ausschauen es wird verzögert durchgeschalten dadurch, kommt einfach weniger Strom zum Verbraucher. Es gäbe auch die Möglichkeit mit einem Nullpunktschalter einzelne Wellen wegzulassen dadurch würde aber die Frequenz noch weiter absinken und die Glättung würde wieder größere Bauteile benötigen um die nötige Zeit überbrücken zu können.&lt;br /&gt;
&lt;br /&gt;
Ein weiteres Problem könnte in Verbindung mit der hohen Induktivität des Trafos auftreten, und zwar folgt der Strom nicht 100% der Spannung, sondern er ist durch die Lade/Entladezeit der Induktivität verzögert, wodurch evtl. die Erkennung durch den µC Schwierigkeiten bereiten könnte da dieser ja mittels Spannungsteiler die Spannung misst. Der µC erkennt also einen Nulldurchgang der Triac hat aber noch nicht gelöscht weil noch eine gewisse Zeit lang Strom fließt.&lt;br /&gt;
&lt;br /&gt;
http://people.freenet.de/Thomasoly/Schwei%DFen/Verz%F6gerung-Induktivit%E4t.GIF&lt;br /&gt;
&lt;br /&gt;
Hier habe ich noch etwas genauere Daten zum Umbau die werde ich später hier mit einbringen.&lt;br /&gt;
&lt;br /&gt;
http://people.freenet.de/Thomasoly/Schwei%DFen/UmbauSchweisstrafo.html&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Projekte]]&lt;/div&gt;</summary>
		<author><name>131.130.1.135</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=Reichelt-Wishlist&amp;diff=8815</id>
		<title>Reichelt-Wishlist</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=Reichelt-Wishlist&amp;diff=8815"/>
		<updated>2005-08-15T23:10:04Z</updated>

		<summary type="html">&lt;p&gt;131.130.1.135: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Reichelt Wunschliste ==&lt;br /&gt;
&lt;br /&gt;
Viele kaufen ihre Elektronik bei Reichelt. Ärgerlich, dass so manche wichtigen Dinge fehlen. Aus dieser Idee entstand der Thread:&lt;br /&gt;
&lt;br /&gt;
http://www.mikrocontroller.net/forum/read-1-107307.html&lt;br /&gt;
&lt;br /&gt;
Einiges davon hat Reichelt bereits ins Angebot aufgenommen. Damit dies weitergehen kann, kann man hier seine Wünsche veröffentlichen. 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 herauskristalisieren, macht jeder einfach &#039;&#039;&#039;einen&#039;&#039;&#039; virtuellen Strich dahinter: | (ALT-GR Taste und &amp;lt; 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 ist etwas sehr exotisches&#039;&#039;&#039;, wie z.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.&lt;br /&gt;
&lt;br /&gt;
= Wunschliste =&lt;br /&gt;
== Halbleiter ==&lt;br /&gt;
=== Controller/FPGA/CPLD ===&lt;br /&gt;
* Microcontroller mit USB-Anschluß (von Cypress oder Atmel in PDIP z.B. AT89C5131, AT43USB355, CY7C637xx) ||||| ||||| ||||| ||  =&amp;gt; Bereits im Sortiment: Cypress EZ-USB TQFP-44, Best. Nr AN2131 SC&lt;br /&gt;
* Konkret: Neuer PIC mit USB PIC18F4550 ||||| ||||| ||||&lt;br /&gt;
* Konkret: PIC 16F628A (weil: besser als 16F628) |&lt;br /&gt;
* Mehr FPGAs (v.a aktuellere) von Xilinx, z.B. Spartan III (v.a. auch größere Typen, die noch im TQFP-Gehäuse zu haben sind wie XC3S400) ||||| ||||| ||||| |||||  ||||| ||||| ||||| ||&lt;br /&gt;
* TI MSP430F1611 (10k RAM, 48k Flash) ||||| ||||| ||||| ||||&lt;br /&gt;
* Philips LPC2104, LPC2105, LPC2106 ||||| ||||| ||||| ||||| ||||| ||||| ||||| (auch LPC213X, LPC211x und LPC22xx)&lt;br /&gt;
* Atmel ATtiny25/45/85 ||||| ||||| ||||| |||&lt;br /&gt;
* Atmel ATmega88, ATtiny13V ||||| ||||| ||||| |||| |||(ATtiny13(DIP u. SO ohne &amp;quot;V&amp;quot;) sind bereits verfügbar)&lt;br /&gt;
* Atmel ATMEGA1280 |||&lt;br /&gt;
* Atmel ATMEGA48 TQFP |||||&lt;br /&gt;
* Atmel ATMEGA2560 ||||| ||||| ||||| |||||&lt;br /&gt;
* Atmel AVR Controller mit Funkanbindung z.B. AT86RF211, AT86RF401, dazu passende Quarze (evtl. SMD) 18,080 MHz (Crystek P/N 016758), Spulen 39nH.  ||||| ||||| ||||| ||||&lt;br /&gt;
* Atmel AT91SAM7S32, AT91SAM7S64 ||||| |||| ||||| ||||&lt;br /&gt;
* SSV DIL/NetPCs [http://www.dilnetpc.com]http://www.dilnetpc.com ||||| ||||&lt;br /&gt;
* Microchip PIC 16F88  |||| ||&lt;br /&gt;
* Microchip PIC16F684 |&lt;br /&gt;
* Microchip dsPIC ||||| ||&lt;br /&gt;
* Freescale HCS12 Controller |||||&lt;br /&gt;
* ALTERAs CPLD EPM70xx - Familie |||||&lt;br /&gt;
* SX20 SX28 IP2022 von Ubicom |&lt;br /&gt;
* SAA5281 Videotextinterface von Philips |||&lt;br /&gt;
* TUSB3210 von Texas Instruments |&lt;br /&gt;
&lt;br /&gt;
=== Speicher ===&lt;br /&gt;
* Atmel DataFlash, z.B. AT45DB081B (8 MBit Flash-Speicher an seriellen Bus im 8poligen Gehäuse) ||||| ||||| ||||| ||||| ||||&lt;br /&gt;
* 24LC256 oder 24AA256 oder 24LC512 oder 24AA512 ||||| ||&lt;br /&gt;
* NextFlash spiFlash NX25P16 (16MBit serial Flash im SO8-Gehäuse) ||||| ||||| ||&lt;br /&gt;
* Schnelles RAM (10, 15 oder 20ns) (5V/3,3V) ||||| |||&lt;br /&gt;
&lt;br /&gt;
=== ICs ===&lt;br /&gt;
* Aufwärtsregler (Step-Up-Konverter): Maxim MAX629 ||||&lt;br /&gt;
* uC supervisor chips + watchdog z.B.: MAX6864 ist z.Z. der beste (0.2uA!) |||&lt;br /&gt;
* ISD 5116 (Sprachaufnahme bis 16min &amp;amp; I2C-Interface)  ||||| |||  &lt;br /&gt;
* DTMF-Dekoder-Enkoder (8870, 8880) ||||| ||||| ||&lt;br /&gt;
* Philips PCA82C252 oder TJA1054A oder vergleichbar (&amp;quot;Fault-Tolerant&amp;quot; CAN Transceiver, 11898-3) ||||| &lt;br /&gt;
* MCP25050 CAN-Bus Input/Output Expander |||&lt;br /&gt;
* Maxim Switched Capacitor Tiefpass-Filter (z.B. MAX297) ||&lt;br /&gt;
* ZHB6718 (H-Bridge für 1,5V - 20V Motoren) ||||&lt;br /&gt;
* Motortreiber TLE 4205 ||&lt;br /&gt;
* Ethernet-Controller RTL8019AS und Übertrager FB2022 ||||| ||||| ||||| ||||| ||||| ||||| ||||| ||||| ||||| ||||| ||&lt;br /&gt;
* SPI-Ethernet-Controller ENC28J60 und passender Übertrager und passenden Quarz (25,0000 Mhz !) ||||| ||||| ||||| |&lt;br /&gt;
* AD7524 in SMD ||||| ||||&lt;br /&gt;
* ADS8320 ADC 16 Bit seriell  |||||  ||||| ||||| ||||| |||&lt;br /&gt;
* DAC7612 DAC 12 Bit seriell  |||||  ||||| ||||| |||&lt;br /&gt;
* Generell mehr 1-Wire IC ||||| ||||&lt;br /&gt;
* Generell mehr I²C IC ||||| ||||| ||||||&lt;br /&gt;
* I²C-Bus to 1-Wire DALLAS DS2482-100 bzw. DS2482-800  ||||| ||&lt;br /&gt;
* I²C-Bus Temperatursensor DS1631Z ||||| ||&lt;br /&gt;
* UDN 2987 LW (Source Driver UDN2987 in SMD-Bauform) |&lt;br /&gt;
* MAX6958 / MAX6959 (I²C 4-Digit, 9-Segment LED Display Drivers with Keyscan) |||| | &lt;br /&gt;
* MCP23016 16Bit I²C I/O Expander ||||| ||&lt;br /&gt;
* vielseitige PLL Schaltkreise für Frequenzerzeugung. z.B. MC145170D2 (SOIC16) ||||| ||||&lt;br /&gt;
* Digital Potentiometer (z.B. 2-Wire MAX546x) |||&lt;br /&gt;
* RS485 ESD fest: MAX3086E oder 75180 oder ISL83086E ||||| |&lt;br /&gt;
* Mehr FET-Treiber (TI UCC3372x, HIPxxx , die neueren Brückentreiber von Maxim |||||&lt;br /&gt;
* Max6650 ||&lt;br /&gt;
* LTC24xx ||&lt;br /&gt;
* LM3886 |||||&lt;br /&gt;
* DAC8830 IDT (16Bit-DAC,ser. Input) |||||&lt;br /&gt;
* D/A Wandler mit 4 oder mehr Ausgängen, z.B. TLC5620/TLV5629 |||&lt;br /&gt;
* neue I2C IO von Philips PCA9555 (16 Bit par. I/O, c&#039;t Project Soundcheck II) ||&lt;br /&gt;
* PCA9530D  2Bit I2C_BUS LED-Dimmer |&lt;br /&gt;
* PCA9531D  8Bit 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;
* PCA9551D  8Bit I2C-BUS LED-Blinker |&lt;br /&gt;
* PCA9552D 16Bit I2C-BUS LED-Blinker |&lt;br /&gt;
* PCA9553D  4Bit I2C-BUS LED-Blinker |&lt;br /&gt;
* MAX7311AWG 2Wire Interface von Maxim |&lt;br /&gt;
* STP08CL596B1 DIP16 STM, LOW VOLTAGE 8-BIT CONSTANT CURRENT LED SINK DRIVER |&lt;br /&gt;
* STP08CL596M SO16 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;
* STP16CL596M SO24 STM, LOW VOLTAGE 8-BIT CONSTANT CURRENT LED SINK DRIVER |&lt;br /&gt;
&lt;br /&gt;
=== Discrete ===	 &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) |||||| ||||| ||||	 &lt;br /&gt;
* 3,3V Längsregler SMD Ultra Low drop |	 &lt;br /&gt;
* 5,2V Lowdrop Längsregler LF52 im TO252AA von STM ||||	 &lt;br /&gt;
* Größere Auswahl an Step-up Reglern ||||| ||||| ||	 &lt;br /&gt;
* Spannungsregler in SMD-Version (7805 etc., nicht nur der 78L05) ||||| ||||| ||||| |	 &lt;br /&gt;
* Spannungsregler SMD in DPAK |	 &lt;br /&gt;
* BUF420AW Schaltnetzteil Transistor von STM ||||	 &lt;br /&gt;
* SMD Doppeldiode Schottky 12A 60V im TO252AA z.B. 12CWQ06FN von IOR ||||| ||||| ||	 &lt;br /&gt;
* IRF7503/IRF7506 Dual Mosfet SMD	 &lt;br /&gt;
* ZRA250F005 Referenzspanungsquelle 2,5V 0.5% SOT23 gehäuse ||||	 &lt;br /&gt;
* mehr FETs und IGBTs (nichtnur IRF, sehr gut IXYS &amp;lt;- und sauteuer!) ||	 &lt;br /&gt;
* Niederohm-FETs in SO8, N und P |	 &lt;br /&gt;
* SMD-Spannungsregler einstellbar LM317EMP oder LM317AEMP (SMD TO-223 Gehäuse) |||	 &lt;br /&gt;
* Si4562DY N- and P-Channel 2.5-V (G-S) MOSFET SMD |	 &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;
* Digitaltransistoren (BCR*), auch als Pärchen NPN/PNP (BCR10, BCR08pn) |&lt;br /&gt;
&lt;br /&gt;
== Sensoren/Aktoren ==&lt;br /&gt;
* Sensirion SHT11 ||||| ||||| ||||| ||||| ||||&lt;br /&gt;
* kleine Feuchtigkeitssensoren zur &#039;on-board-Montage&#039; ||||| |&lt;br /&gt;
* Sharp Entfernungssensoren (zb den GP2D120 oder den GP2D12) ||||| ||||| ||||| |  &lt;br /&gt;
* FSRs (Force Sensing Resistor) von Interlink Electronics ||||| ||&lt;br /&gt;
* NanoMuscle Aktuatoren ||&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;
* IS471 Selbstmodulierende IR-Lichtschranke ||||| ||&lt;br /&gt;
* Hall-Sensor UGN3503, KMZ51 |||&lt;br /&gt;
* Motorola Drucksensoren z.b. MPX4250 mit AP Druckanschluß ||&lt;br /&gt;
* Induktions-Stromsensoren Coilcraft #J9199-A o.Ä. |&lt;br /&gt;
* Drehwinkelgeber, Gyro, Kreiselsensoren ähnl. Tokin CG-L43 |&lt;br /&gt;
* AD623 Single Supply,Rail-Rail, InstrOpamp |&lt;br /&gt;
&lt;br /&gt;
== Baugruppen ==&lt;br /&gt;
* Mini-Bluetooth Module (RS232-Bluetooth-&amp;quot;Wandler&amp;quot;-Platinchen) ||||| ||||| ||||| ||||| ||||| ||||| ||||| ||||| |&lt;br /&gt;
* kostengünstige Funkschaltmodule (TLP/RLP) ||||| ||&lt;br /&gt;
&lt;br /&gt;
== &amp;quot;Passive&amp;quot; Bauteile ==&lt;br /&gt;
* Low-ESR Elkos (definiertes Fabrikat/Typ, und nicht einfach irgendwelche! (Rubycon?)) ||||| ||||| ||||| ||||| ||||| ||||&lt;br /&gt;
* 14,7456 MHz Quarze ||||| ||||| ||&lt;br /&gt;
* 25,0000 Mhz Quarz (wird benötigt für Microchip TCP/IP Controller ENC28J60) ||||&lt;br /&gt;
* zu Schaltreglern LM257x u.a. passende fertige Spulen (Induktivitaet, max.Strom, keine &amp;quot;Entstörspulen&amp;quot;) |||||  |||||  |||||  ||||| |||||  ||||| |||| ||||| ||||| |&lt;br /&gt;
* Die Micrometals Pulverkerne (-18 und -26) auch in Größer |||||&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;
* SMD Widerstande in Bauform 0603 0402 ||||| ||||| ||||| ||||| ||&lt;br /&gt;
* R2R-Widerstandsnetzwerke (z. B. 10/20kOhm für DA-Wandler an Microcontrollern) ||||| | //Es gibt günstige 8bit DACs mit parallelem Interface, z.B. TLC 7528CN für 1,20 EUR&lt;br /&gt;
* Magnetics MPP Ringkerne ||||| |&lt;br /&gt;
* Magnetics CoolMu Ringkerne ||||| ||&lt;br /&gt;
* 25/50W Widerstände (~20/50 Ohm auch weniger) ||||&lt;br /&gt;
* ordentliche Speicherspulen mit hohem L und niedrigem R |||&lt;br /&gt;
* Netzfilter FFP Reihe Schurter |&lt;br /&gt;
* Niederohm-Widerstände (Shunts ab 1mOhm im guten Gehäuse z.B. TO220) ||&lt;br /&gt;
* Varistoren 14V auch als bedrahtetes Bauteil (für KFZ-Bordnetz) ||&lt;br /&gt;
* Metallbrückengleichrichter für 50A |&lt;br /&gt;
* Präzisions-Spannunsgteilernetzwerke ||&lt;br /&gt;
* Präzisionswiderstände 0,05% und besser, ev. Drahtgewickelt |||&lt;br /&gt;
* Wima MKP4 |&lt;br /&gt;
* Kleine Niedervolt-Polyproplyenkondis mit mehr Kapazität ||&lt;br /&gt;
&lt;br /&gt;
== Optoelektronik und Leuchtmittel ==&lt;br /&gt;
* OSRAM &amp;quot;Golden Dragon&amp;quot; LEDs (http://www.osram-os.com/goldendragon) |&lt;br /&gt;
* low current SMD LEDs (z.B. Osram LG T679 - Anm.: hier gleich die neuen Varianten Lx T67K bestellen, nicht die alten 9er !) ||||| |||&lt;br /&gt;
* weisse SMD LED Bauform 0603 |||||&lt;br /&gt;
* SMD LED Bauform 0402 rot/gelb/grün/blau/weiss  ||||&lt;br /&gt;
* Vakuum-Fluoreszenz-Displays (Dot Matrix mit Standardcontroller, z.B. Futaba &amp;quot;LCD Emulators&amp;quot;)  ||||| ||&lt;br /&gt;
* Diese 4-Stelligen Dot-Matrix LED Anzeigen Siemens SLG 2016 oder von HP oder ähnliches |&lt;br /&gt;
* OSRAM Halogen Decostar 51 12V 20W GU5,3 statt des billigen NoName Zeugs ||&lt;br /&gt;
* IL207AT (SMD Optokoppler von Infineon) |||&lt;br /&gt;
* TLP113 (SMD Optokoppler) |&lt;br /&gt;
* OSRAM Hyper TOPLEDS gelb LY T676-S1T1-26 |&lt;br /&gt;
* OSRAM Hyper TOPLEDS weiß LW T67C-T2U2-5K8L |&lt;br /&gt;
&lt;br /&gt;
== Mechanisches ==&lt;br /&gt;
=== Schalter/Potis etc. ===&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  ||||| ||||| ||||| ||||| ||||| ||||| ||||| |||&lt;br /&gt;
* Drehschalter Serie DS in allen Versionen nur vom Hersteller C&amp;amp;K; auch brückende Versionen anbieten  ||||| |||&lt;br /&gt;
* T215 ersetzen gegen etwas Qualitativeres  ||||| &amp;lt;&amp;lt;-- GIBTS, T113A&lt;br /&gt;
* Folientastaturen ||||| ||||| ||||| ||&lt;br /&gt;
* statt radiohm potis bitte prehostat oder Alphastat 16 63256-026xx ||||| |||||&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;
* bistabile Relais mit 2 Wicklungen ||||&lt;br /&gt;
* Schiebe-Potentiometer, ähnlich C*nrad 441422 ||&lt;br /&gt;
* kleiner Joystick wie beim Atmel Butterfly  ||||| ||&lt;br /&gt;
&lt;br /&gt;
=== (Steck-) Verbindungen ===&lt;br /&gt;
* Chipkartenkontaktiereinrichtung, die die Kontakte anhebt (keine Schleifkontakte) |||&lt;br /&gt;
* Stift-/Buchsenleisten 2.54mm zum Auseinanderbrechen  ||||| ||||| ||||| ||||| ||||| ||||| ||||| ||||| || =&amp;gt; Bereits im Sortiment: SPL XX, AW 122/XX (XX = 20,32,64); leider nicht als brechbaren Buchsenleisten zu SL xXxxG&lt;br /&gt;
* Buchsenleisten zum Crimpen (allseitig anreihbar!, 1x1, 1x2, z.B. [http://www.newproduct.molex.com/datasheet.aspx?ProductID=92125 Molex 2081 ?] )  ||||| ||||| ||||| ||&lt;br /&gt;
* Print-Steckverbinder (die einreihigen Stecker auf dem PC-Mainboard) ||||| ||||| |              //Was soll das sein?&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.B. [http://www.newproduct.molex.com/datasheet.aspx?ProductID=19945 Molex 51004, 53015]): ||&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;
* Hochwertigere 1/4&amp;quot; Klinkenbuchsen, z.B. von Rean oder Cliff ||&lt;br /&gt;
* RJ45-Buchse ||| - schon im Sortiment: MEBP 8-8&#039;&#039;x&#039;&#039; unter Modular-Stecker bei TK&lt;br /&gt;
* TEXTOOL-Fassungen (Breite 7-15,24mm)/ Nullkraftsockel für kleine Mikrokontroller: DIL-20 ||| PLCC-44 ||&lt;br /&gt;
*Preiswerte Kontaktierungen für SD/MMC  ||&lt;br /&gt;
&lt;br /&gt;
=== Kabel etc. ===&lt;br /&gt;
* Flachbandkabel im 2,54mm Raster und dazu passende Auspressstecker und -buchsen ||||| ||||| ||||| ||||&lt;br /&gt;
* Flexible Einzellitze, 0,5² in verschiedenen Farben ||||| ||||| ||&lt;br /&gt;
* das qualitativ mangelhafte 4mm Laborsteckerprogramm rausnehmen und nur noch Hirschmann anbieten  ||||| |&lt;br /&gt;
* dünner Schaltdraht (&amp;lt; 1mm Durchmesser, isoliert mit Tefzel oder Kynar)  ||||| ||||| ||||| ||||| ||||| ||||| ||||| |||&lt;br /&gt;
* Zylinderkopfschrauben M3 x 25mm |||||&lt;br /&gt;
* Zylinderkopfschrauben M2,5 x 12mm |&lt;br /&gt;
* Zylinderkopfschrauben M2,5 x 20mm |&lt;br /&gt;
&lt;br /&gt;
== Platinen/Prototypen ==&lt;br /&gt;
* Eisen(III)-Chlorid  ||||| ||||| ||||| ||||| ||||| ||||| ||||| ||||| ||&lt;br /&gt;
* Breadboards/&amp;quot;Steckbretter&amp;quot; ||||| ||||| ||||| ||||| ||||| ||||| ||||| ||||| ||||| |||||     &lt;br /&gt;
* SOIC auf PDIP Gehäuse-Adapter zwecks Prototypen-Bau ||||| |||||&lt;br /&gt;
* Laser-Folien für die Druckformerstellung(Zweckform 3491) ||||| ||||&lt;br /&gt;
* Tonerverdichter (www.Huber-Troisdorf.de) |||||&lt;br /&gt;
* Platinen Basismaterial, einseitig Cu-beschichtet, 0,5..1 mm dick |&lt;br /&gt;
* Adapter TQFP (versch. PinZahlen) auf DIL/QIL ||||&lt;br /&gt;
&lt;br /&gt;
== Werkzeug und Zubehör ==&lt;br /&gt;
&lt;br /&gt;
== Unsortiert/Unspezifisch ==&lt;br /&gt;
* mehr SMD Bauteile  ||||| ||||| ||||| ||||| ||||| ||||| |||||  |||||  ||||| ||||| ||||| ||||| ||&lt;br /&gt;
* mehr Familien von Logik-ICs, z.B. AC, ACT (in SMD) ||||| ||||| ||||| ||||| ||&lt;br /&gt;
* HCT-Logik in SMD ||||| ||||| ||||| ||||| ||||| ||||| ||||||&lt;br /&gt;
* mehr und v.a. kleine (Hand-) Gehäuse  ||||| ||||| ||||| ||||| ||||| ||||| ||||| ||||| |&lt;br /&gt;
* Preiswertere Alu Druckgussgehäuse, wie z.B. von Hammond Manufacturing |||||&lt;br /&gt;
* LiPoly-Zellen (aufladbare Lithiumakkus &amp;quot;Suppentüten) ||||| ||||| ||||| |&lt;br /&gt;
* gleicher Mindestbestellwert in Österreich wie in Deutschland ||||| ||||| ||||| ||||| ||&lt;br /&gt;
* schnelle Lieferzeit (wie früher 1-2 Tage) ||||| ||||| ||||| ||||| |||||&lt;br /&gt;
* nicht wie die Konkurrenz jetzt schon im April den Juli Katalog rausbringen ||||| |&lt;br /&gt;
* Filialen in Österreich und der Schweiz :-) ||||| ||||| ||||| ||||&lt;br /&gt;
* Günstige Versandkonditionen für die EU ||||| |&lt;br /&gt;
* Taster Schalter und LED-Fassungen aus der Mentor FEL-Reihe |&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;
* Microchip ICD2 |&lt;br /&gt;
* Neuere, bessee NiMh Akkus (z.b. GP1100 2/3A, GP2000 AF, GP2200 4/5SubC) |||&lt;br /&gt;
* Bezahlbarere Trafos ||||&lt;br /&gt;
* Allgemein mehr Sensoren ||||| ||&lt;br /&gt;
* Funk-Entstördrosseln 16A, div. Werte ||&lt;br /&gt;
* Breadboard / Laborsteckkarten wie bei ELV od. Conrad ||||&lt;br /&gt;
* Toner für Laserdrucker Kyocera FS-1010 TK17 |&lt;br /&gt;
* ist ja eigentlich der gängigste Kyocera Toner&lt;br /&gt;
* Bessere Auswahl: statt MSP430F147, F148, F149 wenigstens einen mit DAC -&amp;gt; MSP430F16x&lt;br /&gt;
&lt;br /&gt;
== Zur Webseite ==&lt;br /&gt;
Eine Webseite ohne Frames ist eigentlich heute Stand der Technik. Oder vielleicht ist es das auch nicht mehr - ich weiß 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;
Ferner sollte es möglich sein, Bestellungen, welche noch nicht bearbeitet werden zu verändern, also z.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;
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;
= Bereits im Sortiment =&lt;br /&gt;
&lt;br /&gt;
* 3,3V Laengsregler (LT1086-Serie z.B.)  ||||| =&amp;gt; vgl z.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.B.: ML 100 SW, Meterware z.B.: MESSLEITUNG 10SW)&lt;br /&gt;
* FTDI USB Chips  ||||| ||||| ||||| ||||| ||||| || =&amp;gt; Best-Nr. FT232BM oder FT245BM&lt;br /&gt;
* CAN-Bus Controller MCP2515  |||||&lt;br /&gt;
* VLSI MP3 Decoder  ||||| ||||| |||||  z.Zt. unter CAN-Bus(!) einsortiert&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. PSS-LIN* (&amp;quot;mono&amp;quot;) PSM-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...)&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, schade!)&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; ???)&lt;br /&gt;
* einzelne Hartmetallbohrer in diversen Grössen ||||| ||||| ||||| ||||| |&lt;br /&gt;
* Hartmetallbohrer in mehr verschiedenen Größen (z.B. 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;&lt;br /&gt;
* 68HC908GP32 |&lt;br /&gt;
* überhaupt: Freescale 68HC908- und vor allem 68HCS08-Mikrocontroller fehlen total im Sortiment!&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Logbuch ====&lt;br /&gt;
&lt;br /&gt;
08.07.2005: bringt herzlich wenig, hier mehrere Stiche auf einmal zu machen, verfälscht den &amp;quot;Bedarf&amp;quot; und macht die Liste unglaubwürdig. - M. Thomas&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;/div&gt;</summary>
		<author><name>131.130.1.135</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=Diskussion:Ports_benutzen_(GCC)&amp;diff=7746</id>
		<title>Diskussion:Ports benutzen (GCC)</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=Diskussion:Ports_benutzen_(GCC)&amp;diff=7746"/>
		<updated>2005-05-30T15:21:15Z</updated>

		<summary type="html">&lt;p&gt;131.130.1.135: unsinn entfernt&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>131.130.1.135</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=Reichelt-Wishlist&amp;diff=7484</id>
		<title>Reichelt-Wishlist</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=Reichelt-Wishlist&amp;diff=7484"/>
		<updated>2005-05-24T13:31:17Z</updated>

		<summary type="html">&lt;p&gt;131.130.1.135: /* Unsortiert/Unspezifisch */ EIN strich fuer jeden!&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Reichelt Wunschliste ==&lt;br /&gt;
&lt;br /&gt;
Viele kaufen ihre Elektronik bei Reichelt. Ärgerlich, dass so manche wichtigen Dinge fehlen. Aus dieser Idee entstand der Thread:&lt;br /&gt;
&lt;br /&gt;
http://www.mikrocontroller.net/forum/read-1-107307.html&lt;br /&gt;
&lt;br /&gt;
Einiges davon hat Reichelt bereits ins Angebot aufgenommen. Damit dies weitergehen kann, kann man hier seine Wünsche veröffentlichen. 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 herauskristalisieren, macht jeder einfach &#039;&#039;&#039;einen&#039;&#039;&#039; virtuellen Strich dahinter: | (ALT-GR Taste und &amp;lt; 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 ist etwas sehr exotisches&#039;&#039;&#039;, wie z.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.&lt;br /&gt;
&lt;br /&gt;
= Wunschliste =&lt;br /&gt;
== Halbleiter ==&lt;br /&gt;
=== Controller/FPGA/CPLD ===&lt;br /&gt;
* Microcontroller mit USB-Anschluß (z.B. AT89C5131 oder AT43USB355) ||||| ||||| |||||  =&amp;gt; Bereits im Sortiment: Cypress EZ-USB, Best. Nr AN2131 SC&lt;br /&gt;
* Konkret: Neuer PIC mit USB PIC18F4550 ||||| ||||| |&lt;br /&gt;
* Mehr FPGAs (v.a aktuellere) von Xilinx, z.B. Spartan II und Spartan III ||||| ||||| ||||| |||||  ||||| ||||| |&lt;br /&gt;
* TI MSP430F1611 (10k RAM, 48k Flash) ||||| ||||| ||||| |&lt;br /&gt;
* Philips LPC2104, LPC2105, LPC2106 ||||| ||||| ||||| |||||  (auch LPC213X, LPC211x und LPC22xx)&lt;br /&gt;
* Atmel ATtiny25/45/85 ||||| |||||&lt;br /&gt;
* Atmel ATmega88, ATtiny13V ||||| ||||| ||||| |||| |(ATtiny13(DIP u. SO ohne &amp;quot;V&amp;quot;) sind bereits verfügbar)&lt;br /&gt;
* Atmel ATMEGA1280&lt;br /&gt;
* Atmel ATMEGA2560 ||||&lt;br /&gt;
* Atmel AVR Controller mit Funkanbindung z.B. AT86RF211, AT86RF401, dazu passende Quarze (evtl. SMD) 18,080 MHz (Crystek P/N 016758), Spulen 39nH.  ||||| ||||| |&lt;br /&gt;
* Atmel AT91SAM7S32, AT91SAM7S64 ||||| |||| |&lt;br /&gt;
* SSV DIL/NetPCs [http://www.dilnetpc.com]http://www.dilnetpc.com |||||&lt;br /&gt;
* Microchip PIC 16F88  |||| ||&lt;br /&gt;
* Microchip PIC16F684 |&lt;br /&gt;
* Microchip dsPIC |||||&lt;br /&gt;
* Freescale HCS12 Controller |&lt;br /&gt;
* ALTERAs CPLD EPM70xx - Familie ||&lt;br /&gt;
* SX20 SX28 IP2022 von Ubicom |&lt;br /&gt;
* SAA5281 Videotextinterface von Philips ||&lt;br /&gt;
&lt;br /&gt;
=== Speicher ===&lt;br /&gt;
* Atmel DataFlash, z.B. AT45DB081B (8 MBit Flash-Speicher an seriellen Bus im 8poligen Gehäuse) ||||| ||||| |||||&lt;br /&gt;
* 24LC256 oder 24AA256 oder 24LC512 oder 24AA512 ||||&lt;br /&gt;
* NextFlash spiFlash NX25P16 (16MBit serial Flash im SO8-Gehäuse) ||||| ||&lt;br /&gt;
&lt;br /&gt;
=== ICs ===&lt;br /&gt;
* Aufwärtsregler (Step-Up-Konverter): Maxim MAX629 ||&lt;br /&gt;
* uC supervisor chips + watchdog z.B.: MAX6864 ist z.Z. der beste (0.2uA!) |||&lt;br /&gt;
* ISD 5116 (Sprachaufnahme bis 16min &amp;amp; I2C-Interface)  ||||| ||  &lt;br /&gt;
* DTMF-Dekoder-Enkoder (8870, 8880) ||||| ||&lt;br /&gt;
* Philips PCA82C252 oder Nachfolger oder vergleichbar (&amp;quot;Fault-Tolerant&amp;quot; CAN Transceiver, 11898-3) ||||&lt;br /&gt;
* MCP25050 CAN-Bus Input/Output Expander ||&lt;br /&gt;
* Maxim Switched Capacitor Tiefpass-Filter (z.B. MAX297) ||&lt;br /&gt;
* ZHB6718 (H-Bridge für 1,5V - 20V Motoren) ||||&lt;br /&gt;
* Motortreiber TLE 4205 |&lt;br /&gt;
* Ethernet-Controller RTL8019AS und Übertrager FB2022 ||||| ||||| ||||| ||||| ||||| ||||| ||&lt;br /&gt;
* AD7524 in SMD ||||| |||&lt;br /&gt;
* ADS8320 ADC 16 Bit seriell  |||||  ||||| |||&lt;br /&gt;
* DAC7612 DAC 12 Bit seriell  |||||  ||||| |&lt;br /&gt;
* Generell mehr 1-Wire IC ||||| ||&lt;br /&gt;
* Generell mehr I²C IC ||||| ||||||&lt;br /&gt;
* I²C-Bus to 1-Wire DALLAS DS2482-100 bzw. DS2482-800  |||||&lt;br /&gt;
* I²C-Bus Temperatursensor DS1631Z ||||&lt;br /&gt;
* UDN 2987 LW (Source Driver UDN2987 in SMD-Bauform) |&lt;br /&gt;
* MAX6958 / MAX6959 (I²C 4-Digit, 9-Segment LED Display Drivers with Keyscan) |||| | &lt;br /&gt;
* MCP23016 16Bit I²C I/O Expander ||||&lt;br /&gt;
* vielseitige PLL Schaltkreise für Frequenzerzeugung. z.B. MC145170D2 (SOIC16) ||||| |||&lt;br /&gt;
* Digital Potentiometer (z.B. 2-Wire MAX546x) ||&lt;br /&gt;
&lt;br /&gt;
=== Discrete ===&lt;br /&gt;
* 3,3V Längsregler SMD zu vernünfitgen Preisen (Bsp: LF33)(der LT1086 kostet 4 Euro) |||||| ||||| |||&lt;br /&gt;
* 5,2V Lowdrop Längsregler LF52 im TO252AA von STM |||&lt;br /&gt;
* Größere Auswahl an Step-up Reglern ||||| |||||&lt;br /&gt;
* Spannungsregler in SMD-Version (7805 etc., nicht nur der 78L05) ||||| ||||| ||||&lt;br /&gt;
* BUF420AW Schaltnetzteil Transistor von STM |||&lt;br /&gt;
* SMD Doppeldiode Schottky 12A 60V im TO252AA z.B. 12CWQ06FN von IOR ||||| |||||&lt;br /&gt;
* IRF7503/IRF7506 Dual Mosfet SMD&lt;br /&gt;
* ZRA250F005  Referenzspanungsquelle 2,5V 0.5% SOT23 gehäuse |||&lt;br /&gt;
&lt;br /&gt;
== Sensoren/Aktoren ==&lt;br /&gt;
* Sensirion SHT11 ||||| ||||| ||||| ||||&lt;br /&gt;
* kleine Feuchtigkeitssensoren zur &#039;on-board-Montage&#039; |||||&lt;br /&gt;
* Sharp Entfernungssensoren (zb den GP2D120 oder den GP2D12) ||||| ||||| ||||&lt;br /&gt;
* FSRs (Force Sensing Resistor) von Interlink Electronics ||||| ||&lt;br /&gt;
* NanoMuscle Aktuatoren ||&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;
* IS471 Selbstmodulierende IR-Lichtschranke ||||&lt;br /&gt;
* Hall-Sensor UGN3503 |&lt;br /&gt;
&lt;br /&gt;
== Baugruppen ==&lt;br /&gt;
* Mini-Bluetooth Module (RS232-Bluetooth-&amp;quot;Wandler&amp;quot;-Platinchen) ||||| ||||| ||||| ||||| ||||| ||||&lt;br /&gt;
* kostengünstige Funkschaltmodule (TLP/RLP) ||&lt;br /&gt;
&lt;br /&gt;
== &amp;quot;Passive&amp;quot; Bauteile ==&lt;br /&gt;
* Shunt-Widerstände  ||||| ||||| ||||| ||||  (neu im Sortiment: Widerstandsdraht, Best.-Nr. &amp;quot;RD100/x,xx&amp;quot;)&lt;br /&gt;
* Low-ESR Elkos (definiertes Fabrikat/Typ, und nicht einfach irgendwelche! (Rubycon?)) ||||| ||||| ||||&lt;br /&gt;
* 14,7456 MHz Quarze ||||| |||&lt;br /&gt;
* zu Schaltreglern LM257x u.a. passende fertige Spulen (Induktivitaet, max.Strom, keine &amp;quot;Entstörspulen&amp;quot;) |||||  |||||  |||||  ||||| |||| &lt;br /&gt;
* Ordentliche Trafospulen + Kerne, z.b. ETD-Serie, oder RM10 ||||| |||&lt;br /&gt;
* Passende Ferrite dazu: N27,N41,N67 ||||| ||&lt;br /&gt;
* SMD Widerstande in Bauform 0603 0402 ||||| ||&lt;br /&gt;
* R2R-Widerstandsnetzwerke (z. B. 10/20kOhm für DA-Wandler an Microcontrollern) |||&lt;br /&gt;
&lt;br /&gt;
== Optoelektronik und Leuchtmittel ==&lt;br /&gt;
* OSRAM &amp;quot;Golden Dragon&amp;quot; LEDs (http://www.osram-os.com/goldendragon) |&lt;br /&gt;
* low current SMD LEDs (z.B. Osram LG T679 - Anm.: hier gleich die neuen Varianten Lx T67K bestellen, nicht die alten 9er !) ||||| |&lt;br /&gt;
* weisse SMD LED Bauform 0603 ||||&lt;br /&gt;
* SMD LED Bauform 0402 rot/gelb/grün/blau/weiss  ||||&lt;br /&gt;
* Vakuum-Fluoreszenz-Displays (Dot Matrix mit Standardcontroller, z.B. Futaba &amp;quot;LCD Emulators&amp;quot;)  ||||| |&lt;br /&gt;
* Diese 4-Stelligen Dot-Matrix LED Anzeigen Siemens SLG 2016 oder von HP oder ähnliches |&lt;br /&gt;
* OSRAM Halogen Decostar 51 12V 20W GU5,3 statt des billigen NoName Zeugs ||&lt;br /&gt;
* SMD Optokoppler z.B. IL207AT von Infineon |||&lt;br /&gt;
&lt;br /&gt;
== Mechanisches ==&lt;br /&gt;
=== Schalter/Potis etc. ===&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  ||||| ||||| ||||| ||||| ||||| ||||&lt;br /&gt;
* Drehschalter Serie DS in allen Versionen nur vom Hersteller C&amp;amp;K; auch brückende Versionen anbieten  ||||| ||&lt;br /&gt;
* T215 ersetzen gegen etwas Qualitativeres  |||||&lt;br /&gt;
* Folientastaturen ||||| ||||| |||||&lt;br /&gt;
* statt radiohm potis bitte prehostat oder Alphastat 16 63256-026xx ||||| ||&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;
&lt;br /&gt;
=== (Steck-) Verbindungen ===&lt;br /&gt;
* Chipkartenkontaktiereinrichtung, die die Kontakte anhebt (keine Schleifkontakte) |||&lt;br /&gt;
* Stift-/Buchsenleisten 2.54mm zum Auseinanderbrechen  ||||| ||||| ||||| ||||| ||||| ||||| ||||| ||||| =&amp;gt; Bereits im Sortiment: SPL XX, AW 122/XX (XX = 20,32,64); leider nicht als brechbaren Buchsenleisten zu SL xXxxG&lt;br /&gt;
* Buchsenleisten zum Crimpen (allseitig anreihbar!, 1x1, 1x2)  ||||| ||||| ||&lt;br /&gt;
* Print-Steckverbinder (die einreihigen Stecker auf dem PC-Mainboard) ||||| |||&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;
* Hochwertigere 1/4&amp;quot; Klinkenbuchsen, z.B. von Rean oder Cliff ||&lt;br /&gt;
* RJ45-Buchse |&lt;br /&gt;
* TEXTOOL-Fassungen / Nullkraftsockel für kleine Mikrokontroller: DIL-20 || PLCC-44 ||&lt;br /&gt;
&lt;br /&gt;
=== Kabel etc. ===&lt;br /&gt;
* Flachbandkabel im 2,54mm Raster und dazu passende Auspressstecker und -buchsen ||||| ||||| ||||| |&lt;br /&gt;
* Flexible Einzellitze, 0,5² in verschiedenen Farben ||||| ||||&lt;br /&gt;
* das qualitativ mangelhafte 4mm Laborsteckerprogramm rausnehmen und nur noch Hirschmann anbieten  |||||&lt;br /&gt;
* dünner Schaltdraht (&amp;lt; 1mm Durchmesser, isoliert mit Tefzel oder Kynar)  ||||| ||||| ||||| ||||| ||||| ||||| ||&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; ???)&lt;br /&gt;
* Zylinderkopfschrauben M3 x 25mm |||&lt;br /&gt;
&lt;br /&gt;
== Platinen/Prototypen ==&lt;br /&gt;
* Eisen(III)-Chlorid  ||||| ||||| ||||| ||||| ||||| ||||| ||||&lt;br /&gt;
* Breadboards/&amp;quot;Steckbretter&amp;quot; ||||| ||||| ||||| ||||| ||||| ||||| ||||| |&lt;br /&gt;
* SOIC auf PDIP Gehäuse-Adapter zwecks Prototypen-Bau ||||| ||&lt;br /&gt;
* Laser-Folien für die Druckformerstellung(Zweckform 3491) ||&lt;br /&gt;
&lt;br /&gt;
== Werkzeug und Zubehör ==&lt;br /&gt;
* einzelne Hartmetallbohrer in diversen Grössen ||||| ||||| ||||| ||&lt;br /&gt;
* Hartmetallbohrer in mehr verschiedenen Größen (z.B. 1,1mm 1,2mm etc.) ||||| |&lt;br /&gt;
&lt;br /&gt;
== Unsortiert/Unspezifisch ==&lt;br /&gt;
* mehr SMD Bauteile  ||||| ||||| ||||| ||||| ||||| ||||| |||||  |||||  ||||| ||||| |&lt;br /&gt;
* mehr Familien von Logik-ICs, z.B. AC, ACT (in SMD) ||||| ||||| ||||| |&lt;br /&gt;
* HCT-Logik in SMD ||||| ||||| ||||| ||||| ||||| ||&lt;br /&gt;
* mehr und v.a. kleine (Hand-) Gehäuse  ||||| ||||| ||||| ||||| ||||| ||||| ||||| ||&lt;br /&gt;
* Preiswertere Alu Druckgussgehäuse, wie z.B. von Hammond Manufacturing |||&lt;br /&gt;
* LiPoly-Zellen (aufladbare Lithiumakkus &amp;quot;Suppentüten&amp;quot;) ||||| ||||| ||||&lt;br /&gt;
* gleicher Mindestbestellwert in Österreich wie in Deutschland ||||| ||||| ||||&lt;br /&gt;
* schnelle Lieferzeit (wie früher 1-2 Tage) ||||| ||||| ||||| |&lt;br /&gt;
* nicht wie die Konkurrenz jetzt schon im April den Juli Katalog rausbringen ||||&lt;br /&gt;
* Filialen in Österreich und der Schweiz :-) ||||| ||||| ||&lt;br /&gt;
* Taster Schalter und LED-Fassungen aus der Mentor FEL-Reihe |&lt;br /&gt;
&lt;br /&gt;
= Bereits im Sortiment =&lt;br /&gt;
&lt;br /&gt;
* 3,3V Laengsregler (LT1086-Serie z.B.)  ||||| =&amp;gt; vgl z.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.B.: ML 100 SW, Meterware z.B.: MESSLEITUNG 10SW)&lt;br /&gt;
* FTDI USB Chips  ||||| ||||| ||||| ||||| ||||| || =&amp;gt; Best-Nr. FT232BM oder FT245BM&lt;br /&gt;
* CAN-Bus Controller MCP2515  |||||&lt;br /&gt;
* VLSI MP3 Decoder  ||||| ||||| |||||  z.Zt. unter CAN-Bus(!) einsortiert&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. PSS-LIN* (&amp;quot;mono&amp;quot;) PSM-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...)&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, schade!)&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;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Logbuch ====&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;/div&gt;</summary>
		<author><name>131.130.1.135</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=AVR-GCC-Tutorial&amp;diff=7169</id>
		<title>AVR-GCC-Tutorial</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=AVR-GCC-Tutorial&amp;diff=7169"/>
		<updated>2005-05-02T17:43:12Z</updated>

		<summary type="html">&lt;p&gt;131.130.1.135: /* Der interne ADC im AVR */, Tippfehler ausgebessert&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:AVR]]&lt;br /&gt;
&lt;br /&gt;
= Vorwort =&lt;br /&gt;
&lt;br /&gt;
Dieses Tutorial soll den Einstieg in die Programmierung von Atmel [[AVR]]-Mikrocontroller in der Programmiersprache [[C]] mit dem freien (&amp;quot;kostenlosen&amp;quot;) C-Compiler avr-gcc erleichtern.&lt;br /&gt;
&lt;br /&gt;
Die ursprüngliche Version stammt von Christian Schifferle, die meisten aktuellen Anpassungen von [[Benutzer:Mthomas]]. Viele der im Original-Dokument verwendeten Funktionen (z.B. sbi(), cbi(), outp(), inp()) sind in aktuellen Versionen des [[AVR-GCC|avr-gcc]] C-Compilers und der Laufzeitbibliothek avr-libc nicht mehr enthalten. &lt;br /&gt;
Dieses Tutorial wurde an die neuen Funktionen/Methoden angepasst. &lt;br /&gt;
&lt;br /&gt;
In diesem Text wird häufig auf die Standardbibliothek für den avr-gcc-Compiler, die avr-libc, verwiesen. Die online-Version der &#039;&#039;&#039;avr-libc Dokumentation&#039;&#039;&#039; findet sich [http://www.nongnu.org/avr-libc/user-manual/index.html hier]. Bei [[WinAVR]] gehört die Dokumentation zum Lieferumfang und wird mitinstalliert. &amp;lt;!-- Sollte die Dokumentation zeitweise nicht online verfügbar sein, kann diese &#039;&#039;&#039;[[Media:avr-libc User Manual PDF|hier als PDF-Datei]]&#039;&#039;&#039; (Stand Version 1.0.4) heruntergeladen werden.--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Benötigte Werkzeuge =&lt;br /&gt;
&lt;br /&gt;
Um eigene Programme für AVRs mittels avr-gcc/avr-libc zu erstellen und zu testen, wird folgende Hard- und Software benötigt:&lt;br /&gt;
&lt;br /&gt;
* Testboard für die Aufnahme eines AVR Controllers, der vom avr-gcc Compiler unterstützt wird (alle ATmegas und die meisten AT90, siehe Dokumentation der avr-libc für unterstützte Typen). Dieses Testboard kann durchaus auch selbst gelötet oder auf einem Steckbrett aufgebaut werden. Einige Registerbeschreibungen dieses Tutorials beziehen sich auf den inzwischen veralteten AT90S2313. Der weitaus größte Teil des Textes ist aber für alle Controller der AVR-Familie gültig. Brauchbare Testplattform sind auch das [[STK500]] und der [[AVR Butterfly]] von Atmel.&lt;br /&gt;
* Der avr-gcc Compiler und die avr-libc. Kostenlos erhältlich für nahezu alle Plattformen/Betriebssysteme. Für MS-Windows im Paket [[WinAVR]]; für Unix/Linux siehe auch Hinweise im Artikel [[AVR-GCC]].&lt;br /&gt;
* Programmiersoftware und -hardware z.B. PonyProg (siehe auch: [[Pony-Prog Tutorial]]) oder [[AVRDUDE]] mit [[STK200]]-Dongle oder die von Atmel verfügbare Hard- und Software ([[STK500]], Atmel AVRISP, [[AVR-Studio]]). &lt;br /&gt;
* Nicht unbedingt erforderlich, aber zur Simulation und zum Debuggen unter MS-Windows recht nützlich: [[AVR-Studio]] (siehe Abschnitt [[AVR-GCC-Tutorial#Exkurs: makefiles|Exkurs: makefiles]]).&lt;br /&gt;
&lt;br /&gt;
= Was tun, wenn&#039;s nicht &amp;quot;klappt&amp;quot;? =&lt;br /&gt;
&lt;br /&gt;
* Herausfinden, ob es tatsächlich ein avr(-gcc) spezifisches Problem ist oder die C-Kenntnisse einer Auffrischung bedürfen. Allgemeine C-Fragen kann man eventuell &amp;quot;beim freundlichen Programmierer zwei Büro-, Zimmer- oder Haustüren weiter&amp;quot; loswerden. Ansonsten: [[C]]-Buch (gibt&#039;s auch &amp;quot;gratis&amp;quot; online) lesen.&lt;br /&gt;
* Die [http://www.nongnu.org/avr-libc/user-manual/index.html Dokumentation der avr-libc] lesen, vor allem (aber nicht nur) den Abschnitt Related Pages/Frequently Asked Questions = Oft gestellte Fragen (und Antworten dazu). Z.Zt leider nur in englischer Sprache verfügbar.&lt;br /&gt;
* Den Artikel [[AVR-GCC]] in diesem Wiki lesen.&lt;br /&gt;
* Das gcc-Forum auf [http://www.mikrocontroller.net www.mikrocontroller.net] nach vergleichbaren Problemen absuchen.&lt;br /&gt;
* Das avr-gcc-Forum bei [http://www.avrfreaks.net avrfreaks] nach vergleichbaren Problemen absuchen.&lt;br /&gt;
* Das [http://lists.gnu.org/archive/html/avr-gcc-list/ Archiv der avr-gcc Mailing-Liste] nach vergleichbaren Problemen absuchen.&lt;br /&gt;
* Nach Beispielcode suchen. Vor allem in der Academy von [http://www.avrfreaks.net AVRFREAKS] (anmelden).&lt;br /&gt;
* Google oder alltheweb befragen schadet nie.&lt;br /&gt;
* Bei Problemen mit der Ansteuerung interner AVR-Funktionen mit C-Code: das Datenblatt des Controllers lesen (ganz und am Besten zweimal)&lt;br /&gt;
* einen Beitrag in eines der Foren oder eine Mail an die Mailing-Liste schreiben. Dabei möglichst viel Information geben: Controller, Compilerversion, genutzte Bibliotheken, Ausschnitte aus dem Quellcode, genaue Fehlermeldungen bzw. Beschreibung des Fehlverhaltens. Bei Ansteuerung externer Geräte die Beschaltung beschreiben oder skizzieren (z.B. mit [http://www.tech-chat.de/ Andys ASCII Circuit]). Siehe dazu auch: [http://www.lugbz.org/documents/smart-questions_de.html &amp;quot;Wie man Fragen stellt&amp;quot;].&lt;br /&gt;
&lt;br /&gt;
= Exkurs: makefiles =&lt;br /&gt;
&lt;br /&gt;
Wenn man bisher gewohnt ist, mit integrierten Entwicklungsumgebung à la Visual-C Programme zu erstellen, wirkt das makefile-Konzept auf den ersten Blick etwas kryptisch. Nach kurzer Einarbeitung ist diese Vorgehensweise jedoch sehr praktisch. Diese Dateien (üblicher Name: &#039;Makefile&#039; ohne Dateiendung) dienen der Ablaufsteuerung des Programms make, das auf allen Unix/Linux-Systemen installiert sein sollte, und in einer Fassung fuer MS-Windows auch in [[WinAVR]] (Unterverzeichnis utils/bin) enthalten ist.&lt;br /&gt;
&lt;br /&gt;
Im Unterverzeichnis &#039;&#039;sample&#039;&#039; einer WinAVR-Installation findet man eine sehr brauchbare Vorlage, die sich einfach an das eigene Projekt anpassen lässt ([[Media:Makefile|lokale Kopie Stand Sept. 2004]]). Wahlweise kann man auch [http://www.sax.de/~joerg/mfile/ mfile] von Jörg Wunsch nutzen. mfile erzeugt ein makefile nach Einstellungen in einer grafischen Nutzeroberfläche, wird bei WinAVR mitinstalliert, ist aber als TCL/TK-Programm auf nahezu allen Plattformen lauffähig.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Die folgenden Ausführungen beziehen sich auf das WinAVR Beispiel-Makefile.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Ist im Makefile alles richtig eingestellt genügt es, sich drei Parameter zu merken, die über die shell bzw. die Windows-Kommandozeile (cmd.exe/command.com) als Parameter an &amp;quot;make&amp;quot; übergeben werden. Das Programm make sucht sich &amp;quot;automatisch&amp;quot; das makefile im aktuellen Arbeitsverzeichnis und führt die darin definierten Operationen für den entsprechenden Aufrufparameter durch.&lt;br /&gt;
&lt;br /&gt;
{| border=1&lt;br /&gt;
| &#039;&#039;make all&#039;&#039;&lt;br /&gt;
| Erstellt aus den in im makefile angegebenen Quellcodes eine &#039;&#039;hex&#039;&#039;-Datei (und ggf. auch &#039;&#039;eep&#039;&#039;-Datei).&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;make program&#039;&#039;&lt;br /&gt;
| Überträgt die hex-Datei (und wahlweise auch die eep-Datei für den EEPROM) zum AVR. &lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;make clean&#039;&#039;&lt;br /&gt;
| löscht alle temporären Dateien, also auch die hex-Datei&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Diese Aufrufe können in die allermeisten Editoren in &amp;quot;Tool-Menüs&amp;quot; eingebunden werden. Dies erspart den Kontakt mit der Kommandozeile. (Bei WinAVR sind die Aufrufe bereits im Tools-Menü des mitgelieferten Editors Programmers-Notepad eingefügt.)&lt;br /&gt;
&lt;br /&gt;
Üblicherweise sind folgende Daten im makefile anzupassen:&lt;br /&gt;
* Controllertyp&lt;br /&gt;
* Quellcode-Dateien (c-Dateien)&lt;br /&gt;
* Typ und Anschluss des Programmiergeräts&lt;br /&gt;
&lt;br /&gt;
seltener sind folgende Einstellungen durchzuführen:&lt;br /&gt;
* Grad der Optimierung&lt;br /&gt;
* Methode zur Erzeugung der Debug-Symbole (Debug-Format)&lt;br /&gt;
* Assembler-Quellcode-Dateien (S-Dateien)&lt;br /&gt;
&lt;br /&gt;
Die in den folgenden Unterabschnitten gezeigten makefile-Ausschnitte sind für ein Programm, das auf einem ATmega8 ausgeführt werden soll. Der Quellcode besteht aus den c-Dateien superprog.c (darin main()), uart.c, lcd.c und 1wire.c. Im Quellcodeverzeichnis befinden sich diese Dateien: superprog.c, uart.h, uart.c, lcd.h, lcd.c, 1wire.h, 1wire.c und das makefile (die angepasste Kopie des WinAVR-Beispiels).&lt;br /&gt;
&lt;br /&gt;
Der Controller wird mittels [[AVRDUDE]] über ein [[STK200]]-Programmierdongle an der Schnittstelle lpt1 (bzw. /dev/lp0) programmiert. Im Quellcode sind auch Daten für die &#039;&#039;section .eeprom&#039;&#039; definiert (siehe Abschnitt Speicherzugriffe TODO: nach unten verlinken), diese sollen beim Programmieren gleich mit ins EEPROM geschrieben werden. &lt;br /&gt;
&lt;br /&gt;
== Controllertyp setzen ==&lt;br /&gt;
&lt;br /&gt;
Dazu wird die &amp;quot;make-Variable&amp;quot; MCU entsprechend dem Namen des verwendeten Controllers gesetzt. Ein Liste der von avr-gcc und der avr-libc untersützten Typen findet sich in der [http://www.nongnu.org/avr-libc/user-manual/index.html Dokumentation der avr-libc].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre class=&amp;quot;code&amp;quot;&amp;gt;&lt;br /&gt;
# Kommentare in Makefiles beginnen mit einem Doppelkreuz &lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
# ATmega8 at work&lt;br /&gt;
MCU = atmega8&lt;br /&gt;
# oder MCU = atmega16 &lt;br /&gt;
# oder MCU = at90s8535&lt;br /&gt;
# oder ...&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Quellcode-Dateien einstellen ==&lt;br /&gt;
&lt;br /&gt;
Den Namen der Quellcodedatei welche die Funktion main enthält, wird hinter TARGET eingetragen. Dies jedoch ohne die Endung &#039;&#039;.c&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre class=&amp;quot;code&amp;quot;&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
TARGET = superprog&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Besteht das Projekt wie im Beispiel aus mehr als einer Quellcodedatei, sind die weiteren c-Dateien (nicht die Header-Dateien, vgl. [[Include-Files (C)]]) durch Leerzeichen getrennt bei SRC einzutragen. Die bei TARGET definierte Datei ist schon in der SRC-Liste enthalten. Diesen Eintrag nicht löschen!&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre class=&amp;quot;code&amp;quot;&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
SRC = $(TARGET).c uart.c lcd.c 1wire.c &lt;br /&gt;
...&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Alternativ kann man die Liste der Quellcodedateien auch mit dem Operator += erweitern.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre class=&amp;quot;code&amp;quot;&amp;gt;&lt;br /&gt;
SRC = $(TARGET).c uart.c 1wire.c&lt;br /&gt;
# lcd-Code fuer Controller xyz123 (auskommentiert)&lt;br /&gt;
# SRC += lcd_xyz.c&lt;br /&gt;
# lcd-Code fuer &amp;quot;Standard-Controller&amp;quot; (genutzt)&lt;br /&gt;
SRC += lcd.c&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Programmiergerät einstellen ==&lt;br /&gt;
&lt;br /&gt;
Die Vorlagen sind auf die Programmiersoftware [[AVRDUDE]] angepasst, jedoch lässt sich auch andere Programmiersoftware einbinden, sofern diese über Kommandozeile gesteuert werden kann (z.B. stk500.exe, uisp, sp12).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre class=&amp;quot;code&amp;quot;&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
# Einstellung fuer STK500 an com1 (auskommentiert)&lt;br /&gt;
# AVRDUDE_PROGRAMMER = stk500&lt;br /&gt;
# com1 = serial port. Use lpt1 to connect to parallel port.&lt;br /&gt;
# AVRDUDE_PORT = com1    # programmer connected to serial device&lt;br /&gt;
&lt;br /&gt;
# Einstellung fuer STK200-Dongle an lpt1&lt;br /&gt;
AVRDUDE_PROGRAMMER = stk200&lt;br /&gt;
AVRDUDE_PORT = lpt1&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Sollen Flash(=.hex) und EEPROM(=.eep) zusammen auf den Controller programmiert werden, ist das Kommentarzeichen vor AVRDUDE_WRITE_EEPROM zu löschen.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre class=&amp;quot;code&amp;quot;&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
#Auskommentiert: EERPOM-Inhalt wird nicht mitgeschrieben&lt;br /&gt;
#AVRDUDE_WRITE_EEPROM = -U eeprom:w:$(TARGET).eep&lt;br /&gt;
&lt;br /&gt;
#Nich-auskommentiert EERPOM-Inhalt wird mitgeschrieben&lt;br /&gt;
AVRDUDE_WRITE_EEPROM = -U eeprom:w:$(TARGET).eep&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Anwendung ==&lt;br /&gt;
&lt;br /&gt;
Die Eingabe von &#039;&#039;make all&#039;&#039; im Arbeitsverzeichnis mit dem makefile und den Quellcodedateien erzeugt (unter anderem) die Dateien superprog.hex und superprog.eep. Abhängigkeiten zwischen den einzelnen c-Dateien werden dabei automatisch berücksichtigt. Die &#039;&#039;superprog.hex&#039;&#039; und &#039;&#039;superprog.eep&#039;&#039; werden mit &#039;&#039;make program&#039;&#039; zum Controller  übertragen. Mit &#039;&#039;make clean&#039;&#039; werden alle temporären Dateien gelöscht (=&amp;quot;aufgeräumt&amp;quot;).&lt;br /&gt;
&lt;br /&gt;
== Sonstige Einstellungen ==&lt;br /&gt;
&lt;br /&gt;
=== Optimierungsgrad ===&lt;br /&gt;
&lt;br /&gt;
Der gcc-Compiler kennt verschiedene Stufen der Optimierung. Nur zu Testzwecken sollte die Optimierung ganz deaktiviert werden (&#039;&#039;OPT = 0&#039;&#039;). Die weiteren möglichen Optionen weisen den Compiler an, möglichst kompakten oder möglichst schnellen Code zu erzeugen. In den weitaus meisten Fällen ist &#039;&#039;OPT = s&#039;&#039; die optimale (sic) Einstellung, damit wird kompakter und oft auch der &amp;quot;schnellste&amp;quot; Maschinencode erzeugt.&lt;br /&gt;
&lt;br /&gt;
=== Debug-Format ===&lt;br /&gt;
&lt;br /&gt;
Unterstützt werden die Formate stabs und dwarf-2. Das Format wir hinter &#039;&#039;DEBUG =&#039;&#039; eingestellt. Siehe dazu Abschnitt &#039;&#039;Eingabedateien zur Simulation&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
=== Assembler-Dateien ===&lt;br /&gt;
&lt;br /&gt;
Die im Projekt genutzten Assembler-Dateien werden hinter ASRC durch Leerzeichen getrennt aufgelistet. Assembler-Dateien haben immer die Endung .S (großes S). Ist zum Beispiel der Assembler-Quellcode eines Software-UARTs in einer Datei softuart.S enthalten lautet die Zeile: &#039;&#039;ASRC = softuart.S&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Taktfrequenz ===&lt;br /&gt;
&lt;br /&gt;
Neuere Versionen der WinAVR/Mfile Vorlage für Makefiles beinhalten die Definition einer Variablen F_CPU (WinAVR 2/2005). Darin wird die Taktfrequenz des Controller in Herz eingetragen. Die Defintion steht dann im gesamten Projekt ebenfalls unter der Bezeichnung F_CPU zur Verfügung (z.B. um daraus  UART-, SPI- oder ADC-Frequenzeinstellungen abzuleiten).&lt;br /&gt;
&lt;br /&gt;
Die Angabe hat rein &amp;quot;informativen&amp;quot; Charakter, die tatsächliche Taktrate wird über den externen Takt (z.B. Quarz) bzw. die Einstellung des internen R/C-Oszillators  bestimmt. Die Nutzung von F_CPU macht also nur Sinn, wenn die Angabe mit dem tatsächlichen Takt übereinstimmt.&lt;br /&gt;
&lt;br /&gt;
== Eingabedateien zur Simulation in AVR-Studio ==&lt;br /&gt;
&lt;br /&gt;
Mit älteren AVR-Studio-Versionen kann man nur auf Grundlage sogenannter &#039;&#039;coff&#039;&#039;-Dateien simulieren. Neuere Versionen von AVR-Studio (ab 4.10.356) unterstützen zudem das modernere aber noch experimentelle dwarf-2-Format, das ab WinAVR 20040722 (avr-gcc 3.4.1/Binutils inkl. Atmel add-ons) &amp;quot;direkt&amp;quot; vom Compiler erzeugt wird.&lt;br /&gt;
&lt;br /&gt;
; Vorgehensweise bei extcoff:&lt;br /&gt;
* im Makefile bei DEBUG: &amp;lt;pre class=&amp;quot;code&amp;quot;&amp;gt;DEBUG=stabs&amp;lt;/pre&amp;gt;&lt;br /&gt;
* &#039;&#039;make extcoff&#039;&#039; (evtl. vorher &#039;&#039;make clean&#039;&#039;)&lt;br /&gt;
* die erzeugte &#039;&#039;cof&#039;&#039;-Datei (im Beispiel oben &#039;&#039;superprog.cof&#039;&#039;) in AVR-Studio laden&lt;br /&gt;
* AVR-Simulator und zu simulierenden Controller wählen, &amp;quot;Finish&amp;quot;&lt;br /&gt;
* weiteres siehe AVR-Studio Online-Hilfe&lt;br /&gt;
&lt;br /&gt;
; Vorgehensweise bei dwarf-2:&lt;br /&gt;
* im Makefile bei DEBUG: &amp;lt;pre class=&amp;quot;code&amp;quot;&amp;gt;DEBUG=dwarf-2&amp;lt;/pre&amp;gt;&lt;br /&gt;
* &#039;&#039;make all&#039;&#039; (evtl. vorher &#039;&#039;make clean&#039;&#039;)&lt;br /&gt;
* die erzeugte &#039;&#039;elf&#039;&#039;-Datei (im Beispiel oben &#039;&#039;superprog.elf&#039;&#039;) in AVR-Studio laden&lt;br /&gt;
* AVR-Simulator und zu simulierenden Controller wählen, &amp;quot;Finish&amp;quot;&lt;br /&gt;
* weiteres siehe AVR-Studio Online-Hilfe&lt;br /&gt;
&lt;br /&gt;
Beim Simulieren scheinen oft &amp;quot;Variablen zu fehlen&amp;quot;. Ursache dafür ist, dass der Compiler die &amp;quot;Variablen&amp;quot; direkt Registern zuweist. Dies kann vermieden werden, indem die Optimierung abgeschaltet wird (im makefile). Man simuliert dann jedoch ein vom optimierten Code stark abweichendes Programm. Das Abschalten der Optimierung wird nicht empfohlen.&lt;br /&gt;
&lt;br /&gt;
Statt des Software-Simulators kann das AVR-Studio auch genutzt werden, um mit dem ATMEL JTAGICE, ein Nachbau davon (BootICE, Evertool o.ä.) oder dem ATMEL JTAGICE MKII &amp;quot;im System&amp;quot; zu debuggen. Dazu sind keine speziellen Einstellungen im makefile erforderlich. Debugging bzw. &amp;quot;In-System-Emulation&amp;quot; mit dem JTAGICE und JTAGICE MKII sind in der AVR-Studio Online-Hilfe beschrieben.&lt;br /&gt;
&lt;br /&gt;
= Ganzzahlige (Integer) Datentypen =&lt;br /&gt;
&lt;br /&gt;
Bei der Programmierung von Mikrokontrollern ist die Definition einiger ganzzahliger Datentypen sinnvoll, an denen eindeutig die Bit-Länge abgelesen werden kann.&lt;br /&gt;
&lt;br /&gt;
== Selbstdefinierte (nicht-standardisierte) ganzzahlige Datentypen ==&lt;br /&gt;
&lt;br /&gt;
Bei den im Folgenden genannten Typdefinitionen ist zu beachten, dass die Bezeichnungen für &amp;quot;Worte&amp;quot; teilweise je nach Prozessorplattform unterschiedlich verwendet werden. Die angegebenen Definitionen beziehen sich auf die im Zusammenhang mit AVR/8-bit-Controllern üblichen &amp;quot;Bit-Breiten&amp;quot; (In Erläuterungen zum ARM7TDMI z.B. werden oft 32-bit Integer mit &amp;quot;Wort&amp;quot; ohne weitere Ergänzung bezeichnet). Es empfiehlt sich daher, die im nachfolgenden Abschnitt beschriebenen &#039;&#039;standardisierten ganzzahligen Datentypen&#039;&#039; zu nutzen und damit &amp;quot;Missverständnissen&amp;quot; vorzubeugen, die z.B. bei der Portierung von C-Code zwischen verschiedenen Plattformen auftreten können.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre class=&amp;quot;code&amp;quot;&amp;gt;&lt;br /&gt;
typedef unsigned char      BYTE;       // besser: uint8_t  aus &amp;lt;inttypes.h&amp;gt;&lt;br /&gt;
typedef unsigned short     WORD;       // besser: uint16_t aus &amp;lt;inttypes.h&amp;gt;&lt;br /&gt;
typedef unsigned long      DWORD;      // besser: uint32_t aus &amp;lt;inttypes.h&amp;gt;&lt;br /&gt;
typedef unsigned long long QWORD;      // besser: uint64_t aus &amp;lt;inttypes.h&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
; BYTE : Der Datentyp BYTE definiert eine Variable mit 8 Bit Breite zur Darstellung von ganzen Zahlen im Bereich zwischen 0 ... 255.&lt;br /&gt;
&lt;br /&gt;
; WORD : Der Datentyp WORD definiert eine Variable mit 16 Bit Breite zur Darstellung von ganzen Zahlen im Bereich zwischen 0 ... 65535.&lt;br /&gt;
&lt;br /&gt;
; DWORD : Der Datentyp DWORD (gesprochen: Double-Word) definiert eine Variable mit 32 Bit Breite zur Darstellung von ganzen Zahlen im Bereich zwischen 0 ... 4294967295.&lt;br /&gt;
&lt;br /&gt;
; QWORD : Der Datentyp QWORD (gesprochen: Quad-Word) definiert eine Variable mit 64 Bit Breite zur Darstellung von ganzen Zahlen im Bereich zwischen 0 ... 18446744073709551615.&lt;br /&gt;
&lt;br /&gt;
== Standardisierte Integer(Ganzzahl)-Typen ==&lt;br /&gt;
&lt;br /&gt;
Standardisierte Datentypen werden in der Header-Datei inttypes.h definiert. In neueren Version der avr-libc (ab V1.2.0) heisst die Datei entsprechend aktuellem Standard stdint.h. inttypes.h existiert aus Kompatibiltätsgründen weiterhin und enthält ein &#039;&#039;#include &amp;lt;stdint.h&amp;gt;&#039;&#039;.&lt;br /&gt;
Zur Nutzung der standardisierten Typen bindet man die &amp;quot;Definitionsdatei&amp;quot; wie folgt ein:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre class=&amp;quot;code&amp;quot;&amp;gt;&lt;br /&gt;
#include &amp;lt;inttypes.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
// oder - ab avr-libc Version 1.2.0 möglich und empfohlen:&lt;br /&gt;
#include &amp;lt;stdint.h&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Einige der dort definierten Typen (avr-libc Version 1.0.4):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre class=&amp;quot;code&amp;quot;&amp;gt;&lt;br /&gt;
typedef signed char        int8_t;&lt;br /&gt;
typedef unsigned char      uint8_t;&lt;br /&gt;
&lt;br /&gt;
typedef short              int16_t;&lt;br /&gt;
typedef unsigned short     uint16_t;&lt;br /&gt;
&lt;br /&gt;
typedef long               int32_t;&lt;br /&gt;
typedef unsigned long      uint32_t;&lt;br /&gt;
&lt;br /&gt;
typedef long long          int64_t;&lt;br /&gt;
typedef unsigned long long uint64_t;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Ein Vierfach-Wort (64Bit) entspricht beim AVR &#039;&#039;uint64_t&#039;&#039;, ein Doppel-Wort (32bit) entspricht &#039;&#039;uint32_t&#039;&#039;, ein Wort (16bit) entspricht &#039;&#039;uint16_t&#039;&#039; und ein Byte (8bit) entspricht &#039;&#039;uint8_t&#039;&#039;. &lt;br /&gt;
Die Typen ohne vorangestelltes &#039;&#039;u&#039;&#039; können auch vorzeichenbehaftete Zahlen speichern. &#039;&#039;int8_t&#039;&#039; geht also von -128 bis 127, &#039;&#039;uint8_t&#039;&#039; dagegen geht von 0 bis 255.&lt;br /&gt;
&lt;br /&gt;
* siehe auch: [http://www.nongnu.org/avr-libc/user-manual/index.html Dokumentation der avr-libc] Abschnitt Modules/(Standard) Integer Types&lt;br /&gt;
&lt;br /&gt;
= Bitfelder =&lt;br /&gt;
&lt;br /&gt;
Beim Programmieren von Mikrocontrollern muss auf jedes Byte oder sogar auf&lt;br /&gt;
jedes Bit geachtet werden. Oft müssen wir in einer Variablen lediglich den&lt;br /&gt;
Zustand 0 oder 1 speichern. Wenn wir nun zur Speicherung eines einzelnen Wertes&lt;br /&gt;
den kleinsten bekannten Datentypen, nämlich &#039;&#039;&#039;unsigned char&#039;&#039;&#039;, nehmen, dann&lt;br /&gt;
verschwenden wir 7 Bits, da ein &#039;&#039;&#039;unsigned char&#039;&#039;&#039; ja 8 Bit breit ist.&lt;br /&gt;
&lt;br /&gt;
Hier bietet uns die Programmiersprache C ein mächtiges Werkzeug an, mit dessen&lt;br /&gt;
Hilfe wir 8 Bits in eine einzelne Bytevariable zusammen fassen und (fast) wie&lt;br /&gt;
8 einzelne Variablen ansprechen können.&amp;lt;br /&amp;gt;&lt;br /&gt;
Die Rede ist von sogenannten Bitfeldern. Diese werden als Strukturelemente&lt;br /&gt;
definiert. Sehen wir uns dazu doch am besten gleich ein Beispiel an:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre class=&amp;quot;code&amp;quot;&amp;gt;&lt;br /&gt;
struct {&lt;br /&gt;
   unsigned char bStatus_1:1; // 1 Bit für bStatus_1&lt;br /&gt;
   unsigned char bStatus_2:1; // 1 Bit für bStatus_2&lt;br /&gt;
   unsigned char bNochNBit:1; // Und hier noch mal ein Bit&lt;br /&gt;
   unsigned char b2Bits:2;    // Dieses Feld ist 2 Bits breit&lt;br /&gt;
   // All das hat in einer einzigen Byte-Variable Platz.&lt;br /&gt;
   // die 3 verbleibenden Bits bleiben ungenutzt&lt;br /&gt;
} x;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Der Zugriff auf ein solches Feld erfolgt nun wie beim Strukturzugriff bekannt&lt;br /&gt;
über den Punkt- oder den Dereferenzierungs-Operator:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre class=&amp;quot;code&amp;quot;&amp;gt;&lt;br /&gt;
x.bStatus_1 = 1;&lt;br /&gt;
x.bStatus_2 = 0;&lt;br /&gt;
x.b2Bits = 3;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
(mt Empfehlung: Bitfelder sparen zwar Platz, verschlechtern aber unter&lt;br /&gt;
Umständen die Les- und Wartbarkeit des Codes. Anfängern wird geraten,&lt;br /&gt;
ein &amp;quot;ganzes&amp;quot; Byte (uint8_t) zu nutzen auch wenn nur ein Bitwert gespeichert &lt;br /&gt;
werden soll.)&lt;br /&gt;
&lt;br /&gt;
= Grundsätzlicher Programmaufbau eines &amp;amp;micro;C-Programms =&lt;br /&gt;
&lt;br /&gt;
Wir unterscheiden zwischen 2 verschiedenen Methoden, um ein&lt;br /&gt;
Mikrocontroller-Programm zu schreiben, und zwar völlig unabhängig davon, in&lt;br /&gt;
welcher Programmiersprache das Programm geschrieben wird.&lt;br /&gt;
&lt;br /&gt;
== Sequentieller Programmablauf ==&lt;br /&gt;
&lt;br /&gt;
Bei dieser Programmiertechnik wird eine Endlosschleife programmiert, welche im&lt;br /&gt;
Wesentlichen immer den gleichen Aufbau hat:&lt;br /&gt;
&lt;br /&gt;
[[Image:Sequentielle Programme.gif]]&lt;br /&gt;
&lt;br /&gt;
== Interruptgesteuerter Programmablauf ==&lt;br /&gt;
&lt;br /&gt;
Bei dieser Methode werden beim Programmstart zuerst die gewünschten&lt;br /&gt;
Interruptquellen aktiviert und dann in eine Endlosschleife gegangen, in welcher&lt;br /&gt;
Dinge erledigt werden können, welche nicht zeitkritisch sind.&amp;lt;br /&amp;gt;&lt;br /&gt;
Wenn ein Interrupt ausgelöst wird so wird automatisch die zugeordnete&lt;br /&gt;
Interruptfunktion ausgeführt.&lt;br /&gt;
&lt;br /&gt;
[[Image:Interrupt Programme.gif]]&lt;br /&gt;
&lt;br /&gt;
= Allgemeiner Zugriff auf Register =&lt;br /&gt;
&lt;br /&gt;
Die AVR-Controller verfügen über eine Vielzahl von Registern. Die meisten&lt;br /&gt;
davon sind sogenannte Schreib-/Leseregister. Das heißt, das Programm kann die&lt;br /&gt;
Inhalte der Register auslesen und beschreiben.&amp;lt;br /&amp;gt;&lt;br /&gt;
Einige Register haben spezielle Funktionen, andere wiederum könne für&lt;br /&gt;
allgemeine Zwecke (Speichern von Datenwerten) verwendet werden.&lt;br /&gt;
&lt;br /&gt;
Einzelne Register sind bei allen AVRs vorhanden, andere wiederum nur bei&lt;br /&gt;
bestimmten Typen. So sind beispielsweise die Register, welche für den Zugriff&lt;br /&gt;
auf den UART notwendig sind selbstverständlich nur bei denjenigen Modellen&lt;br /&gt;
vorhanden, welche über einen integrierten Hardware UART bzw. USART verfügen.&lt;br /&gt;
&lt;br /&gt;
Die Namen der Register sind in den Headerdateien zu den entsprechenden&lt;br /&gt;
AVR-Typen definiert.&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;!--Wenn im Makefile der MCU-Typ definiert ist so bindet das System automatisch die&lt;br /&gt;
richtige Headerdatei ein.&amp;lt;br /&amp;gt; --&amp;gt;&lt;br /&gt;
Wenn im Makefile der MCU-Typ definiert ist, wird vom System automatisch die&lt;br /&gt;
zum Typen passende Definitionsdatei genutzt, sobald man im Code die allgemeine &lt;br /&gt;
&amp;quot;io.h&amp;quot; Header-Datei einbindet.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre class=&amp;quot;code&amp;quot;&amp;gt;&lt;br /&gt;
#include &amp;lt;avr/io.h&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ist im Makefile der MCU Type z.B. mit dem Inhalt atmega8 definiert,&lt;br /&gt;
wird beim einlesen der io.h-Datei implizit (&amp;quot;automatisch&amp;quot;) auch die iom8.h-Datei mit&lt;br /&gt;
den Register-Definitionen für den ATmega8 eingelesen.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Man kann der MCU-Typ aber selbstverständlich auch noch in der C-Quelldatei&lt;br /&gt;
definieren, wenn man Freude daran hat. --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== I/O-Register ==&lt;br /&gt;
&lt;br /&gt;
Die I/O-Register haben einen besonderen Stellenwert bei den AVR Controllern.&lt;br /&gt;
Sie dienen dem Zugriff auf die Ports und die Schnittstellen des Controllers.&amp;lt;br /&amp;gt;&lt;br /&gt;
Wir unterscheiden zwischen 8-Bit und 16-Bit Registern. Vorerst behandeln wir mal&lt;br /&gt;
die 8-Bit Register.&lt;br /&gt;
&amp;lt;!-- &lt;br /&gt;
{| border=&amp;quot;0&amp;quot;&lt;br /&gt;
|- &lt;br /&gt;
| &#039;&#039;&#039;Hinweis:&#039;&#039;&#039;&lt;br /&gt;
| Die folgenden Funktionen erwarten als Argument&lt;br /&gt;
für das jeweilige Portregister konstante Werte. Am besten verwenden wir&lt;br /&gt;
die entsprechenden defines aus der Headerdatei . Wenn die&lt;br /&gt;
Portadresse über eine 8-Bit Variable übergeben quittiert der Inline&lt;br /&gt;
Assembler dies jeweils mit 2 Fehlermeldungen folgender Form:&lt;br /&gt;
&lt;br /&gt;
:: warning: asm operand 0 probably&lt;br /&gt;
doesn&#039;t match constraints&amp;lt;br /&amp;gt;:: warning: asm operand 1 probably&lt;br /&gt;
doesn&#039;t match constraints&lt;br /&gt;
&lt;br /&gt;
Offensichtlich läuft das Programm so auch tatsächlich nicht korrekt&lt;br /&gt;
ab. Wenn wir also Ports über Variablen ansprechen wollen müssen wir auf&lt;br /&gt;
die Low Level-Funktion &#039;&#039;&#039;[http://en.wikipedia.org#Speicherbezogener%20Portzugriff __mmio]&#039;&#039;&#039;&lt;br /&gt;
ausweichen.&lt;br /&gt;
|} --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Lesen eines I/O-Registers ===&lt;br /&gt;
&lt;br /&gt;
Zum Lesen kann man auf I/O Register einfach wie auf eine Variable zugreifen. In Quellcodes, die für ältere Versionden des avr-gcc/der avr-libc enwickelt wurden, erfolgt der Lesezugriff über die Funktion inp(). inp() ist in aktuellen Versionen der avr-libc nicht mehr enthalten und auch nicht mehr erforderlich.&lt;br /&gt;
&lt;br /&gt;
Beispiel:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre class=&amp;quot;code&amp;quot;&amp;gt;&lt;br /&gt;
#include &amp;lt;avr/io.h&amp;gt;&lt;br /&gt;
#include &amp;lt;stdint.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
uint8_t foo;&lt;br /&gt;
&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
int main(void)&lt;br /&gt;
{&lt;br /&gt;
    /* kopiert den Status der Eingabepins an PortB &lt;br /&gt;
       in die Variable foo: */&lt;br /&gt;
    foo = PINB;    &lt;br /&gt;
    ...&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Lesen eines Bits ====&lt;br /&gt;
&lt;br /&gt;
Die AVR-Bibliothek (avr-libc) stellt auch Funktionen zur Abfrage eines einzelnen Bits&lt;br /&gt;
eines Registers zur Verfügung:&lt;br /&gt;
&lt;br /&gt;
;bit_is_set (&amp;lt;Register&amp;gt;,&amp;lt;Bitnummer&amp;gt;) : Die Funktion &#039;&#039;bit_is_set&#039;&#039; prüft, ob ein Bit gesetzt ist. Wenn das Bit gesetzt ist, wird ein Wert ungleich 0 zurückgegeben. Genau genommen ist es die Wertigkeit des abgefragten Bits, also 1 für Bit0, 2 für Bit1, 4 für Bit2 etc.&lt;br /&gt;
&lt;br /&gt;
;bit_is_clear (&amp;lt;Register&amp;gt;,&amp;lt;Bitnummer&amp;gt;) : Die Funktion &#039;&#039;bit_is_clear&#039;&#039; prüft, ob ein Bit gelöscht ist. Wenn das Bit gelöscht ist, also auf 0 ist, wird ein Wert ungleich 0 zurückgegeben.&lt;br /&gt;
&lt;br /&gt;
Die Funktionen bit_is_clear bzw. bit_is_set sind &#039;&#039;nicht erforderlich&#039;&#039;, man kann auch &amp;quot;einfache&amp;quot; C-Syntax verwenden, die universell verwendbar ist. &#039;&#039;bit_is_set&#039;&#039; entspricht dabei z.B. (Registername &amp;amp; (1 &amp;lt;&amp;lt; Bitnummer)). Das Ergebnis ist &amp;lt;&amp;gt;0 wenn das Bit gesetzt und 0 wenn es nicht gesetzt ist. &lt;br /&gt;
&lt;br /&gt;
* siehe auch [[Bitmanipulation]]&lt;br /&gt;
&lt;br /&gt;
=== Schreiben eines I/O-Registers ===&lt;br /&gt;
&lt;br /&gt;
Zum Schreiben kann man I/O Register einfach wie eine Variable setzen. In Quellcodes, die für ältere Versionden des avr-gcc/der avr-libc entwickelt wurden, erfolgt der Schreibzugriff über die Funktion outp(). outp() ist in aktuellen Versionen der avr-libc nicht mehr enthalten und auch nicht mehr erforderlich.&lt;br /&gt;
&lt;br /&gt;
Beispiel:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre class=&amp;quot;code&amp;quot;&amp;gt;&lt;br /&gt;
#include &amp;lt;avr/io.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
int main(void)&lt;br /&gt;
{&lt;br /&gt;
    /* Setzt das Richtungsregister des Ports A auf 0xff &lt;br /&gt;
       (alle Pins als Ausgang): */&lt;br /&gt;
    DDRA = 0xff;    &lt;br /&gt;
&lt;br /&gt;
    /* Setzt PortA auf 0x03, Bit 0 und 1 &amp;quot;high&amp;quot;, restliche &amp;quot;low&amp;quot;: */&lt;br /&gt;
    PORTA = 0x03;   &lt;br /&gt;
    ...&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Schreiben von Bits ====&lt;br /&gt;
&lt;br /&gt;
Einzelne Bits setzt man &amp;quot;Standard-C-Konform&amp;quot; mittels logischer (bit-) Operationen.&lt;br /&gt;
&lt;br /&gt;
mit dem Ausdruck:&lt;br /&gt;
&amp;lt;pre class=&amp;quot;code&amp;quot;&amp;gt;&lt;br /&gt;
 x |= (1 &amp;lt;&amp;lt; Bitnummer)  // wird ein Bit in x gesetzt&lt;br /&gt;
 x &amp;amp;= ~(1 &amp;lt;&amp;lt; Bitnummer) // wird ein Bit in x geloescht&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Das niederwertigste Bit (für 1) eines Bytes hat die Bitnummer 0, das &amp;quot;höchstwertige&amp;quot; (für 127) die Nummer 7.&lt;br /&gt;
&lt;br /&gt;
Beispiel:&lt;br /&gt;
&amp;lt;pre class=&amp;quot;code&amp;quot;&amp;gt;&lt;br /&gt;
#include &amp;lt;avr/io.h&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
#define MEINBIT 2&lt;br /&gt;
...&lt;br /&gt;
PORTA |= (1 &amp;lt;&amp;lt; MEINBIT);    /* setzt Bit 2 an PortA auf 1 */&lt;br /&gt;
PORTA &amp;amp;= ~(1 &amp;lt;&amp;lt; MEINBIT);   /* loescht Bit 2 an PortA */&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Mit dieser Methode lassen sich auch mehrere Bits eines Registers gleichzeitig setzen und löschen.&lt;br /&gt;
&lt;br /&gt;
Beispiel:&lt;br /&gt;
&amp;lt;pre class=&amp;quot;code&amp;quot;&amp;gt;&lt;br /&gt;
#include &amp;lt;avr/io.h&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
DDRA &amp;amp;= ~( (1&amp;lt;&amp;lt;PA0) | (1&amp;lt;&amp;lt;PA3) );    /* PA0 und PA3 als Eingaenge */&lt;br /&gt;
PORTA |= (1&amp;lt;&amp;lt;PA0) | (1&amp;lt;&amp;lt;PA3);   /* Interne Pull-Up fuer beide einschalten */&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In Quellcodes, die für ältere Version den des avr-gcc/der avr-libc entwickelt wurden, werden einzelne Bits mittels der Funktionen sbi und cbi gesetzt bzw. gelöscht. Beide Funktionen sind in aktuellen Versionen der avr-libc nicht mehr enthalten und auch nicht mehr erforderlich.&lt;br /&gt;
&lt;br /&gt;
* siehe auch:&lt;br /&gt;
** [[Bitmanipulation]]&lt;br /&gt;
** [http://www.nongnu.org/avr-libc/user-manual/index.html Dokumentation der avr-libc] Abschnitt Modules/Special Function Registers&lt;br /&gt;
&lt;br /&gt;
=== Warten auf einen bestimmten Zustand ===&lt;br /&gt;
&lt;br /&gt;
Es gibt in der Bibliothek sogar Funktionen, die warten, bis ein bestimmter Zustand auf einem Bit erreicht ist. Es ist allerdings normalerweise eine eher unschöne Programmiertechnik, da in diesen Funktionen &amp;quot;blockierend gewartet&amp;quot; wird. D.h., der Programmablauf bleibt an dieser Stelle stehen, bis das maskierte Ereignis erfolgt ist. Setzt man den Watchdog ein, muss man darauf achten, dass dieser auch noch getriggert wird (zurücksetzen des Watchdogtimers). &lt;br /&gt;
&lt;br /&gt;
Die Funktion &#039;&#039;&#039;loop_until_bit_is_set&#039;&#039;&#039; wartet in einer Schleife, bis das definierte Bit gesetzt ist. Wenn das Bit beim Aufruf der Funktion bereits gesetzt ist, wird die Funktion sofort wieder verlassen. Das niederwertigste Bit hat die Bitnummer 0. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre class=&amp;quot;code&amp;quot;&amp;gt;&lt;br /&gt;
#include &amp;lt;avr/io.h&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
/* Warten bis Bit Nr. 2 (das dritte Bit) in Register PINA gesetzt (1) ist */&lt;br /&gt;
&lt;br /&gt;
#define WARTEPIN PINA&lt;br /&gt;
#define WARTEBIT 2&lt;br /&gt;
&lt;br /&gt;
// mit der avr-libc Funktion:&lt;br /&gt;
loop_until_bit_is_set(WARTEPIN, WARTEBIT);&lt;br /&gt;
&lt;br /&gt;
// dito in &amp;quot;C-Standard&amp;quot;:&lt;br /&gt;
// Durchlaufe (die leere) Schleife solange das WARTEBIT in Register WARTEPIN&lt;br /&gt;
// _nicht_ ungleich 0 (also 0) ist.&lt;br /&gt;
while ( !(WARTEPIN &amp;amp; (1 &amp;lt;&amp;lt; WARTEBIT)) ) ;&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die Funktion &#039;&#039;&#039;loop_until_bit_is_clear&#039;&#039;&#039; wartet in einer Schleife, bis das definierte Bit gelöscht ist. Wenn das Bit beim Aufruf der Funktion bereits gelöscht ist, wird die Funktion sofort wieder verlassen.&lt;br /&gt;
Das niederwertigste Bit hat die Bitnummer 0.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre class=&amp;quot;code&amp;quot;&amp;gt;&lt;br /&gt;
#include &amp;lt;avr/io.h&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
/* Warten bis Bit Nr. 4 (das fuenfte Bit) in Register PINB geloescht (0) ist */&lt;br /&gt;
#define WARTEPIN PINB&lt;br /&gt;
#define WARTEBIT 4&lt;br /&gt;
&lt;br /&gt;
// avr-libc-Funktion:&lt;br /&gt;
loop_until_bit_is_clear(WARTEPIN, WARTEBIT);&lt;br /&gt;
&lt;br /&gt;
// dito in &amp;quot;C-Standard&amp;quot;:&lt;br /&gt;
// Durchlaufe (die leere) Schleife solange das WARTEBIT in Register WARTEPIN&lt;br /&gt;
// gesetzt (1) ist &lt;br /&gt;
while ( WARTEPIN &amp;amp; (1&amp;lt;&amp;lt;WARTEBIT) ) ;&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Universeller und auch auf andere Plattformen besser übertragbar ist die Verwendung von C-Standardoperationen.&lt;br /&gt;
&lt;br /&gt;
siehe auch: &lt;br /&gt;
* [http://www.nongnu.org/avr-libc/user-manual/index.html Dokumentation der avr-libc] Abschnitt Modules/Special Function Registers&lt;br /&gt;
* [[Bitmanipulation]]&lt;br /&gt;
&lt;br /&gt;
= Zugriff auf Ports =&lt;br /&gt;
&lt;br /&gt;
Alle Ports der AVR-Controller werden über Register gesteuert. Dazu sind&lt;br /&gt;
jedem Port 3 Register zugeordnet:&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
|- &lt;br /&gt;
| &#039;&#039;&#039;DDRx&#039;&#039;&#039; &lt;br /&gt;
| Datenrichtungsregister für Port&#039;&#039;&#039;x&#039;&#039;&#039;. &lt;br /&gt;
&#039;&#039;&#039;x&#039;&#039;&#039; entspricht &#039;&#039;&#039;A&#039;&#039;&#039;, &#039;&#039;&#039;B&#039;&#039;&#039;, &#039;&#039;&#039; C&#039;&#039;&#039;, &#039;&#039;&#039;D&#039;&#039;&#039; usw. (abhängig von der Anzahl der Ports des verwendeten AVR). Bit im Register gesetzt (1) für Ausgang, Bit gelöscht (0) für Eingang.&lt;br /&gt;
|- &lt;br /&gt;
| &#039;&#039;&#039;PORTx&#039;&#039;&#039;&lt;br /&gt;
| Datenregister für Port&#039;&#039;&#039;x&#039;&#039;&#039;. &lt;br /&gt;
Dieses Register wird verwendet, um die Ausgänge eines Ports anzusteuern. Wird ein Port als Eingang geschaltet, so können mit diesem Register&lt;br /&gt;
die internen Pull-Up Widerstände aktiviert oder deaktiviert werden (1 = aktiv).&lt;br /&gt;
|- &lt;br /&gt;
| &#039;&#039;&#039;PINx&#039;&#039;&#039;&lt;br /&gt;
| Eingangadresse für Port&#039;&#039;&#039;x&#039;&#039;&#039;. &lt;br /&gt;
&amp;lt;!-- TODO: Erläuterung eher weiter unten nicht in der &amp;quot;Kurzzusammenfassung - Dies ist kein eigentliches Register, sondern definiert lediglich eine Adresse, in welcher der aktuelle Zustand der Eingangspins eines Ports vom&lt;br /&gt;
Controller abgelegt werden. Nichtsdestotrotz erfolgt der Zugriff auf den Zustand der Pins genau so, wie wenn &#039;&#039;&#039;PINx&#039;&#039;&#039; ein normales Register wäre. Die Adresse kann nur gelesen und nicht beschrieben werden.--&amp;gt;&lt;br /&gt;
Zustand des Ports. Die Bits in PINx entsprechen dem Zustand der Portspins. Bit gesetzt (1) wenn Pin &amp;quot;high/an&amp;quot;, Bit gelöscht (0) wenn Portpin &amp;quot;low/aus&amp;quot;.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Datenrichtung bestimmen ==&lt;br /&gt;
&lt;br /&gt;
Zuerst muss die Datenrichtung der verwendeten Pins bestimmt werden. Um dies zu erreichen, wird das Datenrichtungsregister des entsprechenden Ports beschrieben.&lt;br /&gt;
&lt;br /&gt;
Für jeden Pin, der als Ausgang verwendet werden soll, muss dabei das&lt;br /&gt;
entsprechende Bit auf dem Port gesetzt werden. Soll der Pin als Eingang&lt;br /&gt;
verwendet werden, muss das entsprechende Bit gelöscht sein.&lt;br /&gt;
&lt;br /&gt;
Wollen wir also beispielsweise Pin 0 bis 4 von Port B als Ausgänge&lt;br /&gt;
definieren so schreiben wir folgende Zeile:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre class=&amp;quot;code&amp;quot;&amp;gt;&lt;br /&gt;
#include &amp;lt;avr/io.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
// Setzen der Bits 0,1,2,3 und 4&lt;br /&gt;
// Binär 00011111 = Hexadezimal 1F&lt;br /&gt;
&lt;br /&gt;
DDRB = 0x1F;    /* direkte Zuweisung - unuebersichtlich */&lt;br /&gt;
&lt;br /&gt;
/* mehr Tipparbeit aber uebersichtlicher: */&lt;br /&gt;
DDRB = (1 &amp;lt;&amp;lt; DDB0) | (1 &amp;lt;&amp;lt; DDB1) | (1 &amp;lt;&amp;lt; DDB2) | (1 &amp;lt;&amp;lt; DDB3) | (1 &amp;lt;&amp;lt; DDB4); &lt;br /&gt;
...&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die Pins 5 bis 7 werden (da 0) als Eingänge geschaltet.&lt;br /&gt;
&lt;br /&gt;
=== Ganze Ports ===&lt;br /&gt;
&lt;br /&gt;
Um einen ganzen Port als Ausgang zu definieren, kann der folgende Befehl&lt;br /&gt;
verwendet werden:&lt;br /&gt;
&amp;lt;pre class=&amp;quot;code&amp;quot;&amp;gt;&lt;br /&gt;
DDRB = 0xff; &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Im Beispiel wird der Port B als Ganzes als Ausgang geschaltet. Dazu muss die Header-Datei avr/io.h eingebunden sein (darin wird u.a. DDRB definiert).&lt;br /&gt;
&lt;br /&gt;
== Vordefinierte Bitnummern für I/O-Register ==&lt;br /&gt;
&lt;br /&gt;
Die Bitnummern (z.B. PCx, PINCx und DDCx für den Port C) sind in den io*.h-Dateien der avr-libc definiert und dienen lediglich der besseren Lesbarkeit. Man muss diese Definitionen nicht verwenden oder kann auch einfach &amp;quot;immer&amp;quot; PAx, PBx, PCx usw. nutzen, auch wenn der Zugriff auf Bits in DDRx- oder PINx-Registern erfolgt. Für den Compiler sind die Ausdrücke (1&amp;lt;&amp;lt;PC7), (1&amp;lt;&amp;lt;DDC7) und (1&amp;lt;&amp;lt;PINC7) identisch: (1&amp;lt;&amp;lt;7). Ein Ausschnitt der Definitionen für Port C eines ATmega32 aus der iom32.h-Datei zur Verdeutlichung (analog für die weiteren Ports):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre class=&amp;quot;code&amp;quot;&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
/* PORTC */&lt;br /&gt;
#define PC7     7&lt;br /&gt;
#define PC6     6&lt;br /&gt;
#define PC5     5&lt;br /&gt;
#define PC4     4&lt;br /&gt;
#define PC3     3&lt;br /&gt;
#define PC2     2&lt;br /&gt;
#define PC1     1&lt;br /&gt;
#define PC0     0&lt;br /&gt;
&lt;br /&gt;
/* DDRC */&lt;br /&gt;
#define DDC7    7&lt;br /&gt;
#define DDC6    6&lt;br /&gt;
#define DDC5    5&lt;br /&gt;
#define DDC4    4&lt;br /&gt;
#define DDC3    3&lt;br /&gt;
#define DDC2    2&lt;br /&gt;
#define DDC1    1&lt;br /&gt;
#define DDC0    0&lt;br /&gt;
&lt;br /&gt;
/* PINC */&lt;br /&gt;
#define PINC7   7&lt;br /&gt;
#define PINC6   6&lt;br /&gt;
#define PINC5   5&lt;br /&gt;
#define PINC4   4&lt;br /&gt;
#define PINC3   3&lt;br /&gt;
#define PINC2   2&lt;br /&gt;
#define PINC1   1&lt;br /&gt;
#define PINC0   0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Digitale Signale ==&lt;br /&gt;
&lt;br /&gt;
Am einfachsten ist es, digitale Signale mit dem Mikrocontroller zu erfassen bzw. auszugeben.&lt;br /&gt;
&lt;br /&gt;
== Ausgänge ==&lt;br /&gt;
Will man als Ausgang definierte Pins (entsprechende xDDR-Bits 1) auf Logisch 1 setzen, setzt man die  entsprechenden Bits im Portregister.&lt;br /&gt;
&lt;br /&gt;
Mit dem Befehl&lt;br /&gt;
&amp;lt;pre class=&amp;quot;code&amp;quot;&amp;gt;&lt;br /&gt;
#inlude &amp;lt;avr/io.h&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
PORTB=0x04; /* besser PORTB=(1&amp;lt;&amp;lt;PB2) */&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
wird also der Ausgang an Pin PB2 gesetzt (Beachte, dass die Bits immer &#039;&#039;von 0 an&#039;&#039; gezählt werden, das niederwertigste Bit ist also Bit Nummer 0 und nicht etwa Bit Nummer 1).&lt;br /&gt;
&lt;br /&gt;
Man beachte, dass bei der Zuweisung mittels &#039;&#039;&#039;=&#039;&#039;&#039; immer alle Pins gleichzeitig angegeben werden. Man sollte also zuerst den aktuellen Wert des Ports einlesen und das Bit des gewünschten Ports in diesen Wert einfließen lassen. Will man also nur den dritten Pin (Bit Nr. 2) an Port B auf &amp;quot;high&amp;quot; setzen und den Status der anderen Ausgänge unverändert lassen, nutze man diese Form:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre class=&amp;quot;code&amp;quot;&amp;gt;&lt;br /&gt;
#include &amp;lt;avr/io.h&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
PORTB = PORTB | 0x04; /* besser: PORTB = PORTB | ( 1&amp;lt;&amp;lt;PB2 ) */&lt;br /&gt;
/* vereinfacht durch Nutzung des |= Operators : */&lt;br /&gt;
PORTB |= (1&amp;lt;&amp;lt;PB2);&lt;br /&gt;
&lt;br /&gt;
/* auch mehrere &amp;quot;gleichzeitig&amp;quot;: */&lt;br /&gt;
PORTB |= (1&amp;lt;&amp;lt;PB4)|(1&amp;lt;&amp;lt;PB5); /* Pins PB4 und PB5 &amp;quot;high&amp;quot; */&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;quot;Ausschalten&amp;quot;, also  Ausgänge auf &amp;quot;low&amp;quot; setzen, erfolgt analog:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre class=&amp;quot;code&amp;quot;&amp;gt;&lt;br /&gt;
#include &amp;lt;avr/io.h&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
PORTB &amp;amp;= ~(1&amp;lt;&amp;lt;PB2); /* löscht Bit 2 in PORTB und setzt damit Pin PB2 auf low */ &lt;br /&gt;
PORTB &amp;amp;= ~((1&amp;lt;&amp;lt;PB4)|(1&amp;lt;&amp;lt;PB5)); /* Pin PB4 und Pin PB5 &amp;quot;low&amp;quot; */&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In Quellcodes, die für ältere Version den des avr-gcc/der avr-libc entwickelt wurden, werden einzelne Bits mittels der Funktionen sbi und cbi gesetzt bzw. gelöscht. Beide Funktionen sind in aktuellen Versionen der avr-libc nicht mehr enthalten und auch nicht mehr erforderlich.&lt;br /&gt;
&lt;br /&gt;
== Eingänge (Wie kommen Signale in den &amp;amp;micro;C) ==&lt;br /&gt;
&lt;br /&gt;
Die digitalen Eingangssignale können auf verschiedene Arten zu unserer Logik gelangen.&lt;br /&gt;
&lt;br /&gt;
=== Signalkopplung ===&lt;br /&gt;
&lt;br /&gt;
Am einfachsten ist es, wenn die Signale direkt aus einer anderen digitalen Schaltung übernommen werden können. Hat der Ausgang der entsprechenden Schaltung TTL-Pegel dann können wir sogar direkt den Ausgang der Schaltung mit einem Eingangspin von unserem Controller verbinden.&lt;br /&gt;
&lt;br /&gt;
Hat der Ausgang der anderen Schaltung keinen TTL-Pegel so müssen wir den Pegel über entsprechende Hardware (z.B. Optokoppler, Spannungsteiler &amp;quot;Levelshifter&amp;quot;) anpassen.&lt;br /&gt;
&lt;br /&gt;
Die Masse der beiden Schaltungen muss selbstverständlich miteinander verbunden werden. Der Software selber ist es natürlich letztendlich egal, wie das Signal eingespeist wird. Wir können ja ohnehin lediglich prüfen, ob an einem Pin unseres Controllers eine logische 1 (Vcc) oder eine logische 0 (Masse) anliegt.&lt;br /&gt;
&lt;br /&gt;
Die Abfrage der Zustände der Portpins erfolgt direkt über den Registernamen.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;font color=&amp;quot;#FF0000&amp;quot;&amp;gt;Dabei ist wichtig, zur Abfrage der Eingänge &#039;&#039;&#039;nicht&#039;&#039;&#039; etwa Portregister &#039;&#039;&#039;PORTx&#039;&#039;&#039; zu verwenden, &#039;&#039;&#039;sondern&#039;&#039;&#039; Eingangsregister &#039;&#039;&#039;PINx&#039;&#039;&#039;. Die Abfrage der Pinzustände über PORTx statt PINx ist ein häufiger Fehler beim AVR-&amp;quot;Erstkontakt&amp;quot;.&amp;lt;/font&amp;gt; (Ansonsten liest man nicht den Zustand der Eingänge sondern der Status der internen Pull-Up-Widerstände.)&lt;br /&gt;
&lt;br /&gt;
Will man also die aktuellen Signalzustände von Port D abfragen und in eine Variable namens bPortD abspeichern, so schreibt man folgende Befehlszeilen:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre class=&amp;quot;code&amp;quot;&amp;gt;&lt;br /&gt;
#include &amp;lt;avr/io.h&amp;gt;&lt;br /&gt;
#include &amp;lt;stdint.h&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
uint8_t bPortD;&lt;br /&gt;
...&lt;br /&gt;
bPortD = PIND;&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Mit den C-Bitoperationen kann man den Status der Bits abfragen.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre class=&amp;quot;code&amp;quot;&amp;gt;&lt;br /&gt;
#include &amp;lt;avr/io.h&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
/* Fuehre Aktion aus, wenn Bit Nr. 1 (das &amp;quot;zweite&amp;quot; Bit) in PINC gesetzt (1) ist */&lt;br /&gt;
if ( PINC &amp;amp; (1&amp;lt;&amp;lt;PINC1) ) {&lt;br /&gt;
  /* Aktion */&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Fuehre Aktion aus, wenn Bit Nr. 2 (das dritte Bit) in PINB geloescht (0) ist */&lt;br /&gt;
if ( !(PINB &amp;amp; (1&amp;lt;&amp;lt;PINC2)) ) {&lt;br /&gt;
  /* Aktion */&lt;br /&gt;
}&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Tasten und Schalter ===&lt;br /&gt;
&lt;br /&gt;
Der Anschluss mechanischer Kontakte an den Mikrocontroller gestaltet sich ebenfalls ganz einfach, wobei wir zwei unterschiedliche Methoden unterscheiden müssen (&#039;&#039;Active Low&#039;&#039; und &#039;&#039;Active High&#039;&#039;):&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
|- &lt;br /&gt;
| &#039;&#039;&#039;Active Low&#039;&#039;&#039;&lt;br /&gt;
| &#039;&#039;&#039;Active High&#039;&#039;&#039;&lt;br /&gt;
|- &lt;br /&gt;
| [[Image:Active Low.gif]]&lt;br /&gt;
| [[Image:Active High.gif]]&lt;br /&gt;
|- &lt;br /&gt;
| Bei dieser Methode wird der Kontakt zwischen den Eingangspin des Controllers und Masse geschaltet.&lt;br /&gt;
&lt;br /&gt;
Damit bei offenem Schalter der Controller kein undefiniertes Signal bekommt wird zwischen die Versorgungsspannung und den Eingangspin ein sogenannter Pull-Up Widerstand geschaltet. Dieser dient dazu, den Pegel bei geöffnetem Schalter auf logisch 1 zu ziehen.&lt;br /&gt;
&lt;br /&gt;
Der Widerstandswert des Pull-Up Widerstands ist an sich nicht kritisch. Es muss jedoch beachtet werden, dass über den Widerstand ein Strom in den Eingang fliesst, also sollte er nicht zu klein gewählt werden um den Controller nicht zu zerstören. Wird er allerdings zu hoch gewählt ist die Wirkung eventuell nicht gegeben. Als üblicher Wert haben sich 10 Kiloohm eingebürgert.&lt;br /&gt;
&lt;br /&gt;
Die AVRs haben sogar an den meisten Pins softwaremässig zuschaltbare interne Pull-Up Widerstände, welche wir natürlich auch verwenden können.&lt;br /&gt;
&lt;br /&gt;
| Hier wird der Kontakt zwischen die Versorgungsspannung und Masse geschaltet.&lt;br /&gt;
&lt;br /&gt;
Damit bei offener Schalterstellung kein undefiniertes Signal am Controller ansteht, wird zwischen den Eingangspin und die Masse ein Pull-Down Widerstand geschaltet. Dieser dient dazu, den Pegel bei geöffneter Schalterstellung auf logisch 0 zu halten.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Pull-Up Widerstände aktivieren ====&lt;br /&gt;
&lt;br /&gt;
Die internen Pull-Up Widerstände von Vcc zu den einzelnen Portpins werden über das Register &#039;&#039;&#039; PORTx&#039;&#039;&#039; aktiviert bzw. deaktiviert, wenn ein Pin als &#039;&#039;&#039; Eingang&#039;&#039;&#039; geschaltet ist.&lt;br /&gt;
&lt;br /&gt;
Wird der Wert des entsprechenden Portpins auf 1 gesetzt so ist der Pull-Up Widerstand aktiviert. Bei einem Wert von 0 ist der Pull-Up Widerstand nicht aktiv. Man sollte jeweils entweder den internen oder einen externen Pull-Up Widerstand verwenden, aber nicht beide zusammen.&lt;br /&gt;
&lt;br /&gt;
Im Beispiel werden alle Pins des Ports D als Eingänge geschaltet und alle Pull-Up Widerstände aktiviert. Weiterhin wird Pin PC7 als Eingang geschaltet und dessen interner Pull-Up Widerstand aktiviert, ohne die Einstellungen für die anderen Portpins (PC0-PC6) zu verändern.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre class=&amp;quot;code&amp;quot;&amp;gt;&lt;br /&gt;
#include &amp;lt;avr/io.h&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
DDRD  = 0x00; /* alle Pins von Port D als Eingang */&lt;br /&gt;
PORTD = 0xff: /* interne Pull-Ups an allen Port-Pins aktivieren */&lt;br /&gt;
...&lt;br /&gt;
DDRC  &amp;amp;= ~(1&amp;lt;&amp;lt;DDC7);  /* Pin PC7 als Eingang */&lt;br /&gt;
PORTC |= (1&amp;lt;&amp;lt;PC7);    /* internen Pull-Up an PC7 aktivieren */&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== (Tasten-)Entprellung ====&lt;br /&gt;
&lt;br /&gt;
Nun haben alle mechanischen Kontakte, sei es von Schaltern, Tastern oder auch von Relais, die unangenehme Eigenschaft zu prellen. Dies bedeutet, dass beim Schliessen des Kontaktes derselbe nicht direkt Kontakt herstellt, sondern mehrfach ein- und ausschaltet bis zum endgültigen Herstellen des Kontaktes.&lt;br /&gt;
&lt;br /&gt;
Soll nun mit einem schnellen Mikrocontroller gezählt werden, wie oft ein solcher Kontakt geschaltet wird, dann haben wir ein Problem, weil das Prellen als mehrfache Impulse gezählt wird. Diesem Phänomen muss beim Schreiben des Programms unbedingt Rechnung getragen werden.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre class=&amp;quot;code&amp;quot;&amp;gt;&lt;br /&gt;
#include &amp;lt;avr/io.h&amp;gt;&lt;br /&gt;
#include &amp;lt;inttypes.h&amp;gt;&lt;br /&gt;
#ifndef F_CPU&lt;br /&gt;
#define F_CPU 3686400UL     /* Quarz mit 3.6864 Mhz  */&lt;br /&gt;
#endif&lt;br /&gt;
#include &amp;lt;avr/delay.h&amp;gt;      /* definiert _delay_ms() ab avr-libc Version 1.2.0 */&lt;br /&gt;
&lt;br /&gt;
/* Einfache Funktion zum Entprellen eines Tasters */&lt;br /&gt;
inline uint8_t debounce(volatile uint8_t *port, uint8_t pin)&lt;br /&gt;
{&lt;br /&gt;
        if ( ! (*port &amp;amp; (1 &amp;lt;&amp;lt; pin)) )&lt;br /&gt;
        {&lt;br /&gt;
                /* Pin wurde auf Masse gezogen, 100ms warten   */&lt;br /&gt;
                _delay_ms(100);&lt;br /&gt;
                if ( ! (*port &amp;amp; (1 &amp;lt;&amp;lt; pin)) )&lt;br /&gt;
                {&lt;br /&gt;
                        /* Anwender Zeit zum Loslassen des Tasters geben */&lt;br /&gt;
                        _delay_ms(100);&lt;br /&gt;
                        return 1;&lt;br /&gt;
                }&lt;br /&gt;
        }&lt;br /&gt;
        return 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
int main(void)&lt;br /&gt;
{&lt;br /&gt;
        DDRB &amp;amp;= ~( 1 &amp;lt;&amp;lt; PB0 )                 /* PIN PB0 auf Eingang (Taster)            */&lt;br /&gt;
        PORTB |= ( 1 &amp;lt;&amp;lt; PB0 )                 /* Pullup-Widerstand aktivieren            */&lt;br /&gt;
        ...&lt;br /&gt;
        if (debounce(&amp;amp;PINB, PB0))             /* Falls Taster an PIN PB0 gedrueckt..    */&lt;br /&gt;
                PORTD = PIND ^ ( 1 &amp;lt;&amp;lt; PD7 );  /* ..LED an Port PD7 an-&lt;br /&gt;
                                   bzw. ausschalten */&lt;br /&gt;
        ...&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Bei diesem Beispiel ist zu beachten, dass der AVR im Falle eines Tastendrucks 200ms wartet, also brach liegt. Zeitkritische Anwendungen sollten ein anderes Verfahren w&amp;amp;auml;hlen.&lt;br /&gt;
&lt;br /&gt;
Zum Thema Entprellen siehe auch:&lt;br /&gt;
* Artikel [[Entprellung]]&lt;br /&gt;
&lt;br /&gt;
== Analog ==&lt;br /&gt;
&lt;br /&gt;
Die Verarbeitung von analogen Eingangswerten und die Ausgabe von Analogwerten wird in Kapitel [[AVR-GCC-Tutorial#Analoge_Ein-_und_Ausgabe|Analoge Ein- und Ausgabe]] behandelt.&lt;br /&gt;
&lt;br /&gt;
== 16-Bit Portregister (ADC, ICR1, OCR1, TCNT1, UBRR) ==&lt;br /&gt;
&lt;br /&gt;
Einige der Portregister in den AVR-Controllern sind 16 Bit breit. Im Datenblatt sind diese Register üblicherweise mit dem Suffix &amp;quot;L&amp;quot; (LSB) und &amp;quot;H&amp;quot; (MSB) versehen. Die avr-libc definiert zusätzlich die meisten dieser Variablen die Bezeichnung ohne &amp;quot;L&amp;quot; oder &amp;quot;H&amp;quot;. Auf diese kann direkt zugewiesen bzw. zugegriffen werden. Die Konvertierung von 16-bit Wort nach 2*8-bit Byte erfolgt intern.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre class=&amp;quot;code&amp;quot;&amp;gt;&lt;br /&gt;
#include &amp;lt;avr/io.h&amp;gt;&lt;br /&gt;
#include &amp;lt;stdint.h&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
uint16_t foo;&lt;br /&gt;
&lt;br /&gt;
foo=ADC; /* setzt die Wort-Variable foo auf den Wert der letzten AD-Wandlung */&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Falls ben&amp;amp;ouml;tigt, kann eine 16-Bit Variable auch recht einfach manuell in ihre zwei 8-Bit Bestandteile zerlegt werden. Folgendes Beispiel demonstriert dies anhand des pseudo- 16-Bit Registers UBRR.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre class=&amp;quot;code&amp;quot;&amp;gt;&lt;br /&gt;
#include &amp;lt;avr/io.h&amp;gt;&lt;br /&gt;
#include &amp;lt;stdint.h&amp;gt;&lt;br /&gt;
#ifndef F_CPU&lt;br /&gt;
#define F_CPU 3686400&lt;br /&gt;
#endif&lt;br /&gt;
#define UART_BAUD_RATE 9600&lt;br /&gt;
&lt;br /&gt;
typedef union {&lt;br /&gt;
        uint16_t i16;&lt;br /&gt;
        struct {&lt;br /&gt;
                uint8_t i8l;&lt;br /&gt;
                uint8_t i8h;&lt;br /&gt;
        };&lt;br /&gt;
} convert16to8;&lt;br /&gt;
&lt;br /&gt;
...&lt;br /&gt;
convert16to8 baud;&lt;br /&gt;
baud.i16 = F_CPU / (UART_BAUD_RATE * 16L) -1;&lt;br /&gt;
UBRRH = baud.i8h;&lt;br /&gt;
UBRRL = baud.i8l;&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
/*alternativ:*/&lt;br /&gt;
#include &amp;lt;inttypes.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
uint16_t wFoo16;&lt;br /&gt;
uint8_t bFooLow, bFooHigh;&lt;br /&gt;
&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
wFoo16   = 0xAA55;                 /* zu &amp;quot;zerlegende&amp;quot; 16Bit-Integer */&lt;br /&gt;
bFooLow  = (uint8_t)(wFoo16);      /* LS-Byte */&lt;br /&gt;
bFooHigh = (uint8_t)(wFoo16 &amp;gt;&amp;gt; 8); /* MS-Byte */&lt;br /&gt;
&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Bei einigen AVR-Typen (z.B. ATmega8) teilen sich UBRRH und UCSRC die gleiche Memory-Adresse. Damit der AVR trotzdem zwischen den beiden Registern unterscheiden kann, bestimmt das Bit7 (URSEL) welches Register tats&amp;amp;auml;chlich beschrieben werden soll. &#039;&#039;1000 0011&#039;&#039; (0x83) adressiert demnach UCSRC und &amp;amp;uuml;bergibt den Wert &#039;&#039;3&#039;&#039; und &#039;&#039;0000 0011&#039;&#039; (0x3) adressiert UBRRH und &amp;amp;uuml;bergibt ebenfalls den Wert &#039;&#039;3&#039;&#039;. &lt;br /&gt;
&lt;br /&gt;
Im Umgang mit 16-Bit Registern siehe auch:&lt;br /&gt;
* [http://www.nongnu.org/avr-libc/user-manual/index.html Dokumentation der avr-libc] Abschnitt Related Pages/Frequently Asked Questions/Nr. 8&lt;br /&gt;
&lt;br /&gt;
= Der UART =&lt;br /&gt;
&lt;br /&gt;
== Allgemeines zum UART ==&lt;br /&gt;
&lt;br /&gt;
Über den UART kann ein AVR leicht mit einer RS232-Schnittstelle eines PC oder sonstiger Geräte mit &amp;quot;serieller Schnittstelle&amp;quot; verbunden werden. &lt;br /&gt;
&lt;br /&gt;
Mögliche Anwendungen des UART:&lt;br /&gt;
&lt;br /&gt;
* Debug-Schnittstelle: z.B. zur Anzeige von Zwischenergebnissen (&amp;quot;printf-debugging&amp;quot; - hier besser &amp;quot;UART-debugging&amp;quot;) auf einem PC. Auf dem Rechner reicht dazu eine Terminal-Software (MS-Windows: Hyperterm oder besser Bray-Terminal). Ein direkter Anschluss ist aufgrund unterschiedlicher Pegel nicht möglich, jedoch sind entsprechende Schnittstellen-ICs wie z.B. ein MAX232 günstig und leicht zu integrieren. Rechner ohne serielle Schnittstelle können über fertige USB-seriell-Adapter angeschlossen werden. &lt;br /&gt;
* &amp;quot;Mensch-Maschine Schnittstelle&amp;quot;: z.B. Konfiguration und Statusabfrage über eine &amp;quot;Kommandozeile&amp;quot; oder Menüs&lt;br /&gt;
* Übertragen von gespeicherten Werten: z.B. bei einem Datenlogger&lt;br /&gt;
* Anschluss von Geräten mit serieller Schnittstelle (z.B. (Funk-)Modems, Mobiltelefone, Drucker, Sensoren, &amp;quot;intelligente&amp;quot; LC-Displays). &lt;br /&gt;
* &amp;quot;Feldbusse&amp;quot; auf RS485/RS422-Basis mittels entsprechenden Bustreiberbausteinen (z.B. MAX485)&lt;br /&gt;
* DMX, Midi etc.&lt;br /&gt;
&lt;br /&gt;
Einige AVR-Controller haben ein bis zwei vollduplexfähigen UART (&#039;&#039;&#039;U&#039;&#039;&#039;niversal &#039;&#039;&#039;A&#039;&#039;&#039;synchronous &#039;&#039;&#039;R&#039;&#039;&#039;eceiver and &#039;&#039;&#039;T&#039;&#039;&#039;ransmitter) schon eingebaut (&amp;quot;Hardware-UART&amp;quot;). &lt;br /&gt;
Übrigens: Vollduplex heisst nichts anderes, als dass der Baustein gleichzeitig senden und empfangen kann.&lt;br /&gt;
&lt;br /&gt;
Neuere AVRs (ATmega) verfügen über einen oder zwei U&#039;&#039;&#039;S&#039;&#039;&#039;ART(s), dieser unterschiedet sich vom UART hauptsächlich durch interne FIFO-Puffer für Ein- und Ausgabe und erweiterte Konfigurationsmöglichkeiten. Die Puffergröße ist allerdings nur 1 Byte.&lt;br /&gt;
&lt;br /&gt;
Der UART wird über vier separate Register angesprochen. USARTs der ATMEGAs verfügen über mehrere zusätzliche Konfigurationsregsiter. Das Datenblatt gibt darüber Auskunft. Die Folgende Tabelle gibt nur die Register für die (veralteten) UARTs wieder.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
|- &lt;br /&gt;
| &#039;&#039;&#039;UCR&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&#039;&#039;&#039;&lt;br /&gt;
| &#039;&#039;&#039;U&#039;&#039;&#039;ART &#039;&#039;&#039;C&#039;&#039;&#039;ontrol &#039;&#039;&#039;R&#039;&#039;&#039;egister.&amp;lt;br /&amp;gt;&lt;br /&gt;
In diesem Register stellen wir ein, wie wir den UART verwenden möchten.&amp;lt;br /&amp;gt;&lt;br /&gt;
Das Register ist wie folgt aufgebaut:&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
|- &lt;br /&gt;
| &#039;&#039;&#039;Bit&#039;&#039;&#039;&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 7&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 6&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 5&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 4&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 3&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 2&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 1&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 0&lt;br /&gt;
|- &lt;br /&gt;
| &#039;&#039;&#039;Name&#039;&#039;&#039;&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | &#039;&#039;&#039;RXCIE&#039;&#039;&#039;&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | &#039;&#039;&#039;TXCIE&#039;&#039;&#039;&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | &#039;&#039;&#039;UDRIE&#039;&#039;&#039;&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | &#039;&#039;&#039;RXEN&#039;&#039;&#039;&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | &#039;&#039;&#039;TXEN&#039;&#039;&#039;&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | &#039;&#039;&#039;CHR9&#039;&#039;&#039;&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | &#039;&#039;&#039;RXB8&#039;&#039;&#039;&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | &#039;&#039;&#039;TXB8&#039;&#039;&#039;&lt;br /&gt;
|- &lt;br /&gt;
| &#039;&#039;&#039;R/W&#039;&#039;&#039;&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | R/W&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | R/W&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | R/W&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | R/W&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | R/W&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | R/W&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | R&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | W&lt;br /&gt;
|- &lt;br /&gt;
| &#039;&#039;&#039;Initialwert&#039;&#039;&#039;&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 0&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 0&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 0&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 0&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 0&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 0&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 1&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 0&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;RXCIE&#039;&#039;&#039; (&#039;&#039;&#039;RX&#039;&#039;&#039; &#039;&#039;&#039;C&#039;&#039;&#039;omplete &#039;&#039;&#039;I&#039;&#039;&#039;nterrupt &#039;&#039;&#039;E&#039;&#039;&#039;nable)&lt;br /&gt;
:Wenn dieses Bit gesetzt ist, wird ein UART RX Complete Interrupt ausgelöst, wenn ein Zeichen vom UART empfangen wurde. Das Global Enable Interrupt Flag muss selbstverständlich auch gesetzt sein.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;TXCIE&#039;&#039;&#039; (&#039;&#039;&#039;TX&#039;&#039;&#039; &#039;&#039;&#039;C&#039;&#039;&#039;omplete &#039;&#039;&#039;I&#039;&#039;&#039;nterrupt &#039;&#039;&#039;E&#039;&#039;&#039;nable)&lt;br /&gt;
:Wenn dieses Bit gesetzt ist, wird ein UART TX Complete Interrupt ausgelöst, wenn ein Zeichen vom UART gesendet wurde. Das Global Enable Interrupt Flag muss selbstverständlich auch gesetzt sein.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;UDRIE&#039;&#039;&#039; (&#039;&#039;&#039;U&#039;&#039;&#039;ART &#039;&#039;&#039;D&#039;&#039;&#039;ata &#039;&#039;&#039;R&#039;&#039;&#039;egister &#039;&#039;&#039;E&#039;&#039;&#039;mpty &#039;&#039;&#039;I&#039;&#039;&#039;nterrupt &#039;&#039;&#039;E&#039;&#039;&#039;nable)&lt;br /&gt;
:Wenn dieses Bit gesetzt ist, wird ein UART Datenregister Leer Interrupt ausgelöst, wenn der UART wieder bereit ist um ein neues zu sendendes Zeichen zu übernehmen. Das Global Enable Interrupt Flag muss selbstverständlich auch gesetzt sein.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;RXEN&#039;&#039;&#039; (&#039;&#039;&#039;R&#039;&#039;&#039;eceiver &#039;&#039;&#039;E&#039;&#039;&#039;nable)&lt;br /&gt;
:Nur wenn dieses Bit gesetzt ist, arbeitet der Empfänger des UART überhaupt. Wenn das Bit nicht gesetzt ist, kann der entsprechende Pin des AVR als normaler I/O-Pin verwendet werden. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;TXEN&#039;&#039;&#039; (&#039;&#039;&#039;T&#039;&#039;&#039;ransmitter &#039;&#039;&#039;E&#039;&#039;&#039;nable)&lt;br /&gt;
:Nur wenn dieses Bit gesetzt ist, arbeitet der Sender des UART überhaupt. Wenn das Bit nicht gesetzt ist, kann der entsprechende Pin des AVR als normaler I/O-Pin verwendet werden.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;CHR9&#039;&#039;&#039; (9 Bit Characters)&lt;br /&gt;
:Wenn dieses Bit gesetzt ist, können 9 Bit lange Zeichen übertragen und empfangen werden. Das 9. Bit kann bei Bedarf als zusätzliches Stopbit oder als Paritätsbit verwendet werden. Man spricht dann von einem 11-Bit Zeichenrahmen:&lt;br /&gt;
:1 Startbit + 8 Datenbits + 1 Stopbit + 1 Paritätsbit = 11 Bits&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;RXB8&#039;&#039;&#039; (Receive Data Bit 8)&lt;br /&gt;
:Wenn das vorher erwähnte CHR9-Bit gesetzt ist, dann enthält dieses Bit das 9. Datenbit eines empfangenen Zeichens.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;TXB8&#039;&#039;&#039; (Transmit Data Bit 8)&lt;br /&gt;
:Wenn das vorher erwähnte CHR9-Bit gesetzt ist, dann muss in dieses Bit das 9. Bit des zu sendenden Zeichens eingeschrieben werden bevor das eigentliche Datenbyte in das Datenregister geschrieben wird.&lt;br /&gt;
&lt;br /&gt;
|- &lt;br /&gt;
| &#039;&#039;&#039;USR&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&#039;&#039;&#039;&lt;br /&gt;
| &#039;&#039;&#039;U&#039;&#039;&#039;ART &#039;&#039;&#039;S&#039;&#039;&#039;tatus &#039;&#039;&#039;R&#039;&#039;&#039;egister.&amp;lt;br /&amp;gt;&lt;br /&gt;
Hier teilt uns der UART mit, was er gerade so macht.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
|- &lt;br /&gt;
| &#039;&#039;&#039;Bit&#039;&#039;&#039;&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 7&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 6&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 5&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 4&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 3&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 2&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 1&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 0&lt;br /&gt;
|- &lt;br /&gt;
| &#039;&#039;&#039;Name&#039;&#039;&#039;&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | &#039;&#039;&#039;RXC&#039;&#039;&#039;&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | &#039;&#039;&#039;TXC&#039;&#039;&#039;&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | &#039;&#039;&#039;UDRE&#039;&#039;&#039;&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | &#039;&#039;&#039;FE&#039;&#039;&#039;&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | &#039;&#039;&#039;OR&#039;&#039;&#039;&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | &#039;&#039;&#039;-&#039;&#039;&#039;&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | &#039;&#039;&#039;-&#039;&#039;&#039;&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | &#039;&#039;&#039;-&#039;&#039;&#039;&lt;br /&gt;
|- &lt;br /&gt;
| &#039;&#039;&#039;R/W&#039;&#039;&#039;&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | R&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | R/W&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | R&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | R&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | R&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | R&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | R&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | R&lt;br /&gt;
|- &lt;br /&gt;
| &#039;&#039;&#039;Initialwert&#039;&#039;&#039;&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 0&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 0&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 1&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 0&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 0&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 0&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 0&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 0&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;RXC&#039;&#039;&#039; (UART Receive Complete)&lt;br /&gt;
:Dieses Bit wird vom AVR gesetzt, wenn ein empfangenes Zeichen vom Empfangs-Schieberegister in das Empfangs-Datenregister transferiert wurde.&lt;br /&gt;
:Das Zeichen muss nun schnellstmöglich aus dem Datenregister ausgelesen werden. Falls dies nicht erfolgt bevor ein weiteres Zeichen komplett empfangen wurde wird eine Überlauf-Fehlersituation eintreffen. Mit dem Auslesen des Datenregisters wird das Bit automatisch gelöscht.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;TXC&#039;&#039;&#039; (UART Transmit Complete)&lt;br /&gt;
:Dieses Bit wird vom AVR gesetzt, wenn das im Sende-Schieberegister befindliche Zeichen vollständig ausgegeben wurde und kein weiteres Zeichen im Sendedatenregister ansteht. Dies bedeutet also, wenn die Kommunikation vollumfänglich abgeschlossen ist.&lt;br /&gt;
:Dieses Bit ist wichtig bei Halbduplex-Verbindungen, wenn das Programm nach dem Senden von Daten auf Empfang schalten muss. Im Vollduplexbetrieb brauchen wir dieses Bit nicht zu beachten.&lt;br /&gt;
:Das Bit wird nur dann automatisch gelöscht, wenn der entsprechende Interrupthandler aufgerufen wird, ansonsten müssen wir das Bit selber löschen.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;UDRE&#039;&#039;&#039; (&#039;&#039;&#039;U&#039;&#039;&#039;ART &#039;&#039;&#039;D&#039;&#039;&#039;ata &#039;&#039;&#039;R&#039;&#039;&#039;egister &#039;&#039;&#039;E&#039;&#039;&#039;mpty)&lt;br /&gt;
:Dieses Bit wird vom AVR gesetzt, wenn ein Zeichen vom Sendedatenregister in das Send-Schieberegister übernommen wurde und der UART nun wieder bereit ist, ein neues Zeichen zum Senden aufzunehmen.&lt;br /&gt;
:Das Bit wird automatisch gelöscht, wenn ein Zeichen in das Sendedatenregister geschrieben wird.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;FE&#039;&#039;&#039; (&#039;&#039;&#039;F&#039;&#039;&#039;raming &#039;&#039;&#039;E&#039;&#039;&#039;rror)&lt;br /&gt;
:Dieses Bit wird vom AVR gesetzt, wenn der UART einen Zeichenrahmenfehler detektiert, d.h. wenn das Stopbit eines empfangenen Zeichens 0 ist.&lt;br /&gt;
:Das Bit wird automatisch gelöscht, wenn das Stopbit des empfangenen Zeichens 1 ist.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;OR&#039;&#039;&#039; (&#039;&#039;&#039;O&#039;&#039;&#039;ver&#039;&#039;&#039;R&#039;&#039;&#039;un)&amp;lt;br /&amp;gt;&lt;br /&gt;
:Dieses Bit wird vom AVR gesetzt, wenn unser Programm das im Empfangsdatenregister bereit liegende Zeichen nicht abholt bevor das nachfolgende Zeichen komplett empfangen wurde.&lt;br /&gt;
:Das nachfolgende Zeichen wird verworfen.&lt;br /&gt;
:Das Bit wird automatisch gelöscht, wenn das empfangene Zeichen in das Empfangsdatenregister transferiert werden konnte.&lt;br /&gt;
&lt;br /&gt;
|- &lt;br /&gt;
| &#039;&#039;&#039;UDR&#039;&#039;&#039;&lt;br /&gt;
| &#039;&#039;&#039;U&#039;&#039;&#039;ART &#039;&#039;&#039;D&#039;&#039;&#039;ata &#039;&#039;&#039;R&#039;&#039;&#039;egister.&amp;lt;br /&amp;gt;&lt;br /&gt;
Hier werden Daten zwischen UART und CPU übertragen. Da der UART im&lt;br /&gt;
Vollduplexbetrieb gleichzeitig empfangen und senden kann, handelt es sich&lt;br /&gt;
hier physikalisch um 2 Register, die aber über die gleiche I/O-Adresse&lt;br /&gt;
angesprochen werden. Je nachdem, ob ein Lese- oder ein Schreibzugriff auf&lt;br /&gt;
den UART erfolgt wird automatisch das richtige UDR angesprochen.&lt;br /&gt;
|- &lt;br /&gt;
| &#039;&#039;&#039;UBRR&#039;&#039;&#039;&lt;br /&gt;
| &#039;&#039;&#039;U&#039;&#039;&#039;ART &#039;&#039;&#039;B&#039;&#039;&#039;aud &#039;&#039;&#039;R&#039;&#039;&#039;ate &#039;&#039;&#039;R&#039;&#039;&#039;egister.&amp;lt;br /&amp;gt;&lt;br /&gt;
In diesem Register müssen wir dem UART mitteilen, wie schnell wir gerne&lt;br /&gt;
kommunizieren möchten. Der Wert, der in dieses Register geschrieben&lt;br /&gt;
werden muss, errechnet sich nach folgender Formel:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
\begin{matrix}&lt;br /&gt;
UBRR = \frac{Taktfrequenz}{Baudrate * 16} - 1&lt;br /&gt;
\end{matrix}&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Es sind Baudraten bis zu 115200 Baud und höher möglich.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Die Hardware ==&lt;br /&gt;
&lt;br /&gt;
Der UART basiert auf normalem TTL-Pegel mit 0V (LOW) und 5V (HIGH). Die&lt;br /&gt;
Schnittstellenspezifikation für RS232 definiert jedoch -3V ... -12V (LOW) und&lt;br /&gt;
+3 ... +12V (HIGH). Zudem muss der Signalaustausch zwischen AVR und&lt;br /&gt;
Partnergerät invertiert werden. Für die Anpassung der Pegel und das&lt;br /&gt;
Invertieren der Signale gibt es fertige Schnittstellenbausteine. Der bekannteste&lt;br /&gt;
davon ist wohl der MAX232. &lt;br /&gt;
&amp;lt;!-- &amp;quot;Hackerloesung&amp;quot; auskommentiert - nicht so gut in einem &amp;quot;Einsteiger-Tutorial&amp;quot; - mthomas&lt;br /&gt;
Allerdings kostet der auch wieder Geld und benötigt&lt;br /&gt;
zusätzlich immerhin 4 externe Elkos.&lt;br /&gt;
&lt;br /&gt;
Die in den PC eingebauten Schnittstellen vertragen ohne Klagen auch den&lt;br /&gt;
TTL-Pegel vom AVR. Allerdings müssen wir immer noch die Signale invertieren. Im&lt;br /&gt;
einfachtesn Fall verwenden wir dazu jeweils einen einfachen NPN-Transistor und 2&lt;br /&gt;
Widerstände. Näheres dazu erfahrt ihr in den folgenden Übungen.--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Streikt die Kommunikation per UART, so ist oft eine fehlerhafte Einstellung der Baudrate die Ursache. Die Konfiguration auf eine bestimmte Baudrate ist abhängig von der Taktfrequenz des Controllers. Gerade bei neu aufgebauten Schaltungen (bzw. neu gekauften Controllern) sollte man sich daher noch einmal vergewissern, dass der Controller auch tatsächlich mit der vermuteten Taktrate arbeitet und nicht z.B. den bei einigen Modellen werksseitig eingestellten internen [[Oszillator]] statt eines externen Quarzes nutzt. Die Werte der verschiedenen fuse-bits im Fehlerfall also beispielsweise mit &#039;&#039;[[AVRDUDE]]&#039;&#039; kontrollieren und falls nötig anpassen. Grundsätzlich empfiehlt sich auch immer ein Blick in die [[AVR_Checkliste]].&lt;br /&gt;
&lt;br /&gt;
== Senden mit dem UART ==&lt;br /&gt;
&lt;br /&gt;
Wir wollen nun Daten mit dem UART auf die serielle Schnittstelle ausgeben.&lt;br /&gt;
&lt;br /&gt;
Dazu müssen wir den UART zuerst mal initialisieren. Dazu setzen wir je nach&lt;br /&gt;
gewünschter Funktionsweise die benötigten Bits im &#039;&#039;&#039;U&#039;&#039;&#039;ART &#039;&#039;&#039;C&#039;&#039;&#039;ontrol &#039;&#039;&#039;R&#039;&#039;&#039;egister.&lt;br /&gt;
&lt;br /&gt;
Da wir vorerst nur senden möchten und (noch) keine Interrupts auswerten wollen, gestaltet sich die Initialisierung wirklich sehr einfach, da wir lediglich das &#039;&#039;&#039;Transmitter Enable&#039;&#039;&#039; Bit setzen müssen:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre class=&amp;quot;code&amp;quot;&amp;gt;&lt;br /&gt;
UCR |= (1&amp;lt;&amp;lt;TXEN);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Neuere AVRs mit USART(s) haben mehrere Konfigurationsregister erfordert eine etwas andere Konfiguration. Für einen ATmega16 z.B.:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre class=&amp;quot;code&amp;quot;&amp;gt;&lt;br /&gt;
  UCSRB |= (1&amp;lt;&amp;lt;TXEN);			//UART TX einschalten&lt;br /&gt;
  UCSRC |= (1&amp;lt;&amp;lt;URSEL)|(3&amp;lt;&amp;lt;UCSZ0);	//Asynchron 8N1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nun müssen wir noch die Baudrate festlegen. Gemäß unserer Formel brauchen wir dazu die Taktfrequenz des angeschlossenen Oszillators bzw. Quarz in die Formel einzufügen und das Resultat der Berechnung in das Baudratenregister des UART einzuschreiben:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre class=&amp;quot;code&amp;quot;&amp;gt;&lt;br /&gt;
/* UART-Init beim AT90S2313 */&lt;br /&gt;
&lt;br /&gt;
#ifndef F_CPU&lt;br /&gt;
/* In neueren Version der WinAVR/Mfile Makefile-Vorlage kann&lt;br /&gt;
   F_CPU im Makefile definiert werden, eine nochmalige Definition&lt;br /&gt;
   hier wuerde zu einer Compilerwarnung fuehren. Daher &amp;quot;Schutz&amp;quot; durch&lt;br /&gt;
   #ifndef/#endif */&lt;br /&gt;
/* Zum Beispiel 4Mhz-Quarz (falls nicht schon im Makefile definiert): */&lt;br /&gt;
#define F_CPU 4000000;&lt;br /&gt;
#endif&lt;br /&gt;
#define UART_BAUD_RATE 9600  // 9600 Baud&lt;br /&gt;
&lt;br /&gt;
UBRR = F_CPU / (UART_BAUD_RATE * 16l) - 1;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Wieder für den Mega16 mit einem 16bit-Register eine andere Programmierung.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre class=&amp;quot;code&amp;quot;&amp;gt;&lt;br /&gt;
  /* USART-Init beim ATmegaXX */&lt;br /&gt;
  #ifndef F_CPU&lt;br /&gt;
  #define F_CPU 3686400           /* Oszillator-Frequenz in Hz */&lt;br /&gt;
  #endif&lt;br /&gt;
  #define UART_BAUD_RATE 9600&lt;br /&gt;
  #define UART_BAUD_CALC(UART_BAUD_RATE,F_OSC) ((F_CPU)/((UART_BAUD_RATE)*16l)-1)&lt;br /&gt;
&lt;br /&gt;
  UBRRH=(uint8_t)(UART_BAUD_CALC(UART_BAUD_RATE,F_CPU)&amp;gt;&amp;gt;8);&lt;br /&gt;
  UBRRL=(uint8_t)UART_BAUD_CALC(UART_BAUD_RATE,F_CPU);&lt;br /&gt;
&lt;br /&gt;
  /* alternativ bei der avr-libc &amp;quot;direkt 16bit&amp;quot; : */&lt;br /&gt;
  UBRR=UART_BAUD_CALC(UART_BAUD_RATE,F_CPU);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Teilweise kann man im Datenblatt der jeweiligen CPU&#039;s auch den entsprechenden Wert nachschlagen. Ein Beispiel für einen ATmega32 bei 16MHz und für 19200 Baud: im Datenblatt des ATmega32 Tabelle &amp;quot;Examples of UBRR Settings&amp;quot; liest man für diese Vorgaben den Wert 51 ab. Dieser wird nun auf die Register UBRRH und UBRRL verteilt.&lt;br /&gt;
&lt;br /&gt;
Die Initialisierung für den USART könnte dann so aussehen:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre class=&amp;quot;code&amp;quot;&amp;gt;&lt;br /&gt;
  /* USART-Init 19200 Baud bei 16MHz für Mega32 */&lt;br /&gt;
  UCSRB |= ( 1 &amp;lt;&amp;lt; TXEN );			// UART TX einschalten&lt;br /&gt;
  UCSRC |= ( 1 &amp;lt;&amp;lt; URSEL )|( 3&amp;lt;&amp;lt;UCSZ0 );	        // Asynchron 8N1&lt;br /&gt;
  UBRRH  = 0;                                   // Highbyte ist 0&lt;br /&gt;
  UBRRL  = 51;                                  // Lowbyte ist 51 ( dezimal )&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Der obige Code ist gegenüber den Versionen mit &#039;#define ...&#039; nicht so portabel, dafür aber etwas übersichtlicher.&lt;br /&gt;
&lt;br /&gt;
=== Senden einzelner Zeichen ===&lt;br /&gt;
&lt;br /&gt;
Um nun ein Zeichen auf die Schnittstelle auszugeben, müssen wir dasselbe&lt;br /&gt;
lediglich in das &#039;&#039;&#039;U&#039;&#039;&#039;ART &#039;&#039;&#039;D&#039;&#039;&#039;ata &#039;&#039;&#039;R&#039;&#039;&#039;egister schreiben. Vorher ist zu prüfen, ob das UART-Modul bereit ist da zu sendende Zeichen entgegenzunehmen. Die Bezeichnungen des/der Statusregisters mit dem Bit UDRE ist abhängig vom Controllertypen (vgl. Datenblatt).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre class=&amp;quot;code&amp;quot;&amp;gt;&lt;br /&gt;
    // bei AVR mit einem UART (&amp;quot;classic AVR&amp;quot; z.B. AT90S8515)&lt;br /&gt;
    while (!(USR &amp;amp; (1&amp;lt;&amp;lt;UDRE))); /* warten bis Senden moeglich                   */&lt;br /&gt;
    UDR = &#039;x&#039;;                  /* schreibt das Zeichen x auf die Schnittstelle */&lt;br /&gt;
&lt;br /&gt;
    /** ODER **/&lt;br /&gt;
&lt;br /&gt;
    // bei neueren AVRs steht der Status in UCSRA/UCSR0A/UCSR1A, hier z.B. fuer ATmega16:&lt;br /&gt;
    while (!(UCSRA &amp;amp; (1&amp;lt;&amp;lt;UDRE))); /* warten bis Senden moeglich                   */&lt;br /&gt;
    UDR = &#039;x&#039;;                    /* schreibt das Zeichen x auf die Schnittstelle */&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Schreiben einer Zeichenkette (String) ===&lt;br /&gt;
&lt;br /&gt;
Die Aufgabe &amp;quot;String senden&amp;quot; wird durch zwei Funktionen abgearbeitet. Die universelle/controllerunabhängige Funktion uart_puts übergibt jeweils ein Zeichen der Zeichenkette an eine Funktion uart_putc, die abhängig von der vorhandenen Hardware implementiert werden muss. In der Funktion zum Senden eines Zeichens ist darauf zu achten, dass vor dem Senden geprüft wird, ob der UART bereit ist den &amp;quot;Sendeauftrag&amp;quot; entgegenzunehmen. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre class=&amp;quot;code&amp;quot;&amp;gt;&lt;br /&gt;
// putc fuer AVR mit einem UART (z.B. AT90S8515)&lt;br /&gt;
void uart_putc(unsigned char c)&lt;br /&gt;
{&lt;br /&gt;
    while(!(USR &amp;amp; (1 &amp;lt;&amp;lt; UDRE))); /* warte, bis UDR bereit */&lt;br /&gt;
    UDR = c;                     /* sende Zeichen */&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/** ODER **/&lt;br /&gt;
&lt;br /&gt;
// bei neueren AVRs andere Bezeichnung fuer die Statusregister, hier ATmega16:&lt;br /&gt;
void uart_putc(unsigned char c)&lt;br /&gt;
{&lt;br /&gt;
    while (!(UCSRA &amp;amp; (1&amp;lt;&amp;lt;UDRE))); /* warten bis Senden moeglich */&lt;br /&gt;
    UDR = c;                      /* sende Zeichen */&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
/* puts ist unabhaengig vom Controllertyp */&lt;br /&gt;
void uart_puts (char *s)&lt;br /&gt;
{&lt;br /&gt;
    while (*s)&lt;br /&gt;
    {   /* so lange *s != &#039;\0&#039; also ungleich dem &amp;quot;Sting-Endezeichen&amp;quot; */&lt;br /&gt;
        uart_putc(*s);&lt;br /&gt;
        s++;&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Warteschleifen sind insofern etwas kritisch, da während des Sendens eines Strings nicht mehr auf andere Ereignisse reagieren werden kann. Universeller ist die Nutzung von FIFO(first-in first-out)-Puffern, in denen die zu sendenden bzw. empfangenen Zeichen/Bytes zwischengespeichert und mittels Interruptroutinen an den U(S)ART weitergebgen bzw. ausgelesen werden. Dazu existieren fertige Komponenten (Bibliotheken, Libraries), die man recht einfach in eigene Entwicklungen integrieren kann. Es empfiehlt sich, diese Komponenten zu nutzen und das Rad nicht neu zu erfinden.&lt;br /&gt;
&lt;br /&gt;
== Zeichen Empfangen ==&lt;br /&gt;
&lt;br /&gt;
Zum Empfang von Zeichen muss der Empfangsteil des UART bei der Initialisierung aktiviert werden, indem das RXEN-Bit im jeweiligen Konfigurationsregister (UCSRB bzw UCSR0B/UCSR1B) gesetzt wird. Im einfachsten Fall wird solange gewartet, bis ein Zeichen empfangen wurde, dieses steht dann im UART-Datenregister (UDR bzw. UDR0 und UDR1 bei AVRs mit 2 UARTS) zur Verfügung (sogen. &amp;quot;Polling-Betrieb&amp;quot;). Ein Beispiel für den ATmega16:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre class=&amp;quot;code&amp;quot;&amp;gt;&lt;br /&gt;
#include &amp;lt;inttypes.h&amp;gt;&lt;br /&gt;
#include &amp;lt;avr/io.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
/* Zusaetzlich zur Baudrateneinstellung und der weiteren Initialisierung: */&lt;br /&gt;
void Usart_EnableRX()&lt;br /&gt;
{&lt;br /&gt;
    UCSRB |= ( 1 &amp;lt;&amp;lt; RXEN );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Zeichen empfangen */&lt;br /&gt;
uint8_t Usart_Rx(void)&lt;br /&gt;
{&lt;br /&gt;
    while (!(UCSRA &amp;amp; (1&amp;lt;&amp;lt;RXC)));  // warten bis Zeichen verfuegbar&lt;br /&gt;
    return UDR;                   // Zeichen aus UDR an Aufrufer zurueckgeben&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Diese Funktion blockiert den Programmablauf. Alternativ kann das RXC-Bit in einer Programmschleife abgefragt werden und dann nur bei gesetztem RXC-Bit UDR ausgelesen werden. Eleganter und in den meisten Anwendungsfällen &amp;quot;stabiler&amp;quot; ist die Vorgehensweise, die empfangenen Zeichen in einer Interrupt-Routine einzulesen und zur späteren Verarbeitung in einem Eingangsbuffer (FIFO-Buffer) zwischenzuspeichern. Dazu existieren fertige und gut getestete Bibliotheken (z.B. UART-Library von P. Fleury, procyon-avrlib und einige in der &amp;quot;Academy&amp;quot; von avrfreaks.net).&lt;br /&gt;
&lt;br /&gt;
TODO: 9bit&lt;br /&gt;
&lt;br /&gt;
== Software-UART ==&lt;br /&gt;
&lt;br /&gt;
Falls die Zahl der vorhandenen Hardware-UARTs nicht ausreicht, können weitere Schnittstellen über sogennante Software-UARTs ergänzt werden. Es gibt dazu (mindestens) zwei Ansätze: &lt;br /&gt;
* Der bei AVRs üblichste Ansatz basiert auf dem Prinzip, dass ein externer Interrupt-Pin für den Emfang genutzt (&amp;quot;RX&amp;quot;) wird. Das Startbit löst den Interrupt aus, in der Interrupt-Routine (ISR) wird der externe Interrupt deaktiviert und ein Timer aktiviert und der Zustand des Empfangs-Pins entsprechend der Baudrate abtastet. Nach Empfang des Stop-Bits wird der externe Interrupt wieder aktiviert. Senden kann über einen beliebigen Pin erfolgen (&amp;quot;TX&amp;quot;), der entsprechend der Baudrate und dem zu sendenden Zeichen auf 0 oder 1 gesetzt wird. Die Implementierung ist nicht ganz einfach, es existieren dazu aber fertige Bibliotheken (z.B. bei avrfreaks oder in der Procyon avrlib).&lt;br /&gt;
* Ein weiterer Ansatz erfordert keinen Pin mit &amp;quot;Interrupt-Funktion&amp;quot; benötigt aber mehr Rechenzeit. Jeder Input-Pin kann als Empfangspin (RX) dienen. Über einen Timer wird der Zustand des RX-Pins mit einem vielfachen der Baudrate abgetastet (dreifach scheint üblich) und high bzw. low-Bits anhand einer Mindestanzahl identifiziert. (Beispiel: &amp;quot;Generic Software Uart&amp;quot; Application-Note von IAR)&lt;br /&gt;
&lt;br /&gt;
Neuere AVRs (z.B. ATtiny26 oder ATmega48,88,168,169) verfügen über ein Universal Serial Interface (USI), das teilweise UART-Funktion übernehmen kann. Atmel stellt eine Application-Note bereit, in der die Nutzung des USI als UART erläutert wird (im Prinzip &amp;quot;Hardware-unterstützter Software-UART&amp;quot;).&lt;br /&gt;
&lt;br /&gt;
* siehe auch: Weiterführende Informationen inkl. Beispielen für die Nutzung von stdio-Funktionen (printf etc.) im [[AVR-Tutorial - UART]].&lt;br /&gt;
* [http://homepage.sunrise.ch/mysunrise/peterfleury/ Peter Fleurys] UART-Bibiliothek fuer avr-gcc/avr-libc&lt;br /&gt;
&lt;br /&gt;
= Analoge Ein- und Ausgabe =&lt;br /&gt;
&lt;br /&gt;
Analoge Eingangswerte werden in der Regel über den AVR Analog-Digital-Converter (AD-Wandler, ADC) eingelesen, der in vielen Typen verfügbar ist (typisch 10bit Auflösung). Durch diesen werden analogen Signale (Spannungen) in digitale Zahlenwerte gewandelt. Bei AVRs, die über keinen internen AD-Wandler verfügen (z.B. ATmega162, ATtiny2313), kann durch externe Beschaltung (R/C-Netzwerk und &amp;quot;Zeitmessung&amp;quot;) die Funktion des AD-Wandlers &amp;quot;emuliert&amp;quot; werden.&lt;br /&gt;
&lt;br /&gt;
Es existieren keine AVRs mit eingebautem Digital-Analog-Konverter (DAC). Diese Funktion muss durch externe Komponenten nachgebildet werden (z.B. PWM und &amp;quot;Glättung&amp;quot;).&lt;br /&gt;
&lt;br /&gt;
Unabhängig davon besteht natürlich immer die Möglichkeit, spezielle Bausteine zur Analog-Digital- bzw. Digital-Analog-Wandlung zu nutzen und diese über eine digitale Schnittstelle (z.b. SPI oder I2C) mit einem AVR anzusteuern.&lt;br /&gt;
&lt;br /&gt;
== ADC (Analog Digital Converter) ==&lt;br /&gt;
&lt;br /&gt;
Der Analog-Digital-Konverter (ADC) wandelt analoge Signale in digitale Werte um, welche vom Controller interpretiert werden können. Einige AVR-Typen haben bereits einen mehrkanaligen Analog-Digital-Konverter eingebaut. Die Genauigkeit, mit welcher ein analoges Signal aufgelöst werden kann, wird durch die Auflösung des ADC in Anzahl Bits angegeben, man hört bzw. liest jeweils von 8-Bit-ADC oder 10-Bit-ADC oder noch höher.&lt;br /&gt;
&lt;br /&gt;
Ein ADC mit 8 Bit Auflösung kann somit das analoge Signal mit einer Genauigkeit von 1/256 des Maximalwertes darstellen. Wenn wir nun mal annehmen, wir hätten eine Spannung zwischen 0 und 5 Volt und eine Auflösung von 3 Bit, dann könnten&lt;br /&gt;
die Werte 0V, 0.625V, 1.25, 1.875V, 2.5V, 3.125V, 3.75, 4.375, 5V&lt;br /&gt;
daherkommen, siehe dazu folgende Tabelle:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div align=&amp;quot;center&amp;quot;&amp;gt;&amp;lt;center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
|- &lt;br /&gt;
| align=&amp;quot;center&amp;quot; | &#039;&#039;&#039;Eingangsspannung am ADC&#039;&#039;&#039;&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | &#039;&#039;&#039;Entsprechender Messwert&#039;&#039;&#039;&lt;br /&gt;
|- &lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 0...&amp;lt;0.625V&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 0&lt;br /&gt;
|- &lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 0.625...&amp;lt;1.25V&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 1&lt;br /&gt;
|- &lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 1.25...&amp;lt;1.875V&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 2&lt;br /&gt;
|- &lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 1.875...&amp;lt;2.5V&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 3&lt;br /&gt;
|- &lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 2.5...&amp;lt;3.125V&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 4&lt;br /&gt;
|- &lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 3.125...&amp;lt;3.75V&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 5&lt;br /&gt;
|- &lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 3.75...&amp;lt;4.375V&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 6&lt;br /&gt;
|- &lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 4.375...5V&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 7&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die Angaben sind natürlich nur ungefähr. Je höher nun die Auflösung des Analog-Digital-Konverters ist, also je mehr Bits er hat, um so genauer kann der Wert erfasst werden.&lt;br /&gt;
&lt;br /&gt;
=== Der interne ADC im AVR ===&lt;br /&gt;
&lt;br /&gt;
Wenn es einmal etwas genauer sein soll, dann müssen wir auf einen AVR mit eingebautem Analog-Digital-Wandler (ADC) zurückgreifen, die über mehrere Kanäle verfügen. Kanäle heisst in diesem Zusammenhang, dass zwar bis zu zehn analoge Eingänge am AVR verfügbar sind, aber nur ein &amp;quot;echter&amp;quot; Analog-Digital-Wandler zur Verfügung steht, vor der eigentlichen Messung ist also einzustellen, welcher Kanal (&amp;quot;Pin&amp;quot;) mit dem Wandler verbunden und gemessen wird.&lt;br /&gt;
&lt;br /&gt;
Die Umwandlung innerhalb des AVR basiert auf der schrittweisen Näherung. Beim AVR müssen die Pins &#039;&#039;&#039;AGND&#039;&#039;&#039; und &#039;&#039;&#039;AVCC&#039;&#039;&#039; beschaltet werden. Für genaue Messungen sollte AVCC über ein L-C Netzwerk mit VCC verbunden werden, um Spannungsspitzen und -einbrüche vom Analog-Digital-Wandler fernzuhalten. Im Datenblatt findet sich dazu eine Schaltung.  &lt;br /&gt;
&lt;br /&gt;
Das Ergebnis der Analog-Digital-Wandlung wird auf eine Referenzspannung bezogen. Aktuelle AVRs bieten drei Möglichkeit zur Wahl dieser Spannung:&lt;br /&gt;
* Eine externe Referenzspannung von maximal &#039;&#039;&#039;Vcc&#039;&#039;&#039; am Abschluss &#039;&#039;&#039;AREF&#039;&#039;&#039;.&lt;br /&gt;
* Verfügt der AVR über eine interne Referenzspannung, kann diese genutzt werden. Alle aktuellen AVRs mit internem AD-Wandler sollten damit ausgestattet sein (vgl. Datenblatt: 2,56V oder 1,1V je nach Typ). Das Datenblatt gibt auch über die Genauigkeit dieser Spannung Auskunft.&lt;br /&gt;
* Die Referenzspannung wird auf &#039;&#039;&#039;Vcc&#039;&#039;&#039; bezogen.&lt;br /&gt;
&lt;br /&gt;
Bei Nutzung von Vcc oder der internen Referenz wird empfohlen, einen Kondensator zwischen dem AREF-Pin und GND anzuordnen. Die Festlegung, welche Spannungsreferenz genutzt wird, erfolgt z.B. beim ATmega16 mit den Bits REFS1/REFS0 im ADMUX-Register. Die zu messende Spannung muss im Bereich zwischen &#039;&#039;&#039;AGND&#039;&#039;&#039; und &#039;&#039;&#039;AREF&#039;&#039;&#039; (egal ob intern oder extern) liegen. &lt;br /&gt;
&lt;br /&gt;
Der &#039;&#039;&#039;ADC&#039;&#039;&#039; kann in zwei verschiedenen Betriebsarten verwendet werden:&lt;br /&gt;
&lt;br /&gt;
; Einfache Wandlung (Single Conversion) : In dieser Betriebsart wird der Wandler bei Bedarf vom Programm angestossen für jeweils eine Messung.&lt;br /&gt;
&lt;br /&gt;
; Frei laufend (Free Running) : In dieser Betriebsart erfasst der Wandler permanent die anliegende Spannung und schreibt diese in das &#039;&#039;&#039;ADC Data Register&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
==== Die Register des ADC ====&lt;br /&gt;
&lt;br /&gt;
Der &#039;&#039;&#039;ADC&#039;&#039;&#039; verfügt über eigene Register. Im Folgenden die Registerbeschreibung eines (inzwischen veralteten) AT90S8535, welcher über 8 ADC-Kanäle verfügt. Die Register unterscheiden sich jedoch nicht erheblich von denen aktueller AVRs (vgl. Datenblatt).&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
|- &lt;br /&gt;
| &#039;&#039;&#039;ADCSR&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&#039;&#039;&#039;&lt;br /&gt;
| &#039;&#039;&#039;ADC&#039;&#039;&#039; &#039;&#039;&#039;C&#039;&#039;&#039;ontrol and &#039;&#039;&#039;S&#039;&#039;&#039;tatus &#039;&#039;&#039;R&#039;&#039;&#039;egister.&amp;lt;br /&amp;gt;&lt;br /&gt;
In diesem Register stellen wir ein, wie wir den &#039;&#039;&#039;ADC&#039;&#039;&#039; verwenden möchten.&amp;lt;br /&amp;gt;&lt;br /&gt;
Das Register ist wie folgt aufgebaut:&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
|- &lt;br /&gt;
| &#039;&#039;&#039;Bit&#039;&#039;&#039;&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 7&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 6&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 5&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 4&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 3&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 2&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 1&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 0&lt;br /&gt;
|- &lt;br /&gt;
| &#039;&#039;&#039;Name&#039;&#039;&#039;&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | &#039;&#039;&#039;ADEN&#039;&#039;&#039;&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | &#039;&#039;&#039;ADSC&#039;&#039;&#039;&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | &#039;&#039;&#039;ADFR&#039;&#039;&#039;&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | &#039;&#039;&#039;ADIF&#039;&#039;&#039;&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | &#039;&#039;&#039;ADIE&#039;&#039;&#039;&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | &#039;&#039;&#039;ADPS2&#039;&#039;&#039;&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | &#039;&#039;&#039;ADPS1&#039;&#039;&#039;&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | &#039;&#039;&#039;ADPS0&#039;&#039;&#039;&lt;br /&gt;
|- &lt;br /&gt;
| &#039;&#039;&#039;R/W&#039;&#039;&#039;&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | R/W&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | R/W&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | R/W&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | R/W&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | R/W&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | R/W&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | R&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | W&lt;br /&gt;
|- &lt;br /&gt;
| &#039;&#039;&#039;Initialwert&#039;&#039;&#039;&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 0&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 0&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 0&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 0&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 0&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 0&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 1&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 0&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;ADEN&#039;&#039;&#039; (&#039;&#039;&#039;AD&#039;&#039;&#039;C &#039;&#039;&#039;En&#039;&#039;&#039;able)&lt;br /&gt;
:Dieses Bit muss gesetzt werden, um den &#039;&#039;&#039; ADC&#039;&#039;&#039; überhaupt zu aktivieren. Wenn das Bit nicht gesetzt, ist können die Pins wie normale I/O-Pins verwendet werden.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;ADSC&#039;&#039;&#039; (&#039;&#039;&#039;AD&#039;&#039;&#039;C &#039;&#039;&#039;S&#039;&#039;&#039;tart &#039;&#039;&#039;C&#039;&#039;&#039;onversion)&lt;br /&gt;
:Mit diesem Bit wird ein Messvorgang gestartet. In der frei laufenden Betriebsart muss das Bit gesetzt werden, um die kontinuierliche Messung zu aktivieren.&lt;br /&gt;
:Wenn das Bit nach dem Setzen des &#039;&#039;&#039;ADEN&#039;&#039;&#039;-Bits zum ersten Mal gesetzt wird, führt der Controller zuerst eine zusätzliche Wandlung und erst dann die eigentliche Wandlung aus. Diese zusätzliche Wandlung wird zu Initialisierungszwecken durchgeführt.&lt;br /&gt;
:Das Bit bleibt nun so lange auf 1, bis die Umwandlung abgeschlossen ist, im Initialisierungsfall entsprechend bis die zweite Umwandlung erfolgt ist und geht danach auf 0.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;ADFR&#039;&#039;&#039; (&#039;&#039;&#039;AD&#039;&#039;&#039;C &#039;&#039;&#039;Fr&#039;&#039;&#039;ee Running Select)&lt;br /&gt;
:Mit diesem Bit wird die Betriebsart eingestellt.&lt;br /&gt;
:Eine logische 1 aktiviert den frei laufenden Modus. Der &#039;&#039;&#039; ADC&#039;&#039;&#039; misst nun ständig den ausgewählten Kanal und schreibt den gemessenen Wert in das &#039;&#039;&#039;ADC Data Register&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;ADIF&#039;&#039;&#039; (&#039;&#039;&#039;AD&#039;&#039;&#039;C &#039;&#039;&#039;I&#039;&#039;&#039;nterrupt &#039;&#039;&#039;F&#039;&#039;&#039;lag)&lt;br /&gt;
:Dieses Bit wird vom &#039;&#039;&#039; ADC&#039;&#039;&#039; gesetzt, wenn eine Umwandlung erfolgt und das &#039;&#039;&#039;ADC Data Register&#039;&#039;&#039; aktualisiert ist.&lt;br /&gt;
:Wenn das &#039;&#039;&#039;ADIE&#039;&#039;&#039; Bit sowie das &#039;&#039;&#039;I-Bit&#039;&#039;&#039; im AVR &#039;&#039;&#039;Statusregister&#039;&#039;&#039; gesetzt ist, wird der &#039;&#039;&#039;ADC Interrupt&#039;&#039;&#039; ausgelöst und die Interrupt-Behandlungsroutine aufgerufen.&lt;br /&gt;
:Das Bit wird automatisch gelöscht, wenn die Interrupt-Behandlungsroutine aufgerufen wird. Es kann jedoch auch gelöscht werden, indem eine logische 1 in das Register geschrieben wird (So steht es in der AVR-Dokumentation).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;ADIE&#039;&#039;&#039; (&#039;&#039;&#039;AD&#039;&#039;&#039;C &#039;&#039;&#039;I&#039;&#039;&#039;nterrupt &#039;&#039;&#039;E&#039;&#039;&#039;nable)&lt;br /&gt;
:Wenn dieses Bit gesetzt ist und ebenso das &#039;&#039;&#039; I-Bit&#039;&#039;&#039; im Statusregister &#039;&#039;&#039;SREG&#039;&#039;&#039;, dann wird der &#039;&#039;&#039; ADC-Interrupt&#039;&#039;&#039; aktiviert.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;ADPS2...ADPS0&#039;&#039;&#039; (&#039;&#039;&#039;AD&#039;&#039;&#039;C &#039;&#039;&#039;P&#039;&#039;&#039;rescaler &#039;&#039;&#039;S&#039;&#039;&#039;elect Bits)&lt;br /&gt;
:Diese Bits bestimmen den Teilungsfaktor zwischen der Taktfrequenz und dem Eingangstakt des &#039;&#039;&#039;ADC&#039;&#039;&#039;.&lt;br /&gt;
:Der &#039;&#039;&#039;ADC&#039;&#039;&#039; benötigt einen eigenen Takt, welchen er sich selber aus der CPU-Taktfreqenz erzeugt. Der &#039;&#039;&#039;ADC&#039;&#039;&#039;-Takt sollte zwischen 50 und 200kHz sein.&lt;br /&gt;
:Der Vorteiler muss also so eingestellt werden, dass die CPU-Taktfrequenz dividiert durch den Teilungsfaktor einen Wert zwischen 50-200kHz ergibt.&lt;br /&gt;
:Bei einer CPU-Taktfrequenz von 4MHz beispielsweise rechnen wir&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;&lt;br /&gt;
\begin{matrix}&lt;br /&gt;
TF_{min}=\frac{CLK}{200kHz}=\frac{4000000}{200000}=\mathbf{20}&lt;br /&gt;
\\&lt;br /&gt;
\\&lt;br /&gt;
TF_{max}=\frac{CLK}{50kHz}=\frac{4000000}{50000}=\mathbf{80}&lt;br /&gt;
\end{matrix}&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:Somit kann hier der Teilungsfaktor 32 oder 64 verwendet werden. Im Interesse der schnelleren Wandlungszeit werden wir hier den Faktor 32 einstellen.&lt;br /&gt;
&amp;lt;dl&amp;gt;&amp;lt;dd&amp;gt;&lt;br /&gt;
{| style=&amp;quot;&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|- &lt;br /&gt;
| align=&amp;quot;center&amp;quot; | &#039;&#039;&#039;ADPS2&#039;&#039;&#039;&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | &#039;&#039;&#039;ADPS1&#039;&#039;&#039;&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | &#039;&#039;&#039;ADPS0&#039;&#039;&#039;&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | &#039;&#039;&#039;Teilungsfaktor&#039;&#039;&#039;&lt;br /&gt;
|- &lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 0&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 0&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 0&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 2&lt;br /&gt;
|- &lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 0&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 0&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 1&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 2&lt;br /&gt;
|- &lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 0&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 1&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 0&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 4&lt;br /&gt;
|- &lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 0&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 1&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 1&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 8&lt;br /&gt;
|- &lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 1&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 0&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 0&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 16&lt;br /&gt;
|- &lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 1&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 0&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 1&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 32&lt;br /&gt;
|- &lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 1&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 1&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 0&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 64&lt;br /&gt;
|- &lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 1&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 1&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 1&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 128&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/dd&amp;gt;&amp;lt;/dl&amp;gt;&lt;br /&gt;
|- &lt;br /&gt;
| &#039;&#039;&#039;ADCL&#039;&#039;&#039;&amp;lt;br /&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;ADCH&#039;&#039;&#039;&lt;br /&gt;
| &#039;&#039;&#039;ADC &#039;&#039;&#039; Data Register&amp;lt;br /&amp;gt;&lt;br /&gt;
Wenn eine Umwandlung abgeschlossen ist, befindet sich der gemessene Wert in&lt;br /&gt;
diesen beiden Registern. Von &#039;&#039;&#039;ADCH&#039;&#039;&#039; werden nur die beiden niederwertigsten Bits verwendet. Es müssen immer beide Register ausgelesen werden und zwar immer &#039;&#039;&#039;in der Reihenfolge: ADCL, ADCH&#039;&#039;&#039;. &lt;br /&gt;
Der effektive Messwert ergibt sich dann zu:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre class=&amp;quot;code&amp;quot;&amp;gt;&lt;br /&gt;
x = ADCL;       // mit uint16_t x&lt;br /&gt;
x += (ADCH&amp;lt;&amp;lt;8); // in zwei Zeilen (LSB/MSB-Reihenfolge und &lt;br /&gt;
                   C-Operatorprioritaet sichergestellt)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
oder &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre class=&amp;quot;code&amp;quot;&amp;gt;&lt;br /&gt;
x = ADCW; // je nach AVR auch x = ADC (siehe avr/ioxxx.h)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|- &lt;br /&gt;
| &#039;&#039;&#039;ADMUX&amp;amp;nbsp;&amp;amp;nbsp;&#039;&#039;&#039;&lt;br /&gt;
| &#039;&#039;&#039;AD&#039;&#039;&#039;C &#039;&#039;&#039;Mu&#039;&#039;&#039;ltiple&#039;&#039;&#039;x&#039;&#039;&#039;er Select Register&amp;lt;br /&amp;gt;&lt;br /&gt;
Mit diesem Register wird der zu messende Kanal ausgewählt. Beim 90S8535&lt;br /&gt;
kann jeder Pin von Port A als &#039;&#039;&#039;ADC&#039;&#039;&#039;-Eingang verwendet werden (=8 Kanäle).&amp;lt;br /&amp;gt;&lt;br /&gt;
Das Register ist wie folgt aufgebaut:&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
|- &lt;br /&gt;
| &#039;&#039;&#039;Bit&#039;&#039;&#039;&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 7&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 6&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 5&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 4&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 3&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 2&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 1&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 0&lt;br /&gt;
|- &lt;br /&gt;
| &#039;&#039;&#039;Name&#039;&#039;&#039;&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | &#039;&#039;&#039;-&#039;&#039;&#039;&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | &#039;&#039;&#039;-&#039;&#039;&#039;&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | &#039;&#039;&#039;-&#039;&#039;&#039;&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | &#039;&#039;&#039;-&#039;&#039;&#039;&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | &#039;&#039;&#039;-&#039;&#039;&#039;&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | &#039;&#039;&#039;MUX2&#039;&#039;&#039;&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | &#039;&#039;&#039;MUX1&#039;&#039;&#039;&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | &#039;&#039;&#039;MUX0&#039;&#039;&#039;&lt;br /&gt;
|- &lt;br /&gt;
| &#039;&#039;&#039;R/W&#039;&#039;&#039;&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | R&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | R&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | R&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | R&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | R&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | R/W&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | R/W&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | R/W&lt;br /&gt;
|- &lt;br /&gt;
| &#039;&#039;&#039;Initialwert&#039;&#039;&#039;&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 0&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 0&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 0&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 0&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 0&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 0&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 0&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 0&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;MUX2...MUX0&#039;&#039;&#039;&lt;br /&gt;
:Mit diesem 3 Bits wird der zu messende Kanal bestimmt. Es wird einfach die entsprechende Pinnummer des Ports eingeschrieben.&lt;br /&gt;
:Wenn das Register beschrieben wird, während dem eine Umwandlung läuft, so wird zuerst die aktuelle Umwandlung auf dem bisherigen Kanal beendet. Dies ist vor allem beim frei laufenden Betrieb zu berücksichtigen.&lt;br /&gt;
&lt;br /&gt;
:Meine Empfehlung ist deswegen klar diese, dass der frei laufende Betrieb nur bei einem einzelnen zu verwendenden Analogeingang verwendet werden sollte, wenn man sich Probleme bei der Umschalterei ersparen will.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Aktivieren des ADC ====&lt;br /&gt;
&lt;br /&gt;
Um den &#039;&#039;&#039; ADC&#039;&#039;&#039; zu aktivieren, müssen wir das &#039;&#039;&#039;ADEN&#039;&#039;&#039;-Bit im &#039;&#039;&#039;ADCSR&#039;&#039;&#039;-Register&lt;br /&gt;
setzen. Im gleichen Schritt legen wir auch gleich die Betriebsart fest. &lt;br /&gt;
&lt;br /&gt;
Ein kleines Beispiel für den &amp;quot;single conversion&amp;quot;-Mode bei einem ATmega169 und Nutzung der internen Referenzspannung (beim &#039;169 1,1V bei anderen AVRs auch 2,56V). D.h. das Eingangssignal darf diese Spannung nicht überschreiten, gegebenenfalls mit Spannungsteiler konditionieren. Ergebnis der Routine ist der ADC-Wert, also 0 für 0-Volt und 1024 für V_ref-Volt.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre class=&amp;quot;code&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
#define CHANNELOFFSET 4&lt;br /&gt;
&lt;br /&gt;
uint16_t ReadChannel(uint8_t channel)&lt;br /&gt;
{&lt;br /&gt;
  uint8_t i;&lt;br /&gt;
  uint16_t result;&lt;br /&gt;
  &lt;br /&gt;
  ADCSRA = (1&amp;lt;&amp;lt;ADEN) | (1&amp;lt;&amp;lt;ADPS1) | (1&amp;lt;&amp;lt;ADPS0);    // Frequenzvorteiler &lt;br /&gt;
                               // setzen auf 8 (1) und ADC aktivieren (1)&lt;br /&gt;
&lt;br /&gt;
  ADMUX = CHANNELOFFSET+channel;    // Kanal waehlen&lt;br /&gt;
  ADMUX |= (1&amp;lt;&amp;lt;REFS1) | (1&amp;lt;&amp;lt;REFS0); // interne Referenzspannung nutzen &lt;br /&gt;
&lt;br /&gt;
  /* nach Aktivieren des ADC wird ein &amp;quot;Dummy-Readout&amp;quot; empfohlen, man liest&lt;br /&gt;
     also einen Wert und verwirft diesen, um den ADC &amp;quot;warmlaufen zu lassen&amp;quot; */&lt;br /&gt;
  ADCSRA |= (1&amp;lt;&amp;lt;ADSC);              // eine ADC-Wandlung &lt;br /&gt;
  &amp;lt;!--while(!(ADCSRA &amp;amp; 0x10));      // auf Abschluss der Konvertierung warten (ADIF-bit) --&amp;gt;&lt;br /&gt;
  while(!(ADCSRA &amp;amp; (1&amp;lt;&amp;lt;ADIF)));     // auf Abschluss der Konvertierung warten (ADIF-bit)&lt;br /&gt;
        &lt;br /&gt;
  result = 0;&lt;br /&gt;
&lt;br /&gt;
  /* Eigentliche Messung - Mittelwert aus 4 aufeinanderfolgenden Wandlungen */&lt;br /&gt;
  for(i=0;i&amp;lt;4;i++)&lt;br /&gt;
  {&lt;br /&gt;
    ADCSRA |= (1&amp;lt;&amp;lt;ADSC);            // eine Wandlung &amp;quot;single conversion&amp;quot;&lt;br /&gt;
    while(!(ADCSRA &amp;amp; (1&amp;lt;&amp;lt;ADIF)));   // auf Abschluss der Konvertierung warten (ADIF-bit)&lt;br /&gt;
    result += ADC;		    // Wandlungsergebnisse aufaddieren&lt;br /&gt;
    ADCSRA |= (1&amp;lt;&amp;lt;ADIF);            //ADIF löschen (siehe DB, macht sonst die ISR), &lt;br /&gt;
  }                                 //da sonst Schleife im nächsten Durchgang nicht&lt;br /&gt;
                                    //wartet bis Wandlung fertig.&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
  ADCSRA &amp;amp;= ~(1&amp;lt;&amp;lt;ADEN);             // ADC deaktivieren (2)&lt;br /&gt;
&lt;br /&gt;
  result /= 4;                     // Summe durch vier teilen = arithm. Mittelwert&lt;br /&gt;
&lt;br /&gt;
  return result;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Im Beispiel wird bei jedem Aufruf der ADC aktiviert und nach der Wandlung wieder abgeschaltet, das spart Strom. Will man dies nicht, verschiebt man die mit (1) gekennzeichneten Zeilen in eine Funktion adc_init() o.ä. und löscht die mit (2) markierten Zeilen.&lt;br /&gt;
&lt;br /&gt;
=== Analog-Digital-Wandlung ohne internen ADC ===&lt;br /&gt;
&lt;br /&gt;
==== Messen eines Widerstandes ====&lt;br /&gt;
&lt;br /&gt;
Wir wollen hier einmal die wohl einfachste Methode zur Erfassung eines&lt;br /&gt;
analogen Wertes realisieren und zwar das Messen eines veränderlichen&lt;br /&gt;
Widerstandes wie z.B. eines Potentiometers.&lt;br /&gt;
&lt;br /&gt;
Man stelle sich vor, wir schalten einen Kondensator in Reihe zu einem&lt;br /&gt;
Widerstand zwischen die Versorgungsspannung und Masse und dazwischen nehmen wir&lt;br /&gt;
das Signal ab und führen es auf einen der Pins an unserem Controller, genau so&lt;br /&gt;
wie es in folgender Grafik dargestellt ist.&lt;br /&gt;
&lt;br /&gt;
[[Image:Poti.gif]]&lt;br /&gt;
&lt;br /&gt;
Wenn wir nun den Pin des AVR als Ausgang schalten und auf&lt;br /&gt;
Logisch 1 (HIGH) legen, dann liegt an beiden Platten des Kondensators &#039;&#039;&#039; Vcc&#039;&#039;&#039; an und&lt;br /&gt;
dieser wird entladen (Klingt komisch, mit &#039;&#039;&#039; Vcc&#039;&#039;&#039; entladen, ist aber so, da an beiden Seiten des Kondensators das gleiche Potential anliegt und somit eine Potentialdifferenz von 0V besteht =&amp;gt; Kondensator ist entladen).&amp;lt;br /&amp;gt;&lt;br /&gt;
Nachdem nun der Kondensator genügend entladen ist schalten wir einfach den Pin&lt;br /&gt;
als Eingang wodurch dieser hochohmig wird. Der Kondensator lädt sich jetzt&lt;br /&gt;
über das Poti auf, dabei steigt der Spannungsabfall über dem Kondensator und&lt;br /&gt;
derjenige über dem Poti sinkt. Fällt nun der Spannungsabfall über dem Poti&lt;br /&gt;
unter die Thresholdspannung des Eingangspins (2/5 Vcc, also ca. 2V), dann schaltet der&lt;br /&gt;
Eingang von HIGH auf LOW um. Wenn wir nun messen (zählen), wie lange es dauert,&lt;br /&gt;
bis der Kondensator so weit geladen ist, dann haben wir einen ungefähren Wert&lt;br /&gt;
der Potentiometerstellung.&amp;lt;br /&amp;gt;&lt;br /&gt;
Der 220 Ohm Widerstand dient dem Schutz des Controllers. Wenn nämlich sonst die&lt;br /&gt;
Potentiometerstellung auf Maximum steht (0 Ohm), dann würde in den Eingang des&lt;br /&gt;
Controllers ein viel zu hoher Strom fliessen und der AVR würde in Rauch&lt;br /&gt;
aufgehen.&lt;br /&gt;
&lt;br /&gt;
Dies ist meines Wissens die einzige Schaltung zur Erfassung von&lt;br /&gt;
Analogwerten, welche mit nur einem einzigen Pin auskommt.&amp;lt;br /&amp;gt;&lt;br /&gt;
Mit einem weiteren Eingangspin und ein wenig Software können wir auch eine&lt;br /&gt;
Kalibrierung realisieren, um den Messwert in einen vernünftigen Bereich (z.B:&lt;br /&gt;
0...100 % oder so) umzurechnen.&lt;br /&gt;
&lt;br /&gt;
Wer Lust hat, sich selber mal an ein solches Programm&lt;br /&gt;
heranzuwagen, der sollte das jetzt tun. Für diejenigen, die es gern schnell&lt;br /&gt;
mögen, hier das Beispielprogramm, welches den UART-Printf aus den&lt;br /&gt;
vorangegangenen Kapiteln benötigt, inkl. Makefile:&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;0&amp;quot;&lt;br /&gt;
|- &lt;br /&gt;
| [http://www.mypage.bluewin.ch/ch_schifferle/AtmelC/Uebungen/Poti/Poti.c Poti.c ]&lt;br /&gt;
| Hauptprogramm.&lt;br /&gt;
|- &lt;br /&gt;
| [http://www.mypage.bluewin.ch/ch_schifferle/AtmelC/Uebungen/Poti/Pot.c Pot.c]&lt;br /&gt;
| Separate Routine zur Ermittlung des Messwertes.&lt;br /&gt;
|- &lt;br /&gt;
| [http://www.mypage.bluewin.ch/ch_schifferle/AtmelC/Uebungen/Poti/Pot.h Pot.h]&lt;br /&gt;
| Zugehörige Headerdatei.&lt;br /&gt;
|- &lt;br /&gt;
| [http://www.mypage.bluewin.ch/ch_schifferle/AtmelC/Uebungen/Allgemein/UartPrintF.c UartPrintF.c]&lt;br /&gt;
| Für die Debugausgabe auf den UART.&lt;br /&gt;
|- &lt;br /&gt;
| [http://www.mypage.bluewin.ch/ch_schifferle/AtmelC/Uebungen/Allgemein/UartPrintF.h UartPrintF.h]&lt;br /&gt;
| Zugehörige Headerdatei.&lt;br /&gt;
|- &lt;br /&gt;
| [http://www.mypage.bluewin.ch/ch_schifferle/AtmelC/Uebungen/Poti/makefile Makefile]&lt;br /&gt;
| Makefile.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Nachdem das Programm auf den AVR geladen wurde, muss dieser&lt;br /&gt;
kalibriert werden. Dazu wird der Kalibrierungsschalter geschlossen und das Poti&lt;br /&gt;
einige Male zwischen minimaler und maximaler Stellung hin und her gedreht. Dabei&lt;br /&gt;
werden die jeweiligen Maximalwerte bestimmt. Wenn der Kalibrierschalter wieder&lt;br /&gt;
geöffnet wird werden die Kalibrierungsdaten in&#039;s EEPROM des AVR geschrieben,&lt;br /&gt;
damit die Prozedur nicht nach jedem Reset wiederholt werden muss.&lt;br /&gt;
&lt;br /&gt;
Auf Pin 4 habe ich noch ein Triggersignal gelegt, welches auf&lt;br /&gt;
HIGH geht wenn die Messung beginnt und auf LOW, wenn der Messvorgang beendet&lt;br /&gt;
wird. Mit Hilfe dieses Signals kann der Vorgang wunderschön auf einem&lt;br /&gt;
Oszillographen dargestellt werden.&lt;br /&gt;
&lt;br /&gt;
==== ADC über Komparator ====&lt;br /&gt;
&lt;br /&gt;
Es gibt einen weiteren Weg, eine analoge Spannung mit Hilfe des&lt;br /&gt;
Komparators, welcher in fast jedem AVR integriert ist, zu messen. Siehe dazu&lt;br /&gt;
auch die Application Note AVR400 von Atmel.&lt;br /&gt;
&lt;br /&gt;
Dabei wird das zu messende Signal auf den invertierenden Eingang&lt;br /&gt;
des Komparators geführt. Zusätzlich wird ein Referenzsignal an den nicht&lt;br /&gt;
invertierenden Eingang des Komparators angeschlossen. Das Referenzsignal wird&lt;br /&gt;
hier auch wieder über ein RC-Glied erzeugt, allerdings mit festen Werten für R&lt;br /&gt;
und C.&lt;br /&gt;
&lt;br /&gt;
[[Image:ADC ueber Komparator.gif]]&lt;br /&gt;
&lt;br /&gt;
Das Prinzip der Messung ist nun dem vorhergehenden recht&lt;br /&gt;
ähnlich. Durch Anlegen eines LOW-Pegels an Pin 2 wird der Kondensator zuerst&lt;br /&gt;
einmal entladen. Auch hier muss darauf geachtet werden, dass der Entladevorgang&lt;br /&gt;
genügend lang dauert.&amp;lt;br /&amp;gt;&lt;br /&gt;
Nun wird Pin 2 auf HIGH gelegt. Der Kondensator wird geladen. Wenn die Spannung&lt;br /&gt;
über dem Kondensator die am Eingangspin anliegende Spannung erreicht hat&lt;br /&gt;
schaltet der Komparator durch. Die Zeit, welche benötigt wird, um den&lt;br /&gt;
Kondensator zu laden kann nun auch wieder als Maß für die Spannung an Pin 1&lt;br /&gt;
herangezogen werden.&lt;br /&gt;
&lt;br /&gt;
Ich habe es mir gespart, diese Schaltung auch aufzubauen und&lt;br /&gt;
zwar aus mehreren Gründen:&lt;br /&gt;
&lt;br /&gt;
# 3 Pins notwendig.&lt;br /&gt;
# Genauigkeit vergleichbar mit einfacherer Lösung.&lt;br /&gt;
# War einfach zu faul.&lt;br /&gt;
&lt;br /&gt;
Der Vorteil dieser Schaltung liegt allerdings darin, dass damit&lt;br /&gt;
direkt Spannungen gemessen werden können.&lt;br /&gt;
&lt;br /&gt;
== DAC (Digital Analog Converter) ==&lt;br /&gt;
&lt;br /&gt;
Mit Hilfe eines Digital-Analog-Konverters (&#039;&#039;&#039;DAC&#039;&#039;&#039;) können wir nun auch Analogsignale ausgeben. Es gibt hier mehrere Verfahren. &amp;lt;!-- Wenn wir beim ADC die Möglichkeit haben, mit externen Komponenten zu operieren, müssen wir bei der DAC-Wandlung mit dem auskommen, was der Controller selber zu bieten hat. --mt: hmm, richtig? verstaendlich? redundant? --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== DAC über mehrere digitale Ausgänge ===&lt;br /&gt;
&lt;br /&gt;
Wenn wir an den Ausgängen des Controllers ein entsprechendes&lt;br /&gt;
Widerstandsnetzwerk aufbauen haben wir die Möglichkeit, durch die Ansteuerung&lt;br /&gt;
der Ausgänge über den Widerständen einen Addierer aufzubauen, mit dessen&lt;br /&gt;
Hilfe wir eine dem Zahlenwert proportionale Spannung erzeugen können. Das&lt;br /&gt;
Schaltbild dazu kann etwa so aussehen:&lt;br /&gt;
&lt;br /&gt;
[[Image:DAC R2R.gif]]&lt;br /&gt;
&lt;br /&gt;
Es sollten selbstverständlich möglichst genaue Widerstände verwendet&lt;br /&gt;
werden, also nicht unbedingt solche mit einer Toleranz von 10% oder mehr.&lt;br /&gt;
Weiterhin empfiehlt es sich, je nach Anwendung den Ausgangsstrom über einen&lt;br /&gt;
Operationsverstärker zu verstärken.&lt;br /&gt;
&lt;br /&gt;
=== PWM (Pulsweitenmodulation) ===&lt;br /&gt;
&lt;br /&gt;
Wir kommen nun zu einem Thema, welches in aller Munde ist, aber viele&lt;br /&gt;
Anwender verstehen nicht ganz, wie &#039;&#039;&#039; PWM&#039;&#039;&#039; eigentlich funktioniert.&lt;br /&gt;
&lt;br /&gt;
Wie wir alle wissen ist ein Mikrocontroller ein rein digitales Bauteil.&lt;br /&gt;
Definieren wir einen Pin als Ausgang, dann können wir diesen Ausgang entweder&lt;br /&gt;
auf HIGH setzen, worauf am Ausgang die Versorgungsspannung &#039;&#039;&#039; Vcc&#039;&#039;&#039; anliegt, oder aber wir setzen den Ausgang auf LOW, wonach dann &#039;&#039;&#039; 0V&#039;&#039;&#039; am Ausgang liegt. Was passiert aber nun, wenn wir periodisch mit einer festen Frequenz zwischen HIGH und LOW umschalten? - Richtig, wir erhalten eine Rechteckspannung, wie die folgende Abbildung zeigt:&lt;br /&gt;
&lt;br /&gt;
[[Image:PWM Theorie 1.gif]]&lt;br /&gt;
&lt;br /&gt;
Diese Rechteckspannung hat nun einen geometrischen Mittelwert, der je nach Pulsbreite kleiner oder grösser ist.&lt;br /&gt;
&lt;br /&gt;
[[Image:PWM Theorie 2.gif]]&lt;br /&gt;
&lt;br /&gt;
Wenn wir nun diese pulsierende Ausgangsspannung noch über ein&lt;br /&gt;
RC-Glied filtern/&amp;quot;glätten&amp;quot; dann haben wir schon eine entsprechende Gleichspannung erzeugt.&lt;br /&gt;
&lt;br /&gt;
Mit den AVR&#039;s können wir direkt &#039;&#039;&#039;PWM&#039;&#039;&#039;-Signale erzeugen. Dazu dient der 16-Bit Zähler, welcher im sogenannten &#039;&#039;&#039;PWM&#039;&#039;&#039;-Modus betrieben werden&lt;br /&gt;
kann.&lt;br /&gt;
&lt;br /&gt;
Hinweis:&lt;br /&gt;
:In den folgenden Überlegungen wird als Controller der 90S2313 vorausgesetzt. Die Theorie ist allerdings bei anderen AVR-Controllern vergleichbar, die Pinbelegung allerdings nicht unbedingt.&lt;br /&gt;
&lt;br /&gt;
Um den &#039;&#039;&#039;PWM&#039;&#039;&#039;-Modus zu aktivieren müssen im Timer/Counter1 Control&lt;br /&gt;
Register A &#039;&#039;&#039;TCCR1A&#039;&#039;&#039; die Pulsweiten-Modulatorbits &#039;&#039;&#039;PWM10&#039;&#039;&#039; bzw. &#039;&#039;&#039;PWM11&#039;&#039;&#039; entsprechend&lt;br /&gt;
nachfolgender Tabelle gesetzt werden:&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
|- &lt;br /&gt;
| align=&amp;quot;center&amp;quot; | &#039;&#039;&#039;PWM11&#039;&#039;&#039;&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | &#039;&#039;&#039;PWM10&#039;&#039;&#039;&lt;br /&gt;
| &#039;&#039;&#039;Bedeutung&#039;&#039;&#039;&lt;br /&gt;
|- &lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 0&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 0&lt;br /&gt;
| PWM-Modus des Timers ist nicht aktiv.&lt;br /&gt;
|- &lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 0&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 1&lt;br /&gt;
| 8-Bit PWM.&lt;br /&gt;
|- &lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 1&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 0&lt;br /&gt;
| 9-Bit PWM.&lt;br /&gt;
|- &lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 1&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 1&lt;br /&gt;
| 10-Bit PWM.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Der Timer/Counter zählt nun permanent von 0 bis zur Obergrenze&lt;br /&gt;
und wieder zurück, er wird also als sogenannter Auf-/Ab Zähler betrieben. Die&lt;br /&gt;
Obergrenze hängt davon ab, ob wir mit 8, 9 oder 10-Bit PWM arbeiten wollen:&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
|- &lt;br /&gt;
| align=&amp;quot;center&amp;quot; | &#039;&#039;&#039;Auflösung&#039;&#039;&#039;&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | &#039;&#039;&#039;Obergrenze&#039;&#039;&#039;&lt;br /&gt;
| &#039;&#039;&#039;Frequenz&#039;&#039;&#039;&lt;br /&gt;
|- &lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 8&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 255&lt;br /&gt;
| f&amp;lt;sub&amp;gt;TC1&amp;lt;/sub&amp;gt; / 510&lt;br /&gt;
|- &lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 9&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 511&lt;br /&gt;
| f&amp;lt;sub&amp;gt;TC1&amp;lt;/sub&amp;gt; / 1022&lt;br /&gt;
|- &lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 10&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 1023&lt;br /&gt;
| f&amp;lt;sub&amp;gt;TC1&amp;lt;/sub&amp;gt; / 2046&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Zusätzlich muss mit den Bits &#039;&#039;&#039;COM1A1&#039;&#039;&#039; und &#039;&#039;&#039;COM1A0&#039;&#039;&#039; desselben&lt;br /&gt;
Registers die gewünschte Ausgabeart des Signals definiert werden:&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
|- &lt;br /&gt;
| align=&amp;quot;center&amp;quot; | &#039;&#039;&#039;COM1A1&#039;&#039;&#039;&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | &#039;&#039;&#039;COM1A0&#039;&#039;&#039;&lt;br /&gt;
| &#039;&#039;&#039;Bedeutung&#039;&#039;&#039;&lt;br /&gt;
|- &lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 0&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 0&lt;br /&gt;
| Keine Wirkung, Pin wird nicht geschaltet.&lt;br /&gt;
|- &lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 0&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 1&lt;br /&gt;
| Keine Wirkung, Pin wird nicht geschaltet.&lt;br /&gt;
|- &lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 1&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 0&lt;br /&gt;
| Nicht invertierende PWM.&amp;lt;br /&amp;gt;&lt;br /&gt;
Der Ausgangspin wird gelöscht beim Hochzählen und gesetzt beim&lt;br /&gt;
Herunterzählen.&lt;br /&gt;
|- &lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 1&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 1&lt;br /&gt;
| Invertierende PWM.&amp;lt;br /&amp;gt;&lt;br /&gt;
Der Ausgangspin wird gelöscht beim Herunterzählen und gesetzt beim&lt;br /&gt;
Hochzählen.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Der entsprechende Befehl um beispielsweise den Timer/Counter als&lt;br /&gt;
nicht invertierenden 10-Bit PWM zu verwenden heisst dann:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre class=&amp;quot;code&amp;quot;&amp;gt;&lt;br /&gt;
TCCR1A = (1&amp;lt;&amp;lt;PWM11)|(1&amp;lt;&amp;lt;PWM10)|(1&amp;lt;&amp;lt;COM1A1);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Damit der Timer/Counter überhaupt läuft müssen wir im Control&lt;br /&gt;
Register B &#039;&#039;&#039;TCCR1B&#039;&#039;&#039; noch den gewünschten Takt (Vorzähler) einstellen, und&lt;br /&gt;
somit auch die Frequenz des &#039;&#039;&#039;PWM&#039;&#039;&#039;-Signals bestimmen.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
|- &lt;br /&gt;
| align=&amp;quot;center&amp;quot; | &#039;&#039;&#039;CS12&#039;&#039;&#039;&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | &#039;&#039;&#039;CS11&#039;&#039;&#039;&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | &#039;&#039;&#039;CS10&#039;&#039;&#039;&lt;br /&gt;
| &#039;&#039;&#039;Bedeutung&#039;&#039;&#039;&lt;br /&gt;
|- &lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 0&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 0&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 0&lt;br /&gt;
| Stop. Der Timer/Counter wird gestoppt.&lt;br /&gt;
|- &lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 0&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 0&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 1&lt;br /&gt;
| CK&lt;br /&gt;
|- &lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 0&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 1&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 0&lt;br /&gt;
| CK / 8&lt;br /&gt;
|- &lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 0&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 1&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 1&lt;br /&gt;
| CK / 64&lt;br /&gt;
|- &lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 1&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 0&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 0&lt;br /&gt;
| CK / 256&lt;br /&gt;
|- &lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 1&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 0&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 1&lt;br /&gt;
| CK / 1024&lt;br /&gt;
|- &lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 1&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 1&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 0&lt;br /&gt;
| Externer Pin 1, negative Flanke&lt;br /&gt;
|- &lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 1&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 1&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 1&lt;br /&gt;
| Externer Pin 1, positive Flanke&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Also um einen Takt von CK / 1024 zu generieren, verwenden wir&lt;br /&gt;
folgenden Befehl:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre class=&amp;quot;code&amp;quot;&amp;gt;&lt;br /&gt;
TCCR1B = (1&amp;lt;&amp;lt;CS12) | (1&amp;lt;&amp;lt;CS10);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Jetzt muss nur noch der Vergleichswert festgelegt werden. Diesen&lt;br /&gt;
schreiben wir in das 16-Bit Timer/Counter Output Compare Register &#039;&#039;&#039;OCR1A&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre class=&amp;quot;code&amp;quot;&amp;gt;&lt;br /&gt;
OCR1A = xxx;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die folgende Grafik soll den Zusammenhang zwischen dem Vergleichswert und dem generierten &#039;&#039;&#039;PWM&#039;&#039;&#039;-Signal aufzeigen.&lt;br /&gt;
&lt;br /&gt;
[[Image:PWM Theorie 3.gif]]&lt;br /&gt;
&lt;br /&gt;
[[Image:PWM Theorie 4.gif]]&lt;br /&gt;
&lt;br /&gt;
Ach ja, fast hätte ich&#039;s vergessen. Das generierte &#039;&#039;&#039;PWM&#039;&#039;&#039;-Signal&lt;br /&gt;
wird am Output Compare Pin &#039;&#039;&#039;OC1&#039;&#039;&#039; des Timers ausgegeben und leider können wir&lt;br /&gt;
deshalb auch beim AT90S2313 ein einzelnes &#039;&#039;&#039;PWM&#039;&#039;&#039;-Signal mit dieser Methode generieren. Andere AVR-Typen verfügen über bis zu vier PWM-Ausgänge.&lt;br /&gt;
&lt;br /&gt;
= Die Timer/Counter des AVR =&lt;br /&gt;
&lt;br /&gt;
Die heutigen Mikrocontroller und insbesondere die RISC-AVR&#039;s sind für viele Steuerungsaufgaben zu schnell. Wenn wir beispielsweise eine LED oder Lampe blinken lassen wollen, können wir selbstverständlich nicht die CPU-Frequenz verwenden, da ja dann nichts mehr vom Blinken zu bemerken wäre.&lt;br /&gt;
&lt;br /&gt;
Wir brauchen also eine Möglichkeit, Vorgänge in Zeitabständen durchzuführen, die geringer als die Taktfrequenz des Controllers sind. Selbstverständlich sollte die resultierende Frequenz auch noch möglichst genau und stabil sein.&lt;br /&gt;
&lt;br /&gt;
Hier kommen die im AVR vorhandenen Timer/Counter zum Einsatz.&lt;br /&gt;
&lt;br /&gt;
Ein anderes Anwendungsgebiet ist die Zählung von Signalen, welche über einen I/O-Pin zugeführt werden können.&lt;br /&gt;
&lt;br /&gt;
Die folgenden Ausführungen beziehen sich auch den AT90S2313. Für andere Modelltypen müsst ihr euch die allenfalls notwendigen Anpassungen aus den Datenblättern der entsprechenden Controller herauslesen.&lt;br /&gt;
&lt;br /&gt;
Wir unterscheiden grundsätzlich zwischen 8-Bit Timern, welche eine Auflösung von 256 aufweisen und 16-Bit Timern mit (logischerweise) einer Auflösung von 65536. Als Eingangstakt für die Timer/Counter kann entweder die CPU-Taktfrequenz, der Vorteiler-Ausgang oder ein an einen I/O-Pin angelegtes Signal verwendet werden. Wenn ein externes Signal verwendet wird, so darf dessen Frequenz nicht höher sein als die Hälfte des CPU-Taktes.&lt;br /&gt;
&lt;br /&gt;
== Der Vorzähler (Prescaler) ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Beide Timer/Counter werden im Timerbetrieb über den gleichen Vorzähler versorgt. --&amp;gt;&lt;br /&gt;
Der Vorzähler dient dazu, den CPU-Takt vorerst um einen einstellbaren Faktor zu reduzieren. Die so geteilte Frequenz wird den Eingängen der Timer zugeführt.&lt;br /&gt;
&lt;br /&gt;
Wenn wir mit einer einem CPU-Takt von 4 MHz arbeiten und den Vorteiler auf 1024 einstellen, wird also der Timer mit einer Frequenz von 4 MHz / 1024, also mit ca. 4 kHz versorgt. Wenn also der Timer läuft, so wird das Daten- bzw. Zählregister (TCNTx) mit dieser Frequenz inkrementiert.&lt;br /&gt;
&lt;br /&gt;
== 8-Bit Timer/Counter ==&lt;br /&gt;
&lt;br /&gt;
Alle AVR-Modelle verfügen über mindestens einen, teilweise sogar zwei, 8-Bit Timer.&lt;br /&gt;
&lt;br /&gt;
Der 8-Bit Timer wird z.B bei AT90S2313 über folgende Register angesprochen (bei anderen Typen weitestgehend analog):&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
|- &lt;br /&gt;
| &#039;&#039;&#039;TCCR0&#039;&#039;&#039;&lt;br /&gt;
| &#039;&#039;&#039;T&#039;&#039;&#039;imer/&#039;&#039;&#039;C&#039;&#039;&#039;ounter &#039;&#039;&#039;C&#039;&#039;&#039;ontrol &#039;&#039;&#039;R&#039;&#039;&#039;egister&lt;br /&gt;
Timer &#039;&#039;&#039;0&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
In diesem Register stellen wir ein, wie wir den Timer/Counter verwenden möchten.&lt;br /&gt;
&lt;br /&gt;
Das Register ist wie folgt aufgebaut:&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
|- &lt;br /&gt;
| &#039;&#039;&#039;Bit&#039;&#039;&#039;&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 7&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 6&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 5&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 4&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 3&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 2&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 1&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 0&lt;br /&gt;
|- &lt;br /&gt;
| &#039;&#039;&#039;Name&#039;&#039;&#039;&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | &#039;&#039;&#039;-&#039;&#039;&#039;&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | &#039;&#039;&#039;-&#039;&#039;&#039;&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | &#039;&#039;&#039;-&#039;&#039;&#039;&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | &#039;&#039;&#039;-&#039;&#039;&#039;&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | &#039;&#039;&#039;-&#039;&#039;&#039;&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | &#039;&#039;&#039;CS02&#039;&#039;&#039;&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | &#039;&#039;&#039;CS01&#039;&#039;&#039;&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | &#039;&#039;&#039;CS00&#039;&#039;&#039;&lt;br /&gt;
|- &lt;br /&gt;
| &#039;&#039;&#039;R/W&#039;&#039;&#039;&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | R&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | R&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | R&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | R&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | R&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | R/W&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | R/W&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | R/W&lt;br /&gt;
|- &lt;br /&gt;
| &#039;&#039;&#039;Initialwert&#039;&#039;&#039;&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 0&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 0&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 0&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 0&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 0&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 0&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 0&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 0&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;CS02, CS01, CS00&#039;&#039;&#039; (&#039;&#039;&#039;C&#039;&#039;&#039;lock &#039;&#039;&#039;S&#039;&#039;&#039;elect Bits)&lt;br /&gt;
:Diese 3 Bits bestimmen die Quelle für den Timer/Counter:&lt;br /&gt;
&amp;lt;dl&amp;gt;&amp;lt;dd&amp;gt;&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
|- &lt;br /&gt;
| align=&amp;quot;center&amp;quot; | CS02&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | CS01&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | CS00&lt;br /&gt;
| Resultat&lt;br /&gt;
|- &lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 0&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 0&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 0&lt;br /&gt;
| Stopp, Der Timer/Counter wird angehalten.&lt;br /&gt;
|- &lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 0&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 0&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 1&lt;br /&gt;
| CPU-Takt&lt;br /&gt;
|- &lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 0&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 1&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 0&lt;br /&gt;
| CPU-Takt / 8&lt;br /&gt;
|- &lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 0&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 1&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 1&lt;br /&gt;
| CPU-Takt / 64&lt;br /&gt;
|- &lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 1&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 0&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 0&lt;br /&gt;
| CPU-Takt / 256&lt;br /&gt;
|- &lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 1&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 0&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 1&lt;br /&gt;
| CPU-Takt / 1024&lt;br /&gt;
|- &lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 1&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 1&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 0&lt;br /&gt;
| Externer Pin &#039;&#039;&#039;TO&#039;&#039;&#039;, fallende Flanke&lt;br /&gt;
|- &lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 1&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 1&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 1&lt;br /&gt;
| Externer Pin &#039;&#039;&#039;TO&#039;&#039;&#039;, steigende Flanke&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/dd&amp;gt;&lt;br /&gt;
&amp;lt;/dl&amp;gt;&lt;br /&gt;
:Wenn als Quelle der externe Pin &#039;&#039;&#039;TO&#039;&#039;&#039; verwendet wird, so wird ein Flankenwechsel auch erkannt, wenn der Pin &#039;&#039;&#039;TO&#039;&#039;&#039; als Ausgang geschaltet ist.&lt;br /&gt;
&lt;br /&gt;
|- &lt;br /&gt;
| &#039;&#039;&#039;TCNT0&#039;&#039;&#039;&lt;br /&gt;
| &#039;&#039;&#039;T&#039;&#039;&#039;imer/&#039;&#039;&#039;C&#039;&#039;&#039;ou&#039;&#039;&#039;nt&#039;&#039;&#039;er Daten Register Timer &#039;&#039;&#039;0&#039;&#039;&#039;&amp;lt;br /&amp;gt;&lt;br /&gt;
Dieses ist als 8-Bit Aufwärtszähler mit Schreib- und Lesezugriff&lt;br /&gt;
realisiert. Wenn der Zähler den Wert 255 erreicht hat beginnt er beim&lt;br /&gt;
nächsten Zyklus wieder bei 0.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
|- &lt;br /&gt;
| &#039;&#039;&#039;Bit&#039;&#039;&#039;&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 7&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 6&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 5&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 4&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 3&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 2&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 1&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 0&lt;br /&gt;
|- &lt;br /&gt;
| &#039;&#039;&#039;Name&#039;&#039;&#039;&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | &#039;&#039;&#039;MSB&#039;&#039;&#039;&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | &amp;amp;nbsp;&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | &amp;amp;nbsp;&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | &amp;amp;nbsp;&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | &amp;amp;nbsp;&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | &amp;amp;nbsp;&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | &amp;amp;nbsp;&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | &#039;&#039;&#039;LSB&#039;&#039;&#039;&lt;br /&gt;
|- &lt;br /&gt;
| &#039;&#039;&#039;R/W&#039;&#039;&#039;&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | R/W&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | R/W&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | R/W&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | R/W&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | R/W&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | R/W&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | R/W&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | R/W&lt;br /&gt;
|- &lt;br /&gt;
| &#039;&#039;&#039;Initialwert&#039;&#039;&#039;&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 0&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 0&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 0&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 0&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 0&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 0&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 0&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 0&lt;br /&gt;
|}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Um nun also den Timer0 in Betrieb zu setzen und ihn mit einer Frequenz von 1/1024-tel des CPU-Taktes zählen zu lassen, schreiben wir die folgende Befehlszeile:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre class=&amp;quot;code&amp;quot;&amp;gt;&lt;br /&gt;
TCCR0 = (1&amp;lt;&amp;lt;CS00)|(1&amp;lt;&amp;lt;CS02);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Der Zähler zählt nun aufwärts bis 255, um dann wieder bei 0 zu beginnen. Der aktuelle Zählerstand steht in TCNT0. Bei jedem Überlauf von 255 auf 0 wird das Timer Overflow Flag &#039;&#039;&#039;TOV0&#039;&#039;&#039; im Timer Interrupt Flag &#039;&#039;&#039;TIFR&#039;&#039;&#039;-Register gesetzt und, falls so konfiguriert, ein entsprechender Timer-Overflow-Interrupt ausgelöst und die daran gebundene Interrupt-Routine abgearbeitet.&lt;br /&gt;
&lt;br /&gt;
== 16-Bit Timer/Counter ==&lt;br /&gt;
&lt;br /&gt;
Viele AVR-Modelle besitzen ausser den 8-Bit Timern auch 16-Bit Timer. Die 16-Bit Timer/Counter sind etwas komplexer aufgebaut als die 8-Bit Timer/Counter, bieten dafür aber auch viel mehr Möglichkeiten, als da sind:&lt;br /&gt;
&lt;br /&gt;
* Die [[PWM]]-Betriebsart Erzeugung eines pulsweitenmodulierten Ausgangssignals. &lt;br /&gt;
* Vergleichswert-Überprüfung mit Erzeugung eines Ausgangssignals (Output Compare Match).&lt;br /&gt;
* Einfangen eines Eingangssignals mit Speicherung des aktuellen Zählerwertes (Input Capturing), mit zuschaltbarer Rauschunterdrückung (Noise Filtering).&lt;br /&gt;
&lt;br /&gt;
Folgende Register sind dem Timer/Counter 1 zugeordnet:&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
|- &lt;br /&gt;
| &#039;&#039;&#039;TCCR1A&#039;&#039;&#039;&lt;br /&gt;
| &#039;&#039;&#039;T&#039;&#039;&#039;imer/&#039;&#039;&#039;C&#039;&#039;&#039;ounter &#039;&#039;&#039;C&#039;&#039;&#039;ontrol &#039;&#039;&#039;R&#039;&#039;&#039;egister &#039;&#039;&#039;A&#039;&#039;&#039; Timer &#039;&#039;&#039;1&#039;&#039;&#039;&amp;lt;br /&amp;gt;&lt;br /&gt;
In diesem und dem folgenden Register stellen wir ein, wie wir den Timer/Counter verwenden möchten.&amp;lt;br /&amp;gt;&lt;br /&gt;
Das Register ist wie folgt aufgebaut:&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
|- &lt;br /&gt;
| &#039;&#039;&#039;Bit&#039;&#039;&#039;&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 7&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 6&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 5&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 4&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 3&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 2&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 1&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 0&lt;br /&gt;
|- &lt;br /&gt;
| &#039;&#039;&#039;Name&#039;&#039;&#039;&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | &#039;&#039;&#039;COM1A1&#039;&#039;&#039;&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | &#039;&#039;&#039;COM1A0&#039;&#039;&#039;&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | &#039;&#039;&#039;-&#039;&#039;&#039;&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | &#039;&#039;&#039;-&#039;&#039;&#039;&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | &#039;&#039;&#039;-&#039;&#039;&#039;&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | &#039;&#039;&#039;-&#039;&#039;&#039;&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | &#039;&#039;&#039;PWM11&#039;&#039;&#039;&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | &#039;&#039;&#039;PWM10&#039;&#039;&#039;&lt;br /&gt;
|- &lt;br /&gt;
| &#039;&#039;&#039;R/W&#039;&#039;&#039;&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | R/W&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | R/W&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | R&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | R&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | R&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | R&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | R/W&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | R/W&lt;br /&gt;
|- &lt;br /&gt;
| &#039;&#039;&#039;Initialwert&#039;&#039;&#039;&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 0&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 0&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 0&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 0&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 0&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 0&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 0&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 0&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;COM1A1&#039;&#039;&#039;, &#039;&#039;&#039;COM1A0&#039;&#039;&#039; (&#039;&#039;&#039;Co&#039;&#039;&#039;mpare &#039;&#039;&#039;M&#039;&#039;&#039;atch Control Bits)&lt;br /&gt;
:Diese 2 Bits bestimmen die Aktion, welche am Output-Pin &#039;&#039;&#039;OC1&#039;&#039;&#039; ausgeführt werden soll, wenn der Wert des Datenregisters des Timer/Counter 1 den Wert des Vergleichsregisters erreicht, also ein so genannter Compare Match auftritt.&lt;br /&gt;
:Der Pin &#039;&#039;&#039;OC1&#039;&#039;&#039; (&#039;&#039;&#039;PB3&#039;&#039;&#039; beim 2313) muss mit dem Datenrichtungsregister als Ausgang konfiguriert werden.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;dl&amp;gt;&amp;lt;dd&amp;gt;&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
|- &lt;br /&gt;
| align=&amp;quot;center&amp;quot; | COM1A1&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | COM1A0&lt;br /&gt;
| Resultat&lt;br /&gt;
|- &lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 0&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 0&lt;br /&gt;
| Output-Pin &#039;&#039;&#039;OC1&#039;&#039;&#039; wird nicht angesteuert.&lt;br /&gt;
|- &lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 0&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 1&lt;br /&gt;
| Das Signal am Pin &#039;&#039;&#039;OC1&#039;&#039;&#039; wird invertiert (Toggle).&lt;br /&gt;
|- &lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 1&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 0&lt;br /&gt;
| Der Output Pin &#039;&#039;&#039;OC1&#039;&#039;&#039; wird auf 0 gesetzt.&lt;br /&gt;
|- &lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 1&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 1&lt;br /&gt;
| Der Output Pin &#039;&#039;&#039;OC1&#039;&#039;&#039; wird auf 1 gesetzt.&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/dd&amp;gt;&amp;lt;/dl&amp;gt;&lt;br /&gt;
:In der PWM-Betriebsart haben diese Bits eine andere Funktion.&lt;br /&gt;
&amp;lt;dl&amp;gt;&amp;lt;dd&amp;gt;&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
|- &lt;br /&gt;
| align=&amp;quot;center&amp;quot; | COM1A1&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | COM1A0&lt;br /&gt;
| Resultat&lt;br /&gt;
|- &lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 0&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 0&lt;br /&gt;
| Output-Pin &#039;&#039;&#039;OC1&#039;&#039;&#039; wird nicht angesteuert.&lt;br /&gt;
|- &lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 0&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 1&lt;br /&gt;
| Output-Pin &#039;&#039;&#039;OC1&#039;&#039;&#039; wird nicht angesteuert.&lt;br /&gt;
|- &lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 1&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 0&lt;br /&gt;
| Wird beim Hochzählen der Wert im Vergleichsregister erreicht, so wird der Pin &#039;&#039;&#039;OC1&#039;&#039;&#039; auf 0 gesetzt.&lt;br /&gt;
Wird beim Herunterzählen der Wert im Vergleichsregister erreicht, so wird der Pin auf 1 gesetzt.&lt;br /&gt;
&lt;br /&gt;
Man nennt dies &#039;&#039;nicht invertierende PWM&#039;&#039;.&lt;br /&gt;
|- &lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 1&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 1&lt;br /&gt;
| Wird beim Hochzählen der Wert im Vergleichsregister erreicht, so wird der Pin &#039;&#039;&#039;OC1&#039;&#039;&#039; auf 1 gesetzt.&lt;br /&gt;
Wird beim Herunterzählen der Wert im Vergleichsregister erreicht, so wird der Pin auf 0 gesetzt.&lt;br /&gt;
&lt;br /&gt;
Man nennt dies &#039;&#039;invertierende PWM&#039;&#039;.&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/dd&amp;gt;&amp;lt;/dl&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;PWM11&#039;&#039;&#039;, &#039;&#039;&#039;PWM10&#039;&#039;&#039; (&#039;&#039;&#039;PWM&#039;&#039;&#039; Mode Select Bits)&lt;br /&gt;
:Mit diesen 2 Bits wird die PWM-Betriebsart des Timer/Counter 1 gesteuert.&lt;br /&gt;
&amp;lt;dl&amp;gt;&amp;lt;dd&amp;gt;&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
|- &lt;br /&gt;
| align=&amp;quot;center&amp;quot; | PWM11&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | PWM10&lt;br /&gt;
| Resultat&lt;br /&gt;
|- &lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 0&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 0&lt;br /&gt;
| Die PWM-Betriebsart ist nicht aktiviert. Timer/Counter 1 arbeitet als normaler Timer bzw. Zähler.&lt;br /&gt;
|- &lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 0&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 1&lt;br /&gt;
| 8-Bit PWM Betriebsart aktivieren.&lt;br /&gt;
|- &lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 1&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 0&lt;br /&gt;
| 9-Bit PWM Betriebsart aktivieren.&lt;br /&gt;
|- &lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 1&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 1&lt;br /&gt;
| 10-Bit PWM Betriebsart aktivieren.&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/dd&amp;gt;&amp;lt;/dl&amp;gt;&lt;br /&gt;
|- &lt;br /&gt;
| &#039;&#039;&#039;TCCR1B&#039;&#039;&#039;&lt;br /&gt;
| &#039;&#039;&#039;T&#039;&#039;&#039;imer/&#039;&#039;&#039;C&#039;&#039;&#039;ounter &#039;&#039;&#039;C&#039;&#039;&#039;ontrol &#039;&#039;&#039;R&#039;&#039;&#039;egister &#039;&#039;&#039;B&#039;&#039;&#039; Timer &#039;&#039;&#039;1&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
|- &lt;br /&gt;
| &#039;&#039;&#039;Bit&#039;&#039;&#039;&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 7&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 6&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 5&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 4&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 3&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 2&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 1&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 0&lt;br /&gt;
|- &lt;br /&gt;
| &#039;&#039;&#039;Name&#039;&#039;&#039;&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | &#039;&#039;&#039;ICNC1&#039;&#039;&#039;&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | &#039;&#039;&#039;ICES1&#039;&#039;&#039;&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | &#039;&#039;&#039;-&#039;&#039;&#039;&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | &#039;&#039;&#039;-&#039;&#039;&#039;&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | &#039;&#039;&#039;CTC1&#039;&#039;&#039;&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | &#039;&#039;&#039;CS12&#039;&#039;&#039;&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | &#039;&#039;&#039;CS11&#039;&#039;&#039;&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | &#039;&#039;&#039;CS10&#039;&#039;&#039;&lt;br /&gt;
|- &lt;br /&gt;
| &#039;&#039;&#039;R/W&#039;&#039;&#039;&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | R/W&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | R/W&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | R&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | R&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | R/W&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | R/W&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | R/W&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | R/W&lt;br /&gt;
|- &lt;br /&gt;
| &#039;&#039;&#039;Initialwert&#039;&#039;&#039;&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 0&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 0&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 0&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 0&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 0&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 0&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 0&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 0&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;ICNC1&#039;&#039;&#039; (&#039;&#039;&#039;I&#039;&#039;&#039;nput &#039;&#039;&#039;C&#039;&#039;&#039;apture &#039;&#039;&#039;N&#039;&#039;&#039;oise &#039;&#039;&#039;C&#039;&#039;&#039;anceler (4 CKs) Timer/Counter 1&lt;br /&gt;
:oder auf Deutsch Rauschunterdrückung des Eingangssignals.&lt;br /&gt;
:Wenn dieses Bit gesetzt ist und mit dem Input Capture Signal gearbeitet wird so werden nach der Triggerung des Signals mit der entsprechenden Flanke (steigend oder fallend) am Input Capture Pin &#039;&#039;&#039;ICP&#039;&#039;&#039; jeweils 4 Messungen mit der CPU-Frequenz des Eingangssignals abgefragt. Nur dann, wenn alle 4 Messungen den gleichen Zustand aufweisen gilt das Signal als erkannt.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;ICES1&#039;&#039;&#039; (&#039;&#039;&#039;I&#039;&#039;&#039;nput &#039;&#039;&#039;C&#039;&#039;&#039;apture &#039;&#039;&#039;E&#039;&#039;&#039;dge &#039;&#039;&#039;S&#039;&#039;&#039;elect Timer/Counter &#039;&#039;&#039;1&#039;&#039;&#039;)&lt;br /&gt;
:Mit diesem Bit wird bestimmt, ob die steigende (&#039;&#039;&#039;ICES1&#039;&#039;&#039;=1) oder fallende (&#039;&#039;&#039;ICES1&#039;&#039;&#039;=0) Flanke zur Auswertung des Input Capture Signals an Pin &#039;&#039;&#039;ICP&#039;&#039;&#039; heran gezogen wird.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;CTC1&#039;&#039;&#039; (&#039;&#039;&#039;C&#039;&#039;&#039;lear &#039;&#039;&#039;T&#039;&#039;&#039;imer/&#039;&#039;&#039;C&#039;&#039;&#039;ounter on Compare Match Timer/Counter &#039;&#039;&#039;1&#039;&#039;&#039;)&lt;br /&gt;
:Wenn dieses Bit gesetzt ist, so wird nach einer Übereinstimmung des Datenregisters &#039;&#039;&#039;TCNT1H&#039;&#039;&#039;/&#039;&#039;&#039;TCNT1L&#039;&#039;&#039; mit dem Vergleichswert in &#039;&#039;&#039;OCR1H&#039;&#039;&#039;/&#039;&#039;&#039;OCR1L&#039;&#039;&#039; das Datenregister &#039;&#039;&#039;TCNT1H&#039;&#039;&#039;/&#039;&#039;&#039;TCNT1L&#039;&#039;&#039; auf 0 gesetzt.&lt;br /&gt;
:Da die Übereinstimmung im Takt nach dem Vergleich behandelt wird, ergibt sich je nach eingestelltem Vorzähler ein etwas anderes Zählverhalten:&lt;br /&gt;
:Wenn der Vorteiler auf 1 gestellt ist und C der jeweilige Zählerwert ist, dann nimmt das Datenregister, im CPU-Takt betrachtet, folgende Werte an:&lt;br /&gt;
:... | C-2 | C-1 | C | 0 | 1 |...&lt;br /&gt;
:Wenn der Vorteiler z.B. auf 8 eingestellt ist, dann nimmt das Datenregister folgende Werte an:&lt;br /&gt;
:... | C-2, C-2, C-2, C-2, C-2, C-2, C-2, C-2 | C-1, C-1, C-1, C-1, C-1, C-1, C-1, C-1 | C, 0, 0, 0, 0, 0, 0, 0 |...&lt;br /&gt;
:In der PWM-Betriebsart hat dieses Bit keine Funktion.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;CS12&#039;&#039;&#039;, &#039;&#039;&#039;CS11&#039;&#039;&#039;, &#039;&#039;&#039;CS10&#039;&#039;&#039; (&#039;&#039;&#039;C&#039;&#039;&#039;lock &#039;&#039;&#039;S&#039;&#039;&#039;elect Bits)&lt;br /&gt;
:Diese 3 Bits bestimmen die Quelle für den Timer/Counter:&lt;br /&gt;
&amp;lt;dl&amp;gt;&amp;lt;dd&amp;gt;&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
|- &lt;br /&gt;
| align=&amp;quot;center&amp;quot; | CS12&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | CS11&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | CS10&lt;br /&gt;
| Resultat&lt;br /&gt;
|- &lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 0&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 0&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 0&lt;br /&gt;
| Stopp, Der Timer/Counter wird angehalten.&lt;br /&gt;
|- &lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 0&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 0&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 1&lt;br /&gt;
| CPU-Takt&lt;br /&gt;
|- &lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 0&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 1&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 0&lt;br /&gt;
| CPU-Takt / 8&lt;br /&gt;
|- &lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 0&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 1&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 1&lt;br /&gt;
| CPU-Takt / 64&lt;br /&gt;
|- &lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 1&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 0&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 0&lt;br /&gt;
| CPU-Takt / 256&lt;br /&gt;
|- &lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 1&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 0&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 1&lt;br /&gt;
| CPU-Takt / 1024&lt;br /&gt;
|- &lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 1&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 1&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 0&lt;br /&gt;
| Externer Pin TO, fallende Flanke&lt;br /&gt;
|- &lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 1&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 1&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 1&lt;br /&gt;
| Externer Pin T0, steigende Flanke&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/dd&amp;gt;&amp;lt;/dl&amp;gt;&lt;br /&gt;
:Wenn als Quelle der externe Pin T0 verwendet wird, so wird ein Flankenwechsel auch erkannt, wenn der Pin T0 als Ausgang geschaltet ist.&lt;br /&gt;
|- &lt;br /&gt;
| &#039;&#039;&#039;TCNT1H&#039;&#039;&#039;&amp;lt;br /&amp;gt;&#039;&#039;&#039;TCNT1L&#039;&#039;&#039;&lt;br /&gt;
| &#039;&#039;&#039;T&#039;&#039;&#039;imer/&#039;&#039;&#039;C&#039;&#039;&#039;ou&#039;&#039;&#039;nt&#039;&#039;&#039;er Daten Register Timer/Counter &#039;&#039;&#039;1&#039;&#039;&#039;&lt;br /&gt;
Dieses ist als 16-Bit Aufwärtszähler mit Schreib- und Lesezugriff realisiert. Wenn der Zähler den Wert 65535 erreicht hat, beginnt er beim nächsten Zyklus wieder bei 0.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
|- &lt;br /&gt;
| &#039;&#039;&#039;Bit&#039;&#039;&#039;&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 7&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 6&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 5&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 4&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 3&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 2&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 1&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 0&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | &amp;amp;nbsp;&lt;br /&gt;
|- &lt;br /&gt;
| &#039;&#039;&#039;Name&#039;&#039;&#039;&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | &#039;&#039;&#039;MSB&#039;&#039;&#039;&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | &amp;amp;nbsp;&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | &amp;amp;nbsp;&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | &amp;amp;nbsp;&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | &amp;amp;nbsp;&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | &amp;amp;nbsp;&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | &amp;amp;nbsp;&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | &amp;amp;nbsp;&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | &#039;&#039;&#039;TCNT1H&#039;&#039;&#039;&lt;br /&gt;
|- &lt;br /&gt;
| &#039;&#039;&#039;Name&#039;&#039;&#039;&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | &amp;amp;nbsp;&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | &amp;amp;nbsp;&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | &amp;amp;nbsp;&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | &amp;amp;nbsp;&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | &amp;amp;nbsp;&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | &amp;amp;nbsp;&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | &amp;amp;nbsp;&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | &#039;&#039;&#039;LSB&#039;&#039;&#039;&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | &#039;&#039;&#039;TCNT1L&#039;&#039;&#039;&lt;br /&gt;
|- &lt;br /&gt;
| &#039;&#039;&#039;R/W&#039;&#039;&#039;&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | R/W&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | R/W&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | R/W&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | R/W&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | R/W&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | R/W&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | R/W&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | R/W&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | &amp;amp;nbsp;&lt;br /&gt;
|- &lt;br /&gt;
| &#039;&#039;&#039;Initialwert&#039;&#039;&#039;&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 0&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 0&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 0&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 0&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 0&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 0&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 0&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 0&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | &amp;amp;nbsp;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
In der PWM-Betriebsart wird das Register als Auf/Ab-Zähler verwendet, d.h. der Wert steigt zuerst von 0 bis er den Überlauf von 65535 auf 0 erreicht hat. Dann zählt das Register rückwärts wiederum bis 0.&lt;br /&gt;
&lt;br /&gt;
Zum Auslesen des Registers wird von der CPU ein internes TEMP-Register verwendet. Das gleiche Register wird auch verwendet, wenn auf &#039;&#039;&#039;OCR1&#039;&#039;&#039; oder &#039;&#039;&#039;ICR1&#039;&#039;&#039; zugegriffen wird.&lt;br /&gt;
&lt;br /&gt;
Deshalb müssen vor dem Zugriff auf eines dieser Register alle Interrupts gesperrt werden, weil sonst die Möglichkeit des gleichzeitigen Zugriffs auf das Temporärregister gegeben ist, was natürlich zu fehlerhaftem Verhalten des Programms führt.. Zudem muss zuerst &#039;&#039;&#039;TCNT1L&#039;&#039;&#039; und erst danach &#039;&#039;&#039;TCNT1H&#039;&#039;&#039; ausgelesen werden.&lt;br /&gt;
&lt;br /&gt;
Wenn in das Register geschrieben werden soll, müssen ebenfalls alle Interrrupts gesperrt werden. Dann muss zuerst das &#039;&#039;&#039;TCNT1H&#039;&#039;&#039;-Register und erst danach das &#039;&#039;&#039;TCNT1L&#039;&#039;&#039;-Register geschrieben werden, also genau die umgekehrte Reihenfolge wie beim Lesen des Registers.&lt;br /&gt;
|- &lt;br /&gt;
| &#039;&#039;&#039;OCR1H&#039;&#039;&#039;&amp;lt;br /&amp;gt;&#039;&#039;&#039;OCR1L&#039;&#039;&#039;&lt;br /&gt;
| Timer/Counter &#039;&#039;&#039;O&#039;&#039;&#039;utput &#039;&#039;&#039;C&#039;&#039;&#039;ompare &#039;&#039;&#039;R&#039;&#039;&#039;egister Timer/Counter &#039;&#039;&#039;1&#039;&#039;&#039;&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
|- &lt;br /&gt;
| &#039;&#039;&#039;Bit&#039;&#039;&#039;&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 7&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 6&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 5&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 4&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 3&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 2&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 1&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 0&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | &amp;amp;nbsp;&lt;br /&gt;
|- &lt;br /&gt;
| &#039;&#039;&#039;Name&#039;&#039;&#039;&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | &#039;&#039;&#039;MSB&#039;&#039;&#039;&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | &amp;amp;nbsp;&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | &amp;amp;nbsp;&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | &amp;amp;nbsp;&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | &amp;amp;nbsp;&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | &amp;amp;nbsp;&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | &amp;amp;nbsp;&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | &amp;amp;nbsp;&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | &#039;&#039;&#039;OCR1H&#039;&#039;&#039;&lt;br /&gt;
|- &lt;br /&gt;
| &#039;&#039;&#039;Name&#039;&#039;&#039;&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | &amp;amp;nbsp;&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | &amp;amp;nbsp;&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | &amp;amp;nbsp;&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | &amp;amp;nbsp;&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | &amp;amp;nbsp;&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | &amp;amp;nbsp;&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | &amp;amp;nbsp;&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | &#039;&#039;&#039;LSB&#039;&#039;&#039;&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | &#039;&#039;&#039;OCR1L&#039;&#039;&#039;&lt;br /&gt;
|- &lt;br /&gt;
| &#039;&#039;&#039;R/W&#039;&#039;&#039;&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | R/W&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | R/W&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | R/W&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | R/W&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | R/W&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | R/W&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | R/W&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | R/W&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | &amp;amp;nbsp;&lt;br /&gt;
|- &lt;br /&gt;
| &#039;&#039;&#039;Initialwert&#039;&#039;&#039;&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 0&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 0&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 0&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 0&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 0&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 0&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 0&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 0&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | &amp;amp;nbsp;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Der Wert im Output Compare Register wird ständig mit dem aktuellen Wert im Datenregister TCNT1H/TCNT1L verglichen. Stimmen die beiden Werte überein, so wird ein sogenannter Output Compare Match ausgelöst. Die entsprechenden Aktionen werden über die Timer/Counter 1 Control und Status Register eingestellt.&lt;br /&gt;
&lt;br /&gt;
Zum Auslesen des Registers wird von der CPU ein internes TEMP-Register verwendet. Das gleiche Register wird auch verwendet, wenn auf &#039;&#039;&#039;OCR1&#039;&#039;&#039; oder &#039;&#039;&#039;ICR1&#039;&#039;&#039; zugegriffen wird.&lt;br /&gt;
Deshalb müssen vor dem Zugriff auf eines dieser Register alle Interrupts gesperrt werden, weil sonst die Möglichkeit des gleichzeitigen Zugriffs auf das Temporärregister gegeben ist, was natürlich zu fehlerhaftem Verhalten des Programms führt.. Zudem muss zuerst &#039;&#039;&#039;TCNT1L&#039;&#039;&#039; und erst danach &#039;&#039;&#039;TCNT1H&#039;&#039;&#039; ausgelesen werden.&lt;br /&gt;
&lt;br /&gt;
Wenn in das Register geschrieben werden soll, müssen ebenfalls alle Interrupts gesperrt werden. Dann muss zuerst das &#039;&#039;&#039;TCNT1H&#039;&#039;&#039;-Register und erst danach das &#039;&#039;&#039;TCNT1L&#039;&#039;&#039;-Register geschrieben werden, also genau die umgekehrte Reihenfolge wie beim Lesen des Registers.&lt;br /&gt;
|- &lt;br /&gt;
| &#039;&#039;&#039;ICR1H&#039;&#039;&#039;&amp;lt;br /&amp;gt;&#039;&#039;&#039;ICR1L&#039;&#039;&#039;&lt;br /&gt;
| Timer/Counter &#039;&#039;&#039;I&#039;&#039;&#039;nput &#039;&#039;&#039;C&#039;&#039;&#039;apture &#039;&#039;&#039;R&#039;&#039;&#039;egister Timer/Counter &#039;&#039;&#039;1&#039;&#039;&#039;&amp;lt;br /&amp;gt;&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
|- &lt;br /&gt;
| &#039;&#039;&#039;Bit&#039;&#039;&#039;&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 7&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 6&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 5&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 4&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 3&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 2&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 1&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 0&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | &amp;amp;nbsp;&lt;br /&gt;
|- &lt;br /&gt;
| &#039;&#039;&#039;Name&#039;&#039;&#039;&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | &#039;&#039;&#039;MSB&#039;&#039;&#039;&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | &amp;amp;nbsp;&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | &amp;amp;nbsp;&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | &amp;amp;nbsp;&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | &amp;amp;nbsp;&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | &amp;amp;nbsp;&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | &amp;amp;nbsp;&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | &amp;amp;nbsp;&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | &#039;&#039;&#039;ICR1&#039;&#039;&#039;&#039;&#039;&#039;H&#039;&#039;&#039;&lt;br /&gt;
|- &lt;br /&gt;
| &#039;&#039;&#039;Name&#039;&#039;&#039;&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | &amp;amp;nbsp;&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | &amp;amp;nbsp;&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | &amp;amp;nbsp;&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | &amp;amp;nbsp;&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | &amp;amp;nbsp;&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | &amp;amp;nbsp;&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | &amp;amp;nbsp;&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | &#039;&#039;&#039;LSB&#039;&#039;&#039;&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | &#039;&#039;&#039;ICR1&#039;&#039;&#039;&#039;&#039;&#039;L&#039;&#039;&#039;&lt;br /&gt;
|- &lt;br /&gt;
| &#039;&#039;&#039;R/W&#039;&#039;&#039;&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | R&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | R&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | R&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | R&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | R&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | R&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | R&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | R&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | &amp;amp;nbsp;&lt;br /&gt;
|- &lt;br /&gt;
| &#039;&#039;&#039;Initialwert&#039;&#039;&#039;&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 0&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 0&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 0&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 0&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 0&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 0&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 0&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 0&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | &amp;amp;nbsp;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Das Input Capture Register ist ein 16-Bit Register mit Lesezugriff. Es kann nicht beschrieben werden.&lt;br /&gt;
&lt;br /&gt;
Wenn am Input Capture Pin &#039;&#039;&#039;ICP&#039;&#039;&#039; die gemäß Einstellungen im &#039;&#039;&#039;TCCR1B&#039;&#039;&#039; definierte Flanke erkannt wird, so wird der aktuelle Inhalt des Datenregisters &#039;&#039;&#039;TCNT1H&#039;&#039;&#039;/&#039;&#039;&#039;TCNT1L&#039;&#039;&#039; sofort in dieses Register kopiert und das Input Capture Flag &#039;&#039;&#039;ICF1&#039;&#039;&#039; im Timer Interrupt Flag Register &#039;&#039;&#039;TIFR&#039;&#039;&#039; gesetzt.&lt;br /&gt;
&lt;br /&gt;
Wie bereits oben erwähnt, müssen vor dem Zugriff auf dieses Register alle Interrupts gesperrt werden. Zudem müssen Low- und Highbyte des Registers in der richtigen Reihenfolge bearbeitet werden:&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;0&amp;quot;&lt;br /&gt;
|- &lt;br /&gt;
| Lesen:&lt;br /&gt;
| &#039;&#039;&#039;ICR1L&#039;&#039;&#039; -&amp;gt; &#039;&#039;&#039;ICR1H&#039;&#039;&#039;&lt;br /&gt;
|- &lt;br /&gt;
| Schreiben:&lt;br /&gt;
| &#039;&#039;&#039;ICR1H&#039;&#039;&#039; -&amp;gt; &#039;&#039;&#039;ICR1L&#039;&#039;&#039;&lt;br /&gt;
|}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Die PWM-Betriebsart ===&lt;br /&gt;
&lt;br /&gt;
Wenn der Timer/Counter 1 in der PWM-Betriebsart betrieben wird, so bilden das Datenregister &#039;&#039;&#039;TCNT1H&#039;&#039;&#039;/&#039;&#039;&#039;TCNT1L&#039;&#039;&#039; und das Vergleichsregister &#039;&#039;&#039;OCR1H&#039;&#039;&#039;/&#039;&#039;&#039;OCR1L&#039;&#039;&#039; einen 8-, 9- oder 10-Bit, frei laufenden PWM-Modulator, welcher als PWM-Signal am &#039;&#039;&#039;OC1&#039;&#039;&#039;-Pin (&#039;&#039;&#039;PB3&#039;&#039;&#039; beim 2313) abgegriffen werden kann. Das Datenregister &#039;&#039;&#039;TCNT1H&#039;&#039;&#039;/&#039;&#039;&#039;TCNT1L&#039;&#039;&#039; wird dabei als Auf-/Ab-Zähler betrieben, welcher von 0 an aufwärts zählt bis zur Obergrenze und danach wieder zurück auf 0.&lt;br /&gt;
Die Obergrenze ergibt sich daraus, ob 8-, 9- oder 10-Bit PWM verwendet wird, und zwar gemäss folgender Tabelle:&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
|- &lt;br /&gt;
| align=&amp;quot;center&amp;quot; | &#039;&#039;&#039;Auflösung&#039;&#039;&#039;&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | &#039;&#039;&#039;Obergrenze&#039;&#039;&#039;&lt;br /&gt;
| &#039;&#039;&#039;Frequenz&#039;&#039;&#039;&lt;br /&gt;
|- &lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 8&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 255&lt;br /&gt;
| f&amp;lt;sub&amp;gt;TC1&amp;lt;/sub&amp;gt; / 510&lt;br /&gt;
|- &lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 9&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 511&lt;br /&gt;
| f&amp;lt;sub&amp;gt;TC1&amp;lt;/sub&amp;gt; / 1022&lt;br /&gt;
|- &lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 10&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 1023&lt;br /&gt;
| f&amp;lt;sub&amp;gt;TC1&amp;lt;/sub&amp;gt; / 2046&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Wenn nun der Zählerwert im Datenregister den in &#039;&#039;&#039;OCR1H&#039;&#039;&#039;/&#039;&#039;&#039;OCR1L&#039;&#039;&#039; gespeicherten Wert erreicht, wird der Ausgabepin &#039;&#039;&#039;OC1&#039;&#039;&#039; gesetzt bzw. gelöscht, je nach Einstellung von &#039;&#039;&#039;COM1A1&#039;&#039;&#039; und &#039;&#039;&#039;COM1A0&#039;&#039;&#039; im &#039;&#039;&#039;TCCR1A&#039;&#039;&#039;-Register.&lt;br /&gt;
&lt;br /&gt;
Ich habe versucht, die entsprechenden Signale in der folgenden Grafik zusammenzufassen&lt;br /&gt;
&lt;br /&gt;
[[Image:PWM Theorie 3.gif]]&lt;br /&gt;
&lt;br /&gt;
[[Image:PWM Theorie 4.gif]]&lt;br /&gt;
&lt;br /&gt;
=== Vergleichswert-Überprüfung ===&lt;br /&gt;
&lt;br /&gt;
Hier wird in ein spezielles Vergleichswertregister (&#039;&#039;&#039;OCR1H&#039;&#039;&#039;/&#039;&#039;&#039;OCR1L&#039;&#039;&#039;) ein Wert eingeschrieben, welcher ständig mit dem aktuellen Zählerwert verglichen wird.&lt;br /&gt;
Erreicht der Zähler den in diesem Register eingetragenen Wert, so kann ein Signal (0 oder 1) am Pin &#039;&#039;&#039;OC1&#039;&#039;&#039; erzeugt und/oder ein Interrupt ausgelöst werden.&lt;br /&gt;
&lt;br /&gt;
=== Einfangen eines Eingangssignals (Input Capturing) ===&lt;br /&gt;
&lt;br /&gt;
Bei dieser Betriebsart wird an den Input Capturing Pin (ICP) des Controllers eine Signalquelle angeschlossen.&lt;br /&gt;
Nun kann je nach Konfiguration entweder ein Signalwechsel von 0 nach 1 (steigende Flanke) oder von 1 nach 0 (fallende Flanke) erkannt werden und der zu diesem Zeitpunkt aktuelle Zählerstand in ein spezielles Register abgelegt werden. Gleichzeitig kann auch ein entsprechender Interrupt ausgelöst werden.&lt;br /&gt;
Wenn die Signalquelle ein starkes Rauschen beinhaltet, kann die Rauschunterdrückung eingeschaltet werden. Dann wird beim Erkennen der konfigurierten Flanke über 4 Taktzyklen das Signal überwacht und nur dann, wenn alle 4 Messungen gleich sind, wird die entsprechende Aktion ausgelöst.&lt;br /&gt;
&lt;br /&gt;
== Gemeinsame Register ==&lt;br /&gt;
&lt;br /&gt;
Verschiedene Register beinhalten Zustände und Einstellungen, welche sowohl&lt;br /&gt;
für den 8-Bit, als auch für den 16-Bit Timer/Counter in ein und demselben&lt;br /&gt;
Register zu finden sind.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
|- &lt;br /&gt;
| &#039;&#039;&#039;TIMSK&#039;&#039;&#039;&lt;br /&gt;
| &#039;&#039;&#039;T&#039;&#039;&#039;imer/Counter &#039;&#039;&#039;I&#039;&#039;&#039;nterrupt &#039;&#039;&#039;M&#039;&#039;&#039;a&#039;&#039;&#039;sk&#039;&#039;&#039;&lt;br /&gt;
Register&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
|- &lt;br /&gt;
| &#039;&#039;&#039;Bit&#039;&#039;&#039;&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 7&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 6&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 5&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 4&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 3&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 2&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 1&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 0&lt;br /&gt;
|- &lt;br /&gt;
| &#039;&#039;&#039;Name&#039;&#039;&#039;&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | &#039;&#039;&#039;TOIE1&#039;&#039;&#039;&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | &#039;&#039;&#039;OCIE1A&#039;&#039;&#039;&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | &#039;&#039;&#039;-&#039;&#039;&#039;&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | &#039;&#039;&#039;-&#039;&#039;&#039;&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | &#039;&#039;&#039;TICIE&#039;&#039;&#039;&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | &#039;&#039;&#039;-&#039;&#039;&#039;&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | &#039;&#039;&#039;TOIE0&#039;&#039;&#039;&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | &#039;&#039;&#039;-&#039;&#039;&#039;&lt;br /&gt;
|- &lt;br /&gt;
| &#039;&#039;&#039;R/W&#039;&#039;&#039;&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | R/W&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | R/W&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | R&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | R&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | R/W&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | R&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | R/W&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | R&lt;br /&gt;
|- &lt;br /&gt;
| &#039;&#039;&#039;Initialwert&#039;&#039;&#039;&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 0&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 0&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 0&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 0&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 0&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 0&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 0&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 0&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;TOIE1&#039;&#039;&#039; (&#039;&#039;&#039;T&#039;&#039;&#039;imer/Counter &#039;&#039;&#039;O&#039;&#039;&#039;verflow &#039;&#039;&#039;I&#039;&#039;&#039;nterrupt &#039;&#039;&#039;E&#039;&#039;&#039;nable Timer/Counter &#039;&#039;&#039;1&#039;&#039;&#039;)&lt;br /&gt;
:Wenn dieses Bit gesetzt ist, wird bei einem Überlauf des Datenregisters des Timer/Counter 1 ein Timer Overflow 1 Interrupt ausgelöst. Das Global Enable Interrupt Flag muss selbstverständlich auch gesetzt sein.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;OCIE1A&#039;&#039;&#039; (&#039;&#039;&#039;O&#039;&#039;&#039;utput &#039;&#039;&#039;C&#039;&#039;&#039;ompare Match &#039;&#039;&#039;I&#039;&#039;&#039;nterrupt &#039;&#039;&#039;E&#039;&#039;&#039;nable Timer/Counter &#039;&#039;&#039;1&#039;&#039;&#039;)&lt;br /&gt;
:Beim Timer/Counter 1 kann zusätzlich zum Überlauf ein Vergleichswert definiert werden.&lt;br /&gt;
&lt;br /&gt;
:Wenn dieses Bit gesetzt ist, wird beim Erreichen des Vergleichswertes ein Compare Match Interrupt ausgelöst. Das Global Enable Interrupt Flag muss selbstverständlich auch gesetzt sein.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;TICIE&#039;&#039;&#039; (&#039;&#039;&#039;T&#039;&#039;&#039;imer/Counter &#039;&#039;&#039;I&#039;&#039;&#039;nput &#039;&#039;&#039;C&#039;&#039;&#039;apture &#039;&#039;&#039;I&#039;&#039;&#039;nterrupt &#039;&#039;&#039;E&#039;&#039;&#039;nable)&lt;br /&gt;
:Wenn dieses Bit gesetzt ist, wird ein Capture Event Interrupt ausgelöst, wenn ein entsprechendes Signalereignis am Pin PD6(ICP) auftritt. Das Global Enable Interrupt Flag muss selbstverständlich auch gesetzt sein, wenn auch ein entsprechender Interrupt ausgelöst werden soll.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;TOIE0&#039;&#039;&#039; (&#039;&#039;&#039;T&#039;&#039;&#039;imer/Counter &#039;&#039;&#039;O&#039;&#039;&#039;verflow &#039;&#039;&#039;I&#039;&#039;&#039;nterrupt &#039;&#039;&#039;E&#039;&#039;&#039;nable Timer/Counter &#039;&#039;&#039;0&#039;&#039;&#039;)&lt;br /&gt;
:Wenn dieses Bit gesetzt ist, wird bei einem Überlauf des Datenregisters des Timer/Counter 0 ein Timer Overflow 0 Interrupt ausgelöst. Das Global Enable Interrupt Flag muss selbstverständlich auch gesetzt sein.&lt;br /&gt;
&lt;br /&gt;
|- &lt;br /&gt;
| &#039;&#039;&#039;TIFR&#039;&#039;&#039;&lt;br /&gt;
| &#039;&#039;&#039;T&#039;&#039;&#039;imer/Counter &#039;&#039;&#039;I&#039;&#039;&#039;nterrupt &#039;&#039;&#039;F&#039;&#039;&#039;lag &#039;&#039;&#039;R&#039;&#039;&#039;egister&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
|- &lt;br /&gt;
| &#039;&#039;&#039;Bit&#039;&#039;&#039;&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 7&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 6&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 5&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 4&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 3&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 2&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 1&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 0&lt;br /&gt;
|- &lt;br /&gt;
| &#039;&#039;&#039;Name&#039;&#039;&#039;&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | &#039;&#039;&#039;TOV1&#039;&#039;&#039;&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | &#039;&#039;&#039;OCF1A&#039;&#039;&#039;&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | &#039;&#039;&#039;-&#039;&#039;&#039;&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | &#039;&#039;&#039;-&#039;&#039;&#039;&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | &#039;&#039;&#039;ICF1&#039;&#039;&#039;&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | &#039;&#039;&#039;-&#039;&#039;&#039;&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | &#039;&#039;&#039;TOV0&#039;&#039;&#039;&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | &#039;&#039;&#039;-&#039;&#039;&#039;&lt;br /&gt;
|- &lt;br /&gt;
| &#039;&#039;&#039;R/W&#039;&#039;&#039;&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | R/W&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | R/W&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | R&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | R&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | R/W&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | R&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | R/W&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | R&lt;br /&gt;
|- &lt;br /&gt;
| &#039;&#039;&#039;Initialwert&#039;&#039;&#039;&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 0&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 0&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 0&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 0&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 0&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 0&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 0&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 0&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;TOV1&#039;&#039;&#039; (&#039;&#039;&#039;T&#039;&#039;&#039;imer/Counter &#039;&#039;&#039;O&#039;&#039;&#039;verflow Flag Timer/Counter &#039;&#039;&#039;1&#039;&#039;&#039;)&lt;br /&gt;
:Dieses Bit wird vom Controller gesetzt, wenn beim Timer 1 ein Überlauf des Datenregisters stattfindet.&lt;br /&gt;
&lt;br /&gt;
:In der PWM-Betriebsart wird das Bit gesetzt, wenn die Zählrichtung von auf- zu abwärts und umgekehrt geändert wird (Zählerwert = 0).&lt;br /&gt;
&lt;br /&gt;
:Das Flag wird automatisch gelöscht, wenn der zugehörige Interrupt-Vektor aufgerufen wird. Es kann jedoch auch gelöscht werden, indem eine logische 1 (!) in das entsprechende Bit geschrieben wird.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;OCF1A&#039;&#039;&#039; (&#039;&#039;&#039;O&#039;&#039;&#039;utput &#039;&#039;&#039;C&#039;&#039;&#039;ompare &#039;&#039;&#039;F&#039;&#039;&#039;lag Timer/Counter &#039;&#039;&#039;1&#039;&#039;&#039;)&lt;br /&gt;
:Dieses Bit wird gesetzt, wenn der aktuelle Wert des Datenregisters von Timer/Counter 1 mit demjenigen im Vergleichsregister &#039;&#039;&#039;OCR1&#039;&#039;&#039; übereinstimmt.&lt;br /&gt;
&lt;br /&gt;
:Das Flag wird automatisch gelöscht, wenn der zugehörige Interrupt-Vektor aufgerufen wird. Es kann jedoch auch gelöscht werden, indem eine logische 1 (!) in das entsprechende Bit geschrieben wird.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;ICF1&#039;&#039;&#039; (&#039;&#039;&#039;I&#039;&#039;&#039;nput &#039;&#039;&#039;C&#039;&#039;&#039;apture &#039;&#039;&#039;F&#039;&#039;&#039;lag Timer/Counter &#039;&#039;&#039;1&#039;&#039;&#039;)&lt;br /&gt;
:Dieses Bit wird gesetzt, wenn ein Capture-Ereignis aufgetreten ist, welches anzeigt, dass der Wert des Datenregisters des  Timer/Counter 1 in das Input Capture Register ICR1 übertragen wurde.&lt;br /&gt;
&lt;br /&gt;
:Das Flag wird automatisch gelöscht, wenn der zugehörige Interrupt-Vektor aufgerufen wird. Es kann jedoch auch gelöscht werden, indem eine logische 1 (!) in das entsprechende Bit geschrieben wird.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;TOV0&#039;&#039;&#039; (&#039;&#039;&#039;T&#039;&#039;&#039;imer/Counter &#039;&#039;&#039;O&#039;&#039;&#039;verflow Flag Timer/Counter &#039;&#039;&#039;0&#039;&#039;&#039;)&lt;br /&gt;
:Dieses Bit wird vom Controller gesetzt, wenn beim Timer 0 ein Überlauf des Datenregisters stattfindet.&lt;br /&gt;
&lt;br /&gt;
:Das Flag wird automatisch gelöscht, wenn der zugehörige Interrupt-Vektor aufgerufen wird. Es kann jedoch auch gelöscht werden, indem eine logische 1 (!) in das entsprechende Bit geschrieben wird.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
= Sleep-Modes =&lt;br /&gt;
&lt;br /&gt;
AVR Controller verfügen über eine Reihe von sogenannten &#039;&#039;Sleep-Modes&#039;&#039; (&amp;quot;Schlaf-Modi&amp;quot;). Diese ermöglichen es, Teile des Controllers abzuschalten. Zum Einen kann damit besonders bei Batteriebetrieb Strom gespart werden, zum Anderen können Komponenten des Controllers deaktiviert werden, die die Genauigkeit des Analog-Digital-Wandlers bzw. des Analog-Comparators negativ beeinflussen. Der Controller wird durch Interrupts aus dem Schlaf geweckt. Welche Interrupts den jeweiligen Schlafmodus beenden, ist einer Tabelle im Datenblatt des jeweiligen Controllers zu entnehmen.&lt;br /&gt;
Die Funktionen der avr-libc stehen nach Einbinden der header-Datei &#039;&#039;sleep.h&#039;&#039; zur Verfügung.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;set_sleep_mode(uint8_t mode)&#039;&#039;&#039;&lt;br /&gt;
:Setzt den Schlafmodus, der bei Aufruf von sleep() aktiviert wird. In sleep.h sind einige Konstanten definiert (z.B. SLEEP_MODE_PWR_DOWN). Die definierten Modi werden jedoch nicht alle von sämtlichten AVR-Controllern unterstützt.&lt;br /&gt;
* &#039;&#039;&#039;sleep_mode()&#039;&#039;&#039;&lt;br /&gt;
:Versetzt den Controller in den mit set_sleep_mode gewählten Schlafmodus.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre class=&amp;quot;code&amp;quot;&amp;gt;&lt;br /&gt;
#include &amp;lt;avr/io.h&amp;gt;&lt;br /&gt;
#include &amp;lt;avr/sleep.h&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
   set_sleep_mode(SLEEP_MODE_PWR_DOWN);&lt;br /&gt;
   sleep_mode();&lt;br /&gt;
   &lt;br /&gt;
   // Code hier wird erst nach Auftreten eines entsprechenden&lt;br /&gt;
   // &amp;quot;Aufwach-Interrupts&amp;quot; verarbeitet&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In älteren Versionenen der avr-libc wurden nicht alle AVR-Controller durch die sleep-Funktionen richtig angesteuert. Mit avr-libc 1.2.0 wurde die Anzahl der unterstützten Typen jedoch deutlich erweitert. Bei nicht-unterstützten Typen erreicht man die gewünschte Funktionalität durch direkte &amp;quot;Bitmanipulation&amp;quot; der entsprechenden Register (vgl. Datenblatt) und Aufruf des Sleep-Befehls via Inline-Assembler:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre class=&amp;quot;code&amp;quot;&amp;gt;&lt;br /&gt;
#include &amp;lt;avr/io.h&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
   // Sleep-Mode &amp;quot;Power-Save&amp;quot; beim ATmega169 &amp;quot;manuell&amp;quot; aktivieren&lt;br /&gt;
   SMCR = (3&amp;lt;&amp;lt;SM0) | (1&amp;lt;&amp;lt;SE);&lt;br /&gt;
   asm volatile (&amp;quot;sleep&amp;quot;);&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* siehe auch: [http://www.nongnu.org/avr-libc/user-manual/index.html Dokumentation der avr-libc] Abschnitt Modules/Power Management and Sleep-Modes&lt;br /&gt;
&lt;br /&gt;
= Der Watchdog =&lt;br /&gt;
&lt;br /&gt;
Und hier kommt das ultimative Mittel gegen die Unvollkommenheit von uns&lt;br /&gt;
Programmierern, der Watchdog.&lt;br /&gt;
&lt;br /&gt;
So sehr wir uns auch anstrengen, es wird uns kaum je gelingen, das absolut&lt;br /&gt;
perfekte und fehlerfreie Programm zu entwickeln.&lt;br /&gt;
&lt;br /&gt;
Der Watchdog kann uns zwar auch nicht zu besseren Programmen verhelfen aber er&lt;br /&gt;
kann dafür sorgen, dass unser Programm, wenn es sich wieder mal in&#039;s Nirwana&lt;br /&gt;
verabschiedet hat, neu gestartet wird, indem ein Reset des Controllers&lt;br /&gt;
ausgelöst wird.&lt;br /&gt;
&lt;br /&gt;
Betrachten wir doch einmal folgende Codesequenz:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre class=&amp;quot;code&amp;quot;&amp;gt;&lt;br /&gt;
uint8_t x;&lt;br /&gt;
&lt;br /&gt;
x = 10;&lt;br /&gt;
&lt;br /&gt;
while (x &amp;gt;= 0) {&lt;br /&gt;
   // tu was&lt;br /&gt;
&lt;br /&gt;
   x--;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Wenn wir die Schleife mal genau anschauen sollte uns auffallen, dass dieselbe niemals beendet wird. Warum nicht? Ganz einfach, weil eine als &#039;&#039;&#039;&#039;&#039;unsigned&#039;&#039;&#039;&#039;&#039; deklarierte Variable niemals kleiner als Null werden kann (der Compiler sollte jedoch eine ensprechende Warnung ausgeben).&lt;br /&gt;
Das Programm würde sich also hier aufhängen und auf ewig in der Schleife drehen.&lt;br /&gt;
Und hier genau kommt der Watchdog zum Zug.&lt;br /&gt;
&lt;br /&gt;
== Wie funktioniert nun der Watchdog ==&lt;br /&gt;
&lt;br /&gt;
Der Watchdog enthält einen separaten Timer/Counter, welcher mit einem intern erzeugten Takt von 1 MHz bei 5V Vcc getaktet wird. Nachdem der Watchdog aktiviert und der gewünschte Vorteiler eingestellt wurde beginnt der Counter von 0 an hochzuzählen. Wenn nun die je nach Vorteiler eingestellte Anzahl Zyklen erreicht wurde, löst der Watchdog einen Reset aus. Um nun also im Normalbetrieb den Reset zu verhindern müssen wir den Watchdog regelmässig wieder neu starten bzw. Rücksetzen (Watchdog Reset). Dies sollte innerehalb unserer Hauptschleife passieren.&lt;br /&gt;
&lt;br /&gt;
Um ein unbeabsichtigtes Ausschalten des Watchdogs zu verhindern muss ein spezielles Prozedere verwendet werden, um den WD auszuschalten und zwar müssen zuerst die beiden Bits WDTOE und WDE in einer einzelnen Operation (also nicht mit sbi) auf 1 gesetzt werden. Dann muss innerhalb der nächsten 4 Taktzyklen das Bit WDE auf 0 gesetzt werden.&lt;br /&gt;
&lt;br /&gt;
Das Watchdog Control Register:&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
|- &lt;br /&gt;
| &#039;&#039;&#039;WDTCR&#039;&#039;&#039;&lt;br /&gt;
| &#039;&#039;&#039;W&#039;&#039;&#039;atchog &#039;&#039;&#039;T&#039;&#039;&#039;imer&amp;amp;nbsp; &#039;&#039;&#039;C&#039;&#039;&#039;ontrol &#039;&#039;&#039;R&#039;&#039;&#039;egister&lt;br /&gt;
&lt;br /&gt;
In diesem Register stellen wir ein, wie wir den Watchdog verwenden möchten.&lt;br /&gt;
&lt;br /&gt;
Das Register ist wie folgt aufgebaut:&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
|- &lt;br /&gt;
| &#039;&#039;&#039;Bit&#039;&#039;&#039;&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 7&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 6&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 5&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 4&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 3&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 2&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 1&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 0&lt;br /&gt;
|- &lt;br /&gt;
| &#039;&#039;&#039;Name&#039;&#039;&#039;&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | &#039;&#039;&#039;-&#039;&#039;&#039;&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | &#039;&#039;&#039;-&#039;&#039;&#039;&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | &#039;&#039;&#039;-&#039;&#039;&#039;&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | &#039;&#039;&#039;WDTOE&#039;&#039;&#039;&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | &#039;&#039;&#039;WDE&#039;&#039;&#039;&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | &#039;&#039;&#039;WDP2&#039;&#039;&#039;&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | &#039;&#039;&#039;WDP1&#039;&#039;&#039;&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | &#039;&#039;&#039;WDP0&#039;&#039;&#039;&lt;br /&gt;
|- &lt;br /&gt;
| &#039;&#039;&#039;R/W&#039;&#039;&#039;&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | R&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | R&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | R&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | R/W&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | R/W&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | R/W&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | R/W&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | R/W&lt;br /&gt;
|- &lt;br /&gt;
| &#039;&#039;&#039;Initialwert&#039;&#039;&#039;&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 0&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 0&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 0&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 0&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 0&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 0&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 0&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 0&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;WDTOE&#039;&#039;&#039; (&#039;&#039;&#039;W&#039;&#039;&#039;atch&#039;&#039;&#039;d&#039;&#039;&#039;og &#039;&#039;&#039;T&#039;&#039;&#039;urn &#039;&#039;&#039;O&#039;&#039;&#039;ff &#039;&#039;&#039;E&#039;&#039;&#039;nable)&lt;br /&gt;
:Dieses Bit muss gesetzt sein, wenn das Bit &#039;&#039;&#039;WDE&#039;&#039;&#039; gelöscht wird, andernfalls wird der Watchdog nicht ausgeschaltet.&lt;br /&gt;
:Wenn das Bit einmal gesetzt ist wird es von der Hardware nach 4 Taktzyklen automatisch wieder gelöscht.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;WDE&#039;&#039;&#039; (&#039;&#039;&#039;W&#039;&#039;&#039;atch&#039;&#039;&#039;d&#039;&#039;&#039;og &#039;&#039;&#039;E&#039;&#039;&#039;nable)&lt;br /&gt;
:Wenn dieses Bit gesetzt wird, so wird der Watchdog aktiviert.&lt;br /&gt;
:Das Bit kann nur gelöscht werden, solange das Bit &#039;&#039;&#039;WDTOE&#039;&#039;&#039; auf 1 steht.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;WDP2&#039;&#039;&#039;, &#039;&#039;&#039;WDP1&#039;&#039;&#039;, &#039;&#039;&#039;WDP0&#039;&#039;&#039; (&#039;&#039;&#039;W&#039;&#039;&#039;atch&#039;&#039;&#039;d&#039;&#039;&#039;og Timer &#039;&#039;&#039;P&#039;&#039;&#039;rescaler Bits)&lt;br /&gt;
:Diese 3 Bits bestimmen die Anzahl Oszillatorzyklen für den Watchdog, also, wie lange es dauert, bis ein Reset ausgelöst wird:&lt;br /&gt;
&amp;lt;dl&amp;gt;&amp;lt;dd&amp;gt;&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
|- &lt;br /&gt;
| align=&amp;quot;center&amp;quot; | WDP2&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | WDP1&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | WDP0&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | Anzahl Zyklen&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | Typ. Timeoutzeit bei Vcc = 3V&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | Typ. Timeoutzeit bei Vcc = 5V&lt;br /&gt;
|- &lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 0&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 0&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 0&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 16K&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 47ms&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 15ms&lt;br /&gt;
|- &lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 0&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 0&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 1&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 32K&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 94ms&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 30ms&lt;br /&gt;
|- &lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 0&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 1&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 0&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 64K&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 0.19s&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 60ms&lt;br /&gt;
|- &lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 0&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 1&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 1&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 128K&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 0.38s&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 0.12s&lt;br /&gt;
|- &lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 1&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 0&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 0&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 256K&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 0.75s&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 0.24s&lt;br /&gt;
|- &lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 1&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 0&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 1&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 512K&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 1.5s&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 0.49s&lt;br /&gt;
|- &lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 1&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 1&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 0&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 1024K&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 3s&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 0.97s&lt;br /&gt;
|- &lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 1&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 1&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 1&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 2048K&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 6s&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 1.9s&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/dd&amp;gt;&amp;lt;/dl&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Um den Watchdog mit dem AVR-GCC Compiler zu verwenden, muss die Headerdatei &#039;&#039;wdt.h&#039;&#039; (&#039;&#039;#include &amp;lt;avr/wdt.h&amp;gt;&#039;&#039;) in die Quelldatei eingebunden werden. &lt;br /&gt;
&amp;lt;!-- mt: das stimmt wohl nicht mehr?!:&lt;br /&gt;
Dadurch wird auch der Startup-Code&lt;br /&gt;
entsprechend angepasst, so dass der Watchdog nach einem Reset automatisch&lt;br /&gt;
gestartet wird. Das WDTCR-Register wird dabei mit dem Wert 0 beschrieben. Falls&lt;br /&gt;
ein anderer Wert gewünscht ist so kann dies im Makfile in den Linker-Optionen&lt;br /&gt;
eingetragen werden. Dazu muss in der Zeile LDFLAGS folgende Option angefügt&lt;br /&gt;
werden:&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; --defsym __init_wdtcr__=0x1f&amp;lt;br /&amp;gt;&lt;br /&gt;
wenn beispielsweise der Wert des Registers auf 0x1f gestellt werden soll.&amp;lt;br /&amp;gt; --&amp;gt;&lt;br /&gt;
Danach können die folgenden Funktionen verwendet werden:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;wdt_enable(uint8_t timeout)&#039;&#039;&#039;&lt;br /&gt;
:Aktiviert den Watchdog und stellt den Vorteiler auf den gewünschten Wert ein bzw. der in timeout übergebene Wert wird in das WDTCR-Register eingetragen. Einige Timeout-Werte sind als Konstanten vordefiniert&lt;br /&gt;
:Mögliche Timeoutwerte:&lt;br /&gt;
&amp;lt;div align=&amp;quot;center&amp;quot;&amp;gt;&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Konstante&lt;br /&gt;
! Wert&lt;br /&gt;
! TimeOut&lt;br /&gt;
|- &lt;br /&gt;
| WDTO_15MS   &lt;br /&gt;
| 0&lt;br /&gt;
| 15 ms&lt;br /&gt;
|-&lt;br /&gt;
| WDTO_30MS   &lt;br /&gt;
| 1&lt;br /&gt;
| 30 ms&lt;br /&gt;
|-&lt;br /&gt;
| WDTO_60MS   &lt;br /&gt;
| 2&lt;br /&gt;
| 60 ms&lt;br /&gt;
|-&lt;br /&gt;
| WDTO_120MS   &lt;br /&gt;
| 3&lt;br /&gt;
| 120 ms&lt;br /&gt;
|-&lt;br /&gt;
| WDTO_250MS   &lt;br /&gt;
| 4&lt;br /&gt;
| 250 ms&lt;br /&gt;
|-&lt;br /&gt;
| WDTO_500MS   &lt;br /&gt;
| 5&lt;br /&gt;
| 500 ms&lt;br /&gt;
|-&lt;br /&gt;
| WDTO_1S   &lt;br /&gt;
| 6&lt;br /&gt;
| 1 S&lt;br /&gt;
|-&lt;br /&gt;
| WDTO_2S   &lt;br /&gt;
| 7&lt;br /&gt;
| 2s&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
* &#039;&#039;&#039;wdt_disable()&#039;&#039;&#039;&lt;br /&gt;
:Mit dieser Funktion kann der Watchdog ausgeschaltet werden. Dabei wird das notwendige Prozedere, wie oben beschrieben, automatisch ausgeführt.&lt;br /&gt;
* &#039;&#039;&#039;wdt_reset()&#039;&#039;&#039;&lt;br /&gt;
:Dies ist wohl die wichtigste der Watchdog-Funktionen. Sie erzeugt einen Watchdog-Reset, welcher periodisch, und zwar vor Ablauf der Timeoutzeit, ausgeführt werden muss, damit der Watchdog nicht den AVR zurücksetzt.&lt;br /&gt;
&lt;br /&gt;
Selbstverständlich kann das &#039;&#039;&#039;WDTCR&#039;&#039;&#039;-Register auch mit den uns bereits bekannten Funktionen für den Zugriff auf Register programmiert werden.&lt;br /&gt;
&lt;br /&gt;
== Watchdog-Anwendungshinweise ==&lt;br /&gt;
&lt;br /&gt;
Ob nun der Watchdog als Schutzfunktion überhaupt verwendet werden soll, hängt stark von der Anwendung, der genutzten Peripherie und dem Umfang und der Qualitätssicherung des Codes ab. Will man sicher gehen, dass ein Programm sich nicht in einer Endlosschleife verfängt, ist der Wachdog das geeignete Mittel dies zu verhindern. Weiterhin kann bei geschickter Programmierung der Watchdog dazu genutzt werden, bestimmte Stromsparfunktionen zu implementieren. Ausserdem bietet der WD die einzige Möglichkeit einen beabsichtigten System-Reset (ein &amp;quot;richtiger Reset&amp;quot;, kein &amp;quot;jmp 0x0000&amp;quot;) ohne externe Beschaltung auszulösen, was z.B. bei der Implementierung eines Bootloaders nützlich ist. Bei bestimmten Anwendungen kann die Nutzung des WD als &amp;quot;ultimative Deadlock-Sicherung für nicht bedachte Zustände&amp;quot; natürlich immer als zusätzliche Sicherung dienen. &lt;br /&gt;
&lt;br /&gt;
Es besteht die Möglichkeit herauszufinden, ob ein Reset durch den Watchdog ausgelöst wurde (beim ATmega16 z.B. Bit WDRF in MCUCSR). Diese Information sollte auch genutzt werden, falls ein WD-Reset in der Anwendung nicht planmässig implementiert wurde. Zum Beispiel kann man eine LED an einen freien Pin hängen, die nur bei einem Reset durch den WD aufleuchtet oder aber das &amp;quot;Ereignis WD-Reset&amp;quot; im internen EEPROM des AVR absichern, um die Information später z.B. über UART oder ein Display auszugeben (oder einfach den EEPROM-Inhalt über die ISP/JTAG-Schnittstelle auslesen).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* siehe auch: [http://www.nongnu.org/avr-libc/user-manual/index.html Dokumentation der avr-libc] Abschnitt Modules/Watchdog timer handling&lt;br /&gt;
&lt;br /&gt;
= Programmieren mit Interrupts =&lt;br /&gt;
&lt;br /&gt;
Nachdem wir nun alles Wissenswerte für die serielle Programmerstellung&lt;br /&gt;
gelernt haben nehmen wir jetzt ein völlig anderes Thema in Angriff, nämlich&lt;br /&gt;
die Programmierung unter Zuhilfenahme der Interrupts des AVR.&lt;br /&gt;
&lt;br /&gt;
Als erstes wollen wir uns noch einmal den allgemeinen Programmablauf bei der&lt;br /&gt;
Interrupt-Programmierung zu Gemüte führen.&lt;br /&gt;
&lt;br /&gt;
[[Image:Interrupt Programme.gif]]&lt;br /&gt;
&lt;br /&gt;
Man sieht, dass die Interruptroutine quasi parallel zum Hauptprogramm&lt;br /&gt;
abläuft. Da wir nur eine CPU haben ist es natürlich keine echte Parallelität,&lt;br /&gt;
sondern das Hauptprogramm wird beim Eintreffen eines Interrupts unterbrochen,&lt;br /&gt;
die Interruptroutine wird ausgeführt und danach erst wieder zum Hauptprogramm&lt;br /&gt;
zurückgekehrt.&lt;br /&gt;
&lt;br /&gt;
== Anforderungen an Interrupt-Routinen ==&lt;br /&gt;
&lt;br /&gt;
Um unliebsamen Überraschungen vorzubeugen, sollten einige Grundregeln bei der Implementierung der Interruptroutinen beachtet werden. Interruptroutinen soll möglichst kurz und schnell abarbeitbar sein, daraus folgt:&lt;br /&gt;
&lt;br /&gt;
* Keine unfangreichen Berechnungen innerhalb der Interruptroutine.&lt;br /&gt;
* Keine langen Programmschleifen.&lt;br /&gt;
* Obwohl es möglich ist, während der Abarbeitung einer Interruptroutine andere oder sogar den gleichen Interrupt wieder zuzulassen, wird davon ohne genaue Kenntnis der internen Abläufe dringend abgeraten.&lt;br /&gt;
&lt;br /&gt;
Interruptroutinen (ISRs) sollten also möglichst kurz sein und keine Schleifen mit vielen Durchläufen enthalten. Längere Operationen können meist in einen &amp;quot;Interrupt-Teil&amp;quot; in einer ISR und einen &amp;quot;Arbeitsteil&amp;quot; im Hauptprogramm aufgetrennt werden. Z.B. Speichern des Zustands aller Eingänge im EEPROM in bestimmten Zeitabständen: ISR-Teil: Zeitvergleich (Timer,RTC) mit Logzeit/-intervall. Bei Übereinstimmung ein globales Flag setzen (volatile bei Flag-Deklaration nicht vergessen, s.u.). Dann im Hauptprogramm prüfen, ob das Flag gesetzt ist. Wenn ja: die Daten im EEPROM ablegen und Flag löschen.&lt;br /&gt;
&lt;br /&gt;
== Interrupt-Quellen ==&lt;br /&gt;
&lt;br /&gt;
Die folgenden Ereignisse können einen Interrupt auf einem AVR AT90S2313 auslösen, wobei die Reihenfolge der Auflistung auch die Priorität der Interrupts aufzeigt.&lt;br /&gt;
&lt;br /&gt;
* Reset&lt;br /&gt;
* Externer Interrupt 0&lt;br /&gt;
* Externer Interrupt 1&lt;br /&gt;
* Timer/Counter 1 Capture Ereignis&lt;br /&gt;
* Timer/Counter 1 Compare Match&lt;br /&gt;
* Timer/Counter 1 Überlauf&lt;br /&gt;
* Timer/Counter 0 Überlauf&lt;br /&gt;
* UART Zeichen empfangen&lt;br /&gt;
* UART Datenregister leer&lt;br /&gt;
* UART Zeichen gesendet&lt;br /&gt;
* Analoger Komparator&lt;br /&gt;
&lt;br /&gt;
Die Anzahl der möglichen Interruptquellen variiert zwischen den verschiedenen Typen. Im Zweifel hilft ein Blick ins Datenblatt (&amp;quot;Interrupts-Vector&amp;quot;).&lt;br /&gt;
&lt;br /&gt;
== Register ==&lt;br /&gt;
&lt;br /&gt;
Der AT90S2313 verfügt über 2 Register welche mit den&lt;br /&gt;
Interrupts zusammen hängen.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
|- &lt;br /&gt;
| &#039;&#039;&#039;GIMSK&#039;&#039;&#039;&lt;br /&gt;
| &#039;&#039;&#039;G&#039;&#039;&#039;eneral &#039;&#039;&#039;I&#039;&#039;&#039;nterrupt &#039;&#039;&#039;M&#039;&#039;&#039;ask &#039;&#039;&#039;R&#039;&#039;&#039;egister.&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
|- &lt;br /&gt;
| &#039;&#039;&#039;Bit&#039;&#039;&#039;&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 7&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 6&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 5&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 4&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 3&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 2&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 1&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 0&lt;br /&gt;
|- &lt;br /&gt;
| &#039;&#039;&#039;Name&#039;&#039;&#039;&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | &#039;&#039;&#039;INT1&#039;&#039;&#039;&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | &#039;&#039;&#039;INT0&#039;&#039;&#039;&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | &#039;&#039;&#039;-&#039;&#039;&#039;&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | &#039;&#039;&#039;-&#039;&#039;&#039;&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | &#039;&#039;&#039;-&#039;&#039;&#039;&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | &#039;&#039;&#039;-&#039;&#039;&#039;&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | &#039;&#039;&#039;-&#039;&#039;&#039;&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | &#039;&#039;&#039;-&#039;&#039;&#039;&lt;br /&gt;
|- &lt;br /&gt;
| &#039;&#039;&#039;R/W&#039;&#039;&#039;&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | R/W&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | R/W&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | R&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | R&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | R&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | R&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | R&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | R&lt;br /&gt;
|- &lt;br /&gt;
| &#039;&#039;&#039;Initialwert&#039;&#039;&#039;&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 0&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 0&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 0&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 0&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 0&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 0&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 0&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 0&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;INT1&#039;&#039;&#039; (External &#039;&#039;&#039;Int&#039;&#039;&#039;errupt Request &#039;&#039;&#039;1&#039;&#039;&#039; Enable)&lt;br /&gt;
:Wenn dieses Bit gesetzt ist, wird ein Interrupt ausgelöst, wenn am &#039;&#039;&#039;INT1&#039;&#039;&#039;-Pin eine steigende oder fallende (je nach Konfiguration im &#039;&#039;&#039;MCUCR&#039;&#039;&#039;) Flanke erkannt wird.&lt;br /&gt;
:Das Global Enable Interrupt Flag muss selbstverständlich auch gesetzt sein.&lt;br /&gt;
:Der Interrupt wird auch ausgelöst, wenn der Pin als Ausgang geschaltet ist. Auf diese Weise bietet sich die Möglichkeit, Software-Interrupts zu realisieren.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;INT0&#039;&#039;&#039; (External &#039;&#039;&#039;Int&#039;&#039;&#039;errupt Request &#039;&#039;&#039;0&#039;&#039;&#039; Enable)&lt;br /&gt;
:Wenn dieses Bit gesetzt ist, wird ein Interrupt ausgelöst, wenn am &#039;&#039;&#039;INT0&#039;&#039;&#039;-Pin eine steigende oder fallende (je nach Konfiguration im &#039;&#039;&#039;MCUCR&#039;&#039;&#039;) Flanke erkannt wird.&lt;br /&gt;
:Das Global Enable Interrupt Flag muss selbstverständlich auch gesetzt sein.&lt;br /&gt;
:Der Interrupt wird auch ausgelöst, wenn der Pin als Ausgang geschaltet ist. Auf diese Weise bietet sich die Möglichkeit, Software-Interrupts zu realisieren.&lt;br /&gt;
&lt;br /&gt;
|- &lt;br /&gt;
| &#039;&#039;&#039;GIFR&#039;&#039;&#039;&lt;br /&gt;
| &#039;&#039;&#039;G&#039;&#039;&#039;eneral &#039;&#039;&#039;I&#039;&#039;&#039;nterrupt &#039;&#039;&#039;F&#039;&#039;&#039;lag &#039;&#039;&#039;R&#039;&#039;&#039;egister.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
|- &lt;br /&gt;
| &#039;&#039;&#039;Bit&#039;&#039;&#039;&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 7&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 6&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 5&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 4&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 3&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 2&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 1&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 0&lt;br /&gt;
|- &lt;br /&gt;
| &#039;&#039;&#039;Name&#039;&#039;&#039;&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | &#039;&#039;&#039;INTF1&#039;&#039;&#039;&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | &#039;&#039;&#039;INTF0&#039;&#039;&#039;&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | &#039;&#039;&#039;-&#039;&#039;&#039;&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | &#039;&#039;&#039;-&#039;&#039;&#039;&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | &#039;&#039;&#039;-&#039;&#039;&#039;&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | &#039;&#039;&#039;-&#039;&#039;&#039;&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | &#039;&#039;&#039;-&#039;&#039;&#039;&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | &#039;&#039;&#039;-&#039;&#039;&#039;&lt;br /&gt;
|- &lt;br /&gt;
| &#039;&#039;&#039;R/W&#039;&#039;&#039;&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | R/W&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | R/W&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | R&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | R&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | R&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | R&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | R&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | R&lt;br /&gt;
|- &lt;br /&gt;
| &#039;&#039;&#039;Initialwert&#039;&#039;&#039;&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 0&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 0&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 0&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 0&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 0&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 0&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 0&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 0&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;INTF1&#039;&#039;&#039; (External &#039;&#039;&#039;Int&#039;&#039;&#039;errupt Flag &#039;&#039;&#039;1&#039;&#039;&#039;)&lt;br /&gt;
:Dieses Bit wird gesetzt, wenn am &#039;&#039;&#039;INT1&#039;&#039;&#039;-Pin eine Interrupt-Kondition, entsprechend der Konfiguration, erkannt wird. Wenn das Global Enable Interrupt Flag gesetzt ist, wird die Interruptroutine angesprungen.&lt;br /&gt;
:Das Flag wird automatisch gelöscht, wenn die Interruptroutine beendet ist. Alternativ kann das Flag gelöscht werden, indem der Wert &#039;&#039;&#039;1(!)&#039;&#039;&#039; eingeschrieben wird.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;INTF0&#039;&#039;&#039; (External &#039;&#039;&#039;Int&#039;&#039;&#039;errupt Flag &#039;&#039;&#039;0&#039;&#039;&#039;)&lt;br /&gt;
:Dieses Bit wird gesetzt, wenn am &#039;&#039;&#039;INT0&#039;&#039;&#039;-Pin eine Interrupt-Kondition, entsprechend der Konfiguration, erkannt wird. Wenn das Global Enable Interrupt Flag gesetzt ist, wird die Interruptroutine angesprungen.&lt;br /&gt;
:Das Flag wird automatisch gelöscht, wenn die Interruptroutine beendet ist. Alternativ kann das Flag gelöscht werden, indem der Wert &#039;&#039;&#039;1(!)&#039;&#039;&#039; eingeschrieben wird.&lt;br /&gt;
|- &lt;br /&gt;
| &#039;&#039;&#039;MCUCR&#039;&#039;&#039;&lt;br /&gt;
| &#039;&#039;&#039;MCU&#039;&#039;&#039; &#039;&#039;&#039;C&#039;&#039;&#039;ontrol &#039;&#039;&#039;R&#039;&#039;&#039;egister.&lt;br /&gt;
&lt;br /&gt;
Das MCU Control Register enthält Kontrollbits für allgemeine&lt;br /&gt;
MCU-Funktionen.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
|- &lt;br /&gt;
| &#039;&#039;&#039;Bit&#039;&#039;&#039;&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 7&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 6&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 5&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 4&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 3&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 2&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 1&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 0&lt;br /&gt;
|- &lt;br /&gt;
| &#039;&#039;&#039;Name&#039;&#039;&#039;&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | &#039;&#039;&#039;-&#039;&#039;&#039;&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | &#039;&#039;&#039;-&#039;&#039;&#039;&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | &#039;&#039;&#039;SE&#039;&#039;&#039;&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | &#039;&#039;&#039;SM&#039;&#039;&#039;&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | &#039;&#039;&#039;ISC11&#039;&#039;&#039;&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | &#039;&#039;&#039;ISC10&#039;&#039;&#039;&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | &#039;&#039;&#039;ISC01&#039;&#039;&#039;&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | &#039;&#039;&#039;ISC00&#039;&#039;&#039;&lt;br /&gt;
|- &lt;br /&gt;
| &#039;&#039;&#039;R/W&#039;&#039;&#039;&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | R&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | R&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | R/W&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | R/W&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | R/W&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | R/W&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | R/W&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | R&lt;br /&gt;
|- &lt;br /&gt;
| &#039;&#039;&#039;Initialwert&#039;&#039;&#039;&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 0&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 0&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 0&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 0&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 0&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 0&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 0&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 0&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;SE&#039;&#039;&#039; (&#039;&#039;&#039;S&#039;&#039;&#039;leep &#039;&#039;&#039;E&#039;&#039;&#039;nable)&lt;br /&gt;
:Dieses Bit muss gesetzt sein, um den Controller mit dem &#039;&#039;&#039;SLEEP&#039;&#039;&#039;-Befehl in den Schlafzustand versetzen zu können.&lt;br /&gt;
:Um den Schlafmodus nicht irrtümlich einzuschalten, wird empfohlen, das Bit erst unmittelbar vor Ausführung des &#039;&#039;&#039;SLEEP&#039;&#039;&#039;-Befehls zu setzen.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;SM&#039;&#039;&#039; (&#039;&#039;&#039;S&#039;&#039;&#039;leep &#039;&#039;&#039;M&#039;&#039;&#039;ode)&lt;br /&gt;
:Dieses Bit bestimmt der Schlafmodus.&lt;br /&gt;
:Ist das Bit gelöscht, so wird der &#039;&#039;&#039;Idle&#039;&#039;&#039;-Modus ausgeführt. Ist das Bit gesetzt, so wird der &#039;&#039;&#039;Power-Down&#039;&#039;&#039;-Modus ausgeführt. (für andere AVR Controller siehe Abschnitt &amp;quot;Sleep-Mode&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;ISC11&#039;&#039;&#039;, &#039;&#039;&#039;ISC10&#039;&#039;&#039; (&#039;&#039;&#039;I&#039;&#039;&#039;nterrupt &#039;&#039;&#039;S&#039;&#039;&#039;ense &#039;&#039;&#039;C&#039;&#039;&#039;ontrol &#039;&#039;&#039;1&#039;&#039;&#039; Bits)&lt;br /&gt;
:Diese beiden Bits bestimmen, ob die steigende oder die fallende Flanke für die Interrupterkennung am &#039;&#039;&#039;INT1&#039;&#039;&#039;-Pin ausgewertet wird.&lt;br /&gt;
&amp;lt;dl&amp;gt;&amp;lt;dd&amp;gt;&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
|- &lt;br /&gt;
| align=&amp;quot;center&amp;quot; | &#039;&#039;&#039;ISC11&#039;&#039;&#039;&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | &#039;&#039;&#039;ISC10&#039;&#039;&#039;&lt;br /&gt;
| &#039;&#039;&#039;Bedeutung&#039;&#039;&#039;&lt;br /&gt;
|- &lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 0&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 0&lt;br /&gt;
| Low Level an &#039;&#039;&#039;INT1&#039;&#039;&#039; erzeugt einen Interrupt.&lt;br /&gt;
&lt;br /&gt;
In der Beschreibung heisst es, der Interrupt wird getriggert, solange der Pin auf 0 bleibt, also eigentlich unbrauchbar.&lt;br /&gt;
|- &lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 0&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 1&lt;br /&gt;
| Reserviert&lt;br /&gt;
|- &lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 1&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 0&lt;br /&gt;
| Die fallende Flanke an &#039;&#039;&#039;INT1&#039;&#039;&#039; erzeugt einen Interrupt.&lt;br /&gt;
|- &lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 1&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 1&lt;br /&gt;
| Die steigende Flanke an &#039;&#039;&#039;INT1&#039;&#039;&#039; erzeugt einen Interrupt.&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/dd&amp;gt;&amp;lt;/dl&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;ISC01&#039;&#039;&#039;, &#039;&#039;&#039;ISC00&#039;&#039;&#039; (&#039;&#039;&#039;I&#039;&#039;&#039;nterrupt &#039;&#039;&#039;S&#039;&#039;&#039;ense &#039;&#039;&#039;C&#039;&#039;&#039;ontrol &#039;&#039;&#039;0&#039;&#039;&#039; Bits)&lt;br /&gt;
:Diese beiden Bits bestimmen, ob die steigende oder die fallende Flanke für die Interrupterkennung am &#039;&#039;&#039;INT0&#039;&#039;&#039;-Pin ausgewertet wird.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;dl&amp;gt;&amp;lt;dd&amp;gt;&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
|- &lt;br /&gt;
| align=&amp;quot;center&amp;quot; | &#039;&#039;&#039;ISC01&#039;&#039;&#039;&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | &#039;&#039;&#039;ISC00&#039;&#039;&#039;&lt;br /&gt;
| &#039;&#039;&#039;Bedeutung&#039;&#039;&#039;&lt;br /&gt;
|- &lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 0&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 0&lt;br /&gt;
| Low Level an &#039;&#039;&#039;INT0&#039;&#039;&#039; erzeugt einen Interrupt.&lt;br /&gt;
&lt;br /&gt;
In der Beschreibung heisst es, der Interrupt wird getriggert, solange der Pin auf 0 bleibt, also eigentlich unbrauchbar.&lt;br /&gt;
|- &lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 0&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 1&lt;br /&gt;
| Reserviert&lt;br /&gt;
|- &lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 1&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 0&lt;br /&gt;
| Die fallende Flank an &#039;&#039;&#039;INT0&#039;&#039;&#039; erzeugt einen Interrupt.&lt;br /&gt;
|- &lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 1&lt;br /&gt;
| align=&amp;quot;center&amp;quot; | 1&lt;br /&gt;
| Die steigende Flanke an &#039;&#039;&#039;INT0&#039;&#039;&#039; erzeugt einen Interrupt.&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/dd&amp;gt;&amp;lt;/dl&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Allgemeines über die Interrupt-Abarbeitung ==&lt;br /&gt;
&lt;br /&gt;
Wenn ein Interrupt eintrifft, wird automatisch das &#039;&#039;&#039;Global&lt;br /&gt;
Interrupt Enable&#039;&#039;&#039; Bit im Status Register &#039;&#039;&#039;SREG&#039;&#039;&#039; gelöscht und alle&lt;br /&gt;
weiteren Interrupts unterbunden. Obwohl es möglich ist, zu diesem&lt;br /&gt;
Zeitpunkt bereits wieder das GIE-bit zu setzen, rate ich dringend davon ab. Dieses&lt;br /&gt;
wird nämlich automatisch gesetzt, wenn die Interruptroutine beendet wird. Wenn&lt;br /&gt;
in der Zwischenzeit weitere Interrupts eintreffen, werden die zugehörigen&lt;br /&gt;
Interrupt-Bits gesetzt und die Interrupts bei Beendigung der laufenden&lt;br /&gt;
Interrupt-Routine in der Reihenfolge ihrer Priorität ausgeführt. Dies kann&lt;br /&gt;
eigentlich nur dann zu Problemen führen, wenn ein hoch priorisierter Interrupt&lt;br /&gt;
ständig und in kurzer Folge auftritt. Dieser sperrt dann möglicherweise alle&lt;br /&gt;
anderen Interrupts mit niedrigerer Priorität. Dies ist einer der Gründe,&lt;br /&gt;
weshalb die Interrupt-Routinen sehr kurz gehalten werden sollen.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- === Das Status-Register ===&lt;br /&gt;
&lt;br /&gt;
Es gilt auch zu beachten, dass das Status-Register während der Abarbeitung&lt;br /&gt;
einer Interruptroutine nicht automatisch gesichert wird. Falls notwendig, muss dies vom&lt;br /&gt;
Programmierer selber vorgesehen werden. --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Interrupts mit dem AVR GCC Compiler (WinAVR) ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Selbstverständlich können alle interruptspezifischen Registerzugriffe wie gewohnt über I/O-Adressierung vorgenommen werden. Etwas einfacher geht es jedoch, wenn wir die vom Compiler zur Verfügung gestellten Mittel einsetzen.--&amp;gt;&lt;br /&gt;
Funktionen zur Interrupt-Verarbeitung werden in den Includedateien &#039;&#039;interrupt.h&#039;&#039; und &#039;&#039;signal.h&#039;&#039; der avr-libc zur Verfügung gestellt. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre class=&amp;quot;code&amp;quot;&amp;gt;&lt;br /&gt;
// fuer sei(), cli() und INTERRUPT():&lt;br /&gt;
#include &amp;lt;avr/interrupt.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
// fuer SIGNAL() auch:&lt;br /&gt;
#include &amp;lt;avr/signal.h&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Das Makro &#039;&#039;&#039;sei()&#039;&#039;&#039; schaltet die Interrupts ein. Eigentlich wird nichts anderes gemacht, als das &#039;&#039;&#039;Global Interrupt Enable&#039;&#039;&#039; Bit im Status Register gesetzt.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre class=&amp;quot;code&amp;quot;&amp;gt;&lt;br /&gt;
    sei();&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Das Makro &#039;&#039;&#039;cli()&#039;&#039;&#039; schaltet die Interrupts aus, oder anders gesagt, das &#039;&#039;&#039;Global Interrupt Enable&#039;&#039;&#039; Bit im Status Register wird gelöscht.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre class=&amp;quot;code&amp;quot;&amp;gt;&lt;br /&gt;
    cli();&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Oft steht man vor der Aufgabe, dass eine Codesequenz nicht unterbrochen werden darf. Es liegt dann nahe, zu Beginn dieser Sequenz ein cli() und am Ende ein sei() einzufügen. Dies ist jedoch ungünstig, wenn die Interrupts vor Aufruf der Sequenz deaktiviert waren und danach auch weiterhin deaktiviert bleiben sollen. Ein sei() würde ungeachtet des vorherigen  Zustands die Interrups aktivieren, was zu unerwünschten Seiteneffekten führen kann. Die aus dem folgenden Beispiel ersichtliche Vorgehensweise ist in solchen Fällen vorzuziehen:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre class=&amp;quot;code&amp;quot;&amp;gt;&lt;br /&gt;
#include &amp;lt;avr/io.h&amp;gt;&lt;br /&gt;
#include &amp;lt;avr/interrupt.h&amp;gt;&lt;br /&gt;
#include &amp;lt;inttypes.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
void NichtUnterbrechenBitte(void)&lt;br /&gt;
{&lt;br /&gt;
   uint8_t tmp_sreg;  // temporaerer Speicher fuer das Statusregister&lt;br /&gt;
&lt;br /&gt;
   tmp_sreg = SREG;   // Statusregister (also auch das I-Flag darin) sichern&lt;br /&gt;
   cli();             // Interrupts global deaktivieren&lt;br /&gt;
&lt;br /&gt;
   /* hier &amp;quot;unterbrechnungsfreier&amp;quot; Code */&lt;br /&gt;
&lt;br /&gt;
   /* Beispiel Anfang&lt;br /&gt;
     JTAG-Interface eines ATmega16 per Software deaktivieren &lt;br /&gt;
     und damit die JTAG-Pins an PORTC für &amp;quot;general I/O&amp;quot; nutzbar machen&lt;br /&gt;
     ohne die JTAG-Fuse-Bit zu aendern. Dazu ist eine &amp;quot;timed sequence&amp;quot;&lt;br /&gt;
     einzuhalten (vgl Datenblatt ATmega16, Stand 10/04, S. 229): &lt;br /&gt;
     Das JTD-Bit muss zweimal innerhalb von 4 Taktzyklen geschrieben &lt;br /&gt;
     werden. Ein Interrupt zwischen den beiden Schreibzugriffen wuerde &lt;br /&gt;
     die erforderliche Sequenz &amp;quot;brechen&amp;quot;, das JTAG-Interface bliebe&lt;br /&gt;
     weiterhin aktiv und die IO-Pins weiterhin für JTAG reserviert. */&lt;br /&gt;
&lt;br /&gt;
   MCUCSR |= (1&amp;lt;&amp;lt;JTD);&lt;br /&gt;
   MCUCSR |= (1&amp;lt;&amp;lt;JTD); // 2 mal in Folge ,vgl. Datenblatt fuer mehr Information&lt;br /&gt;
&lt;br /&gt;
   /* Beispiel Ende */&lt;br /&gt;
  &lt;br /&gt;
   SREG = tmp_sreg;     // Status-Register wieder herstellen &lt;br /&gt;
                      // somit auch das I-Flag auf gesicherten Zustand setzen&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void NichtSoGut(void)&lt;br /&gt;
{&lt;br /&gt;
   cli();&lt;br /&gt;
   &lt;br /&gt;
   /* hier &amp;quot;unterbrechnungsfreier&amp;quot; Code */&lt;br /&gt;
   &lt;br /&gt;
   sei();&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
int main(void)&lt;br /&gt;
{&lt;br /&gt;
   ...&lt;br /&gt;
&lt;br /&gt;
   cli();  &lt;br /&gt;
   // Interrupts global deaktiviert &lt;br /&gt;
&lt;br /&gt;
   NichtUnterbrechenBitte();&lt;br /&gt;
   // auch nach Aufruf der Funktion deaktiviert&lt;br /&gt;
&lt;br /&gt;
   sei();&lt;br /&gt;
   // Interrupts global aktiviert &lt;br /&gt;
&lt;br /&gt;
   NichtUnterbrechenBitte();&lt;br /&gt;
   // weiterhin aktiviert&lt;br /&gt;
   ...&lt;br /&gt;
&lt;br /&gt;
   /* Verdeutlichung der unguenstigen Vorgehensweise mit cli/sei: */&lt;br /&gt;
   cli();  &lt;br /&gt;
   // Interrupts jetzt global deaktiviert &lt;br /&gt;
&lt;br /&gt;
   NichtSoGut();&lt;br /&gt;
   // nach Aufruf der Funktion sind Interrupts global aktiviert &lt;br /&gt;
   // dies ist mglw. ungewollt!&lt;br /&gt;
   ...&lt;br /&gt;
   &lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- mt: besser so nicht(?), lieber &amp;quot;datenblattkonform&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;font face=&amp;quot;Courier New&amp;quot;&amp;gt;&#039;&#039;&#039;timer_enable_int (unsigned char ints);&amp;lt;br /&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;&amp;lt;/font&amp;gt;Schaltet Timerbezogene Interrupts ein bzw. aus.&amp;lt;br /&amp;gt;&lt;br /&gt;
Wenn als Argument &#039;&#039;&#039;ints&#039;&#039;&#039; der Wert 0 übergeben wird so werden alle&lt;br /&gt;
Timerinterrupts ausgeschaltet, ansonsten muss in &#039;&#039;&#039;ints&#039;&#039;&#039; angegeben werden,&lt;br /&gt;
welche Interrupts zu aktivieren sind. Dabei müssen einfach die entsprechend zu&lt;br /&gt;
setzenden Bits definiert werden.&amp;lt;br /&amp;gt;&lt;br /&gt;
Beispiel: &#039;&#039;&#039;&amp;lt;font face=&amp;quot;Courier New&amp;quot;&amp;gt;timer_enable_int (1 &amp;lt;&amp;lt; TOIE1));&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;/font&amp;gt;&#039;&#039;&#039;Achtung: Wenn ein Timerinterrupt eingeschaltet wird während ein&lt;br /&gt;
anderer Timerinterrupt bereits läuft, dann müssen beide Bits angegeben werden&lt;br /&gt;
sonst wird der andere Timerinterrupt versehentlich ausgeschaltet.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;font face=&amp;quot;Courier New&amp;quot;&amp;gt;&#039;&#039;&#039;enable_external_int (unsigned char ints);&amp;lt;br /&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;&amp;lt;/font&amp;gt;Schaltet die externen Interrupts ein bzw. aus.&amp;lt;br /&amp;gt;&lt;br /&gt;
Wenn als Argument &#039;&#039;&#039;ints&#039;&#039;&#039; der Wert 0 übergeben wird so werden alle externen&lt;br /&gt;
Interrrups ausgeschaltet, ansonsten muss in &#039;&#039;&#039;ints&#039;&#039;&#039; angegeben werden, welche&lt;br /&gt;
Interrupts zu aktivieren sind. Dabei müssen einfach die entsprechend zu&lt;br /&gt;
setzenden Bits definiert werden.&amp;lt;br /&amp;gt;&lt;br /&gt;
Beispiel: &#039;&#039;&#039;&amp;lt;font face=&amp;quot;Courier New&amp;quot;&amp;gt;enable_external_int ((1&amp;lt;&lt;br /&gt;
&amp;lt;/font&amp;gt;&#039;&#039;&#039;Schaltet die externen Interrupts 0 und 1 ein.&lt;br /&gt;
&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nachdem nun die Interrupts aktiviert sind, braucht es selbstverständlich noch den auszuführenden Code, der ablaufen soll, wenn ein Interrupt eintrifft. Dazu gibt es zwei Definitionen: &#039;&#039;&#039;SIGNAL&#039;&#039;&#039; und &#039;&#039;&#039;INTERRUPT&#039;&#039;&#039;, welche allerdings AVR-GCC spezifisch sind und bei anderen Compilern womöglich anders heissen können.&lt;br /&gt;
&lt;br /&gt;
=== SIGNAL ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre class=&amp;quot;code&amp;quot;&amp;gt;&lt;br /&gt;
#include &amp;lt;avr/signal.h&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
SIGNAL (siglabel)&lt;br /&gt;
{&lt;br /&gt;
    /* Interrupt Code */&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Mit &#039;&#039;SIGNAL&#039;&#039; wird eine Funktion für die Bearbeitung eines Interrupts eingeleitet. Als Argument muss dabei die Benennung des entsprechenden Interruptvektors angegeben werden. Diese sind in den jeweiligen Includedateien IOxxxx.h zu finden. Auf die korrekte Schreibweise ist zu achten, der Compiler prüft diese nicht (vgl. [[AVR-GCC]]). Als Beispiel ein Ausschnitt aus der Datei für den ATmega8 (bei WinAVR Standardinstallation in C:\WinAVR\avr\include\avr\iom8.h): &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre class=&amp;quot;code&amp;quot;&amp;gt;&lt;br /&gt;
[...]&lt;br /&gt;
/* $Id: iom8.h,v 1.8 2003/02/17 09:57:28 marekm Exp $ */&lt;br /&gt;
&lt;br /&gt;
/* avr/iom8.h - definitions for ATmega8 */&lt;br /&gt;
[...]&lt;br /&gt;
&lt;br /&gt;
/* Interrupt vectors */&lt;br /&gt;
&lt;br /&gt;
#define SIG_INTERRUPT0		_VECTOR(1)&lt;br /&gt;
#define SIG_INTERRUPT1		_VECTOR(2)&lt;br /&gt;
#define SIG_OUTPUT_COMPARE2	_VECTOR(3)&lt;br /&gt;
#define SIG_OVERFLOW2		_VECTOR(4)&lt;br /&gt;
#define SIG_INPUT_CAPTURE1	_VECTOR(5)&lt;br /&gt;
#define SIG_OUTPUT_COMPARE1A	_VECTOR(6)&lt;br /&gt;
#define SIG_OUTPUT_COMPARE1B	_VECTOR(7)&lt;br /&gt;
#define SIG_OVERFLOW1		_VECTOR(8)&lt;br /&gt;
#define SIG_OVERFLOW0		_VECTOR(9)&lt;br /&gt;
#define SIG_SPI			_VECTOR(10)&lt;br /&gt;
#define SIG_UART_RECV		_VECTOR(11)&lt;br /&gt;
#define SIG_UART_DATA		_VECTOR(12)&lt;br /&gt;
#define SIG_UART_TRANS		_VECTOR(13)&lt;br /&gt;
#define SIG_ADC			_VECTOR(14)&lt;br /&gt;
#define SIG_EEPROM_READY	_VECTOR(15)&lt;br /&gt;
#define SIG_COMPARATOR		_VECTOR(16)&lt;br /&gt;
#define SIG_2WIRE_SERIAL	_VECTOR(17)&lt;br /&gt;
#define SIG_SPM_READY		_VECTOR(18)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vor Nutzung von SIGNAL muss ebenfalls die Header-Datei signal.h eingebunden werden. Mögliche Funktionsrümpfe für solche Interruptfunktionen sind zum Beispiel:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre class=&amp;quot;code&amp;quot;&amp;gt;&lt;br /&gt;
#include &amp;lt;avr/interrupt.h&amp;gt;&lt;br /&gt;
#include &amp;lt;avr/signal.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
SIGNAL (SIG_INTERRUPT0)&lt;br /&gt;
{&lt;br /&gt;
    /* Interrupt Code */&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
SIGNAL (SIG_OVERFLOW1)&lt;br /&gt;
{&lt;br /&gt;
    /* Interrupt Code */&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
SIGNAL (SIG_UART_RECV)&lt;br /&gt;
{&lt;br /&gt;
    /* Interrupt Code */&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// und so weiter und so fort...&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Während der Ausführung der Funktion sind alle weiteren Interrupts automatisch gesperrt. Beim Verlassen der Funktion werden die Interrupts wieder zugelassen.&lt;br /&gt;
&lt;br /&gt;
Sollte während der Abarbeitung der Interruptroutine ein weiterer Interrupt (gleiche oder andere Interruptquelle) auftreten, so wird das entsprechende Bit im zugeordneten Interrupt Flag Register gesetzt und die entsprechende Interruptroutine automatisch nach dem Beenden der aktuellen Funktion aufgerufen.&lt;br /&gt;
&lt;br /&gt;
Ein Problem ergibt sich eigentlich nur dann, wenn während der Abarbeitung der aktuellen Interruptroutine mehrere gleichartige Interrupts auftreten. Die entsprechende Interruptroutine wird im Nachhinein zwar aufgerufen jedoch wissen wir nicht, ob nun der entsprechende Interrupt einmal, zweimal oder gar noch öfter aufgetreten ist. Deshalb soll hier noch einmal betont werden, dass Interruptroutinen so schnell wie nur irgend möglich wieder verlassen werden sollten.&lt;br /&gt;
&lt;br /&gt;
=== INTERRUPT ===&lt;br /&gt;
&lt;br /&gt;
&amp;quot;Faustregel&amp;quot;: im Zweifel &#039;&#039;&#039;SIGNAL&#039;&#039;&#039;. INTERRUPT nur dann, wenn man sich über die unterschiedliche Funktionsweise im Klaren ist.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre class=&amp;quot;code&amp;quot;&amp;gt;&lt;br /&gt;
#include &amp;lt;avr/interrupt.h&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
INTERRUPT (signame)&lt;br /&gt;
{&lt;br /&gt;
    /* Interrupt Code */&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Mit INTERRUPT wird fast genauso gearbeitet wie mit SIGNAL. Der Unterschied ist derjenige, dass bei INTERRUPT beim Aufrufen der Funktion das &#039;&#039;&#039;Global Enable Interrupt&#039;&#039;&#039; Bit automatisch wieder gesetzt und somit weitere Interrupts zugelassen werden. Dies kann zu nicht unerheblichen Problemen von im einfachsten Fall einem Stack overflow bis zu sonstigen unerwarteten Effekten führen und sollte wirklich &#039;&#039;&#039;nur dann&#039;&#039;&#039; angewendet werden, wenn man sich absolut sicher ist, das Ganze auch im Griff zu haben.  Vor Nutzung von INTERRUPT muss die Header-Datei interrupt.h eingebunden werden.&lt;br /&gt;
&lt;br /&gt;
siehe auch: Hinweise in [[AVR-GCC]]&lt;br /&gt;
&lt;br /&gt;
== Datenaustausch mit Interrupt-Routinen ==&lt;br /&gt;
&lt;br /&gt;
Variablen auf die sowohl in Interrupt-Routinen (ISR = Interrupt Service Routine(s)), als auch vom übrigen Programmcode geschrieben oder gelesen werden, müssen mit einem &#039;&#039;&#039;volatile&#039;&#039;&#039; deklariert werden. Damit wird dem Compiler mitgeteilt, dass der Inhalt der Variablen vor jedem Lesezugriff aus dem Speicher gelesen wird und nach jedem Schreibzugriff in den Speicher geschrieben wird. Ansonsten könnte die Code-Optimierung &amp;quot;greifen&amp;quot; und der Wert der Variablen nur in Prozessorregistern zwischenspeichert werden, die &amp;quot;nichts von der Änderung woanders mitbekommen&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Zur Veranschaulichung ein Codefragment für eine Tastenentprellung mit Erkennung einer &amp;quot;lange gedrückten&amp;quot; Taste.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre class=&amp;quot;code&amp;quot;&amp;gt;&lt;br /&gt;
#include &amp;lt;avr/io.h&amp;gt;&lt;br /&gt;
#include &amp;lt;avr/interrupt.h&amp;gt;&lt;br /&gt;
#include &amp;lt;avr/signal.h&amp;gt;&lt;br /&gt;
#include &amp;lt;inttypes.h&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
// Schwellwerte&lt;br /&gt;
// Entprellung: &lt;br /&gt;
#define CNTDEBOUNCE 10&lt;br /&gt;
// &amp;quot;lange gedrueckt:&amp;quot;&lt;br /&gt;
#define CNTREPEAT 200&lt;br /&gt;
&lt;br /&gt;
// hier z.B. Taste an Pin2 PortA &amp;quot;active low&amp;quot; = 0 wenn gedrueckt&lt;br /&gt;
#define KEY_PIN  PINA&lt;br /&gt;
#define KEY_PINNO PA2&lt;br /&gt;
&lt;br /&gt;
// beachte: volatile! &lt;br /&gt;
volatile uint8_t gKeyCounter;&lt;br /&gt;
&lt;br /&gt;
// Timer-Compare Interrupt z.B. alle 10ms&lt;br /&gt;
SIGNAL(SIG_OUTPUT_COMPARE1A)&lt;br /&gt;
{&lt;br /&gt;
   // hier wird gKeyCounter veraendert, die uebrigen&lt;br /&gt;
   // Programmteile muessen diese Aenderung &amp;quot;sehen&amp;quot;&lt;br /&gt;
   // (volatile -&amp;gt; aktuellen Wert immer in den Speicher schreiben)&lt;br /&gt;
   if ( !(KEY_PIN &amp;amp; (1&amp;lt;&amp;lt;KEY_PINNO)) )&lt;br /&gt;
      if (gKeyCouter &amp;lt; CNTREPEAT) gKeyCounter++;&lt;br /&gt;
   else gKeyCounter = 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
int main(void)&lt;br /&gt;
{&lt;br /&gt;
...&lt;br /&gt;
    /* hier: Initialisierung der Ports und des Timer-Interrupts */&lt;br /&gt;
... &lt;br /&gt;
   // hier wird auf gKeyCounter zugegriffen, dazu muss der in der&lt;br /&gt;
   // ISR geschrieben Wert bekannt sein.&lt;br /&gt;
   // (volatile -&amp;gt; aktuellen Wert immer aus dem Speicher lesen)&lt;br /&gt;
   if ( gKeyCounter &amp;gt; CNTDEBOUNCE ) { // Taste mind. 10*10 ms &amp;quot;prellfrei&amp;quot;&lt;br /&gt;
       if (gKeyCounter == CNTREPEAT) {&lt;br /&gt;
          /* hier: Code fuer &amp;quot;Taste lange gedrueckt&amp;quot;&lt;br /&gt;
       }&lt;br /&gt;
       else {&lt;br /&gt;
          /* hier: Code fuer &amp;quot;Taste kurz gedrueckt&amp;quot;&lt;br /&gt;
       }&lt;br /&gt;
...&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Bei Variablen größer ein Byte muss darauf geachtet werden, dass die Zugriffe auf die einzelnen Bytes ausserhalb der ISR nicht durch einen Interrupt unterbrochen werden. (Allgemeinplatz: AVRs sind 8-bit Controller). Zur Veranschaulichung ein Codefragment:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre class=&amp;quot;code&amp;quot;&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
volatile uint16_t gMyCounter16bit&lt;br /&gt;
...&lt;br /&gt;
SIGNAL(...)&lt;br /&gt;
{&lt;br /&gt;
...&lt;br /&gt;
   gMyCounter16Bit++;&lt;br /&gt;
...&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
int main(void)&lt;br /&gt;
{&lt;br /&gt;
   uint16_t tmpCnt;&lt;br /&gt;
...&lt;br /&gt;
   // nicht gut: mglw. hier ein Fehler wenn ein Byte von MyCounter &lt;br /&gt;
   // schon in tmpCnt kopiert ist aber vor Kopieren des zweiten Bytes &lt;br /&gt;
   // ein Interrupt auftritt der den Inhalt von MyCounter veraendert&lt;br /&gt;
   tmpCnt = gMyCounter16bit; &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   // besser: Aenderungen &amp;quot;ausserhalb&amp;quot; verhindern, alle &amp;quot;Teilbytes&amp;quot;&lt;br /&gt;
   // bleiben konsistent&lt;br /&gt;
   cli();  // Interupts deaktivieren&lt;br /&gt;
   tmpCnt = gMyCounter16Bit;&lt;br /&gt;
   sei();  // wieder aktivieren&lt;br /&gt;
...&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* siehe auch: [http://www.nongnu.org/avr-libc/user-manual/index.html Dokumentation der avr-libc] Frequently asked Questions/Fragen Nr. 1 und 8 (Stand: avr-libc Vers. 1.0.4)&lt;br /&gt;
&lt;br /&gt;
== Was macht das Hauptprogramm ==&lt;br /&gt;
&lt;br /&gt;
Im einfachsten (Ausnahme-)Fall gar nichts mehr. Es ist also durchaus denkbar, ein Programm zu schreiben, welches in der main-Funktion lediglich noch die Interrupts aktiviert und dann in einer Endlosschleife verharrt. Sämtliche Funktionen werden dann in den ISRs abgearbeitet. Diese Vorgehensweise ist jedoch bei den meisten Anwendungen schlecht: man verschenkt eine Verarbeitungsebene und hat ausserdem möglicherweise Probleme durch Interruptroutinen, die zu viel Verarbeitungszeit benötigen.&lt;br /&gt;
&lt;br /&gt;
Normalerweise wird man in den Interruptroutinen die nur die bei Auftreten des jeweiligen Interruptereignisses unbedingt notwendigen Operationen ausführen lassen. Alle weniger kritischen Aufgaben werden dann im Hauptprogramm abgearbeitet.&lt;br /&gt;
&amp;lt;!-- Wie wir im bisherigen Kursverlauf gesehen haben ist es ohnehin mit so schnellen Controller meistens gar nicht unbedingt notwendig mit Interruptfunktionen zu arbeiten. Es ist allerdings auch zu bemerken, dass mit den Interruptroutinen ein Programm sehr schön strukturiert werden kann, wenn man es richtig macht.&lt;br /&gt;
mt: Strukturieren durch ISRs - eher nicht. Interrupts wenns die Funktion erfordert, aber nicht der Programm&amp;quot;struktur&amp;quot; willen. --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* siehe auch: [http://www.nongnu.org/avr-libc/user-manual/index.html Dokumentation der avr-libc] Abschnitt Modules/Interrupts and Signals&lt;br /&gt;
&lt;br /&gt;
= Speicherzugriffe =&lt;br /&gt;
&lt;br /&gt;
Atmel AVR-Controller verfügen typisch über drei Speicher:&lt;br /&gt;
&lt;br /&gt;
* [[RAM]]: Im RAM (genauer statisches RAM/SRAM) wird vom gcc-Compiler Platz für Variablen reserviert. Auch der Stack befindet sich im RAM. Dieser Speicher ist &amp;quot;flüchtig&amp;quot;, d.h. der Inhalt der Variablen geht beim Ausschalten oder einem Zusammenbruch der Spannungsversorgung verloren.&lt;br /&gt;
&lt;br /&gt;
* Programmspeicher: Ausgeführt als FLASH-Speicher, seitenweise wiederbeschreibbar. Darin ist das Anwendungsprogramm abgelegt.&lt;br /&gt;
&lt;br /&gt;
* [[EEPROM]]: Nichtflüchtiger Speicher, d.h. der einmal geschriebene Inhalt bleibt auch ohne Stromversorgung erhalten. Byte-weise schreib/lesbar. Im EEPROM werden typischerweise gerätespezifische Werte wie z.B. Kalibrierungswerte von Sensoren abgelegt.&lt;br /&gt;
&lt;br /&gt;
Einige AVRs besitzen keinen RAM-Speicher, lediglich die Register können als &amp;quot;Arbeitsvariablen&amp;quot;&lt;br /&gt;
genutzt werden. Da die Anwendung des avr-gcc auf solch &amp;quot;kleinen&amp;quot; Controllern ohnehin wenig Sinn macht und auch nur bei einigen RAM-losen Typen nach [http://lightner.net/avr/ATtinyAvrGcc.html &amp;quot;Bastelarbeiten&amp;quot;] möglich ist, werden diese Controller hier nicht weiter berücksichtigt. Auch EEPROM-Speicher ist nicht auf allen Typen verfügbar. Generell sollten die nachfolgenden Erläuterungen auf alle ATmega-Controller und die größeren AT90-Typen übertragbar sein. Für die Typen ATtiny2313 und ATtiny26 der &amp;quot;tiny-Reihe&amp;quot; gelten die Ausführungen ebenfalls.&lt;br /&gt;
&lt;br /&gt;
== RAM ==&lt;br /&gt;
&lt;br /&gt;
Die Verwaltung des RAM-Speichers erfolgt durch den Compiler, im Regelfall ist beim Zugriff auf Variablen im RAM nichts Besonderes zu beachten. Die Erläuterungen in jedem brauchbaren C-Buch gelten auch für den vom avr-gcc-Compiler erzeugten Code.&lt;br /&gt;
&lt;br /&gt;
== Programmspeicher (Flash) ==&lt;br /&gt;
&lt;br /&gt;
Ein Zugriff auf Konstanten im Programmspeicher ist mittels avr-gcc nicht &amp;quot;transparent&amp;quot; möglich. D.h. es sind besondere Zugriffsfunktionen erforderlich um Daten aus diesem Speicher zu lesen. Grundsätzlich basieren alle Zugriffsfunktionen auf der Assembler-Anweisung lpm (load program memory). Die Standard-Laufzeitbibliothek des avr-gcc (die avr-libc) stellt diese Funktionen nach Einbinden der Header-Datei pgmspace.h zur Verfügung. Mit diesen Funktionen können einzelne Bytes, Datenworte (16bit) und Datenblöcke gelesen werden. &lt;br /&gt;
&lt;br /&gt;
Deklarationen von Variablen im Flash-Speicher werden durch das &amp;quot;Attribut&amp;quot; PROGMEM ergänzt. Lokale Variablen (eigentlich Konstanten) innerhalb von Funktionen können ebenfalls im Programmspeicher abgelegt werden. Dazu ist bei der Definition jedoch ein &#039;&#039;static&#039;&#039; voranzustellen, da solche &amp;quot;Variablen&amp;quot; nicht auf dem Stack bzw. (bei Optimierung) in Registern verwaltet werden können. Der Compiler &amp;quot;wirft&amp;quot; eine Warnung falls static fehlt.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre class=&amp;quot;code&amp;quot;&amp;gt;&lt;br /&gt;
#include &amp;lt;avr/io.h&amp;gt;&lt;br /&gt;
#include &amp;lt;avr/pgmspace.h&amp;gt;&lt;br /&gt;
#include &amp;lt;inttypes.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
/* Byte */&lt;br /&gt;
const uint8_t pgmFooByte PROGMEM = 123;&lt;br /&gt;
&lt;br /&gt;
/* Wort */&lt;br /&gt;
const uint16_t pgmFooWort PROGMEM = 12345;&lt;br /&gt;
&lt;br /&gt;
/* Byte-Feld */&lt;br /&gt;
const uint8_t pgmFooByteArray1[] PROGMEM = { 18, 3 ,70 };&lt;br /&gt;
const uint8_t pgmFooByteArray2[] PROGMEM = { 30, 7 ,79 };&lt;br /&gt;
&lt;br /&gt;
/* Zeiger */&lt;br /&gt;
const uint8_t *pgmPointerToArray1 PROGMEM = pgmFooByteArray1;&lt;br /&gt;
const uint8_t *pgmPointerArray[] PROGMEM = { pgmFooByteArray1, pgmFooByteArray1 };&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
void foo(void)&lt;br /&gt;
{&lt;br /&gt;
  static /*const*/ uint8_t pgmTestByteLocal PROGMEM = 0x55;&lt;br /&gt;
  static /*const*/ char pgmTestStringLocal[] PROGMEM = &amp;quot;im Flash&amp;quot;;&lt;br /&gt;
  ...&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Byte lesen ===&lt;br /&gt;
&lt;br /&gt;
Mit der Funktion pgm_read_byte aus pgmspace.h erfolgt der Zugriff auf die Daten. Parameter der Funktion ist die Adresse des Bytes im Flash-Speicher.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre class=&amp;quot;code&amp;quot;&amp;gt;&lt;br /&gt;
    // Wert der Ram-Variablen myByte auf den Wert von pgmFooByte setzen:&lt;br /&gt;
    uint8_t myByte;&lt;br /&gt;
&lt;br /&gt;
    myByte = pgm_read_byte(&amp;amp;pgmFooByte);&lt;br /&gt;
    // myByte hat nun den Wert 123&lt;br /&gt;
&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
    // Schleife ueber ein Array aus Byte-Werten im Flash&lt;br /&gt;
    uint8_t i;&lt;br /&gt;
&lt;br /&gt;
    for (i=0;i&amp;lt;3;i++) {&lt;br /&gt;
        myByte = pgm_read_byte(&amp;amp;pgmFooByteArray1[i]);&lt;br /&gt;
        // mach&#039; was mit myByte...&lt;br /&gt;
    }&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Wort lesen ===&lt;br /&gt;
&lt;br /&gt;
Für &amp;quot;einfache&amp;quot; 16-bit breite Variablen erfolgt der Zugriff analog zum Byte-Beispiel, jedoch mit der Funktion pgm_read_word.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre class=&amp;quot;code&amp;quot;&amp;gt;&lt;br /&gt;
    uint16_t myWord;&lt;br /&gt;
&lt;br /&gt;
    myWord = pgm_read_word(&amp;amp;pgmFooWord);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Zeiger auf Werte im Flash sind ebenfalls 16 Bits &amp;quot;gross&amp;quot;. (Die avr-libc pgmspace-Funktionen unterstützen nur die unteren 64kB Flash bei Controllern mit mehr als 64kB.) Pointer müssen gegebenenfalls &amp;quot;gecastet&amp;quot; werden.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre class=&amp;quot;code&amp;quot;&amp;gt;&lt;br /&gt;
    uint8_t *ptrToArray;&lt;br /&gt;
&lt;br /&gt;
    ptrToArray = (uint8_t*)(pgm_read_word(&amp;amp;pgmPointerToArray1));&lt;br /&gt;
    // ptrToArray zeigt nun auf das erste Element des Byte-Arrays pgmPointerToArray1&lt;br /&gt;
&lt;br /&gt;
    for (i=0;i&amp;lt;3;i++) {&lt;br /&gt;
        myByte = pgm_read_byte(ptrToArray+i);&lt;br /&gt;
        // mach&#039; was mit myByte... (18, 3, 70)&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    ptrToArray = (uint8_t*)(pgm_read_word(&amp;amp;pgmPointerArray[1]));&lt;br /&gt;
    &lt;br /&gt;
    // ptrToArray zeigt nun auf das erste Element des Byte-Arrays pgmPointerToArray2&lt;br /&gt;
    // da im zweiteb Element des Pointer-Arrays pgmPointerArray die Adresse&lt;br /&gt;
    // von pgmPointerToArray2 abgelegt ist&lt;br /&gt;
&lt;br /&gt;
    for (i=0;i&amp;lt;3;i++) {&lt;br /&gt;
        myByte = pgm_read_byte(ptrToArray+i);&lt;br /&gt;
        // mach&#039; was mit myByte... (30, 7, 79)&lt;br /&gt;
    }&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Floats und Structs lesen ===&lt;br /&gt;
&lt;br /&gt;
Um komplexe Datentypen (structs), nicht-integer Datentypen (floats) aus dem Flash auszulesen, sind Hilfsfunktionen erforderlich. Einige Beispiele:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre class=&amp;quot;code&amp;quot;&amp;gt;&lt;br /&gt;
/* Beispiel float aus Flash */&lt;br /&gt;
&lt;br /&gt;
float pgmFloatArray[3] PROGMEM = {1.1, 2.2, 3.3};&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
/* liest float von Flash-Addresse addr und gibt diese als return-value zurueck */&lt;br /&gt;
inline float pgm_read_float(const float *addr)&lt;br /&gt;
{	&lt;br /&gt;
	union&lt;br /&gt;
	{&lt;br /&gt;
		uint16_t i[2];	// 2 16-bit-Worte&lt;br /&gt;
		float f;&lt;br /&gt;
	} u;&lt;br /&gt;
	&lt;br /&gt;
	u.i[0]=pgm_read_word((PGM_P)addr);&lt;br /&gt;
	u.i[1]=pgm_read_word((PGM_P)addr+2);&lt;br /&gt;
	&lt;br /&gt;
	return u.f;&lt;br /&gt;
} &lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
void egal(void)&lt;br /&gt;
{&lt;br /&gt;
   int i;&lt;br /&gt;
   float f;&lt;br /&gt;
&lt;br /&gt;
   for (i=0;i&amp;lt;3;i++) {&lt;br /&gt;
      f = pgm_read_float(&amp;amp;pgmFloatArray[i]); // entspr. &amp;quot;f = pgmFloatArray[i];&amp;quot;&lt;br /&gt;
      // mach&#039; was mit f &lt;br /&gt;
   }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
TODO: Beispiele fuer structs und pointer aus flash auf struct im flash (menues, state-machines etc.)&lt;br /&gt;
&lt;br /&gt;
=== Vereinfachung für Zeichenketten (Strings) im Flash ===&lt;br /&gt;
&lt;br /&gt;
Zeichenketten können innerhalb des Quellcodes als &amp;quot;Flash-Konstanten&amp;quot; ausgewiesen werden. Dazu dient das Makro PSTR aus pgmspace.h. Dies erspart die getrennte Deklaration mit PROGMEM-Attribut.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre class=&amp;quot;code&amp;quot;&amp;gt;&lt;br /&gt;
#include &amp;lt;avr/io.h&amp;gt;&lt;br /&gt;
#include &amp;lt;avr/pgmspace.h&amp;gt;&lt;br /&gt;
#include &amp;lt;string.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
#define MAXLEN 30&lt;br /&gt;
&lt;br /&gt;
char StringImFlash[] PROGMEM = &amp;quot;Erwin Lindemann&amp;quot;; // im &amp;quot;Flash&amp;quot;&lt;br /&gt;
char StringImRam[MAXLEN];&lt;br /&gt;
&lt;br /&gt;
...&lt;br /&gt;
    strcpy(StringImRam, &amp;quot;Mueller-Luedenscheidt&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
    if (!strncmp_P(StringImRam, StringImFlash, 5) { &lt;br /&gt;
        // mach&#039; was, wenn die ersten 5 Zeichen identisch - hier nicht&lt;br /&gt;
    }&lt;br /&gt;
    else {&lt;br /&gt;
        // der Code hier wuerde ausgefuehrt &lt;br /&gt;
    } &lt;br /&gt;
&lt;br /&gt;
    if (!strncmp_P(StringImRam, PSTR(&amp;quot;Mueller-Schmitt&amp;quot;), 5)) {&lt;br /&gt;
        // der Code hier wuerde ausgefuehrt, die ersten 5 Zeichen stimmen ueberein&lt;br /&gt;
    }&lt;br /&gt;
    else {&lt;br /&gt;
        // wuerde bei nicht-Uebereinstimmung ausgefuehrt&lt;br /&gt;
    }&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Aber Vorsicht: Ersetzt man zum Beispiel&lt;br /&gt;
&amp;lt;pre class=&amp;quot;code&amp;quot;&amp;gt;&lt;br /&gt;
const char textImFlashOK[] PROGMEM = &amp;quot;mit[]&amp;quot;; &lt;br /&gt;
// = Daten im &amp;quot;Flash&amp;quot;, textImFlashOK* zeigt auf Flashadresse&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
durch&lt;br /&gt;
&amp;lt;pre class=&amp;quot;code&amp;quot;&amp;gt;&lt;br /&gt;
const char* textImFlashProblem PROGMEM = &amp;quot;mit*&amp;quot;;&lt;br /&gt;
// Konflikt: Daten im BSS (lies: RAM), textImFlashFAIL* zeigt auf Flashadresse&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
dann kann es zu Problemen mit AVR-GCC kommen. Zu erkennen daran, dass der Initialisierungsstring von &amp;quot;textInFlashProblem&amp;quot; zu den Konstanten ans Ende des Programmcodes gelegt wird (BSS), von dem aus er zur Benutzung eigentlich ins RAM kopiert werden sollte (und wird). Da der lesende Code (mittels pgm_read*) trotzdem an einer Stelle vorne im Flash sucht, wird Unsinn gelesen. Dies scheint ein weiters Problem des AVR-GCC (gesehen bei avr-gcc 3.4.1 und 3.4.2) bei der Anpassung an die Harvard-Architektur zu sein (konstanter Pointer auf variable Daten?!). Abhilfe (&amp;quot;Workaround&amp;quot;): Initialisierung bei Zeichenketten mit [] oder gleich im Code PSTR(&amp;quot;...&amp;quot;) nutzen.&lt;br /&gt;
&lt;br /&gt;
Übergibt man Zeichenketten (genauer: die Adresse des ersten Zeichens), die im Flash abglegt sind an eine Funktion, muss diese entsprechend programmiert sein. Die Funktion selbst hat keine Möglichkeit zu unterscheiden ob es sich um eine Adresse im Flash  oder im RAM handelt. Die avr-libc und viele andere avr-gcc-Bibliotheken halten sich an die Konvention, dass Namen von Funktionen die Flash-Adressen erwarten mit dem Suffix _p (oder _P) versehen sind. &lt;br /&gt;
&lt;br /&gt;
Von einigen Bibliotheken werden Makros definiert, die &amp;quot;automatisch&amp;quot; ein PSTR bei Verwendung einer Funktion einfügen. Ein Blick in den Header-File der Bibliothek zeigt, ob dies der Fall ist. Ein Beispiel aus P. Fleurys lcd-Library:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre class=&amp;quot;code&amp;quot;&amp;gt;&lt;br /&gt;
// Ausschnitt aus dem Header-File lcd.h der &amp;quot;Fleury-LCD-Lib.&amp;quot;&lt;br /&gt;
...&lt;br /&gt;
extern void lcd_puts_p(const char *progmem_s);&lt;br /&gt;
#define lcd_puts_P(__s) lcd_puts_p(PSTR(__s))&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
// in einer Anwendung (wieauchimmmer.c)&lt;br /&gt;
#include &amp;lt;avr/io.h&amp;gt;&lt;br /&gt;
#include &amp;lt;avr/pgmspace.h&amp;gt;&lt;br /&gt;
#include &amp;lt;string.h&amp;gt;&lt;br /&gt;
#include &amp;quot;lcd.h&amp;quot;&lt;br /&gt;
&lt;br /&gt;
char StringImFlash[] PROGMEM = &amp;quot;Erwin Lindemann&amp;quot;; // im &amp;quot;Flash&amp;quot;&lt;br /&gt;
&lt;br /&gt;
...&lt;br /&gt;
    lcd_puts_p(StringImFlash); &lt;br /&gt;
    lcd_puts_P(&amp;quot;Dr. Kloebner&amp;quot;); &lt;br /&gt;
    // daraus wird wg. #define lcd_put_P...:  lcd_puts_p( PSTR(&amp;quot;Dr. Kloebner&amp;quot;) );&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Flash in der Anwendung schreiben ===&lt;br /&gt;
&lt;br /&gt;
Bei AVRs mit &amp;quot;self-programming&amp;quot;-Option (auch bekannt als Bootloader-Support) können Teile des Flash-Speichers auch vom Anwendungsprogramm selbst beschrieben werden. Dies ist nur möglich, wenn die Schreibfunktionen in einem besonderen Speicherbereich (boot-section) des Programmspeichers/Flash abgelegt sind. Bei wenigen &amp;quot;kleinen&amp;quot; AVRs gibt es keine gesonderte Boot-Section, bei diesen kann der Flashspeicher von jeder Stelle des Programms geschrieben werden. Für Details sei hier auf das jeweilige Controller-Datenblatt und die Erläuterungen zum Modul boot.h der avr-libc verwiesen. Es existieren auch Application-Notes dazu bei atmel.com, die auf avr-gcc-Code übertragbar sind.&lt;br /&gt;
&lt;br /&gt;
=== Warum so kompliziert? ===&lt;br /&gt;
&lt;br /&gt;
Zu dem Thema, warum die Verabeitung von Werten aus dem Flash-Speicher so &amp;quot;kompliziert&amp;quot; ist, sei hier nur kurz erläutert: Die Harvard-Architektur des AVR weist getrennte Adressräume für Programm(Flash)- und Datenspeicher(RAM) auf. Der C-Standard und der gcc-Compiler sehen keine unterschiedlichen Adressräume vor. &lt;br /&gt;
Hat man zum Beispiel eine Funktion string_an_uart(const char* s) und übergibt an diese Funktion die Adresse einer Zeichenkette (einen Pointer, z.B. 0x01fe), &amp;quot;weiss&amp;quot; die Funktion nicht, ob die Adresse auf den Flash-Speicher oder den/das RAM zeigt. Allein aus dem Pointer-Wert (der Zahl) kann nicht geschlossen werden, ob ein &amp;quot;einfaches&amp;quot; zeichen_an_uart(s[i]) oder zeichen_an_uart(pgm_read_byte(&amp;amp;s[i]) genutzt werden muss, um das i-te Zeichen auszugeben.&lt;br /&gt;
&lt;br /&gt;
Einige AVR-Compiler &amp;quot;tricksen&amp;quot; etwas, in dem sie für einen Pointer nicht nur die Adresse anlegen, sondern zusätzlich zu jedem Pointer den Ablageort (Flash oder RAM) intern sichern. Bei Aufruf einer Funktion wird dann bei Pointer-Parametern neben der Adresse auch der Speicherbereich, auf den der Pointer zeigt, übergeben. Dies hat jedoch nicht nur Vorteile; Erläuterungen warum dies so ist, führen an dieser Stelle zu weit.&lt;br /&gt;
&lt;br /&gt;
* siehe auch: [http://www.nongnu.org/avr-libc/user-manual/index.html Dokumentation der avr-libc] Abschnitte Modules/Program Space String Utilities und Abschnitt Modules/Bootloader Support Utilities&lt;br /&gt;
&lt;br /&gt;
== EEPROM ==&lt;br /&gt;
&lt;br /&gt;
Man beachte, dass der EEPROM-Speicher nur eine begrenzte Anzahl von Schreibzugriffen zulässt. Beschreibt man eine EEPROM-Zelle öfter als die im Datenblatt zugesicherte Anzahl (typisch 100.000), wird die Funktion der Zelle nicht mehr garantiert. &lt;br /&gt;
Dies gilt für jede einzelne Zelle. Bei geschickter Programmierung (z.B. Ring-Puffer), bei der die zu beschreibenden Zellen regelmässig gewechselt werden, kann man eine deutlich höhere Anzahl an Schreibzugriffen, bezogen auf den Gesamtspeicher, erreichen.&lt;br /&gt;
&lt;br /&gt;
Schreib- und Lesezugriffe auf den EEPROM-Speicher erfolgen über die im Modul eeprom.h definierten Funktionen. Mit diesen Funktionen können einzelne Bytes, Datenworte (16bit) und Datenblöcke geschrieben und gelesen werden. &lt;br /&gt;
&lt;br /&gt;
Bei Nutzung des EEPROMs ist zu beachten, dass vor dem Zugriff auf diesen Speicher abgefragt wird, ob der Controller die vorherige EEPROM-Operation abgeschlossen hat. Die avr-libc-Funktionen beinhalten diese Prüfung, man muss sie nicht selbst implementieren. Man sollte auch verhindern, dass der Zugriff durch die Abarbeitung einer Interrupt-Routine unterbrochen wird, da bestimme Befehlsabfolgen vorgegeben sind, die innerhalb weniger Taktzyklen aufeinanderfolgen müssen (&amp;quot;timed sequence&amp;quot;). Auch dies muss bei Nutzung der Funktionen aus der avr-libc/eeprom.h-Datei nicht selbst implementiert werden. Innerhalb der Funktionen werden Interrupts vor der &amp;quot;EEPROM-Sequenz&amp;quot; global deaktiviert und im Anschluss, falls vorher auch schon eingeschaltet, wieder aktiviert.&lt;br /&gt;
&lt;br /&gt;
Bei der Deklaration einer Variable im EEPROM, ist das Attribut für die Section &amp;quot;.eeprom&amp;quot; zu ergänzen. Die Nutzung einer [[C-Präprozessor]]-Ersetzung bringt etwas Bequemlichkeit. Siehe dazu folgendes Beispiel.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre class=&amp;quot;code&amp;quot;&amp;gt;&lt;br /&gt;
#include &amp;lt;avr/io.h&amp;gt;&lt;br /&gt;
#include &amp;lt;avr/eeprom.h&amp;gt;&lt;br /&gt;
#include &amp;lt;avr/interrupt.h&amp;gt;&lt;br /&gt;
#include &amp;lt;inttypes.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
// alle Textstellen EEPROM im Quellcode durch __attribute__ ... ersetzen&lt;br /&gt;
#define EEPROM  __attribute__ ((section (&amp;quot;.eeprom&amp;quot;)))&lt;br /&gt;
&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
/* Byte */&lt;br /&gt;
uint8_t eeFooByte EEPROM = 123;&lt;br /&gt;
&lt;br /&gt;
/* Wort */&lt;br /&gt;
uint16_t eeFooWort EEPROM = 12345;&lt;br /&gt;
&lt;br /&gt;
/* float */&lt;br /&gt;
float eeFooFloat EEPROM;&lt;br /&gt;
&lt;br /&gt;
/* Byte-Feld */&lt;br /&gt;
uint8_t eeFooByteArray1[] EEPROM = { 18, 3 ,70 };&lt;br /&gt;
uint8_t eeFooByteArray2[] EEPROM = { 30, 7 ,79 };&lt;br /&gt;
&lt;br /&gt;
/* 16-bit unsigned short feld */&lt;br /&gt;
uint16_t eeFooWordArray1[4] EEPROM;&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Bytes lesen/schreiben ===&lt;br /&gt;
&lt;br /&gt;
Die avr-libc Funktion zum Lesen eines Bytes heisst eeprom_read_byte. Parameter ist die Adresse des Bytes im EEPROM. Geschrieben wird über die Funktion eeprom_write_byte mit den Parametern Adresse und Inhalt. Anwendungsbeispiel:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre class=&amp;quot;code&amp;quot;&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
    uint8_t myByte;&lt;br /&gt;
&lt;br /&gt;
    myByte = eeprom_read_byte(&amp;amp;eeFooByte); // lesen&lt;br /&gt;
    // myByte hat nun den Wert 123&lt;br /&gt;
...&lt;br /&gt;
    myByte = 99;&lt;br /&gt;
    eeprom_write_byte(&amp;amp;eeFooByte, myByte); // schreiben&lt;br /&gt;
...&lt;br /&gt;
    myByte = eeprom_read_byte(&amp;amp;eeFooByteArray1[1]); &lt;br /&gt;
    // myByte hat nun den Wert 3&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Wort lesen/schreiben ===&lt;br /&gt;
&lt;br /&gt;
Schreiben und Lesen von Datenworten erfolgt analog zur Vorgehensweise bei Bytes:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre class=&amp;quot;code&amp;quot;&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
    uint16_t myWord;&lt;br /&gt;
&lt;br /&gt;
    myWord = eeprom_read_word(&amp;amp;eeFooWord); // lesen&lt;br /&gt;
    // myWord hat nun den Wert 12345&lt;br /&gt;
...&lt;br /&gt;
    myWord = 2222;&lt;br /&gt;
    eeprom_write_word(&amp;amp;eeFooWord, myWord); // schreiben&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Block lesen/schreiben ===&lt;br /&gt;
&lt;br /&gt;
Lesen und Schreiben von Datenblöcken erfolgt über die Funktionen &#039;&#039;eeprom_read_block()&#039;&#039; bzw. &#039;&#039;eeprom_write_block()&#039;&#039;. Die Funktionen erwarten drei Parameter: die Adresse der Quell- bzw. Zieldaten im RAM, die EEPROM-Addresse und die Länge des Datenblocks in Bytes (size_t).&lt;br /&gt;
&lt;br /&gt;
TODO: &#039;&#039;&#039;Vorsicht!&#039;&#039;&#039; die folgenden Beispiele sind noch nicht geprueft, erstmal nur als Hinweis auf &amp;quot;das Prinzip&amp;quot;. Evtl. fehlen &amp;quot;casts&amp;quot; und mglw. noch mehr.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre class=&amp;quot;code&amp;quot;&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
    unit8_t  myByteBuffer[3];&lt;br /&gt;
    uint16_t myWordBuffer[4];&lt;br /&gt;
&lt;br /&gt;
    /* Datenblock aus EEPROM LESEN  */&lt;br /&gt;
&lt;br /&gt;
    /* liest 3 Bytes aber der von eeFooByteArray1 definierten EEPROM-Adresse&lt;br /&gt;
       in das RAM-Array myByteBuffer */&lt;br /&gt;
    eeprom_read_block(myByteBuffer,eeFooByteArray1,3);&lt;br /&gt;
&lt;br /&gt;
    /* dito etwas anschaulicher aber &amp;quot;unnuetze Tipparbeit&amp;quot;: */&lt;br /&gt;
    eeprom_read_block(&amp;amp;myByteBuffer[0],&amp;amp;eeFooByteArray[0],3);&lt;br /&gt;
&lt;br /&gt;
    /* dito mit etwas Absicherung betr. der Laenge */&lt;br /&gt;
    eeprom_read_block(myByteBuffer,eeFooByteArray1,sizeof(myByteBuffer));&lt;br /&gt;
&lt;br /&gt;
    /* und nun mit &amp;quot;16bit&amp;quot; */&lt;br /&gt;
    eeprom_read_block(myWordBuffer,eeFooWordArray,sizeof(myWordBuffer));&lt;br /&gt;
&lt;br /&gt;
    /* Datenlock in EEPROM SCHREIBEN */&lt;br /&gt;
    eeprom_write_block(myByteBuffer,eeFooByteArray1,sizeof(myByteBuffer));&lt;br /&gt;
    eeprom_write_block(myWordBuffer,eeFooWordArray,sizeof(myWordBuffer));&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;quot;Nicht-Integer&amp;quot;-Datentypen wie z.B. Fliesskommazahlen lassen sich recht praktisch über eine &#039;&#039;union&#039;&#039; in &amp;quot;Byte-Arrays&amp;quot; konvertieren und wieder &amp;quot;zurückwandeln&amp;quot;. Dies erweist sich hier (aber nicht nur hier) als nützlich.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre class=&amp;quot;code&amp;quot;&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
   float myFloat = 12.34;&lt;br /&gt;
&lt;br /&gt;
   union {&lt;br /&gt;
      float r;&lt;br /&gt;
      uint8_t n[sizeof(float)];&lt;br /&gt;
   } u;&lt;br /&gt;
&lt;br /&gt;
   u.r = myFloat;&lt;br /&gt;
   &lt;br /&gt;
   /* float in EEPROM */&lt;br /&gt;
   eeprom_write_block(&amp;amp;(u.i),&amp;amp;eeFooFloat,sizeof(float));&lt;br /&gt;
&lt;br /&gt;
   /* float aus EEPROM */&lt;br /&gt;
   eeprom_read_block(&amp;amp;(u.i),&amp;amp;eeFooFloat,sizeof(float));&lt;br /&gt;
   /* u.r wieder 12.34 */&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Auch zusammengesetzte Typen lassen sich mit den Block-Routinen verarbeiten.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre class=&amp;quot;code&amp;quot;&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
typedef struct {&lt;br /&gt;
    uint8_t   label[8];&lt;br /&gt;
    unin8_t   rom_code[8];&lt;br /&gt;
} tMyStruct;&lt;br /&gt;
&lt;br /&gt;
#define MAXSENSORS 3&lt;br /&gt;
tMyStruct eeMyStruct[MAXSENSORS] EEPROM;&lt;br /&gt;
&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
void egal(void)&lt;br /&gt;
{&lt;br /&gt;
   tMyStruct work;&lt;br /&gt;
   &lt;br /&gt;
   strcpy(work.label,&amp;quot;Flur&amp;quot;);&lt;br /&gt;
   GetRomCode(work.rom_code);     // Dummy zur Veranschaulichung - setzt rom-code&lt;br /&gt;
&lt;br /&gt;
   /* Sichern von &amp;quot;work&amp;quot; im EEPROM */&lt;br /&gt;
   eeprom_write_block(&amp;amp;work,&amp;amp;eeMyStruct[0],sizeof(tMyStruct)); // f. Index 0&lt;br /&gt;
   strcpy(work.label,&amp;quot;Bad&amp;quot;);&lt;br /&gt;
   GetRomCode(work.rom_code);&lt;br /&gt;
   eeprom_write_block(&amp;amp;work,&amp;amp;eeMyStruct[1],sizeof(tMyStruct)); // f. Index 1&lt;br /&gt;
...&lt;br /&gt;
   /* Lesen der Daten EEPROM Index 0 in &amp;quot;work&amp;quot; */&lt;br /&gt;
   eeprom_read_block(&amp;amp;work,&amp;amp;eeMyStruct[0],sizeof(tMyStruct));&lt;br /&gt;
   // work.label hat nun den Inhalt &amp;quot;Flur&amp;quot;&lt;br /&gt;
...&lt;br /&gt;
}&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== EEPROM-Speicherabbild in .eep-Datei ===&lt;br /&gt;
&lt;br /&gt;
Eine besondere Funktion des avr-gcc ist, dass mit entsprechenden Optionen im Makefile aus den Initialisierungswerten der Variablen im Quellcode eine Datei erzeugt werden kann, die man auf den Controller programmieren kann (.eep-Datei). Damit können sehr elegant Standardwerte für den EEPROM-Inhalt im Quellcode definiert werden. Die Vorgehensweise wird aus dem WinAVR-Beispielmakefile ersichtlich. Siehe dazu die Erläuterungen im Abschnitt Exkurs: Makefiles.&lt;br /&gt;
&lt;br /&gt;
=== Bekannte Probleme bei den EEPROM-Funktionen ===&lt;br /&gt;
&lt;br /&gt;
Vorsicht: Nicht alle neuen AVR Controller werden von avr-libc/eeprom.h untersützt (Stand Version 1.2.3). Insbesondere beim den AVRs &amp;quot;der neuen Generation&amp;quot; (ATmega48/88/168/169) funktionieren die Funktionen nicht korrekt (Ursache: unterschiedliche Speicheradressen der EEPROM-Register, detaillierte Auflistung der nicht-unterstützten Typen in der avr-libc-Dokumentation) Etwas ältere Typen, oder zu den &amp;quot;etablierten&amp;quot; Controllern kompatible, bereiten jedoch hier keine Probleme. Im Zweifel hilft ein Blick in den vom Compiler erzeugten Assembler-Code (lst/lss-Dateien). &lt;br /&gt;
&lt;br /&gt;
In jedem Datenblatt zu AVR-Controllern mit EEPROM sind kurze Beispielecodes für den Schreib- und Lesezugriff enthalten. Der dort gezeigte Code kann direkt auch mit dem avr-gcc (ohne avr-libc/eeprom.h) genutzt werden (&amp;quot;copy/paste&amp;quot;, gegebenfalls Schutz vor Unterbrechnung/Interrupt ergänzen &#039;&#039;uint8_t sreg; sreg=SREG; [EEPROM-Code] ; SREG=sreg; return;&#039;&#039;, siehe Abschnitt Interrupts). Alternativ kann aus dem Quellcode der eeprom-Funktionen der avr-libc eine &amp;quot;passende&amp;quot; EEprom-Library erstellt werden, in der die EEPROM-Registeradressen zum Controller &amp;quot;passen&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
* siehe auch: [http://www.nongnu.org/avr-libc/user-manual/index.html Dokumentation der avr-libc] Abschnitt Modules/EEPROM handling&lt;br /&gt;
&lt;br /&gt;
= Assembler und Inline-Assembler =&lt;br /&gt;
&lt;br /&gt;
Gelegentlich erweist es sich als nützlich, C und Assembler-Code in einer Anwendung zu nutzen. Typischerweise wird das Hauptprogramm in C verfasst und wenige, extrem zeitkritische oder hardwarenahe Operationen in Assembler.&lt;br /&gt;
&lt;br /&gt;
Die &amp;quot;gcc-Toolchain&amp;quot; bietet dazu zwei Möglichkeiten:&lt;br /&gt;
&lt;br /&gt;
; Inline-Assembler : Die Assembleranweisungen werden in direkt in den C-Code integriert. Eine Quellcode-Datei enthält somit C- und Assembleranweisungen&lt;br /&gt;
&lt;br /&gt;
; Assembler-Dateien : Der Assembler-Codecode befindet sich in eigenen Quellcodedateien. Diese werden vom gnu-Assembler (avr-as) zu Object-Dateien assembliert (&amp;quot;compiliert&amp;quot;) und mit den aus dem C-Code erstellten Object-Dateien zusammengebunden (gelinkt).&lt;br /&gt;
&lt;br /&gt;
== Inline-Assembler ==&lt;br /&gt;
&lt;br /&gt;
Inline-Assembler bietet sich an, wenn nur wenig Assembleranweisungen benötigt werden. Typische Anwendung sind kurze Codesequenzen für zeitkritische Operationen in Interrupt-Routinen oder sehr präzise Warteschleifen (z.B. 1-Wire). Inline-Assembler wird mit &#039;&#039;&#039;asm volatile&#039;&#039;&#039; eingeleitet, die Assembler-Anweisungen werden in einer Zeichenkette zusammengefasst, die als &amp;quot;Parameter&amp;quot; übergeben wird. Durch Doppelpunkte getrennt werden die Ein- und Ausgaben sowie die &amp;quot;Clobber-Liste&amp;quot; angegeben.&lt;br /&gt;
&lt;br /&gt;
Ein einfaches Beispiel für Inline-Assembler ist das Einfügen einer NOP-Anweisung (NOP steht für No Operation). Dieser Assembler-Befehl benötigt genau einen Taktzyklus, ansonsten &amp;quot;tut sich nichts&amp;quot;. Sinnvolle Anwendungen für NOP sind genaue Delay(=Warte)-Funktionen.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre class=&amp;quot;code&amp;quot;&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
/* Verzoegern der weiteren Programmausfuehrung um&lt;br /&gt;
   genau 3 Taktzyklen */&lt;br /&gt;
asm volatile (&amp;quot;nop&amp;quot;::);&lt;br /&gt;
asm volatile (&amp;quot;nop&amp;quot;::);&lt;br /&gt;
asm volatile (&amp;quot;nop&amp;quot;::);&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Weiterhin kann mit einem NOP verhindert werden, dass leere Schleifen, die als Warteschleifen gedacht sind, wegoptimiert werden. Der Compiler erkennt ansonsten die vermeindlich nutzlose Schleife und erzeugt dafür keinen Code im ausführbaren Programm.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre class=&amp;quot;code&amp;quot;&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
uint16_t i;&lt;br /&gt;
&lt;br /&gt;
/* leere Schleife - wird bei eingeschalteter Compiler-Optimierung wegoptimiert */&lt;br /&gt;
for (i=0;i&amp;lt;1000;i++);&lt;br /&gt;
&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
/* Schleife erzwingen (keine Optimierung): &amp;quot;NOP-Methode&amp;quot; */&lt;br /&gt;
for (i=0;i&amp;lt;1000;i++) asm volatile(&amp;quot;NOP&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
/* alternative Methode (keine Optimierung): */&lt;br /&gt;
volatile uint16_t j;&lt;br /&gt;
for (j=0;j&amp;lt;1000;j++);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ein weiterer nützlicher &amp;quot;Assembler-Einzeiler&amp;quot; ist der Aufruf von sleep (&#039;&#039;asm volatile (&amp;quot;sleep&amp;quot;::);&#039;&#039;), da hierzu keine eigene Funktion in der avr-libc existiert.&lt;br /&gt;
&lt;br /&gt;
Als Beispiel für mehrzeiligen Inline-Assembler eine präzise Delay-Funktion. Die Funktion erhält ein 16-bit Wort als Parameter, prüft den Parameter auf 0 und beendet die Funktion in diesem Fall oder durchläuft die folgende Schleife sooft wie im Wert des Parameters angegeben. Inline-Assembler hat hier den Vorteil, das die Laufzeit unabhängig von der Optimierungsstufe (Parameter -O, vgl. makefile) und der Compiler-Version ist.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre class=&amp;quot;code&amp;quot;&amp;gt;&lt;br /&gt;
static inline void delayloop16(uint16_t count)&lt;br /&gt;
{&lt;br /&gt;
	asm volatile (  &amp;quot;cp  %A0,__zero_reg__ \n\t&amp;quot;  \&lt;br /&gt;
                     &amp;quot;cpc %B0,__zero_reg__ \n\t&amp;quot;  \&lt;br /&gt;
                     &amp;quot;breq L_Exit_%=       \n\t&amp;quot;  \&lt;br /&gt;
                     &amp;quot;L_LOOP_%=:           \n\t&amp;quot;  \&lt;br /&gt;
                     &amp;quot;sbiw %0,1            \n\t&amp;quot;  \&lt;br /&gt;
                     &amp;quot;brne L_LOOP_%=       \n\t&amp;quot;  \&lt;br /&gt;
                     &amp;quot;L_Exit_%=:           \n\t&amp;quot;  \&lt;br /&gt;
                     : &amp;quot;=w&amp;quot; (count)&lt;br /&gt;
		     : &amp;quot;0&amp;quot;  (count)&lt;br /&gt;
                   );                            &lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Jede Anweisung wird mit &#039;&#039;&#039;\n\t&#039;&#039;&#039; abgeschlossen, alle Zeilen mit &#039;&#039;&#039;\&#039;&#039;&#039; zu einer &amp;quot;langen Zeichenkette&amp;quot; verbunden.&lt;br /&gt;
* Sprung-Marken (Labels) werden mit einem Prozentzeichen abgeschlossen, der Präprozessor (Assembler?) setzt an dieser Stelle eine laufende Nummer ein, die Doppelbezeichnungen bei mehrmaliger Verwendung wird somit verhindert.&lt;br /&gt;
&lt;br /&gt;
Das Resultat zeigt ein Blick in die .lss-Datei. Aus delayloop16(20); erzeugt der Preprozessor/Assembler/Linker z.B.:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre class=&amp;quot;code&amp;quot;&amp;gt;&lt;br /&gt;
 13a:	84 e1       	ldi	r24, 0x14	; 20&lt;br /&gt;
 13c:	90 e0       	ldi	r25, 0x00	; 0&lt;br /&gt;
 13e:	81 15       	cp	r24, r1&lt;br /&gt;
 140:	91 05       	cpc	r25, r1&lt;br /&gt;
 142:	11 f0       	breq	.+4      	; 0x148&lt;br /&gt;
00000144 &amp;lt;L_LOOP_121&amp;gt;:&lt;br /&gt;
 144:	01 97       	sbiw	r24, 0x01	; 1&lt;br /&gt;
 146:	f1 f7       	brne	.-4      	; 0x144&lt;br /&gt;
00000148 &amp;lt;L_Exit_121&amp;gt;:&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Detaillierte Ausführungen zum Thema Inline-Assembler finden sich in der Dokumentation der avr-libc.&lt;br /&gt;
&lt;br /&gt;
* siehe auch: Dokumentation der avr-libc/Related Pages/Inline Asm&lt;br /&gt;
* [http://www.atmel.com/dyn/resources/prod_documents/doc0856.pdf AVR Assembler-Anweisungsliste]&lt;br /&gt;
&lt;br /&gt;
== Assembler-Dateien ==&lt;br /&gt;
&lt;br /&gt;
Assembler-Dateien erhalten die Endung .S (&#039;&#039;grosses&#039;&#039; S) und werden im makefile nach WinAVR/mfile-Vorlage hinter &#039;&#039;ASRC=&#039;&#039; durch Leerzeichen getrennt aufgelistet.&lt;br /&gt;
&lt;br /&gt;
Im Beispiel eine Funktion &#039;&#039;superFunc&#039;&#039; die alle Pins des Ports D auf &amp;quot;Ausgang&amp;quot; schaltet, eine Funktion &#039;&#039;ultraFunc&#039;&#039;, die die Ausgänge entsprechend des übergebenen Parameters schaltet, eine Funktion &#039;&#039;gigaFunc&#039;&#039;, die den Status von Port A zurückgibt und eine Funktion &#039;&#039;addFunc&#039;&#039;, die zwei Bytes zu einem 16-bit-Wort addiert. Die Zuweisungen im C-Code (PORTx = ) verhindern, dass der Compiler die Aufrufe wegoptimiert und dienen nur zur Veranschaulichung der Parameterübergaben.&lt;br /&gt;
&lt;br /&gt;
Zuerst der Assembler-Code. Der Dateiname sei useful.S:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre class=&amp;quot;code&amp;quot;&amp;gt;&lt;br /&gt;
#include &amp;quot;avr/io.h&amp;quot;&lt;br /&gt;
&lt;br /&gt;
// Arbeitsregister (ohne &amp;quot;r&amp;quot;)&lt;br /&gt;
workreg  = 16&lt;br /&gt;
workreg2 = 17&lt;br /&gt;
&lt;br /&gt;
// Konstante:&lt;br /&gt;
ALLOUT = 0xff&lt;br /&gt;
&lt;br /&gt;
// ** Setze alle Pins von PortD auf Ausgang **&lt;br /&gt;
// keine Parameter, keine Rueckgabe&lt;br /&gt;
.global superFunc&lt;br /&gt;
.func superFunc&lt;br /&gt;
superFunc:&lt;br /&gt;
   push workreg&lt;br /&gt;
   ldi workreg, ALLOUT&lt;br /&gt;
   out  _SFR_IO_ADDR(DDRD), workreg  // beachte: _SFR_IO_ADDR()&lt;br /&gt;
   pop workreg&lt;br /&gt;
   ret&lt;br /&gt;
.endfunc&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
// ** Setze PORTD auf uebergebenen Wert **&lt;br /&gt;
// Parameter in r24 (LSB immer bei &amp;quot;graden&amp;quot; Nummern)&lt;br /&gt;
.global ultraFunc&lt;br /&gt;
.func ultraFunc&lt;br /&gt;
ultraFunc:&lt;br /&gt;
   out  _SFR_IO_ADDR(PORTD), 24&lt;br /&gt;
   ret&lt;br /&gt;
.endfunc&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
// ** Zustand von PINA zurueckgeben **&lt;br /&gt;
// Rueckgabewerte in r24:r25 (LSB:MSB), hier nur LSB genutzt&lt;br /&gt;
.global gigaFunc&lt;br /&gt;
.func gigaFunc&lt;br /&gt;
gigaFunc:&lt;br /&gt;
   in 24, _SFR_IO_ADDR(PINA)&lt;br /&gt;
   ret&lt;br /&gt;
.endfunc&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
// ** Zwei Bytes addieren und 16-bit-Wort zurueckgeben **&lt;br /&gt;
// Parameter in r24 (Summand1) und r22 (Summand2) -&lt;br /&gt;
//  Parameter sind Word-&amp;quot;aligned&amp;quot; d.h. LSB immer auf &amp;quot;graden&amp;quot;&lt;br /&gt;
//  Registernummern. Bei 8-Bit und 16-Bit Paramtern somit &lt;br /&gt;
//  beginnend bei r24 dann r22 dann r20 etc.&lt;br /&gt;
// Rueckgabewert in r24:r25&lt;br /&gt;
.global addFunc&lt;br /&gt;
.func addFunc&lt;br /&gt;
addFunc:&lt;br /&gt;
   push workreg&lt;br /&gt;
   push workreg2&lt;br /&gt;
   clr workreg2&lt;br /&gt;
   mov workreg, 22&lt;br /&gt;
   add workreg, 24&lt;br /&gt;
   adc workreg2, 1    // r1 - assumed to be always zero ...&lt;br /&gt;
   movw r24, workreg&lt;br /&gt;
   pop workreg2&lt;br /&gt;
   pop workreg&lt;br /&gt;
   ret&lt;br /&gt;
.endfunc&lt;br /&gt;
&lt;br /&gt;
// oh je - sorry - Mein AVR-Assembler ist eingerostet, hoffe das stimmt so...&lt;br /&gt;
&lt;br /&gt;
.end&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Im Makefile ist der Name der Assembler-Quellcodedatei einzutragen:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre class=&amp;quot;code&amp;quot;&amp;gt;&lt;br /&gt;
ASRC = useful.S&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Der Aufruf erfolgt dann im C-Code so:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre class=&amp;quot;code&amp;quot;&amp;gt;&lt;br /&gt;
extern void superFunc(void);&lt;br /&gt;
extern void ultraFunc(uint8_t setVal);&lt;br /&gt;
extern uint8_t gigaFunc(void);&lt;br /&gt;
extern uint16_t addFunc(uint8_t w1, uint8_t w2);&lt;br /&gt;
&lt;br /&gt;
int main(void)&lt;br /&gt;
{&lt;br /&gt;
[...]&lt;br /&gt;
  superFunc();&lt;br /&gt;
  &lt;br /&gt;
  ultraFunc(0x55);&lt;br /&gt;
  &lt;br /&gt;
  PORTD = gigaFunc();&lt;br /&gt;
&lt;br /&gt;
  PORTA = (addFunc(0xF0, 0x11) &amp;amp; 0xff);&lt;br /&gt;
  PORTB = (addFunc(0xF0, 0x11) &amp;gt;&amp;gt; 8);&lt;br /&gt;
[...]&lt;br /&gt;
} &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Das Ergebnis wird wieder in der lss-Datei ersichtlich:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre class=&amp;quot;code&amp;quot;&amp;gt;&lt;br /&gt;
[...]&lt;br /&gt;
   superFunc();&lt;br /&gt;
 148:	0e 94 f6 00 	call	0x1ec&lt;br /&gt;
  &lt;br /&gt;
  ultraFunc(0x55);&lt;br /&gt;
 14c:	85 e5       	ldi	r24, 0x55	; 85&lt;br /&gt;
 14e:	0e 94 fb 00 	call	0x1f6&lt;br /&gt;
  &lt;br /&gt;
  PORTD = gigaFunc();&lt;br /&gt;
 152:	0e 94 fd 00 	call	0x1fa&lt;br /&gt;
 156:	82 bb       	out	0x12, r24	; 18&lt;br /&gt;
  &lt;br /&gt;
  PORTA = (addFunc(0xF0, 0x11) &amp;amp; 0xff);&lt;br /&gt;
 158:	61 e1       	ldi	r22, 0x11	; 17&lt;br /&gt;
 15a:	80 ef       	ldi	r24, 0xF0	; 240&lt;br /&gt;
 15c:	0e 94 ff 00 	call	0x1fe&lt;br /&gt;
 160:	8b bb       	out	0x1b, r24	; 27&lt;br /&gt;
  PORTB = (addFunc(0xF0, 0x11) &amp;gt;&amp;gt; 8);&lt;br /&gt;
 162:	61 e1       	ldi	r22, 0x11	; 17&lt;br /&gt;
 164:	80 ef       	ldi	r24, 0xF0	; 240&lt;br /&gt;
 166:	0e 94 fc 00 	call	0x1f8&lt;br /&gt;
 16a:	89 2f       	mov	r24, r25&lt;br /&gt;
 16c:	99 27       	eor	r25, r25&lt;br /&gt;
 16e:	88 bb       	out	0x18, r24	; 24&lt;br /&gt;
&lt;br /&gt;
[...]&lt;br /&gt;
000001ec &amp;lt;superFunc&amp;gt;:&lt;br /&gt;
// setze alle Pins von PortD auf Ausgang&lt;br /&gt;
.global superFunc&lt;br /&gt;
.func superFunc&lt;br /&gt;
superFunc:&lt;br /&gt;
   push workreg&lt;br /&gt;
 1ec:	0f 93       	push	r16&lt;br /&gt;
   ldi workreg, ALLOUT&lt;br /&gt;
 1ee:	0f ef       	ldi	r16, 0xFF	; 255&lt;br /&gt;
   out  _SFR_IO_ADDR(DDRD), workreg&lt;br /&gt;
 1f0:	01 bb       	out	0x11, r16	; 17&lt;br /&gt;
   pop workreg&lt;br /&gt;
 1f2:	0f 91       	pop	r16&lt;br /&gt;
   ret&lt;br /&gt;
 1f4:	08 95       	ret&lt;br /&gt;
&lt;br /&gt;
000001f6 &amp;lt;ultraFunc&amp;gt;:&lt;br /&gt;
.endfunc&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
// setze PORTD auf uebergebenen Wert&lt;br /&gt;
.global ultraFunc&lt;br /&gt;
.func ultraFunc&lt;br /&gt;
ultraFunc:&lt;br /&gt;
   out  _SFR_IO_ADDR(PORTD), 24&lt;br /&gt;
 1f6:	82 bb       	out	0x12, r24	; 18&lt;br /&gt;
   ret&lt;br /&gt;
 1f8:	08 95       	ret&lt;br /&gt;
&lt;br /&gt;
000001fa &amp;lt;gigaFunc&amp;gt;:&lt;br /&gt;
.endfunc&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
// Zustand von PINA zurueckgeben&lt;br /&gt;
.global gigaFunc&lt;br /&gt;
.func gigaFunc&lt;br /&gt;
gigaFunc:&lt;br /&gt;
   in 24, _SFR_IO_ADDR(PINA)&lt;br /&gt;
 1fa:	89 b3       	in	r24, 0x19	; 25&lt;br /&gt;
   ret&lt;br /&gt;
 1fc:	08 95       	ret&lt;br /&gt;
&lt;br /&gt;
000001fe &amp;lt;addFunc&amp;gt;:&lt;br /&gt;
.endfunc&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
// zwei Bytes addieren und 16-bit-Wort zurueckgeben&lt;br /&gt;
.global addFunc&lt;br /&gt;
.func addFunc&lt;br /&gt;
addFunc:&lt;br /&gt;
   push workreg&lt;br /&gt;
 1fe:	0f 93       	push	r16&lt;br /&gt;
   push workreg2&lt;br /&gt;
 200:	1f 93       	push	r17&lt;br /&gt;
   clr workreg2&lt;br /&gt;
 202:	11 27       	eor	r17, r17&lt;br /&gt;
   mov workreg, 22&lt;br /&gt;
 204:	06 2f       	mov	r16, r22&lt;br /&gt;
   add workreg, 24&lt;br /&gt;
 206:	08 0f       	add	r16, r24&lt;br /&gt;
   adc workreg2, 1    // r1 - assumed to be always zero ...&lt;br /&gt;
 208:	11 1d       	adc	r17, r1&lt;br /&gt;
   movw r24, workreg&lt;br /&gt;
 20a:	c8 01       	movw	r24, r16&lt;br /&gt;
   pop workreg2&lt;br /&gt;
 20c:	1f 91       	pop	r17&lt;br /&gt;
   pop workreg&lt;br /&gt;
 20e:	0f 91       	pop	r16&lt;br /&gt;
   ret&lt;br /&gt;
 210:	08 95       	ret&lt;br /&gt;
&lt;br /&gt;
[...]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die Zuweisung von Registern zu Parameternummer und die Register für die Rückgabewerte sind in den &amp;quot;Register Usage Guidelines&amp;quot; der avr-libc-Dokumentation erläutert.&lt;br /&gt;
&lt;br /&gt;
siehe auch:&lt;br /&gt;
* [http://www.nongnu.org/avr-libc/user-manual/assembler.html avr-libc-Dokumentation: Related Pages/avr-libc and assembler programs]&lt;br /&gt;
* [http://www.nongnu.org/avr-libc/user-manual/FAQ.html#faq_reg_usage avr-libc-Dokumentation: Related Pages/FAQ/&amp;quot;What registers are used by the C compiler?&amp;quot;]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
...TODO: globale Variablen für Datenaustausch&lt;br /&gt;
&lt;br /&gt;
= TODO =&lt;br /&gt;
&lt;br /&gt;
stdio.h, malloc() ???, Code-Optimierungen (&amp;quot;tricks&amp;quot;), &amp;quot;naked&amp;quot;-Functionen ??, IO-Register als Parameter/&amp;quot;Variablen&amp;quot; (volatile uint8_t *mybusport; mybusport=&amp;amp;PORTB; void sendbus(uint8_t *parm)...)&lt;/div&gt;</summary>
		<author><name>131.130.1.135</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=Kondensator&amp;diff=7104</id>
		<title>Kondensator</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=Kondensator&amp;diff=7104"/>
		<updated>2005-04-28T19:21:18Z</updated>

		<summary type="html">&lt;p&gt;131.130.1.135: Formelzeichen&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Unter einem Kondensator versteht man ein passives Bauteil, in dem kleine Energiemengen gespeichert werden können. Sie werden daher häufig zum Stabilisieren von Spannungen benutzt. Dabei ist es üblich am Spannungsregler Elektrolytkondensatoren (&#039;&#039;Elkos&#039;&#039;) mit ein paar hundert &amp;lt;math&amp;gt;\mu&amp;lt;/math&amp;gt;F (Microfarad) und bei jedem IC nocheinmal 100nF zu verwenden.&lt;br /&gt;
&lt;br /&gt;
Die Größe eines Kondensators ist seine Kapazität (Formelzeichen &#039;&#039;C&#039;&#039;), die als [[Ladung]] (Formelzeichen &#039;&#039;Q&#039;&#039;) durch [[Spannung]] (Formelzeichen &#039;&#039;U&#039;&#039;) definiert ist.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;C=\frac{Q}{U}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die Einheit für die Kapazität ist Farad:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;[F]=\frac{As}{V}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Reihenschaltung ==&lt;br /&gt;
&lt;br /&gt;
Für eine Reihenschaltung von &#039;&#039;n&#039;&#039; Kondensatoren gilt:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;\frac{1}{R_{ges}}=\frac{1}{R_1}+\frac{1}{R_2}+\dots+\frac{1}{R_n}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;U_{ges}=U_1+U_2+\dots+U_n&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;I_{ges}=I_1=I_2=\dots=I_n&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Parallelschaltung ==&lt;br /&gt;
&lt;br /&gt;
Für eine Parallelschaltung von &#039;&#039;n&#039;&#039; Kondensatoren gilt:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;C_{ges}=C_1+C_2+\dots+C_n&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;U_{ges}=U_1=U_2=\dots=U_n&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;I_{ges}=I_1+I_2+\dots+I_n&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Gespeicherte Energie ==&lt;br /&gt;
&lt;br /&gt;
Die in einem Kondensator gespeicherte Energie lässt sich durch die Formel&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; W=0,5\cdot U^2\cdot C&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
berechnen.&lt;/div&gt;</summary>
		<author><name>131.130.1.135</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=Kondensator&amp;diff=7099</id>
		<title>Kondensator</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=Kondensator&amp;diff=7099"/>
		<updated>2005-04-28T19:19:00Z</updated>

		<summary type="html">&lt;p&gt;131.130.1.135: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Unter einem Kondensator versteht man ein passives Bauteil, in dem kleine Energiemengen gespeichert werden können. Sie werden daher häufig zum Stabilisieren von Spannungen benutzt. Dabei ist es üblich am Spannungsregler Elektrolytkondensatoren (&#039;&#039;Elkos&#039;&#039;) mit ein paar hundert &amp;lt;math&amp;gt;\mu&amp;lt;/math&amp;gt;F (Microfarad) und bei jedem IC nocheinmal 100nF zu verwenden.&lt;br /&gt;
&lt;br /&gt;
Die Größe eines Kondensators ist seine Kapazität, die als [[Ladung]] durch [[Spannung]] definiert ist.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;C=\frac{Q}{U}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die Einheit für die Kapazität ist Farad:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;[F]=\frac{As}{V}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Reihenschaltung ==&lt;br /&gt;
&lt;br /&gt;
Für eine Reihenschaltung von &#039;&#039;n&#039;&#039; Kondensatoren gilt:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;\frac{1}{R_{ges}}=\frac{1}{R_1}+\frac{1}{R_2}+\dots+\frac{1}{R_n}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;U_{ges}=U_1+U_2+\dots+U_n&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;I_{ges}=I_1=I_2=\dots=I_n&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Parallelschaltung ==&lt;br /&gt;
&lt;br /&gt;
Für eine Parallelschaltung von &#039;&#039;n&#039;&#039; Kondensatoren gilt:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;C_{ges}=C_1+C_2+\dots+C_n&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;U_{ges}=U_1=U_2=\dots=U_n&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;I_{ges}=I_1+I_2+\dots+I_n&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Gespeicherte Energie ==&lt;br /&gt;
&lt;br /&gt;
Die in einem Kondensator gespeicherte Energie lässt sich durch die Formel&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; W=0,5\cdot U^2\cdot C&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
berechnen.&lt;/div&gt;</summary>
		<author><name>131.130.1.135</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=L%C3%B6ten&amp;diff=8977</id>
		<title>Löten</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=L%C3%B6ten&amp;diff=8977"/>
		<updated>2005-04-27T21:53:37Z</updated>

		<summary type="html">&lt;p&gt;131.130.1.135: /* Bauteile mit zwei Anschlussdrähten */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Löten]]&lt;br /&gt;
Löten in der Elektronik ist eine praktisch-handwerkliche Tätigkeit und erfordert daher neben entsprechendem Geschick in erster Linie ... viel Übung!&lt;br /&gt;
&lt;br /&gt;
== Voraussetzungen ==&lt;br /&gt;
Wichtigste Voraussetzungen für das Löten in der Elektronik sind&lt;br /&gt;
* ein [[Lötkolben]]&lt;br /&gt;
* und Lötzinn,&lt;br /&gt;
beides muss natürlich für Elektronik geeignet sein. Lötzinn für die Elektronik ist beispielsweise im Inneren mit einem Flussmittel gefüllt, welches eine leichte Oberflächenkorrosion beseitigt, die anderfalls das Anhaften des Lötzinns auf den zu verlötenden Oberflächen verhindern würde.&lt;br /&gt;
&lt;br /&gt;
== Vorsichtsmaßnahmen ==&lt;br /&gt;
Da man es beim Löten in der Elektronik mit über 300 Grad heißen Metallen (fest und flüssig) zu tun hat, ist die Notwendigkeit einiger Schutzmaßnahmen so naheliegend, dass man sie nicht weiter erklären muss (niemand wird einen Lötkolben freiwillig an der heißen Spitze anfassen), aber dennoch (und aus der Praxis):&lt;br /&gt;
* Der heiße Lötkolben wird unachtsam auf dem Tisch abgelegt und verrutscht.&lt;br /&gt;
:* =&amp;gt; Andere, Gegenstände werden &amp;quot;angekokelt&amp;quot; oder gar unbrauchbar.&lt;br /&gt;
* Wie zuvor, aber der Lötkolben rutscht sogar vom Tisch herunter.&lt;br /&gt;
:* =&amp;gt; AUA!! (Der normale &amp;quot;Greifreflex&amp;quot; mit den Oberschenkeln bei herunterfallenden Dingen - Knie zusammen - ist dann nicht so angebracht :-/)&lt;br /&gt;
* Ein unzureichend festgeklemmter Draht federt weg und es spritzt Lötzinn durch die Gegend (besonders beim Entlöten!).&lt;br /&gt;
:* =&amp;gt; Augen schützen!!! (Man hat nur zwei und mit einem allein ist schon mal das Stereo-Sehen hin!)&lt;br /&gt;
&lt;br /&gt;
== Grundlegende Vorgehensweise ==&lt;br /&gt;
Beim Löten gilt:&lt;br /&gt;
# Mit dem Lötkolben werden &#039;&#039;&#039;beide&#039;&#039;&#039; zu verlötenden Teile gleichzeitig erwärmt.&lt;br /&gt;
# Eines der Teile erwärmt das Lötzinn bis es schließlich schmilzt.&lt;br /&gt;
# Das geschmolzene Lötzinn verläuft und verbindet die beiden Teile.&lt;br /&gt;
# Der Lötkolben wird entfernt und das Lötzin erstarrt.&lt;br /&gt;
&lt;br /&gt;
Eine geringe(!) Menge Lötzinn, die  vor dem ersten Schritt auf die heiße Spitze des Lötkolbens aufgetragen wird, dient vor allem dazu, den Wärmeübergang auf die zu verlötenden Teile zu verbessern und damit die Dauer des ersten Schritts kurz zu halten.&lt;br /&gt;
&lt;br /&gt;
== Typische Fehlerquellen ==&lt;br /&gt;
Anfänger machen beim Löten eine Reihe typischer Fehler, welche die Qualität der hergestellten Verbindung beeinträchtigen. Das heißt, die elektrische Verbindung ist schlecht (&amp;quot;Wackelkontakt&amp;quot;) und die mechanische Festigkeit gering (Gefahr des Abreißens).&lt;br /&gt;
* Die zu verlötenden Teile sind nicht ausreichend sauber (&amp;quot;blank&amp;quot;):&lt;br /&gt;
:* =&amp;gt; Die korrosionsbefreiende Wirkung des Flußmittels im Lötzinn reicht nicht aus.&lt;br /&gt;
:* &#039;&#039;&#039;Abhilfe:&#039;&#039;&#039; die zu verlötenden Oberflächen säubern, z.B. mechanisch mit sehr feinem Sandpapier oder einem speziellen &amp;quot;Schmirgelschwamm&amp;quot; (ähnlich einem Radiergummi aber versetzt mit feinsten Schmirgelsand) oder chemisch mit zusätzlich aufgetragenem Flußmittel.&lt;br /&gt;
&lt;br /&gt;
* Anstatt sich an das obige Schema zu halten wird das Lötzinn für die herzustellende Verbindung vorwiegend an der heißen Lötkolbenspitze geschmolzen.&lt;br /&gt;
:* =&amp;gt; Die zu verlötenden Teile sind nicht warm genug.&lt;br /&gt;
:* =&amp;gt; Das Flußmittel im Lötzinn verdampft zu schnell.&lt;br /&gt;
:* &#039;&#039;&#039;Abhilfe:&#039;&#039;&#039; Sich an das Schema halten!&lt;br /&gt;
&lt;br /&gt;
* Nach Wegnehmen des Lötkolbens werden die zu verbindenden Teile bewegt, bevor das Lötzinn kalt und erstarrt ist.&lt;br /&gt;
:* =&amp;gt; Die erstellte Verbindung kann durchaus &amp;quot;formschlüssig&amp;quot; sein (= scheinbar hält sie fest),&lt;br /&gt;
:* =&amp;gt; aber hat elektrisch eine schlechte Qualität (Wackelkontakt oder erhöhter Widerstand, damit evtl. auch Erwärmung bei hohen Strömen und weitere Verschlechterung).&lt;br /&gt;
:* &#039;&#039;&#039;Tip:&#039;&#039;&#039; Die Oberfläche eines Lötzinntropfens spiegelt, solange er noch flüssig ist und wird etwas matter, wenn sich das Zinn verfestigt.&lt;br /&gt;
&lt;br /&gt;
* Das Lötzinn an der Spitze des Lötkolbens ist &amp;quot;zu alt&amp;quot; und &amp;quot;fließt&amp;quot; nicht mehr aureichend. .&lt;br /&gt;
:* =&amp;gt; der Zweck des Lötzinns an der Lötkolbenspitze (= Verbesserung des Wärmeübergangs) wird nicht erreicht.&lt;br /&gt;
:* &#039;&#039;&#039;Abhilfe:&#039;&#039;&#039; Altes Lötzinn des öfteren von der Spitze des Lötkolbens abstreifen (z.B. an einem angefeuchteten &amp;quot;Lötschwamm&amp;quot;) und neues Lötzinn auftragen.&lt;br /&gt;
&lt;br /&gt;
== Arten von Lötverbindungen ==&lt;br /&gt;
Für den Anfänger sind bestimmte Arten von Lötverbindungen einfacher herzustellen als andere, beim Üben empfiehlt es sich entsprechend, &amp;quot;vom Einfachen zum Schwierigen&amp;quot; zu trainieren.&lt;br /&gt;
&lt;br /&gt;
=== Einfaches Verlöten von Drähten ===&lt;br /&gt;
Recht einfach zu verlöten sind zwei Drähte, die man zuvor miteinander verdrillt hat. Bei starren Drähten empfiehlt sich in der Regel ein vorheriges &amp;quot;Verzinnen&amp;quot; (= der Draht wird mit einer Oberfläche aus Lötzinn versehen), da sich dann das beim Zusammenlöten aufgetragene Lötzinn besser verteilt. Bei dünnen Litzen kann auf das Verzinnen meist verzichtet werden, da durch die Kapillarwirkung das Lötzin quasi &amp;quot;aufgesogen&amp;quot; wird. Bei dicken Litzen (Querschnitt 1 Quadratmillimeter und mehr) ist vorheriges Verzinnen meist nicht ratsam, weil ansonsten die Verdrillung nicht mehr so gut gelingt. Da das Flussmittel im Lötzinn in dicke, verdrillte Litzenverbindungen oft nicht ausreichend eindringen kann, empfiehlt es sich hier, die Litzenende vor dem Verlöten nochmal gesondert mit Flussmittel zu behandeln.&lt;br /&gt;
&lt;br /&gt;
In Umgebungen, in denen es häufige oder gar permanente Vibrationen gibt (z.B. Auto), sollten Litzenenden allerdings &#039;&#039;&#039;immer&#039;&#039;&#039; verzinnt werden (auch beim Einlöten in Durchbohrungen gedruckter Schaltungen - siehe nächster Punkt). Die Verzinnung muss dabei ein Stück unter die Isolierung reichen (leicht zu kontrollieren durch die Biegbarkeit), andernfalls brechen Litzen oft genau an der Stelle, an der die Isolierung endet, da diese Stelle  (mechanische) die stärkste Last aufnehmen muss. &lt;br /&gt;
&lt;br /&gt;
=== Einlöten von Bauteilen Platinenbohrungen === &lt;br /&gt;
Auch dies gelingt dem Anfänger nach einiger Übung meist ganz gut (vorausgesetzt die obigen Tips und Richtlinien werden befolgt). Die Bauteile sollten allerdings nicht &amp;quot;lose&amp;quot; sondern - durch Biegen der Anschlussdrähte - mit leichter (mechanischer) Spannung in den Platinenbohrungen sitzen. Dies verhindert das &amp;quot;Wackeln&amp;quot; beim Wegnehmen des Lötkolbens.&lt;br /&gt;
&lt;br /&gt;
Was hier aber ggf. berücksichtig werden muss, ist die Wärmeempfindlichkeit.&lt;br /&gt;
* Halbleiterbauelemente (Dioden, Transistoren, ICs) vertragen keine längere Erhitzung auf 300 Grad Celsius (Lötkolbentemperator).&lt;br /&gt;
:* =&amp;gt; Der Lötvorgang muss also &amp;quot;zügig&amp;quot; erfolgen.&lt;br /&gt;
:* =&amp;gt; GGf. kann eine kleine Zange am Anschlussdraht als &amp;quot;Wärmeableiter&amp;quot; zwischen Lötstelle und Bauteil eingesetzt werden.&lt;br /&gt;
* Auch die Leiterbahnen der Platinen vertragen keine beliebig lange, beliebig häufige Erwärmung und die Leiterbahn löst sich schließlich von der Platine ab.&lt;br /&gt;
:* =&amp;gt; Wie oben (zügig löten).&lt;br /&gt;
:* =&amp;gt; Bei Bauteilen mit &amp;quot;dicken&amp;quot; (und entsprechend unempfindlichen) Drähten ggf. zunächst &#039;&#039;diese&#039;&#039; und erst kurz vorm Aufbringen des Lötzinns auch die Leiterbahn der Platine erhitzen.&lt;br /&gt;
&lt;br /&gt;
=== Auflöten von SMD-Bauteilen auf Platinen ===&lt;br /&gt;
Eigener Artikel: [[SMD Löten]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Entlöten ==&lt;br /&gt;
Unter Entlöten versteht man das Trennen einer Lötverbindung. In der Theorie ist das einfach, weil ja &amp;quot;nur&amp;quot; das Lötzinn erwärmt werden muss und dann (z.B. bei in Platinen eingelöteten Bauteilen) der Draht aus der Bohrung gezogen werden kann. In der Praxis besteht die Schwierigkeit jedoch darin, dass typische Bauteile mindestens zwei, oft aber drei oder noch mehr verlötete Anschlüsse haben und man die Lötstellen nicht alle gleichzeitig erwärmen kann.&lt;br /&gt;
&lt;br /&gt;
Es ist auf alle Fälle vorteilhaft, wenn man zunächst an jedem einzelnen Anschluss versucht, so viel Lötzinn wie möglich zu entfernen (z.B. mit Absaugpumpe oder Entlötlitze). Dennoch werden sich insbesondere Bohrungen in gedruckten Schaltungen so nicht völlig von Lötzinn befreien lassen.&lt;br /&gt;
&lt;br /&gt;
=== Bauteile mit zwei Anschlussdrähten ===&lt;br /&gt;
Sofern sich das Bauteil &amp;quot;kippen&amp;quot; lässt, erst die eine, dann die andere Seite ablöten.&lt;br /&gt;
* Bei einem an seinen zwei Enden festgelöteten Widerstand oder Kondensator zum Ablöten der ersten Seite ggf. einen kleinen Schraubendreher als Hebel unterschieben.&lt;br /&gt;
* Bei einem senkrecht stehend aufgelöteten (Rund-) Elko erst den &amp;quot;mittigeren&amp;quot; Draht auslöten, da sich das Teil leichter kippen lässt, wenn es der äußere Draht ist, der noch angelötet ist.&lt;br /&gt;
&lt;br /&gt;
=== Bauteile mit drei Anschlussdrähten ===&lt;br /&gt;
Bei einem Transistor kommt man mit der &amp;quot;Kipptechnik&amp;quot; oft auch noch weiter, wenn die Lötpunkte im Dreieck angeordnet sind. Man hat dann immer eine Richtung zum Kippen, bei der sich der Draht in der momentan erwärmten Lötstelle ein Stück herausziehen lässt. Notfalls muss man sich schrittweise vorarbeiten (d.h. beim ersten Mal wird man den ersten Draht nicht vollständig aus der Bohrung herausbekommen, aber nachdem man einmal &amp;quot;reihum&amp;quot; ist, sitzt das Bauteil schon ein Stück weiter draußen).&lt;br /&gt;
&lt;br /&gt;
Bei drei Anschlußdrähten &amp;quot;in einer Reihe&amp;quot; funktioniert die Kipptechnik nicht, evtl. kann man hier versuchen, mit dem Lötkolben zwei Lötstellen gleichzeitig zu erwärmen. (Aber Vorsicht, dass nach dem Auslöten und Wiedereinlöten eines neuen Bauteils keine feine Lötzinnbrücke stehen bleibt und einen Kurzschluss verursacht!)&lt;br /&gt;
&lt;br /&gt;
=== Bauteile mit vielen Anschlussdrähten ===&lt;br /&gt;
Das Auslöten von ICs ist ohne spezielle Werkzeuge (z.B. spezieller Lötkolbenaufsatz) meist unmöglich. Wenn man nicht beides - IC und Platine - &amp;quot;retten&amp;quot; will oder muss, kann man es so versuchen:&lt;br /&gt;
* Platine retten: Anschlussdrähte abzwicken und Drahtreste aus der Platine entfernen (siehe auch unten, Freimachen von Durchbohrungen).&lt;br /&gt;
* Bauteil retten: Platine auseinanderschneiden oder -sägen und verbleibende Reste auch zwischen den Drähten mit einem Seitenschneider durchzwicken, so dass letzten Endes an jedem Draht (bzw. jedem &amp;quot;Beinchen&amp;quot; des ICs) nur noch ein minimaler Platinenrest hängt. Dann alle Reste einen nach dem anderen Ablöten(*1).&lt;br /&gt;
* Platine und Bauteil retten: Mit einer Entlötpumpe das Lötzinn bei jedem Pin absaugen, evtl. übrig gebliebene Reste mit Entlötlitze aufsaugen. Funktioniert bei einseitigen Platinen gut, bei doppelseitigen ist etwas mehr Aufwand damit verbunden, besonders bei engen Durchkontaktierungshülsen. &lt;br /&gt;
&lt;br /&gt;
=== Freimachen von Durchbohrungen ===&lt;br /&gt;
Allgemein gilt, dass man bei einem Bauteil, welches mit Sicherheit defekt ist, meist besser erst alle Drähtchen abzwickt und dann nur diese Reste &amp;quot;entlötet&amp;quot;. Kurze Drähtchenreste sind allerdings oft schwer aus Platinenbohrungen zu entfernen, da sie von der Kapillarwirkung der Bohrung auf das Lötzinn praktisch &amp;quot;angesogen&amp;quot; und in der Bohrung festgehalten werden.&lt;br /&gt;
&lt;br /&gt;
Ein alter Praktiker-Trick ist hier, nach Erwärmen des Lötzinns die Bohrung mit einem gut gespitzten Bleistift zu durchstoßen. (Das Lötzinn wird vom Graphit der Mine praktisch &amp;quot;abgestoßen&amp;quot;.)&lt;br /&gt;
&lt;br /&gt;
Und Zuguterletzt: Wenn beim erfolgreichen Auslöten eines Bauteils die Bohrung in der Platine gleich lötzinnfrei ist, sollte man sich nicht zu früh freuen: Bei doppelseitigen &amp;quot;durchkontaktierten&amp;quot; Platinen kann so unbemerkt auch die Durchkontaktierungshülse herausgerissen worden sein. Vor dem Einlöten von Ersatz sollte man evtl. Nachmessen (Ohmmeter) und im Schadensfall (oder zur Sicherheit auch immer) das neu eingesetzte Bauteil auf beiden Seiten der Platine anlöten(*2).&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
* 1: Diese Technik ist genau so aufwändig wie sie sich anhört und lohnt sich allenfalls bei sehr teuren Bauteilen oder solchen, die irgendwo als Ersatzteil dienen müssen und allgemein schwer beschaffbar sind (z.B. weil nicht mehr hergestellt werden).&lt;br /&gt;
* 2: Bei Multi-Layer-Platinen wird auch das den Erfolg nicht garantieren, aber Reparaturen mit Lötkolbeneinsatz sind an solchen Platinen ohnehin oft ein Glücksspiel.&lt;/div&gt;</summary>
		<author><name>131.130.1.135</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=Reichelt-Wishlist&amp;diff=6039</id>
		<title>Reichelt-Wishlist</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=Reichelt-Wishlist&amp;diff=6039"/>
		<updated>2005-04-06T15:46:32Z</updated>

		<summary type="html">&lt;p&gt;131.130.1.135: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Reichelt Wunschliste ==&lt;br /&gt;
&lt;br /&gt;
Viele kaufen ihre Elektronik bei Reichelt. Ärgerlich, dass so manche wichtigen Dinge fehlen. Aus dieser Idee entstand der Thread:&lt;br /&gt;
&lt;br /&gt;
http://www.mikrocontroller.net/forum/read-1-107307.html&lt;br /&gt;
&lt;br /&gt;
Einiges davon hat Reichelt bereits ins Angebot aufgenommen. Damit dies weitergehen kann, kann man hier seine Wünsche veröffentlichen. 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 herauskristalisieren, macht jeder einfach einen virtuellen Strich dahinter: | (ALT-GR Taste und &amp;lt; Taste drücken)&lt;br /&gt;
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 ist etwas sehr exotisches&#039;&#039;&#039;, wie z.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.&lt;br /&gt;
&lt;br /&gt;
= Wunschliste =&lt;br /&gt;
== Halbleiter ==&lt;br /&gt;
=== Controller/FPGA/CPLD ===&lt;br /&gt;
* Microcontroller mit USB-Anschluß (z.B. AT89C5131 oder AT43USB355) ||||| ||||| |  =&amp;gt; Bereits im Sortiment: Cypress EZ-USB, Best. Nr AN2131 SC&lt;br /&gt;
* Konkret: Neuer PIC mit USB PIC18F4550 ||||| |||&lt;br /&gt;
* Mehr FPGAs (v.a aktuellere) von Xilinx, z.B. Spartan II und Spartan III ||||| ||||| ||||| |||||  |||||&lt;br /&gt;
* grosse MSP430, z.B.: MSP430F1611 (10k RAM, 48k Flash) MSP430F135 ||||| ||||| ||||&lt;br /&gt;
* LPC2104, LPC2105, LPC2106 ||||| ||||| ||||   (auch LPC213X und LPC22xx)&lt;br /&gt;
* Microchip dsPIC ||||&lt;br /&gt;
* Atmel ATmega48, ATmega88, ATmega168, ATtiny13(V) ||||| ||||| ||||| (ATmega48, ATmega168, ATtiny13 verfügbar!)&lt;br /&gt;
* Atmel ATtiny25/45/85 |&lt;br /&gt;
* Atmel AT91SAM7S32, AT91SAM7S64 ||||&lt;br /&gt;
* SSV DIL/NetPCs [http://www.dilnetpc.com]http://www.dilnetpc.com |||&lt;br /&gt;
&lt;br /&gt;
=== Speicher ===&lt;br /&gt;
* Atmel DataFlash, z.B. AT45DB081B (8 MBit Flash-Speicher an seriellen Bus im 8poligen Gehäuse) ||||| |||||&lt;br /&gt;
* 24LC256 oder 24AA256 oder 24LC512 oder 24AA512 ||&lt;br /&gt;
* NextFlash spiFlash NX25P16 (16MBit serial Flash im SO8-Gehäuse) ||||&lt;br /&gt;
&lt;br /&gt;
=== ICs ===&lt;br /&gt;
* Aufwärtsregler (Step-Up-Konverter): Maxim MAX629 |&lt;br /&gt;
* uC supervisor chips + watchdog z.B.: MAX6864 ist z.Z. der beste (0.2uA!) |||&lt;br /&gt;
* ISD 5116 (Sprachaufnahme bis 16min &amp;amp; I2C-Interface)  ||||| ||  &lt;br /&gt;
* DTMF-Dekoder-Enkoder (8870, 8880) |||&lt;br /&gt;
* Philips PCA82C252 oder Nachfolger oder vergleichbar (&amp;quot;Fault-Tolerant&amp;quot; CAN Transceiver, 11898-3) ||||&lt;br /&gt;
* MCP25050 CAN-Bus Input/Output Expander ||&lt;br /&gt;
* Maxim Switched Capacitor Tiefpass-Filter (z.B. MAX297) ||&lt;br /&gt;
* ZHB6718 (H-Bridge für 1,5V - 20V Motoren) ||||&lt;br /&gt;
* Motortreiber TLE 4205 |&lt;br /&gt;
* Ethernet-Controller RTL8019AS und Übertrager FB2022 ||||| ||||| ||||| ||||| |||&lt;br /&gt;
* AD7524 in SMD |||||&lt;br /&gt;
* ADS8320 ADC 16 Bit seriell  |||||  ||||| |&lt;br /&gt;
* DAC7612 DAC 12 Bit seriell  |||||  ||||&lt;br /&gt;
* DALLAS DS2482 |&lt;br /&gt;
* I²C-Bus Temperatursensor DS1631Z ||&lt;br /&gt;
&lt;br /&gt;
=== Discrete ===&lt;br /&gt;
* 3,3V Längsregler SMD zu vernünfitgen Preisen (Bsp: LF33)(der LT1086 kostet 4 Euro) ||||| ||||| ||&lt;br /&gt;
* 5,2V Lowdrop Längsregler LF52 im TO252AA von STM ||&lt;br /&gt;
* Größere Auswahl an Step-up Reglern ||||| ||||&lt;br /&gt;
* Spannungsregler in SMD-Version (7805 etc., nicht nur der 78L05) ||||| |||||&lt;br /&gt;
* BUF420AW Schaltnetzteil Transistor von STM ||&lt;br /&gt;
* SMD Doppeldiode Schottky 12A 60V im TO252AA z.B. 12CWQ06FN von IOR ||||| ||||&lt;br /&gt;
&lt;br /&gt;
== Sensoren/Aktoren ==&lt;br /&gt;
* Sensirion SHT11 ||||| ||||| ||||||&lt;br /&gt;
* kleine Feuchtigkeitssensoren zur &#039;on-board-Montage&#039; ||||&lt;br /&gt;
* Sharp Entfernungssensoren (zb den GP2D120 oder den GP2D12) ||||| ||||| |&lt;br /&gt;
* FSRs (Force Sensing Resistor) von Interlink Electronics ||||| ||&lt;br /&gt;
* NanoMuscle Aktuatoren |&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;
* IS471 Selbstmodulierende IR-Lichtschranke ||&lt;br /&gt;
&lt;br /&gt;
== Baugruppen ==&lt;br /&gt;
* Mini-Bluetooth Module (RS232-Bluetooth-&amp;quot;Wandler&amp;quot;-Platinchen) ||||| ||||| |||| ||||&lt;br /&gt;
&lt;br /&gt;
== &amp;quot;Passive&amp;quot; Bauteile ==&lt;br /&gt;
* Shunt-Widerstände  ||||| ||||| ||||| |  (neu im Sortiment: Widerstandsdraht, Best.-Nr. &amp;quot;RD100/x,xx&amp;quot;)&lt;br /&gt;
* Low-ESR Elkos (definiertes Fabrikat/Typ, und nicht einfach irgendwelche! (Rubycon?)) ||||| |||&lt;br /&gt;
* 14,7456 MHz Quarze |||||&lt;br /&gt;
* zu Schaltreglern LM257x u.a. passende fertige Spulen (Induktivitaet, max.Strom, keine &amp;quot;Entstörspulen&amp;quot;) |||||  |||||  |||||  |||&lt;br /&gt;
* Ordentliche Trafospulen + Kerne, z.b. ETD-Serie, oder RM10 |||||&lt;br /&gt;
* Passende Ferrite dazu: N27,N41,N67 |||&lt;br /&gt;
&lt;br /&gt;
== Optoelektronik und Leuchtmittel ==&lt;br /&gt;
* Vakuum-Fluoreszenz-Displays (Dot Matrix mit Standardcontroller)  ||||&lt;br /&gt;
* Diese 4-Stelligen Dot-Matrix LED Anzeigen Siemens SLG 2016 oder von HP oder ähnliches |&lt;br /&gt;
* low current SMD LEDs (zB Osram LG T679) ||||&lt;br /&gt;
* OSRAM Halogen Decostar 51 12V 20W GU5,3 statt des billigen NoName Zeugs ||&lt;br /&gt;
&lt;br /&gt;
== Mechanisches ==&lt;br /&gt;
=== Schalter/Potis etc. ===&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  ||||| ||||| ||||&lt;br /&gt;
* Drehschalter Serie DS in allen Versionen nur vom Hersteller C&amp;amp;K; auch brückende Versionen anbieten  ||||&lt;br /&gt;
* T215 ersetzen gegen etwas Qualitativeres  ||||&lt;br /&gt;
* Folientastaturen ||||| |||||&lt;br /&gt;
* statt radiohm potis bitte prehostat oder Alphastat 16 63256-026xx ||&lt;br /&gt;
&lt;br /&gt;
=== (Steck-) Verbindungen ===&lt;br /&gt;
* Chipkartenkontaktiereinrichtung, die die Kontakte anhebt (keine Schleifkontakte) ||&lt;br /&gt;
* Stift-/Buchsenleisten 2.54mm zum Auseinanderbrechen  ||||| ||||| ||||| ||||| ||||| ||||| ||||| ||| =&amp;gt; Bereits im Sortiment: SPL XX, AW 122/XX (XX = 20,32,64); leider nicht als brechbaren Buchsenleisten zu SL xXxxG&lt;br /&gt;
* Buchsenleisten zum Crimpen (allseitig anreihbar!, 1x1, 1x2)  ||||| |||||&lt;br /&gt;
* Print-Steckverbinder (die einreihigen Stecker auf dem PC-Mainboard) ||||| ||&lt;br /&gt;
* Für die LC-Displays: Adapterplatine mit anschlüssen im Raster 2,54mm (EA 9907-DIP) ||||| ||||| |&lt;br /&gt;
&lt;br /&gt;
=== Kabel etc. ===&lt;br /&gt;
* Flachbandkabel im 2,54mm Raster und dazu passende Auspressstecker und -buchsen ||||| ||||| |||||&lt;br /&gt;
* Flexible Einzellitze, 0,5² in verschiedenen Farben ||||| |||&lt;br /&gt;
* das qualitativ mangelhafte 4mm Laborsteckerprogramm rausnehmen und nur noch Hirschmann anbieten  |||&lt;br /&gt;
* dünner Schaltdraht (&amp;lt; 1mm Durchmesser, isoliert mit Tefzel oder Kynar)  ||||| ||||| ||||| ||||| ||||| ||&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; ???)&lt;br /&gt;
* Zylinderkopfschrauben M3 x 25mm |||&lt;br /&gt;
&lt;br /&gt;
== Platinen/Prototypen ==&lt;br /&gt;
* Eisen(III)-Chlorid  ||||| ||||| ||||| ||||| ||||| |||&lt;br /&gt;
* Breadboards/&amp;quot;Steckbretter&amp;quot; ||||| ||||| ||||| ||||| ||||| |&lt;br /&gt;
* SOIC auf PDIP Gehäuse-Adapter zwecks Prototypen-Bau |||&lt;br /&gt;
&lt;br /&gt;
== Werkzeug und Zubehör ==&lt;br /&gt;
* einzelne Hartmetallbohrer in diversen Grössen ||||| ||||| |||&lt;br /&gt;
* Hartmetallbohrer in mehr verschiedenen Größen (z.B. 1,1mm 1,2mm etc.) |||||&lt;br /&gt;
&lt;br /&gt;
== Unsortiert/Unspezifisch ==&lt;br /&gt;
* mehr SMD Bauteile  ||||| ||||| ||||| ||||| ||||| ||||| |||||  ||||| &lt;br /&gt;
* mehr Familien von Logik-ICs, z.B. AC, ACT (in SMD) ||||| ||||| |&lt;br /&gt;
* HCT-Logik in SMD ||||| ||||| ||||| ||&lt;br /&gt;
* mehr und v.a. kleine (Hand-) Gehäuse  ||||| ||||| ||||| ||||| ||||| |||||&lt;br /&gt;
* Die SMD Version des Source Driver &amp;quot;UDN 2987 A&amp;quot;, also den &amp;quot;UDN 2987 LW&amp;quot; aufnehmen |&lt;br /&gt;
* LiPoly-Zellen (aufladbare Lithiumakkus &amp;quot;Suppentüten&amp;quot;) ||||| |||&lt;br /&gt;
* gleicher Mindestbestellwert in Österreich wie in Deutschland |||||| ||&lt;br /&gt;
* schnelle Lieferzeit (wie früher 1-2 Tage) ||||&lt;br /&gt;
* Filialen in Österreich und der Schweiz :-) ||||| |&lt;br /&gt;
&lt;br /&gt;
= Bereits im Sortiment =&lt;br /&gt;
&lt;br /&gt;
* 3,3V Laengsregler (LT1086-Serie z.B.)  ||||| =&amp;gt; vgl z.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.B.: ML 100 SW, Meterware z.B.: MESSLEITUNG 10SW)&lt;br /&gt;
* FTDI USB Chips  ||||| ||||| ||||| ||||| ||||| || =&amp;gt; Best-Nr. FT232BM oder FT245BM&lt;br /&gt;
* CAN-Bus Controller MCP2515  |||||&lt;br /&gt;
* VLSI MP3 Decoder  ||||| ||||| |||||  z.Zt. unter CAN-Bus(!) einsortiert&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. PSS-LIN* (&amp;quot;mono&amp;quot;) PSM-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...)&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  ||||| ||||| ||||| ||||| ||||| ||||| ||||| ||||| ||||| ||||| ||||| |||&lt;br /&gt;
&lt;br /&gt;
==== Logbuch ====&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;/div&gt;</summary>
		<author><name>131.130.1.135</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=Elektronikversender&amp;diff=5922</id>
		<title>Elektronikversender</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=Elektronikversender&amp;diff=5922"/>
		<updated>2005-03-28T23:07:21Z</updated>

		<summary type="html">&lt;p&gt;131.130.1.135: /* Trade-Shop */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Einleitung ==&lt;br /&gt;
&lt;br /&gt;
Die Vor- und Nachteile von verschiedenen Elektronik-Versand-Händlern werden relativ häufig im Forum diskutiert. Diese Diskussionen führen nicht selten zu weitestgehend gleichen Ergebnissen. In diesem Artikel sollen daher die Argumente, die für oder gegen einen bestimmten Elektronik-Versender sprechen, zusammengetragen werden. Sobald diese Liste einigermaßen vollständig ist, würde dies sicher einige Diskussions-Threads und/oder Flame-Wars überflüssig machen.&lt;br /&gt;
&lt;br /&gt;
Diese Liste erhebt keinerlei Anspruch auf Vollständigkeit, d.h. wenn ihr einen Versender kennt, der hier noch nicht aufgeführt ist, dann nennt wenigstens die URL und den Namen. Den Rest können auch andere besorgen, die den Versender ebenfalls kennen!&lt;br /&gt;
&lt;br /&gt;
Bitte ergänzt nur allgemeine Sachen (z.B. &amp;quot;liefert immer vollständig&amp;quot;, &amp;quot;günstig&amp;quot; oder &amp;quot;große Auswahl&amp;quot;), aber nicht Sachen wie &amp;quot;mein ATMega 128 hatte verbogene Beine&amp;quot;! Bitte auch die alphabetische Sortierung beibehalten!&lt;br /&gt;
&lt;br /&gt;
== Liste der Versender ==&lt;br /&gt;
&lt;br /&gt;
=== Actron ===&lt;br /&gt;
Homepage http://www.actron.de&lt;br /&gt;
&lt;br /&gt;
* alphanumerische LCDs und Graphikdisplays in großer Auswahl, auch mit Touchscreens&lt;br /&gt;
* für gewerbliche Kunden: etwas verhandeln schadet nie&lt;br /&gt;
* bei kleinen Stückzahlen nicht ganz billig&lt;br /&gt;
* liefern sehr schnell und stets zuverlässig&lt;br /&gt;
&lt;br /&gt;
=== Buerklin ===&lt;br /&gt;
Homepage: [http://www.buerklin.com/ Buerklin]&lt;br /&gt;
* große Auswahl&lt;br /&gt;
* Ladengeschäfte in Düsseldorf und München&lt;br /&gt;
* nur an gewerbliche Abnehmer (lt. AGB); private Abnehmer können dennoch im Ladengeschäft einkaufen!&lt;br /&gt;
&lt;br /&gt;
=== Conrad ===&lt;br /&gt;
Homepage: [http://www.conrad.de/ Conrad Elektronik] und [http://www.business.conrad.de/ Conrad &amp;quot;Business&amp;quot;]&lt;br /&gt;
* großes Angebot (für Bauteile den &amp;quot;Business&amp;quot;-Katalog beachten, der Hauptkatalog ist dahingehend etwas &amp;quot;dünn&amp;quot;)&lt;br /&gt;
* relativ teuer jedoch 10% Rabatt für Hochschulen/Lehreinrichtungen (evtl. auch Schüler/Studenten - fragen kost&#039; nix)&lt;br /&gt;
* 21 Ladengeschäfte in Deutschland, drei in Österreich&lt;br /&gt;
* die Ladengeschäfte haben nicht das gesamte Programm vor Ort, man kann jedoch in den Geschäften anrufen und die Verfügbarkeit anfragen, evtl. sogar Teile für ein paar Stunden &amp;quot;zurücklegen lassen&amp;quot; (von Geschäft zu Geschäft verschieden).&lt;br /&gt;
* positiv: Bei Business-Kunden wird der Rechnungsbetrag erst nach 14 Tagen abgebucht!&lt;br /&gt;
* haben einen (teuren) 24 Std. Lieferservice für Notfälle&lt;br /&gt;
&lt;br /&gt;
=== Darisus ===&lt;br /&gt;
Homepage: http://www.darisus.de&lt;br /&gt;
&lt;br /&gt;
* kompetente Beratung&lt;br /&gt;
* liefert sehr zuverlässig, in Notfällen auch Express&lt;br /&gt;
&lt;br /&gt;
=== Digi-Key ===&lt;br /&gt;
(tlw.) deutsche Homepage: [http://de.digikey.com/ Digi-Key]&lt;br /&gt;
* optisch nicht besonders ansprechende, aber durchaus sehr funktionelle Website&lt;br /&gt;
* beheimatet in den USA, ein Logistikburo gibt es aber in den Niederlanden&lt;br /&gt;
* dadurch bedingt 100&amp;amp;#8364; Mindestbestellwert (darunter 13&amp;amp;#8364; Bearbeitungsgebühr) und 18&amp;amp;#8364; Versandkosten&lt;br /&gt;
* Versand dafür sehr flott mit UPS Express (in rund zwei bis drei Tagen da)&lt;br /&gt;
* Angebot teilweise sehr umfangreich, manches aber auch gar nicht (z.B. keine Philips-Halbleiter)&lt;br /&gt;
* generell im Vergleich zu deutschen Anbietern etwas günstiger&lt;br /&gt;
* Preise sind auf der deutschen Website in Euro inklusive etwaigem Zoll angegeben, allerdings ohne Mehrwertsteuer, die korrekt abgerechnet wird (d.h. man zahlt bei Versand nach Österreich 20% Mwst., nach Deutschland m.W.n. 16%)&lt;br /&gt;
* Zusammenfassend kann man sagen, dass sich Digikey aus Europa vor allem/eher nur für größere Bestellungen oder Sammelbestellungen anbietet, ansonsten sind der Mindestbestellwert und die Versandkosten in der Relation einfach zu hoch.&lt;br /&gt;
&lt;br /&gt;
=== ELV ===&lt;br /&gt;
Homepage: [http://www.elv.de/ ELV]&lt;br /&gt;
* nicht sehr große Auswahl an Einzelteilen&lt;br /&gt;
* riesiges Angebot an Zubehör für Hobbyisten&lt;br /&gt;
* viele z.T. pfiffige Eigenentwicklungen, Bausätze (auch zum Download auf der Website verfügbar)&lt;br /&gt;
* sonst Sortiment ähnlich Conrad, nicht billig&lt;br /&gt;
* nicht billig, merkwürdigerweise sind manche Artikel aber die günstigsten auf dem Markt&lt;br /&gt;
* mühsamer Onlinekatalog&lt;br /&gt;
Immer mal wieder Fehllieferungen und Wartezeiten (zumindest in die Schweiz). Service erreichte in 3 Fällen nicht das inserierte Niveau.&lt;br /&gt;
&lt;br /&gt;
=== Farnell ===&lt;br /&gt;
* Homepage: [http://www.farnell.de/ Farnell InOne]&lt;br /&gt;
* große Auswahl&lt;br /&gt;
* relativ teuer jedoch 12% Rabatt für Schüler/Studenten/Lehreinrichtungen&lt;br /&gt;
* laut AGB: Das Angebot von Farnell InOne richtet sich ausschliesslich an gewerbliche Nutzer.&lt;br /&gt;
&lt;br /&gt;
=== Geist ===&lt;br /&gt;
Homepage: [http://www.geist-electronic.de/ Geist Electronic-Versand GmbH]&lt;br /&gt;
* Liefern Bauteile für Elektor-Projekte&lt;br /&gt;
&lt;br /&gt;
=== Hinkel ===&lt;br /&gt;
Homepage: http://www.hinkel-elektronik.de&lt;br /&gt;
&lt;br /&gt;
* Batterien&lt;br /&gt;
* Knopfzellen, spezielle KZH, die man sonst lang sucht, findet man hier&lt;br /&gt;
&lt;br /&gt;
=== Kessler ===&lt;br /&gt;
Homepage: [http://www.kessler-elektronik.de/ Kessler]&lt;br /&gt;
* im Preis-Leistungsverhältnis mit Reichelt zu vergleichen (sprich: günstig)&lt;br /&gt;
* Sortiment ähnlich Reichelt mit gewissen Abweichungen (z. B. andere FPGA und RAMs)&lt;br /&gt;
&lt;br /&gt;
=== Mütron ===&lt;br /&gt;
Homepage: [http://www.muetron.de Mütron]&lt;br /&gt;
&lt;br /&gt;
=== Oppermann ===&lt;br /&gt;
Homepage: http://www.oppermann-electronic.de&lt;br /&gt;
&lt;br /&gt;
* Restposten, auch HF Bauteile&lt;br /&gt;
* auch Privatkunden&lt;br /&gt;
* Lieferung nach üblicher Zeit&lt;br /&gt;
&lt;br /&gt;
=== Pollin ===&lt;br /&gt;
Homepage: [http://www.pollin.de/ Pollin Electronic]&lt;br /&gt;
* Günstige Restposten aller Art&lt;br /&gt;
* Produkte teils schnell ausverkauft&lt;br /&gt;
* Lieferzeit gut eine Woche&lt;br /&gt;
&lt;br /&gt;
=== Reichelt ===&lt;br /&gt;
Homepage: [http://www.reichelt.de/ Reichelt]&lt;br /&gt;
* relativ große Auswahl, aber nicht viele &amp;quot;brandaktuelle&amp;quot; Bauteile&lt;br /&gt;
* wenn man höflich fragen tut, liefern sie meist auch Bauteile, die nicht im Katalog stehen zu &amp;quot;normalen&amp;quot; Preisen (vorausgesetzt der Hersteller ist im Sortiment), z.B. Xilinx XC2S50&lt;br /&gt;
* reagiert aber teilweise auch auf Anregungen, neue Produkte in das Angebot aufzunehmen; siehe dazu auch den Artikel [[Reichelt-Wishlist]]&lt;br /&gt;
* liefert schnell und vollständig; wenn etwas ausnahmsweise nicht verfügbar ist, dann liefern sie es auf eigene Kosten nach, wenn der Artikel in absehbarer Zeit wieder vorrätig ist (selbst wenn er nur 0,20&amp;amp;#8364; wert ist).&lt;br /&gt;
* Lieferzeiten normal, manchmal unverständlicherweise länger als üblich&lt;br /&gt;
* lässt einen dennoch manchmal warten, wenn ein Artikel nicht lieferbar ist! Daher bei der Bestellung immer darauf hinweisen daß man auch eine Teillieferung akzeptiert.&lt;br /&gt;
* niedrige Preise&lt;br /&gt;
* im Inland (Deutschland) 10&amp;amp;#8364;, ins Ausland 100&amp;amp;#8364; Mindestbestellwert&lt;br /&gt;
* auch in die Schweiz sehr guter Service&lt;br /&gt;
&lt;br /&gt;
=== Ribu ===&lt;br /&gt;
Homepage: [http://www.ribu.at/ Ribu]&lt;br /&gt;
* Guter Elektronikversand mit zahlreichen Entwicklungsboards und zahlreichen Elektroniklösungen!&lt;br /&gt;
&lt;br /&gt;
=== RS Components ===&lt;br /&gt;
Homepage: [http://www.rs-components.com/ RS Components] &lt;br /&gt;
&lt;br /&gt;
* gute Auswahl insbesondere an &amp;quot;mechanischen Bauteilen&amp;quot;&lt;br /&gt;
* gute Verfügbarkeit&lt;br /&gt;
* lt. AGB nur an gewerbliche Abnehmer&lt;br /&gt;
&lt;br /&gt;
=== Sander Elektronik ===&lt;br /&gt;
Homepage: http://www.sander-electronic.de&lt;br /&gt;
&lt;br /&gt;
* beliefert auch Privatkunden, Bankeinzug möglich&lt;br /&gt;
* ähnlich Segor ein Berliner Versender&lt;br /&gt;
* Hier findet man manche [[MSP430]], die es sonst nicht in kleinen Stückzahlen gibt&lt;br /&gt;
* Herr Sander ist sehr kompetent und selbst Autor von Fachartikeln&lt;br /&gt;
&lt;br /&gt;
=== Schukat elektronic ===&lt;br /&gt;
Homepage: [http://www.schukat.de/ Schukat]&lt;br /&gt;
&lt;br /&gt;
* liefert nicht an privaten Endverbraucher&lt;br /&gt;
* einfache und passiver Bauteile oft nur in großen Mindeststückzahlen&lt;br /&gt;
* ICs teilweise recht preiswert (vor allem bei mehr als 1 Stück, z.B. auch AVR)&lt;br /&gt;
* LCDs sehr preiswert und auch als Einzelstücke&lt;br /&gt;
* aktuelle Preise und Verfügbarkeit im Internet (aber nur nach Anmeldung)&lt;br /&gt;
&lt;br /&gt;
=== Schuricht ===&lt;br /&gt;
Homepage: [http://www.schuricht.de/ Schuricht]&lt;br /&gt;
&lt;br /&gt;
* liefert nicht an Privatkunden&lt;br /&gt;
&lt;br /&gt;
=== Segor-electronics ===&lt;br /&gt;
Homepage: [http://www.segor.de/ Segor-electronics]&lt;br /&gt;
* Spezialist für Halbleiter, die ansonsten für nicht-gewerbliche Abnehmer nur schwer erhältlich sind (Preise dahingehend &amp;quot;angemessen&amp;quot;)&lt;br /&gt;
* auch Privatkunden gerne gesehen&lt;br /&gt;
* Ladengeschäft in Berlin&lt;br /&gt;
* kein Mindestbestellwert bei Versand innerhalb der EU&lt;br /&gt;
&lt;br /&gt;
=== SE Spezial-Electronic ===&lt;br /&gt;
Homepage: [http://www.spezial.de/ SE Spezial-Electronic]&lt;br /&gt;
&lt;br /&gt;
=== Trade-Shop ===&lt;br /&gt;
Homepage: [http://www.trade-shop.de/ http://www.trade-shop.de/]&lt;br /&gt;
&lt;br /&gt;
* hat so gut wie keine elektronischen Bauteile, sondern eher Satelliten-Bedarf...&lt;br /&gt;
&lt;br /&gt;
=== Westfalia ===&lt;br /&gt;
Homepage http://www.westfalia.de&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
TODO: tec-shop (wieder online), artools, elektronik-laden, elektronik-fundgrube, elektro-nix, elpro&lt;br /&gt;
&lt;br /&gt;
== Siehe auch ==&lt;br /&gt;
* [[Platinenhersteller]]&lt;/div&gt;</summary>
		<author><name>131.130.1.135</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=Elektronikversender&amp;diff=5920</id>
		<title>Elektronikversender</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=Elektronikversender&amp;diff=5920"/>
		<updated>2005-03-28T23:06:47Z</updated>

		<summary type="html">&lt;p&gt;131.130.1.135: /* Sander Elektronik */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Einleitung ==&lt;br /&gt;
&lt;br /&gt;
Die Vor- und Nachteile von verschiedenen Elektronik-Versand-Händlern werden relativ häufig im Forum diskutiert. Diese Diskussionen führen nicht selten zu weitestgehend gleichen Ergebnissen. In diesem Artikel sollen daher die Argumente, die für oder gegen einen bestimmten Elektronik-Versender sprechen, zusammengetragen werden. Sobald diese Liste einigermaßen vollständig ist, würde dies sicher einige Diskussions-Threads und/oder Flame-Wars überflüssig machen.&lt;br /&gt;
&lt;br /&gt;
Diese Liste erhebt keinerlei Anspruch auf Vollständigkeit, d.h. wenn ihr einen Versender kennt, der hier noch nicht aufgeführt ist, dann nennt wenigstens die URL und den Namen. Den Rest können auch andere besorgen, die den Versender ebenfalls kennen!&lt;br /&gt;
&lt;br /&gt;
Bitte ergänzt nur allgemeine Sachen (z.B. &amp;quot;liefert immer vollständig&amp;quot;, &amp;quot;günstig&amp;quot; oder &amp;quot;große Auswahl&amp;quot;), aber nicht Sachen wie &amp;quot;mein ATMega 128 hatte verbogene Beine&amp;quot;! Bitte auch die alphabetische Sortierung beibehalten!&lt;br /&gt;
&lt;br /&gt;
== Liste der Versender ==&lt;br /&gt;
&lt;br /&gt;
=== Actron ===&lt;br /&gt;
Homepage http://www.actron.de&lt;br /&gt;
&lt;br /&gt;
* alphanumerische LCDs und Graphikdisplays in großer Auswahl, auch mit Touchscreens&lt;br /&gt;
* für gewerbliche Kunden: etwas verhandeln schadet nie&lt;br /&gt;
* bei kleinen Stückzahlen nicht ganz billig&lt;br /&gt;
* liefern sehr schnell und stets zuverlässig&lt;br /&gt;
&lt;br /&gt;
=== Buerklin ===&lt;br /&gt;
Homepage: [http://www.buerklin.com/ Buerklin]&lt;br /&gt;
* große Auswahl&lt;br /&gt;
* Ladengeschäfte in Düsseldorf und München&lt;br /&gt;
* nur an gewerbliche Abnehmer (lt. AGB); private Abnehmer können dennoch im Ladengeschäft einkaufen!&lt;br /&gt;
&lt;br /&gt;
=== Conrad ===&lt;br /&gt;
Homepage: [http://www.conrad.de/ Conrad Elektronik] und [http://www.business.conrad.de/ Conrad &amp;quot;Business&amp;quot;]&lt;br /&gt;
* großes Angebot (für Bauteile den &amp;quot;Business&amp;quot;-Katalog beachten, der Hauptkatalog ist dahingehend etwas &amp;quot;dünn&amp;quot;)&lt;br /&gt;
* relativ teuer jedoch 10% Rabatt für Hochschulen/Lehreinrichtungen (evtl. auch Schüler/Studenten - fragen kost&#039; nix)&lt;br /&gt;
* 21 Ladengeschäfte in Deutschland, drei in Österreich&lt;br /&gt;
* die Ladengeschäfte haben nicht das gesamte Programm vor Ort, man kann jedoch in den Geschäften anrufen und die Verfügbarkeit anfragen, evtl. sogar Teile für ein paar Stunden &amp;quot;zurücklegen lassen&amp;quot; (von Geschäft zu Geschäft verschieden).&lt;br /&gt;
* positiv: Bei Business-Kunden wird der Rechnungsbetrag erst nach 14 Tagen abgebucht!&lt;br /&gt;
* haben einen (teuren) 24 Std. Lieferservice für Notfälle&lt;br /&gt;
&lt;br /&gt;
=== Darisus ===&lt;br /&gt;
Homepage: http://www.darisus.de&lt;br /&gt;
&lt;br /&gt;
* kompetente Beratung&lt;br /&gt;
* liefert sehr zuverlässig, in Notfällen auch Express&lt;br /&gt;
&lt;br /&gt;
=== Digi-Key ===&lt;br /&gt;
(tlw.) deutsche Homepage: [http://de.digikey.com/ Digi-Key]&lt;br /&gt;
* optisch nicht besonders ansprechende, aber durchaus sehr funktionelle Website&lt;br /&gt;
* beheimatet in den USA, ein Logistikburo gibt es aber in den Niederlanden&lt;br /&gt;
* dadurch bedingt 100&amp;amp;#8364; Mindestbestellwert (darunter 13&amp;amp;#8364; Bearbeitungsgebühr) und 18&amp;amp;#8364; Versandkosten&lt;br /&gt;
* Versand dafür sehr flott mit UPS Express (in rund zwei bis drei Tagen da)&lt;br /&gt;
* Angebot teilweise sehr umfangreich, manches aber auch gar nicht (z.B. keine Philips-Halbleiter)&lt;br /&gt;
* generell im Vergleich zu deutschen Anbietern etwas günstiger&lt;br /&gt;
* Preise sind auf der deutschen Website in Euro inklusive etwaigem Zoll angegeben, allerdings ohne Mehrwertsteuer, die korrekt abgerechnet wird (d.h. man zahlt bei Versand nach Österreich 20% Mwst., nach Deutschland m.W.n. 16%)&lt;br /&gt;
* Zusammenfassend kann man sagen, dass sich Digikey aus Europa vor allem/eher nur für größere Bestellungen oder Sammelbestellungen anbietet, ansonsten sind der Mindestbestellwert und die Versandkosten in der Relation einfach zu hoch.&lt;br /&gt;
&lt;br /&gt;
=== ELV ===&lt;br /&gt;
Homepage: [http://www.elv.de/ ELV]&lt;br /&gt;
* nicht sehr große Auswahl an Einzelteilen&lt;br /&gt;
* riesiges Angebot an Zubehör für Hobbyisten&lt;br /&gt;
* viele z.T. pfiffige Eigenentwicklungen, Bausätze (auch zum Download auf der Website verfügbar)&lt;br /&gt;
* sonst Sortiment ähnlich Conrad, nicht billig&lt;br /&gt;
* nicht billig, merkwürdigerweise sind manche Artikel aber die günstigsten auf dem Markt&lt;br /&gt;
* mühsamer Onlinekatalog&lt;br /&gt;
Immer mal wieder Fehllieferungen und Wartezeiten (zumindest in die Schweiz). Service erreichte in 3 Fällen nicht das inserierte Niveau.&lt;br /&gt;
&lt;br /&gt;
=== Farnell ===&lt;br /&gt;
* Homepage: [http://www.farnell.de/ Farnell InOne]&lt;br /&gt;
* große Auswahl&lt;br /&gt;
* relativ teuer jedoch 12% Rabatt für Schüler/Studenten/Lehreinrichtungen&lt;br /&gt;
* laut AGB: Das Angebot von Farnell InOne richtet sich ausschliesslich an gewerbliche Nutzer.&lt;br /&gt;
&lt;br /&gt;
=== Geist ===&lt;br /&gt;
Homepage: [http://www.geist-electronic.de/ Geist Electronic-Versand GmbH]&lt;br /&gt;
* Liefern Bauteile für Elektor-Projekte&lt;br /&gt;
&lt;br /&gt;
=== Hinkel ===&lt;br /&gt;
Homepage: http://www.hinkel-elektronik.de&lt;br /&gt;
&lt;br /&gt;
* Batterien&lt;br /&gt;
* Knopfzellen, spezielle KZH, die man sonst lang sucht, findet man hier&lt;br /&gt;
&lt;br /&gt;
=== Kessler ===&lt;br /&gt;
Homepage: [http://www.kessler-elektronik.de/ Kessler]&lt;br /&gt;
* im Preis-Leistungsverhältnis mit Reichelt zu vergleichen (sprich: günstig)&lt;br /&gt;
* Sortiment ähnlich Reichelt mit gewissen Abweichungen (z. B. andere FPGA und RAMs)&lt;br /&gt;
&lt;br /&gt;
=== Mütron ===&lt;br /&gt;
Homepage: [http://www.muetron.de Mütron]&lt;br /&gt;
&lt;br /&gt;
=== Oppermann ===&lt;br /&gt;
Homepage: http://www.oppermann-electronic.de&lt;br /&gt;
&lt;br /&gt;
* Restposten, auch HF Bauteile&lt;br /&gt;
* auch Privatkunden&lt;br /&gt;
* Lieferung nach üblicher Zeit&lt;br /&gt;
&lt;br /&gt;
=== Pollin ===&lt;br /&gt;
Homepage: [http://www.pollin.de/ Pollin Electronic]&lt;br /&gt;
* Günstige Restposten aller Art&lt;br /&gt;
* Produkte teils schnell ausverkauft&lt;br /&gt;
* Lieferzeit gut eine Woche&lt;br /&gt;
&lt;br /&gt;
=== Reichelt ===&lt;br /&gt;
Homepage: [http://www.reichelt.de/ Reichelt]&lt;br /&gt;
* relativ große Auswahl, aber nicht viele &amp;quot;brandaktuelle&amp;quot; Bauteile&lt;br /&gt;
* wenn man höflich fragen tut, liefern sie meist auch Bauteile, die nicht im Katalog stehen zu &amp;quot;normalen&amp;quot; Preisen (vorausgesetzt der Hersteller ist im Sortiment), z.B. Xilinx XC2S50&lt;br /&gt;
* reagiert aber teilweise auch auf Anregungen, neue Produkte in das Angebot aufzunehmen; siehe dazu auch den Artikel [[Reichelt-Wishlist]]&lt;br /&gt;
* liefert schnell und vollständig; wenn etwas ausnahmsweise nicht verfügbar ist, dann liefern sie es auf eigene Kosten nach, wenn der Artikel in absehbarer Zeit wieder vorrätig ist (selbst wenn er nur 0,20&amp;amp;#8364; wert ist).&lt;br /&gt;
* Lieferzeiten normal, manchmal unverständlicherweise länger als üblich&lt;br /&gt;
* lässt einen dennoch manchmal warten, wenn ein Artikel nicht lieferbar ist! Daher bei der Bestellung immer darauf hinweisen daß man auch eine Teillieferung akzeptiert.&lt;br /&gt;
* niedrige Preise&lt;br /&gt;
* im Inland (Deutschland) 10&amp;amp;#8364;, ins Ausland 100&amp;amp;#8364; Mindestbestellwert&lt;br /&gt;
* auch in die Schweiz sehr guter Service&lt;br /&gt;
&lt;br /&gt;
=== Ribu ===&lt;br /&gt;
Homepage: [http://www.ribu.at/ Ribu]&lt;br /&gt;
* Guter Elektronikversand mit zahlreichen Entwicklungsboards und zahlreichen Elektroniklösungen!&lt;br /&gt;
&lt;br /&gt;
=== RS Components ===&lt;br /&gt;
Homepage: [http://www.rs-components.com/ RS Components] &lt;br /&gt;
&lt;br /&gt;
* gute Auswahl insbesondere an &amp;quot;mechanischen Bauteilen&amp;quot;&lt;br /&gt;
* gute Verfügbarkeit&lt;br /&gt;
* lt. AGB nur an gewerbliche Abnehmer&lt;br /&gt;
&lt;br /&gt;
=== Sander Elektronik ===&lt;br /&gt;
Homepage: http://www.sander-electronic.de&lt;br /&gt;
&lt;br /&gt;
* beliefert auch Privatkunden, Bankeinzug möglich&lt;br /&gt;
* ähnlich Segor ein Berliner Versender&lt;br /&gt;
* Hier findet man manche [[MSP430]], die es sonst nicht in kleinen Stückzahlen gibt&lt;br /&gt;
* Herr Sander ist sehr kompetent und selbst Autor von Fachartikeln&lt;br /&gt;
&lt;br /&gt;
=== Schukat elektronic ===&lt;br /&gt;
Homepage: [http://www.schukat.de/ Schukat]&lt;br /&gt;
&lt;br /&gt;
* liefert nicht an privaten Endverbraucher&lt;br /&gt;
* einfache und passiver Bauteile oft nur in großen Mindeststückzahlen&lt;br /&gt;
* ICs teilweise recht preiswert (vor allem bei mehr als 1 Stück, z.B. auch AVR)&lt;br /&gt;
* LCDs sehr preiswert und auch als Einzelstücke&lt;br /&gt;
* aktuelle Preise und Verfügbarkeit im Internet (aber nur nach Anmeldung)&lt;br /&gt;
&lt;br /&gt;
=== Schuricht ===&lt;br /&gt;
Homepage: [http://www.schuricht.de/ Schuricht]&lt;br /&gt;
&lt;br /&gt;
* liefert nicht an Privatkunden&lt;br /&gt;
&lt;br /&gt;
=== Segor-electronics ===&lt;br /&gt;
Homepage: [http://www.segor.de/ Segor-electronics]&lt;br /&gt;
* Spezialist für Halbleiter, die ansonsten für nicht-gewerbliche Abnehmer nur schwer erhältlich sind (Preise dahingehend &amp;quot;angemessen&amp;quot;)&lt;br /&gt;
* auch Privatkunden gerne gesehen&lt;br /&gt;
* Ladengeschäft in Berlin&lt;br /&gt;
* kein Mindestbestellwert bei Versand innerhalb der EU&lt;br /&gt;
&lt;br /&gt;
=== SE Spezial-Electronic ===&lt;br /&gt;
Homepage: [http://www.spezial.de/ SE Spezial-Electronic]&lt;br /&gt;
&lt;br /&gt;
=== Trade-Shop ===&lt;br /&gt;
Homepage: [http://www.trade-shop.de/ http://www.trade-shop.de/], Shop [http://www.trade-shop.de/catalog/index.php?language=de http://www.trade-shop.de/catalog/index.php?language=de]&lt;br /&gt;
&lt;br /&gt;
* hat so gut wie keine elektronischen Bauteile, eher Satelliten-Bedarf...&lt;br /&gt;
&lt;br /&gt;
=== Westfalia ===&lt;br /&gt;
Homepage http://www.westfalia.de&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
TODO: tec-shop (wieder online), artools, elektronik-laden, elektronik-fundgrube, elektro-nix, elpro&lt;br /&gt;
&lt;br /&gt;
== Siehe auch ==&lt;br /&gt;
* [[Platinenhersteller]]&lt;/div&gt;</summary>
		<author><name>131.130.1.135</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=Elektronikversender&amp;diff=5919</id>
		<title>Elektronikversender</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=Elektronikversender&amp;diff=5919"/>
		<updated>2005-03-28T23:05:54Z</updated>

		<summary type="html">&lt;p&gt;131.130.1.135: /* Pollin */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Einleitung ==&lt;br /&gt;
&lt;br /&gt;
Die Vor- und Nachteile von verschiedenen Elektronik-Versand-Händlern werden relativ häufig im Forum diskutiert. Diese Diskussionen führen nicht selten zu weitestgehend gleichen Ergebnissen. In diesem Artikel sollen daher die Argumente, die für oder gegen einen bestimmten Elektronik-Versender sprechen, zusammengetragen werden. Sobald diese Liste einigermaßen vollständig ist, würde dies sicher einige Diskussions-Threads und/oder Flame-Wars überflüssig machen.&lt;br /&gt;
&lt;br /&gt;
Diese Liste erhebt keinerlei Anspruch auf Vollständigkeit, d.h. wenn ihr einen Versender kennt, der hier noch nicht aufgeführt ist, dann nennt wenigstens die URL und den Namen. Den Rest können auch andere besorgen, die den Versender ebenfalls kennen!&lt;br /&gt;
&lt;br /&gt;
Bitte ergänzt nur allgemeine Sachen (z.B. &amp;quot;liefert immer vollständig&amp;quot;, &amp;quot;günstig&amp;quot; oder &amp;quot;große Auswahl&amp;quot;), aber nicht Sachen wie &amp;quot;mein ATMega 128 hatte verbogene Beine&amp;quot;! Bitte auch die alphabetische Sortierung beibehalten!&lt;br /&gt;
&lt;br /&gt;
== Liste der Versender ==&lt;br /&gt;
&lt;br /&gt;
=== Actron ===&lt;br /&gt;
Homepage http://www.actron.de&lt;br /&gt;
&lt;br /&gt;
* alphanumerische LCDs und Graphikdisplays in großer Auswahl, auch mit Touchscreens&lt;br /&gt;
* für gewerbliche Kunden: etwas verhandeln schadet nie&lt;br /&gt;
* bei kleinen Stückzahlen nicht ganz billig&lt;br /&gt;
* liefern sehr schnell und stets zuverlässig&lt;br /&gt;
&lt;br /&gt;
=== Buerklin ===&lt;br /&gt;
Homepage: [http://www.buerklin.com/ Buerklin]&lt;br /&gt;
* große Auswahl&lt;br /&gt;
* Ladengeschäfte in Düsseldorf und München&lt;br /&gt;
* nur an gewerbliche Abnehmer (lt. AGB); private Abnehmer können dennoch im Ladengeschäft einkaufen!&lt;br /&gt;
&lt;br /&gt;
=== Conrad ===&lt;br /&gt;
Homepage: [http://www.conrad.de/ Conrad Elektronik] und [http://www.business.conrad.de/ Conrad &amp;quot;Business&amp;quot;]&lt;br /&gt;
* großes Angebot (für Bauteile den &amp;quot;Business&amp;quot;-Katalog beachten, der Hauptkatalog ist dahingehend etwas &amp;quot;dünn&amp;quot;)&lt;br /&gt;
* relativ teuer jedoch 10% Rabatt für Hochschulen/Lehreinrichtungen (evtl. auch Schüler/Studenten - fragen kost&#039; nix)&lt;br /&gt;
* 21 Ladengeschäfte in Deutschland, drei in Österreich&lt;br /&gt;
* die Ladengeschäfte haben nicht das gesamte Programm vor Ort, man kann jedoch in den Geschäften anrufen und die Verfügbarkeit anfragen, evtl. sogar Teile für ein paar Stunden &amp;quot;zurücklegen lassen&amp;quot; (von Geschäft zu Geschäft verschieden).&lt;br /&gt;
* positiv: Bei Business-Kunden wird der Rechnungsbetrag erst nach 14 Tagen abgebucht!&lt;br /&gt;
* haben einen (teuren) 24 Std. Lieferservice für Notfälle&lt;br /&gt;
&lt;br /&gt;
=== Darisus ===&lt;br /&gt;
Homepage: http://www.darisus.de&lt;br /&gt;
&lt;br /&gt;
* kompetente Beratung&lt;br /&gt;
* liefert sehr zuverlässig, in Notfällen auch Express&lt;br /&gt;
&lt;br /&gt;
=== Digi-Key ===&lt;br /&gt;
(tlw.) deutsche Homepage: [http://de.digikey.com/ Digi-Key]&lt;br /&gt;
* optisch nicht besonders ansprechende, aber durchaus sehr funktionelle Website&lt;br /&gt;
* beheimatet in den USA, ein Logistikburo gibt es aber in den Niederlanden&lt;br /&gt;
* dadurch bedingt 100&amp;amp;#8364; Mindestbestellwert (darunter 13&amp;amp;#8364; Bearbeitungsgebühr) und 18&amp;amp;#8364; Versandkosten&lt;br /&gt;
* Versand dafür sehr flott mit UPS Express (in rund zwei bis drei Tagen da)&lt;br /&gt;
* Angebot teilweise sehr umfangreich, manches aber auch gar nicht (z.B. keine Philips-Halbleiter)&lt;br /&gt;
* generell im Vergleich zu deutschen Anbietern etwas günstiger&lt;br /&gt;
* Preise sind auf der deutschen Website in Euro inklusive etwaigem Zoll angegeben, allerdings ohne Mehrwertsteuer, die korrekt abgerechnet wird (d.h. man zahlt bei Versand nach Österreich 20% Mwst., nach Deutschland m.W.n. 16%)&lt;br /&gt;
* Zusammenfassend kann man sagen, dass sich Digikey aus Europa vor allem/eher nur für größere Bestellungen oder Sammelbestellungen anbietet, ansonsten sind der Mindestbestellwert und die Versandkosten in der Relation einfach zu hoch.&lt;br /&gt;
&lt;br /&gt;
=== ELV ===&lt;br /&gt;
Homepage: [http://www.elv.de/ ELV]&lt;br /&gt;
* nicht sehr große Auswahl an Einzelteilen&lt;br /&gt;
* riesiges Angebot an Zubehör für Hobbyisten&lt;br /&gt;
* viele z.T. pfiffige Eigenentwicklungen, Bausätze (auch zum Download auf der Website verfügbar)&lt;br /&gt;
* sonst Sortiment ähnlich Conrad, nicht billig&lt;br /&gt;
* nicht billig, merkwürdigerweise sind manche Artikel aber die günstigsten auf dem Markt&lt;br /&gt;
* mühsamer Onlinekatalog&lt;br /&gt;
Immer mal wieder Fehllieferungen und Wartezeiten (zumindest in die Schweiz). Service erreichte in 3 Fällen nicht das inserierte Niveau.&lt;br /&gt;
&lt;br /&gt;
=== Farnell ===&lt;br /&gt;
* Homepage: [http://www.farnell.de/ Farnell InOne]&lt;br /&gt;
* große Auswahl&lt;br /&gt;
* relativ teuer jedoch 12% Rabatt für Schüler/Studenten/Lehreinrichtungen&lt;br /&gt;
* laut AGB: Das Angebot von Farnell InOne richtet sich ausschliesslich an gewerbliche Nutzer.&lt;br /&gt;
&lt;br /&gt;
=== Geist ===&lt;br /&gt;
Homepage: [http://www.geist-electronic.de/ Geist Electronic-Versand GmbH]&lt;br /&gt;
* Liefern Bauteile für Elektor-Projekte&lt;br /&gt;
&lt;br /&gt;
=== Hinkel ===&lt;br /&gt;
Homepage: http://www.hinkel-elektronik.de&lt;br /&gt;
&lt;br /&gt;
* Batterien&lt;br /&gt;
* Knopfzellen, spezielle KZH, die man sonst lang sucht, findet man hier&lt;br /&gt;
&lt;br /&gt;
=== Kessler ===&lt;br /&gt;
Homepage: [http://www.kessler-elektronik.de/ Kessler]&lt;br /&gt;
* im Preis-Leistungsverhältnis mit Reichelt zu vergleichen (sprich: günstig)&lt;br /&gt;
* Sortiment ähnlich Reichelt mit gewissen Abweichungen (z. B. andere FPGA und RAMs)&lt;br /&gt;
&lt;br /&gt;
=== Mütron ===&lt;br /&gt;
Homepage: [http://www.muetron.de Mütron]&lt;br /&gt;
&lt;br /&gt;
=== Oppermann ===&lt;br /&gt;
Homepage: http://www.oppermann-electronic.de&lt;br /&gt;
&lt;br /&gt;
* Restposten, auch HF Bauteile&lt;br /&gt;
* auch Privatkunden&lt;br /&gt;
* Lieferung nach üblicher Zeit&lt;br /&gt;
&lt;br /&gt;
=== Pollin ===&lt;br /&gt;
Homepage: [http://www.pollin.de/ Pollin Electronic]&lt;br /&gt;
* Günstige Restposten aller Art&lt;br /&gt;
* Produkte teils schnell ausverkauft&lt;br /&gt;
* Lieferzeit gut eine Woche&lt;br /&gt;
&lt;br /&gt;
=== Reichelt ===&lt;br /&gt;
Homepage: [http://www.reichelt.de/ Reichelt]&lt;br /&gt;
* relativ große Auswahl, aber nicht viele &amp;quot;brandaktuelle&amp;quot; Bauteile&lt;br /&gt;
* wenn man höflich fragen tut, liefern sie meist auch Bauteile, die nicht im Katalog stehen zu &amp;quot;normalen&amp;quot; Preisen (vorausgesetzt der Hersteller ist im Sortiment), z.B. Xilinx XC2S50&lt;br /&gt;
* reagiert aber teilweise auch auf Anregungen, neue Produkte in das Angebot aufzunehmen; siehe dazu auch den Artikel [[Reichelt-Wishlist]]&lt;br /&gt;
* liefert schnell und vollständig; wenn etwas ausnahmsweise nicht verfügbar ist, dann liefern sie es auf eigene Kosten nach, wenn der Artikel in absehbarer Zeit wieder vorrätig ist (selbst wenn er nur 0,20&amp;amp;#8364; wert ist).&lt;br /&gt;
* Lieferzeiten normal, manchmal unverständlicherweise länger als üblich&lt;br /&gt;
* lässt einen dennoch manchmal warten, wenn ein Artikel nicht lieferbar ist! Daher bei der Bestellung immer darauf hinweisen daß man auch eine Teillieferung akzeptiert.&lt;br /&gt;
* niedrige Preise&lt;br /&gt;
* im Inland (Deutschland) 10&amp;amp;#8364;, ins Ausland 100&amp;amp;#8364; Mindestbestellwert&lt;br /&gt;
* auch in die Schweiz sehr guter Service&lt;br /&gt;
&lt;br /&gt;
=== Ribu ===&lt;br /&gt;
Homepage: [http://www.ribu.at/ Ribu]&lt;br /&gt;
* Guter Elektronikversand mit zahlreichen Entwicklungsboards und zahlreichen Elektroniklösungen!&lt;br /&gt;
&lt;br /&gt;
=== RS Components ===&lt;br /&gt;
Homepage: [http://www.rs-components.com/ RS Components] &lt;br /&gt;
&lt;br /&gt;
* gute Auswahl insbesondere an &amp;quot;mechanischen Bauteilen&amp;quot;&lt;br /&gt;
* gute Verfügbarkeit&lt;br /&gt;
* lt. AGB nur an gewerbliche Abnehmer&lt;br /&gt;
&lt;br /&gt;
=== Sander Elektronik ===&lt;br /&gt;
Homepage: http://www.sander-electronic.de&lt;br /&gt;
&lt;br /&gt;
* beliefert auch Privatkunden, Bankeinzug möglich&lt;br /&gt;
* ähnlich Segor ein berliner Versender. &lt;br /&gt;
* Hier findet man manche MSP430 , die es sonst nicht in kleinen Stückzahlen gibt&lt;br /&gt;
* Herr Sander ist sehr kompetent, und selbst Autor von Fachartikeln&lt;br /&gt;
&lt;br /&gt;
=== Schukat elektronic ===&lt;br /&gt;
Homepage: [http://www.schukat.de/ Schukat]&lt;br /&gt;
&lt;br /&gt;
* liefert nicht an privaten Endverbraucher&lt;br /&gt;
* einfache und passiver Bauteile oft nur in großen Mindeststückzahlen&lt;br /&gt;
* ICs teilweise recht preiswert (vor allem bei mehr als 1 Stück, z.B. auch AVR)&lt;br /&gt;
* LCDs sehr preiswert und auch als Einzelstücke&lt;br /&gt;
* aktuelle Preise und Verfügbarkeit im Internet (aber nur nach Anmeldung)&lt;br /&gt;
&lt;br /&gt;
=== Schuricht ===&lt;br /&gt;
Homepage: [http://www.schuricht.de/ Schuricht]&lt;br /&gt;
&lt;br /&gt;
* liefert nicht an Privatkunden&lt;br /&gt;
&lt;br /&gt;
=== Segor-electronics ===&lt;br /&gt;
Homepage: [http://www.segor.de/ Segor-electronics]&lt;br /&gt;
* Spezialist für Halbleiter, die ansonsten für nicht-gewerbliche Abnehmer nur schwer erhältlich sind (Preise dahingehend &amp;quot;angemessen&amp;quot;)&lt;br /&gt;
* auch Privatkunden gerne gesehen&lt;br /&gt;
* Ladengeschäft in Berlin&lt;br /&gt;
* kein Mindestbestellwert bei Versand innerhalb der EU&lt;br /&gt;
&lt;br /&gt;
=== SE Spezial-Electronic ===&lt;br /&gt;
Homepage: [http://www.spezial.de/ SE Spezial-Electronic]&lt;br /&gt;
&lt;br /&gt;
=== Trade-Shop ===&lt;br /&gt;
Homepage: [http://www.trade-shop.de/ http://www.trade-shop.de/], Shop [http://www.trade-shop.de/catalog/index.php?language=de http://www.trade-shop.de/catalog/index.php?language=de]&lt;br /&gt;
&lt;br /&gt;
* hat so gut wie keine elektronischen Bauteile, eher Satelliten-Bedarf...&lt;br /&gt;
&lt;br /&gt;
=== Westfalia ===&lt;br /&gt;
Homepage http://www.westfalia.de&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
TODO: tec-shop (wieder online), artools, elektronik-laden, elektronik-fundgrube, elektro-nix, elpro&lt;br /&gt;
&lt;br /&gt;
== Siehe auch ==&lt;br /&gt;
* [[Platinenhersteller]]&lt;/div&gt;</summary>
		<author><name>131.130.1.135</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=Elektronikversender&amp;diff=5918</id>
		<title>Elektronikversender</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=Elektronikversender&amp;diff=5918"/>
		<updated>2005-03-28T23:05:14Z</updated>

		<summary type="html">&lt;p&gt;131.130.1.135: /* Hinkel */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Einleitung ==&lt;br /&gt;
&lt;br /&gt;
Die Vor- und Nachteile von verschiedenen Elektronik-Versand-Händlern werden relativ häufig im Forum diskutiert. Diese Diskussionen führen nicht selten zu weitestgehend gleichen Ergebnissen. In diesem Artikel sollen daher die Argumente, die für oder gegen einen bestimmten Elektronik-Versender sprechen, zusammengetragen werden. Sobald diese Liste einigermaßen vollständig ist, würde dies sicher einige Diskussions-Threads und/oder Flame-Wars überflüssig machen.&lt;br /&gt;
&lt;br /&gt;
Diese Liste erhebt keinerlei Anspruch auf Vollständigkeit, d.h. wenn ihr einen Versender kennt, der hier noch nicht aufgeführt ist, dann nennt wenigstens die URL und den Namen. Den Rest können auch andere besorgen, die den Versender ebenfalls kennen!&lt;br /&gt;
&lt;br /&gt;
Bitte ergänzt nur allgemeine Sachen (z.B. &amp;quot;liefert immer vollständig&amp;quot;, &amp;quot;günstig&amp;quot; oder &amp;quot;große Auswahl&amp;quot;), aber nicht Sachen wie &amp;quot;mein ATMega 128 hatte verbogene Beine&amp;quot;! Bitte auch die alphabetische Sortierung beibehalten!&lt;br /&gt;
&lt;br /&gt;
== Liste der Versender ==&lt;br /&gt;
&lt;br /&gt;
=== Actron ===&lt;br /&gt;
Homepage http://www.actron.de&lt;br /&gt;
&lt;br /&gt;
* alphanumerische LCDs und Graphikdisplays in großer Auswahl, auch mit Touchscreens&lt;br /&gt;
* für gewerbliche Kunden: etwas verhandeln schadet nie&lt;br /&gt;
* bei kleinen Stückzahlen nicht ganz billig&lt;br /&gt;
* liefern sehr schnell und stets zuverlässig&lt;br /&gt;
&lt;br /&gt;
=== Buerklin ===&lt;br /&gt;
Homepage: [http://www.buerklin.com/ Buerklin]&lt;br /&gt;
* große Auswahl&lt;br /&gt;
* Ladengeschäfte in Düsseldorf und München&lt;br /&gt;
* nur an gewerbliche Abnehmer (lt. AGB); private Abnehmer können dennoch im Ladengeschäft einkaufen!&lt;br /&gt;
&lt;br /&gt;
=== Conrad ===&lt;br /&gt;
Homepage: [http://www.conrad.de/ Conrad Elektronik] und [http://www.business.conrad.de/ Conrad &amp;quot;Business&amp;quot;]&lt;br /&gt;
* großes Angebot (für Bauteile den &amp;quot;Business&amp;quot;-Katalog beachten, der Hauptkatalog ist dahingehend etwas &amp;quot;dünn&amp;quot;)&lt;br /&gt;
* relativ teuer jedoch 10% Rabatt für Hochschulen/Lehreinrichtungen (evtl. auch Schüler/Studenten - fragen kost&#039; nix)&lt;br /&gt;
* 21 Ladengeschäfte in Deutschland, drei in Österreich&lt;br /&gt;
* die Ladengeschäfte haben nicht das gesamte Programm vor Ort, man kann jedoch in den Geschäften anrufen und die Verfügbarkeit anfragen, evtl. sogar Teile für ein paar Stunden &amp;quot;zurücklegen lassen&amp;quot; (von Geschäft zu Geschäft verschieden).&lt;br /&gt;
* positiv: Bei Business-Kunden wird der Rechnungsbetrag erst nach 14 Tagen abgebucht!&lt;br /&gt;
* haben einen (teuren) 24 Std. Lieferservice für Notfälle&lt;br /&gt;
&lt;br /&gt;
=== Darisus ===&lt;br /&gt;
Homepage: http://www.darisus.de&lt;br /&gt;
&lt;br /&gt;
* kompetente Beratung&lt;br /&gt;
* liefert sehr zuverlässig, in Notfällen auch Express&lt;br /&gt;
&lt;br /&gt;
=== Digi-Key ===&lt;br /&gt;
(tlw.) deutsche Homepage: [http://de.digikey.com/ Digi-Key]&lt;br /&gt;
* optisch nicht besonders ansprechende, aber durchaus sehr funktionelle Website&lt;br /&gt;
* beheimatet in den USA, ein Logistikburo gibt es aber in den Niederlanden&lt;br /&gt;
* dadurch bedingt 100&amp;amp;#8364; Mindestbestellwert (darunter 13&amp;amp;#8364; Bearbeitungsgebühr) und 18&amp;amp;#8364; Versandkosten&lt;br /&gt;
* Versand dafür sehr flott mit UPS Express (in rund zwei bis drei Tagen da)&lt;br /&gt;
* Angebot teilweise sehr umfangreich, manches aber auch gar nicht (z.B. keine Philips-Halbleiter)&lt;br /&gt;
* generell im Vergleich zu deutschen Anbietern etwas günstiger&lt;br /&gt;
* Preise sind auf der deutschen Website in Euro inklusive etwaigem Zoll angegeben, allerdings ohne Mehrwertsteuer, die korrekt abgerechnet wird (d.h. man zahlt bei Versand nach Österreich 20% Mwst., nach Deutschland m.W.n. 16%)&lt;br /&gt;
* Zusammenfassend kann man sagen, dass sich Digikey aus Europa vor allem/eher nur für größere Bestellungen oder Sammelbestellungen anbietet, ansonsten sind der Mindestbestellwert und die Versandkosten in der Relation einfach zu hoch.&lt;br /&gt;
&lt;br /&gt;
=== ELV ===&lt;br /&gt;
Homepage: [http://www.elv.de/ ELV]&lt;br /&gt;
* nicht sehr große Auswahl an Einzelteilen&lt;br /&gt;
* riesiges Angebot an Zubehör für Hobbyisten&lt;br /&gt;
* viele z.T. pfiffige Eigenentwicklungen, Bausätze (auch zum Download auf der Website verfügbar)&lt;br /&gt;
* sonst Sortiment ähnlich Conrad, nicht billig&lt;br /&gt;
* nicht billig, merkwürdigerweise sind manche Artikel aber die günstigsten auf dem Markt&lt;br /&gt;
* mühsamer Onlinekatalog&lt;br /&gt;
Immer mal wieder Fehllieferungen und Wartezeiten (zumindest in die Schweiz). Service erreichte in 3 Fällen nicht das inserierte Niveau.&lt;br /&gt;
&lt;br /&gt;
=== Farnell ===&lt;br /&gt;
* Homepage: [http://www.farnell.de/ Farnell InOne]&lt;br /&gt;
* große Auswahl&lt;br /&gt;
* relativ teuer jedoch 12% Rabatt für Schüler/Studenten/Lehreinrichtungen&lt;br /&gt;
* laut AGB: Das Angebot von Farnell InOne richtet sich ausschliesslich an gewerbliche Nutzer.&lt;br /&gt;
&lt;br /&gt;
=== Geist ===&lt;br /&gt;
Homepage: [http://www.geist-electronic.de/ Geist Electronic-Versand GmbH]&lt;br /&gt;
* Liefern Bauteile für Elektor-Projekte&lt;br /&gt;
&lt;br /&gt;
=== Hinkel ===&lt;br /&gt;
Homepage: http://www.hinkel-elektronik.de&lt;br /&gt;
&lt;br /&gt;
* Batterien&lt;br /&gt;
* Knopfzellen, spezielle KZH, die man sonst lang sucht, findet man hier&lt;br /&gt;
&lt;br /&gt;
=== Kessler ===&lt;br /&gt;
Homepage: [http://www.kessler-elektronik.de/ Kessler]&lt;br /&gt;
* im Preis-Leistungsverhältnis mit Reichelt zu vergleichen (sprich: günstig)&lt;br /&gt;
* Sortiment ähnlich Reichelt mit gewissen Abweichungen (z. B. andere FPGA und RAMs)&lt;br /&gt;
&lt;br /&gt;
=== Mütron ===&lt;br /&gt;
Homepage: [http://www.muetron.de Mütron]&lt;br /&gt;
&lt;br /&gt;
=== Oppermann ===&lt;br /&gt;
Homepage: http://www.oppermann-electronic.de&lt;br /&gt;
&lt;br /&gt;
* Restposten, auch HF Bauteile&lt;br /&gt;
* auch Privatkunden&lt;br /&gt;
* Lieferung nach üblicher Zeit&lt;br /&gt;
&lt;br /&gt;
=== Pollin ===&lt;br /&gt;
Homepage: [http://www.pollin.de/ Pollin Electronic]&lt;br /&gt;
* Günstige Restposten aller Art; Liefert nach gut einer Woche; Produkte teils schnell ausverkauft&lt;br /&gt;
&lt;br /&gt;
=== Reichelt ===&lt;br /&gt;
Homepage: [http://www.reichelt.de/ Reichelt]&lt;br /&gt;
* relativ große Auswahl, aber nicht viele &amp;quot;brandaktuelle&amp;quot; Bauteile&lt;br /&gt;
* wenn man höflich fragen tut, liefern sie meist auch Bauteile, die nicht im Katalog stehen zu &amp;quot;normalen&amp;quot; Preisen (vorausgesetzt der Hersteller ist im Sortiment), z.B. Xilinx XC2S50&lt;br /&gt;
* reagiert aber teilweise auch auf Anregungen, neue Produkte in das Angebot aufzunehmen; siehe dazu auch den Artikel [[Reichelt-Wishlist]]&lt;br /&gt;
* liefert schnell und vollständig; wenn etwas ausnahmsweise nicht verfügbar ist, dann liefern sie es auf eigene Kosten nach, wenn der Artikel in absehbarer Zeit wieder vorrätig ist (selbst wenn er nur 0,20&amp;amp;#8364; wert ist).&lt;br /&gt;
* Lieferzeiten normal, manchmal unverständlicherweise länger als üblich&lt;br /&gt;
* lässt einen dennoch manchmal warten, wenn ein Artikel nicht lieferbar ist! Daher bei der Bestellung immer darauf hinweisen daß man auch eine Teillieferung akzeptiert.&lt;br /&gt;
* niedrige Preise&lt;br /&gt;
* im Inland (Deutschland) 10&amp;amp;#8364;, ins Ausland 100&amp;amp;#8364; Mindestbestellwert&lt;br /&gt;
* auch in die Schweiz sehr guter Service&lt;br /&gt;
&lt;br /&gt;
=== Ribu ===&lt;br /&gt;
Homepage: [http://www.ribu.at/ Ribu]&lt;br /&gt;
* Guter Elektronikversand mit zahlreichen Entwicklungsboards und zahlreichen Elektroniklösungen!&lt;br /&gt;
&lt;br /&gt;
=== RS Components ===&lt;br /&gt;
Homepage: [http://www.rs-components.com/ RS Components] &lt;br /&gt;
&lt;br /&gt;
* gute Auswahl insbesondere an &amp;quot;mechanischen Bauteilen&amp;quot;&lt;br /&gt;
* gute Verfügbarkeit&lt;br /&gt;
* lt. AGB nur an gewerbliche Abnehmer&lt;br /&gt;
&lt;br /&gt;
=== Sander Elektronik ===&lt;br /&gt;
Homepage: http://www.sander-electronic.de&lt;br /&gt;
&lt;br /&gt;
* beliefert auch Privatkunden, Bankeinzug möglich&lt;br /&gt;
* ähnlich Segor ein berliner Versender. &lt;br /&gt;
* Hier findet man manche MSP430 , die es sonst nicht in kleinen Stückzahlen gibt&lt;br /&gt;
* Herr Sander ist sehr kompetent, und selbst Autor von Fachartikeln&lt;br /&gt;
&lt;br /&gt;
=== Schukat elektronic ===&lt;br /&gt;
Homepage: [http://www.schukat.de/ Schukat]&lt;br /&gt;
&lt;br /&gt;
* liefert nicht an privaten Endverbraucher&lt;br /&gt;
* einfache und passiver Bauteile oft nur in großen Mindeststückzahlen&lt;br /&gt;
* ICs teilweise recht preiswert (vor allem bei mehr als 1 Stück, z.B. auch AVR)&lt;br /&gt;
* LCDs sehr preiswert und auch als Einzelstücke&lt;br /&gt;
* aktuelle Preise und Verfügbarkeit im Internet (aber nur nach Anmeldung)&lt;br /&gt;
&lt;br /&gt;
=== Schuricht ===&lt;br /&gt;
Homepage: [http://www.schuricht.de/ Schuricht]&lt;br /&gt;
&lt;br /&gt;
* liefert nicht an Privatkunden&lt;br /&gt;
&lt;br /&gt;
=== Segor-electronics ===&lt;br /&gt;
Homepage: [http://www.segor.de/ Segor-electronics]&lt;br /&gt;
* Spezialist für Halbleiter, die ansonsten für nicht-gewerbliche Abnehmer nur schwer erhältlich sind (Preise dahingehend &amp;quot;angemessen&amp;quot;)&lt;br /&gt;
* auch Privatkunden gerne gesehen&lt;br /&gt;
* Ladengeschäft in Berlin&lt;br /&gt;
* kein Mindestbestellwert bei Versand innerhalb der EU&lt;br /&gt;
&lt;br /&gt;
=== SE Spezial-Electronic ===&lt;br /&gt;
Homepage: [http://www.spezial.de/ SE Spezial-Electronic]&lt;br /&gt;
&lt;br /&gt;
=== Trade-Shop ===&lt;br /&gt;
Homepage: [http://www.trade-shop.de/ http://www.trade-shop.de/], Shop [http://www.trade-shop.de/catalog/index.php?language=de http://www.trade-shop.de/catalog/index.php?language=de]&lt;br /&gt;
&lt;br /&gt;
* hat so gut wie keine elektronischen Bauteile, eher Satelliten-Bedarf...&lt;br /&gt;
&lt;br /&gt;
=== Westfalia ===&lt;br /&gt;
Homepage http://www.westfalia.de&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
TODO: tec-shop (wieder online), artools, elektronik-laden, elektronik-fundgrube, elektro-nix, elpro&lt;br /&gt;
&lt;br /&gt;
== Siehe auch ==&lt;br /&gt;
* [[Platinenhersteller]]&lt;/div&gt;</summary>
		<author><name>131.130.1.135</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=Elektronikversender&amp;diff=5917</id>
		<title>Elektronikversender</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=Elektronikversender&amp;diff=5917"/>
		<updated>2005-03-28T23:04:46Z</updated>

		<summary type="html">&lt;p&gt;131.130.1.135: /* Darisus */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Einleitung ==&lt;br /&gt;
&lt;br /&gt;
Die Vor- und Nachteile von verschiedenen Elektronik-Versand-Händlern werden relativ häufig im Forum diskutiert. Diese Diskussionen führen nicht selten zu weitestgehend gleichen Ergebnissen. In diesem Artikel sollen daher die Argumente, die für oder gegen einen bestimmten Elektronik-Versender sprechen, zusammengetragen werden. Sobald diese Liste einigermaßen vollständig ist, würde dies sicher einige Diskussions-Threads und/oder Flame-Wars überflüssig machen.&lt;br /&gt;
&lt;br /&gt;
Diese Liste erhebt keinerlei Anspruch auf Vollständigkeit, d.h. wenn ihr einen Versender kennt, der hier noch nicht aufgeführt ist, dann nennt wenigstens die URL und den Namen. Den Rest können auch andere besorgen, die den Versender ebenfalls kennen!&lt;br /&gt;
&lt;br /&gt;
Bitte ergänzt nur allgemeine Sachen (z.B. &amp;quot;liefert immer vollständig&amp;quot;, &amp;quot;günstig&amp;quot; oder &amp;quot;große Auswahl&amp;quot;), aber nicht Sachen wie &amp;quot;mein ATMega 128 hatte verbogene Beine&amp;quot;! Bitte auch die alphabetische Sortierung beibehalten!&lt;br /&gt;
&lt;br /&gt;
== Liste der Versender ==&lt;br /&gt;
&lt;br /&gt;
=== Actron ===&lt;br /&gt;
Homepage http://www.actron.de&lt;br /&gt;
&lt;br /&gt;
* alphanumerische LCDs und Graphikdisplays in großer Auswahl, auch mit Touchscreens&lt;br /&gt;
* für gewerbliche Kunden: etwas verhandeln schadet nie&lt;br /&gt;
* bei kleinen Stückzahlen nicht ganz billig&lt;br /&gt;
* liefern sehr schnell und stets zuverlässig&lt;br /&gt;
&lt;br /&gt;
=== Buerklin ===&lt;br /&gt;
Homepage: [http://www.buerklin.com/ Buerklin]&lt;br /&gt;
* große Auswahl&lt;br /&gt;
* Ladengeschäfte in Düsseldorf und München&lt;br /&gt;
* nur an gewerbliche Abnehmer (lt. AGB); private Abnehmer können dennoch im Ladengeschäft einkaufen!&lt;br /&gt;
&lt;br /&gt;
=== Conrad ===&lt;br /&gt;
Homepage: [http://www.conrad.de/ Conrad Elektronik] und [http://www.business.conrad.de/ Conrad &amp;quot;Business&amp;quot;]&lt;br /&gt;
* großes Angebot (für Bauteile den &amp;quot;Business&amp;quot;-Katalog beachten, der Hauptkatalog ist dahingehend etwas &amp;quot;dünn&amp;quot;)&lt;br /&gt;
* relativ teuer jedoch 10% Rabatt für Hochschulen/Lehreinrichtungen (evtl. auch Schüler/Studenten - fragen kost&#039; nix)&lt;br /&gt;
* 21 Ladengeschäfte in Deutschland, drei in Österreich&lt;br /&gt;
* die Ladengeschäfte haben nicht das gesamte Programm vor Ort, man kann jedoch in den Geschäften anrufen und die Verfügbarkeit anfragen, evtl. sogar Teile für ein paar Stunden &amp;quot;zurücklegen lassen&amp;quot; (von Geschäft zu Geschäft verschieden).&lt;br /&gt;
* positiv: Bei Business-Kunden wird der Rechnungsbetrag erst nach 14 Tagen abgebucht!&lt;br /&gt;
* haben einen (teuren) 24 Std. Lieferservice für Notfälle&lt;br /&gt;
&lt;br /&gt;
=== Darisus ===&lt;br /&gt;
Homepage: http://www.darisus.de&lt;br /&gt;
&lt;br /&gt;
* kompetente Beratung&lt;br /&gt;
* liefert sehr zuverlässig, in Notfällen auch Express&lt;br /&gt;
&lt;br /&gt;
=== Digi-Key ===&lt;br /&gt;
(tlw.) deutsche Homepage: [http://de.digikey.com/ Digi-Key]&lt;br /&gt;
* optisch nicht besonders ansprechende, aber durchaus sehr funktionelle Website&lt;br /&gt;
* beheimatet in den USA, ein Logistikburo gibt es aber in den Niederlanden&lt;br /&gt;
* dadurch bedingt 100&amp;amp;#8364; Mindestbestellwert (darunter 13&amp;amp;#8364; Bearbeitungsgebühr) und 18&amp;amp;#8364; Versandkosten&lt;br /&gt;
* Versand dafür sehr flott mit UPS Express (in rund zwei bis drei Tagen da)&lt;br /&gt;
* Angebot teilweise sehr umfangreich, manches aber auch gar nicht (z.B. keine Philips-Halbleiter)&lt;br /&gt;
* generell im Vergleich zu deutschen Anbietern etwas günstiger&lt;br /&gt;
* Preise sind auf der deutschen Website in Euro inklusive etwaigem Zoll angegeben, allerdings ohne Mehrwertsteuer, die korrekt abgerechnet wird (d.h. man zahlt bei Versand nach Österreich 20% Mwst., nach Deutschland m.W.n. 16%)&lt;br /&gt;
* Zusammenfassend kann man sagen, dass sich Digikey aus Europa vor allem/eher nur für größere Bestellungen oder Sammelbestellungen anbietet, ansonsten sind der Mindestbestellwert und die Versandkosten in der Relation einfach zu hoch.&lt;br /&gt;
&lt;br /&gt;
=== ELV ===&lt;br /&gt;
Homepage: [http://www.elv.de/ ELV]&lt;br /&gt;
* nicht sehr große Auswahl an Einzelteilen&lt;br /&gt;
* riesiges Angebot an Zubehör für Hobbyisten&lt;br /&gt;
* viele z.T. pfiffige Eigenentwicklungen, Bausätze (auch zum Download auf der Website verfügbar)&lt;br /&gt;
* sonst Sortiment ähnlich Conrad, nicht billig&lt;br /&gt;
* nicht billig, merkwürdigerweise sind manche Artikel aber die günstigsten auf dem Markt&lt;br /&gt;
* mühsamer Onlinekatalog&lt;br /&gt;
Immer mal wieder Fehllieferungen und Wartezeiten (zumindest in die Schweiz). Service erreichte in 3 Fällen nicht das inserierte Niveau.&lt;br /&gt;
&lt;br /&gt;
=== Farnell ===&lt;br /&gt;
* Homepage: [http://www.farnell.de/ Farnell InOne]&lt;br /&gt;
* große Auswahl&lt;br /&gt;
* relativ teuer jedoch 12% Rabatt für Schüler/Studenten/Lehreinrichtungen&lt;br /&gt;
* laut AGB: Das Angebot von Farnell InOne richtet sich ausschliesslich an gewerbliche Nutzer.&lt;br /&gt;
&lt;br /&gt;
=== Geist ===&lt;br /&gt;
Homepage: [http://www.geist-electronic.de/ Geist Electronic-Versand GmbH]&lt;br /&gt;
* Liefern Bauteile für Elektor-Projekte&lt;br /&gt;
&lt;br /&gt;
=== Hinkel ===&lt;br /&gt;
Homepage: http://www.hinkel-elektronik.de&lt;br /&gt;
&lt;br /&gt;
* Batterien&lt;br /&gt;
* Knopfzellen, spezielle KZH die man sonst sucht, findet man hier&lt;br /&gt;
&lt;br /&gt;
=== Kessler ===&lt;br /&gt;
Homepage: [http://www.kessler-elektronik.de/ Kessler]&lt;br /&gt;
* im Preis-Leistungsverhältnis mit Reichelt zu vergleichen (sprich: günstig)&lt;br /&gt;
* Sortiment ähnlich Reichelt mit gewissen Abweichungen (z. B. andere FPGA und RAMs)&lt;br /&gt;
&lt;br /&gt;
=== Mütron ===&lt;br /&gt;
Homepage: [http://www.muetron.de Mütron]&lt;br /&gt;
&lt;br /&gt;
=== Oppermann ===&lt;br /&gt;
Homepage: http://www.oppermann-electronic.de&lt;br /&gt;
&lt;br /&gt;
* Restposten, auch HF Bauteile&lt;br /&gt;
* auch Privatkunden&lt;br /&gt;
* Lieferung nach üblicher Zeit&lt;br /&gt;
&lt;br /&gt;
=== Pollin ===&lt;br /&gt;
Homepage: [http://www.pollin.de/ Pollin Electronic]&lt;br /&gt;
* Günstige Restposten aller Art; Liefert nach gut einer Woche; Produkte teils schnell ausverkauft&lt;br /&gt;
&lt;br /&gt;
=== Reichelt ===&lt;br /&gt;
Homepage: [http://www.reichelt.de/ Reichelt]&lt;br /&gt;
* relativ große Auswahl, aber nicht viele &amp;quot;brandaktuelle&amp;quot; Bauteile&lt;br /&gt;
* wenn man höflich fragen tut, liefern sie meist auch Bauteile, die nicht im Katalog stehen zu &amp;quot;normalen&amp;quot; Preisen (vorausgesetzt der Hersteller ist im Sortiment), z.B. Xilinx XC2S50&lt;br /&gt;
* reagiert aber teilweise auch auf Anregungen, neue Produkte in das Angebot aufzunehmen; siehe dazu auch den Artikel [[Reichelt-Wishlist]]&lt;br /&gt;
* liefert schnell und vollständig; wenn etwas ausnahmsweise nicht verfügbar ist, dann liefern sie es auf eigene Kosten nach, wenn der Artikel in absehbarer Zeit wieder vorrätig ist (selbst wenn er nur 0,20&amp;amp;#8364; wert ist).&lt;br /&gt;
* Lieferzeiten normal, manchmal unverständlicherweise länger als üblich&lt;br /&gt;
* lässt einen dennoch manchmal warten, wenn ein Artikel nicht lieferbar ist! Daher bei der Bestellung immer darauf hinweisen daß man auch eine Teillieferung akzeptiert.&lt;br /&gt;
* niedrige Preise&lt;br /&gt;
* im Inland (Deutschland) 10&amp;amp;#8364;, ins Ausland 100&amp;amp;#8364; Mindestbestellwert&lt;br /&gt;
* auch in die Schweiz sehr guter Service&lt;br /&gt;
&lt;br /&gt;
=== Ribu ===&lt;br /&gt;
Homepage: [http://www.ribu.at/ Ribu]&lt;br /&gt;
* Guter Elektronikversand mit zahlreichen Entwicklungsboards und zahlreichen Elektroniklösungen!&lt;br /&gt;
&lt;br /&gt;
=== RS Components ===&lt;br /&gt;
Homepage: [http://www.rs-components.com/ RS Components] &lt;br /&gt;
&lt;br /&gt;
* gute Auswahl insbesondere an &amp;quot;mechanischen Bauteilen&amp;quot;&lt;br /&gt;
* gute Verfügbarkeit&lt;br /&gt;
* lt. AGB nur an gewerbliche Abnehmer&lt;br /&gt;
&lt;br /&gt;
=== Sander Elektronik ===&lt;br /&gt;
Homepage: http://www.sander-electronic.de&lt;br /&gt;
&lt;br /&gt;
* beliefert auch Privatkunden, Bankeinzug möglich&lt;br /&gt;
* ähnlich Segor ein berliner Versender. &lt;br /&gt;
* Hier findet man manche MSP430 , die es sonst nicht in kleinen Stückzahlen gibt&lt;br /&gt;
* Herr Sander ist sehr kompetent, und selbst Autor von Fachartikeln&lt;br /&gt;
&lt;br /&gt;
=== Schukat elektronic ===&lt;br /&gt;
Homepage: [http://www.schukat.de/ Schukat]&lt;br /&gt;
&lt;br /&gt;
* liefert nicht an privaten Endverbraucher&lt;br /&gt;
* einfache und passiver Bauteile oft nur in großen Mindeststückzahlen&lt;br /&gt;
* ICs teilweise recht preiswert (vor allem bei mehr als 1 Stück, z.B. auch AVR)&lt;br /&gt;
* LCDs sehr preiswert und auch als Einzelstücke&lt;br /&gt;
* aktuelle Preise und Verfügbarkeit im Internet (aber nur nach Anmeldung)&lt;br /&gt;
&lt;br /&gt;
=== Schuricht ===&lt;br /&gt;
Homepage: [http://www.schuricht.de/ Schuricht]&lt;br /&gt;
&lt;br /&gt;
* liefert nicht an Privatkunden&lt;br /&gt;
&lt;br /&gt;
=== Segor-electronics ===&lt;br /&gt;
Homepage: [http://www.segor.de/ Segor-electronics]&lt;br /&gt;
* Spezialist für Halbleiter, die ansonsten für nicht-gewerbliche Abnehmer nur schwer erhältlich sind (Preise dahingehend &amp;quot;angemessen&amp;quot;)&lt;br /&gt;
* auch Privatkunden gerne gesehen&lt;br /&gt;
* Ladengeschäft in Berlin&lt;br /&gt;
* kein Mindestbestellwert bei Versand innerhalb der EU&lt;br /&gt;
&lt;br /&gt;
=== SE Spezial-Electronic ===&lt;br /&gt;
Homepage: [http://www.spezial.de/ SE Spezial-Electronic]&lt;br /&gt;
&lt;br /&gt;
=== Trade-Shop ===&lt;br /&gt;
Homepage: [http://www.trade-shop.de/ http://www.trade-shop.de/], Shop [http://www.trade-shop.de/catalog/index.php?language=de http://www.trade-shop.de/catalog/index.php?language=de]&lt;br /&gt;
&lt;br /&gt;
* hat so gut wie keine elektronischen Bauteile, eher Satelliten-Bedarf...&lt;br /&gt;
&lt;br /&gt;
=== Westfalia ===&lt;br /&gt;
Homepage http://www.westfalia.de&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
TODO: tec-shop (wieder online), artools, elektronik-laden, elektronik-fundgrube, elektro-nix, elpro&lt;br /&gt;
&lt;br /&gt;
== Siehe auch ==&lt;br /&gt;
* [[Platinenhersteller]]&lt;/div&gt;</summary>
		<author><name>131.130.1.135</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=Elektronikversender&amp;diff=5916</id>
		<title>Elektronikversender</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=Elektronikversender&amp;diff=5916"/>
		<updated>2005-03-28T23:04:07Z</updated>

		<summary type="html">&lt;p&gt;131.130.1.135: /* Conrad */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Einleitung ==&lt;br /&gt;
&lt;br /&gt;
Die Vor- und Nachteile von verschiedenen Elektronik-Versand-Händlern werden relativ häufig im Forum diskutiert. Diese Diskussionen führen nicht selten zu weitestgehend gleichen Ergebnissen. In diesem Artikel sollen daher die Argumente, die für oder gegen einen bestimmten Elektronik-Versender sprechen, zusammengetragen werden. Sobald diese Liste einigermaßen vollständig ist, würde dies sicher einige Diskussions-Threads und/oder Flame-Wars überflüssig machen.&lt;br /&gt;
&lt;br /&gt;
Diese Liste erhebt keinerlei Anspruch auf Vollständigkeit, d.h. wenn ihr einen Versender kennt, der hier noch nicht aufgeführt ist, dann nennt wenigstens die URL und den Namen. Den Rest können auch andere besorgen, die den Versender ebenfalls kennen!&lt;br /&gt;
&lt;br /&gt;
Bitte ergänzt nur allgemeine Sachen (z.B. &amp;quot;liefert immer vollständig&amp;quot;, &amp;quot;günstig&amp;quot; oder &amp;quot;große Auswahl&amp;quot;), aber nicht Sachen wie &amp;quot;mein ATMega 128 hatte verbogene Beine&amp;quot;! Bitte auch die alphabetische Sortierung beibehalten!&lt;br /&gt;
&lt;br /&gt;
== Liste der Versender ==&lt;br /&gt;
&lt;br /&gt;
=== Actron ===&lt;br /&gt;
Homepage http://www.actron.de&lt;br /&gt;
&lt;br /&gt;
* alphanumerische LCDs und Graphikdisplays in großer Auswahl, auch mit Touchscreens&lt;br /&gt;
* für gewerbliche Kunden: etwas verhandeln schadet nie&lt;br /&gt;
* bei kleinen Stückzahlen nicht ganz billig&lt;br /&gt;
* liefern sehr schnell und stets zuverlässig&lt;br /&gt;
&lt;br /&gt;
=== Buerklin ===&lt;br /&gt;
Homepage: [http://www.buerklin.com/ Buerklin]&lt;br /&gt;
* große Auswahl&lt;br /&gt;
* Ladengeschäfte in Düsseldorf und München&lt;br /&gt;
* nur an gewerbliche Abnehmer (lt. AGB); private Abnehmer können dennoch im Ladengeschäft einkaufen!&lt;br /&gt;
&lt;br /&gt;
=== Conrad ===&lt;br /&gt;
Homepage: [http://www.conrad.de/ Conrad Elektronik] und [http://www.business.conrad.de/ Conrad &amp;quot;Business&amp;quot;]&lt;br /&gt;
* großes Angebot (für Bauteile den &amp;quot;Business&amp;quot;-Katalog beachten, der Hauptkatalog ist dahingehend etwas &amp;quot;dünn&amp;quot;)&lt;br /&gt;
* relativ teuer jedoch 10% Rabatt für Hochschulen/Lehreinrichtungen (evtl. auch Schüler/Studenten - fragen kost&#039; nix)&lt;br /&gt;
* 21 Ladengeschäfte in Deutschland, drei in Österreich&lt;br /&gt;
* die Ladengeschäfte haben nicht das gesamte Programm vor Ort, man kann jedoch in den Geschäften anrufen und die Verfügbarkeit anfragen, evtl. sogar Teile für ein paar Stunden &amp;quot;zurücklegen lassen&amp;quot; (von Geschäft zu Geschäft verschieden).&lt;br /&gt;
* positiv: Bei Business-Kunden wird der Rechnungsbetrag erst nach 14 Tagen abgebucht!&lt;br /&gt;
* haben einen (teuren) 24 Std. Lieferservice für Notfälle&lt;br /&gt;
&lt;br /&gt;
=== Darisus ===&lt;br /&gt;
Homepage: http://www.darisus.de&lt;br /&gt;
&lt;br /&gt;
* elektronische Bauteile&lt;br /&gt;
* liefert sehr zuverlässig, sind kompetent&lt;br /&gt;
* liefern auch express in Notfällen&lt;br /&gt;
&lt;br /&gt;
=== Digi-Key ===&lt;br /&gt;
(tlw.) deutsche Homepage: [http://de.digikey.com/ Digi-Key]&lt;br /&gt;
* optisch nicht besonders ansprechende, aber durchaus sehr funktionelle Website&lt;br /&gt;
* beheimatet in den USA, ein Logistikburo gibt es aber in den Niederlanden&lt;br /&gt;
* dadurch bedingt 100&amp;amp;#8364; Mindestbestellwert (darunter 13&amp;amp;#8364; Bearbeitungsgebühr) und 18&amp;amp;#8364; Versandkosten&lt;br /&gt;
* Versand dafür sehr flott mit UPS Express (in rund zwei bis drei Tagen da)&lt;br /&gt;
* Angebot teilweise sehr umfangreich, manches aber auch gar nicht (z.B. keine Philips-Halbleiter)&lt;br /&gt;
* generell im Vergleich zu deutschen Anbietern etwas günstiger&lt;br /&gt;
* Preise sind auf der deutschen Website in Euro inklusive etwaigem Zoll angegeben, allerdings ohne Mehrwertsteuer, die korrekt abgerechnet wird (d.h. man zahlt bei Versand nach Österreich 20% Mwst., nach Deutschland m.W.n. 16%)&lt;br /&gt;
* Zusammenfassend kann man sagen, dass sich Digikey aus Europa vor allem/eher nur für größere Bestellungen oder Sammelbestellungen anbietet, ansonsten sind der Mindestbestellwert und die Versandkosten in der Relation einfach zu hoch.&lt;br /&gt;
&lt;br /&gt;
=== ELV ===&lt;br /&gt;
Homepage: [http://www.elv.de/ ELV]&lt;br /&gt;
* nicht sehr große Auswahl an Einzelteilen&lt;br /&gt;
* riesiges Angebot an Zubehör für Hobbyisten&lt;br /&gt;
* viele z.T. pfiffige Eigenentwicklungen, Bausätze (auch zum Download auf der Website verfügbar)&lt;br /&gt;
* sonst Sortiment ähnlich Conrad, nicht billig&lt;br /&gt;
* nicht billig, merkwürdigerweise sind manche Artikel aber die günstigsten auf dem Markt&lt;br /&gt;
* mühsamer Onlinekatalog&lt;br /&gt;
Immer mal wieder Fehllieferungen und Wartezeiten (zumindest in die Schweiz). Service erreichte in 3 Fällen nicht das inserierte Niveau.&lt;br /&gt;
&lt;br /&gt;
=== Farnell ===&lt;br /&gt;
* Homepage: [http://www.farnell.de/ Farnell InOne]&lt;br /&gt;
* große Auswahl&lt;br /&gt;
* relativ teuer jedoch 12% Rabatt für Schüler/Studenten/Lehreinrichtungen&lt;br /&gt;
* laut AGB: Das Angebot von Farnell InOne richtet sich ausschliesslich an gewerbliche Nutzer.&lt;br /&gt;
&lt;br /&gt;
=== Geist ===&lt;br /&gt;
Homepage: [http://www.geist-electronic.de/ Geist Electronic-Versand GmbH]&lt;br /&gt;
* Liefern Bauteile für Elektor-Projekte&lt;br /&gt;
&lt;br /&gt;
=== Hinkel ===&lt;br /&gt;
Homepage: http://www.hinkel-elektronik.de&lt;br /&gt;
&lt;br /&gt;
* Batterien&lt;br /&gt;
* Knopfzellen, spezielle KZH die man sonst sucht, findet man hier&lt;br /&gt;
&lt;br /&gt;
=== Kessler ===&lt;br /&gt;
Homepage: [http://www.kessler-elektronik.de/ Kessler]&lt;br /&gt;
* im Preis-Leistungsverhältnis mit Reichelt zu vergleichen (sprich: günstig)&lt;br /&gt;
* Sortiment ähnlich Reichelt mit gewissen Abweichungen (z. B. andere FPGA und RAMs)&lt;br /&gt;
&lt;br /&gt;
=== Mütron ===&lt;br /&gt;
Homepage: [http://www.muetron.de Mütron]&lt;br /&gt;
&lt;br /&gt;
=== Oppermann ===&lt;br /&gt;
Homepage: http://www.oppermann-electronic.de&lt;br /&gt;
&lt;br /&gt;
* Restposten, auch HF Bauteile&lt;br /&gt;
* auch Privatkunden&lt;br /&gt;
* Lieferung nach üblicher Zeit&lt;br /&gt;
&lt;br /&gt;
=== Pollin ===&lt;br /&gt;
Homepage: [http://www.pollin.de/ Pollin Electronic]&lt;br /&gt;
* Günstige Restposten aller Art; Liefert nach gut einer Woche; Produkte teils schnell ausverkauft&lt;br /&gt;
&lt;br /&gt;
=== Reichelt ===&lt;br /&gt;
Homepage: [http://www.reichelt.de/ Reichelt]&lt;br /&gt;
* relativ große Auswahl, aber nicht viele &amp;quot;brandaktuelle&amp;quot; Bauteile&lt;br /&gt;
* wenn man höflich fragen tut, liefern sie meist auch Bauteile, die nicht im Katalog stehen zu &amp;quot;normalen&amp;quot; Preisen (vorausgesetzt der Hersteller ist im Sortiment), z.B. Xilinx XC2S50&lt;br /&gt;
* reagiert aber teilweise auch auf Anregungen, neue Produkte in das Angebot aufzunehmen; siehe dazu auch den Artikel [[Reichelt-Wishlist]]&lt;br /&gt;
* liefert schnell und vollständig; wenn etwas ausnahmsweise nicht verfügbar ist, dann liefern sie es auf eigene Kosten nach, wenn der Artikel in absehbarer Zeit wieder vorrätig ist (selbst wenn er nur 0,20&amp;amp;#8364; wert ist).&lt;br /&gt;
* Lieferzeiten normal, manchmal unverständlicherweise länger als üblich&lt;br /&gt;
* lässt einen dennoch manchmal warten, wenn ein Artikel nicht lieferbar ist! Daher bei der Bestellung immer darauf hinweisen daß man auch eine Teillieferung akzeptiert.&lt;br /&gt;
* niedrige Preise&lt;br /&gt;
* im Inland (Deutschland) 10&amp;amp;#8364;, ins Ausland 100&amp;amp;#8364; Mindestbestellwert&lt;br /&gt;
* auch in die Schweiz sehr guter Service&lt;br /&gt;
&lt;br /&gt;
=== Ribu ===&lt;br /&gt;
Homepage: [http://www.ribu.at/ Ribu]&lt;br /&gt;
* Guter Elektronikversand mit zahlreichen Entwicklungsboards und zahlreichen Elektroniklösungen!&lt;br /&gt;
&lt;br /&gt;
=== RS Components ===&lt;br /&gt;
Homepage: [http://www.rs-components.com/ RS Components] &lt;br /&gt;
&lt;br /&gt;
* gute Auswahl insbesondere an &amp;quot;mechanischen Bauteilen&amp;quot;&lt;br /&gt;
* gute Verfügbarkeit&lt;br /&gt;
* lt. AGB nur an gewerbliche Abnehmer&lt;br /&gt;
&lt;br /&gt;
=== Sander Elektronik ===&lt;br /&gt;
Homepage: http://www.sander-electronic.de&lt;br /&gt;
&lt;br /&gt;
* beliefert auch Privatkunden, Bankeinzug möglich&lt;br /&gt;
* ähnlich Segor ein berliner Versender. &lt;br /&gt;
* Hier findet man manche MSP430 , die es sonst nicht in kleinen Stückzahlen gibt&lt;br /&gt;
* Herr Sander ist sehr kompetent, und selbst Autor von Fachartikeln&lt;br /&gt;
&lt;br /&gt;
=== Schukat elektronic ===&lt;br /&gt;
Homepage: [http://www.schukat.de/ Schukat]&lt;br /&gt;
&lt;br /&gt;
* liefert nicht an privaten Endverbraucher&lt;br /&gt;
* einfache und passiver Bauteile oft nur in großen Mindeststückzahlen&lt;br /&gt;
* ICs teilweise recht preiswert (vor allem bei mehr als 1 Stück, z.B. auch AVR)&lt;br /&gt;
* LCDs sehr preiswert und auch als Einzelstücke&lt;br /&gt;
* aktuelle Preise und Verfügbarkeit im Internet (aber nur nach Anmeldung)&lt;br /&gt;
&lt;br /&gt;
=== Schuricht ===&lt;br /&gt;
Homepage: [http://www.schuricht.de/ Schuricht]&lt;br /&gt;
&lt;br /&gt;
* liefert nicht an Privatkunden&lt;br /&gt;
&lt;br /&gt;
=== Segor-electronics ===&lt;br /&gt;
Homepage: [http://www.segor.de/ Segor-electronics]&lt;br /&gt;
* Spezialist für Halbleiter, die ansonsten für nicht-gewerbliche Abnehmer nur schwer erhältlich sind (Preise dahingehend &amp;quot;angemessen&amp;quot;)&lt;br /&gt;
* auch Privatkunden gerne gesehen&lt;br /&gt;
* Ladengeschäft in Berlin&lt;br /&gt;
* kein Mindestbestellwert bei Versand innerhalb der EU&lt;br /&gt;
&lt;br /&gt;
=== SE Spezial-Electronic ===&lt;br /&gt;
Homepage: [http://www.spezial.de/ SE Spezial-Electronic]&lt;br /&gt;
&lt;br /&gt;
=== Trade-Shop ===&lt;br /&gt;
Homepage: [http://www.trade-shop.de/ http://www.trade-shop.de/], Shop [http://www.trade-shop.de/catalog/index.php?language=de http://www.trade-shop.de/catalog/index.php?language=de]&lt;br /&gt;
&lt;br /&gt;
* hat so gut wie keine elektronischen Bauteile, eher Satelliten-Bedarf...&lt;br /&gt;
&lt;br /&gt;
=== Westfalia ===&lt;br /&gt;
Homepage http://www.westfalia.de&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
TODO: tec-shop (wieder online), artools, elektronik-laden, elektronik-fundgrube, elektro-nix, elpro&lt;br /&gt;
&lt;br /&gt;
== Siehe auch ==&lt;br /&gt;
* [[Platinenhersteller]]&lt;/div&gt;</summary>
		<author><name>131.130.1.135</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=Elektronikversender&amp;diff=5915</id>
		<title>Elektronikversender</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=Elektronikversender&amp;diff=5915"/>
		<updated>2005-03-28T23:03:29Z</updated>

		<summary type="html">&lt;p&gt;131.130.1.135: /* ACTRON */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Einleitung ==&lt;br /&gt;
&lt;br /&gt;
Die Vor- und Nachteile von verschiedenen Elektronik-Versand-Händlern werden relativ häufig im Forum diskutiert. Diese Diskussionen führen nicht selten zu weitestgehend gleichen Ergebnissen. In diesem Artikel sollen daher die Argumente, die für oder gegen einen bestimmten Elektronik-Versender sprechen, zusammengetragen werden. Sobald diese Liste einigermaßen vollständig ist, würde dies sicher einige Diskussions-Threads und/oder Flame-Wars überflüssig machen.&lt;br /&gt;
&lt;br /&gt;
Diese Liste erhebt keinerlei Anspruch auf Vollständigkeit, d.h. wenn ihr einen Versender kennt, der hier noch nicht aufgeführt ist, dann nennt wenigstens die URL und den Namen. Den Rest können auch andere besorgen, die den Versender ebenfalls kennen!&lt;br /&gt;
&lt;br /&gt;
Bitte ergänzt nur allgemeine Sachen (z.B. &amp;quot;liefert immer vollständig&amp;quot;, &amp;quot;günstig&amp;quot; oder &amp;quot;große Auswahl&amp;quot;), aber nicht Sachen wie &amp;quot;mein ATMega 128 hatte verbogene Beine&amp;quot;! Bitte auch die alphabetische Sortierung beibehalten!&lt;br /&gt;
&lt;br /&gt;
== Liste der Versender ==&lt;br /&gt;
&lt;br /&gt;
=== Actron ===&lt;br /&gt;
Homepage http://www.actron.de&lt;br /&gt;
&lt;br /&gt;
* alphanumerische LCDs und Graphikdisplays in großer Auswahl, auch mit Touchscreens&lt;br /&gt;
* für gewerbliche Kunden: etwas verhandeln schadet nie&lt;br /&gt;
* bei kleinen Stückzahlen nicht ganz billig&lt;br /&gt;
* liefern sehr schnell und stets zuverlässig&lt;br /&gt;
&lt;br /&gt;
=== Buerklin ===&lt;br /&gt;
Homepage: [http://www.buerklin.com/ Buerklin]&lt;br /&gt;
* große Auswahl&lt;br /&gt;
* Ladengeschäfte in Düsseldorf und München&lt;br /&gt;
* nur an gewerbliche Abnehmer (lt. AGB); private Abnehmer können dennoch im Ladengeschäft einkaufen!&lt;br /&gt;
&lt;br /&gt;
=== Conrad ===&lt;br /&gt;
Homepage: [http://www.conrad.de/ Conrad Elektronik] und [http://www.business.conrad.de/ Conrad &amp;quot;Business&amp;quot;]&lt;br /&gt;
* großes Angebot (für Bauteile den &amp;quot;Business&amp;quot;-Katalog beachten, der Hauptkatalog ist dahingehend etwas &amp;quot;dünn&amp;quot;)&lt;br /&gt;
* relativ teuer jedoch 10% Rabatt für Hochschulen/Lehreinrichtungen (evtl. auch Schüler/Studenten - fragen kost&#039; nix)&lt;br /&gt;
* 21 Ladengeschäfte in Deutschland, drei in Österreich&lt;br /&gt;
* die Ladengeschäfte haben nicht das gesamte Programm vor Ort, man kann jedoch in den Geschäften anrufen und die Verfügbarkeit anfragen, evtl. sogar Teile für ein paar Stunden &amp;quot;zurücklegen lassen&amp;quot; (von Geschäft zu Geschäft verschieden).&lt;br /&gt;
* positiv: als business-Kunde wird der Rechnungsbetrag erst nach 14 Tagen abgebucht !&lt;br /&gt;
* haben einen (teuren) 24 Std Lieferservice für Notfälle&lt;br /&gt;
&lt;br /&gt;
=== Darisus ===&lt;br /&gt;
Homepage: http://www.darisus.de&lt;br /&gt;
&lt;br /&gt;
* elektronische Bauteile&lt;br /&gt;
* liefert sehr zuverlässig, sind kompetent&lt;br /&gt;
* liefern auch express in Notfällen&lt;br /&gt;
&lt;br /&gt;
=== Digi-Key ===&lt;br /&gt;
(tlw.) deutsche Homepage: [http://de.digikey.com/ Digi-Key]&lt;br /&gt;
* optisch nicht besonders ansprechende, aber durchaus sehr funktionelle Website&lt;br /&gt;
* beheimatet in den USA, ein Logistikburo gibt es aber in den Niederlanden&lt;br /&gt;
* dadurch bedingt 100&amp;amp;#8364; Mindestbestellwert (darunter 13&amp;amp;#8364; Bearbeitungsgebühr) und 18&amp;amp;#8364; Versandkosten&lt;br /&gt;
* Versand dafür sehr flott mit UPS Express (in rund zwei bis drei Tagen da)&lt;br /&gt;
* Angebot teilweise sehr umfangreich, manches aber auch gar nicht (z.B. keine Philips-Halbleiter)&lt;br /&gt;
* generell im Vergleich zu deutschen Anbietern etwas günstiger&lt;br /&gt;
* Preise sind auf der deutschen Website in Euro inklusive etwaigem Zoll angegeben, allerdings ohne Mehrwertsteuer, die korrekt abgerechnet wird (d.h. man zahlt bei Versand nach Österreich 20% Mwst., nach Deutschland m.W.n. 16%)&lt;br /&gt;
* Zusammenfassend kann man sagen, dass sich Digikey aus Europa vor allem/eher nur für größere Bestellungen oder Sammelbestellungen anbietet, ansonsten sind der Mindestbestellwert und die Versandkosten in der Relation einfach zu hoch.&lt;br /&gt;
&lt;br /&gt;
=== ELV ===&lt;br /&gt;
Homepage: [http://www.elv.de/ ELV]&lt;br /&gt;
* nicht sehr große Auswahl an Einzelteilen&lt;br /&gt;
* riesiges Angebot an Zubehör für Hobbyisten&lt;br /&gt;
* viele z.T. pfiffige Eigenentwicklungen, Bausätze (auch zum Download auf der Website verfügbar)&lt;br /&gt;
* sonst Sortiment ähnlich Conrad, nicht billig&lt;br /&gt;
* nicht billig, merkwürdigerweise sind manche Artikel aber die günstigsten auf dem Markt&lt;br /&gt;
* mühsamer Onlinekatalog&lt;br /&gt;
Immer mal wieder Fehllieferungen und Wartezeiten (zumindest in die Schweiz). Service erreichte in 3 Fällen nicht das inserierte Niveau.&lt;br /&gt;
&lt;br /&gt;
=== Farnell ===&lt;br /&gt;
* Homepage: [http://www.farnell.de/ Farnell InOne]&lt;br /&gt;
* große Auswahl&lt;br /&gt;
* relativ teuer jedoch 12% Rabatt für Schüler/Studenten/Lehreinrichtungen&lt;br /&gt;
* laut AGB: Das Angebot von Farnell InOne richtet sich ausschliesslich an gewerbliche Nutzer.&lt;br /&gt;
&lt;br /&gt;
=== Geist ===&lt;br /&gt;
Homepage: [http://www.geist-electronic.de/ Geist Electronic-Versand GmbH]&lt;br /&gt;
* Liefern Bauteile für Elektor-Projekte&lt;br /&gt;
&lt;br /&gt;
=== Hinkel ===&lt;br /&gt;
Homepage: http://www.hinkel-elektronik.de&lt;br /&gt;
&lt;br /&gt;
* Batterien&lt;br /&gt;
* Knopfzellen, spezielle KZH die man sonst sucht, findet man hier&lt;br /&gt;
&lt;br /&gt;
=== Kessler ===&lt;br /&gt;
Homepage: [http://www.kessler-elektronik.de/ Kessler]&lt;br /&gt;
* im Preis-Leistungsverhältnis mit Reichelt zu vergleichen (sprich: günstig)&lt;br /&gt;
* Sortiment ähnlich Reichelt mit gewissen Abweichungen (z. B. andere FPGA und RAMs)&lt;br /&gt;
&lt;br /&gt;
=== Mütron ===&lt;br /&gt;
Homepage: [http://www.muetron.de Mütron]&lt;br /&gt;
&lt;br /&gt;
=== Oppermann ===&lt;br /&gt;
Homepage: http://www.oppermann-electronic.de&lt;br /&gt;
&lt;br /&gt;
* Restposten, auch HF Bauteile&lt;br /&gt;
* auch Privatkunden&lt;br /&gt;
* Lieferung nach üblicher Zeit&lt;br /&gt;
&lt;br /&gt;
=== Pollin ===&lt;br /&gt;
Homepage: [http://www.pollin.de/ Pollin Electronic]&lt;br /&gt;
* Günstige Restposten aller Art; Liefert nach gut einer Woche; Produkte teils schnell ausverkauft&lt;br /&gt;
&lt;br /&gt;
=== Reichelt ===&lt;br /&gt;
Homepage: [http://www.reichelt.de/ Reichelt]&lt;br /&gt;
* relativ große Auswahl, aber nicht viele &amp;quot;brandaktuelle&amp;quot; Bauteile&lt;br /&gt;
* wenn man höflich fragen tut, liefern sie meist auch Bauteile, die nicht im Katalog stehen zu &amp;quot;normalen&amp;quot; Preisen (vorausgesetzt der Hersteller ist im Sortiment), z.B. Xilinx XC2S50&lt;br /&gt;
* reagiert aber teilweise auch auf Anregungen, neue Produkte in das Angebot aufzunehmen; siehe dazu auch den Artikel [[Reichelt-Wishlist]]&lt;br /&gt;
* liefert schnell und vollständig; wenn etwas ausnahmsweise nicht verfügbar ist, dann liefern sie es auf eigene Kosten nach, wenn der Artikel in absehbarer Zeit wieder vorrätig ist (selbst wenn er nur 0,20&amp;amp;#8364; wert ist).&lt;br /&gt;
* Lieferzeiten normal, manchmal unverständlicherweise länger als üblich&lt;br /&gt;
* lässt einen dennoch manchmal warten, wenn ein Artikel nicht lieferbar ist! Daher bei der Bestellung immer darauf hinweisen daß man auch eine Teillieferung akzeptiert.&lt;br /&gt;
* niedrige Preise&lt;br /&gt;
* im Inland (Deutschland) 10&amp;amp;#8364;, ins Ausland 100&amp;amp;#8364; Mindestbestellwert&lt;br /&gt;
* auch in die Schweiz sehr guter Service&lt;br /&gt;
&lt;br /&gt;
=== Ribu ===&lt;br /&gt;
Homepage: [http://www.ribu.at/ Ribu]&lt;br /&gt;
* Guter Elektronikversand mit zahlreichen Entwicklungsboards und zahlreichen Elektroniklösungen!&lt;br /&gt;
&lt;br /&gt;
=== RS Components ===&lt;br /&gt;
Homepage: [http://www.rs-components.com/ RS Components] &lt;br /&gt;
&lt;br /&gt;
* gute Auswahl insbesondere an &amp;quot;mechanischen Bauteilen&amp;quot;&lt;br /&gt;
* gute Verfügbarkeit&lt;br /&gt;
* lt. AGB nur an gewerbliche Abnehmer&lt;br /&gt;
&lt;br /&gt;
=== Sander Elektronik ===&lt;br /&gt;
Homepage: http://www.sander-electronic.de&lt;br /&gt;
&lt;br /&gt;
* beliefert auch Privatkunden, Bankeinzug möglich&lt;br /&gt;
* ähnlich Segor ein berliner Versender. &lt;br /&gt;
* Hier findet man manche MSP430 , die es sonst nicht in kleinen Stückzahlen gibt&lt;br /&gt;
* Herr Sander ist sehr kompetent, und selbst Autor von Fachartikeln&lt;br /&gt;
&lt;br /&gt;
=== Schukat elektronic ===&lt;br /&gt;
Homepage: [http://www.schukat.de/ Schukat]&lt;br /&gt;
&lt;br /&gt;
* liefert nicht an privaten Endverbraucher&lt;br /&gt;
* einfache und passiver Bauteile oft nur in großen Mindeststückzahlen&lt;br /&gt;
* ICs teilweise recht preiswert (vor allem bei mehr als 1 Stück, z.B. auch AVR)&lt;br /&gt;
* LCDs sehr preiswert und auch als Einzelstücke&lt;br /&gt;
* aktuelle Preise und Verfügbarkeit im Internet (aber nur nach Anmeldung)&lt;br /&gt;
&lt;br /&gt;
=== Schuricht ===&lt;br /&gt;
Homepage: [http://www.schuricht.de/ Schuricht]&lt;br /&gt;
&lt;br /&gt;
* liefert nicht an Privatkunden&lt;br /&gt;
&lt;br /&gt;
=== Segor-electronics ===&lt;br /&gt;
Homepage: [http://www.segor.de/ Segor-electronics]&lt;br /&gt;
* Spezialist für Halbleiter, die ansonsten für nicht-gewerbliche Abnehmer nur schwer erhältlich sind (Preise dahingehend &amp;quot;angemessen&amp;quot;)&lt;br /&gt;
* auch Privatkunden gerne gesehen&lt;br /&gt;
* Ladengeschäft in Berlin&lt;br /&gt;
* kein Mindestbestellwert bei Versand innerhalb der EU&lt;br /&gt;
&lt;br /&gt;
=== SE Spezial-Electronic ===&lt;br /&gt;
Homepage: [http://www.spezial.de/ SE Spezial-Electronic]&lt;br /&gt;
&lt;br /&gt;
=== Trade-Shop ===&lt;br /&gt;
Homepage: [http://www.trade-shop.de/ http://www.trade-shop.de/], Shop [http://www.trade-shop.de/catalog/index.php?language=de http://www.trade-shop.de/catalog/index.php?language=de]&lt;br /&gt;
&lt;br /&gt;
* hat so gut wie keine elektronischen Bauteile, eher Satelliten-Bedarf...&lt;br /&gt;
&lt;br /&gt;
=== Westfalia ===&lt;br /&gt;
Homepage http://www.westfalia.de&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
TODO: tec-shop (wieder online), artools, elektronik-laden, elektronik-fundgrube, elektro-nix, elpro&lt;br /&gt;
&lt;br /&gt;
== Siehe auch ==&lt;br /&gt;
* [[Platinenhersteller]]&lt;/div&gt;</summary>
		<author><name>131.130.1.135</name></author>
	</entry>
</feed>